mandrel 1.59.0 → 1.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/.agents/README.md +86 -44
  2. package/.agents/docs/SDLC.md +135 -141
  3. package/.agents/docs/configuration.md +77 -20
  4. package/.agents/docs/quality-gates.md +796 -0
  5. package/.agents/docs/workflows.md +6 -9
  6. package/.agents/instructions.md +12 -11
  7. package/.agents/personas/architect.md +1 -1
  8. package/.agents/personas/product.md +1 -1
  9. package/.agents/personas/project-manager.md +14 -14
  10. package/.agents/personas/technical-writer.md +1 -1
  11. package/.agents/rules/changelog-style.md +5 -5
  12. package/.agents/rules/git-conventions.md +3 -3
  13. package/.agents/runtime-deps.json +2 -2
  14. package/.agents/schemas/agentrc.schema.json +3 -3
  15. package/.agents/schemas/dispatch-manifest.json +4 -4
  16. package/.agents/schemas/epic-spec.schema.json +15 -45
  17. package/.agents/schemas/lifecycle/README.md +1 -1
  18. package/.agents/schemas/lifecycle/story.dispatch.end.schema.json +1 -1
  19. package/.agents/schemas/lifecycle/story.dispatch.start.schema.json +1 -1
  20. package/.agents/schemas/lifecycle/story.heartbeat.schema.json +1 -1
  21. package/.agents/schemas/validation-evidence.schema.json +1 -1
  22. package/.agents/scripts/README.md +2 -2
  23. package/.agents/scripts/acceptance-eval.js +1 -1
  24. package/.agents/scripts/acceptance-spec-reconciler.js +2 -2
  25. package/.agents/scripts/agents-bootstrap-github.js +23 -119
  26. package/.agents/scripts/analyze-execution.js +2 -2
  27. package/.agents/scripts/audit-to-stories.js +1 -1
  28. package/.agents/scripts/check-doc-links.js +2 -3
  29. package/.agents/scripts/diagnose-friction.js +1 -1
  30. package/.agents/scripts/dispatcher.js +2 -2
  31. package/.agents/scripts/drain-pending-cleanup.js +1 -1
  32. package/.agents/scripts/epic-audit-prepare.js +3 -3
  33. package/.agents/scripts/epic-deliver-note-intervention.js +2 -2
  34. package/.agents/scripts/epic-deliver-preflight.js +6 -6
  35. package/.agents/scripts/epic-deliver-prepare.js +1 -1
  36. package/.agents/scripts/epic-execute-record-wave.js +4 -4
  37. package/.agents/scripts/epic-plan-healthcheck.js +6 -10
  38. package/.agents/scripts/epic-plan-spec-validate.js +1 -1
  39. package/.agents/scripts/epic-reconcile.js +11 -29
  40. package/.agents/scripts/evidence-gate.js +1 -1
  41. package/.agents/scripts/generate-workflows-doc.js +1 -1
  42. package/.agents/scripts/hierarchy-gate.js +7 -11
  43. package/.agents/scripts/lib/ITicketingProvider.js +1 -1
  44. package/.agents/scripts/lib/audit-suite/selector.js +1 -1
  45. package/.agents/scripts/lib/audit-to-stories/seed-epic-from-findings.js +2 -2
  46. package/.agents/scripts/lib/baseline-snapshot.js +7 -7
  47. package/.agents/scripts/lib/bdd-runner-detect.js +1 -1
  48. package/.agents/scripts/lib/bdd-scenario-scanner.js +3 -3
  49. package/.agents/scripts/lib/bootstrap/baselines-layout-migration.js +1 -1
  50. package/.agents/scripts/lib/bootstrap/branch-protection.js +1 -1
  51. package/.agents/scripts/lib/bootstrap/ci-workflow-template.js +47 -1
  52. package/.agents/scripts/lib/bootstrap/commit-push.js +2 -2
  53. package/.agents/scripts/lib/bootstrap/gh-preflight.js +7 -9
  54. package/.agents/scripts/lib/bootstrap/manifest.js +21 -1
  55. package/.agents/scripts/lib/bootstrap/merge-methods.js +31 -16
  56. package/.agents/scripts/lib/bootstrap/project-bootstrap.js +32 -11
  57. package/.agents/scripts/lib/codebase-snapshot.js +1 -1
  58. package/.agents/scripts/lib/config/explain.js +1 -1
  59. package/.agents/scripts/lib/config/runners.js +2 -2
  60. package/.agents/scripts/lib/config/runtime.js +1 -1
  61. package/.agents/scripts/lib/config/sync-agentrc.js +1 -1
  62. package/.agents/scripts/lib/config/temp-paths.js +2 -2
  63. package/.agents/scripts/lib/config-settings-schema-delivery.js +2 -2
  64. package/.agents/scripts/lib/config-settings-schema-quality.js +1 -1
  65. package/.agents/scripts/lib/config-settings-schema.js +3 -3
  66. package/.agents/scripts/lib/detect-package-manager.js +72 -0
  67. package/.agents/scripts/lib/duplicate-search.js +1 -1
  68. package/.agents/scripts/lib/dynamic-workflow/capability.js +1 -1
  69. package/.agents/scripts/lib/epic-plan-clarity.js +1 -1
  70. package/.agents/scripts/lib/epic-plan-ideation.js +1 -1
  71. package/.agents/scripts/lib/errors/index.js +4 -4
  72. package/.agents/scripts/lib/feedback-loop/memory-freshness.js +1 -1
  73. package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +1 -1
  74. package/.agents/scripts/lib/findings/classify-finding.js +1 -1
  75. package/.agents/scripts/lib/findings/promote-finding.js +10 -10
  76. package/.agents/scripts/lib/label-constants.js +3 -4
  77. package/.agents/scripts/lib/label-taxonomy.js +5 -10
  78. package/.agents/scripts/lib/onboard/detect-stack.js +10 -10
  79. package/.agents/scripts/lib/onboard/init-tail.js +218 -0
  80. package/.agents/scripts/lib/onboard/scaffold-docs.js +18 -3
  81. package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +1 -1
  82. package/.agents/scripts/lib/orchestration/code-review.js +5 -5
  83. package/.agents/scripts/lib/orchestration/context-hydration-engine.js +8 -9
  84. package/.agents/scripts/lib/orchestration/dependency-analyzer.js +3 -3
  85. package/.agents/scripts/lib/orchestration/detectors-phase.js +2 -2
  86. package/.agents/scripts/lib/orchestration/dispatch-engine.js +30 -38
  87. package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +9 -25
  88. package/.agents/scripts/lib/orchestration/epic-cleanup.js +1 -1
  89. package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +8 -8
  90. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +1 -1
  91. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +7 -21
  92. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +3 -3
  93. package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +26 -13
  94. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +1 -1
  95. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/prompts.js +1 -1
  96. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +2 -2
  97. package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +1 -1
  98. package/.agents/scripts/lib/orchestration/epic-run-state-store.js +3 -3
  99. package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +4 -4
  100. package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +3 -3
  101. package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +6 -21
  102. package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +7 -7
  103. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +1 -1
  104. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +2 -2
  105. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +4 -4
  106. package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +4 -4
  107. package/.agents/scripts/lib/orchestration/epic-runner/story-run-progress-writer.js +8 -8
  108. package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +4 -4
  109. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +7 -15
  110. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +72 -41
  111. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +2 -4
  112. package/.agents/scripts/lib/orchestration/file-assumptions.js +2 -2
  113. package/.agents/scripts/lib/orchestration/finalize/close-planning-tickets.js +1 -1
  114. package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +2 -2
  115. package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +1 -1
  116. package/.agents/scripts/lib/orchestration/lease-guard-shared.js +3 -3
  117. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +1 -1
  118. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +1 -1
  119. package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +1 -1
  120. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +1 -1
  121. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +1 -1
  122. package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +1 -1
  123. package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +1 -1
  124. package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +1 -1
  125. package/.agents/scripts/lib/orchestration/lifecycle/listeners/merge-watcher.js +1 -1
  126. package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +1 -1
  127. package/.agents/scripts/lib/orchestration/lifecycle/listeners/watcher.js +1 -1
  128. package/.agents/scripts/lib/orchestration/manifest-builder.js +5 -5
  129. package/.agents/scripts/lib/orchestration/parked-follow-ons.js +2 -2
  130. package/.agents/scripts/lib/orchestration/plan-runner/plan-router.js +5 -5
  131. package/.agents/scripts/lib/orchestration/post-merge/phases/ticket-closure.js +3 -3
  132. package/.agents/scripts/lib/orchestration/preflight-cache.js +1 -1
  133. package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +1 -1
  134. package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +1 -1
  135. package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +2 -2
  136. package/.agents/scripts/lib/orchestration/retro-runner.js +3 -3
  137. package/.agents/scripts/lib/orchestration/review-depth.js +1 -1
  138. package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +1 -1
  139. package/.agents/scripts/lib/orchestration/spec-freshness.js +1 -1
  140. package/.agents/scripts/lib/orchestration/spec-renderer.js +36 -73
  141. package/.agents/scripts/lib/orchestration/spec-section-validator.js +1 -1
  142. package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +1 -1
  143. package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +2 -2
  144. package/.agents/scripts/lib/orchestration/task-body-validator.js +6 -6
  145. package/.agents/scripts/lib/orchestration/ticket-lease.js +1 -1
  146. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +2 -2
  147. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +1 -10
  148. package/.agents/scripts/lib/orchestration/ticket-validator.js +25 -70
  149. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +5 -12
  150. package/.agents/scripts/lib/orchestration/ticketing/reads.js +8 -8
  151. package/.agents/scripts/lib/orchestration/ticketing/state.js +3 -3
  152. package/.agents/scripts/lib/orchestration/wave-record-notifications.js +2 -2
  153. package/.agents/scripts/lib/orchestration/wave-record-projection.js +1 -1
  154. package/.agents/scripts/lib/plan-phase-cleanup.js +1 -1
  155. package/.agents/scripts/lib/preflight-runner.js +1 -1
  156. package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +4 -5
  157. package/.agents/scripts/lib/presentation/manifest-builder.js +28 -34
  158. package/.agents/scripts/lib/presentation/manifest-formatter.js +3 -4
  159. package/.agents/scripts/lib/presentation/manifest-helpers.js +1 -1
  160. package/.agents/scripts/lib/presentation/manifest-procedures.js +4 -4
  161. package/.agents/scripts/lib/presentation/manifest-render-waves.js +4 -23
  162. package/.agents/scripts/lib/presentation/manifest-renderer.js +1 -1
  163. package/.agents/scripts/lib/presentation/manifest-story-views.js +2 -11
  164. package/.agents/scripts/lib/runtime-deps/preflight.js +6 -6
  165. package/.agents/scripts/lib/signals/schema.js +1 -1
  166. package/.agents/scripts/lib/spec/index.js +1 -1
  167. package/.agents/scripts/lib/spec/loader.js +2 -2
  168. package/.agents/scripts/lib/spec/state.js +7 -16
  169. package/.agents/scripts/lib/story-init/context-resolver.js +3 -3
  170. package/.agents/scripts/lib/story-init/state-transitioner.js +2 -2
  171. package/.agents/scripts/lib/story-init/task-graph-builder.js +7 -7
  172. package/.agents/scripts/lib/story-lifecycle.js +8 -8
  173. package/.agents/scripts/lib/story-plan.js +1 -1
  174. package/.agents/scripts/lib/templates/decomposer-prompts.js +59 -52
  175. package/.agents/scripts/lib/wave-runner/tick.js +1 -1
  176. package/.agents/scripts/lib/worktree/node-modules-strategy.js +5 -2
  177. package/.agents/scripts/lifecycle-emit-story-dispatch.js +1 -1
  178. package/.agents/scripts/lifecycle-emit.js +1 -1
  179. package/.agents/scripts/providers/github/board-add.js +1 -1
  180. package/.agents/scripts/providers/github/errors.js +1 -1
  181. package/.agents/scripts/providers/github/mappers.js +2 -2
  182. package/.agents/scripts/providers/github/tickets.js +4 -4
  183. package/.agents/scripts/resync-status-column.js +1 -1
  184. package/.agents/scripts/retro-run.js +2 -2
  185. package/.agents/scripts/run-lint.js +1 -1
  186. package/.agents/scripts/single-story-init.js +1 -1
  187. package/.agents/scripts/stories-wave-tick.js +5 -5
  188. package/.agents/scripts/story-close.js +1 -1
  189. package/.agents/scripts/story-init.js +13 -16
  190. package/.agents/scripts/story-phase.js +5 -5
  191. package/.agents/scripts/story-plan.js +3 -3
  192. package/.agents/scripts/sync-branch-from-base.js +1 -1
  193. package/.agents/scripts/validate-docs-freshness.js +1 -1
  194. package/.agents/scripts/wave-tick.js +1 -1
  195. package/.agents/skills/core/analyze-execution/SKILL.md +2 -2
  196. package/.agents/skills/core/epic-plan-consolidate/SKILL.md +21 -26
  197. package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +23 -56
  198. package/.agents/skills/core/epic-plan-spec-author/SKILL.md +4 -4
  199. package/.agents/skills/core/hydrate-context/SKILL.md +2 -2
  200. package/.agents/skills/core/idea-refinement/SKILL.md +4 -4
  201. package/.agents/skills/core/knowledge-transfer/SKILL.md +2 -2
  202. package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +1 -1
  203. package/.agents/skills/core/scope-triage/SKILL.md +9 -10
  204. package/.agents/skills/core/using-agent-skills/SKILL.md +1 -1
  205. package/.agents/skills/skills.index.json +7 -7
  206. package/.agents/templates/agent-protocol.md +2 -2
  207. package/.agents/workflows/agents-update.md +16 -31
  208. package/.agents/workflows/audit-architecture.md +2 -2
  209. package/.agents/workflows/audit-clean-code.md +2 -2
  210. package/.agents/workflows/audit-dependencies.md +1 -1
  211. package/.agents/workflows/audit-devops.md +1 -1
  212. package/.agents/workflows/audit-documentation.md +2 -2
  213. package/.agents/workflows/audit-lighthouse.md +1 -1
  214. package/.agents/workflows/audit-performance.md +2 -2
  215. package/.agents/workflows/audit-privacy.md +1 -1
  216. package/.agents/workflows/audit-quality.md +2 -2
  217. package/.agents/workflows/audit-security.md +2 -2
  218. package/.agents/workflows/audit-seo.md +1 -1
  219. package/.agents/workflows/audit-sre.md +1 -1
  220. package/.agents/workflows/audit-to-stories.md +10 -10
  221. package/.agents/workflows/audit-ux-ui.md +1 -1
  222. package/.agents/workflows/deliver.md +85 -0
  223. package/.agents/workflows/explain.md +3 -3
  224. package/.agents/workflows/git-merge-pr.md +1 -1
  225. package/.agents/workflows/git-pr-all.md +13 -10
  226. package/.agents/workflows/git-push.md +6 -3
  227. package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
  228. package/.agents/workflows/helpers/acceptance-self-eval.md +1 -1
  229. package/.agents/workflows/helpers/agents-sync-config.md +3 -2
  230. package/.agents/workflows/helpers/code-review.md +5 -5
  231. package/.agents/workflows/{epic-deliver.md → helpers/deliver-epic.md} +43 -43
  232. package/.agents/workflows/{story-deliver.md → helpers/deliver-stories.md} +25 -25
  233. package/.agents/workflows/helpers/diagnose.md +1 -1
  234. package/.agents/workflows/helpers/epic-audit.md +6 -6
  235. package/.agents/workflows/helpers/epic-deliver-story.md +13 -13
  236. package/.agents/workflows/helpers/epic-plan-decompose.md +23 -23
  237. package/.agents/workflows/helpers/epic-plan-spec.md +6 -6
  238. package/.agents/workflows/helpers/epic-testing.md +3 -3
  239. package/.agents/workflows/helpers/parallel-tooling.md +1 -1
  240. package/.agents/workflows/{epic-plan.md → helpers/plan-epic.md} +84 -84
  241. package/.agents/workflows/{story-plan.md → helpers/plan-story.md} +43 -43
  242. package/.agents/workflows/helpers/signals.md +1 -1
  243. package/.agents/workflows/helpers/single-story-deliver.md +11 -11
  244. package/.agents/workflows/helpers/worktree-lifecycle.md +18 -18
  245. package/.agents/workflows/plan.md +131 -0
  246. package/.agents/workflows/qa-explore.md +1 -1
  247. package/.agents/workflows/qa-run-harness.md +1 -1
  248. package/README.md +19 -39
  249. package/bin/mandrel.js +235 -16
  250. package/docs/CHANGELOG.md +1173 -0
  251. package/lib/cli/doctor.js +45 -3
  252. package/lib/cli/init.js +97 -36
  253. package/lib/cli/registry.js +41 -145
  254. package/lib/cli/sync.js +122 -23
  255. package/lib/cli/uninstall.js +42 -7
  256. package/lib/cli/update.js +524 -210
  257. package/lib/cli/version-helpers.js +59 -0
  258. package/package.json +7 -6
  259. package/.agents/scripts/lib/orchestration/reconciler.js +0 -137
  260. package/.agents/workflows/onboard.md +0 -208
  261. package/lib/cli/__tests__/migrate.test.js +0 -268
  262. package/lib/cli/__tests__/sync-local-zone.test.js +0 -247
  263. package/lib/cli/__tests__/sync.test.js +0 -372
  264. package/lib/cli/__tests__/update-major.test.js +0 -217
  265. package/lib/cli/__tests__/update.test.js +0 -696
  266. package/lib/cli/__tests__/version-check.test.js +0 -398
  267. package/lib/migrations/__tests__/index.test.js +0 -216
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: >-
3
3
  npm-era upgrade wraparound for a Mandrel consumer. Runs `mandrel update`
