spec-first-copilot 0.6.0-beta.4 → 0.6.0-beta.6

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.
@@ -4,6 +4,12 @@
4
4
  > Gerado pelo `/design` a partir do PRD (se existir) + chunks tech do `/extract`.
5
5
  > O Coder lê APENAS este documento + `specs/{{NOME}}/` e seu task específica.
6
6
  > Se não está aqui, não será implementado.
7
+ >
8
+ > **Sobre o tamanho do template**: o SDD tem 12 seções para cobrir o range completo
9
+ > (app simples → sistema distribuído com 5 serviços). Escopo pequeno preenche 3-4
10
+ > seções e marca as outras como "N/A" ou "não se aplica" — isso é **esperado**.
11
+ > Áreas não tocadas (§4-§7) usam `GATE: NÃO` e ficam vazias. Não inflar conteúdo
12
+ > pra preencher seção vazia — "N/A" é resposta válida.
7
13
 
8
14
  ---
9
15
 
@@ -12,8 +18,8 @@
12
18
  | Campo | Valor |
13
19
  |-------|-------|
14
20
  | Scope | `{{NOME}}` |
15
- | PRD | `workspace/Output/{{NOME}}/PRD.md` — `empty: {{true|false}}` |
16
- | First-run | `{{true|false}}` — true quando `docs/` não existia antes desta execução |
21
+ | PRD | `workspace/Output/{{NOME}}/PRD.md` — `empty: {{true\|false}}` (sem aspas, bool) |
22
+ | First-run | `{{true\|false}}` — true quando `docs/` não existia antes desta execução |
17
23
  | Áreas tocadas | `[BACK?, FRONT?, DB?, INFRA?]` |
18
24
  | Status | `rascunho` → `em revisão` → `aprovado` → `em dev` → `concluído` |
19
25
  | Autor | `/design` |
@@ -507,12 +513,13 @@ Then {{resultado esperado}}
507
513
 
508
514
  ## 12. Ambiguidades Pendentes
509
515
 
510
- > ⚠️ **BLOQUEANTE** — `/design` não conclui com ambiguidades abertas.
511
- > Analyzer consultou `docs/` antes de listar — itens aqui são genuínos.
516
+ > ⚠️ **BLOQUEANTE** — `/plan` não conclui com ambiguidades abertas.
517
+ > Architect consultou `docs/` antes de listar — itens aqui são genuínos.
518
+ > IDs começam em `AMB-NNN`, continuando a sequência iniciada no PRD §14 (se houver).
512
519
 
513
- | # | Pergunta | Contexto | Consultei `docs/`? | Resposta |
514
- |---|----------|----------|--------------------|-----------|
515
- | 1 | | | sim / não / docs ausente | (aguardando) |
520
+ | ID | Pergunta | Contexto | Consultei `docs/`? | Resposta |
521
+ |----|----------|----------|--------------------|-----------|
522
+ | AMB-001 | | | sim / não / docs ausente | (aguardando) |
516
523
 
517
524
  ---
518
525
 
@@ -18,7 +18,7 @@ COMO ATUALIZAR:
18
18
  - Ao concluir feature (/merge-docs) → status "concluído" ou "done"
19
19
 
20
20
  ÁREAS SÃO DINÂMICAS:
21
- - Colunas de área mudam conforme o projeto (BANCO, BACK, FRONT, DOC, INFRA, MOBILE...)
21
+ - Colunas de área mudam conforme o projeto (DB, BACK, FRONT, DOC, INFRA, MOBILE...)
22
22
  - Cada feature pode ter áreas diferentes
23
23
  - Usar "—" quando uma feature não tem tasks naquela área
24
24
 
@@ -35,7 +35,7 @@ STATUS USA O VALOR DO .context.md:
35
35
  | 1 | {{NOME}} | {{status}} | 0/N | 0/N | 0/N | {{data}} |
36
36
 
37
37
  <!-- Exemplo preenchido:
38
- | 1 | setup_projeto | plan_done | BANCO: 0/7 | BACK: 0/10 | FRONT: 0/3 | DOC: 0/8 | 2026-04-08 |
38
+ | 1 | setup_projeto | plan_done | DB: 0/7 | BACK: 0/10 | FRONT: 0/3 | DOC: 0/8 | 2026-04-08 |
39
39
  | 2 | feat_cadastro_cliente | extract_done | — | — | — | — | 2026-04-09 |
40
40
  -->
41
41
 
@@ -1,7 +1,7 @@
1
1
  # Brief — {{NOME}}
2
2
 
3
- > Projeção estruturada do SDD para consumo do agent coder.
4
- > Gerado automaticamente pelo /sf-design a partir do SDD em `workspace/Output/{{NOME}}/sdd.md`.
3
+ > Contexto da feature para o coder: por quê, o quê e onde.
4
+ > Gerado pelo /design a partir do SDD. NUNCA editado manualmente.
5
5
 
6
6
  ---
7
7
 
@@ -10,25 +10,37 @@
10
10
  INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
11
  =============================================================================
12
12
 
13
- ORIGEM: /sf-design — projeção do SDD §1 Visão geral + §2 Decisões + §10 Fora do escopo.
13
+ ORIGEM: /design — projeção do SDD §1 Visão geral + §2 Decisões + §10 Fora do escopo.
14
14
  ATUALIZAÇÃO: Sempre regenerado junto com o SDD. NUNCA editado manualmente.
15
15
 
16
- REGRA DE OURO: Se algo aqui diverge do SDD, o SDD vence. Re-rode /sf-design.
16
+ REGRA DE OURO: Se algo aqui diverge do SDD, o SDD vence. Re-rode /design.
17
17
 
18
- O brief é o "por quê" + "o quê" destilado. Sem narrativa longa bullets objetivos.
19
- O coder o brief pra contexto, mas não deriva código daqui.
20
- Contratos ficam em contracts.md. Cenários ficam em scenarios.md.
18
+ O brief é o "por quê + o quê + onde" destilado. O coder ANTES de abrir contracts.md.
19
+ Sem narrativa longa bullets objetivos. Código NÃO é derivado daqui.
20
+
21
+ SOBRE "Serviços tocados":
22
+ - Listar os repos de projetos.yaml que esta feature modifica
23
+ - Incluir a área (BACK/FRONT/DB/INFRA) por serviço
24
+ - Se first-run (setup), listar todos os repos que serão CRIADOS
21
25
 
22
26
  =============================================================================
23
27
  -->
24
28
 
25
29
  ## Problema
26
30
 
27
- <!-- 2-3 frases. O que está faltando/quebrado que essa feature resolve. -->
31
+ <!-- 2-3 frases. O que está faltando ou quebrado que esta feature resolve. -->
28
32
 
29
33
  ## Solução
30
34
 
31
- <!-- High level: como estamos resolvendo. Não é design técnico. -->
35
+ <!-- High level: como estamos resolvendo. Sem design técnico — isso está em contracts.md. -->
36
+
37
+ ## Serviços tocados
38
+
39
+ <!-- Quais repos (de projetos.yaml) esta feature toca e em quais áreas. -->
40
+
41
+ | Repo | Áreas | Tipo de mudança |
42
+ |------|-------|-----------------|
43
+ | | | nova funcionalidade / alteração / infra |
32
44
 
33
45
  ## Escopo
34
46
 
@@ -40,7 +52,7 @@ Contratos ficam em contracts.md. Cenários ficam em scenarios.md.
40
52
 
41
53
  ## Decisões principais
42
54
 
43
- <!-- Mini-ADRs inline — cada decisão com justificativa em 1 linha. -->
55
+ <!-- Mini-ADRs inline — decisões específicas desta feature, não as globais de docs/decisions.md. -->
44
56
 
45
57
  | # | Decisão | Justificativa |
46
58
  |---|---------|---------------|
