sedd 0.1.5 → 0.1.7
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.
- package/README.md +58 -10
- package/commands/sedd.clarify.md +54 -1
- package/commands/sedd.dashboard.md +24 -126
- package/commands/sedd.implement.md +139 -4
- package/dist/cli/index.js +9 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +0 -2
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +100 -53
- package/dist/cli/update.js.map +1 -1
- package/dist/cli/version-check.d.ts +9 -0
- package/dist/cli/version-check.d.ts.map +1 -0
- package/dist/cli/version-check.js +48 -0
- package/dist/cli/version-check.js.map +1 -0
- package/hooks/README.md +20 -0
- package/hooks/check-roadmap.js +33 -8
- package/hooks/check-roadmap.ps1 +71 -6
- package/package.json +2 -2
- package/templates/acceptance-template.md +39 -2
package/README.md
CHANGED
|
@@ -60,9 +60,9 @@ Tasks:
|
|
|
60
60
|
|
|
61
61
|
## Expectation-First Workflow
|
|
62
62
|
|
|
63
|
-
### 1. Captura Obrigatória
|
|
63
|
+
### 1. Captura Obrigatória (DEVE / NÃO DEVE)
|
|
64
64
|
|
|
65
|
-
Ao usar `/sedd.specify` ou `/sedd.clarify`, a AI pergunta
|
|
65
|
+
Ao usar `/sedd.specify` ou `/sedd.clarify`, a AI pergunta:
|
|
66
66
|
|
|
67
67
|
```
|
|
68
68
|
🎯 Qual é sua EXPECTATIVA para esta feature?
|
|
@@ -70,6 +70,16 @@ Ao usar `/sedd.specify` ou `/sedd.clarify`, a AI pergunta primeiro:
|
|
|
70
70
|
O que você espera ver funcionando quando estiver pronto?
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
+
E depois detalha com regras claras:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
**O que DEVE acontecer?** (requisitos obrigatórios)
|
|
77
|
+
> Criar domínio no monolito, usar padrão repository
|
|
78
|
+
|
|
79
|
+
**O que NÃO DEVE acontecer?** (restrições/proibições)
|
|
80
|
+
> NÃO criar endpoint em serviço X, NÃO usar API externa
|
|
81
|
+
```
|
|
82
|
+
|
|
73
83
|
### 2. Score de Alinhamento
|
|
74
84
|
|
|
75
85
|
Ao gerar tasks, SEDD calcula cobertura:
|
|
@@ -99,7 +109,24 @@ SEDD gera `acceptance.md` baseado na expectativa:
|
|
|
99
109
|
- [ ] AC-004: Theme persists across sessions
|
|
100
110
|
```
|
|
101
111
|
|
|
102
|
-
### 4.
|
|
112
|
+
### 4. Validação Por Task (NÃO DEVE)
|
|
113
|
+
|
|
114
|
+
Antes de marcar qualquer task como concluída, SEDD valida contra restrições:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
⚠️ VALIDAÇÃO - Task T001-003
|
|
118
|
+
|
|
119
|
+
Arquivos modificados:
|
|
120
|
+
- services/x/endpoints/new.ts ← ⛔ VIOLA "NÃO criar endpoint em serviço X"
|
|
121
|
+
- src/domains/novo/index.ts ← ✅ OK
|
|
122
|
+
|
|
123
|
+
❌ Task viola restrição. Opções:
|
|
124
|
+
1. Reverter e refazer
|
|
125
|
+
2. Ajustar expectativa
|
|
126
|
+
3. Continuar (marcar como desvio)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 5. Checkpoints Durante Implementação
|
|
103
130
|
|
|
104
131
|
A cada 3 tasks, SEDD verifica alinhamento:
|
|
105
132
|
|
|
@@ -112,18 +139,22 @@ Sua expectativa:
|
|
|
112
139
|
Isso ainda está alinhado? [Y/n/ajustar]
|
|
113
140
|
```
|
|
114
141
|
|
|
115
|
-
###
|
|
142
|
+
### 6. Validação Final (DEVE + NÃO DEVE)
|
|
116
143
|
|
|
117
144
|
Ao completar migration, valida contra acceptance criteria:
|
|
118
145
|
|
|
119
146
|
```
|
|
120
147
|
🏁 Migration 001 Completa!
|
|
121
148
|
|
|
122
|
-
|
|
149
|
+
━━━ CRITÉRIOS POSITIVOS (DEVE) ━━━
|
|
123
150
|
- [x] AC-001: User can toggle ✓
|
|
124
151
|
- [x] AC-002: Toggle in settings ✓
|
|
125
152
|
- [ ] AC-003: Persist after refresh ✗
|
|
126
153
|
|
|
154
|
+
━━━ CRITÉRIOS NEGATIVOS (NÃO DEVE) ━━━
|
|
155
|
+
- [x] AC-N01: Nenhum arquivo em services/x/ ✓
|
|
156
|
+
- [x] AC-N02: Nenhuma API externa ✓
|
|
157
|
+
|
|
127
158
|
Criar migration de follow-up? [Y/n]
|
|
128
159
|
```
|
|
129
160
|
|
|
@@ -147,6 +178,7 @@ Criar migration de follow-up? [Y/n]
|
|
|
147
178
|
| `/sedd.clarify` | Clarificar e gerar tasks com score |
|
|
148
179
|
| `/sedd.implement` | Executar tasks com checkpoints |
|
|
149
180
|
| `/sedd.implement --all` | Executar tudo sem parar |
|
|
181
|
+
| `/sedd.dashboard` | Ver status atual de migrations e tasks |
|
|
150
182
|
|
|
151
183
|
---
|
|
152
184
|
|
|
@@ -155,22 +187,34 @@ Criar migration de follow-up? [Y/n]
|
|
|
155
187
|
```
|
|
156
188
|
.sedd/001-user-auth/
|
|
157
189
|
├── spec.md # Especificação + Expectativa
|
|
158
|
-
├── _meta.json # Metadados + expectation
|
|
190
|
+
├── _meta.json # Metadados + expectation estruturada
|
|
159
191
|
│
|
|
160
192
|
├── 001_timestamp/ # Migration 1
|
|
161
|
-
│ ├── clarify.md # Discussão
|
|
193
|
+
│ ├── clarify.md # Discussão + DEVE/NÃO DEVE
|
|
162
194
|
│ ├── decisions.md # Decisões
|
|
163
195
|
│ ├── tasks.md # Tasks T001-XXX
|
|
164
|
-
│ └── acceptance.md # Critérios
|
|
196
|
+
│ └── acceptance.md # Critérios positivos e negativos
|
|
165
197
|
│
|
|
166
|
-
└── progress.md # Progresso + checkpoints
|
|
198
|
+
└── progress.md # Progresso + checkpoints + desvios
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Estrutura de Expectativa em _meta.json
|
|
202
|
+
|
|
203
|
+
```json
|
|
204
|
+
{
|
|
205
|
+
"expectation": {
|
|
206
|
+
"summary": "User can toggle dark mode",
|
|
207
|
+
"must": ["Criar toggle", "Persistir no banco"],
|
|
208
|
+
"mustNot": ["Criar endpoint em serviço X", "Usar localStorage"]
|
|
209
|
+
}
|
|
210
|
+
}
|
|
167
211
|
```
|
|
168
212
|
|
|
169
213
|
---
|
|
170
214
|
|
|
171
215
|
## Hooks Inteligentes
|
|
172
216
|
|
|
173
|
-
O hook `check-roadmap.js` sempre mostra:
|
|
217
|
+
O hook `check-roadmap.js` sempre mostra expectativas E restrições:
|
|
174
218
|
|
|
175
219
|
```xml
|
|
176
220
|
<sedd-context>
|
|
@@ -179,6 +223,10 @@ Branch: 024-feature | Migration: 001 | Progress: 3/10 🟢 ~85%
|
|
|
179
223
|
🎯 FEATURE: User can customize theme
|
|
180
224
|
📍 MIGRATION 001: Toggle dark mode with persistence
|
|
181
225
|
|
|
226
|
+
⛔ NÃO DEVE:
|
|
227
|
+
- ❌ Criar endpoint no serviço X
|
|
228
|
+
- ❌ Usar localStorage
|
|
229
|
+
|
|
182
230
|
Pending tasks:
|
|
183
231
|
- T001-004: Add to settings page
|
|
184
232
|
- T001-005: API endpoint
|
package/commands/sedd.clarify.md
CHANGED
|
@@ -68,6 +68,49 @@ Save in `clarify.md` under `## Expected Outcome` section (NO TOPO).
|
|
|
68
68
|
|
|
69
69
|
**NÃO PROSSIGA** sem a expectativa do usuário.
|
|
70
70
|
|
|
71
|
+
### Step 1.5: Detail MUST and MUST NOT (STRUCTURED EXPECTATION)
|
|
72
|
+
|
|
73
|
+
Após capturar o resumo da expectativa, detalhar com regras claras:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Agora vamos detalhar sua expectativa:
|
|
77
|
+
|
|
78
|
+
**O que DEVE acontecer?** (requisitos obrigatórios)
|
|
79
|
+
Exemplo: "Criar domínio no monolito", "Usar padrão repository"
|
|
80
|
+
> [usuário lista]
|
|
81
|
+
|
|
82
|
+
**O que NÃO DEVE acontecer?** (restrições/proibições)
|
|
83
|
+
Exemplo: "NÃO criar endpoint em serviço X", "NÃO usar API externa"
|
|
84
|
+
> [usuário lista]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Se usuário não tiver restrições, aceitar resposta vazia para `mustNot`.
|
|
88
|
+
|
|
89
|
+
Save in `clarify.md` under `## Expectation Details`:
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
## Expectation Details
|
|
93
|
+
|
|
94
|
+
### DEVE fazer:
|
|
95
|
+
- Criar novo domínio no monolito
|
|
96
|
+
- Usar padrão repository existente
|
|
97
|
+
|
|
98
|
+
### NÃO DEVE fazer:
|
|
99
|
+
- ❌ Criar endpoint no serviço X
|
|
100
|
+
- ❌ Usar API externa
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Estrutura para _meta.json** (será salvo no Step 8):
|
|
104
|
+
```json
|
|
105
|
+
{
|
|
106
|
+
"expectation": {
|
|
107
|
+
"summary": "texto livre do usuário",
|
|
108
|
+
"must": ["item1", "item2"],
|
|
109
|
+
"mustNot": ["item1", "item2"]
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
71
114
|
### Step 2: Load Context
|
|
72
115
|
|
|
73
116
|
Read from feature root:
|
|
@@ -430,7 +473,17 @@ Como você imagina a persistência funcionando?
|
|
|
430
473
|
"tasksTotal": 5,
|
|
431
474
|
"tasksCompleted": 0,
|
|
432
475
|
"createdAt": "2026-01-11T10:30:45Z",
|
|
433
|
-
"expectation":
|
|
476
|
+
"expectation": {
|
|
477
|
+
"summary": "User can toggle dark mode and have it persist",
|
|
478
|
+
"must": [
|
|
479
|
+
"Criar toggle de dark mode",
|
|
480
|
+
"Persistir preferência no banco"
|
|
481
|
+
],
|
|
482
|
+
"mustNot": [
|
|
483
|
+
"Criar endpoint no serviço X",
|
|
484
|
+
"Usar localStorage (usar banco)"
|
|
485
|
+
]
|
|
486
|
+
}
|
|
434
487
|
}
|
|
435
488
|
}
|
|
436
489
|
}
|
|
@@ -1,145 +1,43 @@
|
|
|
1
|
-
# /sedd.dashboard -
|
|
1
|
+
# /sedd.dashboard - Status das Clarificações
|
|
2
2
|
|
|
3
3
|
## Purpose
|
|
4
|
-
|
|
4
|
+
Mostrar o status atual de migrations, tasks e progresso da feature.
|
|
5
5
|
|
|
6
6
|
## Trigger
|
|
7
|
-
- `/sedd.dashboard`
|
|
8
|
-
- `/sedd.dashboard -m 001` - Focus on specific migration
|
|
7
|
+
- `/sedd.dashboard` - Ver status completo
|
|
9
8
|
|
|
10
|
-
##
|
|
9
|
+
## Output
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
O comando exibe:
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
| MIGRATIONS | TASKS (3/5 completed) |
|
|
19
|
-
| ----------------- | ------------------------------------------ |
|
|
20
|
-
| > 001 [in-progress] | [x] T001-001 Create ThemeContext |
|
|
21
|
-
| 002 [pending] | [x] T001-002 Update database schema |
|
|
22
|
-
| 003 [pending] | [ ] T001-003 Create toggle component < |
|
|
23
|
-
| | [ ] T001-004 Add to settings page |
|
|
24
|
-
| | [ ] T001-005 API endpoint |
|
|
25
|
-
+---------------------+--------------------------------------------+
|
|
26
|
-
| PREVIEW: clarify.md |
|
|
27
|
-
| ---------------------------------------------------------------- |
|
|
28
|
-
| ## Expected Outcome |
|
|
29
|
-
| > User can toggle dark mode and have it persist |
|
|
30
|
-
| |
|
|
31
|
-
| ## Questions & Answers |
|
|
32
|
-
| ### Q1: Where to store preference? |
|
|
33
|
-
| **Answer:** In user account database... |
|
|
34
|
-
+------------------------------------------------------------------+
|
|
35
|
-
| [================== ] 60% (3/5 tasks) [?] Help | [q] Quit |
|
|
36
|
-
+------------------------------------------------------------------+
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Keyboard Shortcuts
|
|
40
|
-
|
|
41
|
-
| Key | Action |
|
|
42
|
-
|-----|--------|
|
|
43
|
-
| `j/k` or `arrows` | Navigate up/down |
|
|
44
|
-
| `Tab` | Switch panel (migrations → tasks → preview) |
|
|
45
|
-
| `Enter` | Select migration / Focus task |
|
|
46
|
-
| `Space` | Toggle task completion |
|
|
47
|
-
| `e` | Edit selected file in $EDITOR |
|
|
48
|
-
| `r` | Refresh data |
|
|
49
|
-
| `1-4` | Switch preview file (1=spec, 2=clarify, 3=tasks, 4=decisions) |
|
|
50
|
-
| `?` | Toggle help overlay |
|
|
51
|
-
| `q` | Quit dashboard |
|
|
52
|
-
|
|
53
|
-
### Panels
|
|
54
|
-
|
|
55
|
-
1. **Migrations Panel** - Left sidebar showing all migrations
|
|
56
|
-
- Status indicators: `>` in-progress, `*` completed, ` ` pending
|
|
57
|
-
- Navigate and select to filter tasks
|
|
58
|
-
|
|
59
|
-
2. **Tasks Panel** - Center area showing tasks
|
|
60
|
-
- Filtered by selected migration
|
|
61
|
-
- Toggle completion with Space
|
|
62
|
-
- Progress counter
|
|
63
|
-
|
|
64
|
-
3. **Preview Panel** - Right area showing file content
|
|
65
|
-
- Markdown syntax highlighting
|
|
66
|
-
- Switch between spec.md, clarify.md, tasks.md, decisions.md
|
|
67
|
-
|
|
68
|
-
### Status Bar
|
|
69
|
-
|
|
70
|
-
Shows overall progress with:
|
|
71
|
-
- Progress bar visualization
|
|
72
|
-
- Percentage complete
|
|
73
|
-
- Task count
|
|
74
|
-
- Quick help hints
|
|
75
|
-
|
|
76
|
-
## CLI Usage
|
|
13
|
+
- Feature atual (branch/nome)
|
|
14
|
+
- Migration em progresso
|
|
15
|
+
- Lista de tasks com status (pending/completed)
|
|
16
|
+
- Progresso geral (X/Y tasks)
|
|
77
17
|
|
|
78
|
-
|
|
79
|
-
# Open dashboard
|
|
80
|
-
sedd dashboard
|
|
18
|
+
### Exemplo
|
|
81
19
|
|
|
82
|
-
# Short alias
|
|
83
|
-
sedd d
|
|
84
|
-
|
|
85
|
-
# Focus on specific migration
|
|
86
|
-
sedd dashboard -m 001
|
|
87
|
-
sedd d -m 002
|
|
88
20
|
```
|
|
21
|
+
📊 Dashboard - 024-user-auth
|
|
89
22
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
- Must be on a feature branch (###-feature-name)
|
|
93
|
-
- Feature must have _meta.json (run /sedd.specify first)
|
|
94
|
-
- Terminal must support ANSI colors
|
|
23
|
+
Migration: 001 (in-progress)
|
|
24
|
+
Expectation: User can login with email/password
|
|
95
25
|
|
|
96
|
-
|
|
26
|
+
Tasks:
|
|
27
|
+
[x] T001-001 Create user model
|
|
28
|
+
[x] T001-002 Add password hashing
|
|
29
|
+
[ ] T001-003 Create login endpoint
|
|
30
|
+
[ ] T001-004 Add session management
|
|
97
31
|
|
|
98
|
-
|
|
99
|
-
- **Ink** - React for CLIs
|
|
100
|
-
- **ink-spinner** - Loading indicators
|
|
101
|
-
- **React** - Component architecture
|
|
102
|
-
|
|
103
|
-
Install with:
|
|
104
|
-
```bash
|
|
105
|
-
npm install
|
|
32
|
+
Progress: 2/4 (50%)
|
|
106
33
|
```
|
|
107
34
|
|
|
108
|
-
##
|
|
109
|
-
|
|
110
|
-
When pressing `e`, the dashboard:
|
|
111
|
-
1. Pauses rendering
|
|
112
|
-
2. Opens file in `$EDITOR` (defaults to vim)
|
|
113
|
-
3. After saving and closing, refreshes data
|
|
114
|
-
|
|
115
|
-
Supported editors:
|
|
116
|
-
- vim/nvim
|
|
117
|
-
- nano
|
|
118
|
-
- code (VS Code)
|
|
119
|
-
- Any editor in $EDITOR env var
|
|
120
|
-
|
|
121
|
-
## Task Toggle
|
|
122
|
-
|
|
123
|
-
Pressing `Space` on a task:
|
|
124
|
-
1. Reads tasks.md file
|
|
125
|
-
2. Toggles `[ ]` ↔ `[x]`
|
|
126
|
-
3. Writes back to file
|
|
127
|
-
4. Refreshes display
|
|
35
|
+
## Requirements
|
|
128
36
|
|
|
129
|
-
|
|
37
|
+
- Estar em branch de feature (###-feature-name)
|
|
38
|
+
- Feature deve ter _meta.json
|
|
130
39
|
|
|
131
40
|
## Rules
|
|
132
41
|
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
- Never executes code
|
|
136
|
-
- Safe to use during implementation
|
|
137
|
-
|
|
138
|
-
## Error States
|
|
139
|
-
|
|
140
|
-
| Error | Solution |
|
|
141
|
-
|-------|----------|
|
|
142
|
-
| "Not on a feature branch" | Checkout a feature branch (###-name) |
|
|
143
|
-
| "Feature directory not found" | Run /sedd.specify first |
|
|
144
|
-
| "_meta.json not found" | Initialize feature with /sedd.specify |
|
|
145
|
-
| "TUI dependencies not installed" | Run `npm install` in packages/sedd |
|
|
42
|
+
- Comando read-only, não modifica arquivos
|
|
43
|
+
- Mostra estado atual do filesystem
|
|
@@ -137,6 +137,134 @@ For each task in order:
|
|
|
137
137
|
|
|
138
138
|
5. **Verify sync** - All three files must show same completed count
|
|
139
139
|
|
|
140
|
+
### Step 5.6: Validate Against Expectations (CRITICAL - Before Marking Done)
|
|
141
|
+
|
|
142
|
+
**ANTES de marcar qualquer task como concluída**, validar contra as restrições `mustNot`.
|
|
143
|
+
|
|
144
|
+
#### 5.6.1 Carregar Restrições
|
|
145
|
+
|
|
146
|
+
Ler `_meta.json` e extrair `expectation.mustNot[]` da migration atual.
|
|
147
|
+
|
|
148
|
+
#### 5.6.2 Listar Arquivos Modificados
|
|
149
|
+
|
|
150
|
+
Identificar todos os arquivos criados ou modificados durante a task:
|
|
151
|
+
- Novos arquivos criados
|
|
152
|
+
- Arquivos editados
|
|
153
|
+
- Imports adicionados
|
|
154
|
+
|
|
155
|
+
#### 5.6.3 Validar Contra mustNot
|
|
156
|
+
|
|
157
|
+
Para cada item em `mustNot`, verificar se algum arquivo/código viola a restrição.
|
|
158
|
+
|
|
159
|
+
**Exemplo de validação:**
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
mustNot: ["Criar endpoint no serviço X"]
|
|
163
|
+
Arquivos modificados:
|
|
164
|
+
- services/x/endpoints/new.ts ← POTENCIAL VIOLAÇÃO
|
|
165
|
+
- src/domains/novo/index.ts ← OK
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
#### 5.6.4 Se Violação Detectada
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
⚠️ VALIDAÇÃO DE EXPECTATIVA - Task T001-003
|
|
172
|
+
|
|
173
|
+
Arquivos modificados nesta task:
|
|
174
|
+
- services/x/endpoints/new.ts ← ⛔ VIOLA "NÃO criar endpoint em serviço X"
|
|
175
|
+
- src/domains/novo/index.ts ← ✅ OK
|
|
176
|
+
|
|
177
|
+
❌ Task viola restrição da expectativa.
|
|
178
|
+
|
|
179
|
+
**Opções:**
|
|
180
|
+
1. Reverter alterações e refazer a task de forma diferente
|
|
181
|
+
2. Ajustar expectativa (remover esta restrição)
|
|
182
|
+
3. Continuar mesmo assim (será marcado como desvio)
|
|
183
|
+
|
|
184
|
+
O que deseja fazer? [1/2/3]
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**Respostas:**
|
|
188
|
+
|
|
189
|
+
**Se "1" (Reverter):**
|
|
190
|
+
- Reverter as alterações feitas
|
|
191
|
+
- Voltar para início da task
|
|
192
|
+
- Sugerir abordagem alternativa
|
|
193
|
+
|
|
194
|
+
**Se "2" (Ajustar expectativa):**
|
|
195
|
+
```
|
|
196
|
+
Removendo restrição: "NÃO criar endpoint em serviço X"
|
|
197
|
+
|
|
198
|
+
⚠️ Isso será registrado em _meta.json como ajuste de expectativa.
|
|
199
|
+
Motivo do ajuste (opcional):
|
|
200
|
+
> [usuário fornece motivo]
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Atualizar `_meta.json`:
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"expectation": {
|
|
207
|
+
"mustNot": ["Usar API externa"],
|
|
208
|
+
"adjustments": [{
|
|
209
|
+
"type": "removed_mustNot",
|
|
210
|
+
"item": "Criar endpoint no serviço X",
|
|
211
|
+
"reason": "Necessário por limitação técnica",
|
|
212
|
+
"taskId": "T001-003",
|
|
213
|
+
"timestamp": "2026-01-11T14:30:00Z"
|
|
214
|
+
}]
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**Se "3" (Continuar como desvio):**
|
|
220
|
+
```
|
|
221
|
+
⚠️ Registrando desvio...
|
|
222
|
+
|
|
223
|
+
Task T001-003 marcada como "completed_with_deviation".
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Atualizar `progress.md`:
|
|
227
|
+
```markdown
|
|
228
|
+
- [x] T001-003 [14:00 → 14:30] ⚠️ DESVIO: Criou endpoint em serviço X
|
|
229
|
+
- Motivo: [registrar motivo se fornecido]
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Atualizar `_meta.json`:
|
|
233
|
+
```json
|
|
234
|
+
{
|
|
235
|
+
"migrations": {
|
|
236
|
+
"001": {
|
|
237
|
+
"deviations": [{
|
|
238
|
+
"taskId": "T001-003",
|
|
239
|
+
"violation": "Criar endpoint no serviço X",
|
|
240
|
+
"reason": "...",
|
|
241
|
+
"timestamp": "2026-01-11T14:30:00Z"
|
|
242
|
+
}]
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
#### 5.6.5 Se Nenhuma Violação
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
✅ Validação OK - Nenhuma restrição violada
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Prosseguir normalmente com a marcação da task.
|
|
255
|
+
|
|
256
|
+
#### 5.6.6 Validação Automática de Padrões Comuns
|
|
257
|
+
|
|
258
|
+
Para detectar violações automaticamente, verificar padrões:
|
|
259
|
+
|
|
260
|
+
| Restrição | Padrão de Detecção |
|
|
261
|
+
|-----------|-------------------|
|
|
262
|
+
| "NÃO criar em services/x/" | Arquivo criado em `services/x/**` |
|
|
263
|
+
| "NÃO usar API externa" | Import de `axios`, `fetch` para URLs externas |
|
|
264
|
+
| "NÃO usar localStorage" | Código contém `localStorage.` |
|
|
265
|
+
| "NÃO criar novo endpoint" | Arquivo em `**/endpoints/**` ou `**/routes/**` |
|
|
266
|
+
| "NÃO modificar schema" | Alteração em `**/schema.prisma` ou migrations |
|
|
267
|
+
|
|
140
268
|
### Step 5.5: Expectation Checkpoint (NEW)
|
|
141
269
|
|
|
142
270
|
A cada 3 tasks completadas, pausar e verificar alinhamento com expectativa.
|
|
@@ -233,6 +361,7 @@ Quando todas as tasks de uma migration forem completadas, validar usando accepta
|
|
|
233
361
|
#### 7.1 Carregar Acceptance Criteria
|
|
234
362
|
|
|
235
363
|
Se `{migration}/acceptance.md` existe, carregar os critérios.
|
|
364
|
+
Também carregar `expectation.must[]` e `expectation.mustNot[]` de `_meta.json`.
|
|
236
365
|
|
|
237
366
|
#### 7.2 Prompt de Verificação
|
|
238
367
|
|
|
@@ -242,18 +371,24 @@ Se `{migration}/acceptance.md` existe, carregar os critérios.
|
|
|
242
371
|
**Todas {N} tasks finalizadas.**
|
|
243
372
|
|
|
244
373
|
**Sua expectativa era:**
|
|
245
|
-
> {expectation}
|
|
374
|
+
> {expectation.summary}
|
|
246
375
|
|
|
247
|
-
|
|
376
|
+
━━━ CRITÉRIOS POSITIVOS (DEVE) ━━━
|
|
248
377
|
- [ ] AC-001: User can access dark mode toggle
|
|
249
378
|
- [ ] AC-002: Toggle changes theme immediately
|
|
250
379
|
- [ ] AC-003: Theme persists after refresh
|
|
251
|
-
|
|
380
|
+
|
|
381
|
+
━━━ CRITÉRIOS NEGATIVOS (NÃO DEVE) ━━━
|
|
382
|
+
- [ ] AC-N01: Nenhum arquivo criado em services/x/
|
|
383
|
+
- [ ] AC-N02: Nenhuma chamada a API externa
|
|
384
|
+
- [ ] AC-N03: Não usa localStorage
|
|
252
385
|
|
|
253
386
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
254
387
|
|
|
255
388
|
Por favor verifique cada critério. Quais foram atendidos?
|
|
256
|
-
|
|
389
|
+
|
|
390
|
+
**Positivos (DEVE):** all, none, ou IDs como "1,2"
|
|
391
|
+
**Negativos (NÃO DEVE):** all, none, ou IDs como "N1,N2"
|
|
257
392
|
```
|
|
258
393
|
|
|
259
394
|
#### 7.3 Processar Resposta
|
package/dist/cli/index.js
CHANGED
|
@@ -17,6 +17,7 @@ import { specify } from './specify.js';
|
|
|
17
17
|
import { clarify } from './clarify.js';
|
|
18
18
|
import { addTasks, completeTask } from './tasks.js';
|
|
19
19
|
import { update } from './update.js';
|
|
20
|
+
import { checkForUpdates, showUpdateNotification, getInstalledVersion } from './version-check.js';
|
|
20
21
|
const SEDD_DIR = '.sedd';
|
|
21
22
|
function getFeatures(seddPath) {
|
|
22
23
|
if (!existsSync(seddPath))
|
|
@@ -112,7 +113,14 @@ async function main() {
|
|
|
112
113
|
program
|
|
113
114
|
.name('sedd')
|
|
114
115
|
.description('SEDD - Spec & Expectation Driven Development')
|
|
115
|
-
.version(
|
|
116
|
+
.version(getInstalledVersion());
|
|
117
|
+
// Non-blocking version check before any command
|
|
118
|
+
program.hook('preAction', async () => {
|
|
119
|
+
const versionInfo = await checkForUpdates();
|
|
120
|
+
if (versionInfo?.needsUpdate) {
|
|
121
|
+
showUpdateNotification(versionInfo);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
116
124
|
program
|
|
117
125
|
.command('init')
|
|
118
126
|
.description('Initialize SEDD in current project')
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,WAAW;AACX,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/status.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAOA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAOA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0HvE"}
|
package/dist/cli/status.js
CHANGED
|
@@ -19,7 +19,6 @@ export async function status(options = {}) {
|
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
21
|
let currentFeature = null;
|
|
22
|
-
// Try to detect feature from current branch
|
|
23
22
|
if (git.hasGit()) {
|
|
24
23
|
const branch = git.getCurrentBranch();
|
|
25
24
|
if (git.isFeatureBranch(branch)) {
|
|
@@ -29,7 +28,6 @@ export async function status(options = {}) {
|
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
30
|
}
|
|
32
|
-
// Fallback: get most recent feature
|
|
33
31
|
if (!currentFeature) {
|
|
34
32
|
const features = readdirSync(specsDir, { withFileTypes: true })
|
|
35
33
|
.filter((d) => d.isDirectory() && /^\d{3}-/.test(d.name))
|
package/dist/cli/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAM/C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,UAAyB,EAAE;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,MAAM,CAAC,QAAQ,6CAA6C,CAAC,CAAC,CAAC;QACpG,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,cAAc,GAAkB,IAAI,CAAC;IAEzC,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/update.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAsVD,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqIvE"}
|
package/dist/cli/update.js
CHANGED
|
@@ -2,20 +2,52 @@ import { existsSync, mkdirSync, copyFileSync, readdirSync, readFileSync, writeFi
|
|
|
2
2
|
import { join, dirname } from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import chalk from 'chalk';
|
|
5
|
+
import { checkForUpdates, showUpdateNotification, getInstalledVersion } from './version-check.js';
|
|
5
6
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
6
7
|
const TEMPLATES_DIR = join(__dirname, '../../templates');
|
|
7
8
|
const COMMANDS_DIR = join(__dirname, '../../commands');
|
|
8
9
|
const HOOKS_DIR = join(__dirname, '../../hooks');
|
|
9
10
|
const SCRIPTS_DIR = join(__dirname, '../../scripts');
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
function countDirectoryFiles(dir) {
|
|
12
|
+
if (!existsSync(dir))
|
|
13
|
+
return 0;
|
|
14
|
+
let count = 0;
|
|
15
|
+
for (const item of readdirSync(dir, { withFileTypes: true })) {
|
|
16
|
+
if (item.isDirectory()) {
|
|
17
|
+
count += countDirectoryFiles(join(dir, item.name));
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
count++;
|
|
21
|
+
}
|
|
15
22
|
}
|
|
16
|
-
|
|
17
|
-
|
|
23
|
+
return count;
|
|
24
|
+
}
|
|
25
|
+
function copyDirectory(src, dest) {
|
|
26
|
+
if (!existsSync(src))
|
|
27
|
+
return 0;
|
|
28
|
+
mkdirSync(dest, { recursive: true });
|
|
29
|
+
let count = 0;
|
|
30
|
+
for (const item of readdirSync(src, { withFileTypes: true })) {
|
|
31
|
+
const srcPath = join(src, item.name);
|
|
32
|
+
const destPath = join(dest, item.name);
|
|
33
|
+
if (item.isDirectory()) {
|
|
34
|
+
count += copyDirectory(srcPath, destPath);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
copyFileSync(srcPath, destPath);
|
|
38
|
+
count++;
|
|
39
|
+
}
|
|
18
40
|
}
|
|
41
|
+
return count;
|
|
42
|
+
}
|
|
43
|
+
function previewFileCounts() {
|
|
44
|
+
return {
|
|
45
|
+
templates: countDirectoryFiles(TEMPLATES_DIR),
|
|
46
|
+
commands: countDirectoryFiles(COMMANDS_DIR),
|
|
47
|
+
hooks: countDirectoryFiles(HOOKS_DIR),
|
|
48
|
+
scripts: countDirectoryFiles(SCRIPTS_DIR),
|
|
49
|
+
schema: existsSync(join(TEMPLATES_DIR, 'sedd.schema.json')),
|
|
50
|
+
};
|
|
19
51
|
}
|
|
20
52
|
function scanFeatures(seddDir) {
|
|
21
53
|
const features = [];
|
|
@@ -88,45 +120,37 @@ function scanFeatures(seddDir) {
|
|
|
88
120
|
function updateSeddFiles(cwd) {
|
|
89
121
|
const seddDir = join(cwd, '.sedd');
|
|
90
122
|
const claudeDir = join(cwd, '.claude');
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
copyFileSync(join(HOOKS_DIR, file), join(hooksDestDir, file));
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
if (existsSync(SCRIPTS_DIR)) {
|
|
117
|
-
const isWindows = process.platform === 'win32';
|
|
118
|
-
for (const folder of ['powershell', 'bash']) {
|
|
119
|
-
const srcFolder = join(SCRIPTS_DIR, folder);
|
|
120
|
-
const destFolder = join(seddScriptsDir, folder);
|
|
121
|
-
if (existsSync(srcFolder)) {
|
|
122
|
-
if (!existsSync(destFolder))
|
|
123
|
-
mkdirSync(destFolder, { recursive: true });
|
|
124
|
-
for (const file of readdirSync(srcFolder)) {
|
|
125
|
-
copyFileSync(join(srcFolder, file), join(destFolder, file));
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
123
|
+
console.log(chalk.cyan('\n📦 Atualizando arquivos SEDD...\n'));
|
|
124
|
+
// 1. Templates
|
|
125
|
+
const templatesCount = copyDirectory(TEMPLATES_DIR, join(seddDir, 'templates'));
|
|
126
|
+
console.log(chalk.green(` ✓ Templates: ${templatesCount} arquivos atualizados`));
|
|
127
|
+
// 2. Commands
|
|
128
|
+
const commandsCount = copyDirectory(COMMANDS_DIR, join(claudeDir, 'commands'));
|
|
129
|
+
console.log(chalk.green(` ✓ Commands: ${commandsCount} arquivos atualizados`));
|
|
130
|
+
// 3. Hooks
|
|
131
|
+
const hooksCount = copyDirectory(HOOKS_DIR, join(claudeDir, 'hooks'));
|
|
132
|
+
console.log(chalk.green(` ✓ Hooks: ${hooksCount} arquivos atualizados`));
|
|
133
|
+
// 4. Scripts (platform specific)
|
|
134
|
+
const scriptsDir = join(seddDir, 'scripts');
|
|
135
|
+
const bashCount = copyDirectory(join(SCRIPTS_DIR, 'bash'), join(scriptsDir, 'bash'));
|
|
136
|
+
const psCount = copyDirectory(join(SCRIPTS_DIR, 'powershell'), join(scriptsDir, 'powershell'));
|
|
137
|
+
console.log(chalk.green(` ✓ Scripts: ${bashCount + psCount} arquivos atualizados`));
|
|
138
|
+
// 5. Schema
|
|
139
|
+
const schemaPath = join(TEMPLATES_DIR, 'sedd.schema.json');
|
|
140
|
+
let schemaUpdated = false;
|
|
141
|
+
if (existsSync(schemaPath)) {
|
|
142
|
+
copyFileSync(schemaPath, join(seddDir, 'sedd.schema.json'));
|
|
143
|
+
console.log(chalk.green(' ✓ Schema atualizado'));
|
|
144
|
+
schemaUpdated = true;
|
|
129
145
|
}
|
|
146
|
+
console.log(chalk.cyan('\n✅ Atualização concluída!\n'));
|
|
147
|
+
return {
|
|
148
|
+
templates: templatesCount,
|
|
149
|
+
commands: commandsCount,
|
|
150
|
+
hooks: hooksCount,
|
|
151
|
+
scripts: bashCount + psCount,
|
|
152
|
+
schema: schemaUpdated,
|
|
153
|
+
};
|
|
130
154
|
}
|
|
131
155
|
async function migrateFeature(feature) {
|
|
132
156
|
const { default: inquirer } = await import('inquirer');
|
|
@@ -267,6 +291,37 @@ export async function update(options = {}) {
|
|
|
267
291
|
}
|
|
268
292
|
const version = getInstalledVersion();
|
|
269
293
|
console.log(chalk.blue(`\n🔄 SEDD Update - v${version}\n`));
|
|
294
|
+
// Check for newer version on npm
|
|
295
|
+
const versionInfo = await checkForUpdates();
|
|
296
|
+
if (versionInfo?.needsUpdate) {
|
|
297
|
+
showUpdateNotification(versionInfo);
|
|
298
|
+
}
|
|
299
|
+
// Preview files that will be updated
|
|
300
|
+
const preview = previewFileCounts();
|
|
301
|
+
const totalFiles = preview.templates + preview.commands + preview.hooks + preview.scripts + (preview.schema ? 1 : 0);
|
|
302
|
+
console.log(chalk.white('Arquivos que serão substituídos:'));
|
|
303
|
+
console.log(chalk.gray(` .sedd/templates/ (${preview.templates} arquivos)`));
|
|
304
|
+
console.log(chalk.gray(` .sedd/scripts/ (${preview.scripts} arquivos)`));
|
|
305
|
+
console.log(chalk.gray(` .claude/commands/ (${preview.commands} arquivos)`));
|
|
306
|
+
console.log(chalk.gray(` .claude/hooks/ (${preview.hooks} arquivos)`));
|
|
307
|
+
if (preview.schema) {
|
|
308
|
+
console.log(chalk.gray(` .sedd/sedd.schema.json`));
|
|
309
|
+
}
|
|
310
|
+
console.log(chalk.gray(`\n Total: ${totalFiles} arquivos\n`));
|
|
311
|
+
// Confirmation prompt (unless --force)
|
|
312
|
+
if (!options.force) {
|
|
313
|
+
const { default: inquirer } = await import('inquirer');
|
|
314
|
+
const { confirm } = await inquirer.prompt([{
|
|
315
|
+
type: 'confirm',
|
|
316
|
+
name: 'confirm',
|
|
317
|
+
message: 'Continuar com a atualização?',
|
|
318
|
+
default: true,
|
|
319
|
+
}]);
|
|
320
|
+
if (!confirm) {
|
|
321
|
+
console.log(chalk.gray('\nAbortado.\n'));
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
270
325
|
console.log(chalk.gray('Escaneando projeto...\n'));
|
|
271
326
|
const features = scanFeatures(seddDir);
|
|
272
327
|
if (features.length === 0) {
|
|
@@ -330,14 +385,6 @@ export async function update(options = {}) {
|
|
|
330
385
|
await migrateFeature(feature);
|
|
331
386
|
}
|
|
332
387
|
}
|
|
333
|
-
console.log(chalk.blue('\n📦 Atualizando templates/commands/hooks/scripts...\n'));
|
|
334
388
|
updateSeddFiles(cwd);
|
|
335
|
-
const templatesCount = existsSync(TEMPLATES_DIR) ? readdirSync(TEMPLATES_DIR).length : 0;
|
|
336
|
-
const commandsCount = existsSync(COMMANDS_DIR) ? readdirSync(COMMANDS_DIR).length : 0;
|
|
337
|
-
const hooksCount = existsSync(HOOKS_DIR) ? readdirSync(HOOKS_DIR).length : 0;
|
|
338
|
-
console.log(chalk.green('✓'), `Templates: ${templatesCount} arquivos`);
|
|
339
|
-
console.log(chalk.green('✓'), `Commands: ${commandsCount} arquivos`);
|
|
340
|
-
console.log(chalk.green('✓'), `Hooks: ${hooksCount} arquivos`);
|
|
341
|
-
console.log(chalk.blue(`\n✨ SEDD atualizado para v${version}!\n`));
|
|
342
389
|
}
|
|
343
390
|
//# sourceMappingURL=update.js.map
|
package/dist/cli/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface VersionInfo {
|
|
2
|
+
current: string;
|
|
3
|
+
latest: string;
|
|
4
|
+
needsUpdate: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function checkForUpdates(): Promise<VersionInfo | null>;
|
|
7
|
+
export declare function showUpdateNotification(info: VersionInfo): void;
|
|
8
|
+
export declare function getInstalledVersion(): string;
|
|
9
|
+
//# sourceMappingURL=version-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/cli/version-check.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAkBnE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAc9D;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAQ5C"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { join, dirname } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
export async function checkForUpdates() {
|
|
8
|
+
try {
|
|
9
|
+
const pkgPath = join(__dirname, '../../package.json');
|
|
10
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
11
|
+
const current = pkg.version;
|
|
12
|
+
const latest = execSync('npm view sedd version', {
|
|
13
|
+
encoding: 'utf8',
|
|
14
|
+
timeout: 5000,
|
|
15
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
16
|
+
}).trim();
|
|
17
|
+
const needsUpdate = current !== latest;
|
|
18
|
+
return { current, latest, needsUpdate };
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function showUpdateNotification(info) {
|
|
25
|
+
if (!info.needsUpdate)
|
|
26
|
+
return;
|
|
27
|
+
const currentPad = info.current.padEnd(6);
|
|
28
|
+
const latestPad = info.latest.padEnd(6);
|
|
29
|
+
console.log();
|
|
30
|
+
console.log(chalk.yellow('╭─────────────────────────────────────────────────────╮'));
|
|
31
|
+
console.log(chalk.yellow('│') + chalk.white(' 📦 Nova versão do SEDD disponível! ') + chalk.yellow('│'));
|
|
32
|
+
console.log(chalk.yellow('│') + chalk.gray(` Atual: ${currentPad} → Nova: ${latestPad}`) + ' ' + chalk.yellow('│'));
|
|
33
|
+
console.log(chalk.yellow('│') + chalk.cyan(' npm install -g sedd@latest') + ' ' + chalk.yellow('│'));
|
|
34
|
+
console.log(chalk.yellow('│') + chalk.gray(' Depois execute: sedd update') + ' ' + chalk.yellow('│'));
|
|
35
|
+
console.log(chalk.yellow('╰─────────────────────────────────────────────────────╯'));
|
|
36
|
+
console.log();
|
|
37
|
+
}
|
|
38
|
+
export function getInstalledVersion() {
|
|
39
|
+
try {
|
|
40
|
+
const pkgPath = join(__dirname, '../../package.json');
|
|
41
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
42
|
+
return pkg.version || 'unknown';
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return 'unknown';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=version-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/cli/version-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAQ1D,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAE5B,MAAM,MAAM,GAAG,QAAQ,CAAC,uBAAuB,EAAE;YAC/C,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,MAAM,WAAW,GAAG,OAAO,KAAK,MAAM,CAAC;QAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAiB;IACtD,IAAI,CAAC,IAAI,CAAC,WAAW;QAAE,OAAO;IAE9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,sDAAsD,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACzH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,UAAU,YAAY,SAAS,EAAE,CAAC,GAAG,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACtI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,GAAG,sBAAsB,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5H,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,GAAG,qBAAqB,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5H,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/hooks/README.md
CHANGED
|
@@ -67,6 +67,10 @@ The hook detects keywords and **FORCES** skills into context:
|
|
|
67
67
|
|
|
68
68
|
🎯 **EXPECTATIVA:** User can toggle dark mode and have it persist across sessions
|
|
69
69
|
|
|
70
|
+
⛔ **NÃO DEVE:**
|
|
71
|
+
- ❌ Criar endpoint no serviço X
|
|
72
|
+
- ❌ Usar localStorage (usar banco)
|
|
73
|
+
|
|
70
74
|
Pending tasks:
|
|
71
75
|
- T004-001: Create ThemeContext
|
|
72
76
|
- T004-002: Add toggle component
|
|
@@ -78,6 +82,22 @@ Pending tasks:
|
|
|
78
82
|
|
|
79
83
|
O hook **sempre mostra a EXPECTATIVA** do `_meta.json` para lembrar a AI do objetivo final. Isso garante que todas as ações estejam alinhadas com o que o usuário espera.
|
|
80
84
|
|
|
85
|
+
### Structured Expectations
|
|
86
|
+
|
|
87
|
+
O hook suporta expectativas estruturadas com `must` e `mustNot`:
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"expectation": {
|
|
92
|
+
"summary": "User can toggle dark mode",
|
|
93
|
+
"must": ["Criar toggle", "Persistir no banco"],
|
|
94
|
+
"mustNot": ["Criar endpoint no serviço X", "Usar localStorage"]
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Quando `mustNot` está presente, o hook exibe as restrições em destaque para que a AI **nunca as viole**.
|
|
100
|
+
|
|
81
101
|
---
|
|
82
102
|
|
|
83
103
|
## post-tool-use.js
|
package/hooks/check-roadmap.js
CHANGED
|
@@ -164,25 +164,50 @@ const getScoreEmoji = (score) => {
|
|
|
164
164
|
return '🔴';
|
|
165
165
|
};
|
|
166
166
|
|
|
167
|
+
const getExpectationSummary = (expectation) => {
|
|
168
|
+
if (!expectation) return null;
|
|
169
|
+
if (typeof expectation === 'string') return expectation;
|
|
170
|
+
return expectation.summary || null;
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
const getMustNotList = (expectation) => {
|
|
174
|
+
if (!expectation || typeof expectation === 'string') return [];
|
|
175
|
+
return expectation.mustNot || [];
|
|
176
|
+
};
|
|
177
|
+
|
|
167
178
|
const buildSeddContext = (branch, currentMigration, completed, pending, featureExpectation, migrationExpectation) => {
|
|
168
|
-
|
|
179
|
+
const featureSummary = getExpectationSummary(featureExpectation);
|
|
180
|
+
const migrationSummary = getExpectationSummary(migrationExpectation);
|
|
181
|
+
const mustNotList = getMustNotList(migrationExpectation) || getMustNotList(featureExpectation);
|
|
182
|
+
|
|
183
|
+
if (pending.length === 0 && !featureSummary && !migrationSummary) return null;
|
|
169
184
|
|
|
170
185
|
const total = completed + pending.length;
|
|
171
186
|
const migrationInfo = currentMigration ? ` | Migration: ${currentMigration}` : '';
|
|
172
187
|
|
|
173
188
|
let expectationBlock = '';
|
|
174
|
-
const activeExpectation =
|
|
189
|
+
const activeExpectation = migrationSummary || featureSummary;
|
|
175
190
|
|
|
176
|
-
if (
|
|
191
|
+
if (featureSummary && migrationSummary && featureSummary !== migrationSummary) {
|
|
177
192
|
expectationBlock = `
|
|
178
|
-
🎯 **FEATURE:** ${
|
|
179
|
-
📍 **MIGRATION ${currentMigration}:** ${
|
|
193
|
+
🎯 **FEATURE:** ${featureSummary}
|
|
194
|
+
📍 **MIGRATION ${currentMigration}:** ${migrationSummary}
|
|
180
195
|
`;
|
|
181
196
|
} else if (activeExpectation) {
|
|
182
|
-
const prefix =
|
|
197
|
+
const prefix = migrationSummary ? `📍 M${currentMigration}` : '🎯';
|
|
183
198
|
expectationBlock = `\n${prefix} **EXPECTATIVA:** ${activeExpectation}\n`;
|
|
184
199
|
}
|
|
185
200
|
|
|
201
|
+
// Add mustNot block if restrictions exist
|
|
202
|
+
let mustNotBlock = '';
|
|
203
|
+
if (mustNotList.length > 0) {
|
|
204
|
+
const restrictions = mustNotList.map((item) => `- ❌ ${item}`).join('\n');
|
|
205
|
+
mustNotBlock = `
|
|
206
|
+
⛔ **NÃO DEVE:**
|
|
207
|
+
${restrictions}
|
|
208
|
+
`;
|
|
209
|
+
}
|
|
210
|
+
|
|
186
211
|
let scoreBlock = '';
|
|
187
212
|
if (activeExpectation && pending.length > 0) {
|
|
188
213
|
const score = calculateAlignmentScore(activeExpectation, pending);
|
|
@@ -192,7 +217,7 @@ const buildSeddContext = (branch, currentMigration, completed, pending, featureE
|
|
|
192
217
|
|
|
193
218
|
if (pending.length === 0) {
|
|
194
219
|
return `<sedd-context>
|
|
195
|
-
**Branch: ${branch}**${migrationInfo}${expectationBlock}
|
|
220
|
+
**Branch: ${branch}**${migrationInfo}${expectationBlock}${mustNotBlock}
|
|
196
221
|
</sedd-context>`;
|
|
197
222
|
}
|
|
198
223
|
|
|
@@ -205,7 +230,7 @@ const buildSeddContext = (branch, currentMigration, completed, pending, featureE
|
|
|
205
230
|
|
|
206
231
|
return `<sedd-context>
|
|
207
232
|
**Branch: ${branch}**${migrationInfo} | Progress: ${completed}/${total} tasks${scoreBlock}
|
|
208
|
-
${expectationBlock}
|
|
233
|
+
${expectationBlock}${mustNotBlock}
|
|
209
234
|
Pending tasks:
|
|
210
235
|
${tasksList}${moreText}
|
|
211
236
|
</sedd-context>`;
|
package/hooks/check-roadmap.ps1
CHANGED
|
@@ -232,19 +232,78 @@ function Find-FeatureDir {
|
|
|
232
232
|
return $null
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
+
function Get-ExpectationSummary {
|
|
236
|
+
param([object]$Expectation)
|
|
237
|
+
|
|
238
|
+
if (-not $Expectation) { return $null }
|
|
239
|
+
if ($Expectation -is [string]) { return $Expectation }
|
|
240
|
+
return $Expectation.summary
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
function Get-MustNotList {
|
|
244
|
+
param([object]$Expectation)
|
|
245
|
+
|
|
246
|
+
if (-not $Expectation -or $Expectation -is [string]) { return @() }
|
|
247
|
+
if ($Expectation.mustNot) { return $Expectation.mustNot } else { return @() }
|
|
248
|
+
}
|
|
249
|
+
|
|
235
250
|
function Build-SeddContext {
|
|
236
251
|
param(
|
|
237
252
|
[string]$Branch,
|
|
238
253
|
[string]$CurrentMigration,
|
|
239
254
|
[int]$Completed,
|
|
240
|
-
[array]$Pending
|
|
255
|
+
[array]$Pending,
|
|
256
|
+
[object]$FeatureExpectation,
|
|
257
|
+
[object]$MigrationExpectation
|
|
241
258
|
)
|
|
242
259
|
|
|
243
|
-
|
|
260
|
+
$featureSummary = Get-ExpectationSummary -Expectation $FeatureExpectation
|
|
261
|
+
$migrationSummary = Get-ExpectationSummary -Expectation $MigrationExpectation
|
|
262
|
+
$mustNotList = Get-MustNotList -Expectation $MigrationExpectation
|
|
263
|
+
if ($mustNotList.Count -eq 0) {
|
|
264
|
+
$mustNotList = Get-MustNotList -Expectation $FeatureExpectation
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if ($Pending.Count -eq 0 -and -not $featureSummary -and -not $migrationSummary) { return $null }
|
|
244
268
|
|
|
245
269
|
$total = $Completed + $Pending.Count
|
|
246
270
|
$migrationInfo = if ($CurrentMigration) { " | Migration: $CurrentMigration" } else { '' }
|
|
247
271
|
|
|
272
|
+
# Build expectation block
|
|
273
|
+
$expectationBlock = ''
|
|
274
|
+
$activeExpectation = if ($migrationSummary) { $migrationSummary } else { $featureSummary }
|
|
275
|
+
|
|
276
|
+
if ($featureSummary -and $migrationSummary -and $featureSummary -ne $migrationSummary) {
|
|
277
|
+
$expectationBlock = @"
|
|
278
|
+
|
|
279
|
+
🎯 **FEATURE:** $featureSummary
|
|
280
|
+
📍 **MIGRATION ${CurrentMigration}:** $migrationSummary
|
|
281
|
+
"@
|
|
282
|
+
}
|
|
283
|
+
elseif ($activeExpectation) {
|
|
284
|
+
$prefix = if ($migrationSummary) { "📍 M$CurrentMigration" } else { '🎯' }
|
|
285
|
+
$expectationBlock = "`n$prefix **EXPECTATIVA:** $activeExpectation`n"
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
# Build mustNot block
|
|
289
|
+
$mustNotBlock = ''
|
|
290
|
+
if ($mustNotList.Count -gt 0) {
|
|
291
|
+
$restrictions = ($mustNotList | ForEach-Object { "- ❌ $_" }) -join "`n"
|
|
292
|
+
$mustNotBlock = @"
|
|
293
|
+
|
|
294
|
+
⛔ **NÃO DEVE:**
|
|
295
|
+
$restrictions
|
|
296
|
+
"@
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
if ($Pending.Count -eq 0) {
|
|
300
|
+
return @"
|
|
301
|
+
<sedd-context>
|
|
302
|
+
**Branch: $Branch**$migrationInfo$expectationBlock$mustNotBlock
|
|
303
|
+
</sedd-context>
|
|
304
|
+
"@
|
|
305
|
+
}
|
|
306
|
+
|
|
248
307
|
$tasksList = ($Pending | Select-Object -First 5 | ForEach-Object {
|
|
249
308
|
$text = if ($_.text.Length -gt 60) { $_.text.Substring(0, 60) + '...' } else { $_.text }
|
|
250
309
|
"- $($_.id): $text"
|
|
@@ -255,11 +314,9 @@ function Build-SeddContext {
|
|
|
255
314
|
return @"
|
|
256
315
|
<sedd-context>
|
|
257
316
|
**Branch: $Branch**$migrationInfo | Progress: $Completed/$total tasks
|
|
258
|
-
|
|
317
|
+
$expectationBlock$mustNotBlock
|
|
259
318
|
Pending tasks:
|
|
260
319
|
$tasksList$moreText
|
|
261
|
-
|
|
262
|
-
Use ``/sedd.implement`` to execute tasks.
|
|
263
320
|
</sedd-context>
|
|
264
321
|
"@
|
|
265
322
|
}
|
|
@@ -302,10 +359,18 @@ function Main {
|
|
|
302
359
|
$pending = @()
|
|
303
360
|
$completed = 0
|
|
304
361
|
$currentMigration = $null
|
|
362
|
+
$featureExpectation = $null
|
|
363
|
+
$migrationExpectation = $null
|
|
305
364
|
|
|
306
365
|
if (Test-Path $metaFile) {
|
|
307
366
|
$metaData = Get-Content $metaFile -Raw | ConvertFrom-Json
|
|
308
367
|
$currentMigration = $metaData.currentMigration
|
|
368
|
+
$featureExpectation = $metaData.expectation
|
|
369
|
+
|
|
370
|
+
if ($currentMigration -and $metaData.migrations.$currentMigration.expectation) {
|
|
371
|
+
$migrationExpectation = $metaData.migrations.$currentMigration.expectation
|
|
372
|
+
}
|
|
373
|
+
|
|
309
374
|
$result = Get-TasksFromMigrations -FeatureDir $featureDir -MetaData $metaData
|
|
310
375
|
$pending = $result.pending
|
|
311
376
|
$completed = $result.completed
|
|
@@ -316,7 +381,7 @@ function Main {
|
|
|
316
381
|
$completed = $result.completed
|
|
317
382
|
}
|
|
318
383
|
|
|
319
|
-
$context = Build-SeddContext -Branch $branch -CurrentMigration $currentMigration -Completed $completed -Pending $pending
|
|
384
|
+
$context = Build-SeddContext -Branch $branch -CurrentMigration $currentMigration -Completed $completed -Pending $pending -FeatureExpectation $featureExpectation -MigrationExpectation $migrationExpectation
|
|
320
385
|
if ($context) { $parts += $context }
|
|
321
386
|
}
|
|
322
387
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sedd",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "SEDD - Spec & Expectation Driven Development. A phase-based specification workflow for AI-assisted development.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
],
|
|
37
37
|
"author": "Kelvin R.C",
|
|
38
38
|
"license": "MIT",
|
|
39
|
-
"homepage": "https://github.
|
|
39
|
+
"homepage": "https://goldensrazer.github.io/sedd/",
|
|
40
40
|
"bugs": {
|
|
41
41
|
"url": "https://github.com/goldensrazer/sedd/issues"
|
|
42
42
|
},
|
|
@@ -6,13 +6,23 @@
|
|
|
6
6
|
|
|
7
7
|
## Expectativa
|
|
8
8
|
|
|
9
|
-
> {{
|
|
9
|
+
> {{EXPECTATION_SUMMARY}}
|
|
10
|
+
|
|
11
|
+
### DEVE fazer:
|
|
12
|
+
{{#each MUST}}
|
|
13
|
+
- {{this}}
|
|
14
|
+
{{/each}}
|
|
15
|
+
|
|
16
|
+
### NÃO DEVE fazer:
|
|
17
|
+
{{#each MUST_NOT}}
|
|
18
|
+
- ❌ {{this}}
|
|
19
|
+
{{/each}}
|
|
10
20
|
|
|
11
21
|
---
|
|
12
22
|
|
|
13
23
|
## Checklist de Aceite
|
|
14
24
|
|
|
15
|
-
### Critérios Funcionais
|
|
25
|
+
### Critérios Funcionais (DEVE)
|
|
16
26
|
|
|
17
27
|
- [ ] **AC-001:** {{criterion_1}}
|
|
18
28
|
- Verificar: {{verification_steps}}
|
|
@@ -32,6 +42,33 @@
|
|
|
32
42
|
|
|
33
43
|
---
|
|
34
44
|
|
|
45
|
+
## Critérios Negativos (NÃO DEVE)
|
|
46
|
+
|
|
47
|
+
> Estes critérios verificam que restrições foram respeitadas.
|
|
48
|
+
> Falha em qualquer um indica violação da expectativa.
|
|
49
|
+
|
|
50
|
+
{{#each MUST_NOT}}
|
|
51
|
+
- [ ] **AC-N{{@index}}:** Verificar que NÃO: {{this}}
|
|
52
|
+
- Buscar: arquivos/código que violem esta restrição
|
|
53
|
+
- Se encontrado: ❌ VIOLAÇÃO
|
|
54
|
+
{{/each}}
|
|
55
|
+
|
|
56
|
+
### Validação Automática Sugerida
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Comandos para verificar restrições (ajustar conforme mustNot)
|
|
60
|
+
# Exemplo: Verificar se criou arquivos em services/x/
|
|
61
|
+
find services/x -type f -newer .sedd/timestamp_marker
|
|
62
|
+
|
|
63
|
+
# Exemplo: Verificar uso de localStorage
|
|
64
|
+
grep -r "localStorage" src/
|
|
65
|
+
|
|
66
|
+
# Exemplo: Verificar chamadas a API externa
|
|
67
|
+
grep -rE "(axios|fetch)\s*\(" src/
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
35
72
|
## Comandos de Verificação
|
|
36
73
|
|
|
37
74
|
```bash
|