pan-wizard 3.33.0 → 3.35.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.
Files changed (214) hide show
  1. package/README.md +29 -26
  2. package/agents/pan-conductor.md +18 -17
  3. package/agents/pan-counterfactual.md +2 -2
  4. package/agents/pan-debugger.md +30 -9
  5. package/agents/pan-design-checker.md +2 -1
  6. package/agents/pan-designer.md +2 -2
  7. package/agents/pan-distiller.md +3 -3
  8. package/agents/pan-document_code.md +14 -14
  9. package/agents/pan-executor.md +30 -9
  10. package/agents/pan-experiment-runner.md +9 -8
  11. package/agents/pan-hardener.md +1 -1
  12. package/agents/pan-integration-checker.md +2 -2
  13. package/agents/pan-knowledge.md +1 -1
  14. package/agents/pan-meta-reviewer.md +4 -4
  15. package/agents/pan-optimizer.md +39 -43
  16. package/agents/pan-phase-researcher.md +10 -10
  17. package/agents/pan-plan-checker.md +37 -34
  18. package/agents/pan-planner.md +57 -44
  19. package/agents/pan-previewer.md +1 -1
  20. package/agents/pan-project-researcher.md +12 -12
  21. package/agents/pan-release.md +1 -1
  22. package/agents/pan-research-synthesizer.md +3 -3
  23. package/agents/pan-reviewer.md +26 -3
  24. package/agents/pan-roadmapper.md +15 -14
  25. package/agents/pan-verifier.md +33 -25
  26. package/bin/install-lib.cjs +176 -38
  27. package/bin/install.js +81 -63
  28. package/commands/pan/army.md +15 -11
  29. package/commands/pan/assumptions.md +2 -2
  30. package/commands/pan/audit-deployment.md +11 -12
  31. package/commands/pan/cost.md +8 -8
  32. package/commands/pan/dashboard.md +0 -3
  33. package/commands/pan/debug.md +10 -7
  34. package/commands/pan/design-phase.md +5 -5
  35. package/commands/pan/discuss-phase.md +2 -0
  36. package/commands/pan/exec-phase.md +21 -37
  37. package/commands/pan/experiment.md +9 -8
  38. package/commands/pan/focus-auto.md +22 -20
  39. package/commands/pan/focus-design.md +7 -6
  40. package/commands/pan/focus-doc-audit.md +4 -3
  41. package/commands/pan/focus-drift-walking.md +4 -3
  42. package/commands/pan/focus-exec.md +6 -6
  43. package/commands/pan/focus-plan.md +12 -11
  44. package/commands/pan/focus-scan.md +5 -3
  45. package/commands/pan/focus-sync.md +3 -2
  46. package/commands/pan/git.md +8 -8
  47. package/commands/pan/health.md +2 -2
  48. package/commands/pan/hud.md +4 -7
  49. package/commands/pan/hygiene.md +14 -7
  50. package/commands/pan/knowledge.md +9 -10
  51. package/commands/pan/learn.md +10 -7
  52. package/commands/pan/links.md +4 -1
  53. package/commands/pan/map-codebase.md +1 -1
  54. package/commands/pan/mcp-bridge.md +19 -21
  55. package/commands/pan/milestone-done.md +6 -3
  56. package/commands/pan/milestone-new.md +1 -1
  57. package/commands/pan/new-project.md +10 -10
  58. package/commands/pan/optimize.md +18 -14
  59. package/commands/pan/patches.md +2 -6
  60. package/commands/pan/pause.md +1 -1
  61. package/commands/pan/phase-tests.md +3 -2
  62. package/commands/pan/plan-phase.md +9 -19
  63. package/commands/pan/preview.md +2 -3
  64. package/commands/pan/profile.md +2 -2
  65. package/commands/pan/quick.md +1 -1
  66. package/commands/pan/remove-phase.md +1 -1
  67. package/commands/pan/report.md +3 -7
  68. package/commands/pan/research-phase.md +16 -15
  69. package/commands/pan/resume.md +9 -11
  70. package/commands/pan/retro.md +5 -3
  71. package/commands/pan/review-deep.md +7 -9
  72. package/commands/pan/settings.md +1 -1
  73. package/commands/pan/verify-phase.md +0 -11
  74. package/commands/pan/what-if.md +3 -4
  75. package/hooks/dist/pan-context-monitor.js +352 -44
  76. package/hooks/dist/pan-cost-logger.js +30 -0
  77. package/hooks/dist/pan-guard.js +244 -0
  78. package/hooks/dist/pan-statusline.js +73 -24
  79. package/hooks/dist/pan-stop-guard.js +7 -2
  80. package/package.json +1 -1
  81. package/pan-wizard-core/bin/lib/agents-md.cjs +44 -6
  82. package/pan-wizard-core/bin/lib/bridge.cjs +6 -5
  83. package/pan-wizard-core/bin/lib/campaign.cjs +4 -2
  84. package/pan-wizard-core/bin/lib/commands-learnings.cjs +19 -2
  85. package/pan-wizard-core/bin/lib/commands.cjs +57 -6
  86. package/pan-wizard-core/bin/lib/config.cjs +7 -1
  87. package/pan-wizard-core/bin/lib/constants.cjs +18 -6
  88. package/pan-wizard-core/bin/lib/context-budget.cjs +12 -9
  89. package/pan-wizard-core/bin/lib/core.cjs +53 -19
  90. package/pan-wizard-core/bin/lib/cost-rebuild.cjs +13 -1
  91. package/pan-wizard-core/bin/lib/cost.cjs +142 -13
  92. package/pan-wizard-core/bin/lib/distill.cjs +6 -3
  93. package/pan-wizard-core/bin/lib/doc-lint.cjs +30 -11
  94. package/pan-wizard-core/bin/lib/findings.cjs +135 -21
  95. package/pan-wizard-core/bin/lib/focus.cjs +13 -4
  96. package/pan-wizard-core/bin/lib/frontmatter.cjs +105 -26
  97. package/pan-wizard-core/bin/lib/hygiene.cjs +184 -17
  98. package/pan-wizard-core/bin/lib/init.cjs +13 -4
  99. package/pan-wizard-core/bin/lib/knowledge.cjs +17 -1
  100. package/pan-wizard-core/bin/lib/learn-index.cjs +111 -10
  101. package/pan-wizard-core/bin/lib/learn-lint.cjs +30 -3
  102. package/pan-wizard-core/bin/lib/memory-optimize.cjs +8 -4
  103. package/pan-wizard-core/bin/lib/memory.cjs +508 -54
  104. package/pan-wizard-core/bin/lib/milestone.cjs +8 -3
  105. package/pan-wizard-core/bin/lib/optimize.cjs +97 -17
  106. package/pan-wizard-core/bin/lib/phase-gate.cjs +174 -0
  107. package/pan-wizard-core/bin/lib/phase-remove.cjs +85 -21
  108. package/pan-wizard-core/bin/lib/phase-report.cjs +8 -2
  109. package/pan-wizard-core/bin/lib/phase.cjs +39 -13
  110. package/pan-wizard-core/bin/lib/preview.cjs +34 -31
  111. package/pan-wizard-core/bin/lib/roadmap-compact.cjs +267 -0
  112. package/pan-wizard-core/bin/lib/roadmap.cjs +243 -9
  113. package/pan-wizard-core/bin/lib/runner.cjs +2 -1
  114. package/pan-wizard-core/bin/lib/state-compact.cjs +11 -6
  115. package/pan-wizard-core/bin/lib/state.cjs +43 -28
  116. package/pan-wizard-core/bin/lib/template.cjs +11 -4
  117. package/pan-wizard-core/bin/lib/verdict.cjs +140 -10
  118. package/pan-wizard-core/bin/lib/verify-integrity.cjs +181 -0
  119. package/pan-wizard-core/bin/lib/verify-plan-set.cjs +230 -0
  120. package/pan-wizard-core/bin/lib/verify-preflight.cjs +4 -13
  121. package/pan-wizard-core/bin/lib/verify-retro.cjs +5 -3
  122. package/pan-wizard-core/bin/lib/verify-scope.cjs +11 -7
  123. package/pan-wizard-core/bin/lib/verify.cjs +30 -28
  124. package/pan-wizard-core/bin/lib/whatif.cjs +53 -9
  125. package/pan-wizard-core/bin/pan-tools.cjs +114 -19
  126. package/pan-wizard-core/learnings/index.json +5 -5
  127. package/pan-wizard-core/mcp/merge-gate.cjs +14 -3
  128. package/pan-wizard-core/mcp/native-tools.cjs +3 -3
  129. package/pan-wizard-core/opencode/pan-wizard.js +139 -0
  130. package/pan-wizard-core/references/checkpoints.md +3 -3
  131. package/pan-wizard-core/references/continuation-format.md +3 -3
  132. package/pan-wizard-core/references/decimal-phase-calculation.md +2 -3
  133. package/pan-wizard-core/references/design-methodology.md +1 -1
  134. package/pan-wizard-core/references/git-integration.md +4 -6
  135. package/pan-wizard-core/references/git-planning-commit.md +2 -2
  136. package/pan-wizard-core/references/guardrails.md +2 -2
  137. package/pan-wizard-core/references/handoff-decisions.md +3 -3
  138. package/pan-wizard-core/references/model-profile-resolution.md +5 -5
  139. package/pan-wizard-core/references/model-profiles.md +15 -10
  140. package/pan-wizard-core/references/phase-argument-parsing.md +7 -7
  141. package/pan-wizard-core/references/planning-config.md +7 -7
  142. package/pan-wizard-core/references/tdd.md +10 -1
  143. package/pan-wizard-core/references/verdict-contract.md +6 -1
  144. package/pan-wizard-core/references/verification-patterns.md +5 -5
  145. package/pan-wizard-core/templates/codebase/architecture.md +2 -2
  146. package/pan-wizard-core/templates/codebase/best-practices.md +2 -2
  147. package/pan-wizard-core/templates/codebase/concerns.md +3 -3
  148. package/pan-wizard-core/templates/codebase/integrations.md +6 -6
  149. package/pan-wizard-core/templates/codebase/relationships.md +2 -2
  150. package/pan-wizard-core/templates/codebase/stack.md +2 -2
  151. package/pan-wizard-core/templates/codebase/structure.md +4 -4
  152. package/pan-wizard-core/templates/codebase/testing.md +4 -4
  153. package/pan-wizard-core/templates/config.json +2 -6
  154. package/pan-wizard-core/templates/continue-here.md +1 -1
  155. package/pan-wizard-core/templates/debug-subagent-prompt.md +5 -3
  156. package/pan-wizard-core/templates/debug.md +15 -1
  157. package/pan-wizard-core/templates/milestone-archive.md +6 -6
  158. package/pan-wizard-core/templates/milestone.md +1 -1
  159. package/pan-wizard-core/templates/phase-prompt.md +31 -17
  160. package/pan-wizard-core/templates/planner-subagent-prompt.md +5 -5
  161. package/pan-wizard-core/templates/preview-report.md +1 -1
  162. package/pan-wizard-core/templates/research-project/architecture.md +3 -3
  163. package/pan-wizard-core/templates/research-project/features.md +1 -1
  164. package/pan-wizard-core/templates/research-project/pitfalls.md +1 -1
  165. package/pan-wizard-core/templates/research-project/stack.md +3 -3
  166. package/pan-wizard-core/templates/research.md +5 -5
  167. package/pan-wizard-core/templates/retrospective.md +1 -1
  168. package/pan-wizard-core/templates/roadmap.md +15 -15
  169. package/pan-wizard-core/templates/state.md +4 -4
  170. package/pan-wizard-core/templates/summary-complex.md +1 -0
  171. package/pan-wizard-core/templates/summary-minimal.md +1 -0
  172. package/pan-wizard-core/templates/summary-standard.md +2 -1
  173. package/pan-wizard-core/templates/summary.md +18 -2
  174. package/pan-wizard-core/templates/uat.md +3 -3
  175. package/pan-wizard-core/templates/user-setup.md +8 -8
  176. package/pan-wizard-core/templates/verification-report.md +53 -8
  177. package/pan-wizard-core/workflows/add-phase.md +1 -1
  178. package/pan-wizard-core/workflows/assumptions.md +1 -1
  179. package/pan-wizard-core/workflows/diagnose-issues.md +4 -4
  180. package/pan-wizard-core/workflows/discuss-phase.md +10 -8
  181. package/pan-wizard-core/workflows/exec-phase.md +75 -95
  182. package/pan-wizard-core/workflows/execute-plan.md +8 -7
  183. package/pan-wizard-core/workflows/health.md +13 -12
  184. package/pan-wizard-core/workflows/help.md +8 -9
  185. package/pan-wizard-core/workflows/learn.md +13 -11
  186. package/pan-wizard-core/workflows/map-codebase.md +10 -10
  187. package/pan-wizard-core/workflows/milestone-audit.md +10 -10
  188. package/pan-wizard-core/workflows/milestone-gaps.md +18 -25
  189. package/pan-wizard-core/workflows/milestone-new.md +7 -6
  190. package/pan-wizard-core/workflows/new-project.md +17 -25
  191. package/pan-wizard-core/workflows/optimize.md +11 -9
  192. package/pan-wizard-core/workflows/pause.md +6 -1
  193. package/pan-wizard-core/workflows/phase-tests.md +4 -4
  194. package/pan-wizard-core/workflows/plan-phase.md +53 -42
  195. package/pan-wizard-core/workflows/profile.md +2 -2
  196. package/pan-wizard-core/workflows/progress.md +6 -8
  197. package/pan-wizard-core/workflows/quick.md +7 -5
  198. package/pan-wizard-core/workflows/remove-phase.md +1 -1
  199. package/pan-wizard-core/workflows/research-phase.md +9 -5
  200. package/pan-wizard-core/workflows/resume-project.md +4 -6
  201. package/pan-wizard-core/workflows/retro.md +3 -1
  202. package/pan-wizard-core/workflows/settings.md +16 -24
  203. package/pan-wizard-core/workflows/todo-check.md +4 -3
  204. package/pan-wizard-core/workflows/transition.md +16 -12
  205. package/pan-wizard-core/workflows/update.md +25 -17
  206. package/pan-wizard-core/workflows/verify-phase.md +22 -20
  207. package/pan-zcode/KNOWN-BETA-RISKS.md +2 -2
  208. package/pan-zcode/README.md +7 -7
  209. package/pan-zcode/bin/install-zcode.js +1 -1
  210. package/scripts/build-hooks.js +1 -0
  211. package/scripts/build-plugin.js +3 -1
  212. package/scripts/generate-skills-docs.py +15 -6
  213. package/scripts/prompt-lint.cjs +167 -0
  214. package/scripts/test-surface.cjs +1 -0
