mandrel 1.94.0 → 2.0.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 (393) hide show
  1. package/.agents/README.md +59 -73
  2. package/.agents/agents/story-worker.md +12 -13
  3. package/.agents/docs/SDLC.md +489 -1285
  4. package/.agents/docs/agentrc-reference.json +177 -67
  5. package/.agents/docs/configuration.md +104 -138
  6. package/.agents/docs/execution-reference.md +17 -20
  7. package/.agents/docs/quality-gates.md +13 -19
  8. package/.agents/docs/workflows.md +3 -3
  9. package/.agents/instructions.md +70 -81
  10. package/.agents/rules/ci-remediation.md +8 -12
  11. package/.agents/rules/git-conventions-reference.md +6 -7
  12. package/.agents/rules/git-conventions.md +16 -22
  13. package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
  14. package/.agents/schemas/agentrc.schema.json +54 -214
  15. package/.agents/schemas/lifecycle/ledger-record.schema.json +1 -1
  16. package/.agents/schemas/lifecycle/retro.end.schema.json +1 -1
  17. package/.agents/schemas/risk-verdict.schema.json +0 -13
  18. package/.agents/scripts/analyze-execution.js +1 -1
  19. package/.agents/scripts/audit-to-stories.js +7 -7
  20. package/.agents/scripts/boot-sweep.js +1 -1
  21. package/.agents/scripts/check-lifecycle-lint.js +6 -9
  22. package/.agents/scripts/check-prepush-recovery.js +1 -1
  23. package/.agents/scripts/cleanup-repo-test-temp.js +6 -1
  24. package/.agents/scripts/lib/Logger.js +6 -10
  25. package/.agents/scripts/lib/audit-suite/runner.js +2 -2
  26. package/.agents/scripts/lib/audit-suite/selector.js +5 -5
  27. package/.agents/scripts/lib/audit-to-stories/{seed-epic-from-findings.js → seed-from-findings.js} +9 -9
  28. package/.agents/scripts/lib/baselines/kernel.js +206 -18
  29. package/.agents/scripts/lib/baselines/kinds/maintainability.js +0 -4
  30. package/.agents/scripts/lib/baselines/reader.js +1 -6
  31. package/.agents/scripts/lib/bdd-runner-detect.js +5 -9
  32. package/.agents/scripts/lib/bootstrap/issue-forms-template.js +32 -33
  33. package/.agents/scripts/lib/checks/core-bare-clean.js +2 -2
  34. package/.agents/scripts/lib/checks/index.js +2 -1
  35. package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +23 -21
  36. package/.agents/scripts/lib/cli/standard-args.js +13 -22
  37. package/.agents/scripts/lib/cli-args.js +16 -7
  38. package/.agents/scripts/lib/close-validation/gates.js +2 -2
  39. package/.agents/scripts/lib/config/ci.js +6 -31
  40. package/.agents/scripts/lib/config/delivery-routing.js +45 -29
  41. package/.agents/scripts/lib/config/explain.js +55 -36
  42. package/.agents/scripts/lib/config/limits.js +17 -58
  43. package/.agents/scripts/lib/config/paths.js +0 -2
  44. package/.agents/scripts/lib/config/quality.js +1 -1
  45. package/.agents/scripts/lib/config/runners.js +17 -50
  46. package/.agents/scripts/lib/config/temp-paths.js +19 -14
  47. package/.agents/scripts/lib/config/worktree-isolation.js +0 -5
  48. package/.agents/scripts/lib/config-resolver.js +2 -7
  49. package/.agents/scripts/lib/config-settings-schema-delivery.js +24 -148
  50. package/.agents/scripts/lib/config-settings-schema-quality.js +8 -14
  51. package/.agents/scripts/lib/config-settings-schema.js +52 -38
  52. package/.agents/scripts/lib/dependency-parser.js +3 -2
  53. package/.agents/scripts/lib/doc-tiers.js +2 -2
  54. package/.agents/scripts/lib/duplicate-search.js +211 -41
  55. package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +1 -1
  56. package/.agents/scripts/lib/findings/promote-finding.js +5 -5
  57. package/.agents/scripts/lib/framework-version.js +2 -3
  58. package/.agents/scripts/lib/git-branch-cleanup.js +1 -10
  59. package/.agents/scripts/lib/git-branch-lifecycle.js +17 -22
  60. package/.agents/scripts/lib/git-utils.js +32 -6
  61. package/.agents/scripts/lib/github/framework-repo.js +6 -0
  62. package/.agents/scripts/lib/label-constants.js +10 -23
  63. package/.agents/scripts/lib/label-taxonomy.js +9 -43
  64. package/.agents/scripts/lib/observability/active-story-env.js +1 -1
  65. package/.agents/scripts/lib/observability/hook-heartbeat.js +20 -52
  66. package/.agents/scripts/lib/observability/source-classifier.js +3 -3
  67. package/.agents/scripts/lib/onboard/init-tail.js +1 -3
  68. package/.agents/scripts/lib/orchestration/audit-lens-routing.js +128 -0
  69. package/.agents/scripts/lib/orchestration/bookkeeping-outbox.js +8 -5
  70. package/.agents/scripts/lib/orchestration/ceremony-routing.js +83 -20
  71. package/.agents/scripts/lib/orchestration/code-review.js +20 -268
  72. package/.agents/scripts/lib/orchestration/column-sync.js +1 -1
  73. package/.agents/scripts/lib/orchestration/consolidation-precondition.js +1 -1
  74. package/.agents/scripts/lib/orchestration/context-envelope.js +2 -5
  75. package/.agents/scripts/lib/orchestration/docs-digest.js +8 -8
  76. package/.agents/scripts/lib/orchestration/file-assumptions.js +7 -13
  77. package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +1 -1
  78. package/.agents/scripts/lib/orchestration/lifecycle/emit-loop-tick.js +8 -8
  79. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +2 -2
  80. package/.agents/scripts/lib/orchestration/lifecycle/ledger-writer.js +6 -3
  81. package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +17 -43
  82. package/.agents/scripts/lib/orchestration/lint-baseline-service.js +4 -4
  83. package/.agents/scripts/lib/orchestration/merge-block-class.js +1 -1
  84. package/.agents/scripts/lib/orchestration/phase-runner.js +3 -2
  85. package/.agents/scripts/lib/orchestration/plan-context.js +248 -266
  86. package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +1 -1
  87. package/.agents/scripts/lib/orchestration/plan-navigation.js +92 -0
  88. package/.agents/scripts/lib/orchestration/plan-persist/fan-out-gate.js +61 -0
  89. package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +97 -0
  90. package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +223 -854
  91. package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +361 -0
  92. package/.agents/scripts/lib/orchestration/plan-persist/summary.js +35 -108
  93. package/.agents/scripts/lib/orchestration/plan-reachability.js +9 -14
  94. package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +1 -1
  95. package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/authoring-context.js +13 -13
  96. package/.agents/scripts/lib/orchestration/planning/decomposer-context.js +27 -0
  97. package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/risk-verdict.js +3 -4
  98. package/.agents/scripts/lib/orchestration/post-merge/phases/branch-cleanup.js +2 -2
  99. package/.agents/scripts/lib/orchestration/post-merge/phases/dashboard-refresh.js +8 -20
  100. package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +3 -2
  101. package/.agents/scripts/lib/orchestration/pr-base-guard.js +18 -28
  102. package/.agents/scripts/lib/orchestration/preflight-cache.js +5 -5
  103. package/.agents/scripts/lib/orchestration/remote-verifier.js +1 -1
  104. package/.agents/scripts/lib/orchestration/resolve-plan-run.js +155 -0
  105. package/.agents/scripts/lib/orchestration/resolves-token.js +1 -1
  106. package/.agents/scripts/lib/orchestration/retro-perf-heuristics.js +8 -8
  107. package/.agents/scripts/lib/orchestration/retro-proposals.js +140 -79
  108. package/.agents/scripts/lib/orchestration/review-depth.js +26 -12
  109. package/.agents/scripts/lib/orchestration/review-providers/codex.js +2 -2
  110. package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +21 -56
  111. package/.agents/scripts/lib/orchestration/run-epilogue.js +426 -0
  112. package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +1 -1
  113. package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +95 -41
  114. package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +16 -13
  115. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +40 -0
  116. package/.agents/scripts/lib/orchestration/single-story-close/runner.js +11 -3
  117. package/.agents/scripts/lib/orchestration/spec-freshness.js +14 -205
  118. package/.agents/scripts/lib/orchestration/spec-section-validator.js +4 -5
  119. package/.agents/scripts/lib/orchestration/spec-spill.js +60 -0
  120. package/.agents/scripts/lib/orchestration/split-policy-validator.js +188 -0
  121. package/.agents/scripts/lib/orchestration/story-close/emit-blocked.js +49 -0
  122. package/.agents/scripts/lib/orchestration/story-close/phases/code-review.js +15 -12
  123. package/.agents/scripts/lib/orchestration/story-follow-ups.js +237 -0
  124. package/.agents/scripts/lib/orchestration/story-init-remote.js +47 -0
  125. package/.agents/scripts/lib/orchestration/story-plan-state.js +48 -0
  126. package/.agents/scripts/lib/orchestration/{epic-runner → story-progress}/story-run-progress-writer.js +3 -3
  127. package/.agents/scripts/lib/orchestration/structured-comment-parser.js +1 -1
  128. package/.agents/scripts/lib/orchestration/task-body-validator.js +8 -18
  129. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +11 -61
  130. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +189 -373
  131. package/.agents/scripts/lib/orchestration/ticket-validator.js +2 -7
  132. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +0 -25
  133. package/.agents/scripts/lib/orchestration/ticketing/reads.js +29 -26
  134. package/.agents/scripts/lib/orchestration/ticketing/transition.js +5 -5
  135. package/.agents/scripts/lib/planning-corpus.js +16 -11
  136. package/.agents/scripts/lib/preflight-runner.js +2 -2
  137. package/.agents/scripts/lib/qa/coverage-verdict.js +5 -5
  138. package/.agents/scripts/lib/single-story/confirm-merge-follow-ups.js +36 -0
  139. package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +1 -1
  140. package/.agents/scripts/lib/story-adjacency.js +11 -14
  141. package/.agents/scripts/lib/story-body/story-body.js +124 -70
  142. package/.agents/scripts/lib/story-plan.js +2 -4
  143. package/.agents/scripts/lib/templates/decomposer-prompts.js +46 -45
  144. package/.agents/scripts/lib/templates/spec-author-prompts.js +47 -45
  145. package/.agents/scripts/lib/{epic-body-sections.js → ticket-body-sections.js} +26 -26
  146. package/.agents/scripts/lib/validation-evidence.js +1 -1
  147. package/.agents/scripts/lib/wave-runner/ready-set.js +6 -6
  148. package/.agents/scripts/lib/workspace-provisioner.js +1 -1
  149. package/.agents/scripts/lib/worktree/lifecycle/reap.js +5 -7
  150. package/.agents/scripts/lint-issue-body.js +71 -40
  151. package/.agents/scripts/mandrel-update-preflight.js +1 -1
  152. package/.agents/scripts/notify.js +4 -3
  153. package/.agents/scripts/plan-context.js +64 -74
  154. package/.agents/scripts/plan-persist.js +121 -280
  155. package/.agents/scripts/plan-run-epilogue.js +97 -0
  156. package/.agents/scripts/providers/github/issues.js +17 -33
  157. package/.agents/scripts/providers/github/mappers.js +0 -12
  158. package/.agents/scripts/providers/github/tickets.js +2 -5
  159. package/.agents/scripts/resolve-plan-run.js +117 -0
  160. package/.agents/scripts/signals-view.js +24 -19
  161. package/.agents/scripts/single-story-close.js +11 -14
  162. package/.agents/scripts/single-story-confirm-merge.js +39 -23
  163. package/.agents/scripts/single-story-init.js +29 -20
  164. package/.agents/scripts/stories-wave-tick.js +6 -6
  165. package/.agents/scripts/story-plan.js +26 -47
  166. package/.agents/scripts/update-ticket-state.js +6 -15
  167. package/.agents/skills/core/analyze-execution/SKILL.md +21 -18
  168. package/.agents/skills/core/idea-refinement/SKILL.md +6 -6
  169. package/.agents/skills/core/scope-triage/SKILL.md +28 -172
  170. package/.agents/skills/skills.index.json +3 -43
  171. package/.agents/starter-agentrc.json +0 -5
  172. package/.agents/templates/agent-protocol.md +9 -10
  173. package/.agents/workflows/audit-architecture.md +3 -3
  174. package/.agents/workflows/audit-clean-code.md +3 -3
  175. package/.agents/workflows/audit-dependencies.md +3 -3
  176. package/.agents/workflows/audit-devops.md +3 -3
  177. package/.agents/workflows/audit-documentation.md +5 -5
  178. package/.agents/workflows/audit-lighthouse.md +3 -3
  179. package/.agents/workflows/audit-navigability.md +3 -2
  180. package/.agents/workflows/audit-performance.md +3 -3
  181. package/.agents/workflows/audit-privacy.md +3 -3
  182. package/.agents/workflows/audit-quality.md +3 -3
  183. package/.agents/workflows/audit-security.md +3 -3
  184. package/.agents/workflows/audit-seo.md +3 -3
  185. package/.agents/workflows/audit-sre.md +3 -3
  186. package/.agents/workflows/audit-to-stories.md +20 -20
  187. package/.agents/workflows/audit-ux-ui.md +3 -3
  188. package/.agents/workflows/deliver.md +122 -174
  189. package/.agents/workflows/git-cleanup.md +3 -4
  190. package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
  191. package/.agents/workflows/helpers/acceptance-self-eval.md +16 -29
  192. package/.agents/workflows/helpers/code-review.md +70 -193
  193. package/.agents/workflows/helpers/{single-story-deliver-reference.md → deliver-story-reference.md} +12 -14
  194. package/.agents/workflows/helpers/{single-story-deliver.md → deliver-story.md} +113 -139
  195. package/.agents/workflows/helpers/diagnose.md +10 -10
  196. package/.agents/workflows/helpers/parallel-tooling.md +1 -1
  197. package/.agents/workflows/helpers/signals.md +16 -16
  198. package/.agents/workflows/helpers/worktree-lifecycle.md +48 -64
  199. package/.agents/workflows/mandrel-update.md +2 -1
  200. package/.agents/workflows/plan.md +112 -145
  201. package/.agents/workflows/qa-assist.md +24 -30
  202. package/.agents/workflows/qa-explore.md +29 -38
  203. package/.agents/workflows/qa-run.md +2 -2
  204. package/README.md +9 -8
  205. package/docs/CHANGELOG.md +30 -0
  206. package/lib/migrations/index.js +6 -5
  207. package/package.json +2 -2
  208. package/.agents/agents/retro.md +0 -42
  209. package/.agents/personas/architect.md +0 -113
  210. package/.agents/personas/devops-engineer.md +0 -38
  211. package/.agents/personas/engineer.md +0 -33
  212. package/.agents/personas/project-manager.md +0 -114
  213. package/.agents/personas/qa-engineer.md +0 -95
  214. package/.agents/personas/security-engineer.md +0 -111
  215. package/.agents/personas/technical-writer.md +0 -101
  216. package/.agents/schemas/dispatch-manifest.json +0 -232
  217. package/.agents/schemas/epic-spec.schema.json +0 -153
  218. package/.agents/schemas/lifecycle/slice.end.schema.json +0 -21
  219. package/.agents/schemas/lifecycle/slice.heartbeat.schema.json +0 -20
  220. package/.agents/schemas/lifecycle/slice.start.schema.json +0 -17
  221. package/.agents/scripts/acceptance-spec-reconciler.js +0 -642
  222. package/.agents/scripts/bookkeeping-reconcile.js +0 -117
  223. package/.agents/scripts/dispatcher.js +0 -295
  224. package/.agents/scripts/epic-audit-prepare.js +0 -497
  225. package/.agents/scripts/epic-audit-recheck.js +0 -274
  226. package/.agents/scripts/epic-deliver-note-intervention.js +0 -192
  227. package/.agents/scripts/epic-deliver-preflight.js +0 -462
  228. package/.agents/scripts/epic-deliver-prepare.js +0 -852
  229. package/.agents/scripts/epic-execute-record-wave.js +0 -449
  230. package/.agents/scripts/epic-plan-clarity.js +0 -211
  231. package/.agents/scripts/epic-plan-healthcheck.js +0 -581
  232. package/.agents/scripts/epic-reconcile.js +0 -625
  233. package/.agents/scripts/lib/baseline-snapshot.js +0 -979
  234. package/.agents/scripts/lib/checks/epic-merge-lock-stale.js +0 -54
  235. package/.agents/scripts/lib/checks/stale-origin-epic.js +0 -49
  236. package/.agents/scripts/lib/config/lifecycle.js +0 -40
  237. package/.agents/scripts/lib/config/preflight.js +0 -58
  238. package/.agents/scripts/lib/config/retro.js +0 -77
  239. package/.agents/scripts/lib/epic-merge-lock.js +0 -322
  240. package/.agents/scripts/lib/epic-plan-clarity.js +0 -181
  241. package/.agents/scripts/lib/epic-plan-ideation.js +0 -261
  242. package/.agents/scripts/lib/orchestration/context-hydration-engine.js +0 -539
  243. package/.agents/scripts/lib/orchestration/deliver-route.js +0 -173
  244. package/.agents/scripts/lib/orchestration/dispatch-engine.js +0 -134
  245. package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +0 -183
  246. package/.agents/scripts/lib/orchestration/epic-cleanup.js +0 -801
  247. package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +0 -310
  248. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/context.js +0 -163
  249. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +0 -140
  250. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +0 -64
  251. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +0 -72
  252. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist-helpers.js +0 -156
  253. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist.js +0 -345
  254. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/planning-artifacts.js +0 -41
  255. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/reconcile-spawn.js +0 -86
  256. package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +0 -391
  257. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/drain.js +0 -94
  258. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +0 -236
  259. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +0 -307
  260. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/spec-freshness.js +0 -117
  261. package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +0 -117
  262. package/.agents/scripts/lib/orchestration/epic-run-state-store.js +0 -621
  263. package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +0 -186
  264. package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +0 -50
  265. package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +0 -129
  266. package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +0 -103
  267. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +0 -267
  268. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +0 -210
  269. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +0 -238
  270. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/_bullet-format.js +0 -32
  271. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/component-drift.js +0 -203
  272. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/crap-drift.js +0 -227
  273. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/maintainability-drift.js +0 -117
  274. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/stalled-worktree.js +0 -37
  275. package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +0 -127
  276. package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +0 -276
  277. package/.agents/scripts/lib/orchestration/epic-runner/wave-scheduler.js +0 -66
  278. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +0 -789
  279. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +0 -676
  280. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-discriminator.js +0 -389
  281. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-format.js +0 -230
  282. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +0 -361
  283. package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +0 -306
  284. package/.agents/scripts/lib/orchestration/finalize/post-handoff-comment.js +0 -489
  285. package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +0 -88
  286. package/.agents/scripts/lib/orchestration/lifecycle/emit-slice-lifecycle.js +0 -270
  287. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +0 -147
  288. package/.agents/scripts/lib/orchestration/lifecycle/listeners/acceptance-reconciler.js +0 -465
  289. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +0 -501
  290. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +0 -984
  291. package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +0 -264
  292. package/.agents/scripts/lib/orchestration/lifecycle/listeners/checkpoint-pointer-writer.js +0 -284
  293. package/.agents/scripts/lib/orchestration/lifecycle/listeners/cleaner.js +0 -355
  294. package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +0 -673
  295. package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +0 -378
  296. package/.agents/scripts/lib/orchestration/lifecycle/listeners/intervention-recorder.js +0 -140
  297. package/.agents/scripts/lib/orchestration/lifecycle/listeners/label-transitioner.js +0 -144
  298. package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +0 -174
  299. package/.agents/scripts/lib/orchestration/manifest-builder.js +0 -222
  300. package/.agents/scripts/lib/orchestration/plan-persist/amend.js +0 -359
  301. package/.agents/scripts/lib/orchestration/plan-persist/delivery-mode.js +0 -127
  302. package/.agents/scripts/lib/orchestration/post-merge-pipeline.js +0 -205
  303. package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +0 -152
  304. package/.agents/scripts/lib/orchestration/retro/phases/checks.js +0 -94
  305. package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +0 -571
  306. package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +0 -450
  307. package/.agents/scripts/lib/orchestration/retro/phases/post-and-mirror.js +0 -191
  308. package/.agents/scripts/lib/orchestration/retro-heuristics.js +0 -57
  309. package/.agents/scripts/lib/orchestration/retro-runner.js +0 -197
  310. package/.agents/scripts/lib/orchestration/spec-renderer.js +0 -447
  311. package/.agents/scripts/lib/orchestration/story-close/auto-refresh-runner.js +0 -747
  312. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/gate-failure.js +0 -211
  313. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/pre-merge-attribution.js +0 -158
  314. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +0 -446
  315. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/regression-projection.js +0 -297
  316. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/scope-discovery.js +0 -48
  317. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution-wiring.js +0 -67
  318. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution.js +0 -161
  319. package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +0 -117
  320. package/.agents/scripts/lib/orchestration/story-close/cd-out-guard.js +0 -86
  321. package/.agents/scripts/lib/orchestration/story-close/cleanup-reconciler.js +0 -147
  322. package/.agents/scripts/lib/orchestration/story-close/close-inputs.js +0 -142
  323. package/.agents/scripts/lib/orchestration/story-close/comment-bodies.js +0 -62
  324. package/.agents/scripts/lib/orchestration/story-close/merge-runner.js +0 -658
  325. package/.agents/scripts/lib/orchestration/story-close/merge-subject.js +0 -198
  326. package/.agents/scripts/lib/orchestration/story-close/phases/branch-restore.js +0 -105
  327. package/.agents/scripts/lib/orchestration/story-close/phases/close.js +0 -222
  328. package/.agents/scripts/lib/orchestration/story-close/phases/gates.js +0 -292
  329. package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +0 -270
  330. package/.agents/scripts/lib/orchestration/story-close/phases/preflight.js +0 -110
  331. package/.agents/scripts/lib/orchestration/story-close/phases/refresh.js +0 -86
  332. package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked-emitter.js +0 -112
  333. package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked.js +0 -157
  334. package/.agents/scripts/lib/orchestration/story-close/post-merge-close.js +0 -421
  335. package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +0 -302
  336. package/.agents/scripts/lib/orchestration/story-close/shared-checkout-guard.js +0 -163
  337. package/.agents/scripts/lib/orchestration/story-close-recovery.js +0 -690
  338. package/.agents/scripts/lib/orchestration/wave-marker.js +0 -28
  339. package/.agents/scripts/lib/orchestration/wave-record-io.js +0 -218
  340. package/.agents/scripts/lib/orchestration/wave-record-notifications.js +0 -145
  341. package/.agents/scripts/lib/orchestration/wave-record-projection.js +0 -212
  342. package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +0 -111
  343. package/.agents/scripts/lib/presentation/manifest-builder.js +0 -239
  344. package/.agents/scripts/lib/presentation/manifest-formatter.js +0 -242
  345. package/.agents/scripts/lib/presentation/manifest-helpers.js +0 -213
  346. package/.agents/scripts/lib/presentation/manifest-persistence.js +0 -261
  347. package/.agents/scripts/lib/presentation/manifest-procedures.js +0 -55
  348. package/.agents/scripts/lib/presentation/manifest-render-waves.js +0 -306
  349. package/.agents/scripts/lib/presentation/manifest-renderer.js +0 -188
  350. package/.agents/scripts/lib/presentation/manifest-story-views.js +0 -110
  351. package/.agents/scripts/lib/push-epic-retry.js +0 -209
  352. package/.agents/scripts/lib/spec/index.js +0 -36
  353. package/.agents/scripts/lib/spec/loader.js +0 -425
  354. package/.agents/scripts/lib/spec/state.js +0 -208
  355. package/.agents/scripts/lib/story-init/blocker-validator.js +0 -68
  356. package/.agents/scripts/lib/story-init/branch-initializer.js +0 -408
  357. package/.agents/scripts/lib/story-init/context-resolver.js +0 -92
  358. package/.agents/scripts/lib/story-init/donor-precheck.js +0 -207
  359. package/.agents/scripts/lib/story-init/state-transitioner.js +0 -80
  360. package/.agents/scripts/lib/story-init/task-graph-builder.js +0 -124
  361. package/.agents/scripts/lib/story-init/transition-summary.js +0 -34
  362. package/.agents/scripts/lib/test-reserved-epic-temp-ids.js +0 -35
  363. package/.agents/scripts/lib/wave-runner/tick.js +0 -754
  364. package/.agents/scripts/lib/wave-runner/wave-runner-error.js +0 -20
  365. package/.agents/scripts/lifecycle-emit-story-dispatch.js +0 -194
  366. package/.agents/scripts/lifecycle-emit.js +0 -510
  367. package/.agents/scripts/retro-run.js +0 -218
  368. package/.agents/scripts/slice-phase.js +0 -361
  369. package/.agents/scripts/standalone-feedback-rollup.js +0 -188
  370. package/.agents/scripts/story-close.js +0 -294
  371. package/.agents/scripts/story-init.js +0 -599
  372. package/.agents/scripts/story-phase.js +0 -369
  373. package/.agents/scripts/wave-tick.js +0 -464
  374. package/.agents/skills/core/epic-plan-consolidate/SKILL.md +0 -172
  375. package/.agents/skills/core/epic-plan-consolidate/examples.md +0 -51
  376. package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +0 -441
  377. package/.agents/skills/core/epic-plan-decompose-author/examples.md +0 -47
  378. package/.agents/skills/core/epic-plan-premortem/SKILL.md +0 -146
  379. package/.agents/skills/core/epic-plan-premortem/examples.md +0 -53
  380. package/.agents/skills/core/epic-plan-spec-author/SKILL.md +0 -383
  381. package/.agents/skills/core/epic-plan-spec-author/examples.md +0 -91
  382. package/.agents/workflows/helpers/deliver-epic-reference.md +0 -547
  383. package/.agents/workflows/helpers/deliver-epic-single.md +0 -331
  384. package/.agents/workflows/helpers/deliver-epic.md +0 -998
  385. package/.agents/workflows/helpers/deliver-stories.md +0 -450
  386. package/.agents/workflows/helpers/epic-audit.md +0 -189
  387. package/.agents/workflows/helpers/epic-deliver-story.md +0 -436
  388. package/.agents/workflows/helpers/epic-testing.md +0 -125
  389. package/.agents/workflows/helpers/plan-epic-reference.md +0 -160
  390. package/.agents/workflows/helpers/plan-epic.md +0 -353
  391. package/.agents/workflows/helpers/plan-story.md +0 -251
  392. package/.agents/workflows/helpers/scope-triage-gate.md +0 -108
  393. /package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/spec-authoring-grounding.js +0 -0
