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
@@ -49,13 +49,13 @@ description, edit the workflow file’s front-matter and regenerate.
49
49
  | `/audit-security` | Audit dependency CVEs, input-validation gaps, secrets handling, and auth boundaries; emit a structured High/Medium/Low findings report. |
50
50
  | `/audit-seo` | Audit SEO fundamentals and Generative Engine Optimization signals (meta, structured data, crawlability); only relevant for web targets. |
51
51
  | `/audit-sre` | "Audit production-readiness for a release candidate: SLOs, observability, runbooks, error budgets, and rollback paths." |
52
- | `/audit-to-stories` | Convert findings produced by the audit-\* workflows into actionable GitHub Stories. Reads temp/audits/audit-\*-results.md, groups findings cross-audit, deduplicates against existing Issues by fingerprint, and either chains into /plan --idea or opens standalone Stories. |
52
+ | `/audit-to-stories` | Convert findings produced by the audit-\* workflows into actionable GitHub Stories. Reads temp/audits/audit-\*-results.md, groups findings cross-audit, deduplicates against existing Issues by fingerprint, and either chains into /plan --seed-file or opens standalone Stories. |
53
53
  | `/audit-ux-ui` | Audit UX/UI consistency and design system adherence |
54
- | `/deliver` | Unified delivery entry point. Inspects the ticket type(s) and Epic-reference state of the supplied IDs, composes a sequential segment plan over any mix of Epics and standalone Stories, then delegates each segment to the Epic wave loop or the standalone multi-Story fan-out preserving every flag and the parallel-delivery contract of the retired commands. |
54
+ | `/deliver` | Unified delivery entry point. Delivers one or more Stories via the single deliver-story engine story-<id> PR main. Sequences N>1 by depends\_on and runs the per-run epilogue once at the end. |
55
55
  | `/git-cleanup` | Tidy the local checkout in four phases: fast-forward `main`, prune stale remote-tracking refs, sweep merged branches (squash-aware), and triage `git stash` entries — each step gated by operator confirmation. |
56
56
  | `/git-deliver` | Single ad-hoc delivery command for working-tree changes. Detects the git setup and escalates to the right terminal step — commit only, commit + push, or commit + push + open a PR with native auto-merge — picking the default from observable state and letting flags pin any level explicitly. Replaces the retired git-commit-all, git-push, and git-pr-all trio. |
57
57
  | `/mandrel-update` | npm-era upgrade wraparound for a Mandrel consumer. Runs `npx mandrel update` (resolve newest published version → install → re-materialize `.agents/` → migrate → doctor → surface changelog) as the single mechanical step, then walks the operator through the judgment wraparound the CLI deliberately leaves unowned: reconcile `.agentrc.json`, install the Epic #1386 quality-gate surface, refresh the harness permission allowlist, reconcile the consumer's `AGENTS.md` / runbooks against the surfaced changelog, and stage + commit the staged lockfile bump. |
58
- | `/plan` | Unified planning entry point. Routes a seed idea (via scope triage) or an existing Epic ID to the right planning path — the 3-step Epic path (interrogate author persist) or the standalone-Story authoring path — and absorbs every planning flag. |
58
+ | `/plan` | Unified planning entry point. Interrogate author persist. Emits one Story by default (folded Tech Spec in the Story body); splits into N>1 only under the default-single split policy. |
59
59
  | `/qa-assist` | Human-led QA assist loop — set up, then ride a rolling multi-observation intake session. The operator reports observations in any order; the agent enriches each (repro + root-cause file:line + coverage verdict for bugs; analysis + options + recommendation for enhancements), asks clarifying questions only when ambiguous, and appends a redacted ledger item — recording, never planning — to a persistent, resumable session under temp/qa/. Only when the operator says they are done does it review the full ledger and hand off to /plan. |
60
60
  | `/qa-explore` | Agent-led exploratory-QA loop — the agent Plans a surface with an explicit static-vs-drive method choice, drives it (browser MCP or static), and captures ledger items read-only, then Triages — a bounded per-surface session, HITL-gated at every phase transition, routed through the shared dedup/coverage/classification/missing-test/redaction/session core under temp/qa/ |
61
61
  | `/qa-run` | Drive Gherkin scenarios through a real browser as an agent-driven QA sweep |
@@ -8,15 +8,17 @@ set. You MUST strictly adhere to the following rules:
8
8
 
9
9
  ## 1. System Guardrails & Initialization
10
10
 
