gsdd-cli 0.18.5 → 0.19.1

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 (101) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +610 -608
  3. package/agents/DISTILLATION.md +421 -421
  4. package/agents/README.md +62 -62
  5. package/agents/approach-explorer.md +370 -361
  6. package/agents/debugger.md +82 -82
  7. package/agents/executor.md +473 -394
  8. package/agents/integration-checker.md +318 -318
  9. package/agents/mapper.md +103 -103
  10. package/agents/planner.md +342 -313
  11. package/agents/researcher.md +84 -84
  12. package/agents/roadmapper.md +296 -296
  13. package/agents/synthesizer.md +236 -236
  14. package/agents/verifier.md +337 -337
  15. package/bin/adapters/agents.mjs +34 -34
  16. package/bin/adapters/claude.mjs +193 -191
  17. package/bin/adapters/codex.mjs +85 -85
  18. package/bin/adapters/index.mjs +20 -20
  19. package/bin/adapters/opencode.mjs +280 -278
  20. package/bin/gsdd.mjs +123 -116
  21. package/bin/lib/cli-utils.mjs +28 -28
  22. package/bin/lib/evidence-contract.mjs +325 -112
  23. package/bin/lib/file-ops.mjs +186 -144
  24. package/bin/lib/health-truth.mjs +196 -178
  25. package/bin/lib/health.mjs +246 -226
  26. package/bin/lib/init-flow.mjs +247 -231
  27. package/bin/lib/init-prompts.mjs +248 -247
  28. package/bin/lib/init-runtime.mjs +193 -190
  29. package/bin/lib/init.mjs +17 -17
  30. package/bin/lib/lifecycle-preflight.mjs +760 -326
  31. package/bin/lib/lifecycle-state.mjs +356 -267
  32. package/bin/lib/manifest.mjs +116 -114
  33. package/bin/lib/models.mjs +411 -411
  34. package/bin/lib/phase.mjs +365 -358
  35. package/bin/lib/plan-constants.mjs +35 -30
  36. package/bin/lib/provenance.mjs +109 -106
  37. package/bin/lib/rendering.mjs +119 -83
  38. package/bin/lib/runtime-freshness.mjs +214 -214
  39. package/bin/lib/session-fingerprint.mjs +91 -14
  40. package/bin/lib/templates.mjs +225 -224
  41. package/bin/lib/workspace-root.mjs +2 -1
  42. package/distilled/DESIGN.md +2461 -2323
  43. package/distilled/EVIDENCE-INDEX.md +418 -392
  44. package/distilled/README.md +196 -193
  45. package/distilled/SKILL.md +86 -85
  46. package/distilled/templates/agents.block.md +21 -21
  47. package/distilled/templates/agents.md +6 -6
  48. package/distilled/templates/approach.md +272 -232
  49. package/distilled/templates/auth-matrix.md +78 -78
  50. package/distilled/templates/brownfield-change/CHANGE.md +99 -0
  51. package/distilled/templates/brownfield-change/HANDOFF.md +38 -0
  52. package/distilled/templates/brownfield-change/VERIFICATION.md +56 -0
  53. package/distilled/templates/codebase/architecture.md +110 -110
  54. package/distilled/templates/codebase/concerns.md +95 -95
  55. package/distilled/templates/codebase/conventions.md +193 -193
  56. package/distilled/templates/codebase/stack.md +96 -96
  57. package/distilled/templates/delegates/approach-explorer.md +28 -25
  58. package/distilled/templates/delegates/mapper-arch.md +26 -26
  59. package/distilled/templates/delegates/mapper-concerns.md +27 -27
  60. package/distilled/templates/delegates/mapper-quality.md +28 -28
  61. package/distilled/templates/delegates/mapper-tech.md +25 -25
  62. package/distilled/templates/delegates/plan-checker.md +78 -68
  63. package/distilled/templates/delegates/researcher-architecture.md +30 -30
  64. package/distilled/templates/delegates/researcher-features.md +30 -30
  65. package/distilled/templates/delegates/researcher-pitfalls.md +30 -30
  66. package/distilled/templates/delegates/researcher-stack.md +30 -30
  67. package/distilled/templates/delegates/researcher-synthesizer.md +31 -31
  68. package/distilled/templates/research/architecture.md +57 -57
  69. package/distilled/templates/research/features.md +23 -23
  70. package/distilled/templates/research/pitfalls.md +46 -46
  71. package/distilled/templates/research/stack.md +45 -45
  72. package/distilled/templates/research/summary.md +67 -67
  73. package/distilled/templates/roadmap.md +74 -62
  74. package/distilled/templates/spec.md +110 -110
  75. package/distilled/workflows/audit-milestone.md +303 -271
  76. package/distilled/workflows/complete-milestone.md +349 -332
  77. package/distilled/workflows/execute.md +457 -450
  78. package/distilled/workflows/map-codebase.md +253 -253
  79. package/distilled/workflows/new-milestone.md +242 -238
  80. package/distilled/workflows/new-project.md +398 -398
  81. package/distilled/workflows/pause.md +160 -156
  82. package/distilled/workflows/plan-milestone-gaps.md +183 -183
  83. package/distilled/workflows/plan.md +454 -448
  84. package/distilled/workflows/progress.md +227 -223
  85. package/distilled/workflows/quick.md +351 -347
  86. package/distilled/workflows/resume.md +220 -212
  87. package/distilled/workflows/verify-work.md +260 -260
  88. package/distilled/workflows/verify.md +431 -429
  89. package/docs/BROWNFIELD-PROOF.md +95 -95
  90. package/docs/RUNTIME-SUPPORT.md +80 -69
  91. package/docs/USER-GUIDE.md +394 -386
  92. package/docs/VERIFICATION-DISCIPLINE.md +59 -59
  93. package/docs/claude/context-monitor.md +98 -98
  94. package/docs/proof/consumer-node-cli/README.md +37 -37
  95. package/docs/proof/consumer-node-cli/ROADMAP.md +14 -14
  96. package/docs/proof/consumer-node-cli/SPEC.md +17 -17
  97. package/docs/proof/consumer-node-cli/brief.md +9 -9
  98. package/docs/proof/consumer-node-cli/phases/01-foundation/01-01-PLAN.md +34 -34
  99. package/docs/proof/consumer-node-cli/phases/01-foundation/01-01-SUMMARY.md +10 -10
  100. package/docs/proof/consumer-node-cli/phases/01-foundation/01-VERIFICATION.md +30 -30
  101. package/package.json +62 -61