@@ -1,5 +1,5 @@
1
1
  <purpose>
2
- Create executable phase prompts (plan.md files) for a roadmap phase with integrated research and verification. Default flow: Research (if needed) -> Plan -> Verify -> Done. Orchestrates pan-phase-researcher, pan-planner, and pan-plan-checker agents with a revision loop (max 3 iterations).
2
+ Create executable phase prompts (plan.md files) for a roadmap phase with integrated research and verification. Default flow: Research (if needed) -> Plan -> Verify -> Done. Orchestrates pan-phase-researcher, pan-planner, and pan-plan-checker agents with a revision loop (at most 2 revisions, up to 3 checks).
3
3
  </purpose>
4
4
 
5
5
  <required_reading>
@@ -8,7 +8,7 @@ Read all files referenced by the invoking prompt's execution_context before star
8
8
  @~/.claude/pan-wizard-core/references/ui-brand.md
9
9
  @~/.claude/pan-wizard-core/references/guardrails.md
10
10
 
11
- > **Also see:** `~/.claude/pan-wizard-core/learnings/universal/` — AI-derived patterns from prior experiments. **Don't skim the whole folder.** Run `pan-tools learn topics-for --agent planner --token-budget 5000 --raw` to load only the topics tagged relevant for planning at the configured budget. Per P-RES-002 (distractor-density research), reading every topic degrades reasoning even at modest token counts.
11
+ > **Also see:** `~/.claude/pan-wizard-core/learnings/universal/` — AI-derived patterns from prior experiments. **Don't skim the whole folder.** Run `pan-tools learn topics-for --agent planner --cue "<phase goal; the files it touches>" --token-budget 5000 --raw` to load the topics that match this task, within the budget; if none matches, it falls back to the topics tagged relevant for planning. Per P-RES-002 (distractor-density research), reading every topic degrades reasoning even at modest token counts.
12
12
  </required_reading>
