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
@@ -1,50 +1,54 @@
1
1
  ---
2
2
  description: >-
3
- Perform a comprehensive code review of a change set scoped to either a Story
4
- branch or an Epic branch
3
+ Perform a comprehensive code review of a Story change set against main
4
+ before `/deliver` opens or merges the Story PR
5
5
  ---
6
6
 
7
7
  # Code Review (helper)
8
8
 
9
9
  > **Helper module.** Not a slash command. Invoked automatically from
10
- > `/deliver` (Story scope) and `/deliver` Phase 5 (Epic scope).
11
- > To run a review directly, invoke the parent workflow — operators do not
12
- > call this helper by hand.
10
+ > `/deliver` via `single-story-close.js`. To run a review directly, invoke
11
+ > the parent workflow — operators do not call this helper by hand.
13
12
 
14
13
  This helper performs a comprehensive code review of a change set before it
15
- is merged upstream. It runs in two scopes:
14
+ is merged to `main`. The live v2 path is **Story scope only**:
16
15
 
17
- - **Story scope** — reviews the diff between a Story branch and its parent
18
- Epic branch, before `story-close.js` merges the Story into the Epic.
19
- - **Epic scope** reviews the cumulative diff between an Epic branch and
20
- `main`, before `/deliver` opens the integration pull request.
16
+ - **Story scope** — reviews `main...story-<storyId>` (or
17
+ `project.baseBranch...story-<storyId>`) inside `single-story-close.js`
18
+ after the PR opens and before auto-merge. Findings post to the PR;
19
+ critical findings block close (`agent::blocked`).
20
+
21
+ Legacy `scope: epic` / Epic-branch review procedure (including
22
+ `epic-audit-prepare.js` / `epic-audit-recheck.js`) was removed with the
23
+ v2 Story-only cutover.
21
24
 
22
25
  **Invariant — Story-scope review runs outside the maker's LLM context.**
23
- The Story-scope review executes inside the `story-close.js` /
24
- `single-story-close.js` close subprocess, **not** in the delivering
25
- child's (maker agent's) LLM context. The close pipeline invokes it after
26
- the delivering child has exited, so the change set is reviewed by a
27
- process the maker cannot influence. The enforcing code path is
28
- [`.agents/scripts/lib/orchestration/story-close/phases/code-review.js`](../../scripts/lib/orchestration/story-close/phases/code-review.js)
29
- (invoked from `runStoryCloseLocked`; both close entry points reach it
30
- through the shared `runStoryReviewCore` spine). A future refactor MUST
31
- preserve this isolation: do not move Story-scope review into the maker's
32
- context or run it as a step of the delivering child.
26
+ The Story-scope review executes inside the `single-story-close.js` close
27
+ subprocess, **not** in the delivering child's (maker agent's) LLM context.
28
+ The close pipeline invokes it after the delivering child has exited, so
29
+ the change set is reviewed by a process the maker cannot influence. The
30
+ enforcing code path is
31
+ [`runStoryScopeReview`](../../scripts/lib/orchestration/single-story-close/phases/code-review.js)
32
+ shared
33
+ [`runStoryReviewCore`](../../scripts/lib/orchestration/story-close/phases/code-review.js).
34
+ A future refactor MUST preserve this isolation: do not move Story-scope
35
+ review into the maker's context or run it as a step of the delivering
36
+ child.
33
37
 
34
38
  > **Persona**: `architect` · **Skills**: `core/code-review-and-quality`,
35
39
  > `core/security-and-hardening`
36
40
 
37
41
  ## Argument contract
38
42
 
39
- The caller passes the following arguments (Story workflows pass
40
- `scope: story`; Epic workflows pass `scope: epic`):
43
+ The caller passes the following arguments (`/deliver` passes
44
+ `scope: story`):
41
45
 
42
46
  | Argument | Type | Required | Meaning |
43
47
  | ----------- | ------------------------------------- | -------- | ------------------------------------------------------------------------------------------------ |