@@ -1,19 +1,19 @@
1
- <role>
2
- You are the MILESTONE INITIATOR. Your job is to start a new milestone cycle for an existing project — gather what to build next, define scoped requirements in SPEC.md, and create roadmap phases in ROADMAP.md so the phase lifecycle can begin.
3
-
4
- Core mindset: this is a brownfield continuation, not a fresh start. You build on what shipped. Do not re-research capabilities that already exist in the Validated section of SPEC.md.
5
-
6
- Scope boundary: you produce updated SPEC.md requirements and a new set of phases in ROADMAP.md. You do not plan phases — that is `/gsdd-plan` territory.
7
- </role>
8
-
9
- <prerequisites>
10
- `.planning/SPEC.md` must exist (project has been initialized and at least one milestone shipped).
11
- `.planning/MILESTONES.md` must exist (at least one milestone was completed and archived).
12
-
13
- If SPEC.md is missing, the project has not been initialized — run `/gsdd-new-project` instead.
14
- If MILESTONES.md is missing, no milestone has been completed — complete the current milestone first with `/gsdd-complete-milestone`.
15
- </prerequisites>
16
-
1
+ <role>
2
+ You are the MILESTONE INITIATOR. Your job is to start a new milestone cycle for an existing project — gather what to build next, define scoped requirements in SPEC.md, and create roadmap phases in ROADMAP.md so the phase lifecycle can begin.
3
+
4
+ Core mindset: this is a brownfield continuation, not a fresh start. You build on what shipped. Do not re-research capabilities that already exist in the Validated section of SPEC.md.
5
+
6
+ Scope boundary: you produce updated SPEC.md requirements and a new set of phases in ROADMAP.md. You do not plan phases — that is `/gsdd-plan` territory.
7
+ </role>
8
+
9
+ <prerequisites>
10
+ `.planning/SPEC.md` must exist (project has been initialized and at least one milestone shipped).
11
+ `.planning/MILESTONES.md` must exist (at least one milestone was completed and archived).
12
+
13
+ If SPEC.md is missing, the project has not been initialized — run `/gsdd-new-project` instead.
14
+ If MILESTONES.md is missing, no milestone has been completed — complete the current milestone first with `/gsdd-complete-milestone`.
15
+ </prerequisites>
16
+
17
17
  <load_context>
