---
id: reality-check-checklist
kind: checklist
agent: qa
gate: Reality Check
decision: "default NEEDS WORK; READY só se TODOS os críticos (1,2,5,10) passam E >=8/10 — senão FAIL/CONCERNS com correções"
---

# Reality Check Checklist (Reality Check)

> A Quinn roda isto antes de assinar qualquer PASS. O default do gate de realidade é **NEEDS WORK** —
> o ônus da prova é do código, não da dúvida. READY (PASS) só quando a evidência é esmagadora. Itens
> **críticos** (1, 2, 5, 10) reprovam sozinhos: sem eles, "passou" é teatro. Reprovar aqui 2–3 vezes é
> o processo funcionando — cada ciclo aproxima do real.

## Critérios (10 pontos)

- [ ] 1. **Executei, não li** *(crítico)* — rodei a suíte completa e exercitei o fluxo alterado com meus
      olhos. "Pareceu certo no diff" e "rodou na minha cabeça" não contam. Gate sem execução é fraude
      assinada com meu nome.
- [ ] 2. **Evidência anexada** *(crítico)* — cada afirmação de "pronto/funciona" tem prova verificável:
      teste verde, log da execução real, screenshot, console limpo. Sem prova, não aconteceu — vira
      issue com `evidence`, não PASS.
- [ ] 3. **Grep antes de acreditar** — verifiquei as alegações olhando o artefato REAL (código, teste,
      arquivo capturado), não a narração de quem implementou. Confiar no "feito" sem checar é como
      confiar num `tool_use` que nunca virou `tool_result`.
- [ ] 4. **`filesModified` confirmado (caso BUG A)** — os arquivos ditos "modificados" foram confirmados
      por RESULTADO da escrita, não pela intenção de escrever. Intenção declarada não é mudança feita;
      exijo a confirmação, não a promessa.
- [ ] 5. **Regressão para todo bug "corrigido"** *(crítico)* — cada correção tem um teste que
      reproduzia o bug original (red antes do green). "Corrigido" sem esse teste é hipótese, não fato.
- [ ] 6. **Toda AC rastreia a teste** — cada AC mapeia a pelo menos um Given-When-Then; AC órfã é gap
      nomeado com severidade. E o inverso: comportamento novo sem AC é escopo furado.
- [ ] 7. **App sobe / evidência visual** — se a story tem UI, o app subiu e há captura por rota×viewport
      (`collect-visual-evidence`). Se não sobe, o veredito é **BLOCKED** com o log — não um PASS no escuro.
- [ ] 8. **Console limpo no fluxo** — sem erro/warning relevante no console durante a execução do fluxo
      alterado. Erro de console é achado, não ruído.
- [ ] 9. **Veredito estruturado emitido** — emiti exatamente um bloco `<verdict>` válido; se FAIL, com
      ao menos uma issue com `evidence` (o contrato barra FAIL sem issue). O veredito é dado, não prosa.
- [ ] 10. **Nenhum teste afrouxado para passar** *(crítico)* — nenhum teste foi skipado, comentado ou
      relaxado para o gate fechar. Teste enfraquecido para o verde é achado CRÍTICO, não detalhe.

## Veredito

- **READY (PASS):** críticos 1, 2, 5, 10 passam **e** ≥8/10. Assino porque EU vi rodar, com prova.
- **NEEDS WORK (FAIL/CONCERNS):** qualquer crítico reprovado, ou <8/10. Devolvo com `fixInstructions` e
  o defeito preciso — o @dev conserta, eu re-reviso. Isso é o ciclo saudável, não uma falha.
- **BLOCKED:** o app/fluxo não roda, ou a evidência necessária é impossível de obter agora. Escalo com o
  log — não invento o resultado do que não consegui ver.
