Capítulo 45 — Revisão independente de projeto
Mapa da aula
Aula 45 publicada. Mapa, exemplo, EX133.
flowchart TD
N0["45.1 Direitos de revisão"]
N1["45.2 Checklist"]
N2["45.3 Divergência"]
N3["Nota prática"]
N4["45.1b Revisores externos e SLOs"]
N5["Nota de campo — proibição de merges na sexta"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX133"]
Desenho lógico
flowchart LR
N0["45.1 Direitos de revisão"]
N1["45.2 Checklist"]
N2["45.3 Divergência"]
N3["Nota prática"]
N4["45.1b Revisores externos e SLOs"]
N5["Nota de campo — proibição de merges na sexta"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX133"]
[45.1 Direitos de revisão]
|
v
[45.2 Checklist]
|
v
[45.3 Divergência]
|
v
[Nota prática]
|
v
[45.1b Revisores externos e SLOs]
|
v
[Nota de campo — proibição de merges na sexta]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX133]
Objetivos de aprendizagem
Você vai (1) conduzir uma revisão que possa rejeitar; (2) usar um checklist ligado aos requisitos de segurança física; (3) registrar as opiniões divergentes.
45.1 Direitos de revisão
Os revisores podem bloquear o merge por caminhos de falha aberta, testes faltando, regressões de alcançabilidade do SIS ou pontuações vazias na interface. Um "LGTM" sem o checklist é inválido.
Na ABP, os revisores do CNHP têm autoridade escrita para bloquear um merge por qualquer desses motivos, e o gerente da planta concordou em não anular um bloqueio para cumprir um prazo. Um revisor que aprova sem preencher o checklist não revisou a mudança, e o merge é revertido até que uma revisão adequada seja feita. Lena mantém um registro dos bloqueios e dos seus motivos, que mostrou que a maioria dos bloqueios dizia respeito a testes faltando, e não a projetos inseguros.
45.2 Checklist
Falha fechada; autenticação da política; o esquema proíbe payloads; a cobertura tem denominador; redação de segredos; caminho de reversão documentado; teste de alcançabilidade do SIS verde.
O checklist de Lena na ABP tem uma linha para cada item, e cada linha se liga ao requisito que impõe, como o S-1 para o comportamento de falha fechada e o R-12 para a alcançabilidade do SIS-B. O revisor marca uma linha apenas depois de ver a evidência, como o teste que falha quando a política está ausente. A reversão é conferida nomeando a versão anterior e o comando para restaurá-la, e o teste de alcançabilidade precisa ter rodado exatamente no commit que está sendo integrado.
45.3 Divergência
Se um revisor discordar de um projeto de conduto ou de lista de permissões, a divergência entra no ADR mesmo que seja vencida — uma futura revisão de incidente na planta precisa desse rastro.
Caso sintético — Ashford Batch Plant. Um PR com selo de cobertura foi bloqueado duas vezes sob este checklist; a terceira revisão publicou a interface honesta (Capítulo 35).
Na ABP, a divergência da revisora externa sobre o coletor enviar alertas para a IHM foi registrada literalmente e, naquele caso, mudou o projeto. Lena guarda as divergências vencidas no mesmo lugar, porque um incidente posterior pode lhes dar razão.
45.4 Erros e limites
Revisões depois do merge são arqueologia, não controle.
Na ABP, uma pequena mudança no formato dos alertas certa vez foi integrada antes da revisão porque o prazo estava perto, e a revisão que veio depois descobriu que ela tinha removido o código de motivo de que os operadores dependiam. A correção exigiu uma segunda versão durante uma janela. Desde então, a fila de merge do CNHP recusa qualquer mudança sem um checklist preenchido, e uma revisão pedida depois do merge é registrada como falha de processo na retrospectiva, em vez de contada como revisão.
Nota prática
Os revisores rodam os testes críticos do monitor sobre os dados de teste sintéticos da planta antes da reunião — não apenas leem o diff.
45.1b Revisores externos e SLOs
Uma vez por período, um engenheiro de controle de fora da equipe do CNHP revisa um PR crítico para a segurança física. As revisões são concluídas dentro de um número acordado de dias úteis, ou a mudança expira da fila de merge (sem merge automático). Proíba merges na sexta à noite antes de janelas, a menos que seja uma correção urgente de segurança física com evidência do Laboratório I.
Os comentários de bloqueio precisam citar um id de requisito ou o número de um item do checklist. Pulos repetidos do checklist pelo mesmo revisor disparam uma conversa de orientação. O calendário faz parte do projeto do controle.
A revisora externa da ABP veio de uma empresa de saneamento.
Nota de campo — proibição de merges na sexta
Um merge de interface que não era correção urgente, feito na sexta à noite antes de uma janela de sábado, foi revertido. A regra do calendário existe porque revisores cansados deixam passar caminhos de falha aberta. Merges heroicos de última hora são um mau sinal.
As constatações da revisora externa são registradas como qualquer outra revisão, com ids de requisitos.
Uma revisão que perde o seu SLO é relatada na retrospectiva, com o motivo do atraso.
45.5 Exemplo resolvido — uma divergência que mudou o projeto (ABP sintética)
Na revisão independente de projeto, uma revisora externa de uma empresa de saneamento contestou o plano de deixar o coletor de monitoramento enviar alertas diretamente para a IHM. O seu argumento: uma inundação de alertas poderia distrair os operadores durante uma perturbação, e um coletor comprometido ganharia um caminho para o L2. O item do checklist "algum componente de segurança acrescenta um conduto para uma zona de controle?" tinha sido marcado incorretamente. A divergência é registrada literalmente, o projeto muda para que os alertas vão para o SOC e para o telefone do líder de turno, e o SLO da revisão (comentários respondidos em até cinco dias úteis) é cumprido.
Exercícios
- EX133 — Bloqueio. Comentário de bloqueio para uma nova tentativa com falha aberta. Rubrica: 3 = cita o requisito de segurança + pede a correção; 2 = bloqueio vago; 1 = detalhe menor; 0 = aprova.
- EX134 — Checklist. Acrescente um item para os taps seriais. Rubrica: 3 = específico; 2 = vago; 1 = tentativa mínima; 0 = nada.
- EX135 — Divergência. Uma frase de divergência registrada. Rubrica: 3 = clara; 2 = evasiva; 1 = vago; 0 = nada.
Síntese
Revisões que conseguem dizer não, com um checklist e uma memória.
Continue estudando — capítulo 45 de 50
← Capítulo 44 · Índice de capítulos do curso · Capítulo 46 →
Siga para a próxima lição escrita.