feat(ci): o que ficou de fora do #408 — fase 5, varredura pós-release e preview sem token - #422
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
csbrasil-bot classificationNote @rubenmarcus abriu 9 arquivo(s) · +467 −88, base main. O que mudou
Labels
|
|
Esbirro · plantão da produção · 🕵️ check vermelho parado neste PRCaution Não sei classificar este vermelho. Segue o que o CI cuspiu — palpite de bot sobre bug alheio só atrapalha.
Vermelho: Log do run já expirou — abrir pelo link do check. — de plantão: vi, registrei, hora no relógio 🕵️ |
estraga-codigo
left a comment
There was a problem hiding this comment.
Palhaço Mal · revisor da casa · 🤡
mapa da mudança
- CI (5):
autofix.yml,preview-bot.yml,preview-build.yml,preview-deploy.yml… - docs (2):
colaborar.md,colaborar.md - outros (1):
medir-chars.mjs
Tip
Risco BAIXO · nota 10/10 ▓▓▓▓▓▓▓▓▓▓
limpo pelos critérios das minhas ações desta rodada
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 🤡
…xposto Três peças que ficaram de fora do #408 - ele mergeou o estado anterior aos últimos commits - reunidas num commit só, em cima da main. 1. FASE 5, resolução automática de conflito. Sem ela o autofix regenera doc mas não resolve conflito, que é 86% do trabalho (57 de 66 arquivos num dia). 2. VARREDURA PÓS-RELEASE. O autofix só acordava quando o PR se mexia, e quem desatualiza PR é a MAIN andando: 9 releases em 20 horas, cada um reabrindo conflito em todo PR aberto. Agora `push: [main]` dispara uma varredura que lista os desatualizados e conserta cada um. Sem isso o bot nunca toca em quem está parado esperando revisão - que é justamente quem precisa. 3. PREVIEW DE FORK sem aprovação E sem expor o token, em duas metades: preview-build.yml compila o código do fork em `pull_request` (que num fork roda SEM secrets) e preview-deploy.yml publica em `workflow_run` sem executar nada do PR (`--prebuilt` só envia arquivo). Quem tem o que roubar não roda código de terceiro; quem roda código de terceiro não tem o que roubar. E o conserto do primeiro disparo real: o autofix restaurava package.json da base sem o package-lock.json, e `npm ci` exige que os dois batam - 2 de 10 runs morreram. O lock vai junto na ida e na volta. Agent: Claude Opus 5 (Claude Code) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Commit-grande: reúne fase 5, varredura e preview separado num commit só Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
0e88b4e to
cc087a4
Compare
estraga-codigo
left a comment
There was a problem hiding this comment.
Palhaço Mal · revisor da casa · 🤡
mapa da mudança
- CI (6):
autofix.yml,preview-bot.yml,preview-build.yml,preview-deploy.yml… - arnês (2):
autofix-check.mjs,deploy-gate-check.mjs - docs (1):
PROD-READINESS.md
Tip
Risco BAIXO · nota 10/10 ▓▓▓▓▓▓▓▓▓▓
limpo pelos critérios das minhas ações desta rodada
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 🤡
O CodeQL reprovou o #422 com um alerta CRÍTICO de code injection, e estava certo: `gh pr comment "${{ steps.pr.outputs.numero }}"` interpola a expressão no TEXTO do script antes do shell existir. Valor com aspas ou `$(...)` vira comando - e os dois valores ali vêm de fora: o número atravessou um artefato escrito por um job que rodou código do fork, e a URL é saída de comando. Ironia registrada: aconteceu no arquivo que existe para o token não encostar em código de terceiro. Os dois descem por `env:`, que o shell trata como dado. E a PRV4 passa a recusar qualquer `${{ }}` dentro de `run:` no job que tem segredo - o mutante `publica-interpola` devolve a linha antiga 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>
estraga-codigo
left a comment
There was a problem hiding this comment.
Palhaço Mal · revisor da casa · 🤡
mapa da mudança
- CI (6):
autofix.yml,preview-bot.yml,preview-build.yml,preview-deploy.yml… - arnês (2):
autofix-check.mjs,deploy-gate-check.mjs - docs (1):
PROD-READINESS.md
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.
— todo bug confessa no diff, eu só faço o interrogatório 🤡
O #408 mergeou o estado de antes dos últimos commits. Três coisas ficaram de fora, e são justamente as que fazem o sistema trabalhar sozinho:
1. Fase 5 — resolução automática de conflito (era o #414)
O #414 mergeou numa branch que já tinha subido, então virou órfão. Sem ele o autofix conserta doc mas não resolve conflito, que é 86% do trabalho.
2. Varredura pós-release
O autofix só acordava quando o PR se mexia. Quem desatualiza PR é a main andando — 9 releases em 20 horas, cada um reabrindo conflito em todo PR aberto. Agora
push: [main]dispara uma varredura que lista os PRs desatualizados e conserta cada um.Sem isso o bot nunca toca em quem está parado esperando revisão — que é exatamente quem precisa.
3. Preview de fork sem aprovação e sem expor o token
Duas metades:
preview-build.ymlcompila o código do fork empull_request(que num fork roda semsecrets), epreview-deploy.ymlpublica emworkflow_runsem executar nada do PR (--prebuiltsó envia arquivo).Quem tem o que roubar não roda código de terceiro; quem roda código de terceiro não tem o que roubar. Zero clique, inclusive para estranho.
Antes disso eu tinha feito o caminho errado — autoaprovar o rótulo — e a régua de segurança já proibia exatamente isso; escapei dela por escrever
--add-labelsem as aspas que ela casava. Revertido, e a cláusula agora casa as duas formas.Validação
npm run check:deploy— 35/35workflow_security_check --selftest— 9/9 mutações vermelhaseval:autofix— 7 mutantes mordendo (AF1–AF6)eval:portaointeiro— 97 citações, nenhum passo órfãoRisk
Só CI. Nenhum arquivo do jogo.
🤖 Generated with Claude Code