11
- ### A. Persona Routing & Execution
11
+ ### A. Role Framing (no persona packs)
12
12
 
13
- When a task carries a `persona::<role>` label, or a user explicitly instructs
14
- "Act as [Role/Persona]" in chat, retrieve and strictly adopt the rules in
15
- `.agents/personas/[role].md`. Personas are advisory role framing, not a runtime
16
- injection read the file when the label or the instruction points you at one.
13
+ v2 has **no** `.agents/personas/` packs and **no** `persona::*` GitHub labels.
14
+ Behavioral constraints come from this file, always-on / on-demand rules, and
15
+ skills. Role-scoped spawn contexts (when used) live under `.agents/agents/`
16
+ via `delivery.routing.roleScopedAgents`. QA auth identities (`qa.personas`)
17
+ are a separate fixture concept — not agent behavior packs.
17
18
 
18
- - **Fallback:** If no persona is indicated, or the named file is missing,
19
- default to `.agents/personas/engineer.md`.
19
+ If a user says "act as [role]" in chat, apply the matching skill / workflow
20
+ guidance (e.g. QA skills for verification work, security skill for threat
21
+ modeling) rather than looking for a persona file.
20
22
 
21
23
  ### B. Skill Activation
22
24
 
@@ -202,18 +204,14 @@ hand back to the operator. Do not paper over the loop with another
202
204
  just-in-case retry.
203
205
 
204
206
  This protocol is not soft-prompt-only — it has a runtime substrate. While
205
- executing as a Story delivery sub-agent (via `helpers/epic-deliver-story`
206
- or `helpers/single-story-deliver`), you MUST emit a `story.heartbeat`
207
- lifecycle event on every Task transition (or whenever you stall on a
208
- long-running step) so the parent `/deliver` idle watchdog 2e of
209
- `.agents/workflows/helpers/deliver-epic.md`, re-ticked every 30 minutes via
210
- `wave-tick.js --check-idle 30`) can distinguish a child still making
211
- progress from a dead one. If you genuinely cannot proceed, transition to
212
- `agent::blocked` and exit non-zero never fall silent. A child with no
213
- recent `story.heartbeat`, no commit on its `story-<id>` branch, and no
214
- `agent::blocked` label is exactly the failure mode the idle watchdog is
215
- built to catch, and the watchdog will re-dispatch (or escalate) the Story
216
- without your participation.
207
+ executing as a Story delivery sub-agent (via `helpers/deliver-story`), you
208
+ MUST emit a `story.heartbeat` lifecycle event on every Task transition (or
209
+ whenever you stall on a long-running step) so the parent `/deliver`
210
+ sequencer can distinguish a child still making progress from a dead one. If
211
+ you genuinely cannot proceed, transition to `agent::blocked` and exit
212
+ non-zero never fall silent. A child with no recent `story.heartbeat`, no
213
+ commit on its `story-<id>` branch, and no `agent::blocked` label is exactly
214
+ the stall shape the parent run must detect and escalate.
217
215
 
218
216
  ### J. HITL Blocker Escalation (Safe Execution)
219
217
 
@@ -243,8 +241,7 @@ resolve by this **total ordering** (higher wins):
243
241
  (§ 1.E).
244
242
  2. **This file** — `.agents/instructions.md`.
245
243
  3. **Global rules** — `.agents/rules/*.md` (§ 1.F).
246
- 4. **The active persona** — `.agents/personas/[role].md` (§ 1.A).
247
- 5. **Skills** — `.agents/skills/**/SKILL.md` (§ 1.B).
244
+ 4. **Skills** — `.agents/skills/**/SKILL.md` (§ 1.B).
248
245
 
249
246
  Two carve-outs refine the ordering:
250
247
 
@@ -252,18 +249,18 @@ Two carve-outs refine the ordering:
252
249
  tier overlap, the narrower, more-specific statement governs the broader one
253
250
  (e.g. a stack-specific skill refines a general core skill; a per-rule
254
251
  statement refines a cross-rule one).
255
- - **`rules/security-baseline.md` is inviolable.** No persona, skill, or local
256
- override may relax a security MUST. A security constraint that conflicts
257
- with any lower-tier guidance — or with a local override — always wins,
258
- regardless of its tier position above.
252
+ - **`rules/security-baseline.md` is inviolable.** No skill or local override
253
+ may relax a security MUST. A security constraint that conflicts with any
254
+ lower-tier guidance — or with a local override — always wins, regardless of
255
+ its tier position above.
259
256
 
