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,251 +0,0 @@
1
- ---
2
- description:
3
- Author a standalone Story (no parent Epic) from a short prompt. Builds a
4
- context envelope, lets the host LLM draft the body, and creates the
5
- GitHub Issue with type::story and a persona label — ready to feed into
6
- /single-story-deliver.
7
- ---
8
-
9
- # helpers/plan-story — standalone-Story planning path (invoked by /plan)
10
-
11
- ## Overview
12
-
13
- `/plan` is the standalone counterpart to
14
- [`/plan`](plan-epic.md) for Stories that are **not** attached to an
15
- Epic. It closes the gap between "one-line idea" and "well-formed
16
- standalone Story body ready for [`/single-story-deliver`](single-story-deliver.md)"
17
- using the same `host LLM authors + Node wrapper persists` split as
18
- `/plan`.
19
-
20
- ```text
21
- /plan --idea "<seed>"
22
- → story-plan.js --emit-context (envelope: seed, template, dup candidates)
23
- → host LLM authors a draft Story body (in chat, using the envelope)
24
- → operator confirms (HITL)
25
- → story-plan.js --body <file> (validate, gh issue create)
26
- → "Next: /deliver <id>"
27
- ```
28
-
29
- **The two paths of `/plan` — when each applies:**
30
-
31
- | Trait | Standalone-Story path (this helper) | Epic decomposition path (`helpers/plan-epic.md`) |
32
- | -------------------- | ------------------------------------------ | -------------------------------------------- |
33
- | Output | One standalone Story Issue | Epic with child Stories |
34
- | Parent Epic | None (no `Epic: #N` in body) | Required |
35
- | Downstream workflow | `/deliver <storyId>` | `/deliver <epicId>` |
36
- | Replan surface | Out of scope (recreate manually if needed) | `/plan <epicId> --force` regenerates the backlog |
37
- | Inbound route | `--idea` with a `story` triage verdict, `--body`, **or** a scope-triage handoff from the Epic path | Direct (`<epicId>`, or `--idea` with an `epic` verdict) |
38
- | Outbound route | Phase 2 may **escalate** an epic-sized draft to the Epic path (internal branch switch) | The story-sized advisory may **convert** a one-Story Epic to this path |
39
-
40
- If a Story-under-Epic needs replanning, use `/plan <epicId> --force`. If you
41
- have a refactor, framework-maintenance idea, or any standalone unit of
42
- work, use this workflow.
43
-
44
- **Inbound from `/plan` scope triage.** The Epic path's interrogate step runs
45
- the [`core/scope-triage`](../../skills/core/scope-triage/SKILL.md) rubric over
46
- the sharpened one-pager. On a `story` / `borderline` verdict the operator may route
47
- the work here via `/plan --from-notes <path>`. That invocation is a
48
- **scope-triage handoff** — the triage decision is already made, so `/plan`
49
- MUST NOT re-triage it (the no-re-triage rule in the skill); it proceeds straight
50
- to authoring the standalone Story body from the handed-off one-pager.
51
-
52
- ## Prerequisites
53
-
54
- 1. `GITHUB_TOKEN` or `gh auth status` clean — `gh issue create` runs at
55
- persist time.
56
- 2. The `type::story` label and the chosen `persona::*` label exist in the
57
- repo. Run [`agents-bootstrap-github.js`](../../scripts/agents-bootstrap-github.js)
58
- once to provision them.
59
-
60
- ## Invocation shapes
61
-
62
- ```bash
63
- # Seed from an inline string:
64
- /plan --idea "rip out the unused TaskBodyMigrator export"
65
-
66
- # Seed from a notes file:
67
- /plan --from-notes temp/single-story-2293-notes.md
68
-
69
- # Inspect the draft body without creating an Issue:
70
- /plan --dry-run --body temp/single-story-draft.md
71
-
72
- # Headless / non-interactive (auto-proceeds the draft-confirm gate):
73
- /plan --idea "rip out the unused TaskBodyMigrator export" --yes
74
- ```
75
-
76
- ## Phase 1 — Emit Context
77
-
78
- Run the emit-context phase. The CLI prints a JSON envelope on stdout and
79
- routes all log lines to stderr so the captured file is unconditionally
80
- parseable by `JSON.parse`.
81
-
82
- ```bash
83
- node .agents/scripts/story-plan.js --emit-context \
84
- --idea "<seed>" \
85
- [--persona engineer] \
86
- [--refine | --no-refine] \
87
- [--pretty] > temp/single-story-context.json
88
- ```
89
-
90
- Envelope fields (`kind: "story-plan-context"`, `version: 1`):
91
-
92
- | Field | Purpose |
93
- | ---------------------- | --------------------------------------------------------- |
94
- | `seed` | The raw seed (verbatim from `--idea` / `--from-notes`). |
95
- | `refine` | `{ refine, reason }` heuristic verdict. |
96
- | `persona` | Persona label to apply (default `engineer`). |
97
- | `bodyTemplate` | Contents of `.agents/templates/single-story-body.md`. |
98
- | `requiredSections` | `["Context", "Acceptance Criteria", "Out of Scope", "Notes"]`. |
99
- | `duplicateCandidates` | Ranked open Stories whose titles fuzzy-match the seed. |
100
- | `techStack` | The project's Tech Stack inventory, resolved in order: `docs/tech-stack.md` (full body) when present, else the `## Tech Stack` section of `docs/architecture.md` (numbered/decorated and final-section headings tolerated). |
101
- | `corpusContext` | Corpus-aware inherited context (Story #4432): `{ docsDigest, relevantSections }` — see below. |
102
- | `deliverContract` | Workflow path + required/forbidden labels and references. |
103
-
104
- `corpusContext.docsDigest` is the same per-project docs digest
105
- `orchestration/docs-digest.js` builds for `/deliver` Story children (`null`
106
- when `project.docsContextFiles` is not configured). `corpusContext.relevantSections`
107
- is a ranked list of `{ epicId, epicTitle, section, score, excerpt }` —
108
- existing-Epic Tech Spec (or ideation-lede) excerpts that overlap with the
109
- seed, fetched via a bounded explicit per-candidate body fetch
110
- (`planning-corpus.js`). Both fields degrade to `null` / `[]` respectively
111
- when there is nothing to surface.
112
-
113
- ### Refine heuristic
114
-
115
- `refine.refine` is `true` when the seed is shorter than 200 characters
116
- (or empty). Pass `--refine` / `--no-refine` to override. When the
117
- envelope advises refinement, activate the
118
- [`core/idea-refinement`](../../skills/core/idea-refinement/SKILL.md) skill
119
- before drafting the body — same skill the Epic path's interrogate step drives.
120
-
121
- ## Phase 2 — Host LLM Authors a Draft Body
122
-
123
- Using the envelope above, draft a Story body that:
124
-
125
- - Starts with `# <title>` (the H1 becomes the GitHub Issue title at
126
- persist time).
127
- - Includes every section in `requiredSections` (`## Context`,
128
- `## Acceptance Criteria`, `## Out of Scope`, `## Notes`).
129
- - Has at least one unchecked checklist item under `## Acceptance Criteria`
130
- (`- [ ] …`).
131
- - Does **NOT** contain any `Epic: #N` reference — that breaks the
132
- standalone contract enforced by `single-story-init.js`.
133
-
134
- ### Drafting against `corpusContext`
135
-
136
- Check `corpusContext` before authoring the `## Context` section:
137
-
138
- - **When `corpusContext.relevantSections` is non-empty** (the seed is a
139
- change-request-shaped delta against a surface an existing Epic already
140
- covers — see the
141
- [`core/scope-triage`](../../skills/core/scope-triage/SKILL.md) change-request
142
- rubric), draft `## Context` **against that inherited context** rather than
143
- re-deriving it from scratch: reference the matching Epic's Tech Spec
144
- excerpt(s) by number (`Epic #<epicId>`) and build the acceptance criteria on
145
- top of the architecture / conventions they already establish. Pull
146
- `corpusContext.docsDigest` the same way the digest-first delivery path does
147
- (§ 3 of [`.agents/instructions.md`](../../instructions.md)) — read the
148
- relevant doc section on demand when the digest outline names one that bears
149
- on the change.
150
- - **When `corpusContext.relevantSections` is `[]` and `docsDigest` is
151
- `null`** — no configured docs and no overlapping prior art — draft exactly
152
- as today: from the seed, the body template, and the duplicate-candidates
153
- scan alone. This is the common case for a genuinely new standalone Story
154
- and is not a degraded path; it is simply that there is nothing to inherit.
155
-
156
- Write the draft to `temp/single-story-draft.md`.
157
-
158
- ### Scope-triage escalation gate (symmetric counterpart to the Epic path's ideation triage)
159
-
160
- This gate runs the shared scope-triage gate over the **drafted Story body** to
161
- catch an Epic-sized scope before it is persisted as a standalone Story — the
162
- outbound mirror of the Epic path's inbound downgrade gate. The gate
163
- mechanics (verdict meanings, the three-way operator choice, the `--yes`
164
- resolution, and the no-re-triage rule) live in the single-homed fragment
165
- [`scope-triage-gate.md`](scope-triage-gate.md); read it and follow it. This
166
- phase supplies only its path-specific firing conditions:
167
-
168
- - **When it runs**: only **after the draft body exists** — the seed alone is
169
- not an honest basis for a sizing judgment. The rubric is applied to the
170
- **drafted Story body**, and the verdict folds into the **existing**
171
- draft-confirmation HITL stop below (it does **not** add a second stop). (The
172
- `refine` heuristic in `story-plan.js` is unchanged — it is a deterministic
173
- seed-length proxy, not a scope-size judgment.)
174
- - **When it is skipped**: entirely, when `/plan` was entered via a scope-triage
175
- handoff — from the Epic path's ideation triage (the inbound route above) or
176
- its existing-Epic story-sized conversion path (the no-re-triage rule in the
177
- fragment).
178
- - **Recommended branch on an `epic` verdict**: escalate to `/plan --idea` —
179
- persist the notes/draft to a notes file and hand off to `/plan --idea` (or
180
- `--from-notes <path>`), identifying the invocation as a scope-triage handoff
181
- so `/plan` skips its own ideation triage gate, then **abandon the draft and exit
182
- `/plan`** (no standalone Story is created). The alternative branches are
183
- **persist as a standalone Story anyway** (proceed to Phase 3 with the draft
184
- unchanged) and **abort**.
185
-
186
- ### HITL — operator confirms the draft (verdict folded in)
187
-
188
- Display the draft to the operator and **STOP**. Do not call the persist phase
189
- until the operator explicitly confirms the draft. This mirrors the Epic
190
- path's gate #1 at the exit of its interrogate step. This is the
191
- story-path face of `/plan`'s **gate #1** (the ideation one-pager /
192
- scope-triage confirm). The scope-triage verdict folds into this same stop, per
193
- the branch bindings above; on a **`story` verdict (or gate skipped via
194
- handoff)** there is no extra prompt and the operator confirms the draft as
195
- usual. The `--yes` headless resolution of this stop is the fragment's — see
196
- [`scope-triage-gate.md` § `--yes` (headless) resolution](scope-triage-gate.md#--yes-headless-resolution)
197
- and [`plan.md` § Headless / non-interactive mode](../plan.md#headless--non-interactive-mode---yes).
198
-
199
- ## Phase 3 — Persist (`gh issue create`)
200
-
201
- ```bash
202
- node .agents/scripts/story-plan.js \
203
- --body temp/single-story-draft.md \
204
- [--persona engineer]
205
- ```
206
-
207
- The script:
208
-
209
- 1. Reads the body file.
210
- 2. Runs `validateStoryBody` — required sections present, no `Epic:`
211
- reference, AC checklist non-empty. Fails fast on any error.
212
- 3. Extracts the H1 title.
213
- 4. Calls `gh issue create` with `--title`, `--body-file`, and the
214
- `type::story` + `persona::<name>` labels.
215
- 5. Prints a JSON line with `{ issueNumber, title, labels }` and a
216
- trailing `Next: /single-story-deliver <id>` hint on stderr.
217
-
218
- ### `--dry-run`
219
-
220
- ```bash
221
- node .agents/scripts/story-plan.js \
222
- --body temp/single-story-draft.md --dry-run
223
- ```
224
-
225
- Prints the resolved title, labels, and `gh` argv plus the full body, then
226
- exits 0. No GitHub mutations. Use this to spot-check the draft and the
227
- exact `gh issue create` shape that would run.
228
-
229
- ## Constraints
230
-
231
- - **No `Epic: #N` references.** This is the standalone contract; persist
232
- fails fast if one is present. To attach a Story to an Epic, plan it
233
- through the Epic path (`/plan <epicId>`) instead.
234
- - **No external LLM APIs.** Mirrors the v5.6 contract: the host LLM does
235
- the authoring; the Node wrapper does the I/O.
236
- - **Idempotent.** Re-running `--emit-context` is safe. Re-running
237
- `--body` opens a new Issue (it is not aware of prior runs); use
238
- `--dry-run` first when iterating on the draft.
239
- - **Atomic by contract.** A Story is the leaf of the 2-tier hierarchy — it
240
- has no child tickets. Its acceptance criteria and verification steps live
241
- inline on the Story body
242
- ([`single-story-deliver.md`](single-story-deliver.md)).
243
-
244
- ## See also
245
-
246
- - [`/single-story-deliver`](single-story-deliver.md) — the consumer
247
- workflow that picks the Story up after this one creates it.
248
- - [`/plan`](plan-epic.md) — the Epic-tier equivalent. Its ideation entry
249
- inspired the seed-capture + envelope-emit pattern used here.
250
- - [`core/idea-refinement`](../../skills/core/idea-refinement/SKILL.md) —
251
- optional pre-authoring skill activated when the seed is short.
@@ -1,108 +0,0 @@
1
- ---
2
- description: >-
3
- Shared scope-triage gate fragment — the single home for the verdict
4
- meanings, the three-way operator choice, the --yes headless resolution,
5
- and the no-re-triage rule that both /plan paths reference instead of
6
- restating.
7
- caller: plan-epic.md, plan-story.md
8
- ---
9
-
10
- # helpers/scope-triage-gate — shared scope-triage gate semantics
11
-
12
- > **Not a slash command.** This file lives in `helpers/` and is a
13
- > path-included fragment (not projected into the plugin command tree). It is
14
- > referenced by [`plan-epic.md`](plan-epic.md) (its interrogate step — the
15
- > ideation triage and the existing-Epic story-sized advisory) and
16
- > [`plan-story.md`](plan-story.md) (Phase 2), which supply only their
17
- > path-specific firing conditions and defer the gate mechanics here.
18
-
19
- ## What the gate is
20
-
21
- Both `/plan` paths run the
22
- [`core/scope-triage`](../../skills/core/scope-triage/SKILL.md) rubric over the
23
- path-appropriate artifact (an ideation one-pager, an existing Epic body, or a
24
- drafted Story body) to catch a wrong-sized scope **before** it is committed to
25
- the wrong pipeline. The rubric is host-LLM judgment anchored **by reference**
26
- to `DELIVERABLE_GRANULARITY_GUIDANCE` / `DEFAULT_TASK_SIZING` in
27
- [`ticket-validator-sizing.js`](../../scripts/lib/orchestration/ticket-validator-sizing.js).
28
- There is **no `--flag`**, no scorer, no schema, and no label transition behind
29
- the gate. Each referencing path activates the skill by reading its `SKILL.md`
30
- via the `Read` tool and applying its rubric — do **not** restate the skill's
31
- sizing thresholds or copy its verdict prose.
32
-
33
- ## Verdict meanings
34
-
35
- The rubric emits exactly one verdict:
36
-
37
- - **`epic`** — the scope is genuinely Epic-sized (multiple independent
38
- capabilities, a plausible sizing-ceiling breach, or a real dependency
39
- structure). Proceed on the Epic path; no downgrade offered.
40
- - **`story`** — the scope is really a single capability-sized Story. The Epic
41
- ceremony is not worth paying for; the gate offers a downgrade/handoff to the
42
- standalone-Story path.
43
- - **`borderline`** — the rubric cannot confidently place the scope on either
44
- side. Treated the same as `story` at the gate: the three-way choice is
45
- presented so the operator makes the call.
46
-
47
- The verdict is **advisory**. Being wrong in the `epic` direction is cheap
48
- (the consolidation critic and the sizing validator catch an over-planned Story
49
- later), so the gate never costs the operator a stop on an `epic` verdict; the
50
- gate exists to avoid the ceremony tax of pushing a story-sized scope through
51
- the full Epic pipeline.
52
-
53
- ## The three-way operator choice
54
-
55
- The referencing path folds the verdict into its **existing** HITL confirmation
56
- stop — it never adds a second stop. On a `story` / `borderline` verdict, that
57
- confirmation presents a **three-way operator choice**:
58
-
59
- - **Recommended (the path-specific downgrade/handoff)** — with the triage
60
- rationale. The referencing path defines the concrete action (persist a
61
- notes/seed file and hand off to the sibling `/plan` path, identifying the
62
- invocation as a **scope-triage handoff**), then **exits** the current path.
63
- - **Proceed on the current path anyway** — ignore the recommendation and
64
- continue with the artifact unchanged.
65
- - **Abort** — stop planning entirely. Nothing is mutated.
66
-
67
- **Never auto-route.** The verdict is advisory and the operator always decides;
68
- no `agent::*` / label transition happens on either side of the choice. (The
69
- one sanctioned exception is `--yes`, below.)
70
-
71
- ## `--yes` (headless) resolution
72
-
73
- `"Never auto-route"` is the **interactive** contract. When `/plan` was invoked
74
- with `--yes`, the operator has *pre-authorized* the recommendation and the gate
75
- does **not** STOP:
76
-
77
- - The three-way choice resolves to its **Recommended** branch
78
- deterministically — the handoff carries `--yes` so the receiving `/plan`
79
- path also auto-proceeds; an `epic` verdict simply continues on the current
80
- path with no wait.
81
- - Display the artifact and the verdict line for the record, then proceed
82
- without waiting.
83
-
84
- This is the **only** sanctioned auto-route, and it exists solely to make
85
- `/plan` driveable headlessly. `--yes` does not alter the rubric or the verdict
86
- meanings; it only forces the Recommended resolution where the gate would
87
- otherwise STOP. See
88
- [`plan.md` § Headless / non-interactive mode](../plan.md#headless--non-interactive-mode---yes).
89
-
90
- **Headless seed entry — the verdict is already in the envelope (#4496).**
91
- On the `--idea` `--yes` path the rubric is applied **CLI-side** by
92
- `plan-context.js --seed` and shipped as the envelope's `scopeTriage` field
93
- (`{ verdict, reasons, advisory: true, appliedBy: "cli" }`), anchored to the
94
- same sizing SSOT this skill anchors to. Do **not** Read the
95
- `core/scope-triage` skill headless — use the envelope verdict and resolve it
96
- per this section. The attended paths keep the skill-based judgment
97
- unchanged.
98
-
99
- ## No-re-triage rule
100
-
101
- A **scope-triage handoff** is a triage decision *already made*. When `/plan` is
102
- entered via a handoff (from the Epic path's ideation triage, its
103
- existing-Epic story-sized conversion, or the standalone-Story Phase 2
104
- escalation), the
105
- receiving path **MUST NOT** re-run this gate. Re-triaging a settled call would
106
- re-litigate it and risk a ping-pong between the two `/plan` paths. Each
107
- referencing path states its own skip-on-handoff condition and defers the
108
- rationale here.