18
18
  Before starting, read these files:
19
19
 
@@ -23,27 +23,31 @@ Before starting, read these files:
23
23
  4. `.planning/config.json` — `workflow.research`, `researchDepth`, `gitProtocol`
24
24
  5. `.planning/brownfield-change/CHANGE.md`, `.planning/brownfield-change/HANDOFF.md`, and `.planning/brownfield-change/VERIFICATION.md` when an active bounded change is being widened into the next milestone
25
25
  </load_context>
26
-
27
- <lifecycle_preflight>
28
- Before presenting the last milestone or gathering new milestone goals, run:
29
-
26
+
27
+ <repo_root_helper_contract>
28
+ All `node .planning/bin/gsdd.mjs ...` helper commands below assume the current working directory is the repo root. If the runtime launched from a subdirectory, change to the repo root before running them.
29
+ </repo_root_helper_contract>
30
+
31
+ <lifecycle_preflight>
32
+ Before presenting the last milestone or gathering new milestone goals, run:
33
+
30
34
  - `node .planning/bin/gsdd.mjs lifecycle-preflight new-milestone`
31
-
32
- If the preflight result is `blocked`, STOP and report the blocker instead of inferring milestone-start eligibility from workflow-local prose.
33
-
34
- Treat the preflight as an authorization seam over shared repo truth only:
35
- - it may authorize or reject new milestone creation
36
- - it does not mutate milestone or roadmap state by itself
37
- - owned writes remain the new milestone requirements, roadmap entries, and phase-directory scaffolding
38
- </lifecycle_preflight>
39
-
35
+
36
+ If the preflight result is `blocked`, STOP and report the blocker instead of inferring milestone-start eligibility from workflow-local prose.
37
+
38
+ Treat the preflight as an authorization seam over shared repo truth only:
39
+ - it may authorize or reject new milestone creation
40
+ - it does not mutate milestone or roadmap state by itself
41
+ - owned writes remain the new milestone requirements, roadmap entries, and phase-directory scaffolding
42
+ </lifecycle_preflight>
43
+
40
44
  <integration_surface_check>
41
- Before mutating milestone truth, inspect the current branch/worktree as a separate provenance surface:
42
- - current branch
43
- - divergence from `main`
44
- - staged / unstaged / untracked local truth
45
- - whether the branch appears stale/spent or mixed-scope
46
-
45
+ Before mutating milestone truth, inspect the current branch/worktree as a separate provenance surface:
46
+ - current branch
47
+ - divergence from `main`
48
+ - staged / unstaged / untracked local truth
49
+ - whether the branch appears stale/spent or mixed-scope
50
+
47
51
  If milestone truth on disk is local-only or AI-generated draft truth, or if the checked-out branch is clearly not the intended integration surface, say so explicitly before continuing. Do not flatten local draft planning truth into committed repo truth.
48
52
  </integration_surface_check>
49
53
 
@@ -57,222 +61,222 @@ Before gathering new milestone goals, read and preserve:
57
61
 
58
62
  Do not force the user to rediscover this context and do not create a new promotion artifact before milestone setup.
59
63
  </brownfield_widening_inputs>
60
-
61
- <process>
62
-
63
- ## 1. Present What Shipped Last
64
-
65
- Read `.planning/MILESTONES.md`. Find the most recent milestone entry. Present it to the user:
66
-
67
- ```
68
- Last milestone: v[X.Y] — [Name] (shipped [date])
69
-
70
- Delivered:
71
- - [Accomplishment 1]
72
- - [Accomplishment 2]
73
- - [Accomplishment 3]
74
- ```
75
-
64
+
65
+ <process>
66
+
67
+ ## 1. Present What Shipped Last
68
+
69
+ Read `.planning/MILESTONES.md`. Find the most recent milestone entry. Present it to the user:
70
+
71
+ ```
72
+ Last milestone: v[X.Y] — [Name] (shipped [date])
73
+
74
+ Delivered:
75
+ - [Accomplishment 1]
76
+ - [Accomplishment 2]
77
+ - [Accomplishment 3]
78
+ ```
79
+
76
80
  ## 2. Gather What to Build Next
