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,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>