---
id: qa-false-positive-detection
agent: qa
title: Detecção de falso-positivo em correções
inputs: [story, diff, teste de regressão]
outputs: [veredito de autenticidade da correção, entrada na seção QA Results]
elicit: false
modes: [interactive, yolo]
---

# Detecção de falso-positivo em correções

**Objetivo:** verificar que um "bug corrigido" foi de fato corrigido na causa-raiz — com um teste que
reproduzia o bug original e agora guarda a porta — e não apenas mascarado no sintoma.

**Pré-condições:**
- A story/fix declara um defeito como corrigido. Sem afirmação de correção, esta task não se aplica.
- Existe um `diff` da correção e (idealmente) o teste de regressão. Se o teste não existe, esse já é o
  primeiro sinal de falso-positivo.

## Passos

1. **Reconstrua o bug original.** A partir da story/fix-request, identifique o sintoma, o input que o
   dispara e o comportamento esperado. Se não dá para reconstruir, o defeito nunca foi entendido —
   suspeito.
2. **Exija o teste que reproduz.** Confirme que existe um teste que **falharia** no código antigo e
   **passa** no novo. Sem esse teste, a correção é hipótese, não fato → CONCERNS no mínimo.
3. **Verifique causa, não sintoma.** Leia o diff: a mudança ataca a raiz (validação, lógica, estado) ou
   só silencia o efeito (try/catch vazio, guarda no ponto errado, valor mágico)? Mascaramento → FAIL.
4. **Cace o efeito colateral.** A correção quebra algum consumidor ou abre um caminho de erro novo?
   Caminho feliz consertado mas borda quebrada continua sendo defeito.
5. **Confirme a regressão na suíte.** Rode os testes da área: o de regressão verde E os antigos
   continuam verdes. Verde no novo + vermelho no antigo = correção que quebrou outra coisa.
6. **Emita o veredito** SOMENTE na seção "QA Results": correção autêntica (PASS), suspeita
   (CONCERNS, com o que falta) ou falso-positivo (FAIL, com a evidência do mascaramento).
7. **Roteie.** FAIL/CONCERNS → `*create-fix-request` ao @dev, nomeando o teste de regressão ausente ou
   a causa não atacada.

## Critério de pronto (DoD)

- [ ] Bug original reconstruído (sintoma + input + esperado)
- [ ] Teste de regressão confirmado: falha no antigo, passa no novo
- [ ] Diff ataca a causa-raiz, não o sintoma
- [ ] Suíte da área inteira verde (sem regressão colateral)
- [ ] Veredito escrito só na seção QA Results e roteado

## Falha / recuperação

- **Não existe teste que reproduza o bug** → CONCERNS/FAIL: devolvo ao @dev pedindo o teste de
  regressão. Sem ele, não há prova de correção.
- **A correção mascara o sintoma** (catch vazio, flag, valor mágico) → FAIL com a linha apontada;
  fix-request ao @dev.
- **A correção introduziu regressão em outro teste** → FAIL; aponto o teste quebrado e devolvo.
- **Não consigo reconstruir o bug a partir da story** → registro a lacuna e devolvo ao @sm/@po; não
  invento o defeito que faltou descrever.
