---
id: spec-research-dependencies
agent: analyst
title: Pesquisar dependências e constraints técnicos de uma spec
inputs: [story ou spec]
outputs: ['docs/research/spec-deps-{slug}.md (dependências, constraints, riscos — cada um rastreável a FR/NFR/CON ou fonte)']
elicit: false
modes: [interactive, yolo]
---

# Pesquisar dependências e constraints técnicos de uma spec

**Objetivo:** levantar as dependências, restrições e riscos técnicos de uma story/spec, com cada achado rastreando a um FR/NFR/CON da spec ou a uma fonte real — munição para o @architect e o @dev, sem inventar requisito (Constituição Art. IV).

**Pré-condições:**
- Existe uma story ou spec com requisitos identificáveis (FR-*, NFR-*, CON-*). Se não houver requisitos rastreáveis, **pare** e devolva ao @pm/@sm — não pesquiso dependências de um alvo inexistente.
- Esta é pesquisa, não decisão de arquitetura. A escolha de tecnologia é do @architect; eu levanto as constraints, ele decide.

## Passos

1. **Leio a spec/story completa** e extraio cada FR/NFR/CON. Listo-os — todo achado desta task vai amarrar a um deles.
2. **Mapeio as dependências** que cada requisito implica: bibliotecas, serviços externos, APIs, dados, infraestrutura, versões. Para cada uma, anoto o requisito de origem.
3. **DIVIRJO — levanto constraints e alternativas.** Para cada dependência: versões suportadas, limites conhecidos, custos, licenças, maturidade. Crédito a fonte (docs oficiais, changelogs, advisories) ou marco como hipótese.
4. **CONVIRJO — filtro e ranqueio riscos.** Mantenho o que tem fonte forte; classifico cada dependência por risco (bloqueante / atenção / ok) e por acoplamento.
5. **Registro os constraints técnicos rastreáveis.** Cada constraint amarra a um NFR/CON da spec ou a uma fonte verificável — nada de palpite apresentado como fato.
6. **Sintetizo em "portanto".** Lista numerada: dependências críticas, riscos abertos e perguntas de arquitetura — cada uma com a fonte e o requisito de origem.
7. **Salvo** em `docs/research/spec-deps-{slug}.md` com a matriz requisito → dependência → fonte → risco, e roteio: decisões de tecnologia → @architect; impacto em DB → @data-engineer.

## Critério de pronto (DoD)

- [ ] Todos os FR/NFR/CON da spec extraídos e listados
- [ ] Cada dependência amarra a um requisito de origem
- [ ] Cada constraint rastreia a um FR/NFR/CON ou a uma fonte verificável (sem invenção)
- [ ] Dependências ranqueadas por risco e acoplamento
- [ ] "Portanto" em lista numerada com perguntas de arquitetura roteadas ao @architect
- [ ] Documento salvo com a matriz requisito → dependência → fonte → risco

## Falha / recuperação

- **Um achado não amarra a nenhum FR/NFR/CON** → ou é escopo invisível (devolvo ao @pm para virar requisito), ou eu o corto — não inflo a spec inventando justificativa.
- **Fonte da dependência indisponível/desatualizada** → marco como hipótese e listo em "a validar"; não cravo versão/limite sem evidência.
- **A pesquisa exige uma decisão de tecnologia** → paro na constraint, formulo a pergunta e delego ao @architect; eu municio, ele escolhe.