13
13
 
14
14
  ## Phase 0 — Clarify Phase Scope (recommended)
@@ -19,7 +19,7 @@ Before drafting the phase plan, confirm:
19
19
  2. **What's deliberately out of scope?**
20
20
  3. **Any constraints or dependencies on other phases?**
21
21
 
22
- If the answers aren't already in `.planning/requirements.md` or the phase context file, ask the user. A 2-minute clarification prevents 30-minute rework downstream.
22
+ If the answers aren't already in the phase's roadmap section and requirement lines (`pan-tools roadmap slice <phase> --raw` prints them) or the phase context file, ask the user — except with `--auto` or `workflow.auto_advance: true`, where you proceed with what the files hold (as step 4 does). A 2-minute clarification prevents 30-minute rework downstream.
23
23
 
24
24
  ## Re-Read Checkpoints
25
25
 
@@ -44,7 +44,7 @@ INIT=$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs init plan-phase "$PHASE"
44
44
 
45
45
  Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_enabled`, `plan_checker_enabled`, `nyquist_validation_enabled`, `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `plan_count`, `planning_exists`, `roadmap_exists`, `phase_req_ids`.
46
46
 
47
- **File paths (for <files_to_read> blocks):** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`, `verification_path`, `uat_path`. These are null if files don't exist.
47
+ **File paths (for <files_to_read> blocks):** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`, `verification_path`, `uat_path`. The first three are always set, even when the file is missing; the other four are absent (treat as null) when their file does not exist.
48
48
 
49
49
  **If `planning_exists` is false:** Error — run `/pan:new-project` first.
50
50
 
@@ -63,9 +63,9 @@ Extract `--prd <filepath>` from $ARGUMENTS. If present, set PRD_FILE to the file
63
63
 
64
64
  **If no phase number:** Detect next unplanned phase from roadmap.
65
65
 
66
- **If `phase_found` is false:** Validate phase exists in roadmap.md. If valid, create the directory using `phase_slug` and `padded_phase` from init:
66
+ **If `phase_found` is false:** Validate phase exists in roadmap.md. If valid, create the directory (scaffold pads the number and honours the planning root) and use the path it prints as `phase_dir`:
67
67
  ```bash
68
- mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
68
+ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs scaffold phase-dir --phase "${PHASE}" --name "{phase_name}" --raw
69
69
  ```
70
70
 
71
71
  **Existing artifacts from init:** `has_research`, `has_plans`, `plan_count`.
@@ -78,6 +78,14 @@ PHASE_INFO=$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs roadmap get-phase
78
78
 
