mandrel 1.59.0 → 1.61.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 (267) hide show
  1. package/.agents/README.md +86 -44
  2. package/.agents/docs/SDLC.md +135 -141
  3. package/.agents/docs/configuration.md +77 -20
  4. package/.agents/docs/quality-gates.md +796 -0
  5. package/.agents/docs/workflows.md +6 -9
  6. package/.agents/instructions.md +12 -11
  7. package/.agents/personas/architect.md +1 -1
  8. package/.agents/personas/product.md +1 -1
  9. package/.agents/personas/project-manager.md +14 -14
  10. package/.agents/personas/technical-writer.md +1 -1
  11. package/.agents/rules/changelog-style.md +5 -5
  12. package/.agents/rules/git-conventions.md +3 -3
  13. package/.agents/runtime-deps.json +2 -2
  14. package/.agents/schemas/agentrc.schema.json +3 -3
  15. package/.agents/schemas/dispatch-manifest.json +4 -4
  16. package/.agents/schemas/epic-spec.schema.json +15 -45
  17. package/.agents/schemas/lifecycle/README.md +1 -1
  18. package/.agents/schemas/lifecycle/story.dispatch.end.schema.json +1 -1
  19. package/.agents/schemas/lifecycle/story.dispatch.start.schema.json +1 -1
  20. package/.agents/schemas/lifecycle/story.heartbeat.schema.json +1 -1
  21. package/.agents/schemas/validation-evidence.schema.json +1 -1
  22. package/.agents/scripts/README.md +2 -2
  23. package/.agents/scripts/acceptance-eval.js +1 -1
  24. package/.agents/scripts/acceptance-spec-reconciler.js +2 -2
  25. package/.agents/scripts/agents-bootstrap-github.js +23 -119
  26. package/.agents/scripts/analyze-execution.js +2 -2
  27. package/.agents/scripts/audit-to-stories.js +1 -1
  28. package/.agents/scripts/check-doc-links.js +2 -3
  29. package/.agents/scripts/diagnose-friction.js +1 -1
  30. package/.agents/scripts/dispatcher.js +2 -2
  31. package/.agents/scripts/drain-pending-cleanup.js +1 -1
  32. package/.agents/scripts/epic-audit-prepare.js +3 -3
  33. package/.agents/scripts/epic-deliver-note-intervention.js +2 -2
  34. package/.agents/scripts/epic-deliver-preflight.js +6 -6
  35. package/.agents/scripts/epic-deliver-prepare.js +1 -1
  36. package/.agents/scripts/epic-execute-record-wave.js +4 -4
  37. package/.agents/scripts/epic-plan-healthcheck.js +6 -10
  38. package/.agents/scripts/epic-plan-spec-validate.js +1 -1
  39. package/.agents/scripts/epic-reconcile.js +11 -29
  40. package/.agents/scripts/evidence-gate.js +1 -1
  41. package/.agents/scripts/generate-workflows-doc.js +1 -1
  42. package/.agents/scripts/hierarchy-gate.js +7 -11
  43. package/.agents/scripts/lib/ITicketingProvider.js +1 -1
  44. package/.agents/scripts/lib/audit-suite/selector.js +1 -1
  45. package/.agents/scripts/lib/audit-to-stories/seed-epic-from-findings.js +2 -2
  46. package/.agents/scripts/lib/baseline-snapshot.js +7 -7
  47. package/.agents/scripts/lib/bdd-runner-detect.js +1 -1
  48. package/.agents/scripts/lib/bdd-scenario-scanner.js +3 -3
  49. package/.agents/scripts/lib/bootstrap/baselines-layout-migration.js +1 -1
  50. package/.agents/scripts/lib/bootstrap/branch-protection.js +1 -1
  51. package/.agents/scripts/lib/bootstrap/ci-workflow-template.js +47 -1
  52. package/.agents/scripts/lib/bootstrap/commit-push.js +2 -2
  53. package/.agents/scripts/lib/bootstrap/gh-preflight.js +7 -9
  54. package/.agents/scripts/lib/bootstrap/manifest.js +21 -1
  55. package/.agents/scripts/lib/bootstrap/merge-methods.js +31 -16
  56. package/.agents/scripts/lib/bootstrap/project-bootstrap.js +32 -11
  57. package/.agents/scripts/lib/codebase-snapshot.js +1 -1
  58. package/.agents/scripts/lib/config/explain.js +1 -1
  59. package/.agents/scripts/lib/config/runners.js +2 -2
  60. package/.agents/scripts/lib/config/runtime.js +1 -1
  61. package/.agents/scripts/lib/config/sync-agentrc.js +1 -1
  62. package/.agents/scripts/lib/config/temp-paths.js +2 -2
  63. package/.agents/scripts/lib/config-settings-schema-delivery.js +2 -2
  64. package/.agents/scripts/lib/config-settings-schema-quality.js +1 -1
  65. package/.agents/scripts/lib/config-settings-schema.js +3 -3
  66. package/.agents/scripts/lib/detect-package-manager.js +72 -0
  67. package/.agents/scripts/lib/duplicate-search.js +1 -1
  68. package/.agents/scripts/lib/dynamic-workflow/capability.js +1 -1
  69. package/.agents/scripts/lib/epic-plan-clarity.js +1 -1
  70. package/.agents/scripts/lib/epic-plan-ideation.js +1 -1
  71. package/.agents/scripts/lib/errors/index.js +4 -4
  72. package/.agents/scripts/lib/feedback-loop/memory-freshness.js +1 -1
  73. package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +1 -1
  74. package/.agents/scripts/lib/findings/classify-finding.js +1 -1
  75. package/.agents/scripts/lib/findings/promote-finding.js +10 -10
  76. package/.agents/scripts/lib/label-constants.js +3 -4
  77. package/.agents/scripts/lib/label-taxonomy.js +5 -10
  78. package/.agents/scripts/lib/onboard/detect-stack.js +10 -10
  79. package/.agents/scripts/lib/onboard/init-tail.js +218 -0
  80. package/.agents/scripts/lib/onboard/scaffold-docs.js +18 -3
  81. package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +1 -1
  82. package/.agents/scripts/lib/orchestration/code-review.js +5 -5
  83. package/.agents/scripts/lib/orchestration/context-hydration-engine.js +8 -9
  84. package/.agents/scripts/lib/orchestration/dependency-analyzer.js +3 -3
  85. package/.agents/scripts/lib/orchestration/detectors-phase.js +2 -2
  86. package/.agents/scripts/lib/orchestration/dispatch-engine.js +30 -38
  87. package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +9 -25
  88. package/.agents/scripts/lib/orchestration/epic-cleanup.js +1 -1
  89. package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +8 -8
  90. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +1 -1
  91. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +7 -21
  92. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +3 -3
  93. package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +26 -13
  94. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +1 -1
  95. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/prompts.js +1 -1
  96. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +2 -2
  97. package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +1 -1
  98. package/.agents/scripts/lib/orchestration/epic-run-state-store.js +3 -3
  99. package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +4 -4
  100. package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +3 -3
  101. package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +6 -21
  102. package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +7 -7
  103. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +1 -1
  104. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +2 -2
  105. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +4 -4
  106. package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +4 -4
  107. package/.agents/scripts/lib/orchestration/epic-runner/story-run-progress-writer.js +8 -8
  108. package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +4 -4
  109. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +7 -15
  110. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +72 -41
  111. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +2 -4
  112. package/.agents/scripts/lib/orchestration/file-assumptions.js +2 -2
  113. package/.agents/scripts/lib/orchestration/finalize/close-planning-tickets.js +1 -1
  114. package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +2 -2
  115. package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +1 -1
  116. package/.agents/scripts/lib/orchestration/lease-guard-shared.js +3 -3
  117. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +1 -1
  118. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +1 -1
  119. package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +1 -1
  120. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +1 -1
  121. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +1 -1
  122. package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +1 -1
  123. package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +1 -1
  124. package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +1 -1
  125. package/.agents/scripts/lib/orchestration/lifecycle/listeners/merge-watcher.js +1 -1
  126. package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +1 -1
  127. package/.agents/scripts/lib/orchestration/lifecycle/listeners/watcher.js +1 -1
  128. package/.agents/scripts/lib/orchestration/manifest-builder.js +5 -5
  129. package/.agents/scripts/lib/orchestration/parked-follow-ons.js +2 -2
  130. package/.agents/scripts/lib/orchestration/plan-runner/plan-router.js +5 -5
  131. package/.agents/scripts/lib/orchestration/post-merge/phases/ticket-closure.js +3 -3
  132. package/.agents/scripts/lib/orchestration/preflight-cache.js +1 -1
  133. package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +1 -1
  134. package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +1 -1
  135. package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +2 -2
  136. package/.agents/scripts/lib/orchestration/retro-runner.js +3 -3
  137. package/.agents/scripts/lib/orchestration/review-depth.js +1 -1
  138. package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +1 -1
  139. package/.agents/scripts/lib/orchestration/spec-freshness.js +1 -1
  140. package/.agents/scripts/lib/orchestration/spec-renderer.js +36 -73
  141. package/.agents/scripts/lib/orchestration/spec-section-validator.js +1 -1
  142. package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +1 -1
  143. package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +2 -2
  144. package/.agents/scripts/lib/orchestration/task-body-validator.js +6 -6
  145. package/.agents/scripts/lib/orchestration/ticket-lease.js +1 -1
  146. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +2 -2
  147. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +1 -10
  148. package/.agents/scripts/lib/orchestration/ticket-validator.js +25 -70
  149. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +5 -12
  150. package/.agents/scripts/lib/orchestration/ticketing/reads.js +8 -8
  151. package/.agents/scripts/lib/orchestration/ticketing/state.js +3 -3
  152. package/.agents/scripts/lib/orchestration/wave-record-notifications.js +2 -2
  153. package/.agents/scripts/lib/orchestration/wave-record-projection.js +1 -1
  154. package/.agents/scripts/lib/plan-phase-cleanup.js +1 -1
  155. package/.agents/scripts/lib/preflight-runner.js +1 -1
  156. package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +4 -5
  157. package/.agents/scripts/lib/presentation/manifest-builder.js +28 -34
  158. package/.agents/scripts/lib/presentation/manifest-formatter.js +3 -4
  159. package/.agents/scripts/lib/presentation/manifest-helpers.js +1 -1
  160. package/.agents/scripts/lib/presentation/manifest-procedures.js +4 -4
  161. package/.agents/scripts/lib/presentation/manifest-render-waves.js +4 -23
  162. package/.agents/scripts/lib/presentation/manifest-renderer.js +1 -1
  163. package/.agents/scripts/lib/presentation/manifest-story-views.js +2 -11
  164. package/.agents/scripts/lib/runtime-deps/preflight.js +6 -6
  165. package/.agents/scripts/lib/signals/schema.js +1 -1
  166. package/.agents/scripts/lib/spec/index.js +1 -1
  167. package/.agents/scripts/lib/spec/loader.js +2 -2
  168. package/.agents/scripts/lib/spec/state.js +7 -16
  169. package/.agents/scripts/lib/story-init/context-resolver.js +3 -3
  170. package/.agents/scripts/lib/story-init/state-transitioner.js +2 -2
  171. package/.agents/scripts/lib/story-init/task-graph-builder.js +7 -7
  172. package/.agents/scripts/lib/story-lifecycle.js +8 -8
  173. package/.agents/scripts/lib/story-plan.js +1 -1
  174. package/.agents/scripts/lib/templates/decomposer-prompts.js +59 -52
  175. package/.agents/scripts/lib/wave-runner/tick.js +1 -1
  176. package/.agents/scripts/lib/worktree/node-modules-strategy.js +5 -2
  177. package/.agents/scripts/lifecycle-emit-story-dispatch.js +1 -1
  178. package/.agents/scripts/lifecycle-emit.js +1 -1
  179. package/.agents/scripts/providers/github/board-add.js +1 -1
  180. package/.agents/scripts/providers/github/errors.js +1 -1
  181. package/.agents/scripts/providers/github/mappers.js +2 -2
  182. package/.agents/scripts/providers/github/tickets.js +4 -4
  183. package/.agents/scripts/resync-status-column.js +1 -1
  184. package/.agents/scripts/retro-run.js +2 -2
  185. package/.agents/scripts/run-lint.js +1 -1
  186. package/.agents/scripts/single-story-init.js +1 -1
  187. package/.agents/scripts/stories-wave-tick.js +5 -5
  188. package/.agents/scripts/story-close.js +1 -1
  189. package/.agents/scripts/story-init.js +13 -16
  190. package/.agents/scripts/story-phase.js +5 -5
  191. package/.agents/scripts/story-plan.js +3 -3
  192. package/.agents/scripts/sync-branch-from-base.js +1 -1
  193. package/.agents/scripts/validate-docs-freshness.js +1 -1
  194. package/.agents/scripts/wave-tick.js +1 -1
  195. package/.agents/skills/core/analyze-execution/SKILL.md +2 -2
  196. package/.agents/skills/core/epic-plan-consolidate/SKILL.md +21 -26
  197. package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +23 -56
  198. package/.agents/skills/core/epic-plan-spec-author/SKILL.md +4 -4
  199. package/.agents/skills/core/hydrate-context/SKILL.md +2 -2
  200. package/.agents/skills/core/idea-refinement/SKILL.md +4 -4
  201. package/.agents/skills/core/knowledge-transfer/SKILL.md +2 -2
  202. package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +1 -1
  203. package/.agents/skills/core/scope-triage/SKILL.md +9 -10
  204. package/.agents/skills/core/using-agent-skills/SKILL.md +1 -1
  205. package/.agents/skills/skills.index.json +7 -7
  206. package/.agents/templates/agent-protocol.md +2 -2
  207. package/.agents/workflows/agents-update.md +16 -31
  208. package/.agents/workflows/audit-architecture.md +2 -2
  209. package/.agents/workflows/audit-clean-code.md +2 -2
  210. package/.agents/workflows/audit-dependencies.md +1 -1
  211. package/.agents/workflows/audit-devops.md +1 -1
  212. package/.agents/workflows/audit-documentation.md +2 -2
  213. package/.agents/workflows/audit-lighthouse.md +1 -1
  214. package/.agents/workflows/audit-performance.md +2 -2
  215. package/.agents/workflows/audit-privacy.md +1 -1
  216. package/.agents/workflows/audit-quality.md +2 -2
  217. package/.agents/workflows/audit-security.md +2 -2
  218. package/.agents/workflows/audit-seo.md +1 -1
  219. package/.agents/workflows/audit-sre.md +1 -1
  220. package/.agents/workflows/audit-to-stories.md +10 -10
  221. package/.agents/workflows/audit-ux-ui.md +1 -1
  222. package/.agents/workflows/deliver.md +85 -0
  223. package/.agents/workflows/explain.md +3 -3
  224. package/.agents/workflows/git-merge-pr.md +1 -1
  225. package/.agents/workflows/git-pr-all.md +13 -10
  226. package/.agents/workflows/git-push.md +6 -3
  227. package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
  228. package/.agents/workflows/helpers/acceptance-self-eval.md +1 -1
  229. package/.agents/workflows/helpers/agents-sync-config.md +3 -2
  230. package/.agents/workflows/helpers/code-review.md +5 -5
  231. package/.agents/workflows/{epic-deliver.md → helpers/deliver-epic.md} +43 -43
  232. package/.agents/workflows/{story-deliver.md → helpers/deliver-stories.md} +25 -25
  233. package/.agents/workflows/helpers/diagnose.md +1 -1
  234. package/.agents/workflows/helpers/epic-audit.md +6 -6
  235. package/.agents/workflows/helpers/epic-deliver-story.md +13 -13
  236. package/.agents/workflows/helpers/epic-plan-decompose.md +23 -23
  237. package/.agents/workflows/helpers/epic-plan-spec.md +6 -6
  238. package/.agents/workflows/helpers/epic-testing.md +3 -3
  239. package/.agents/workflows/helpers/parallel-tooling.md +1 -1
  240. package/.agents/workflows/{epic-plan.md → helpers/plan-epic.md} +84 -84
  241. package/.agents/workflows/{story-plan.md → helpers/plan-story.md} +43 -43
  242. package/.agents/workflows/helpers/signals.md +1 -1
  243. package/.agents/workflows/helpers/single-story-deliver.md +11 -11
  244. package/.agents/workflows/helpers/worktree-lifecycle.md +18 -18
  245. package/.agents/workflows/plan.md +131 -0
  246. package/.agents/workflows/qa-explore.md +1 -1
  247. package/.agents/workflows/qa-run-harness.md +1 -1
  248. package/README.md +19 -39
  249. package/bin/mandrel.js +235 -16
  250. package/docs/CHANGELOG.md +1173 -0
  251. package/lib/cli/doctor.js +45 -3
  252. package/lib/cli/init.js +97 -36
  253. package/lib/cli/registry.js +41 -145
  254. package/lib/cli/sync.js +122 -23
  255. package/lib/cli/uninstall.js +42 -7
  256. package/lib/cli/update.js +524 -210
  257. package/lib/cli/version-helpers.js +59 -0
  258. package/package.json +7 -6
  259. package/.agents/scripts/lib/orchestration/reconciler.js +0 -137
  260. package/.agents/workflows/onboard.md +0 -208
  261. package/lib/cli/__tests__/migrate.test.js +0 -268
  262. package/lib/cli/__tests__/sync-local-zone.test.js +0 -247
  263. package/lib/cli/__tests__/sync.test.js +0 -372
  264. package/lib/cli/__tests__/update-major.test.js +0 -217
  265. package/lib/cli/__tests__/update.test.js +0 -696
  266. package/lib/cli/__tests__/version-check.test.js +0 -398
  267. package/lib/migrations/__tests__/index.test.js +0 -216