44
- | `scope` | `"story"` \| `"epic"` | yes | Selects the integration-pillar diff base and the structured-comment target ticket. |
45
- | `ticketId` | integer | yes | GitHub issue number of the Story (when `scope === 'story'`) or Epic (when `scope === 'epic'`). |
46
- | `baseRef` | string (git ref) | yes | The diff base. Story scope: `epic/<epicId>`. Epic scope: `main` (or `project.baseBranch`). |
47
- | `headRef` | string (git ref) | yes | The branch tip under review. Story scope: `story-<storyId>`. Epic scope: `epic/<epicId>`. |
48
+ | `scope` | `"story"` \| `"epic"` | yes | Live path is `"story"`. `"epic"` remains only for legacy cumulative adapters. |
49
+ | `ticketId` | integer | yes | GitHub issue number of the Story (when `scope === 'story'`) or cumulative ticket (legacy `scope === 'epic'`). |
50
+ | `baseRef` | string (git ref) | yes | The diff base. Story scope: `main` (or `project.baseBranch`). Legacy cumulative scope: caller-provided base. |
51
+ | `headRef` | string (git ref) | yes | The branch tip under review. Story scope: `story-<storyId>`. Legacy cumulative scope: caller-provided head. |
48
52
  | `depth` | `"light"` \| `"standard"` \| `"deep"` | no | Risk-derived review thoroughness lever. Absent → `standard`. See **Review depth** below. |
49
53
 
50
54
  All scope-dependent behavior in this helper branches off the first four
@@ -54,18 +58,18 @@ the argument envelope.
54
58
  ### Review depth (`depth`)
55
59
 
56
60
  `depth` is the risk-derived thoroughness lever introduced by Story #3876 and
57
- made a live consumed signal end to end by Story #3937. The Epic caller
58
- (`/deliver` Phase 5) resolves it from the Epic's judged `planningRisk`
59
- envelope via
60
- [`resolveReviewDepthForEpic`](../../scripts/lib/orchestration/code-review.js)
61
- (`high` → `deep`, `low` → `light`, everything else — including a missing
62
- `epic-plan-state` checkpoint — → `standard`) and passes it in this envelope.
61
+ made a live consumed signal end to end by Story #3937. The live `/deliver`
62
+ close path resolves it from the Story's judged `planningRisk` envelope
63
+ (read from the per-Story `story-plan-state` checkpoint via
64
+ [`resolveStoryPlanningRisk`](../../scripts/lib/orchestration/story-plan-state.js);
65
+ `high` → `deep`, `low` → `light`, everything else — including a missing
66
+ checkpoint — → `standard`) and passes it into `runCodeReview`.
63
67
  `runCodeReview` forwards `depth` to every provider's `runReview` input.
64
68
 
65
69
  It is an **input-only** signal: it changes *how thorough* the review is, never
66
70
  the findings envelope (`{ status, severity, posted, report, halted,
67
71
  blockerReason }`) nor the posted `verification-results` structured-comment body. An
68
- absent or malformed `depth` is treated as `standard`, so an Epic that skipped
72
+ absent or malformed `depth` is treated as `standard`, so a Story that skipped
69
73
  `/plan` still gets a passing review with no new failure mode.
70
74
 
71
75
  How each tier changes the review protocol:
@@ -89,17 +93,13 @@ review yourself, honor the `depth` semantics above directly.
89
93
 
90
94
  ## Step 0 — Resolve Context
91
95
 
92
- 1. Resolve `[TICKET_ID]` from `ticketId` (Story or Epic depending on `scope`).
96
+ 1. Resolve `[TICKET_ID]` from `ticketId` (the Story for live `scope: story`).
93
97
  2. Resolve `[BASE_REF]` from `baseRef` and `[HEAD_REF]` from `headRef`.