79
79
  **If `found` is false:** Error with available phases. **If `found` is true:** Extract `phase_number`, `phase_name`, `goal` from JSON.
80
80
 
81
+ ## 3.1. Write the Phase's Roadmap Slice
82
+
83
+ ```bash
84
+ SLICE_PATH=$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs roadmap slice "${PHASE}" --write --raw)
85
+ ```
86
+
87
+ `SLICE_PATH` (`{slice_path}` below) is what this phase needs from roadmap.md and requirements.md: a line for every phase, this phase's section, the goals of the phases it depends on, and its requirement lines. The researcher, planner and checker read it instead of the whole files, which a long project re-read on every turn of every spawn. Plans name it in their `<context>` too, so executors read it rather than the whole roadmap. **If `SLICE_PATH` is empty** (no roadmap section, or no phase directory yet), list `{roadmap_path}` and `{requirements_path}` wherever `{slice_path}` appears below.
88
+
81
89
  ## 3.5. Handle PRD Express Path
82
90
 
83
91
  **Skip if:** No `--prd` flag in arguments.
@@ -214,15 +222,15 @@ If "Run discuss-phase first": Display `/pan:discuss-phase {X}` and exit workflow
214
222
 
215
223
  **P-1401 lightweight-phase bypass (v3.7.3+):** Also skip per-phase research when ALL three are true:
216
224
 
217
- 1. The phase has only **1 plan** (read `plan_count` from init JSON)
218
- 2. The plan's `change_class` is in `[chore, docs, feat-trivial]` (i.e., scaffolding, config, single-file feat with ≤3 tasks)
225
+ 1. The phase's roadmap section expects no more than one plan (`**Plans:** 1 plan`, or the `TBD` / `0 plans` the roadmapper and `phase add`/`insert` write before any planning); init's `plan_count` counts plans already written, which is 0 before the first planning run
226
+ 2. The phase is scaffolding, config, docs or a single-file feature with ≤3 tasks (judge from its goal; no plan field records this)
219
227
  3. Project-level `research/architecture.md`, `features.md`, `stack.md` already exist (so the planner has broad context to draw from)
220
228
 
221
229
  In that case, log a `decision` trace event (`type: "decision", category: "skip-research-trivial"`) and proceed directly to step 6 (planning). Saves ~3 commits and ~5 minutes per trivial phase. Surfaced by panloop run: Phase 1 (project setup, scaffolding only) over-ceremonialized.
222
230
 
223
231
  This is a workflow-level optimization — the planner still produces a plan, just without per-phase research.md. Phase 2+ phases with substantive build work still go through full research.
224
232
 
225
- **P-1602 phase_record_compact (v3.7.5+):** When `workflow.phase_record_compact: true` AND the lightweight-phase bypass above triggers, also skip per-phase context.md creation (step 4) and emit a single combined `${PHASE_NUM}-record.md` after planning containing: goal, locked decisions (from project-level context), plan summary, must_haves. Reduces the planning output (context, research, plan) to a record and a plan for trivial phases; execution still writes the plan's summary. Off by default — opt-in via `pan-tools config-set workflow.phase_record_compact true`. Substantive phases (>1 plan or non-trivial change_class) still produce full per-phase artifacts regardless of this flag.
233
+ **P-1602 phase_record_compact (v3.7.5+):** When `workflow.phase_record_compact: true` AND the lightweight-phase bypass above triggers, also skip per-phase context.md creation (step 4) and emit a single combined `${padded_phase}-record.md` after planning containing: goal, locked decisions (from project-level context), plan summary, must_haves. Reduces the planning output (context, research, plan) to a record and a plan for trivial phases; execution still writes the plan's summary. Off by default — opt-in via `pan-tools config-set workflow.phase_record_compact true`. Substantive phases (more than one plan, or more than scaffolding, config, docs or a single-file feature) still produce full per-phase artifacts regardless of this flag.
226
234
 
227
235
  **If `has_research` is true (from init) AND no `--research` flag:** Use existing, skip to step 6.
228
236
 
@@ -240,7 +248,7 @@ Display banner:
240
248
  ### Spawn pan-phase-researcher
241
249
 
242
250
  ```bash
243
- PHASE_DESC=$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs roadmap get-phase "${PHASE}" | jq -r '.section')
251
+ PHASE_DESC=$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs roadmap get-phase "${PHASE}" --raw) # --raw prints the phase's section
244
252
  ```
245
253
 
246
254
  Research prompt:
@@ -253,7 +261,7 @@ Answer: "What do I need to know to PLAN this phase well?"
253
261
 
254
262
  <files_to_read>
255
263
  - {context_path} (USER DECISIONS from /pan:discuss-phase)