260
257
  ---
261
258
 
262
259
  ## 2. FinOps & Token Budgeting (Economic Guardrails)
263
260
 
264
261
  Mandrel does **not** enforce live LLM spend from response metadata. It caps
265
- **hydrated prompt size** (`delivery.maxTokenBudget`, section-aware elision) and
266
- runs optional **pre-dispatch estimates** (`delivery.preflight.*`); your host
262
+ **planning context budget** (`planning.context.maxBytes`) and related
263
+ envelopes; your host
267
264
  runtime owns session quota and hard stops. The config keys, the ≈4-char/token
268
265
  estimate, and the elision behaviour are reference detail — see
269
266
  [`docs/execution-reference.md` § FinOps & token budgeting](docs/execution-reference.md#finops--token-budgeting-economic-guardrails).
@@ -283,7 +280,7 @@ budget grounds.
283
280
  ensures (generates or reuses) a per-Epic docs digest — a single compact
284
281
  outline (path, byte size, heading outline with line numbers, and the
285
282
  first paragraph under each `##`) built from `project.docsContextFiles`
286
- — at `temp/epic-<epicId>/docs-digest.md` (`plan-context.js`, via the
283
+ — at `temp/run-<id>/docs-digest.md` (`plan-context.js`, via the
287
284
  shared generator in
288
285
  `.agents/scripts/lib/orchestration/docs-digest.js`; the same file the
289
286
  `/deliver` story sub-agents below already consume). Use the digest to
@@ -303,19 +300,13 @@ budget grounds.
303
300
  hard cutover: there is no read-every-`docsContextFiles`-file branch
304
301
  retained.
305
302
  - **Digest-first Reading (`/deliver` story sub-agents)**: A `/deliver`
306
- Story delivery sub-agent (dispatched via `helpers/epic-deliver-story` or
307
- `helpers/single-story-deliver`) does **not** re-read the full
308
- `project.docsContextFiles` set per Story. Instead it reads the **per-Epic
309
- docs digest** the same file and shape described above — that
310
- `epic-deliver-prepare.js` writes to
311
- `temp/epic-<epicId>/docs-digest.md` and the parent threads into the
312
- child prompt as `docsDigestPath`. Use the digest to decide which docs are
313
- relevant to the Story at hand, then **pull the full file on demand**
314
- (reading the section at the line number the digest names) when a section
315
- bears on the change. When `docsDigestPath` is null (the project has no
316
- `project.docsContextFiles` configured) there is no digest to read and no
317
- per-Story docs mandate — read a full doc only if the Story's own context
318
- points you at one. This is the hard cutover from the former
303
+ Story delivery sub-agent (dispatched via `helpers/deliver-story`) does
304
+ **not** re-read the full `project.docsContextFiles` set per Story. When
305
+ the caller threads a `docsDigestPath`, use that compact outline to decide
306
+ which docs are relevant, then **pull the full file on demand**. When
307
+ `docsDigestPath` is null there is no digest to read and no per-Story docs
308
+ mandate read a full doc only if the Story's own context points you at
309
+ one. This is the hard cutover from the former
319
310
  read-every-file-per-Story rule: delivery children no longer ingest the
320
311
  whole docs set up front.
321
312
  - **Standalone-Story planning path (`story-plan.js --emit-context`)**:
@@ -396,24 +387,23 @@ budget grounds.
396
387
 
397
388
  ---
398
389
 
399
- ## 5. Git & Epic Protocol (Strict Standards)
390
+ ## 5. Git & Story Protocol (Strict Standards)
400
391
 
401
392
  To maintain a clean and readable repository history, you MUST follow these
402
- strict conventions for all epic-related Git operations. See
393
+ strict conventions for all Story-related Git operations. See
403
394
  [`.agents/rules/git-conventions.md`](rules/git-conventions.md) for the full
404
395
  canonical reference.
405
396
 
406
397
  ### A. Branch Naming (Canonical)
407
398
 
408
- Epic execution uses two branch shapes. The runtime creates and maintains
409
- them automatically; agents commit on the execution branch only.
399
+ v2 delivery uses one branch shape. The runtime creates and maintains it
400
+ via `single-story-init.js`; agents commit on that branch only.
410
401
 
411
- | Purpose | Format | Owner | Notes |
412
- | ---------------- | ---------------------------- | ---------------------- | --------------------------------------------------------------------------------------------- |
413
- | Story execution | `story-<storyId>` | `story-init.js` | Per-Story worktree at `.worktrees/story-<storyId>/`. All Story implementation commits land here. |
414
- | Epic integration | `epic/<epicId>` | `/deliver` slash command | Story branches merge into this branch with `--no-ff`. Pushed per wave. |
402
+ | Purpose | Format | Owner | Notes |
403
+ | --------------- | ----------------- | ----------------------- | --------------------------------------------------------------------- |
404
+ | Story execution | `story-<storyId>` | `single-story-init.js` | Per-Story worktree at `.worktrees/story-<storyId>/`. PR target is `main` (squash + required checks). There is no `epic/<id>` integration branch and no `--no-ff` wave merge. |
415
405
 
416
- - **Verification**: After `story-init.js` returns, confirm
406
+ - **Verification**: After `single-story-init.js` returns, confirm
417
407
  `git branch --show-current` reports `story-<storyId>` before making any
418
408
  commits. If it does not, **STOP** and re-init.
419
409
 
@@ -429,31 +419,30 @@ prompted.
429
419
 
430
420
  ### C. History Hygiene
431
421
 
432
- Prioritize a clean `epic/[EPIC_ID]` branch. Story branches are merged into
433
- the Epic branch automatically by `helpers/epic-deliver-story` (via
434
- `story-close.js`); the Epic branch reaches `main` via the pull request that
435
- `/deliver` opens at the end of its run — the operator merges through
436
- the GitHub UI. There is no in-script merge to `main`.
437
-
438
- ### D. Ticket hierarchy (2-tier)
439
-
440
- Mandrel uses a **2-tier ticket hierarchy** (Epic Story).
441
- Acceptance criteria and verification steps live inline on the Story
442
- body (`acceptance[]` / `verify[]`); there is no Feature tier and no
443
- `type::task` ticket layer. Thematic grouping lives as prose in the
444
- Epic body (which also carries the folded Tech Spec sections).
445
-
446
- - The decomposer emits only `type::epic` and `type::story` issues;
447
- Stories attach directly to the Epic.
448
- - Each Story-implementation phase is executed by
449
- `helpers/epic-deliver-story` (Epic-attached) or
450
- `helpers/single-story-deliver` (standalone). There is no per-Task
451
- sub-loop; the agent authors commit subjects directly per
452
- [`rules/git-conventions.md`](rules/git-conventions.md) and references
453
- the parent Story via `(refs #<storyId>)`.
454
- - Story branches, the Epic-branch integration target, the wave-loop
455
- fan-out, and the `epic/<id>` `main` PR merge model are the same
456
- as Section 5.A.
422
+ Every Story reaches `main` via its own PR (`story-<id>` → squash + required
423
+ checks). `helpers/deliver-story` / `single-story-close.js` open that PR;
424
+ there is no Epic integration branch and no in-script push to `main`.
425
+
426
+ ### D. Ticket hierarchy (Story-only)
427
+
428
+ v2 collapses the ticket model to **Story**. Acceptance criteria and
429
+ verification steps live inline on the Story body (`acceptance[]` /
430
+ `verify[]`); the folded Tech Spec lives inline in `## Spec` (over-budget
431
+ Specs fail closed split or tighten; never write under `docs/`). Optional
432
+ `depends_on` edges order rare multi-Story plan-runs.
433
+
434
+ - `/plan` emits one or more `type::story` issues (default N=1); N>1 shares a
435
+ `plan-run::<id>` label.
436
+ - Each Story is executed by `helpers/deliver-story` (invoked from
437
+ [`/deliver`](workflows/deliver.md)). There is no per-Task sub-loop; the
438
+ agent authors commit subjects directly per
439
+ [`rules/git-conventions.md`](rules/git-conventions.md) and references the
440
+ Story via `(refs #<storyId>)`.
441
+ - Branch model matches Section 5.A (`story-<id>` → PR → `main`).
442
+ - There is no `type::epic` / `type::task` label and no Epic issue form. An
443
+ Epic is at most an optional untyped human umbrella issue outside
444
+ orchestration; `/deliver` refuses tickets that still carry an
445
+ `Epic: #N` footer.
457
446
 
458
447
  ---
459
448
 
@@ -471,12 +460,12 @@ To keep the repository clean and avoid polluting the Git history:
471
460
 
472
461
  ## 7. Complexity-Aware Execution
473
462
 
474
- The dispatcher automatically calculates the execution plan for an Epic. A
475
- Story is a **capability slice a frontier model delivers and self-verifies in
476
- one pass** a broad footprint is normal when the change is cohesive. The
477
- numeric sizing backstop lives in one place: `DEFAULT_TASK_SIZING` in
478
- `.agents/scripts/lib/orchestration/ticket-validator-sizing.js` (operator
479
- override via `planning.taskSizing`). Do not re-slice a capability-sized
463
+ `/plan` sizes each Story as a **capability slice a frontier model delivers
464
+ and self-verifies in one pass** a broad footprint is normal when the
465
+ change is cohesive. The session-capacity backstop lives in one place:
466
+ `DEFAULT_MODEL_CAPACITY` in
467
+ `.agents/scripts/lib/orchestration/ticket-validator-sizing.js` (framework
468
+ constant not operator-tunable). Do not re-slice a capability-sized
480
469
  Story into per-module fragments just because it touches many files.
481
470
 
482
471
  ### A. When You See `⚠️ COMPLEXITY WARNING`
@@ -1,12 +1,11 @@
1
1
  # CI Failure Triage & Remediation
2
2
 
3
3
  This rule applies when a delivery path is watching a pull request's CI checks
4
- and a required check is red (or repeatedly slow) — the Epic Phase 8
5
- watch-and-iterate loop
6
- ([`deliver-epic.md`](../workflows/helpers/deliver-epic.md)) and the standalone
4
+ and a required check is red (or repeatedly slow) — the `/deliver` router
5
+ ([`deliver.md`](../workflows/deliver.md)) runs each Story through the
7
6
  single-Story Step 4 CI watch + fix loop
8
- ([`single-story-deliver.md`](../workflows/helpers/single-story-deliver.md))
9
- both hand off to it. It is the single triage brain those mechanisms defer to:
7
+ ([`deliver-story.md`](../workflows/helpers/deliver-story.md)), which hands off
8
+ to it. It is the single triage brain that mechanism defers to:
10
9
  the watcher (`pr-watch-with-update.js`) surfaces the failing check, the run
11
10
  link, and the failure signature; this rule decides what to do next.
12
11
 
@@ -50,18 +49,15 @@ path) or surfaces it inline (standalone path) — start from that digest.
50
49
  A deterministic failure caused by the diff is remediated at source. Use the
51
50
  existing per-check fix table — do **not** duplicate it here:
52
51
 
53
- - **Epic Phase 8**:
54
- [`deliver-epic-reference.md` § Phase 8Watch-and-iterate remediation](../workflows/helpers/deliver-epic-reference.md#phase-8--watch-and-iterate-remediation)
55
- (§ 8.1 Remediation).
56
- - **Standalone Step 4**:
57
- [`single-story-deliver-reference.md` § Step 4 — CI watch + fix recovery](../workflows/helpers/single-story-deliver-reference.md#step-4--ci-watch--fix-recovery).
52
+ - **Story Step 4**:
53
+ [`deliver-story-reference.md` § Step 4CI watch + fix recovery](../workflows/helpers/deliver-story-reference.md#step-4--ci-watch--fix-recovery).
58
54
 
59
55
  In short: lint/format → `npm run lint` + biome apply; maintainability/crap
60
56
  baseline drift → re-run the ratcheted script and fix at source (refresh a
61
57
  baseline only when the diff demonstrably can't be covered); test failure →
62
58
  reproduce with `npm test`, fix source or test; coverage threshold → add tests.
63
- Commit the fix on the delivery branch (`epic/<epicId>` or `story-<storyId>`),
64
- push, and re-run the watcher. Auto-merge stays armed across retries.
59
+ Commit the fix on the delivery branch (`story-<storyId>`), push, and re-run the
60
+ watcher. Auto-merge stays armed across retries.
65
61
 
66
62
  ## Infra, transient, and flaky failures ARE root-cause defects
67
63
 
@@ -79,15 +79,14 @@ checkout — reaping its own merged refs and fast-forwarding the base branch.
79
79
  `/git-cleanup` is a recovery tool, not a routine chore.** The mechanics behind
80
80
  that invariant:
81
81
 
82
- Every flow that lands work — `/deliver` (Epic and standalone-Story paths),
83
- `/git-deliver` — is responsible for leaving the local checkout tidy without
82
+ Every flow that lands work — `/deliver` and `/git-deliver` — is responsible
83
+ for leaving the local checkout tidy without
84
84
  operator intervention:
85
85
 
86
- - **Fast-forwarding the base branch is owned by the flow.** The standalone
87
- multi-Story path fast-forwards `main` itself in its summary phase (via
88
- `git-cleanup.js --fast-forward-main --execute --yes`); the Epic path
89
- fast-forwards `epic/<id>` / `main` on its merge-and-reap beat. No workflow
90
- ends by telling the operator to "run `/git-cleanup` afterwards to catch up".
86
+ - **Fast-forwarding the base branch is owned by the flow.** `/deliver`
87
+ fast-forwards `main` itself in its cleanup phase (via
88
+ `git-cleanup.js --fast-forward-main --execute --yes`). No workflow ends by
89
+ telling the operator to "run `/git-cleanup` afterwards to catch up".
91
90
  - **Reaping merged local refs is owned by the flow's next boot.** `/plan` and
92
91
  `/git-deliver` open with a **protected boot sweep**
93
92
  (`boot-sweep.js`) that fast-forwards `main`, prunes stale remote-tracking
@@ -12,28 +12,22 @@ live in the on-demand
12
12
  **before** doing the matching work; the core below is sufficient for every
13
13
  routine commit, branch, and PR.
14
14
 
15
- ## Canonical Branching (v5 Orchestration)
16
-
17
- ### Epic Base Branch
18
-
19
- Each Epic operates on a dedicated **Epic base branch** named `epic/[EPIC_ID]`
20
- (e.g., `epic/98`). This branch is created from the project's base branch
21
- (`main` by default) and serves as the integration target for all Stories
22
- within that Epic.
23
-
24
- ### Story-Level Branching
25
-
26
- All tasks within a Story MUST be committed to a shared **Story branch**:
27
- `story-<storyId>` (e.g., `story-104`). The runtime owns Story branch
28
- creation via `story-init.js`; agents commit on the active Story branch only.
29
-
30
- > **Commit subjects.** Under the 2-tier hierarchy
31
- > (Epic → Story), Stories have no child tickets. Commits
32
- > land on `story-<storyId>` directly from the agent and the
33
- > Conventional Commit subject references the parent Story via
34
- > `(refs #<storyId>)`. See
35
- > [`.agents/instructions.md` § 5.D](../instructions.md) for the
36
- > full hierarchy contract.
15
+ ## Canonical Branching (v2)
16
+
17
+ ### Story branch → PR → main
18
+
19
+ Every Story lands on a dedicated **Story branch** named `story-<storyId>`
20
+ (e.g., `story-104`), seeded from `project.baseBranch` (`main` by default).
21
+ The runtime owns branch creation via `single-story-init.js`; agents commit
22
+ on that branch only. Close opens a PR against `main` (squash + required
23
+ checks). There is **no** `epic/<id>` integration branch and no `--no-ff`
24
+ wave merge.
25
+
26
+ > **Commit subjects.** Stories have no child tickets. Commits land on
27
+ > `story-<storyId>` directly from the agent and the Conventional Commit
28
+ > subject references the Story via `(refs #<storyId>)`. See
29
+ > [`.agents/instructions.md` § 5.D](../instructions.md) for the hierarchy
30
+ > contract.
37
31
 
38
32
  ## Conventional Commits
39
33
 
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "acceptance-eval-verdict",
4
4
  "title": "Acceptance Self-Eval Verdict",
5
- "description": "Structured output of one independent (fresh-context) acceptance self-eval round (Story #3819). Produced by the critic pass in the Story-implementation phase (helpers/epic-deliver-story.md Step 1 / helpers/single-story-deliver.md Step 1), written under the gitignored temp tree, and consumed by acceptance-eval.js to enforce the bounded round cap and decide whether the Story proceeds to `closing`, redrafts, or escalates to `agent::blocked`. The author MUST NOT be the evaluator — the verdict is an independent judgment of the working diff against each inline acceptance[] item.",
5
+ "description": "Structured output of one independent (fresh-context) acceptance self-eval round (Story #3819). Produced by the critic pass in the Story-implementation phase (helpers/deliver-story.md Step 1a), written under the gitignored temp tree, and consumed by acceptance-eval.js to enforce the bounded round cap and decide whether the Story proceeds to `closing`, redrafts, or escalates to `agent::blocked`. The author MUST NOT be the evaluator — the verdict is an independent judgment of the working diff against each inline acceptance[] item.",
6
6
  "type": "object",
7
7
  "required": ["storyId", "schemaVersion", "round", "criteria"],
8
8
  "properties": {