@@ -4,7 +4,7 @@ description:
4
4
  Work Breakdown) for a GitHub Epic.
5
5
  ---
6
6
 
7
- # /epic-plan [Epic ID]
7
+ # helpers/plan-epic Epic planning path (invoked by /plan)
8
8
 
9
9
  ## Role
10
10
 
@@ -14,11 +14,11 @@ Director / Architect
14
14
 
15
15
  You are the master orchestrator for the v5 Epic-Centric ticketing pipeline. Your
16
16
  goal is to transform a high-level Epic into a fully decomposed, ready-to-execute
17
- backlog of Features and Stories.
17
+ backlog of Stories.
18
18
 
19
- `/epic-plan` is the unified planning entry point. It delegates to the two
20
- phase helpers — [`helpers/epic-plan-spec.md`](helpers/epic-plan-spec.md) and
21
- [`helpers/epic-plan-decompose.md`](helpers/epic-plan-decompose.md) — and runs
19
+ `/plan` is the unified planning entry point. It delegates to the two
20
+ phase helpers — [`helpers/epic-plan-spec.md`](epic-plan-spec.md) and
21
+ [`helpers/epic-plan-decompose.md`](epic-plan-decompose.md) — and runs
22
22
  both phases sequentially with a human confirmation gate between them. The Epic
