spec-first-copilot 0.7.0 → 0.8.0-beta.2

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.
@@ -1,107 +1,140 @@
1
- # Decisões — Architecture Decision Records
2
-
3
- > Registro de decisões arquiteturais com contexto, alternativas e consequências.
4
- > Cada decisão é imutável após aceita. Novas decisões podem substituir anteriores.
5
-
6
- ---
7
-
8
- <!--
9
- =============================================================================
10
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
- =============================================================================
12
-
13
- PAPEL: Registro APPEND-ONLY de decisões arquiteturais do projeto.
14
- Histórico de "por que fizemos assim?" — imutável uma vez aceita.
15
- Consultado por features pra não refazer decisões; feature que queira contestar
16
- cria nova ADR com status "substituída por ADR-NNN".
17
-
18
- ORIGEM (first-run, via /sf-design):
19
- - TRD §9 Decisões Técnicas (ADRs de bootstrap: escolha de stack, arquitetura,
20
- auth scheme, estratégia de testes) → transcritas aqui como ADR-001, ADR-002...
21
-
22
- ATUALIZAÇÃO (feature): /sf-merge-docs faz diff semântico TRD §9 ↔ docs/decisions.md
23
- e aplica ADDED quando feature introduz ADR nova (raro mas acontece: mudança
24
- de padrão, nova dependência crítica, trade-off significativo). REMOVED nunca
25
- apaga ADR existente — muda status pra "substituída".
26
-
27
- COMO GERAR:
28
- 1. Para cada decisão significativa, criar registro com TODOS os campos
29
- 2. Contexto: POR QUE essa decisão foi necessária (não apenas "precisávamos")
30
- 3. Alternativas: OBRIGATÓRIO listar ao menos 1 alternativa (com motivo da rejeição)
31
- 4. Consequências: o que MUDA por causa da decisão (positivo E negativo)
32
-
33
- REGRAS:
34
- - IDs sequenciais: ADR-001, ADR-002... nunca reutilizar
35
- - NUNCA editar decisão com status "aceita" — criar nova com "substituída por ADR-XXX"
36
- - Status "proposta" = ainda em discussão, não implementar até aceitar
37
- - Toda mudança de stack, banco, framework DEVE ter registro aqui
38
- - Decisões são APPEND-ONLY — histórico importa
39
-
40
- QUANDO CRIAR:
41
- - Escolha de tecnologia/framework (em first-run, alimenta a seção inicial)
42
- - Mudança de padrão de design (feature que introduz)
43
- - Decisão de infra (cloud provider, DB engine)
44
- - Trade-off significativo (performance vs simplicidade, etc.)
45
- - /sf-merge-docs detecta §11 ADDED com impacto arquitetural
46
-
47
- QUANDO NÃO CRIAR:
48
- - Escolha de nome de variável
49
- - Implementação seguindo padrão definido
50
- - Bug fix
51
- - Refactor sem mudança de interface
52
-
53
- =============================================================================
54
- -->
55
-
56
- ## Índice
57
-
58
- | ADR | Título | Status | Data |
59
- |-----|--------|--------|------|
60
- | ADR-001 | {{Título}} | proposta / aceita / substituída / descartada | |
61
-
62
- ## Formato
63
-
64
- Cada decisão segue este modelo:
65
-
66
- ```markdown
67
- ### ADR-NNN: Título da Decisão
68
- - **Status**: proposta | aceita | substituída por ADR-XXX | descartada
69
- - **Data**: YYYY-MM-DD
70
- - **Contexto**: Por que essa decisão foi necessária?
71
- - **Decisão**: O que decidimos?
72
- - **Alternativas consideradas**:
73
- 1. Alternativa A — rejeitada porque...
74
- 2. Alternativa B rejeitada porque...
75
- - **Consequências**:
76
- - Positivas: ...
77
- - Negativas: ...
78
- - Riscos: ...
79
- ```
80
-
81
- ---
82
-
83
- ## Decisões
84
-
85
- ### ADR-001: {{Título}}
86
- - **Status**: aceita
87
- - **Data**:
88
- - **Contexto**:
89
- - **Decisão**:
90
- - **Alternativas consideradas**:
91
- 1.
92
- - **Consequências**:
93
- - Positivas:
94
- - Negativas:
95
- - Riscos:
96
-
97
- ---
98
-
99
- > **Regra**: Decisões aceitas são imutáveis. Para reverter, criar nova decisão com status "substituída por ADR-XXX" na original.
100
-
101
- ---
102
-
103
- ## Changelog
104
-
105
- | Data | Feature | Tipo | Descrição |
106
- |------|---------|------|-----------|
107
- | | | | |
1
+ # Decisões — Architecture Decision Records
2
+
3
+ > Registro de decisões arquiteturais com contexto, alternativas e consequências.
4
+ > Cada decisão é imutável após aceita. Novas decisões podem substituir anteriores.
5
+
6
+ ---
7
+
8
+ <!--
9
+ =============================================================================
10
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
+ =============================================================================
12
+
13
+ PAPEL: Registro APPEND-ONLY de decisões arquiteturais do projeto.
14
+ Histórico de "por que fizemos assim?" — imutável uma vez aceita.
15
+ Consultado por features pra não refazer decisões; feature que queira contestar
16
+ cria nova ADR com status "substituída por ADR-NNN".
17
+
18
+ ORIGEM (first-run, via /sf-design):
19
+ - TRD §9 Decisões Técnicas (ADRs de bootstrap: escolha de stack, arquitetura,
20
+ auth scheme, estratégia de testes) → transcritas aqui como ADR-001, ADR-002...
21
+
22
+ ATUALIZAÇÃO (feature): /sf-merge-docs faz diff semântico TRD §9 ↔ docs/decisions.md
23
+ e aplica ADDED quando feature introduz ADR nova (raro mas acontece: mudança
24
+ de padrão, nova dependência crítica, trade-off significativo). REMOVED nunca
25
+ apaga ADR existente — muda status pra "substituída".
26
+
27
+ COMO GERAR:
28
+ 1. Para cada decisão significativa, criar registro com TODOS os campos
29
+ 2. Contexto: POR QUE essa decisão foi necessária (não apenas "precisávamos")
30
+ 3. Alternativas: OBRIGATÓRIO listar ao menos 1 alternativa (com motivo da rejeição)
31
+ 4. Consequências: o que MUDA por causa da decisão (positivo E negativo)
32
+
33
+ REGRAS:
34
+ - IDs sequenciais: ADR-001, ADR-002... nunca reutilizar
35
+ - NUNCA editar decisão com status "aceita" — criar nova com "substituída por ADR-XXX"
36
+ - Status "proposta" = ainda em discussão, não implementar até aceitar
37
+ - Toda mudança de stack, banco, framework DEVE ter registro aqui
38
+ - Decisões são APPEND-ONLY — histórico importa
39
+
40
+ ADRs INFERIDOS (origem /sfw-onboard de projeto brownfield):
41
+ - Quando o /sfw-onboard cria a documentação a partir de código existente, gera
42
+ ADRs descrevendo decisões OBSERVADAS no código (não tomadas em discussão).
43
+ - Cada ADR inferida tem flag `inferido: true` no início do bloco.
44
+ - Texto descritivo, NÃO prescritivo: "Projeto usa PostgreSQL com JSONB pra X"
45
+ (não "decidimos usar"). Cartógrafo, não arquiteto.
46
+ - Campo "Contexto" descreve o que o código revela. Campo "Alternativas" pode
47
+ ficar vazio ou listar "—" — não tem como saber o que foi descartado.
48
+ - Quando dev revisa e confirma/edita o ADR inferido, REMOVE a flag `inferido`.
49
+ - ADRs inferidos podem ser substituídos por novas ADRs (de features futuras)
50
+ como qualquer outro — flag não afeta imutabilidade.
51
+
52
+ =============================================================================
53
+ -->
54
+
55
+ ## Formato — ADR normal
56
+
57
+ ```markdown
58
+ ### ADR-NNN: Título da Decisão
59
+ - **Status**: proposta | aceita | substituída por ADR-XXX | descartada
60
+ - **Data**: YYYY-MM-DD
61
+ - **Contexto**: Por que essa decisão foi necessária?
62
+ - **Decisão**: O que decidimos?
63
+ - **Alternativas consideradas**:
64
+ 1. Alternativa A rejeitada porque...
65
+ - **Consequências**:
66
+ - Positivas: ...
67
+ - Negativas: ...
68
+ - Riscos: ...
69
+ ```
70
+
71
+ ## Formato ADR inferida (origem brownfield)
72
+
73
+ ```markdown
74
+ ### ADR-NNN: Título descritivo do padrão observado
75
+ - **Status**: aceita
76
+ - **Inferido**: true <!-- remover este campo após dev revisar e confirmar -->
77
+ - **Data**: YYYY-MM-DD (data do onboarding)
78
+ - **Contexto**: O que o código revela sobre o cenário (não "decidimos" — "projeto usa")
79
+ - **Decisão**: Padrão observado no código + onde ver (arquivo:linha)
80
+ - **Alternativas consideradas**:
81
+ 1. — (não inferível a partir do código)
82
+ - **Consequências**:
83
+ - Observadas: efeitos visíveis do padrão no código atual
84
+ ```
85
+
86
+ <!--
87
+ =============================================================================
88
+ INSTRUÇÕES PARA O AGENTE — continuação
89
+ =============================================================================
90
+
91
+ QUANDO CRIAR:
92
+ - Escolha de tecnologia/framework (em first-run, alimenta a seção inicial)
93
+ - Mudança de padrão de design (feature que introduz)
94
+ - Decisão de infra (cloud provider, DB engine)
95
+ - Trade-off significativo (performance vs simplicidade, etc.)
96
+ - /sf-merge-docs detecta §11 ADDED com impacto arquitetural
97
+
98
+ QUANDO NÃO CRIAR:
99
+ - Escolha de nome de variável
100
+ - Implementação seguindo padrão já definido
101
+ - Bug fix
102
+ - Refactor sem mudança de interface
103
+
104
+ =============================================================================
105
+ -->
106
+
107
+ ## Índice
108
+
109
+ | ADR | Título | Status | Inferido | Data |
110
+ |-----|--------|--------|----------|------|
111
+ | ADR-001 | {{Título}} | proposta / aceita / substituída / descartada | sim/não | |
112
+
113
+ ---
114
+
115
+ ## Decisões
116
+
117
+ ### ADR-001: {{Título}}
118
+ - **Status**: aceita
119
+ - **Inferido**: <!-- true se veio do /sfw-onboard; omitir após dev revisar -->
120
+ - **Data**:
121
+ - **Contexto**:
122
+ - **Decisão**:
123
+ - **Alternativas consideradas**:
124
+ 1. —
125
+ - **Consequências**:
126
+ - Positivas:
127
+ - Negativas:
128
+ - Riscos:
129
+
130
+ ---
131
+
132
+ > **Regra**: Decisões aceitas são imutáveis. Para reverter, criar nova decisão com status "substituída por ADR-XXX" na original.
133
+
134
+ ---
135
+
136
+ ## Changelog
137
+
138
+ | Data | Feature | Tipo | Descrição |
139
+ |------|---------|------|-----------|
140
+ | | | | |