gsdd-cli 0.18.4 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +625 -607
  3. package/agents/DISTILLATION.md +421 -421
  4. package/agents/README.md +62 -62
  5. package/agents/approach-explorer.md +361 -361
  6. package/agents/debugger.md +82 -82
  7. package/agents/executor.md +394 -394
  8. package/agents/integration-checker.md +318 -318
  9. package/agents/mapper.md +103 -103
  10. package/agents/planner.md +313 -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 +191 -191
  17. package/bin/adapters/codex.mjs +85 -85
  18. package/bin/adapters/index.mjs +20 -20
  19. package/bin/adapters/opencode.mjs +278 -278
  20. package/bin/gsdd.mjs +123 -116
  21. package/bin/lib/cli-utils.mjs +28 -28
  22. package/bin/lib/evidence-contract.mjs +112 -112
  23. package/bin/lib/file-ops.mjs +209 -161
  24. package/bin/lib/health-truth.mjs +181 -178
  25. package/bin/lib/health.mjs +265 -235
  26. package/bin/lib/init-flow.mjs +252 -236
  27. package/bin/lib/init-prompts.mjs +248 -247
  28. package/bin/lib/init-runtime.mjs +225 -212
  29. package/bin/lib/init.mjs +17 -17
  30. package/bin/lib/lifecycle-preflight.mjs +360 -333
  31. package/bin/lib/lifecycle-state.mjs +351 -267
  32. package/bin/lib/manifest.mjs +116 -114
  33. package/bin/lib/models.mjs +411 -411
  34. package/bin/lib/phase.mjs +397 -378
  35. package/bin/lib/plan-constants.mjs +30 -30
  36. package/bin/lib/provenance.mjs +109 -106
  37. package/bin/lib/rendering.mjs +178 -130
  38. package/bin/lib/runtime-freshness.mjs +221 -219
  39. package/bin/lib/templates.mjs +225 -224
  40. package/bin/lib/workspace-root.mjs +132 -0
  41. package/distilled/DESIGN.md +2347 -2327
  42. package/distilled/EVIDENCE-INDEX.md +397 -394
  43. package/distilled/README.md +196 -193
  44. package/distilled/SKILL.md +86 -85
  45. package/distilled/templates/agents.block.md +21 -21
  46. package/distilled/templates/agents.md +6 -6
  47. package/distilled/templates/approach.md +232 -232
  48. package/distilled/templates/auth-matrix.md +78 -78
  49. package/distilled/templates/brownfield-change/CHANGE.md +99 -0
  50. package/distilled/templates/brownfield-change/HANDOFF.md +38 -0
  51. package/distilled/templates/brownfield-change/VERIFICATION.md +56 -0
  52. package/distilled/templates/codebase/architecture.md +110 -110
  53. package/distilled/templates/codebase/concerns.md +95 -95
  54. package/distilled/templates/codebase/conventions.md +193 -193
  55. package/distilled/templates/codebase/stack.md +96 -96
  56. package/distilled/templates/delegates/approach-explorer.md +25 -25
  57. package/distilled/templates/delegates/mapper-arch.md +26 -26
  58. package/distilled/templates/delegates/mapper-concerns.md +27 -27
  59. package/distilled/templates/delegates/mapper-quality.md +28 -28
  60. package/distilled/templates/delegates/mapper-tech.md +25 -25
  61. package/distilled/templates/delegates/plan-checker.md +68 -68
  62. package/distilled/templates/delegates/researcher-architecture.md +30 -30
  63. package/distilled/templates/delegates/researcher-features.md +30 -30
  64. package/distilled/templates/delegates/researcher-pitfalls.md +30 -30
  65. package/distilled/templates/delegates/researcher-stack.md +30 -30
  66. package/distilled/templates/delegates/researcher-synthesizer.md +31 -31
  67. package/distilled/templates/research/architecture.md +57 -57
  68. package/distilled/templates/research/features.md +23 -23
  69. package/distilled/templates/research/pitfalls.md +46 -46
  70. package/distilled/templates/research/stack.md +45 -45
  71. package/distilled/templates/research/summary.md +67 -67
  72. package/distilled/templates/roadmap.md +74 -62
  73. package/distilled/templates/spec.md +110 -110
  74. package/distilled/workflows/audit-milestone.md +275 -271
  75. package/distilled/workflows/complete-milestone.md +336 -332
  76. package/distilled/workflows/execute.md +454 -449
  77. package/distilled/workflows/map-codebase.md +253 -253
  78. package/distilled/workflows/new-milestone.md +242 -238
  79. package/distilled/workflows/new-project.md +398 -398
  80. package/distilled/workflows/pause.md +160 -156
  81. package/distilled/workflows/plan-milestone-gaps.md +183 -183
  82. package/distilled/workflows/plan.md +451 -447
  83. package/distilled/workflows/progress.md +227 -223
  84. package/distilled/workflows/quick.md +351 -347
  85. package/distilled/workflows/resume.md +220 -212
  86. package/distilled/workflows/verify-work.md +260 -260
  87. package/distilled/workflows/verify.md +431 -429
  88. package/docs/BROWNFIELD-PROOF.md +95 -95
  89. package/docs/RUNTIME-SUPPORT.md +93 -75
  90. package/docs/USER-GUIDE.md +440 -399
  91. package/docs/VERIFICATION-DISCIPLINE.md +59 -59
  92. package/docs/claude/context-monitor.md +98 -98
  93. package/docs/proof/consumer-node-cli/README.md +37 -37
  94. package/docs/proof/consumer-node-cli/ROADMAP.md +14 -14
  95. package/docs/proof/consumer-node-cli/SPEC.md +17 -17
  96. package/docs/proof/consumer-node-cli/brief.md +9 -9
  97. package/docs/proof/consumer-node-cli/phases/01-foundation/01-01-PLAN.md +34 -34
  98. package/docs/proof/consumer-node-cli/phases/01-foundation/01-01-SUMMARY.md +10 -10
  99. package/docs/proof/consumer-node-cli/phases/01-foundation/01-VERIFICATION.md +30 -30
  100. package/package.json +62 -61