23
23
  ID is the single positional argument.
24
24
 
@@ -34,12 +34,12 @@ artifacts you author.
34
34
  - Wait for user validation before migrating to Phase 8 when
35
35
  `planningRisk.requiresReview` is true (or the operator passes
36
36
  `--force-review`). Low-risk Epics auto-proceed after spec validation.
37
- See [SDLC § Adaptive planning risk routing](../docs/SDLC.md#adaptive-planning-risk-routing)
37
+ See [SDLC § Adaptive planning risk routing](../../docs/SDLC.md#adaptive-planning-risk-routing)
38
38
  for the full envelope shape and the planner-selected
39
39
  `acceptance::n-a` route.
40
40
  - Delegate Phase 7 and Phase 8 to the
41
- [`helpers/epic-plan-spec.md`](helpers/epic-plan-spec.md) and
42
- [`helpers/epic-plan-decompose.md`](helpers/epic-plan-decompose.md)
41
+ [`helpers/epic-plan-spec.md`](epic-plan-spec.md) and
42
+ [`helpers/epic-plan-decompose.md`](epic-plan-decompose.md)
43
43
  procedures respectively — they own the Epic lifecycle label transitions and
44
44
  the `epic-plan-state` checkpoint. This wrapper must not apply those labels
45
45
  directly.
@@ -78,7 +78,7 @@ Phase 5 (Re-Plan Detection).
78
78
  to the operator and **STOP**. Do not proceed to Phase 2 until the
79
79
  user explicitly confirms the direction. This is the same gate the
80
80
  skill's own Phase 3 enforces; surfacing it here makes the wait
81
- contract visible to `/epic-plan` callers. When the Phase 1.5 verdict is
81
+ contract visible to `/plan` callers. When the Phase 1.5 verdict is
82
82
  `story` or `borderline`, this stop carries the three-way choice the
83
83
  triage gate defines (below) instead of a plain confirm.
84
84
 
@@ -87,18 +87,18 @@ Phase 5 (Re-Plan Detection).
87
87
  This phase runs **only** on the ideation path, immediately after Phase 1
88
88
  produces the sharpened one-pager. It is **skipped entirely** when an Epic ID
89
89
  argument was supplied (the existing-Epic path jumps straight to Phase 5), and
90
- it is **skipped** when `/epic-plan` was entered via a scope-triage handoff from
91
- [`/story-plan`](story-plan.md) — a handoff is a triage decision already made,
90
+ it is **skipped** when `/plan` was entered via a scope-triage handoff from
91
+ [`/plan`](plan-story.md) — a handoff is a triage decision already made,
92
92
  and re-triaging it would re-litigate a settled call (the no-re-triage rule the
93
93
  skill states once).
94
94
 
95
95
  1. **Activate the scope-triage skill**: Read
96
- [`<agentRoot>/skills/core/scope-triage/SKILL.md`](../skills/core/scope-triage/SKILL.md)
96
+ [`<agentRoot>/skills/core/scope-triage/SKILL.md`](../../skills/core/scope-triage/SKILL.md)
97
97
  via the `Read` tool (resolve `<agentRoot>` from `project.paths.agentRoot` —
98
98
  default `.agents`) and apply its rubric to the Phase 1 one-pager. The skill
99
99
  anchors its sizing judgment **by reference** to
100
100
  `DELIVERABLE_GRANULARITY_GUIDANCE` / `DEFAULT_TASK_SIZING` in
101
- [`ticket-validator-sizing.js`](../scripts/lib/orchestration/ticket-validator-sizing.js)
101
+ [`ticket-validator-sizing.js`](../../scripts/lib/orchestration/ticket-validator-sizing.js)
102
102
  and emits one verdict: `epic` | `story` | `borderline`. The verdict is
103
103
  host-LLM judgment — there is **no `--flag`**, no scorer, no schema, and no
104
104
  label transition.
@@ -111,9 +111,9 @@ skill states once).
111
111
  presents a **three-way operator choice**:
112
112
  - **Recommended: single Story** (with the triage rationale) — persist the
113
113
  one-pager to a notes file and hand off to
114
- `/story-plan --from-notes <path>`, identifying the invocation as a
115
- scope-triage handoff so `/story-plan` skips its own gate. Then **exit
116
- `/epic-plan`**.
114
+ `/plan --from-notes <path>`, identifying the invocation as a
115
+ scope-triage handoff so `/plan` skips its own gate. Then **exit
116
+ `/plan`**.
117
117
  - **Plan as Epic anyway** — ignore the recommendation and continue to
118
118
  Phase 2 with the one-pager.
119
119
  - **Abort** — stop planning entirely.
@@ -133,7 +133,7 @@ opening a duplicate.
133
133
 
134
134
  1. **Invoke the duplicate-search module**: Call
135
135
  `findSimilarOpenEpics({ onePager, provider })` exported from
136
- [`.agents/scripts/lib/duplicate-search.js`](../scripts/lib/duplicate-search.js).
136
+ [`.agents/scripts/lib/duplicate-search.js`](../../scripts/lib/duplicate-search.js).
137
137
  The `provider` is the resolved ticketing provider
138
138
  (`provider-factory.js`), and `onePager` is the markdown returned by
139
139
  Phase 1.
@@ -142,7 +142,7 @@ opening a duplicate.
142
142
  list, render the candidates (id, title, score, URL) and **STOP**. Do
143
143
  not proceed to Phase 3 until the user either (a) confirms the new
144
144
  Epic is genuinely distinct or (b) chooses to fold the idea into one of
145
- the existing Epics, in which case `/epic-plan` exits and the operator
145
+ the existing Epics, in which case `/plan` exits and the operator
146
146
  resumes work on the existing Epic ID.
147
147
 
148
148
  3. **No-match fast path**: If the module returns `[]`, proceed
@@ -155,9 +155,9 @@ new Epic is genuinely distinct).
155
155
 
