spec-first-copilot 0.6.0-beta.9 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +252 -167
  2. package/bin/cli.js +70 -70
  3. package/lib/init.js +92 -92
  4. package/lib/update.js +132 -132
  5. package/package.json +1 -1
  6. package/templates/.ai/memory/napkin.md +68 -68
  7. package/templates/.github/CHANGELOG.md +121 -0
  8. package/templates/.github/adapters/SETUP.md +314 -314
  9. package/templates/.github/adapters/confluence.md +295 -295
  10. package/templates/.github/adapters/errors.md +234 -234
  11. package/templates/.github/adapters/filesystem.md +353 -353
  12. package/templates/.github/adapters/interface.md +301 -301
  13. package/templates/.github/adapters/naming.md +241 -241
  14. package/templates/.github/adapters/registry.md +244 -244
  15. package/templates/.github/agents/backend-coder.md +14 -14
  16. package/templates/.github/agents/db-coder.md +165 -165
  17. package/templates/.github/agents/doc-writer.md +66 -53
  18. package/templates/.github/agents/frontend-coder.md +5 -5
  19. package/templates/.github/agents/infra-coder.md +341 -341
  20. package/templates/.github/agents/reviewer.md +6 -6
  21. package/templates/.github/agents/security-reviewer.md +153 -153
  22. package/templates/.github/copilot-instructions.md +272 -262
  23. package/templates/.github/instructions/docs.instructions.md +147 -145
  24. package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
  25. package/templates/.github/rules.md +229 -229
  26. package/templates/.github/scripts/bootstrap-confluence.js +289 -223
  27. package/templates/.github/skills/sf-design/SKILL.md +161 -216
  28. package/templates/.github/skills/sf-dev/SKILL.md +204 -351
  29. package/templates/.github/skills/sf-discovery/SKILL.md +415 -414
  30. package/templates/.github/skills/sf-extract/SKILL.md +225 -249
  31. package/templates/.github/skills/sf-load/SKILL.md +296 -295
  32. package/templates/.github/skills/sf-mcp/SKILL.md +386 -385
  33. package/templates/.github/skills/sf-merge-docs/SKILL.md +152 -100
  34. package/templates/.github/skills/sf-plan/SKILL.md +152 -128
  35. package/templates/.github/skills/sf-publish/SKILL.md +144 -143
  36. package/templates/.github/skills/sf-session-finish/SKILL.md +93 -120
  37. package/templates/.github/skills/sf-start/SKILL.md +192 -145
  38. package/templates/.github/templates/estrutura/apiContracts.template.md +160 -159
  39. package/templates/.github/templates/estrutura/architecture.template.md +169 -168
  40. package/templates/.github/templates/estrutura/conventions.template.md +214 -212
  41. package/templates/.github/templates/estrutura/decisions.template.md +107 -107
  42. package/templates/.github/templates/estrutura/domain.template.md +161 -160
  43. package/templates/.github/templates/feature/PRD.template.md +279 -286
  44. package/templates/.github/templates/feature/Progresso.template.md +141 -141
  45. package/templates/.github/templates/feature/TRD.template.md +358 -0
  46. package/templates/.github/templates/feature/context.template.md +89 -48
  47. package/templates/.github/templates/feature/extract-log.template.md +49 -39
  48. package/templates/.github/templates/feature/projetos.template.yaml +79 -79
  49. package/templates/.github/templates/global/progresso_global.template.md +59 -57
  50. package/templates/.github/templates/specs/brief.template.md +66 -59
  51. package/templates/.github/templates/specs/contracts.template.md +147 -141
  52. package/templates/.github/templates/specs/scenarios.template.md +125 -117
  53. package/templates/.github/templates/specs/tasks.template.md +65 -63
  54. package/templates/_gitignore +35 -35
  55. package/templates/sfw.config.yml.example +147 -147
  56. package/templates/.github/templates/feature/backlog-extraido.template.md +0 -156
  57. package/templates/.github/templates/feature/sdd.template.md +0 -559
