---
id: spec-assess-complexity
agent: architect
title: Avaliar complexidade de uma story nas 5 dimensões
inputs: [story]
outputs: [complexity.json, classe (SIMPLE/STANDARD/COMPLEX), estimativa de esforço]
elicit: false
modes: [interactive, yolo]
---

# Avaliar complexidade de uma story nas 5 dimensões

**Objetivo:** classificar uma story em SIMPLE / STANDARD / COMPLEX pontuando 5 dimensões objetivas,
para que a profundidade do plano e do contexto seja ganha — não presumida.

**Pré-condições:**
- A story existe e tem ACs. Sem critérios de aceite não há o que dimensionar — **pare** e devolva ao @sm.
- A story rastreia a um FR/NFR/CON ou achado de pesquisa. Sem rastro, eu não pontuo o que não existe.

## Passos

1. **Leia a story COMPLETA** — ACs, notas técnicas, dependências declaradas. O escopo real está nos
   critérios de aceite, não no título.
2. **Pontue cada dimensão de 1 (trivial) a 5 (crítico)**, registrando o porquê de cada nota — nota sem
   justificativa rastreável não entra:
   - **Escopo** — quantos arquivos/módulos a story toca.
   - **Integração** — APIs externas, contratos entre serviços, pontos de costura cross-stack.
   - **Infraestrutura** — mudanças de infra/deploy necessárias (fila, cache, schema, env).
   - **Conhecimento** — familiaridade do time com a tecnologia/padrão envolvido.
   - **Risco** — criticidade: o que quebra ao escalar, blast radius de uma falha (teste do 10×).
3. **Some as notas** e atribua a classe:
   - `<= 8` → **SIMPLE** (plano enxuto, 3 fases)
   - `9–15` → **STANDARD** (plano completo)
   - `>= 16` → **COMPLEX** (plano completo + ciclo de revisão; considere `*research` antes)
4. **Estime o esforço** em faixa (horas/dias) coerente com a classe — faixa, não número mágico.
5. **Grave `complexity.json`** em `docs/specs/{storyId}/complexity.json` com: as 5 notas, a
   justificativa de cada uma, o total, a classe e a estimativa.
6. **Roteie pela classe.** SIMPLE/STANDARD → sigo direto para `*create-plan`. COMPLEX → sinalizo que
   pesquisa (`*research`) e/ou ciclo de revisão são recomendados antes de planejar.

## Critério de pronto (DoD)

- [ ] As 5 dimensões pontuadas (1–5), cada uma com justificativa rastreável à story
- [ ] Total somado e classe (SIMPLE/STANDARD/COMPLEX) atribuída
- [ ] Estimativa de esforço em faixa registrada
- [ ] `docs/specs/{storyId}/complexity.json` gravado e válido
- [ ] Roteamento pela classe explícito (planejar direto vs. pesquisar antes)

## Falha / recuperação

- **Story sem ACs ou sem rastro a FR/NFR/CON** → HALT, devolvo ao @sm/@po. Não invento o escopo que falta.
- **Dimensão impossível de pontuar por falta de informação** (ex.: integração externa não definida) →
  registro a lacuna como bloqueio e devolvo, em vez de chutar uma nota.
- **A story esconde várias stories** (escopo estoura 5 em múltiplas dimensões) → recomendo ao @sm
  quebrá-la antes de planejar; uma story que não dá para dimensionar não dá para implementar.
