mandrel 1.59.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 (240) hide show
  1. package/.agents/README.md +14 -14
  2. package/.agents/docs/SDLC.md +129 -134
  3. package/.agents/docs/configuration.md +16 -16
  4. package/.agents/docs/workflows.md +6 -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/dispatch-manifest.json +4 -4
  14. package/.agents/schemas/epic-spec.schema.json +15 -45
  15. package/.agents/schemas/lifecycle/README.md +1 -1
  16. package/.agents/schemas/lifecycle/story.dispatch.end.schema.json +1 -1
  17. package/.agents/schemas/lifecycle/story.dispatch.start.schema.json +1 -1
  18. package/.agents/schemas/lifecycle/story.heartbeat.schema.json +1 -1
  19. package/.agents/schemas/validation-evidence.schema.json +1 -1
  20. package/.agents/scripts/README.md +1 -1
  21. package/.agents/scripts/acceptance-eval.js +1 -1
  22. package/.agents/scripts/acceptance-spec-reconciler.js +2 -2
  23. package/.agents/scripts/analyze-execution.js +2 -2
  24. package/.agents/scripts/audit-to-stories.js +1 -1
  25. package/.agents/scripts/check-doc-links.js +2 -3
  26. package/.agents/scripts/diagnose-friction.js +1 -1
  27. package/.agents/scripts/dispatcher.js +2 -2
  28. package/.agents/scripts/drain-pending-cleanup.js +1 -1
  29. package/.agents/scripts/epic-audit-prepare.js +3 -3
  30. package/.agents/scripts/epic-deliver-note-intervention.js +2 -2
  31. package/.agents/scripts/epic-deliver-preflight.js +6 -6
  32. package/.agents/scripts/epic-deliver-prepare.js +1 -1
  33. package/.agents/scripts/epic-execute-record-wave.js +4 -4
  34. package/.agents/scripts/epic-plan-healthcheck.js +6 -10
  35. package/.agents/scripts/epic-plan-spec-validate.js +1 -1
  36. package/.agents/scripts/epic-reconcile.js +11 -29
  37. package/.agents/scripts/evidence-gate.js +1 -1
  38. package/.agents/scripts/generate-workflows-doc.js +1 -1
  39. package/.agents/scripts/hierarchy-gate.js +7 -11
  40. package/.agents/scripts/lib/ITicketingProvider.js +1 -1
  41. package/.agents/scripts/lib/audit-suite/selector.js +1 -1
  42. package/.agents/scripts/lib/audit-to-stories/seed-epic-from-findings.js +2 -2
  43. package/.agents/scripts/lib/baseline-snapshot.js +7 -7
  44. package/.agents/scripts/lib/bdd-runner-detect.js +1 -1
  45. package/.agents/scripts/lib/bdd-scenario-scanner.js +3 -3
  46. package/.agents/scripts/lib/bootstrap/baselines-layout-migration.js +1 -1
  47. package/.agents/scripts/lib/bootstrap/branch-protection.js +1 -1
  48. package/.agents/scripts/lib/bootstrap/ci-workflow-template.js +1 -1
  49. package/.agents/scripts/lib/bootstrap/commit-push.js +2 -2
  50. package/.agents/scripts/lib/codebase-snapshot.js +1 -1
  51. package/.agents/scripts/lib/config/explain.js +1 -1
  52. package/.agents/scripts/lib/config/runners.js +2 -2
  53. package/.agents/scripts/lib/config/runtime.js +1 -1
  54. package/.agents/scripts/lib/config/temp-paths.js +2 -2
  55. package/.agents/scripts/lib/config-settings-schema-delivery.js +2 -2
  56. package/.agents/scripts/lib/config-settings-schema-quality.js +1 -1
  57. package/.agents/scripts/lib/config-settings-schema.js +3 -3
  58. package/.agents/scripts/lib/duplicate-search.js +1 -1
  59. package/.agents/scripts/lib/dynamic-workflow/capability.js +1 -1
  60. package/.agents/scripts/lib/epic-plan-clarity.js +1 -1
  61. package/.agents/scripts/lib/epic-plan-ideation.js +1 -1
  62. package/.agents/scripts/lib/feedback-loop/memory-freshness.js +1 -1
  63. package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +1 -1
  64. package/.agents/scripts/lib/findings/classify-finding.js +1 -1
  65. package/.agents/scripts/lib/findings/promote-finding.js +10 -10
  66. package/.agents/scripts/lib/label-constants.js +3 -4
  67. package/.agents/scripts/lib/label-taxonomy.js +3 -8
  68. package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +1 -1
  69. package/.agents/scripts/lib/orchestration/code-review.js +5 -5
  70. package/.agents/scripts/lib/orchestration/context-hydration-engine.js +8 -9
  71. package/.agents/scripts/lib/orchestration/dependency-analyzer.js +3 -3
  72. package/.agents/scripts/lib/orchestration/detectors-phase.js +2 -2
  73. package/.agents/scripts/lib/orchestration/dispatch-engine.js +30 -38
  74. package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +9 -25
  75. package/.agents/scripts/lib/orchestration/epic-cleanup.js +1 -1
  76. package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +8 -8
  77. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +1 -1
  78. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +7 -21
  79. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +3 -3
  80. package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +26 -13
  81. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +1 -1
  82. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/prompts.js +1 -1
  83. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +2 -2
  84. package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +1 -1
  85. package/.agents/scripts/lib/orchestration/epic-run-state-store.js +3 -3
  86. package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +4 -4
  87. package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +3 -3
  88. package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +6 -21
  89. package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +7 -7
  90. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +1 -1
  91. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +2 -2
  92. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +4 -4
  93. package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +4 -4
  94. package/.agents/scripts/lib/orchestration/epic-runner/story-run-progress-writer.js +8 -8
  95. package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +4 -4
  96. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +7 -15
  97. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +72 -41
  98. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +2 -4
  99. package/.agents/scripts/lib/orchestration/file-assumptions.js +2 -2
  100. package/.agents/scripts/lib/orchestration/finalize/close-planning-tickets.js +1 -1
  101. package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +2 -2
  102. package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +1 -1
  103. package/.agents/scripts/lib/orchestration/lease-guard-shared.js +3 -3
  104. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +1 -1
  105. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +1 -1
  106. package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +1 -1
  107. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +1 -1
  108. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +1 -1
  109. package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +1 -1
  110. package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +1 -1
  111. package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +1 -1
  112. package/.agents/scripts/lib/orchestration/lifecycle/listeners/merge-watcher.js +1 -1
  113. package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +1 -1
  114. package/.agents/scripts/lib/orchestration/lifecycle/listeners/watcher.js +1 -1
  115. package/.agents/scripts/lib/orchestration/manifest-builder.js +5 -5
  116. package/.agents/scripts/lib/orchestration/parked-follow-ons.js +2 -2
  117. package/.agents/scripts/lib/orchestration/plan-runner/plan-router.js +5 -5
  118. package/.agents/scripts/lib/orchestration/post-merge/phases/ticket-closure.js +3 -3
  119. package/.agents/scripts/lib/orchestration/preflight-cache.js +1 -1
  120. package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +1 -1
  121. package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +1 -1
  122. package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +2 -2
  123. package/.agents/scripts/lib/orchestration/retro-runner.js +3 -3
  124. package/.agents/scripts/lib/orchestration/review-depth.js +1 -1
  125. package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +1 -1
  126. package/.agents/scripts/lib/orchestration/spec-freshness.js +1 -1
  127. package/.agents/scripts/lib/orchestration/spec-renderer.js +36 -73
  128. package/.agents/scripts/lib/orchestration/spec-section-validator.js +1 -1
  129. package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +1 -1
  130. package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +2 -2
  131. package/.agents/scripts/lib/orchestration/task-body-validator.js +6 -6
  132. package/.agents/scripts/lib/orchestration/ticket-lease.js +1 -1
  133. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +2 -2
  134. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +1 -10
  135. package/.agents/scripts/lib/orchestration/ticket-validator.js +25 -70
  136. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +5 -12
  137. package/.agents/scripts/lib/orchestration/ticketing/reads.js +8 -8
  138. package/.agents/scripts/lib/orchestration/ticketing/state.js +3 -3
  139. package/.agents/scripts/lib/orchestration/wave-record-notifications.js +2 -2
  140. package/.agents/scripts/lib/orchestration/wave-record-projection.js +1 -1
  141. package/.agents/scripts/lib/plan-phase-cleanup.js +1 -1
  142. package/.agents/scripts/lib/preflight-runner.js +1 -1
  143. package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +4 -5
  144. package/.agents/scripts/lib/presentation/manifest-builder.js +28 -34
  145. package/.agents/scripts/lib/presentation/manifest-formatter.js +3 -4
  146. package/.agents/scripts/lib/presentation/manifest-helpers.js +1 -1
  147. package/.agents/scripts/lib/presentation/manifest-procedures.js +4 -4
  148. package/.agents/scripts/lib/presentation/manifest-render-waves.js +4 -23
  149. package/.agents/scripts/lib/presentation/manifest-renderer.js +1 -1
  150. package/.agents/scripts/lib/presentation/manifest-story-views.js +2 -11
  151. package/.agents/scripts/lib/signals/schema.js +1 -1
  152. package/.agents/scripts/lib/spec/index.js +1 -1
  153. package/.agents/scripts/lib/spec/loader.js +2 -2
  154. package/.agents/scripts/lib/spec/state.js +7 -16
  155. package/.agents/scripts/lib/story-init/context-resolver.js +3 -3
  156. package/.agents/scripts/lib/story-init/state-transitioner.js +2 -2
  157. package/.agents/scripts/lib/story-init/task-graph-builder.js +7 -7
  158. package/.agents/scripts/lib/story-lifecycle.js +8 -8
  159. package/.agents/scripts/lib/story-plan.js +1 -1
  160. package/.agents/scripts/lib/templates/decomposer-prompts.js +59 -52
  161. package/.agents/scripts/lib/wave-runner/tick.js +1 -1
  162. package/.agents/scripts/lifecycle-emit-story-dispatch.js +1 -1
  163. package/.agents/scripts/lifecycle-emit.js +1 -1
  164. package/.agents/scripts/providers/github/board-add.js +1 -1
  165. package/.agents/scripts/providers/github/errors.js +1 -1
  166. package/.agents/scripts/providers/github/mappers.js +2 -2
  167. package/.agents/scripts/providers/github/tickets.js +4 -4
  168. package/.agents/scripts/resync-status-column.js +1 -1
  169. package/.agents/scripts/retro-run.js +2 -2
  170. package/.agents/scripts/run-lint.js +1 -1
  171. package/.agents/scripts/single-story-init.js +1 -1
  172. package/.agents/scripts/stories-wave-tick.js +5 -5
  173. package/.agents/scripts/story-close.js +1 -1
  174. package/.agents/scripts/story-init.js +13 -16
  175. package/.agents/scripts/story-phase.js +5 -5
  176. package/.agents/scripts/story-plan.js +3 -3
  177. package/.agents/scripts/sync-branch-from-base.js +1 -1
  178. package/.agents/scripts/validate-docs-freshness.js +1 -1
  179. package/.agents/scripts/wave-tick.js +1 -1
  180. package/.agents/skills/core/analyze-execution/SKILL.md +2 -2
  181. package/.agents/skills/core/epic-plan-consolidate/SKILL.md +21 -26
  182. package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +23 -56
  183. package/.agents/skills/core/epic-plan-spec-author/SKILL.md +4 -4
  184. package/.agents/skills/core/hydrate-context/SKILL.md +2 -2
  185. package/.agents/skills/core/idea-refinement/SKILL.md +4 -4
  186. package/.agents/skills/core/knowledge-transfer/SKILL.md +2 -2
  187. package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +1 -1
  188. package/.agents/skills/core/scope-triage/SKILL.md +9 -10
  189. package/.agents/skills/core/using-agent-skills/SKILL.md +1 -1
  190. package/.agents/skills/skills.index.json +7 -7
  191. package/.agents/templates/agent-protocol.md +2 -2
  192. package/.agents/workflows/agents-update.md +2 -2
  193. package/.agents/workflows/audit-architecture.md +2 -2
  194. package/.agents/workflows/audit-clean-code.md +2 -2
  195. package/.agents/workflows/audit-dependencies.md +1 -1
  196. package/.agents/workflows/audit-devops.md +1 -1
  197. package/.agents/workflows/audit-documentation.md +2 -2
  198. package/.agents/workflows/audit-lighthouse.md +1 -1
  199. package/.agents/workflows/audit-performance.md +2 -2
  200. package/.agents/workflows/audit-privacy.md +1 -1
  201. package/.agents/workflows/audit-quality.md +2 -2
  202. package/.agents/workflows/audit-security.md +2 -2
  203. package/.agents/workflows/audit-seo.md +1 -1
  204. package/.agents/workflows/audit-sre.md +1 -1
  205. package/.agents/workflows/audit-to-stories.md +10 -10
  206. package/.agents/workflows/audit-ux-ui.md +1 -1
  207. package/.agents/workflows/deliver.md +85 -0
  208. package/.agents/workflows/explain.md +3 -3
  209. package/.agents/workflows/git-merge-pr.md +1 -1
  210. package/.agents/workflows/git-pr-all.md +13 -10
  211. package/.agents/workflows/git-push.md +6 -3
  212. package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
  213. package/.agents/workflows/helpers/acceptance-self-eval.md +1 -1
  214. package/.agents/workflows/helpers/code-review.md +5 -5
  215. package/.agents/workflows/{epic-deliver.md → helpers/deliver-epic.md} +43 -43
  216. package/.agents/workflows/{story-deliver.md → helpers/deliver-stories.md} +25 -25
  217. package/.agents/workflows/helpers/diagnose.md +1 -1
  218. package/.agents/workflows/helpers/epic-audit.md +6 -6
  219. package/.agents/workflows/helpers/epic-deliver-story.md +13 -13
  220. package/.agents/workflows/helpers/epic-plan-decompose.md +23 -23
  221. package/.agents/workflows/helpers/epic-plan-spec.md +6 -6
  222. package/.agents/workflows/helpers/epic-testing.md +3 -3
  223. package/.agents/workflows/helpers/parallel-tooling.md +1 -1
  224. package/.agents/workflows/{epic-plan.md → helpers/plan-epic.md} +84 -84
  225. package/.agents/workflows/{story-plan.md → helpers/plan-story.md} +43 -43
  226. package/.agents/workflows/helpers/signals.md +1 -1
  227. package/.agents/workflows/helpers/single-story-deliver.md +11 -11
  228. package/.agents/workflows/helpers/worktree-lifecycle.md +18 -18
  229. package/.agents/workflows/onboard.md +17 -17
  230. package/.agents/workflows/plan.md +89 -0
  231. package/.agents/workflows/qa-explore.md +1 -1
  232. package/.agents/workflows/qa-run-harness.md +1 -1
  233. package/README.md +4 -12
  234. package/docs/CHANGELOG.md +1149 -0
  235. package/lib/cli/__tests__/update-changelog-surface.test.js +357 -0
  236. package/lib/cli/__tests__/update-reexec.test.js +513 -0
  237. package/lib/cli/init.js +31 -29
  238. package/lib/cli/update.js +413 -52
  239. package/package.json +2 -1
  240. package/.agents/scripts/lib/orchestration/reconciler.js +0 -137