@@ -6,24 +6,18 @@
6
6
  * `planning.*` and `delivery.*`:
7
7
  *
8
8
  * - `planning.context.{maxBytes, summaryMode}` (planning-context budget)
9
- * - `delivery.maxTokenBudget` (task-prompt hydration cap)
10
9
  * - `delivery.execution.timeoutMs` (per-process execution timeout)
11
10
  * - `delivery.lease.ttlMs` (assignee-as-lease staleness window — Story #3480)
12
- * - `delivery.signals.{hotspot, rework, retry}` (performance-signal
13
- * detector thresholds — `churn` and `idle` dropped)
11
+ * - `delivery.signals.{rework, retry}` (performance-signal detector
12
+ * thresholds — `hotspot` retired with Epic #4406; `churn`/`idle` dropped)
14
13
  *
15
- * `maxTickets` (the decomposer reviewability budget) is a **framework
16
- * constant** — Story #4163 collapsed the never-overridden
17
- * `planning.maxTickets` operator knob to `LIMITS_DEFAULTS.maxTickets` and
18
- * removed it from the AJV schema, the published mirror, and the explain
19
- * map. The persist-time over-budget gate (ADR-20260610) still reads the
20
- * constant via `getLimits(config).maxTickets`; `resolveLimits` no longer
21
- * reads `planning.maxTickets`, so setting it in a config is inert.
14
+ * Framework constants (not operator-tunable via `.agentrc.json`):
15
+ * - `maxTickets`decomposer reviewability budget (Story #4163)
22
16
  *
23
- * Dropped entirely: `maxInstructionSteps`, `friction.*` (the LLM
24
- * self-pacing thresholds rewritten as qualitative prose in
25
- * `.agents/instructions.md`), `executionMaxBuffer` (now a framework-internal
26
- * constant in the spawn caller modules), `signals.{churn, idle}`.
17
+ * Dropped entirely: `maxInstructionSteps`, `friction.*`, `executionMaxBuffer`,
18
+ * `signals.{churn, idle}`, `delivery.preflight`, `delivery.maxTokenBudget`
19
+ * (planning no longer sizes against a token-budget envelope; session-mass
20
+ * ceilings are absolute in `DEFAULT_MODEL_CAPACITY`).
27
21
  *
28
22
  * The historic combined accessor `getLimits(config)` is preserved as a
29
23
  * compatibility surface: it returns a wrapper carrying the surviving
@@ -31,14 +25,12 @@
31
25
  * working. New call sites should prefer the specific accessors below.
32
26
  */
33
27
 
34
- import { getPreflight } from './preflight.js';
35
-
36
28
  /**
37
- * Framework defaults for the performance-signal detector thresholds. The two
38
- * dropped detectors (`churn`, `idle`) are omitted entirely.
29
+ * Framework defaults for the performance-signal detector thresholds.
30
+ * `hotspot` was retired with its detector (Epic #4406); `churn` and `idle`
31
+ * were dropped earlier.
39
32
  */
40
33
  export const SIGNALS_DEFAULTS = Object.freeze({
41
- hotspot: Object.freeze({ p95Multiplier: 1.25 }),
42
34
  rework: Object.freeze({ editsPerFile: 5 }),
43
35
  retry: Object.freeze({ repeatCount: 3 }),
44
36
  });
@@ -53,17 +45,10 @@ export const SIGNALS_DEFAULTS = Object.freeze({
53
45
  export const LEASE_TTL_MS_DEFAULT = 900000;
54
46
 
55
47
  /**
56
- * Framework defaults for the surviving limits surface. `executionTimeoutMs`
57
- * bumps from 5 min to 10 min per the Story 1 decisions log.
58
- *
59
- * `maxTokenBudget` is a **single global value** (Story #3875 — raised once
60
- * from 200000 to 300000 so capability-sized Stories are not clipped by
61
- * hydration elision). There is intentionally no per-profile or
62
- * per-complexity budget branch anywhere in the resolver.
48
+ * Framework defaults for the surviving limits surface.
63
49
  */
64
50
  export const LIMITS_DEFAULTS = Object.freeze({
65
51
  maxTickets: 80,
66
- maxTokenBudget: 300000,
67
52
  executionTimeoutMs: 600000,
68
53
  leaseTtlMs: LEASE_TTL_MS_DEFAULT,
69
54
  planningContext: Object.freeze({
@@ -79,7 +64,7 @@ export const LIMITS_DEFAULTS = Object.freeze({
79
64
  * operator can override a single threshold without re-listing the others.
80
65
  *
81
66
  * @param {object|undefined} userSignals
82
- * @returns {{ hotspot: {p95Multiplier: number}, rework: {editsPerFile: number}, retry: {repeatCount: number} }}
67
+ * @returns {{ rework: {editsPerFile: number}, retry: {repeatCount: number} }}
83
68
  */
84
69
  function mergeSignals(userSignals) {
85
70
  const user =
@@ -97,16 +82,14 @@ function mergeSignals(userSignals) {
97
82
 
98
83
  /**
99
84
  * Resolve the surviving limits surface against a `.agentrc.json` shape
100
- * (post-reshape). Accepts the resolved-config wrapper or a partial bag —
101
- * `maxTickets` is the framework constant `LIMITS_DEFAULTS.maxTickets`
102
- * (no longer operator-configurable; Story #4163), pulls `planningContext`
103
- * from `planning.*`, pulls `maxTokenBudget` and `executionTimeoutMs` from
104
- * `delivery.*`, pulls signals from `delivery.signals.*`.
85
+ * (post-reshape). `maxTickets` is a framework constant (never read from
86
+ * config); pulls `planningContext` from `planning.*`, pulls
87
+ * `executionTimeoutMs` from `delivery.*`, pulls signals from
88
+ * `delivery.signals.*`.
105
89
  *
106
90
  * @param {object|undefined} config
107
91
  * @returns {{
108
92
  * maxTickets: number,
109
- * maxTokenBudget: number,
110
93
  * executionTimeoutMs: number,
111
94
  * leaseTtlMs: number,
112
95
  * planningContext: { maxBytes: number, summaryMode: string },
@@ -133,11 +116,7 @@ export function resolveLimits(config) {
133
116
  const lease =
134
117
  delivery.lease && typeof delivery.lease === 'object' ? delivery.lease : {};
135
118
  return {
136
- // `maxTickets` is a framework constant (Story #4163) — never read from
137
- // `planning.maxTickets`. The persist-time over-budget gate still reads
138
- // this value via getLimits().maxTickets.
139
119
  maxTickets: LIMITS_DEFAULTS.maxTickets,
140
- maxTokenBudget: delivery.maxTokenBudget ?? LIMITS_DEFAULTS.maxTokenBudget,
141
120
  executionTimeoutMs:
142
121
  execution.timeoutMs ?? LIMITS_DEFAULTS.executionTimeoutMs,
143
122
  leaseTtlMs: lease.ttlMs ?? LIMITS_DEFAULTS.leaseTtlMs,
@@ -173,26 +152,6 @@ export function getSignals(config) {
173
152
  return getLimits(config).signals;
174
153
  }
175
154
 
176
- /**
177
- * Resolve the configured `delivery.preflight.max*` ceilings as a plain
178
- * object holding **only** the keys the operator actually configured
179
- * (Story #3875 — plan-time/delivery-time reconciliation). Unconfigured
180
- * ceilings (`null` floors, meaning "no cap") are omitted entirely so the
181
- * decomposition context can thread a compact, non-null envelope to the
182
- * planner. An Epic on a zero-config project yields `{}` — never `null`.
183
- *
184
- * @param {object | null | undefined} config
185
- * @returns {Record<string, number>}
186
- */
187
- export function resolvePreflightCeilings(config) {
188
- const resolved = getPreflight(config);
189
- const ceilings = {};
190
- for (const [key, value] of Object.entries(resolved)) {
191
- if (value !== null) ceilings[key] = value;
192
- }
193
- return ceilings;
194
- }
195
-
196
155
  /**
197
156
  * Resolve the assignee-as-lease TTL in milliseconds (Story #3480). Standalone
198
157
  * accessor so the `ticket-lease` module can import it without dragging the
@@ -32,7 +32,6 @@ export const PATHS_DEFAULTS = Object.freeze({
32
32
  * auditOutputDir: string,
33
33
  * scriptsRoot: string,
34
34
  * workflowsRoot: string,
35
- * personasRoot: string,
36
35
  * schemasRoot: string,
37
36
  * skillsRoot: string,
38
37
  * templatesRoot: string,
@@ -53,7 +52,6 @@ export function resolvePaths(userPaths) {
53
52
  auditOutputDir: `${tempRoot}/audits`,
54
53
  scriptsRoot: `${agentRoot}/scripts`,
55
54
  workflowsRoot: `${agentRoot}/workflows`,
56
- personasRoot: `${agentRoot}/personas`,
57
55
  schemasRoot: `${agentRoot}/schemas`,
58
56
  skillsRoot: `${agentRoot}/skills`,
59
57
  templatesRoot: `${agentRoot}/templates`,
@@ -57,7 +57,7 @@ const DEFAULT_COVERAGE_FLOORS = Object.freeze({
57
57
  '*': Object.freeze({ lines: 90, branches: 85, functions: 90 }),
58
58
  });
59
59
  const DEFAULT_CRAP_FLOORS = Object.freeze({
60
- '*': Object.freeze({ crap: 20 }),
60
+ '*': Object.freeze({ max: 30, p95: 20, methodsAbove20: 50 }),
61
61
  });
62
62
  /**
63
63
  * Story #2193 — maintainability rollups expose the `min` / `p50` / `p95`
@@ -1,10 +1,12 @@
1
1
  /**
2
2
  * Runner accessor (Epic #1720 Story #1739 — top-level reshape).
3
3
  *
4
- * Post-reshape, only `delivery.deliverRunner`, `delivery.epicAudit`, and
5
- * `delivery.codeReview` are configurable; everything else lives in
6
- * framework-internal constants exported alongside (`DEFAULT_STORY_MERGE_RETRY`,
7
- * `DEFAULT_DECOMPOSER`).
4
+ * Post-reshape, only `delivery.deliverRunner` and `delivery.codeReview` are
5
+ * configurable via this accessor; everything else lives in framework-internal
6
+ * constants exported alongside (`DEFAULT_STORY_MERGE_RETRY`,
7
+ * `DEFAULT_DECOMPOSER`). `delivery.epicAudit` was removed on v2 (Story-only
8
+ * delivery — no epic-audit runner; remediation policy lives on
9
+ * `delivery.codeReview`).
8
10
  */
9
11
 
10
12
  /** Hardcoded story-merge retry policy (was `orchestration.runners.storyMergeRetry`). */
@@ -23,14 +25,13 @@ export const DEFAULT_DECOMPOSER = Object.freeze({
23
25
  * `delivery.deliverRunner.*` in `.agentrc.json`.
24
26
  *
25
27
  * **Throughput tradeoff — `concurrencyCap`.**
26
- * The default of 3 is intentionally conservative: it keeps host-quota
27
- * consumption low for Epics with small waves and avoids saturating the
28
- * GitHub API with concurrent label writes. For wide-wave Epics where the
29
- * host has adequate parallel-agent quota, operators should raise
30
- * `delivery.deliverRunner.concurrencyCap` wall-clock time falls
31
- * proportionally to the extra concurrency. The safe default is a tuning
32
- * knob, not a performance ceiling. See `helpers/deliver-epic.md` § Phase 2b and
33
- * `agentrc-reference.json` `delivery.deliverRunner.concurrencyCap` for details.
28
+ * The default of 3 is intentionally moderate: it keeps host-quota
29
+ * consumption predictable for multi-Story plan-runs and avoids saturating
30
+ * the GitHub API with concurrent label writes, while still allowing a
31
+ * small ready-set fan-out. Operators who want strictly sequential delivery
32
+ * should set `delivery.deliverRunner.concurrencyCap: 1`. Raising the cap
33
+ * reduces wall-clock time where dependencies allow. See `deliver.md` and
34
+ * `agentrc-reference.json` `delivery.deliverRunner.concurrencyCap`.
34
35
  *
35
36
  * **`verifyConcurrencyCap`** (Epic #3019 Tech Spec §1.4 / Story #3024) is a
36
37
  * separate knob that bounds the `verifyWaveResults` loop independently of
@@ -39,35 +40,14 @@ export const DEFAULT_DECOMPOSER = Object.freeze({
39
40
  */
40
41
  const DEFAULT_DELIVER_RUNNER = Object.freeze({
41
42
  concurrencyCap: 3,
42
- progressReportIntervalSec: 120,
43
43
  verifyConcurrencyCap: 4,
44
44
  });
45
45
 
46
46
  /**
47
- * Default auto-fix loop ceilings for /deliver Phase 4 (epic-audit)
48
- * and Phase 5 (code-review). Operators override via
49
- * `delivery.epicAudit.*` and `delivery.codeReview.*` in `.agentrc.json`
50
- * (Story #2611, Epic #2586).
51
- *
52
- * `autoFixSeverity` is **tier-aware** (Story #4412, Epic #4405). The
53
- * Epic-close audit tier (`DEFAULT_EPIC_AUDIT`) defaults to `'high'` —
54
- * remediating only 🔴 Critical + 🟠 High findings on-branch while 🟡 Medium
55
- * and 🟢 Suggestion findings graduate to follow-up issues. This is the
56
- * three-tier model's slim outermost tier: 🟡 Medium code-quality concerns are
57
- * already routed into on-branch remediation shift-left (the write-time
58
- * checklist threading of Story #4410 and the Story-scope local-lens pass of
59
- * Story #4409), so the Epic-close tier stops paying to re-remediate them where
60
- * a fix is most expensive. The code-review tier (`DEFAULT_CODE_REVIEW`) keeps
61
- * the `'medium'` default introduced by Story #4399. Both are hard cutovers per
62
- * `rules/git-conventions.md` — no back-compat flag; an operator opts back into
63
- * the wider routing by setting `delivery.epicAudit.autoFixSeverity: 'medium'`.
47
+ * Default auto-fix loop ceilings for /deliver code-review. Operators
48
+ * override via `delivery.codeReview.*` in `.agentrc.json` (Story #2611,
49
+ * Epic #2586; `autoFixSeverity` default `'medium'` per Story #4399).
64
50
  */
65
- export const DEFAULT_EPIC_AUDIT = Object.freeze({
66
- maxFixAttempts: 3,
67
- maxFixScopeFiles: 5,
68
- autoFixSeverity: 'high',
69
- });
70
-
71
51
  export const DEFAULT_CODE_REVIEW = Object.freeze({
72
52
  maxFixAttempts: 3,
73
53
  maxFixScopeFiles: 5,
@@ -79,8 +59,7 @@ export const DEFAULT_CODE_REVIEW = Object.freeze({
79
59
  *
80
60
  * @param {object | null | undefined} config
81
61
  * @returns {{
82
- * deliverRunner: { concurrencyCap: number, progressReportIntervalSec: number, verifyConcurrencyCap: number },
83
- * epicAudit: { maxFixAttempts: number, maxFixScopeFiles: number, autoFixSeverity: 'high'|'medium' },
62
+ * deliverRunner: { concurrencyCap: number, verifyConcurrencyCap: number },
84
63
  * codeReview: { maxFixAttempts: number, maxFixScopeFiles: number, autoFixSeverity: 'high'|'medium' },
85
64
  * storyMergeRetry: { maxAttempts: number, backoffMs: readonly number[] },
86
65
  * decomposer: { concurrencyCap: number },
@@ -88,28 +67,16 @@ export const DEFAULT_CODE_REVIEW = Object.freeze({
88
67
  */
89
68
  export function getRunners(config) {
90
69
  const deliverRunnerUser = config?.delivery?.deliverRunner ?? {};
91
- const epicAuditUser = config?.delivery?.epicAudit ?? {};
92
70
  const codeReviewUser = config?.delivery?.codeReview ?? {};
93
71
  return {
94
72
  deliverRunner: {
95
73
  concurrencyCap:
96
74
  deliverRunnerUser.concurrencyCap ??
97
75
  DEFAULT_DELIVER_RUNNER.concurrencyCap,
98
- progressReportIntervalSec:
99
- deliverRunnerUser.progressReportIntervalSec ??
100
- DEFAULT_DELIVER_RUNNER.progressReportIntervalSec,
101
76
  verifyConcurrencyCap:
102
77
  deliverRunnerUser.verifyConcurrencyCap ??
103
78
  DEFAULT_DELIVER_RUNNER.verifyConcurrencyCap,
104
79
  },
105
- epicAudit: {
106
- maxFixAttempts:
107
- epicAuditUser.maxFixAttempts ?? DEFAULT_EPIC_AUDIT.maxFixAttempts,
108
- maxFixScopeFiles:
109
- epicAuditUser.maxFixScopeFiles ?? DEFAULT_EPIC_AUDIT.maxFixScopeFiles,
110
- autoFixSeverity:
111
- epicAuditUser.autoFixSeverity ?? DEFAULT_EPIC_AUDIT.autoFixSeverity,
112
- },
113
80
  codeReview: {
114
81
  maxFixAttempts:
115
82
  codeReviewUser.maxFixAttempts ?? DEFAULT_CODE_REVIEW.maxFixAttempts,
@@ -1,21 +1,21 @@
1
1
  /**
2
- * `temp/epic-<id>/` path-resolution helper (Epic #1030 Story #1039).
2
+ * `temp/run-<id>/` path-resolution helper (Epic #1030 Story #1039).
3
3
  *
4
4
  * Single source of truth for every artifact path that lives under
5
5
  * `project.paths.tempRoot`. Every script that previously hand-rolled
6
- * a flat `temp/<artifact>-epic-<id>.<ext>` path migrates to call one of
6
+ * a flat `temp/<artifact>-run-<id>.<ext>` path migrates to call one of
7
7
  * these helpers. The Tech Spec (#1032) names this module as the cutover
8
8
  * grep target — `temp/.*-epic-` should be empty across `.agents/scripts`
9
9
  * once the migration Stories land.
10
10
  *
11
11
  * Layout:
12
- * temp/epic-<eid>/
12
+ * temp/run-<eid>/
13
13
  * ├─ techspec.md
14
14
  * ├─ manifest.md (dispatch manifest)
15
15
  * ├─ retro.md (mirror of GitHub retro at Epic close)
16
16
  * ├─ perf-report.md (analyzer output, Epic-level)
17
17
  * ├─ lifecycle.ndjson (lifecycle bus ledger)
18
- * ├─ checkpoints/... (epic-runner state store)
18
+ * ├─ checkpoints/... (pre-v2 epic-runner state store; retained layout)
19
19
  * ├─ <name> (epicArtifactPath escape hatch)
20
20
  * └─ stories/
21
21
  * └─ story-<sid>/
@@ -43,7 +43,7 @@
43
43
  * parent of `git rev-parse --git-common-dir`) rather than `process.cwd()`.
44
44
  * Without this, a story child that `cd`s into `.worktrees/story-<id>/` before
45
45
  * calling `story-phase.js` would append `story.heartbeat` records to
46
- * `<worktree>/temp/epic-N/lifecycle.ndjson`, while the `/deliver` host
46
+ * `<worktree>/temp/run-N/lifecycle.ndjson`, while the `/deliver` host
47
47
  * (running from the main checkout) reads the main-checkout copy — so the
48
48
  * idle-watchdog never sees heartbeats and the Epic-lease guard silently
49
49
  * reclaims live foreign claims (the audit-#3513 bug class). Anchoring the
@@ -206,18 +206,23 @@ const artifactName = (name) => {
206
206
  };
207
207
 
208
208
  /**
209
- * `temp/epic-<eid>/` — every Epic-scoped artifact lives under here.
209
+ * `temp/run-<eid>/` — every Epic-scoped artifact lives under here.
210
210
  *
211
211
  * @param {number} eid
212
212
  * @param {object} [config]
213
213
  * @returns {string}
214
214
  */
215
+ export function runTempDir(rid, config) {
216
+ return path.join(anchorTempRoot(tempRootFrom(config)), `run-${epicId(rid)}`);
217
+ }
218
+
219
+ /** @deprecated Use {@link runTempDir}. */
215
220
  export function epicTempDir(eid, config) {
216
- return path.join(anchorTempRoot(tempRootFrom(config)), `epic-${epicId(eid)}`);
221
+ return runTempDir(eid, config);
217
222
  }
218
223
 
219
224
  /**
220
- * `temp/epic-<eid>/stories/story-<sid>/` — every Story-scoped artifact
225
+ * `temp/run-<eid>/stories/story-<sid>/` — every Story-scoped artifact
221
226
  * lives under here.
222
227
  *
223
228
  * Story #2874: accepts `eid === null` for standalone Stories (no
@@ -246,7 +251,7 @@ export function storyTempDir(eid, sid, config) {
246
251
  }
247
252
 
248
253
  /**
249
- * `temp/epic-<eid>/stories/story-<sid>/signals.ndjson` — append-only
254
+ * `temp/run-<eid>/stories/story-<sid>/signals.ndjson` — append-only
250
255
  * signal stream consumed by the analyzer (Epic #1030 AC1).
251
256
  *
252
257
  * @param {number} eid
@@ -259,18 +264,18 @@ export function signalsFile(eid, sid, config) {
259
264
  }
260
265
 
261
266
  /**
262
- * `temp/epic-<eid>/stories/story-<sid>/lifecycle.ndjson` — the story-scope
267
+ * `temp/run-<eid>/stories/story-<sid>/lifecycle.ndjson` — the story-scope
263
268
  * ledger destination for lifecycle events emitted directly by a Story
264
269
  * (rather than routed through the Epic-scoped bus ledger). Story #4426
265
270
  * (Epic #4425) introduces the first consumer: a standalone
266
271
  * `single-story-close` run (no parent Epic) emitting `merge.unlanded`
267
- * needs an on-disk home even though there is no `epic-<id>/` directory to
272
+ * needs an on-disk home even though there is no `run-<id>/` directory to
268
273
  * anchor the event to.
269
274
  *
270
275
  * Mirrors `epicLedgerPath` exactly, one level down: `eid === null` routes
271
276
  * through `storyTempDir`'s standalone branch to
272
277
  * `<tempRoot>/standalone/stories/story-<sid>/lifecycle.ndjson`; a real
273
- * `eid` routes to `<tempRoot>/epic-<eid>/stories/story-<sid>/lifecycle.ndjson`,
278
+ * `eid` routes to `<tempRoot>/run-<eid>/stories/story-<sid>/lifecycle.ndjson`,
274
279
  * so an Epic-attached Story's story-scope ledger sits alongside its
275
280
  * `signals.ndjson` sibling.
276
281
  *
@@ -324,7 +329,7 @@ export const epicPerfReportPath = (eid, config) =>
324
329
  epicArtifactPath(eid, 'perf-report.md', config);
325
330
 
326
331
  /**
327
- * `temp/epic-<eid>/epic-perf-report.json` — canonical JSON snapshot of
332
+ * `temp/run-<eid>/epic-perf-report.json` — canonical JSON snapshot of
328
333
  * the `epic-perf-report` payload persisted at /deliver close
329
334
  * (Epic #3019 / Story #3029 / Task #3040). When present alongside the
330
335
  * `epic-perf-report` structured comment, the report is discoverable
@@ -340,7 +345,7 @@ export const epicPerfReportJsonPath = (eid, config) =>
340
345
  epicArtifactPath(eid, 'epic-perf-report.json', config);
341
346
 
342
347
  /**
343
- * `temp/epic-<eid>/lifecycle.ndjson` — append-only lifecycle bus ledger
348
+ * `temp/run-<eid>/lifecycle.ndjson` — append-only lifecycle bus ledger
344
349
  * (Story #2510). The LedgerWriter persists every emitted/completed/failed
345
350
  * record here; the TraceLogger renders the companion markdown from it.
346
351
  *
@@ -33,7 +33,6 @@ export const WORKTREE_ISOLATION_DEFAULTS = Object.freeze({
33
33
  primeFromPath: null,
34
34
  allowSymlinkOnWindows: false,
35
35
  reapOnSuccess: true,
36
- reapOnCancel: true,
37
36
  // Gitignored workspace files copied into each new worktree. Includes the
38
37
  // operator's local-override files (`.agentrc.local.json`,
39
38
  // `.agents/instructions.local.md`) so a worktree-isolated agent honors the
@@ -84,10 +83,6 @@ export function getWorktreeIsolation(config) {
84
83
  typeof wi.reapOnSuccess === 'boolean'
85
84
  ? wi.reapOnSuccess
86
85
  : WORKTREE_ISOLATION_DEFAULTS.reapOnSuccess,
87
- reapOnCancel:
88
- typeof wi.reapOnCancel === 'boolean'
89
- ? wi.reapOnCancel
90
- : WORKTREE_ISOLATION_DEFAULTS.reapOnCancel,
91
86
  bootstrapFiles: Array.isArray(wi.bootstrapFiles)
92
87
  ? wi.bootstrapFiles
93
88
  : [...WORKTREE_ISOLATION_DEFAULTS.bootstrapFiles],
@@ -27,7 +27,6 @@ import path from 'node:path';
27
27
  import { getCiDelivery } from './config/ci.js';
28
28
  import { getCommands } from './config/commands.js';
29
29
  import { getGitHub } from './config/github.js';
30
- import { getLifecycle } from './config/lifecycle.js';
31
30
  import { resolvePaths } from './config/paths.js';
32
31
  import { validateOrchestrationConfig } from './config/validate-orchestration.js';
33
32
  import { getWorktreeIsolation } from './config/worktree-isolation.js';
@@ -43,10 +42,8 @@ export { NOTIFICATIONS_DEFAULTS } from './config/github.js';
43
42
  export {
44
43
  getLimits,
45
44
  LIMITS_DEFAULTS,
46
- resolvePreflightCeilings,
47
45
  } from './config/limits.js';
48
46
  export { getPaths } from './config/paths.js';
49
- export { getPreflight, PREFLIGHT_DEFAULTS } from './config/preflight.js';
50
47
  export {
51
48
  CODING_GUARDRAILS_DEFAULTS,
52
49
  getQuality,
@@ -107,10 +104,8 @@ function applyDeliveryDefaults(rawDelivery) {
107
104
  delivery.worktreeIsolation = getWorktreeIsolation({
108
105
  worktreeIsolation: delivery.worktreeIsolation,
109
106
  });
110
- delivery.lifecycle = getLifecycle({ lifecycle: delivery.lifecycle });
111
- // Story #2899 (Epic #2880) `delivery.ci` always carries
112
- // `skipForStoryPushes: true` by default so Story-branch commit
113
- // tooling applies the `[skip ci]` trailer without operator opt-in.
107
+ // `delivery.ci` always carries autoMerge (and passes watch through) so
108
+ // CI-aware delivery knobs resolve without operator opt-in.
114
109
  delivery.ci = getCiDelivery({ ci: delivery.ci });
115
110
  return delivery;
116
111
  }