@@ -1,7 +1,7 @@
1
1
  # Contracts — {{NOME}}
2
2
 
3
- > Projeção estruturada do SDD para consumo do agent coder.
4
- > Gerado automaticamente pelo /sf-design a partir do SDD em `workspace/Output/{{NOME}}/sdd.md`.
3
+ > Contratos executáveis da feature: modelo de dados, API, integrações e regras de negócio.
4
+ > Gerado pelo /design a partir do SDD. NUNCA editado manualmente.
5
5
 
6
6
  ---
7
7
 
@@ -10,73 +10,132 @@
10
10
  INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
11
  =============================================================================
12
12
 
13
- ORIGEM: /sf-design — projeção do SDD §3 Modelo de dados + §4 Regras/validações
14
- + §5 Endpoints API + §8 Integrações externas.
13
+ ORIGEM: /design — projeção do SDD §Área-DB (dados) + §Área-Backend (endpoints/regras)
14
+ + §Área-* (integrações externas). Complementa (não repete) docs/apiContracts.md.
15
15
  ATUALIZAÇÃO: Sempre regenerado junto com o SDD. NUNCA editado manualmente.
16
16
 
17
- REGRA DE OURO: Se algo aqui diverge do SDD, o SDD vence. Re-rode /sf-design.
18
-
19
- O contracts.md é o "o que construir" — contratos executáveis.
20
- Tipos exatos do banco (não "string"). Request/response JSON completos.
21
- Regras de negócio com RN-NNN e enforcement points.
17
+ REGRA DE OURO: Se algo aqui diverge do SDD, o SDD vence. Re-rode /design.
18
+
19
+ DISTINÇÃO CRÍTICA (3 camadas):
20
+ - Camada 1 — Schema de DADOS: estrutura do banco (tabela, coluna, tipo, constraint DB)
21
+ vira migration SQL
22
+ → seção "Dados"
23
+ - Camada 2 — VALIDAÇÃO DE ENTRADA: restrição de formato/tipo do request
24
+ → verificada ANTES da lógica de negócio, no DTO/model via anotações
25
+ → ex: "email é string, obrigatório, formato válido, max 255 chars"
26
+ → seção "Validações de Entrada"
27
+ - Camada 3 — REGRA DE NEGÓCIO: invariante do domínio, envolve estado
28
+ → verificada NO SERVIÇO, pós-schema pós-validação
29
+ → ex: "email não pode estar cadastrado em outra conta ativa"
30
+ → seção "Regras de Negócio"
31
+
32
+ Essas três camadas não se sobrepõem. Regras em uma camada não aparecem na outra.
33
+
34
+ CONVENÇÕES GLOBAIS: NÃO duplicar aqui o que já está em docs/apiContracts.md
35
+ (paginação, HTTP codes genéricos, formato de erro, convenções de rota). Apenas referenciar.
36
+ Colocar aqui apenas o que é ESPECÍFICO desta feature.
37
+
38
+ PARA CODERS:
39
+ - Campos de dados: tipos EXATOS do banco (varchar(255), não "string")
40
+ - Requests/responses JSON: completos, com todos os campos nomeados
41
+ - Regras de negócio: RN-NNN com enforcement point explícito
42
+ - Integrações: timeout + retry + fallback obrigatórios
22
43
 
23
44
  =============================================================================
24
45
  -->
25
46
 
26
47
  ## Dados
27
48
 
28
- <!-- Entidades, tabelas, campos, constraints, índices.
29
- Tipos EXATOS do banco escolhido (varchar(255), não "string"). -->
49
+ <!-- Entidades tocadas por esta feature. Dois casos:
50
+ A) Tabela nova usar subseção "Tabelas novas"
51
+ B) Alteração em tabela existente → usar subseção "Alterações"
52
+ Se nenhum dos dois: omitir seção Dados inteira. -->
53
+
54
+ ### Tabelas novas
55
+
56
+ #### {{tabela}}
30
57
 
