feat(ci): autofix resolve conflito de arquivo gerado e para no de código - #414
Merged
rubenmarcus merged 1 commit intoAug 22, 2026
Conversation
MEDIDO hoje, ao vivo: enquanto eu resolvia conflito à mão em quatro PRs, o `chore(release): v2.0.0-alpha.173` entrou na main e reabriu os quatro de uma vez. Os NOVE arquivos em conflito do #400 depois disso eram todos gerados - README, STATUS, ARCH e docs/ -, nenhum de código. Todo release reescreve esses arquivos, então resolver isso à mão é trabalho de Sísifo: o release seguinte desfaz. O autofix passa a trazer a base antes de consertar. Conflitou, ele pergunta à MESMA lista de permissão do resto do bot: se todo caminho em conflito for arquivo gerado, fica o da base e os geradores re-derivam. Se sobrar UM fora da lista, ele dá `git merge --abort` e comenta - conflito de código é julgamento, e julgamento não é dele. A conta do dia, dos quatro PRs que resolvi à mão: 53 arquivos em conflito, 45 gerados e 8 de código. É a fatia que o bot passa a cobrir, e sobra para gente exatamente a que exige decisão - como a colisão de numeração de BUG-68 no #372, que preservei sem renumerar. A AF5 guarda o caminho de exceção: sem o `git merge --abort`, o bot resolveria código escolhendo um lado no escuro. O mutante `resolve-conflito-de-codigo` remove o abort e reprova. 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 3 arquivo(s) · +85 −9, base fix/deixar-pronto-nao-e-mergear. O que mudou
Labels
|
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,autofix_allowlist.py - arnês (1):
autofix-check.mjs
Tip
Risco BAIXO · nota 10/10 ▓▓▓▓▓▓▓▓▓▓
nada aqui que quebre amanhã. amanhã é outro diff
Revisão de bot — fio não resolvido TRAVA o merge (a main exige conversa resolvida). Resolve ou refuta.
— todo bug confessa no diff, eu só faço o interrogatório 🤡
rubenmarcus
merged commit Aug 22, 2026
4dc4d23
into
fix/deixar-pronto-nao-e-mergear
16 checks passed
rubenmarcus
added a commit
that referenced
this pull request
Aug 22, 2026
…pilha DUAS COISAS, e a primeira é um resgate. 1. A fase 5 (#414, resolução automática de conflito de arquivo gerado) ficou ÓRFÃ. Ela mergeou em `fix/deixar-pronto-nao-e-mergear`, mas essa branch já tinha subido para a de cima antes — então o conteúdo mergeou para lugar nenhum. Conferido: a pilha do #408 não tinha `--caminhos` no autofix.yml nem a AF5 na régua. Trazida de volta por merge da branch original. 2. O autofix só acordava quando o PR se mexia. Mas quem desatualiza PR é a MAIN andando: 9 `chore(release)` em 20 horas, cada um reescrevendo README/STATUS/ARCH/docs e reabrindo conflito em todo PR aberto ao mesmo tempo. O bot consertava quem empurra commit e nunca quem está parado esperando revisão — que é exatamente quem precisa. Entra o gatilho `push: [main]` e um job de varredura que lista os PRs não-MERGEABLE e dispara o autofix de cada um pelo `workflow_dispatch`, o caminho que enxerga secret. A AF6 guarda isso: sem o gatilho de push, o portão acende. Os SETE mutantes mordem. As duas réguas re-mescladas também receberam o padrão do #416. Agent: Claude Opus 5 (Claude Code) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Commit-grande: reúne a fase 5 órfã e acrescenta a varredura pós-release Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
Merged
7 tasks
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.
Summary
git merge --aborte comenta;Evidência — medida ao vivo, hoje
Enquanto eu resolvia conflito à mão em quatro PRs, o
chore(release): v2.0.0-alpha.173entrou na main e reabriu os quatro de uma vez. Os nove arquivos em conflito do #400 depois disso:Todos gerados. Nenhum de código. Todo
chore(release)reescreve esses arquivos, então resolver isso à mão é trabalho de Sísifo — o release seguinte desfaz.A conta dos quatro PRs que resolvi à mão hoje: 53 arquivos em conflito, 45 gerados e 8 de código. É exatamente essa fatia de 85% que o bot passa a cobrir.
O que ele NÃO faz
Sobra para gente a fatia que exige decisão, e ela é real. No #372 a numeração colidiu — o PR usa
BUG-68para a rampa sem textura e a main já usaBUG-68para o classify repetido. Preservei os dois lados e não renumerei: renumerar bug alheio muda referência em régua e commit. É esse tipo de coisa que ogit merge --abortprotege.A AF5 é o que garante isso: sem o abort no caminho de exceção, o bot resolveria código escolhendo um lado no escuro. O mutante
resolve-conflito-de-codigoremove o abort e reprova.Risk
Amplia o que o bot escreve — mas dentro da mesma lista de permissão da fase 3, que continua excluindo
public/,src/,scripts/,.github/e os manifestos.Validation
npm run check:fast- 60/60eval:autofixcom AF5 + os seis mutantesautofix_allowlist.py --selftest- 12 casos, inclui o lote típico de release--caminhosexercitado nos dois sentidos (só gerado → 0; com código → 1)Limite declarado
Não resolve conflito de código, de
package.jsonnem deCHANGELOG.md— os três estão fora da lista de propósito.Bot notes
safe-automergeneeds-stagingneeds-human-gameplayneeds-human-backend🤖 Generated with Claude Code