156
156
  1. **Render the body**: Call
157
157
  `renderEpicBody({ onePager, template })` exported from
158
- [`.agents/scripts/lib/epic-plan-ideation.js`](../scripts/lib/epic-plan-ideation.js).
158
+ [`.agents/scripts/lib/epic-plan-ideation.js`](../../scripts/lib/epic-plan-ideation.js).
159
159
  The `template` argument is the contents of
160
- [`.agents/templates/epic-from-idea.md`](../templates/epic-from-idea.md),
160
+ [`.agents/templates/epic-from-idea.md`](../../templates/epic-from-idea.md),
161
161
  which carries the five canonical sections (Context, Goal, Non-Goals,
162
162
  Scope, Acceptance Criteria). Sections missing from the one-pager are
163
163
  rendered as `_(not specified)_` rather than left as raw `{{token}}`
@@ -180,7 +180,7 @@ new Epic is genuinely distinct).
180
180
  **Board membership (Story #3822)**: the provider's `createIssue`
181
181
  adds the new Epic to the configured Projects V2 board via the
182
182
  shared `addIssueToBoard` helper
183
- ([`providers/github/board-add.js`](../scripts/providers/github/board-add.js))
183
+ ([`providers/github/board-add.js`](../../scripts/providers/github/board-add.js))
184
184
  — idempotent, non-fatal (warn-on-error), and a no-op when no
185
185
  project number is configured — so the Epic lands on the board
186
186
  without relying on GitHub's "Auto-add to project" built-in
@@ -216,13 +216,13 @@ planned.
216
216
  > tickets. Do you want to **re-plan**? This will **overwrite the PRD,
217
217
  > Tech Spec, and Acceptance Spec in place** (same issue numbers, refreshed
218
218
  > bodies, comment history preserved) and **close-and-recreate** all
219
- > Feature/Story tickets."
219
+ > child Story tickets."
220
220
 
221
221
  3. **If user confirms re-plan**: Pass `--force` to all subsequent script
222
222
  invocations. Under `--force`, the three context tickets (PRD, Tech Spec,
223
223
  Acceptance Spec) are overwritten in place — their issue numbers, Epic
224
224
  sub-issue links, and prior discussion are preserved, and each receives a
225
- one-line regeneration audit comment. Feature/Story child tickets are still
225
+ one-line regeneration audit comment. Child Story tickets are still
226
226
  closed and recreated, because a re-decomposition can legitimately produce a
227
227
  different ticket set.
228
228
  4. **If user declines**: Abort gracefully.
@@ -243,8 +243,8 @@ The advisory runs **only** when **both** hold:
243
243
  1. **Phase 5 found no planning artifacts** — the Epic body has no
244
244
  `## Planning Artifacts` section linking a PRD / Tech Spec (i.e. Phase 5
245
245
  did **not** enter its re-plan branch).
246
- 2. **The Epic has no open Feature/Story children** — no open `type::feature`
247
- or `type::story` sub-issues are linked to this Epic.
246
+ 2. **The Epic has no open Story children** — no open `type::story`
247
+ sub-issues are linked to this Epic.
248
248
 
249
249
  If **either** condition fails, **skip this phase silently** and continue to
250
250
  Phase 6. It must **never** fire on the re-plan path: recommending a "downgrade
@@ -256,14 +256,14 @@ triage on the one-pager before the Epic existed.
256
256
  ### Triage
257
257
 
258
258
  1. **Activate the scope-triage skill**: Read
259
- [`<agentRoot>/skills/core/scope-triage/SKILL.md`](../skills/core/scope-triage/SKILL.md)
259
+ [`<agentRoot>/skills/core/scope-triage/SKILL.md`](../../skills/core/scope-triage/SKILL.md)
260
260
  via the `Read` tool (resolve `<agentRoot>` from `project.paths.agentRoot` —
261
261
  default `.agents`) and apply its rubric to the **Epic body**. The skill is
262
262
  artifact-agnostic — it reads the same against an Epic body as against a
263
263
  one-pager or a Story draft — and anchors its sizing judgment **by
264
264
  reference** to `DELIVERABLE_GRANULARITY_GUIDANCE` / `DEFAULT_TASK_SIZING`
265
265
  in
266
- [`ticket-validator-sizing.js`](../scripts/lib/orchestration/ticket-validator-sizing.js).
266
+ [`ticket-validator-sizing.js`](../../scripts/lib/orchestration/ticket-validator-sizing.js).
267
267
  It emits one verdict: `epic` | `story` | `borderline`. The verdict is
268
268
  host-LLM judgment — there is **no `--flag`**, no scorer, no schema, and no
269
269
  label transition behind this gate. Do **not** restate the skill's rubric or
@@ -299,11 +299,11 @@ closes the Epic in its favor, and **every** issue mutation below happens
299
299
  1. **Seed a notes file from the Epic body.** Write the Epic's Context / Goal /
300
300
  Scope / Acceptance Criteria into a seed file under
301
301
  `temp/epic-[Epic_ID]/scope-triage-seed.md` (the `temp/` tree is gitignored).
302
- This is the same notes-file shape `/story-plan --from-notes` consumes.
302
+ This is the same notes-file shape `/plan --from-notes` consumes.
303
303
 
304
- 2. **Hand off to `/story-plan --from-notes`.** Invoke
305
- [`/story-plan --from-notes temp/epic-[Epic_ID]/scope-triage-seed.md`](story-plan.md),
306
- **identifying the invocation as a scope-triage handoff** so `/story-plan`
304
+ 2. **Hand off to `/plan --from-notes`.** Invoke
305
+ [`/plan --from-notes temp/epic-[Epic_ID]/scope-triage-seed.md`](plan-story.md),
306
+ **identifying the invocation as a scope-triage handoff** so `/plan`
307
307
  skips its own escalation gate (the skill's no-re-triage rule — a handoff is
308
308
  a settled triage decision, and re-running the gate on the receiving side
309
309
  would re-litigate it and risk a ping-pong between the two workflows). The
@@ -311,7 +311,7 @@ closes the Epic in its favor, and **every** issue mutation below happens
311
311
  (`Converted from Epic #[Epic_ID] — scope triaged as a standalone Story`) so
312
312
  the audit trail is bidirectional.
313
313
 
314
- 3. **Close the Epic in favor of the replacement.** Once `/story-plan` has
314
+ 3. **Close the Epic in favor of the replacement.** Once `/plan` has
315
315
  created the replacement Story (capture its number as `#N`), close the Epic
316
316
  with a cross-linking comment:
317
317
 
@@ -326,10 +326,10 @@ closes the Epic in its favor, and **every** issue mutation below happens
326
326
  give a reviewer the full bidirectional trail.
327
327
 
328
328
  The conversion mutates two issues (creates the Story, closes the Epic) — both
329
- behind the single operator confirmation above. After conversion `/epic-plan`
329
+ behind the single operator confirmation above. After conversion `/plan`
330
330
  exits: the work now lives on the standalone Story, which the operator delivers
331
- via [`/single-story-deliver`](helpers/single-story-deliver.md) or
332
- [`/story-deliver`](story-deliver.md).
331
+ via [`/single-story-deliver`](single-story-deliver.md) or
332
+ [`/deliver`](deliver-stories.md).
333
333
 
334
334
  ## Phase 6: Epic Clarity Gate
335
335
 
@@ -338,7 +338,7 @@ Detection) and the Phase 5.5 story-sized advisory, and before Phase 7
338
338
  (PRD, Tech Spec & Acceptance Spec). The gate scores the Epic body