256
- - {requirements_path} (Project requirements)
264
+ - {slice_path} (This phase's roadmap and requirements)
257
265
  - {state_path} (Project decisions and history)
258
266
  </files_to_read>
259
267
 
@@ -266,14 +274,14 @@ Answer: "What do I need to know to PLAN this phase well?"
266
274
  </additional_context>
267
275
 
268
276
  <output>
269
- Write to: {phase_dir}/{phase_num}-research.md
277
+ Write to: {phase_dir}/{padded_phase}-research.md
270
278
  </output>
271
279
  ```
272
280
 
273
281
  ```
274
282
  Task(
275
- prompt="First, read ~/.claude/agents/pan-phase-researcher.md for your role and instructions.\n\n" + research_prompt,
276
- subagent_type="general-purpose",
283
+ prompt=research_prompt,
284
+ subagent_type="pan-phase-researcher",
277
285
  model="{researcher_model}",
278
286
  description="Research Phase {phase}"
279
287
  )
@@ -306,7 +314,7 @@ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs commit "docs(phase-${PHASE}): a
306
314
  **If not found (and nyquist enabled):** Display warning:
307
315
  ```
308
316
  ⚠ Nyquist validation enabled but researcher did not produce a Validation Architecture section.
309
- Continuing without validation strategy. Plans may fail Dimension 8 check.
317
+ Continuing without validation strategy. The plan checker skips Nyquist Compliance (Dimension 9).
310
318
  ```
311
319
 
312
320
  ## 6. Check Existing Plans
@@ -319,17 +327,7 @@ ls "${PHASE_DIR}"/*-plan.md 2>/dev/null
319
327
 
320
328
  ## 7. Use Context Paths from INIT
321
329
 
322
- Extract from INIT JSON:
323
-
324
- ```bash
325
- STATE_PATH=$(echo "$INIT" | jq -r '.state_path // empty')
326
- ROADMAP_PATH=$(echo "$INIT" | jq -r '.roadmap_path // empty')
327
- REQUIREMENTS_PATH=$(echo "$INIT" | jq -r '.requirements_path // empty')
328
- RESEARCH_PATH=$(echo "$INIT" | jq -r '.research_path // empty')
329
- VERIFICATION_PATH=$(echo "$INIT" | jq -r '.verification_path // empty')
330
- UAT_PATH=$(echo "$INIT" | jq -r '.uat_path // empty')
331
- CONTEXT_PATH=$(echo "$INIT" | jq -r '.context_path // empty')
332
- ```
330
+ `state_path`, `roadmap_path`, `requirements_path`, `research_path`, `verification_path`, `uat_path` and `context_path` come straight from the INIT JSON; fill the `{…_path}` placeholders below with them. `state_path`, `roadmap_path` and `requirements_path` are always set, even when the file is missing; the other four are absent from the JSON when their file does not exist.
333
331
 
334
332
  ## 8. Spawn pan-planner Agent
335
333
 
@@ -351,8 +349,7 @@ Planner prompt:
351
349
 
352
350
  <files_to_read>
353
351
  - {state_path} (Project State)
354
- - {roadmap_path} (Roadmap)
355
- - {requirements_path} (Requirements)
352
+ - {slice_path} (This phase's roadmap and requirements — read the whole roadmap.md or requirements.md only for something it leaves out)
356
353
  - {context_path} (USER DECISIONS from /pan:discuss-phase)
357
354
  - {research_path} (Technical Research)
358
355
  - {verification_path} (Verification Gaps - if --gaps)
@@ -386,8 +383,8 @@ Output consumed by /pan:exec-phase. Plans need:
386
383
 
387
384
  ```
388
385
  Task(
389
- prompt="First, read ~/.claude/agents/pan-planner.md for your role and instructions.\n\n" + filled_prompt,
390
- subagent_type="general-purpose",
386
+ prompt=filled_prompt,
387
+ subagent_type="pan-planner",
391
388
  model="{planner_model}",
392
389
  description="Plan Phase {phase}"
393
390
  )
@@ -395,12 +392,21 @@ Task(
395
392
 
396
393
  ## 9. Handle Planner Return
397
394
 
398
- - **`## PLANNING COMPLETE`:** Display plan count. If `--skip-verify` or `plan_checker_enabled` is false (from init): skip to step 13. Otherwise: step 10.
399
- - **`## CHECKPOINT REACHED`:** Present to user, get response, spawn continuation (step 12)
400
- - **`## PLANNING INCONCLUSIVE`:** Show attempts, offer: Add context / Retry / Manual
395
+ - **`## PLANNING COMPLETE`:** Display plan count. If `--skip-verify` or `plan_checker_enabled` is false (from init): still run the code checks at the start of step 10 (`verify plan-set`; they cost no model call), send any errors back to the planner (step 12), then skip to step 13. Otherwise: step 10.
396
+ - **`## GAP CLOSURE PLANS CREATED`:** (`--gaps` mode) Handle as `## PLANNING COMPLETE`.
397
+ - **`## CHECKPOINT REACHED`:** Present to user, get response, spawn a fresh planner (step 8's Task) with the response added to its prompt
401
398
 
402
399
  ## 10. Spawn pan-plan-checker Agent
403
400
 
401
+ **First, the checks code can make.** Run them before spending a checker:
402
+
403
+ ```bash
404
+ PLAN_SET=$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs verify plan-set "${PHASE_NUMBER}")
405
+ PLAN_SET_EXIT=$?
406
+ ```
407
+
408
+ Exit 1 means the plan set is broken in a way no review can wave through: a roadmap requirement no plan lists, two plans in one wave modifying the same file, a `depends_on` that names no plan or a plan in the same or a later wave, or a cycle. Send `PLAN_SET`'s `errors` to the planner as the revision context (step 12; it counts as an iteration) and do not spawn the checker for this set. Exit 0: continue, and pass any `warnings` to the checker.
409
+
404
410
  Display banner:
405
411
  ```
406
412
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -419,8 +425,7 @@ Checker prompt:
419
425
 
420
426
  <files_to_read>
421
427
  - {PHASE_DIR}/*-plan.md (Plans to verify)
422
- - {roadmap_path} (Roadmap)
423
- - {requirements_path} (Requirements)
428
+ - {slice_path} (This phase's roadmap and requirements — read the whole roadmap.md or requirements.md only for something it leaves out)
424
429
  - {context_path} (USER DECISIONS from /pan:discuss-phase)
425
430
  - {research_path} (Technical Research — includes Validation Architecture)
426
431
  </files_to_read>
@@ -431,6 +436,10 @@ Checker prompt:
431
436
  **Project skills:** Check .agents/skills/ directory (if exists) — verify plans account for project skill rules
432
437
  </verification_context>
433
438
 
439
+ <open_findings>
440
+ {output of `pan-tools findings list --phase {phase_number} --agent pan-plan-checker --status open`: empty on the first check; on a re-check, answer each in `resolutions`}
441
+ </open_findings>
442
+
434
443
  <expected_output>
435
444
  - ## VERIFICATION PASSED — all checks pass
436
445
  - ## ISSUES FOUND — structured issue list
@@ -461,9 +470,9 @@ The fallback reads the heading when the report carries no valid `pan-verdict` bl
461
470
  - **`passed`:** Display confirmation, proceed to step 13.
462
471
  - **`issues_found`:** Display issues, check iteration count, proceed to step 12.
463
472
 
464
- Each re-check in the revision loop overwrites the same file and is recorded again as the next attempt. The issues a revision resolved are closed by that record.
473
+ Each re-check in the revision loop overwrites the same file and is recorded again as the next attempt. The checker answers each earlier issue in `resolutions`; the record closes the ones it answers `resolved` with evidence, and one it neither reports nor answers stays open.
465
474
 
466
- ## 12. Revision Loop (Max 3 Iterations)
475
+ ## 12. Revision Loop (At Most 2 Revisions, 3 Checks)
467
476
 
468
477
  Track `iteration_count` (starts at 1 after initial plan + check).
469
478
 
@@ -495,8 +504,8 @@ Return what changed.
495
504
 
496
505
  ```
497
506
  Task(
498
- prompt="First, read ~/.claude/agents/pan-planner.md for your role and instructions.\n\n" + revision_prompt,
499
- subagent_type="general-purpose",
507
+ prompt=revision_prompt,
508
+ subagent_type="pan-planner",
500
509
  model="{planner_model}",
501
510
  description="Revise Phase {phase} plans"
502
511
  )
@@ -512,7 +521,7 @@ Offer: 1) Force proceed, 2) Provide guidance and retry, 3) Abandon
512
521
 
513
522
  **On "Force proceed":** record that planning continues past the remaining issues. Execution and the milestone audit will see them as deferred, with this reason:
514
523
  ```bash
515
- node ~/.claude/pan-wizard-core/bin/pan-tools.cjs findings dispose --phase "${PHASE_NUMBER}" --agent pan-plan-checker --open --as deferred --reason "force proceed after 3 plan revision iterations"
524
+ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs findings dispose --phase "${PHASE_NUMBER}" --agent pan-plan-checker --open --as deferred --reason "force proceed after 3 plan checks"
516
525
  ```
517
526
 
518
527
  ## 13. Present Final Status
@@ -585,7 +594,7 @@ Task(
585
594
 
586
595
  <instructions>
587
596
  1. Read exec-phase.md from execution_context for your complete workflow
588
- 2. Follow ALL steps: initialize, handle_branching, validate_phase, discover_and_group_plans, execute_waves, aggregate_results, close_parent_artifacts, verify_phase_goal, update_roadmap
597
+ 2. Follow ALL steps: initialize, handle_branching, validate_phase, discover_and_group_plans, execute_waves, checkpoint_handling, aggregate_results, generate_tests, code_review, close_parent_artifacts, verify_phase_goal, update_roadmap, offer_next
589
598
  3. The --no-transition flag means: after verification + roadmap update, STOP and return status. Do NOT run transition.md.
590
599
  4. When spawning executor agents, use subagent_type='pan-executor' with the existing @file pattern from the workflow
591
600
  5. When spawning verifier agents, use subagent_type='pan-verifier'
@@ -594,6 +603,7 @@ Task(
594
603
  </instructions>
595
604
  ",
596
605
  subagent_type="general-purpose",
606
+ model="$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs resolve-model pan-conductor --raw)",
597
607
  description="Execute Phase ${PHASE}"
598
608
  )
599
609
  ```
@@ -614,7 +624,8 @@ Task(
614
624
  Auto-advance stopped: Execution needs review.
615
625
 
616
626
  Review the output above and continue manually:
617
- /pan:exec-phase ${PHASE}
627
+ /pan:plan-phase ${PHASE} --gaps (verification found gaps)
628
+ /pan:exec-phase ${PHASE} (execution did not finish)
618
629
  ```
619
630
 
620
631
  **If neither `--auto` nor config enabled:**
@@ -34,7 +34,7 @@ This creates `.planning/config.json` with defaults if missing and loads current
34
34
  Detect if this is a downgrade and confirm with user:
35
35
 
36
36
  ```
37
- TIER_MAP = { "quality": 3, "balanced": 2, "budget": 1 }
37
+ TIER_MAP = { "quality": 2, "balanced": 2, "budget": 1 } # quality and balanced resolve every agent to the same tier and effort
38
38
  current_profile = config.model_profile OR "balanced"
39
39
  new_profile = $ARGUMENTS.profile
40
40
 
@@ -86,7 +86,7 @@ Display confirmation with model table and cost estimate for selected profile:
86
86
 
87
87
  Agents will now use:
88
88
 
89
- [Show table from MODEL_PROFILES in pan-tools.cjs for selected profile]
89
+ [Show table from MODEL_PROFILES in ~/.claude/pan-wizard-core/bin/lib/core.cjs for selected profile]
90
90
 
91
91
  Example (`budget` — the only profile that steps agents below the reasoning
92
92
  tier; `quality` and `balanced` put every agent on `reasoning`):
@@ -29,9 +29,9 @@ Exit.
29
29
 
30
30
  If missing state.md: suggest `/pan:new-project`.
31
31
 
32
- **If roadmap.md missing but project.md exists:**
32
+ **If `.planning/requirements.md` is missing but roadmap.md and project.md exist:**
33
33
 
34
- This means a milestone was completed and archived. Go to **Route F** (between milestones).
34
+ This means a milestone was completed and archived (`/pan:milestone-done` deletes requirements.md and keeps roadmap.md with the milestone collapsed). Go to **Route F** (between milestones).
35
35
 
36
36
  If missing both roadmap.md and project.md: suggest `/pan:new-project`.
37
37
  </step>
@@ -54,7 +54,7 @@ ROADMAP=$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs roadmap analyze)
54
54
  ```
55
55
 
56
56
  This returns structured JSON with:
57
- - All phases with disk status (complete/partial/planned/empty/no_directory)
57
+ - All phases with disk status (complete/partial/planned/researched/discussed/empty/no_directory)
58
58
  - Goal and dependencies per phase
59
59
  - Plan and summary counts per phase
60
60
  - Aggregated stats: total plans, summaries, progress percent
@@ -109,12 +109,10 @@ Plan [M] of [phase-total]: [status]
109
109
  CONTEXT: [✓ if has_context | - if not]
110
110
 
111
111
  ## Key Decisions Made
112
- - [extract from $STATE.decisions[]]
113
- - [e.g. jq -r '.decisions[].decision' from state-snapshot]
112
+ - [extract from $STATE.decisions[]: each entry's summary]
114
113
 
115
114
  ## Blockers/Concerns
116
115
  - [extract from $STATE.blockers[]]
117
- - [e.g. jq -r '.blockers[].text' from state-snapshot]
118
116
 
119
117
  ## Pending Todos
120
118
  - [count] pending — /pan:todo-check to review
@@ -280,7 +278,7 @@ State: "Current phase is {X}. Milestone has {N} phases (highest: {Y})."
280
278
 
281
279
  **Route C: Phase complete, more phases remain**
282
280
 
283
- Read roadmap.md to get the next phase's name and goal.
281
+ Take the next phase's name and goal from `$ROADMAP` (`roadmap analyze` lists every phase's `name` and `goal`).
284
282
 
285
283
  ```
286
284
  ---
@@ -333,7 +331,7 @@ All {N} phases finished!
333
331
 
334
332
  ---
335
333
 
336
- **Route F: Between milestones (roadmap.md missing, project.md exists)**
334
+ **Route F: Between milestones (requirements.md missing, roadmap.md and project.md exist)**
337
335
 
338
336
  A milestone was completed and archived. Ready to start the next milestone cycle.
339
337
 
@@ -229,8 +229,8 @@ Return what changed.
229
229
 
230
230
  ```
231
231
  Task(
232
- prompt="First, read ~/.claude/agents/pan-planner.md for your role and instructions.\n\n" + revision_prompt,
233
- subagent_type="general-purpose",
232
+ prompt=revision_prompt,
233
+ subagent_type="pan-planner",
234
234
  model="{planner_model}",
235
235
  description="Revise quick plan: ${DESCRIPTION}"
236
236
  )
@@ -267,6 +267,7 @@ Execute quick task ${next_num}.
267
267
  - Commit each task atomically
268
268
  - Create summary at: ${QUICK_DIR}/${next_num}-summary.md
269
269
  - Do NOT update roadmap.md (quick tasks are separate from planned phases)
270
+ - This is not a phase: skip `init execute-phase` and the state updates (advance-plan, update-progress, record-metric, record-session, roadmap update-plan-progress, requirements mark-complete); Step 7 of this workflow records the task in state.md
270
271
  </constraints>
271
272
  ",
272
273
  subagent_type="pan-executor",
@@ -381,7 +382,8 @@ Use `date` and `description_cell` from init. Write `description_cell` exactly as
381
382
 
382
383
  Use `date` and `description_cell` from init (one line, whatever the description held):
383
384
  ```
384
- Last activity: ${date} - Completed quick task ${next_num}: ${description_cell}
385
+ **Last Activity:** ${date}
386
+ **Last Activity Description:** Completed quick task ${next_num}: ${description_cell}
385
387
  ```
386
388
 
387
389
  Use Edit tool to make these changes atomically
@@ -449,8 +451,8 @@ Ready for next task: /pan:quick
449
451
  - [ ] User provides task description
450
452
  - [ ] `--full` flag parsed from arguments when present
451
453
  - [ ] Slug generated (lowercase, hyphens, max 40 chars)
452
- - [ ] Next number calculated (001, 002, 003...)
453
- - [ ] Directory created at `.planning/quick/NNN-slug/`
454
+ - [ ] Next number taken from init (`next_num`: 1, 2, 3...)
455
+ - [ ] Directory created at init's `task_dir` (`.planning/quick/{next_num}-{slug}/`)
454
456
  - [ ] `${next_num}-plan.md` created by planner
455
457
  - [ ] (--full) Plan checker validates plan, revision loop capped at 2
456
458
  - [ ] `${next_num}-summary.md` created by executor
@@ -102,7 +102,7 @@ Extract from result: `removed`, `directory_deleted`, `renamed_directories`, `ren
102
102
  Stage and commit the removal:
103
103
 
104
104
  ```bash
105
- node ~/.claude/pan-wizard-core/bin/pan-tools.cjs commit "chore: remove phase {target} ({original-phase-name})" --files .planning/
105
+ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs commit "chore: remove phase {target} ({original-phase-name})" --files .planning/ --force
106
106
  ```
107
107
 
108
108
  The commit message preserves the historical record of what was removed.
@@ -35,7 +35,12 @@ If exists: Offer update/view/skip options.
35
35
 
36
36
  ```bash
37
37
  INIT=$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs init phase-op "${PHASE}")
38
- # Extract: phase_dir, padded_phase, phase_number, state_path, requirements_path, context_path
38
+ # Extract: phase_dir, padded_phase, phase_slug, phase_number, state_path, requirements_path, context_path
39
+ # phase_dir is null when the phase has no directory yet: create it (scaffold pads the number and honours the planning root) and use the printed path as phase_dir
40
+ case "{phase_dir}" in ""|null) node ~/.claude/pan-wizard-core/bin/pan-tools.cjs scaffold phase-dir --phase "${PHASE}" --name "{phase_name}" --raw ;; esac
41
+
42
+ # This phase's roadmap and requirements, written into the phase directory
43
+ SLICE_PATH=$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs roadmap slice "${PHASE}" --write --raw)
39
44
  ```
40
45
 
41
46
  ## Step 4: Spawn Researcher
@@ -48,7 +53,7 @@ Research implementation approach for Phase {phase}: {name}
48
53
 
49
54
  <files_to_read>
50
55
  - {context_path} (USER DECISIONS from /pan:discuss-phase)
51
- - {requirements_path} (Project requirements)
56
+ - {slice_path} (This phase's roadmap and requirements; if SLICE_PATH is empty, {requirements_path} instead)
52
57
  - {state_path} (Project decisions and history)
53
58
  </files_to_read>
54
59
 
@@ -57,7 +62,7 @@ Phase description: {description}
57
62
  </additional_context>
58
63
 
59
64
  <output>
60
- Write to: .planning/phases/${PHASE}-{slug}/${PHASE}-research.md
65
+ Write to: {phase_dir}/{padded_phase}-research.md
61
66
  </output>",
62
67
  subagent_type="pan-phase-researcher",
63
68
  model="{researcher_model}"
@@ -67,7 +72,6 @@ Write to: .planning/phases/${PHASE}-{slug}/${PHASE}-research.md
67
72
  ## Step 5: Handle Return
68
73
 
69
74
  - `## RESEARCH COMPLETE` — Display summary, offer: Plan/Dig deeper/Review/Done
70
- - `## CHECKPOINT REACHED` — Present to user, spawn continuation
71
- - `## RESEARCH INCONCLUSIVE` — Show attempts, offer: Add context/Try different mode/Manual
75
+ - `## RESEARCH BLOCKED` — Display the blocker, offer: Provide context / Skip research / Abort
72
76
 
73
77
  </process>
@@ -252,12 +252,10 @@ Before proceeding to routed workflow, update session continuity:
252
252
 
253
253
  Update state.md:
254
254
 
255
- ```markdown
256
- ## Session Continuity
257
-
258
- Last session: [now]
259
- Stopped at: Session resumed, proceeding to [action]
260
- Resume file: [updated if applicable]
255
+ ```bash
256
+ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs state record-session \
257
+ --stopped-at "Session resumed, proceeding to [action]" \
258
+ --resume-file "[updated if applicable, else None]"
261
259
  ```
262
260
 
263
261
  This ensures if session ends unexpectedly, next resume knows the state.
@@ -22,6 +22,8 @@ Call pan-tools retro to gather all metrics:
22
22
  RETRO=$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs retro)
23
23
  ```
24
24
 
25
+ If the user passed `--write-memory` (and `--max N`), pass them on: `pan-tools retro --write-memory [--max N]`. It is the one flag that writes, appending recurring-pattern entries to the agent logs in `.planning/memory/`, and the JSON then carries `memory.wrote`. Never add it on your own.
26
+
25
27
  Parse JSON for: `phases_planned`, `phases_completed`, `phases_decimal`, `estimation_accuracy_pct`, `verifications_total`, `verifications_passed_first_try`, `verifications_gaps_found`, `verifications_human_needed`, `first_try_rate_pct`, `common_gap_patterns`.
26
28
 
27
29
  **If error:** Report "No roadmap found — run /pan:new-project first."
@@ -114,7 +116,7 @@ For each top pattern, suggest a preventive action:
114
116
  </process>
115
117
 
116
118
  <constraints>
117
- - Read-only: this workflow does not modify any files
119
+ - Read-only: this workflow does not modify any files, unless the user passed `--write-memory` (then `pan-tools retro` appends to the agent logs in `.planning/memory/` and nothing else changes)
118
120
  - Data-driven: all assessments backed by quantitative metrics
119
121
  - Actionable: every finding includes a concrete recommendation
120
122
  - Non-judgmental: focus on systemic patterns, not individual decisions
@@ -24,7 +24,7 @@ Creates `.planning/config.json` with defaults if missing and loads current confi
24
24
  cat .planning/config.json
25
25
  ```
26
26
 
27
- Parse current values (default to `true` if not present):
27
+ Parse current values (when a key is absent, use PAN's default: `true` for research, plan_check and verifier; `false` for nyquist_validation):
28
28
  - `workflow.research` — spawn researcher during plan-phase
29
29
  - `workflow.plan_check` — spawn plan checker during plan-phase
30
30
  - `workflow.verifier` — spawn verifier during execute-phase
@@ -110,7 +110,7 @@ AskUserQuestion([
110
110
  multiSelect: false,
111
111
  options: [
112
112
  { label: "Static (Recommended)", description: "Profile assigns fixed tiers to each agent. Predictable and simple." },
113
- { label: "Complexity", description: "Adjust tiers up/down based on task complexity (file count, requirements, architecture). Saves tokens on simple phases." }
113
+ { label: "Complexity", description: "Adjust tiers by task complexity, only where a model is resolved with the task passed (resolve-model --metadata); the *_model values workflows pass are not, so it changes nothing there" }
114
114
  ]
115
115
  }
116
116
  ])
@@ -118,27 +118,18 @@ AskUserQuestion([
118
118
  </step>
119
119
 
120
120
  <step name="update_config">
121
- Merge new settings into existing config.json:
121
+ Write each answer with `config-set`, which keeps every other key in the `workflow` and `routing` objects:
122
122
 
123
- ```json
124
- {
125
- ...existing_config,
126
- "model_profile": "quality" | "balanced" | "budget",
127
- "workflow": {
128
- "research": true/false,
129
- "plan_check": true/false,
130
- "verifier": true/false,
131
- "auto_advance": true/false,
132
- "nyquist_validation": true/false
133
- },
134
- "branching_strategy": "none" | "phase" | "milestone",
135
- "routing": {
136
- "strategy": "static" | "complexity"
137
- }
138
- }
123
+ ```bash
124
+ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs config-set model_profile <quality|balanced|budget>
125
+ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs config-set workflow.research <true|false>
126
+ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs config-set workflow.plan_check <true|false>
127
+ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs config-set workflow.verifier <true|false>
128
+ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs config-set workflow.auto_advance <true|false>
129
+ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs config-set workflow.nyquist_validation <true|false>
130
+ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs config-set branching_strategy <none|phase|milestone>
131
+ node ~/.claude/pan-wizard-core/bin/pan-tools.cjs config-set routing.strategy <static|complexity>
139
132
  ```
140
-
141
- Write updated config to `.planning/config.json`.
142
133
  </step>
143
134
 
144
135
  <step name="save_as_defaults">
@@ -179,7 +170,8 @@ Write `~/.pan-wizard/defaults.json` with:
179
170
  "verifier": <current>,
180
171
  "auto_advance": <current>,
181
172
  "nyquist_validation": <current>
182
- }
173
+ },
174
+ "routing": { "strategy": <current> }
183
175
  }
184
176
  ```
185
177
  </step>
@@ -218,8 +210,8 @@ Quick commands:
218
210
 
219
211
  <success_criteria>
220
212
  - [ ] Current config read
221
- - [ ] User presented with 7 settings (profile + 5 workflow toggles + git branching)
222
- - [ ] Config updated with model_profile, workflow, and git sections
213
+ - [ ] User presented with the settings above (model profile, workflow toggles, git branching, routing strategy)
214
+ - [ ] Config updated with model_profile, workflow, branching_strategy and routing
223
215
  - [ ] User offered to save as global defaults (~/.pan-wizard/defaults.json)
224
216
  - [ ] Changes confirmed to user
225
217
  </success_criteria>
@@ -12,7 +12,8 @@ Read all files referenced by the invoking prompt's execution_context before star
12
12
  Load todo context:
13
13
 
14
14
  ```bash
15
- INIT=$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs init todos)
15
+ AREA="" # the area argument when one was given: /pan:todo-check api → AREA="api"; empty lists every todo
16
+ INIT=$(node ~/.claude/pan-wizard-core/bin/pan-tools.cjs init todos "$AREA")
16
17
  ```
17
18
 
18
19
  Extract from init JSON: `todo_count`, `todos`, `pending_dir`.
@@ -35,7 +36,7 @@ Exit.
35
36
  </step>
36
37
 
37
38
  <step name="parse_filter">
38
- Check for area filter in arguments:
39
+ The area filter was applied in init_context (AREA):
39
40
  - `/pan:todo-check` → show all
40
41
  - `/pan:todo-check api` → filter to area:api only
41
42
  </step>
@@ -127,7 +128,7 @@ Use AskUserQuestion:
127
128
  ```bash
128
129
  node ~/.claude/pan-wizard-core/bin/pan-tools.cjs todo complete "[filename]"
129
130
  ```
130
- This moves it to `.planning/todos/completed/` with a `completed:` date — the directory `init todos` and `/pan:progress` count.
131
+ This moves it out of `.planning/todos/pending/` (the directory `init todos` and `/pan:progress` count) into `.planning/todos/completed/` with a `completed:` date.
131
132
  Update state.md todo count. Present problem/solution context. Begin work or ask how to proceed.
132
133
 
133
134
  **Add to phase plan:**