@@ -0,0 +1,1149 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [1.60.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.59.0...mandrel-v1.60.0) (2026-06-11)
6
+
7
+
8
+ ### ⚠ BREAKING CHANGES
9
+
10
+ * collapse ticket hierarchy to 2-tier (Epic → Story) and commands to /plan and /deliver (refs #4041) ([#4043](https://github.com/dsj1984/mandrel/issues/4043))
11
+
12
+ ### Added
13
+
14
+ * collapse ticket hierarchy to 2-tier (Epic → Story) and commands to /plan and /deliver (refs [#4041](https://github.com/dsj1984/mandrel/issues/4041)) ([#4043](https://github.com/dsj1984/mandrel/issues/4043)) ([80adbfd](https://github.com/dsj1984/mandrel/commit/80adbfd93f626f4dc59528dfcf56fee859de6855))
15
+
16
+
17
+ ### Fixed
18
+
19
+ * **cli:** re-exec post-install phases from newly-installed bin (refs [#4034](https://github.com/dsj1984/mandrel/issues/4034)) ([#4037](https://github.com/dsj1984/mandrel/issues/4037)) ([838d16e](https://github.com/dsj1984/mandrel/commit/838d16eeafb0ac612203a78d629c67e5a866a1c7))
20
+ * **cli:** ship docs/CHANGELOG.md in tarball + GitHub fetch fallback (refs [#4035](https://github.com/dsj1984/mandrel/issues/4035)) ([#4036](https://github.com/dsj1984/mandrel/issues/4036)) ([9b65a76](https://github.com/dsj1984/mandrel/commit/9b65a765ffccbe44b25706ad3030c0036f375e44))
21
+
22
+ ## [1.59.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.58.0...mandrel-v1.59.0) (2026-06-11)
23
+
24
+
25
+ ### Added
26
+
27
+ * **cli:** add `mandrel init` one-command cold start (refs [#3975](https://github.com/dsj1984/mandrel/issues/3975)) ([#3976](https://github.com/dsj1984/mandrel/issues/3976)) ([158ebc7](https://github.com/dsj1984/mandrel/commit/158ebc75eed659e31037950dcfbedf7900bd77a7))
28
+ * **quality:** add check:arch import-cycle ratchet gate to the lint surface (refs [#3991](https://github.com/dsj1984/mandrel/issues/3991)) ([#4010](https://github.com/dsj1984/mandrel/issues/4010)) ([dec347a](https://github.com/dsj1984/mandrel/commit/dec347aa0a6e9d74b2eeef9ee1b9cfe5df081abb))
29
+ * **workflows:** add /audit-documentation lens for doc staleness, drift, and completeness (refs [#4024](https://github.com/dsj1984/mandrel/issues/4024)) ([#4029](https://github.com/dsj1984/mandrel/issues/4029)) ([b2087d1](https://github.com/dsj1984/mandrel/commit/b2087d1982b9c60148a52ae6ae972f3b5580429b))
30
+
31
+
32
+ ### Fixed
33
+
34
+ * **cli:** resolve `mandrel init` sync step to the local bin (refs [#4016](https://github.com/dsj1984/mandrel/issues/4016)) ([#4022](https://github.com/dsj1984/mandrel/issues/4022)) ([f97e207](https://github.com/dsj1984/mandrel/commit/f97e20707f54bbe56089f573bbe66ae60c710f70))
35
+ * **planning:** four state-integrity gaps — self-reported eval round, Epic-only preflight cache key, duplicated Planning Artifacts, spec-rerun demotion + undecidable --steal ([#4019](https://github.com/dsj1984/mandrel/issues/4019)) ([#4030](https://github.com/dsj1984/mandrel/issues/4030)) ([689c161](https://github.com/dsj1984/mandrel/commit/689c161d769ea27667d0de0fbcf46035c5909702))
36
+ * remove the `create-mandrel` launcher package (superseded by `mandrel init`) ([#4008](https://github.com/dsj1984/mandrel/issues/4008)) ([#4027](https://github.com/dsj1984/mandrel/issues/4027)) ([e2d6dcf](https://github.com/dsj1984/mandrel/commit/e2d6dcf21168ba5877ea2220a7513d0a021f424e))
37
+ * **worktree:** probe reused worktrees for completed installs and shield self/ancestors from force-drain taskkill (refs [#4018](https://github.com/dsj1984/mandrel/issues/4018)) ([#4025](https://github.com/dsj1984/mandrel/issues/4025)) ([d015375](https://github.com/dsj1984/mandrel/commit/d015375d52d31a181a1c4e0fb89540d6498aab63))
38
+
39
+
40
+ ### Performance
41
+
42
+ * `analyze-execution` retro reader fetches Story comments N+1 and serially ([#3990](https://github.com/dsj1984/mandrel/issues/3990)) ([#4009](https://github.com/dsj1984/mandrel/issues/4009)) ([6962d22](https://github.com/dsj1984/mandrel/commit/6962d22d541a58609125441c01f28722ba098ff8))
43
+ * `getTickets(epicId)` paginates the entire repository's issues and hits a hard cap cliff at ~5 000 issues ([#3988](https://github.com/dsj1984/mandrel/issues/3988)) ([#4005](https://github.com/dsj1984/mandrel/issues/4005)) ([fd57005](https://github.com/dsj1984/mandrel/commit/fd57005d5b75ad12265b9efbab25b1f137e833fc))
44
+ * finish the stalled decomposition of lib/close-validation.js ([#3994](https://github.com/dsj1984/mandrel/issues/3994)) ([#4014](https://github.com/dsj1984/mandrel/issues/4014)) ([9e712dd](https://github.com/dsj1984/mandrel/commit/9e712dd4480e0c59c914a7277a391c5ff86239af))
45
+ * **scripts:** platform-aware test chunking and parallel hierarchy-gate BFS (refs [#3989](https://github.com/dsj1984/mandrel/issues/3989)) ([#4013](https://github.com/dsj1984/mandrel/issues/4013)) ([f008da3](https://github.com/dsj1984/mandrel/commit/f008da31b50e07ad773fd8a10067fa31c8b2d502))
46
+ * **test:** make worktree-reap retry timing injectable to kill real sleeps (refs [#3987](https://github.com/dsj1984/mandrel/issues/3987)) ([#4001](https://github.com/dsj1984/mandrel/issues/4001)) ([18390e8](https://github.com/dsj1984/mandrel/commit/18390e8e6e7d3593960984995bb63550f508375a))
47
+
48
+
49
+ ### Changed
50
+
51
+ * `progress-reporter.js` facade is a live shim with a mostly-dead surface ([#3985](https://github.com/dsj1984/mandrel/issues/3985)) ([#4002](https://github.com/dsj1984/mandrel/issues/4002)) ([bb7fd6d](https://github.com/dsj1984/mandrel/commit/bb7fd6d6c6ba095c7e9c06dc9408fe43d1dc1688))
52
+ * **arch:** break the four import cycles under .agents/scripts; ratchet allowlist 4 → 0 (refs [#3995](https://github.com/dsj1984/mandrel/issues/3995)) ([#4015](https://github.com/dsj1984/mandrel/issues/4015)) ([e29d9d1](https://github.com/dsj1984/mandrel/commit/e29d9d128beb1a4d43d1b63a8e1ddfc9e1f30a2c))
53
+ * architecture quick wins: _internal promotion, SERIAL_THRESHOLD hoist, PROJECT_ROOT leaf ([#3993](https://github.com/dsj1984/mandrel/issues/3993)) ([#4012](https://github.com/dsj1984/mandrel/issues/4012)) ([728b9b2](https://github.com/dsj1984/mandrel/commit/728b9b208cdf2b48ea0ac50e3997d6ec2720bb9b))
54
+ * **orchestration:** extract shared lease-acquisition kernel from the three lease guards (refs [#3992](https://github.com/dsj1984/mandrel/issues/3992)) ([#4011](https://github.com/dsj1984/mandrel/issues/4011)) ([f93509d](https://github.com/dsj1984/mandrel/commit/f93509deac44bf64208fd889d1517419dc3f0096))
55
+ * **orchestration:** throw instead of logger.fatal in story-close-recovery; hard-cutover runCodeReview to parameterized scope envelope (refs [#3980](https://github.com/dsj1984/mandrel/issues/3980)) ([#4000](https://github.com/dsj1984/mandrel/issues/4000)) ([ba68d09](https://github.com/dsj1984/mandrel/commit/ba68d09f59fac1b10b5ccc4b8652e9311066bc33))
56
+ * **progress-signals:** extract shared component-drift walk from crap/maintainability detectors (refs [#3984](https://github.com/dsj1984/mandrel/issues/3984)) ([#3997](https://github.com/dsj1984/mandrel/issues/3997)) ([04b177c](https://github.com/dsj1984/mandrel/commit/04b177c2aea9f7e5f511ff86860a88880cbf3418))
57
+ * **quality:** dedupe git retry loop and make coverage freshness content-aware (refs [#3982](https://github.com/dsj1984/mandrel/issues/3982)) ([#3998](https://github.com/dsj1984/mandrel/issues/3998)) ([91c0d07](https://github.com/dsj1984/mandrel/commit/91c0d07cf9e1f03401ff257cef59d70d739a6449))
58
+ * remediate dead code / dead code (stale quality metadata) / dry / solid findings in baselines/duplication.json ([#3983](https://github.com/dsj1984/mandrel/issues/3983)) ([#4004](https://github.com/dsj1984/mandrel/issues/4004)) ([581204e](https://github.com/dsj1984/mandrel/commit/581204ec624b9a5c73d7753b0d556146246ce0e0))
59
+ * **review-providers:** extract shared parseProviderFindings parser (refs [#3981](https://github.com/dsj1984/mandrel/issues/3981)) ([#3996](https://github.com/dsj1984/mandrel/issues/3996)) ([1f2a362](https://github.com/dsj1984/mandrel/commit/1f2a362c882aec63cf3ae7927dc6517111c5a9dd))
60
+ * **story-close:** collapse the story-close redundancy cluster — one refresh funnel, one autofix module, delete cascade grouping, inline prepare ([#4017](https://github.com/dsj1984/mandrel/issues/4017)) ([#4031](https://github.com/dsj1984/mandrel/issues/4031)) ([bc32839](https://github.com/dsj1984/mandrel/commit/bc32839977a0dc8fb8d53665bbc4eebab661cc55))
61
+ * **story-close:** finish delivery-key rename, drop grep-evading legacy pipeline key (refs [#3986](https://github.com/dsj1984/mandrel/issues/3986)) ([#4003](https://github.com/dsj1984/mandrel/issues/4003)) ([dfdab6c](https://github.com/dsj1984/mandrel/commit/dfdab6c568568a392c5fe23e729b5e15c94f29d1))
62
+ * **waves:** delete dead tick spec-path; extract shared story-adjacency builder (refs [#4020](https://github.com/dsj1984/mandrel/issues/4020)) ([#4026](https://github.com/dsj1984/mandrel/issues/4026)) ([963a777](https://github.com/dsj1984/mandrel/commit/963a7774e5e9f8c333b5de342edce5f7105b6bcc))
63
+
64
+ ## [1.58.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.57.0...mandrel-v1.58.0) (2026-06-10)
65
+
66
+
67
+ ### Fixed
68
+
69
+ * **delivery:** normalize PR titles to Conventional Commits so squash-merges trigger release-please ([#3969](https://github.com/dsj1984/mandrel/issues/3969)) ([#3971](https://github.com/dsj1984/mandrel/issues/3971)) ([b427522](https://github.com/dsj1984/mandrel/commit/b4275221092091d96ea3b2ed897970477b44ca72))
70
+
71
+ ## [1.57.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.56.0...mandrel-v1.57.0) (2026-06-10)
72
+
73
+
74
+ ### Added
75
+
76
+ * **file-assumptions:** validate against the simulated post-predecessor tree (refs [#3960](https://github.com/dsj1984/mandrel/issues/3960)) ([#3968](https://github.com/dsj1984/mandrel/issues/3968)) ([26bf1b3](https://github.com/dsj1984/mandrel/commit/26bf1b3bd80cb8b0ac38bb27d4a0ff119c860322))
77
+
78
+
79
+ ### Fixed
80
+
81
+ * **codebase-snapshot:** proportional skinny-tier cap so consumer source survives truncation (refs [#3959](https://github.com/dsj1984/mandrel/issues/3959)) ([#3964](https://github.com/dsj1984/mandrel/issues/3964)) ([6dbec63](https://github.com/dsj1984/mandrel/commit/6dbec6311efe6a50a7c61c43f5bdf28039b9f3bf))
82
+ * **conflicts:** extract object-form changes paths in cross-Story detector (refs [#3957](https://github.com/dsj1984/mandrel/issues/3957)) ([#3966](https://github.com/dsj1984/mandrel/issues/3966)) ([052bc57](https://github.com/dsj1984/mandrel/commit/052bc576adccfa4b9bce2a62e9ab1f8806a8f492))
83
+ * **story-deliver:** resolve concurrencyCap deterministically (refs [#3961](https://github.com/dsj1984/mandrel/issues/3961)) ([#3963](https://github.com/dsj1984/mandrel/issues/3963)) ([b14f254](https://github.com/dsj1984/mandrel/commit/b14f25483d342a8c1c02215ed420b688f733562e))
84
+
85
+ ## [1.56.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.55.0...mandrel-v1.56.0) (2026-06-10)
86
+
87
+
88
+ ### Fixed
89
+
90
+ * **release:** gate root npm publish on un-prefixed release_created output ([#3952](https://github.com/dsj1984/mandrel/issues/3952)) ([18dfc0f](https://github.com/dsj1984/mandrel/commit/18dfc0fdd1068f7c3f0fa68a46d90f45438690ca))
91
+
92
+ ## [1.55.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.54.0...mandrel-v1.55.0) (2026-06-10)
93
+
94
+
95
+ ### Added
96
+
97
+ * **bootstrap:** harden idempotency, normalize @-handle, minimal .agentrc write (refs [#3700](https://github.com/dsj1984/mandrel/issues/3700)) ([#3884](https://github.com/dsj1984/mandrel/issues/3884)) ([7e2818e](https://github.com/dsj1984/mandrel/commit/7e2818e95bc626ef906963e5784a61cc8607e94c))
98
+ * **bootstrap:** offer commit + push of the wiring at end of run (refs [#3899](https://github.com/dsj1984/mandrel/issues/3899)) ([#3923](https://github.com/dsj1984/mandrel/issues/3923)) ([5a5916f](https://github.com/dsj1984/mandrel/commit/5a5916ff964853105d6959af9c917fd5ee198cf4))
99
+ * **close-validation:** propagate epic baseRef to the baselines gate (refs [#3890](https://github.com/dsj1984/mandrel/issues/3890)) ([#3916](https://github.com/dsj1984/mandrel/issues/3916)) ([0b914ae](https://github.com/dsj1984/mandrel/commit/0b914aef9eaf264702095e293a92807a1afd27f4))
100
+ * **code-review:** make epic review depth a real consumed signal (refs [#3937](https://github.com/dsj1984/mandrel/issues/3937)) ([#3942](https://github.com/dsj1984/mandrel/issues/3942)) ([b1a8eac](https://github.com/dsj1984/mandrel/commit/b1a8eac06eee5df55d7d6ae309224f9908475560))
101
+ * **delivery:** bounded per-Story acceptance self-eval loop in the Story-implementation phase ([#3819](https://github.com/dsj1984/mandrel/issues/3819)) ([#3820](https://github.com/dsj1984/mandrel/issues/3820)) ([b03acdf](https://github.com/dsj1984/mandrel/commit/b03acdf5697e85e86dfe18702e31d8e328ee3fe0))
102
+ * Epic [#3865](https://github.com/dsj1984/mandrel/issues/3865) ([#3888](https://github.com/dsj1984/mandrel/issues/3888)) ([a7ff890](https://github.com/dsj1984/mandrel/commit/a7ff890ee5b92a38bab884ee0f2d3e2b77619432))
103
+ * **epic-audit:** make audit lenses depth-aware + broaden risk-axis routing (refs [#3939](https://github.com/dsj1984/mandrel/issues/3939)) ([#3951](https://github.com/dsj1984/mandrel/issues/3951)) ([2f53885](https://github.com/dsj1984/mandrel/commit/2f53885fb5baa916904323ba5b5b6926d6f9de5a))
104
+ * **epic-deliver:** wire risk-judged audit-lens routing into Phase 4 (refs [#3889](https://github.com/dsj1984/mandrel/issues/3889)) ([#3917](https://github.com/dsj1984/mandrel/issues/3917)) ([5a12dbe](https://github.com/dsj1984/mandrel/commit/5a12dbe8bced3a3b2ad18abfea679a942a574ed6))
105
+ * **hydration:** flip skill loading to capsule-only (hard cutover) (refs [#3863](https://github.com/dsj1984/mandrel/issues/3863)) ([#3869](https://github.com/dsj1984/mandrel/issues/3869)) ([a9a985a](https://github.com/dsj1984/mandrel/commit/a9a985ab39c2141a9b824f35a6e298ed0a20f5ca))
106
+ * **planning:** add core/scope-triage skill and /epic-plan Phase 1.5 ideation gate (refs [#3933](https://github.com/dsj1984/mandrel/issues/3933)) ([#3941](https://github.com/dsj1984/mandrel/issues/3941)) ([7cf4725](https://github.com/dsj1984/mandrel/commit/7cf472580268b4e1b106c96e2a9ad8019b185ecb))
107
+ * **planning:** add Phase 7.5 Tech Spec Delivery Slicing section gate (refs [#3853](https://github.com/dsj1984/mandrel/issues/3853)) ([#3860](https://github.com/dsj1984/mandrel/issues/3860)) ([23102b3](https://github.com/dsj1984/mandrel/commit/23102b3dd90c7ca43e2d624930d2f42f5e6f6c00))
108
+ * **planning:** emit wave-0 BDD scaffold Story for new-disposition specs + missing-bdd-scaffold finding (refs [#3857](https://github.com/dsj1984/mandrel/issues/3857)) ([#3862](https://github.com/dsj1984/mandrel/issues/3862)) ([461bcea](https://github.com/dsj1984/mandrel/commit/461bcea4135c2ac5827bdbc167c73699d5146dad))
109
+ * **planning:** flag acceptance criteria referencing unanchored config constants (refs [#3855](https://github.com/dsj1984/mandrel/issues/3855)) ([#3859](https://github.com/dsj1984/mandrel/issues/3859)) ([8533dc8](https://github.com/dsj1984/mandrel/commit/8533dc87ecf951c7cd8c92c7383218cf094b1041))
110
+ * **retro:** ship retro-run.js CLI for Phase 6 retro (refs [#3903](https://github.com/dsj1984/mandrel/issues/3903)) ([#3924](https://github.com/dsj1984/mandrel/issues/3924)) ([b663840](https://github.com/dsj1984/mandrel/commit/b663840b99de35e00d095a8cff22ed96f9d6b51e))
111
+ * **story-close:** inherit Epic review depth for epic-attached Stories (refs [#3940](https://github.com/dsj1984/mandrel/issues/3940)) ([#3950](https://github.com/dsj1984/mandrel/issues/3950)) ([1eefc39](https://github.com/dsj1984/mandrel/commit/1eefc39638cfc5315a88d2c5c313be2b2eaf386b))
112
+
113
+
114
+ ### Fixed
115
+
116
+ * **bootstrap:** dedupe Projects V2 board creation on re-run (refs [#3896](https://github.com/dsj1984/mandrel/issues/3896)) ([#3920](https://github.com/dsj1984/mandrel/issues/3920)) ([84e6e20](https://github.com/dsj1984/mandrel/commit/84e6e20665586d81bf0907838d351da890804ff8))
117
+ * **bootstrap:** exit non-zero when GitHub-side bootstrap fails (refs [#3898](https://github.com/dsj1984/mandrel/issues/3898)) ([#3922](https://github.com/dsj1984/mandrel/issues/3922)) ([0629621](https://github.com/dsj1984/mandrel/commit/062962138967525dce09421140eb87742ee1c39d))
118
+ * **bootstrap:** seal cold-start secret-push hazard (refs [#3894](https://github.com/dsj1984/mandrel/issues/3894)) ([#3918](https://github.com/dsj1984/mandrel/issues/3918)) ([37358d2](https://github.com/dsj1984/mandrel/commit/37358d2d52ac3d0b9bbbc92799f0e5e81b662968))
119
+ * **bootstrap:** stop doctor + preflight false-blocking on auth (refs [#3893](https://github.com/dsj1984/mandrel/issues/3893)) ([#3915](https://github.com/dsj1984/mandrel/issues/3915)) ([e7f12c8](https://github.com/dsj1984/mandrel/commit/e7f12c8ba2bdbdc8233eff48264284d0c0101694))
120
+ * **deliver:** make Phase 8 pr-watch poll CI to green (refs [#3902](https://github.com/dsj1984/mandrel/issues/3902)) ([#3925](https://github.com/dsj1984/mandrel/issues/3925)) ([873fcaa](https://github.com/dsj1984/mandrel/commit/873fcaaf78eb722119112c3e1159f9bf8979582c))
121
+ * **doctor:** degrade gh-auth check to warn-and-skip when an env token is present ([#3944](https://github.com/dsj1984/mandrel/issues/3944)) ([76bea3e](https://github.com/dsj1984/mandrel/commit/76bea3e8d6380912c362c753c8d3ca25d106906f))
122
+ * **lifecycle:** make the Phase 8.5 auto-merge gate reachable + add event-connectivity contract test ([#3901](https://github.com/dsj1984/mandrel/issues/3901)) ([#3932](https://github.com/dsj1984/mandrel/issues/3932)) ([509e0af](https://github.com/dsj1984/mandrel/commit/509e0af24101cde3dbcbb0639367e75afb55ebce))
123
+ * **lifecycle:** propagate finalize/listener failures to lifecycle-emit exit code (refs [#3904](https://github.com/dsj1984/mandrel/issues/3904)) ([#3927](https://github.com/dsj1984/mandrel/issues/3927)) ([588f0ba](https://github.com/dsj1984/mandrel/commit/588f0ba365dd241f3aebeac4cd40cb8c5368584b))
124
+ * **lifecycle:** repair idle-watchdog + Epic-lease via main-checkout ledger path and dispatch-end emission ([#3900](https://github.com/dsj1984/mandrel/issues/3900)) ([#3926](https://github.com/dsj1984/mandrel/issues/3926)) ([daa4434](https://github.com/dsj1984/mandrel/commit/daa4434bb6c2352df16d34ff8cbcf38b9422f7be))
125
+ * **planning:** issue-link-parser matches spec references in Epic body prose, dropping authored acceptance specs ([#3848](https://github.com/dsj1984/mandrel/issues/3848)) ([#3851](https://github.com/dsj1984/mandrel/issues/3851)) ([93fcfb3](https://github.com/dsj1984/mandrel/commit/93fcfb3f1c54b67ca1d0e13413e12ab4f0971984))
126
+ * **plan:** repair --force re-plan (--explicit-delete) and --resume idempotency on missing state.json ([#3905](https://github.com/dsj1984/mandrel/issues/3905)) ([#3928](https://github.com/dsj1984/mandrel/issues/3928)) ([617a121](https://github.com/dsj1984/mandrel/commit/617a12154edd55ce3c82ffc9063f8c369b03c0fb))
127
+ * **retro:** low-utilisation heuristic false-positives on serialized/narrow waves + missing timing ([#3850](https://github.com/dsj1984/mandrel/issues/3850)) ([#3852](https://github.com/dsj1984/mandrel/issues/3852)) ([fb4cb56](https://github.com/dsj1984/mandrel/commit/fb4cb564985786d5d83ad9e2c7ffc5c14c6547c2))
128
+ * **story-close:** correct push-recovery + format-autofix cwd, harden wave loop (refs [#3907](https://github.com/dsj1984/mandrel/issues/3907)) ([#3930](https://github.com/dsj1984/mandrel/issues/3930)) ([7ac053a](https://github.com/dsj1984/mandrel/commit/7ac053a9631017fa0f9d82a6dc6dce3a687f396c))
129
+ * **uninstall:** preserve a pre-existing .agentrc.json (refs [#3895](https://github.com/dsj1984/mandrel/issues/3895)) ([#3919](https://github.com/dsj1984/mandrel/issues/3919)) ([ebdfd37](https://github.com/dsj1984/mandrel/commit/ebdfd37cc2fb1f53778f0723984790aaf32f000a))
130
+
131
+
132
+ ### Changed
133
+
134
+ * **deliver:** collapse overlapping run-state/progress surfaces to checkpoint+ledger+one comment ([#3909](https://github.com/dsj1984/mandrel/issues/3909)) ([#3945](https://github.com/dsj1984/mandrel/issues/3945)) ([80b598c](https://github.com/dsj1984/mandrel/commit/80b598c3f7372bdde87a07ac1bc544312408cd0c))
135
+ * **orchestration:** delete free-form sub-agent return extraction heuristics (refs [#3864](https://github.com/dsj1984/mandrel/issues/3864)) ([#3868](https://github.com/dsj1984/mandrel/issues/3868)) ([cbf88cf](https://github.com/dsj1984/mandrel/commit/cbf88cffcc9d8b6501c7eab4a55160281c65c5b0))
136
+ * **orchestration:** delete the dead in-process epic-runner stratum ([#3908](https://github.com/dsj1984/mandrel/issues/3908)) ([#3936](https://github.com/dsj1984/mandrel/issues/3936)) ([fcea717](https://github.com/dsj1984/mandrel/commit/fcea717064e2633d90a7d905914056fe571be4c2))
137
+ * **orchestration:** record keep-the-bus ADR; sweep stale runner refs (refs [#3911](https://github.com/dsj1984/mandrel/issues/3911)) ([#3948](https://github.com/dsj1984/mandrel/issues/3948)) ([037afde](https://github.com/dsj1984/mandrel/commit/037afdec90db3e80b7054eec65c829dd3f835c45))
138
+ * **plan:** re-point task-body validator at string bodies; drop dead guards (refs [#3906](https://github.com/dsj1984/mandrel/issues/3906)) ([#3929](https://github.com/dsj1984/mandrel/issues/3929)) ([59be4fc](https://github.com/dsj1984/mandrel/commit/59be4fcdf7a1ce4b3a71127584c54ea67b2dc36c))
139
+ * **plan:** simplify deterministic planning proxies and sweep stale/duplicated workflow prose ([#3910](https://github.com/dsj1984/mandrel/issues/3910)) ([#3931](https://github.com/dsj1984/mandrel/issues/3931)) ([6b53fa8](https://github.com/dsj1984/mandrel/commit/6b53fa805171ce97002bf8bd876d51dc381e4e68))
140
+ * **scripts:** retire dead/orphan/shim code across planning & delivery (closes [#3823](https://github.com/dsj1984/mandrel/issues/3823)) ([#3849](https://github.com/dsj1984/mandrel/issues/3849)) ([ced6eca](https://github.com/dsj1984/mandrel/commit/ced6eca84f1087d3046c654090c34929aa8f4fcf))
141
+
142
+ ## [1.54.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.53.0...mandrel-v1.54.0) (2026-06-08)
143
+
144
+
145
+ ### Added
146
+
147
+ * **bootstrap-new:** provision GitHub repo + Projects V2 from a blank folder (refs [#3814](https://github.com/dsj1984/mandrel/issues/3814)) ([#3815](https://github.com/dsj1984/mandrel/issues/3815)) ([555abc9](https://github.com/dsj1984/mandrel/commit/555abc99ac028d1727b49a8995b943badd8f561e))
148
+ * **decompose:** forbid single-Story Features; decompose at deliverable granularity (refs [#3777](https://github.com/dsj1984/mandrel/issues/3777)) ([#3781](https://github.com/dsj1984/mandrel/issues/3781)) ([6358257](https://github.com/dsj1984/mandrel/commit/635825779de789472c3ad4ea498f919fe22dde95))
149
+ * **epic-plan:** add holistic consolidation pass to Phase 8 decompose (refs [#3797](https://github.com/dsj1984/mandrel/issues/3797)) ([#3799](https://github.com/dsj1984/mandrel/issues/3799)) ([4aaeae4](https://github.com/dsj1984/mandrel/commit/4aaeae493f5c9a0947a6193d539b7b165812d140))
150
+ * **qa:** split exploratory QA into /qa-assist + /qa-explore over a shared findings core (closes [#3798](https://github.com/dsj1984/mandrel/issues/3798)) ([#3817](https://github.com/dsj1984/mandrel/issues/3817)) ([a60822a](https://github.com/dsj1984/mandrel/commit/a60822af738c1d38bcdd50be93463326bc9c16de))
151
+
152
+
153
+ ### Changed
154
+
155
+ * **findings:** unify severity vocabulary into shared severity.js (refs [#3816](https://github.com/dsj1984/mandrel/issues/3816)) ([#3818](https://github.com/dsj1984/mandrel/issues/3818)) ([e801162](https://github.com/dsj1984/mandrel/commit/e801162e5689b879e47102acc33128cc965e7fdd))
156
+
157
+ ## [1.53.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.52.0...mandrel-v1.53.0) (2026-06-07)
158
+
159
+
160
+ ### Added
161
+
162
+ * Epic [#3686](https://github.com/dsj1984/mandrel/issues/3686) ([#3736](https://github.com/dsj1984/mandrel/issues/3736)) ([ab1e0af](https://github.com/dsj1984/mandrel/commit/ab1e0af4b62a56369e3f7f4b54c0af3b0704136f))
163
+
164
+
165
+ ### Fixed
166
+
167
+ * **baselines:** build refreshBaseline default scorers with resolved config (refs [#3694](https://github.com/dsj1984/mandrel/issues/3694)) ([#3728](https://github.com/dsj1984/mandrel/issues/3728)) ([20344fe](https://github.com/dsj1984/mandrel/commit/20344fe30166da4031930702fae2ffef085dc739))
168
+ * **baselines:** scoped refresh includes the change set's own new files (refs [#3695](https://github.com/dsj1984/mandrel/issues/3695)) ([#3727](https://github.com/dsj1984/mandrel/issues/3727)) ([c7ffae6](https://github.com/dsj1984/mandrel/commit/c7ffae60725ed43de263e3ade1ffb399ae7566fe))
169
+ * **bootstrap:** single-fetch Project V2 reuse + transient network-timeout retry (refs [#3730](https://github.com/dsj1984/mandrel/issues/3730)) ([#3733](https://github.com/dsj1984/mandrel/issues/3733)) ([419f24d](https://github.com/dsj1984/mandrel/commit/419f24ddd5281feafdaf25933e905733742ae8d7))
170
+ * **code-review:** score head version of changed files in native review (refs [#3696](https://github.com/dsj1984/mandrel/issues/3696)) ([#3729](https://github.com/dsj1984/mandrel/issues/3729)) ([9e3fa58](https://github.com/dsj1984/mandrel/commit/9e3fa585a224482f66483d8f001673ad60251ae1))
171
+ * **qa:** broaden evidence redaction to full security-baseline taxonomy (refs [#3737](https://github.com/dsj1984/mandrel/issues/3737)) ([#3740](https://github.com/dsj1984/mandrel/issues/3740)) ([1a3c54b](https://github.com/dsj1984/mandrel/commit/1a3c54b8d1eb1f4a4abd68468b943e011e4ea9f4))
172
+ * **qa:** validate captured-but-untriaged qa-ledger items (refs [#3738](https://github.com/dsj1984/mandrel/issues/3738)) ([#3739](https://github.com/dsj1984/mandrel/issues/3739)) ([9eb5839](https://github.com/dsj1984/mandrel/commit/9eb58395b1903af2599c96ac8753b58044b8cc1e))
173
+
174
+
175
+ ### Changed
176
+
177
+ * **docs:** relocate consumer reference docs into .agents/docs (refs [#3697](https://github.com/dsj1984/mandrel/issues/3697)) ([#3741](https://github.com/dsj1984/mandrel/issues/3741)) ([38ff417](https://github.com/dsj1984/mandrel/commit/38ff41748904bc72d0a06c58aad75fa941b074da))
178
+ * **quality-gates:** replace repo-wide floor overrides with file-scoped controls ([#3685](https://github.com/dsj1984/mandrel/issues/3685)) ([#3692](https://github.com/dsj1984/mandrel/issues/3692)) ([a78d4b5](https://github.com/dsj1984/mandrel/commit/a78d4b597dbf0222f4be8d38e95df39b72beac67))
179
+ * **story-plan:** retire story-plan acknowledgement feature (refs [#3704](https://github.com/dsj1984/mandrel/issues/3704)) ([#3731](https://github.com/dsj1984/mandrel/issues/3731)) ([03a817d](https://github.com/dsj1984/mandrel/commit/03a817dc84fd85eaea99b02bf3e2ca1b33596833))
180
+ * **workflows:** demote drain-pending-cleanup to a helper (refs [#3706](https://github.com/dsj1984/mandrel/issues/3706)) ([#3732](https://github.com/dsj1984/mandrel/issues/3732)) ([015db5f](https://github.com/dsj1984/mandrel/commit/015db5fd9547e13e216f491ca828eef273ab753a))
181
+ * **workflows:** rename /single-story-plan to /story-plan (refs [#3705](https://github.com/dsj1984/mandrel/issues/3705)) ([#3734](https://github.com/dsj1984/mandrel/issues/3734)) ([326439b](https://github.com/dsj1984/mandrel/commit/326439bce220a7c2fd029f6d25fd4f57f451756d))
182
+ * **workflows:** retire /mandrel; generate, gate, and relocate workflows.md (refs [#3708](https://github.com/dsj1984/mandrel/issues/3708)) ([#3743](https://github.com/dsj1984/mandrel/issues/3743)) ([e16b7ef](https://github.com/dsj1984/mandrel/commit/e16b7ef108654295502a6d9e4344dc1945427040))
183
+
184
+ ## [1.52.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.51.0...mandrel-v1.52.0) (2026-06-06)
185
+
186
+
187
+ ### Added
188
+
189
+ * **baselines:** add code-duplication (DRY) quality gate (refs [#3664](https://github.com/dsj1984/mandrel/issues/3664)) ([#3670](https://github.com/dsj1984/mandrel/issues/3670)) ([5057a32](https://github.com/dsj1984/mandrel/commit/5057a327d92eefb8b03e0f64e7710d7a00b64977))
190
+ * Epic [#3597](https://github.com/dsj1984/mandrel/issues/3597) — generalize dynamic-workflow audit orchestration to 4 lenses + retire pilot ([#3680](https://github.com/dsj1984/mandrel/issues/3680)) ([970ddbb](https://github.com/dsj1984/mandrel/commit/970ddbb735b36a27d14b0375b84ca3899c136f82))
191
+ * **finalize:** embed a run-trace digest in the epic-handoff comment (refs [#3669](https://github.com/dsj1984/mandrel/issues/3669)) ([#3676](https://github.com/dsj1984/mandrel/issues/3676)) ([1170cf3](https://github.com/dsj1984/mandrel/commit/1170cf35a32f1e45f7c57c0be1922c91a7cd7c78))
192
+ * **tech-debt:** Epic [#3599](https://github.com/dsj1984/mandrel/issues/3599) — Clean-Code & Performance Audit Remediation ([#3673](https://github.com/dsj1984/mandrel/issues/3673)) ([ec013c9](https://github.com/dsj1984/mandrel/commit/ec013c904e4206cbf919b6c6669210492a9f3838))
193
+ * **workflows:** add role re-anchoring and minimal-handoff discipline to delivery sub-agents (refs [#3667](https://github.com/dsj1984/mandrel/issues/3667)) ([#3674](https://github.com/dsj1984/mandrel/issues/3674)) ([1acc68d](https://github.com/dsj1984/mandrel/commit/1acc68dbc9b191bd1b88c0b777e17d65e3472eff))
194
+
195
+
196
+ ### Fixed
197
+
198
+ * **git-cleanup:** decouple ref reap from worktree removal so a Windows-locked merged worktree no longer strands its ref (refs [#3598](https://github.com/dsj1984/mandrel/issues/3598)) ([#3617](https://github.com/dsj1984/mandrel/issues/3617)) ([819ebbc](https://github.com/dsj1984/mandrel/commit/819ebbcf73d7bffcf44e0fe81329de405c0e6ea5))
199
+ * **scripts:** add ESM boundary package.json to silence MODULE_TYPELESS_PACKAGE_JSON in consumers (refs [#3589](https://github.com/dsj1984/mandrel/issues/3589)) ([#3677](https://github.com/dsj1984/mandrel/issues/3677)) ([4364c51](https://github.com/dsj1984/mandrel/commit/4364c515c6b1f936b4f9537c9ba274954763160a))
200
+ * **story-close:** canonicalize both paths in cd-out guard so symlinked prefixes (macOS /tmp) no longer false-negative (refs [#3672](https://github.com/dsj1984/mandrel/issues/3672)) ([#3678](https://github.com/dsj1984/mandrel/issues/3678)) ([e37b27a](https://github.com/dsj1984/mandrel/commit/e37b27a0e3b255963337a8b77553588b93d8a9da))
201
+
202
+
203
+ ### Changed
204
+
205
+ * **dynamic-workflow:** share report contract assertion core (refs [#3681](https://github.com/dsj1984/mandrel/issues/3681)) ([#3683](https://github.com/dsj1984/mandrel/issues/3683)) ([75851fe](https://github.com/dsj1984/mandrel/commit/75851fe8ac4213507bcdc05e95728a8aab563b7a))
206
+
207
+ ## [1.51.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.50.0...mandrel-v1.51.0) (2026-06-04)
208
+
209
+
210
+ ### ⚠ BREAKING CHANGES
211
+
212
+ * **commands:** Mandrel slash commands revert from `/mandrel:<command>` back to `/<command>`. Consumers no longer need the mandrel plugin enabled; the next `mandrel sync` reaps the plugin tree and writes flat `.claude/commands/`.
213
+
214
+ ### Added
215
+
216
+ * **commands:** revert the [#3576](https://github.com/dsj1984/mandrel/issues/3576) plugin cutover — flat /&lt;name&gt; commands ([#3594](https://github.com/dsj1984/mandrel/issues/3594)) ([a8afee6](https://github.com/dsj1984/mandrel/commit/a8afee613c700e19c9fa3015570a981560a51035))
217
+
218
+
219
+ ### Fixed
220
+
221
+ * **quality:** preview gate honors the configured maintainability tolerance ([#3593](https://github.com/dsj1984/mandrel/issues/3593)) ([3c770dc](https://github.com/dsj1984/mandrel/commit/3c770dcaf895aafdbc2051022f16ba91319a4bc5))
222
+ * **worktree:** copy operator local-override files into isolated worktrees ([#3591](https://github.com/dsj1984/mandrel/issues/3591)) ([784df1a](https://github.com/dsj1984/mandrel/commit/784df1a74edde57f52928f80273179aa29c7dad3))
223
+
224
+ ## [1.50.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.49.0...mandrel-v1.50.0) (2026-06-04)
225
+
226
+
227
+ ### Fixed
228
+
229
+ * **postinstall:** materialize .agents/ into INIT_CWD, not the npm-lifecycle cwd (refs [#3584](https://github.com/dsj1984/mandrel/issues/3584)) ([#3585](https://github.com/dsj1984/mandrel/issues/3585)) ([0844b45](https://github.com/dsj1984/mandrel/commit/0844b45351b47fddf01e5e90b4bd68764d578f50))
230
+
231
+ ## [1.49.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.48.0...mandrel-v1.49.0) (2026-06-04)
232
+
233
+
234
+ ### Fixed
235
+
236
+ * **postinstall:** source-checkout guard misfires on every consumer install, skipping `.agents/` sync ([#3580](https://github.com/dsj1984/mandrel/issues/3580)) ([#3582](https://github.com/dsj1984/mandrel/issues/3582)) ([97b896f](https://github.com/dsj1984/mandrel/commit/97b896f1cb974ef86726353532087de1e9828c0e))
237
+ * **update:** auto-detect package manager in mandrel update (refs [#3575](https://github.com/dsj1984/mandrel/issues/3575)) ([#3577](https://github.com/dsj1984/mandrel/issues/3577)) ([f766f7c](https://github.com/dsj1984/mandrel/commit/f766f7ce649c5d56741318339173a69755f8a0ae))
238
+
239
+ ## [1.48.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.47.0...mandrel-v1.48.0) (2026-06-04)
240
+
241
+
242
+ ### Added
243
+
244
+ * **skills:** add operator comprehension capability (refs [#3571](https://github.com/dsj1984/mandrel/issues/3571)) ([#3572](https://github.com/dsj1984/mandrel/issues/3572)) ([12f0810](https://github.com/dsj1984/mandrel/commit/12f0810ac184a4d54808f7f977fee93310b2fb0c))
245
+
246
+
247
+ ### Fixed
248
+
249
+ * **bootstrap:** honest applied-group + prepare-removal reporting and non-TTY help ([#3545](https://github.com/dsj1984/mandrel/issues/3545)) ([#3569](https://github.com/dsj1984/mandrel/issues/3569)) ([d5691f9](https://github.com/dsj1984/mandrel/commit/d5691f976796819a4a2f39c66161fa03d27abff7))
250
+
251
+ ## [1.47.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.46.0...mandrel-v1.47.0) (2026-06-04)
252
+
253
+
254
+ ### Fixed
255
+
256
+ * **update:** resolve Windows spawn ENOENT and add --install-cmd (refs [#3565](https://github.com/dsj1984/mandrel/issues/3565)) ([#3567](https://github.com/dsj1984/mandrel/issues/3567)) ([48b8d64](https://github.com/dsj1984/mandrel/commit/48b8d64b22f9dd52ef8f5dfb055ace8418503770))
257
+
258
+ ## [1.46.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.45.0...mandrel-v1.46.0) (2026-06-03)
259
+
260
+
261
+ ### ⚠ BREAKING CHANGES
262
+
263
+ * **orchestration:** `.agentrc.json` documents with a `github` block must now include `github.operatorHandle`. The shipped templates already carry the `@[USERNAME]` placeholder, so consumers upgrading via `mandrel sync` get it automatically; a hand-written config without it will fail schema validation until the key is added.
264
+
265
+ ### Added
266
+
267
+ * **orchestration:** require per-contributor operatorHandle and fail closed in lease guards ([#3563](https://github.com/dsj1984/mandrel/issues/3563)) ([50e0b3e](https://github.com/dsj1984/mandrel/commit/50e0b3ea8f2a67679114620cd9ed292e5473686d))
268
+
269
+
270
+ ### Fixed
271
+
272
+ * **column-sync:** use projectOwner instead of viewer in #loadMeta query ([#3560](https://github.com/dsj1984/mandrel/issues/3560)) ([#3561](https://github.com/dsj1984/mandrel/issues/3561)) ([f4a1de8](https://github.com/dsj1984/mandrel/commit/f4a1de806b9ba3aac9d12bad868da88b0de08a98))
273
+ * **uninstall:** add revertAgentrc handler to fix reversibility mismatch (refs [#3543](https://github.com/dsj1984/mandrel/issues/3543)) ([#3557](https://github.com/dsj1984/mandrel/issues/3557)) ([70f1d88](https://github.com/dsj1984/mandrel/commit/70f1d88036dbab79090cc02ced98afc05bb7852a))
274
+ * **uninstall:** guard per-target reversal loop against JSON.parse failures (refs [#3544](https://github.com/dsj1984/mandrel/issues/3544)) ([#3562](https://github.com/dsj1984/mandrel/issues/3562)) ([d974e0d](https://github.com/dsj1984/mandrel/commit/d974e0df2736200624aca56d37feebac7b952b77))
275
+
276
+ ## [1.45.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.44.0...mandrel-v1.45.0) (2026-06-03)
277
+
278
+
279
+ ### Fixed
280
+
281
+ * **uninstall:** keep the .mcp.json gitignore entry when a real .mcp.json exists ([#3542](https://github.com/dsj1984/mandrel/issues/3542)) ([#3555](https://github.com/dsj1984/mandrel/issues/3555)) ([0ff599c](https://github.com/dsj1984/mandrel/commit/0ff599c51872f595298b0a1aeddd4dbf0de74793))
282
+ * **uninstall:** replace hash-prefix heuristic with byte-equality check ([#3551](https://github.com/dsj1984/mandrel/issues/3551)) ([1b11d68](https://github.com/dsj1984/mandrel/commit/1b11d68bbe37a172e83dacef9aad7b514629e4cc))
283
+
284
+ ## [1.44.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.43.0...mandrel-v1.44.0) (2026-06-03)
285
+
286
+
287
+ ### ⚠ BREAKING CHANGES
288
+
289
+ * Mandrel v6.0.0 — ticket hierarchy is now Epic -> Feature -> Story (with inline acceptance/verify on the Story body). The planning.hierarchy config flag, type::task label, Task-tier scripts, and Task-aware lifecycle hooks have been deleted. Consumers re-pinning .agents/ to v6.0.0 MUST migrate any local Task-tier artifacts per docs/upgrade-guide-3-tier.md.
290
+ * **board:** collapse Status field to Todo/In Progress/Done ([#2868](https://github.com/dsj1984/mandrel/issues/2868))
291
+ * **release:** footers or !-marked commits never auto-propose a major version. Major bumps now require explicit operator intervention via a Release-As: X.0.0 trailer or a manual edit on the release PR branch.
292
+ * **release:** 5.36.4 — remove sprintClose.runRetro back-compat shim
293
+
294
+ ### Epic
295
+
296
+ * 3078 ([#3164](https://github.com/dsj1984/mandrel/issues/3164)) ([206da29](https://github.com/dsj1984/mandrel/commit/206da297bdf60fdee976dbaae0858816c308c56a))
297
+
298
+
299
+ ### Added
300
+
301
+ * add cutover smoke tests for friction-comment + flat-temp absence (resolves [#1049](https://github.com/dsj1984/mandrel/issues/1049)) ([d3e825d](https://github.com/dsj1984/mandrel/commit/d3e825d5020747f1cb9a6f958cf43e6fd5e85f68))
302
+ * add lifecycle defaults + strip redundant config from .agentrc.json ([#2846](https://github.com/dsj1984/mandrel/issues/2846)) ([#2848](https://github.com/dsj1984/mandrel/issues/2848)) ([89a8b30](https://github.com/dsj1984/mandrel/commit/89a8b3063c5fd38583db31c1d08538fe7f0e79d4))
303
+ * add PreToolUse / PostToolUse trace hook + env propagation (resolves [#1043](https://github.com/dsj1984/mandrel/issues/1043)) ([8b50fbe](https://github.com/dsj1984/mandrel/commit/8b50fbee2f602d08f7a913f028999dbc70becca1))
304
+ * **agents:** define wave-runner sub-agent type and probe nested agent dispatch (resolves [#1133](https://github.com/dsj1984/mandrel/issues/1133)) ([03227f9](https://github.com/dsj1984/mandrel/commit/03227f9ad3c21ef1a2fe559fe2b28287612c32f8))
305
+ * **analyze-execution:** implement analyze-execution.js with --story and --epic modes (resolves [#1135](https://github.com/dsj1984/mandrel/issues/1135)) ([73b5ee2](https://github.com/dsj1984/mandrel/commit/73b5ee23549b64b4ea02653ce50216efff8992d4))
306
+ * **architecture:** cleanup shims, adapters, and enums (closes [#2646](https://github.com/dsj1984/mandrel/issues/2646)) ([#2712](https://github.com/dsj1984/mandrel/issues/2712)) ([8993bad](https://github.com/dsj1984/mandrel/commit/8993bad5085c02e39fce0fbd0dd6c440eba2e7c5))
307
+ * atomic writes in `render-manifest.js` (resolves [#1090](https://github.com/dsj1984/mandrel/issues/1090)) ([dff4cbb](https://github.com/dsj1984/mandrel/commit/dff4cbb063392162d01fa207bab9f012bdf0d13b))
308
+ * **audit-architecture:** add Automated Architecture Guardrails dimension ([#2734](https://github.com/dsj1984/mandrel/issues/2734)) ([184574d](https://github.com/dsj1984/mandrel/commit/184574d65bdaba1ebed54a68cda5d0cdee50d823)), closes [#2713](https://github.com/dsj1984/mandrel/issues/2713)
309
+ * **audit:** pilot dynamic-workflow orchestration for audit-clean-code with graceful degradation (refs [#3278](https://github.com/dsj1984/mandrel/issues/3278)) ([#3282](https://github.com/dsj1984/mandrel/issues/3282)) ([414ecd4](https://github.com/dsj1984/mandrel/commit/414ecd4dcdc13b8c46b535634d28cb1df35a87e4))
310
+ * **board:** collapse Status field to Todo/In Progress/Done ([#2868](https://github.com/dsj1984/mandrel/issues/2868)) ([60e99a2](https://github.com/dsj1984/mandrel/commit/60e99a2b019698034e146e0e73c92ee3c68a08bf)), closes [#2867](https://github.com/dsj1984/mandrel/issues/2867)
311
+ * **bootstrap:** auto-accept inferred git defaults instead of prompting ([#2122](https://github.com/dsj1984/mandrel/issues/2122)) ([09b1413](https://github.com/dsj1984/mandrel/commit/09b1413d203a4c0f886da7a76bf0322895b598dc)), closes [#2121](https://github.com/dsj1984/mandrel/issues/2121)
312
+ * **bootstrap:** unified consumer setup script + README cleanup (hard cutover) ([#2075](https://github.com/dsj1984/mandrel/issues/2075)) ([8543677](https://github.com/dsj1984/mandrel/commit/854367748c68c5191fef99d849664f49329db63f)), closes [#2074](https://github.com/dsj1984/mandrel/issues/2074)
313
+ * bound `cascadeCompletion` in `lib/orchestration/ticketing.js` (resolves [#1088](https://github.com/dsj1984/mandrel/issues/1088)) ([bfd6101](https://github.com/dsj1984/mandrel/commit/bfd6101905104e89ea36b6bffd5b224b898b1da8))
314
+ * bound fs fanout in `detect-merges.js` (resolves [#1086](https://github.com/dsj1984/mandrel/issues/1086)) ([505a257](https://github.com/dsj1984/mandrel/commit/505a257bfd1462b8d9ba5db0e93e59059b1bac77))
315
+ * bound GitHub mutations in force-close / cleanup paths (resolves [#1087](https://github.com/dsj1984/mandrel/issues/1087)) ([d2321c6](https://github.com/dsj1984/mandrel/commit/d2321c698ec6a9a9c80f9a356d02be5352853df4))
316
+ * bounded parallelism for serial API loops (resolves [#1089](https://github.com/dsj1984/mandrel/issues/1089)) ([60272b9](https://github.com/dsj1984/mandrel/commit/60272b919869082ab05e9b077d020eb9a493d050))
317
+ * centralized temp-paths helper + JSON schemas (resolves [#1039](https://github.com/dsj1984/mandrel/issues/1039)) ([c7cf980](https://github.com/dsj1984/mandrel/commit/c7cf9800a26af71ea058d8ef86fb5b57710bfb5e))
318
+ * **close-validation:** create lib/baseline-loader.js with readbaselineatref helper (resolves [#1127](https://github.com/dsj1984/mandrel/issues/1127)) ([1d4480b](https://github.com/dsj1984/mandrel/commit/1d4480b228ded41b023701b43bc0bcd94dfac2b9))
319
+ * **close-validation:** run every close-validation gate with cwd=.worktrees/story-&lt;id&gt;/ (resolves [#1128](https://github.com/dsj1984/mandrel/issues/1128)) ([ad0e7b5](https://github.com/dsj1984/mandrel/commit/ad0e7b5854d87f4333f82527e22bc5177ab7612e))
320
+ * **close-validation:** wire baseline-loader into the maintainability and crap gates (resolves [#1130](https://github.com/dsj1984/mandrel/issues/1130)) ([b187cf8](https://github.com/dsj1984/mandrel/commit/b187cf808cea990eac1d7b0bbed5b028f8a8328a))
321
+ * **close:** sync story/epic branch from base before PR open ([#2581](https://github.com/dsj1984/mandrel/issues/2581)) ([1026c86](https://github.com/dsj1984/mandrel/commit/1026c86759de7f1319c2d173773cb35fedbe4da6)), closes [#2580](https://github.com/dsj1984/mandrel/issues/2580)
322
+ * **code-review:** add security-review and ultrareview providers via chain ([#2872](https://github.com/dsj1984/mandrel/issues/2872)) ([832b189](https://github.com/dsj1984/mandrel/commit/832b1892d735c1574dea77e3f536dd99475862c2)), closes [#2871](https://github.com/dsj1984/mandrel/issues/2871)
323
+ * **column-sync:** wire Projects v2 Status sync into transitionTicketState (resolves [#2548](https://github.com/dsj1984/mandrel/issues/2548)) ([#2575](https://github.com/dsj1984/mandrel/issues/2575)) ([5457ca7](https://github.com/dsj1984/mandrel/commit/5457ca7c39a31d8c6d9a80091597364c893785cb))
324
+ * **config:** add agentsettings.limits.signals defaults + signals_defaults export (resolves [#1070](https://github.com/dsj1984/mandrel/issues/1070)) ([b50c264](https://github.com/dsj1984/mandrel/commit/b50c264a1fe521766f14a584d858d0b4bdd98e97))
325
+ * **config:** add lib/config/temp-paths.js helper for per-epic artifact paths (resolves [#1051](https://github.com/dsj1984/mandrel/issues/1051)) ([5d9a138](https://github.com/dsj1984/mandrel/commit/5d9a13842bf4746d68ba7487d48892b87600d76c))
326
+ * **config:** implement .agentrc.local.json override layer (refs [#3388](https://github.com/dsj1984/mandrel/issues/3388)) ([#3405](https://github.com/dsj1984/mandrel/issues/3405)) ([f42e898](https://github.com/dsj1984/mandrel/commit/f42e898212b3c62bdd9de0e19ce7a876ff435839))
327
+ * decomposer fails when a Task AC references a missing file in the Epic base branch (resolves [#1125](https://github.com/dsj1984/mandrel/issues/1125)) ([748a7fe](https://github.com/dsj1984/mandrel/commit/748a7fea7727d74d7fa85800d0f17b0a07101e68))
328
+ * **decomposer:** add validateacfreshness gate to ticket-validator + wire into decompose phase (resolves [#1138](https://github.com/dsj1984/mandrel/issues/1138)) ([2c5dea9](https://github.com/dsj1984/mandrel/commit/2c5dea960bdfc6d7b4950e676e0cf6ede1641860))
329
+ * Epic [#3304](https://github.com/dsj1984/mandrel/issues/3304) ([#3379](https://github.com/dsj1984/mandrel/issues/3379)) ([850355e](https://github.com/dsj1984/mandrel/commit/850355e34392211d8dff2da3ad95f2c96ffbabbf))
330
+ * Epic [#3316](https://github.com/dsj1984/mandrel/issues/3316) ([#3359](https://github.com/dsj1984/mandrel/issues/3359)) ([2ee5462](https://github.com/dsj1984/mandrel/commit/2ee546258dbb46483fbd201caaf5f1d91cd569df))
331
+ * Epic [#3418](https://github.com/dsj1984/mandrel/issues/3418) ([#3434](https://github.com/dsj1984/mandrel/issues/3434)) ([c926255](https://github.com/dsj1984/mandrel/commit/c926255d04f7d769b2a2d5ac9fcbdb67b48ec6a1))
332
+ * Epic [#3435](https://github.com/dsj1984/mandrel/issues/3435) ([#3453](https://github.com/dsj1984/mandrel/issues/3453)) ([6dc9381](https://github.com/dsj1984/mandrel/commit/6dc93816d61add8829179b5cfe1915d6dd6b43af))
333
+ * Epic [#3436](https://github.com/dsj1984/mandrel/issues/3436) ([#3485](https://github.com/dsj1984/mandrel/issues/3485)) ([7136f4e](https://github.com/dsj1984/mandrel/commit/7136f4e1326be1e4a81c0034d526fda0cf0f52d5))
334
+ * Epic [#3437](https://github.com/dsj1984/mandrel/issues/3437) ([#3534](https://github.com/dsj1984/mandrel/issues/3534)) ([e7f6373](https://github.com/dsj1984/mandrel/commit/e7f63734e35eaf7ae3fda66c51f437d29726bd49))
335
+ * Epic [#3438](https://github.com/dsj1984/mandrel/issues/3438) ([#3539](https://github.com/dsj1984/mandrel/issues/3539)) ([e13ed25](https://github.com/dsj1984/mandrel/commit/e13ed25b2cb4eee02a36ca3309e09d14946e24f8))
336
+ * Epic [#3457](https://github.com/dsj1984/mandrel/issues/3457) ([#3528](https://github.com/dsj1984/mandrel/issues/3528)) ([18318bc](https://github.com/dsj1984/mandrel/commit/18318bc6f654ba2b5758be52dc543f34f013f597))
337
+ * **epic-close:** add phase 6 step that posts epic-perf-report before retro renders (resolves [#1066](https://github.com/dsj1984/mandrel/issues/1066)) ([f0ea300](https://github.com/dsj1984/mandrel/commit/f0ea300825c7f806757856b9a2c1413b0d6d6926))
338
+ * **epic-close:** wire analyze-execution into post-merge-pipeline and epic-close phase 6.0 (resolves [#1140](https://github.com/dsj1984/mandrel/issues/1140)) ([cfc37fa](https://github.com/dsj1984/mandrel/commit/cfc37facb0623ba487439d381f01131553af6a66))
339
+ * **epic-deliver:** conditional auto-merge gate + post-merge cleanup ([#1275](https://github.com/dsj1984/mandrel/issues/1275)) ([b949275](https://github.com/dsj1984/mandrel/commit/b949275e9687823fed802fd74c933e6da9af1882))
340
+ * **epic-deliver:** enforce code-review halted flag before retro phase (resolves [#2167](https://github.com/dsj1984/mandrel/issues/2167)) ([#2168](https://github.com/dsj1984/mandrel/issues/2168)) ([d41634c](https://github.com/dsj1984/mandrel/commit/d41634c606c540abfc0a06d49b8a3120c69c3197))
341
+ * **epic-deliver:** surface cross-Story conflict findings in manifest and prepare-gate (resolves [#2297](https://github.com/dsj1984/mandrel/issues/2297)) ([#2305](https://github.com/dsj1984/mandrel/issues/2305)) ([e2a3288](https://github.com/dsj1984/mandrel/commit/e2a3288ef4a6d671d91a0a58627d29205fc92f18))
342
+ * **epic-execute:** rolling concurrency contract + richer manifest progress symbols ([841162d](https://github.com/dsj1984/mandrel/commit/841162d8ac47d9757d77c94daddfb638dac68f3e))
343
+ * **epic-plan:** add cross-Story path-conflict & implicit-dependency graph (resolves [#2296](https://github.com/dsj1984/mandrel/issues/2296)) ([#2302](https://github.com/dsj1984/mandrel/issues/2302)) ([20fe62c](https://github.com/dsj1984/mandrel/commit/20fe62c81f319f40ac17069e6cf5fd44df72ac04))
344
+ * **epic-plan:** add Epic Clarity Gate (new Phase 6) and renumber phases to linear 1..11 ([#2128](https://github.com/dsj1984/mandrel/issues/2128)) ([#2163](https://github.com/dsj1984/mandrel/issues/2163)) ([f65a14f](https://github.com/dsj1984/mandrel/commit/f65a14f4fa954242011ccd7bbebd5ade2c981d12))
345
+ * **epic-plan:** cross-reference ACs against existing BDD scenarios ([#2642](https://github.com/dsj1984/mandrel/issues/2642)) ([de68d65](https://github.com/dsj1984/mandrel/commit/de68d65e7c392f07fb5eeb9b207b061c5bea8f6d)), closes [#2637](https://github.com/dsj1984/mandrel/issues/2637)
346
+ * **epic-plan:** cross-validate Tech Spec against codebase in Phase 7 ([#2638](https://github.com/dsj1984/mandrel/issues/2638)) ([aec99d1](https://github.com/dsj1984/mandrel/commit/aec99d1ccb216104a216bf6386c39a2eb64ba3bd)), closes [#2635](https://github.com/dsj1984/mandrel/issues/2635)
347
+ * **epic-plan:** decomposer prompt heuristic for shared config-file edits across Stories ([#2300](https://github.com/dsj1984/mandrel/issues/2300)) ([30dadc0](https://github.com/dsj1984/mandrel/commit/30dadc070124e45e5b56cf4295763fee1c28ed65)), closes [#2298](https://github.com/dsj1984/mandrel/issues/2298)
348
+ * **epic-plan:** require explicit filesAssumption on Task paths ([#2639](https://github.com/dsj1984/mandrel/issues/2639)) ([fda76f2](https://github.com/dsj1984/mandrel/commit/fda76f2166f7096f31f92d3c45de2751b2fb92ec)), closes [#2636](https://github.com/dsj1984/mandrel/issues/2636)
349
+ * extract canonical branch-name safety guard (resolves [#1081](https://github.com/dsj1984/mandrel/issues/1081)) ([43f44a7](https://github.com/dsj1984/mandrel/commit/43f44a7ad65f88e62b341b7bc753c03462791f90))
350
+ * **gh-exec:** default-timeout knob + transient classification for GhExecTimeoutError ([#2877](https://github.com/dsj1984/mandrel/issues/2877)) ([dad2b16](https://github.com/dsj1984/mandrel/commit/dad2b163695486bd5aa800ee40fb7d7112531ae5)), closes [#2860](https://github.com/dsj1984/mandrel/issues/2860)
351
+ * **git-cleanup-branches:** prune stale tracking refs after remote delete ([#1714](https://github.com/dsj1984/mandrel/issues/1714)) ([ccf9490](https://github.com/dsj1984/mandrel/commit/ccf94901e671a04c3ad381ac4466781ed9a808e7))
352
+ * **hooks:** rebalance pre-push to diff-scoped gates ([#2745](https://github.com/dsj1984/mandrel/issues/2745)) ([#2754](https://github.com/dsj1984/mandrel/issues/2754)) ([5f93eb0](https://github.com/dsj1984/mandrel/commit/5f93eb05bcf443bb5b8ce9d3fb5158cd379d6d25))
353
+ * **idea-refinement:** fold grill-me interrogation pattern into Phase 2 (resolves [#1926](https://github.com/dsj1984/mandrel/issues/1926)) ([#1932](https://github.com/dsj1984/mandrel/issues/1932)) ([987eb93](https://github.com/dsj1984/mandrel/commit/987eb93c78bb8a6529228932bcaca21af654ead2))
354
+ * implement analyze-execution.js CLI core (resolves [#1045](https://github.com/dsj1984/mandrel/issues/1045)) ([99c42ac](https://github.com/dsj1984/mandrel/commit/99c42ac7c2fef18e2fcd104f988b7aa572a8ea5e))
355
+ * implement signals-writer module + unit tests (resolves [#1041](https://github.com/dsj1984/mandrel/issues/1041)) ([b92d5e4](https://github.com/dsj1984/mandrel/commit/b92d5e45eaadd5ff8edc1face804e286232b79a9))
356
+ * invert dependency direction in `lib/orchestration/index.js` (resolves [#1083](https://github.com/dsj1984/mandrel/issues/1083)) ([1425183](https://github.com/dsj1984/mandrel/commit/14251831eddf365f0408f95021a80d4864d7cb32))
357
+ * **manifest-persistence:** sweep legacy dispatch-manifest-&lt;id&gt;.{md,json} orphans on render (resolves [#1141](https://github.com/dsj1984/mandrel/issues/1141)) ([7c7daef](https://github.com/dsj1984/mandrel/commit/7c7daef19dc4469d6518036e10ecd8fe8bb61c4b))
358
+ * **manifest:** move Agent Operating Procedures & symbol reference to the top ([#1765](https://github.com/dsj1984/mandrel/issues/1765)) ([4754261](https://github.com/dsj1984/mandrel/commit/475426166e2cbf3eda4733010b120f096d94f859))
359
+ * **manifest:** trim dispatch manifest markdown for clean top-to-bottom flow ([#1344](https://github.com/dsj1984/mandrel/issues/1344)) ([1b5e051](https://github.com/dsj1984/mandrel/commit/1b5e0512fa5aab5c13c623af455231f2d20c1022))
360
+ * migrate all temp-path writers, readers, and workflow docs to per-Epic tree (resolves [#1040](https://github.com/dsj1984/mandrel/issues/1040)) ([10be30d](https://github.com/dsj1984/mandrel/commit/10be30ded8e4187080973caeb5081b9fe26e3b1a))
361
+ * migrate diagnose-friction to writer; delete friction-emitter cooldown (resolves [#1042](https://github.com/dsj1984/mandrel/issues/1042)) ([9c7a64d](https://github.com/dsj1984/mandrel/commit/9c7a64d342d6099c0f64744c03ee5aa4b323c35e))
362
+ * move HTTP client under `providers/github/` (resolves [#1084](https://github.com/dsj1984/mandrel/issues/1084)) ([4b6861f](https://github.com/dsj1984/mandrel/commit/4b6861f9d9d2975e8031ac1ba239ebba07a6f5eb))
363
+ * **notify:** curate webhook channel to epic-* event allowlist ([#1264](https://github.com/dsj1984/mandrel/issues/1264)) ([90bffe5](https://github.com/dsj1984/mandrel/commit/90bffe5ac518a632254d27593ccf25dbd3ae53ee))
364
+ * **observability:** add lib/observability/signals-writer.js with append/foreachline api (resolves [#1056](https://github.com/dsj1984/mandrel/issues/1056)) ([5c9016f](https://github.com/dsj1984/mandrel/commit/5c9016f96fee1cf185ed015fd56eab211cd00ae6))
365
+ * **observability:** add lib/observability/tool-trace-hook.js with pre/post entry points (resolves [#1058](https://github.com/dsj1984/mandrel/issues/1058)) ([233f8dc](https://github.com/dsj1984/mandrel/commit/233f8dcf1d4f07300252630c4dffa7fea4994e48))
366
+ * **observability:** measure & de-duplicate /epic-deliver (Epic [#3019](https://github.com/dsj1984/mandrel/issues/3019)) ([#3084](https://github.com/dsj1984/mandrel/issues/3084)) ([fe95b9f](https://github.com/dsj1984/mandrel/commit/fe95b9f462fe0a695d1651dbd38ec76bdc362ec6))
367
+ * **observability:** wire trace hook into .claude/settings.json + propagate env vars from story-init (resolves [#1061](https://github.com/dsj1984/mandrel/issues/1061)) ([91d7b57](https://github.com/dsj1984/mandrel/commit/91d7b579fc1ad9883e6dc3c526324eb0c9e60a7c))
368
+ * **orchestration:** add BranchCleaner lifecycle listener for end-of-Epic branch reap ([#2402](https://github.com/dsj1984/mandrel/issues/2402)) ([b912e54](https://github.com/dsj1984/mandrel/commit/b912e54f5da1c2c8305af4ef0e6eead8f6050d7f)), closes [#2398](https://github.com/dsj1984/mandrel/issues/2398)
369
+ * **orchestration:** close Tasks at commit-time; defer epic-complete to PR-ready ([f0b3d7a](https://github.com/dsj1984/mandrel/commit/f0b3d7a48c45e2dbc5e554b947750bdbb4dee26a))
370
+ * **orchestration:** propagate ticket state upward on every transition ([#2677](https://github.com/dsj1984/mandrel/issues/2677)) ([29a036d](https://github.com/dsj1984/mandrel/commit/29a036deea739a0ec7abd39ba8e76dc2ebeb8d5b)), closes [#2676](https://github.com/dsj1984/mandrel/issues/2676)
371
+ * **orchestration:** record model attribution as structured comments on tasks + rollup ([#2814](https://github.com/dsj1984/mandrel/issues/2814)) ([3bbea99](https://github.com/dsj1984/mandrel/commit/3bbea99cf09260dd8d227d41b370db72226aa24a)), closes [#2813](https://github.com/dsj1984/mandrel/issues/2813)
372
+ * **perf:** parallelise calculateAll and scanAndScore via worker pool ([036a5c4](https://github.com/dsj1984/mandrel/commit/036a5c4c06cae31e3a089529c03cd125c14a2a2f))
373
+ * **planning:** decomposer cross-cutting rule covers registries + symbol fan-out ([#2974](https://github.com/dsj1984/mandrel/issues/2974)) ([5b3cb85](https://github.com/dsj1984/mandrel/commit/5b3cb852276653c82d1d84c084121f637d234842)), closes [#2962](https://github.com/dsj1984/mandrel/issues/2962)
374
+ * **post-merge:** replace phase-timings comment phase with analyzer perf-summary invocation (resolves [#1064](https://github.com/dsj1984/mandrel/issues/1064)) ([71c291b](https://github.com/dsj1984/mandrel/commit/71c291babb78ab8a24d6563729e9181d7a611460))
375
+ * **pr-watch:** auto-recover from BEHIND mergeStateStatus during PR watch loops ([#2009](https://github.com/dsj1984/mandrel/issues/2009)) ([fc013e8](https://github.com/dsj1984/mandrel/commit/fc013e81a1318fc9b0564b6bf0f3e4bc97ba4e4b))
376
+ * **pre-push:** add STORY_CLOSE_RECOVERY scoped coverage-gate bypass (refs [#3162](https://github.com/dsj1984/mandrel/issues/3162)) ([#3171](https://github.com/dsj1984/mandrel/issues/3171)) ([62bbd2f](https://github.com/dsj1984/mandrel/commit/62bbd2f08954abe67af4a5912e97c30744f3cf41))
377
+ * probe + commit a custom wave-runner sub-agent type (resolves [#1122](https://github.com/dsj1984/mandrel/issues/1122)) ([5c49c6c](https://github.com/dsj1984/mandrel/commit/5c49c6c73744182b2223f93c3d50902569d7afaa))
378
+ * **providers:** retry transient gh-api reads + cap paginateRest pages ([#2857](https://github.com/dsj1984/mandrel/issues/2857)) ([b8a60e6](https://github.com/dsj1984/mandrel/commit/b8a60e6ba7db6e2129b28a7aa38ace3391fccafc)), closes [#2852](https://github.com/dsj1984/mandrel/issues/2852)
379
+ * **qa-harness:** accept name-only personas for url-template seams (refs [#3306](https://github.com/dsj1984/mandrel/issues/3306)) ([#3309](https://github.com/dsj1984/mandrel/issues/3309)) ([6a96c07](https://github.com/dsj1984/mandrel/commit/6a96c07bc8a1789c2dcde54b9341b13ff3164d1d))
380
+ * **release:** 5.36.4 — remove sprintClose.runRetro back-compat shim ([8b5c0ab](https://github.com/dsj1984/mandrel/commit/8b5c0ab7c7d8b4ce4a161484251179765d89a29b))
381
+ * replace WorktreeManager.isSafeToRemove heuristic with git merge-base --is-ancestor (resolves [#1121](https://github.com/dsj1984/mandrel/issues/1121)) ([6acf52f](https://github.com/dsj1984/mandrel/commit/6acf52f286b55c3716d261522faccb4048d4cf89))
382
+ * retire prose-legacy hydration output mode ([#2864](https://github.com/dsj1984/mandrel/issues/2864)) ([#2865](https://github.com/dsj1984/mandrel/issues/2865)) ([5d514c9](https://github.com/dsj1984/mandrel/commit/5d514c9d9d1e148a9eab9d693988548f732434f2))
383
+ * **retro:** read story-perf-summary + epic-perf-report comments + mirror retro to temp/ (resolves [#1067](https://github.com/dsj1984/mandrel/issues/1067)) ([ee16c81](https://github.com/dsj1984/mandrel/commit/ee16c81cd0409b7e56e454ac72e4485533cadad3))
384
+ * run close-validation gates inside the worktree, read baselines from epic ref (resolves [#1120](https://github.com/dsj1984/mandrel/issues/1120)) ([fdc838b](https://github.com/dsj1984/mandrel/commit/fdc838b2f72cd6665c06a60513861d4071725d67))
385
+ * **schemas:** publish signal-event, story-perf-summary, epic-perf-report schemas + agentrc signals block (resolves [#1050](https://github.com/dsj1984/mandrel/issues/1050)) ([14ddd9e](https://github.com/dsj1984/mandrel/commit/14ddd9e1041e4d9dccae74018b0a8ac39da53aff))
386
+ * **scripts:** create lib/branch-name-guard.js with the union of both existing guards (resolves [#1099](https://github.com/dsj1984/mandrel/issues/1099)) ([5f6c9d3](https://github.com/dsj1984/mandrel/commit/5f6c9d35c0ca228546a9251e5d9ce90c90114694))
387
+ * SDLC state-machine consolidation (Epic [#2880](https://github.com/dsj1984/mandrel/issues/2880)) ([#2958](https://github.com/dsj1984/mandrel/issues/2958)) ([ac84841](https://github.com/dsj1984/mandrel/commit/ac84841aaa77c940efbc5efba520d0a295b5c994))
388
+ * ship analyze-execution.js with --story and --epic modes (resolves [#1123](https://github.com/dsj1984/mandrel/issues/1123)) ([e86b711](https://github.com/dsj1984/mandrel/commit/e86b7110fb2fc60c523be7cada7d25e232c0b7e0))
389
+ * **single-story-close:** add wrong-tree edit guard (refs [#3364](https://github.com/dsj1984/mandrel/issues/3364)) ([#3366](https://github.com/dsj1984/mandrel/issues/3366)) ([db07f38](https://github.com/dsj1984/mandrel/commit/db07f382863b7a80d19012dadb291b9f8666e22b))
390
+ * **single-story-execute:** standalone Story workflow (no parent Epic) ([#1475](https://github.com/dsj1984/mandrel/issues/1475)) ([4f56c49](https://github.com/dsj1984/mandrel/commit/4f56c495d1ec0f86a7807d31a73f09b8d564ae85))
391
+ * **single-story:** enable auto-merge by default; expose prNumber ([be81e11](https://github.com/dsj1984/mandrel/commit/be81e11ac974b2e8b055755fa6cce31024fc728e))
392
+ * skill library index + policy capsules (Epic [#2647](https://github.com/dsj1984/mandrel/issues/2647)) ([#2755](https://github.com/dsj1984/mandrel/issues/2755)) ([2e7f2b8](https://github.com/dsj1984/mandrel/commit/2e7f2b8d48ee147e2f4ad1f783eb29d8806088eb))
393
+ * story-close attributes baseline refreshes to the Story whose diff caused them (resolves [#1124](https://github.com/dsj1984/mandrel/issues/1124)) ([1390ffa](https://github.com/dsj1984/mandrel/commit/1390ffa3217cc4506f4d89efa521a171de68312e))
394
+ * **story-close:** bounded timeout for biome-format + baseline-refresh spawns ([#2165](https://github.com/dsj1984/mandrel/issues/2165)) ([#2180](https://github.com/dsj1984/mandrel/issues/2180)) ([01a61b3](https://github.com/dsj1984/mandrel/commit/01a61b32488ea6dc9031a5427a2029f56b67a043))
395
+ * **story-close:** classify baseline regressions as attributable vs non-attributable per story diff (resolves [#1132](https://github.com/dsj1984/mandrel/issues/1132)) ([627459a](https://github.com/dsj1984/mandrel/commit/627459ac2181c81a1e035462325f8ccc6cbda2af))
396
+ * **story-close:** wire attribution classifier and friction posting into story-close (resolves [#1134](https://github.com/dsj1984/mandrel/issues/1134)) ([88115d1](https://github.com/dsj1984/mandrel/commit/88115d19c54bb5a5139a38751f0e7dbe23cf7d33))
397
+ * **story-deliver:** add stories-wave-tick.js DAG/wave engine with unit tests (refs [#3233](https://github.com/dsj1984/mandrel/issues/3233)) ([#3243](https://github.com/dsj1984/mandrel/issues/3243)) ([72fba7e](https://github.com/dsj1984/mandrel/commit/72fba7e4c3ef89e6e97f410a0c922a8cd04565c5))
398
+ * sweep dispatch-manifest-&lt;id&gt;.{md,json} orphans on each manifest render (resolves [#1126](https://github.com/dsj1984/mandrel/issues/1126)) ([1dbe62e](https://github.com/dsj1984/mandrel/commit/1dbe62ef4774b5091f6c9aa3864e8d7164d8a933))
399
+ * **sweep:** protect active worktrees + add cross-session lock (resolves [#2011](https://github.com/dsj1984/mandrel/issues/2011)) ([#2013](https://github.com/dsj1984/mandrel/issues/2013)) ([67e6bd9](https://github.com/dsj1984/mandrel/commit/67e6bd9c84507368eb4d5c6659cdb9d9d2859f40))
400
+ * **tests:** add test-isolate diagnostic for pollution cascades ([#2976](https://github.com/dsj1984/mandrel/issues/2976)) ([420d4f5](https://github.com/dsj1984/mandrel/commit/420d4f54487bd452766abe2c3dc7273f872338bc)), closes [#2963](https://github.com/dsj1984/mandrel/issues/2963)
401
+ * **wave-execute:** route wave/epic dispatch through subagent_type: wave-runner (resolves [#1137](https://github.com/dsj1984/mandrel/issues/1137)) ([f34b0de](https://github.com/dsj1984/mandrel/commit/f34b0deda490757b07323909d9b33582af0e5112))
402
+ * **wave-runner:** extract wave loop into lib/wave-runner/tick.js + thin CLI ([#1477](https://github.com/dsj1984/mandrel/issues/1477)) ([a236fd2](https://github.com/dsj1984/mandrel/commit/a236fd2a421147ccad0f594255ccf2daf512d3eb))
403
+ * wire story-perf-summary into post-merge pipeline; epic-perf-report into Epic close + retro (resolves [#1046](https://github.com/dsj1984/mandrel/issues/1046)) ([70626b7](https://github.com/dsj1984/mandrel/commit/70626b7046a83fc3ddd5ce28b3c979183edf976d))
404
+ * **workflows:** add /audit-to-stories — convert audit MD findings into actionable GitHub Stories ([#2583](https://github.com/dsj1984/mandrel/issues/2583)) ([#2585](https://github.com/dsj1984/mandrel/issues/2585)) ([e4ab422](https://github.com/dsj1984/mandrel/commit/e4ab4227c84b825f259b8682c95a285baafe08b3))
405
+ * **workflows:** add /single-story-plan for standalone Story drafting (resolves [#2293](https://github.com/dsj1984/mandrel/issues/2293)) ([#2295](https://github.com/dsj1984/mandrel/issues/2295)) ([7b9b3b7](https://github.com/dsj1984/mandrel/commit/7b9b3b7cd76d9d92dff9aa451c05fbc6b039199e))
406
+ * **workflows:** create helpers/epic-deliver-story.md and repoint epic-deliver fan-out (refs [#3229](https://github.com/dsj1984/mandrel/issues/3229)) ([#3239](https://github.com/dsj1984/mandrel/issues/3239)) ([6173324](https://github.com/dsj1984/mandrel/commit/6173324d502126dbacff665ffa8479beeac94bba))
407
+
408
+
409
+ ### Fixed
410
+
411
+ * **analyze-execution:** use runascli wrapper to satisfy cli-wrapper enforcement (resolves [#1135](https://github.com/dsj1984/mandrel/issues/1135)) ([5229fee](https://github.com/dsj1984/mandrel/commit/5229fee1f10c84e855a4bf6fe78a564ce8b67498))
412
+ * **audit:** isolate audit selector and acceptance reconciler per-epic (refs [#3362](https://github.com/dsj1984/mandrel/issues/3362)) ([#3365](https://github.com/dsj1984/mandrel/issues/3365)) ([8cd28e5](https://github.com/dsj1984/mandrel/commit/8cd28e5483078d289db59c2673ecddbddbb724bb))
413
+ * baseline-refresh epic-merge-lock.js (Node 22 instrumentation) ([#1233](https://github.com/dsj1984/mandrel/issues/1233)) ([7daf164](https://github.com/dsj1984/mandrel/commit/7daf164a5fbe7f550d5683f895311ec08e3bc1ec))
414
+ * **baselines/writer:** project legacy prior rows through projectRow at writer entry ([#2578](https://github.com/dsj1984/mandrel/issues/2578)) ([a106457](https://github.com/dsj1984/mandrel/commit/a1064577334a0cc4a901500f7888dd18b9fb6e29)), closes [#2574](https://github.com/dsj1984/mandrel/issues/2574)
415
+ * **baselines:** classify new files as additions, not regressions (resolves [#2012](https://github.com/dsj1984/mandrel/issues/2012)) ([#2058](https://github.com/dsj1984/mandrel/issues/2058)) ([3bcb15a](https://github.com/dsj1984/mandrel/commit/3bcb15a8ff8fc36176b168330a173536b983eb06))
416
+ * **baselines:** harden MI scorer against escomplex parse-fail phantoms ([#2998](https://github.com/dsj1984/mandrel/issues/2998)) ([8023458](https://github.com/dsj1984/mandrel/commit/8023458c597689020ba04e0b1c802fe3170407c3)), closes [#2996](https://github.com/dsj1984/mandrel/issues/2996)
417
+ * **baselines:** maintainability/crap update writes worktree-relative paths instead of repo-relative ([#2079](https://github.com/dsj1984/mandrel/issues/2079)) ([#2080](https://github.com/dsj1984/mandrel/issues/2080)) ([b5f0f24](https://github.com/dsj1984/mandrel/commit/b5f0f245b0b306e984c617efa74b57eceaf2a817))
418
+ * **baselines:** ship refresh-service.js inside .agents/ bundle ([#2579](https://github.com/dsj1984/mandrel/issues/2579)) ([e27c109](https://github.com/dsj1984/mandrel/commit/e27c109597485301f9f7d6597c8e5e81b725c8a2)), closes [#2572](https://github.com/dsj1984/mandrel/issues/2572)
419
+ * **bdd-detect:** scan workspace package.json files in monorepos ([#2957](https://github.com/dsj1984/mandrel/issues/2957)) ([456326e](https://github.com/dsj1984/mandrel/commit/456326ee41da1a8443125665cf28592215877e67))
420
+ * **bootstrap:** close consumer-side runtime-deps install gap ([#2057](https://github.com/dsj1984/mandrel/issues/2057)) ([#2061](https://github.com/dsj1984/mandrel/issues/2061)) ([4cfc564](https://github.com/dsj1984/mandrel/commit/4cfc564619626ca80e988a20440ea9ba2bdfa2b7))
421
+ * **bootstrap:** handle fresh-empty-repo bootstrap failure modes ([#2022](https://github.com/dsj1984/mandrel/issues/2022)) ([28ae5d4](https://github.com/dsj1984/mandrel/commit/28ae5d481ca9fb256e6b22bc9e515b2dcc74f5e5)), closes [#2018](https://github.com/dsj1984/mandrel/issues/2018)
422
+ * **bootstrap:** sync-agentrc and quality-bootstrap contradict each other on default-key writes ([#2281](https://github.com/dsj1984/mandrel/issues/2281)) ([#2285](https://github.com/dsj1984/mandrel/issues/2285)) ([c6626f3](https://github.com/dsj1984/mandrel/commit/c6626f3723f1a772e90f3eb030402d0a4af6388f))
423
+ * **cascade:** enable parent-Feature cascade from single-story close path ([#3242](https://github.com/dsj1984/mandrel/issues/3242)) ([368bc1d](https://github.com/dsj1984/mandrel/commit/368bc1d9a8e5c8133be3c16c2ab385896971f3af))
424
+ * **cascade:** preserve orchestrator footer and walk native Sub-Issues parent (resolves [#2982](https://github.com/dsj1984/mandrel/issues/2982)) ([#2983](https://github.com/dsj1984/mandrel/issues/2983)) ([5b2b51d](https://github.com/dsj1984/mandrel/commit/5b2b51defb065e6066b46be43316e0a2dbd8cbf8))
425
+ * **checkpointer:** refresh totalWaves on re-prepare delta ([#1821](https://github.com/dsj1984/mandrel/issues/1821)) ([a148964](https://github.com/dsj1984/mandrel/commit/a148964fcd661b0f492bab6e3623a1d15265abba)), closes [#1816](https://github.com/dsj1984/mandrel/issues/1816)
426
+ * **ci:** denominator-aware coverage tolerance + c=1 CRAP exemption ([#1234](https://github.com/dsj1984/mandrel/issues/1234)) ([3a95bdc](https://github.com/dsj1984/mandrel/commit/3a95bdcb46ea7d45d0499e0a9a921f12333beef3))
427
+ * **ci:** revert local-only coverage ratchets for three flapping files ([#1265](https://github.com/dsj1984/mandrel/issues/1265)) ([731d0d0](https://github.com/dsj1984/mandrel/commit/731d0d0baea79a41ab13c1f77fef47889ea531c2))
428
+ * **ci:** SHA-pin third-party GitHub Actions (refs [#3399](https://github.com/dsj1984/mandrel/issues/3399)) ([#3403](https://github.com/dsj1984/mandrel/issues/3403)) ([32a3744](https://github.com/dsj1984/mandrel/commit/32a374436718e97f91da274930d25120b81b0388))
429
+ * **cli:** add defineFlags export and finish parseCliArgs migration ([cf8cb6f](https://github.com/dsj1984/mandrel/commit/cf8cb6f19c59a80809b68fd5a0672f037d3902f2))
430
+ * **close:** defer agent::done + issue-close to PR-merge in standalone story-close (refs [#3385](https://github.com/dsj1984/mandrel/issues/3385)) ([#3395](https://github.com/dsj1984/mandrel/issues/3395)) ([43dd1f4](https://github.com/dsj1984/mandrel/commit/43dd1f45c734b97c2c3cc647d55ab3e8c0e5d221))
431
+ * **column-sync:** look up project item by issue, not by paginated board scan ([#2633](https://github.com/dsj1984/mandrel/issues/2633)) ([bc6b6e4](https://github.com/dsj1984/mandrel/commit/bc6b6e4b2e1cf736cc65b6c67b022a3fa04146fa)), closes [#2632](https://github.com/dsj1984/mandrel/issues/2632)
432
+ * **config:** getQuality reads wrong shape — operator coverage timeout never honored ([#2959](https://github.com/dsj1984/mandrel/issues/2959)) ([#2969](https://github.com/dsj1984/mandrel/issues/2969)) ([09409e6](https://github.com/dsj1984/mandrel/commit/09409e6e07646fdb6b98d79b0836e95a9427a584))
433
+ * **coverage:** wire .c8rc.cjs scope through `c8 report` + `check-coverage` ([ca7745c](https://github.com/dsj1984/mandrel/commit/ca7745cf936c43608cc912d876fe96255db276bc))
434
+ * **emit-context:** route Logger output to stderr to keep stdout pure JSON ([#2287](https://github.com/dsj1984/mandrel/issues/2287)) ([5622bd6](https://github.com/dsj1984/mandrel/commit/5622bd6cf63645778a8e108626e5176883ba6b44)), closes [#2278](https://github.com/dsj1984/mandrel/issues/2278)
435
+ * **epic-deliver-cleanup:** reap local-side leftovers after merge ([#1348](https://github.com/dsj1984/mandrel/issues/1348)) ([aea6f6c](https://github.com/dsj1984/mandrel/commit/aea6f6c6360dc943430ea38be23604a7d3870d48))
436
+ * **epic-plan-decompose:** preserve acceptance::* and planning::* on Epic through reconciler ([#3052](https://github.com/dsj1984/mandrel/issues/3052)) ([0e96fac](https://github.com/dsj1984/mandrel/commit/0e96fac373b5414917485da1165be435f0c52197)), closes [#3050](https://github.com/dsj1984/mandrel/issues/3050)
437
+ * **epic-plan-decompose:** preserve Epic body through reconciler persist ([#2286](https://github.com/dsj1984/mandrel/issues/2286)) ([07e50e5](https://github.com/dsj1984/mandrel/commit/07e50e59e355040115c38586fdf5fdfba8e541c6)), closes [#2283](https://github.com/dsj1984/mandrel/issues/2283)
438
+ * **epic-plan-decompose:** restore sub-issue link safety net + branch cleanup ([#2067](https://github.com/dsj1984/mandrel/issues/2067)) ([450b159](https://github.com/dsj1984/mandrel/commit/450b159b414cb87603668f3cac1747f6a460c1a7)), closes [#2063](https://github.com/dsj1984/mandrel/issues/2063)
439
+ * **epic-plan:** overwrite context tickets in place on --force re-plan (refs [#3310](https://github.com/dsj1984/mandrel/issues/3310)) ([#3314](https://github.com/dsj1984/mandrel/issues/3314)) ([3c4c5b5](https://github.com/dsj1984/mandrel/commit/3c4c5b52641dd54de7cf571c33872d073bdf098c))
440
+ * **epic-plan:** route --emit-context drain logs to stderr ([#2055](https://github.com/dsj1984/mandrel/issues/2055)) ([#2066](https://github.com/dsj1984/mandrel/issues/2066)) ([295bd4b](https://github.com/dsj1984/mandrel/commit/295bd4b0fceb9e9b34c63c8678f7bc15ca02d8e2))
441
+ * **epic-runner:** emit epic-blocked before epic-progress on wave halt ([d7daa35](https://github.com/dsj1984/mandrel/commit/d7daa35a9423517f4beada68a02e872806be1a5d))
442
+ * **epic-spec-reconciler:** preserve type::* and risk::* labels on Epic persist ([#2064](https://github.com/dsj1984/mandrel/issues/2064)) ([c6aa08f](https://github.com/dsj1984/mandrel/commit/c6aa08f5824b749122317e237a59ebf164d9a01a)), closes [#2056](https://github.com/dsj1984/mandrel/issues/2056)
443
+ * **finalize:** strip [skip ci] markers from openOrLocatePr body (refs [#3165](https://github.com/dsj1984/mandrel/issues/3165)) ([#3176](https://github.com/dsj1984/mandrel/issues/3176)) ([0374a1d](https://github.com/dsj1984/mandrel/commit/0374a1dffa96dfacc1ef116d854009edc82d9710))
444
+ * **full-agentrc:** correct floor axis keys to match v2 envelopes ([#2577](https://github.com/dsj1984/mandrel/issues/2577)) ([bdb90d7](https://github.com/dsj1984/mandrel/commit/bdb90d781c3d4658fe6f720a208db328b5aa5a17)), closes [#2573](https://github.com/dsj1984/mandrel/issues/2573)
445
+ * **git-cleanup-branches:** prune via `git fetch --prune` to defeat GitHub replication lag ([#1716](https://github.com/dsj1984/mandrel/issues/1716)) ([260d5a5](https://github.com/dsj1984/mandrel/commit/260d5a513079f737990cf2633dd95177942e5532))
446
+ * **git-cleanup:** correct merged-PR signal and guard DEP0190 stderr ([#2498](https://github.com/dsj1984/mandrel/issues/2498)) ([8fe3ea0](https://github.com/dsj1984/mandrel/commit/8fe3ea063ea2aa1c495731e1d3dabe94e5c51363))
447
+ * **git-cleanup:** split current-HEAD skip + add remote-only sweep ([#2446](https://github.com/dsj1984/mandrel/issues/2446)) ([8b63fee](https://github.com/dsj1984/mandrel/commit/8b63feed54b738e97492c00ae284b0db3148f9d1)), closes [#2445](https://github.com/dsj1984/mandrel/issues/2445)
448
+ * guard postinstall + unignore framework .agents/ source (refs [#3489](https://github.com/dsj1984/mandrel/issues/3489)) ([#3531](https://github.com/dsj1984/mandrel/issues/3531)) ([4c68d6b](https://github.com/dsj1984/mandrel/commit/4c68d6bfc94e39682a7090d2b36bcde5605ae76a))
449
+ * **lifecycle:** allow epicId on epic.automerge.start payload ([#2856](https://github.com/dsj1984/mandrel/issues/2856)) ([c76b7ae](https://github.com/dsj1984/mandrel/commit/c76b7aec424ef5d6dddb9043ec2421b643dc24d5)), closes [#2855](https://github.com/dsj1984/mandrel/issues/2855)
450
+ * **lifecycle:** close-tail completeness — audit-results marker, epic.merge.* schemas, Phase 7 doc-truth ([#2710](https://github.com/dsj1984/mandrel/issues/2710)) ([41c4c84](https://github.com/dsj1984/mandrel/commit/41c4c84ec272f501f3d6e30df6ecb71a0d8357e1)), closes [#2681](https://github.com/dsj1984/mandrel/issues/2681)
451
+ * **lifecycle:** stop epic.close.end cascading into branch reap (refs [#3367](https://github.com/dsj1984/mandrel/issues/3367)) ([#3381](https://github.com/dsj1984/mandrel/issues/3381)) ([9d21318](https://github.com/dsj1984/mandrel/commit/9d213186c6511a1a2128f472512f24271e05af46))
452
+ * **lint-baseline:** honor agentrc override and run shim launchers via shell ([#2752](https://github.com/dsj1984/mandrel/issues/2752)) ([6c39c29](https://github.com/dsj1984/mandrel/commit/6c39c292433a67067f2cb5dee713658306f4cfcb)), closes [#2750](https://github.com/dsj1984/mandrel/issues/2750)
453
+ * **maintainability:** raise tolerance 0.001 → 0.5, plumb config (kills baseline-refresh-guardrail flap) ([#1269](https://github.com/dsj1984/mandrel/issues/1269)) ([f1877c6](https://github.com/dsj1984/mandrel/commit/f1877c642c1c5af732721b4e98a880c570652c0d))
454
+ * **observability:** support standalone stories with null epicId ([#2875](https://github.com/dsj1984/mandrel/issues/2875)) ([d20c51e](https://github.com/dsj1984/mandrel/commit/d20c51e49cc24914f21bffab6828025344f94aef)), closes [#2874](https://github.com/dsj1984/mandrel/issues/2874)
455
+ * **orchestration:** cap Auto-resolved-file trailer at 100 chars (refs [#3160](https://github.com/dsj1984/mandrel/issues/3160)) ([#3170](https://github.com/dsj1984/mandrel/issues/3170)) ([fbdf13d](https://github.com/dsj1984/mandrel/commit/fbdf13d8306ed3fbabac2afa0f6a0a8fc35ec51b))
456
+ * **orchestration:** flip task labels at per-task start, not story-init ([#2779](https://github.com/dsj1984/mandrel/issues/2779)) ([a155549](https://github.com/dsj1984/mandrel/commit/a155549ccaff45134e5c3306c059f836af23fe9a))
457
+ * **orchestration:** harden reassertStatusColumn with poll-and-retry ([#2878](https://github.com/dsj1984/mandrel/issues/2878)) ([8efcc28](https://github.com/dsj1984/mandrel/commit/8efcc28e1f4513cbf1dd008a91457f5d438955b1)), closes [#2876](https://github.com/dsj1984/mandrel/issues/2876)
458
+ * **orchestration:** own Projects v2 Status column — audit + post-merge re-sync ([#2847](https://github.com/dsj1984/mandrel/issues/2847)) ([acc277d](https://github.com/dsj1984/mandrel/commit/acc277da06d6c5971dd7295bf9808c0ad4be7247)), closes [#2845](https://github.com/dsj1984/mandrel/issues/2845)
459
+ * **orchestration:** refuse PR creation against main when Story has Epic parent ([#2967](https://github.com/dsj1984/mandrel/issues/2967)) ([a5dcb0d](https://github.com/dsj1984/mandrel/commit/a5dcb0d155137caa995aedba53eff2882be541ae)), closes [#2960](https://github.com/dsj1984/mandrel/issues/2960)
460
+ * **quality:** inject framework-default floors in resolver; delete dead per-row machinery ([#2125](https://github.com/dsj1984/mandrel/issues/2125)) ([#2126](https://github.com/dsj1984/mandrel/issues/2126)) ([4c3d687](https://github.com/dsj1984/mandrel/commit/4c3d6875a7dd61eeb49888330f9711d29a91d1ea))
461
+ * **reconciler:** order dependsOn ahead of dependents in topo-sort ([#1787](https://github.com/dsj1984/mandrel/issues/1787)) ([87b0a5f](https://github.com/dsj1984/mandrel/commit/87b0a5fbbf5efa9445164a4ec70c371b0789579b))
462
+ * **reconciler:** seed epic slug in state before diff to stop duplicate Epic issues ([#1823](https://github.com/dsj1984/mandrel/issues/1823)) ([a4523ce](https://github.com/dsj1984/mandrel/commit/a4523ceafbbabffe2118d3ff3fe8c52c2e62b5f4)), closes [#1820](https://github.com/dsj1984/mandrel/issues/1820)
463
+ * **release:** use PAT so release-please PRs trigger CI ([#1933](https://github.com/dsj1984/mandrel/issues/1933)) ([4ee603f](https://github.com/dsj1984/mandrel/commit/4ee603f4317e92f3c75397bae28a3e8a3adb75c2))
464
+ * **release:** version Epic merges and fix agents-update changelog source ([#3307](https://github.com/dsj1984/mandrel/issues/3307)) ([44ea136](https://github.com/dsj1984/mandrel/commit/44ea136aef07154f414150f2ee89c4d6f264382d))
465
+ * **retro:** align retro-runner with ITicketingProvider; add no-op guard; count manual interventions ([#2290](https://github.com/dsj1984/mandrel/issues/2290)) ([3815739](https://github.com/dsj1984/mandrel/commit/3815739f0cc707c8ea24606198edf55936de9357)), closes [#2289](https://github.com/dsj1984/mandrel/issues/2289)
466
+ * **review:** close correctness/doc gaps from medium-low review pass ([7d6b61a](https://github.com/dsj1984/mandrel/commit/7d6b61ac7d86ae9793ef8ad44f70c904d693e3ac))
467
+ * **review:** handle PathEntry objects in analyseChanges, suppress MI noise, fix lint errors ([#3248](https://github.com/dsj1984/mandrel/issues/3248)) ([972fe78](https://github.com/dsj1984/mandrel/commit/972fe783fac74b7040c992c68bec4695738c6086))
468
+ * scope epic child-ticket fetch through getSubTickets in reconciliation (refs [#3455](https://github.com/dsj1984/mandrel/issues/3455)) ([#3456](https://github.com/dsj1984/mandrel/issues/3456)) ([c447940](https://github.com/dsj1984/mandrel/commit/c4479405c3012d19619120e92cb9126a5a8d6c8a))
469
+ * **single-story-close:** pass epicId: null for standalone Stories ([#1478](https://github.com/dsj1984/mandrel/issues/1478)) ([c288bd3](https://github.com/dsj1984/mandrel/commit/c288bd3c231c8a345a72814807329a88341e295f))
470
+ * **single-story-deliver:** route label flips through transitionTicketState so Projects v2 Status syncs ([#2739](https://github.com/dsj1984/mandrel/issues/2739)) ([5f4e6e2](https://github.com/dsj1984/mandrel/commit/5f4e6e291f89f7f4353b6a72d57f173982b25c75)), closes [#2717](https://github.com/dsj1984/mandrel/issues/2717)
471
+ * **single-story:** fast-forward local main after deliver and at init ([#2753](https://github.com/dsj1984/mandrel/issues/2753)) ([80a5cea](https://github.com/dsj1984/mandrel/commit/80a5cea77dcc43968fc5e0a9be0e420ba5cc871f))
472
+ * **single-story:** gate confirm-merge noop on agent::done label not closed issue (refs [#3415](https://github.com/dsj1984/mandrel/issues/3415)) ([#3416](https://github.com/dsj1984/mandrel/issues/3416)) ([6ac471e](https://github.com/dsj1984/mandrel/commit/6ac471edd3da4869d3632a0f85e7edc199840835))
473
+ * **skill:** align decompose-author SKILL Story-body shape with validator + provider contract (refs [#3263](https://github.com/dsj1984/mandrel/issues/3263)) ([#3267](https://github.com/dsj1984/mandrel/issues/3267)) ([5b6a439](https://github.com/dsj1984/mandrel/commit/5b6a4390bec18621ad8a0e5e279f513d2b4dc070))
474
+ * **skills:** enforce manifest schema and dedupe SKILL walkers ([#2757](https://github.com/dsj1984/mandrel/issues/2757)) ([88b0098](https://github.com/dsj1984/mandrel/commit/88b0098aad447fc04739c5fe34fb1cf57bec1e89))
475
+ * **spec-renderer:** omit tasks: [] for 3-tier Stories (refs [#3163](https://github.com/dsj1984/mandrel/issues/3163)) ([#3177](https://github.com/dsj1984/mandrel/issues/3177)) ([859fe4b](https://github.com/dsj1984/mandrel/commit/859fe4ba47050e2be98ee36e1c642dcaee0e4f87))
476
+ * **spec:** write epic spec + state under temp/epic-&lt;id&gt;/, untrack leaked temp/ files ([#1715](https://github.com/dsj1984/mandrel/issues/1715)) ([0965e85](https://github.com/dsj1984/mandrel/commit/0965e85535dfde1f26ca988156a4edc53e521891))
477
+ * **story-body:** serialize object bodies in createOp; parse string bodies in freshness + assumption gates (refs [#3302](https://github.com/dsj1984/mandrel/issues/3302)) ([#3303](https://github.com/dsj1984/mandrel/issues/3303)) ([69322ac](https://github.com/dsj1984/mandrel/commit/69322ac2ed772b7fb6281c0aa49c0087a6834fbb))
478
+ * **story-close:** assert final label is agent::done before returning success ([#2961](https://github.com/dsj1984/mandrel/issues/2961)) ([#2968](https://github.com/dsj1984/mandrel/issues/2968)) ([e112131](https://github.com/dsj1984/mandrel/commit/e112131c774ea34334be5a7ec4f9618a20a29cad))
479
+ * **story-close:** drop retired structured:friction marker text from doc strings ([d751ae6](https://github.com/dsj1984/mandrel/commit/d751ae64bfac937ee173752c1ac0c71ed350886d))
480
+ * **story-close:** enforce single baseline-refresh commit per close cycle (resolves [#2176](https://github.com/dsj1984/mandrel/issues/2176)) ([#2177](https://github.com/dsj1984/mandrel/issues/2177)) ([a900e4f](https://github.com/dsj1984/mandrel/commit/a900e4f0c8c5c598dbd831feca218636cecb49d5))
481
+ * **story-close:** filter format gate scope to formatter-eligible files (refs [#3410](https://github.com/dsj1984/mandrel/issues/3410)) ([#3411](https://github.com/dsj1984/mandrel/issues/3411)) ([f38f32c](https://github.com/dsj1984/mandrel/commit/f38f32cfc3da400b13648fd32ac5e7bc8fa271bf))
482
+ * **story-close:** hold epic-merge lock across entire close flow ([5ad47ea](https://github.com/dsj1984/mandrel/commit/5ad47eaff31713413e972482feb1a6ba651e2930))
483
+ * **story-close:** scope format gate to story diff (refs [#3407](https://github.com/dsj1984/mandrel/issues/3407)) ([#3408](https://github.com/dsj1984/mandrel/issues/3408)) ([25e671e](https://github.com/dsj1984/mandrel/commit/25e671eee24686bcf04d979afc780f647143711c))
484
+ * switch the push-to-main path to set BASELINE_SCOPE=full instead. ([9b8b1a2](https://github.com/dsj1984/mandrel/commit/9b8b1a26e7465920bfd49c469f427b421ccea2e2))
485
+ * **temp-paths:** honor configured tempRoot in story-close pipeline ([#1345](https://github.com/dsj1984/mandrel/issues/1345)) ([868ffef](https://github.com/dsj1984/mandrel/commit/868ffefade602650b619a541b59c77c09a8000b1))
486
+ * **test-runner:** chunk node --test spawns to avoid Windows ENAMETOOLONG ([#3540](https://github.com/dsj1984/mandrel/issues/3540)) ([6b00be5](https://github.com/dsj1984/mandrel/commit/6b00be5ad64ce5ecc1f06a444b1ea767ee0b52e0))
487
+ * **tests:** canonicalize Windows tmp paths via realpathSync.native ([3c8ce93](https://github.com/dsj1984/mandrel/commit/3c8ce939f25f626671017002d76f3d9b70d7019c))
488
+ * **tests:** inject noop notify in epic-execute-record-wave defaults ([#3007](https://github.com/dsj1984/mandrel/issues/3007)) ([8575489](https://github.com/dsj1984/mandrel/commit/85754894b9fbba5c64ad6860c2dea3d8df05e440)), closes [#3006](https://github.com/dsj1984/mandrel/issues/3006)
489
+ * **tests:** retry rmSync on Windows EBUSY in cd-out-guard cleanup ([bdaee94](https://github.com/dsj1984/mandrel/commit/bdaee94980fee5d97550785c403f22c5c3892eae))
490
+ * **tests:** scrub NOTIFICATION_WEBHOOK_URL from test child env (resolves [#2975](https://github.com/dsj1984/mandrel/issues/2975)) ([#2977](https://github.com/dsj1984/mandrel/issues/2977)) ([da0ae04](https://github.com/dsj1984/mandrel/commit/da0ae044cff06885a0007343a912e1523bfb5d67))
491
+ * **tests:** stabilize shipped-baselines-idempotency round-trip ([#2017](https://github.com/dsj1984/mandrel/issues/2017)) ([#2026](https://github.com/dsj1984/mandrel/issues/2026)) ([4cc4075](https://github.com/dsj1984/mandrel/commit/4cc4075a906bbca4a1f866334372585586297df5))
492
+ * **tests:** swallow EBUSY/EPERM in cd-out-guard tmp cleanup ([c23e91d](https://github.com/dsj1984/mandrel/commit/c23e91d981ca3d70c33e8668578c6d607d42167e))
493
+ * **tests:** unblock CI on cpu-pool exit race + Windows path mismatches ([fe09b4e](https://github.com/dsj1984/mandrel/commit/fe09b4e7478939ff6d926ef5c3bb6c5470c27f4d))
494
+ * **workspace:** include .mcp.json in default bootstrap file set ([#2978](https://github.com/dsj1984/mandrel/issues/2978)) ([0cdd9bd](https://github.com/dsj1984/mandrel/commit/0cdd9bdfaace8954a377c3e371929ed9d7c512a2))
495
+
496
+
497
+ ### Performance
498
+
499
+ * **retro:** parallelize Story comment fetches + level-order BFS ([#2859](https://github.com/dsj1984/mandrel/issues/2859)) ([66e45bc](https://github.com/dsj1984/mandrel/commit/66e45bcfd5f45cec2a8e7780ec006e580affa196)), closes [#2853](https://github.com/dsj1984/mandrel/issues/2853)
500
+ * **test:** trim slow integration-style suite setup ([#2744](https://github.com/dsj1984/mandrel/issues/2744)) ([#2751](https://github.com/dsj1984/mandrel/issues/2751)) ([3cfc316](https://github.com/dsj1984/mandrel/commit/3cfc316cd4b861570ed76bc67d8a76f5c1119555))
501
+
502
+
503
+ ### Changed
504
+
505
+ * **audit-suite:** centralize audit artifacts under {tempRoot}/audits ([#2452](https://github.com/dsj1984/mandrel/issues/2452)) ([1eff6c4](https://github.com/dsj1984/mandrel/commit/1eff6c48e1da0f8828016d30db8c4e8aaa3663cd)), closes [#2451](https://github.com/dsj1984/mandrel/issues/2451)
506
+ * **audit-suite:** create lib/audit-suite/ sdk with runauditsuite and selectaudits (resolves [#1098](https://github.com/dsj1984/mandrel/issues/1098)) ([c9798be](https://github.com/dsj1984/mandrel/commit/c9798be404f0d2bee56a72e927c6ef7330cb5a69))
507
+ * **branch-cleanup:** migrate delete-epic-branches.js to lib helpers; add deleteBranchesBatched ([ffad94c](https://github.com/dsj1984/mandrel/commit/ffad94cf53302c86cc96bebf910c4c058b3f75d7))
508
+ * break down CRAP hotspots to ratchet crap floor below 340 ([#2850](https://github.com/dsj1984/mandrel/issues/2850)) ([#2858](https://github.com/dsj1984/mandrel/issues/2858)) ([d3e68c2](https://github.com/dsj1984/mandrel/commit/d3e68c22494a9cc4a4ef89c3ce9caeeea310fb59))
509
+ * **cli:** extract runX from main in 4 top-CRAP CLI shells ([38a6592](https://github.com/dsj1984/mandrel/commit/38a65924a0f6732dc68b3aa473b930c1128a4413))
510
+ * consolidate branch-seed classifier and add lease boundary tests (refs [#3513](https://github.com/dsj1984/mandrel/issues/3513)) ([#3532](https://github.com/dsj1984/mandrel/issues/3532)) ([50ec417](https://github.com/dsj1984/mandrel/commit/50ec417b0c93eeda90376edf4a7146ce147d1a6d))
511
+ * **detect-merges:** replace promise.all with concurrentmap (cap=64) in detect-merges.js (resolves [#1104](https://github.com/dsj1984/mandrel/issues/1104)) ([f7512ea](https://github.com/dsj1984/mandrel/commit/f7512eafe3ac8f1dd1a86b80731fe9c22e1cf334))
512
+ * **diagnose-friction:** refactor diagnose-friction.js to detector-only (calls signals-writer, posts no comment) (resolves [#1057](https://github.com/dsj1984/mandrel/issues/1057)) ([184e49e](https://github.com/dsj1984/mandrel/commit/184e49e9c638a91e49f78281f304ef3f41aac18d))
513
+ * **epic-close:** bound auxiliary-ticket close (cap=3) (resolves [#1107](https://github.com/dsj1984/mandrel/issues/1107)) ([fdc6903](https://github.com/dsj1984/mandrel/commit/fdc6903224b0c97d67d71aa404561646f4724e86))
514
+ * **epic-close:** split phaseFinalizeBranchCleanup into named sub-phases ([590b641](https://github.com/dsj1984/mandrel/commit/590b641b87804e6c31856d0d02418f681857a262))
515
+ * **epic-deliver:** drop close-as-approval gate for context::acceptance-spec ([#2280](https://github.com/dsj1984/mandrel/issues/2280)) ([328f4a5](https://github.com/dsj1984/mandrel/commit/328f4a539a4748a7b2b3aeb914899320d1ebb452))
516
+ * **epic-plan:** unify Epic canonical headings (Context/Goal/Non-Goals/Scope/AC) ([#2183](https://github.com/dsj1984/mandrel/issues/2183)) ([2abc8f3](https://github.com/dsj1984/mandrel/commit/2abc8f3ea5f245c2370595955b89b71946b00e2e))
517
+ * **friction:** delete friction-emitter cooldown module + remaining importers (resolves [#1059](https://github.com/dsj1984/mandrel/issues/1059)) ([c58a45d](https://github.com/dsj1984/mandrel/commit/c58a45d0934d31690757cf4f1b5e8af2bd7ab763))
518
+ * **manifest-persistence:** extract sweep helpers to satisfy mi baseline (resolves [#1141](https://github.com/dsj1984/mandrel/issues/1141)) ([20e627f](https://github.com/dsj1984/mandrel/commit/20e627fa7f85056ec9115c4911a7552d22fb8a38))
519
+ * **manifest:** migrate dispatcher + story-init manifest writers to per-epic tree (resolves [#1053](https://github.com/dsj1984/mandrel/issues/1053)) ([fc49ce9](https://github.com/dsj1984/mandrel/commit/fc49ce9d2f2ecceb623988435e5ab9c8bf416e5d))
520
+ * **manifest:** migrate helpers to canonical config pointers ([#2955](https://github.com/dsj1984/mandrel/issues/2955)) ([f9b3dac](https://github.com/dsj1984/mandrel/commit/f9b3dac0deea6c2c63cdc4bd4d7b3e0122210e7c)), closes [#2945](https://github.com/dsj1984/mandrel/issues/2945) [#2950](https://github.com/dsj1984/mandrel/issues/2950)
521
+ * **model-selection:** resolve daylight between schema, code, and docs ([#2630](https://github.com/dsj1984/mandrel/issues/2630)) ([d1f1eaf](https://github.com/dsj1984/mandrel/commit/d1f1eaff693528d1f8223f5ff555ea18c6494615)), closes [#2590](https://github.com/dsj1984/mandrel/issues/2590)
522
+ * **orchestration:** bound cascadecompletion sibling reads + sequential parents (resolves [#1108](https://github.com/dsj1984/mandrel/issues/1108)) ([4a8c713](https://github.com/dsj1984/mandrel/commit/4a8c71393edf3b4a0786296c7bf8280c51e07d1a))
523
+ * **orchestration:** bounded parallelism in reconciler, sub-issue links, delete-epic (resolves [#1110](https://github.com/dsj1984/mandrel/issues/1110)) ([d0defa8](https://github.com/dsj1984/mandrel/commit/d0defa85956628c9e10705ec4c92bb93178c2283))
524
+ * **orchestration:** delete aggregate-phase-timings and telemetry helpers (resolves [#1068](https://github.com/dsj1984/mandrel/issues/1068)) ([e386a46](https://github.com/dsj1984/mandrel/commit/e386a4608ea0b640d057a01a46096c2206a0642a))
525
+ * **orchestration:** delete health-monitor and post-merge health-monitor phase (resolves [#1065](https://github.com/dsj1984/mandrel/issues/1065)) ([da87499](https://github.com/dsj1984/mandrel/commit/da87499d02c2997b537f036e7dec39662676381c))
526
+ * **orchestration:** delete unused lib/orchestration/index.js barrel ([5d8a4c8](https://github.com/dsj1984/mandrel/commit/5d8a4c8528183d4ead0d0a16172d7c46a1385bfc))
527
+ * **orchestration:** migrate health-monitor + render-manifest + dependency-guard to per-epic tree (resolves [#1054](https://github.com/dsj1984/mandrel/issues/1054)) ([9d99184](https://github.com/dsj1984/mandrel/commit/9d991846304c527bd7b04b3f0237652188858bf6))
528
+ * **orchestration:** remove upward re-exports from lib/orchestration/index.js (resolves [#1100](https://github.com/dsj1984/mandrel/issues/1100)) ([d8cf3c3](https://github.com/dsj1984/mandrel/commit/d8cf3c39bd8a020df863f08bdac6d9c16d33ed61))
529
+ * **plan-phase-cleanup:** migrate plan-phase-cleanup to per-epic paths (resolves [#1052](https://github.com/dsj1984/mandrel/issues/1052)) ([ac33f34](https://github.com/dsj1984/mandrel/commit/ac33f342f8cd0450a1f5fd230bce92d488f83bda))
530
+ * **planning-state-manager:** bound close/detach mutations (cap=3) (resolves [#1106](https://github.com/dsj1984/mandrel/issues/1106)) ([a03b335](https://github.com/dsj1984/mandrel/commit/a03b335cdac68352af0e9dbad45295ce9696ef2c))
531
+ * **providers:** move `providers/github-http-client.js` to `providers/github/http-client.js` (resolves [#1101](https://github.com/dsj1984/mandrel/issues/1101)) ([65e0ada](https://github.com/dsj1984/mandrel/commit/65e0ada5a4cd8cb728fb3c03e6c7ad1bf9968930))
532
+ * remove Sprint Health residue (creator + close-side + dead config) ([023faa0](https://github.com/dsj1984/mandrel/commit/023faa0d2ff16f953ffaadb82354e087031e56be))
533
+ * rename /story-execute to /story-deliver (hard cutover) ([#2174](https://github.com/dsj1984/mandrel/issues/2174)) ([a40e385](https://github.com/dsj1984/mandrel/commit/a40e3854ee6bb3e3bf15f096a4186bd0df6c6822)), closes [#2171](https://github.com/dsj1984/mandrel/issues/2171)
534
+ * **render-manifest:** atomic writes for manifest .md/.json (resolves [#1111](https://github.com/dsj1984/mandrel/issues/1111)) ([669db24](https://github.com/dsj1984/mandrel/commit/669db24dc2493feef877a80e9ebd390f4069ea78))
535
+ * retire /wave-execute; /epic-execute owns the wave loop directly ([9036a6a](https://github.com/dsj1984/mandrel/commit/9036a6a7be76b3caef954a59171691fbb8c357e1))
536
+ * **scripts:** address Epic [#3316](https://github.com/dsj1984/mandrel/issues/3316) audit follow-ups ([#3361](https://github.com/dsj1984/mandrel/issues/3361)) ([7728a60](https://github.com/dsj1984/mandrel/commit/7728a6049d9739ea48881bba108adee056e13f41))
537
+ * **scripts:** complete parseStandardCliArgs rollout + centralize parseRequired{Positive,NonNegative}Int ([#3012](https://github.com/dsj1984/mandrel/issues/3012)) ([b767d1a](https://github.com/dsj1984/mandrel/commit/b767d1a480dbc5d7202ff541abba4f5aec51780b)), closes [#2989](https://github.com/dsj1984/mandrel/issues/2989) [#2993](https://github.com/dsj1984/mandrel/issues/2993)
538
+ * **scripts:** decompose baseline-attribution into phases/ ([#3009](https://github.com/dsj1984/mandrel/issues/3009)) ([32695ff](https://github.com/dsj1984/mandrel/commit/32695ff9b33614bb191f19ac33c1bf9b8f97adef))
539
+ * **scripts:** decompose epic-plan-spec into phases/ ([#3011](https://github.com/dsj1984/mandrel/issues/3011)) ([1a00215](https://github.com/dsj1984/mandrel/commit/1a0021597343283cbb34adf26462fe9a8229b54a))
540
+ * **scripts:** decompose post-merge-pipeline into phases/ ([#3005](https://github.com/dsj1984/mandrel/issues/3005)) ([52f1f78](https://github.com/dsj1984/mandrel/commit/52f1f78104e206722ef8dfda3240338bb503a775))
541
+ * **scripts:** decompose retro-runner into phases/ ([#3008](https://github.com/dsj1984/mandrel/issues/3008)) ([0316a4d](https://github.com/dsj1984/mandrel/commit/0316a4dfcbc30f8300290962cf55cf301544654d))
542
+ * **scripts:** decompose single-story-close.js into phases/ (4/5) ([#3003](https://github.com/dsj1984/mandrel/issues/3003)) ([#3010](https://github.com/dsj1984/mandrel/issues/3010)) ([b93a95f](https://github.com/dsj1984/mandrel/commit/b93a95f062d4df4f3288c9398d19635ec1245ba9))
543
+ * **scripts:** migrate git-branch-lifecycle.js and git-branch-cleanup.js to the shared guard (resolves [#1102](https://github.com/dsj1984/mandrel/issues/1102)) ([d85a937](https://github.com/dsj1984/mandrel/commit/d85a93708b0cc35602823daa033a4b370b4f325f))
544
+ * **scripts:** route post-auth gh spawns through lib/gh-exec.js ([#3014](https://github.com/dsj1984/mandrel/issues/3014)) ([f511810](https://github.com/dsj1984/mandrel/commit/f511810abfc82cb5b8a2e791d21990d59e446417)), closes [#2990](https://github.com/dsj1984/mandrel/issues/2990)
545
+ * **scripts:** split config-gates-schema.js per-gate ([#3017](https://github.com/dsj1984/mandrel/issues/3017)) ([26dc20c](https://github.com/dsj1984/mandrel/commit/26dc20c5e97924b4cc946117d5ee9fa13fb9d699)), closes [#2987](https://github.com/dsj1984/mandrel/issues/2987)
546
+ * **scripts:** split git-cleanup phase-drivers into decide/execute pairs ([#3015](https://github.com/dsj1984/mandrel/issues/3015)) ([db24b7c](https://github.com/dsj1984/mandrel/commit/db24b7c20bf152b983d018d9ed704c3e6f61563a)), closes [#2994](https://github.com/dsj1984/mandrel/issues/2994)
547
+ * **scripts:** split runPreMergeValidation into summarizer + emitter ([#3013](https://github.com/dsj1984/mandrel/issues/3013)) ([5b8ce9a](https://github.com/dsj1984/mandrel/commit/5b8ce9a583fad184e9124820a9e245bf55415275)), closes [#2995](https://github.com/dsj1984/mandrel/issues/2995)
548
+ * **scripts:** table-drive renderNotable to drop CRAP 52.5 → &lt; 20 ([#3016](https://github.com/dsj1984/mandrel/issues/3016)) ([1c85190](https://github.com/dsj1984/mandrel/commit/1c85190319a0e90cdd08ba3ef1cd0c5d8961d66f)), closes [#2991](https://github.com/dsj1984/mandrel/issues/2991)
549
+ * **story-close:** move attribution wrapper into baseline-attribution-wiring module ([b626af4](https://github.com/dsj1984/mandrel/commit/b626af4532bf95eaeef8c2e8f73fbe5f22e413ff))
550
+ * **temp-paths:** nest per-story dirs under stories/ and fix divergent dispatch-state path ([#2941](https://github.com/dsj1984/mandrel/issues/2941)) ([2cb4043](https://github.com/dsj1984/mandrel/commit/2cb40431c5ed21aae86fb11196c0db43c99bf54f)), closes [#2940](https://github.com/dsj1984/mandrel/issues/2940)
551
+ * **tests:** extract seedorphans helper to satisfy test mi baseline (resolves [#1141](https://github.com/dsj1984/mandrel/issues/1141)) ([308a322](https://github.com/dsj1984/mandrel/commit/308a32236c514171282ab0432db462c16ddbfc1f))
552
+ * **ticket-decomposer:** bound force-close closepromises (cap=3) (resolves [#1105](https://github.com/dsj1984/mandrel/issues/1105)) ([4d623cc](https://github.com/dsj1984/mandrel/commit/4d623cc3e33ff71b54838eafad4ee231d5201ab5))
553
+ * **validation-evidence:** migrate to per-Epic temp tree ([1957d88](https://github.com/dsj1984/mandrel/commit/1957d889570dd97d528653614bf29d2e8e380113))
554
+ * **worktree:** replace issafetoremove heuristic with merge-base + merge-commit fallback (resolves [#1129](https://github.com/dsj1984/mandrel/issues/1129)) ([a633f6c](https://github.com/dsj1984/mandrel/commit/a633f6cd80d775d2b316deec434b75a2a497b2ec))
555
+
556
+
557
+ ### Chores
558
+
559
+ * **release:** cap release-please at minor bumps ([#1929](https://github.com/dsj1984/mandrel/issues/1929)) ([d4ea2c8](https://github.com/dsj1984/mandrel/commit/d4ea2c8955a94958e0c96005183ab1252f5a8c09))
560
+
561
+ ## [1.43.0](https://github.com/dsj1984/mandrel/compare/v1.42.0...v1.43.0) (2026-06-02)
562
+
563
+
564
+ ### Added
565
+
566
+ * Epic [#3418](https://github.com/dsj1984/mandrel/issues/3418) ([#3434](https://github.com/dsj1984/mandrel/issues/3434)) ([c926255](https://github.com/dsj1984/mandrel/commit/c926255d04f7d769b2a2d5ac9fcbdb67b48ec6a1))
567
+
568
+
569
+ ### Fixed
570
+
571
+ * **single-story:** gate confirm-merge noop on agent::done label not closed issue (refs [#3415](https://github.com/dsj1984/mandrel/issues/3415)) ([#3416](https://github.com/dsj1984/mandrel/issues/3416)) ([6ac471e](https://github.com/dsj1984/mandrel/commit/6ac471edd3da4869d3632a0f85e7edc199840835))
572
+ * **story-close:** filter format gate scope to formatter-eligible files (refs [#3410](https://github.com/dsj1984/mandrel/issues/3410)) ([#3411](https://github.com/dsj1984/mandrel/issues/3411)) ([f38f32c](https://github.com/dsj1984/mandrel/commit/f38f32cfc3da400b13648fd32ac5e7bc8fa271bf))
573
+
574
+ ## [1.42.0](https://github.com/dsj1984/mandrel/compare/v1.41.0...v1.42.0) (2026-06-01)
575
+
576
+
577
+ ### Fixed
578
+
579
+ * **story-close:** scope format gate to story diff (refs [#3407](https://github.com/dsj1984/mandrel/issues/3407)) ([#3408](https://github.com/dsj1984/mandrel/issues/3408)) ([25e671e](https://github.com/dsj1984/mandrel/commit/25e671eee24686bcf04d979afc780f647143711c))
580
+
581
+ ## [1.41.0](https://github.com/dsj1984/mandrel/compare/v1.40.0...v1.41.0) (2026-05-31)
582
+
583
+
584
+ ### Added
585
+
586
+ * **config:** implement .agentrc.local.json override layer (refs [#3388](https://github.com/dsj1984/mandrel/issues/3388)) ([#3405](https://github.com/dsj1984/mandrel/issues/3405)) ([f42e898](https://github.com/dsj1984/mandrel/commit/f42e898212b3c62bdd9de0e19ce7a876ff435839))
587
+
588
+
589
+ ### Fixed
590
+
591
+ * **ci:** SHA-pin third-party GitHub Actions (refs [#3399](https://github.com/dsj1984/mandrel/issues/3399)) ([#3403](https://github.com/dsj1984/mandrel/issues/3403)) ([32a3744](https://github.com/dsj1984/mandrel/commit/32a374436718e97f91da274930d25120b81b0388))
592
+ * **close:** defer agent::done + issue-close to PR-merge in standalone story-close (refs [#3385](https://github.com/dsj1984/mandrel/issues/3385)) ([#3395](https://github.com/dsj1984/mandrel/issues/3395)) ([43dd1f4](https://github.com/dsj1984/mandrel/commit/43dd1f45c734b97c2c3cc647d55ab3e8c0e5d221))
593
+
594
+ ## [1.40.0](https://github.com/dsj1984/mandrel/compare/v1.39.0...v1.40.0) (2026-05-30)
595
+
596
+
597
+ ### Fixed
598
+
599
+ * **lifecycle:** stop epic.close.end cascading into branch reap (refs [#3367](https://github.com/dsj1984/mandrel/issues/3367)) ([#3381](https://github.com/dsj1984/mandrel/issues/3381)) ([9d21318](https://github.com/dsj1984/mandrel/commit/9d213186c6511a1a2128f472512f24271e05af46))
600
+
601
+ ## [1.39.0](https://github.com/dsj1984/mandrel/compare/v1.38.0...v1.39.0) (2026-05-30)
602
+
603
+
604
+ ### Added
605
+
606
+ * Epic [#3304](https://github.com/dsj1984/mandrel/issues/3304) ([#3379](https://github.com/dsj1984/mandrel/issues/3379)) ([850355e](https://github.com/dsj1984/mandrel/commit/850355e34392211d8dff2da3ad95f2c96ffbabbf))
607
+
608
+ ## [1.38.0](https://github.com/dsj1984/mandrel/compare/v1.37.0...v1.38.0) (2026-05-29)
609
+
610
+
611
+ ### Added
612
+
613
+ * Epic [#3316](https://github.com/dsj1984/mandrel/issues/3316) ([#3359](https://github.com/dsj1984/mandrel/issues/3359)) ([2ee5462](https://github.com/dsj1984/mandrel/commit/2ee546258dbb46483fbd201caaf5f1d91cd569df))
614
+ * **single-story-close:** add wrong-tree edit guard (refs [#3364](https://github.com/dsj1984/mandrel/issues/3364)) ([#3366](https://github.com/dsj1984/mandrel/issues/3366)) ([db07f38](https://github.com/dsj1984/mandrel/commit/db07f382863b7a80d19012dadb291b9f8666e22b))
615
+
616
+
617
+ ### Fixed
618
+
619
+ * **audit:** isolate audit selector and acceptance reconciler per-epic (refs [#3362](https://github.com/dsj1984/mandrel/issues/3362)) ([#3365](https://github.com/dsj1984/mandrel/issues/3365)) ([8cd28e5](https://github.com/dsj1984/mandrel/commit/8cd28e5483078d289db59c2673ecddbddbb724bb))
620
+
621
+
622
+ ### Changed
623
+
624
+ * **scripts:** address Epic [#3316](https://github.com/dsj1984/mandrel/issues/3316) audit follow-ups ([#3361](https://github.com/dsj1984/mandrel/issues/3361)) ([7728a60](https://github.com/dsj1984/mandrel/commit/7728a6049d9739ea48881bba108adee056e13f41))
625
+
626
+ ## [1.37.0](https://github.com/dsj1984/mandrel/compare/v1.36.0...v1.37.0) (2026-05-29)
627
+
628
+
629
+ ### Fixed
630
+
631
+ * **epic-plan:** overwrite context tickets in place on --force re-plan (refs [#3310](https://github.com/dsj1984/mandrel/issues/3310)) ([#3314](https://github.com/dsj1984/mandrel/issues/3314)) ([3c4c5b5](https://github.com/dsj1984/mandrel/commit/3c4c5b52641dd54de7cf571c33872d073bdf098c))
632
+
633
+ ## [1.36.0](https://github.com/dsj1984/mandrel/compare/v1.35.0...v1.36.0) (2026-05-29)
634
+
635
+
636
+ ### Added
637
+
638
+ * **qa-harness:** accept name-only personas for url-template seams (refs [#3306](https://github.com/dsj1984/mandrel/issues/3306)) ([#3309](https://github.com/dsj1984/mandrel/issues/3309)) ([6a96c07](https://github.com/dsj1984/mandrel/commit/6a96c07bc8a1789c2dcde54b9341b13ff3164d1d))
639
+
640
+
641
+ ### Fixed
642
+
643
+ * **release:** version Epic merges and fix agents-update changelog source ([#3307](https://github.com/dsj1984/mandrel/issues/3307)) ([44ea136](https://github.com/dsj1984/mandrel/commit/44ea136aef07154f414150f2ee89c4d6f264382d))
644
+
645
+ ## [1.35.0](https://github.com/dsj1984/mandrel/compare/v1.34.0...v1.35.0) (2026-05-29)
646
+
647
+
648
+ ### Added
649
+
650
+ * **audit:** pilot dynamic-workflow orchestration for audit-clean-code with graceful degradation (refs [#3278](https://github.com/dsj1984/mandrel/issues/3278)) ([#3282](https://github.com/dsj1984/mandrel/issues/3282)) ([414ecd4](https://github.com/dsj1984/mandrel/commit/414ecd4dcdc13b8c46b535634d28cb1df35a87e4))
651
+ * **story-deliver:** add stories-wave-tick.js DAG/wave engine with unit tests (refs [#3233](https://github.com/dsj1984/mandrel/issues/3233)) ([#3243](https://github.com/dsj1984/mandrel/issues/3243)) ([72fba7e](https://github.com/dsj1984/mandrel/commit/72fba7e4c3ef89e6e97f410a0c922a8cd04565c5))
652
+ * **workflows:** create helpers/epic-deliver-story.md and repoint epic-deliver fan-out (refs [#3229](https://github.com/dsj1984/mandrel/issues/3229)) ([#3239](https://github.com/dsj1984/mandrel/issues/3239)) ([6173324](https://github.com/dsj1984/mandrel/commit/6173324d502126dbacff665ffa8479beeac94bba))
653
+
654
+
655
+ ### Fixed
656
+
657
+ * **cascade:** enable parent-Feature cascade from single-story close path ([#3242](https://github.com/dsj1984/mandrel/issues/3242)) ([368bc1d](https://github.com/dsj1984/mandrel/commit/368bc1d9a8e5c8133be3c16c2ab385896971f3af))
658
+ * **review:** handle PathEntry objects in analyseChanges, suppress MI noise, fix lint errors ([#3248](https://github.com/dsj1984/mandrel/issues/3248)) ([972fe78](https://github.com/dsj1984/mandrel/commit/972fe783fac74b7040c992c68bec4695738c6086))
659
+ * **skill:** align decompose-author SKILL Story-body shape with validator + provider contract (refs [#3263](https://github.com/dsj1984/mandrel/issues/3263)) ([#3267](https://github.com/dsj1984/mandrel/issues/3267)) ([5b6a439](https://github.com/dsj1984/mandrel/commit/5b6a4390bec18621ad8a0e5e279f513d2b4dc070))
660
+ * **story-body:** serialize object bodies in createOp; parse string bodies in freshness + assumption gates (refs [#3302](https://github.com/dsj1984/mandrel/issues/3302)) ([#3303](https://github.com/dsj1984/mandrel/issues/3303)) ([69322ac](https://github.com/dsj1984/mandrel/commit/69322ac2ed772b7fb6281c0aa49c0087a6834fbb))
661
+
662
+ ## [1.34.0](https://github.com/dsj1984/mandrel/compare/v1.33.0...v1.34.0) (2026-05-28)
663
+
664
+
665
+ ### ⚠ BREAKING CHANGES
666
+
667
+ * Mandrel v6.0.0 — ticket hierarchy is now Epic -> Feature -> Story (with inline acceptance/verify on the Story body). The planning.hierarchy config flag, type::task label, Task-tier scripts, and Task-aware lifecycle hooks have been deleted. Consumers re-pinning .agents/ to v6.0.0 MUST remove any local Task-tier artifacts as part of the upgrade.
668
+
669
+ ### Epic
670
+
671
+ * 3078 ([#3164](https://github.com/dsj1984/mandrel/issues/3164)) ([206da29](https://github.com/dsj1984/mandrel/commit/206da297bdf60fdee976dbaae0858816c308c56a))
672
+
673
+
674
+ ### Added
675
+
676
+ * **pre-push:** add STORY_CLOSE_RECOVERY scoped coverage-gate bypass (refs [#3162](https://github.com/dsj1984/mandrel/issues/3162)) ([#3171](https://github.com/dsj1984/mandrel/issues/3171)) ([62bbd2f](https://github.com/dsj1984/mandrel/commit/62bbd2f08954abe67af4a5912e97c30744f3cf41))
677
+
678
+
679
+ ### Fixed
680
+
681
+ * **finalize:** strip [skip ci] markers from openOrLocatePr body (refs [#3165](https://github.com/dsj1984/mandrel/issues/3165)) ([#3176](https://github.com/dsj1984/mandrel/issues/3176)) ([0374a1d](https://github.com/dsj1984/mandrel/commit/0374a1dffa96dfacc1ef116d854009edc82d9710))
682
+ * **orchestration:** cap Auto-resolved-file trailer at 100 chars (refs [#3160](https://github.com/dsj1984/mandrel/issues/3160)) ([#3170](https://github.com/dsj1984/mandrel/issues/3170)) ([fbdf13d](https://github.com/dsj1984/mandrel/commit/fbdf13d8306ed3fbabac2afa0f6a0a8fc35ec51b))
683
+ * **spec-renderer:** omit tasks: [] for 3-tier Stories (refs [#3163](https://github.com/dsj1984/mandrel/issues/3163)) ([#3177](https://github.com/dsj1984/mandrel/issues/3177)) ([859fe4b](https://github.com/dsj1984/mandrel/commit/859fe4ba47050e2be98ee36e1c642dcaee0e4f87))
684
+
685
+ ## [1.33.0](https://github.com/dsj1984/mandrel/compare/v1.32.0...v1.33.0) (2026-05-26)
686
+
687
+
688
+ ### Fixed
689
+
690
+ * **baselines:** harden MI scorer against escomplex parse-fail phantoms ([#2998](https://github.com/dsj1984/mandrel/issues/2998)) ([8023458](https://github.com/dsj1984/mandrel/commit/8023458c597689020ba04e0b1c802fe3170407c3)), closes [#2996](https://github.com/dsj1984/mandrel/issues/2996)
691
+ * **cascade:** preserve orchestrator footer and walk native Sub-Issues parent (resolves [#2982](https://github.com/dsj1984/mandrel/issues/2982)) ([#2983](https://github.com/dsj1984/mandrel/issues/2983)) ([5b2b51d](https://github.com/dsj1984/mandrel/commit/5b2b51defb065e6066b46be43316e0a2dbd8cbf8))
692
+ * **epic-plan-decompose:** preserve acceptance::* and planning::* on Epic through reconciler ([#3052](https://github.com/dsj1984/mandrel/issues/3052)) ([0e96fac](https://github.com/dsj1984/mandrel/commit/0e96fac373b5414917485da1165be435f0c52197)), closes [#3050](https://github.com/dsj1984/mandrel/issues/3050)
693
+ * **tests:** inject noop notify in epic-execute-record-wave defaults ([#3007](https://github.com/dsj1984/mandrel/issues/3007)) ([8575489](https://github.com/dsj1984/mandrel/commit/85754894b9fbba5c64ad6860c2dea3d8df05e440)), closes [#3006](https://github.com/dsj1984/mandrel/issues/3006)
694
+
695
+
696
+ ### Changed
697
+
698
+ * **scripts:** complete parseStandardCliArgs rollout + centralize parseRequired{Positive,NonNegative}Int ([#3012](https://github.com/dsj1984/mandrel/issues/3012)) ([b767d1a](https://github.com/dsj1984/mandrel/commit/b767d1a480dbc5d7202ff541abba4f5aec51780b)), closes [#2989](https://github.com/dsj1984/mandrel/issues/2989) [#2993](https://github.com/dsj1984/mandrel/issues/2993)
699
+ * **scripts:** decompose baseline-attribution into phases/ ([#3009](https://github.com/dsj1984/mandrel/issues/3009)) ([32695ff](https://github.com/dsj1984/mandrel/commit/32695ff9b33614bb191f19ac33c1bf9b8f97adef))
700
+ * **scripts:** decompose epic-plan-spec into phases/ ([#3011](https://github.com/dsj1984/mandrel/issues/3011)) ([1a00215](https://github.com/dsj1984/mandrel/commit/1a0021597343283cbb34adf26462fe9a8229b54a))
701
+ * **scripts:** decompose post-merge-pipeline into phases/ ([#3005](https://github.com/dsj1984/mandrel/issues/3005)) ([52f1f78](https://github.com/dsj1984/mandrel/commit/52f1f78104e206722ef8dfda3240338bb503a775))
702
+ * **scripts:** decompose retro-runner into phases/ ([#3008](https://github.com/dsj1984/mandrel/issues/3008)) ([0316a4d](https://github.com/dsj1984/mandrel/commit/0316a4dfcbc30f8300290962cf55cf301544654d))
703
+ * **scripts:** decompose single-story-close.js into phases/ (4/5) ([#3003](https://github.com/dsj1984/mandrel/issues/3003)) ([#3010](https://github.com/dsj1984/mandrel/issues/3010)) ([b93a95f](https://github.com/dsj1984/mandrel/commit/b93a95f062d4df4f3288c9398d19635ec1245ba9))
704
+ * **scripts:** route post-auth gh spawns through lib/gh-exec.js ([#3014](https://github.com/dsj1984/mandrel/issues/3014)) ([f511810](https://github.com/dsj1984/mandrel/commit/f511810abfc82cb5b8a2e791d21990d59e446417)), closes [#2990](https://github.com/dsj1984/mandrel/issues/2990)
705
+ * **scripts:** split config-gates-schema.js per-gate ([#3017](https://github.com/dsj1984/mandrel/issues/3017)) ([26dc20c](https://github.com/dsj1984/mandrel/commit/26dc20c5e97924b4cc946117d5ee9fa13fb9d699)), closes [#2987](https://github.com/dsj1984/mandrel/issues/2987)
706
+ * **scripts:** split git-cleanup phase-drivers into decide/execute pairs ([#3015](https://github.com/dsj1984/mandrel/issues/3015)) ([db24b7c](https://github.com/dsj1984/mandrel/commit/db24b7c20bf152b983d018d9ed704c3e6f61563a)), closes [#2994](https://github.com/dsj1984/mandrel/issues/2994)
707
+ * **scripts:** split runPreMergeValidation into summarizer + emitter ([#3013](https://github.com/dsj1984/mandrel/issues/3013)) ([5b8ce9a](https://github.com/dsj1984/mandrel/commit/5b8ce9a583fad184e9124820a9e245bf55415275)), closes [#2995](https://github.com/dsj1984/mandrel/issues/2995)
708
+ * **scripts:** table-drive renderNotable to drop CRAP 52.5 → &lt; 20 ([#3016](https://github.com/dsj1984/mandrel/issues/3016)) ([1c85190](https://github.com/dsj1984/mandrel/commit/1c85190319a0e90cdd08ba3ef1cd0c5d8961d66f)), closes [#2991](https://github.com/dsj1984/mandrel/issues/2991)
709
+
710
+ ## [1.32.0](https://github.com/dsj1984/mandrel/compare/v1.31.0...v1.32.0) (2026-05-25)
711
+
712
+
713
+ ### Fixed
714
+
715
+ * **workspace:** include .mcp.json in default bootstrap file set ([#2978](https://github.com/dsj1984/mandrel/issues/2978)) ([0cdd9bd](https://github.com/dsj1984/mandrel/commit/0cdd9bdfaace8954a377c3e371929ed9d7c512a2))
716
+
717
+ ## [1.31.0](https://github.com/dsj1984/mandrel/compare/v1.30.0...v1.31.0) (2026-05-25)
718
+
719
+
720
+ ### Added
721
+
722
+ * **planning:** decomposer cross-cutting rule covers registries + symbol fan-out ([#2974](https://github.com/dsj1984/mandrel/issues/2974)) ([5b3cb85](https://github.com/dsj1984/mandrel/commit/5b3cb852276653c82d1d84c084121f637d234842)), closes [#2962](https://github.com/dsj1984/mandrel/issues/2962)
723
+ * **tests:** add test-isolate diagnostic for pollution cascades ([#2976](https://github.com/dsj1984/mandrel/issues/2976)) ([420d4f5](https://github.com/dsj1984/mandrel/commit/420d4f54487bd452766abe2c3dc7273f872338bc)), closes [#2963](https://github.com/dsj1984/mandrel/issues/2963)
724
+
725
+
726
+ ### Fixed
727
+
728
+ * **config:** getQuality reads wrong shape — operator coverage timeout never honored ([#2959](https://github.com/dsj1984/mandrel/issues/2959)) ([#2969](https://github.com/dsj1984/mandrel/issues/2969)) ([09409e6](https://github.com/dsj1984/mandrel/commit/09409e6e07646fdb6b98d79b0836e95a9427a584))
729
+ * **orchestration:** refuse PR creation against main when Story has Epic parent ([#2967](https://github.com/dsj1984/mandrel/issues/2967)) ([a5dcb0d](https://github.com/dsj1984/mandrel/commit/a5dcb0d155137caa995aedba53eff2882be541ae)), closes [#2960](https://github.com/dsj1984/mandrel/issues/2960)
730
+ * **story-close:** assert final label is agent::done before returning success ([#2961](https://github.com/dsj1984/mandrel/issues/2961)) ([#2968](https://github.com/dsj1984/mandrel/issues/2968)) ([e112131](https://github.com/dsj1984/mandrel/commit/e112131c774ea34334be5a7ec4f9618a20a29cad))
731
+ * **tests:** scrub NOTIFICATION_WEBHOOK_URL from test child env (resolves [#2975](https://github.com/dsj1984/mandrel/issues/2975)) ([#2977](https://github.com/dsj1984/mandrel/issues/2977)) ([da0ae04](https://github.com/dsj1984/mandrel/commit/da0ae044cff06885a0007343a912e1523bfb5d67))
732
+
733
+ ## [1.30.0](https://github.com/dsj1984/mandrel/compare/v1.29.0...v1.30.0) (2026-05-23)
734
+
735
+
736
+ ### Fixed
737
+
738
+ * **bdd-detect:** scan workspace package.json files in monorepos ([#2957](https://github.com/dsj1984/mandrel/issues/2957)) ([456326e](https://github.com/dsj1984/mandrel/commit/456326ee41da1a8443125665cf28592215877e67))
739
+
740
+
741
+ ### Changed
742
+
743
+ * **manifest:** migrate helpers to canonical config pointers ([#2955](https://github.com/dsj1984/mandrel/issues/2955)) ([f9b3dac](https://github.com/dsj1984/mandrel/commit/f9b3dac0deea6c2c63cdc4bd4d7b3e0122210e7c)), closes [#2945](https://github.com/dsj1984/mandrel/issues/2945) [#2950](https://github.com/dsj1984/mandrel/issues/2950)
744
+ * **temp-paths:** nest per-story dirs under stories/ and fix divergent dispatch-state path ([#2941](https://github.com/dsj1984/mandrel/issues/2941)) ([2cb4043](https://github.com/dsj1984/mandrel/commit/2cb40431c5ed21aae86fb11196c0db43c99bf54f)), closes [#2940](https://github.com/dsj1984/mandrel/issues/2940)
745
+
746
+ ## [1.29.0](https://github.com/dsj1984/mandrel/compare/v1.28.0...v1.29.0) (2026-05-22)
747
+
748
+
749
+ ### Added
750
+
751
+ * **code-review:** add security-review and ultrareview providers via chain ([#2872](https://github.com/dsj1984/mandrel/issues/2872)) ([832b189](https://github.com/dsj1984/mandrel/commit/832b1892d735c1574dea77e3f536dd99475862c2)), closes [#2871](https://github.com/dsj1984/mandrel/issues/2871)
752
+ * **gh-exec:** default-timeout knob + transient classification for GhExecTimeoutError ([#2877](https://github.com/dsj1984/mandrel/issues/2877)) ([dad2b16](https://github.com/dsj1984/mandrel/commit/dad2b163695486bd5aa800ee40fb7d7112531ae5)), closes [#2860](https://github.com/dsj1984/mandrel/issues/2860)
753
+
754
+
755
+ ### Fixed
756
+
757
+ * **observability:** support standalone stories with null epicId ([#2875](https://github.com/dsj1984/mandrel/issues/2875)) ([d20c51e](https://github.com/dsj1984/mandrel/commit/d20c51e49cc24914f21bffab6828025344f94aef)), closes [#2874](https://github.com/dsj1984/mandrel/issues/2874)
758
+ * **orchestration:** harden reassertStatusColumn with poll-and-retry ([#2878](https://github.com/dsj1984/mandrel/issues/2878)) ([8efcc28](https://github.com/dsj1984/mandrel/commit/8efcc28e1f4513cbf1dd008a91457f5d438955b1)), closes [#2876](https://github.com/dsj1984/mandrel/issues/2876)
759
+
760
+ ## [1.28.0](https://github.com/dsj1984/mandrel/compare/v1.27.0...v1.28.0) (2026-05-21)
761
+
762
+
763
+ ### ⚠ BREAKING CHANGES
764
+
765
+ * **board:** collapse Status field to Todo/In Progress/Done ([#2868](https://github.com/dsj1984/mandrel/issues/2868))
766
+
767
+ ### Added
768
+
769
+ * **board:** collapse Status field to Todo/In Progress/Done ([#2868](https://github.com/dsj1984/mandrel/issues/2868)) ([60e99a2](https://github.com/dsj1984/mandrel/commit/60e99a2b019698034e146e0e73c92ee3c68a08bf)), closes [#2867](https://github.com/dsj1984/mandrel/issues/2867)
770
+
771
+ ## [1.27.0](https://github.com/dsj1984/mandrel/compare/v1.26.0...v1.27.0) (2026-05-21)
772
+
773
+
774
+ ### Added
775
+
776
+ * retire prose-legacy hydration output mode ([#2864](https://github.com/dsj1984/mandrel/issues/2864)) ([#2865](https://github.com/dsj1984/mandrel/issues/2865)) ([5d514c9](https://github.com/dsj1984/mandrel/commit/5d514c9d9d1e148a9eab9d693988548f732434f2))
777
+
778
+ ## [1.26.0](https://github.com/dsj1984/mandrel/compare/v1.25.0...v1.26.0) (2026-05-21)
779
+
780
+
781
+ ### Added
782
+
783
+ * add lifecycle defaults + strip redundant config from .agentrc.json ([#2846](https://github.com/dsj1984/mandrel/issues/2846)) ([#2848](https://github.com/dsj1984/mandrel/issues/2848)) ([89a8b30](https://github.com/dsj1984/mandrel/commit/89a8b3063c5fd38583db31c1d08538fe7f0e79d4))
784
+ * **architecture:** cleanup shims, adapters, and enums (closes [#2646](https://github.com/dsj1984/mandrel/issues/2646)) ([#2712](https://github.com/dsj1984/mandrel/issues/2712)) ([8993bad](https://github.com/dsj1984/mandrel/commit/8993bad5085c02e39fce0fbd0dd6c440eba2e7c5))
785
+ * **audit-architecture:** add Automated Architecture Guardrails dimension ([#2734](https://github.com/dsj1984/mandrel/issues/2734)) ([184574d](https://github.com/dsj1984/mandrel/commit/184574d65bdaba1ebed54a68cda5d0cdee50d823)), closes [#2713](https://github.com/dsj1984/mandrel/issues/2713)
786
+ * **hooks:** rebalance pre-push to diff-scoped gates ([#2745](https://github.com/dsj1984/mandrel/issues/2745)) ([#2754](https://github.com/dsj1984/mandrel/issues/2754)) ([5f93eb0](https://github.com/dsj1984/mandrel/commit/5f93eb05bcf443bb5b8ce9d3fb5158cd379d6d25))
787
+ * **orchestration:** propagate ticket state upward on every transition ([#2677](https://github.com/dsj1984/mandrel/issues/2677)) ([29a036d](https://github.com/dsj1984/mandrel/commit/29a036deea739a0ec7abd39ba8e76dc2ebeb8d5b)), closes [#2676](https://github.com/dsj1984/mandrel/issues/2676)
788
+ * **orchestration:** record model attribution as structured comments on tasks + rollup ([#2814](https://github.com/dsj1984/mandrel/issues/2814)) ([3bbea99](https://github.com/dsj1984/mandrel/commit/3bbea99cf09260dd8d227d41b370db72226aa24a)), closes [#2813](https://github.com/dsj1984/mandrel/issues/2813)
789
+ * **providers:** retry transient gh-api reads + cap paginateRest pages ([#2857](https://github.com/dsj1984/mandrel/issues/2857)) ([b8a60e6](https://github.com/dsj1984/mandrel/commit/b8a60e6ba7db6e2129b28a7aa38ace3391fccafc)), closes [#2852](https://github.com/dsj1984/mandrel/issues/2852)
790
+ * skill library index + policy capsules (Epic [#2647](https://github.com/dsj1984/mandrel/issues/2647)) ([#2755](https://github.com/dsj1984/mandrel/issues/2755)) ([2e7f2b8](https://github.com/dsj1984/mandrel/commit/2e7f2b8d48ee147e2f4ad1f783eb29d8806088eb))
791
+
792
+
793
+ ### Fixed
794
+
795
+ * **lifecycle:** allow epicId on epic.automerge.start payload ([#2856](https://github.com/dsj1984/mandrel/issues/2856)) ([c76b7ae](https://github.com/dsj1984/mandrel/commit/c76b7aec424ef5d6dddb9043ec2421b643dc24d5)), closes [#2855](https://github.com/dsj1984/mandrel/issues/2855)
796
+ * **lifecycle:** close-tail completeness — audit-results marker, epic.merge.* schemas, Phase 7 doc-truth ([#2710](https://github.com/dsj1984/mandrel/issues/2710)) ([41c4c84](https://github.com/dsj1984/mandrel/commit/41c4c84ec272f501f3d6e30df6ecb71a0d8357e1)), closes [#2681](https://github.com/dsj1984/mandrel/issues/2681)
797
+ * **lint-baseline:** honor agentrc override and run shim launchers via shell ([#2752](https://github.com/dsj1984/mandrel/issues/2752)) ([6c39c29](https://github.com/dsj1984/mandrel/commit/6c39c292433a67067f2cb5dee713658306f4cfcb)), closes [#2750](https://github.com/dsj1984/mandrel/issues/2750)
798
+ * **orchestration:** flip task labels at per-task start, not story-init ([#2779](https://github.com/dsj1984/mandrel/issues/2779)) ([a155549](https://github.com/dsj1984/mandrel/commit/a155549ccaff45134e5c3306c059f836af23fe9a))
799
+ * **orchestration:** own Projects v2 Status column — audit + post-merge re-sync ([#2847](https://github.com/dsj1984/mandrel/issues/2847)) ([acc277d](https://github.com/dsj1984/mandrel/commit/acc277da06d6c5971dd7295bf9808c0ad4be7247)), closes [#2845](https://github.com/dsj1984/mandrel/issues/2845)
800
+ * **single-story-deliver:** route label flips through transitionTicketState so Projects v2 Status syncs ([#2739](https://github.com/dsj1984/mandrel/issues/2739)) ([5f4e6e2](https://github.com/dsj1984/mandrel/commit/5f4e6e291f89f7f4353b6a72d57f173982b25c75)), closes [#2717](https://github.com/dsj1984/mandrel/issues/2717)
801
+ * **single-story:** fast-forward local main after deliver and at init ([#2753](https://github.com/dsj1984/mandrel/issues/2753)) ([80a5cea](https://github.com/dsj1984/mandrel/commit/80a5cea77dcc43968fc5e0a9be0e420ba5cc871f))
802
+ * **skills:** enforce manifest schema and dedupe SKILL walkers ([#2757](https://github.com/dsj1984/mandrel/issues/2757)) ([88b0098](https://github.com/dsj1984/mandrel/commit/88b0098aad447fc04739c5fe34fb1cf57bec1e89))
803
+
804
+
805
+ ### Performance
806
+
807
+ * **retro:** parallelize Story comment fetches + level-order BFS ([#2859](https://github.com/dsj1984/mandrel/issues/2859)) ([66e45bc](https://github.com/dsj1984/mandrel/commit/66e45bcfd5f45cec2a8e7780ec006e580affa196)), closes [#2853](https://github.com/dsj1984/mandrel/issues/2853)
808
+ * **test:** trim slow integration-style suite setup ([#2744](https://github.com/dsj1984/mandrel/issues/2744)) ([#2751](https://github.com/dsj1984/mandrel/issues/2751)) ([3cfc316](https://github.com/dsj1984/mandrel/commit/3cfc316cd4b861570ed76bc67d8a76f5c1119555))
809
+
810
+
811
+ ### Changed
812
+
813
+ * break down CRAP hotspots to ratchet crap floor below 340 ([#2850](https://github.com/dsj1984/mandrel/issues/2850)) ([#2858](https://github.com/dsj1984/mandrel/issues/2858)) ([d3e68c2](https://github.com/dsj1984/mandrel/commit/d3e68c22494a9cc4a4ef89c3ce9caeeea310fb59))
814
+
815
+ ## [1.25.0](https://github.com/dsj1984/mandrel/compare/v1.24.0...v1.25.0) (2026-05-19)
816
+
817
+
818
+ ### Added
819
+
820
+ * **epic-plan:** cross-reference ACs against existing BDD scenarios ([#2642](https://github.com/dsj1984/mandrel/issues/2642)) ([de68d65](https://github.com/dsj1984/mandrel/commit/de68d65e7c392f07fb5eeb9b207b061c5bea8f6d)), closes [#2637](https://github.com/dsj1984/mandrel/issues/2637)
821
+ * **epic-plan:** cross-validate Tech Spec against codebase in Phase 7 ([#2638](https://github.com/dsj1984/mandrel/issues/2638)) ([aec99d1](https://github.com/dsj1984/mandrel/commit/aec99d1ccb216104a216bf6386c39a2eb64ba3bd)), closes [#2635](https://github.com/dsj1984/mandrel/issues/2635)
822
+ * **epic-plan:** require explicit filesAssumption on Task paths ([#2639](https://github.com/dsj1984/mandrel/issues/2639)) ([fda76f2](https://github.com/dsj1984/mandrel/commit/fda76f2166f7096f31f92d3c45de2751b2fb92ec)), closes [#2636](https://github.com/dsj1984/mandrel/issues/2636)
823
+
824
+
825
+ ### Fixed
826
+
827
+ * **column-sync:** look up project item by issue, not by paginated board scan ([#2633](https://github.com/dsj1984/mandrel/issues/2633)) ([bc6b6e4](https://github.com/dsj1984/mandrel/commit/bc6b6e4b2e1cf736cc65b6c67b022a3fa04146fa)), closes [#2632](https://github.com/dsj1984/mandrel/issues/2632)
828
+
829
+
830
+ ### Changed
831
+
832
+ * **model-selection:** resolve daylight between schema, code, and docs ([#2630](https://github.com/dsj1984/mandrel/issues/2630)) ([d1f1eaf](https://github.com/dsj1984/mandrel/commit/d1f1eaff693528d1f8223f5ff555ea18c6494615)), closes [#2590](https://github.com/dsj1984/mandrel/issues/2590)
833
+
834
+ ## [1.24.0](https://github.com/dsj1984/mandrel/compare/v1.23.0...v1.24.0) (2026-05-19)
835
+
836
+
837
+ ### Added
838
+
839
+ * **close:** sync story/epic branch from base before PR open ([#2581](https://github.com/dsj1984/mandrel/issues/2581)) ([1026c86](https://github.com/dsj1984/mandrel/commit/1026c86759de7f1319c2d173773cb35fedbe4da6)), closes [#2580](https://github.com/dsj1984/mandrel/issues/2580)
840
+ * **workflows:** add /audit-to-stories — convert audit MD findings into actionable GitHub Stories ([#2583](https://github.com/dsj1984/mandrel/issues/2583)) ([#2585](https://github.com/dsj1984/mandrel/issues/2585)) ([e4ab422](https://github.com/dsj1984/mandrel/commit/e4ab4227c84b825f259b8682c95a285baafe08b3))
841
+
842
+ ## [1.23.0](https://github.com/dsj1984/mandrel/compare/v1.22.0...v1.23.0) (2026-05-19)
843
+
844
+
845
+ ### Added
846
+
847
+ * **column-sync:** wire Projects v2 Status sync into transitionTicketState (resolves [#2548](https://github.com/dsj1984/mandrel/issues/2548)) ([#2575](https://github.com/dsj1984/mandrel/issues/2575)) ([5457ca7](https://github.com/dsj1984/mandrel/commit/5457ca7c39a31d8c6d9a80091597364c893785cb))
848
+
849
+
850
+ ### Fixed
851
+
852
+ * **baselines/writer:** project legacy prior rows through projectRow at writer entry ([#2578](https://github.com/dsj1984/mandrel/issues/2578)) ([a106457](https://github.com/dsj1984/mandrel/commit/a1064577334a0cc4a901500f7888dd18b9fb6e29)), closes [#2574](https://github.com/dsj1984/mandrel/issues/2574)
853
+ * **baselines:** ship refresh-service.js inside .agents/ bundle ([#2579](https://github.com/dsj1984/mandrel/issues/2579)) ([e27c109](https://github.com/dsj1984/mandrel/commit/e27c109597485301f9f7d6597c8e5e81b725c8a2)), closes [#2572](https://github.com/dsj1984/mandrel/issues/2572)
854
+ * **full-agentrc:** correct floor axis keys to match v2 envelopes ([#2577](https://github.com/dsj1984/mandrel/issues/2577)) ([bdb90d7](https://github.com/dsj1984/mandrel/commit/bdb90d781c3d4658fe6f720a208db328b5aa5a17)), closes [#2573](https://github.com/dsj1984/mandrel/issues/2573)
855
+
856
+ ## [1.22.0](https://github.com/dsj1984/mandrel/compare/v1.21.0...v1.22.0) (2026-05-18)
857
+
858
+
859
+ ### Fixed
860
+
861
+ * **git-cleanup:** correct merged-PR signal and guard DEP0190 stderr ([#2498](https://github.com/dsj1984/mandrel/issues/2498)) ([8fe3ea0](https://github.com/dsj1984/mandrel/commit/8fe3ea063ea2aa1c495731e1d3dabe94e5c51363))
862
+
863
+
864
+ ### Changed
865
+
866
+ * **audit-suite:** centralize audit artifacts under {tempRoot}/audits ([#2452](https://github.com/dsj1984/mandrel/issues/2452)) ([1eff6c4](https://github.com/dsj1984/mandrel/commit/1eff6c48e1da0f8828016d30db8c4e8aaa3663cd)), closes [#2451](https://github.com/dsj1984/mandrel/issues/2451)
867
+
868
+ ## [1.21.0](https://github.com/dsj1984/mandrel/compare/v1.20.0...v1.21.0) (2026-05-18)
869
+
870
+
871
+ ### Fixed
872
+
873
+ * **git-cleanup:** split current-HEAD skip + add remote-only sweep ([#2446](https://github.com/dsj1984/mandrel/issues/2446)) ([8b63fee](https://github.com/dsj1984/mandrel/commit/8b63feed54b738e97492c00ae284b0db3148f9d1)), closes [#2445](https://github.com/dsj1984/mandrel/issues/2445)
874
+
875
+ ## [1.20.0](https://github.com/dsj1984/mandrel/compare/v1.19.0...v1.20.0) (2026-05-18)
876
+
877
+
878
+ ### Added
879
+
880
+ * **orchestration:** add BranchCleaner lifecycle listener for end-of-Epic branch reap ([#2402](https://github.com/dsj1984/mandrel/issues/2402)) ([b912e54](https://github.com/dsj1984/mandrel/commit/b912e54f5da1c2c8305af4ef0e6eead8f6050d7f)), closes [#2398](https://github.com/dsj1984/mandrel/issues/2398)
881
+
882
+ ## [1.19.0](https://github.com/dsj1984/mandrel/compare/v1.18.0...v1.19.0) (2026-05-18)
883
+
884
+
885
+ ### Added
886
+
887
+ * **epic-deliver:** surface cross-Story conflict findings in manifest and prepare-gate (resolves [#2297](https://github.com/dsj1984/mandrel/issues/2297)) ([#2305](https://github.com/dsj1984/mandrel/issues/2305)) ([e2a3288](https://github.com/dsj1984/mandrel/commit/e2a3288ef4a6d671d91a0a58627d29205fc92f18))
888
+ * **epic-plan:** add cross-Story path-conflict & implicit-dependency graph (resolves [#2296](https://github.com/dsj1984/mandrel/issues/2296)) ([#2302](https://github.com/dsj1984/mandrel/issues/2302)) ([20fe62c](https://github.com/dsj1984/mandrel/commit/20fe62c81f319f40ac17069e6cf5fd44df72ac04))
889
+ * **epic-plan:** decomposer prompt heuristic for shared config-file edits across Stories ([#2300](https://github.com/dsj1984/mandrel/issues/2300)) ([30dadc0](https://github.com/dsj1984/mandrel/commit/30dadc070124e45e5b56cf4295763fee1c28ed65)), closes [#2298](https://github.com/dsj1984/mandrel/issues/2298)
890
+ * **workflows:** add /single-story-plan for standalone Story drafting (resolves [#2293](https://github.com/dsj1984/mandrel/issues/2293)) ([#2295](https://github.com/dsj1984/mandrel/issues/2295)) ([7b9b3b7](https://github.com/dsj1984/mandrel/commit/7b9b3b7cd76d9d92dff9aa451c05fbc6b039199e))
891
+
892
+
893
+ ### Fixed
894
+
895
+ * **retro:** align retro-runner with ITicketingProvider; add no-op guard; count manual interventions ([#2290](https://github.com/dsj1984/mandrel/issues/2290)) ([3815739](https://github.com/dsj1984/mandrel/commit/3815739f0cc707c8ea24606198edf55936de9357)), closes [#2289](https://github.com/dsj1984/mandrel/issues/2289)
896
+
897
+ ## [1.18.0](https://github.com/dsj1984/mandrel/compare/v1.17.0...v1.18.0) (2026-05-17)
898
+
899
+
900
+ ### Fixed
901
+
902
+ * **bootstrap:** sync-agentrc and quality-bootstrap contradict each other on default-key writes ([#2281](https://github.com/dsj1984/mandrel/issues/2281)) ([#2285](https://github.com/dsj1984/mandrel/issues/2285)) ([c6626f3](https://github.com/dsj1984/mandrel/commit/c6626f3723f1a772e90f3eb030402d0a4af6388f))
903
+ * **emit-context:** route Logger output to stderr to keep stdout pure JSON ([#2287](https://github.com/dsj1984/mandrel/issues/2287)) ([5622bd6](https://github.com/dsj1984/mandrel/commit/5622bd6cf63645778a8e108626e5176883ba6b44)), closes [#2278](https://github.com/dsj1984/mandrel/issues/2278)
904
+ * **epic-plan-decompose:** preserve Epic body through reconciler persist ([#2286](https://github.com/dsj1984/mandrel/issues/2286)) ([07e50e5](https://github.com/dsj1984/mandrel/commit/07e50e59e355040115c38586fdf5fdfba8e541c6)), closes [#2283](https://github.com/dsj1984/mandrel/issues/2283)
905
+
906
+
907
+ ### Changed
908
+
909
+ * **epic-deliver:** drop close-as-approval gate for context::acceptance-spec ([#2280](https://github.com/dsj1984/mandrel/issues/2280)) ([328f4a5](https://github.com/dsj1984/mandrel/commit/328f4a539a4748a7b2b3aeb914899320d1ebb452))
910
+ * **epic-plan:** unify Epic canonical headings (Context/Goal/Non-Goals/Scope/AC) ([#2183](https://github.com/dsj1984/mandrel/issues/2183)) ([2abc8f3](https://github.com/dsj1984/mandrel/commit/2abc8f3ea5f245c2370595955b89b71946b00e2e))
911
+
912
+ ## [1.17.0](https://github.com/dsj1984/mandrel/compare/v1.16.0...v1.17.0) (2026-05-17)
913
+
914
+
915
+ ### Added
916
+
917
+ * **story-close:** bounded timeout for biome-format + baseline-refresh spawns ([#2165](https://github.com/dsj1984/mandrel/issues/2165)) ([#2180](https://github.com/dsj1984/mandrel/issues/2180)) ([01a61b3](https://github.com/dsj1984/mandrel/commit/01a61b32488ea6dc9031a5427a2029f56b67a043))
918
+
919
+
920
+ ### Fixed
921
+
922
+ * **story-close:** enforce single baseline-refresh commit per close cycle (resolves [#2176](https://github.com/dsj1984/mandrel/issues/2176)) ([#2177](https://github.com/dsj1984/mandrel/issues/2177)) ([a900e4f](https://github.com/dsj1984/mandrel/commit/a900e4f0c8c5c598dbd831feca218636cecb49d5))
923
+
924
+ ## [1.16.0](https://github.com/dsj1984/mandrel/compare/v1.15.0...v1.16.0) (2026-05-17)
925
+
926
+
927
+ ### Changed
928
+
929
+ * rename /story-execute to /story-deliver (hard cutover) ([#2174](https://github.com/dsj1984/mandrel/issues/2174)) ([a40e385](https://github.com/dsj1984/mandrel/commit/a40e3854ee6bb3e3bf15f096a4186bd0df6c6822)), closes [#2171](https://github.com/dsj1984/mandrel/issues/2171)
930
+
931
+ ## [1.15.0](https://github.com/dsj1984/mandrel/compare/v1.14.0...v1.15.0) (2026-05-17)
932
+
933
+
934
+ ### Added
935
+
936
+ * **epic-deliver:** enforce code-review halted flag before retro phase (resolves [#2167](https://github.com/dsj1984/mandrel/issues/2167)) ([#2168](https://github.com/dsj1984/mandrel/issues/2168)) ([d41634c](https://github.com/dsj1984/mandrel/commit/d41634c606c540abfc0a06d49b8a3120c69c3197))
937
+
938
+ ## [1.14.0](https://github.com/dsj1984/mandrel/compare/v1.13.0...v1.14.0) (2026-05-17)
939
+
940
+
941
+ ### Added
942
+
943
+ * **epic-plan:** add Epic Clarity Gate (new Phase 6) and renumber phases to linear 1..11 ([#2128](https://github.com/dsj1984/mandrel/issues/2128)) ([#2163](https://github.com/dsj1984/mandrel/issues/2163)) ([f65a14f](https://github.com/dsj1984/mandrel/commit/f65a14f4fa954242011ccd7bbebd5ade2c981d12))
944
+
945
+ ## [1.13.0](https://github.com/dsj1984/mandrel/compare/v1.12.0...v1.13.0) (2026-05-16)
946
+
947
+
948
+ ### Fixed
949
+
950
+ * **quality:** inject framework-default floors in resolver; delete dead per-row machinery ([#2125](https://github.com/dsj1984/mandrel/issues/2125)) ([#2126](https://github.com/dsj1984/mandrel/issues/2126)) ([4c3d687](https://github.com/dsj1984/mandrel/commit/4c3d6875a7dd61eeb49888330f9711d29a91d1ea))
951
+
952
+ ## [1.12.0](https://github.com/dsj1984/mandrel/compare/v1.11.0...v1.12.0) (2026-05-16)
953
+
954
+
955
+ ### Added
956
+
957
+ * **bootstrap:** auto-accept inferred git defaults instead of prompting ([#2122](https://github.com/dsj1984/mandrel/issues/2122)) ([09b1413](https://github.com/dsj1984/mandrel/commit/09b1413d203a4c0f886da7a76bf0322895b598dc)), closes [#2121](https://github.com/dsj1984/mandrel/issues/2121)
958
+
959
+ ## [1.11.0](https://github.com/dsj1984/mandrel/compare/v1.10.0...v1.11.0) (2026-05-16)
960
+
961
+
962
+ ### Fixed
963
+
964
+ * **baselines:** maintainability/crap update writes worktree-relative paths instead of repo-relative ([#2079](https://github.com/dsj1984/mandrel/issues/2079)) ([#2080](https://github.com/dsj1984/mandrel/issues/2080)) ([b5f0f24](https://github.com/dsj1984/mandrel/commit/b5f0f245b0b306e984c617efa74b57eceaf2a817))
965
+
966
+ ## [1.10.0](https://github.com/dsj1984/mandrel/compare/v1.9.0...v1.10.0) (2026-05-16)
967
+
968
+
969
+ ### Added
970
+
971
+ * **bootstrap:** unified consumer setup script + README cleanup (hard cutover) ([#2075](https://github.com/dsj1984/mandrel/issues/2075)) ([8543677](https://github.com/dsj1984/mandrel/commit/854367748c68c5191fef99d849664f49329db63f)), closes [#2074](https://github.com/dsj1984/mandrel/issues/2074)
972
+
973
+ ## [1.9.0](https://github.com/dsj1984/mandrel/compare/v1.8.0...v1.9.0) (2026-05-16)
974
+
975
+
976
+ ### Fixed
977
+
978
+ * **epic-plan-decompose:** restore sub-issue link safety net + branch cleanup ([#2067](https://github.com/dsj1984/mandrel/issues/2067)) ([450b159](https://github.com/dsj1984/mandrel/commit/450b159b414cb87603668f3cac1747f6a460c1a7)), closes [#2063](https://github.com/dsj1984/mandrel/issues/2063)
979
+
980
+ ## [1.8.0](https://github.com/dsj1984/mandrel/compare/v1.7.0...v1.8.0) (2026-05-16)
981
+
982
+
983
+ ### Fixed
984
+
985
+ * **epic-plan:** route --emit-context drain logs to stderr ([#2055](https://github.com/dsj1984/mandrel/issues/2055)) ([#2066](https://github.com/dsj1984/mandrel/issues/2066)) ([295bd4b](https://github.com/dsj1984/mandrel/commit/295bd4b0fceb9e9b34c63c8678f7bc15ca02d8e2))
986
+ * **epic-spec-reconciler:** preserve type::* and risk::* labels on Epic persist ([#2064](https://github.com/dsj1984/mandrel/issues/2064)) ([c6aa08f](https://github.com/dsj1984/mandrel/commit/c6aa08f5824b749122317e237a59ebf164d9a01a)), closes [#2056](https://github.com/dsj1984/mandrel/issues/2056)
987
+
988
+ ## [1.7.0](https://github.com/dsj1984/mandrel/compare/v1.6.0...v1.7.0) (2026-05-16)
989
+
990
+
991
+ ### Fixed
992
+
993
+ * **bootstrap:** close consumer-side runtime-deps install gap ([#2057](https://github.com/dsj1984/mandrel/issues/2057)) ([#2061](https://github.com/dsj1984/mandrel/issues/2061)) ([4cfc564](https://github.com/dsj1984/mandrel/commit/4cfc564619626ca80e988a20440ea9ba2bdfa2b7))
994
+ * **tests:** stabilize shipped-baselines-idempotency round-trip ([#2017](https://github.com/dsj1984/mandrel/issues/2017)) ([#2026](https://github.com/dsj1984/mandrel/issues/2026)) ([4cc4075](https://github.com/dsj1984/mandrel/commit/4cc4075a906bbca4a1f866334372585586297df5))
995
+
996
+ ## [1.6.0](https://github.com/dsj1984/mandrel/compare/v1.5.0...v1.6.0) (2026-05-16)
997
+
998
+
999
+ ### Fixed
1000
+
1001
+ * **baselines:** classify new files as additions, not regressions (resolves [#2012](https://github.com/dsj1984/mandrel/issues/2012)) ([#2058](https://github.com/dsj1984/mandrel/issues/2058)) ([3bcb15a](https://github.com/dsj1984/mandrel/commit/3bcb15a8ff8fc36176b168330a173536b983eb06))
1002
+
1003
+ ## [1.5.0](https://github.com/dsj1984/mandrel/compare/v1.4.0...v1.5.0) (2026-05-16)
1004
+
1005
+
1006
+ ### Fixed
1007
+
1008
+ * **bootstrap:** handle fresh-empty-repo bootstrap failure modes ([#2022](https://github.com/dsj1984/mandrel/issues/2022)) ([28ae5d4](https://github.com/dsj1984/mandrel/commit/28ae5d481ca9fb256e6b22bc9e515b2dcc74f5e5)), closes [#2018](https://github.com/dsj1984/mandrel/issues/2018)
1009
+
1010
+ ## [1.4.0](https://github.com/dsj1984/mandrel/compare/v1.3.0...v1.4.0) (2026-05-16)
1011
+
1012
+
1013
+ ### Fixed
1014
+
1015
+ * switch the push-to-main path to set BASELINE_SCOPE=full instead. ([9b8b1a2](https://github.com/dsj1984/mandrel/commit/9b8b1a26e7465920bfd49c469f427b421ccea2e2))
1016
+
1017
+ ## [1.3.0](https://github.com/dsj1984/mandrel/compare/v1.2.0...v1.3.0) (2026-05-16)
1018
+
1019
+
1020
+ ### Added
1021
+
1022
+ * **sweep:** protect active worktrees + add cross-session lock (resolves [#2011](https://github.com/dsj1984/mandrel/issues/2011)) ([#2013](https://github.com/dsj1984/mandrel/issues/2013)) ([67e6bd9](https://github.com/dsj1984/mandrel/commit/67e6bd9c84507368eb4d5c6659cdb9d9d2859f40))
1023
+
1024
+ ## [1.2.0](https://github.com/dsj1984/mandrel/compare/v1.1.0...v1.2.0) (2026-05-16)
1025
+
1026
+
1027
+ ### Added
1028
+
1029
+ * **pr-watch:** auto-recover from BEHIND mergeStateStatus during PR watch loops ([#2009](https://github.com/dsj1984/mandrel/issues/2009)) ([fc013e8](https://github.com/dsj1984/mandrel/commit/fc013e81a1318fc9b0564b6bf0f3e4bc97ba4e4b))
1030
+
1031
+ ## [1.1.0](https://github.com/dsj1984/mandrel/compare/v1.0.0...v1.1.0) (2026-05-15)
1032
+
1033
+
1034
+ ### ⚠ BREAKING CHANGES
1035
+
1036
+ * **release:** footers or !-marked commits never auto-propose a major version. Major bumps now require explicit operator intervention via a Release-As: X.0.0 trailer or a manual edit on the release PR branch.
1037
+
1038
+ ### Added
1039
+
1040
+ * **idea-refinement:** fold grill-me interrogation pattern into Phase 2 (resolves [#1926](https://github.com/dsj1984/mandrel/issues/1926)) ([#1932](https://github.com/dsj1984/mandrel/issues/1932)) ([987eb93](https://github.com/dsj1984/mandrel/commit/987eb93c78bb8a6529228932bcaca21af654ead2))
1041
+
1042
+
1043
+ ### Fixed
1044
+
1045
+ * **release:** use PAT so release-please PRs trigger CI ([#1933](https://github.com/dsj1984/mandrel/issues/1933)) ([4ee603f](https://github.com/dsj1984/mandrel/commit/4ee603f4317e92f3c75397bae28a3e8a3adb75c2))
1046
+
1047
+
1048
+ ### Chores
1049
+
1050
+ * **release:** cap release-please at minor bumps ([#1929](https://github.com/dsj1984/mandrel/issues/1929)) ([d4ea2c8](https://github.com/dsj1984/mandrel/commit/d4ea2c8955a94958e0c96005183ab1252f5a8c09))
1051
+
1052
+ ## [1.0.0] — 2026-05-15
1053
+
1054
+ **Mandrel 1.0 — rebrand + clean slate.** The framework relaunches under the
1055
+ **Mandrel** name with a fresh major-version line. The pre-rebrand version
1056
+ history (v1.x – v5.41.x under the old name, plus the transitional `6.0.0`
1057
+ cut-over tag) is preserved in the project's Git history (the pre-rebrand
1058
+ tags) and is **not
1059
+ comparable** to entries under this line — file structure, package name,
1060
+ and configuration shapes all changed at the rebrand boundary. New
1061
+ adopters target the **`mandrel`** package / **`mandrel.git`** submodule
1062
+ from this point forward.
1063
+
1064
+ ### Added (dispatch hints & parallel tooling)
1065
+
1066
+ All optional unless used; untouched consumers behave as before.
1067
+
1068
+ - Workflow frontmatter: `recommendedModel` and `dispatchModel` (`haiku` |
1069
+ `sonnet` | `opus`) — dispatcher hints only, no required schema fields.
1070
+ - Helper [**parallel-tooling**](../.agents/workflows/helpers/parallel-tooling.md) documenting fan-out tooling in one assistant turn.
1071
+ - Skill **`audit-fan-out`** (opt-in `/audit-fan-out`).
1072
+ - **`epic-perf-report`**: optional `dispatchModel` on `mostFrictionStories[]`
1073
+ items; omitted when absent. See PRD #1276 / Tech Spec #1277 /
1074
+ Stories #1326–#1329.
1075
+
1076
+ ### Breaking changes (decomposition & manifest)
1077
+
1078
+ Hard cut — no aliases. Update `.agentrc.json` in lockstep; legacy shapes fail
1079
+ schema validation.
1080
+
1081
+ - **Concurrency**: single **`orchestration/concurrency`** block (`decomposer`,
1082
+ `deliverRunner`, `waveGate`, `commitAssertion`, `progressReporter`).
1083
+ Removes **`runners.decomposer`**, **`runners.concurrency`**, and
1084
+ **`deliverRunner.concurrencyCap`**; use **`resolveConcurrency(orchestration)`**.
1085
+
1086
+ - **`sizingProfile`** on dispatch-manifest Tasks that exceed **`agentSettings/planning.taskSizing.softFileCount`** file threshold (profiles: **`mechanical-sweep`**, **`atomic-rewrite`**, **`scaffolding`**).
1087
+
1088
+ - **`agentSettings/planning.taskSizing`** — tunable **`maxAcceptance`** /
1089
+ **`maxChanges`** / **`softFileCount`** / **`softAcceptanceCount`** with
1090
+ structured oversized/missing-profile findings consumed by decomposition retry.
1091
+
1092
+ - **Dispatch markdown**: one nested Wave → Story → Task flow (TOC anchors,
1093
+ checkboxes, per‑wave decomposition notes, single footer `<details>`). Behavior
1094
+ is locked by **`tests/lib/presentation/manifest-formatter-end-to-end.test.js`**.
1095
+
1096
+ ### Changed (Story #1922 — agentrc template rename + role split)
1097
+
1098
+ - **Renamed `.agents/min-agentrc.json` → `.agents/starter-agentrc.json`**. The
1099
+ bootstrap delta-seed consumers copy to `.agentrc.json` is now named for what
1100
+ it is: a *starter*, not the absolute minimum. Content unchanged from the
1101
+ pre-rename `min-agentrc.json`.
1102
+ - **Renamed `.agents/default-agentrc.json` → `.agents/full-agentrc.json`** and
1103
+ expanded it to enumerate every schema key. The reference template now
1104
+ includes the three Epic #1720 gates (`mutation`, `lighthouse`,
1105
+ `bundleSize`) plus the two `worktreeIsolation` keys (`primeFromPath`,
1106
+ `allowSymlinkOnWindows`) the schema accepts. Values mirror the in-code
1107
+ framework defaults so the file documents reality, not aspiration. Story
1108
+ #1911 will lift the placeholder mutation / lighthouse / bundle-size
1109
+ floors to their high-bar values.
1110
+ - **Trimmed the dogfood `.agentrc.json`** to minimum + delta. Dropped every
1111
+ key whose value matched a framework default (`planning.maxTickets`,
1112
+ `delivery.execution.timeoutMs`, `delivery.maxTokenBudget`,
1113
+ `delivery.deliverRunner.concurrencyCap`, all of `delivery.signals.*`,
1114
+ `delivery.quality.gateScoping`, the entire `lint` gate, and several
1115
+ inherited fields from `coverage` / `crap` / `maintainability`). The
1116
+ remaining keys are genuine project overrides — primarily the workspace
1117
+ floors, the symlink worktree strategy, and the `riskHeuristics` /
1118
+ `docsFreshness.paths` lists whose runtime fallback is empty.
1119
+ - **Bootstrap workflow** ([agents-bootstrap-project.md §2.5](../.agents/workflows/agents-bootstrap-project.md))
1120
+ rewritten to seed from `starter-agentrc.json` with a refreshed
1121
+ "Why starter, not full?" callout explaining the delta-vs-copy rationale.
1122
+
1123
+ No schema changes. The static schema mirror, AJV runtime schemas, and the
1124
+ runtime defaults in code (`LIMITS_DEFAULTS`, `*_GATE_DEFAULTS`,
1125
+ `DEFAULT_DELIVER_RUNNER`, etc.) are untouched.
1126
+
1127
+ ### Removed
1128
+
1129
+ - Epic #1235 hands-off CI automation: bot approver, auto-fix, triage-PR,
1130
+ baseline-refresh-guardrail workflows and implementations; **`agents-bootstrap-github`**
1131
+ no longer bundles workflow templates. Operator flow: Phase 7 in
1132
+ [`.agents/workflows/epic-deliver.md`](../.agents/workflows/epic-deliver.md). Ruleset **`14286998`**
1133
+ and secrets **`BOT_APPROVER_*`** must be reconciled manually; **`agent-protocols-reviewer`** app may go away.
1134
+ - **Windows** runner removed from **`ci.yml`** / required checks due to flaky
1135
+ c8 drift (#1267); Windows remains covered locally via pre-push.
1136
+
1137
+ ### Changed
1138
+
1139
+ - **Tasks** close at **commit-time**; Story stays **`agent::executing`** until merge
1140
+ (**`story-task-progress.js`**, **`cascade: false`** on close path).
1141
+ - **Story resume** skips Tasks already **`agent::done`** with reachable **`commitSha`**.
1142
+ - **`epic-complete` webhook** fires after **`gh pr create`** (**`epic-deliver-finalize.js`**).
1143
+ - **Maintainability** gate default tolerance **0.001 → 0.5**, overridable via
1144
+ **`agentSettings/quality.maintainability.tolerance`** / **`CRAP_TOLERANCE`**.
1145
+
1146
+ ---
1147
+
1148
+ Pre-rebrand history (the old-name v1.x–v5.41.x line and the 6.0.0 cut-over
1149
+ tag) is preserved in the project's Git history (the pre-rebrand tags).