339
339
  against the five canonical
340
340
  sections from
341
- [`.agents/templates/epic-from-idea.md`](../templates/epic-from-idea.md)
341
+ [`.agents/templates/epic-from-idea.md`](../../templates/epic-from-idea.md)
342
342
  (Context, Goal, Non-Goals, Scope, Acceptance Criteria) and either
343
343
  skips fast (when the Epic body is already clear) or drops into a
344
344
  refinement loop seeded from the current Epic body. The scorer also
@@ -352,8 +352,8 @@ canonical headings. A `clear` verdict requires **both** ≥ 4 of 5
352
352
  sections present **and** the **Acceptance Criteria** section present —
353
353
  AC is a required section, not one of the four optional passers, so an
354
354
  Epic with no Acceptance Criteria is always `needs-refinement` (it would
355
- otherwise hard-fail the `/epic-deliver` start gate downstream). See
356
- [`lib/epic-plan-clarity.js`](../scripts/lib/epic-plan-clarity.js)
355
+ otherwise hard-fail the `/deliver` start gate downstream). See
356
+ [`lib/epic-plan-clarity.js`](../../scripts/lib/epic-plan-clarity.js)
357
357
  for the scoring logic.
358
358
 
359
359
  1. **Score the body**: Run the clarity-check CLI in context-emission
@@ -373,7 +373,7 @@ for the scoring logic.
373
373
 
374
374
  3. **Needs-refinement path**: When `verdict === 'needs-refinement'`,
375
375
  activate the
376
- [`core/idea-refinement`](../skills/core/idea-refinement/SKILL.md)
376
+ [`core/idea-refinement`](../../skills/core/idea-refinement/SKILL.md)
377
377
  skill **seeded from the current Epic body** (not a blank seed),
378
378
  with `missingOrPlaceholder` as the convergence target. The skill
379
379
  runs its three-phase divergent → convergent → sharpen loop and
@@ -381,9 +381,9 @@ for the scoring logic.
381
381
 
382
382
  4. **Re-render the body**: Call
383
383
  `renderEpicBody({ onePager, template })` from
