Cada gate é determinístico: passa com exit 0 e evidência, ou bloqueia. Auto-avaliação
não conta. Os thresholds vivem na qa-policy,
configuráveis por severidade.
Gate 1 — Cobertura + Execução no dev (1a+1b) /run-regression
1a — Cobertura: escreve os testes (RED→GREEN) e mede a cobertura do código alterado (diff); abaixo do threshold da severidade → bloqueia e lista as linhas sem teste — ou N/A-por-ADR quando o stack não permite unit. 1b — Execução no dev/stg: o QA Plan (CTs) roda via Playwright no ambiente dev/stg (nunca HML — HML é o Gate 3), reusando o motor do qa-expert com ambiente=dev.
test-validator · estende o gate existente
Gate 2 — Smoke /smoke
Roda o caminho crítico do sistema afetado. Rápido e barato — se o fluxo principal caiu, bloqueia antes de gastar E2E.
smoke-runner · config-driven por stack
Gate 3 — E2E /validacao-testes
Valida os FEAT-{N} na UI de HML (Playwright/Voidr) com evidência visual. "Se não está na tela, não aconteceu." Alimenta o Checkpoint 3 (homologação).
qa-expert · anti-falso-positivo/negativo
Meta-gate /qa-gate
Consolida os três num veredito único. Verde libera /open-pr e /release-check; vermelho bloqueia o release.
hard stop da qa-policy