@@ -1,141 +1,141 @@
1
- # Progresso — {{FEATURE}}
2
-
3
- > Visão consolidada do andamento da feature.
4
- > Organizado por **fases de entrega** — cada fase é um entregável independente.
5
- > Atualizado automaticamente pelo /sf-dev a cada task concluída.
6
- >
7
- > **Este arquivo rastreia FASES DE ENTREGA, não o pipeline do SFW.**
8
- > O estado do pipeline (extract_done, design_done, plan_done, dev_in_progress, dev_done, done)
9
- > vive em `.context.md`. Aqui rastreamos: "as fases de entrega do PRD §11 já foram implementadas?"
10
-
11
- ---
12
-
13
- ## Status das Fases: `não iniciado`
14
-
15
- <!-- não iniciado → em desenvolvimento → em revisão → concluído → arquivado
16
- (vocabulário PRÓPRIO deste arquivo — não confundir com status da pipeline em .context.md) -->
17
-
18
- ---
19
-
20
- <!--
21
- =============================================================================
22
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
23
- =============================================================================
24
-
25
- COMO GERAR ESTE ARQUIVO:
26
-
27
- 1. Ler PRD §11 (Fases de Entrega) para definir as fases
28
- 2. Ler TODOS os specs/{nome}/tasks.md da feature
29
- 3. Para cada FASE DE ENTREGA, listar as áreas e contagem de tasks
30
- 4. A visão primária é POR FASE, não por área
31
-
32
- COMO ATUALIZAR:
33
-
34
- - O /sf-dev atualiza após cada task concluída
35
- - Status por fase: ⬜ pendente → 🔄 em andamento → ✅ concluída
36
- - Fase concluída = todas tasks de todas áreas daquela fase estão [x]
37
- - Ao concluir uma fase: registrar no Histórico + abrir PR
38
-
39
- =============================================================================
40
- -->
41
-
42
- ## Fases de Entrega
43
-
44
- | Fase | Nome | Prioridade | Entregável | Status | Tasks |
45
- |------|------|-----------|------------|--------|-------|
46
- | 1 | {{Nome}} | P1 | {{Entregável}} | ⬜ pendente | 0/{{N}} |
47
- | 2 | {{Nome}} | P1 | {{Entregável}} | ⬜ pendente | 0/{{N}} |
48
- | 3 | {{Nome}} | P2 | {{Entregável}} | ⬜ pendente | 0/{{N}} |
49
-
50
- ---
51
-
52
- ## Fase 1 — {{Nome}} [P1]
53
-
54
- > **Entregável**: {{O que o usuário pode usar}}
55
- > **Critério de done**: {{Testes E2E que devem passar}}
56
- > **Branch**: `feature/{{FEATURE}}_fase1`
57
- > **PR**: (a ser criado)
58
-
59
- ### Tasks por área
60
-
61
- #### {{AREA_1}} ({{N}} tasks)
62
-
63
- | Task | Descrição | Tamanho | Repo | Status |
64
- |------|-----------|---------|------|--------|
65
- | AREA-001 | | S/M/L | {{repo}} | ⬜ |
66
-
67
- #### {{AREA_2}} ({{N}} tasks)
68
-
69
- | Task | Descrição | Tamanho | Repo | Status |
70
- |------|-----------|---------|------|--------|
71
- | AREA-001 | | S/M/L | {{repo}} | ⬜ |
72
-
73
- ### Resumo Fase 1
74
-
75
- | Área | Total | Feitas | % |
76
- |------|-------|--------|---|
77
- | {{AREA_1}} | {{N}} | 0 | 0% |
78
- | {{AREA_2}} | {{N}} | 0 | 0% |
79
- | **Total Fase 1** | **{{N}}** | **0** | **0%** |
80
-
81
- ---
82
-
83
- ## Fase 2 — {{Nome}} [P1]
84
-
85
- > **Entregável**: {{...}}
86
- > **Depende de**: Fase 1 concluída
87
-
88
- <!-- Repetir mesma estrutura -->
89
-
90
- ---
91
-
92
- ## Totais Gerais
93
-
94
- | Fase | Total | Feitas | % |
95
- |------|-------|--------|---|
96
- | Fase 1 | {{N}} | 0 | 0% |
97
- | Fase 2 | {{N}} | 0 | 0% |
98
- | **Total** | **{{N}}** | **0** | **0%** |
99
-
100
- ---
101
-
102
- ## Ordem de Execução
103
-
104
- ```
105
- Fase 1:
106
- 1. INFRA (setup de repos/ambiente)
107
- 2. DB (schema/migrations)
108
- 3. BACK (endpoints) ← pode paralelizar com FRONT após DB
109
- 4. FRONT (telas)
110
- → PR Fase 1 + testes manuais + merge
111
-
112
- Fase 2:
113
- 1. DB (novas tabelas/migrations)
114
- 2. BACK (endpoints + regras)
115
- 3. FRONT (telas + integração)
116
- → PR Fase 2 + testes manuais + merge
117
- ```
118
-
119
- ---
120
-
121
- ## Histórico
122
-
123
- | Data | Evento | Detalhes |
124
- |------|--------|----------|
125
- | | Feature criada | PRD aprovado, SDD gerado |
126
-
127
- ---
128
-
129
- ## Pós-conclusão (por fase)
130
-
131
- - [ ] PR aberto com template detalhado
132
- - [ ] Ambiente local rodando para testes manuais
133
- - [ ] Testes automatizados passando (unit + integration + security)
134
- - [ ] Usuário aprovou e fez merge
135
-
136
- ## Pós-conclusão (feature completa)
137
-
138
- - [ ] Todas fases concluídas e mergeadas
139
- - [ ] Mergear Delta Specs (SDD §11) nos docs de `docs/`
140
- - [ ] Atualizar `workspace/Output/progresso.md` (visão global)
141
- - [ ] Atualizar `.ai/memory/napkin.md` se houver aprendizado relevante
1
+ # Progresso — {{FEATURE}}
2
+
3
+ > Visão consolidada do andamento da feature.
4
+ > Organizado por **fases de entrega** — cada fase é um entregável independente.
5
+ > Atualizado automaticamente pelo /sf-dev a cada task concluída.
6
+ >
7
+ > **Este arquivo rastreia FASES DE ENTREGA, não o pipeline do SFW.**
8
+ > O estado do pipeline (extract_done, design_done, plan_done, dev_in_progress, dev_done, done)
9
+ > vive em `.context.md`. Aqui rastreamos: "as fases de entrega do PRD §11 já foram implementadas?"
10
+
11
+ ---
12
+
13
+ ## Status das Fases: `não iniciado`
14
+
15
+ <!-- não iniciado → em desenvolvimento → em revisão → concluído → arquivado
16
+ (vocabulário PRÓPRIO deste arquivo — não confundir com status da pipeline em .context.md) -->
17
+
18
+ ---
19
+
20
+ <!--
21
+ =============================================================================
22
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
23
+ =============================================================================
24
+
25
+ COMO GERAR ESTE ARQUIVO:
26
+
27
+ 1. Ler PRD §11 (Fases de Entrega) para definir as fases
28
+ 2. Ler TODOS os specs/{nome}/tasks.md da feature
29
+ 3. Para cada FASE DE ENTREGA, listar as áreas e contagem de tasks
30
+ 4. A visão primária é POR FASE, não por área
31
+
32
+ COMO ATUALIZAR:
33
+
34
+ - O /sf-dev atualiza após cada task concluída
35
+ - Status por fase: ⬜ pendente → 🔄 em andamento → ✅ concluída
36
+ - Fase concluída = todas tasks de todas áreas daquela fase estão [x]
37
+ - Ao concluir uma fase: registrar no Histórico + abrir PR
38
+
39
+ =============================================================================
40
+ -->
41
+
42
+ ## Fases de Entrega
43
+
44
+ | Fase | Nome | Prioridade | Entregável | Status | Tasks |
45
+ |------|------|-----------|------------|--------|-------|
46
+ | 1 | {{Nome}} | P1 | {{Entregável}} | ⬜ pendente | 0/{{N}} |
47
+ | 2 | {{Nome}} | P1 | {{Entregável}} | ⬜ pendente | 0/{{N}} |
48
+ | 3 | {{Nome}} | P2 | {{Entregável}} | ⬜ pendente | 0/{{N}} |
49
+
50
+ ---
51
+
52
+ ## Fase 1 — {{Nome}} [P1]
53
+
54
+ > **Entregável**: {{O que o usuário pode usar}}
55
+ > **Critério de done**: {{Testes E2E que devem passar}}
56
+ > **Branch**: `feature/{{FEATURE}}_fase1`
57
+ > **PR**: (a ser criado)
58
+
59
+ ### Tasks por área
60
+
61
+ #### {{AREA_1}} ({{N}} tasks)
62
+
63
+ | Task | Descrição | Tamanho | Repo | Status |
64
+ |------|-----------|---------|------|--------|
65
+ | AREA-001 | | S/M/L | {{repo}} | ⬜ |
66
+
67
+ #### {{AREA_2}} ({{N}} tasks)
68
+
69
+ | Task | Descrição | Tamanho | Repo | Status |
70
+ |------|-----------|---------|------|--------|
71
+ | AREA-001 | | S/M/L | {{repo}} | ⬜ |
72
+
73
+ ### Resumo Fase 1
74
+
75
+ | Área | Total | Feitas | % |
76
+ |------|-------|--------|---|
77
+ | {{AREA_1}} | {{N}} | 0 | 0% |
78
+ | {{AREA_2}} | {{N}} | 0 | 0% |
79
+ | **Total Fase 1** | **{{N}}** | **0** | **0%** |
80
+
81
+ ---
82
+
83
+ ## Fase 2 — {{Nome}} [P1]
84
+
85
+ > **Entregável**: {{...}}
86
+ > **Depende de**: Fase 1 concluída
87
+
88
+ <!-- Repetir mesma estrutura -->
89
+
90
+ ---
91
+
92
+ ## Totais Gerais
93
+
94
+ | Fase | Total | Feitas | % |
95
+ |------|-------|--------|---|
96
+ | Fase 1 | {{N}} | 0 | 0% |
97
+ | Fase 2 | {{N}} | 0 | 0% |
98
+ | **Total** | **{{N}}** | **0** | **0%** |
99
+
100
+ ---
101
+
102
+ ## Ordem de Execução
103
+
104
+ ```
105
+ Fase 1:
106
+ 1. INFRA (setup de repos/ambiente)
107
+ 2. DB (schema/migrations)
108
+ 3. BACK (endpoints) ← pode paralelizar com FRONT após DB
109
+ 4. FRONT (telas)
110
+ → PR Fase 1 + testes manuais + merge
111
+
112
+ Fase 2:
113
+ 1. DB (novas tabelas/migrations)
114
+ 2. BACK (endpoints + regras)
115
+ 3. FRONT (telas + integração)
116
+ → PR Fase 2 + testes manuais + merge
117
+ ```
118
+
119
+ ---
120
+
121
+ ## Histórico
122
+
123
+ | Data | Evento | Detalhes |
124
+ |------|--------|----------|
125
+ | | Feature criada | PRD e/ou TRD aprovados, specs/ gerado |
126
+
127
+ ---
128
+
129
+ ## Pós-conclusão (por fase)
130
+
131
+ - [ ] PR aberto com template detalhado
132
+ - [ ] Ambiente local rodando para testes manuais
133
+ - [ ] Testes automatizados passando (unit + integration + security)
134
+ - [ ] Usuário aprovou e fez merge
135
+
136
+ ## Pós-conclusão (feature completa)
137
+
138
+ - [ ] Todas fases concluídas e mergeadas
139
+ - [ ] Rodar /sf-merge-docs (diff semântico PRD+TRD docs/) atualizou `docs/`
140
+ - [ ] Atualizar `workspace/Output/progresso.md` (visão global)
141
+ - [ ] Atualizar `.ai/memory/napkin.md` se houver aprendizado relevante
@@ -0,0 +1,358 @@
1
+ # TRD — {{NOME}}
2
+ ## Technical Requirements Document
3
+
4
+ > **Artefato gerado pela IA** a partir do processamento de insumos técnicos em `workspace/Input/{{NOME}}/`.
5
+ > Este é um dos dois docs source do pipeline SFW (peer do PRD).
6
+ > O TRD é aprovado pelo **dev / tech lead** — contém todas as decisões técnicas da feature.
7
+ > Depois de aprovado, alimenta `/sf-merge-docs` (docs/ cross-feature) e `/sf-design` (specs/).
8
+
9
+ ---
10
+
11
+ ## Meta
12
+
13
+ | Campo | Valor |
14
+ |-------|-------|
15
+ | Scope | `{{NOME}}` |
16
+ | Status | `em extração` → `aguardando aprovação (dev)` → `aprovado` |
17
+ | Insumos processados | {{LISTA_INSUMOS}} |
18
+ | Gerado em | |
19
+ | Aprovado em | |
20
+ | Aprovado por | {{nome do dev}} |
21
+
22
+ ---
23
+
24
+ <!--
25
+ =============================================================================
26
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
27
+ =============================================================================
28
+
29
+ QUANDO USAR: Gerado pelo /sf-extract (chamado via /sf-start).
30
+ QUEM GERA: Agent Tech-Analyzer (Opus) a partir dos outputs dos Readers (Sonnet).
31
+
32
+ PAR COM PRD: o TRD é peer do PRD. Ambos podem coexistir (caso mais comum),
33
+ ou o scope pode ter só um dos dois:
34
+ - Scope puro-produto (raro): só PRD, sem TRD
35
+ - Scope puro-técnico (bootstrap de infra, mudança de stack): só TRD, sem PRD
36
+ - Scope misto (maioria): ambos
37
+
38
+ REGRA DE OURO: o Analyzer decide qual(is) gerar baseado nos insumos. Não existe
39
+ "TRD empty" — se insumos não trazem conteúdo técnico, simplesmente não gera TRD.
40
+ Filtragem é responsabilidade do Analyzer + rastreada em §11 Rastreabilidade.
41
+
42
+ ZERO OVERLAP COM PRD:
43
+ - Jornadas de usuário, atores, RNs de negócio, UI → PRD
44
+ - Stack, schema, endpoints, validações de schema, deploy, ADRs → TRD
45
+ - Integrações externas: PRD descreve POR QUÊ; TRD descreve COMO
46
+ - Validações: PRD descreve regras de domínio; TRD descreve validações de formato
47
+
48
+ COMO GERAR:
49
+ 1. Readers (Sonnet) leem cada arquivo do Input/ individualmente e catalogam por seção
50
+ 2. Tech-Analyzer (Opus) recebe outputs e:
51
+ a. Consolida conteúdo técnico em visão unificada
52
+ b. Organiza por área (§Sistema + §Backend + §Frontend + §DB + §Infra)
53
+ c. Cruza com `docs/` (se existir) pra evitar decisões contraditórias
54
+ d. Identifica ambiguidades técnicas (ex: "qual DB?", "sync ou async?")
55
+ 3. Consultar `docs/` ANTES de marcar ambiguidade — se `docs/architecture.md` já
56
+ define stack, não perguntar de novo. Marcar "resolvido em docs/X §Y"
57
+ 4. Registrar DE QUAL insumo veio cada informação (rastreabilidade §11)
58
+
59
+ GATES POR ÁREA:
60
+ Cada seção §Área tem GATE: SIM/NÃO.
61
+ - GATE=SIM: feature toca essa área → preencher completo
62
+ - GATE=NÃO: feature não toca → escrever "N/A — feature não toca esta área" e pular
63
+ Em first-run (bootstrap), §Sistema é SEMPRE GATE=SIM (baseline completo).
64
+
65
+ ARQUIVOS DE INFRA:
66
+ TRD §Infra inclui docker-compose, Dockerfile, CI/CD scripts, env vars esperadas.
67
+ Mas não inclui arquivo de infra em si — só a DECISÃO. Arquivos reais viram tasks
68
+ no /sf-plan.
69
+
70
+ RELAÇÃO COM ADRs:
71
+ §9 Decisões Técnicas tem ADR-NNN com justificativa e alternativas. Esses ADRs
72
+ são sincronizados em docs/decisions.md via /sf-merge-docs após aprovação.
73
+
74
+ RE-GERAÇÃO:
75
+ - Merge ADITIVO com TRD existente (novos insumos não apagam decisões já aprovadas)
76
+ - Seções modificadas marcadas com <!-- ATUALIZADO: re-extração ISO_DATE -->
77
+ - IDs de ADR continuam sequência existente
78
+ - Se user quiser recomeçar do zero: deletar TRD.md + .extract-log.md manualmente
79
+
80
+ =============================================================================
81
+ -->
82
+
83
+ ## 1. §Sistema
84
+
85
+ > **GATE**: SIM / NÃO
86
+ > Baseline técnico da feature. Em first-run, preenche-se completo (é a base
87
+ > de todo o projeto). Em features subsequentes, preenche APENAS o que MUDA.
88
+
89
+ ### 1.1 Stack
90
+
91
+ | Camada | Tecnologia | Versão | Justificativa breve |
92
+ |--------|-----------|--------|---------------------|
93
+ | | | | |
94
+
95
+ ### 1.2 Arquitetura (C4 Nível 2)
96
+
97
+ ```
98
+ <!-- Representação textual dos containers e suas conexões -->
99
+ <!-- Formato: [Container] --protocolo--> [Container] -->
100
+ ```
101
+
102
+ | Container | Tecnologia | Responsabilidade | Porta | Comunicação |
103
+ |-----------|-----------|-----------------|-------|-------------|
104
+ | | | | | |
105
+
106
+ ### 1.3 Ambientes
107
+
108
+ | Ambiente | URL | Banco | Branch |
109
+ |----------|-----|-------|--------|
110
+ | Local | | | qualquer |
111
+ | Staging | | | develop |
112
+ | Produção | | | main |
113
+
114
+ ### 1.4 Deploy baseline
115
+
116
+ | Aspecto | Decisão |
117
+ |---------|---------|
118
+ | Plataforma | |
119
+ | Estratégia | rolling / blue-green / canary |
120
+ | Build | |
121
+
122
+ ### 1.5 Segurança baseline
123
+
124
+ - Autenticação: <!-- JWT/OAuth2/Session --> (detalhes em §7)
125
+ - CORS: <!-- config geral -->
126
+ - TLS: <!-- versão mínima -->
127
+ - Secrets: <!-- onde e como -->
128
+
129
+ ---
130
+
131
+ ## 2. §Área-Backend
132
+
133
+ > **GATE**: SIM / NÃO
134
+
135
+ ### 2.1 Endpoints
136
+
137
+ | Método | Rota | Auth | Responsabilidade |
138
+ |--------|------|------|------------------|
139
+ | | | | |
140
+
141
+ ### 2.2 Services / Camadas
142
+
143
+ | Service | Responsabilidade | Depende de |
144
+ |---------|------------------|------------|
145
+ | | | |
146
+
147
+ ### 2.3 Validações de entrada (schema)
148
+
149
+ > Formato/tipo/obrigatoriedade de campos — antes da lógica de negócio.
150
+
151
+ | Endpoint | Campo | Tipo | Obrigatório | Restrição | Erro |
152
+ |----------|-------|------|-------------|-----------|------|
153
+ | | | | | | |
154
+
155
+ ### 2.4 Libs e dependências principais
156
+
157
+ | Pacote | Versão | Para quê |
158
+ |--------|--------|----------|
159
+ | | | |
160
+
161
+ ---
162
+
163
+ ## 3. §Área-Frontend
164
+
165
+ > **GATE**: SIM / NÃO
166
+
167
+ ### 3.1 Rotas
168
+
169
+ | Rota | Tela | Guard | Descrição |
170
+ |------|------|-------|-----------|
171
+ | | | | |
172
+
173
+ ### 3.2 Componentes principais
174
+
175
+ | Componente | Responsabilidade | Props principais |
176
+ |------------|------------------|------------------|
177
+ | | | |
178
+
179
+ ### 3.3 State management
180
+
181
+ | Aspecto | Decisão |
182
+ |---------|---------|
183
+ | Server state | <!-- TanStack Query / SWR / RTK Query --> |
184
+ | Client state | <!-- Context / Zustand / Redux --> |
185
+ | Forms | <!-- React Hook Form / Formik --> |
186
+
187
+ ### 3.4 Design system
188
+
189
+ - <!-- Tailwind / MUI / Fusion / custom -->
190
+
191
+ ---
192
+
193
+ ## 4. §Área-DB
194
+
195
+ > **GATE**: SIM / NÃO
196
+
197
+ ### 4.1 Schema
198
+
199
+ ```sql
200
+ -- Entidades desta feature ou alterações em tabelas existentes
201
+ ```
202
+
203
+ ### 4.2 Índices e constraints
204
+
205
+ | Nome | Tabela | Colunas | Tipo | Justificativa |
206
+ |------|--------|---------|------|---------------|
207
+ | | | | btree / unique / gin / EXCLUDE | |
208
+
209
+ ### 4.3 Migrations
210
+
211
+ | # | Arquivo | Descrição | Rollback? |
212
+ |---|---------|-----------|-----------|
213
+ | 001 | | | Sim/Não |
214
+
215
+ ### 4.4 Convenções (se diferem de docs/domain.md)
216
+
217
+ - <!-- Apenas o que é particular a esta feature -->
218
+
219
+ ---
220
+
221
+ ## 5. §Área-Infra
222
+
223
+ > **GATE**: SIM / NÃO
224
+
225
+ ### 5.1 Containers
226
+
227
+ - <!-- docker-compose.dev (só dependências: postgres, redis, etc.) -->
228
+ - <!-- Dockerfiles pra CI/prod se aplicável -->
229
+
230
+ ### 5.2 CI/CD
231
+
232
+ | Etapa | Ferramenta | Trigger |
233
+ |-------|-----------|---------|
234
+ | Lint | | push |
235
+ | Test | | push |
236
+ | Build | | push em main/develop |
237
+ | Deploy staging | | push em develop |
238
+ | Deploy prod | | tag / manual |
239
+
240
+ ### 5.3 Variáveis de ambiente
241
+
242
+ | Variável | Obrigatória | Ambientes | Exemplo |
243
+ |----------|-------------|-----------|---------|
244
+ | | Sim/Não | | |
245
+
246
+ ### 5.4 Monitoramento
247
+
248
+ | Aspecto | Ferramenta | O que monitora |
249
+ |---------|-----------|----------------|
250
+ | Logs | | |
251
+ | Métricas| | |
252
+ | Alertas | | |
253
+
254
+ ---
255
+
256
+ ## 6. Integrações Externas
257
+
258
+ > Sistemas terceiros consumidos ou notificados. Timeout + Retry + Fallback são OBRIGATÓRIOS.
259
+
260
+ | Sistema | Direção | Protocolo | Timeout | Retry | Fallback |
261
+ |---------|---------|-----------|---------|-------|----------|
262
+ | | envia/recebe/ambos | REST/gRPC/webhook | | | |
263
+
264
+ ---
265
+
266
+ ## 7. Segurança Detalhada
267
+
268
+ ### 7.1 Autenticação
269
+
270
+ | Aspecto | Implementação |
271
+ |---------|--------------|
272
+ | Método | JWT / OAuth2 / Session |
273
+ | Expiração access | |
274
+ | Refresh token | |
275
+ | Hash de senha | bcrypt rounds N / argon2 |
276
+
277
+ ### 7.2 Autorização
278
+
279
+ | Aspecto | Decisão |
280
+ |---------|---------|
281
+ | Tipo | RBAC / ABAC / RBAC+ABAC |
282
+ | Onde é verificado | Middleware / Decorator / Service |
283
+
284
+ #### Papéis e permissões
285
+
286
+ | Papel | Herda de | Permissões desta feature |
287
+ |-------|----------|--------------------------|
288
+ | | | |
289
+
290
+ ### 7.3 LGPD / Privacidade (se aplicável)
291
+
292
+ | Dado | Base legal | Retenção | Criptografado? |
293
+ |------|-----------|----------|----------------|
294
+ | | | | |
295
+
296
+ ### 7.4 Rate limiting
297
+
298
+ | Categoria | Limite | Janela | Resposta |
299
+ |-----------|--------|--------|----------|
300
+ | | | | 429 + Retry-After |
301
+
302
+ ---
303
+
304
+ ## 8. Estratégia de Testes
305
+
306
+ | Nível | Framework | Escopo | Quando roda |
307
+ |-------|-----------|--------|-------------|
308
+ | Unit | | lógica isolada | por task |
309
+ | Integration | | request → DB → response | por fase |
310
+ | E2E | | jornadas completas | por feature |
311
+
312
+ ---
313
+
314
+ ## 9. Decisões Técnicas (ADRs)
315
+
316
+ > Cada ADR é imutável após aceita. Sincronizada em docs/decisions.md via /sf-merge-docs.
317
+
318
+ ### ADR-001: {{Título}}
319
+ - **Status**: proposta | aceita | substituída por ADR-XXX | descartada
320
+ - **Data**: YYYY-MM-DD
321
+ - **Contexto**: <!-- Por que essa decisão foi necessária? -->
322
+ - **Decisão**: <!-- O que decidimos? -->
323
+ - **Alternativas consideradas**:
324
+ 1. <!-- Alternativa A — rejeitada porque... -->
325
+ 2. <!-- Alternativa B — rejeitada porque... -->
326
+ - **Consequências**:
327
+ - Positivas: <!-- -->
328
+ - Negativas: <!-- -->
329
+ - Riscos: <!-- -->
330
+
331
+ ---
332
+
333
+ ## 10. Ambiguidades Técnicas
334
+
335
+ > ⚠️ **BLOQUEANTE** — `/sf-design` NÃO avança enquanto houver linha com `Resposta`
336
+ > vazia E `Resolvido em docs/` vazio.
337
+ >
338
+ > **Como responder** (ver `.github/skills/sf-extract/SKILL.md` → "Como responder ambiguidades"):
339
+ > preencher a coluna `Resposta` direto nesta tabela e rodar `/sf-design` de novo.
340
+
341
+ | ID | Pergunta | Contexto | Fonte | Consultei docs/? | Resposta | Resolvido em docs/ |
342
+ |----|----------|----------|-------|------------------|----------|--------------------|
343
+ | AMB-TRD-001 | ⚠️ | | | sim / não / ausente | (aguardando) | — |
344
+
345
+ ---
346
+
347
+ ## 11. Rastreabilidade
348
+
349
+ > Mapa de qual insumo originou qual seção. Permite auditoria da extração.
350
+
351
+ | Insumo | Tipo | Seções alimentadas |
352
+ |--------|------|--------------------|
353
+ | `{{arquivo}}` | {{tipo}} | §1.1, §1.2, §2.1, §9 (ADR-001) |
354
+
355
+ ---
356
+
357
+ > **Próximo passo**: Após aprovação do dev (campo `trd_aprovado: true` no
358
+ > `.context.md`), este TRD alimenta `/sf-design` (specs/) + `/sf-merge-docs` (docs/).