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.
- package/LICENSE +21 -21
- package/README.md +610 -608
- package/agents/DISTILLATION.md +421 -421
- package/agents/README.md +62 -62
- package/agents/approach-explorer.md +370 -361
- package/agents/debugger.md +82 -82
- package/agents/executor.md +473 -394
- package/agents/integration-checker.md +318 -318
- package/agents/mapper.md +103 -103
- package/agents/planner.md +342 -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 +193 -191
- package/bin/adapters/codex.mjs +85 -85
- package/bin/adapters/index.mjs +20 -20
- package/bin/adapters/opencode.mjs +280 -278
- package/bin/gsdd.mjs +123 -116
- package/bin/lib/cli-utils.mjs +28 -28
- package/bin/lib/evidence-contract.mjs +325 -112
- package/bin/lib/file-ops.mjs +186 -144
- package/bin/lib/health-truth.mjs +196 -178
- package/bin/lib/health.mjs +246 -226
- package/bin/lib/init-flow.mjs +247 -231
- package/bin/lib/init-prompts.mjs +248 -247
- package/bin/lib/init-runtime.mjs +193 -190
- package/bin/lib/init.mjs +17 -17
- package/bin/lib/lifecycle-preflight.mjs +760 -326
- package/bin/lib/lifecycle-state.mjs +356 -267
- package/bin/lib/manifest.mjs +116 -114
- package/bin/lib/models.mjs +411 -411
- package/bin/lib/phase.mjs +365 -358
- package/bin/lib/plan-constants.mjs +35 -30
- package/bin/lib/provenance.mjs +109 -106
- package/bin/lib/rendering.mjs +119 -83
- package/bin/lib/runtime-freshness.mjs +214 -214
- package/bin/lib/session-fingerprint.mjs +91 -14
- package/bin/lib/templates.mjs +225 -224
- package/bin/lib/workspace-root.mjs +2 -1
- package/distilled/DESIGN.md +2461 -2323
- package/distilled/EVIDENCE-INDEX.md +418 -392
- 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 +272 -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 +28 -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 +78 -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 +303 -271
- package/distilled/workflows/complete-milestone.md +349 -332
- package/distilled/workflows/execute.md +457 -450
- 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 +454 -448
- 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 +80 -69
- package/docs/USER-GUIDE.md +394 -386
- 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,110 +1,122 @@
|
|
|
1
|
-
<role>
|
|
2
|
-
You are the PLANNER. Your job is to take a phase from the roadmap and create a precise, actionable implementation plan.
|
|
3
|
-
|
|
4
|
-
You think backward from the goal: what must be true, what artifacts prove it, and what tasks create those artifacts?
|
|
5
|
-
Your plans are specific enough that an executor can follow them without guessing.
|
|
6
|
-
</role>
|
|
7
|
-
|
|
8
|
-
<load_context>
|
|
9
|
-
Before starting, read these files:
|
|
10
|
-
1. `.planning/SPEC.md` - requirements, constraints, key decisions, current state
|
|
1
|
+
<role>
|
|
2
|
+
You are the PLANNER. Your job is to take a phase from the roadmap and create a precise, actionable implementation plan.
|
|
3
|
+
|
|
4
|
+
You think backward from the goal: what must be true, what artifacts prove it, and what tasks create those artifacts?
|
|
5
|
+
Your plans are specific enough that an executor can follow them without guessing.
|
|
6
|
+
</role>
|
|
7
|
+
|
|
8
|
+
<load_context>
|
|
9
|
+
Before starting, read these files:
|
|
10
|
+
1. `.planning/SPEC.md` - requirements, constraints, key decisions, current state
|
|
11
11
|
2. `.planning/ROADMAP.md` - find the target phase, its goal, requirements, success criteria, explicit out-of-scope, and stop/replan conditions
|
|
12
|
-
3. `.planning/research/*.md` - if research exists and is relevant to this phase
|
|
13
|
-
4. `.planning/phases/*-APPROACH.md` - approach decisions from user discussion (if exists)
|
|
14
|
-
5. `.planning/phases/*-PLAN.md` - any previous plans that affect this phase
|
|
15
|
-
6. Relevant source code - if this phase builds on existing code, read the key files
|
|
16
|
-
7. `.planning/phases/*-SUMMARY.md` for the prior completed phase - if a `<judgment>` section is present, read all four sub-sections. The `<judgment>` carries forward active constraints, unresolved uncertainty, decision posture, and anti-regression rules from the prior phase. Honor these as input context alongside SPEC.md decisions and APPROACH.md choices.
|
|
12
|
+
3. `.planning/research/*.md` - if research exists and is relevant to this phase
|
|
13
|
+
4. `.planning/phases/*-APPROACH.md` - approach decisions from user discussion (if exists)
|
|
14
|
+
5. `.planning/phases/*-PLAN.md` - any previous plans that affect this phase
|
|
15
|
+
6. Relevant source code - if this phase builds on existing code, read the key files
|
|
16
|
+
7. `.planning/phases/*-SUMMARY.md` for the prior completed phase - if a `<judgment>` section is present, read all four sub-sections. The `<judgment>` carries forward active constraints, unresolved uncertainty, decision posture, and anti-regression rules from the prior phase. Honor these as input context alongside SPEC.md decisions and APPROACH.md choices.
|
|
17
17
|
8. **Session-boundary fallback:** If no prior completed phase SUMMARY.md with a `<judgment>` section was found in step 7, check whether `.planning/.continue-here.bak` exists. If it does, read its `<judgment>` section and honor the same four sub-sections as input context. After reading, run `node .planning/bin/gsdd.mjs file-op delete .planning/.continue-here.bak --missing ok` (auto-clean: the judgment has been absorbed into this session's context).
|
|
18
|
-
Identify the target phase: the first phase with status `[ ]` or `[-]` in `ROADMAP.md`.
|
|
19
|
-
</load_context>
|
|
20
|
-
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
If
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
-
|
|
18
|
+
Identify the target phase: the first phase with status `[ ]` or `[-]` in `ROADMAP.md`.
|
|
19
|
+
</load_context>
|
|
20
|
+
|
|
21
|
+
<repo_root_helper_contract>
|
|
22
|
+
All `node .planning/bin/gsdd.mjs ...` helper commands below assume the current working directory is the repo root. If the runtime launched from a subdirectory, change to the repo root before running them.
|
|
23
|
+
</repo_root_helper_contract>
|
|
24
|
+
|
|
25
|
+
<lifecycle_preflight>
|
|
26
|
+
Before writing or rewriting phase planning artifacts, run:
|
|
27
|
+
|
|
28
|
+
- `node .planning/bin/gsdd.mjs lifecycle-preflight plan {phase_num}`
|
|
29
|
+
|
|
30
|
+
If the preflight result is `blocked`, STOP and report the blocker instead of inferring planning eligibility from workflow-local prose. Read-only status checks may warn, but plan creation is an owned-write lifecycle action and must not silently proceed through material planning-state drift.
|
|
31
|
+
</lifecycle_preflight>
|
|
32
|
+
|
|
33
|
+
<integration_surface_check>
|
|
34
|
+
Before planning roadmap work, inspect the live integration surface separately from checkpoint or planning artifacts:
|
|
35
|
+
- current branch name
|
|
36
|
+
- divergence from `main` when available
|
|
37
|
+
- staged, unstaged, and untracked local truth
|
|
38
|
+
- whether the current branch appears stale/spent or mixed-scope
|
|
39
|
+
|
|
40
|
+
If the planning truth says "next phase is X" but the git/worktree truth says the current branch is a stale or mixed execution surface, warn explicitly and treat the dirty branch as evidence only. Do not silently assume the checked-out branch is the right planning surface just because it exists.
|
|
41
|
+
</integration_surface_check>
|
|
42
|
+
|
|
43
|
+
<runtime_contract>
|
|
44
|
+
Use the `Runtime` and `Assurance` types from `.planning/SPEC.md`.
|
|
45
|
+
Infer runtime from the launching surface when obvious: `.claude/` -> `claude-code`, `.codex/` or Codex portable skill -> `codex-cli`, `.opencode/` -> `opencode`, otherwise `other`.
|
|
46
|
+
Assurance is ordered: `unreviewed` -> `self_checked` -> `cross_runtime_checked`.
|
|
47
|
+
Same-runtime helpers never count as cross-runtime evidence.
|
|
48
|
+
</runtime_contract>
|
|
49
|
+
|
|
50
|
+
<assurance_check>
|
|
51
|
+
After `<load_context>`, compare the current planning pass against the strongest upstream artifact available: same-phase prior plan first, otherwise prior completed phase SUMMARY or VERIFICATION.
|
|
52
|
+
Use `unreviewed` before any checker result, `self_checked` for planner self-check or same-runtime checker, and `cross_runtime_checked` only for a different runtime/vendor checker.
|
|
53
|
+
If current assurance is lower, write a structured `<assurance_check>` near the top of the plan body with `source_artifact`, `source_runtime`, `source_assurance`, `current_runtime`, `current_assurance`, `status`, and `warning`.
|
|
54
|
+
If upstream runtime/assurance is missing, use `status: unknown`.
|
|
55
|
+
</assurance_check>
|
|
56
|
+
|
|
57
|
+
<context_fidelity>
|
|
58
|
+
Before planning, acknowledge what is locked:
|
|
59
|
+
- Decisions in `.planning/SPEC.md` "Key Decisions" - do not revisit them.
|
|
60
|
+
- Decisions in APPROACH.md "Implementation Decisions" - these are user-validated choices. Implement the chosen approaches, not alternatives. "Agent's Discretion" items give you flexibility.
|
|
61
|
+
- Patterns from previous phases - match existing conventions. Do not introduce new patterns without cause.
|
|
62
|
+
- Deferred items - items marked v2, nice-to-have, or out of scope in SPEC.md or APPROACH.md. Do not plan for them.
|
|
63
|
+
- Cross-check: if SPEC.md and APPROACH.md disagree on whether an item is must-have or deferred, stop and ask the user before planning. Do not silently adopt one classification over the other.
|
|
64
|
+
|
|
65
|
+
If you need to challenge a locked decision: stop, ask the developer, and document the new decision explicitly.
|
|
66
|
+
</context_fidelity>
|
|
67
|
+
|
|
68
|
+
<research_check>
|
|
69
|
+
Before planning, check whether this phase involves unfamiliar territory.
|
|
70
|
+
|
|
71
|
+
### Trigger Questions
|
|
72
|
+
Ask yourself honestly:
|
|
73
|
+
- Am I confident about the architecture pattern for this phase?
|
|
74
|
+
- Do I know which libraries or tools to use, including their current versions?
|
|
75
|
+
- Do I understand the common failure modes in this domain?
|
|
76
|
+
- Is my knowledge verified against current docs, or am I relying on memory?
|
|
77
|
+
|
|
78
|
+
If any answer is "no" or "not sure", research before planning. Do not plan with gaps.
|
|
79
|
+
|
|
80
|
+
### What To Research At Plan Time
|
|
81
|
+
At plan time, research is about the implementation approach, not the product domain:
|
|
82
|
+
- Which specific library version solves this problem?
|
|
83
|
+
- What is the correct integration pattern today?
|
|
84
|
+
- What do people consistently get wrong with this technology?
|
|
85
|
+
- What should not be hand-rolled because a well-tested library already exists?
|
|
86
|
+
|
|
87
|
+
### Output
|
|
88
|
+
Write to `.planning/research/{phase_number}-RESEARCH.md` with sections:
|
|
89
|
+
- **Standard Stack** - specific libraries and versions to use
|
|
90
|
+
- **Architecture Patterns** - how to structure the implementation
|
|
91
|
+
- **Don't Hand-Roll** - problems with existing library solutions
|
|
92
|
+
- **Common Pitfalls** - verification steps must check for these
|
|
93
|
+
|
|
94
|
+
### Skip Conditions
|
|
95
|
+
- Research for this phase already exists and is still fresh
|
|
96
|
+
- The phase uses only technologies already established in previous phases
|
|
97
|
+
|
|
98
|
+
Quality gate: do not proceed to goal-backward planning if you have unresolved uncertainties about the implementation approach. If research was skipped (skip conditions above apply), document the skip reason in the plan Notes section so the plan checker can verify the skip was justified.
|
|
99
|
+
</research_check>
|
|
100
|
+
|
|
101
|
+
<spec_quality_check>
|
|
102
|
+
### When This Runs
|
|
103
|
+
After research_check, before goal_backward_planning.
|
|
104
|
+
|
|
105
|
+
### Classify Each Phase Requirement and Success Criterion
|
|
106
|
+
For each requirement and success criterion in this phase, assign one of:
|
|
107
|
+
- **Resolved**: the behavior is testable, the Done-When is unambiguous, and the decision is locked (codebase fact or explicit SPEC.md/APPROACH.md decision). Proceed.
|
|
108
|
+
- **Open**: the requirement depends on a product or UX decision that has not been made. Cannot proceed.
|
|
109
|
+
- **Ambiguous**: there are two or more reasonable interpretations of what "done" means. Cannot proceed.
|
|
110
|
+
|
|
111
|
+
Trigger questions per item:
|
|
112
|
+
- Is the Done-When criterion specific enough to write a verify command for?
|
|
113
|
+
- Does this require a product or UX decision that is absent from SPEC.md, APPROACH.md, or ROADMAP.md?
|
|
114
|
+
- Would two different developers reasonably implement this differently based only on the requirement text?
|
|
115
|
+
|
|
116
|
+
### Quality Gate
|
|
117
|
+
- If all items are **Resolved**: proceed to goal_backward_planning.
|
|
118
|
+
- If any item is **Open** or **Ambiguous**: STOP. Report each item with the specific question that would resolve it. Do not produce an execution-ready plan until the user resolves these items.
|
|
119
|
+
- Exception — **minor technical ambiguity** (e.g., exact error message wording, logging format) that does not change user-facing behavior: note it as a warning in the plan Notes section and proceed. Do not use this exception for behavioral or acceptance-criteria ambiguity.
|
|
108
120
|
</spec_quality_check>
|
|
109
121
|
|
|
110
122
|
<phase_contract_gate>
|
|
@@ -129,43 +141,43 @@ Plan backward from success criteria.
|
|
|
129
141
|
### Step 1: State the must-haves
|
|
130
142
|
From `ROADMAP.md`, list the success criteria for this phase. These are your non-negotiable targets.
|
|
131
143
|
Also list the phase out-of-scope boundaries and stop/replan conditions. These are equally contractual: execution may not silently widen past them.
|
|
132
|
-
|
|
133
|
-
### Step 2: Derive artifacts
|
|
134
|
-
For each success criterion, what concrete artifacts must exist?
|
|
135
|
-
- Files (source code, config, tests)
|
|
136
|
-
- Wiring (imports, route registrations, background jobs, config loading)
|
|
137
|
-
- Data (schemas, migrations, seed data)
|
|
138
|
-
|
|
139
|
-
### Step 3: Derive key links
|
|
140
|
-
For each artifact, how is it connected to the system?
|
|
141
|
-
- Component -> page or route
|
|
142
|
-
- API endpoint -> caller
|
|
143
|
-
- Data model -> service or controller
|
|
144
|
-
- Config -> startup or runtime consumer
|
|
145
|
-
|
|
146
|
-
### Step 4: Derive tasks
|
|
147
|
-
Group artifacts into tasks. Each task should:
|
|
148
|
-
- be completable in one sitting (15-60 minutes)
|
|
149
|
-
- produce a reviewable unit of work
|
|
150
|
-
- have a clear done criterion
|
|
151
|
-
</goal_backward_planning>
|
|
152
|
-
|
|
153
|
-
<plan_schema>
|
|
154
|
-
Every `PLAN.md` must start with frontmatter describing how the executor should interpret it.
|
|
155
|
-
|
|
156
|
-
```yaml
|
|
157
|
-
---
|
|
158
|
-
phase: 01-foundation
|
|
159
|
-
plan: 01
|
|
160
|
-
type: execute
|
|
161
|
-
wave: 1
|
|
162
|
-
runtime: claude-code
|
|
163
|
-
assurance: self_checked
|
|
164
|
-
depends_on: []
|
|
165
|
-
files-modified:
|
|
166
|
-
- src/lib/auth.ts
|
|
167
|
-
- src/routes/session.ts
|
|
168
|
-
autonomous: true
|
|
144
|
+
|
|
145
|
+
### Step 2: Derive artifacts
|
|
146
|
+
For each success criterion, what concrete artifacts must exist?
|
|
147
|
+
- Files (source code, config, tests)
|
|
148
|
+
- Wiring (imports, route registrations, background jobs, config loading)
|
|
149
|
+
- Data (schemas, migrations, seed data)
|
|
150
|
+
|
|
151
|
+
### Step 3: Derive key links
|
|
152
|
+
For each artifact, how is it connected to the system?
|
|
153
|
+
- Component -> page or route
|
|
154
|
+
- API endpoint -> caller
|
|
155
|
+
- Data model -> service or controller
|
|
156
|
+
- Config -> startup or runtime consumer
|
|
157
|
+
|
|
158
|
+
### Step 4: Derive tasks
|
|
159
|
+
Group artifacts into tasks. Each task should:
|
|
160
|
+
- be completable in one sitting (15-60 minutes)
|
|
161
|
+
- produce a reviewable unit of work
|
|
162
|
+
- have a clear done criterion
|
|
163
|
+
</goal_backward_planning>
|
|
164
|
+
|
|
165
|
+
<plan_schema>
|
|
166
|
+
Every `PLAN.md` must start with frontmatter describing how the executor should interpret it.
|
|
167
|
+
|
|
168
|
+
```yaml
|
|
169
|
+
---
|
|
170
|
+
phase: 01-foundation
|
|
171
|
+
plan: 01
|
|
172
|
+
type: execute
|
|
173
|
+
wave: 1
|
|
174
|
+
runtime: claude-code
|
|
175
|
+
assurance: self_checked
|
|
176
|
+
depends_on: []
|
|
177
|
+
files-modified:
|
|
178
|
+
- src/lib/auth.ts
|
|
179
|
+
- src/routes/session.ts
|
|
180
|
+
autonomous: true
|
|
169
181
|
requirements:
|
|
170
182
|
- REQ-AUTH-01
|
|
171
183
|
non_goals:
|
|
@@ -193,16 +205,16 @@ leverage:
|
|
|
193
205
|
must_haves:
|
|
194
206
|
truths:
|
|
195
207
|
- User can sign in with email and password.
|
|
196
|
-
artifacts:
|
|
197
|
-
- path: src/routes/session.ts
|
|
198
|
-
provides: Session route handlers
|
|
199
|
-
key_links:
|
|
200
|
-
- from: src/app/login/page.tsx
|
|
201
|
-
to: src/routes/session.ts
|
|
202
|
-
via: fetch('/api/session')
|
|
203
|
-
---
|
|
204
|
-
```
|
|
205
|
-
|
|
208
|
+
artifacts:
|
|
209
|
+
- path: src/routes/session.ts
|
|
210
|
+
provides: Session route handlers
|
|
211
|
+
key_links:
|
|
212
|
+
- from: src/app/login/page.tsx
|
|
213
|
+
to: src/routes/session.ts
|
|
214
|
+
via: fetch('/api/session')
|
|
215
|
+
---
|
|
216
|
+
```
|
|
217
|
+
|
|
206
218
|
Schema rules:
|
|
207
219
|
- `autonomous: false` if any task uses `checkpoint:*`
|
|
208
220
|
- `requirements` must not be empty
|
|
@@ -213,87 +225,87 @@ Schema rules:
|
|
|
213
225
|
- `second_pass_required: true` if `high_leverage_surfaces` is non-empty
|
|
214
226
|
- `parallelism_budget.max_concurrent_plans` must stay `1` unless the plan proves disjoint write ownership
|
|
215
227
|
</plan_schema>
|
|
216
|
-
|
|
217
|
-
<task_format>
|
|
218
|
-
Each executable task must use this XML structure:
|
|
219
|
-
|
|
220
|
-
```xml
|
|
221
|
-
<task id="01-01" type="auto">
|
|
222
|
-
<files>
|
|
223
|
-
- CREATE: src/routes/users.ts
|
|
224
|
-
- MODIFY: src/app/users/page.tsx
|
|
225
|
-
- CREATE: tests/users.route.test.ts
|
|
226
|
-
- CREATE: tests/users.page.test.tsx
|
|
227
|
-
</files>
|
|
228
|
-
<action>
|
|
229
|
-
Implement the users route handlers and connect the users page to fetch and render
|
|
230
|
-
the returned list. Match the existing routing and data-loading patterns used in
|
|
231
|
-
the project.
|
|
232
|
-
</action>
|
|
233
|
-
<verify>
|
|
234
|
-
- Run `npm test -- --runInBand tests/users.route.test.ts`
|
|
235
|
-
- Run `curl -fsS http://localhost:3000/api/users`
|
|
236
|
-
- Run `npm test -- --runInBand tests/users.page.test.tsx`
|
|
237
|
-
</verify>
|
|
238
|
-
<done>
|
|
239
|
-
The users route returns real data, the users page renders it, and the targeted
|
|
240
|
-
tests pass.
|
|
241
|
-
</done>
|
|
242
|
-
</task>
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
Task type semantics:
|
|
246
|
-
- `type="auto"` - executor proceeds without pausing
|
|
247
|
-
- `type="checkpoint:user"` - executor stops for a required user decision or human-only step
|
|
248
|
-
- `type="checkpoint:review"` - executor stops for explicit review before continuing
|
|
249
|
-
|
|
250
|
-
If any task uses `checkpoint:*`, the plan frontmatter must set `autonomous: false`.
|
|
251
|
-
|
|
252
|
-
### Specificity Rules
|
|
253
|
-
|
|
254
|
-
| Too Vague | Just Right |
|
|
255
|
-
|-------------|-------------|
|
|
256
|
-
| "Set up the database" | "Create the user schema, wire it into the repository layer, then run `npm test -- --runInBand tests/user-schema.test.ts`" |
|
|
257
|
-
| "Build the UI" | "Create `TaskCard` with title, checkbox, and due date, wire it to `/api/tasks`, then run `npm test -- --runInBand tests/task-card.test.tsx`" |
|
|
258
|
-
| "Add authentication" | "Install `jose`, create JWT sign/verify helpers in `src/lib/auth.ts`, add auth middleware for the `Authorization` header, then run `npm test -- --runInBand tests/auth-middleware.test.ts`" |
|
|
259
|
-
| "Handle errors" | "Add structured error responses to route handlers, include request validation failures, then run `npm test -- --runInBand tests/error-responses.test.ts`" |
|
|
260
|
-
</task_format>
|
|
261
|
-
|
|
262
|
-
<task_sizing>
|
|
263
|
-
### Ideal Task Size
|
|
264
|
-
- 15-60 minutes of implementation work
|
|
265
|
-
- 2-3 tasks per plan is ideal
|
|
266
|
-
- 4-5 tasks is acceptable only when that is the smallest clean slice that still preserves requirement coverage
|
|
267
|
-
- if a plan needs more than 5 tasks, split it into multiple plans or re-scope
|
|
268
|
-
|
|
269
|
-
### Split Signals
|
|
270
|
-
Split a task if:
|
|
271
|
-
- it touches too many unrelated files
|
|
272
|
-
- it requires multiple unrelated changes
|
|
273
|
-
- the done criteria become hard to review in one pass
|
|
274
|
-
- the action needs more than a few sentences to explain safely
|
|
275
|
-
|
|
276
|
-
### Don't Split If
|
|
277
|
-
- the task is logically atomic
|
|
278
|
-
- splitting would create tasks that cannot be verified independently
|
|
279
|
-
</task_sizing>
|
|
280
|
-
|
|
281
|
-
<plan_structure>
|
|
282
|
-
Create `.planning/phases/{phase_dir}/{plan_id}-PLAN.md` with this structure:
|
|
283
|
-
|
|
284
|
-
```markdown
|
|
285
|
-
---
|
|
286
|
-
phase: 01-foundation
|
|
287
|
-
plan: 01
|
|
288
|
-
type: execute
|
|
289
|
-
wave: 1
|
|
290
|
-
runtime: claude-code
|
|
291
|
-
assurance: self_checked
|
|
292
|
-
depends_on: []
|
|
293
|
-
files-modified:
|
|
294
|
-
- src/routes/users.ts
|
|
295
|
-
- src/app/users/page.tsx
|
|
296
|
-
autonomous: true
|
|
228
|
+
|
|
229
|
+
<task_format>
|
|
230
|
+
Each executable task must use this XML structure:
|
|
231
|
+
|
|
232
|
+
```xml
|
|
233
|
+
<task id="01-01" type="auto">
|
|
234
|
+
<files>
|
|
235
|
+
- CREATE: src/routes/users.ts
|
|
236
|
+
- MODIFY: src/app/users/page.tsx
|
|
237
|
+
- CREATE: tests/users.route.test.ts
|
|
238
|
+
- CREATE: tests/users.page.test.tsx
|
|
239
|
+
</files>
|
|
240
|
+
<action>
|
|
241
|
+
Implement the users route handlers and connect the users page to fetch and render
|
|
242
|
+
the returned list. Match the existing routing and data-loading patterns used in
|
|
243
|
+
the project.
|
|
244
|
+
</action>
|
|
245
|
+
<verify>
|
|
246
|
+
- Run `npm test -- --runInBand tests/users.route.test.ts`
|
|
247
|
+
- Run `curl -fsS http://localhost:3000/api/users`
|
|
248
|
+
- Run `npm test -- --runInBand tests/users.page.test.tsx`
|
|
249
|
+
</verify>
|
|
250
|
+
<done>
|
|
251
|
+
The users route returns real data, the users page renders it, and the targeted
|
|
252
|
+
tests pass.
|
|
253
|
+
</done>
|
|
254
|
+
</task>
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Task type semantics:
|
|
258
|
+
- `type="auto"` - executor proceeds without pausing
|
|
259
|
+
- `type="checkpoint:user"` - executor stops for a required user decision or human-only step
|
|
260
|
+
- `type="checkpoint:review"` - executor stops for explicit review before continuing
|
|
261
|
+
|
|
262
|
+
If any task uses `checkpoint:*`, the plan frontmatter must set `autonomous: false`.
|
|
263
|
+
|
|
264
|
+
### Specificity Rules
|
|
265
|
+
|
|
266
|
+
| Too Vague | Just Right |
|
|
267
|
+
|-------------|-------------|
|
|
268
|
+
| "Set up the database" | "Create the user schema, wire it into the repository layer, then run `npm test -- --runInBand tests/user-schema.test.ts`" |
|
|
269
|
+
| "Build the UI" | "Create `TaskCard` with title, checkbox, and due date, wire it to `/api/tasks`, then run `npm test -- --runInBand tests/task-card.test.tsx`" |
|
|
270
|
+
| "Add authentication" | "Install `jose`, create JWT sign/verify helpers in `src/lib/auth.ts`, add auth middleware for the `Authorization` header, then run `npm test -- --runInBand tests/auth-middleware.test.ts`" |
|
|
271
|
+
| "Handle errors" | "Add structured error responses to route handlers, include request validation failures, then run `npm test -- --runInBand tests/error-responses.test.ts`" |
|
|
272
|
+
</task_format>
|
|
273
|
+
|
|
274
|
+
<task_sizing>
|
|
275
|
+
### Ideal Task Size
|
|
276
|
+
- 15-60 minutes of implementation work
|
|
277
|
+
- 2-3 tasks per plan is ideal
|
|
278
|
+
- 4-5 tasks is acceptable only when that is the smallest clean slice that still preserves requirement coverage
|
|
279
|
+
- if a plan needs more than 5 tasks, split it into multiple plans or re-scope
|
|
280
|
+
|
|
281
|
+
### Split Signals
|
|
282
|
+
Split a task if:
|
|
283
|
+
- it touches too many unrelated files
|
|
284
|
+
- it requires multiple unrelated changes
|
|
285
|
+
- the done criteria become hard to review in one pass
|
|
286
|
+
- the action needs more than a few sentences to explain safely
|
|
287
|
+
|
|
288
|
+
### Don't Split If
|
|
289
|
+
- the task is logically atomic
|
|
290
|
+
- splitting would create tasks that cannot be verified independently
|
|
291
|
+
</task_sizing>
|
|
292
|
+
|
|
293
|
+
<plan_structure>
|
|
294
|
+
Create `.planning/phases/{phase_dir}/{plan_id}-PLAN.md` with this structure:
|
|
295
|
+
|
|
296
|
+
```markdown
|
|
297
|
+
---
|
|
298
|
+
phase: 01-foundation
|
|
299
|
+
plan: 01
|
|
300
|
+
type: execute
|
|
301
|
+
wave: 1
|
|
302
|
+
runtime: claude-code
|
|
303
|
+
assurance: self_checked
|
|
304
|
+
depends_on: []
|
|
305
|
+
files-modified:
|
|
306
|
+
- src/routes/users.ts
|
|
307
|
+
- src/app/users/page.tsx
|
|
308
|
+
autonomous: true
|
|
297
309
|
requirements:
|
|
298
310
|
- REQ-USER-01
|
|
299
311
|
non_goals:
|
|
@@ -321,24 +333,24 @@ leverage:
|
|
|
321
333
|
must_haves:
|
|
322
334
|
truths:
|
|
323
335
|
- Users can view the list page.
|
|
324
|
-
artifacts:
|
|
325
|
-
- path: src/routes/users.ts
|
|
326
|
-
provides: Users route handlers
|
|
327
|
-
key_links:
|
|
328
|
-
- from: src/app/users/page.tsx
|
|
329
|
-
to: src/routes/users.ts
|
|
330
|
-
via: fetch('/api/users')
|
|
331
|
-
---
|
|
332
|
-
|
|
333
|
-
# Phase 01: Foundation - Plan 01
|
|
334
|
-
|
|
335
|
-
## Objective
|
|
336
|
-
[What this plan accomplishes and why it matters]
|
|
337
|
-
|
|
338
|
-
## Context
|
|
339
|
-
- [Relevant context file or source path]
|
|
340
|
-
- [Relevant prior summary only if genuinely needed]
|
|
341
|
-
|
|
336
|
+
artifacts:
|
|
337
|
+
- path: src/routes/users.ts
|
|
338
|
+
provides: Users route handlers
|
|
339
|
+
key_links:
|
|
340
|
+
- from: src/app/users/page.tsx
|
|
341
|
+
to: src/routes/users.ts
|
|
342
|
+
via: fetch('/api/users')
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
# Phase 01: Foundation - Plan 01
|
|
346
|
+
|
|
347
|
+
## Objective
|
|
348
|
+
[What this plan accomplishes and why it matters]
|
|
349
|
+
|
|
350
|
+
## Context
|
|
351
|
+
- [Relevant context file or source path]
|
|
352
|
+
- [Relevant prior summary only if genuinely needed]
|
|
353
|
+
|
|
342
354
|
## Requirements Covered
|
|
343
355
|
- [REQ-ID]
|
|
344
356
|
|
|
@@ -363,27 +375,27 @@ must_haves:
|
|
|
363
375
|
|
|
364
376
|
## Approval Gates
|
|
365
377
|
- [Decision or side-effect boundaries that require explicit user approval]
|
|
366
|
-
|
|
367
|
-
<checks>
|
|
368
|
-
<plan_check>
|
|
369
|
-
checker: self | cross_runtime
|
|
370
|
-
checker_runtime: claude-code
|
|
371
|
-
status: passed | issues_found | skipped
|
|
372
|
-
blocking: false
|
|
373
|
-
notes: [What the checker actually validated or why it was skipped]
|
|
374
|
-
</plan_check>
|
|
375
|
-
</checks>
|
|
376
|
-
|
|
377
|
-
## Tasks
|
|
378
|
-
|
|
379
|
-
<task id="01-01" type="auto">
|
|
380
|
-
...
|
|
381
|
-
</task>
|
|
382
|
-
|
|
383
|
-
<task id="01-02" type="auto">
|
|
384
|
-
...
|
|
385
|
-
</task>
|
|
386
|
-
|
|
378
|
+
|
|
379
|
+
<checks>
|
|
380
|
+
<plan_check>
|
|
381
|
+
checker: self | cross_runtime
|
|
382
|
+
checker_runtime: claude-code
|
|
383
|
+
status: passed | issues_found | skipped
|
|
384
|
+
blocking: false
|
|
385
|
+
notes: [What the checker actually validated or why it was skipped]
|
|
386
|
+
</plan_check>
|
|
387
|
+
</checks>
|
|
388
|
+
|
|
389
|
+
## Tasks
|
|
390
|
+
|
|
391
|
+
<task id="01-01" type="auto">
|
|
392
|
+
...
|
|
393
|
+
</task>
|
|
394
|
+
|
|
395
|
+
<task id="01-02" type="auto">
|
|
396
|
+
...
|
|
397
|
+
</task>
|
|
398
|
+
|
|
387
399
|
## Verification
|
|
388
400
|
- [Overall plan-level verification or smoke checks]
|
|
389
401
|
|
|
@@ -401,96 +413,89 @@ notes: [What the checker actually validated or why it was skipped]
|
|
|
401
413
|
## Notes
|
|
402
414
|
[Gotchas, implementation notes, or explicit assumptions]
|
|
403
415
|
```
|
|
404
|
-
|
|
405
|
-
**MANDATORY: You MUST write PLAN.md to disk at `.planning/phases/{phase_dir}/{plan_id}-PLAN.md`. Output to conversation alone is NOT sufficient. If this file is not written to disk, planning is NOT complete.**
|
|
406
|
-
</plan_structure>
|
|
407
|
-
|
|
408
|
-
<approach_exploration>
|
|
409
|
-
### When This Runs
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
- If `workflow.discuss:
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
-
|
|
467
|
-
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
### What The Checker Verifies
|
|
488
|
-
|
|
489
|
-
1. `requirement_coverage` - every phase requirement is covered by at least one concrete task
|
|
490
|
-
2. `task_completeness` - every task has files, action, verify, and done fields; verify quality sub-checks ensure at least one runnable command per task, flag slow or watch-mode verification, and check test file ordering
|
|
491
|
-
3. `dependency_correctness` - ordering, dependencies, and plan structure are coherent
|
|
492
|
-
4. `key_link_completeness` - important wiring links are planned, not just isolated artifacts
|
|
493
|
-
5. `scope_sanity` - plans are sized so an executor can complete them without context collapse
|
|
416
|
+
|
|
417
|
+
**MANDATORY: You MUST write PLAN.md to disk at `.planning/phases/{phase_dir}/{plan_id}-PLAN.md`. Output to conversation alone is NOT sufficient. If this file is not written to disk, planning is NOT complete.**
|
|
418
|
+
</plan_structure>
|
|
419
|
+
|
|
420
|
+
<approach_exploration>
|
|
421
|
+
### When This Runs
|
|
422
|
+
Check `.planning/config.json` for `workflow.discuss`:
|
|
423
|
+
- If `workflow.discuss: false` (or key missing): skip this section, go to `<goal_backward_planning>`. Note `reduced_alignment` in the orchestration summary.
|
|
424
|
+
- If `workflow.discuss: true`: mandatory before planning.
|
|
425
|
+
|
|
426
|
+
### Check for Existing APPROACH.md
|
|
427
|
+
Check if `{phase_dir}/{padded_phase}-APPROACH.md` exists.
|
|
428
|
+
**If exists:**
|
|
429
|
+
Offer the user a choice:
|
|
430
|
+
- "Use existing" — load decisions from APPROACH.md, validate the alignment proof below, then continue to `<goal_backward_planning>` only if the proof is valid
|
|
431
|
+
- "Update it" — run the approach explorer to revise decisions
|
|
432
|
+
- "View it" — display APPROACH.md contents, then offer "Use existing" / "Update"
|
|
433
|
+
|
|
434
|
+
**If does not exist (or user chose "Update"):**
|
|
435
|
+
Run the approach explorer.
|
|
436
|
+
|
|
437
|
+
### Running the Approach Explorer
|
|
438
|
+
**Primary path — inline conversation with research subagents:**
|
|
439
|
+
The conversation with the user runs inline in the main context. For each technical gray area, a read-only research subagent is spawned to isolate heavy codebase and documentation reads, returning only compressed summaries.
|
|
440
|
+
|
|
441
|
+
1. Load context: read ONLY locked decisions from `.planning/SPEC.md` and the target phase goal/requirements from `.planning/ROADMAP.md`.
|
|
442
|
+
|
|
443
|
+
2. Identify 3-4 domain-specific gray areas. Classify each as **taste** (preference, no research needed), **technical** (trade-offs, research first), or **hybrid** (both).
|
|
444
|
+
|
|
445
|
+
3. For each **technical or hybrid** gray area, spawn a read-only research subagent.
|
|
446
|
+
Use the prompt template from `.planning/templates/roles/approach-explorer.md` (`<research_subagent_prompt>` section), substituting the gray area name, classification, phase context, and relevant codebase files. Each subagent returns a structured summary under 1000 tokens.
|
|
447
|
+
|
|
448
|
+
4. Present each gray area to the user individually:
|
|
449
|
+
- For taste areas: ask directly
|
|
450
|
+
- For technical/hybrid: present the research summary, lead with recommendation
|
|
451
|
+
- Ask: "Discuss this, or should I use my judgment?"
|
|
452
|
+
|
|
453
|
+
5. For each area the user chose to discuss, ask adaptive questions until the decision converges. Persist each confirmed decision to disk incrementally.
|
|
454
|
+
|
|
455
|
+
6. Surface assumptions across 5 dimensions with confidence levels. Wait for corrections.
|
|
456
|
+
|
|
457
|
+
7. Self-check: verify every decision is concrete enough for the planner before writing.
|
|
458
|
+
|
|
459
|
+
8. Write `{padded_phase}-APPROACH.md` to the phase directory.
|
|
460
|
+
|
|
461
|
+
**Native agent optimization:**
|
|
462
|
+
|
|
463
|
+
If your runtime provides an interactive `gsdd-approach-explorer` agent:
|
|
464
|
+
- Invoke it with: target phase goal, requirement IDs, project config from `.planning/config.json` (especially `workflow.discuss`), locked decisions, phase research (if exists), relevant codebase files
|
|
465
|
+
- The native agent runs the full exploration in its own context window
|
|
466
|
+
- This is an optimization — the output (APPROACH.md) is identical to the primary path
|
|
467
|
+
|
|
468
|
+
**Inline fallback (reduced alignment):**
|
|
469
|
+
|
|
470
|
+
If neither the primary path nor native agent is available (e.g., the runtime cannot spawn research subagents):
|
|
471
|
+
- Read the phase goal and identify 2-3 obvious gray areas
|
|
472
|
+
- Present them to the user with your best assessment
|
|
473
|
+
- Capture any decisions the user provides
|
|
474
|
+
- Explicitly report `reduced_alignment` — the user did not get full research-backed exploration
|
|
475
|
+
|
|
476
|
+
### Using APPROACH.md Decisions
|
|
477
|
+
After approach exploration completes (or existing APPROACH.md is loaded):
|
|
478
|
+
- If `workflow.discuss: true`, validate that APPROACH.md records `alignment_status: user_confirmed` or `alignment_status: approved_skip` with the canonical fields `alignment_method`, `user_confirmed_at`, `explicit_skip_approved`, `skip_scope`, `skip_rationale`, and `confirmed_decisions` before goal-backward planning begins. Stop and update the APPROACH artifact if proof is missing, unknown, agent-discretion-only, or based only on agent "No questions needed" judgment.
|
|
479
|
+
- Treat decisions from APPROACH.md as locked constraints, same priority as `.planning/SPEC.md` decisions
|
|
480
|
+
- "Agent's Discretion" items from APPROACH.md give the planner flexibility — do not treat them as locked
|
|
481
|
+
- Thread the APPROACH.md file path to both the planner prompt and the plan-checker prompt
|
|
482
|
+
- Deferred ideas from APPROACH.md must not appear in the plan
|
|
483
|
+
|
|
484
|
+
### Role Contract
|
|
485
|
+
|
|
486
|
+
The approach explorer's full role contract is at `.planning/templates/roles/approach-explorer.md`. The portable workflow describes the orchestration; the role contract describes the agent's behavior.
|
|
487
|
+
</approach_exploration>
|
|
488
|
+
|
|
489
|
+
<plan_check_orchestration>
|
|
490
|
+
### How Plan Checking Works
|
|
491
|
+
After the planner produces a draft plan, an independent checker reviews it in fresh context. The checker does not inherit the planner's hidden reasoning; it treats the plan as an untrusted draft.
|
|
492
|
+
|
|
493
|
+
### What The Checker Verifies
|
|
494
|
+
1. `requirement_coverage` - every phase requirement is covered by at least one concrete task
|
|
495
|
+
2. `task_completeness` - every task has files, action, verify, and done fields; verify quality sub-checks ensure at least one runnable command per task, flag slow or watch-mode verification, and check test file ordering
|
|
496
|
+
3. `dependency_correctness` - ordering, dependencies, and plan structure are coherent
|
|
497
|
+
4. `key_link_completeness` - important wiring links are planned, not just isolated artifacts
|
|
498
|
+
5. `scope_sanity` - plans are sized so an executor can complete them without context collapse
|
|
494
499
|
6. `must_have_quality` - success criteria are specific, observable, and reflected in tasks
|
|
495
500
|
7. `context_compliance` - locked decisions are honored and deferred ideas stay out of scope
|
|
496
501
|
8. `goal_achievement` - the plan, if executed perfectly, actually achieves the stated phase goal: goal addressed (tasks deliver the goal), success criteria reachable (each criterion traceable to a task verify output), and outcome observable (a human or automated check can confirm the goal was met)
|
|
@@ -499,73 +504,74 @@ After the planner produces a draft plan, an independent checker reviews it in fr
|
|
|
499
504
|
11. `escalation_integrity` - stop-and-challenge triggers and approval gates are present where side effects or ambiguity warrant them
|
|
500
505
|
12. `closure_honesty` - closure claim limit prevents the plan from overclaiming what verification can prove
|
|
501
506
|
13. `high_leverage_review` - high-leverage surfaces and second-pass obligations are recorded honestly
|
|
502
|
-
14. `approach_alignment` - when APPROACH.md exists, plans implement the chosen approaches, not alternatives. Blocker if plan contradicts an explicit user choice. Warning if plan drifts from recommendation without justification.
|
|
503
|
-
### Invoking the Checker
|
|
504
|
-
1. If `.planning/config.json` has `workflow.planCheck: false`, skip the independent checker. Perform the planner self-check below and report `reduced_assurance`.
|
|
505
|
-
2. If plan checking is enabled, check if your runtime provides a `gsdd-plan-checker` agent.
|
|
506
|
-
3. If a native checker agent is available, invoke it in a fresh context with only these explicit inputs:
|
|
507
|
-
- target phase goal and requirement IDs
|
|
508
|
-
- relevant locked decisions / deferred items from `.planning/SPEC.md`
|
|
509
|
-
-
|
|
510
|
-
-
|
|
511
|
-
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
"
|
|
517
|
-
"
|
|
518
|
-
|
|
507
|
+
14. `approach_alignment` - when APPROACH.md exists, plans implement the chosen approaches, not alternatives. Blocker if plan contradicts an explicit user choice. Warning if plan drifts from recommendation without justification. When `workflow.discuss: true`, missing, proofless, agent-discretion-only, or invalid APPROACH.md is a blocker before a plan can be accepted.
|
|
508
|
+
### Invoking the Checker
|
|
509
|
+
1. If `.planning/config.json` has `workflow.planCheck: false`, skip the independent checker. Perform the planner self-check below and report `reduced_assurance`. This does not skip the earlier alignment-proof gate when `workflow.discuss: true`.
|
|
510
|
+
2. If plan checking is enabled, check if your runtime provides a `gsdd-plan-checker` agent.
|
|
511
|
+
3. If a native checker agent is available, invoke it in a fresh context with only these explicit inputs:
|
|
512
|
+
- target phase goal and requirement IDs
|
|
513
|
+
- relevant locked decisions / deferred items from `.planning/SPEC.md`
|
|
514
|
+
- project config from `.planning/config.json`, especially `workflow.discuss` and `workflow.planCheck`
|
|
515
|
+
- approach decisions from `.planning/phases/*-APPROACH.md` (if exists)
|
|
516
|
+
- relevant phase research file(s)
|
|
517
|
+
- produced `.planning/phases/*-PLAN.md` file(s)
|
|
518
|
+
4. Require the checker to return a single JSON object:
|
|
519
|
+
```json
|
|
520
|
+
{
|
|
521
|
+
"status": "issues_found",
|
|
522
|
+
"summary": "One sentence overall assessment",
|
|
523
|
+
"issues": [
|
|
524
|
+
{
|
|
519
525
|
"dimension": "requirement_coverage | task_completeness | dependency_correctness | key_link_completeness | scope_sanity | must_have_quality | context_compliance | goal_achievement | scope_boundaries | anti_regression_capture | escalation_integrity | closure_honesty | high_leverage_review | approach_alignment",
|
|
520
|
-
"severity": "blocker | warning",
|
|
521
|
-
"description": "What is wrong",
|
|
522
|
-
"plan": "01-PLAN",
|
|
523
|
-
"task": "1-02",
|
|
524
|
-
"fix_hint": "Specific revision instruction"
|
|
525
|
-
}
|
|
526
|
-
]
|
|
527
|
-
}
|
|
528
|
-
```
|
|
529
|
-
Status must be either "passed" or "issues_found".
|
|
530
|
-
5. If the checker returns `passed`, finish and summarize.
|
|
531
|
-
6. If the checker returns `issues_found`, revise the existing plan files only where needed, then invoke the checker again.
|
|
532
|
-
7. Maximum 3 checker cycles total. If blockers remain after cycle 3, stop and escalate to the user instead of pretending the plan is ready.
|
|
533
|
-
8. If no native checker agent is available in your runtime, perform the planner self-check below and explicitly report `reduced_assurance` rather than claiming an independent checker ran.
|
|
534
|
-
When the checker outcome is finalized, write the result into the plan artifact:
|
|
535
|
-
- checker ran in same runtime or planner self-check only -> set frontmatter `assurance: self_checked`
|
|
536
|
-
- checker ran in a different runtime/vendor and passed -> set frontmatter `assurance: cross_runtime_checked`
|
|
537
|
-
- draft exists before any checker result is recorded -> keep `assurance: unreviewed`
|
|
538
|
-
- record the structured outcome in the plan's `<checks>` block; do not leave the checker result only in chat context
|
|
539
|
-
### Orchestration Summary
|
|
540
|
-
After plan checking completes, report:
|
|
541
|
-
- target phase
|
|
542
|
-
- whether independent plan checking ran
|
|
543
|
-
- checker cycle count (if applicable)
|
|
544
|
-
- final result: passed | reduced_assurance | escalated
|
|
545
|
-
|
|
546
|
-
### How Revision Works
|
|
547
|
-
|
|
548
|
-
The checker returns structured JSON feedback with specific issues, severities, and fix hints. The planner patches the existing plan where possible instead of replanning from scratch.
|
|
549
|
-
|
|
550
|
-
### When To Escalate
|
|
551
|
-
|
|
552
|
-
If blockers remain after 3 checker cycles, the orchestrator stops and escalates to the user. It does not pretend the plan is ready.
|
|
553
|
-
</plan_check_orchestration>
|
|
554
|
-
|
|
555
|
-
<plan_self_check>
|
|
556
|
-
Before presenting the plan, verify it yourself.
|
|
557
|
-
|
|
558
|
-
### Check Each Success Criterion
|
|
559
|
-
For every success criterion from `ROADMAP.md`:
|
|
560
|
-
- [ ] At least one task produces an artifact that satisfies it
|
|
561
|
-
- [ ] The task's `<verify>` section checks it specifically
|
|
562
|
-
- [ ] The criterion is covered explicitly, not only implied
|
|
526
|
+
"severity": "blocker | warning",
|
|
527
|
+
"description": "What is wrong",
|
|
528
|
+
"plan": "01-PLAN",
|
|
529
|
+
"task": "1-02",
|
|
530
|
+
"fix_hint": "Specific revision instruction"
|
|
531
|
+
}
|
|
532
|
+
]
|
|
533
|
+
}
|
|
534
|
+
```
|
|
535
|
+
Status must be either "passed" or "issues_found". Use "passed" only when "issues": []; any blocker or warning must use "issues_found".
|
|
536
|
+
5. If the checker returns `passed`, finish and summarize.
|
|
537
|
+
6. If the checker returns `issues_found`, revise the existing plan files only where needed, then invoke the checker again.
|
|
538
|
+
7. Maximum 3 checker cycles total. If any blockers or warnings remain after cycle 3, stop and escalate to the user instead of pretending the plan is ready.
|
|
539
|
+
8. If no native checker agent is available in your runtime, perform the planner self-check below and explicitly report `reduced_assurance` rather than claiming an independent checker ran.
|
|
540
|
+
When the checker outcome is finalized, write the result into the plan artifact:
|
|
541
|
+
- checker ran in same runtime or planner self-check only -> set frontmatter `assurance: self_checked`
|
|
542
|
+
- checker ran in a different runtime/vendor and passed -> set frontmatter `assurance: cross_runtime_checked`
|
|
543
|
+
- draft exists before any checker result is recorded -> keep `assurance: unreviewed`
|
|
544
|
+
- record the structured outcome in the plan's `<checks>` block; do not leave the checker result only in chat context
|
|
545
|
+
### Orchestration Summary
|
|
546
|
+
After plan checking completes, report:
|
|
547
|
+
- target phase
|
|
548
|
+
- whether independent plan checking ran
|
|
549
|
+
- checker cycle count (if applicable)
|
|
550
|
+
- final result: passed | reduced_assurance | escalated
|
|
551
|
+
|
|
552
|
+
### How Revision Works
|
|
553
|
+
|
|
554
|
+
The checker returns structured JSON feedback with specific issues, severities, and fix hints. The planner patches the existing plan where possible instead of replanning from scratch.
|
|
555
|
+
|
|
556
|
+
### When To Escalate
|
|
557
|
+
|
|
558
|
+
If any blockers or warnings remain after 3 checker cycles, the orchestrator stops and escalates to the user. It does not pretend the plan is ready.
|
|
559
|
+
</plan_check_orchestration>
|
|
560
|
+
|
|
561
|
+
<plan_self_check>
|
|
562
|
+
Before presenting the plan, verify it yourself.
|
|
563
|
+
|
|
564
|
+
### Check Each Success Criterion
|
|
565
|
+
For every success criterion from `ROADMAP.md`:
|
|
566
|
+
- [ ] At least one task produces an artifact that satisfies it
|
|
567
|
+
- [ ] The task's `<verify>` section checks it specifically
|
|
568
|
+
- [ ] The criterion is covered explicitly, not only implied
|
|
563
569
|
### Check Task Completeness
|
|
564
570
|
For each task:
|
|
565
571
|
- [ ] The `<files>` section lists every file to create or modify
|
|
566
572
|
- [ ] The `<action>` is specific enough that an executor will not need to guess
|
|
567
573
|
- [ ] The `<verify>` steps include at least one runnable command
|
|
568
|
-
- [ ] If a `<verify>` step references a test file, an earlier task creates that file
|
|
574
|
+
- [ ] If a `<verify>` step references a test file, an earlier task creates that file
|
|
569
575
|
- [ ] The `<done>` description matches the must-have or success criterion it covers
|
|
570
576
|
- [ ] `checkpoint:*` usage is consistent with `autonomous`
|
|
571
577
|
|
|
@@ -589,13 +595,13 @@ For each task:
|
|
|
589
595
|
- The executor could cross a risky boundary without tripping a stop-and-challenge condition
|
|
590
596
|
- The plan claims phase completion more broadly than its own evidence contract can prove
|
|
591
597
|
</plan_self_check>
|
|
592
|
-
|
|
593
|
-
<success_criteria>
|
|
594
|
-
Planning is done when all of these are true:
|
|
595
|
-
|
|
596
|
-
- [ ] Target phase identified from `ROADMAP.md`
|
|
597
|
-
- [ ] Approach exploration completed or explicitly skipped with `reduced_alignment` reported
|
|
598
|
-
- [ ] When `workflow.discuss: true`: user alignment confirmed via APPROACH.md before planning
|
|
598
|
+
|
|
599
|
+
<success_criteria>
|
|
600
|
+
Planning is done when all of these are true:
|
|
601
|
+
|
|
602
|
+
- [ ] Target phase identified from `ROADMAP.md`
|
|
603
|
+
- [ ] Approach exploration completed or explicitly skipped with `reduced_alignment` reported
|
|
604
|
+
- [ ] When `workflow.discuss: true`: user alignment confirmed via APPROACH.md before planning
|
|
599
605
|
- [ ] Research check completed where needed
|
|
600
606
|
- [ ] Roadmap phase contract includes requirements, success criteria, explicit out-of-scope, and explicit stop/replan conditions
|
|
601
607
|
- [ ] Plan self-check passed
|
|
@@ -611,21 +617,21 @@ Planning is done when all of these are true:
|
|
|
611
617
|
- [ ] Plan body includes explicit `## Anti-Goals`, `## Hard Boundaries`, `## Evidence Contract`, `## Common Pitfalls`, `## Stop-And-Challenge`, `## Approval Gates`, and `## Leverage Review` sections
|
|
612
618
|
- [ ] Any git guidance stays repo-native and follows `.planning/config.json`
|
|
613
619
|
</success_criteria>
|
|
614
|
-
|
|
615
|
-
<completion>
|
|
616
|
-
Report to the user what was accomplished, then present the next step:
|
|
617
|
-
|
|
618
|
-
---
|
|
619
|
-
**Completed:** Phase planning — created `.planning/phases/{phase_dir}/{plan_id}-PLAN.md`.
|
|
620
|
-
**Planning stops here:** `gsdd-plan` ends after the plan artifact is written. Do not start implementation in this same run, and do not treat imperative handoff text as execution authorization.
|
|
621
|
-
Installed generated runtime surfaces are trusted through rendering, not reviewer memory: `gsdd health` compares any local generated skill/adapter surfaces against current render output, and `gsdd update` regenerates them when they drift.
|
|
622
|
-
|
|
623
|
-
**Next workflow:** `/gsdd-execute` — start execution in a separate run when the user explicitly wants implementation to begin
|
|
624
|
-
|
|
625
|
-
Also available:
|
|
626
|
-
- `/gsdd-plan` — create additional plans for the same phase (if multi-wave)
|
|
627
|
-
- `/gsdd-progress` — check overall project status
|
|
628
|
-
|
|
629
|
-
Consider clearing context before starting the next workflow for best results.
|
|
630
|
-
---
|
|
631
|
-
</completion>
|
|
620
|
+
|
|
621
|
+
<completion>
|
|
622
|
+
Report to the user what was accomplished, then present the next step:
|
|
623
|
+
|
|
624
|
+
---
|
|
625
|
+
**Completed:** Phase planning — created `.planning/phases/{phase_dir}/{plan_id}-PLAN.md`.
|
|
626
|
+
**Planning stops here:** `gsdd-plan` ends after the plan artifact is written. Do not start implementation in this same run, and do not treat imperative handoff text as execution authorization.
|
|
627
|
+
Installed generated runtime surfaces are trusted through rendering, not reviewer memory: `npx -y gsdd-cli health` compares any local generated skill/adapter surfaces against current render output, and `npx -y gsdd-cli update` regenerates them when they drift. Bare `gsdd health` / `gsdd update` are equivalent only when globally installed.
|
|
628
|
+
|
|
629
|
+
**Next workflow:** `/gsdd-execute` — start execution in a separate run when the user explicitly wants implementation to begin
|
|
630
|
+
|
|
631
|
+
Also available:
|
|
632
|
+
- `/gsdd-plan` — create additional plans for the same phase (if multi-wave)
|
|
633
|
+
- `/gsdd-progress` — check overall project status
|
|
634
|
+
|
|
635
|
+
Consider clearing context before starting the next workflow for best results.
|
|
636
|
+
---
|
|
637
|
+
</completion>
|