mandrel 1.58.0 → 1.60.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 (319) hide show
  1. package/.agents/README.md +100 -98
  2. package/.agents/docs/SDLC.md +140 -141
  3. package/.agents/docs/configuration.md +16 -16
  4. package/.agents/docs/workflows.md +7 -8
  5. package/.agents/instructions.md +12 -11
  6. package/.agents/personas/architect.md +1 -1
  7. package/.agents/personas/product.md +1 -1
  8. package/.agents/personas/project-manager.md +14 -14
  9. package/.agents/personas/technical-writer.md +1 -1
  10. package/.agents/rules/changelog-style.md +5 -5
  11. package/.agents/rules/git-conventions.md +3 -3
  12. package/.agents/schemas/agentrc.schema.json +3 -3
  13. package/.agents/schemas/audit-rules.json +20 -0
  14. package/.agents/schemas/dispatch-manifest.json +4 -4
  15. package/.agents/schemas/epic-spec.schema.json +15 -45
  16. package/.agents/schemas/lifecycle/README.md +1 -1
  17. package/.agents/schemas/lifecycle/story.dispatch.end.schema.json +1 -1
  18. package/.agents/schemas/lifecycle/story.dispatch.start.schema.json +1 -1
  19. package/.agents/schemas/lifecycle/story.heartbeat.schema.json +1 -1
  20. package/.agents/schemas/validation-evidence.schema.json +1 -1
  21. package/.agents/scripts/README.md +1 -1
  22. package/.agents/scripts/acceptance-eval.js +21 -4
  23. package/.agents/scripts/acceptance-spec-reconciler.js +2 -2
  24. package/.agents/scripts/analyze-execution.js +2 -2
  25. package/.agents/scripts/assert-branch.js +1 -3
  26. package/.agents/scripts/audit-to-stories.js +1 -1
  27. package/.agents/scripts/bootstrap.js +1 -1
  28. package/.agents/scripts/check-arch-cycles.js +360 -0
  29. package/.agents/scripts/check-doc-links.js +2 -3
  30. package/.agents/scripts/coverage-capture.js +24 -3
  31. package/.agents/scripts/diagnose-friction.js +1 -1
  32. package/.agents/scripts/dispatcher.js +2 -2
  33. package/.agents/scripts/drain-pending-cleanup.js +1 -1
  34. package/.agents/scripts/epic-audit-prepare.js +3 -3
  35. package/.agents/scripts/epic-deliver-note-intervention.js +2 -2
  36. package/.agents/scripts/epic-deliver-preflight.js +11 -9
  37. package/.agents/scripts/epic-deliver-prepare.js +13 -5
  38. package/.agents/scripts/epic-execute-record-wave.js +5 -5
  39. package/.agents/scripts/epic-plan-healthcheck.js +6 -10
  40. package/.agents/scripts/epic-plan-spec-validate.js +1 -1
  41. package/.agents/scripts/epic-reconcile.js +11 -29
  42. package/.agents/scripts/evidence-gate.js +2 -2
  43. package/.agents/scripts/generate-workflows-doc.js +1 -1
  44. package/.agents/scripts/git-rebase-and-resolve.js +1 -1
  45. package/.agents/scripts/hierarchy-gate.js +40 -24
  46. package/.agents/scripts/lib/ITicketingProvider.js +1 -1
  47. package/.agents/scripts/lib/audit-suite/selector.js +1 -1
  48. package/.agents/scripts/lib/audit-to-stories/seed-epic-from-findings.js +2 -2
  49. package/.agents/scripts/lib/baseline-snapshot.js +7 -7
  50. package/.agents/scripts/lib/baselines/kinds/coverage.js +33 -149
  51. package/.agents/scripts/lib/baselines/kinds/duplication.js +27 -116
  52. package/.agents/scripts/lib/baselines/kinds/kind-factory.js +192 -0
  53. package/.agents/scripts/lib/baselines/kinds/lighthouse.js +34 -133
  54. package/.agents/scripts/lib/baselines/kinds/maintainability.js +31 -124
  55. package/.agents/scripts/lib/baselines/kinds/mutation.js +25 -111
  56. package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +59 -0
  57. package/.agents/scripts/lib/baselines/maintainability-baseline-save.js +37 -0
  58. package/.agents/scripts/lib/baselines/writer.js +1 -1
  59. package/.agents/scripts/lib/bdd-runner-detect.js +1 -1
  60. package/.agents/scripts/lib/bdd-scenario-scanner.js +3 -3
  61. package/.agents/scripts/lib/bootstrap/baselines-layout-migration.js +1 -1
  62. package/.agents/scripts/lib/bootstrap/branch-protection.js +1 -1
  63. package/.agents/scripts/lib/bootstrap/ci-workflow-template.js +1 -1
  64. package/.agents/scripts/lib/bootstrap/commit-push.js +2 -2
  65. package/.agents/scripts/lib/close-validation/commands.js +188 -0
  66. package/.agents/scripts/lib/close-validation/gates.js +235 -0
  67. package/.agents/scripts/lib/close-validation/process.js +101 -0
  68. package/.agents/scripts/lib/close-validation/projections/maintainability.js +1 -1
  69. package/.agents/scripts/lib/close-validation/runner.js +325 -0
  70. package/.agents/scripts/lib/close-validation/telemetry.js +70 -0
  71. package/.agents/scripts/lib/codebase-snapshot.js +1 -1
  72. package/.agents/scripts/lib/config/explain.js +1 -1
  73. package/.agents/scripts/lib/config/quality.js +6 -6
  74. package/.agents/scripts/lib/config/runners.js +2 -2
  75. package/.agents/scripts/lib/config/runtime.js +1 -1
  76. package/.agents/scripts/lib/config/temp-paths.js +2 -2
  77. package/.agents/scripts/lib/config-resolver.js +2 -5
  78. package/.agents/scripts/lib/config-settings-schema-delivery.js +2 -2
  79. package/.agents/scripts/lib/config-settings-schema-quality.js +1 -1
  80. package/.agents/scripts/lib/config-settings-schema.js +3 -3
  81. package/.agents/scripts/lib/coverage-capture.js +147 -4
  82. package/.agents/scripts/lib/cpu-pool.js +14 -0
  83. package/.agents/scripts/lib/crap-utils.js +6 -11
  84. package/.agents/scripts/lib/duplicate-search.js +1 -1
  85. package/.agents/scripts/lib/dynamic-workflow/capability.js +1 -1
  86. package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +87 -0
  87. package/.agents/scripts/lib/epic-plan-clarity.js +1 -1
  88. package/.agents/scripts/lib/epic-plan-ideation.js +1 -1
  89. package/.agents/scripts/lib/feedback-loop/memory-freshness.js +1 -1
  90. package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +1 -1
  91. package/.agents/scripts/lib/findings/classify-finding.js +1 -1
  92. package/.agents/scripts/lib/findings/promote-finding.js +10 -10
  93. package/.agents/scripts/lib/git-utils.js +24 -22
  94. package/.agents/scripts/lib/label-constants.js +3 -4
  95. package/.agents/scripts/lib/label-taxonomy.js +3 -8
  96. package/.agents/scripts/lib/maintainability-engine.js +1 -1
  97. package/.agents/scripts/lib/maintainability-utils.js +4 -187
  98. package/.agents/scripts/lib/observability/perf-report-readers.js +32 -23
  99. package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +81 -7
  100. package/.agents/scripts/lib/orchestration/code-review.js +95 -82
  101. package/.agents/scripts/lib/orchestration/context-hydration-engine.js +8 -9
  102. package/.agents/scripts/lib/orchestration/dependency-analyzer.js +3 -3
  103. package/.agents/scripts/lib/orchestration/detectors-phase.js +2 -2
  104. package/.agents/scripts/lib/orchestration/dispatch-engine.js +30 -38
  105. package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +14 -37
  106. package/.agents/scripts/lib/orchestration/epic-cleanup.js +1 -1
  107. package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +22 -22
  108. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +1 -1
  109. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +7 -21
  110. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +3 -3
  111. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/planning-artifacts.js +2 -2
  112. package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +206 -58
  113. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/drain.js +1 -1
  114. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +27 -3
  115. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/prompts.js +1 -1
  116. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +28 -8
  117. package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +1 -1
  118. package/.agents/scripts/lib/orchestration/epic-run-state-store.js +3 -3
  119. package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +4 -4
  120. package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +3 -3
  121. package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +13 -41
  122. package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +7 -7
  123. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +2 -3
  124. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +2 -8
  125. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +4 -4
  126. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/component-drift.js +103 -0
  127. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/crap-drift.js +22 -64
  128. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/maintainability-drift.js +38 -76
  129. package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +4 -4
  130. package/.agents/scripts/lib/orchestration/epic-runner/story-run-progress-writer.js +10 -10
  131. package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +8 -20
  132. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +7 -15
  133. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +72 -41
  134. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +2 -4
  135. package/.agents/scripts/lib/orchestration/file-assumptions.js +6 -5
  136. package/.agents/scripts/lib/orchestration/finalize/close-planning-tickets.js +1 -1
  137. package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +2 -2
  138. package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +1 -1
  139. package/.agents/scripts/lib/orchestration/lease-guard-shared.js +144 -0
  140. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +1 -1
  141. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +3 -3
  142. package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +1 -1
  143. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +1 -1
  144. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +1 -1
  145. package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +1 -1
  146. package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +1 -1
  147. package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +1 -1
  148. package/.agents/scripts/lib/orchestration/lifecycle/listeners/merge-watcher.js +1 -1
  149. package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +1 -1
  150. package/.agents/scripts/lib/orchestration/lifecycle/listeners/watcher.js +8 -8
  151. package/.agents/scripts/lib/orchestration/manifest-builder.js +5 -5
  152. package/.agents/scripts/lib/orchestration/parked-follow-ons.js +2 -2
  153. package/.agents/scripts/lib/orchestration/plan-runner/plan-router.js +5 -5
  154. package/.agents/scripts/lib/orchestration/post-merge/phases/notification.js +3 -3
  155. package/.agents/scripts/lib/orchestration/post-merge/phases/ticket-closure.js +3 -3
  156. package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +7 -7
  157. package/.agents/scripts/lib/orchestration/preflight-cache.js +36 -13
  158. package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +1 -1
  159. package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +1 -1
  160. package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +2 -2
  161. package/.agents/scripts/lib/orchestration/retro-runner.js +3 -3
  162. package/.agents/scripts/lib/orchestration/review-depth.js +1 -1
  163. package/.agents/scripts/lib/orchestration/review-providers/codex.js +5 -60
  164. package/.agents/scripts/lib/orchestration/review-providers/native.js +7 -6
  165. package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +105 -0
  166. package/.agents/scripts/lib/orchestration/review-providers/security-review.js +7 -59
  167. package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +2 -4
  168. package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +1 -1
  169. package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +1 -1
  170. package/.agents/scripts/lib/orchestration/single-story-close/runner.js +2 -4
  171. package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +32 -35
  172. package/.agents/scripts/lib/orchestration/skill-capsule-loader.js +1 -2
  173. package/.agents/scripts/lib/orchestration/spec-freshness.js +1 -1
  174. package/.agents/scripts/lib/orchestration/spec-renderer.js +36 -73
  175. package/.agents/scripts/lib/orchestration/spec-section-validator.js +1 -1
  176. package/.agents/scripts/lib/orchestration/story-close/auto-refresh-runner.js +451 -503
  177. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/pre-merge-attribution.js +8 -2
  178. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +47 -2
  179. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/regression-projection.js +2 -2
  180. package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +1 -1
  181. package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +358 -54
  182. package/.agents/scripts/lib/orchestration/story-close/phases/close.js +1 -1
  183. package/.agents/scripts/lib/orchestration/story-close/phases/gates.js +3 -2
  184. package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +32 -5
  185. package/.agents/scripts/lib/orchestration/story-close/post-merge-close.js +5 -18
  186. package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +3 -3
  187. package/.agents/scripts/lib/orchestration/story-close-recovery.js +33 -16
  188. package/.agents/scripts/lib/orchestration/story-reachability.js +47 -0
  189. package/.agents/scripts/lib/orchestration/task-body-validator.js +6 -6
  190. package/.agents/scripts/lib/orchestration/ticket-lease.js +1 -1
  191. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +4 -35
  192. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +1 -10
  193. package/.agents/scripts/lib/orchestration/ticket-validator.js +25 -70
  194. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +44 -73
  195. package/.agents/scripts/lib/orchestration/ticketing/reads.js +16 -7
  196. package/.agents/scripts/lib/orchestration/ticketing/state.js +53 -439
  197. package/.agents/scripts/lib/orchestration/ticketing/transition.js +471 -0
  198. package/.agents/scripts/lib/orchestration/ticketing.js +0 -1
  199. package/.agents/scripts/lib/orchestration/wave-record-notifications.js +3 -3
  200. package/.agents/scripts/lib/orchestration/wave-record-projection.js +2 -8
  201. package/.agents/scripts/lib/plan-phase-cleanup.js +1 -1
  202. package/.agents/scripts/lib/preflight-runner.js +1 -1
  203. package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +4 -5
  204. package/.agents/scripts/lib/presentation/manifest-builder.js +28 -34
  205. package/.agents/scripts/lib/presentation/manifest-formatter.js +3 -4
  206. package/.agents/scripts/lib/presentation/manifest-helpers.js +1 -1
  207. package/.agents/scripts/lib/presentation/manifest-procedures.js +4 -4
  208. package/.agents/scripts/lib/presentation/manifest-render-waves.js +4 -23
  209. package/.agents/scripts/lib/presentation/manifest-renderer.js +1 -1
  210. package/.agents/scripts/lib/presentation/manifest-story-views.js +2 -11
  211. package/.agents/scripts/lib/project-root.js +17 -0
  212. package/.agents/scripts/lib/signals/schema.js +1 -1
  213. package/.agents/scripts/lib/spec/index.js +1 -1
  214. package/.agents/scripts/lib/spec/loader.js +2 -2
  215. package/.agents/scripts/lib/spec/state.js +7 -16
  216. package/.agents/scripts/lib/story-adjacency.js +76 -0
  217. package/.agents/scripts/lib/story-init/context-resolver.js +3 -3
  218. package/.agents/scripts/lib/story-init/state-transitioner.js +2 -2
  219. package/.agents/scripts/lib/story-init/task-graph-builder.js +7 -7
  220. package/.agents/scripts/lib/story-lifecycle.js +9 -9
  221. package/.agents/scripts/lib/story-plan.js +1 -1
  222. package/.agents/scripts/lib/templates/decomposer-prompts.js +59 -52
  223. package/.agents/scripts/lib/transpile.js +93 -0
  224. package/.agents/scripts/lib/wave-runner/tick.js +4 -153
  225. package/.agents/scripts/lib/workers/crap-worker.js +1 -1
  226. package/.agents/scripts/lib/workers/maintainability-report-worker.js +1 -1
  227. package/.agents/scripts/lib/worktree/lifecycle/creation.js +20 -2
  228. package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +90 -0
  229. package/.agents/scripts/lib/worktree/lifecycle/reap.js +26 -8
  230. package/.agents/scripts/lib/worktree/node-modules-strategy.js +74 -0
  231. package/.agents/scripts/lifecycle-emit-story-dispatch.js +1 -1
  232. package/.agents/scripts/lifecycle-emit.js +1 -1
  233. package/.agents/scripts/providers/github/board-add.js +1 -1
  234. package/.agents/scripts/providers/github/errors.js +1 -1
  235. package/.agents/scripts/providers/github/mappers.js +2 -2
  236. package/.agents/scripts/providers/github/tickets.js +114 -10
  237. package/.agents/scripts/resync-status-column.js +1 -1
  238. package/.agents/scripts/retro-run.js +2 -2
  239. package/.agents/scripts/run-lint.js +10 -1
  240. package/.agents/scripts/run-tests.js +24 -4
  241. package/.agents/scripts/single-story-init.js +1 -1
  242. package/.agents/scripts/stories-wave-tick.js +13 -10
  243. package/.agents/scripts/story-close.js +1 -1
  244. package/.agents/scripts/story-init.js +162 -26
  245. package/.agents/scripts/story-phase.js +5 -5
  246. package/.agents/scripts/story-plan.js +3 -3
  247. package/.agents/scripts/sync-branch-from-base.js +2 -2
  248. package/.agents/scripts/validate-docs-freshness.js +1 -1
  249. package/.agents/scripts/wave-tick.js +1 -1
  250. package/.agents/skills/core/analyze-execution/SKILL.md +2 -2
  251. package/.agents/skills/core/epic-plan-consolidate/SKILL.md +21 -26
  252. package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +23 -56
  253. package/.agents/skills/core/epic-plan-spec-author/SKILL.md +4 -4
  254. package/.agents/skills/core/hydrate-context/SKILL.md +2 -2
  255. package/.agents/skills/core/idea-refinement/SKILL.md +4 -4
  256. package/.agents/skills/core/knowledge-transfer/SKILL.md +2 -2
  257. package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +1 -1
  258. package/.agents/skills/core/scope-triage/SKILL.md +9 -10
  259. package/.agents/skills/core/using-agent-skills/SKILL.md +1 -1
  260. package/.agents/skills/skills.index.json +7 -7
  261. package/.agents/skills/stack/qa/lighthouse-baseline/SKILL.md +1 -1
  262. package/.agents/templates/agent-protocol.md +2 -2
  263. package/.agents/workflows/agents-update.md +2 -2
  264. package/.agents/workflows/audit-architecture.md +2 -2
  265. package/.agents/workflows/audit-clean-code.md +2 -2
  266. package/.agents/workflows/audit-dependencies.md +1 -1
  267. package/.agents/workflows/audit-devops.md +1 -1
  268. package/.agents/workflows/audit-documentation.md +226 -0
  269. package/.agents/workflows/audit-lighthouse.md +1 -1
  270. package/.agents/workflows/audit-performance.md +2 -2
  271. package/.agents/workflows/audit-privacy.md +1 -1
  272. package/.agents/workflows/audit-quality.md +2 -2
  273. package/.agents/workflows/audit-security.md +2 -2
  274. package/.agents/workflows/audit-seo.md +1 -1
  275. package/.agents/workflows/audit-sre.md +1 -1
  276. package/.agents/workflows/audit-to-stories.md +10 -10
  277. package/.agents/workflows/audit-ux-ui.md +1 -1
  278. package/.agents/workflows/deliver.md +85 -0
  279. package/.agents/workflows/explain.md +3 -3
  280. package/.agents/workflows/git-merge-pr.md +1 -1
  281. package/.agents/workflows/git-pr-all.md +13 -10
  282. package/.agents/workflows/git-push.md +6 -3
  283. package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
  284. package/.agents/workflows/helpers/acceptance-self-eval.md +1 -1
  285. package/.agents/workflows/helpers/code-review.md +5 -5
  286. package/.agents/workflows/{epic-deliver.md → helpers/deliver-epic.md} +59 -66
  287. package/.agents/workflows/{story-deliver.md → helpers/deliver-stories.md} +25 -25
  288. package/.agents/workflows/helpers/diagnose.md +1 -1
  289. package/.agents/workflows/helpers/epic-audit.md +6 -6
  290. package/.agents/workflows/helpers/epic-deliver-story.md +28 -39
  291. package/.agents/workflows/helpers/epic-plan-decompose.md +23 -23
  292. package/.agents/workflows/helpers/epic-plan-spec.md +6 -6
  293. package/.agents/workflows/helpers/epic-testing.md +3 -3
  294. package/.agents/workflows/helpers/parallel-tooling.md +1 -1
  295. package/.agents/workflows/{epic-plan.md → helpers/plan-epic.md} +84 -84
  296. package/.agents/workflows/{story-plan.md → helpers/plan-story.md} +43 -43
  297. package/.agents/workflows/helpers/signals.md +1 -1
  298. package/.agents/workflows/helpers/single-story-deliver.md +12 -11
  299. package/.agents/workflows/helpers/worktree-lifecycle.md +18 -18
  300. package/.agents/workflows/onboard.md +21 -20
  301. package/.agents/workflows/plan.md +89 -0
  302. package/.agents/workflows/qa-explore.md +1 -1
  303. package/.agents/workflows/qa-run-harness.md +1 -1
  304. package/README.md +17 -20
  305. package/docs/CHANGELOG.md +1149 -0
  306. package/lib/cli/__tests__/update-changelog-surface.test.js +357 -0
  307. package/lib/cli/__tests__/update-reexec.test.js +513 -0
  308. package/lib/cli/init.js +338 -0
  309. package/lib/cli/update.js +413 -52
  310. package/package.json +3 -1
  311. package/.agents/scripts/lib/auto-refresh-baselines.js +0 -308
  312. package/.agents/scripts/lib/close-validation.js +0 -897
  313. package/.agents/scripts/lib/orchestration/cascade-grouping.js +0 -275
  314. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter.js +0 -69
  315. package/.agents/scripts/lib/orchestration/reconciler.js +0 -137
  316. package/.agents/scripts/lib/orchestration/story-close/format-autofix-scoped.js +0 -221
  317. package/.agents/scripts/lib/orchestration/story-close/format-autofix-shared.js +0 -123
  318. package/.agents/scripts/lib/task-utils.js +0 -26
  319. package/.agents/scripts/story-deliver-prepare.js +0 -267
