---
id: create-doc
agent: architect
title: Conceber a arquitetura a partir de um template
inputs: [template, contexto do projeto]
outputs: [documento de arquitetura preenchido]
elicit: true
modes: [interactive]
---

# Conceber a arquitetura a partir de um template

**Objetivo:** produzir um documento de arquitetura completo (fullstack / backend / frontend /
brownfield) preenchendo um template seção a seção — registrando a *decisão* e o *porquê* de cada
trade-off, não só o diagrama.

**Pré-condições:**
- Existe um template alvo em `templates/`. Se o template não for indicado, **pare** e pergunte qual —
  não escolho a forma do documento por conta própria.
- Existe contexto rastreável: PRD, NFRs, restrições. Sem isso, elicito antes de desenhar — arquitetura
  sem requisito é ficção.

## Passos

1. **Carregue o template** e leia sua estrutura inteira. Identifico quais seções exigem elicitação
   (`elicit: true`) — esses pontos NÃO podem ser pulados "por eficiência".
2. **Levante os NFRs explicitamente** antes de qualquer seção de design: escala-alvo, latência,
   disponibilidade, segurança, orçamento, prazo. NFR não declarado é a causa nº 1 de arquitetura que
   parece certa e quebra em produção.
3. **Preencha seção a seção, em ordem.** Para cada seção do template:
   a. redijo o conteúdo rastreando cada afirmação a um FR/NFR/CON ou achado de pesquisa (No Invention);
   b. nas fronteiras estruturais, rodo o teste do 10× e registro o failure mode, não só o caminho feliz;
   c. **num ponto de elicitação, paro e apresento as opções ao usuário** no formato do template,
      validando a resposta antes de seguir. Esse ponto é sagrado.
4. **Documente o porquê de cada trade-off**, não só a escolha. Tecnologia chata por padrão,
   empolgante por exceção — e cada exceção justificada no doc. Decisão sem rastro vira mito de equipe
   em seis meses.
5. **Roteie cada camada ao dono.** Schema/DDL detalhado → @data-engineer (eu defino a tecnologia e o
   contrato; ela implementa). Fluxos/UI → @ux-design-expert. Eu costuro o sistema; não invado a lane
   do especialista.
6. **Revise contra o checklist** (`execute-checklist` com o checklist de arquitetura) e salve o
   documento no destino do projeto (`docs/architecture/`). Implementado depois → @qa; subida → @devops.

## Critério de pronto (DoD)

- [ ] Todas as seções do template preenchidas, nenhum ponto de elicitação pulado
- [ ] NFRs declarados explicitamente e refletidos nas decisões de design
- [ ] Cada afirmação rastreia a um FR/NFR/CON ou achado de pesquisa (No Invention)
- [ ] Cada fronteira estrutural tem failure mode ao escalar declarado (teste do 10×)
- [ ] Cada trade-off tem o porquê registrado; camadas de especialista roteadas ao dono
- [ ] Documento validado contra o checklist e salvo em `docs/architecture/`

## Falha / recuperação

- **Falta contexto para uma seção (NFR ausente, requisito ambíguo)** → paro nessa seção, elicito o
  que falta e só então sigo. Não preencho com suposição.
- **Um ponto de elicitação seria pulado por modo não-interativo** → recuso: `elicit: true` exige
  interação real; sem ela, o documento não fica pronto.
- **Uma seção exige decisão de schema/UI fora da minha lane** → defino o contrato e delego a
  implementação da camada ao dono (@data-engineer / @ux-design-expert).
- **O checklist reprova o documento** → corrijo as seções apontadas antes de declarar pronto; não
  salvo como final uma arquitetura que falhou no gate.