4
- (resolve newest non-major version → install → re-materialize `.agents/` →
4
+ (resolve newest published version → install → re-materialize `.agents/` →
5
5
  migrate → doctor → surface changelog) as the single mechanical step, then
6
6
  walks the operator through the judgment wraparound the CLI deliberately
7
7
  leaves unowned: reconcile `.agentrc.json`, install the Epic #1386
@@ -23,7 +23,7 @@ description: >-
23
23
 
24
24
  ## Overview
25
25
 
26
- `/agents-update` advances the consumer repo to the newest non-major
26
+ `/agents-update` advances the consumer repo to the newest published
27
27
  `mandrel` release, re-materializes `.agents/`, and regenerates the
28
28
  flat `.claude/commands/` tree (invoked as `/<name>`) against the new workflow
29
29
  set — then reconciles the consumer's own config, harness allowlist, and
@@ -40,11 +40,10 @@ The upgrade contract:
40
40
  - **CI honours the committed lockfile.** Consumer CI runs `npm ci` against
41
41
  the committed `package-lock.json`, so it installs exactly the version the
42
42
  lockfile pins — never "whatever the registry's newest is today."
43
- - **The major axis is gated.** `mandrel update` refuses to cross a major
44
- boundary (e.g. `1.x 2.0`) without an explicit `--major`, printing a
45
- pointer to `docs/upgrade-major.md` and exiting non-zero without touching
46
- anything. Routine minor/patch bumps within the current major are never
47
- gated.
43
+ - **Majors apply like any other bump.** Mandrel ships hard cutovers
44
+ (`.agents/rules/git-conventions.md` § Contract Cutovers), so a major
45
+ crossing is applied directly the surfaced changelog is the migration
46
+ guide.
48
47
  - **The CLI never commits.** The npm bump rewrites `package.json` /
49
48
  `package-lock.json` and leaves them **staged on disk** for operator review;
50
49
  `mandrel update` performs no `git add` / `git commit`. Staging and
@@ -55,8 +54,7 @@ The upgrade contract:
55
54
  authoritative writer of the generated flat command tree
56
55
  (`.claude/commands/`) is
57
56
  [`sync-claude-commands.js`](../scripts/sync-claude-commands.js), which
58
- prepends the `<!-- AUTO-GENERATED -->` header that
59
- `/agents-bootstrap-project` parity-checks. Nothing else copies workflow
57
+ prepends the `<!-- AUTO-GENERATED -->` header. Nothing else copies workflow
60
58
  files.
61
59
 
62
60
  > **Persona**: `devops-engineer` · **Skills**:
@@ -71,7 +69,7 @@ mandrel update --dry-run
71
69
  mandrel update
72
70
  ```
73
71
 
74
- `mandrel update --dry-run` resolves the newest non-major version and prints
72
+ `mandrel update --dry-run` resolves the newest published version and prints
75
73
  the ordered step plan (`npm-update → runSync → runMigrations → doctor →
76
74
  surface changelog`) without invoking any effectful seam — no dependency bump,
77
75
  no sync, no migrations, no doctor, nothing written. Read the planned target
@@ -82,23 +80,19 @@ version before applying.
82
80
  1. **Resolve target** — the newest published `mandrel` version (via
83
81
  the daily freshness cache in `temp/version-check.json`) and the currently
84
82
  installed version.
85
- 2. **Major gate** — if the newest version crosses a major boundary, the run
86
- declines, prints the `docs/upgrade-major.md` pointer, and exits non-zero
87
- without touching anything. Re-run with `--major` only after reviewing that
88
- runbook.
89
- 3. **No-op short-circuit** — already on the newest version ⇒ prints
83
+ 2. **No-op short-circuit** — already on the newest version prints
90
84
  `Already up to date` and exits 0.
91
- 4. **Install** — bumps the dependency (default
85
+ 3. **Install** — bumps the dependency (default
92
86
  `npm install mandrel@<target>`; pass
93
87
  `--install-cmd "<pm> <args>"` for a pnpm/yarn workspace). The lockfile
94
88
  change is left **staged** for review; the CLI never commits.
95
- 5. **runSync** — re-materializes `.agents/` from the freshly installed
89
+ 4. **runSync** — re-materializes `.agents/` from the freshly installed
96
90
  payload, which also regenerates the flat `.claude/commands/` tree via
97
91
  `sync-claude-commands.js`.
98
- 6. **runMigrations** — applies any version-keyed migration steps for the
92
+ 5. **runMigrations** — applies any version-keyed migration steps for the
99
93
  crossed range.
100
- 7. **doctor** — runs the check registry to verify the resulting install.
101
- 8. **Surface changelog** — prints the `docs/CHANGELOG.md` section(s) covering
94
+ 6. **doctor** — runs the check registry to verify the resulting install.
95
+ 7. **Surface changelog** — prints the `docs/CHANGELOG.md` section(s) covering
102
96
  the applied range `(current, target]`. Capture this output — Step 4
103
97
  reconciles the consumer's own instructions against it.
104
98
 
@@ -222,7 +216,7 @@ The four `quality-bootstrap` outcomes:
222
216
 
223
217
  The `baselines-layout-migration` step relocates per-Epic snapshots
224
218
  into the `temp/epic/<id>/baselines/` namespace (Story #1467: ephemeral
225
- scratch state, not committed, reaped on `/epic-deliver` merge with the
219
+ scratch state, not committed, reaped on `/deliver` merge with the
226
220
  rest of the per-Epic temp tree):
227
221
 
228
222
  - Loose `baselines/epic-<id>-{maintainability,crap}.json` files →
@@ -246,7 +240,7 @@ guarantee `agents-update`'s idempotence contract requires.
246
240
  A framework bump frequently introduces new helper scripts and `node
247
241
  .agents/scripts/<name>.js` invocations the consumer's
248
242
  `.claude/settings.json` allowlist has never seen. Left alone, the next
249
- `/story-deliver` or `/epic-deliver` run trips a fresh wave of
243
+ `/deliver` or `/deliver` run trips a fresh wave of
250
244
  permission prompts that operators answer by hand — and those hand-tuned
251
245
  allowlists drift across projects.
252
246
 
@@ -371,12 +365,6 @@ no-op.
371
365
 
372
366
  ## Troubleshooting
373
367
 
374
- - **`a newer MAJOR version (X.0.0) is available`** — `mandrel update`
375
- hit the major gate and exited non-zero without touching anything. A
376
- major crossing is a breaking upgrade. Read `docs/upgrade-major.md`,
377
- then re-run `mandrel update --major` only after you have absorbed the
378
- migration steps that runbook describes.
379
-
380
368
  - **`doctor reported failures: …`** — the dependency bumped and `.agents/`
381
369
  re-materialized, but a doctor check failed (and the run exited
382
370
  non-zero). Run `mandrel doctor` for the per-check remedies. The lockfile
@@ -402,9 +390,6 @@ no-op.
402
390
  - **Idempotent.** A second `mandrel update` immediately after a successful
403
391
  run resolves the same newest version, hits the no-op short-circuit, and
404
392
  prints `Already up to date` — exit 0, nothing bumped.
405
- - **Non-major only by default.** The major axis is gated behind an explicit
406
- `--major`; routine minor/patch bumps within the current major apply
407
- without a gate.
408
393
  - **No auto-commit.** `mandrel update` leaves the lockfile bump staged on
409
394
  disk and never runs git. The operator reviews the surfaced changelog and
410
395
  writes the commit message (Step 5) — the CLI does not know whether the
@@ -19,7 +19,7 @@ existing external APIs or business logic.
19
19
  ## Execution strategy (dual-path)
20
20
 
21
21
  This lens runs along one of two execution paths. Both emit the **identical**
22
- report contract (Step 3); downstream consumers (`/epic-deliver` Phase 4
22
+ report contract (Step 3); downstream consumers (`/deliver` Phase 4
23
23
  epic-audit, `audit-to-stories`) are agnostic to which path produced it.
24
24
 
25
25
  - **Orchestrated (dynamic-workflow) path.** When Claude Code's
@@ -72,7 +72,7 @@ degrade to the sequential path.
72
72
 
73
73
  ## Scope (Epic mode)
74
74
 
75
- When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
75
+ When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
76
76
  following block is populated with the Epic's change-set file list.
77
77
  Otherwise — for any manual `/audit-<dimension>` invocation — the block
78
78
  renders the literal substitution token and you MUST treat it as **no
@@ -17,7 +17,7 @@ velocity.
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
@@ -39,7 +39,7 @@ before this section existed.
39
39
  ## Execution strategy (dual-path)
40
40
 
41
41
  This lens runs along one of two execution paths. Both emit the **identical**
42
- report contract (Step 3); downstream consumers (`/epic-deliver` Phase 4
42
+ report contract (Step 3); downstream consumers (`/deliver` Phase 4
43
43
  epic-audit, `audit-to-stories`) are agnostic to which path produced it.
44
44
 
45
45
  - **Orchestrated (dynamic-workflow) path.** When Claude Code's
@@ -16,7 +16,7 @@ system stability.
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
@@ -17,7 +17,7 @@ without making any immediate changes.
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
@@ -49,7 +49,7 @@ semantic review beyond Step 1's deterministic checks.
49
49
 
50
50
  ## Scope (Epic mode)
51
51
 
52
- When this lens is invoked from `/epic-deliver` Phase 4 (epic-audit), the
52
+ When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
53
53
  following block is populated with the Epic's change-set file list.
54
54
  Otherwise — for any manual `/audit-<dimension>` invocation — the block
55
55
  renders the literal substitution token and you MUST treat it as **no
@@ -71,7 +71,7 @@ before this section existed.
71
71
  ## Execution strategy (dual-path)
72
72
 
73
73
  This lens runs along one of two execution paths. Both emit the **identical**
74
- report contract (Step 3); downstream consumers (`/epic-deliver` Phase 4
74
+ report contract (Step 3); downstream consumers (`/deliver` Phase 4
75
75
  epic-audit, `audit-to-stories`) are agnostic to which path produced it.
76
76
 
77
77
  - **Orchestrated (dynamic-workflow) path.** When Claude Code's
@@ -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
 
@@ -68,8 +68,9 @@ node .agents/scripts/sync-agentrc.js
68
68
  The script:
69
69
 
70
70
  1. Reads `.agentrc.json` from the working directory (`--cwd <path>` to
71
- override). When the file is missing, prints a pointer to
72
- `/agents-bootstrap-project` and exits 1.
71
+ override). When the file is missing, prints an error asking the
72
+ operator to run `mandrel init` (new project) or
73
+ `node .agents/scripts/bootstrap.js` (existing project) and exits 1.
73
74
  2. Validates the parsed config against the framework AJV schema
74
75
  (`getAgentrcValidator()`). On any failure, prints a single-line error
75
76
  list and exits 1 — the operator must fix the typo / missing required