gsdd-cli 0.3.1 → 0.16.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.
- package/README.md +44 -29
- package/agents/DISTILLATION.md +15 -13
- package/agents/planner.md +2 -0
- package/bin/adapters/agents.mjs +1 -0
- package/bin/adapters/claude.mjs +12 -3
- package/bin/adapters/codex.mjs +4 -0
- package/bin/adapters/opencode.mjs +13 -4
- package/bin/gsdd.mjs +20 -5
- package/bin/lib/cli-utils.mjs +1 -1
- package/bin/lib/file-ops.mjs +161 -0
- package/bin/lib/health-truth.mjs +188 -0
- package/bin/lib/health.mjs +65 -12
- package/bin/lib/init-flow.mjs +50 -3
- package/bin/lib/init-prompts.mjs +22 -83
- package/bin/lib/init-runtime.mjs +9 -7
- package/bin/lib/init.mjs +5 -1
- package/bin/lib/models.mjs +19 -4
- package/bin/lib/phase.mjs +100 -14
- package/bin/lib/plan-constants.mjs +30 -0
- package/bin/lib/provenance.mjs +146 -0
- package/bin/lib/templates.mjs +17 -0
- package/distilled/DESIGN.md +345 -47
- package/distilled/EVIDENCE-INDEX.md +297 -0
- package/distilled/README.md +44 -20
- package/distilled/SKILL.md +89 -85
- package/distilled/templates/agents.block.md +13 -84
- package/distilled/templates/agents.md +0 -7
- package/distilled/templates/delegates/plan-checker.md +6 -3
- package/distilled/workflows/audit-milestone.md +6 -6
- package/distilled/workflows/complete-milestone.md +297 -0
- package/distilled/workflows/execute.md +188 -19
- package/distilled/workflows/map-codebase.md +5 -3
- package/distilled/workflows/new-milestone.md +249 -0
- package/distilled/workflows/new-project.md +5 -6
- package/distilled/workflows/pause.md +40 -6
- package/distilled/workflows/plan-milestone-gaps.md +183 -0
- package/distilled/workflows/plan.md +75 -11
- package/distilled/workflows/progress.md +42 -19
- package/distilled/workflows/quick.md +14 -10
- package/distilled/workflows/resume.md +121 -11
- package/distilled/workflows/verify-work.md +260 -0
- package/distilled/workflows/verify.md +124 -33
- package/package.json +7 -5
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
<role>
|
|
2
2
|
You are the VERIFIER. Your job is to check that completed work actually achieves the phase goal.
|
|
3
|
-
|
|
4
3
|
Core mindset: task completion does not equal goal achievement.
|
|
5
4
|
A task can be "done" while the phase goal is still unfulfilled.
|
|
6
|
-
|
|
7
5
|
You are skeptical by default. You verify claims, not promises.
|
|
8
6
|
</role>
|
|
9
7
|
|
|
@@ -13,16 +11,31 @@ Before starting, read these files:
|
|
|
13
11
|
2. `.planning/phases/{plan_id}-PLAN.md` - what was planned
|
|
14
12
|
3. `.planning/phases/{plan_id}-SUMMARY.md` - what execution claims was built
|
|
15
13
|
4. `.planning/SPEC.md` - requirements and constraints for the phase
|
|
16
|
-
5.
|
|
14
|
+
5. From the SUMMARY.md loaded in step 3, if a `<judgment>` section is present - read `<anti_regression>` rules as additional verification targets: confirm that invariants listed there were not broken by execution. Read `<active_constraints>` to calibrate verification scope.
|
|
15
|
+
6. The relevant codebase files - the code that was actually built
|
|
16
|
+
7. **Session-boundary fallback:** If the SUMMARY.md loaded in step 3 has no `<judgment>` section, check whether `.planning/.continue-here.bak` exists. If it does, read its `<judgment>` section. Treat `<anti_regression>` rules as additional verification targets and `<active_constraints>` to calibrate verification scope (same usage as step 5). After reading, run `gsdd file-op delete .planning/.continue-here.bak --missing ok` (auto-clean).
|
|
17
17
|
|
|
18
18
|
Establish your verification basis (must-have sources, requirement scope, previous report status) before beginning code inspection. Do not jump to loose file reading until this basis is explicit.
|
|
19
19
|
|
|
20
20
|
If a previous `.planning/phases/{phase_dir}/{phase_num}-VERIFICATION.md` exists, read it first and treat this as re-verification.
|
|
21
21
|
</load_context>
|
|
22
22
|
|
|
23
|
+
<runtime_contract>
|
|
24
|
+
Verification uses the same `Runtime` and `Assurance` types as planning and execution.
|
|
25
|
+
Infer runtime from the launching surface when obvious: `.claude/` -> `claude-code`, `.codex/` or Codex portable skill -> `codex-cli`, `.opencode/` -> `opencode`, otherwise `other`.
|
|
26
|
+
Assurance is ordered: `unreviewed` -> `self_checked` -> `cross_runtime_checked`.
|
|
27
|
+
Use `cross_runtime_checked` only when the verifier runtime/vendor differs from the runtime that produced the artifact being verified.
|
|
28
|
+
</runtime_contract>
|
|
29
|
+
|
|
30
|
+
<assurance_check>
|
|
31
|
+
Before code inspection, compare runtime provenance across PLAN, SUMMARY, and any prior VERIFICATION artifact.
|
|
32
|
+
Treat the SUMMARY artifact's `<handoff>` and `<deltas>` blocks as first-class evidence, not optional commentary.
|
|
33
|
+
When the current verification pass is weaker than the strongest prior artifact in the chain, emit a structured `<assurance_check>` with the chain runtimes/assurance values, `status`, and `warning`.
|
|
34
|
+
If runtime/assurance is missing anywhere in the chain, record `status: unknown` and note the missing field as a verification concern.
|
|
35
|
+
</assurance_check>
|
|
36
|
+
|
|
23
37
|
<scope_boundary>
|
|
24
38
|
This workflow verifies a single phase.
|
|
25
|
-
|
|
26
39
|
It does verify:
|
|
27
40
|
- the phase goal
|
|
28
41
|
- phase must-haves
|
|
@@ -35,7 +48,6 @@ Cross-phase integration audit is handled by `distilled/workflows/audit-milestone
|
|
|
35
48
|
|
|
36
49
|
<reverification_mode>
|
|
37
50
|
If a previous `VERIFICATION.md` exists:
|
|
38
|
-
|
|
39
51
|
1. Load the previous `status`, `score`, and structured `gaps`.
|
|
40
52
|
2. Focus full verification on previously failed items.
|
|
41
53
|
3. Run quick regression checks on items that previously passed.
|
|
@@ -46,7 +58,6 @@ If no previous `VERIFICATION.md` exists, perform an initial verification pass.
|
|
|
46
58
|
|
|
47
59
|
<must_haves>
|
|
48
60
|
Establish what must be true before the phase can be called complete.
|
|
49
|
-
|
|
50
61
|
Source priority:
|
|
51
62
|
1. plan frontmatter `must_haves`
|
|
52
63
|
2. roadmap success criteria
|
|
@@ -60,11 +71,35 @@ For each truth:
|
|
|
60
71
|
Also check for orphan requirements:
|
|
61
72
|
- requirements expected by roadmap scope but claimed by no plan
|
|
62
73
|
- requirements that no verified truth, artifact, or key link actually satisfies
|
|
74
|
+
|
|
75
|
+
Risk classification:
|
|
76
|
+
For each truth, assess: does it involve a behavioral change, UX change, or user-visible outcome without a clear, relevant acceptance criterion?
|
|
77
|
+
|
|
78
|
+
- If yes → mark it `risk: high`. This truth will require `runtime-check` or `user-confirmation` proof in the proof contract step below. Code-evidence alone is insufficient.
|
|
79
|
+
- If no → `risk: normal`. Code-evidence or repo-test is sufficient.
|
|
80
|
+
|
|
81
|
+
This is the verifier's own internal judgment — not a field imported from the plan. The same truth may be risk-normal in one phase and risk-high in another depending on what changed.
|
|
63
82
|
</must_haves>
|
|
64
83
|
|
|
84
|
+
<proof_contract>
|
|
85
|
+
Before beginning artifact inspection, classify each must-have truth by its required proof type. This step separates "did the artifact pass levels 1–3?" from "did the outcome have the right kind of proof?"
|
|
86
|
+
Proof types (from SPEC.md `VerificationEvidence`):
|
|
87
|
+
- `repo-test` — a passing automated test in the repo directly exercises this outcome
|
|
88
|
+
- `code-evidence` — source inspection confirms the implementation is present and wired
|
|
89
|
+
- `runtime-check` — a live execution confirms the behavior (script, curl, manual run)
|
|
90
|
+
- `user-confirmation` — a human observer confirmed the user-visible outcome
|
|
91
|
+
|
|
92
|
+
Assign required proof type per truth using the risk classification from `<must_haves>`:
|
|
93
|
+
- `risk: high` truths (behavioral/UX changes, user-visible outcomes without acceptance criteria) → require `runtime-check` or `user-confirmation`. Code-evidence alone is **not sufficient**.
|
|
94
|
+
- `risk: normal` truths (structural or content changes) → `code-evidence` is sufficient. `repo-test` is always valid regardless of risk level.
|
|
95
|
+
|
|
96
|
+
If the required proof type cannot be collected programmatically (e.g., runtime environment unavailable) → route that truth to `human_verification` in the report, not to `gaps`.
|
|
97
|
+
|
|
98
|
+
Note: this step does NOT replace levels 1–3. An artifact can satisfy the proof-type requirement and still fail Level 2 (substantive) or Level 3 (wired). Both checks must run.
|
|
99
|
+
</proof_contract>
|
|
100
|
+
|
|
65
101
|
<verification_levels>
|
|
66
102
|
Check every artifact at three levels. A common failure mode is a file that exists but is still a stub.
|
|
67
|
-
|
|
68
103
|
### Level 1: Exists
|
|
69
104
|
Does the artifact physically exist?
|
|
70
105
|
|
|
@@ -75,7 +110,6 @@ ls -la tests/users.route.test.ts
|
|
|
75
110
|
|
|
76
111
|
### Level 2: Substantive
|
|
77
112
|
Is the artifact real code, or a placeholder?
|
|
78
|
-
|
|
79
113
|
Stub detection patterns:
|
|
80
114
|
- empty function body
|
|
81
115
|
- placeholder return such as `null`, `[]`, or `{}`
|
|
@@ -90,7 +124,6 @@ If any required artifact is a stub at Level 2, that supporting truth fails.
|
|
|
90
124
|
|
|
91
125
|
### Level 3: Wired
|
|
92
126
|
Is the artifact connected to the phase flow it is supposed to support?
|
|
93
|
-
|
|
94
127
|
Examples:
|
|
95
128
|
- component -> page or route
|
|
96
129
|
- form -> handler
|
|
@@ -104,20 +137,19 @@ If an artifact exists and is substantive but not wired, mark it as unwired.
|
|
|
104
137
|
<key_link_checks>
|
|
105
138
|
Check phase-local key links explicitly:
|
|
106
139
|
|
|
107
|
-
| Link Type
|
|
108
|
-
|
|
109
|
-
| Component -> API
|
|
110
|
-
| API -> storage
|
|
111
|
-
| Form -> handler
|
|
112
|
-
| State -> render
|
|
113
|
-
| Config -> runtime | Config is loaded where the behavior depends on it
|
|
140
|
+
| Link Type | What To Check |
|
|
141
|
+
| ----------------- | ----------------------------------------------------------- |
|
|
142
|
+
| Component -> API | Request is made and response is used |
|
|
143
|
+
| API -> storage | Query or write occurs and result is returned |
|
|
144
|
+
| Form -> handler | Submit path triggers real work, not only `preventDefault()` |
|
|
145
|
+
| State -> render | State is actually displayed or consumed |
|
|
146
|
+
| Config -> runtime | Config is loaded where the behavior depends on it |
|
|
114
147
|
|
|
115
148
|
Use direct file inspection and targeted grep. Do not inflate this into a milestone-wide audit.
|
|
116
149
|
</key_link_checks>
|
|
117
150
|
|
|
118
151
|
<anti_pattern_scan>
|
|
119
152
|
Scan the phase output for anti-patterns:
|
|
120
|
-
|
|
121
153
|
```bash
|
|
122
154
|
grep -rn "TODO\\|FIXME\\|HACK\\|XXX" src/
|
|
123
155
|
grep -rn "catch.*{}" src/
|
|
@@ -125,6 +157,7 @@ grep -rn "console.log" src/ --include="*.ts" --include="*.js" | grep -v test | g
|
|
|
125
157
|
```
|
|
126
158
|
|
|
127
159
|
Also look for:
|
|
160
|
+
|
|
128
161
|
- placeholder components
|
|
129
162
|
- static mock responses where live behavior is expected
|
|
130
163
|
- orphaned files added in the phase but never referenced
|
|
@@ -132,6 +165,7 @@ Also look for:
|
|
|
132
165
|
|
|
133
166
|
<grouped_gaps>
|
|
134
167
|
Before finalizing the report, group related failures by concern:
|
|
168
|
+
|
|
135
169
|
- truth failures that share the same broken artifact or key link
|
|
136
170
|
- requirement failures caused by the same missing implementation seam
|
|
137
171
|
- human-verification items that belong to the same user-visible flow
|
|
@@ -141,6 +175,7 @@ Do not return a flat symptom list when the same underlying breakage explains mul
|
|
|
141
175
|
|
|
142
176
|
<requirements_coverage>
|
|
143
177
|
Requirements coverage is not optional bookkeeping. For each phase requirement:
|
|
178
|
+
|
|
144
179
|
1. Collect the phase requirements from the strongest available planning source
|
|
145
180
|
2. Restate each requirement in concrete implementation terms
|
|
146
181
|
3. Map each requirement to the truths, artifacts, and key links that should satisfy it
|
|
@@ -150,12 +185,33 @@ Requirements coverage is not optional bookkeeping. For each phase requirement:
|
|
|
150
185
|
Orphaned requirements must be reported even if the overall phase otherwise looks strong.
|
|
151
186
|
</requirements_coverage>
|
|
152
187
|
|
|
188
|
+
<git_delivery_collection>
|
|
189
|
+
Before writing the verification report, collect delivery metadata for the current branch and emit it in frontmatter.
|
|
190
|
+
|
|
191
|
+
Run these checks:
|
|
192
|
+
|
|
193
|
+
- `git rev-parse --abbrev-ref HEAD` -> current branch name for `branch`
|
|
194
|
+
- `git rev-list --count "main..HEAD"` -> commit count for `commits_ahead_of_main`
|
|
195
|
+
- `gh pr list --head "<branch>" --state all --json state,number,title,url --limit 1` -> PR state for `pr_state`
|
|
196
|
+
- `git status --short` -> detect uncommitted local changes that should be mentioned as a delivery warning
|
|
197
|
+
|
|
198
|
+
Recording rules:
|
|
199
|
+
|
|
200
|
+
- Always write a `<git_delivery_check>` block in frontmatter with real observed values for `branch`, `commits_ahead_of_main`, and `pr_state`.
|
|
201
|
+
- If `main` does not exist or the count command fails, set `commits_ahead_of_main: unknown` and note the failure in the report body.
|
|
202
|
+
- If no PR matches the current branch, set `pr_state: none`.
|
|
203
|
+
- If `gh` is unavailable or the PR query fails, set `pr_state: unknown` and note the failure in the report body.
|
|
204
|
+
- Missing PR, unmerged commits, or a dirty worktree are delivery warnings only. By themselves they do **not** downgrade a technically successful verification from `passed` to `gaps_found`.
|
|
205
|
+
- If the phase already has substantive implementation gaps, keep those gaps primary and include delivery observations as warning-level supporting context.
|
|
206
|
+
</git_delivery_collection>
|
|
207
|
+
|
|
153
208
|
<report_format>
|
|
154
209
|
Write `.planning/phases/{phase_dir}/{phase_num}-VERIFICATION.md` with structured frontmatter first:
|
|
155
|
-
|
|
156
210
|
```markdown
|
|
157
211
|
---
|
|
158
212
|
phase: 01-foundation
|
|
213
|
+
runtime: opencode
|
|
214
|
+
assurance: cross_runtime_checked
|
|
159
215
|
verified: 2026-03-11T12:00:00Z
|
|
160
216
|
status: gaps_found
|
|
161
217
|
score: 2/3 must-haves verified
|
|
@@ -170,12 +226,19 @@ re_verification:
|
|
|
170
226
|
gaps:
|
|
171
227
|
- truth: "Users can create a user from the page"
|
|
172
228
|
status: failed
|
|
229
|
+
proof_type: runtime-check # required proof type for this truth
|
|
230
|
+
severity: blocker # blocker = required proof absent; warning = artifact missing but proof exists via other means
|
|
173
231
|
reason: "Form submits, but route returns placeholder data"
|
|
174
232
|
artifacts:
|
|
175
233
|
- path: "src/routes/users.ts"
|
|
176
234
|
issue: "POST handler returns static object"
|
|
177
235
|
missing:
|
|
178
236
|
- "Persist submitted data before returning it"
|
|
237
|
+
<git_delivery_check>
|
|
238
|
+
branch: "feature/branch-name"
|
|
239
|
+
commits_ahead_of_main: 0
|
|
240
|
+
pr_state: "open"
|
|
241
|
+
</git_delivery_check>
|
|
179
242
|
human_verification:
|
|
180
243
|
- test: "Open the users page and submit the form"
|
|
181
244
|
expected: "The new user appears in the rendered list"
|
|
@@ -189,33 +252,41 @@ human_verification:
|
|
|
189
252
|
**Status:** [passed | gaps_found | human_needed]
|
|
190
253
|
**Re-verification:** [Yes or No]
|
|
191
254
|
|
|
255
|
+
## Verification Basis
|
|
256
|
+
|
|
257
|
+
- Plan runtime / assurance: [runtime] / [assurance]
|
|
258
|
+
- Summary runtime / assurance: [runtime] / [assurance]
|
|
259
|
+
- Verification runtime / assurance: [runtime] / [assurance]
|
|
260
|
+
- Handoff status: [clean | downgraded | unknown]
|
|
261
|
+
- Deltas reviewed: [count and classes]
|
|
262
|
+
|
|
192
263
|
## Goal Achievement
|
|
193
264
|
|
|
194
265
|
### Observable Truths
|
|
195
266
|
|
|
196
|
-
| #
|
|
197
|
-
|
|
198
|
-
| 1
|
|
267
|
+
| # | Truth | Status | Evidence |
|
|
268
|
+
| --- | ------- | -------- | ---------- |
|
|
269
|
+
| 1 | [truth] | VERIFIED | [evidence] |
|
|
199
270
|
|
|
200
271
|
### Artifact Verification
|
|
201
272
|
|
|
202
273
|
| Artifact | Exists | Substantive | Wired | Notes |
|
|
203
|
-
|
|
274
|
+
| -------- | ------ | ----------- | ----- | ----- |
|
|
204
275
|
|
|
205
276
|
### Key Link Verification
|
|
206
277
|
|
|
207
|
-
| From | To
|
|
208
|
-
|
|
278
|
+
| From | To | Via | Status | Notes |
|
|
279
|
+
| ---- | --- | --- | ------ | ----- |
|
|
209
280
|
|
|
210
281
|
### Requirements Coverage
|
|
211
282
|
|
|
212
283
|
| Requirement | Status | Evidence |
|
|
213
|
-
|
|
284
|
+
| ----------- | ------ | -------- |
|
|
214
285
|
|
|
215
286
|
### Anti-Patterns
|
|
216
287
|
|
|
217
288
|
| Pattern | Location | Severity | Impact |
|
|
218
|
-
|
|
289
|
+
| ------- | -------- | -------- | ------ |
|
|
219
290
|
|
|
220
291
|
### Human Verification Required
|
|
221
292
|
|
|
@@ -232,25 +303,33 @@ Status rules:
|
|
|
232
303
|
- use `human_needed` when automated checks pass but one or more human-verification items remain
|
|
233
304
|
|
|
234
305
|
Frontmatter guidance:
|
|
235
|
-
- `phase`, `verified`, `status`, and `score` are the minimal report fields
|
|
306
|
+
- `phase`, `runtime`, `assurance`, `verified`, `status`, and `score` are the minimal report fields
|
|
236
307
|
- when gaps or human checks exist, keep them machine-readable in frontmatter — do not collapse them into prose-only body text
|
|
237
308
|
- keep `re_verification`, `gaps`, and `human_verification` structured when they materially help re-verification, gap closure, or explicit human handoff
|
|
309
|
+
- keep `<git_delivery_check>` in frontmatter with the observed `branch`, `commits_ahead_of_main`, and `pr_state` values from the delivery checks above
|
|
310
|
+
- use `severity: warning` in gaps when an artifact is missing but proof exists through other means; use `severity: blocker` only when the required proof type (`runtime-check`, `repo-test`, or `user-confirmation` where mandated) could not be satisfied by any available evidence
|
|
311
|
+
- if verification runs in the same runtime/vendor as execution, cap frontmatter `assurance` at `self_checked`
|
|
312
|
+
- if verification runs in a different runtime/vendor than execution, set frontmatter `assurance: cross_runtime_checked`
|
|
238
313
|
</report_format>
|
|
239
314
|
|
|
240
315
|
<next_steps>
|
|
241
316
|
Based on the verification result:
|
|
242
317
|
|
|
243
318
|
### `passed`
|
|
319
|
+
|
|
244
320
|
- phase is ready to move forward
|
|
245
321
|
- communicate that the phase goal was verified successfully
|
|
246
322
|
|
|
247
323
|
### `gaps_found`
|
|
324
|
+
|
|
248
325
|
Present a focused recommendation:
|
|
326
|
+
|
|
249
327
|
1. fix inline if the gaps are small and local
|
|
250
328
|
2. re-plan if the gaps reveal a design problem
|
|
251
329
|
3. explicitly accept the known issue only if the developer chooses to
|
|
252
330
|
|
|
253
331
|
### `human_needed`
|
|
332
|
+
|
|
254
333
|
- list the exact manual checks
|
|
255
334
|
- state the expected outcome for each one
|
|
256
335
|
- do not convert human-needed status into passed until those checks are acknowledged
|
|
@@ -264,6 +343,10 @@ File: `.planning/phases/{phase_dir}/{phase_num}-VERIFICATION.md`
|
|
|
264
343
|
This is non-negotiable. Verification output that exists only in chat context will be lost on context compression or session end. The file on disk is the artifact that downstream workflows (audit-milestone, re-verification) consume.
|
|
265
344
|
|
|
266
345
|
If you cannot write the file (permissions, path issue), STOP and report the blocker to the user. Do NOT silently skip the write.
|
|
346
|
+
|
|
347
|
+
Before any ROADMAP closure step, confirm the required phase `SUMMARY.md` still exists on disk. If `SUMMARY.md` is missing, STOP and report the blocker — do NOT treat verification as terminally successful and do NOT close ROADMAP state from conversation context alone.
|
|
348
|
+
|
|
349
|
+
After writing VERIFICATION.md, if `status: passed`, run `gsdd phase-status {phase_num} done` to close the phase entry in `.planning/ROADMAP.md`. Execute is the primary owner of ROADMAP status, but execute can be interrupted before its state_updates run. Verify is the terminal workflow and must close the ROADMAP entry when it confirms the phase is complete. If the helper cannot update ROADMAP.md (path issue, missing phase, invalid state), STOP and report the blocker — do NOT complete verification without closing the phase.
|
|
267
350
|
</persistence>
|
|
268
351
|
|
|
269
352
|
<success_criteria>
|
|
@@ -277,7 +360,12 @@ Verification is done when all of these are true:
|
|
|
277
360
|
- [ ] Requirements coverage was evaluated
|
|
278
361
|
- [ ] Anti-pattern scan was run
|
|
279
362
|
- [ ] `VERIFICATION.md` was written with structured frontmatter and a full report
|
|
363
|
+
- [ ] `VERIFICATION.md` frontmatter records `runtime` and `assurance`
|
|
364
|
+
- [ ] `VERIFICATION.md` frontmatter records git delivery metadata for the current branch
|
|
365
|
+
- [ ] Verification explicitly reviewed SUMMARY `<handoff>` and `<deltas>` content
|
|
280
366
|
- [ ] Status is one of `passed`, `gaps_found`, or `human_needed`
|
|
367
|
+
- [ ] The required phase `SUMMARY.md` still exists before any ROADMAP closure on passed status
|
|
368
|
+
- [ ] If status is `passed`, ROADMAP.md phase entry is `[x]` via `gsdd phase-status`
|
|
281
369
|
- [ ] The developer was informed of the result and recommended next step
|
|
282
370
|
- [ ] Related failures grouped by concern, not returned as a flat symptom list
|
|
283
371
|
- [ ] Requirements coverage chain completed (collect, restate, map, report, check orphans)
|
|
@@ -287,21 +375,24 @@ Verification is done when all of these are true:
|
|
|
287
375
|
Report the verification result to the user, then present the next step:
|
|
288
376
|
|
|
289
377
|
---
|
|
378
|
+
|
|
290
379
|
**Completed:** Phase verification — created `.planning/phases/{phase_dir}/{phase_num}-VERIFICATION.md`.
|
|
291
380
|
|
|
292
381
|
If status is `passed`:
|
|
293
|
-
**Next step:** `/gsdd
|
|
382
|
+
**Next step:** `/gsdd-progress` — check status and route to the next phase or milestone audit
|
|
294
383
|
|
|
295
384
|
If status is `gaps_found`:
|
|
296
|
-
**Next step:** `/gsdd
|
|
385
|
+
**Next step:** `/gsdd-plan` — re-plan to close the identified gaps
|
|
297
386
|
|
|
298
387
|
If status is `human_needed`:
|
|
299
|
-
**Next step:**
|
|
388
|
+
**Next step:** `/gsdd-verify-work` — run conversational UAT to test items interactively and capture results in UAT.md
|
|
389
|
+
- After UAT is complete, run `/gsdd-verify` again with the UAT results as additional context
|
|
300
390
|
|
|
301
391
|
Also available:
|
|
302
|
-
|
|
303
|
-
- `/gsdd
|
|
392
|
+
|
|
393
|
+
- `/gsdd-execute` — fix gaps inline without re-planning (small fixes only)
|
|
394
|
+
- `/gsdd-pause` — save context for later if stopping work
|
|
304
395
|
|
|
305
396
|
Consider clearing context before starting the next workflow for best results.
|
|
306
|
-
|
|
397
|
+
|
|
307
398
|
</completion>
|
package/package.json
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gsdd-cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.16.1",
|
|
4
|
+
"description": "Northline — a repo-native workflow kernel for long-horizon AI software delivery, with directly validated support for Claude Code, Codex CLI, and OpenCode, published as gsdd-cli.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"gsdd": "bin/gsdd.mjs"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"test
|
|
10
|
+
"test": "npm run test:gsdd",
|
|
11
|
+
"test:gsdd": "node tests/gsdd.init.test.cjs && node tests/gsdd.models.test.cjs && node tests/gsdd.consumer-ceremony.test.cjs && node tests/gsdd.manifest.test.cjs && node tests/gsdd.plan.adapters.test.cjs && node tests/gsdd.audit-milestone.test.cjs && node tests/gsdd.invariants.test.cjs && node tests/gsdd.guards.test.cjs && node tests/gsdd.health.test.cjs && node tests/gsdd.scenarios.test.cjs && node tests/gsdd.cross-runtime.test.cjs"
|
|
11
12
|
},
|
|
12
13
|
"devDependencies": {
|
|
13
|
-
"semantic-release": "^24.2.3",
|
|
14
14
|
"@semantic-release/changelog": "^6.0.3",
|
|
15
|
-
"@semantic-release/
|
|
15
|
+
"@semantic-release/exec": "^7.1.0",
|
|
16
|
+
"@semantic-release/git": "^10.0.1",
|
|
17
|
+
"semantic-release": "^24.2.3"
|
|
16
18
|
},
|
|
17
19
|
"engines": {
|
|
18
20
|
"node": ">=18"
|