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
@@ -64,40 +64,14 @@ const DELIVER_RUNNER_SCHEMA = {
64
64
  type: 'object',
65
65
  properties: {
66
66
  concurrencyCap: { type: 'integer', minimum: 1 },
67
- progressReportIntervalSec: { type: 'integer', minimum: 0 },
68
67
  verifyConcurrencyCap: { type: 'integer', minimum: 1 },
69
68
  },
70
69
  additionalProperties: false,
71
70
  };
72
71
 
73
72
  /**
74
- * `delivery.retro.perfThresholds` (Story #3042, Task #3043) — operator-tunable
75
- * gates for the retro perf-signals classifier. Defaults are documented inline
76
- * here and mirrored in `lib/orchestration/retro-perf-heuristics.js
77
- * (DEFAULT_RETRO_PERF_THRESHOLDS)` and the static schema mirror.
78
- *
79
- * `utilisation` / `bootstrapShare` are unit-interval ratios; values outside
80
- * [0, 1] fall back to defaults at the resolver. `capBindingRunLength` is a
81
- * positive integer count of consecutive cap-binding waves.
73
+ * `delivery.worktreeIsolation` — per-Story git worktree provisioning.
82
74
  */
83
- const RETRO_PERF_THRESHOLDS_SCHEMA = {
84
- type: 'object',
85
- properties: {
86
- utilisation: { type: 'number', minimum: 0, maximum: 1 },
87
- bootstrapShare: { type: 'number', minimum: 0, maximum: 1 },
88
- capBindingRunLength: { type: 'integer', minimum: 1 },
89
- },
90
- additionalProperties: false,
91
- };
92
-
93
- const RETRO_SCHEMA = {
94
- type: 'object',
95
- properties: {
96
- perfThresholds: RETRO_PERF_THRESHOLDS_SCHEMA,
97
- },
98
- additionalProperties: false,
99
- };
100
-
101
75
  const WORKTREE_ISOLATION_SCHEMA = {
102
76
  type: 'object',
103
77
  properties: {
@@ -110,11 +84,15 @@ const WORKTREE_ISOLATION_SCHEMA = {
110
84
  primeFromPath: { type: ['string', 'null'], minLength: 1 },
111
85
  allowSymlinkOnWindows: { type: 'boolean' },
112
86
  reapOnSuccess: { type: 'boolean' },
113
- reapOnCancel: { type: 'boolean' },
114
87
  bootstrapFiles: {
115
88
  type: 'array',
116
89
  items: { type: 'string', minLength: 1 },
117
- default: ['.env', '.mcp.json'],
90
+ default: [
91
+ '.env',
92
+ '.mcp.json',
93
+ '.agentrc.local.json',
94
+ '.agents/instructions.local.md',
95
+ ],
118
96
  },
119
97
  },
120
98
  additionalProperties: false,
@@ -132,20 +110,14 @@ const WORKTREE_ISOLATION_SCHEMA = {
132
110
  };
133
111
 
134
112
  /**
135
- * `delivery.signals` — detector thresholds for the three surviving
136
- * performance-signal categories. `churn` and `idle` were dropped (low
137
- * signal-to-noise). Each block is shallow-merged by the resolver.
113
+ * `delivery.signals` — detector thresholds for the surviving
114
+ * performance-signal categories. `hotspot` was retired with its detector
115
+ * (Epic #4406); `churn` and `idle` were dropped earlier (low signal-to-noise).
116
+ * Each block is shallow-merged by the resolver.
138
117
  */
139
118
  const SIGNALS_SCHEMA = {
140
119
  type: 'object',
141
120
  properties: {
142
- hotspot: {
143
- type: 'object',
144
- properties: {
145
- p95Multiplier: { type: 'number', minimum: 0 },
146
- },
147
- additionalProperties: false,
148
- },
149
121
  rework: {
150
122
  type: 'object',
151
123
  properties: {
@@ -164,26 +136,6 @@ const SIGNALS_SCHEMA = {
164
136
  additionalProperties: false,
165
137
  };
166
138
 
167
- /**
168
- * `delivery.lifecycle` — knobs consumed by the lifecycle event bus
169
- * (Epic #2172). `timeouts` is a per-event budget map (eventName → seconds)
170
- * used by Story 11's `TimeoutWatchdog` listener; missing entries fall back
171
- * to in-listener defaults. `heartbeatWarnSeconds` is the no-progress
172
- * threshold consumed by `HeartbeatMonitor`. Story #2227 lays down the
173
- * keys; consumers land in later stories.
174
- */
175
- const LIFECYCLE_SCHEMA = {
176
- type: 'object',
177
- properties: {
178
- timeouts: {
179
- type: 'object',
180
- additionalProperties: { type: 'integer', minimum: 1 },
181
- },
182
- heartbeatWarnSeconds: { type: 'integer', minimum: 1 },
183
- },
184
- additionalProperties: false,
185
- };
186
-
187
139
  /**
188
140
  * `delivery.mergeWatch` — knobs consumed by the MergeWatcher lifecycle
189
141
  * listener (Story #2896, Epic #2880). `intervalSeconds` is the poll
@@ -203,46 +155,13 @@ const MERGE_WATCH_SCHEMA = {
203
155
  };
204
156
 
205
157
  /**
206
- * `delivery.epicAudit` bounded-retry knobs for /deliver Phase 4
207
- * (epic-audit). `maxFixAttempts` caps how many times the auto-fix loop
208
- * retries a single finding (Story #2611, Epic #2586). `maxFixScopeFiles`
209
- * caps how many files a single auto-fix may touch before escalating to
210
- * `agent::blocked` (default 5) — a deliberately narrow bound for
211
- * unattended auto-fixes, independent of the Story-sizing thresholds in
212
- * `ticket-validator-sizing.js`.
213
- *
214
- * `autoFixSeverity` (Story #4399) is the threshold that governs which findings
215
- * the Epic-close host-LLM remediation loop fixes on-branch. It is **tier-aware**
216
- * (Story #4412, Epic #4405): the Epic-close audit tier defaults to `high`
217
- * (route only 🔴 Critical + 🟠 High into remediation; 🟡 Medium + 🟢 Suggestion
218
- * graduate to follow-up issues) because 🟡 Medium code-quality concerns are
219
- * already remediated shift-left at the write-time and Story-scope tiers — the
220
- * slim outermost tier stops re-paying to fix them where a fix is most
221
- * expensive. Setting `medium` opts back into routing 🔴/🟠/🟡 on-branch. The
222
- * enum is the single validation seam: a configured value round-trips through
223
- * the resolver, and any value outside `['high', 'medium']` is rejected at load.
224
- * Hard cutover per `rules/git-conventions.md` — there is no back-compat flag.
158
+ * `delivery.epicAudit` was removed on v2 (Story-only delivery — no
159
+ * epic-audit runner). Remediation policy lives on `delivery.codeReview`
160
+ * (`CODE_REVIEW_SCHEMA` imported from the quality schema module).
225
161
  */
226
- const EPIC_AUDIT_SCHEMA = {
227
- type: 'object',
228
- properties: {
229
- maxFixAttempts: { type: 'integer', minimum: 0 },
230
- maxFixScopeFiles: { type: 'integer', minimum: 1 },
231
- autoFixSeverity: { type: 'string', enum: ['high', 'medium'] },
232
- },
233
- additionalProperties: false,
234
- };
235
162
 
236
- // Epic #4475 (M4-A) — single-delivery routing kill-switch.
237
- // `delivery.routing.singleDelivery` (default true via getDeliveryRouting) is
238
- // the global kill-switch for the single-delivery route. When true (the
239
- // default), an Epic marked `delivery::single` at plan time routes to the
240
- // single-delivery helper; when false, EVERY Epic — even a single-marked one —
241
- // is forced down the fan-out path (the instant, code-rollback-free per-consumer
242
- // revert). Shipped INERT in M4-A: the router's single verdict falls through to
243
- // fan-out until M4-B wires the executor, so the knob has no observable effect
244
- // yet.
245
163
  // Epic #4478 (M7-B) — role-scoped-agent kill-switch + maker-checker floor.
164
+ // Stage 6 dropped `delivery.routing.singleDelivery` (v1 epic route switch).
246
165
  // `delivery.routing.roleScopedAgents` (default true via getDeliveryRouting)
247
166
  // flips converted delivery spawns onto their `.claude/agents/<role>.md` boot
248
167
  // context; false falls back to `subagent_type: general-purpose` (the instant
@@ -253,27 +172,21 @@ const EPIC_AUDIT_SCHEMA = {
253
172
  const ROUTING_SCHEMA = {
254
173
  type: 'object',
255
174
  properties: {
256
- singleDelivery: { type: 'boolean' },
257
175
  roleScopedAgents: { type: 'boolean' },
258
176
  freshCriticSampleRate: { type: 'number', minimum: 0, maximum: 1 },
177
+ ceremonyProfile: {
178
+ type: 'string',
179
+ enum: ['minimal', 'standard', 'strict'],
180
+ },
181
+ closeAndLand: { type: 'boolean' },
259
182
  },
260
183
  additionalProperties: false,
261
184
  };
262
185
 
263
- // Story #2899 (Epic #2880) — performance defaults + preflight (F13).
264
- // `delivery.ci.skipForStoryPushes` (default true via getCiDelivery): when
265
- // true, pre-push tooling appends a `[skip ci]` trailer to Story-branch
266
- // commit subjects so intermediate pushes do not stampede the CI fleet.
267
- // The Epic-branch merge commit produced by story-close.js's merge
268
- // runner never carries the marker, regardless of this flag.
269
- //
270
- // Story #4356 (Epic #4355) — CI-aware delivery namespace. `earlyPr` gates
271
- // whether /deliver opens the Epic PR early (before every Story merges) so CI
272
- // starts warming while later waves run; defaults to `true` via getCiDelivery.
273
- // `watch.*` tunes the merge/CI watch poll loop (poll cadence, poll cap, and
274
- // how many times the watcher may resume after a transient stall).
275
- // `autoMerge` selects the merge posture: `"trust-ci"` (default) merges once
276
- // required checks pass, `"strict"` additionally requires a clean review gate.
186
+ // Story #4356 (Epic #4355) — CI-aware delivery namespace. `watch.*` tunes
187
+ // the merge/CI watch poll loop; `autoMerge` selects the merge posture.
188
+ // Retired: `earlyPr` (Epic early-PR warmup) and `requireChecks` (no
189
+ // AutomergePredicate reader on v2).
277
190
  const CI_WATCH_SCHEMA = {
278
191
  type: 'object',
279
192
  properties: {
@@ -287,33 +200,8 @@ const CI_WATCH_SCHEMA = {
287
200
  const CI_DELIVERY_SCHEMA = {
288
201
  type: 'object',
289
202
  properties: {
290
- skipForStoryPushes: { type: 'boolean' },
291
- earlyPr: { type: 'boolean' },
292
203
  watch: CI_WATCH_SCHEMA,
293
204
  autoMerge: { type: 'string', enum: ['trust-ci', 'strict'] },
294
- // Story #4472 — fail-closed-without-checks policy. When `true`, the
295
- // AutomergePredicate refuses to arm merge in a repo that reports zero
296
- // required checks ("no checks reported"), treating the absence of a CI
297
- // gate as a hard block instead of green. Defaults to `false` so a
298
- // checks-less repo with green close-validation gates lands headlessly
299
- // rather than parking on the operator-merges path.
300
- requireChecks: { type: 'boolean' },
301
- },
302
- additionalProperties: false,
303
- };
304
-
305
- // Story #2899 (Epic #2880) — `delivery.preflight.*` thresholds consumed
306
- // by `epic-deliver-preflight.js`. When any value is exceeded the CLI
307
- // surfaces a breach in its envelope and the workflow flips the Epic to
308
- // `agent::blocked` (see /deliver Phase 1 prelude).
309
- const PREFLIGHT_SCHEMA = {
310
- type: 'object',
311
- properties: {
312
- maxStories: { type: 'integer', minimum: 1 },
313
- maxWaves: { type: 'integer', minimum: 1 },
314
- maxInstallCostSeconds: { type: 'integer', minimum: 1 },
315
- maxGithubApiRequests: { type: 'integer', minimum: 1 },
316
- maxClaudeQuotaTokens: { type: 'integer', minimum: 1 },
317
205
  },
318
206
  additionalProperties: false,
319
207
  };
@@ -401,31 +289,19 @@ export const DELIVERY_SCHEMA = {
401
289
  type: 'object',
402
290
  properties: {
403
291
  execution: EXECUTION_SCHEMA,
404
- maxTokenBudget: { type: 'integer', minimum: 1 },
405
292
  lease: LEASE_SCHEMA,
406
293
  docsFreshness: DOCS_FRESHNESS_SCHEMA,
407
294
  deliverRunner: DELIVER_RUNNER_SCHEMA,
408
295
  worktreeIsolation: WORKTREE_ISOLATION_SCHEMA,
409
296
  signals: SIGNALS_SCHEMA,
410
297
  quality: QUALITY_SCHEMA,
411
- lifecycle: LIFECYCLE_SCHEMA,
412
298
  mergeWatch: MERGE_WATCH_SCHEMA,
413
- epicAudit: EPIC_AUDIT_SCHEMA,
414
299
  codeReview: CODE_REVIEW_SCHEMA,
415
- retro: RETRO_SCHEMA,
416
300
  refactorStage: REFACTOR_STAGE_SCHEMA,
417
301
  acceptanceEval: ACCEPTANCE_EVAL_SCHEMA,
418
302
  feedbackLoop: FEEDBACK_LOOP_SCHEMA,
419
303
  ci: CI_DELIVERY_SCHEMA,
420
304
  routing: ROUTING_SCHEMA,
421
- preflight: PREFLIGHT_SCHEMA,
422
- // Cross-Story concurrency-hazard gate (Story #2297). When true,
423
- // `epic-deliver-prepare` refuses to flip the Epic to
424
- // `agent::executing` if the upcoming waves still carry any conflict
425
- // finding (Story #2296). Off by default; operators using the gate
426
- // also need to wire findings into prepare via the runtime injection
427
- // surface.
428
- failOnConcurrencyHazards: { type: 'boolean' },
429
305
  },
430
306
  additionalProperties: false,
431
307
  };
@@ -123,12 +123,11 @@ export const QUALITY_SCHEMA = {
123
123
  };
124
124
 
125
125
  /**
126
- * `delivery.codeReview` — sibling to `delivery.epicAudit`. Same bounded
127
- * retry + scope cap, applied to /deliver Phase 5 (code-review).
126
+ * `delivery.codeReview` — review-provider chain + bounded-retry knobs for
127
+ * the /deliver code-review ceremony (Story-close and plan-run close).
128
128
  *
129
- * `autoFixSeverity` (Story #4399) is the sibling of
130
- * `delivery.epicAudit.autoFixSeverity`: the threshold that governs which
131
- * Phase 5 findings the host-LLM focused-fix routing remediates on-branch —
129
+ * `autoFixSeverity` (Story #4399) is the threshold that governs which
130
+ * findings the host-LLM focused-fix routing remediates on-branch —
132
131
  * `medium` (default) routes 🔴/🟠/🟡 while 🟢 still graduates, `high`
133
132
  * reproduces the pre-4399 Critical/High-only routing.
134
133
  */
@@ -144,15 +143,10 @@ export const CODE_REVIEW_SCHEMA = {
144
143
  // hatch reserved for adapter-specific options.
145
144
  //
146
145
  // Story #2871 added `security-review` to the inline registry plus
147
- // a multi-provider `providers: []` chain shape. When `providers` is
148
- // set and non-empty, it wins over the legacy single-string
149
- // `provider` field. Chain entries can also reference the
150
- // `ultrareview` manual-prompt provider via `manualPrompt: true`.
151
- provider: {
152
- type: 'string',
153
- enum: ['native', 'codex', 'security-review'],
154
- default: 'native',
155
- },
146
+ // the `providers: []` chain shape. Chain entries can also reference
147
+ // the `ultrareview` manual-prompt provider via `manualPrompt: true`.
148
+ // When `providers` is unset or empty, the factory defaults to
149
+ // `[{ name: 'native' }]`.
156
150
  providers: {
157
151
  type: 'array',
158
152
  items: {
@@ -246,66 +246,80 @@ const CODEBASE_SNAPSHOT_SCHEMA = {
246
246
  additionalProperties: false,
247
247
  };
248
248
 
249
- /**
250
- * `planning.taskSizing` — Story-sizing thresholds consumed by
251
- * `ticket-validator-sizing.js`. Operator overrides shallow-merge with
252
- * `DEFAULT_TASK_SIZING` defaults (softFiles 15, hardFiles 30,
253
- * softAcceptanceCount 10 — the uniform relaxed profile from Story #3874).
254
- * Story #3760 collapsed the per-profile matrix and the parallel
255
- * `testSurface` axis into a flat set of knobs; the `sizingProfile` enum was
256
- * replaced by an optional body-level `wide` declaration that lifts the
257
- * `hardFiles` rejection. The hard `maxAcceptance` ceiling was removed after
258
- * the Epic #4355 decomposition experiment — acceptance mass is advisory-only.
259
- */
260
- const TASK_SIZING_SCHEMA = {
261
- type: 'object',
262
- properties: {
263
- softFiles: { type: 'integer', minimum: 1 },
264
- hardFiles: { type: 'integer', minimum: 1 },
265
- softAcceptanceCount: { type: 'integer', minimum: 1 },
266
- // Under-size (merge-candidate) thresholds (Story #4312). A Story whose
267
- // footprint is at or below BOTH ceilings and that carries a `depends_on`
268
- // edge to a sibling trips the advisory `merge-candidate` soft finding.
269
- mergeCandidateMaxFiles: { type: 'integer', minimum: 1 },
270
- mergeCandidateMaxAcceptance: { type: 'integer', minimum: 1 },
271
- },
272
- additionalProperties: false,
273
- };
274
-
275
249
  const PLANNING_SCHEMA = {
276
250
  type: 'object',
277
251
  properties: {
278
252
  riskHeuristics: LIST_OR_EXTENDER_OF_STRINGS,
279
253
  context: PLANNING_CONTEXT_SCHEMA,
280
254
  codebaseSnapshot: CODEBASE_SNAPSHOT_SCHEMA,
281
- taskSizing: TASK_SIZING_SCHEMA,
282
255
  // Cross-Story conflict-finding severity gates. Off by default so
283
256
  // existing repos keep advisory-only behaviour; flipping either to
284
257
  // `true` upgrades the matching finding class to `'hard'`, which routes
285
258
  // it through the validator's `errors[]` channel and trips the bounded
286
259
  // decompose loop's re-prompt gate.
287
- failOnSharedEditors: { type: 'boolean' },
288
- requireExplicitCrossStoryDeps: { type: 'boolean' },
260
+ // `planning.modelCapacity` was collapsed to the framework constant
261
+ // `DEFAULT_MODEL_CAPACITY` in ticket-validator-sizing.js (authored-
262
+ // tokens-only mass); setting it in a config is rejected as an
263
+ // additional property.
264
+ failOnSharedEditors: {
265
+ type: 'boolean',
266
+ description:
267
+ 'When true, upgrade shared-editor conflict findings to hard errors (default false — advisory soft findings only).',
268
+ },
269
+ requireExplicitCrossStoryDeps: {
270
+ type: 'boolean',
271
+ description:
272
+ 'When true, upgrade implicit cross-Story dependency findings to hard errors (default false — advisory soft findings only).',
273
+ },
289
274
  // Cross-cutting registry conflict knobs consumed by
290
275
  // `ticket-validator-conflicts.js` (wired through
291
276
  // `epic-plan-decompose/phases/planning-artifacts.js`).
292
277
  // `crossCuttingRegistries` names the registry paths whose concurrent
293
278
  // edits are flagged; `failOnRegistryConflicts` upgrades that finding to
294
279
  // `'hard'`. `failOnLargeFanOut` / `largeFanOutThreshold` gate the
295
- // single-Story fan-out finding.
296
- crossCuttingRegistries: LIST_OR_EXTENDER_OF_STRINGS,
297
- failOnRegistryConflicts: { type: 'boolean' },
298
- failOnLargeFanOut: { type: 'boolean' },
299
- largeFanOutThreshold: { type: 'integer', minimum: 0 },
280
+ // delete blast-radius finding (call sites of a module a Story marks
281
+ // `assumption: "deletes"`).
282
+ crossCuttingRegistries: {
283
+ ...LIST_OR_EXTENDER_OF_STRINGS,
284
+ description:
285
+ 'Registry path patterns whose concurrent edits across Stories are flagged as conflicts. Defaults to the framework listener/handler index patterns when omitted.',
286
+ },
287
+ failOnRegistryConflicts: {
288
+ type: 'boolean',
289
+ description:
290
+ 'When true, upgrade cross-cutting registry conflict findings to hard errors (default false).',
291
+ },
292
+ failOnLargeFanOut: {
293
+ type: 'boolean',
294
+ description:
295
+ 'When true, upgrade fan-out-warning findings (delete blast radius) to hard errors (default false — soft advisory).',
296
+ },
297
+ largeFanOutThreshold: {
298
+ type: 'integer',
299
+ minimum: 0,
300
+ description:
301
+ 'Call-site count above which a Story that deletes a module emits a fan-out-warning. Counts base-branch references to the deleted path basename. Soft by default; does not size or reject Stories. Default 10.',
302
+ },
300
303
  // Navigability-reachability config consumed by the plan-persist draft
301
- // reachability gate (Epic #4131 F7; demoted into persist by #4474 PR6
302
- // the manual epic-plan-healthcheck --paranoid re-check reads it too).
304
+ // reachability gate (Epic #4131 F7; demoted into persist by #4474 PR6).
303
305
  // Opt-in: absent or empty routeGlobs degrades to a silent no-op.
304
306
  navigation: {
305
307
  type: 'object',
308
+ description:
309
+ 'Opt-in navigability reachability gate. Absent or empty routeGlobs is a silent no-op.',
306
310
  properties: {
307
- routeGlobs: { type: 'array', items: { type: 'string' } },
308
- navRegistry: { type: 'array', items: { type: 'string' } },
311
+ routeGlobs: {
312
+ type: 'array',
313
+ items: { type: 'string' },
314
+ description:
315
+ 'Glob patterns (e.g. pages/**, app/**/route.ts) marking paths that add a user-facing route.',
316
+ },
317
+ navRegistry: {
318
+ type: 'array',
319
+ items: { type: 'string' },
320
+ description:
321
+ 'Tokens identifying the nav-registry SSOT a route-adding Story is expected to reference.',
322
+ },
309
323
  },
310
324
  additionalProperties: false,
311
325
  },
@@ -2,8 +2,9 @@
2
2
  * dependency-parser.js — Shared Dependency & Metadata Parsing Utilities
3
3
  *
4
4
  * Canonical implementation of dependency-related regex parsing and
5
- * ticket metadata extraction. Eliminates duplicated implementations
6
- * across dispatcher.js, verify-prereqs.js, and providers/github.js.
5
+ * ticket metadata extraction, shared by the ticketing provider and the
6
+ * orchestration layer (e.g. providers/github/tickets.js,
7
+ * lib/story-adjacency.js, lib/branch-name-guard.js).
7
8
  */
8
9
 
9
10
  /**
@@ -7,8 +7,8 @@
7
7
  *
8
8
  * - `alwaysLoaded` — `CLAUDE.md` plus the transitive closure of its
9
9
  * `@`-import references (`@AGENTS.md`,
10
- * `@.agents/instructions.md`, the persona, the always-on
11
- * rules, …). This is the context every session re-pays
10
+ * `@.agents/instructions.md`, the always-on rules, …).
11
+ * This is the context every session re-pays
12
12
  * on every subagent spawn (instructions.md § 4), so it is
13
13
  * the primary budget the context-budget ratchet gates.
14
14
  * - `mandatoryRead` — the resolved `project.docsContextFiles` set (prefixed