94
- 3. Fetch the `[TICKET_ID]` ticket and resolve the planning context:
95
- - **Story scope** read the parent Epic from the Story body, then load
96
- the Epic body (including its `## User Stories` section and its folded
97
- Tech Spec sections).
98
- - **Epic scope** read the Epic body directly; its managed sections
99
- carry the Tech Spec.
100
- 4. Read the Epic body fully (including its Tech Spec sections) to
101
- understand the intended
102
- scope, architectural decisions, and acceptance criteria.
98
+ 3. Fetch the Story ticket and resolve the planning context from its own
99
+ body: folded `## Spec` / `## Slicing`, acceptance criteria, and the
100
+ `story-plan-state` / `risk-verdict` structured comments when present.
101
+ 4. Read that Spec fully to understand the intended scope, architectural
102
+ decisions, and acceptance criteria. Do **not** look for a parent Epic.
103
103
 
104
104
  ## Step 1 — Automated Audit (Pre-Review)
105
105
 
@@ -142,57 +142,21 @@ A diff that matches no local lens adds **no** lens work (the roster is empty and
142
142
  or materialization failure degrades to a skipped envelope and never blocks the
143
143
  close.
144
144
 
145
- Both close entry points
146
- [`runStoryCodeReview`](../../scripts/lib/orchestration/story-close/phases/code-review.js)
147
- (Epic-attached) and
145
+ The live close entry point
148
146
  [`runStoryScopeReview`](../../scripts/lib/orchestration/single-story-close/phases/code-review.js)
149
- (standalone) reach this pass through the single `runStoryReviewCore` spine, so
150
- standalone Stories gain local-lens coverage for the first time. Because the pass
151
- lives inside the close subprocess (invoked after the delivering child exits), it
152
- honors the maker-blind invariant above: a maker never runs its own local-lens
153
- review. This step does not apply to `scope: epic`, whose lens roster is the
154
- cumulative + global + risk-routed set resolved at Epic close (Step 1b).
155
-
156
- ### Step 1b — Epic-close lens roster (`scope: epic` only, Epic #4405)
157
-
158
- When `scope === 'epic'`, the cumulative Epic diff is walked **once** at close:
159
- the Epic-close lens roster is executed as **dimensions of this same review
160
- pass**, not as a separate Phase 4 walk (Story #4412 folded the standalone
161
- epic-audit lens walk into this pass). Resolve and walk the roster inline:
162
-
163
- 1. Resolve the roster via [`helpers/epic-audit.md`](epic-audit.md) Step 1 —
164
- run `epic-audit-prepare.js --gate gate3` and take its **`epicCloseLenses`**
165
- field: the slim roster of cumulative + global + risk-routed lenses, with
166
- every local-tier change-set lens excluded (routed off `resolveLensTier` in
167
- [`selectEpicCloseLenses`](../../scripts/lib/orchestration/code-review.js)).
168
- Local-tier concerns are already verified shift-left (write-time checklists +
169
- the Story-scope local-lens pass), so they are **not** re-run here.
170
- 2. Materialize each rostered lens via
171
- [`runAuditSuite`](../../scripts/lib/audit-suite/index.js) at the envelope's
172
- `depth`, applying the `{{changedFiles}}` substitution, and walk each lens's
173
- `.agents/workflows/audit-<lens>.md` procedure over the cumulative
174
- `main..epic/<epicId>` diff. Global lenses (`globalLenses`, e.g.
175
- `audit-navigability`) run against the WHOLE route tree, exempt from the
176
- change-set narrowing.
177
- 3. Fold the lens findings into this pass's severity aggregate **alongside** the
178
- Step 2 review pillars — one walk of the cumulative diff, one aggregate, one
179
- `verification-results` comment (Step 4). An empty `epicCloseLenses` roster
180
- (docs-only, or every selected lens already covered shift-left, and no
181
- risk-routed lens) adds no lens dimension — the pillars still run.
182
-
183
- This step does not apply to `scope: story` (its roster is the local-tier set of
184
- Step 1a) and is skipped when `epic-audit-prepare.js` returns `degraded: true`
185
- (propagate the reason and STOP, per `epic-audit.md`).
147
+ reaches this pass through the shared `runStoryReviewCore` spine. Because
148
+ the pass lives inside the close subprocess (invoked after the delivering
149
+ child exits), it honors the maker-blind invariant above: a maker never runs
150
+ its own local-lens review.
186
151
 
187
152
  ## Step 2 — Review Pillars
188
153
 
189
154
  For each changed file, execute a strict review against four pillars. The
190
155
  second pillar (**Integration Review**) deliberately defers the security /
191
- performance / quality / coverage sweeps to the change-set-scoped lenses — at
192
- `scope: story` those ran shift-left in the Story-scope local-lens pass (Step
193
- 1a); at `scope: epic` they run inline in this same pass as the Epic-close lens
194
- roster (Step 1b). Re-walking those sweeps a second time in this pillar is
195
- duplication, not defense-in-depth.
156
+ performance / quality / coverage sweeps to the change-set-scoped lenses —
157
+ those ran shift-left in the Story-scope local-lens pass (Step 1a).
158
+ Re-walking those sweeps a second time in this pillar is duplication, not
159
+ defense-in-depth.
196
160
 
197
161
  **Apply the `depth` lever** (see **Review depth** above) to how hard you walk
198
162
  these pillars: at `light`, focus on Pillar 1 and reduce Pillars 2–3 to a quick
@@ -206,57 +170,27 @@ never reduced to a scan.
206
170
 
207
171
  ### Pillar 1: Spec Adherence
208
172
 
209
- Does the implementation match the Epic's requirements and Tech Spec architecture?
173
+ Does the implementation match the Story's acceptance criteria and folded Spec?
210
174
 
211
- - Compare each completed Story/Task against its stated acceptance criteria.
175
+ - Compare the completed Story against its stated acceptance criteria.
212
176
  - Flag any undocumented deviations, missing features, or scope creep.
213
- - Verify API contracts, data models, and interface boundaries match the Tech
214
- Spec.
177
+ - Verify API contracts, data models, and interface boundaries match the Spec.
215
178
 
216
179
  ### Pillar 2: Integration Review
217
180
 
218
- The integration view depends on `scope`. The diff under review is always
219
- `baseRef..headRef`, but the **set of upstream audit signals** to integrate
220
- against differs:
221
-
222
- - **`scope: story`** the diff is `epic/<epicId>..story-<storyId>` (i.e.
223
- one Story's contribution to the Epic). The Story-scope local-lens pass
224
- (Step 1a) has already covered the local-tier concerns; the Epic-close lens
225
- roster has not run for this change set (it runs once at Epic close). The
226
- integration view here focuses on cross-Task ripple within the Story and
227
- contract drift against the Epic branch tip. Look for:
228
- - Cross-Task contract drift inside the Story (one Task's API change vs.
229
- another Task's caller in the same branch).
230
- - Shared-module ripple effects from this Story onto siblings already
231
- merged into `epic/<epicId>`.
232
- - Spec deviations that the per-Task commits papered over.
233
-
234
- - **`scope: epic`** — the diff is `main..epic/<epicId>` (the cumulative
235
- Epic change set). The Epic-close lens roster (`epicCloseLenses`) is walked
236
- **inline as part of this pass** (Step 1b) — the cumulative diff is read once,
237
- and the security, privacy, performance, code-quality, and test-coverage
238
- findings the rostered lenses produce feed this pass's aggregate directly.
239
- There is no separate `audit-results` comment to read (Story #4412 retired it);
240
- the lens findings and the pillar findings share the single
241
- `verification-results` comment this pass posts.
242
-
243
- The integration view at epic scope is what the per-lens audits cannot
244
- produce because each lens runs in isolation:
245
-
246
- - Cross-reference 🔴 / 🟠 lens findings against the spec deviations
247
- flagged in Pillar 1 — a finding that traces back to a deliberate
248
- Tech-Spec decision is different from one that traces back to an
249
- oversight.
250
- - Look for cross-cutting concerns no single lens owns: contract drift
251
- between Stories, shared-module ripple effects, boundary changes that
252
- thread security and performance implications together.
253
- - Note any lens finding that the operator's remediation flow should
254
- bundle (e.g. one refactor closes findings from multiple lenses).
255
-
256
- If the Epic-close roster is empty (docs-only Epic, every selected lens
257
- already covered shift-left, or the pass was skipped via
258
- `--skip-epic-audit` / `--skip-code-review`), record that explicitly in the
259
- findings report and proceed — there is no lens dimension to integrate.
181
+ The diff under review is `baseRef..headRef`
182
+ (`main..story-<storyId>`, or the configured base branch to the Story
183
+ branch). The Story-scope local-lens pass (Step 1a) has already covered the
184
+ local-tier concerns. Lens findings and pillar findings share the single
185
+ `verification-results` comment this pass posts (Story #4411). The
186
+ integration view here focuses on cross-cutting ripple within the Story and
187
+ contract drift against the base branch. Look for:
188
+
189
+ - Contract drift inside the Story (one change's API edit vs. another caller
190
+ in the same branch).
191
+ - Shared-module ripple effects from this Story onto code already merged to
192
+ `main`.
193
+ - Spec deviations that individual commits papered over.
260
194
 
261
195
  ### Pillar 3: Documentation Integrity
262
196
 
@@ -333,7 +267,7 @@ prior baseline before merging.
333
267
 
334
268
  Findings are **persisted as a `verification-results` structured comment on
335
269
  the `[TICKET_ID]` issue** by `runCodeReview` (the unified findings contract of
336
- Story #4411; at `scope: epic` this single comment also carries the Step 1b
270
+ Story #4411; this single comment carries the
337
271
  Epic-close lens findings). The target ticket is the Story when
338
272
  `scope === 'story'` and the Epic when `scope === 'epic'`. The comment
339
273
  is idempotent — re-runs replace the prior one — and its body includes
@@ -483,63 +417,6 @@ escalating to the operator. Escalated findings remain on the `code-review`
483
417
  structured comment with their reason recorded, so Step 5 (and downstream
484
418
  consumers) see exactly why each one was not auto-remediated.
485
419
 
486
- ## Step 4.6 — Cross-phase re-check trigger
487
-
488
- After the focused-fix routing in Step 4.5 completes, any host-LLM-applied
489
- fix commits have modified files on `[HEAD_REF]` that the Epic-close lens
490
- roster already walked (Step 1b). Some of those edits may overlap the
491
- `filePatterns` of one or more lenses (e.g. a fix landing in `**/auth/*.js`
492
- overlaps the `audit-security` lens). When that happens, the lens findings in
493
- the `verification-results` comment are **stale for the overlapping lenses
494
- only** — the non-overlapping findings remain authoritative and MUST NOT be
495
- re-derived.
496
-
497
- > **Scope note.** This cross-phase re-check applies only when
498
- > `scope === 'epic'`. Story-scope reviews carry no Epic-close lens roster,
499
- > so there is nothing to invalidate; skip this step entirely for
500
- > `scope === 'story'`.
501
-
502
- Invoke the re-check selector with the cumulative set of paths touched by
503
- the focused-fix commits:
504
-
505
- ```powershell
506
- node .agents/scripts/epic-audit-recheck.js \
507
- --epic [TICKET_ID] --files <comma-separated-touched-paths>
508
- ```
509
-
510
- For large touched-file lists, pass `@<file>` (where `<file>` is a
511
- newline-delimited list written to `temp/`) to avoid shell argument-length
512
- limits. The CLI emits a JSON envelope of the shape
513
- `{ selectedAudits: [...], context: { ... } }` restricted to lenses whose
514
- `filePatterns` overlap the input file list. An empty `selectedAudits`
515
- array means no overlap — there is nothing to re-run and this step is a
516
- no-op.
517
-
518
- When `selectedAudits` is non-empty:
519
-
520
- 1. Re-invoke each listed lens prompt under
521
- [`../audit-*.md`](../) the same way the Step 1b Epic-close walk does —
522
- one lens at a time, against the current `[HEAD_REF]` tip.
523
- 2. **Append** a `## Cross-phase re-check` section to the **existing**
524
- `verification-results` structured comment on the Epic ticket. Do **not**
525
- post a new comment; the comment is idempotent and downstream consumers
526
- (the code-review trim, `/deliver` Pillar 2, the retro helper)
527
- read it once. The append carries the re-checked lens names, the new
528
- findings (if any), and the focused-fix commit SHAs that triggered the
529
- re-run, so reviewers can trace each finding back to the change set
530
- that produced it.
531
- 3. If the re-check surfaces fresh 🔴 / 🟠 findings, route them back
532
- through Step 4.5's focused-fix routing. Findings that already
533
- received a focused-fix attempt in the first pass do not get a fresh
534
- attempt when the cross-phase re-check resurfaces an adjacent one —
535
- leave them on the `verification-results` comment for the operator.
536
-
537
- If `selectedAudits` is empty, skip silently and proceed to Step 5. The
538
- re-check trigger is **read-only signal** — it never mutates the Epic
539
- branch on its own; mutations only happen if the re-invoked lenses
540
- surface findings that the host LLM then converts into commits through
541
- the same focused-fix routing as Step 4.5.
542
-
543
420
  ## Step 5 — Remediation
544
421
 
545
422
  If the operator instructs you to fix any findings:
@@ -576,7 +453,7 @@ to the next phase of the parent workflow.
576
453
  the scope is set by the caller, and reviewing against the wrong base
577
454
  produces either a hollow review (too small a diff) or noise (too large a
578
455
  diff that includes unrelated history).
579
- - **Always** read the Epic body and Tech Spec before reviewing code. Findings without
456
+ - **Always** read the Story body and folded Spec before reviewing code. Findings without
580
457
  spec context are noise.
581
458
  - **Never** implement fixes unless the operator explicitly requests it. The
582
459
  default mode is read-only audit.
@@ -1,18 +1,18 @@
1
1
  ---
2
2
  description: >-
3
- Reference companion to `helpers/single-story-deliver.md` — the lease and
3
+ Reference companion to `helpers/deliver-story.md` — the lease and
4
4
  sweep detail, worktree-scope warnings, CI-recovery procedures, and
5
5
  Status-column reconciliation lifted out of the runtime core so the
6
6
  always-ingested standalone-delivery prose stays lean. Not a slash command;
7
7
  consulted on demand when the core file points here.
8
- caller: helpers/single-story-deliver.md
8
+ caller: helpers/deliver-story.md
9
9
  ---
10
10
 
11
- # helpers/single-story-deliver — reference (lease, recovery, troubleshooting)
11
+ # helpers/deliver-story — reference (lease, recovery, troubleshooting)
12
12
 
13
13
  > **Not a slash command, not the runtime path.** This file is the
14
14
  > reference companion to
15
- > [`single-story-deliver.md`](single-story-deliver.md). The core file
15
+ > [`deliver-story.md`](deliver-story.md). The core file
16
16
  > carries the step flow, commands, gate contracts, and the return contract a
17
17
  > standalone-Story run needs; this file holds the lease/sweep mechanics, the
18
18
  > worktree-scope safety warning, the CI-recovery procedures, and the
@@ -85,7 +85,7 @@ The sweep applies two hardening layers (Story #2011):
85
85
  operator can see what was preserved.
86
86
  - **Cross-session lock.** The sweep acquires a process-scoped lockfile
87
87
  at `<tempRoot>/single-story-sweep.lock` before planning. On
88
- contention (another `/single-story-deliver` already in the sweep
88
+ contention (another `/deliver-story` already in the sweep
89
89
  step), this run's sweep is **skipped** with a warn log; init
90
90
  continues normally. Stale lockfiles (mtime older than the timeout)
91
91
  are treated as expired. The timeout defaults to 60 seconds and is
@@ -121,7 +121,7 @@ The `single-story-close.js` script, in order:
121
121
  1a. **Syncs the Story branch from `origin/<baseBranch>`** before push
122
122
  (Story #2580). Runs `git fetch origin <baseBranch>` followed by
123
123
  `git merge --no-edit origin/<baseBranch>` inside the worktree. This
124
- defends against the parallel-`/single-story-deliver` race: when
124
+ defends against the parallel-`/deliver-story` race: when
125
125
  multiple sessions run in parallel, the Story that auto-merges first
126
126
  bumps `baseBranch`, and without this sync the lagging Stories open
127
127
  PRs that are "behind base" and stall against branch-protection's
@@ -133,7 +133,7 @@ The `single-story-close.js` script, in order:
133
133
  command set), the Story flips to `agent::blocked`, and close
134
134
  throws. Resolve in the worktree (`git merge origin/<base>` + fix
135
135
  conflicts + `git commit --no-edit`) and re-run
136
- `/single-story-deliver`.
136
+ `/deliver-story`.
137
137
  - **Fetch failed** → close throws with the git stderr; no label
138
138
  transition.
139
139
 
@@ -162,13 +162,12 @@ The `single-story-close.js` script, in order:
162
162
  CI, went `BEHIND` base, or was closed without merging. The Story rests
163
163
  at `agent::closing` while the PR is open with auto-merge armed; the
164
164
  `agent::done` flip (which closes the issue) is deferred to Step 5.5's
165
- `single-story-confirm-merge.js`. This brings the standalone path to
166
- parity with the epic path (#2155), where a Story only reaches
167
- `agent::done` once its merge into `epic/<id>` is confirmed.
165
+ `single-story-confirm-merge.js`. A Story only reaches `agent::done` once
166
+ its PR to `main` is confirmed merged.
168
167
  5. Reaps the worktree when `delivery.worktreeIsolation.reapOnSuccess`
169
168
  is enabled.
170
169
  6. **Releases the Story lease** (Story #3483). Clears the Story assignment
171
- that init claimed so the next `/single-story-deliver` run sees an
170
+ that init claimed so the next `/deliver-story` run sees an
172
171
  unclaimed ticket. The release is a no-op when the operator no longer
173
172
  holds the claim (a later run took over via reclaim/steal), so a late
174
173
  close never yanks a live claim away from its current owner. Best-effort:
@@ -348,7 +347,7 @@ GitHub deletes the **remote** branch on auto-merge (via the
348
347
  `--delete-branch` flag `single-story-close.js` passes to `gh pr merge`).
349
348
  The **local** `story-<storyId>` ref, however, lingers in the main
350
349
  checkout until something prunes it — `single-story-init.js` runs a
351
- merged-sweep at the start of every *subsequent* `/single-story-deliver`
350
+ merged-sweep at the start of every *subsequent* `/deliver-story`
352
351
  invocation, but that's next-run cleanup, not end-of-run cleanup. Stale
353
352
  local refs accumulate between sessions, clutter `git branch`, and shadow
354
353
  the lessons the sweep is meant to surface.
@@ -415,8 +414,7 @@ prose hand-off.
415
414
  > with essential terminal state only (mirroring the fields
416
415
  > `single-story-close.js` / `story-phase.js` already emit). Do not narrate the
417
416
  > steps you took, and do not prescribe how the next stage should work. Prose
418
- > process commentary only bloats the hydrated prompt
419
- > (`delivery.maxTokenBudget` elision). When run **interactively** (no parent
417
+ > process commentary only bloats the hydrated prompt. When run **interactively** (no parent
420
418
  > aggregator), this JSON envelope is optional — relay terminal state to the
421
419
  > operator in prose instead — but the **no-park rule still holds**: never end
422
420
  > an interactive turn with an unconfirmed merge either; block on the watch,