31
- ### {{tabela}}
58
+ > {{descrição em 1 linha}}
32
59
 
33
- | Coluna | Tipo | Nullable | Default | Constraint |
34
- |--------|------|----------|---------|------------|
35
- | | | | | |
60
+ | Coluna | Tipo | Nullable | Default | Constraint | Descrição |
61
+ |--------|------|----------|---------|------------|-----------|
62
+ | | | | | | |
36
63
 
37
64
  **Relações:**
38
- - `campo_id` → `tabela_ref(id)` ON DELETE ...
65
+ - `campo_id` → `tabela_ref(id)` ON DELETE RESTRICT / CASCADE / SET NULL
39
66
 
40
67
  **Índices:**
41
- - `idx_nome` em `(colunas)` — justificativa
68
+ - `idx_{{tabela}}_{{campo}}` em `(campo)` — justificativa (qual query usa)
69
+
70
+ ### Alterações em tabelas existentes
71
+
72
+ <!-- Uma subseção por tabela alterada. Listar apenas o que MUDA. -->
73
+
74
+ #### {{tabela_existente}}
75
+
76
+ | Operação | Coluna / Índice | Detalhe |
77
+ |----------|-----------------|---------|
78
+ | ADD COLUMN | `nome_coluna` | tipo + constraint + default |
79
+ | ALTER COLUMN | `nome_coluna` | o que muda (tipo, nullable, default) |
80
+ | DROP COLUMN | `nome_coluna` | justificativa + impacto em dados |
81
+ | ADD INDEX | `idx_nome` | colunas + justificativa |
82
+ | ADD FK | `campo_id` | referência + ON DELETE |
83
+
84
+ ## Validações de Entrada (schema)
85
+
86
+ <!-- Restrições de formato/tipo verificadas ANTES da lógica de negócio.
87
+ Viram anotações/atributos de validação no DTO/model de request.
88
+ NÃO são regras de negócio (que consultam estado). Se não há endpoint, omitir. -->
89
+
90
+ | Endpoint | Campo | Tipo | Obrigatório | Restrição de formato | Mensagem de erro |
91
+ |----------|-------|------|-------------|----------------------|------------------|
92
+ | | | | | | |
42
93
 
43
94
  ## API
44
95
 
45
- <!-- Endpoints com contratos JSON completos. -->
96
+ <!-- Convenções globais (rota, paginação, HTTP codes, formato de erro): ver docs/apiContracts.md.
97
+ Documentar aqui apenas contratos ESPECÍFICOS desta feature.
98
+ Se feature backend sem HTTP exposto (worker/job) ou frontend-only: omitir seção. -->
46
99
 
47
- ### {{método}} {{rota}}
100
+ ### {{MÉTODO}} {{rota}}
48
101
 
49
- **Auth**: <!-- Bearer / público / role -->
50
- **Rate limit**: <!-- categoria -->
102
+ **Auth**: <!-- Bearer / público / papel mínimo exigido -->
103
+ **Rate limit**: <!-- categoria (ver docs/conventions.md) -->
51
104
 
52
105
  **Request:**
53
106
  ```json
54
- {}
107
+ {
108
+ }
55
109
  ```
56
110
 
57
111
  **Response 200:**
58
112
  ```json
59
- {}
113
+ {
114
+ }
60
115
  ```
61
116
 
62
- **Errors:**
63
- | Status | Code | Quando |
64
- |--------|------|--------|
65
- | 400 | | |
66
- | 422 | | |
117
+ **Erros específicos desta feature:**
118
+ | Status | Código de domínio | Quando |
119
+ |--------|------------------|--------|
120
+ | 422 | | RN-NNN violada |
121
+ | 409 | | |
67
122
 
68
- ## Integrações externas
123
+ ## Integrações Externas
69
124
 
70
- <!-- Sistemas terceiros que essa feature consome/notifica. -->
125
+ <!-- Sistemas terceiros que esta feature consome ou notifica.
126
+ Se não houver: omitir seção. -->
71
127
 