@@ -1,260 +1,260 @@
1
- <purpose>
2
- Validate built features through conversational testing with persistent state.
3
- Creates UAT.md that tracks test progress, survives context resets, and feeds gaps into `/gsdd-plan`.
4
-
5
- User tests, Claude records. One test at a time. Plain text responses.
6
- </purpose>
7
-
8
- <philosophy>
9
- **Show expected, ask if reality matches.**
10
-
11
- Present what SHOULD happen. User confirms or describes what's different.
12
- - "yes" / "y" / "pass" / empty → pass
13
- - Anything else → logged as issue, severity inferred from natural language
14
-
15
- No Pass/Fail buttons. No severity questions. Just: "Here's what should happen. Does it?"
16
- </philosophy>
17
-
18
- <load_context>
19
- Read these before any other action:
20
- 1. `.planning/phases/{N}-*/` — all `*-SUMMARY.md` files for the target phase
21
- 2. `.planning/SPEC.md` — requirements and acceptance criteria
22
- 3. `.planning/ROADMAP.md` — phase goal and must-haves
23
-
24
- **$ARGUMENTS:** optional phase number, e.g., `/gsdd-verify-work 4`
25
- </load_context>
26
-
27
- <session_detection>
28
- Before starting a new session, check for existing UAT state:
29
-
30
- ```bash
31
- # Check for existing UAT files in this phase
32
- ls .planning/phases/{N}-*/*-UAT.md 2>/dev/null || echo "none"
33
- ```
34
-
35
- **If a UAT.md exists** with `status: testing`, offer to resume:
36
- ```
37
- UAT in progress: Phase {N} — {passed}/{total} tests done, {issues} issues found so far.
38
- Reply "resume" to continue from where you left off, or "restart" to begin fresh.
39
- ```
40
-
41
- **If no UAT.md exists** or user says "restart", proceed to `<extract_tests>`.
42
- </session_detection>
43
-
44
- <extract_tests>
45
- From each `*-SUMMARY.md` in the phase directory, extract testable deliverables:
46
-
47
- 1. Read **Accomplishments** and **Notes for Verification** sections.
48
- 2. Focus on **user-observable outcomes** — UI behavior, API responses, workflow outputs. Skip refactors, type changes, internal restructures.
49
- 3. For each deliverable, define:
50
- - `name`: brief test name
51
- - `expected`: what the user should see or experience (specific and observable)
52
-
53
- Examples:
54
- - Accomplishment: "Added comment threading" → Test: "Reply to a comment" → Expected: "Clicking Reply opens inline composer. Reply appears nested under parent with visual indent."
55
- - Accomplishment: "JWT auth with refresh rotation" → Test: "Token refresh on expiry" → Expected: "After token expires, next request silently refreshes and succeeds. User is not logged out."
56
-
57
- Present the test list to the user for a quick scan:
58
- ```
59
- Phase {N} — {count} tests extracted
60
-
61
- 1. {Test Name}
62
- 2. {Test Name}
63
- ...
64
-
65
- Reply "start" to begin, or add/remove tests before starting.
66
- ```
67
-
68
- Wait for confirmation.
69
- </extract_tests>
70
-
71
- <create_uat_file>
72
- Create `.planning/phases/{N}-{name}/{phase_num}-UAT.md`:
73
-
74
- ```markdown
75
- ---
76
- status: testing
77
- phase: {N}-{name}
78
- source: [{list of SUMMARY.md files read}]
79
- started: {ISO timestamp}
80
- updated: {ISO timestamp}
81
- ---
82
-
83
- ## Current Test
84
-
85
- number: 1
86
- name: {first test name}
87
- expected: |
88
- {what user should observe}
89
- awaiting: user response
90
-
91
- ## Tests
92
-
93
- ### 1. {Test Name}
94
- expected: {observable behavior}
95
- result: pending
96
-
97
- ### 2. {Test Name}
98
- expected: {observable behavior}
99
- result: pending
100
-
101
- ...
102
-
103
- ## Summary
104
-
105
- total: {N}
106
- passed: 0
107
- issues: 0
108
- pending: {N}
109
- skipped: 0
110
-
111
- ## Gaps
112
-
113
- [none yet]
114
- ```
115
-
116
- **MANDATORY: Write UAT.md to disk before presenting the first test.** This ensures progress survives a context reset.
117
- </create_uat_file>
118
-
119
- <testing_loop>
120
- **Present one test at a time:**
121
-
122
- ```
123
- Test {N}/{total}: {Test Name}
124
- ──────────────────────────────────────────────────
125
- Expected: {what should happen}
126
-
127
- → Reply "pass" (or just press Enter) — or describe what went wrong
128
- ──────────────────────────────────────────────────
129
- ```
130
-
131
- **Process the response:**
132
-
133
- | Response | Action |
134
- |----------|--------|
135
- | empty, "yes", "y", "ok", "pass", "next" | Mark `result: pass` |
136
- | "skip", "n/a", "can't test" | Mark `result: skipped`, capture reason |
137
- | anything else | Treat as issue description — infer severity |
138
-
139
- **Severity inference from natural language (never ask):**
140
-
141
- | User says | Infer |
142
- |-----------|-------|
143
- | "crashes", "error", "exception", "fails completely" | `blocker` |
144
- | "doesn't work", "nothing happens", "wrong behavior" | `major` |
145
- | "works but...", "slow", "weird", "minor" | `minor` |
146
- | "color", "spacing", "alignment", "looks off" | `cosmetic` |
147
- | unclear | `major` (default) |
148
-
149
- **On issue:** Write immediately to disk (append to Gaps section):
150
- ```yaml
151
- - truth: "{expected behavior from test}"
152
- status: failed
153
- reason: "User reported: {verbatim response}"
154
- severity: {inferred}
155
- test: {N}
156
- root_cause: pending
157
- ```
158
-
159
- **After each response:** Update Summary counts and frontmatter `updated` timestamp in UAT.md.
160
-
161
- Advance to the next pending test. Repeat until all tests have a result.
162
- </testing_loop>
163
-
164
- <diagnosis_protocol>
165
- When all tests are done and **issues > 0**, run inline diagnosis before routing to planning.
166
-
167
- For each gap in the Gaps section:
168
-
169
- 1. Read the source files most likely responsible (infer from the expected behavior and `*-SUMMARY.md` "Notes for Verification").
170
- 2. Form a root-cause hypothesis:
171
- - Look for missing implementation, wrong logic, stale wiring, or missing state.
172
- 3. Update the gap's `root_cause` field in UAT.md:
173
- ```yaml
174
- root_cause: "{one-sentence hypothesis: what is missing or wrong and where}"
175
- ```
176
- 4. Optionally add:
177
- ```yaml
178
- artifacts: ["{file path}"]
179
- missing: ["{what is absent}"]
180
- ```
181
-
182
- Do not attempt fixes during diagnosis — only gather evidence.
183
-
184
- After all gaps are diagnosed, write UAT.md to disk with the updated root causes.
185
- </diagnosis_protocol>
186
-
187
- <complete_session>
188
- **Finalize the UAT file:**
189
-
190
- Update frontmatter:
191
- ```yaml
192
- status: complete
193
- updated: {now}
194
- ```
195
-
196
- Clear the Current Test block:
197
- ```
198
- ## Current Test
199
-
200
- [testing complete]
201
- ```
202
-
203
- Write final UAT.md to disk.
204
-
205
- **If no issues found:**
206
- ```
207
- UAT complete — all {N} tests passed.
208
-
209
- Next step: /gsdd-progress — route to next phase or milestone audit
210
- ```
211
-
212
- **If issues found:**
213
-
214
- Present summary:
215
- ```
216
- UAT complete — Phase {N}
217
-
218
- | Result | Count |
219
- |---------|-------|
220
- | Passed | {N} |
221
- | Issues | {N} |
222
- | Skipped | {N} |
223
-
224
- Diagnosed {N} root cause(s). Ready to plan fixes.
225
- ```
226
-
227
- Then route to gap closure (see `<completion>`).
228
- </complete_session>
229
-
230
- <success_criteria>
231
- - [ ] Phase SUMMARY files read before extracting tests
232
- - [ ] UAT.md written to disk before the first test is presented
233
- - [ ] Tests presented one at a time with specific expected behavior
234
- - [ ] Severity inferred from description — never asked
235
- - [ ] UAT.md updated after each issue (not batched to end)
236
- - [ ] Inline diagnosis completed for each issue before routing to planning
237
- - [ ] UAT.md finalized on disk with `status: complete`
238
- </success_criteria>
239
-
240
- <completion>
241
- Report to the user what was tested, then present the next step:
242
-
243
- ---
244
- **Completed:** UAT — created `.planning/phases/{phase_dir}/{phase_num}-UAT.md`.
245
-
246
- If no issues:
247
- **Next step:** `/gsdd-progress` — route to next phase or milestone audit
248
-
249
- If issues found:
250
- **Next step:** `/gsdd-plan` — plan gap closure using the diagnosed root causes in UAT.md
251
- - Open `.planning/phases/{phase_dir}/{phase_num}-UAT.md` for the plan context
252
- - Use `--gaps` mode if your runtime supports it
253
-
254
- Also available:
255
- - `/gsdd-verify` — re-run formal phase verification after fixes are implemented
256
- - `/gsdd-pause` — save context for later if stopping work
257
-
258
- Consider clearing context before starting the next workflow for best results.
259
- ---
260
- </completion>
1
+ <purpose>
2
+ Validate built features through conversational testing with persistent state.
3
+ Creates UAT.md that tracks test progress, survives context resets, and feeds gaps into `/gsdd-plan`.
4
+
5
+ User tests, Claude records. One test at a time. Plain text responses.
6
+ </purpose>
7
+
8
+ <philosophy>
9
+ **Show expected, ask if reality matches.**
10
+
11
+ Present what SHOULD happen. User confirms or describes what's different.
12
+ - "yes" / "y" / "pass" / empty → pass
13
+ - Anything else → logged as issue, severity inferred from natural language
14
+
15
+ No Pass/Fail buttons. No severity questions. Just: "Here's what should happen. Does it?"
16
+ </philosophy>
17
+
18
+ <load_context>
19
+ Read these before any other action:
20
+ 1. `.planning/phases/{N}-*/` — all `*-SUMMARY.md` files for the target phase
21
+ 2. `.planning/SPEC.md` — requirements and acceptance criteria
22
+ 3. `.planning/ROADMAP.md` — phase goal and must-haves
23
+
24
+ **$ARGUMENTS:** optional phase number, e.g., `/gsdd-verify-work 4`
25
+ </load_context>
26
+
27
+ <session_detection>
28
+ Before starting a new session, check for existing UAT state:
29
+
30
+ ```bash
31
+ # Check for existing UAT files in this phase
32
+ ls .planning/phases/{N}-*/*-UAT.md 2>/dev/null || echo "none"
33
+ ```
34
+
35
+ **If a UAT.md exists** with `status: testing`, offer to resume:
36
+ ```
37
+ UAT in progress: Phase {N} — {passed}/{total} tests done, {issues} issues found so far.
38
+ Reply "resume" to continue from where you left off, or "restart" to begin fresh.
39
+ ```
40
+
41
+ **If no UAT.md exists** or user says "restart", proceed to `<extract_tests>`.
42
+ </session_detection>
43
+
44
+ <extract_tests>
45
+ From each `*-SUMMARY.md` in the phase directory, extract testable deliverables:
46
+
47
+ 1. Read **Accomplishments** and **Notes for Verification** sections.
48
+ 2. Focus on **user-observable outcomes** — UI behavior, API responses, workflow outputs. Skip refactors, type changes, internal restructures.
49
+ 3. For each deliverable, define:
50
+ - `name`: brief test name
51
+ - `expected`: what the user should see or experience (specific and observable)
52
+
53
+ Examples:
54
+ - Accomplishment: "Added comment threading" → Test: "Reply to a comment" → Expected: "Clicking Reply opens inline composer. Reply appears nested under parent with visual indent."
55
+ - Accomplishment: "JWT auth with refresh rotation" → Test: "Token refresh on expiry" → Expected: "After token expires, next request silently refreshes and succeeds. User is not logged out."
56
+
57
+ Present the test list to the user for a quick scan:
58
+ ```
59
+ Phase {N} — {count} tests extracted
60
+
61
+ 1. {Test Name}
62
+ 2. {Test Name}
63
+ ...
64
+
65
+ Reply "start" to begin, or add/remove tests before starting.
66
+ ```
67
+
68
+ Wait for confirmation.
69
+ </extract_tests>
70
+
71
+ <create_uat_file>
72
+ Create `.planning/phases/{N}-{name}/{phase_num}-UAT.md`:
73
+
74
+ ```markdown
75
+ ---
76
+ status: testing
77
+ phase: {N}-{name}
78
+ source: [{list of SUMMARY.md files read}]
79
+ started: {ISO timestamp}
80
+ updated: {ISO timestamp}
81
+ ---
82
+
83
+ ## Current Test
84
+
85
+ number: 1
86
+ name: {first test name}
87
+ expected: |
88
+ {what user should observe}
89
+ awaiting: user response
90
+
91
+ ## Tests
92
+
93
+ ### 1. {Test Name}
94
+ expected: {observable behavior}
95
+ result: pending
96
+
97
+ ### 2. {Test Name}
98
+ expected: {observable behavior}
99
+ result: pending
100
+
101
+ ...
102
+
103
+ ## Summary
104
+
105
+ total: {N}
106
+ passed: 0
107
+ issues: 0
108
+ pending: {N}
109
+ skipped: 0
110
+
111
+ ## Gaps
112
+
113
+ [none yet]
114
+ ```
115
+
116
+ **MANDATORY: Write UAT.md to disk before presenting the first test.** This ensures progress survives a context reset.
117
+ </create_uat_file>
118
+
119
+ <testing_loop>
120
+ **Present one test at a time:**
121
+
122
+ ```
123
+ Test {N}/{total}: {Test Name}
124
+ ──────────────────────────────────────────────────
125
+ Expected: {what should happen}
126
+
127
+ → Reply "pass" (or just press Enter) — or describe what went wrong
128
+ ──────────────────────────────────────────────────
129
+ ```
130
+
131
+ **Process the response:**
132
+
133
+ | Response | Action |
134
+ |----------|--------|
135
+ | empty, "yes", "y", "ok", "pass", "next" | Mark `result: pass` |
136
+ | "skip", "n/a", "can't test" | Mark `result: skipped`, capture reason |
137
+ | anything else | Treat as issue description — infer severity |
138
+
139
+ **Severity inference from natural language (never ask):**
140
+
141
+ | User says | Infer |
142
+ |-----------|-------|
143
+ | "crashes", "error", "exception", "fails completely" | `blocker` |
144
+ | "doesn't work", "nothing happens", "wrong behavior" | `major` |
145
+ | "works but...", "slow", "weird", "minor" | `minor` |
146
+ | "color", "spacing", "alignment", "looks off" | `cosmetic` |
147
+ | unclear | `major` (default) |
148
+
149
+ **On issue:** Write immediately to disk (append to Gaps section):
150
+ ```yaml
151
+ - truth: "{expected behavior from test}"
152
+ status: failed
153
+ reason: "User reported: {verbatim response}"
154
+ severity: {inferred}
155
+ test: {N}
156
+ root_cause: pending
157
+ ```
158
+
159
+ **After each response:** Update Summary counts and frontmatter `updated` timestamp in UAT.md.
160
+
161
+ Advance to the next pending test. Repeat until all tests have a result.
162
+ </testing_loop>
163
+
164
+ <diagnosis_protocol>
165
+ When all tests are done and **issues > 0**, run inline diagnosis before routing to planning.
166
+
167
+ For each gap in the Gaps section:
168
+
169
+ 1. Read the source files most likely responsible (infer from the expected behavior and `*-SUMMARY.md` "Notes for Verification").
170
+ 2. Form a root-cause hypothesis:
171
+ - Look for missing implementation, wrong logic, stale wiring, or missing state.
172
+ 3. Update the gap's `root_cause` field in UAT.md:
173
+ ```yaml
174
+ root_cause: "{one-sentence hypothesis: what is missing or wrong and where}"
175
+ ```
176
+ 4. Optionally add:
177
+ ```yaml
178
+ artifacts: ["{file path}"]
179
+ missing: ["{what is absent}"]
180
+ ```
181
+
182
+ Do not attempt fixes during diagnosis — only gather evidence.
183
+
184
+ After all gaps are diagnosed, write UAT.md to disk with the updated root causes.
185
+ </diagnosis_protocol>
186
+
187
+ <complete_session>
188
+ **Finalize the UAT file:**
189
+
190
+ Update frontmatter:
191
+ ```yaml
192
+ status: complete
193
+ updated: {now}
194
+ ```
195
+
196
+ Clear the Current Test block:
197
+ ```
198
+ ## Current Test
199
+
200
+ [testing complete]
201
+ ```
202
+
203
+ Write final UAT.md to disk.
204
+
205
+ **If no issues found:**
206
+ ```
207
+ UAT complete — all {N} tests passed.
208
+
209
+ Next step: /gsdd-progress — route to next phase or milestone audit
210
+ ```
211
+
212
+ **If issues found:**
213
+
214
+ Present summary:
215
+ ```
216
+ UAT complete — Phase {N}
217
+
218
+ | Result | Count |
219
+ |---------|-------|
220
+ | Passed | {N} |
221
+ | Issues | {N} |
222
+ | Skipped | {N} |
223
+
224
+ Diagnosed {N} root cause(s). Ready to plan fixes.
225
+ ```
226
+
227
+ Then route to gap closure (see `<completion>`).
228
+ </complete_session>
229
+
230
+ <success_criteria>
231
+ - [ ] Phase SUMMARY files read before extracting tests
232
+ - [ ] UAT.md written to disk before the first test is presented
233
+ - [ ] Tests presented one at a time with specific expected behavior
234
+ - [ ] Severity inferred from description — never asked
235
+ - [ ] UAT.md updated after each issue (not batched to end)
236
+ - [ ] Inline diagnosis completed for each issue before routing to planning
237
+ - [ ] UAT.md finalized on disk with `status: complete`
238
+ </success_criteria>
239
+
240
+ <completion>
241
+ Report to the user what was tested, then present the next step:
242
+
243
+ ---
244
+ **Completed:** UAT — created `.planning/phases/{phase_dir}/{phase_num}-UAT.md`.
245
+
246
+ If no issues:
247
+ **Next step:** `/gsdd-progress` — route to next phase or milestone audit
248
+
249
+ If issues found:
250
+ **Next step:** `/gsdd-plan` — plan gap closure using the diagnosed root causes in UAT.md
251
+ - Open `.planning/phases/{phase_dir}/{phase_num}-UAT.md` for the plan context
252
+ - Use `--gaps` mode if your runtime supports it
253
+
254
+ Also available:
255
+ - `/gsdd-verify` — re-run formal phase verification after fixes are implemented
256
+ - `/gsdd-pause` — save context for later if stopping work
257
+
258
+ Consider clearing context before starting the next workflow for best results.
259
+ ---
260
+ </completion>