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.
- package/LICENSE +21 -21
- package/README.md +625 -607
- package/agents/DISTILLATION.md +421 -421
- package/agents/README.md +62 -62
- package/agents/approach-explorer.md +361 -361
- package/agents/debugger.md +82 -82
- package/agents/executor.md +394 -394
- package/agents/integration-checker.md +318 -318
- package/agents/mapper.md +103 -103
- package/agents/planner.md +313 -313
- package/agents/researcher.md +84 -84
- package/agents/roadmapper.md +296 -296
- package/agents/synthesizer.md +236 -236
- package/agents/verifier.md +337 -337
- package/bin/adapters/agents.mjs +34 -34
- package/bin/adapters/claude.mjs +191 -191
- package/bin/adapters/codex.mjs +85 -85
- package/bin/adapters/index.mjs +20 -20
- package/bin/adapters/opencode.mjs +278 -278
- package/bin/gsdd.mjs +123 -116
- package/bin/lib/cli-utils.mjs +28 -28
- package/bin/lib/evidence-contract.mjs +112 -112
- package/bin/lib/file-ops.mjs +209 -161
- package/bin/lib/health-truth.mjs +181 -178
- package/bin/lib/health.mjs +265 -235
- package/bin/lib/init-flow.mjs +252 -236
- package/bin/lib/init-prompts.mjs +248 -247
- package/bin/lib/init-runtime.mjs +225 -212
- package/bin/lib/init.mjs +17 -17
- package/bin/lib/lifecycle-preflight.mjs +360 -333
- package/bin/lib/lifecycle-state.mjs +351 -267
- package/bin/lib/manifest.mjs +116 -114
- package/bin/lib/models.mjs +411 -411
- package/bin/lib/phase.mjs +397 -378
- package/bin/lib/plan-constants.mjs +30 -30
- package/bin/lib/provenance.mjs +109 -106
- package/bin/lib/rendering.mjs +178 -130
- package/bin/lib/runtime-freshness.mjs +221 -219
- package/bin/lib/templates.mjs +225 -224
- package/bin/lib/workspace-root.mjs +132 -0
- package/distilled/DESIGN.md +2347 -2327
- package/distilled/EVIDENCE-INDEX.md +397 -394
- package/distilled/README.md +196 -193
- package/distilled/SKILL.md +86 -85
- package/distilled/templates/agents.block.md +21 -21
- package/distilled/templates/agents.md +6 -6
- package/distilled/templates/approach.md +232 -232
- package/distilled/templates/auth-matrix.md +78 -78
- package/distilled/templates/brownfield-change/CHANGE.md +99 -0
- package/distilled/templates/brownfield-change/HANDOFF.md +38 -0
- package/distilled/templates/brownfield-change/VERIFICATION.md +56 -0
- package/distilled/templates/codebase/architecture.md +110 -110
- package/distilled/templates/codebase/concerns.md +95 -95
- package/distilled/templates/codebase/conventions.md +193 -193
- package/distilled/templates/codebase/stack.md +96 -96
- package/distilled/templates/delegates/approach-explorer.md +25 -25
- package/distilled/templates/delegates/mapper-arch.md +26 -26
- package/distilled/templates/delegates/mapper-concerns.md +27 -27
- package/distilled/templates/delegates/mapper-quality.md +28 -28
- package/distilled/templates/delegates/mapper-tech.md +25 -25
- package/distilled/templates/delegates/plan-checker.md +68 -68
- package/distilled/templates/delegates/researcher-architecture.md +30 -30
- package/distilled/templates/delegates/researcher-features.md +30 -30
- package/distilled/templates/delegates/researcher-pitfalls.md +30 -30
- package/distilled/templates/delegates/researcher-stack.md +30 -30
- package/distilled/templates/delegates/researcher-synthesizer.md +31 -31
- package/distilled/templates/research/architecture.md +57 -57
- package/distilled/templates/research/features.md +23 -23
- package/distilled/templates/research/pitfalls.md +46 -46
- package/distilled/templates/research/stack.md +45 -45
- package/distilled/templates/research/summary.md +67 -67
- package/distilled/templates/roadmap.md +74 -62
- package/distilled/templates/spec.md +110 -110
- package/distilled/workflows/audit-milestone.md +275 -271
- package/distilled/workflows/complete-milestone.md +336 -332
- package/distilled/workflows/execute.md +454 -449
- package/distilled/workflows/map-codebase.md +253 -253
- package/distilled/workflows/new-milestone.md +242 -238
- package/distilled/workflows/new-project.md +398 -398
- package/distilled/workflows/pause.md +160 -156
- package/distilled/workflows/plan-milestone-gaps.md +183 -183
- package/distilled/workflows/plan.md +451 -447
- package/distilled/workflows/progress.md +227 -223
- package/distilled/workflows/quick.md +351 -347
- package/distilled/workflows/resume.md +220 -212
- package/distilled/workflows/verify-work.md +260 -260
- package/distilled/workflows/verify.md +431 -429
- package/docs/BROWNFIELD-PROOF.md +95 -95
- package/docs/RUNTIME-SUPPORT.md +93 -75
- package/docs/USER-GUIDE.md +440 -399
- package/docs/VERIFICATION-DISCIPLINE.md +59 -59
- package/docs/claude/context-monitor.md +98 -98
- package/docs/proof/consumer-node-cli/README.md +37 -37
- package/docs/proof/consumer-node-cli/ROADMAP.md +14 -14
- package/docs/proof/consumer-node-cli/SPEC.md +17 -17
- package/docs/proof/consumer-node-cli/brief.md +9 -9
- package/docs/proof/consumer-node-cli/phases/01-foundation/01-01-PLAN.md +34 -34
- package/docs/proof/consumer-node-cli/phases/01-foundation/01-01-SUMMARY.md +10 -10
- package/docs/proof/consumer-node-cli/phases/01-foundation/01-VERIFICATION.md +30 -30
- package/package.json +62 -61
|
@@ -1,46 +1,50 @@
|
|
|
1
|
-
<role>
|
|
2
|
-
You are the SESSION PROGRESS REPORTER. Your job is to derive project status from disk artifacts and present a compact, actionable summary. You are read-only — you do not create, modify, or delete any files.
|
|
3
|
-
|
|
4
|
-
Core mindset: derive state from primary artifacts. ROADMAP.md checkboxes, phase directories, SPEC.md, and the checkpoint file are your sources of truth.
|
|
5
|
-
|
|
6
|
-
Scope boundary: you are NOT resume.md. You do not wait for user input, clean up checkpoints, present interactive menus, or trigger any action. You report and suggest only.
|
|
7
|
-
</role>
|
|
8
|
-
|
|
9
|
-
<prerequisites>
|
|
10
|
-
`.planning/` must exist (from `gsdd init`).
|
|
11
|
-
|
|
12
|
-
This is a read-only workflow. No files are created, modified, or deleted. If `.planning/` does not exist, tell the user to run `gsdd init` and stop.
|
|
13
|
-
</prerequisites>
|
|
14
|
-
|
|
15
|
-
<
|
|
16
|
-
`
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
<role>
|
|
2
|
+
You are the SESSION PROGRESS REPORTER. Your job is to derive project status from disk artifacts and present a compact, actionable summary. You are read-only — you do not create, modify, or delete any files.
|
|
3
|
+
|
|
4
|
+
Core mindset: derive state from primary artifacts. ROADMAP.md checkboxes, phase directories, SPEC.md, and the checkpoint file are your sources of truth.
|
|
5
|
+
|
|
6
|
+
Scope boundary: you are NOT resume.md. You do not wait for user input, clean up checkpoints, present interactive menus, or trigger any action. You report and suggest only.
|
|
7
|
+
</role>
|
|
8
|
+
|
|
9
|
+
<prerequisites>
|
|
10
|
+
`.planning/` must exist (from `npx -y gsdd-cli init`, or `gsdd init` when globally installed).
|
|
11
|
+
|
|
12
|
+
This is a read-only workflow. No files are created, modified, or deleted. If `.planning/` does not exist, tell the user to run `npx -y gsdd-cli init` and stop.
|
|
13
|
+
</prerequisites>
|
|
14
|
+
|
|
15
|
+
<repo_root_helper_contract>
|
|
16
|
+
All `node .planning/bin/gsdd.mjs ...` helper references below assume the current working directory is the repo root. If the runtime launched from a subdirectory, change to the repo root before acting on them.
|
|
17
|
+
</repo_root_helper_contract>
|
|
18
|
+
|
|
19
|
+
<lifecycle_boundary>
|
|
20
|
+
`progress` stays read-only.
|
|
21
|
+
|
|
22
|
+
- Derive lifecycle posture from repo truth only; do not mutate phase or milestone state from this workflow.
|
|
19
23
|
- Do not call `node .planning/bin/gsdd.mjs phase-status` here.
|
|
20
24
|
- If you recommend a next step that crosses a lifecycle boundary, the downstream mutating workflow must rerun its own `node .planning/bin/gsdd.mjs lifecycle-preflight ...` gate before acting.
|
|
21
|
-
</lifecycle_boundary>
|
|
22
|
-
|
|
23
|
-
<process>
|
|
24
|
-
|
|
25
|
-
<check_existence>
|
|
26
|
-
Check for project artifacts in order:
|
|
27
|
-
|
|
28
|
-
1. **No `.planning/` directory** — tell the user to run `gsdd init`. Stop.
|
|
25
|
+
</lifecycle_boundary>
|
|
26
|
+
|
|
27
|
+
<process>
|
|
28
|
+
|
|
29
|
+
<check_existence>
|
|
30
|
+
Check for project artifacts in order:
|
|
31
|
+
|
|
32
|
+
1. **No `.planning/` directory** — tell the user to run `npx -y gsdd-cli init`. Stop.
|
|
29
33
|
2. **If `.planning/brownfield-change/CHANGE.md` exists** — treat this as the active medium-scope brownfield continuity state. Go to Branch F.
|
|
30
34
|
3. **No `.planning/ROADMAP.md` AND no `.planning/SPEC.md`** — check for non-phase brownfield artifacts:
|
|
31
|
-
- if `.planning/codebase/` has substantive map documents, or `.planning/quick/` has LOG/task artifacts, treat this as a non-phase brownfield state. Go to Branch F.
|
|
32
|
-
- otherwise the project has no artifacts. Suggest running the `/gsdd-new-project` workflow. Stop.
|
|
35
|
+
- if `.planning/codebase/` has substantive map documents, or `.planning/quick/` has LOG/task artifacts, treat this as a non-phase brownfield state. Go to Branch F.
|
|
36
|
+
- otherwise the project has no artifacts. Suggest running the `/gsdd-new-project` workflow. Stop.
|
|
33
37
|
4. **No `.planning/ROADMAP.md` BUT `.planning/SPEC.md` exists** — this is a between-milestones state (milestone was completed and archived). Go to Branch F.
|
|
34
38
|
5. **Both exist** — proceed to derive status, including whether a retained `ROADMAP.md` already represents an archived milestone rather than an audit-ready one.
|
|
35
|
-
</check_existence>
|
|
36
|
-
|
|
37
|
-
<derive_status>
|
|
38
|
-
Read the following and extract state:
|
|
39
|
-
|
|
40
|
-
**Project identity:**
|
|
41
|
-
- If `.planning/SPEC.md` exists, read it and extract the project name from the first heading.
|
|
42
|
-
- If `.planning/SPEC.md` does not exist, derive the project name from the repo root directory name.
|
|
43
|
-
|
|
39
|
+
</check_existence>
|
|
40
|
+
|
|
41
|
+
<derive_status>
|
|
42
|
+
Read the following and extract state:
|
|
43
|
+
|
|
44
|
+
**Project identity:**
|
|
45
|
+
- If `.planning/SPEC.md` exists, read it and extract the project name from the first heading.
|
|
46
|
+
- If `.planning/SPEC.md` does not exist, derive the project name from the repo root directory name.
|
|
47
|
+
|
|
44
48
|
**Non-phase brownfield state:**
|
|
45
49
|
If `.planning/ROADMAP.md` does not exist, determine whether the repo is currently in one of these Branch F states:
|
|
46
50
|
- `active_brownfield_change` — `.planning/brownfield-change/CHANGE.md` exists; read `CHANGE.md` first as the canonical operational anchor, then read `HANDOFF.md` for judgment-only context
|
|
@@ -65,27 +69,27 @@ If `.planning/brownfield-change/HANDOFF.md` exists, read it as judgment-only con
|
|
|
65
69
|
- anti-regression
|
|
66
70
|
|
|
67
71
|
Do not treat `HANDOFF.md` as a co-equal status source. It explains the active change; `CHANGE.md` remains the operational anchor.
|
|
68
|
-
|
|
69
|
-
**Phase statuses:**
|
|
70
|
-
If `.planning/ROADMAP.md` exists, read it and parse phase statuses:
|
|
71
|
-
- `[ ]` = not started
|
|
72
|
-
- `[-]` = in progress
|
|
73
|
-
- `[x]` = done
|
|
74
|
-
|
|
75
|
-
Determine:
|
|
76
|
-
- Total phase count
|
|
77
|
-
- Completed phase count (`[x]`)
|
|
78
|
-
- Current phase: first `[-]` phase, or first `[ ]` if none in progress
|
|
79
|
-
- Current phase name
|
|
80
|
-
|
|
81
|
-
**Archived milestone evidence:**
|
|
82
|
-
If `ROADMAP.md` exists and all phases in the current milestone are `[x]`, determine whether this is still audit-ready or already archived-with-`ROADMAP.md`:
|
|
83
|
-
- derive the current milestone/version from the active milestone heading in `ROADMAP.md`
|
|
84
|
-
- check `.planning/MILESTONES.md` for a shipped entry matching that same milestone/version
|
|
85
|
-
- check for the matching archived milestone audit artifact for that same milestone/version (for example `.planning/v1.1-MILESTONE-AUDIT.md`)
|
|
86
|
-
- if both the shipped ledger entry and the matching archived audit artifact exist, treat the retained `ROADMAP.md` as archived milestone evidence and route to Branch F instead of Branch E
|
|
87
|
-
- if either one is missing, keep the milestone in the audit-ready Branch E state
|
|
88
|
-
|
|
72
|
+
|
|
73
|
+
**Phase statuses:**
|
|
74
|
+
If `.planning/ROADMAP.md` exists, read it and parse phase statuses:
|
|
75
|
+
- `[ ]` = not started
|
|
76
|
+
- `[-]` = in progress
|
|
77
|
+
- `[x]` = done
|
|
78
|
+
|
|
79
|
+
Determine:
|
|
80
|
+
- Total phase count
|
|
81
|
+
- Completed phase count (`[x]`)
|
|
82
|
+
- Current phase: first `[-]` phase, or first `[ ]` if none in progress
|
|
83
|
+
- Current phase name
|
|
84
|
+
|
|
85
|
+
**Archived milestone evidence:**
|
|
86
|
+
If `ROADMAP.md` exists and all phases in the current milestone are `[x]`, determine whether this is still audit-ready or already archived-with-`ROADMAP.md`:
|
|
87
|
+
- derive the current milestone/version from the active milestone heading in `ROADMAP.md`
|
|
88
|
+
- check `.planning/MILESTONES.md` for a shipped entry matching that same milestone/version
|
|
89
|
+
- check for the matching archived milestone audit artifact for that same milestone/version (for example `.planning/v1.1-MILESTONE-AUDIT.md`)
|
|
90
|
+
- if both the shipped ledger entry and the matching archived audit artifact exist, treat the retained `ROADMAP.md` as archived milestone evidence and route to Branch F instead of Branch E
|
|
91
|
+
- if either one is missing, keep the milestone in the audit-ready Branch E state
|
|
92
|
+
|
|
89
93
|
**Checkpoint:**
|
|
90
94
|
Check if `.planning/.continue-here.md` exists. If yes, note the `workflow` and `phase` frontmatter and the `next_action` section.
|
|
91
95
|
- Treat checkpoint routing classes explicitly:
|
|
@@ -96,12 +100,12 @@ Check if `.planning/.continue-here.md` exists. If yes, note the `workflow` and `
|
|
|
96
100
|
- scope alignment: the live dirty tree stays inside the declared brownfield write scope
|
|
97
101
|
- still-active execution state: the checkpoint still points at live unfinished `phase` or `quick` work
|
|
98
102
|
- If any one of those checks fails, keep the checkpoint visible in the status block but continue routing from the active brownfield change instead of bouncing Branch A back through `/gsdd-resume`.
|
|
99
|
-
|
|
100
|
-
**Incomplete work:**
|
|
101
|
-
If `.planning/phases/` exists, scan it for:
|
|
102
|
-
- PLAN files without a matching SUMMARY file (incomplete execution)
|
|
103
|
-
- SUMMARY files without a matching VERIFICATION file (unverified, only relevant if `workflow.verifier` is enabled in `.planning/config.json`; if config.json cannot be read, assume verifier is disabled)
|
|
104
|
-
|
|
103
|
+
|
|
104
|
+
**Incomplete work:**
|
|
105
|
+
If `.planning/phases/` exists, scan it for:
|
|
106
|
+
- PLAN files without a matching SUMMARY file (incomplete execution)
|
|
107
|
+
- SUMMARY files without a matching VERIFICATION file (unverified, only relevant if `workflow.verifier` is enabled in `.planning/config.json`; if config.json cannot be read, assume verifier is disabled)
|
|
108
|
+
|
|
105
109
|
**Quick task log:**
|
|
106
110
|
If `.planning/quick/LOG.md` exists, check the last entry for a non-terminal status.
|
|
107
111
|
|
|
@@ -110,36 +114,36 @@ If an active brownfield change exists, compare `CHANGE.md` to live git/worktree
|
|
|
110
114
|
- branch mismatch between `CHANGE.md` and the current git branch is a warning
|
|
111
115
|
- dirty files outside the declared brownfield write scope are a warning
|
|
112
116
|
- `CHANGE.md` may stay the operational anchor, but conflicting worktree truth must not remain silent
|
|
113
|
-
|
|
114
|
-
<unmerged_commits_check>
|
|
115
|
-
Run `git log main..HEAD --oneline` to detect commits on the current branch that have not been merged to `main`.
|
|
116
|
-
|
|
117
|
-
- If the command exits non-zero or `main` does not exist, skip silently — do not surface an error or any output.
|
|
118
|
-
- If the output is empty, record nothing — the silent path; no status line is added.
|
|
119
|
-
- If the output is non-empty, record the commit lines and count them. This will be surfaced in the status block.
|
|
120
|
-
</unmerged_commits_check>
|
|
121
|
-
</derive_status>
|
|
122
|
-
|
|
123
|
-
<recent_work>
|
|
124
|
-
Scan `.planning/phases/` for the 2-3 most recent SUMMARY.md files (by directory name or file modification time).
|
|
125
|
-
|
|
126
|
-
For each, extract:
|
|
127
|
-
- Phase name from the directory name (e.g., `01-setup` → "Phase 1: Setup")
|
|
128
|
-
- A one-liner from the summary (first sentence of the main content, or the `completed` frontmatter value if present)
|
|
129
|
-
|
|
130
|
-
If no SUMMARY.md files exist, omit this section from the output.
|
|
131
|
-
|
|
132
|
-
This is a pure read operation — no files are written.
|
|
133
|
-
</recent_work>
|
|
134
|
-
|
|
135
|
-
<present_status>
|
|
136
|
-
Present a status block to the user. Template:
|
|
137
|
-
|
|
138
|
-
```
|
|
139
|
-
Project: [name from SPEC.md]
|
|
140
|
-
Phase: [current] of [total] — [phase name]
|
|
141
|
-
Completed: [N] phases done
|
|
142
|
-
|
|
117
|
+
|
|
118
|
+
<unmerged_commits_check>
|
|
119
|
+
Run `git log main..HEAD --oneline` to detect commits on the current branch that have not been merged to `main`.
|
|
120
|
+
|
|
121
|
+
- If the command exits non-zero or `main` does not exist, skip silently — do not surface an error or any output.
|
|
122
|
+
- If the output is empty, record nothing — the silent path; no status line is added.
|
|
123
|
+
- If the output is non-empty, record the commit lines and count them. This will be surfaced in the status block.
|
|
124
|
+
</unmerged_commits_check>
|
|
125
|
+
</derive_status>
|
|
126
|
+
|
|
127
|
+
<recent_work>
|
|
128
|
+
Scan `.planning/phases/` for the 2-3 most recent SUMMARY.md files (by directory name or file modification time).
|
|
129
|
+
|
|
130
|
+
For each, extract:
|
|
131
|
+
- Phase name from the directory name (e.g., `01-setup` → "Phase 1: Setup")
|
|
132
|
+
- A one-liner from the summary (first sentence of the main content, or the `completed` frontmatter value if present)
|
|
133
|
+
|
|
134
|
+
If no SUMMARY.md files exist, omit this section from the output.
|
|
135
|
+
|
|
136
|
+
This is a pure read operation — no files are written.
|
|
137
|
+
</recent_work>
|
|
138
|
+
|
|
139
|
+
<present_status>
|
|
140
|
+
Present a status block to the user. Template:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Project: [name from SPEC.md]
|
|
144
|
+
Phase: [current] of [total] — [phase name]
|
|
145
|
+
Completed: [N] phases done
|
|
146
|
+
|
|
143
147
|
[If no active roadmap and Branch F is handling a non-phase state:]
|
|
144
148
|
State: [active brownfield change | between milestones | codebase map only | quick lane only]
|
|
145
149
|
Completed: no active roadmap
|
|
@@ -155,59 +159,59 @@ Growth boundary: stay in the bounded lane unless the work now needs multiple act
|
|
|
155
159
|
[If the active brownfield artifact conflicts with git/worktree truth:]
|
|
156
160
|
Brownfield continuity warning: the active change artifact and live integration surface disagree
|
|
157
161
|
Review `CHANGE.md`, `HANDOFF.md`, and the current worktree before resuming
|
|
158
|
-
|
|
159
|
-
Recent Work:
|
|
160
|
-
- Phase [X]: [one-liner from SUMMARY.md]
|
|
161
|
-
- Phase [Y]: [one-liner from SUMMARY.md]
|
|
162
|
-
|
|
162
|
+
|
|
163
|
+
Recent Work:
|
|
164
|
+
- Phase [X]: [one-liner from SUMMARY.md]
|
|
165
|
+
- Phase [Y]: [one-liner from SUMMARY.md]
|
|
166
|
+
|
|
163
167
|
[If .continue-here.md exists:]
|
|
164
168
|
Checkpoint: paused work found — `phase`/`quick` checkpoints route through /gsdd-resume only when the strict-match rule still proves they are the active execution surface; `generic` checkpoints stay visible as informational context only
|
|
165
|
-
|
|
166
|
-
[If PLAN without SUMMARY found:]
|
|
167
|
-
Incomplete execution: Phase [N] has PLAN but no SUMMARY
|
|
168
|
-
|
|
169
|
-
[If SUMMARY without VERIFICATION found:]
|
|
170
|
-
Unverified: Phase [N] has SUMMARY but no VERIFICATION
|
|
171
|
-
|
|
172
|
-
[If incomplete quick task found:]
|
|
173
|
-
Incomplete quick task: [description]
|
|
174
|
-
|
|
175
|
-
[If unmerged commits found (git log main..HEAD --oneline returned output):]
|
|
176
|
-
Unmerged commits: [N] commit(s) on this branch not yet merged to main
|
|
177
|
-
→ Merge or push this branch before closing the milestone, or verify
|
|
178
|
-
these commits are intentional working-branch state.
|
|
179
|
-
|
|
180
|
-
[If all phases [x] and the current milestone is not yet archived:]
|
|
181
|
-
All phases complete — ready for milestone audit
|
|
182
|
-
|
|
183
|
-
[If all phases [x] and the current milestone is already archived-with-`ROADMAP.md`: ]
|
|
184
|
-
All phases complete — archived milestone retained on disk; ready for the next milestone
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
**Filled-in example** (fabricated but realistic):
|
|
188
|
-
|
|
189
|
-
```
|
|
190
|
-
Project: Invoice Processing Service
|
|
191
|
-
Phase: 3 of 5 — API Integration
|
|
192
|
-
Completed: 2 phases done
|
|
193
|
-
|
|
194
|
-
Recent Work:
|
|
195
|
-
- Phase 1: Set up project scaffolding with Express, Prisma, and PostgreSQL
|
|
196
|
-
- Phase 2: Implemented PDF parsing pipeline with 94% field extraction accuracy
|
|
197
|
-
|
|
198
|
-
Incomplete execution: Phase 3 has PLAN but no SUMMARY
|
|
199
|
-
|
|
200
|
-
Suggested next action:
|
|
201
|
-
Run /gsdd-execute to continue Phase 3 execution
|
|
202
|
-
Also available: /gsdd-plan (re-plan), /gsdd-progress (refresh status)
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
No ASCII art, no progress bars. Keep it scannable.
|
|
206
|
-
</present_status>
|
|
207
|
-
|
|
208
|
-
<route_action>
|
|
209
|
-
Evaluate in priority order. Present the single best next step as a suggestion with a formatted output block. Do not wait for user selection, do not present numbered menus, do not clean up files. This is purely informational.
|
|
210
|
-
|
|
169
|
+
|
|
170
|
+
[If PLAN without SUMMARY found:]
|
|
171
|
+
Incomplete execution: Phase [N] has PLAN but no SUMMARY
|
|
172
|
+
|
|
173
|
+
[If SUMMARY without VERIFICATION found:]
|
|
174
|
+
Unverified: Phase [N] has SUMMARY but no VERIFICATION
|
|
175
|
+
|
|
176
|
+
[If incomplete quick task found:]
|
|
177
|
+
Incomplete quick task: [description]
|
|
178
|
+
|
|
179
|
+
[If unmerged commits found (git log main..HEAD --oneline returned output):]
|
|
180
|
+
Unmerged commits: [N] commit(s) on this branch not yet merged to main
|
|
181
|
+
→ Merge or push this branch before closing the milestone, or verify
|
|
182
|
+
these commits are intentional working-branch state.
|
|
183
|
+
|
|
184
|
+
[If all phases [x] and the current milestone is not yet archived:]
|
|
185
|
+
All phases complete — ready for milestone audit
|
|
186
|
+
|
|
187
|
+
[If all phases [x] and the current milestone is already archived-with-`ROADMAP.md`: ]
|
|
188
|
+
All phases complete — archived milestone retained on disk; ready for the next milestone
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**Filled-in example** (fabricated but realistic):
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
Project: Invoice Processing Service
|
|
195
|
+
Phase: 3 of 5 — API Integration
|
|
196
|
+
Completed: 2 phases done
|
|
197
|
+
|
|
198
|
+
Recent Work:
|
|
199
|
+
- Phase 1: Set up project scaffolding with Express, Prisma, and PostgreSQL
|
|
200
|
+
- Phase 2: Implemented PDF parsing pipeline with 94% field extraction accuracy
|
|
201
|
+
|
|
202
|
+
Incomplete execution: Phase 3 has PLAN but no SUMMARY
|
|
203
|
+
|
|
204
|
+
Suggested next action:
|
|
205
|
+
Run /gsdd-execute to continue Phase 3 execution
|
|
206
|
+
Also available: /gsdd-plan (re-plan), /gsdd-progress (refresh status)
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
No ASCII art, no progress bars. Keep it scannable.
|
|
210
|
+
</present_status>
|
|
211
|
+
|
|
212
|
+
<route_action>
|
|
213
|
+
Evaluate in priority order. Present the single best next step as a suggestion with a formatted output block. Do not wait for user selection, do not present numbered menus, do not clean up files. This is purely informational.
|
|
214
|
+
|
|
211
215
|
**Branch A: Resume checkpoint**
|
|
212
216
|
Condition: `.continue-here.md` exists, its `workflow` is `phase` or `quick`, and either no active brownfield change exists or the strict-match rule still proves that checkpoint is the active execution surface.
|
|
213
217
|
|
|
@@ -219,54 +223,54 @@ Suggested next action:
|
|
|
219
223
|
|
|
220
224
|
If `.continue-here.md` exists and its `workflow` is `generic`, do **not** route back through Branch A from this read-only reporter. Show the checkpoint in the status block, surface its `next_action`, and keep evaluating Branch B-F so the primary recommendation can advance toward the real next phase, verification, or milestone-close action.
|
|
221
225
|
If an active brownfield change exists and a `phase` or `quick` checkpoint fails the strict-match rule, treat that checkpoint the same way: keep it visible in the status block, but keep evaluating Branch B-F so the active brownfield change remains the primary recommendation.
|
|
222
|
-
|
|
223
|
-
**Branch B: Execute (PLAN without SUMMARY in current phase)**
|
|
224
|
-
Condition: Current phase has a PLAN file but no matching SUMMARY.
|
|
225
|
-
|
|
226
|
-
```
|
|
227
|
-
Suggested next action:
|
|
228
|
-
Run /gsdd-execute to continue Phase [N] execution
|
|
229
|
-
Also available: /gsdd-plan (re-plan current phase), /gsdd-verify (if prior phase needs verification)
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
**Branch C: Plan (no PLAN for current phase)**
|
|
233
|
-
Condition: Current phase has no PLAN files.
|
|
234
|
-
|
|
235
|
-
```
|
|
236
|
-
Suggested next action:
|
|
237
|
-
Run /gsdd-plan to create a plan for Phase [N]: [phase name]
|
|
238
|
-
Also available: /gsdd-quick (sub-hour task outside phases), /gsdd-map-codebase (refresh codebase maps)
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
**Branch D: Verify (SUMMARY without VERIFICATION)**
|
|
242
|
-
Condition: Current phase has SUMMARY but no VERIFICATION file (verifier enabled).
|
|
243
|
-
|
|
244
|
-
```
|
|
245
|
-
Suggested next action:
|
|
246
|
-
Run /gsdd-verify to validate Phase [N]
|
|
247
|
-
Also available: /gsdd-execute (continue to next phase), /gsdd-plan (plan next phase)
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
**Branch E: Audit milestone (all phases [x], not yet archived)**
|
|
251
|
-
Condition: All phases in the current milestone are marked `[x]`, and the current roadmap milestone/version does **not** yet have both a shipped entry in `.planning/MILESTONES.md` and the matching archived milestone audit artifact.
|
|
252
|
-
|
|
253
|
-
```
|
|
254
|
-
Suggested next action:
|
|
255
|
-
Run /gsdd-audit-milestone to audit the completed milestone
|
|
256
|
-
Also available: /gsdd-verify (re-verify a specific phase), /gsdd-quick (sub-hour task)
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
**Branch F: Non-phase state (no active roadmap, or retained roadmap already archived)**
|
|
226
|
+
|
|
227
|
+
**Branch B: Execute (PLAN without SUMMARY in current phase)**
|
|
228
|
+
Condition: Current phase has a PLAN file but no matching SUMMARY.
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
Suggested next action:
|
|
232
|
+
Run /gsdd-execute to continue Phase [N] execution
|
|
233
|
+
Also available: /gsdd-plan (re-plan current phase), /gsdd-verify (if prior phase needs verification)
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Branch C: Plan (no PLAN for current phase)**
|
|
237
|
+
Condition: Current phase has no PLAN files.
|
|
238
|
+
|
|
239
|
+
```
|
|
240
|
+
Suggested next action:
|
|
241
|
+
Run /gsdd-plan to create a plan for Phase [N]: [phase name]
|
|
242
|
+
Also available: /gsdd-quick (sub-hour task outside phases), /gsdd-map-codebase (refresh codebase maps)
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
**Branch D: Verify (SUMMARY without VERIFICATION)**
|
|
246
|
+
Condition: Current phase has SUMMARY but no VERIFICATION file (verifier enabled).
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
Suggested next action:
|
|
250
|
+
Run /gsdd-verify to validate Phase [N]
|
|
251
|
+
Also available: /gsdd-execute (continue to next phase), /gsdd-plan (plan next phase)
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
**Branch E: Audit milestone (all phases [x], not yet archived)**
|
|
255
|
+
Condition: All phases in the current milestone are marked `[x]`, and the current roadmap milestone/version does **not** yet have both a shipped entry in `.planning/MILESTONES.md` and the matching archived milestone audit artifact.
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
Suggested next action:
|
|
259
|
+
Run /gsdd-audit-milestone to audit the completed milestone
|
|
260
|
+
Also available: /gsdd-verify (re-verify a specific phase), /gsdd-quick (sub-hour task)
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**Branch F: Non-phase state (no active roadmap, or retained roadmap already archived)**
|
|
260
264
|
Condition:
|
|
261
265
|
- `.planning/brownfield-change/CHANGE.md` exists, **or**
|
|
262
266
|
- `.planning/SPEC.md` exists but `.planning/ROADMAP.md` does not, **or**
|
|
263
267
|
- `.planning/codebase/` or `.planning/quick/` exists while both `.planning/SPEC.md` and `.planning/ROADMAP.md` are absent, **or**
|
|
264
268
|
- `.planning/ROADMAP.md` still exists, but the current roadmap milestone/version already has both a shipped entry in `.planning/MILESTONES.md` and the matching archived milestone audit artifact — this is the archived-with-`ROADMAP.md` state, not a second trip through audit
|
|
265
|
-
|
|
266
|
-
Check `.planning/MILESTONES.md`:
|
|
267
|
-
- If MILESTONES.md exists and has at least one milestone entry → this is a subsequent milestone
|
|
268
|
-
- If MILESTONES.md does not exist or is empty → this is the first milestone setup
|
|
269
|
-
|
|
269
|
+
|
|
270
|
+
Check `.planning/MILESTONES.md`:
|
|
271
|
+
- If MILESTONES.md exists and has at least one milestone entry → this is a subsequent milestone
|
|
272
|
+
- If MILESTONES.md does not exist or is empty → this is the first milestone setup
|
|
273
|
+
|
|
270
274
|
```
|
|
271
275
|
Suggested next action (active brownfield change):
|
|
272
276
|
Run /gsdd-resume to restore the active brownfield change context from `.planning/brownfield-change/CHANGE.md`
|
|
@@ -275,52 +279,52 @@ Suggested next action (active brownfield change):
|
|
|
275
279
|
Suggested next action (subsequent milestone):
|
|
276
280
|
Run /gsdd-new-milestone to start the next milestone cycle (gather goals, define requirements, create ROADMAP.md)
|
|
277
281
|
Also available: /gsdd-progress (refresh after milestone setup)
|
|
278
|
-
|
|
279
|
-
Suggested next action (incomplete milestone state — SPEC.md exists but no milestone archived yet):
|
|
280
|
-
Inspect .planning/ manually — a milestone is likely still in progress.
|
|
281
|
-
If a ROADMAP.md was deleted prematurely, re-run /gsdd-new-milestone to restore it.
|
|
282
|
-
Do NOT run /gsdd-new-project — SPEC.md already exists and re-running would overwrite it.
|
|
283
|
-
|
|
282
|
+
|
|
283
|
+
Suggested next action (incomplete milestone state — SPEC.md exists but no milestone archived yet):
|
|
284
|
+
Inspect .planning/ manually — a milestone is likely still in progress.
|
|
285
|
+
If a ROADMAP.md was deleted prematurely, re-run /gsdd-new-milestone to restore it.
|
|
286
|
+
Do NOT run /gsdd-new-project — SPEC.md already exists and re-running would overwrite it.
|
|
287
|
+
|
|
284
288
|
Suggested next action (codebase-only brownfield state):
|
|
285
289
|
Run /gsdd-quick if the bounded change is already concrete.
|
|
286
290
|
Also available: /gsdd-new-project (if you intentionally want to widen into full lifecycle work), /gsdd-map-codebase (refresh or deepen the baseline)
|
|
287
|
-
|
|
291
|
+
|
|
288
292
|
Suggested next action (quick-lane brownfield state with incomplete quick work):
|
|
289
293
|
Run /gsdd-quick to continue or finish the current bounded change.
|
|
290
294
|
Also available: /gsdd-new-project (only if you intentionally want to widen this bounded change into full lifecycle setup), /gsdd-progress (refresh after the quick task is updated)
|
|
291
|
-
|
|
295
|
+
|
|
292
296
|
Suggested next action (quick-lane brownfield state with no incomplete quick work):
|
|
293
297
|
Run /gsdd-quick for the next bounded change.
|
|
294
298
|
Also available: /gsdd-new-project (if you intentionally want to widen into SPEC.md + ROADMAP.md), /gsdd-map-codebase (if the repo baseline feels stale)
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
If none of the above conditions match, report that the project is in a clean state with no obvious next action.
|
|
298
|
-
</route_action>
|
|
299
|
-
|
|
300
|
-
<edge_cases>
|
|
301
|
-
Handle compound states:
|
|
302
|
-
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
If none of the above conditions match, report that the project is in a clean state with no obvious next action.
|
|
302
|
+
</route_action>
|
|
303
|
+
|
|
304
|
+
<edge_cases>
|
|
305
|
+
Handle compound states:
|
|
306
|
+
|
|
303
307
|
- **Checkpoint + unexecuted plan:** Both `.continue-here.md` exists and a PLAN lacks a SUMMARY. Prioritize checkpoint (Branch A) but mention the unexecuted plan in the status block.
|
|
304
308
|
- **Generic checkpoint + current phase work:** A `workflow: generic` checkpoint may coexist with an incomplete plan, unverified phase, or completed milestone. Keep the checkpoint visible in the status block, but let Branch B-F supply the primary recommendation instead of bouncing back to `/gsdd-resume`.
|
|
305
309
|
- **Active brownfield change + generic checkpoint:** Keep the generic checkpoint visible as informational context, but let the active brownfield change remain the continuity anchor and use Branch F for the primary recommendation.
|
|
306
310
|
- **Active brownfield change + non-matching `phase`/`quick` checkpoint:** Show the checkpoint as surviving context, but let the active brownfield change stay primary unless branch alignment, scope alignment, and still-active execution state all match.
|
|
307
311
|
- **All phases complete + checkpoint:** All phases `[x]` but a checkpoint exists. If the checkpoint is `phase` or `quick`, mention both and suggest `/gsdd-resume` before continuing. If the checkpoint is `generic`, keep it visible as informational context and still route the primary recommendation to milestone audit.
|
|
308
|
-
- **Phase done but next unplanned:** Current phase has both PLAN and SUMMARY, but the next phase has no PLAN. Show the current phase as complete and suggest planning the next phase (Branch C targeting the next phase).
|
|
309
|
-
- **No matching condition:** If the project state does not match any branch, report it clearly and suggest the user inspect `.planning/` manually.
|
|
310
|
-
</edge_cases>
|
|
311
|
-
|
|
312
|
-
</process>
|
|
313
|
-
|
|
314
|
-
<success_criteria>
|
|
315
|
-
- [ ] Project existence checked with three-way logic (no artifacts / between-milestones / proceed)
|
|
316
|
-
- [ ] Status derived from disk artifacts only (ROADMAP.md, SPEC.md, phase dirs, .continue-here.md, config.json)
|
|
317
|
-
- [ ] Recent work shown from 2-3 most recent SUMMARY.md files (if they exist)
|
|
318
|
-
- [ ] Status block includes project name, current phase, and completion count
|
|
319
|
-
- [ ] Routing suggestion is specific (includes phase number and branch-specific output block)
|
|
320
|
-
- [ ] Named branch output format used with "Also available" alternatives
|
|
321
|
-
- [ ] No files created, modified, or deleted (read-only workflow)
|
|
322
|
-
- [ ] All workflow references use portable `/gsdd-*` command format
|
|
323
|
-
- [ ] No interactive menus, no numbered option lists, no waiting for user selection
|
|
324
|
-
- [ ] Edge cases handled for compound states
|
|
325
|
-
- [ ] Unmerged-commit warning only appears when `git log main..HEAD --oneline` returns output; silent when empty
|
|
326
|
-
</success_criteria>
|
|
312
|
+
- **Phase done but next unplanned:** Current phase has both PLAN and SUMMARY, but the next phase has no PLAN. Show the current phase as complete and suggest planning the next phase (Branch C targeting the next phase).
|
|
313
|
+
- **No matching condition:** If the project state does not match any branch, report it clearly and suggest the user inspect `.planning/` manually.
|
|
314
|
+
</edge_cases>
|
|
315
|
+
|
|
316
|
+
</process>
|
|
317
|
+
|
|
318
|
+
<success_criteria>
|
|
319
|
+
- [ ] Project existence checked with three-way logic (no artifacts / between-milestones / proceed)
|
|
320
|
+
- [ ] Status derived from disk artifacts only (ROADMAP.md, SPEC.md, phase dirs, .continue-here.md, config.json)
|
|
321
|
+
- [ ] Recent work shown from 2-3 most recent SUMMARY.md files (if they exist)
|
|
322
|
+
- [ ] Status block includes project name, current phase, and completion count
|
|
323
|
+
- [ ] Routing suggestion is specific (includes phase number and branch-specific output block)
|
|
324
|
+
- [ ] Named branch output format used with "Also available" alternatives
|
|
325
|
+
- [ ] No files created, modified, or deleted (read-only workflow)
|
|
326
|
+
- [ ] All workflow references use portable `/gsdd-*` command format
|
|
327
|
+
- [ ] No interactive menus, no numbered option lists, no waiting for user selection
|
|
328
|
+
- [ ] Edge cases handled for compound states
|
|
329
|
+
- [ ] Unmerged-commit warning only appears when `git log main..HEAD --oneline` returns output; silent when empty
|
|
330
|
+
</success_criteria>
|