72
128
  | Sistema | Direção | Protocolo | Timeout | Retry | Fallback |
73
129
  |---------|---------|-----------|---------|-------|----------|
74
130
  | | | | | | |
75
131
 
76
- ## Regras de negócio
132
+ ## Regras de Negócio
77
133
 
78
- <!-- RN-NNN com ponto de enforcement (DB constraint, service, middleware, etc). -->
134
+ <!-- Invariantes do domínio que envolvem estado (banco, cache, contexto).
135
+ Distintas de validação de entrada — estas são executadas no serviço, pós-schema.
136
+ Enforcement point = onde a regra é verificada no código (service, middleware, DB constraint). -->
79
137
 
80
- | ID | Regra | Enforcement | Error code |
81
- |----|-------|-------------|------------|
82
- | RN-001 | | | |
138
+ | ID | Regra | Enforcement point | Código de erro |
139
+ |----|-------|------------------|----------------|
140
+ | RN-001 | | service / db constraint / middleware | |
141
+ | RN-002 | | | |
@@ -1,7 +1,7 @@
1
1
  # Scenarios — {{NOME}}
2
2
 
3
- > Projeção estruturada do SDD para consumo do agent coder e reviewer.
4
- > Gerado automaticamente pelo /sf-design a partir do SDD em `workspace/Output/{{NOME}}/sdd.md`.
3
+ > Critérios de aceite + fluxos + estados de UI. Fonte de verdade para o Reviewer.
4
+ > Gerado pelo /design a partir do SDD. NUNCA editado manualmente.
5
5
 
6
6
  ---
7
7
 
@@ -10,70 +10,108 @@
10
10
  INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
11
  =============================================================================
12
12
 
13
- ORIGEM: /sf-design — projeção do SDD §6 Componentes/telas + §7 Fluxos de dados
14
- + §9 Estratégia de testes + Critérios de aceite.
13
+ ORIGEM: /design — projeção do SDD §Área-Backend (fluxos/validações) + §Área-Frontend
14
+ (telas/componentes) + §9 Estratégia de Testes + Critérios de Aceite.
15
15
  ATUALIZAÇÃO: Sempre regenerado junto com o SDD. NUNCA editado manualmente.
16
16
 
17
- REGRA DE OURO: Se algo aqui diverge do SDD, o SDD vence. Re-rode /sf-design.
17
+ REGRA DE OURO: Se algo aqui diverge do SDD, o SDD vence. Re-rode /design.
18
18
 
19
- O scenarios.md é o "como validar que funciona" — Given/When/Then testáveis,
20
- fluxos usuário→front→back, estados de UI (loading/empty/error/success).
19
+ TERMINOLOGIA (dois níveis de pré-condição):
20
+ - PRÉ-CONDIÇÕES GLOBAIS (seção no topo): estado que aplica a TODOS os cenários abaixo.
21
+ Ex: "sistema populado com seed", "usuário X existe em papel Y".
22
+ - PRÉ-CONDIÇÃO DO CA (dentro do CA): estado ADICIONAL específico daquele CA.
23
+ Ex: "produto com estoque = 0" em CA que testa venda sem estoque.
21
24
 
22
- O REVIEWER usa este arquivo pra validar critérios de aceite após implementação.
23
- Cada CA-NNN deve ser mapeável a um teste executável.
25
+ REGRAS DE PREENCHIMENTO:
26
+ - 1 CA = 1 regra de negócio testável (não agrupar múltiplas regras num CA)
27
+ - Cada CA DEVE ter um teste mapeado — sem teste = CA inválido
28
+ - Fluxos de erro têm seção própria — não esconder em "Caminhos de erro" do happy path
29
+ - Cada linha de "Fluxos de Erro" referencia o CA correspondente (coluna Ref CA)
30
+ - Feature sem frontend: seção UI/Componentes = "N/A — backend-only"
31
+ - Pré-condição = estado do banco/sistema, não input do usuário (input fica no When)
32
+ - Estratégia de testes NÃO redefine frameworks — referencia docs/architecture.md
33
+
34
+ PARA O REVIEWER:
35
+ - Validar que cada CA-NNN tem teste executável correspondente
36
+ - Usar esta tabela de estados como checklist de UI
37
+ - Fluxos de erro são obrigatórios no happy path test suite (não opcionais)
24
38
 
