maxsimcli 4.15.4 → 4.16.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.
@@ -1,3 +1,10 @@
1
+ ## [4.15.4](https://github.com/maystudios/maxsimcli/compare/v4.15.3...v4.15.4) (2026-03-12)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * remove stale references to dashboard, plan-phase, milestones shims and enhance statusline ([b895bf2](https://github.com/maystudios/maxsimcli/commit/b895bf22228117e93ad36cfb358777a4591109ed))
7
+
1
8
  ## [4.15.3](https://github.com/maystudios/maxsimcli/compare/v4.15.2...v4.15.3) (2026-03-11)
2
9
 
3
10
 
@@ -7,7 +7,7 @@
7
7
  | Agent | Role | Tools | Preloaded Skills | On-Demand Skills |
8
8
  |-------|------|-------|-----------------|-----------------|
9
9
  | `executor` | Implements plans with atomic commits and deviation handling | Read, Write, Edit, Bash, Grep, Glob | handoff-contract, evidence-collection, commit-conventions | tool-priority-guide, agent-system-map |
10
- | `planner` | Creates PLAN.md files with task breakdown and goal-backward verification | Read, Write, Bash, Grep, Glob | handoff-contract, input-validation | research-methodology, agent-system-map |
10
+ | `planner` | Creates plans (posted as GitHub Issue comments) with task breakdown and goal-backward verification | Read, Write, Bash, Grep, Glob | handoff-contract, input-validation | research-methodology, agent-system-map |
11
11
  | `researcher` | Investigates domains with source evaluation and confidence levels | Read, Bash, Grep, Glob, WebFetch | handoff-contract, evidence-collection | research-methodology, tool-priority-guide |
12
12
  | `verifier` | Verifies work against specifications with fresh evidence and hard gates | Read, Bash, Grep, Glob | verification-gates, evidence-collection, handoff-contract | agent-system-map, tool-priority-guide |
13
13
 
@@ -19,7 +19,7 @@ You are a plan executor. You implement plans atomically -- one commit per task,
19
19
  ## Input Validation
20
20
 
21
21
  Before any work, verify required inputs exist:
22
- - Plan content (provided by the orchestrator from a GitHub Issue comment, or as a PLAN.md file path)
22
+ - Plan content (provided by the orchestrator from a GitHub Issue comment)
23
23
  - STATE.md readable -- `test -f .planning/STATE.md`
24
24
 
25
25
  If missing, return immediately:
@@ -2,8 +2,8 @@
2
2
  name: planner
3
3
  description: >-
4
4
  Creates executable phase plans with task breakdown, dependency analysis,
5
- and goal-backward verification. Use when planning phases, creating PLAN.md
6
- files, breaking work into tasks, or performing gap closure planning.
5
+ and goal-backward verification. Use when planning phases, creating plans
6
+ (posted as GitHub Issue comments), breaking work into tasks, or performing gap closure planning.
7
7
  tools: Read, Write, Bash, Grep, Glob
8
8
  model: inherit
9
9
  skills:
@@ -24,13 +24,13 @@ Context and research input is provided from GitHub Issue comments (type: `contex
24
24
  Before any work, verify required inputs exist:
25
25
  - ROADMAP.md -- `test -f .planning/ROADMAP.md`
26
26
  - REQUIREMENTS.md -- `test -f .planning/REQUIREMENTS.md`
27
- - Phase directory -- `test -d .planning/phases/{phase}/` (if running in local mode) or context provided in spawn prompt (if running in GitHub mode)
27
+ - Phase context provided in spawn prompt (GitHub Issues is the source of truth)
28
28
 
29
29
  If missing, return immediately using the input-validation error format.
30
30
 
31
31
  ## Planning Protocol
32
32
 
33
- 1. **Load context** -- read ROADMAP.md, REQUIREMENTS.md, and context/research provided from GitHub Issue comments (or local CONTEXT.md, RESEARCH.md if in local mode)
33
+ 1. **Load context** -- read ROADMAP.md, REQUIREMENTS.md, and context/research provided from GitHub Issue comments
34
34
  2. **Identify scope** -- extract phase goal, requirements, and user decisions from context
35
35
  3. **Break into tasks** -- each task is an atomic unit with clear action, done criteria, verify block, and file list
36
36
  4. **Build dependency graph** -- identify which tasks depend on others
@@ -109,17 +109,12 @@ When `phase_issue_number` is set (GitHub integration active):
109
109
 
110
110
  **Filtering:** Skip plans where `has_summary: true`. If `--gaps-only`: also skip non-gap_closure plans. If all filtered: "No matching incomplete plans" → exit.
111
111
 
112
- **Fallback -- no GitHub integration:**
112
+ **If GitHub integration is NOT active** (`phase_issue_number` is not set):
113
113
 
114
- When `phase_issue_number` is not set, use local file scanning:
115
-
116
- ```bash
117
- PLAN_INDEX=$(node ~/.claude/maxsim/bin/maxsim-tools.cjs phase-plan-index "${PHASE_NUMBER}")
114
+ GitHub Issues is the source of truth for plans. Report the error and exit:
115
+ ```
116
+ GitHub integration required. Ensure GitHub Issues is configured: run /maxsim:init to set up.
118
117
  ```
119
-
120
- Parse JSON for: `phase`, `plans[]` (each with `id`, `wave`, `autonomous`, `objective`, `files_modified`, `task_count`, `has_summary`), `waves` (map of wave number → plan IDs), `incomplete`, `has_checkpoints`.
121
-
122
- **Skip plans where `has_summary: true`** (local SUMMARY.md file present). If `--gaps-only`: also skip non-gap_closure plans.
123
118
 
124
119
  Report:
125
120
  ```
@@ -307,7 +302,7 @@ For each wave:
307
302
 
308
303
  1. **Describe what's being built (BEFORE spawning):**
309
304
 
310
- Read each plan's `<objective>` from the plan comment content (or local PLAN.md in fallback). Extract what's being built and why.
305
+ Read each plan's `<objective>` from the plan comment content. Extract what's being built and why.
311
306
 
312
307
  ```
313
308
  ---
@@ -550,12 +545,6 @@ When GitHub integration is active, look for `<!-- maxsim:type=uat -->` comments
550
545
  mcp_get_issue_detail(issue_number: parent_phase_issue_number)
551
546
  ```
552
547
 
553
- As fallback, check local files:
554
- ```bash
555
- PARENT_INFO=$(node ~/.claude/maxsim/bin/maxsim-tools.cjs find-phase "${PARENT_PHASE}" --raw)
556
- # Extract directory from PARENT_INFO JSON, then find UAT file in that directory
557
- ```
558
-
559
548
  **If no parent UAT found:** Skip this step (gap-closure may have been triggered by VERIFICATION.md instead).
560
549
 
561
550
  **3. Update UAT gap statuses:**
@@ -612,11 +601,6 @@ mcp_get_issue_detail(issue_number: phase_issue_number)
612
601
 
613
602
  Look for `<!-- maxsim:type=verification -->` comment and parse `status:` field.
614
603
 
615
- Fallback:
616
- ```bash
617
- grep "^status:" "$PHASE_DIR"/*-VERIFICATION.md | cut -d: -f2 | tr -d ' '
618
- ```
619
-
620
604
  | Status | Action |
621
605
  |--------|--------|
622
606
  | `passed` | → update_roadmap |
@@ -758,7 +742,7 @@ Plan content passed directly from GitHub comments to subagents — no local PLAN
758
742
  - **Dependency chain breaks:** Wave 1 fails → Wave 2 dependents likely fail → user chooses attempt or skip
759
743
  - **All agents in wave fail:** Systemic issue → stop, report for investigation
760
744
  - **Checkpoint unresolvable:** "Skip this plan?" or "Abort phase execution?" → record partial progress in STATE.md
761
- - **GitHub integration unavailable:** Fall back to local file I/O for all plan reading and summary writing
745
+ - **GitHub integration unavailable:** Report error GitHub Issues is the source of truth for plans and summaries
762
746
  </failure_handling>
763
747
 
764
748
  <resumption>
@@ -51,25 +51,13 @@ mcp_detect_external_edits(issue_number: phase_issue_number)
51
51
 
52
52
  If external edits detected: warn user and offer to re-read the plan before proceeding.
53
53
 
54
- **Fallback -- no GitHub context:**
54
+ **If no GitHub context is available:**
55
55
 
56
- If no `phase_issue_number` or `plan_comment_body` was passed:
56
+ GitHub Issues is the source of truth for plans. If no `phase_issue_number` or `plan_comment_body` was passed, report the error and exit:
57
57
 
58
- ```bash
59
- # Use plans/summaries from INIT JSON, or list files
60
- ls .planning/phases/XX-name/*-PLAN.md 2>/dev/null | sort
61
- ls .planning/phases/XX-name/*-SUMMARY.md 2>/dev/null | sort
62
58
  ```
63
-
64
- Find first PLAN without matching SUMMARY. Decimal phases supported (`01.1-hotfix/`).
65
-
66
- <if mode="yolo">
67
- Auto-approve: `⚡ Execute {phase}-{plan}-PLAN.md [Plan X of Y for Phase Z]` → parse_segments.
68
- </if>
69
-
70
- <if mode="interactive" OR="custom with gates.execute_next_plan true">
71
- Present plan identification, wait for confirmation.
72
- </if>
59
+ Plan content must be provided via GitHub Issue comment. Ensure GitHub integration is configured.
60
+ ```
73
61
  </step>
74
62
 
75
63
  <step name="record_start_time">
@@ -144,12 +132,7 @@ Pattern B only (verify-only checkpoints). Skip for A/C.
144
132
 
145
133
  The plan content IS the execution instructions. Follow exactly. If plan references CONTEXT.md: honor user's vision throughout.
146
134
 
147
- When plan was loaded from a GitHub comment (github_context passed): the plan content is already in memory from the load_plan_from_github step.
148
-
149
- When plan is loaded from a local file (fallback):
150
- ```bash
151
- cat .planning/phases/XX-name/{phase}-{plan}-PLAN.md
152
- ```
135
+ The plan content is already in memory from the load_plan_from_github step (loaded from the GitHub Issue comment passed by the orchestrator).
153
136
  </step>
154
137
 
155
138
  <step name="pre_execution_gates">
@@ -193,7 +176,7 @@ fi
193
176
  node ~/.claude/maxsim/bin/maxsim-tools.cjs phases list --type summaries --raw
194
177
  # Extract the second-to-last summary from the JSON result
195
178
  ```
196
- If previous phase has unresolved issues (check summary comments on phase issue or local SUMMARY.md "Issues Encountered" / "Next Phase Readiness" blockers): AskUserQuestion(header="Previous Issues", options: "Proceed anyway" | "Address first" | "Review previous").
179
+ If previous phase has unresolved issues (check summary comments on phase issue for "Issues Encountered" / "Next Phase Readiness" blockers): AskUserQuestion(header="Previous Issues", options: "Proceed anyway" | "Address first" | "Review previous").
197
180
  </step>
198
181
 
199
182
  <step name="execute">
@@ -449,7 +432,7 @@ mcp_post_comment(
449
432
 
450
433
  Record the comment URL/ID as `SUMMARY_COMMENT_ID` for future reference.
451
434
 
452
- **Fallback (no GitHub integration):** Write `{phase}-{plan}-SUMMARY.md` to `.planning/phases/XX-name/` as before.
435
+ GitHub Issues is the source of truth -- summaries are always posted as GitHub comments.
453
436
  </step>
454
437
 
455
438
  <step name="review_cycle">
@@ -1038,7 +1021,7 @@ mcp_post_comment(
1038
1021
  )
1039
1022
  ```
1040
1023
 
1041
- **Fallback (no GitHub integration):** Write VERIFICATION.md and UAT.md to the phase directory as before.
1024
+ GitHub Issues is the source of truth -- verification and UAT results are always posted as GitHub comments.
1042
1025
  </step>
1043
1026
 
1044
1027
  <step name="update_codebase_map">
@@ -1066,12 +1049,6 @@ mcp_list_sub_issues(issue_number: phase_issue_number)
1066
1049
 
1067
1050
  Count open vs closed sub-issues. Map closed count to plans complete.
1068
1051
 
1069
- Fallback (no GitHub):
1070
- ```bash
1071
- ls -1 .planning/phases/[current-phase-dir]/*-PLAN.md 2>/dev/null | wc -l
1072
- ls -1 .planning/phases/[current-phase-dir]/*-SUMMARY.md 2>/dev/null | wc -l
1073
- ```
1074
-
1075
1052
  | Condition | Route | Action |
1076
1053
  |-----------|-------|--------|
1077
1054
  | open task sub-issues remain | **A: More plans** | Find next incomplete plan (by open sub-issues or missing summary comment). Yolo: auto-continue. Interactive: show next plan, suggest `/maxsim:execute {phase}`. STOP here. |
@@ -87,10 +87,13 @@ When GitHub integration is active (`phase_issue_number` is set):
87
87
  - `plan_count`: total plan comments found
88
88
  - `incomplete_count`: count of incomplete plans
89
89
 
90
- When GitHub integration is NOT active (no `phase_issue_number`), fall back to local file scanning:
91
- ```bash
92
- PLAN_INDEX=$(node .claude/maxsim/bin/maxsim-tools.cjs phase-plan-index "${PHASE_NUMBER}")
90
+ When GitHub integration is NOT active (no `phase_issue_number`):
91
+ ```
92
+ No plans found for Phase {phase_number}. GitHub Issues is the source of truth for plans.
93
+
94
+ Ensure GitHub integration is configured: run /maxsim:init to set up GitHub Issues.
93
95
  ```
96
+ Exit workflow.
94
97
 
95
98
  ### 2b. Check for External Edits (WIRE-06)
96
99
 
@@ -332,11 +335,6 @@ mcp_get_issue_detail(issue_number: phase_issue_number)
332
335
 
333
336
  Look for the `<!-- maxsim:type=verification -->` comment and parse the `status:` field from its body.
334
337
 
335
- Also fall back to reading locally:
336
- ```bash
337
- grep "^status:" "$PHASE_DIR"/*-VERIFICATION.md | cut -d: -f2 | tr -d ' '
338
- ```
339
-
340
338
  **If `passed`:** Show verification gate and proceed to completion.
341
339
 
342
340
  ```
@@ -510,7 +508,7 @@ Display final results:
510
508
 
511
509
  <success_criteria>
512
510
  - [ ] Phase validated against roadmap
513
- - [ ] Plan inventory loaded from GitHub issue comments (falling back to local files if no GitHub integration)
511
+ - [ ] Plan inventory loaded from GitHub issue comments (GitHub Issues is the source of truth)
514
512
  - [ ] External edit detection warns user if phase issue was modified externally
515
513
  - [ ] Current state correctly detected from task sub-issue closure and summary comments
516
514
  - [ ] Re-entry flow works for already-executed phases
@@ -160,7 +160,7 @@ Rule 5: Phase "To Do" on GitHub board (not yet started)?
160
160
  -> Action: /maxsim:plan {N}
161
161
  -> Reasoning: "Phase {N} ({name}) needs planning."
162
162
 
163
- Sub-check: Does local CONTEXT.md exist?
163
+ Sub-check: Does a context comment exist on the phase GitHub Issue?
164
164
  -> If yes: "Discussion complete, ready for research + planning."
165
165
  -> If no: "Starting from discussion stage."
166
166
 
@@ -233,7 +233,7 @@ Or describe what you'd like to do:
233
233
  - If no phases exist on board: show `/maxsim:plan` prominently
234
234
  - Always include `/maxsim:quick` as it is always relevant
235
235
  - Always include an open-ended fallback ("Or describe what you'd like to do")
236
- - If GitHub not available (mcp calls fail): fall back to local ROADMAP analysis and note degraded mode
236
+ - If GitHub not available (mcp calls fail): note degraded mode, recommend resolving GitHub connectivity
237
237
 
238
238
  Wait for user selection, then dispatch the chosen command.
239
239
  </step>
@@ -85,10 +85,9 @@ Call `mcp_query_board` with the project number (from init context / config). Gro
85
85
  | Done | 3 | #9, #10, #11 |
86
86
  ```
87
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
88
+ **Cross-reference with local ROADMAP.md (for phase ordering only -- GitHub is authoritative for status):**
89
+ - Run `ROADMAP=$(node ~/.claude/maxsim/bin/maxsim-tools.cjs roadmap analyze)` to get local phase ordering data
90
+ - If local ROADMAP phase list differs from GitHub Issues, note in Issues Detected section (GitHub is the source of truth)
92
91
  </step>
93
92
 
94
93
  <step name="live_github_detail">
@@ -217,9 +216,9 @@ Identify the in-progress or interrupted phase (from `mcp_get_all_progress` or `m
217
216
 
218
217
  **Route B: Phase needs planning**
219
218
 
220
- Check if `{phase_num}-CONTEXT.md` exists in phase directory.
219
+ Check if a `<!-- maxsim:type=context -->` comment exists on the phase GitHub Issue.
221
220
 
222
- **If CONTEXT.md exists:**
221
+ **If context comment exists:**
223
222
 
224
223
  ```
225
224
  ---
@@ -236,7 +235,7 @@ Check if `{phase_num}-CONTEXT.md` exists in phase directory.
236
235
  ---
237
236
  ```
238
237
 
239
- **If CONTEXT.md does NOT exist:**
238
+ **If no context comment exists:**
240
239
 
241
240
  ```
242
241
  ---
@@ -244,7 +243,7 @@ Check if `{phase_num}-CONTEXT.md` exists in phase directory.
244
243
  ## ▶ Next Up
245
244
 
246
245
  **Phase {N}: {Name}** — {Goal from ROADMAP.md}
247
- <sub>No context yet — /maxsim:plan will start with discussion</sub>
246
+ <sub>No context comment yet — /maxsim:plan will start with discussion</sub>
248
247
 
249
248
  `/maxsim:plan {phase}`
250
249
 
@@ -335,8 +334,8 @@ Ready to plan the next milestone.
335
334
  - All work complete → offer milestone completion via `/maxsim:init`
336
335
  - Blockers present → highlight before offering to continue
337
336
  - 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
337
+ - Discrepancy between local ROADMAP and GitHub board → surface in Issues Detected (GitHub is authoritative)
338
+ - GitHub not available (mcp calls fail) → note degraded mode, recommend resolving GitHub connectivity
340
339
  </step>
341
340
 
342
341
  </process>
@@ -348,7 +347,7 @@ Ready to plan the next milestone.
348
347
  - [ ] Board column view shown via mcp_query_board
349
348
  - [ ] Per-phase task detail available via mcp_get_phase_progress and mcp_list_sub_issues
350
349
  - [ ] External edit detection via mcp_detect_external_edits
351
- - [ ] Cross-validation between local ROADMAP.md and GitHub board status
350
+ - [ ] Cross-reference local ROADMAP.md for phase ordering (GitHub is authoritative for status)
352
351
  - [ ] Phase gaps and discrepancies detected and surfaced in Issues Detected section
353
352
  - [ ] Current position clear with visual progress
354
353
  - [ ] What's next clearly explained
@@ -32,15 +32,16 @@ Parse JSON for: `executor_model`, `verifier_model`, `commit_docs`, `phase_found`
32
32
  </step>
33
33
 
34
34
  <step name="discover_plans">
35
- Find incomplete plans skip any plan that already has a matching SUMMARY.md:
35
+ Find incomplete plans by querying GitHub Issues (the source of truth for plans and completion status):
36
36
 
37
- ```bash
38
- PLAN_INDEX=$(node ~/.claude/maxsim/bin/maxsim-tools.cjs phase-plan-index "${PHASE_NUMBER}")
37
+ ```
38
+ mcp_get_issue_detail(issue_number: phase_issue_number)
39
+ mcp_list_sub_issues(issue_number: phase_issue_number)
39
40
  ```
40
41
 
41
- Parse JSON for: `plans[]` (each with `id`, `objective`, `files_modified`, `task_count`, `has_summary`), `incomplete`.
42
+ Parse plan comments (`<!-- maxsim:type=plan -->`) from the phase issue. A plan is complete when all its task sub-issues are closed.
42
43
 
43
- **Filtering:** Skip plans where `has_summary: true`. If all plans complete: "All plans in phase already have summaries" — exit.
44
+ **Filtering:** Skip plans where all task sub-issues are closed. If all plans complete: "All plans in phase are already complete" — exit.
44
45
 
45
46
  Report:
46
47
  ```
@@ -58,11 +59,7 @@ Report:
58
59
  </step>
59
60
 
60
61
  <step name="load_plan">
61
- For each incomplete plan, read the plan file and extract the ordered task list:
62
-
63
- ```bash
64
- cat ${PHASE_DIR}/${PLAN_FILE}
65
- ```
62
+ For each incomplete plan, read the plan content from the GitHub Issue comment (loaded in discover_plans) and extract the ordered task list.
66
63
 
67
64
  Extract for each task:
68
65
  - **Task number** (sequential order in plan)
@@ -325,14 +322,7 @@ Display task completion:
325
322
  </step>
326
323
 
327
324
  <step name="create_summary">
328
- After all tasks in a plan complete, create SUMMARY.md:
329
-
330
- ```bash
331
- # Get the summary template
332
- cat ~/.claude/maxsim/templates/summary.md
333
- ```
334
-
335
- Create `{phase}-{plan}-SUMMARY.md` in the phase directory. Include:
325
+ After all tasks in a plan complete, build the summary content in memory and post it as a GitHub comment on the phase issue. Include:
336
326
 
337
327
  **Frontmatter:** phase, plan, subsystem, tags, requires/provides/affects, tech-stack, key-files.created/modified, key-decisions, requirements-completed (copy from PLAN.md frontmatter), duration, completed date.
338
328
 
@@ -356,12 +346,19 @@ Create `{phase}-{plan}-SUMMARY.md` in the phase directory. Include:
356
346
  - Deviations (if any)
357
347
  - Issues encountered
358
348
 
359
- Use `node ~/.claude/maxsim/bin/maxsim-tools.cjs` for template operations as needed.
349
+ Post summary to GitHub:
350
+ ```
351
+ mcp_post_comment(
352
+ issue_number: phase_issue_number,
353
+ type: "summary",
354
+ body: {summary_content}
355
+ )
356
+ ```
360
357
 
361
358
  Self-check:
362
359
  - Verify first 2 files from `key-files.created` exist on disk
363
360
  - Check `git log --oneline --all --grep="{phase}-{plan}"` returns commits
364
- - Append `## Self-Check: PASSED` or `## Self-Check: FAILED`
361
+ - Append `## Self-Check: PASSED` or `## Self-Check: FAILED` to summary content before posting
365
362
  </step>
366
363
 
367
364
  <step name="update_state">
@@ -396,23 +393,27 @@ node ~/.claude/maxsim/bin/maxsim-tools.cjs requirements mark-complete ${REQ_IDS}
396
393
  Task code already committed per-task. Commit planning artifacts:
397
394
 
398
395
  ```bash
399
- node ~/.claude/maxsim/bin/maxsim-tools.cjs commit "docs({phase}-{plan}): complete SDD execution" --files .planning/phases/${PHASE_DIR_NAME}/${PHASE}-${PLAN}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md .planning/REQUIREMENTS.md
396
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs commit "docs({phase}-{plan}): complete SDD execution" --files .planning/STATE.md .planning/ROADMAP.md .planning/REQUIREMENTS.md
400
397
  ```
398
+
399
+ Note: No local SUMMARY.md is committed -- summary was posted to GitHub as a comment.
401
400
  </step>
402
401
 
403
402
  <step name="offer_next">
404
403
  After all plans in the phase are processed:
405
404
 
406
- ```bash
407
- ls -1 .planning/phases/${PHASE_DIR_NAME}/*-PLAN.md 2>/dev/null | wc -l
408
- ls -1 .planning/phases/${PHASE_DIR_NAME}/*-SUMMARY.md 2>/dev/null | wc -l
405
+ Check completion by querying the phase issue's task sub-issues:
409
406
  ```
407
+ mcp_list_sub_issues(issue_number: phase_issue_number)
408
+ ```
409
+
410
+ Count open vs closed sub-issues to determine completion.
410
411
 
411
412
  | Condition | Route | Action |
412
413
  |-----------|-------|--------|
413
- | summaries < plans | **A: More plans** | Find next incomplete plan. Show next plan, suggest `/maxsim:execute {phase}` (SDD mode) to continue. |
414
- | summaries = plans, more phases exist | **B: Phase done** | Show completion, suggest `/maxsim:execute {phase}` (verification) then `/maxsim:plan {next}`. |
415
- | summaries = plans, last phase | **C: Milestone done** | Show banner, suggest `/maxsim:progress` (milestone completion) + `/maxsim:execute` (verification). |
414
+ | open sub-issues remain | **A: More plans** | Find next incomplete plan (by open sub-issues). Show next plan, suggest `/maxsim:execute {phase}` (SDD mode) to continue. |
415
+ | all sub-issues closed, more phases exist | **B: Phase done** | Show completion, suggest `/maxsim:execute {phase}` (verification) then `/maxsim:plan {next}`. |
416
+ | all sub-issues closed, last phase | **C: Milestone done** | Show banner, suggest `/maxsim:progress` (milestone completion) + `/maxsim:execute` (verification). |
416
417
 
417
418
  All routes: recommend `/clear` first for fresh context.
418
419
  </step>
@@ -428,5 +429,5 @@ All routes: recommend `/clear` first for fresh context.
428
429
  </failure_handling>
429
430
 
430
431
  <resumption>
431
- Re-run `/maxsim:execute {phase}` (SDD mode) — discover_plans finds completed SUMMARYs, skips them, resumes from first incomplete plan. Within a plan, completed tasks (those with commits matching the plan pattern) can be detected and skipped.
432
+ Re-run `/maxsim:execute {phase}` (SDD mode) — discover_plans queries GitHub for task sub-issue status, skips plans with all sub-issues closed, resumes from first incomplete plan. Within a plan, completed tasks (those with commits matching the plan pattern) can be detected and skipped.
432
433
  </resumption>