384
- [`lib/epic-plan-ideation.js`](../scripts/lib/epic-plan-ideation.js)
384
+ [`lib/epic-plan-ideation.js`](../../scripts/lib/epic-plan-ideation.js)
385
385
  (the same helper Phase 3 uses), passing the contents of
386
- [`.agents/templates/epic-from-idea.md`](../templates/epic-from-idea.md).
386
+ [`.agents/templates/epic-from-idea.md`](../../templates/epic-from-idea.md).
387
387
  Write the result to `temp/epic-[Epic_ID]/clarity-update.md`.
388
388
 
389
389
  5. **HITL stop — confirm the diff**: Display the diff between the
@@ -421,11 +421,11 @@ for the scoring logic.
421
421
  > `lib/orchestration/epic-plan-lease-guard.js`). The lease rides the Epic's
422
422
  > single assignee: the operator (`github.operatorHandle` in `.agentrc.json`)
423
423
  > claims the Epic for the duration of the plan. The guard **fails closed**:
424
- > `/epic-plan` emits no `story.heartbeat` during its run (heartbeats are a
424
+ > `/plan` emits no `story.heartbeat` during its run (heartbeats are a
425
425
  > delivery-time signal), so there is no live-heartbeat source to judge a
426
426
  > concurrent plan's liveness from. Any **foreign assignee** is therefore
427
427
  > treated as a live claim — the persist half **exits non-zero and names the
428
- > current owner**, so two `/epic-plan` runs cannot drive the same Epic
428
+ > current owner**, so two `/plan` runs cannot drive the same Epic
429
429
  > concurrently. Pass **`--steal`** to forcibly transfer a foreign claim once
430
430
  > you have confirmed the other run is dead. An **unassigned** Epic, or one
431
431
  > **already held by this operator**, is taken (or re-affirmed) silently. The
@@ -448,14 +448,14 @@ for the scoring logic.
448
448
  > (`context::acceptance-spec`). The Acceptance Spec captures the
449
449
  > stable-ID acceptance criteria table (`| AC ID | Outcome | Feature
450
450
  > File | Scenario | Disposition |`) that drives close-time
451
- > reconciliation during `/epic-deliver` Phase 6. Operators may opt out
451
+ > reconciliation during `/deliver` Phase 6. Operators may opt out
452
452
  > for refactor-only or docs-only Epics by applying the
453
453
  > `acceptance::n-a` label to the Epic ticket — when present, the
454
454
  > `epic-plan-spec-author` skill skips the Acceptance Spec output and
455
455
  > the runtime gates (start gate, finalize reconciler) honour the
456
456
  > waiver — the spec ticket itself need not be authored or approved when
457
457
  > the waiver is set. See [SDLC § Acceptance Spec — the third planning
458
- > context ticket](../docs/SDLC.md#acceptance-spec--the-third-planning-context-ticket)
458
+ > context ticket](../../docs/SDLC.md#acceptance-spec--the-third-planning-context-ticket)
459
459
  > for the full lifecycle.
460
460
 
461
461
  <!-- separator: adjacent blockquotes -->
@@ -475,7 +475,7 @@ for the scoring logic.
475
475
  > **Durability.** The per-Epic tree is durable across runs: only the
476
476
  > wrapper scripts perform intra-phase cleanup of files they wrote in
477
477
  > the same invocation (see
478
- > [`lib/plan-phase-cleanup.js`](../scripts/lib/plan-phase-cleanup.js)).
478
+ > [`lib/plan-phase-cleanup.js`](../../scripts/lib/plan-phase-cleanup.js)).
479
479
  > Nothing else garbage-collects the tree, so cross-Epic artifacts —
480
480
  > retros, perf reports, signals, manifests — accumulate until an
481
481
  > operator explicitly removes them.
@@ -489,7 +489,7 @@ for the scoring logic.
489
489
  ```
490
490
 
491
491
  2. **Activate the `epic-plan-spec-author` skill**: Read
492
- [`<agentRoot>/skills/core/epic-plan-spec-author/SKILL.md`](../skills/core/epic-plan-spec-author/SKILL.md)
492
+ [`<agentRoot>/skills/core/epic-plan-spec-author/SKILL.md`](../../skills/core/epic-plan-spec-author/SKILL.md)
493
493
  via the `Read` tool (resolve `<agentRoot>` from
494
494
  `project.paths.agentRoot` — default `.agents`) and execute its
495
495
  procedure with `[Epic_ID]` as input. The skill reads
@@ -532,8 +532,8 @@ for the scoring logic.
532
532
 
533
533
  # Re-planning (--force overwrites the three context tickets IN PLACE —
534
534
  # same PRD / Tech Spec / Acceptance Spec issue numbers, refreshed bodies,
535
- # tickets kept open, one regeneration audit comment each. Feature/Story
536
- # child tickets are still close-and-recreate at decomposition time.)
535
+ # tickets kept open, one regeneration audit comment each. Child Story
536
+ # tickets are still close-and-recreate at decomposition time.)
537
537
  node .agents/scripts/epic-plan-spec.js --epic [Epic_ID] \
538
538
  --prd temp/epic-[Epic_ID]/prd.md \
539
539
  --techspec temp/epic-[Epic_ID]/techspec.md \
@@ -560,7 +560,7 @@ for the scoring logic.
560
560
  PRD, Tech Spec, and Acceptance Spec on GitHub. Approval is the
561
561
  user's verbal OK in this session — the three context tickets stay
562
562
  **open** through delivery and are closed automatically by
563
- `/epic-deliver` when the Epic PR opens. Do NOT proceed
563
+ `/deliver` when the Epic PR opens. Do NOT proceed
564
564
  to decomposition until the user confirms the plan is accurate.
565
565
  - **Low risk** (`requiresReview === false` and no `--force-review`):
566
566
  Emit the auto-proceed message from the persist stdout
@@ -571,7 +571,7 @@ for the scoring logic.
571
571
 
572
572
  5. **Tech Spec freshness check (advisory)**: After the Tech Spec issue
573
573
  is created, `epic-plan-spec.js` runs
574
- [`validateSpecFreshness`](../scripts/lib/orchestration/spec-freshness.js)
574
+ [`validateSpecFreshness`](../../scripts/lib/orchestration/spec-freshness.js)
575
575
  against the authored Tech Spec body, probing every cited path-shape
576
576
  reference (backticked paths, `// header` lines in code blocks, and
577
577
  inline mentions of paths under `.agents/`, `src/`, `lib/`, `app/`,
@@ -598,11 +598,11 @@ for the scoring logic.
598
598
  6. **BDD scenario cross-reference (advisory)**: When the project has
599
599
  adopted BDD, `epic-plan-spec.js` populates the planner-context
600
600
  envelope with `bddScenarios` — the output of
601
- [`scanBddScenarios`](../scripts/lib/bdd-scenario-scanner.js) over
601
+ [`scanBddScenarios`](../../scripts/lib/bdd-scenario-scanner.js) over
602
602
  the canonical feature roots resolved by
603
- [`resolveFeatureRoots`](../scripts/lib/bdd-runner-detect.js)
603
+ [`resolveFeatureRoots`](../../scripts/lib/bdd-runner-detect.js)
604
604
  (`tests/features`, `features`, `test/features`). The Acceptance
605
- Engineer step in the [`epic-plan-spec-author`](../skills/core/epic-plan-spec-author/SKILL.md)
605
+ Engineer step in the [`epic-plan-spec-author`](../../skills/core/epic-plan-spec-author/SKILL.md)
606
606
  skill scores each planned AC against the scenario index via
607
607
  `findBestScenarioMatch`; when an existing scenario covers an AC's
608
608
  outcome, the AC's `Scenario` column is annotated with `<file>:L<line>`
@@ -615,7 +615,7 @@ for the scoring logic.
615
615
  7. **Cleanup**: The wrapper script (`epic-plan-spec.js`) deletes the Phase 7
616
616
  temp files automatically on success — no operator action required. The
617
617
  cleanup contract lives in
618
- [`lib/plan-phase-cleanup.js`](../scripts/lib/plan-phase-cleanup.js).
618
+ [`lib/plan-phase-cleanup.js`](../../scripts/lib/plan-phase-cleanup.js).
619
619
  **Run the Phase 7.5 spec-validate gate (below) on
620
620
  `temp/epic-[Epic_ID]/techspec.md` *before* this cleanup deletes the file** —
621
621
  the gate reads the authored spec from temp.
@@ -631,7 +631,7 @@ for the scoring logic.
631
631
 
632
632
  **Why this gate exists.** Phase 8.3 (Holistic Consolidation) reconciles the
633
633
  draft ticket array against the Tech Spec's `## Delivery Slicing` section, which
634
- the [`epic-plan-decompose-author`](../skills/core/epic-plan-decompose-author/SKILL.md)
634
+ the [`epic-plan-decompose-author`](../../skills/core/epic-plan-decompose-author/SKILL.md)
635
635
  skill uses as the capability-boundary anchor (see Phase 8 step 2 below). When
636
636
  the authored Tech Spec omits that section, the consolidation pass runs against a
637
637
  void and produces groupings that reflect **technical shape** (e.g. cron jobs
@@ -651,7 +651,7 @@ node .agents/scripts/epic-plan-spec-validate.js \
651
651
  insensitive; the gate also accepts the variant `## Delivery slicing` and the
652
652
  shorthand `## Slicing`). Continue to Phase 8.
653
653
  - **Exit non-zero** — the required section is missing. The gate is implemented
654
- by [`lib/orchestration/spec-section-validator.js`](../scripts/lib/orchestration/spec-section-validator.js)
654
+ by [`lib/orchestration/spec-section-validator.js`](../../scripts/lib/orchestration/spec-section-validator.js)
655
655
  and prints an operator-visible message naming the missing section and the two
656
656
  recovery paths:
657
657
 
@@ -680,20 +680,20 @@ node .agents/scripts/epic-plan-spec-validate.js \
680
680
 
681
681
  > **Open-children guard (workflow guard).** Before persisting the breakdown,
682
682
  > `epic-plan-decompose.js` refuses to run when the Epic **already has open
683
- > Feature/Story children**, unless `--force` (close + recreate the tree) or
683
+ > Story children**, unless `--force` (close + recreate the tree) or
684
684
  > `--resume` (continue a partial persist) is set. This stops a re-run from
685
- > stacking a duplicate Feature/Story tree on top of an existing one — the
685
+ > stacking a duplicate Story set on top of an existing one — the
686
686
  > phase exits non-zero and lists the open children. Once persist completes,
687
687
  > the Epic-lease acquired in Phase 7 is **released** (best-effort; a release
688
688
  > failure never fails decompose).
689
689
 
690
690
  <!-- separator: adjacent blockquotes -->
691
691
 
692
- > **Hierarchy.** The decomposer emits an Epic Feature Story tree.
692
+ > **Hierarchy.** The decomposer emits a flat Story backlog under the Epic.
693
693
  > Acceptance criteria and verification steps are inlined on each Story
694
694
  > body (`acceptance[]` / `verify[]` fields) and resolved against the
695
695
  > Acceptance Spec context ticket at close time. See
696
- > [`.agents/instructions.md` § 5.D](../instructions.md) for the full
696
+ > [`.agents/instructions.md` § 5.D](../../instructions.md) for the full
697
697
  > contract.
698
698
 
699
699
  1. **Gather Decomposition Context**:
@@ -703,7 +703,7 @@ node .agents/scripts/epic-plan-spec-validate.js \
703
703
  ```
704
704
 
705
705
  2. **Activate the `epic-plan-decompose-author` skill**: Read
706
- [`<agentRoot>/skills/core/epic-plan-decompose-author/SKILL.md`](../skills/core/epic-plan-decompose-author/SKILL.md)
706
+ [`<agentRoot>/skills/core/epic-plan-decompose-author/SKILL.md`](../../skills/core/epic-plan-decompose-author/SKILL.md)
707
707
  via the `Read` tool (resolve `<agentRoot>` from
708
708
  `project.paths.agentRoot` — default `.agents`) and execute its
709
709
  procedure with `[Epic_ID]` as input. The skill reads
@@ -732,17 +732,17 @@ node .agents/scripts/epic-plan-spec-validate.js \
732
732
  3. **Phase 8.3 — Holistic Consolidation (HITL diff gate)**: After the
733
733
  draft `temp/epic-[Epic_ID]/tickets.json` exists and **before** the persist
734
734
  call below, activate the
735
- [`epic-plan-consolidate`](../skills/core/epic-plan-consolidate/SKILL.md)
735
+ [`epic-plan-consolidate`](../../skills/core/epic-plan-consolidate/SKILL.md)
736
736
  skill with `[Epic_ID]` as input. This is a **separate critic pass with
737
737
  fresh context** (not a self-review appended to the author skill): it reads
738
738
  the draft array plus the PRD / Tech Spec, reconciles the draft against the
739
739
  Tech Spec `## Delivery Slicing` target, and emits a **consolidated**
740
740
  `tickets.json` plus a human-readable
741
741
  `temp/epic-[Epic_ID]/consolidation-report.md`. Its operations are
742
- scope-preserving only — **merge Stories, collapse single-Story Features
743
- into siblings, re-parent, rewire `depends_on`** — and it MUST NOT add scope
744
- or invent tickets; it resolves single-Story Features by **collapsing**
745
- them, never by splitting a lone Story. It runs **before** the deterministic
742
+ scope-preserving only — **merge sibling Stories and rewire
743
+ `depends_on`** — and it MUST NOT add scope or invent tickets; it
744
+ consolidates fragmented slices by merging them into a cohesive Story,
745
+ never by splitting one. It runs **before** the deterministic
746
746
  validator (step 4), so the validator re-checks its output and the critic
747
747
  cannot emit an invalid plan.
748
748
 
@@ -754,7 +754,7 @@ node .agents/scripts/epic-plan-spec-validate.js \
754
754
 
755
755
  4. **Persist to GitHub**: Run the decompose CLI's persist half. It
756
756
  validates the ticket array (`validateAndNormalizeTickets`), creates
757
- the Feature/Story issues, flips the Epic to `agent::ready`, and
757
+ the Story issues, flips the Epic to `agent::ready`, and
758
758
  writes the `epic-plan-state` checkpoint.
759
759
 
760
760
  ```bash
@@ -771,7 +771,7 @@ node .agents/scripts/epic-plan-spec-validate.js \
771
771
  - Hierarchy completeness, dependency-DAG acyclicity, and `risk::high`
772
772
  labelling are deterministic invariants enforced by
773
773
  `validateAndNormalizeTickets` in
774
- [`lib/orchestration/ticket-validator.js`](../scripts/lib/orchestration/ticket-validator.js);
774
+ [`lib/orchestration/ticket-validator.js`](../../scripts/lib/orchestration/ticket-validator.js);
775
775
  its output during decomposition is the canonical proof — no manual
776
776
  re-check needed.
777
777
  - **File-assumption gate (Story #2636)**: Each Story's `body.changes`
@@ -810,13 +810,12 @@ node .agents/scripts/epic-plan-spec-validate.js \
810
810
 
811
811
  6. **Audit**:
812
812
  - Check the Epic's comment thread to ensure the backlog summary was posted.
813
- - Verify that at least one `type::feature` and `type::story` issue
814
- was created.
813
+ - Verify that at least one `type::story` issue was created.
815
814
 
816
815
  7. **Cleanup**: The wrapper script (`epic-plan-decompose.js`) deletes the
817
816
  Phase 8 temp files automatically on success — no operator action required.
818
817
  The cleanup contract lives in
819
- [`lib/plan-phase-cleanup.js`](../scripts/lib/plan-phase-cleanup.js).
818
+ [`lib/plan-phase-cleanup.js`](../../scripts/lib/plan-phase-cleanup.js).
820
819
 
821
820
  ## Phase 9: Execution Roadmap (Story Dispatch)
822
821
 
@@ -835,19 +834,19 @@ node .agents/scripts/epic-plan-spec-validate.js \
835
834
  > **Manifest persistence (v5.9.0):** the dispatcher also posts the manifest
836
835
  > as a `dispatch-manifest` structured comment on the Epic (idempotent —
837
836
  > re-runs replace the prior comment). That comment is the source of truth for
838
- > the Wave Completeness Gate in `/epic-deliver` Step 0.5 and for any external
837
+ > the Wave Completeness Gate in `/deliver` Step 0.5 and for any external
839
838
  > wave-tracking tooling.
840
839
 
841
840
  3. **Handoff**: Provide the user with the recommended next step:
842
841
 
843
- > "Planning is complete. Run `/epic-deliver #[Epic ID]` to start the wave
844
- > loop, or pick a single Story from Wave 0 and run `/story-deliver #[Story
842
+ > "Planning is complete. Run `/deliver #[Epic ID]` to start the wave
843
+ > loop, or pick a single Story from Wave 0 and run `/deliver #[Story
845
844
  > ID]` to drive it directly."
846
845
 
847
846
  ## Phase 10: Readiness Health Check
848
847
 
849
848
  Run the post-plan health check to validate the backlog before handing off to
850
- `/epic-deliver`. The default mode runs only the cheap checks
849
+ `/deliver`. The default mode runs only the cheap checks
851
850
  (config + git remote) and targets sub-2-second turnaround. The script itself
852
851
  always exits 0; the structured JSON on stdout reports findings.
853
852
 
@@ -899,7 +898,7 @@ triaged it (e.g. a known `origin` outage during a maintenance window).
899
898
  ## Phase 11: Plan Comprehension Gate
900
899
 
901
900
  An **opt-in, advisory** gate that offers the operator a guided walkthrough of
902
- the freshly planned backlog before they hand off to `/epic-deliver`. The plan
901
+ the freshly planned backlog before they hand off to `/deliver`. The plan
903
902
  is the moment the operator authorizes an autonomous fan-out of subagents — this
904
903
  phase exists so they can *understand and endorse* the approach while it is
905
904
  still free to change, not after the code lands.
@@ -931,15 +930,15 @@ forcing the walkthrough.
931
930
  ### 2. Run the walkthrough (when offered and accepted)
932
931
 
933
932
  Activate the
934
- [`core/knowledge-transfer`](../skills/core/knowledge-transfer/SKILL.md) skill
933
+ [`core/knowledge-transfer`](../../skills/core/knowledge-transfer/SKILL.md) skill
935
934
  with the **plan** as the subject — the Epic body, the linked PRD / Tech Spec
936
- context tickets, the decomposition (Features/Stories with inline
935
+ context tickets, the decomposition (Stories with inline
937
936
  `acceptance[]` / `verify[]`), and the Phase 9 wave roadmap. The skill owns the
938
937
  method (restate-first, the why-ladder, mastery gates, depth levels, optional
939
938
  quizzing, the persistent `temp/comprehension-*.md` checklist).
940
939
 
941
940
  **Interruptible at every checkpoint.** Each step MUST offer an explicit
942
- "I'm good — proceed to `/epic-deliver`" exit. The instant the operator takes
941
+ "I'm good — proceed to `/deliver`" exit. The instant the operator takes
943
942
  it, stop the walkthrough and advance to Phase 12. Never trap the operator in
944
943
  the loop.
945
944
 
@@ -957,7 +956,7 @@ condition.
957
956
  the notification script:
958
957
 
959
958
  ```bash
960
- node .agents/scripts/notify.js [Epic_ID] "Planning complete, review tickets. Backlog decomposition complete. Epic is ready for /epic-deliver." --action
959
+ node .agents/scripts/notify.js [Epic_ID] "Planning complete, review tickets. Backlog decomposition complete. Epic is ready for /deliver." --action
961
960
  ```
962
961
 
963
962
  ## Troubleshooting
@@ -965,9 +964,10 @@ condition.
965
964
  - If `epic-plan-spec.js --emit-context` fails, confirm the Epic exists and
966
965
  has a body with enough initial context.
967
966
  - If `epic-plan-decompose.js` rejects the tickets file, re-read the
968
- validator's error message — the most common causes are a Story with no
969
- `parent_slug`, a Story whose `parent_slug` does not point at a Feature, or a
970
- dependency cycle in the Story `depends_on` graph.
967
+ validator's error message — the most common causes are a ticket whose
968
+ `type` is not `story`, a Story missing its inline `acceptance[]` /
969
+ `verify[]` contract, or a dependency cycle in the Story `depends_on`
970
+ graph.
971
971
  - If decomposition persisted the tickets but the Epic is not on `agent::ready`,
972
972
  you likely called `runDecomposePhase` from `epic-plan-decompose.js`
973
973
  directly without completing the persist flow — only the CLI surface