25
39
  =============================================================================
26
40
  -->
27
41
 
28
- ## Fluxos principais
42
+ ## Pré-condições Globais
43
+
44
+ <!-- Estado do sistema ANTES de executar os cenários abaixo. Aplicam a TODOS.
45
+ Exemplos: quais registros precisam existir no banco, qual papel está autenticado,
46
+ quais flags de feature estão ativas. Se não houver: "Estado limpo — sem pré-condições." -->
47
+
48
+ | Condição | Valor esperado |
49
+ |----------|---------------|
50
+ | | |
51
+
52
+ ## Fluxos — Happy Path
29
53
 
30
- <!-- Sequências usuário front back resposta. Caminhos de erro inclusos. -->
54
+ <!-- 1 fluxo por entregável principal. Formato linear: quem faz o quê e qual resultado.
55
+ Nível suficiente para coder implementar e reviewer validar — sem narrativa extra. -->
31
56
 
32
57
  ### Fluxo: {{nome}}
33
58
 
34
- ```
35
- usuário → [ação] → front → [request] → back → [validação+persistência] → resposta
36
- ```
59
+ | Passo | Ator | Ação / Request | Resultado / Response |
60
+ |-------|------|---------------|----------------------|
61
+ | 1 | | | |
62
+ | 2 | | | |
37
63
 
38
- **Caminhos de erro:**
39
- - Erro X → resposta Y
40
- - Timeout retry / fallback
64
+ ## Fluxos — Erro e Edge Cases
65
+
66
+ <!-- Desvios do happy path. Cada linha = 1 scenario testável.
67
+ Não omitir: são obrigatórios nos testes de integração.
68
+ Ref CA aponta pro CA detalhado abaixo que cobre este erro. -->
69
+
70
+ | Cenário | Pré-condição | Ação | Resposta esperada | HTTP / Código | Ref CA |
71
+ |---------|-------------|------|-------------------|---------------|--------|
72
+ | | | | | | |
41
73
 
42
74
  ## UI / Componentes
43
75
 
44
- <!-- Telas e componentes principais com seus estados. -->
76
+ <!-- Se backend-only: escrever "N/A feature sem frontend." e pular esta seção. -->
45
77
 
46
78
  ### {{componente}}
47
79
 
48
- | Estado | Gatilho | Visual |
49
- |--------|---------|--------|
50
- | loading | | |
51
- | empty | | |
52
- | error | | |
53
- | success | | |
80
+ | Estado | Gatilho | O que exibe | Dado / Mensagem |
81
+ |--------|---------|-------------|-----------------|
82
+ | loading | | skeleton / spinner | — |
83
+ | empty | | | |
84
+ | error | | mensagem de erro | código ou texto |
85
+ | success | | | |
54
86
 
55
87
  ## Critérios de Aceite
56
88
 
57
- <!-- Given/When/Then. Cada CA deve ser mapeável a um teste. -->
89
+ <!-- 1 CA = 1 regra de negócio testável. Given/When/Then em 1 linha cada.
90
+ Pré-condição = estado do sistema ADICIONAL às pré-condições globais (não repetir). -->
58
91
 
59
- ### CA-001: {{título curto}}
92
+ ### CA-001: {{título da regra — imperativo curto}}
60
93
 
