HMDeveloper
Todos os artigos
pull-requests
pull-requestsagentesqualidade

O revisor do PR não pode ser quem o escreveu

Agentes abrem PR como rascunho e marcam como pronto sozinhos. Um único agente revisa, e o merge continua comigo. O que quebrou até isso funcionar.

Meus agentes (programas configurados para executar tarefas) abrem PRs (pedidos para revisar e incluir mudanças no código). Cada tarefa ganha um worktree (cópia separada dos arquivos do projeto) a partir da branch develop (linha separada de trabalho). O PR começa como rascunho. Só quem fez o trabalho decide quando está pronto. Depois, o SENTINEL é o único agente autorizado a revisar. Só eu faço o merge (incorporo as mudanças ao projeto). Abaixo conto o que quebrou até isso funcionar.

Rascunho e pronto

Rascunho quer dizer que o autor ainda está trabalhando. Pronto quer dizer que o pedido foi enviado para revisão. O SENTINEL não revisa rascunhos. Assim, o estado do PR já mostra quem precisa agir.

O erro foi meu. Os agentes terminavam o trabalho, conferiam e perguntavam se podiam marcar o PR como pronto. Eu acabava decidindo algo que não precisa de mim. Eu autorizo o merge, não o envio para revisão. Agora, o agente que fez o trabalho marca o PR como pronto depois de terminar e conferir. Não precisa perguntar. Pedir licença só atrasa o pedido.

Um revisor, um SHA

O SENTINEL tem três modos. Lite faz a primeira revisão de mudanças de até 150 linhas efetivas. Delta faz uma segunda revisão depois de uma decisão anterior em que confio. Full serve para os outros casos. Há um único revisor oficial. Assim, dois agentes não vão presumir que o outro conferiu o mesmo PR.

O veredito inclui o Reviewed-Head-SHA (identificador da versão exata do código que foi lida). Isso importa porque a aprovação vale apenas para aquela versão. Para mim, pronto quer dizer aprovado na versão atual, com as verificações automáticas aprovadas nessa mesma versão. Se alguém enviar outra versão do código depois do veredito, a aprovação deixa de valer. Sem essa referência, seria possível aprovar, receber mais uma mudança e incorporar código que ninguém revisou.

Em 4 de agosto, a ADR-020 (registro de uma decisão sobre como o sistema é montado) registrou que o SENTINEL ganhou uma identidade própria de revisão no GitHub. Se o revisor publica como autor, o autor parece aprovar o próprio trabalho. Configurar essa identidade teve uma dificuldade. Credenciais digitais com permissões específicas devolviam 404 em repositórios privados quando a conta era só colaboradora. O erro 404 significa que o recurso não foi encontrado. Isso definiu como configurei a identidade.

Evidências no corpo do PR

Em 12 de agosto, um PR do vault recebeu o status CHANGES_REQUESTED (pedido de alterações) duas vezes pelo mesmo motivo. Eu tinha colocado todas as evidências num comentário. O revisor lê o corpo do PR, não o comentário. Perdi duas rodadas porque a prova estava no lugar errado. As evidências vão no corpo do PR.

Quem realmente faz o merge

Em 5 de setembro, medi quem estava fazendo os merges. Em 30 dias, 30 de cada 100 merges no repositório do assistente tinham meu nome. No repositório de operações, eram 2 de cada 100.

Merges com o meu nome em 30 dias (de 100 por repositório)

Medido em 5 de setembro. Parte dos merges com o meu nome foi feita por agentes usando as minhas credenciais.

Ver dados
Repositório do assistente30 de 100
Repositório de operações2 de 100

Nem todos os merges com meu nome foram feitos por mim. Alguns agentes usaram minhas credenciais. O nome no registro não mostrava quem tinha apertado o botão. Agora, uma proteção bloqueia os agentes, e eu faço o merge.

Commits de merge e autores fora da lista

A regra é usar merge commit. Ele registra a união de duas linhas de trabalho. Nunca uso squash, que junta as mudanças num único registro. O squash quebrou a comparação entre as mudanças.

Em 6 de setembro, descobri que o processo automático de revisão ignorava PRs de autores fora da lista autorizada. Um PR aberto por uma segunda conta de bot ficou sem revisão. Os registros também não mostravam o motivo.

Ajudo equipes a usar agentes de IA no trabalho de engenharia. Se sua equipe está começando, vamos conversar.

Ver consultoria