77
-
78
- Ask the user what the next milestone should focus on. Explore:
79
- - What problem does this milestone solve?
80
- - Who benefits?
81
+
82
+ Ask the user what the next milestone should focus on. Explore:
83
+ - What problem does this milestone solve?
84
+ - Who benefits?
81
85
  - What is explicitly out of scope for this milestone?
82
86
  - Any constraints (deadline, team size, dependencies)?
83
87
 
84
88
  If widening from an active brownfield change, start by presenting the preserved brownfield goal/scope/proof context and ask what now needs milestone-owned lifecycle state beyond that bounded lane.
85
-
86
- If a `.planning/MILESTONE-BRIEF.md` exists, use it as the input instead of asking. Note any assumptions inferred from the brief.
87
- (MILESTONE-BRIEF.md is an optional pre-written document with goals and scope for the next milestone — useful when the user wants to skip the interactive questioning. Create it manually in `.planning/` before running this workflow.)
88
-
89
- ## 3. Determine Version
90
-
91
- Parse the last version from MILESTONES.md (e.g., `v0.5.0`). Suggest the next version:
92
- - Minor increment for additive work (v0.5.0 → v0.6.0)
93
- - Major increment for breaking changes or new direction (v0.x.y → v1.0.0)
94
-
95
- Confirm version with the user.
96
-
97
- ## 4. Research Decision
98
-
99
- Check `config.json -> workflow.research`. If `true`, ask the user:
100
-
101
- > "Research the domain ecosystem for new features before defining requirements?"
102
- >
103
- > - "Yes — research first" (recommended for new capability areas)
104
- > - "No — skip research"
105
-
106
- If `workflow.research` is `false` in config, skip to Step 5.
107
-
108
- **If research is selected:**
109
-
110
- Check `researchDepth` in config (`fast` | `balanced` | `deep`).
111
-
112
- Use `<delegate>` blocks to spawn researchers. Pass milestone context to each:
113
- - What existing capabilities are already validated (from SPEC.md Validated section) — do NOT re-research these
114
- - What NEW capabilities this milestone is adding
115
- - Focus on: what's needed for the NEW features only
116
-
117
- ```
118
- <delegate>
119
- **Identity:** Researcher — Stack
120
- **Instruction:** Read `.planning/templates/roles/researcher.md`, then research what stack additions are needed for the new milestone capabilities.
121
-
122
- **Milestone context:** [existing validated capabilities, new capabilities being added]
123
- **Question:** What library/framework additions are needed? What should NOT be added?
124
- **Output:** Write findings to `.planning/research/STACK.md`
125
- **Return:** 2-3 sentence summary of key findings
126
- </delegate>
127
- ```
128
-
129
- Spawn 2-4 researchers in parallel based on researchDepth:
130
- - `fast`: 1 researcher (features/pitfalls combined)
131
- - `balanced`: 2 researchers (features, pitfalls)
132
- - `deep`: 4 researchers (stack, features, architecture, pitfalls)
133
-
134
- After researchers complete, synthesize findings inline (no synthesizer delegate needed unless `deep` mode — then spawn the synthesizer delegate).
135
-
136
- Present key findings before moving to requirements.
137
-
138
- ## 5. Define Requirements
139
-
140
- Read SPEC.md Must Have section. Identify the requirement ID pattern in use (e.g., `[FLOW-01]`, `[PLAN-01]`).
141
-
89
+
90
+ If a `.planning/MILESTONE-BRIEF.md` exists, use it as the input instead of asking. Note any assumptions inferred from the brief.
91
+ (MILESTONE-BRIEF.md is an optional pre-written document with goals and scope for the next milestone — useful when the user wants to skip the interactive questioning. Create it manually in `.planning/` before running this workflow.)
92
+
93
+ ## 3. Determine Version
94
+
95
+ Parse the last version from MILESTONES.md (e.g., `v0.5.0`). Suggest the next version:
96
+ - Minor increment for additive work (v0.5.0 → v0.6.0)
97
+ - Major increment for breaking changes or new direction (v0.x.y → v1.0.0)
98
+
99
+ Confirm version with the user.
100
+
101
+ ## 4. Research Decision
102
+
103
+ Check `config.json -> workflow.research`. If `true`, ask the user:
104
+
105
+ > "Research the domain ecosystem for new features before defining requirements?"
106
+ >
107
+ > - "Yes — research first" (recommended for new capability areas)
108
+ > - "No — skip research"
109
+
110
+ If `workflow.research` is `false` in config, skip to Step 5.
111
+
112
+ **If research is selected:**
113
+
114
+ Check `researchDepth` in config (`fast` | `balanced` | `deep`).
115
+
116
+ Use `<delegate>` blocks to spawn researchers. Pass milestone context to each:
117
+ - What existing capabilities are already validated (from SPEC.md Validated section) — do NOT re-research these
118
+ - What NEW capabilities this milestone is adding
119
+ - Focus on: what's needed for the NEW features only
120
+
121
+ ```
122
+ <delegate>
123
+ **Identity:** Researcher — Stack
124
+ **Instruction:** Read `.planning/templates/roles/researcher.md`, then research what stack additions are needed for the new milestone capabilities.
125
+
126
+ **Milestone context:** [existing validated capabilities, new capabilities being added]
127
+ **Question:** What library/framework additions are needed? What should NOT be added?
128
+ **Output:** Write findings to `.planning/research/STACK.md`
129
+ **Return:** 2-3 sentence summary of key findings
130
+ </delegate>
131
+ ```
132
+
133
+ Spawn 2-4 researchers in parallel based on researchDepth:
134
+ - `fast`: 1 researcher (features/pitfalls combined)
135
+ - `balanced`: 2 researchers (features, pitfalls)
136
+ - `deep`: 4 researchers (stack, features, architecture, pitfalls)
137
+
138
+ After researchers complete, synthesize findings inline (no synthesizer delegate needed unless `deep` mode — then spawn the synthesizer delegate).
139
+
140
+ Present key findings before moving to requirements.
141
+
142
+ ## 5. Define Requirements
143
+
144
+ Read SPEC.md Must Have section. Identify the requirement ID pattern in use (e.g., `[FLOW-01]`, `[PLAN-01]`).
145
+
142
146
  Based on milestone goals and research findings (if any), define the new Must Have requirements for this milestone:
143
-
147
+
144
148
  - Each requirement must be user-centric: "User can X"
145
149
  - Each must have a `[Done-When:]` completion criterion
146
150
  - IDs follow the existing category pattern or introduce a new category for new capability areas
147
151
  - Do NOT duplicate or restate requirements already in the Validated section
148
152
  - If widening from an active brownfield change, convert the preserved `CHANGE.md` / `HANDOFF.md` / `VERIFICATION.md` context into milestone requirements instead of restating the work from scratch
149
-
150
- Present the full proposed requirements list:
151
-
152
- ```
153
- ## Proposed Requirements for v[X.Y]
154
-
155
- - [ ] **[CAT-01]**: User can X. [Done-When: ...]
156
- - [ ] **[CAT-02]**: User can Y. [Done-When: ...]
157
- ```
158
-
159
- **STOP. Wait for user confirmation before writing to SPEC.md.**
160
-
161
- If the user requests changes, revise and re-present.
162
-
163
- Once confirmed, add the requirements to SPEC.md's Must Have section.
164
-
165
- ## 6. Create Roadmap Phases
166
-
167
- Determine the starting phase number:
168
- - Check ROADMAP.md for the highest existing phase number (in collapsed `<details>` blocks or active entries)
169
- - Check MILESTONES.md for the last phase range (e.g., "Phases 1–5")
170
- - New phases start from max + 1
171
-
153
+
154
+ Present the full proposed requirements list:
155
+
156
+ ```
157
+ ## Proposed Requirements for v[X.Y]
158
+
159
+ - [ ] **[CAT-01]**: User can X. [Done-When: ...]
160
+ - [ ] **[CAT-02]**: User can Y. [Done-When: ...]
161
+ ```
162
+
163
+ **STOP. Wait for user confirmation before writing to SPEC.md.**
164
+
165
+ If the user requests changes, revise and re-present.
166
+
167
+ Once confirmed, add the requirements to SPEC.md's Must Have section.
168
+
169
+ ## 6. Create Roadmap Phases
170
+
171
+ Determine the starting phase number:
172
+ - Check ROADMAP.md for the highest existing phase number (in collapsed `<details>` blocks or active entries)
173
+ - Check MILESTONES.md for the last phase range (e.g., "Phases 1–5")
174
+ - New phases start from max + 1
175
+
172
176
  Design 2-5 phases that cover all new requirements:
173
177
  - Each phase has a goal (one sentence), requirement assignments, and 2-4 success criteria
174
178
  - All requirements must be assigned to exactly one phase
175
179
  - Verify 100% coverage before writing
176
180
  - If widening from an active brownfield change, make the phase design preserve the already-captured scope, decisions, and proof/gap context instead of inserting a rediscovery phase
177
-
178
- Present the proposed roadmap:
179
-
180
- ```
181
- ## Proposed Phases for v[X.Y]
182
-
183
- **Phase [N]: [Name]**
184
- Goal: [one sentence]
185
- Requirements: [REQ-IDs]
186
- Success criteria:
187
- 1. [observable outcome]
188
- 2. [observable outcome]
189
-
190
- **Phase [N+1]: [Name]**
191
- ...
192
- ```
193
-
194
- **STOP. Wait for user confirmation before writing to ROADMAP.md.**
195
-
196
- If the user requests adjustments, revise and re-present.
197
-
198
- Once confirmed, add the phases to ROADMAP.md below the collapsed milestone `<details>` block(s):
199
-
200
- ```markdown
201
- ### [Milestone Name]
202
-
203
- - [ ] **Phase [N]: [Name]** — [goal]
204
- - [ ] **Phase [N+1]: [Name]** — [goal]
205
- ```
206
-
207
- Also update the Milestones list at the top of ROADMAP.md:
208
-
209
- ```markdown
210
- - 🚧 **v[X.Y] [Name]** — Phases [N]–[M] (in progress)
211
- ```
212
-
213
- ## 7. Create Phase Directories
214
-
215
- Create placeholder directories for each new phase:
216
-
217
- ```
218
- .planning/phases/[NN]-[phase-name-kebab]/
219
- ```
220
-
221
- No files inside — the `/gsdd-plan` workflow populates them.
222
-
223
- ## 8. Update SPEC.md Current State
224
-
225
- Update the `## Current State` section in SPEC.md:
226
-
227
- ```markdown
228
- ## Current State
229
-
230
- - **Milestone:** v[X.Y] [Name] — IN PROGRESS
231
- - **Phases:** [N]–[M] (0 of [total] complete)
232
- - **Blockers:** None
233
- - **Next:** `/gsdd-plan [N]` to begin Phase [N]
234
-
235
- ---
236
- *Last updated: [today] — v[X.Y] milestone started*
237
- ```
238
-
239
- </process>
240
-
241
- <success_criteria>
242
- - [ ] MILESTONES.md read and last milestone presented
243
- - [ ] Milestone goals gathered from user (or MILESTONE-BRIEF.md consumed)
244
- - [ ] Version confirmed
245
- - [ ] Research completed if requested (or skipped per config/user)
246
- - [ ] Requirements defined, user-centric, with Done-When criteria
247
- - [ ] User confirmed requirements before SPEC.md was updated
248
- - [ ] All new requirements added to SPEC.md Must Have section
249
- - [ ] Phase numbering continues from previous milestone
250
- - [ ] All requirements assigned to phases (100% coverage)
251
- - [ ] User confirmed roadmap before ROADMAP.md was updated
252
- - [ ] ROADMAP.md updated with new phases and milestone header
253
- - [ ] SPEC.md Current State updated
254
- - [ ] Phase directories created
255
- </success_criteria>
256
-
257
- **MANDATORY: `.planning/SPEC.md` and `.planning/ROADMAP.md` must be updated on disk before this workflow is complete. If either write fails, STOP and report the failure. These are the handoff artifacts — without them, the next session cannot proceed.**
258
-
259
- <completion>
260
- Report to the user what was created, then present the next step:
261
-
262
- ---
263
- **Completed:** Milestone v[X.Y] initialized.
264
-
265
- Created:
266
- - [N] new requirements in `SPEC.md` Must Have section
267
- - [M] new phases in `ROADMAP.md` (Phases [start]–[end])
268
- - Phase directories in `.planning/phases/`
269
-
270
- **Next step:** `/gsdd-plan [N]` — plan Phase [N]: [phase name]
271
-
272
- Also available:
273
- - `/gsdd-progress` — check overall project status
274
- - `/gsdd-map-codebase` — refresh codebase maps before planning (recommended for large codebases)
275
-
276
- Consider clearing context before starting the next workflow for best results.
277
- ---
278
- </completion>
181
+
182
+ Present the proposed roadmap:
183
+
184
+ ```
185
+ ## Proposed Phases for v[X.Y]
186
+
187
+ **Phase [N]: [Name]**
188
+ Goal: [one sentence]
189
+ Requirements: [REQ-IDs]
190
+ Success criteria:
191
+ 1. [observable outcome]
192
+ 2. [observable outcome]
193
+
194
+ **Phase [N+1]: [Name]**
195
+ ...
196
+ ```
197
+
198
+ **STOP. Wait for user confirmation before writing to ROADMAP.md.**
199
+
200
+ If the user requests adjustments, revise and re-present.
201
+
202
+ Once confirmed, add the phases to ROADMAP.md below the collapsed milestone `<details>` block(s):
203
+
204
+ ```markdown
205
+ ### [Milestone Name]
206
+
207
+ - [ ] **Phase [N]: [Name]** — [goal]
208
+ - [ ] **Phase [N+1]: [Name]** — [goal]
209
+ ```
210
+
211
+ Also update the Milestones list at the top of ROADMAP.md:
212
+
213
+ ```markdown
214
+ - 🚧 **v[X.Y] [Name]** — Phases [N]–[M] (in progress)
215
+ ```
216
+
217
+ ## 7. Create Phase Directories
218
+
219
+ Create placeholder directories for each new phase:
220
+
221
+ ```
222
+ .planning/phases/[NN]-[phase-name-kebab]/
223
+ ```
224
+
225
+ No files inside — the `/gsdd-plan` workflow populates them.
226
+
227
+ ## 8. Update SPEC.md Current State
228
+
229
+ Update the `## Current State` section in SPEC.md:
230
+
231
+ ```markdown
232
+ ## Current State
233
+
234
+ - **Milestone:** v[X.Y] [Name] — IN PROGRESS
235
+ - **Phases:** [N]–[M] (0 of [total] complete)
236
+ - **Blockers:** None
237
+ - **Next:** `/gsdd-plan [N]` to begin Phase [N]
238
+
239
+ ---
240
+ *Last updated: [today] — v[X.Y] milestone started*
241
+ ```
242
+
243
+ </process>
244
+
245
+ <success_criteria>
246
+ - [ ] MILESTONES.md read and last milestone presented
247
+ - [ ] Milestone goals gathered from user (or MILESTONE-BRIEF.md consumed)
248
+ - [ ] Version confirmed
249
+ - [ ] Research completed if requested (or skipped per config/user)
250
+ - [ ] Requirements defined, user-centric, with Done-When criteria
251
+ - [ ] User confirmed requirements before SPEC.md was updated
252
+ - [ ] All new requirements added to SPEC.md Must Have section
253
+ - [ ] Phase numbering continues from previous milestone
254
+ - [ ] All requirements assigned to phases (100% coverage)
255
+ - [ ] User confirmed roadmap before ROADMAP.md was updated
256
+ - [ ] ROADMAP.md updated with new phases and milestone header
257
+ - [ ] SPEC.md Current State updated
258
+ - [ ] Phase directories created
259
+ </success_criteria>
260
+
261
+ **MANDATORY: `.planning/SPEC.md` and `.planning/ROADMAP.md` must be updated on disk before this workflow is complete. If either write fails, STOP and report the failure. These are the handoff artifacts — without them, the next session cannot proceed.**
262
+
263
+ <completion>
264
+ Report to the user what was created, then present the next step:
265
+
266
+ ---
267
+ **Completed:** Milestone v[X.Y] initialized.
268
+
269
+ Created:
270
+ - [N] new requirements in `SPEC.md` Must Have section
271
+ - [M] new phases in `ROADMAP.md` (Phases [start]–[end])
272
+ - Phase directories in `.planning/phases/`
273
+
274
+ **Next step:** `/gsdd-plan [N]` — plan Phase [N]: [phase name]
275
+
276
+ Also available:
277
+ - `/gsdd-progress` — check overall project status
278
+ - `/gsdd-map-codebase` — refresh codebase maps before planning (recommended for large codebases)
279
+
280
+ Consider clearing context before starting the next workflow for best results.
281
+ ---
282
+ </completion>