---
id: qa-nfr-assess
agent: qa
title: Validar requisitos não-funcionais da story
inputs: [story]
outputs: [avaliação de NFRs (perf, segurança, confiabilidade, manutenibilidade) com veredito por eixo]
elicit: false
modes: [interactive, yolo]
---

# Validar requisitos não-funcionais da story

**Objetivo:** verificar que a story atende os NFRs que importam para seu risco — performance,
segurança, confiabilidade, manutenibilidade — com evidência por eixo, não com afirmação.

**Pré-condições:**
- A story existe e o risco já foi perfilado (`qa-risk-profile`), para calibrar profundidade.
- Existem NFRs/CONs rastreáveis (na story, na spec ou no padrão do projeto). Sem alvo, registro a
  ausência como gap — não invento o número.

## Passos

1. **Seleciono os eixos relevantes** pelo perfil de risco. Caminho crítico exige perf e
   confiabilidade; dado sensível exige segurança. Não avalio eixo irrelevante só para encher.
2. **Para cada eixo, defino o alvo** rastreável (ex.: latência p95 < X, sem secret em log, retry em
   falha transitória). Alvo vem da story/spec/CON; se ausente, registro gap.
3. **Coleto evidência** contra o alvo: resultado de teste de carga, scan de segurança, log de falha
   injetada, métrica. Evidência ou não aconteceu — afirmação de "é rápido" não vale.
4. **Emito veredito por eixo:** PASS (alvo atingido com evidência), CONCERNS (dívida sem bloqueio),
   FAIL (alvo violado ou sem evidência em ponto de risco).
5. **Consolido** os vereditos como insumo para `qa-gate`, cada um rastreado ao NFR/CON correspondente.

## Critério de pronto (DoD)

- [ ] Eixos de NFR selecionados pelo perfil de risco, não por checklist cego
- [ ] Cada eixo tem alvo rastreável (story/spec/CON) ou gap registrado
- [ ] Cada veredito sustentado por evidência concreta
- [ ] Vereditos consolidados e rastreados para o gate

## Falha / recuperação

- **Eixo de risco sem alvo definido** → registro gap e levo ao gate como CONCERNS; não estipulo o
  número eu mesma.
- **Sem evidência para um eixo crítico** → FAIL nesse eixo; não presumo conformidade.
- **Correção de NFR exige código/infra** → delego ao @dev (código) ou @devops (infra) via fix-request.
