fix: guards do /qa — preflight self-healing, audit só com e2e verde e recusa de re-run sem mudanças - #43
Merged
Merged
Conversation
…recusa de re-run sem mudanças Caso real: um /qa morreu no preflight mandando instalar Playwright na mão (o próprio ensurePlaywrightSetup instala tudo) e, depois de instalado, acumulou 8+ resumes idênticos — scope → e2e ✗ → audit → gate ✗ — queimando 1h02m, 10.56M tokens e US$13.14 sem nenhuma correção entre as rodadas (o audit do reviewer, ~1M tok e replay: false, rodava mesmo com e2e vermelho). - Preflight self-healing: dependência/Chromium/config/test:e2e faltando são instalados ali mesmo; só falha sem package.json ou com o install falhando. - Audit condicionado a e2e.passed: e2e vermelho registra a fase gratuita audit_skip (nome distinto — resume pós-fix roda o audit real) e vai direto ao gate, que agora aponta /bug e /task como próximo passo. - Guard unchanged-retry determinístico: fingerprint git da árvore (HEAD + status + diff, filtrando o lixo do próprio run: playwright-report/, imp/data/, *.tsbuildinfo…) gravado em imp/data/qa/<id>/e2e-attempts.json a cada e2e vermelho; re-run com stamp idêntico é recusado no início da fase (--retry-unchanged é o override humano p/ suíte flaky; sem git, fail open; e2e verde limpa o marcador). - Prompt /qa, cookbook qa.md e DOCS atualizados para os novos guards. - Testes: 6 novos em fia-qa.test.js (stamp estável sob side effects e móvel sob edição real; marcador acumula/reseta/limpa; recusa só o re-run fútil; asserts do fda_qa). Suíte completa verde e lint limpo. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019VtpBiDVL3bbcPgjBFtPeT
elberrd
added a commit
that referenced
this pull request
Aug 21, 2026
Fecha a release com o que entrou desde a alpha.18: - #42 — comando /llm + imp llm (troca de LLM por agente via número/nome; roster.mjs como writer único do fia.config.yaml) - #43 — guards do /qa (preflight self-healing, audit só com e2e verde, recusa determinística de re-run sem mudanças) Suíte completa verde (1420/1420) e lint limpo com o bump aplicado. Claude-Session: https://claude.ai/code/session_019VtpBiDVL3bbcPgjBFtPeT Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
elberrd
added a commit
that referenced
this pull request
Aug 22, 2026
Fecha a release com /llm + imp llm (#42), guards do /qa (#43) e o novo /defer + imp defer (#45) — pronta para npm publish. Claude-Session: https://claude.ai/code/session_01B9gdPsvMDQNkqKpz9HPx4X Co-authored-by: Claude Fable 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.
O problema (caso real, projeto de teste)
/qamorreu nopreflightcom "Playwright is not ready for browser QA", mandando o aluno rodarnpm install -D @playwright/testna mão — sendo que oensurePlaywrightSetup, chamado duas linhas depois no mesmo arquivo, instala exatamente isso.scope → preflight → e2e ✗ → audit → report → gate ✗) sem nenhuma correção entre as rodadas: 1h02m, 10.56M tokens, US$13.14. Oaudit(reviewer LLM, ~1M tokens/rodada,replay: false) rodava mesmo com e2e vermelho — um veredito que o gate ia recusar de qualquer forma. A proibição de re-rodar existia só no prompt; o runtime aceitava resume infinito.As correções (determinísticas, em código)
@playwright/test/Chromium/test:e2e/config faltando são instalados ali mesmo, no projeto. Só falha sempackage.json(não-npm) ou quando o install em si falha — aí com os comandos manuais.audit_skip(nome distinto deauditpara o resume pós-fix rodar o audit real) e vai direto ao gate — corta ~90% da queima observada.playwright-report/,imp/data/,*.tsbuildinfo…) é gravado emimp/data/qa/<id>/e2e-attempts.json. Resume com árvore idêntica é recusado no início da fase e2e com a instrução de consertar primeiro.--retry-unchangedé o override humano para suíte flaky; sem git o guard falha aberto; e2e verde limpa o marcador./qa, cookbook e DOCS atualizados; a mensagem do gate agora aponta/bug//task.Testes
6 novos em
test/fia-qa.test.js: stamp estável sob side effects do run e móvel sob edição real; marcador acumula/reseta/limpa;unchangedRetryErrorrecusa SÓ o re-run comprovadamente fútil; asserts de código nofda_qa(audit atrás dee2e.passed, setup roda mesmo com check falho). Suíte completa 1420/1420 verde, lint limpo.🤖 Generated with Claude Code
https://claude.ai/code/session_019VtpBiDVL3bbcPgjBFtPeT