fix(ci): o bot para de reprovar o PR que ele acabou de consertar - #424
Merged
Conversation
Dois defeitos apareceram no PRIMEIRO disparo real da automação, e os dois eram meus: 1. O commit de regeneração do autofix não levava o trailer `Agent:`. O agente_check cobra esse trailer de TODO commit do PR, então o bot consertava a doc e reprovava o mesmo PR no passo seguinte. Atingiu #400, #405, #406, #365, #372, #373 e #375 de uma vez. 2. O job `avaliar` do preview-bot rodava `python3 scripts/ci/ensure_labels.py` sem nunca ter feito checkout - "No such file or directory". O passo era resto do desenho antigo: o preview por etiqueta morreu quando ele virou build-sem-segredo + deploy-sem-código, então a etiqueta não é mais necessária e o passo saiu. A AF7 guarda o primeiro: todo `git commit` do bot tem de levar `Agent:` e `Signed-off-by:`, que são exatamente os trailers que o CI cobra de gente. Bot que não cumpre a própria régua da casa não ajuda ninguém. O mutante `commit-sem-trailer` remove o Agent e acende. Agent: Claude Opus 5 (Claude Code) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Collaborator
csbrasil-bot classificationNote @rubenmarcus abriu 5 arquivo(s) · +16 −7, base main. O que mudou
Labels
|
Collaborator
|
🤖 autofix: dá para consertar sozinho, mas este PR está com allow edits by maintainers desligado. Rode |
estraga-codigo
left a comment
Collaborator
There was a problem hiding this comment.
Palhaço Mal · revisor da casa · 🤡
mapa da mudança
- CI (2):
autofix.yml,preview-bot.yml - docs (2):
colaborar.md,colaborar.md - arnês (1):
autofix-check.mjs
Tip
Risco BAIXO · nota 10/10 ▓▓▓▓▓▓▓▓▓▓
pente fino passado: nenhum achado que eu defenda em voz alta
Revisão de bot — fio não resolvido TRAVA o merge (a main exige conversa resolvida). Resolve ou refuta.
— maquiagem de verde por cima de vermelho eu desenmascaro no primeiro golpe de vista 🤡
3 tasks
rubenmarcus
added a commit
that referenced
this pull request
Aug 22, 2026
… (#425) * fix(ci): o merge limpo do bot também leva os trailers O #406 travou no dco por um commit do PRÓPRIO bot: `b594bc62 Merge branch 'main' ... into fix/403`. Quando o merge da base NÃO conflita, o autofix usava `git merge --no-edit`, e o git escreve a mensagem automática - sem `Agent:` e sem `Signed-off-by`. O conserto do #424 só cobriu os `git commit` explícitos; o caminho sem conflito passou por fora. Agora a mensagem vai explícita nos dois caminhos. A AF7 (que ficou de fora do #424) entra cobrindo `git commit` E `git merge`, e ignora a citação dentro de `--body` - ali o `git merge` é instrução que o bot manda o humano ler, não comando que ele roda. Os mutantes `commit-sem-trailer` e `merge-sem-trailer` mordem. Agent: Claude Opus 5 (Claude Code) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com> * fix(ci): o autofix não conseguia mergear nem empurrar em PR de casa O #425 ficou CONFLICTING com o autofix rodando com sucesso ao lado. Três defeitos empilhados, todos meus, e o log entregou os três: 1. ORDEM DOS PASSOS. O merge vinha DEPOIS de `git checkout FETCH_HEAD -- tools/ scripts/ package.json`, que deixa a árvore suja - e `git merge` recusa árvore suja. Por isso o log mostrava `conflitos:` vazio: não era conflito, era merge que nem começou. O merge passa a ser a primeira coisa depois do checkout. 2. PODE_EDITAR SEMPRE FALSO EM PR DE CASA. `maintainerCanModify` é false por definição quando o PR não vem de fork - a opção nem existe ali. O guard de push comparava com 'true' e bloqueava justamente onde o bot sempre pode empurrar. Agora head-repo igual ao repositório vale como permissão. 3. A TRAVA VINHA DO PR. Com o merge antes da restauração, o allowlist consultado seria o do PR - e um PR que reescrevesse o allowlist liberaria a si mesmo. Ele passa a ser extraído da BASE para /tmp, o que também mantém a árvore limpa para o merge. A AF5 ganhou a cláusula. Agent: Claude Opus 5 (Claude Code) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com> --------- Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dois defeitos apareceram no primeiro disparo real da automação, e os dois eram meus.
1. O commit do autofix não levava o trailer
Agent:O
agente_checkcobra esse trailer de todo commit do PR. Então o bot regenerava a doc, commitava — e reprovava o mesmo PR no passo seguinte. Atingiu #400, #405, #406, #365, #372, #373 e #375 de uma vez.O commit de merge do autofix tinha o trailer; o de regeneração não. Agora os dois têm.
2. O job
avaliarrodava um script sem fazer checkoutO passo era resto do desenho antigo: o preview por etiqueta morreu quando ele virou build-sem-segredo + deploy-sem-código. A etiqueta não é mais necessária, então o passo saiu em vez de ganhar um checkout.
A régua
AF7: todo
git commitdo bot tem de levarAgent:eSigned-off-by:— exatamente os trailers que o CI cobra de gente. Bot que não cumpre a régua da casa não ajuda ninguém. Mutantecommit-sem-traileracende.O que o disparo mostrou de bom
Rodei o autofix nos 12 PRs abertos: 13 runs, 1 cancelado, 0 falhas, e #417, #400, #375 e #372 saíram de CONFLICTING sozinhos. A automação funciona; faltava ela respeitar as próprias réguas.
Risk
Validation
eval:autofixcom AF7 + o mutantecommit-sem-trailerworkflow_security_check,eval:deploygate,eval:portaointeiro,docs:check— todos verdes🤖 Generated with Claude Code