61
- - **Given**: estado inicial
62
- - **When**: ação
63
- - **Then**: resultado esperado
64
- - **Teste**: `tipo` `arquivo_de_teste.ext`
94
+ - **Pré-condição**: <!-- estado adicional às globais. Ex: "produto com estoque = 0" -->
95
+ - **Given**: <!-- contexto do ator -->
96
+ - **When**: <!-- ação executada -->
97
+ - **Then**: <!-- resultado observável e verificável -->
98
+ - **Teste**: `unit|integration|e2e` — `caminho/do/arquivo_test.ext`
65
99
 
66
- ### CA-002: {{título curto}}
100
+ ### CA-002: {{título}}
67
101
 
102
+ - **Pré-condição**:
68
103
  - **Given**:
69
104
  - **When**:
70
105
  - **Then**:
71
106
  - **Teste**:
72
107
 
73
- ## Estratégia de testes
108
+ ## Estratégia de Testes
109
+
110
+ <!-- NÃO redefinir frameworks — usar os definidos em docs/architecture.md.
111
+ Descrever escopo e cobertura esperada para esta feature. -->
74
112
 
75
- | Nível | Framework | O que testa | Onde rodam |
76
- |-------|-----------|-------------|------------|
77
- | Unit | | lógica isolada | por task |
78
- | Integration | | entre componentes | por fase |
79
- | E2E | | CAs completos | por feature |
113
+ | Nível | Escopo nesta feature | Quando roda | Responsável |
114
+ |-------|----------------------|-------------|-------------|
115
+ | Unit | lógica de negócio isolada (serviços, validadores) | por task | coder |
116
+ | Integration | fluxo request DB → response | por fase | coder |
117
+ | E2E | CAs críticos end-to-end | por feature | coder (escreve) + reviewer (valida) |
@@ -1,61 +1,63 @@
1
- # Tasks — {{NOME}}
2
-
3
- > Plano de implementação único. Todas as tasks em uma tabela com coluna Área.
4
- > Gerado pelo /sf-plan a partir do SDD + specs/{{NOME}}/.
5
-
6
- ---
7
-
8
- <!--
9
- =============================================================================
10
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
- =============================================================================
12
-
13
- ORIGEM: /sf-plan — deriva de sdd.md + contracts.md + scenarios.md
14
- ATUALIZAÇÃO: /sf-plan re-roda se SDD/contracts/scenarios mudarem.
15
-
16
- STATUS vive em workspace/Output/{{NOME}}/Progresso.md — NÃO aqui.
17
- Tasks são só a definição do que precisa ser feito, não o estado.
18
-
19
- CAMPOS OBRIGATÓRIOS:
20
- - ID: {ÁREA}-NNN sequencial por área (BANCO-001, BACK-001, FRONT-001, INFRA-001)
21
- - Área: BANCO | BACK | FRONT | INFRA | DOC
22
- - Fase: número da fase de entrega (entregáveis contínuos)
23
- - Tamanho: S (≤2h) | M (meio dia) | L (1-2 dias)
24
- - Título: ação no imperativo ("Criar tabela clientes")
25
- - Repo: nome do serviço no projetos.yaml (api, web, worker...)
26
- - Arquivos: caminhos que a task vai criar/modificar (relativos ao repo)
27
- - Depende de: outros IDs cross-area OK
28
- - Ref spec: seção do SDD que define essa task
29
- - Ref CA: ID do critério de aceite em scenarios.md (se aplica)
30
-
31
- REGRAS:
32
- - IDs estáveis — nunca renumerar após commit
33
- - Depends_on cross-area é OK (BACK-001 depende de BANCO-001)
34
- - Toda task deve ter pelo menos 1 teste (unit + optional integration)
35
- - Tarefas da mesma fase/área rodam em sequência, fases são sequenciais
36
-
37
- =============================================================================
38
- -->
39
-
40
- ## Tasks
41
-
42
- | ID | Área | Fase | Tam | Título | Repo | Arquivos | Depende de | Ref spec | Ref CA |
43
- |----|------|------|-----|--------|------|----------|-----------|----------|--------|
44
- | BANCO-001 | BANCO | 1 | S | | | | — | SDD §3.1 | — |
45
- | BACK-001 | BACK | 1 | M | | | | BANCO-001 | SDD §5.1 | CA-001 |
46
-
47
- ## Regras por área
48
-
49
- <!-- Convenções específicas extraídas do SDD + docs/ (architecture, domain, conventions). -->
50
-
51
- ### BANCO
52
- -
53
-
54
- ### BACK
55
- -
56
-
57
- ### FRONT
58
- -
59
-
60
- ### INFRA
61
- -
1
+ # Tasks — {{NOME}}
2
+
3
+ > Plano de implementação: todas as tasks em tabela única com coluna Área.
4
+ > Gerado pelo /plan a partir do SDD + specs/{{NOME}}/. NUNCA editado manualmente.
5
+
6
+ ---
7
+
8
+ <!--
9
+ =============================================================================
10
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
+ =============================================================================
12
+
13
+ ORIGEM: /plan — deriva de sdd.md + contracts.md + scenarios.md
14
+ ATUALIZAÇÃO: /plan re-roda se SDD/contracts/scenarios mudarem.
15
+
16
+ STATUS: vive em workspace/Output/{{NOME}}/Progresso.md — NÃO aqui.
17
+ Tasks são só a definição do que precisa ser feito, não o estado atual.
18
+
19
+ CAMPOS OBRIGATÓRIOS (toda task):
20
+ - ID: {ÁREA}-NNN sequencial por área (DB-001, BACK-001, FRONT-001, INFRA-001)
21
+ - Área: derivada do SDD dinâmica, não fixa. as áreas que esta feature toca.
22
+ - Fase: número da fase de entrega (do PRD §11). 1 fase = 1 entregável = 1 PR.
23
+ Em bootstrap (PRD empty): toda task vai pra Fase 1 (setup inicial).
24
+ - Tam: S (≤2h) | M (≤4h) | L (≤2 dias)
25
+ - Título: verbo imperativo + objeto ("Criar migration tabela pedidos")
26
+ - Repo: nome do serviço em projetos.yaml (api, web, worker...)
27
+ - Arquivos: paths relativos ao repo que serão criados/modificados
28
+ - Depende: IDs de tasks que precisam estar concluídas antes. Cross-área OK.
29
+ - Ref SDD: seção do SDD que originou a task (ex: "§4.2", "§Área-BACK"). Obrigatório.
30
+ - Ref CA: ID do CA em scenarios.md que esta task satisfaz. Opcional
31
+ (INFRA/DOC costumam não ter; BACK/FRONT normalmente têm).
32
+
33
+ PARA TASKS TAMANHO L:
34
+ - Preencher bloco "Done When {TASK-ID}" logo abaixo da tabela
35
+ - L sugere: considerar dividir em 2 tasks M (INVEST: Small)
36
+ - Reviewer usa "Done When" como checklist antes de aprovar
37
+
38
+ REGRAS:
39
+ - IDs estáveis — nunca renumerar após commit
40
+ - Toda task com Ref CA deve ter teste correspondente (unit ou integration)
41
+ - Mesma fase = podem rodar em paralelo dentro da área
42
+ - Fases são SEQUENCIAIS entre si
43
+ - Áreas são dinâmicas — preencher apenas as tocadas pela feature
44
+
45
+ =============================================================================
46
+ -->
47
+
48
+ ## Tasks
49
+
50
+ | ID | Área | Fase | Tam | Título | Repo | Arquivos | Depende de | Ref SDD | Ref CA |
51
+ |----|------|------|-----|--------|------|----------|-----------|---------|--------|
52
+ | | | | | | | | — | | — |
53
+
54
+ ## Done When — Tasks L
55
+
56
+ <!-- 1 bloco por task L. Remover esta seção inteira se não houver tasks L.
57
+ 3-5 bullets verificáveis. Cada bullet deve ser observável objetivamente. -->
58
+
59
+ ### {TASK-ID}
60
+
61
+ - [ ]
62
+ - [ ]
63
+ - [ ]