@@ -18,9 +18,9 @@ ADR 20260512-coupling-stance in [`../docs/decisions.md`](../../docs/decisions.md
18
18
 
19
19
  From zero to shipped:
20
20
 
21
- 1. **Plan the work.** Run `/epic-plan` in your agentic IDE. The framework
21
+ 1. **Plan the work.** Run `/plan` in your agentic IDE. The framework
22
22
  generates a PRD, a Tech Spec, and an Acceptance Spec, decomposes the
23
- work into the full Feature → Story hierarchy under the Epic, and
23
+ work into the flat Story backlog under the Epic, and
24
24
  transitions the Epic to `agent::ready`.
25
25
 
26
26
  The entry point you use selects where the run begins:
@@ -31,7 +31,7 @@ From zero to shipped:
31
31
  Phase 5 for an Epic Issue you have already opened.
32
32
 
33
33
  > **Phase numbering note.** The numbered phases below are
34
- > `/epic-plan`'s **internal** phases (1–11), not the SDLC-level
34
+ > `/plan`'s **internal** phases (1–11), not the SDLC-level
35
35
  > Phase 0–4 used by the Mermaid diagram in [§ End-to-End
36
36
  > Process](#end-to-end-process). Phases 1–4 run **only** on the
37
37
  > ideation entry; an existing-Epic invocation starts at Phase 5.
@@ -43,7 +43,7 @@ From zero to shipped:
43
43
  2. **Phase 2 — cross-Epic duplicate search** *(ideation entry only)*
44
44
  — `lib/duplicate-search.js` ranks open Epics whose scope overlaps
45
45
  the one-pager; the operator confirms the idea is distinct or folds
46
- it into an existing Epic (in which case `/epic-plan` exits).
46
+ it into an existing Epic (in which case `/plan` exits).
47
47
  3. **Phase 3 — render Epic body** *(ideation entry only)* — renders
48
48
  the confirmed one-pager into the canonical Epic-from-idea template
49
49
  and stops for a final wording confirmation.
@@ -53,7 +53,7 @@ From zero to shipped:
53
53
  5. **Phase 5 — re-plan detection** — checks whether the Epic already
54
54
  carries planning artifacts and, if so, prompts before overwriting
55
55
  the PRD / Tech Spec / Acceptance Spec in place and recreating the
56
- Feature/Story tickets.
56
+ child Story tickets.
57
57
  6. **Phase 6 — Epic clarity gate** — scores the Epic body against the
58
58
  five canonical sections. A `clear` verdict requires ≥ 4 of 5
59
59
  sections present **and** the Acceptance Criteria section present (AC
@@ -66,13 +66,13 @@ From zero to shipped:
66
66
  and routes high-risk Epics to a HITL review stop (low-risk Epics
67
67
  auto-proceed).
68
68
  8. **Phase 8 — work-breakdown decomposition** — the
69
- `epic-plan-decompose-author` skill emits the Epic → Feature → Story
69
+ `epic-plan-decompose-author` skill emits the Epic → Story
70
70
  tree (with inline `acceptance[]` / `verify[]` per Story); the
71
71
  validator enforces hierarchy, DAG acyclicity, and file-assumption
72
72
  invariants.
73
73
  9. **Phase 9 — execution roadmap** — runs the dispatcher in dry-run to
74
74
  compute waves and posts the `dispatch-manifest` structured comment
75
- that `/epic-deliver` consumes.
75
+ that `/deliver` consumes.
76
76
  10. **Phase 10 — readiness health check** — `epic-plan-healthcheck.js`
77
77
  runs the default config + git-remote checks; a non-OK result is a
78
78
  **blocking** exit condition for the `agent::ready` flip (overridable
@@ -83,22 +83,22 @@ From zero to shipped:
83
83
  non-trivial plans, runs **after** the `agent::ready` flip, and is
84
84
  interruptible at every checkpoint — it never blocks the hand-off.
85
85
  12. **Phase 12 — notification & hand-off** — posts the backlog summary
86
- comment, @mentions the operator, and names `/epic-deliver` as the
86
+ comment, @mentions the operator, and names `/deliver` as the
87
87
  next step.
88
88
 
89
- 2. **Deliver the Epic.** Run `/epic-deliver <epicId>` in your IDE. The
89
+ 2. **Deliver the Epic.** Run `/deliver <epicId>` in your IDE. The
90
90
  skill drives the merged execute + close flow end-to-end.
91
91
 
92
92
  > **Phase numbering note.** The numbered phases below refer to
93
- > `/epic-deliver`'s **internal** phases (1–9), not the SDLC-level
93
+ > `/deliver`'s **internal** phases (1–9), not the SDLC-level
94
94
  > Phase 0–4 used by the Mermaid diagram in [§ End-to-End
95
95
  > Process](#end-to-end-process). When prose elsewhere in this
96
96
  > document says "Phase 7", it always means the internal
97
- > `/epic-deliver` phase unless explicitly prefixed with "SDLC".
97
+ > `/deliver` phase unless explicitly prefixed with "SDLC".
98
98
 
99
99
  1. **Phase 1 — prepare** — snapshot the Epic, build the wave DAG,
100
100
  initialise the `epic-run-state` checkpoint.
101
- 2. **Phase 2 — wave loop** — fan one `/story-deliver` Agent-tool
101
+ 2. **Phase 2 — wave loop** — fan one `/deliver` Agent-tool
102
102
  sub-agent out per Story per wave (capped at `concurrencyCap`).
103
103
  Stories run in parallel inside the operator's Claude session
104
104
  against your Max subscription quota; no subprocess worker sessions
@@ -140,9 +140,9 @@ From zero to shipped:
140
140
  clean state for the next Epic.
141
141
 
142
142
  For a single Epic-attached Story (re-driving a hotfix, resuming after
143
- a halt), re-run `/epic-deliver <epicId>` — the wave loop picks up
143
+ a halt), re-run `/deliver <epicId>` — the wave loop picks up
144
144
  incomplete Stories from the dispatch manifest automatically. Standalone
145
- Stories (no `Epic: #N` reference) use `/story-deliver <storyId>` instead.
145
+ Stories (no `Epic: #N` reference) use `/deliver <storyId>` instead.
146
146
 
147
147
  That is the whole happy path. Everything below is **detail** — branching
148
148
  conventions, HITL escalation, audit gates — that you only need when the
@@ -168,18 +168,18 @@ default flow requires adjustment.
168
168
  branch reaches `main` only via a pull request the operator merges
169
169
  through the GitHub UI.
170
170
  - **Hierarchy-aligned skills.** Execution is split along the ticket
171
- hierarchy: `/epic-plan` builds the backlog (with optional ideation
172
- entry), `/epic-deliver` owns the merged wave-loop + close-tail, and
173
- `/story-deliver` delivers one or more standalone Stories end-to-end.
171
+ hierarchy: `/plan` builds the backlog (with optional ideation
172
+ entry), `/deliver` owns the merged wave-loop + close-tail, and
173
+ `/deliver` delivers one or more standalone Stories end-to-end.
174
174
  `helpers/epic-deliver-story` and `helpers/single-story-deliver` are the
175
175
  per-Story workers called by those two commands respectively. All share
176
176
  the same primitives (`Graph.computeWaves`, `cascadeCompletion`,
177
177
  `ticketing.js`, `WorktreeManager`).
178
- - **Single-session fan-out.** `/epic-deliver` launches Story sub-agents via
178
+ - **Single-session fan-out.** `/deliver` launches Story sub-agents via
179
179
  the Agent tool — every Story runs inside the operator's Claude session,
180
180
  with no subprocess boundary. Worktree filesystem isolation is preserved;
181
181
  only the process boundary is gone.
182
- - **PR is the sole promotion gate.** `/epic-deliver` ends with a PR open
182
+ - **PR is the sole promotion gate.** `/deliver` ends with a PR open
183
183
  against `main` and (by default) GitHub native auto-merge armed; the
184
184
  workflow itself never executes `git merge` against `main`. Branch
185
185
  protection on `main` enforces required-checks before the merge button
@@ -225,14 +225,14 @@ graph LR
225
225
 
226
226
  subgraph Phase0 ["Phase 0: Bootstrap"]
227
227
  direction TB
228
- Z["👤 npx create-mandrel<br/>(install → sync → bootstrap.js)"]:::manual
228
+ Z["👤 npx mandrel init<br/>(install → sync → prompt → bootstrap.js)"]:::manual
229
229
  Z2["👤 /onboard (guided first run)"]:::manual
230
230
  Z --> Z2
231
231
  end
232
232
 
233
233
  subgraph Phase1 ["Phase 1: Initiation"]
234
234
  direction TB
235
- A["👤 /epic-plan (ideation)<br/>or 👤 Create GitHub Epic + /epic-plan &lt;id&gt;"]:::manual
235
+ A["👤 /plan (ideation)<br/>or 👤 Create GitHub Epic + /plan &lt;id&gt;"]:::manual
236
236
  end
237
237
 
238
238
  subgraph Phase2 ["Phase 2: Planning"]
@@ -245,8 +245,8 @@ graph LR
245
245
 
246
246
  subgraph Phase3 ["Phase 3: Delivery"]
247
247
  direction TB
248
- E["👤 /epic-deliver &lt;epicId&gt;"]:::manual
249
- F["🤖 wave loop (one /story-deliver sub-agent per Story per wave)"]:::agentic
248
+ E["👤 /deliver &lt;epicId&gt;"]:::manual
249
+ F["🤖 wave loop (one /deliver sub-agent per Story per wave)"]:::agentic
250
250
  G["🤖 close-validation → code-review → retro → open PR"]:::agentic
251
251
  E --> F --> G
252
252
  G -.-> G_Art["📄 PR open against main"]:::artifact
@@ -272,15 +272,19 @@ wire the framework system prompt, and create the GitHub labels, Projects V2
272
272
  fields, and (when enabled) main-branch protection the orchestration engine
273
273
  depends on.
274
274
 
275
- The canonical cold-start path is a single launcher command:
275
+ The canonical cold-start path is a single command:
276
276
 
277
277
  ```bash
278
- npx create-mandrel
278
+ npx mandrel init
279
279
  ```
280
280
 
281
- `create-mandrel` installs `mandrel`, materializes `./.agents/` via
282
- `mandrel sync`, and runs `node .agents/scripts/bootstrap.js`, forwarding any
283
- flags you pass. `bootstrap.js`:
281
+ `mandrel init` installs `mandrel` (when `./.agents/` is absent), materializes
282
+ `./.agents/` via `mandrel sync`, then presents a two-option prompt: **configure
283
+ now** (option 1 → runs `node .agents/scripts/bootstrap.js`, forwarding any flags
284
+ you pass) or **just the files** (option 2 → re-run `mandrel init` any time to
285
+ configure later). `--assume-yes` skips the prompt and proceeds straight to
286
+ configure (and is forwarded to bootstrap); a non-TTY run without it defaults to
287
+ files-only so the GitHub provisioning never runs unattended. `bootstrap.js`:
284
288
 
285
289
  1. **Provisions a cold start.** Initializes the local git repo (with a first
286
290
  commit) when absent, creates the GitHub repo (`gh repo create --source=.
@@ -302,7 +306,7 @@ flags you pass. `bootstrap.js`:
302
306
  When `.agents/` is already materialized you can run the bootstrap directly
303
307
  (`node .agents/scripts/bootstrap.js`). After bootstrap, run **`/onboard`**
304
308
  inside Claude Code for the guided first run — stack detection, docs
305
- scaffolding, a `mandrel doctor` readiness gate, and a started `/epic-plan`.
309
+ scaffolding, a `mandrel doctor` readiness gate, and a started `/plan`.
306
310
 
307
311
  > [!NOTE] Bootstrap runs once per repository. It is safe to re-run — existing
308
312
  > labels, fields, and branch-protection entries are preserved; missing ones
@@ -316,7 +320,7 @@ The product lead defines the objective and triggers planning.
316
320
 
317
321
  ### 1a. Ideation entry (optional)
318
322
 
319
- Run `/epic-plan` with no arguments (or `--idea "<seed>"`) to enter ideation
323
+ Run `/plan` with no arguments (or `--idea "<seed>"`) to enter ideation
320
324
  mode:
321
325
 
322
326
  1. **Sharpen the idea.** The `idea-refinement` skill drives a divergent →
@@ -326,12 +330,12 @@ mode:
326
330
  2. **Scope triage (Phase 1.5).** Before the ceremony is paid for, the
327
331
  one-pager is judged against the story-vs-epic rubric (see the
328
332
  subsection below). On a `story` / `borderline` verdict the operator may
329
- route the work to `/story-plan` instead of opening an Epic.
333
+ route the work to `/plan` instead of opening an Epic.
330
334
  3. **Cross-Epic duplicate search.** `lib/duplicate-search.js` queries the
331
335
  open Epics in the repo, scores by title + body keyword overlap, and
332
336
  surfaces matches above a threshold. The operator either confirms the
333
337
  new idea is genuinely distinct or folds it into an existing Epic
334
- (`/epic-plan` exits and the operator resumes work on the existing
338
+ (`/plan` exits and the operator resumes work on the existing
335
339
  id).
336
340
  4. **Render and confirm the Epic body.** The one-pager is rendered into
337
341
  the canonical Epic-from-idea template; the operator confirms before
@@ -342,12 +346,12 @@ mode:
342
346
 
343
347
  #### Scope triage
344
348
 
345
- `/epic-plan` Phase 1.5 runs the
349
+ `/plan` Phase 1.5 runs the
346
350
  [`core/scope-triage`](../skills/core/scope-triage/SKILL.md) rubric over the
347
351
  sharpened one-pager so a story-sized scope is not pushed through the full Epic
348
- ceremony (PRD + Tech Spec + Acceptance Spec + Feature/Story tree +
349
- `epic/<id>` integration branch) only to land as a degenerate one-Feature,
350
- one-Story output. The rubric anchors its sizing judgment **by reference** to
352
+ ceremony (PRD + Tech Spec + Acceptance Spec + Story backlog +
353
+ `epic/<id>` integration branch) only to land as a degenerate one-Story
354
+ output. The rubric anchors its sizing judgment **by reference** to
351
355
  the existing sizing SSOT (`DELIVERABLE_GRANULARITY_GUIDANCE` /
352
356
  `DEFAULT_TASK_SIZING` in `ticket-validator-sizing.js`) and emits one of three
353
357
  verdicts — `epic` | `story` | `borderline`.
@@ -357,9 +361,9 @@ transition) and **advisory** — the operator always decides. It folds into the
357
361
  existing Phase 1 HITL confirmation rather than adding a second stop: an `epic`
358
362
  verdict proceeds with a plain confirm, while a `story` / `borderline` verdict
359
363
  offers a three-way choice (single Story / plan as Epic anyway / abort). On an
360
- accepted `story`, `/epic-plan` hands the one-pager off to
361
- `/story-plan --from-notes` as a scope-triage handoff and exits. Phase 1.5 is
362
- skipped when `/epic-plan` is itself entered via a scope-triage handoff, so the
364
+ accepted `story`, `/plan` hands the one-pager off to
365
+ `/plan --from-notes` as a scope-triage handoff and exits. Phase 1.5 is
366
+ skipped when `/plan` is itself entered via a scope-triage handoff, so the
363
367
  two workflows never ping-pong a settled decision.
364
368
 
365
369
  The same rubric also guards the **existing-Epic entry** (1b) as the
@@ -367,7 +371,7 @@ The same rubric also guards the **existing-Epic entry** (1b) as the
367
371
  hand-opened directly as a `type::epic` issue (the Phase 6 Epic Clarity Gate
368
372
  scores section *presence*, not scope *size*, so a clear-but-thin Epic would
369
373
  otherwise sail through). The advisory fires **only** when Phase 5 found no
370
- linked PRD / Tech Spec **and** the Epic has no open Feature/Story children, so
374
+ linked PRD / Tech Spec **and** the Epic has no open Story children, so
371
375
  it never re-triages an Epic that is being re-planned. An `epic` verdict
372
376
  proceeds silently; a `story` / `borderline` verdict STOPs with the same
373
377
  three-way choice (convert to a standalone Story / proceed as Epic anyway /
@@ -375,31 +379,31 @@ abort). Converting is **close-and-recreate** — a `type::epic` body cannot
375
379
  satisfy `validateStoryBody`, and editing the issue in place would violate the
376
380
  "do not modify existing issues without explicit permission" rule — so, only
377
381
  after the operator confirms, the Epic body seeds a notes file,
378
- `/story-plan --from-notes` opens a replacement Story (identified as a
382
+ `/plan --from-notes` opens a replacement Story (identified as a
379
383
  scope-triage handoff so it skips its own gate, with a `## Notes` back-link to
380
384
  the Epic), and the Epic is closed with `gh issue close --comment` cross-linking
381
385
  the replacement. No deterministic scorer, no schema, and no label transition
382
386
  sit behind either gate.
383
387
 
384
388
  The rubric also runs in the **escalation direction** — the symmetric
385
- counterpart in [`/story-plan`](../workflows/story-plan.md). After `/story-plan`
389
+ counterpart in [`/plan`](../workflows/helpers/plan-story.md). After `/plan`
386
390
  Phase 2 drafts a standalone Story body (the draft, not the seed, is the honest
387
391
  basis for the judgment), the same `core/scope-triage` rubric judges whether the
388
392
  scope is actually Epic-sized. The verdict folds into the existing Phase 2
389
393
  draft-confirmation HITL stop with no extra stop on a `story` verdict; an `epic`
390
- verdict offers a three-way choice (escalate to `/epic-plan --idea` as a
394
+ verdict offers a three-way choice (escalate to `/plan --idea` as a
391
395
  scope-triage handoff / persist as a standalone Story anyway / abort). On an
392
- accepted escalation, `/story-plan` abandons the draft and hands the notes off to
393
- `/epic-plan --idea`, marked as a handoff so `/epic-plan` skips its own Phase 1.5
394
- gate. This gate is itself skipped when `/story-plan` was entered via a
395
- scope-triage handoff (from `/epic-plan` Phase 1.5 or the Phase 5.5 conversion
396
+ accepted escalation, `/plan` abandons the draft and hands the notes off to
397
+ `/plan --idea`, marked as a handoff so `/plan` skips its own Phase 1.5
398
+ gate. This gate is itself skipped when `/plan` was entered via a
399
+ scope-triage handoff (from `/plan` Phase 1.5 or the Phase 5.5 conversion
396
400
  path), so the two workflows never ping-pong a settled decision. As with the
397
401
  inbound gates, the verdict is advisory and host-LLM judgment — no auto-routing,
398
402
  no scorer, no schema, and no label transition.
399
403
 
400
404
  ### 1b. Existing-Epic entry
401
405
 
402
- Run `/epic-plan <epicId>` directly when the Epic Issue already exists. The
406
+ Run `/plan <epicId>` directly when the Epic Issue already exists. The
403
407
  ideation phases (1a) are skipped.
404
408
 
405
409
  In both modes the planning flow continues into Phase 2 with the captured
@@ -411,8 +415,8 @@ Epic id.
411
415
 
412
416
  The framework reads the Epic and autonomously builds the entire work breakdown.
413
417
 
414
- > **Epic Clarity Gate (`/epic-plan` `planning.clarity-gate` state).** Before PRD / Tech Spec /
415
- > Acceptance Spec authoring kicks off, `/epic-plan` scores the Epic body
418
+ > **Epic Clarity Gate (`/plan` `planning.clarity-gate` state).** Before PRD / Tech Spec /
419
+ > Acceptance Spec authoring kicks off, `/plan` scores the Epic body
416
420
  > against the five canonical sections from
417
421
  > [`templates/epic-from-idea.md`](../templates/epic-from-idea.md) (Context,
418
422
  > Goal, Non-Goals, Scope, Acceptance Criteria). Common legacy heading
@@ -469,7 +473,7 @@ fails loudly if any is missing or empty.
469
473
 
470
474
  #### Adaptive planning risk routing
471
475
 
472
- `/epic-plan`'s `planning.spec-authoring` state derives a deterministic
476
+ `/plan`'s `planning.spec-authoring` state derives a deterministic
473
477
  **`planningRisk`** envelope from a **planner-authored risk verdict**
474
478
  (`risk-verdict.json`, the fourth planning artifact the
475
479
  `epic-plan-spec-author` Skill writes from the PRD / Tech Spec it just
@@ -496,7 +500,7 @@ downstream decisions:
496
500
  harness, cleanup) print the auto-proceed message from
497
501
  `reviewRouting.operatorMessage` and chain directly into the
498
502
  `planning.decompose` state. The operator can force the review
499
- stop on low-risk work by passing `--force-review` to `/epic-plan`.
503
+ stop on low-risk work by passing `--force-review` to `/plan`.
500
504
 
501
505
  The risk envelope is also threaded into the `planning.decompose` state's decomposer context
502
506
  so the ticket array can cite the relevant axes when assigning
@@ -512,9 +516,9 @@ framework maintenance, docs-only churn). The **`acceptance::n-a`** label
512
516
  on the Epic ticket records the waiver. There are two routes to the label:
513
517
 
514
518
  - **Operator-applied** — the operator labels the Epic before or during
515
- `/epic-plan`'s `planning.spec-authoring` state when they already
519
+ `/plan`'s `planning.spec-authoring` state when they already
516
520
  know the work does not need a spec.
517
- - **Planner-selected** — `/epic-plan`'s `planning.spec-authoring` state derives a
521
+ - **Planner-selected** — `/plan`'s `planning.spec-authoring` state derives a
518
522
  `planningRisk` envelope from the planner-authored risk verdict
519
523
  (see § Adaptive planning risk routing) and,
520
524
  when `acceptanceDisposition === 'not-applicable'`, the persist half
@@ -526,30 +530,28 @@ on the Epic ticket records the waiver. There are two routes to the label:
526
530
  Either route produces the same runtime behavior. The waiver is respected
527
531
  by both runtime gates:
528
532
 
529
- - The `/epic-deliver` **start gate** (`delivery.snapshot` state) skips
533
+ - The `/deliver` **start gate** (`delivery.snapshot` state) skips
530
534
  the acceptance-spec presence check when the label is set.
531
535
  - The finalize-time **acceptance-spec reconciler** returns
532
536
  `status: 'waived'` without scanning `tests/features/**` and the
533
537
  finalize step proceeds.
534
538
 
535
539
  The waiver is binary — there is no partial opt-out. If an Epic later
536
- warrants spec coverage, remove the label and run `/epic-plan`'s
540
+ warrants spec coverage, remove the label and run `/plan`'s
537
541
  `planning.spec-authoring` state to author the spec.
538
542
 
539
543
  1. **Ticket Decomposer** (`epic-plan-decompose.js`):
540
- - Recursively decomposes specs into the **3-tier hierarchy**
541
- (Epic → Feature → Story):
544
+ - Decomposes specs into the **2-tier hierarchy**
545
+ (Epic → Story):
542
546
 
543
547
  ```text
544
548
  Epic (type::epic)
545
549
  ├── PRD (context::prd)
546
550
  ├── Tech Spec (context::tech-spec)
547
- ├── Feature (type::feature)
548
- │ ├── Story (type::story)
549
- │ ├── acceptance[] ← inline on Story body
550
- │ │ └── verify[] ← inline on Story body
551
- │ └── Story (type::story)
552
- └── Feature (type::feature)
551
+ ├── Story (type::story)
552
+ │ ├── acceptance[] ← inline on Story body
553
+ └── verify[] ← inline on Story body
554
+ └── Story (type::story)
553
555
  ```
554
556
 
555
557
  - **Wiring.** Each ticket is linked using `blocked by #NNN` syntax and
@@ -558,14 +560,15 @@ warrants spec coverage, remove the label and run `/epic-plan`'s
558
560
  and agent prompts, plus the inline `acceptance[]` / `verify[]`
559
561
  arrays the executing sub-agent reads.
560
562
 
561
- `/story-deliver` runs a **single** Story-implementation phase per
562
- Story. The wave-loop fan-out in `/epic-deliver`, the Epic → Feature
563
- thematic frame, and the Story-branch → Epic-branch merge model are
564
- unchanged from the prior 4-tier shape; only the Task layer is gone.
563
+ `/deliver` runs a **single** Story-implementation phase per
564
+ Story. The wave-loop fan-out in `/deliver` and the
565
+ Story-branch → Epic-branch merge model are unchanged; the Feature and
566
+ Task layers are gone, and thematic grouping lives as prose in the Epic
567
+ body / Tech Spec.
565
568
 
566
569
  When decomposition completes the Epic flips to `agent::ready` and the
567
570
  dispatch manifest is posted as a structured comment on the Epic. That
568
- manifest is the source of truth for the wave layout `/epic-deliver`
571
+ manifest is the source of truth for the wave layout `/deliver`
569
572
  consumes in the `delivery.snapshot` state.
570
573
 
571
574
  ### `agent::ready` exit conditions
@@ -573,7 +576,7 @@ consumes in the `delivery.snapshot` state.
573
576
  The planning → delivery handoff is governed by an explicit checklist.
574
577
  The persist half of `epic-plan-decompose.js` refuses to flip the Epic
575
578
  to `agent::ready` unless **every** condition below is true. The
576
- contract is enforced at the planner boundary so `/epic-deliver` can
579
+ contract is enforced at the planner boundary so `/deliver` can
577
580
  treat `agent::ready` as a load-bearing precondition rather than a
578
581
  hopeful signal.
579
582
 
@@ -583,16 +586,16 @@ hopeful signal.
583
586
  `acceptance::n-a` waiver label. Missing-without-waiver fails the
584
587
  handoff.
585
588
  - **Decomposition persisted.** The structural reconciler has applied
586
- the Feature/Story/Task hierarchy and written the spec to
589
+ the Epic's child-Story backlog and written the spec to
587
590
  `.agents/epics/<epicId>.yaml`. The `epic-plan-state` checkpoint
588
591
  comment records `phase: ready`.
589
592
  - **Dispatch manifest posted.** A single `epic-dispatch` structured
590
593
  comment exists on the Epic and validates against
591
594
  `.agents/schemas/dispatch-manifest.json`. The dispatch manifest is
592
- the source of truth `/epic-deliver` reads during
595
+ the source of truth `/deliver` reads during
593
596
  `delivery.snapshot`.
594
597
  - **Healthcheck green.** `epic-plan-healthcheck.js` (run during
595
- `/epic-plan` Phase 10) returned `ok: true`. A failing healthcheck
598
+ `/plan` Phase 10) returned `ok: true`. A failing healthcheck
596
599
  blocks the handoff — there is no advisory degrade-mode for
597
600
  `agent::ready`.
598
601
  - **Notification posted.** The planner has posted the
@@ -613,7 +616,7 @@ the label to re-arm the gate.
613
616
 
614
617
  ## Phase 3: Delivery (Agentic)
615
618
 
616
- Delivery is driven by the **`/epic-deliver`** slash command for whole-Epic
619
+ Delivery is driven by the **`/deliver`** slash command for whole-Epic
617
620
  flows and the **Story Init/Close** scripts for individual Stories. All entry
618
621
  points share the same primitives — DAG computation, context hydration,
619
622
  worktree isolation, and cascade closure. The lifecycle bus listener
@@ -634,13 +637,13 @@ side-effects rather than inline calls at phase boundaries; the
634
637
  `AutomergeArmer` listener.
635
638
 
636
639
  > **Acceptance-spec start gate.** Before a single wave fans out,
637
- > `/epic-deliver`'s `delivery.snapshot` state
640
+ > `/deliver`'s `delivery.snapshot` state
638
641
  > ([`lib/orchestration/epic-runner/phases/snapshot.js`](../scripts/lib/orchestration/epic-runner/phases/snapshot.js))
639
642
  > asserts that the Epic either (a) carries the `acceptance::n-a`
640
643
  > waiver label, or (b) has a linked `context::acceptance-spec`
641
644
  > ticket. The ticket's GitHub state (open / closed) is not checked
642
645
  > — presence is sufficient, matching the PRD and Tech Spec contract.
643
- > The reviewer's OK during `/epic-plan`'s `planning.spec-authoring`
646
+ > The reviewer's OK during `/plan`'s `planning.spec-authoring`
644
647
  > state is the approval
645
648
  > signal, not a manual ticket-close action; the three planning
646
649
  > context tickets are closed automatically by the
@@ -656,14 +659,14 @@ side-effects rather than inline calls at phase boundaries; the
656
659
 
657
660
  | Mode | Entry point | When to use |
658
661
  | -------------------------------- | -------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
659
- | **Whole Epic** | `/epic-deliver <epicId>` | Drive an Epic end-to-end. Owns the wave loop and the close-tail; ends with a PR open to main. |
660
- | **Epic-attached Story (worker)** | *helper* `helpers/epic-deliver-story <storyId>` | Per-Story sub-agent called internally by `/epic-deliver`'s wave fan-out; not an operator slash command. |
661
- | **Standalone Story — plan** | `/story-plan` | Plan a one-off Story that does not belong to an Epic backlog. |
662
- | **Standalone Story — deliver** | `/story-deliver <storyId> [<storyId>...]` | Deliver one or more standalone Stories authored by `/story-plan`. |
663
- | **Standalone Story (worker)** | *helper* `helpers/single-story-deliver <storyId>` | Per-Story sub-agent called internally by `/story-deliver`; not an operator slash command. |
664
-
665
- The operator-facing entry points are `/epic-deliver` (for Epics) and
666
- `/story-deliver` (for standalone Stories). The `helpers/` layer sits below
662
+ | **Whole Epic** | `/deliver <epicId>` | Drive an Epic end-to-end. Owns the wave loop and the close-tail; ends with a PR open to main. |
663
+ | **Epic-attached Story (worker)** | *helper* `helpers/epic-deliver-story <storyId>` | Per-Story sub-agent called internally by `/deliver`'s wave fan-out; not an operator slash command. |
664
+ | **Standalone Story — plan** | `/plan` | Plan a one-off Story that does not belong to an Epic backlog. |
665
+ | **Standalone Story — deliver** | `/deliver <storyId> [<storyId>...]` | Deliver one or more standalone Stories authored by `/plan`. |
666
+ | **Standalone Story (worker)** | *helper* `helpers/single-story-deliver <storyId>` | Per-Story sub-agent called internally by `/deliver`; not an operator slash command. |
667
+
668
+ The operator-facing entry points are `/deliver` (for Epics) and
669
+ `/deliver` (for standalone Stories). The `helpers/` layer sits below
667
670
  both and is never invoked directly by the operator.
668
671
 
669
672
  ### Story-centric branching
@@ -675,7 +678,7 @@ both and is never invoked directly by the operator.
675
678
  ### Story execution lifecycle
676
679
 
677
680
  Whether the Story is launched directly by the operator or fanned out by
678
- `/epic-deliver`'s wave loop, the same three phases run:
681
+ `/deliver`'s wave loop, the same three phases run:
679
682
 
680
683
  1. **Initialization** (`story-init.js`):
681
684
  - Verifies all upstream dependencies are satisfied.
@@ -716,17 +719,18 @@ Whether the Story is launched directly by the operator or fanned out by
716
719
  resolver into `[1, hard ceiling]` so no configuration can disable the
717
720
  cap or let the loop spin unbounded. Each terminus emits a
718
721
  per-criterion `acceptance-eval` signal into the retro / feedback
719
- substrate so the retro and `/epic-plan` Phase 0 feedback fetch see
722
+ substrate so the retro and `/plan` Phase 0 feedback fetch see
720
723
  which acceptance items needed rework and the round count. The loop is
721
724
  **additive** and sits below the Epic-level acceptance-spec
722
- reconciliation (`/epic-deliver` Phase 7.1) — it evaluates the actual
725
+ reconciliation (`/deliver` Phase 7.1) — it evaluates the actual
723
726
  work product per Story mid-delivery, not test-tag presence at
724
727
  finalize.
725
728
  3. **Closure** (`story-close.js`):
726
729
  - Runs shift-left validation (lint, format, test).
727
730
  - Merges the Story branch into `epic/<epicId>`.
728
- - Transitions the Story → `agent::done`; cascades up Story → Feature
729
- (Epics and context tickets are excluded from auto-cascade).
731
+ - Transitions the Story → `agent::done`. There is no upward
732
+ auto-cascade the Epic flips only when the operator merges the
733
+ `epic/<id>` PR to `main`.
730
734
  - Reaps the Story worktree and cleans up the merged Story branch.
731
735
 
732
736
  ### Context hydration
@@ -737,7 +741,7 @@ standalone Stories), the Context Hydrator assembles a self-contained prompt:
737
741
 
738
742
  1. `agent-protocol.md` (universal rules).
739
743
  2. Persona and skill directives (from Task labels).
740
- 3. Hierarchy context (Story → Feature → Epic → PRD → Tech Spec).
744
+ 3. Hierarchy context (Story → Epic → PRD → Tech Spec).
741
745
  4. **Story branch context.** Automatic checkouts to the Story branch. Under
742
746
  worktree isolation, each Story runs in its own `.worktrees/story-<id>/` so
743
747
  branch swaps, staging, and reflog activity are isolated per-story. See
@@ -750,7 +754,7 @@ Agents update their state in real-time on GitHub:
750
754
 
751
755
  - **Labels**: `agent::ready` → `agent::executing` → `agent::done`. The
752
756
  intermediate review label is not part of the label taxonomy; the
753
- PR opened by `/epic-deliver`'s `delivery.finalize` state is the equivalent "ready to merge"
757
+ PR opened by `/deliver`'s `delivery.finalize` state is the equivalent "ready to merge"
754
758
  signal at the Epic level. The `WaveObserver` submodule additionally
755
759
  syncs a GitHub Projects v2 Status column on each transition when a
756
760
  `projectNumber` is configured.
@@ -769,7 +773,7 @@ dispatches any newly-unblocked Tasks. This continues until all waves complete.
769
773
  ### Story assignment (deterministic)
770
774
 
771
775
  `helpers/epic-deliver-story` requires an explicit Story id. The parent
772
- `/epic-deliver` wave loop picks Story ids off the frozen dispatch manifest
776
+ `/deliver` wave loop picks Story ids off the frozen dispatch manifest
773
777
  deterministically and launches one Agent-tool sub-agent (calling
774
778
  `helpers/epic-deliver-story`) per id per wave; sibling sub-agents never
775
779
  race on the same Story.
@@ -835,13 +839,13 @@ an exclusive, time-bounded claim on the ticket via
835
839
  rides the ticket's GitHub `assignees` field — a substrate every clone can
836
840
  read — so a live foreign claim is visible to, and refuses, a second
837
841
  operator regardless of which machine they are on. All three delivery and
838
- planning entry points take the claim: `/epic-plan` acquires the Epic lease
842
+ planning entry points take the claim: `/plan` acquires the Epic lease
839
843
  before Phase 7 (spec) and releases it after Phase 8 (decompose),
840
- `/epic-deliver` acquires the Epic lease in its prepare guard, and
844
+ `/deliver` acquires the Epic lease in its prepare guard, and
841
845
  `/single-story-deliver` acquires the Story lease at init. For
842
- `/epic-deliver` and `/single-story-deliver`, liveness is decided by the
846
+ `/deliver` and `/single-story-deliver`, liveness is decided by the
843
847
  owner's most-recent `story.heartbeat` against `delivery.lease.ttlMs`;
844
- because planning emits no `story.heartbeat`, `/epic-plan` has no
848
+ because planning emits no `story.heartbeat`, `/plan` has no
845
849
  live-heartbeat source and treats **any** foreign assignee as a live claim.
846
850
  A live foreign claim fails the preflight closed (refuse-and-exit, naming
847
851
  the owner); `--steal` is the only override. See
@@ -853,9 +857,9 @@ clones from racing in the first place, while the same-machine merge lock
853
857
  serialises the parallel-wave story closures *within* the one clone that
854
858
  holds the lease.
855
859
 
856
- ### Close-tail (`delivery.close-validation` through `delivery.complete` of `/epic-deliver`)
860
+ ### Close-tail (`delivery.close-validation` through `delivery.complete` of `/deliver`)
857
861
 
858
- After the wave loop returns `complete`, `/epic-deliver` runs the
862
+ After the wave loop returns `complete`, `/deliver` runs the
859
863
  remaining phases against the Epic branch — close-validation, audit,
860
864
  code-review, retro, and finalize — before handing off to the
861
865
  watch / auto-merge / cleanup tail that drives the PR to merge:
@@ -886,7 +890,7 @@ watch / auto-merge / cleanup tail that drives the PR to merge:
886
890
  `epicRetroMirrorPath`) so operators can read the retro without
887
891
  re-fetching from GitHub. GitHub remains the source of truth; the
888
892
  mirror write is best-effort and a failure only logs a warn.
889
- 5. **Finalize (Phase 7).** `/epic-deliver` fires `epic.close.end` via
893
+ 5. **Finalize (Phase 7).** `/deliver` fires `epic.close.end` via
890
894
  `lifecycle-emit.js`; the `AcceptanceReconciler` → `Finalizer`
891
895
  listener chain owns every close-time side effect end to end
892
896
  (Story #2894 — bus-owned finalize). The chain runs three
@@ -927,7 +931,7 @@ watch / auto-merge / cleanup tail that drives the PR to merge:
927
931
  `alreadyClosed` and edits the existing handoff comment in
928
932
  place rather than appending a duplicate. The Epic stays at
929
933
  `agent::executing` until the PR merges.
930
- 6. **Watch-and-iterate (Phase 8).** `/epic-deliver` watches the open PR's
934
+ 6. **Watch-and-iterate (Phase 8).** `/deliver` watches the open PR's
931
935
  required checks until they turn green. Transient failures trigger an
932
936
  automated re-run loop; durable failures surface for human remediation
933
937
  on the Epic branch.
@@ -939,7 +943,7 @@ watch / auto-merge / cleanup tail that drives the PR to merge:
939
943
  local Story/Epic branch refs and any lingering worktrees so the
940
944
  workspace returns to a clean state for the next Epic.
941
945
 
942
- `/epic-deliver` exits cleanly once auto-merge is armed (or sooner if the
946
+ `/deliver` exits cleanly once auto-merge is armed (or sooner if the
943
947
  operator declines auto-merge). The operator can merge through the GitHub UI
944
948
  at any time; the `delivery.complete` state handles the post-merge branch reap.
945
949
 
@@ -948,7 +952,7 @@ at any time; the `delivery.complete` state handles the post-merge branch reap.
948
952
  ## HITL (Human-in-the-Loop) model
949
953
 
950
954
  On the happy path there is exactly **one** mandatory operator touchpoint
951
- after `/epic-deliver` fires (blocker resolution). PR merge is autonomous
955
+ after `/deliver` fires (blocker resolution). PR merge is autonomous
952
956
  via armed auto-merge; the operator can opt in as a second touchpoint by
953
957
  disarming auto-merge in the GitHub UI, or is pulled in by exception when
954
958
  required checks fail.
@@ -962,7 +966,7 @@ required checks fail.
962
966
  scope edit on the blocking ticket), then flips the Epic back to
963
967
  `agent::executing` to resume.
964
968
  2. **PR merge (autonomous by default; operator-gated by exception).** At
965
- the end of `/epic-deliver`, the workflow opens a PR to `main` and
969
+ the end of `/deliver`, the workflow opens a PR to `main` and
966
970
  arms GitHub native auto-merge (the `delivery.automerge` state). When required checks pass,
967
971
  the PR lands without a second operator visit; the standard
968
972
  label-transition pathway flips the Epic to `agent::done` on merge.
@@ -971,7 +975,7 @@ required checks fail.
971
975
  `code-review` comment, and the retro before merging by hand, or
972
976
  (b) checks fail and need remediation on the Epic branch. There is
973
977
  no separate close command — the close-out side effects (PR open,
974
- planning-ticket close, handoff comment) are owned by `/epic-deliver`'s
978
+ planning-ticket close, handoff comment) are owned by `/deliver`'s
975
979
  `delivery.finalize` state (the lifecycle Finalizer listener), whose
976
980
  replay is idempotent.
977
981
 
@@ -991,7 +995,7 @@ required checks fail.
991
995
 
992
996
  - `risk::high` tasks **run without pause.** The label remains as planning
993
997
  metadata and retro telemetry, but it does **not** halt the dispatcher
994
- or `/epic-deliver`. Branch protection on `main` and
998
+ or `/deliver`. Branch protection on `main` and
995
999
  `BlockerHandler`-driven escalation are the runtime defenses for
996
1000
  destructive actions.
997
1001
  - Wave boundaries — the runner advances as soon as wave N completes.
@@ -1005,10 +1009,10 @@ required checks fail.
1005
1009
 
1006
1010
  ## Epic Deliver Runner internals
1007
1011
 
1008
- `/epic-deliver` drives the long-running coordinator inside the operator's
1012
+ `/deliver` drives the long-running coordinator inside the operator's
1009
1013
  Claude session. The slash command composes the submodules listed below;
1010
1014
  `helpers/epic-deliver-story` is launched as an Agent-tool sub-agent of
1011
- `/epic-deliver`'s wave loop — no subprocess worker sessions for Story
1015
+ `/deliver`'s wave loop — no subprocess worker sessions for Story
1012
1016
  execution, no GitHub Actions runner. Deterministic Node CLIs remain the
1013
1017
  state-mutation contract.
1014
1018
 
@@ -1026,7 +1030,7 @@ state-mutation contract.
1026
1030
 
1027
1031
  ### Claude Max quota
1028
1032
 
1029
- `/epic-deliver` consumes Max subscription quota (5-hour rolling window with
1033
+ `/deliver` consumes Max subscription quota (5-hour rolling window with
1030
1034
  overage disabled at the org level by default). If a long Epic exceeds the
1031
1035
  5-hour window, `BlockerHandler` surfaces the rate-limit error as
1032
1036
  `agent::blocked` so you can resume after the quota rolls.
@@ -1046,7 +1050,7 @@ the project's `CI / CD` workflow. Two mitigations:
1046
1050
  ## Phase 4: PR merge (auto by default)
1047
1051
 
1048
1052
  Once the wave loop, close-validation, code-review, and retro have all
1049
- completed, `/epic-deliver` opens a pull request from `epic/<epicId>` to
1053
+ completed, `/deliver` opens a pull request from `epic/<epicId>` to
1050
1054
  `main` and arms GitHub native auto-merge. When the required checks pass
1051
1055
  the PR lands without further intervention; the operator can disarm
1052
1056
  auto-merge in the GitHub UI to make the final merge an explicit human
@@ -1055,16 +1059,11 @@ action.
1055
1059
  1. **Story merging.** Stories merge into `epic/<epicId>` automatically
1056
1060
  during Story closure (`story-close.js`). The Epic branch is the rolling
1057
1061
  integration target.
1058
- 2. **Completion cascade.** When the last Task in a Story reaches
1059
- `agent::done`, status cascades upward:
1060
-
1061
- ```text
1062
- Task Done Story Done Feature Done
1063
- ```
1064
-
1065
- Epics, PRDs, and Tech Specs are explicitly excluded from auto-cascade —
1066
- the Epic only flips to `agent::done` when the operator merges the PR
1067
- to `main`.
1062
+ 2. **Completion.** Each Story flips to `agent::done` at its own closure
1063
+ (`story-close.js`); the wave loop tracks Epic-level progress as
1064
+ Stories complete. There is no upward auto-cascade — Epics, PRDs, and
1065
+ Tech Specs are never flipped by Story closure; the Epic only flips to
1066
+ `agent::done` when the operator merges the PR to `main`.
1068
1067
 
1069
1068
  3. **PR merge — the sole promotion gate.** When the PR merges (auto or
1070
1069
  manual):
@@ -1073,12 +1072,12 @@ action.
1073
1072
  - the standard label-transition pathway flips the Epic to
1074
1073
  `agent::done`;
1075
1074
  - branch cleanup runs out-of-band: the `delivery.complete` state of
1076
- `/epic-deliver` reaps local refs after the merge; the rare "scrap
1075
+ `/deliver` reaps local refs after the merge; the rare "scrap
1077
1076
  and reset" case for an unmerged Epic is handled manually.
1078
1077
 
1079
1078
  If the operator chooses not to merge (rolling back, deferring, re-scoping),
1080
- `/epic-deliver` has not poisoned `main`. The Epic branch can be amended
1081
- in place; re-running `/epic-deliver <epicId>` re-runs the
1079
+ `/deliver` has not poisoned `main`. The Epic branch can be amended
1080
+ in place; re-running `/deliver <epicId>` re-runs the
1082
1081
  `delivery.close-validation` / `delivery.audit` / `delivery.code-review`
1083
1082
  states against the new HEAD (the evidence wrapper picks up the new SHA) and
1084
1083
  updates the same PR — no duplicate PRs are opened against the same Epic
@@ -1194,12 +1193,12 @@ on so re-runs short-circuit when state has not changed.
1194
1193
  | ------------------------- | ---------------------------------------------------- | ----------------------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------------ |
1195
1194
  | Gate 1 | After Story completion | Content-triggered audits (clean-code, etc.) | advisory | Audit-report comment per Story (`audit-<lens>` structured comment) |
1196
1195
  | Gate 2 | Pre-integration | Dependency + DevOps audits | advisory | Audit-report comment per Epic (`audit-<lens>` structured comment) |
1197
- | Gate 3 | `/epic-deliver` `delivery.code-review` state | Full automated audit pass | blocking | `code-review` structured comment on Epic, keyed by Epic HEAD SHA |
1198
- | Gate 4 | `/epic-deliver` `delivery.finalize` state (pre-PR) | `audit-sre` production readiness gate | blocking | `audit-sre` structured comment on Epic, keyed by Epic HEAD SHA |
1199
- | Close-validation | `/epic-deliver` `delivery.close-validation` state | lint + test + maintainability + CRAP + coverage ratchets via `evidence-gate.js` | blocking | `evidence-gate` cache entry keyed by `git rev-parse HEAD` |
1196
+ | Gate 3 | `/deliver` `delivery.code-review` state | Full automated audit pass | blocking | `code-review` structured comment on Epic, keyed by Epic HEAD SHA |
1197
+ | Gate 4 | `/deliver` `delivery.finalize` state (pre-PR) | `audit-sre` production readiness gate | blocking | `audit-sre` structured comment on Epic, keyed by Epic HEAD SHA |
1198
+ | Close-validation | `/deliver` `delivery.close-validation` state | lint + test + maintainability + CRAP + coverage ratchets via `evidence-gate.js` | blocking | `evidence-gate` cache entry keyed by `git rev-parse HEAD` |
1200
1199
  | Pre-push | Local `.husky/pre-push` hook on every push | Diff-scoped quality preview + coverage/CRAP ratchet | blocking | Working-tree SHA + staged-diff hash (per push) |
1201
- | Acceptance reconciliation | `/epic-deliver` `delivery.finalize` state | `acceptance-spec-reconciler.js` diffs AC IDs against `@ac-*` / `@pending` feature tags | blocking | `acceptance-reconcile` structured comment on Epic, keyed by spec-body SHA |
1202
- | Spec freshness | `/epic-plan` `planning.spec-authoring` state | Re-derives PRD / Tech Spec / Acceptance Spec staleness against Epic body checksum | advisory | `epic-plan-state` checkpoint entry per spec artifact body SHA |
1200
+ | Acceptance reconciliation | `/deliver` `delivery.finalize` state | `acceptance-spec-reconciler.js` diffs AC IDs against `@ac-*` / `@pending` feature tags | blocking | `acceptance-reconcile` structured comment on Epic, keyed by spec-body SHA |
1201
+ | Spec freshness | `/plan` `planning.spec-authoring` state | Re-derives PRD / Tech Spec / Acceptance Spec staleness against Epic body checksum | advisory | `epic-plan-state` checkpoint entry per spec artifact body SHA |
1203
1202
 
1204
1203
  ### Review & feedback loop
1205
1204
 
@@ -1215,14 +1214,14 @@ report and posts it as a ticket comment via the `ITicketingProvider`.
1215
1214
  risk per method against `baselines/crap.json`. Self-skips when
1216
1215
  `delivery.quality.gates.crap.enabled` is `false`. The
1217
1216
  `baseline-refresh:`-tagged commit convention for baseline edits is the
1218
- project standard; the operator is the gate during `/epic-deliver`
1217
+ project standard; the operator is the gate during `/deliver`
1219
1218
  `delivery.finalize` state (the prior CI guardrail that enforced the tag was removed).
1220
1219
  - **Human review on High/Critical.** If High or Critical findings are detected,
1221
- the workflow halts for human review at the corresponding `/epic-deliver`
1220
+ the workflow halts for human review at the corresponding `/deliver`
1222
1221
  phase. Approval is given by the operator advancing the phase (the
1223
1222
  auto-approve webhook listener was never wired into CI and was removed during the rebrand).
1224
1223
  - **Implementation.** Once the operator approves the fixes, the ticket
1225
- transitions to `agent::executing` and `/epic-deliver` dispatches an agent to
1224
+ transitions to `agent::executing` and `/deliver` dispatches an agent to
1226
1225
  implement and verify them.
1227
1226
 
1228
1227
  ---
@@ -1404,17 +1403,17 @@ For Stories already in flight, use one of the three options above.
1404
1403
 
1405
1404
  | Command | Purpose |
1406
1405
  | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1407
- | `npx create-mandrel` | Cold-start launcher — install `mandrel`, `mandrel sync`, then run `bootstrap.js` (provisions repo + Projects V2 board, labels, branch protection). |
1408
- | `/onboard` | Guided first run after bootstrap — stack detection, docs scaffolding, `mandrel doctor` readiness gate, started `/epic-plan` handoff. |
1409
- | `/epic-plan` | Ideation entry — sharpen idea, search duplicates, open Epic, then PRD + Tech Spec + decomposition. |
1410
- | `/epic-plan --idea "<seed>"` | Same ideation entry with pre-supplied seed. |
1411
- | `/epic-plan <epicId>` | Existing-Epic mode — PRD + Tech Spec + decomposition for an Epic Issue already opened. |
1412
- | `/epic-deliver <epicId>` | Drive an Epic end-to-end. Wave loop → close-validation → code-review → retro → opens PR to `main` with auto-merge armed. |
1413
- | `/story-deliver <storyId> [<storyId>...]` | Deliver one or more standalone Stories (no `Epic: #N` reference). Builds a dependency-aware wave plan and fans out one worker per Story per wave. |
1414
- | `/story-plan` | Plan a one-off Story outside an Epic backlog. |
1415
- | *helper* `workflows/helpers/epic-deliver-story` | Per-Story worker called by `/epic-deliver`'s wave loop; not an operator slash command. See [`helpers/epic-deliver-story.md`](../workflows/helpers/epic-deliver-story.md). |
1416
- | *helper* `workflows/helpers/single-story-deliver` | Per-Story worker called by `/story-deliver`; not an operator slash command. See [`helpers/single-story-deliver.md`](../workflows/helpers/single-story-deliver.md). |
1417
- | *helper* `workflows/helpers/code-review.md` | Auto-invoked by `/epic-deliver`'s `delivery.code-review` state (scope: epic); not a slash command. |
1406
+ | `npx mandrel init` | Cold-start command — install `mandrel` (if absent), `mandrel sync`, then prompt to run `bootstrap.js` (provisions repo + Projects V2 board, labels, branch protection). |
1407
+ | `/onboard` | Guided first run after bootstrap — stack detection, docs scaffolding, `mandrel doctor` readiness gate, started `/plan` handoff. |
1408
+ | `/plan` | Ideation entry — sharpen idea, search duplicates, open Epic, then PRD + Tech Spec + decomposition. |
1409
+ | `/plan --idea "<seed>"` | Same ideation entry with pre-supplied seed. |
1410
+ | `/plan <epicId>` | Existing-Epic mode — PRD + Tech Spec + decomposition for an Epic Issue already opened. |
1411
+ | `/deliver <epicId>` | Drive an Epic end-to-end. Wave loop → close-validation → code-review → retro → opens PR to `main` with auto-merge armed. |
1412
+ | `/deliver <storyId> [<storyId>...]` | Deliver one or more standalone Stories (no `Epic: #N` reference). Builds a dependency-aware wave plan and fans out one worker per Story per wave. |
1413
+ | `/plan` | Plan a one-off Story outside an Epic backlog. |
1414
+ | *helper* `workflows/helpers/epic-deliver-story` | Per-Story worker called by `/deliver`'s wave loop; not an operator slash command. See [`helpers/epic-deliver-story.md`](../workflows/helpers/epic-deliver-story.md). |
1415
+ | *helper* `workflows/helpers/single-story-deliver` | Per-Story worker called by `/deliver`; not an operator slash command. See [`helpers/single-story-deliver.md`](../workflows/helpers/single-story-deliver.md). |
1416
+ | *helper* `workflows/helpers/code-review.md` | Auto-invoked by `/deliver`'s `delivery.code-review` state (scope: epic); not a slash command. |
1418
1417
  | `/git-commit-all` | Stage and commit all changes |
1419
1418
  | `/git-push` | Stage, commit, and push to remote |
1420
1419
  | `epic-reconcile.js --explicit-delete` | Hard reset — close orphaned Epic-scoped issues per `.agents/epics/<id>.yaml` |