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
@@ -0,0 +1,226 @@
1
+ ---
2
+ description: Audit the repository's main documentation for staleness, semantic drift, and completeness; emit a structured High/Medium/Low findings report.
3
+ ---
4
+
5
+ # Documentation Staleness & Completeness Audit
6
+
7
+ ## Role
8
+
9
+ Staff Engineer & Documentation Steward
10
+
11
+ ## Context & Objective
12
+
13
+ You are auditing the repository's primary prose documentation to verify it
14
+ is **up to date and complete**. Prose docs rot silently: commands get
15
+ renamed, scripts move, described workflows change shape, and
16
+ version/topology claims go stale. The deterministic gates
17
+ (`check-doc-links.js`, `check-lifecycle-doc-drift.js`,
18
+ `validate-docs-freshness.js`) catch broken links, drift against generators,
19
+ and Epic-scoped freshness — they cannot tell whether the prose still
20
+ describes how the code actually behaves. That semantic verification is this
21
+ lens's job.
22
+
23
+ ## Target set (config-driven union)
24
+
25
+ The audit target set is **not** "all markdown in the repo". Build it as the
26
+ union of:
27
+
28
+ 1. **`project.docsContextFiles`** from `.agentrc.json` (each entry resolved
29
+ against `project.paths.docsRoot`, default `docs/`; skip absent files
30
+ silently).
31
+ 2. **`delivery.docsFreshness.paths`** from `.agentrc.json`.
32
+ 3. **Conventional anchors:** the root `README.md`, `AGENTS.md` /
33
+ `CLAUDE.md`, `CONTRIBUTING.md` (when present), and top-level `docs/*.md`
34
+ (non-recursive).
35
+ 4. **An explicit `--paths` override** — when the operator invokes the lens
36
+ with `--paths <file ...>`, add those files to the union. This is the
37
+ escape hatch for everything outside 1–3; there is no dedicated config
38
+ key for it.
39
+
40
+ **Generated docs are excluded from per-doc semantic review.** The output of
41
+ `generate-config-docs.js`, `generate-lifecycle-docs.js`, and
42
+ `generate-workflows-doc.js`, and the synced `.claude/commands/` mirrors, are
43
+ generator-owned: hand-editing them is never the remediation. Instead, Step 1
44
+ runs the generators' `--check` mode and emits a **single** "generator output
45
+ dirty" finding when their output is stale — the remediation is "rerun the
46
+ generator", not "edit the doc". Auto-generated changelog files
47
+ (`docs/CHANGELOG.md`, release-please-owned) are likewise excluded from
48
+ semantic review beyond Step 1's deterministic checks.
49
+
50
+ ## Scope (Epic mode)
51
+
52
+ When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
53
+ following block is populated with the Epic's change-set file list.
54
+ Otherwise — for any manual `/audit-<dimension>` invocation — the block
55
+ renders the literal substitution token and you MUST treat it as **no
56
+ scope filter — run the lens codebase-wide** exactly as you would have
57
+ before this section existed.
58
+
59
+ ```text
60
+ {{changedFiles}}
61
+ ```
62
+
63
+ - If the block above contains a newline-delimited list of file paths,
64
+ restrict your analysis to the intersection of the target-set union and
65
+ those files — plus any target-set doc whose claims describe code in the
66
+ change set (a renamed script invalidates every doc that references it).
67
+ - If the block above renders as the literal string `{{changedFiles}}`
68
+ (i.e. no substitution was supplied), ignore this section entirely and
69
+ proceed with the full target-set audit defined in the remaining steps.
70
+
71
+ ## Execution strategy (dual-path)
72
+
73
+ This lens runs along one of two execution paths. Both emit the **identical**
74
+ report contract (Step 3); downstream consumers (`/deliver` Phase 4
75
+ epic-audit, `audit-to-stories`) are agnostic to which path produced it.
76
+
77
+ - **Orchestrated (dynamic-workflow) path.** When Claude Code's
78
+ [dynamic workflows](https://code.claude.com/docs/en/workflows) are
79
+ available, the saved project workflow
80
+ `.claude/workflows/audit-documentation.workflow.js` fans the semantic
81
+ dimensions below out as parallel read-only subagents — each agent walks
82
+ the full target set per doc for its dimension — runs an **adversarial
83
+ verify** stage (an independent agent re-checks every stale-claim finding
84
+ against the current code and drops claims it cannot reproduce — doc
85
+ staleness is notoriously false-positive-prone), then synthesises the
86
+ Step 3 report. The orchestrator derives its per-dimension prompts from
87
+ *this* markdown at run time — the lens stays the single source of truth;
88
+ the script does not fork a second copy of the spec. Step 1's
89
+ deterministic checkers still run in the calling session (the analysis
90
+ subagents are read-only and cannot execute them); their results are
91
+ passed to the workflow as the `deterministicFindings` input and folded
92
+ into the synthesis.
93
+ - **Sequential (single-pass) path.** When dynamic workflows are unavailable,
94
+ follow Steps 1–3 below turn-by-turn exactly as before. This is the default
95
+ fallback and changes nothing about the existing behaviour.
96
+
97
+ **Strategy selection** is computed by
98
+ [`lib/dynamic-workflow/capability.js`](../scripts/lib/dynamic-workflow/capability.js)
99
+ (`selectAuditStrategy`). The orchestrated path is chosen only when the runtime
100
+ is Claude Code, `disableWorkflows` is not set (settings.json **or**
101
+ `CLAUDE_CODE_DISABLE_WORKFLOWS`), and the Claude Code version meets the
102
+ research-preview floor (`>= 2.1.154`). Any other runtime, a disabled setting,
103
+ or an older version degrades gracefully to the sequential path.
104
+
105
+ > **Capability degradation, not a contract shim.** This dual path is **not**
106
+ > covered by the No-Shim / hard-cutover rule in
107
+ > [`git-conventions.md`](../rules/git-conventions.md). That rule forbids
108
+ > running two shapes of the *same contract* side by side. Here there is **one**
109
+ > report contract; only the *execution strategy* is selected from a runtime
110
+ > capability — the same pattern the protocol already endorses for live-docs
111
+ > fallback in [`instructions.md` §1.C/§1.D](../instructions.md). The full
112
+ > capability-degradation rationale lives in the
113
+ > [`capability.js`](../scripts/lib/dynamic-workflow/capability.js) module
114
+ > docstring; the orchestrated-run evidence and per-lens cost/precision gate
115
+ > verdicts live in [`docs/roadmap.md`](../../docs/roadmap.md) (Part 3 —
116
+ > Dynamic-Workflow Orchestration).
117
+
118
+ **Forcing a path (for testing).** Set `MANDREL_AUDIT_STRATEGY=sequential` to
119
+ verify the fallback path with the feature notionally disabled, or
120
+ `MANDREL_AUDIT_STRATEGY=orchestrated` to pin the dynamic path. To exercise the
121
+ real disable signals instead, set `CLAUDE_CODE_DISABLE_WORKFLOWS=1` (env) or
122
+ `disableWorkflows: true` in `.claude/settings.json` and re-run the lens — both
123
+ degrade to the sequential path.
124
+
125
+ ## Step 1: Deterministic Signal First
126
+
127
+ > Apply [`helpers/parallel-tooling.md`](helpers/parallel-tooling.md) when batching the scan below — independent reads belong in one turn, long shells run via `run_in_background` + `Monitor`.
128
+
129
+ Run the existing deterministic checkers before any semantic reading — they
130
+ are cheap, exact, and de-duplicate the easy findings:
131
+
132
+ ```bash
133
+ node .agents/scripts/check-doc-links.js
134
+ node .agents/scripts/check-lifecycle-doc-drift.js
135
+ node .agents/scripts/generate-config-docs.js --check
136
+ node .agents/scripts/generate-lifecycle-docs.js --check
137
+ node .agents/scripts/generate-workflows-doc.js --check
138
+ ```
139
+
140
+ Fold the results in as findings:
141
+
142
+ - **Checker failures** (broken links, lifecycle drift) become individual
143
+ findings with `Category: Link Integrity` (or `Generator Drift` for the
144
+ lifecycle gate), citing the checker output verbatim.
145
+ - **Generator dirtiness** (any `--check` reporting stale output, including
146
+ a stale `.claude/commands/` mirror) becomes **one single finding** with
147
+ `Category: Generator Drift` — never per-line findings — whose
148
+ remediation is "rerun `npm run docs:gen` / `npm run sync:commands` and
149
+ commit the regenerated output".
150
+
151
+ This lens orchestrates the existing checkers only; it does not add new
152
+ deterministic checker scripts.
153
+
154
+ ## Step 2: Semantic Claim Verification & Completeness
155
+
156
+ For every doc in the target set (minus the generated exclusions), verify
157
+ its claims against the code — read the doc, extract its testable claims,
158
+ and check each one:
159
+
160
+ 1. **Command & Script References:** Every referenced npm script exists in
161
+ `package.json`; every referenced CLI command and
162
+ `node .agents/scripts/<name>.js` invocation resolves to a real script
163
+ with the documented flags.
164
+ 2. **Path & Module References:** Every referenced file path, directory, and
165
+ module name exists at the stated location (account for moves and
166
+ renames).
167
+ 3. **Workflow & Contract Descriptions:** Described workflows, label
168
+ taxonomies (`agent::*`, `type::*`, `meta::*`), branch shapes
169
+ (`story-<id>`, `epic/<id>`), and artifact contracts match how the
170
+ current scripts actually behave — read the implementation when the
171
+ prose makes a behavioural claim.
172
+ 4. **Version & Topology Claims:** Version numbers, package names, release
173
+ topology, CI gate names, and tool-matrix claims are current.
174
+ 5. **Completeness:** Major surfaces with no documentation coverage in the
175
+ target set — workflows under `.agents/workflows/`, operator-facing
176
+ scripts under `.agents/scripts/`, and config keys in
177
+ `.agents/schemas/agentrc.schema.json` that no target-set doc mentions.
178
+ Report material gaps, not an exhaustive index.
179
+
180
+ Severity guidance: **High** = the doc instructs something that no longer
181
+ works (wrong command, deleted script, contract mismatch); **Medium** =
182
+ materially outdated description or missing coverage of a major surface;
183
+ **Low** = cosmetic drift, stale examples, tone/format inconsistencies.
184
+
185
+ ## Step 3: Output Requirements
186
+
187
+ Generate and save a highly structured Markdown audit report to
188
+ `{{auditOutputDir}}/audit-documentation-results.md`, using the exact
189
+ template below.
190
+
191
+ ```markdown
192
+ # Documentation Audit Report
193
+
194
+ ## Executive Summary
195
+
196
+ [Overview of documentation health (High/Medium/Low confidence that the docs
197
+ match the code), the deterministic-gate verdicts, and primary drift themes.]
198
+
199
+ ## Target Set Coverage
200
+
201
+ | Doc | Source | Verdict |
202
+ | ------ | --------------------------------------------------------------------- | ------------------------------- |
203
+ | [path] | [docsContextFiles · docsFreshness · anchor · --paths] | [Current · Drifted · Excluded (generated)] |
204
+
205
+ ## Detailed Findings
206
+
207
+ [For every gap identified, use the following strict structure:]
208
+
209
+ ### [Short Title of the Issue]
210
+
211
+ - **Category:** [Broken Instruction | Stale Description | Missing Coverage | Generator Drift | Link Integrity]
212
+ - **Impact:** [High | Medium | Low]
213
+ - **Current State:** [The doc, the exact claim, and what the code actually
214
+ does — cite file paths and lines on both sides]
215
+ - **Recommendation & Rationale:** [The specific doc edit (or generator
216
+ rerun) and why it restores accuracy]
217
+ - **Agent Prompt:**
218
+ `[A copy-pasteable, highly specific prompt to execute this doc fix independently]`
219
+ ```
220
+
221
+ ## Constraint
222
+
223
+ This workflow is **read-only** with respect to the repository: run the
224
+ deterministic checkers in `--check` mode only, and do not edit any
225
+ documentation or code. The single write is the report artifact. Provide the
226
+ analysis and remediation prompts; do not apply changes.
@@ -31,7 +31,7 @@ inflate Performance scores misleadingly.
31
31
 
32
32
  ## Scope (Epic mode)
33
33
 
34
- When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
34
+ When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
35
35
  following block is populated with the Epic's change-set file list.
36
36
  Otherwise — for any manual `/audit-<dimension>` invocation — the block
37
37
  renders the literal substitution token and you MUST treat it as **no
@@ -16,7 +16,7 @@ load.
16
16
 
17
17
  ## Scope (Epic mode)
18
18
 
19
- When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
19
+ When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
20
20
  following block is populated with the Epic's change-set file list.
21
21
  Otherwise — for any manual `/audit-<dimension>` invocation — the block
22
22
  renders the literal substitution token and you MUST treat it as **no
@@ -38,7 +38,7 @@ before this section existed.
38
38
  ## Execution strategy (dual-path)
39
39
 
40
40
  This lens runs along one of two execution paths. Both emit the **identical**
41
- report contract (Step 3); downstream consumers (`/epic-deliver` Phase 4
41
+ report contract (Step 3); downstream consumers (`/deliver` Phase 4
42
42
  epic-audit, `audit-to-stories`) are agnostic to which path produced it.
43
43
 
44
44
  - **Orchestrated (dynamic-workflow) path.** When Claude Code's
@@ -17,7 +17,7 @@ insecure storage, or unnecessary collection of sensitive data.
17
17
 
18
18
  ## Scope (Epic mode)
19
19
 
20
- When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
20
+ When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
21
21
  following block is populated with the Epic's change-set file list.
22
22
  Otherwise — for any manual `/audit-<dimension>` invocation — the block
23
23
  renders the literal substitution token and you MUST treat it as **no
@@ -26,7 +26,7 @@ integrations, and test environment stability.
26
26
 
27
27
  ## Scope (Epic mode)
28
28
 
29
- When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
29
+ When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
30
30
  following block is populated with the Epic's change-set file list.
31
31
  Otherwise — for any manual `/audit-<dimension>` invocation — the block
32
32
  renders the literal substitution token and you MUST treat it as **no
@@ -48,7 +48,7 @@ before this section existed.
48
48
  ## Execution strategy (dual-path)
49
49
 
50
50
  This lens runs along one of two execution paths. Both emit the **identical**
51
- report contract (Step 3); downstream consumers (`/epic-deliver` Phase 4
51
+ report contract (Step 3); downstream consumers (`/deliver` Phase 4
52
52
  epic-audit, `audit-to-stories`) are agnostic to which path produced it.
53
53
 
54
54
  - **Orchestrated (dynamic-workflow) path.** When Claude Code's
@@ -16,7 +16,7 @@ potential attack vectors.
16
16
 
17
17
  ## Scope (Epic mode)
18
18
 
19
- When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
19
+ When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
20
20
  following block is populated with the Epic's change-set file list.
21
21
  Otherwise — for any manual `/audit-<dimension>` invocation — the block
22
22
  renders the literal substitution token and you MUST treat it as **no
@@ -38,7 +38,7 @@ before this section existed.
38
38
  ## Execution strategy (dual-path)
39
39
 
40
40
  This lens runs along one of two execution paths. Both emit the **identical**
41
- report contract (Step 3); downstream consumers (`/epic-deliver` Phase 4
41
+ report contract (Step 3); downstream consumers (`/deliver` Phase 4
42
42
  epic-audit, `audit-to-stories`) are agnostic to which path produced it.
43
43
 
44
44
  - **Orchestrated (dynamic-workflow) path.** When Claude Code's
@@ -20,7 +20,7 @@ indexes and AI-powered answer engines — without making any immediate changes.
20
20
 
21
21
  ## Scope (Epic mode)
22
22
 
23
- When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
23
+ When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
24
24
  following block is populated with the Epic's change-set file list.
25
25
  Otherwise — for any manual `/audit-<dimension>` invocation — the block
26
26
  renders the literal substitution token and you MUST treat it as **no
@@ -17,7 +17,7 @@ actionable report that can be handed off for remediation before deployment.
17
17
 
18
18
  ## Scope (Epic mode)
19
19
 
20
- When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
20
+ When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
21
21
  following block is populated with the Epic's change-set file list.
22
22
  Otherwise — for any manual `/audit-<dimension>` invocation — the block
23
23
  renders the literal substitution token and you MUST treat it as **no
@@ -3,7 +3,7 @@ description:
3
3
  Convert findings produced by the audit-* workflows into actionable
4
4
  GitHub Stories. Reads temp/audits/audit-*-results.md, groups findings
5
5
  cross-audit, deduplicates against existing Issues by fingerprint, and
6
- either chains into /epic-plan --idea or opens standalone Stories.
6
+ either chains into /plan --idea or opens standalone Stories.
7
7
  ---
8
8
 
9
9
  # /audit-to-stories [audit-file-or-glob]
@@ -22,7 +22,7 @@ Dimension / Category, Current State, Recommendation, Agent Prompt).
22
22
  `/audit-to-stories` closes the loop: it parses those reports, groups
23
23
  related findings (including across audit dimensions), classifies each
24
24
  group as eligible-to-create or already-tracked, and — at the operator's
25
- choice — either chains into `/epic-plan --idea` for a single planned
25
+ choice — either chains into `/plan --idea` for a single planned
26
26
  Epic or opens standalone Stories directly.
27
27
 
28
28
  The audit producers themselves are **not modified** by this workflow.
@@ -117,8 +117,8 @@ Ask:
117
117
 
118
118
  > How would you like these `<M>` Stories created?
119
119
  >
120
- > - **Single Epic via `/epic-plan`** **[Recommended]** — opens one Epic,
121
- > then chains into `/epic-plan --idea` so the standard PRD / Tech Spec
120
+ > - **Single Epic via `/plan`** **[Recommended]** — opens one Epic,
121
+ > then chains into `/plan --idea` so the standard PRD / Tech Spec
122
122
  > / WBS authoring handles decomposition. Grouped Stories become the
123
123
  > seed for Phase 7 decomposition.
124
124
  > - **Individual standalone Stories** — opens one GitHub Issue per
@@ -128,7 +128,7 @@ Ask:
128
128
 
129
129
  ## Phase 5a — Single-Epic path
130
130
 
131
- Build the `/epic-plan` idea seed from the filtered plan envelope:
131
+ Build the `/plan` idea seed from the filtered plan envelope:
132
132
 
133
133
  ```bash
134
134
  node .agents/scripts/audit-to-stories.js --emit-epic-seed \
@@ -138,16 +138,16 @@ node .agents/scripts/audit-to-stories.js --emit-epic-seed \
138
138
 
139
139
  The seed renders the canonical one-pager sections — Problem Statement,
140
140
  Recommended Direction, Key Assumptions (with links to every source
141
- report), MVP Scope (the M proposed Stories), Key Files (so `/epic-plan`
141
+ report), MVP Scope (the M proposed Stories), Key Files (so `/plan`
142
142
  Phase 7 decompose has concrete anchors), Not Doing.
143
143
 
144
144
  Chain into the existing planning entrypoint:
145
145
 
146
146
  ```text
147
- /epic-plan --idea "<path-to-seed>"
147
+ /plan --idea "<path-to-seed>"
148
148
  ```
149
149
 
150
- `/epic-plan` then runs ideation → duplicate-search → render Epic body
150
+ `/plan` then runs ideation → duplicate-search → render Epic body
151
151
  → open Epic → Phase 7 / 8 decompose, as documented in its workflow.
152
152
  Each Story it spawns from the seed carries `context::audit:
153
153
  <reportLink>` and `audit-fingerprint: <sha>` in its body so future
@@ -225,7 +225,7 @@ summarising the run:
225
225
  - Final tally: `"<M> groups planned · <K> created · <J> skipped (open)
226
226
  · <L> skipped (re-occurring)"`.
227
227
 
228
- When the Single-Epic path ran, link the Epic the chained `/epic-plan`
228
+ When the Single-Epic path ran, link the Epic the chained `/plan`
229
229
  opened. When the Standalone-Stories path ran, list every Issue URL.
230
230
 
231
231
  ## Constraints
@@ -250,7 +250,7 @@ opened. When the Standalone-Stories path ran, list every Issue URL.
250
250
 
251
251
  ## See also
252
252
 
253
- - [`/epic-plan`](epic-plan.md) — the planning pipeline `/audit-to-stories`
253
+ - [`/plan`](helpers/plan-epic.md) — the planning pipeline `/audit-to-stories`
254
254
  chains into for the Single-Epic grouping mode.
255
255
  - [`lib/findings/route-finding.js`](../scripts/lib/findings/route-finding.js) —
256
256
  the shared fingerprint/dedup/route helper this workflow and `qa-explore`
@@ -16,7 +16,7 @@ and cohesive.
16
16
 
17
17
  ## Scope (Epic mode)
18
18
 
19
- When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
19
+ When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
20
20
  following block is populated with the Epic's change-set file list.
21
21
  Otherwise — for any manual `/audit-<dimension>` invocation — the block
22
22
  renders the literal substitution token and you MUST treat it as **no
@@ -0,0 +1,85 @@
1
+ ---
2
+ description:
3
+ Unified delivery entry point. Inspects the ticket type(s) and
4
+ Epic-reference state of the supplied IDs, then routes to the Epic wave
5
+ loop or the standalone multi-Story fan-out — preserving every flag and
6
+ the parallel-delivery contract of the retired commands.
7
+ ---
8
+
9
+ # /deliver [Epic ID] | [Story IDs...]
10
+
11
+ ## Role
12
+
13
+ Router. `/deliver` owns input classification and path selection only — all
14
+ phase content lives in the two path helpers:
15
+
16
+ - [`helpers/deliver-epic.md`](helpers/deliver-epic.md) — the full Epic
17
+ delivery loop (preflight, wave loop fanning out
18
+ [`helpers/epic-deliver-story`](helpers/epic-deliver-story.md),
19
+ close-validation, epic-audit, code-review, retro, finalize, watch,
20
+ auto-merge gate, cleanup).
21
+ - [`helpers/deliver-stories.md`](helpers/deliver-stories.md) — the
22
+ standalone multi-Story path (`stories-wave-tick.js` wave plan, operator
23
+ confirmation, parallel fan-out to
24
+ [`helpers/single-story-deliver`](helpers/single-story-deliver.md)).
25
+
26
+ ## Input matrix (authoritative)
27
+
28
+ Fetch each supplied ID's labels and body (`type::*` label, `Epic: #N`
29
+ reference) before routing:
30
+
31
+ | Input | Route |
32
+ | --- | --- |
33
+ | Exactly one `type::epic` ID | **Epic path** — run [`helpers/deliver-epic.md`](helpers/deliver-epic.md) Phases 1–9 unchanged. |
34
+ | One or more `type::story` IDs, none carrying an `Epic: #N` reference | **Standalone path** — run [`helpers/deliver-stories.md`](helpers/deliver-stories.md) Phases 0–3. |
35
+ | Any Story carrying an `Epic: #N` reference | **Error**, naming the fix: `Story #<id> belongs to Epic #<n> — run /deliver <n>`. |
36
+ | Mixed Epic + Story IDs, or more than one Epic | **Error**: separate invocations — one `/deliver <epicId>` per Epic, one `/deliver <id> [<id>...]` for the standalone set. |
37
+
38
+ ## Flags (forwarded per path)
39
+
40
+ | Path | Flags |
41
+ | --- | --- |
42
+ | Epic | `--skip-epic-audit`, `--skip-code-review`, `--skip-retro`, `--full-retro`, `--steal`, `--as <handle>` |
43
+ | Story | `--dep <from>:<to>`, `--yes`, `--concurrency <n>` |
44
+
45
+ A flag passed to the wrong path is reported once as a no-op warning and
46
+ ignored — never an error.
47
+
48
+ **Multi-Story parallel contract (preserved verbatim).**
49
+
50
+ ```text
51
+ /deliver <id> <id> … --dep <from>:<to> --concurrency <n> --yes
52
+ ```
53
+
54
+ behaves exactly as the retired multi-Story command did: the same
55
+ `stories-wave-tick.js` wave plan, the same operator confirmation gate
56
+ (suppressed by `--yes`), and the same parallel fan-out — one Agent call per
57
+ Story per wave, capped by the resolved `concurrencyCap` — to
58
+ [`helpers/single-story-deliver`](helpers/single-story-deliver.md).
59
+
60
+ ## Procedure
61
+
62
+ 1. **Parse args.** At least one positive-integer ID is required.
63
+ 2. **Classify.** Fetch each ticket's labels + body and apply the input
64
+ matrix above. Refuse ambiguous input with the matrix's error messages —
65
+ never guess a route.
66
+ 3. **Delegate.** Read the selected path helper **in full** and execute it
67
+ from its entry phase, forwarding the absorbed flags. The helper's phase
68
+ numbering, watchdogs, gates, and scripts are unchanged — this router
69
+ adds no phase content.
70
+
71
+ ## Constraints
72
+
73
+ - `/deliver` requires a planned ticket: an Epic at `agent::ready` (the
74
+ Epic helper's preflight enforces this) or well-formed standalone Stories.
75
+ Planning happens in [`/plan`](plan.md); the plan-review gate between the
76
+ two commands is a hard boundary.
77
+ - The router performs no git or label mutations itself; the path helpers
78
+ own every script invocation.
79
+
80
+ ## See also
81
+
82
+ - [`/plan`](plan.md) — the unified planning entry point.
83
+ - [`helpers/deliver-epic.md`](helpers/deliver-epic.md) /
84
+ [`helpers/deliver-stories.md`](helpers/deliver-stories.md) — the path
85
+ helpers.
@@ -14,7 +14,7 @@ description:
14
14
  landed (or is about to) and you want to be sure you actually understand it —
15
15
  the problem it solves, why it was solved this way, the design decisions, the
16
16
  edge cases, and the blast radius. It is the after-the-fact counterpart to
17
- [`/epic-plan`](epic-plan.md) Phase 11 (which walks the operator through a
17
+ [`/plan`](helpers/plan-epic.md) Phase 11 (which walks the operator through a
18
18
  *plan* before delivery); both drive the same engine.
19
19
 
20
20
  ```text
@@ -39,7 +39,7 @@ contract.
39
39
  | Understand a change that already merged | `/explain <PR#>` |
40
40
  | Understand a branch before merging it | `/explain <branch>` |
41
41
  | Understand what you are about to commit | `/explain --staged` |
42
- | Understand a freshly planned Epic backlog | `/epic-plan` Phase 11 (automatic) |
42
+ | Understand a freshly planned Epic backlog | `/plan` Phase 11 (automatic) |
43
43
 
44
44
  ## Step 1 — Resolve the subject
45
45
 
@@ -111,7 +111,7 @@ structured-question mechanism when it sharpens understanding.
111
111
 
112
112
  - [`core/knowledge-transfer`](../skills/core/knowledge-transfer/SKILL.md) —
113
113
  the comprehension engine this command drives.
114
- - [`/epic-plan`](epic-plan.md) — Phase 11 runs the same engine over a plan
114
+ - [`/plan`](helpers/plan-epic.md) — Phase 11 runs the same engine over a plan
115
115
  before delivery.
116
116
  - `/code-review` (Claude Code built-in) — correctness review of a diff. A
117
117
  different concern: `/explain` builds *operator* understanding, not a defect
@@ -235,7 +235,7 @@ Merge the PR as a squash commit and delete the head branch. Call
235
235
 
236
236
  After the merge command returns, perform a conflict marker scan to confirm no
237
237
  stray markers entered the base branch. Delegate to `detect-merges.js` — it
238
- owns the scan logic and is the same script used by `/epic-deliver` Phase 5.3.
238
+ owns the scan logic and is the same script used by `/deliver` Phase 5.3.
239
239
 
240
240
  ```powershell
241
241
  git checkout [BASE_BRANCH]
@@ -7,7 +7,7 @@ description: >-
7
7
  # /git-pr-all [Message] [--draft] [--no-auto-merge] [--branch <name>] [--base <branch>]
8
8
 
9
9
  This workflow is the **ad-hoc PR ergonomics** counterpart to the heavyweight
10
- `/epic-deliver` pipeline. Use it when you have outstanding changes that do not
10
+ `/deliver` pipeline. Use it when you have outstanding changes that do not
11
11
  belong to a planned Epic (typo fixes, file deletions, doc tweaks, dependency
12
12
  bumps, operator housekeeping) and you want a single command to take them from
13
13
  the working tree to a PR queued for auto-merge.
@@ -19,7 +19,7 @@ names. Quality gates remain enforced by the existing pre-push hook; this
19
19
  workflow does not bypass them.
20
20
 
21
21
  > **When to run**: After making changes on `main` (or any base branch) that
22
- > are too small or too out-of-band for `/epic-plan` + `/epic-deliver` but
22
+ > are too small or too out-of-band for `/plan` + `/deliver` but
23
23
  > still need to land via the PR-required flow.
24
24
  >
25
25
  > **Persona**: `devops-engineer` · **Skills**:
@@ -123,7 +123,7 @@ git add -A
123
123
 
124
124
  > **Why `-A` and not explicit paths?** `/git-pr-all` is operator-driven
125
125
  > (not parallel-agent-driven), so the single-tree assumption that
126
- > blocks `git add .` inside `/story-deliver` does not apply here. See
126
+ > blocks `git add .` inside `/deliver` does not apply here. See
127
127
  > the parallel-execution warning at the bottom of this file.
128
128
 
129
129
  Commit:
@@ -210,7 +210,7 @@ Print a single block to the operator:
210
210
  auto-merge: <enabled | draft | disabled>
211
211
  ```
212
212
 
213
- Do **not** poll CI. That is the `/epic-deliver` Phase 7 job and is
213
+ Do **not** poll CI. That is the `/deliver` Phase 7 job and is
214
214
  overkill for ad-hoc changes. The operator (or GitHub's email
215
215
  notification) is the next watcher.
216
216
 
@@ -253,13 +253,13 @@ notification) is the next watcher.
253
253
  - **Never** force-push from `/git-pr-all`. This workflow is for opening
254
254
  new PRs, not for rewriting history. Force-pushes belong to
255
255
  `/git-merge-pr` (with `--force-with-lease` after a rebase) and
256
- `/epic-deliver` Phase 7 (with the operator's explicit context).
256
+ `/deliver` Phase 7 (with the operator's explicit context).
257
257
  - **Always** delete the head branch on merge (Step 6's
258
258
  `--delete-branch` flag handles this for `--auto` mode; for
259
259
  `--no-auto-merge` PRs the operator is responsible for the cleanup).
260
260
  - **Always** prefer `--auto --squash --delete-branch` unless the
261
261
  operator explicitly opts out. The squash + auto-merge default gives
262
- the same merge ergonomics `/epic-deliver` produces, so main's commit
262
+ the same merge ergonomics `/deliver` produces, so main's commit
263
263
  history stays uniform across both surfaces.
264
264
 
265
265
  ---
@@ -267,11 +267,14 @@ notification) is the next watcher.
267
267
  ## ⚠️ Parallel Story Execution
268
268
 
269
269
  Do **not** use this workflow from inside a parallel story-execution
270
- context (`/story-deliver #<storyId>`, `/epic-deliver` wave dispatch).
270
+ context (`/deliver #<storyId>`, `/deliver` wave dispatch).
271
271
  `git add -A` sweeps any untracked files in the working tree, which in
272
- a shared working directory may belong to another agent. Use the
273
- explicit-staging + branch-guard pattern documented in
274
- `story-deliver.md` Step 1 in those contexts.
272
+ a shared working directory may belong to another agent. In those
273
+ contexts stage explicit paths only and confirm
274
+ `git branch --show-current` reports the expected `story-<id>` branch
275
+ before committing — see
276
+ [`helpers/worktree-lifecycle.md`](helpers/worktree-lifecycle.md) for the
277
+ shared-tree hazard and the worktree-isolation model that contains it.
275
278
 
276
279
  The same warning applies to any workflow that calls `git add .` or
277
280
  `git add -A`; this is not unique to `/git-pr-all` (see
@@ -54,7 +54,10 @@ attempting to commit or push again.
54
54
  ## ⚠️ Parallel Story Execution
55
55
 
56
56
  Do **not** use this workflow from inside a parallel story-execution context
57
- (`/story-deliver #<storyId>`). `git add .` sweeps any untracked files in the
57
+ (`/deliver #<storyId>`). `git add .` sweeps any untracked files in the
58
58
  working tree, which in a shared working directory may belong to another agent.
59
- In that context, follow the explicit-staging + branch-guard pattern documented
60
- in `story-deliver.md` Step 1.
59
+ In that context, stage explicit paths only and confirm
60
+ `git branch --show-current` reports the expected `story-<id>` branch before
61
+ committing — see
62
+ [`helpers/worktree-lifecycle.md`](helpers/worktree-lifecycle.md) for the
63
+ shared-tree hazard and the worktree-isolation model that contains it.
@@ -1,7 +1,7 @@
1
1
  # Merge Conflict Resolution — Shared Procedure
2
2
 
3
3
  Canonical, workflow-agnostic procedure for resolving merge / rebase conflicts.
4
- Referenced by `git-merge-pr.md`, `story-deliver.md`, and `epic-deliver.md`.
4
+ Referenced by `git-merge-pr.md`, `deliver-stories.md`, and `deliver-epic.md`.
5
5
 
6
6
  ## Procedure
7
7
 
@@ -26,7 +26,7 @@ The loop is **always on** (a hard cutover — there is no flag to disable it) an
26
26
  **bounded** by `delivery.acceptanceEval.maxRounds` (default 2), which the
27
27
  resolver clamps into `[1, hard ceiling]` so the cap can never be switched off or
28
28
  run unbounded. It is **distinct from** the Epic-level acceptance-spec
29
- reconciliation in `/epic-deliver` Phase 7.1 (which fires once at finalize and
29
+ reconciliation in `/deliver` Phase 7.1 (which fires once at finalize and
30
30
  only checks `@ac-*` Gherkin tag presence): this loop is per-Story,
31
31
  per-criterion, mid-delivery, and evaluates the actual work product.
32
32