pi-gsd 2.0.4 → 2.0.6
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/.gsd/harnesses/pi/get-shit-done/workflows/add-phase.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/add-tests.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/add-todo.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/audit-milestone.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/autonomous.md +6 -6
- package/.gsd/harnesses/pi/get-shit-done/workflows/check-todos.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/complete-milestone.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase-assumptions.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/do.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/execute-milestone.md +38 -38
- package/.gsd/harnesses/pi/get-shit-done/workflows/execute-plan.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/insert-phase.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/list-workspaces.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/manager.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/map-codebase.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/milestone-summary.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/new-milestone.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/new-project.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/new-workspace.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/pause-work.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/plan-milestone.md +8 -8
- package/.gsd/harnesses/pi/get-shit-done/workflows/progress.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/quick.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/remove-phase.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/remove-workspace.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/research-phase.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/resume-project.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/review.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/settings.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/ship.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/ui-phase.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/ui-review.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/validate-phase.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/verify-phase.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/verify-work.md +1 -1
- package/README.md +60 -60
- package/dist/pi-gsd-hooks.js +4 -4
- package/dist/pi-gsd-tools.js +2 -2
- package/package.json +1 -1
- package/prompts/gsd-discuss-phase.md +1 -1
- package/prompts/gsd-execute-phase.md +1 -1
- package/prompts/gsd-plan-phase.md +1 -1
- package/prompts/gsd-quick.md +1 -1
- package/prompts/gsd-verify-work.md +1 -1
- package/scripts/postinstall.js +323 -323
|
@@ -86,7 +86,7 @@ Exit.
|
|
|
86
86
|
<step name="init_context">
|
|
87
87
|
Load phase operation context:
|
|
88
88
|
|
|
89
|
-
<!-- Context pre-injected above via WXP
|
|
89
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
90
90
|
|
|
91
91
|
Check `roadmap_exists` from init JSON. If false:
|
|
92
92
|
```
|
|
@@ -100,7 +100,7 @@ Exit.
|
|
|
100
100
|
<step name="init_context">
|
|
101
101
|
Load phase operation context:
|
|
102
102
|
|
|
103
|
-
<!-- Context pre-injected above via WXP
|
|
103
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
104
104
|
|
|
105
105
|
Extract from init JSON: `phase_dir`, `phase_number`, `phase_name`.
|
|
106
106
|
|
|
@@ -40,7 +40,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
40
40
|
<step name="init_context">
|
|
41
41
|
Load todo context:
|
|
42
42
|
|
|
43
|
-
<!-- Context pre-injected above via WXP
|
|
43
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
44
44
|
|
|
45
45
|
Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos`, `pending_dir`, `todos_dir_exists`.
|
|
46
46
|
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
|
|
78
78
|
## 0. Initialize Milestone Context
|
|
79
79
|
|
|
80
|
-
<!-- Context pre-injected above via WXP
|
|
80
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
81
81
|
|
|
82
82
|
Extract from init JSON: `milestone_version`, `milestone_name`, `phase_count`, `completed_phases`, `commit_docs`.
|
|
83
83
|
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
</shell>
|
|
67
67
|
</then>
|
|
68
68
|
</if>
|
|
69
|
-
<!-- SET _auto_chain_active when chain starts
|
|
69
|
+
<!-- SET _auto_chain_active when chain starts - cleared by chain completion/pause, not by absence of --auto -->
|
|
70
70
|
<shell command="pi-gsd-tools">
|
|
71
71
|
<args>
|
|
72
72
|
<arg string="config-set" />
|
|
@@ -108,7 +108,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
108
108
|
|
|
109
109
|
Parse `$ARGUMENTS` for `--from N` flag:
|
|
110
110
|
|
|
111
|
-
<!-- Context pre-injected above via WXP
|
|
111
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
112
112
|
|
|
113
113
|
Parse JSON for: `milestone_version`, `milestone_name`, `phase_count`, `completed_phases`, `roadmap_exists`, `state_exists`, `commit_docs`.
|
|
114
114
|
|
|
@@ -136,7 +136,7 @@ If `FROM_PHASE` is set, display: `Starting from phase ${FROM_PHASE}`
|
|
|
136
136
|
|
|
137
137
|
Run phase discovery:
|
|
138
138
|
|
|
139
|
-
<!-- Context pre-injected above via WXP
|
|
139
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
140
140
|
|
|
141
141
|
Parse `has_context` from JSON.
|
|
142
142
|
|
|
@@ -150,7 +150,7 @@ Proceed to 3b.
|
|
|
150
150
|
|
|
151
151
|
**If has_context is false:** Check if discuss is disabled via settings:
|
|
152
152
|
|
|
153
|
-
<!-- Context pre-injected above via WXP
|
|
153
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
154
154
|
|
|
155
155
|
Check `has_context`. If false → go to handle_blocker: "Smart discuss for phase ${PHASE_NUM} did not produce CONTEXT.md."
|
|
156
156
|
|
|
@@ -158,7 +158,7 @@ Check `has_context`. If false → go to handle_blocker: "Smart discuss for phase
|
|
|
158
158
|
|
|
159
159
|
Check if this phase has frontend indicators and whether a UI-SPEC already exists:
|
|
160
160
|
|
|
161
|
-
<!-- Context pre-injected above via WXP
|
|
161
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
162
162
|
|
|
163
163
|
Parse `phase_dir` from the JSON.
|
|
164
164
|
|
|
@@ -219,7 +219,7 @@ Skill(skill="gsd-execute-phase", args="${PHASE_NUM} --no-transition")
|
|
|
219
219
|
```
|
|
220
220
|
|
|
221
221
|
Re-read verification status:
|
|
222
|
-
<!-- Context pre-injected above via WXP
|
|
222
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
223
223
|
|
|
224
224
|
Parse from JSON: `phase_dir`, `phase_slug`, `padded_phase`, `phase_name`.
|
|
225
225
|
|
|
@@ -77,7 +77,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
77
77
|
<step name="init_context">
|
|
78
78
|
Load todo context:
|
|
79
79
|
|
|
80
|
-
<!-- Context pre-injected above via WXP
|
|
80
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
81
81
|
|
|
82
82
|
Extract from init JSON: `todo_count`, `todos`, `pending_dir`.
|
|
83
83
|
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
<out type="string" name="state" />
|
|
29
29
|
</outs>
|
|
30
30
|
</shell>
|
|
31
|
-
<!-- CLEAR _auto_chain_active
|
|
31
|
+
<!-- CLEAR _auto_chain_active - chain ends here -->
|
|
32
32
|
<shell command="pi-gsd-tools">
|
|
33
33
|
<args>
|
|
34
34
|
<arg string="config-set" />
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
|
|
56
56
|
**Use `roadmap analyze` for comprehensive readiness check:**
|
|
57
57
|
|
|
58
|
-
<!-- Context pre-injected above via WXP
|
|
58
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
59
59
|
|
|
60
60
|
Extract `branching_strategy`, `phase_branch_template`, `milestone_branch_template`, and `commit_docs` from init JSON.
|
|
61
61
|
|
|
@@ -142,7 +142,7 @@ plain-text numbered list and ask the user to type their choice number.
|
|
|
142
142
|
<step name="initialize" priority="first">
|
|
143
143
|
Phase number from argument (required).
|
|
144
144
|
|
|
145
|
-
<!-- Context pre-injected above via WXP
|
|
145
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
146
146
|
|
|
147
147
|
Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`,
|
|
148
148
|
`phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `has_verification`,
|
|
@@ -173,7 +173,7 @@ Text mode applies to ALL workflows in the session, not just discuss-phase.
|
|
|
173
173
|
<step name="initialize" priority="first">
|
|
174
174
|
Phase number from argument (required).
|
|
175
175
|
|
|
176
|
-
<!-- Context pre-injected above via WXP
|
|
176
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
177
177
|
|
|
178
178
|
Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `has_verification`, `plan_count`, `roadmap_exists`, `planning_exists`.
|
|
179
179
|
|
|
@@ -52,7 +52,7 @@ Wait for response before continuing.
|
|
|
52
52
|
<step name="check_project">
|
|
53
53
|
**Check if project exists.**
|
|
54
54
|
|
|
55
|
-
<!-- Context pre-injected above via WXP
|
|
55
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
56
56
|
|
|
57
57
|
Track whether `.planning/` exists - some routes require it, others don't.
|
|
58
58
|
</step>
|
|
@@ -82,14 +82,14 @@ If no: warn once, proceed on current branch.
|
|
|
82
82
|
|
|
83
83
|
---
|
|
84
84
|
|
|
85
|
-
## Mode Selection (step 1
|
|
85
|
+
## Mode Selection (step 1 - always second)
|
|
86
86
|
|
|
87
87
|
Ask the user ONE binary question:
|
|
88
88
|
|
|
89
89
|
> **"How should I behave when I hit a doubt, error, or scope deviation?"**
|
|
90
90
|
>
|
|
91
|
-
> - **Interactive**
|
|
92
|
-
> - **Silent**
|
|
91
|
+
> - **Interactive** - Stop and ask me; I'll guide you through it
|
|
92
|
+
> - **Silent** - Try to self-correct; only surface unrecoverable blockers
|
|
93
93
|
|
|
94
94
|
Store as `MODE` (interactive | silent). Do not ask again.
|
|
95
95
|
|
|
@@ -120,10 +120,10 @@ Read:
|
|
|
120
120
|
|
|
121
121
|
Prompt (internal): *"Does executing this phase risk implementing anything not covered by active requirements, or conflict with what previous phases delivered? Rate: low / medium / high. One sentence reason."*
|
|
122
122
|
|
|
123
|
-
- **low**
|
|
124
|
-
- **medium**
|
|
125
|
-
- **high + interactive**
|
|
126
|
-
- **high + silent**
|
|
123
|
+
- **low** - continue silently
|
|
124
|
+
- **medium** - log in scope-log, continue
|
|
125
|
+
- **high + interactive** - surface to user, ask: proceed / adjust phase goal / stop
|
|
126
|
+
- **high + silent** - log prominently, continue, include in final report
|
|
127
127
|
|
|
128
128
|
### B. Execute Phase
|
|
129
129
|
|
|
@@ -136,14 +136,14 @@ Skill(skill="gsd-execute-phase", args="${N}")
|
|
|
136
136
|
Read new SUMMARY.md files from the phase directory.
|
|
137
137
|
|
|
138
138
|
Check:
|
|
139
|
-
1. **Undelivered must-haves**
|
|
140
|
-
2. **Scope creep**
|
|
141
|
-
3. **Requirement drift**
|
|
139
|
+
1. **Undelivered must-haves** - PLAN.md `must_haves` entries absent from SUMMARY
|
|
140
|
+
2. **Scope creep** - files modified that are outside this phase's stated scope
|
|
141
|
+
3. **Requirement drift** - work done that has no matching REQUIREMENTS entry
|
|
142
142
|
|
|
143
143
|
Classify result as `SCOPE_STATUS`:
|
|
144
|
-
- **clean**
|
|
145
|
-
- **drift**
|
|
146
|
-
- **violation**
|
|
144
|
+
- **clean** - continue
|
|
145
|
+
- **drift** - log + warn, continue
|
|
146
|
+
- **violation** - trigger recovery (see §F)
|
|
147
147
|
|
|
148
148
|
### D. Verify
|
|
149
149
|
|
|
@@ -156,12 +156,12 @@ Default threshold: **80%**. Override with `--uat-threshold N`.
|
|
|
156
156
|
|
|
157
157
|
### E. Gate Check
|
|
158
158
|
|
|
159
|
-
| Condition
|
|
160
|
-
|
|
161
|
-
| UAT pass rate < threshold | Ask: fix gaps now or continue? | → Recovery loop
|
|
162
|
-
| Context remaining < 20%
|
|
163
|
-
| SCOPE_STATUS = violation
|
|
164
|
-
| All gates pass
|
|
159
|
+
| Condition | Interactive | Silent |
|
|
160
|
+
| ------------------------- | ------------------------------ | ---------------------- |
|
|
161
|
+
| UAT pass rate < threshold | Ask: fix gaps now or continue? | → Recovery loop |
|
|
162
|
+
| Context remaining < 20% | Warn, ask: stop or continue? | → Write HANDOFF, stop |
|
|
163
|
+
| SCOPE_STATUS = violation | Surface details, ask | → Recovery loop |
|
|
164
|
+
| All gates pass | Continue to checkpoint | Continue to checkpoint |
|
|
165
165
|
|
|
166
166
|
### F. Recovery Loop
|
|
167
167
|
|
|
@@ -177,7 +177,7 @@ When triggered:
|
|
|
177
177
|
- Silent: write HANDOFF files (see §G), stop
|
|
178
178
|
```
|
|
179
179
|
|
|
180
|
-
### G. Hard Stop
|
|
180
|
+
### G. Hard Stop - HANDOFF Files
|
|
181
181
|
|
|
182
182
|
On unrecoverable stop, write two files matching original GSD pause-work convention:
|
|
183
183
|
|
|
@@ -232,11 +232,11 @@ pi-gsd-tools state update last_activity $(date -u +%Y-%m-%d)
|
|
|
232
232
|
pi-gsd-tools commit "chore: complete phase ${N}" --files .planning/
|
|
233
233
|
```
|
|
234
234
|
|
|
235
|
-
Announce: `✓ Phase ${N} complete
|
|
235
|
+
Announce: `✓ Phase ${N} complete - UAT: ${pass_rate}% Scope: ${scope_status}`
|
|
236
236
|
|
|
237
237
|
---
|
|
238
238
|
|
|
239
|
-
## After All Phases
|
|
239
|
+
## After All Phases - Mode Split
|
|
240
240
|
|
|
241
241
|
### Interactive mode
|
|
242
242
|
|
|
@@ -257,7 +257,7 @@ Stop. The user owns the audit decision.
|
|
|
257
257
|
|
|
258
258
|
---
|
|
259
259
|
|
|
260
|
-
### Silent mode
|
|
260
|
+
### Silent mode - Auto Lifecycle
|
|
261
261
|
|
|
262
262
|
Only in silent mode. Display transition banner:
|
|
263
263
|
```
|
|
@@ -273,19 +273,19 @@ Read config once:
|
|
|
273
273
|
- `config.workflow.auto_retry_tech_debt_budget` (default: `1`)
|
|
274
274
|
|
|
275
275
|
Initialise accumulators (persist across the outer loop):
|
|
276
|
-
- `gaps_store = []`
|
|
277
|
-
- `debt_store = []`
|
|
278
|
-
- `gaps_phases_tried = []`
|
|
279
|
-
- `debt_phases_tried = []`
|
|
276
|
+
- `gaps_store = []` - unsatisfied requirements not yet resolved
|
|
277
|
+
- `debt_store = []` - tech debt items not yet resolved
|
|
278
|
+
- `gaps_phases_tried = []` - inserted phases attempted for gap closure
|
|
279
|
+
- `debt_phases_tried = []` - inserted phases attempted for debt resolution
|
|
280
280
|
- `outer_cycles = 0`
|
|
281
281
|
|
|
282
282
|
---
|
|
283
283
|
|
|
284
|
-
#### OUTER LOOP
|
|
284
|
+
#### OUTER LOOP - Full audit cycle
|
|
285
285
|
|
|
286
286
|
`LABEL: outer_loop`
|
|
287
287
|
|
|
288
|
-
**Step A
|
|
288
|
+
**Step A - Full audit**
|
|
289
289
|
|
|
290
290
|
```
|
|
291
291
|
Skill(skill="gsd-audit-milestone")
|
|
@@ -294,14 +294,14 @@ Skill(skill="gsd-audit-milestone")
|
|
|
294
294
|
If no result / malformed → Write HANDOFF (§G), stop.
|
|
295
295
|
|
|
296
296
|
Extract from audit result:
|
|
297
|
-
- `current_gaps[]`
|
|
298
|
-
- `current_debt[]`
|
|
297
|
+
- `current_gaps[]` - unsatisfied requirement IDs + affected phase numbers
|
|
298
|
+
- `current_debt[]` - tech debt items + affected phase numbers
|
|
299
299
|
|
|
300
300
|
If both empty → AUDIT PASSED. Proceed to Step D (complete).
|
|
301
301
|
|
|
302
302
|
---
|
|
303
303
|
|
|
304
|
-
**Step B
|
|
304
|
+
**Step B - Gap closure loop** (only if `current_gaps` non-empty)
|
|
305
305
|
|
|
306
306
|
If `auto_retry_audit = false`: add `current_gaps` to `gaps_store`, skip to Step C.
|
|
307
307
|
|
|
@@ -317,7 +317,7 @@ While `current_gaps` non-empty and `auto_retry_audit_budget > 0`:
|
|
|
317
317
|
4. Execute it:
|
|
318
318
|
Skill(skill="gsd-execute-phase", args="${new_phase}")
|
|
319
319
|
5. Track: append new_phase to gaps_phases_tried
|
|
320
|
-
6. Targeted re-audit
|
|
320
|
+
6. Targeted re-audit - affected phases only:
|
|
321
321
|
Skill(skill="gsd-audit-milestone", args="--phases ${gap_affected_phases}")
|
|
322
322
|
7. Re-read current_gaps from result
|
|
323
323
|
- Resolved? current_gaps = [], break loop
|
|
@@ -331,7 +331,7 @@ After loop:
|
|
|
331
331
|
|
|
332
332
|
---
|
|
333
333
|
|
|
334
|
-
**Step C
|
|
334
|
+
**Step C - Tech debt loop** (only if `current_debt` non-empty)
|
|
335
335
|
|
|
336
336
|
If `auto_retry_tech_debt = false`: add `current_debt` to `debt_store`, skip to final gate.
|
|
337
337
|
|
|
@@ -347,7 +347,7 @@ While `current_debt` non-empty and `auto_retry_tech_debt_budget > 0`:
|
|
|
347
347
|
4. Execute it:
|
|
348
348
|
Skill(skill="gsd-execute-phase", args="${new_phase}")
|
|
349
349
|
5. Track: append new_phase to debt_phases_tried
|
|
350
|
-
6. Targeted re-audit
|
|
350
|
+
6. Targeted re-audit - affected phases only:
|
|
351
351
|
Skill(skill="gsd-audit-milestone", args="--phases ${debt_affected_phases}")
|
|
352
352
|
7. Re-read current_debt from result
|
|
353
353
|
- Resolved? current_debt = [], break loop
|
|
@@ -375,7 +375,7 @@ If anything remains in stores:
|
|
|
375
375
|
|
|
376
376
|
---
|
|
377
377
|
|
|
378
|
-
#### Step D
|
|
378
|
+
#### Step D - Complete Milestone
|
|
379
379
|
|
|
380
380
|
```
|
|
381
381
|
Skill(skill="gsd-complete-milestone", args="${milestone_version}")
|
|
@@ -387,7 +387,7 @@ ls .planning/milestones/v${milestone_version}-ROADMAP.md 2>/dev/null || true
|
|
|
387
387
|
```
|
|
388
388
|
If absent → Write HANDOFF, stop. Message: "complete-milestone did not produce archive files."
|
|
389
389
|
|
|
390
|
-
#### Step E
|
|
390
|
+
#### Step E - Cleanup
|
|
391
391
|
|
|
392
392
|
```
|
|
393
393
|
Skill(skill="gsd-cleanup")
|
|
@@ -420,7 +420,7 @@ If no: leave the worktree open. Tell the user how to merge manually.
|
|
|
420
420
|
GSD ► EXECUTE-MILESTONE ▸ COMPLETE 🎉
|
|
421
421
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
422
422
|
|
|
423
|
-
Milestone: ${milestone_version}
|
|
423
|
+
Milestone: ${milestone_version} - ${milestone_name}
|
|
424
424
|
Phases: ${done}/${total} complete
|
|
425
425
|
Avg UAT: ${avg_uat}%
|
|
426
426
|
Lifecycle: audit ✅ → complete ✅ → cleanup ✅
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
<step name="init_context" priority="first">
|
|
60
60
|
Load execution context (paths only to minimize orchestrator context):
|
|
61
61
|
|
|
62
|
-
<!-- Context pre-injected above via WXP
|
|
62
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
63
63
|
|
|
64
64
|
Extract from init JSON: `executor_model`, `commit_docs`, `sub_repos`, `phase_dir`, `phase_number`, `plans`, `summaries`, `incomplete_plans`, `state_path`, `config_path`.
|
|
65
65
|
|
|
@@ -94,7 +94,7 @@ Validate first argument is an integer.
|
|
|
94
94
|
<step name="init_context">
|
|
95
95
|
Load phase operation context:
|
|
96
96
|
|
|
97
|
-
<!-- Context pre-injected above via WXP
|
|
97
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
98
98
|
|
|
99
99
|
Check `roadmap_exists` from init JSON. If false:
|
|
100
100
|
```
|
|
@@ -60,7 +60,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
60
60
|
|
|
61
61
|
## 1. Setup
|
|
62
62
|
|
|
63
|
-
<!-- Context pre-injected above via WXP
|
|
63
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
64
64
|
|
|
65
65
|
Parse JSON for: `workspace_base`, `workspaces`, `workspace_count`.
|
|
66
66
|
|
|
@@ -97,7 +97,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
97
97
|
|
|
98
98
|
Bootstrap via manager init:
|
|
99
99
|
|
|
100
|
-
<!-- Context pre-injected above via WXP
|
|
100
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
101
101
|
|
|
102
102
|
Parse JSON for: `milestone_version`, `milestone_name`, `phase_count`, `completed_count`, `in_progress_count`, `phases`, `recommended_actions`, `all_complete`, `waiting_signal`.
|
|
103
103
|
|
|
@@ -128,7 +128,7 @@ Proceed to dashboard step.
|
|
|
128
128
|
|
|
129
129
|
**Every time this step is reached**, re-read state from disk to pick up changes from background agents:
|
|
130
130
|
|
|
131
|
-
<!-- Context pre-injected above via WXP
|
|
131
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
132
132
|
|
|
133
133
|
Parse the full JSON. Build the dashboard display.
|
|
134
134
|
|
|
@@ -69,7 +69,7 @@ Documents are reference material for the agent when planning/executing. Always i
|
|
|
69
69
|
<step name="init_context" priority="first">
|
|
70
70
|
Load codebase mapping context:
|
|
71
71
|
|
|
72
|
-
<!-- Context pre-injected above via WXP
|
|
72
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
73
73
|
|
|
74
74
|
Extract from init JSON: `mapper_model`, `commit_docs`, `codebase_dir`, `existing_maps`, `has_maps`, `codebase_dir_exists`.
|
|
75
75
|
</step>
|
|
@@ -72,7 +72,7 @@ Designed for team onboarding - a new contributor can read the output and underst
|
|
|
72
72
|
|
|
73
73
|
## Step 1: Resolve Version
|
|
74
74
|
|
|
75
|
-
<!-- Context pre-injected above via WXP
|
|
75
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
76
76
|
|
|
77
77
|
This returns phase metadata. For each phase in the milestone scope:
|
|
78
78
|
|
|
@@ -177,7 +177,7 @@ Keep Accumulated Context section from previous milestone.
|
|
|
177
177
|
|
|
178
178
|
Delete MILESTONE-CONTEXT.md if exists (consumed).
|
|
179
179
|
|
|
180
|
-
<!-- Context pre-injected above via WXP
|
|
180
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
181
181
|
|
|
182
182
|
Extract from init JSON: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `research_enabled`, `current_milestone`, `project_exists`, `roadmap_exists`, `latest_completed_milestone`, `phase_dir_count`, `phase_archive_path`.
|
|
183
183
|
|
|
@@ -98,7 +98,7 @@ The document should describe what you want to build.
|
|
|
98
98
|
|
|
99
99
|
**MANDATORY FIRST STEP - Execute these checks before ANY user interaction:**
|
|
100
100
|
|
|
101
|
-
<!-- Context pre-injected above via WXP
|
|
101
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
102
102
|
|
|
103
103
|
Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git`, `project_path`.
|
|
104
104
|
|
|
@@ -66,7 +66,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
66
66
|
|
|
67
67
|
**MANDATORY FIRST STEP - Execute init command:**
|
|
68
68
|
|
|
69
|
-
<!-- Context pre-injected above via WXP
|
|
69
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
70
70
|
|
|
71
71
|
Parse JSON for: `default_workspace_base`, `child_repos`, `child_repo_count`, `worktree_available`, `is_git_repo`, `cwd_repo_name`, `project_root`.
|
|
72
72
|
|
|
@@ -44,14 +44,14 @@ Plan all unplanned phases in the current milestone in a single orchestrated sess
|
|
|
44
44
|
|
|
45
45
|
---
|
|
46
46
|
|
|
47
|
-
## Mode Selection (step 0
|
|
47
|
+
## Mode Selection (step 0 - always first)
|
|
48
48
|
|
|
49
49
|
Ask the user ONE binary question:
|
|
50
50
|
|
|
51
51
|
> **"Should I ask you questions during planning, or plan everything silently and flag doubts at the end?"**
|
|
52
52
|
>
|
|
53
|
-
> - **Interactive**
|
|
54
|
-
> - **Silent**
|
|
53
|
+
> - **Interactive** - I'll ask targeted questions per phase when I hit real ambiguity
|
|
54
|
+
> - **Silent** - Plan autonomously; collect flags for review at the end
|
|
55
55
|
|
|
56
56
|
Store the answer as `MODE` (interactive | silent). Do not ask again.
|
|
57
57
|
|
|
@@ -80,10 +80,10 @@ Read `.planning/REQUIREMENTS.md` and the phase entry from ROADMAP.md (goal + suc
|
|
|
80
80
|
Ask internally: *"Does executing this phase risk implementing anything not covered by active requirements, or conflict with what previous phases were meant to deliver?"*
|
|
81
81
|
|
|
82
82
|
Classify risk:
|
|
83
|
-
- **low**
|
|
84
|
-
- **medium**
|
|
85
|
-
- **high + interactive**
|
|
86
|
-
- **high + silent**
|
|
83
|
+
- **low** - continue silently
|
|
84
|
+
- **medium** - log in scope-notes, continue
|
|
85
|
+
- **high + interactive** - surface to user before proceeding, ask whether to adjust or continue
|
|
86
|
+
- **high + silent** - log prominently, continue, surface in final summary
|
|
87
87
|
|
|
88
88
|
### 2. Plan the Phase
|
|
89
89
|
|
|
@@ -101,7 +101,7 @@ After each phase plan is committed:
|
|
|
101
101
|
pi-gsd-tools state update current_phase ${N}
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
Announce: `✓ Phase ${N} planned
|
|
104
|
+
Announce: `✓ Phase ${N} planned - ${plan_count} plan(s) created`
|
|
105
105
|
|
|
106
106
|
Check context remaining. If < 25%: stop immediately, emit summary of planned vs remaining phases, suggest `/gsd-plan-milestone --from ${next_unplanned}` to continue.
|
|
107
107
|
|
|
@@ -62,7 +62,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
62
62
|
<step name="init_context">
|
|
63
63
|
**Load progress context (paths only):**
|
|
64
64
|
|
|
65
|
-
<!-- Context pre-injected above via WXP
|
|
65
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
66
66
|
|
|
67
67
|
Extract from init JSON: `project_exists`, `roadmap_exists`, `state_exists`, `phases`, `current_phase`, `next_phase`, `milestone_version`, `completed_count`, `phase_count`, `paused_at`, `state_path`, `roadmap_path`, `project_path`, `config_path`.
|
|
68
68
|
|
|
@@ -189,7 +189,7 @@ If `$FULL_MODE` only:
|
|
|
189
189
|
|
|
190
190
|
**Step 2: Initialize**
|
|
191
191
|
|
|
192
|
-
<!-- Context pre-injected above via WXP
|
|
192
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
193
193
|
|
|
194
194
|
Parse JSON for: `planner_model`, `executor_model`, `checker_model`, `verifier_model`, `commit_docs`, `branch_name`, `quick_id`, `slug`, `date`, `timestamp`, `quick_dir`, `task_dir`, `roadmap_exists`, `planning_exists`.
|
|
195
195
|
|
|
@@ -93,7 +93,7 @@ Exit.
|
|
|
93
93
|
<step name="init_context">
|
|
94
94
|
Load phase operation context:
|
|
95
95
|
|
|
96
|
-
<!-- Context pre-injected above via WXP
|
|
96
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
97
97
|
|
|
98
98
|
Extract: `phase_found`, `phase_dir`, `phase_number`, `commit_docs`, `roadmap_exists`.
|
|
99
99
|
|
|
@@ -66,7 +66,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
66
66
|
|
|
67
67
|
Extract workspace name from $ARGUMENTS.
|
|
68
68
|
|
|
69
|
-
<!-- Context pre-injected above via WXP
|
|
69
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
70
70
|
|
|
71
71
|
Parse JSON for: `workspace_name`, `workspace_path`, `has_manifest`, `strategy`, `repos`, `repo_count`, `dirty_repos`, `has_dirty_repos`.
|
|
72
72
|
|
|
@@ -100,7 +100,7 @@ Resolve model for:
|
|
|
100
100
|
|
|
101
101
|
@.pi/gsd/references/phase-argument-parsing.md
|
|
102
102
|
|
|
103
|
-
<!-- Context pre-injected above via WXP
|
|
103
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
104
104
|
|
|
105
105
|
## Step 4: Spawn Researcher
|
|
106
106
|
|
|
@@ -84,7 +84,7 @@ Instantly restore full project context so "Where were we?" has an immediate, com
|
|
|
84
84
|
<step name="initialize">
|
|
85
85
|
Load all context in one call:
|
|
86
86
|
|
|
87
|
-
<!-- Context pre-injected above via WXP
|
|
87
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
88
88
|
|
|
89
89
|
Parse JSON for: `state_exists`, `roadmap_exists`, `project_exists`, `planning_exists`, `has_interrupted_agent`, `interrupted_agent_id`, `commit_docs`.
|
|
90
90
|
|
|
@@ -78,7 +78,7 @@ A plan that survives review from 2-3 independent AI systems is more robust.
|
|
|
78
78
|
<step name="detect_clis">
|
|
79
79
|
Check which AI CLIs are available on the system:
|
|
80
80
|
|
|
81
|
-
<!-- Context pre-injected above via WXP
|
|
81
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
82
82
|
|
|
83
83
|
Read from init: `phase_dir`, `phase_number`, `padded_phase`.
|
|
84
84
|
|
|
@@ -37,7 +37,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
37
37
|
<step name="ensure_and_load_config">
|
|
38
38
|
Ensure config exists and load current state:
|
|
39
39
|
|
|
40
|
-
<!-- Context pre-injected above via WXP
|
|
40
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
41
41
|
|
|
42
42
|
Creates `.planning/config.json` with defaults if missing and loads current config values.
|
|
43
43
|
</step>
|
|
@@ -51,7 +51,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
51
51
|
<step name="initialize">
|
|
52
52
|
Parse arguments and load project state:
|
|
53
53
|
|
|
54
|
-
<!-- Context pre-injected above via WXP
|
|
54
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
55
55
|
|
|
56
56
|
Parse from init JSON: `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `padded_phase`, `commit_docs`.
|
|
57
57
|
|
|
@@ -108,7 +108,7 @@ Valid GSD subagent types (use exact names - do not fall back to 'general-purpose
|
|
|
108
108
|
|
|
109
109
|
## 1. Initialize
|
|
110
110
|
|
|
111
|
-
<!-- Context pre-injected above via WXP
|
|
111
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
112
112
|
|
|
113
113
|
Parse JSON for: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_context`, `has_research`, `commit_docs`.
|
|
114
114
|
|
|
@@ -94,7 +94,7 @@ Valid GSD subagent types (use exact names - do not fall back to 'general-purpose
|
|
|
94
94
|
|
|
95
95
|
## 0. Initialize
|
|
96
96
|
|
|
97
|
-
<!-- Context pre-injected above via WXP
|
|
97
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
98
98
|
|
|
99
99
|
Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `commit_docs`.
|
|
100
100
|
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
|
|
93
93
|
## 0. Initialize
|
|
94
94
|
|
|
95
|
-
<!-- Context pre-injected above via WXP
|
|
95
|
+
<!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
|
|
96
96
|
|
|
97
97
|
Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`.
|
|
98
98
|
|