maxsimcli 4.12.0 → 4.14.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/dist/assets/CHANGELOG.md +14 -0
- package/dist/assets/templates/workflows/execute-phase.md +147 -56
- package/dist/assets/templates/workflows/execute-plan.md +213 -70
- package/dist/assets/templates/workflows/execute.md +149 -50
- package/dist/assets/templates/workflows/go.md +63 -59
- package/dist/assets/templates/workflows/progress.md +100 -133
- package/dist/assets/templates/workflows/verify-phase.md +104 -13
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<purpose>
|
|
2
|
-
Check project progress, milestone status, and offer milestone completion when all phases are done.
|
|
2
|
+
Check project progress, milestone status, and offer milestone completion when all phases are done. Reads status from live GitHub queries (always-live, no cached state). Detects phase gaps and intelligently routes to the next action.
|
|
3
3
|
</purpose>
|
|
4
4
|
|
|
5
5
|
<required_reading>
|
|
@@ -37,64 +37,91 @@ If missing both ROADMAP.md and PROJECT.md: suggest `/maxsim:init`.
|
|
|
37
37
|
</step>
|
|
38
38
|
|
|
39
39
|
<step name="load">
|
|
40
|
-
**
|
|
40
|
+
**Load local project context (always from local files per WIRE-02):**
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
- `ROADMAP=$(node ~/.claude/maxsim/bin/maxsim-tools.cjs roadmap analyze)`
|
|
42
|
+
Use targeted tools to get data needed for the report:
|
|
44
43
|
- `STATE=$(node ~/.claude/maxsim/bin/maxsim-tools.cjs state-snapshot)`
|
|
45
44
|
|
|
45
|
+
Read local files for project context:
|
|
46
|
+
- `.planning/config.json` — model profile, workflow flags
|
|
47
|
+
- `.planning/PROJECT.md` — project name and vision
|
|
48
|
+
- `.planning/REQUIREMENTS.md` — requirements context
|
|
49
|
+
- `.planning/STATE.md` — decisions, blockers, metrics
|
|
50
|
+
|
|
46
51
|
This minimizes orchestrator context usage.
|
|
47
52
|
</step>
|
|
48
53
|
|
|
49
|
-
<step name="
|
|
50
|
-
**Get
|
|
54
|
+
<step name="live_github_phase_overview">
|
|
55
|
+
**Get live phase status from GitHub (primary source — always-live, no cached state):**
|
|
56
|
+
|
|
57
|
+
Call `mcp_get_all_progress` to get progress for all phases. This returns live data from GitHub Issues:
|
|
58
|
+
- `phase_number`, `title`, `issue_number`
|
|
59
|
+
- `total_tasks`, `completed_tasks`, `remaining_tasks`
|
|
60
|
+
- `status` (the GitHub board column: To Do / In Progress / In Review / Done)
|
|
61
|
+
|
|
62
|
+
Display as formatted table:
|
|
51
63
|
|
|
52
|
-
```bash
|
|
53
|
-
ROADMAP=$(node ~/.claude/maxsim/bin/maxsim-tools.cjs roadmap analyze)
|
|
54
64
|
```
|
|
65
|
+
## GitHub Issues Progress (Live)
|
|
66
|
+
|
|
67
|
+
| Phase | Title | Issue | Completed | Total | Remaining | Status |
|
|
68
|
+
|-------|-------|-------|-----------|-------|-----------|--------|
|
|
69
|
+
| 01 | ... | #12 | 3 | 5 | 2 | In Progress |
|
|
70
|
+
| 02 | ... | #13 | 0 | 4 | 4 | To Do |
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Also get board column view:**
|
|
55
74
|
|
|
56
|
-
|
|
57
|
-
- All phases with disk status (complete/partial/planned/empty/no_directory)
|
|
58
|
-
- Goal and dependencies per phase
|
|
59
|
-
- Plan and summary counts per phase
|
|
60
|
-
- Aggregated stats: total plans, summaries, progress percent
|
|
61
|
-
- Current and next phase identification
|
|
75
|
+
Call `mcp_query_board` with the project number (from init context / config). Group items by status column (To Do, In Progress, In Review, Done). Display column counts and issue details:
|
|
62
76
|
|
|
63
|
-
|
|
77
|
+
```
|
|
78
|
+
## Board Status (Live)
|
|
79
|
+
|
|
80
|
+
| Column | Count | Issues |
|
|
81
|
+
|-------------|-------|--------|
|
|
82
|
+
| To Do | 2 | #13, #14 |
|
|
83
|
+
| In Progress | 1 | #12 |
|
|
84
|
+
| In Review | 0 | — |
|
|
85
|
+
| Done | 3 | #9, #10, #11 |
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Cross-validate with local ROADMAP.md:**
|
|
89
|
+
- Run `ROADMAP=$(node ~/.claude/maxsim/bin/maxsim-tools.cjs roadmap analyze)` to get local phase data
|
|
90
|
+
- Compare local completion status against GitHub board status
|
|
91
|
+
- Highlight any discrepancies between local and GitHub state in the Issues Detected section
|
|
64
92
|
</step>
|
|
65
93
|
|
|
66
|
-
<step name="
|
|
67
|
-
**
|
|
94
|
+
<step name="live_github_detail">
|
|
95
|
+
**Per-phase detail (when user requests or for current phase):**
|
|
68
96
|
|
|
69
|
-
|
|
70
|
-
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
97
|
+
For the current active phase (or any phase requested by user):
|
|
98
|
+
- Call `mcp_get_phase_progress` with the phase issue number to get task-level progress
|
|
99
|
+
- Call `mcp_list_sub_issues` to get individual task status with sub-issue details
|
|
100
|
+
- Display task breakdown with status indicators (✓ done / ⏳ in progress / ○ to do)
|
|
101
|
+
|
|
102
|
+
**Detect external edits:**
|
|
103
|
+
|
|
104
|
+
After reading phase data from GitHub, call `mcp_detect_external_edits` for each phase with the stored `body_hash`. Warn in the Issues Detected section if modifications were detected outside the normal workflow.
|
|
105
|
+
</step>
|
|
76
106
|
|
|
77
107
|
<step name="position">
|
|
78
|
-
**Parse current position from init context and
|
|
108
|
+
**Parse current position from init context and live GitHub data:**
|
|
79
109
|
|
|
80
|
-
- Use `current_phase` and `next_phase` from `$ROADMAP`
|
|
110
|
+
- Use `current_phase` and `next_phase` from `$ROADMAP` (local) cross-referenced with GitHub board status
|
|
81
111
|
- Note `paused_at` if work was paused (from `$STATE`)
|
|
82
|
-
- Count pending todos: use `
|
|
83
|
-
- Check for
|
|
84
|
-
|
|
112
|
+
- Count pending todos: use `mcp_list_todos` for live todo count
|
|
113
|
+
- Check for interrupted phases via `mcp_detect_interrupted`
|
|
114
|
+
</step>
|
|
85
115
|
|
|
86
116
|
<step name="report">
|
|
87
117
|
**Generate progress bar from maxsim-tools, then present rich status report:**
|
|
88
118
|
|
|
89
119
|
```bash
|
|
90
|
-
# Get formatted progress bar
|
|
120
|
+
# Get formatted progress bar (local computation)
|
|
91
121
|
PROGRESS_BAR=$(node ~/.claude/maxsim/bin/maxsim-tools.cjs progress phase-bars --raw)
|
|
92
|
-
|
|
93
|
-
# Get GitHub Issues-based progress (best-effort, may fail if gh not authenticated)
|
|
94
|
-
GH_PROGRESS=$(node ~/.claude/maxsim/bin/maxsim-tools.cjs mcp_get_all_progress 2>/dev/null || echo '{"error": "GitHub not available"}')
|
|
95
122
|
```
|
|
96
123
|
|
|
97
|
-
Present (
|
|
124
|
+
Present (GitHub Issues is the primary progress source; local ROADMAP is cross-validation):
|
|
98
125
|
|
|
99
126
|
```
|
|
100
127
|
# [Project Name]
|
|
@@ -102,13 +129,15 @@ Present (include GitHub Issues progress if available for cross-validation):
|
|
|
102
129
|
**Progress:** {PROGRESS_BAR}
|
|
103
130
|
**Profile:** [quality/balanced/budget]
|
|
104
131
|
|
|
105
|
-
##
|
|
106
|
-
|
|
107
|
-
|
|
132
|
+
## GitHub Issues Progress (Live)
|
|
133
|
+
[formatted table from mcp_get_all_progress — see live_github_phase_overview step]
|
|
134
|
+
|
|
135
|
+
## Board Status (Live)
|
|
136
|
+
[column view from mcp_query_board — see live_github_phase_overview step]
|
|
108
137
|
|
|
109
138
|
## Current Position
|
|
110
139
|
Phase [N] of [total]: [phase-name]
|
|
111
|
-
|
|
140
|
+
GitHub Status: [board column from live data]
|
|
112
141
|
CONTEXT: [✓ if has_context | - if not]
|
|
113
142
|
|
|
114
143
|
## Key Decisions Made
|
|
@@ -119,26 +148,16 @@ CONTEXT: [✓ if has_context | - if not]
|
|
|
119
148
|
- [extract from $STATE.blockers[]]
|
|
120
149
|
- [e.g. jq -r '.blockers[].text' from state-snapshot]
|
|
121
150
|
|
|
122
|
-
## GitHub Issues Progress
|
|
123
|
-
(If GH_PROGRESS available and not error)
|
|
124
|
-
- Phase completion status from GitHub Issues
|
|
125
|
-
- Cross-validate with local ROADMAP.md progress
|
|
126
|
-
- Highlight any discrepancies between local and GitHub state
|
|
127
|
-
|
|
128
151
|
## Issues Detected
|
|
129
152
|
(Only show if gaps found during analysis)
|
|
130
|
-
- Phase [N]: [issue description, e.g., "
|
|
131
|
-
- Phase [M]: [issue description, e.g., "
|
|
153
|
+
- Phase [N]: [issue description, e.g., "External edit detected — body_hash mismatch"]
|
|
154
|
+
- Phase [M]: [issue description, e.g., "Local: complete, GitHub: In Progress — discrepancy"]
|
|
132
155
|
|
|
133
156
|
## Pending Todos
|
|
134
157
|
- [count] pending — /maxsim:quick --todo to review
|
|
135
158
|
|
|
136
|
-
## Active Debug Sessions
|
|
137
|
-
- [count] active — /maxsim:debug to continue
|
|
138
|
-
(Only show this section if count > 0)
|
|
139
|
-
|
|
140
159
|
## What's Next
|
|
141
|
-
[Next phase/plan objective from roadmap
|
|
160
|
+
[Next phase/plan objective from live GitHub data and local roadmap]
|
|
142
161
|
```
|
|
143
162
|
|
|
144
163
|
**Performance metrics table truncation:**
|
|
@@ -152,54 +171,40 @@ When displaying the performance metrics table from STATE.md (the `## Performance
|
|
|
152
171
|
</step>
|
|
153
172
|
|
|
154
173
|
<step name="route">
|
|
155
|
-
**Determine next action based on
|
|
156
|
-
|
|
157
|
-
**Step 1: Count plans, summaries, and issues in current phase**
|
|
174
|
+
**Determine next action based on live GitHub data.**
|
|
158
175
|
|
|
159
|
-
|
|
176
|
+
**Step 1: Get live phase state from GitHub**
|
|
160
177
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
State: "This phase has {X} plans, {Y} summaries."
|
|
168
|
-
|
|
169
|
-
**Step 1.5: Check for unaddressed UAT gaps**
|
|
178
|
+
Call `mcp_get_all_progress` (already fetched above). Identify:
|
|
179
|
+
- Phases with status "In Progress" that have remaining tasks
|
|
180
|
+
- Phases with status "To Do" (not yet started)
|
|
181
|
+
- Phases with status "Done"
|
|
170
182
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
```bash
|
|
174
|
-
# Check for diagnosed UAT with gaps
|
|
175
|
-
grep -l "status: diagnosed" .planning/phases/[current-phase-dir]/*-UAT.md 2>/dev/null
|
|
176
|
-
```
|
|
183
|
+
**Step 1.5: Check for interrupted or external edit issues**
|
|
177
184
|
|
|
178
|
-
|
|
179
|
-
- `uat_with_gaps`: UAT.md files with status "diagnosed" (gaps need fixing)
|
|
185
|
+
Call `mcp_detect_interrupted` to check for any phases that were interrupted mid-execution. If any are found, note them — they take priority over new work.
|
|
180
186
|
|
|
181
|
-
**Step 2: Route based on
|
|
187
|
+
**Step 2: Route based on live GitHub status**
|
|
182
188
|
|
|
183
189
|
| Condition | Meaning | Action |
|
|
184
190
|
|-----------|---------|--------|
|
|
185
|
-
|
|
|
186
|
-
|
|
|
187
|
-
|
|
|
188
|
-
|
|
|
191
|
+
| Interrupted phase detected | Work was cut off | Go to **Route A** (resume) |
|
|
192
|
+
| Phase "In Progress" with remaining tasks | Unfinished execution | Go to **Route A** (continue) |
|
|
193
|
+
| Phase "To Do" | Phase not yet started | Go to **Route B** |
|
|
194
|
+
| All phases "Done" | Milestone complete | Go to **Route D** |
|
|
189
195
|
|
|
190
196
|
---
|
|
191
197
|
|
|
192
|
-
**Route A:
|
|
198
|
+
**Route A: Phase in progress or interrupted — continue execution**
|
|
193
199
|
|
|
194
|
-
|
|
195
|
-
Read its `<objective>` section.
|
|
200
|
+
Identify the in-progress or interrupted phase (from `mcp_get_all_progress` or `mcp_detect_interrupted`).
|
|
196
201
|
|
|
197
202
|
```
|
|
198
203
|
---
|
|
199
204
|
|
|
200
205
|
## ▶ Next Up
|
|
201
206
|
|
|
202
|
-
**{
|
|
207
|
+
**Phase {N}: [Phase Name]** — resuming execution
|
|
203
208
|
|
|
204
209
|
`/maxsim:execute {phase}`
|
|
205
210
|
|
|
@@ -250,50 +255,6 @@ Check if `{phase_num}-CONTEXT.md` exists in phase directory.
|
|
|
250
255
|
|
|
251
256
|
---
|
|
252
257
|
|
|
253
|
-
**Route E: UAT gaps need fix plans**
|
|
254
|
-
|
|
255
|
-
UAT.md exists with gaps (diagnosed issues). User needs to plan fixes.
|
|
256
|
-
|
|
257
|
-
```
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
## ⚠ UAT Gaps Found
|
|
261
|
-
|
|
262
|
-
**{phase_num}-UAT.md** has {N} gaps requiring fixes.
|
|
263
|
-
|
|
264
|
-
`/maxsim:plan {phase} --gaps`
|
|
265
|
-
|
|
266
|
-
<sub>`/clear` first → fresh context window</sub>
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
**Also available:**
|
|
271
|
-
- `/maxsim:execute {phase}` — execute phase plans (includes verification)
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
**Step 3: Check milestone status (only when phase complete)**
|
|
279
|
-
|
|
280
|
-
Read ROADMAP.md and identify:
|
|
281
|
-
1. Current phase number
|
|
282
|
-
2. All phase numbers in the current milestone section
|
|
283
|
-
|
|
284
|
-
Count total phases and identify the highest phase number.
|
|
285
|
-
|
|
286
|
-
State: "Current phase is {X}. Milestone has {N} phases (highest: {Y})."
|
|
287
|
-
|
|
288
|
-
**Route based on milestone status:**
|
|
289
|
-
|
|
290
|
-
| Condition | Meaning | Action |
|
|
291
|
-
|-----------|---------|--------|
|
|
292
|
-
| current phase < highest phase | More phases remain | Go to **Route C** |
|
|
293
|
-
| current phase = highest phase | Milestone complete | Go to **Route D** |
|
|
294
|
-
|
|
295
|
-
---
|
|
296
|
-
|
|
297
258
|
**Route C: Phase complete, more phases remain**
|
|
298
259
|
|
|
299
260
|
Read ROADMAP.md to get the next phase's name and goal.
|
|
@@ -318,14 +279,14 @@ Read ROADMAP.md to get the next phase's name and goal.
|
|
|
318
279
|
|
|
319
280
|
**Route D: Milestone complete**
|
|
320
281
|
|
|
321
|
-
All phases are
|
|
282
|
+
All phases are "Done" on the GitHub board. Offer milestone completion interactively:
|
|
322
283
|
|
|
323
284
|
```
|
|
324
285
|
---
|
|
325
286
|
|
|
326
287
|
## Milestone Complete!
|
|
327
288
|
|
|
328
|
-
All {N} phases are complete. Ready to wrap up?
|
|
289
|
+
All {N} phases are complete (all "Done" on GitHub board). Ready to wrap up?
|
|
329
290
|
|
|
330
291
|
1. Complete milestone (archive, create release notes) → `/maxsim:init` (detects milestone completion)
|
|
331
292
|
2. Start new milestone → `/maxsim:init` (starts new milestone flow)
|
|
@@ -373,21 +334,27 @@ Ready to plan the next milestone.
|
|
|
373
334
|
- Phase complete but next phase not planned → offer `/maxsim:plan [next]`
|
|
374
335
|
- All work complete → offer milestone completion via `/maxsim:init`
|
|
375
336
|
- Blockers present → highlight before offering to continue
|
|
376
|
-
-
|
|
377
|
-
-
|
|
337
|
+
- External edits detected → surface in Issues Detected section before routing
|
|
338
|
+
- Discrepancy between local ROADMAP and GitHub board → surface in Issues Detected, ask user to reconcile
|
|
339
|
+
- GitHub not available (mcp calls fail) → fall back to local ROADMAP analysis and note degraded mode
|
|
378
340
|
</step>
|
|
379
341
|
|
|
380
342
|
</process>
|
|
381
343
|
|
|
382
344
|
<success_criteria>
|
|
383
345
|
|
|
384
|
-
- [ ] Rich context provided (
|
|
385
|
-
- [ ] GitHub Issues progress shown (
|
|
386
|
-
- [ ]
|
|
346
|
+
- [ ] Rich context provided (decisions, blockers, issues)
|
|
347
|
+
- [ ] GitHub Issues progress shown as primary source (always-live reads via mcp_get_all_progress)
|
|
348
|
+
- [ ] Board column view shown via mcp_query_board
|
|
349
|
+
- [ ] Per-phase task detail available via mcp_get_phase_progress and mcp_list_sub_issues
|
|
350
|
+
- [ ] External edit detection via mcp_detect_external_edits
|
|
351
|
+
- [ ] Cross-validation between local ROADMAP.md and GitHub board status
|
|
352
|
+
- [ ] Phase gaps and discrepancies detected and surfaced in Issues Detected section
|
|
387
353
|
- [ ] Current position clear with visual progress
|
|
388
354
|
- [ ] What's next clearly explained
|
|
389
|
-
- [ ] Smart routing: /maxsim:execute if
|
|
355
|
+
- [ ] Smart routing: /maxsim:execute if in progress, /maxsim:plan if not started
|
|
390
356
|
- [ ] Milestone completion offered when all phases done
|
|
391
357
|
- [ ] User confirms before any action
|
|
392
358
|
- [ ] Seamless handoff to appropriate maxsim command
|
|
393
359
|
</success_criteria>
|
|
360
|
+
</output>
|
|
@@ -5,7 +5,7 @@ Before executing any step in this workflow, verify:
|
|
|
5
5
|
</sanity_check>
|
|
6
6
|
|
|
7
7
|
<purpose>
|
|
8
|
-
Verify phase goal achievement through goal-backward analysis. Check that the codebase delivers what the phase promised, not just that tasks completed.
|
|
8
|
+
Verify phase goal achievement through goal-backward analysis. Check that the codebase delivers what the phase promised, not just that tasks completed. Posts verification results as GitHub comments on the phase issue (no local VERIFICATION.md or UAT.md files are written).
|
|
9
9
|
|
|
10
10
|
Executed by a verification subagent spawned from execute-phase.md.
|
|
11
11
|
</purpose>
|
|
@@ -39,13 +39,16 @@ INIT=$(node ~/.claude/maxsim/bin/maxsim-tools.cjs init phase-op "${PHASE_ARG}")
|
|
|
39
39
|
|
|
40
40
|
Extract from init JSON: `phase_dir`, `phase_number`, `phase_name`, `has_plans`, `plan_count`.
|
|
41
41
|
|
|
42
|
-
Then load phase details
|
|
42
|
+
Then load phase details:
|
|
43
43
|
```bash
|
|
44
44
|
node ~/.claude/maxsim/bin/maxsim-tools.cjs roadmap get-phase "${phase_number}"
|
|
45
45
|
grep -E "^| ${phase_number}" .planning/REQUIREMENTS.md 2>/dev/null
|
|
46
|
-
ls "$phase_dir"/*-SUMMARY.md "$phase_dir"/*-PLAN.md 2>/dev/null
|
|
47
46
|
```
|
|
48
47
|
|
|
48
|
+
**Get the phase issue number from GitHub (live):**
|
|
49
|
+
|
|
50
|
+
Call `mcp_get_all_progress` and find the entry where `phase_number` matches. Extract `issue_number` — this is used for posting all verification results as GitHub comments.
|
|
51
|
+
|
|
49
52
|
Extract **phase goal** from ROADMAP.md (the outcome to verify, not tasks) and **requirements** from REQUIREMENTS.md if it exists.
|
|
50
53
|
</step>
|
|
51
54
|
|
|
@@ -172,7 +175,7 @@ For each requirement: parse description → identify supporting truths/artifacts
|
|
|
172
175
|
</step>
|
|
173
176
|
|
|
174
177
|
<step name="scan_antipatterns">
|
|
175
|
-
Extract files modified in this phase from
|
|
178
|
+
Extract files modified in this phase from local plan files, scan each:
|
|
176
179
|
|
|
177
180
|
| Pattern | Search | Severity |
|
|
178
181
|
|---------|--------|----------|
|
|
@@ -212,21 +215,105 @@ If gaps_found:
|
|
|
212
215
|
3. **Order by dependency:** Fix missing → fix stubs → fix wiring → verify.
|
|
213
216
|
</step>
|
|
214
217
|
|
|
215
|
-
<step name="
|
|
216
|
-
|
|
217
|
-
|
|
218
|
+
<step name="post_verification_to_github">
|
|
219
|
+
**Post verification results as a GitHub comment (primary output — no local file written).**
|
|
220
|
+
|
|
221
|
+
Build the verification content in memory using the same structured format as the verification report template. Then call `mcp_post_comment` with `type: 'verification'` on the phase issue:
|
|
222
|
+
|
|
218
223
|
```
|
|
224
|
+
mcp_post_comment({
|
|
225
|
+
issue_number: {PHASE_ISSUE_NUMBER},
|
|
226
|
+
type: 'verification',
|
|
227
|
+
body: {
|
|
228
|
+
status: 'passed' | 'gaps_found' | 'human_needed',
|
|
229
|
+
score: '{verified}/{total}',
|
|
230
|
+
phase: '{phase_number} — {phase_name}',
|
|
231
|
+
timestamp: '{ISO timestamp}',
|
|
232
|
+
truths_checked: [
|
|
233
|
+
{ truth: '...', status: 'VERIFIED | FAILED | UNCERTAIN', evidence: '...' }
|
|
234
|
+
],
|
|
235
|
+
artifacts_verified: [
|
|
236
|
+
{ path: '...', exists: true/false, substantive: true/false, wired: true/false, status: 'VERIFIED | STUB | MISSING | ORPHANED' }
|
|
237
|
+
],
|
|
238
|
+
key_links_validated: [
|
|
239
|
+
{ from: '...', to: '...', via: '...', status: 'WIRED | PARTIAL | NOT_WIRED' }
|
|
240
|
+
],
|
|
241
|
+
antipatterns: [
|
|
242
|
+
{ file: '...', line: N, pattern: '...', severity: 'Blocker | Warning | Info' }
|
|
243
|
+
],
|
|
244
|
+
human_verification_items: [
|
|
245
|
+
{ name: '...', steps: '...', expected: '...', reason: '...' }
|
|
246
|
+
],
|
|
247
|
+
gaps: [
|
|
248
|
+
{ description: '...', fix_plan: '...' }
|
|
249
|
+
],
|
|
250
|
+
fix_plans: [
|
|
251
|
+
{ name: '...', objective: '...', tasks: ['...'] }
|
|
252
|
+
]
|
|
253
|
+
}
|
|
254
|
+
})
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
The comment is the canonical record of this verification run.
|
|
258
|
+
</step>
|
|
259
|
+
|
|
260
|
+
<step name="run_uat">
|
|
261
|
+
**User Acceptance Testing (UAT):**
|
|
262
|
+
|
|
263
|
+
Present the human verification items to the user and walk through each one. After the user completes UAT:
|
|
264
|
+
|
|
265
|
+
Build the UAT results in memory, then post as a GitHub comment by calling `mcp_post_comment` with `type: 'uat'` on the phase issue:
|
|
266
|
+
|
|
267
|
+
```
|
|
268
|
+
mcp_post_comment({
|
|
269
|
+
issue_number: {PHASE_ISSUE_NUMBER},
|
|
270
|
+
type: 'uat',
|
|
271
|
+
body: {
|
|
272
|
+
status: 'passed' | 'gaps_found',
|
|
273
|
+
phase: '{phase_number} — {phase_name}',
|
|
274
|
+
timestamp: '{ISO timestamp}',
|
|
275
|
+
items: [
|
|
276
|
+
{ name: '...', result: 'pass | fail', notes: '...' }
|
|
277
|
+
],
|
|
278
|
+
gaps: [
|
|
279
|
+
{ description: '...', severity: 'Blocker | Warning' }
|
|
280
|
+
]
|
|
281
|
+
}
|
|
282
|
+
})
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Do NOT write a UAT.md file to `.planning/phases/`.
|
|
286
|
+
</step>
|
|
287
|
+
|
|
288
|
+
<step name="board_transition">
|
|
289
|
+
**Update GitHub board based on verification outcome.**
|
|
290
|
+
|
|
291
|
+
**If verification passes AND PR is merged:**
|
|
292
|
+
1. Call `mcp_move_issue` to move the phase issue to the "Done" column on the board
|
|
293
|
+
2. Call `mcp_close_issue` to close the phase issue
|
|
294
|
+
3. Report to orchestrator: phase complete, issue closed
|
|
295
|
+
|
|
296
|
+
**If verification passes but PR not yet merged:**
|
|
297
|
+
1. Keep the phase issue in "In Review" on the board
|
|
298
|
+
2. Note: board will be updated when PR merges
|
|
219
299
|
|
|
220
|
-
|
|
300
|
+
**If verification fails (gaps_found):**
|
|
301
|
+
1. Check current board column for the phase issue
|
|
302
|
+
2. If in "In Review": call `mcp_move_issue` to move back to "In Progress"
|
|
303
|
+
3. Post failure details as a verification comment (already done in post_verification_to_github step)
|
|
304
|
+
4. Note which gaps need fixing before re-verification
|
|
221
305
|
|
|
222
|
-
|
|
306
|
+
**If human_needed:**
|
|
307
|
+
1. Keep the phase issue in its current column (do not move)
|
|
308
|
+
2. The UAT comment posted above documents what needs human testing
|
|
223
309
|
</step>
|
|
224
310
|
|
|
225
311
|
<step name="return_to_orchestrator">
|
|
226
|
-
Return status (`passed` | `gaps_found` | `human_needed`), score (N/M must-haves),
|
|
312
|
+
Return status (`passed` | `gaps_found` | `human_needed`), score (N/M must-haves), GitHub issue number and comment URL.
|
|
227
313
|
|
|
228
|
-
If gaps_found: list gaps + recommended fix plan names.
|
|
229
|
-
If human_needed: list items requiring human testing.
|
|
314
|
+
If gaps_found: list gaps + recommended fix plan names. Phase issue has been moved back to "In Progress" on the board.
|
|
315
|
+
If human_needed: list items requiring human testing. UAT comment posted to GitHub issue.
|
|
316
|
+
If passed: phase issue moved to "Done" and closed on GitHub.
|
|
230
317
|
|
|
231
318
|
Orchestrator routes: `passed` → update_roadmap | `gaps_found` → create/execute fixes, re-verify | `human_needed` → present to user.
|
|
232
319
|
</step>
|
|
@@ -234,6 +321,7 @@ Orchestrator routes: `passed` → update_roadmap | `gaps_found` → create/execu
|
|
|
234
321
|
</process>
|
|
235
322
|
|
|
236
323
|
<success_criteria>
|
|
324
|
+
- [ ] Phase issue number retrieved from live GitHub via mcp_get_all_progress
|
|
237
325
|
- [ ] Must-haves established (from frontmatter or derived)
|
|
238
326
|
- [ ] All truths verified with status and evidence
|
|
239
327
|
- [ ] All artifacts checked at all three levels
|
|
@@ -243,6 +331,9 @@ Orchestrator routes: `passed` → update_roadmap | `gaps_found` → create/execu
|
|
|
243
331
|
- [ ] Human verification items identified
|
|
244
332
|
- [ ] Overall status determined
|
|
245
333
|
- [ ] Fix plans generated (if gaps_found)
|
|
246
|
-
- [ ] VERIFICATION.md
|
|
334
|
+
- [ ] Verification results posted as GitHub comment via mcp_post_comment (type: 'verification') — NO local VERIFICATION.md written
|
|
335
|
+
- [ ] UAT results posted as GitHub comment via mcp_post_comment (type: 'uat') — NO local UAT.md written
|
|
336
|
+
- [ ] Board transition executed: mcp_move_issue + mcp_close_issue on pass; mcp_move_issue back to In Progress on fail
|
|
247
337
|
- [ ] Results returned to orchestrator
|
|
248
338
|
</success_criteria>
|
|
339
|
+
</output>
|
package/package.json
CHANGED