mandrel 1.93.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 (463) hide show
  1. package/.agents/README.md +59 -73
  2. package/.agents/agents/acceptance-critic.md +129 -0
  3. package/.agents/agents/story-worker.md +161 -0
  4. package/.agents/docs/SDLC.md +489 -1285
  5. package/.agents/docs/agentrc-reference.json +177 -67
  6. package/.agents/docs/configuration.md +108 -136
  7. package/.agents/docs/execution-reference.md +44 -22
  8. package/.agents/docs/quality-gates.md +13 -19
  9. package/.agents/docs/workflows.md +3 -3
  10. package/.agents/instructions.md +107 -108
  11. package/.agents/rules/ci-remediation.md +8 -12
  12. package/.agents/rules/git-conventions-reference.md +224 -0
  13. package/.agents/rules/git-conventions.md +42 -223
  14. package/.agents/rules/security-baseline.md +5 -0
  15. package/.agents/rules/testing-standards.md +106 -13
  16. package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
  17. package/.agents/schemas/agentrc.schema.json +71 -201
  18. package/.agents/schemas/lifecycle/ledger-record.schema.json +1 -1
  19. package/.agents/schemas/lifecycle/retro.end.schema.json +1 -1
  20. package/.agents/schemas/risk-verdict.schema.json +0 -13
  21. package/.agents/scripts/acceptance-eval.js +62 -18
  22. package/.agents/scripts/agents-bootstrap-github.js +1 -1
  23. package/.agents/scripts/analyze-execution.js +1 -1
  24. package/.agents/scripts/audit-to-stories.js +7 -7
  25. package/.agents/scripts/boot-sweep.js +1 -1
  26. package/.agents/scripts/check-context-budget.js +62 -5
  27. package/.agents/scripts/check-lifecycle-lint.js +6 -9
  28. package/.agents/scripts/check-prepush-recovery.js +1 -1
  29. package/.agents/scripts/cleanup-repo-test-temp.js +6 -1
  30. package/.agents/scripts/diagnose-friction.js +0 -6
  31. package/.agents/scripts/lib/Logger.js +6 -10
  32. package/.agents/scripts/lib/audit-suite/runner.js +2 -2
  33. package/.agents/scripts/lib/audit-suite/selector.js +5 -5
  34. package/.agents/scripts/lib/audit-to-stories/{seed-epic-from-findings.js → seed-from-findings.js} +9 -9
  35. package/.agents/scripts/lib/baselines/kernel.js +206 -18
  36. package/.agents/scripts/lib/baselines/kinds/maintainability.js +0 -4
  37. package/.agents/scripts/lib/baselines/reader.js +1 -6
  38. package/.agents/scripts/lib/bdd-runner-detect.js +5 -9
  39. package/.agents/scripts/lib/bootstrap/issue-forms-template.js +32 -33
  40. package/.agents/scripts/lib/bootstrap/project-bootstrap.js +56 -18
  41. package/.agents/scripts/lib/checks/core-bare-clean.js +2 -2
  42. package/.agents/scripts/lib/checks/index.js +2 -1
  43. package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +23 -21
  44. package/.agents/scripts/lib/cli/standard-args.js +13 -22
  45. package/.agents/scripts/lib/cli-args.js +16 -7
  46. package/.agents/scripts/lib/close-validation/gates.js +160 -22
  47. package/.agents/scripts/lib/config/acceptance-eval.js +52 -5
  48. package/.agents/scripts/lib/config/ci.js +6 -31
  49. package/.agents/scripts/lib/config/delivery-routing.js +103 -0
  50. package/.agents/scripts/lib/config/explain.js +57 -36
  51. package/.agents/scripts/lib/config/limits.js +17 -58
  52. package/.agents/scripts/lib/config/paths.js +0 -2
  53. package/.agents/scripts/lib/config/quality.js +1 -1
  54. package/.agents/scripts/lib/config/runners.js +17 -50
  55. package/.agents/scripts/lib/config/temp-paths.js +19 -14
  56. package/.agents/scripts/lib/config/worktree-isolation.js +0 -5
  57. package/.agents/scripts/lib/config-resolver.js +3 -8
  58. package/.agents/scripts/lib/config-settings-schema-delivery.js +46 -136
  59. package/.agents/scripts/lib/config-settings-schema-quality.js +17 -14
  60. package/.agents/scripts/lib/config-settings-schema.js +52 -38
  61. package/.agents/scripts/lib/dependency-parser.js +3 -2
  62. package/.agents/scripts/lib/doc-tiers.js +39 -4
  63. package/.agents/scripts/lib/duplicate-search.js +211 -41
  64. package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +1 -1
  65. package/.agents/scripts/lib/findings/promote-finding.js +5 -5
  66. package/.agents/scripts/lib/framework-version.js +2 -3
  67. package/.agents/scripts/lib/git-branch-cleanup.js +1 -10
  68. package/.agents/scripts/lib/git-branch-lifecycle.js +17 -22
  69. package/.agents/scripts/lib/git-utils.js +32 -6
  70. package/.agents/scripts/lib/github/framework-repo.js +6 -0
  71. package/.agents/scripts/lib/label-constants.js +10 -23
  72. package/.agents/scripts/lib/label-taxonomy.js +9 -43
  73. package/.agents/scripts/lib/observability/active-story-env.js +112 -3
  74. package/.agents/scripts/lib/observability/hook-heartbeat.js +187 -0
  75. package/.agents/scripts/lib/observability/source-classifier.js +3 -3
  76. package/.agents/scripts/lib/observability/tool-trace-hook.js +15 -4
  77. package/.agents/scripts/lib/onboard/init-tail.js +1 -3
  78. package/.agents/scripts/lib/orchestration/acceptance-clusters.js +111 -0
  79. package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +32 -4
  80. package/.agents/scripts/lib/orchestration/audit-lens-routing.js +128 -0
  81. package/.agents/scripts/lib/orchestration/bookkeeping-outbox.js +273 -0
  82. package/.agents/scripts/lib/orchestration/ceremony-routing.js +204 -0
  83. package/.agents/scripts/lib/orchestration/code-review.js +20 -268
  84. package/.agents/scripts/lib/orchestration/column-sync.js +1 -1
  85. package/.agents/scripts/lib/orchestration/consolidation-precondition.js +1 -1
  86. package/.agents/scripts/lib/orchestration/context-envelope.js +2 -5
  87. package/.agents/scripts/lib/orchestration/docs-digest.js +8 -8
  88. package/.agents/scripts/lib/orchestration/file-assumptions.js +7 -13
  89. package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +1 -1
  90. package/.agents/scripts/lib/orchestration/lifecycle/emit-loop-tick.js +8 -8
  91. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +2 -2
  92. package/.agents/scripts/lib/orchestration/lifecycle/ledger-writer.js +6 -3
  93. package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +17 -43
  94. package/.agents/scripts/lib/orchestration/lint-baseline-service.js +4 -4
  95. package/.agents/scripts/lib/orchestration/merge-block-class.js +1 -1
  96. package/.agents/scripts/lib/orchestration/phase-runner.js +3 -2
  97. package/.agents/scripts/lib/orchestration/plan-context.js +248 -266
  98. package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +3 -2
  99. package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +1 -1
  100. package/.agents/scripts/lib/orchestration/plan-navigation.js +92 -0
  101. package/.agents/scripts/lib/orchestration/plan-persist/fan-out-gate.js +61 -0
  102. package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +97 -0
  103. package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +223 -854
  104. package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +361 -0
  105. package/.agents/scripts/lib/orchestration/plan-persist/summary.js +35 -108
  106. package/.agents/scripts/lib/orchestration/plan-reachability.js +9 -14
  107. package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +1 -1
  108. package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/authoring-context.js +14 -14
  109. package/.agents/scripts/lib/orchestration/planning/decomposer-context.js +27 -0
  110. package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/risk-verdict.js +3 -4
  111. package/.agents/scripts/lib/orchestration/post-merge/phases/branch-cleanup.js +2 -2
  112. package/.agents/scripts/lib/orchestration/post-merge/phases/dashboard-refresh.js +8 -20
  113. package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +3 -2
  114. package/.agents/scripts/lib/orchestration/pr-base-guard.js +18 -28
  115. package/.agents/scripts/lib/orchestration/preflight-cache.js +5 -5
  116. package/.agents/scripts/lib/orchestration/remote-verifier.js +1 -1
  117. package/.agents/scripts/lib/orchestration/resolve-plan-run.js +155 -0
  118. package/.agents/scripts/lib/orchestration/resolves-token.js +1 -1
  119. package/.agents/scripts/lib/orchestration/retro-perf-heuristics.js +8 -8
  120. package/.agents/scripts/lib/orchestration/retro-proposals.js +140 -79
  121. package/.agents/scripts/lib/orchestration/review-depth.js +26 -12
  122. package/.agents/scripts/lib/orchestration/review-providers/codex.js +2 -2
  123. package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +21 -56
  124. package/.agents/scripts/lib/orchestration/run-epilogue.js +426 -0
  125. package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +1 -1
  126. package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +1 -0
  127. package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +95 -41
  128. package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +16 -13
  129. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +40 -0
  130. package/.agents/scripts/lib/orchestration/single-story-close/runner.js +11 -3
  131. package/.agents/scripts/lib/orchestration/spec-freshness.js +14 -205
  132. package/.agents/scripts/lib/orchestration/spec-section-validator.js +4 -5
  133. package/.agents/scripts/lib/orchestration/spec-spill.js +60 -0
  134. package/.agents/scripts/lib/orchestration/split-policy-validator.js +188 -0
  135. package/.agents/scripts/lib/orchestration/story-close/emit-blocked.js +49 -0
  136. package/.agents/scripts/lib/orchestration/story-close/phases/code-review.js +15 -12
  137. package/.agents/scripts/lib/orchestration/story-follow-ups.js +237 -0
  138. package/.agents/scripts/lib/orchestration/story-init-remote.js +47 -0
  139. package/.agents/scripts/lib/orchestration/story-plan-state.js +48 -0
  140. package/.agents/scripts/lib/orchestration/{epic-runner → story-progress}/story-run-progress-writer.js +3 -3
  141. package/.agents/scripts/lib/orchestration/structured-comment-parser.js +1 -1
  142. package/.agents/scripts/lib/orchestration/task-body-validator.js +8 -18
  143. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +11 -61
  144. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +189 -373
  145. package/.agents/scripts/lib/orchestration/ticket-validator.js +3 -8
  146. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +0 -25
  147. package/.agents/scripts/lib/orchestration/ticketing/reads.js +29 -26
  148. package/.agents/scripts/lib/orchestration/ticketing/transition.js +5 -5
  149. package/.agents/scripts/lib/planning-corpus.js +16 -11
  150. package/.agents/scripts/lib/preflight-runner.js +2 -2
  151. package/.agents/scripts/lib/provider-factory.js +1 -1
  152. package/.agents/scripts/lib/qa/coverage-verdict.js +5 -5
  153. package/.agents/scripts/lib/single-story/confirm-merge-follow-ups.js +36 -0
  154. package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +1 -1
  155. package/.agents/scripts/lib/story-adjacency.js +11 -14
  156. package/.agents/scripts/lib/story-body/story-body.js +124 -70
  157. package/.agents/scripts/lib/story-plan.js +2 -4
  158. package/.agents/scripts/lib/templates/decomposer-prompts.js +46 -45
  159. package/.agents/scripts/lib/templates/spec-author-prompts.js +47 -45
  160. package/.agents/scripts/lib/{epic-body-sections.js → ticket-body-sections.js} +26 -26
  161. package/.agents/scripts/lib/validation-evidence.js +1 -1
  162. package/.agents/scripts/lib/wave-runner/ready-set.js +6 -6
  163. package/.agents/scripts/lib/workspace-provisioner.js +1 -1
  164. package/.agents/scripts/lib/worktree/lifecycle/reap.js +5 -7
  165. package/.agents/scripts/lint-issue-body.js +71 -40
  166. package/.agents/scripts/mandrel-update-preflight.js +1 -1
  167. package/.agents/scripts/notify.js +4 -3
  168. package/.agents/scripts/plan-context.js +64 -74
  169. package/.agents/scripts/plan-persist.js +121 -280
  170. package/.agents/scripts/plan-run-epilogue.js +97 -0
  171. package/.agents/scripts/post-structured-comment.js +38 -0
  172. package/.agents/scripts/providers/github/issues.js +17 -33
  173. package/.agents/scripts/providers/github/mappers.js +0 -12
  174. package/.agents/scripts/providers/github/tickets.js +2 -5
  175. package/.agents/scripts/resolve-plan-run.js +117 -0
  176. package/.agents/scripts/signals-view.js +24 -19
  177. package/.agents/scripts/single-story-close.js +11 -14
  178. package/.agents/scripts/single-story-confirm-merge.js +39 -23
  179. package/.agents/scripts/single-story-init.js +29 -20
  180. package/.agents/scripts/stories-wave-tick.js +6 -6
  181. package/.agents/scripts/story-plan.js +26 -47
  182. package/.agents/scripts/sync-claude-agents.js +165 -0
  183. package/.agents/scripts/update-ticket-state.js +37 -15
  184. package/.agents/skills/core/analyze-execution/SKILL.md +21 -18
  185. package/.agents/skills/core/api-and-interface-design/SKILL.md +5 -3
  186. package/.agents/skills/core/code-review-and-quality/SKILL.md +63 -7
  187. package/.agents/skills/core/debugging-and-error-recovery/SKILL.md +1 -1
  188. package/.agents/skills/core/gates-and-baselines/SKILL.md +149 -0
  189. package/.agents/skills/core/idea-refinement/SKILL.md +8 -14
  190. package/.agents/skills/core/qa-coverage-mapping/SKILL.md +7 -7
  191. package/.agents/skills/core/scope-triage/SKILL.md +28 -172
  192. package/.agents/skills/skills.index.json +8 -418
  193. package/.agents/starter-agentrc.json +0 -5
  194. package/.agents/templates/agent-protocol.md +9 -10
  195. package/.agents/workflows/audit-architecture.md +3 -3
  196. package/.agents/workflows/audit-clean-code.md +3 -3
  197. package/.agents/workflows/audit-dependencies.md +3 -3
  198. package/.agents/workflows/audit-devops.md +3 -3
  199. package/.agents/workflows/audit-documentation.md +5 -5
  200. package/.agents/workflows/audit-lighthouse.md +3 -3
  201. package/.agents/workflows/audit-navigability.md +3 -2
  202. package/.agents/workflows/audit-performance.md +3 -3
  203. package/.agents/workflows/audit-privacy.md +3 -3
  204. package/.agents/workflows/audit-quality.md +3 -3
  205. package/.agents/workflows/audit-security.md +3 -3
  206. package/.agents/workflows/audit-seo.md +3 -3
  207. package/.agents/workflows/audit-sre.md +3 -3
  208. package/.agents/workflows/audit-to-stories.md +20 -20
  209. package/.agents/workflows/audit-ux-ui.md +3 -3
  210. package/.agents/workflows/deliver.md +122 -131
  211. package/.agents/workflows/git-cleanup.md +3 -4
  212. package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
  213. package/.agents/workflows/helpers/acceptance-self-eval.md +52 -40
  214. package/.agents/workflows/helpers/code-review.md +70 -193
  215. package/.agents/workflows/helpers/{single-story-deliver-reference.md → deliver-story-reference.md} +12 -14
  216. package/.agents/workflows/helpers/{single-story-deliver.md → deliver-story.md} +113 -139
  217. package/.agents/workflows/helpers/diagnose.md +10 -10
  218. package/.agents/workflows/helpers/mandrel-sync-config.md +1 -1
  219. package/.agents/workflows/helpers/parallel-tooling.md +1 -1
  220. package/.agents/workflows/helpers/signals.md +16 -16
  221. package/.agents/workflows/helpers/worktree-lifecycle.md +48 -64
  222. package/.agents/workflows/mandrel-update.md +3 -2
  223. package/.agents/workflows/plan.md +112 -145
  224. package/.agents/workflows/qa-assist.md +24 -30
  225. package/.agents/workflows/qa-explore.md +29 -38
  226. package/.agents/workflows/qa-run.md +2 -2
  227. package/README.md +9 -8
  228. package/docs/CHANGELOG.md +46 -0
  229. package/lib/cli/registry.js +95 -0
  230. package/lib/migrations/index.js +6 -5
  231. package/package.json +5 -3
  232. package/.agents/personas/architect.md +0 -113
  233. package/.agents/personas/devops-engineer.md +0 -38
  234. package/.agents/personas/engineer-mobile.md +0 -120
  235. package/.agents/personas/engineer-web.md +0 -111
  236. package/.agents/personas/engineer.md +0 -119
  237. package/.agents/personas/product.md +0 -94
  238. package/.agents/personas/project-manager.md +0 -114
  239. package/.agents/personas/qa-engineer.md +0 -95
  240. package/.agents/personas/refactorer.md +0 -113
  241. package/.agents/personas/security-engineer.md +0 -112
  242. package/.agents/personas/sre.md +0 -86
  243. package/.agents/personas/technical-writer.md +0 -101
  244. package/.agents/personas/ux-designer.md +0 -95
  245. package/.agents/schemas/dispatch-manifest.json +0 -232
  246. package/.agents/schemas/epic-spec.schema.json +0 -153
  247. package/.agents/scripts/acceptance-spec-reconciler.js +0 -642
  248. package/.agents/scripts/dispatcher.js +0 -295
  249. package/.agents/scripts/epic-audit-prepare.js +0 -497
  250. package/.agents/scripts/epic-audit-recheck.js +0 -274
  251. package/.agents/scripts/epic-deliver-note-intervention.js +0 -192
  252. package/.agents/scripts/epic-deliver-preflight.js +0 -462
  253. package/.agents/scripts/epic-deliver-prepare.js +0 -590
  254. package/.agents/scripts/epic-execute-record-wave.js +0 -449
  255. package/.agents/scripts/epic-plan-clarity.js +0 -211
  256. package/.agents/scripts/epic-plan-decompose.js +0 -54
  257. package/.agents/scripts/epic-plan-healthcheck.js +0 -581
  258. package/.agents/scripts/epic-plan-spec.js +0 -64
  259. package/.agents/scripts/epic-reconcile.js +0 -625
  260. package/.agents/scripts/lib/baseline-snapshot.js +0 -979
  261. package/.agents/scripts/lib/checks/epic-merge-lock-stale.js +0 -54
  262. package/.agents/scripts/lib/checks/stale-origin-epic.js +0 -49
  263. package/.agents/scripts/lib/config/lifecycle.js +0 -40
  264. package/.agents/scripts/lib/config/preflight.js +0 -58
  265. package/.agents/scripts/lib/config/retro.js +0 -77
  266. package/.agents/scripts/lib/epic-merge-lock.js +0 -322
  267. package/.agents/scripts/lib/epic-plan-clarity.js +0 -181
  268. package/.agents/scripts/lib/epic-plan-ideation.js +0 -261
  269. package/.agents/scripts/lib/orchestration/context-hydration-engine.js +0 -660
  270. package/.agents/scripts/lib/orchestration/dispatch-engine.js +0 -134
  271. package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +0 -183
  272. package/.agents/scripts/lib/orchestration/epic-cleanup.js +0 -801
  273. package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +0 -310
  274. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/context.js +0 -163
  275. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +0 -140
  276. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +0 -64
  277. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +0 -72
  278. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist-helpers.js +0 -156
  279. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist.js +0 -345
  280. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/planning-artifacts.js +0 -41
  281. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/reconcile-spawn.js +0 -86
  282. package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +0 -391
  283. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/drain.js +0 -94
  284. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +0 -236
  285. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +0 -307
  286. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/spec-freshness.js +0 -117
  287. package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +0 -117
  288. package/.agents/scripts/lib/orchestration/epic-run-state-store.js +0 -388
  289. package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +0 -186
  290. package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +0 -50
  291. package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +0 -129
  292. package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +0 -103
  293. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +0 -267
  294. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +0 -210
  295. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +0 -238
  296. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/_bullet-format.js +0 -32
  297. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/component-drift.js +0 -203
  298. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/crap-drift.js +0 -227
  299. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/maintainability-drift.js +0 -117
  300. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/stalled-worktree.js +0 -37
  301. package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +0 -127
  302. package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +0 -276
  303. package/.agents/scripts/lib/orchestration/epic-runner/wave-scheduler.js +0 -66
  304. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +0 -789
  305. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +0 -676
  306. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-discriminator.js +0 -389
  307. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-format.js +0 -230
  308. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +0 -361
  309. package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +0 -306
  310. package/.agents/scripts/lib/orchestration/finalize/post-handoff-comment.js +0 -489
  311. package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +0 -88
  312. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +0 -147
  313. package/.agents/scripts/lib/orchestration/lifecycle/listeners/acceptance-reconciler.js +0 -384
  314. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +0 -501
  315. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +0 -984
  316. package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +0 -264
  317. package/.agents/scripts/lib/orchestration/lifecycle/listeners/checkpoint-pointer-writer.js +0 -278
  318. package/.agents/scripts/lib/orchestration/lifecycle/listeners/cleaner.js +0 -355
  319. package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +0 -673
  320. package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +0 -378
  321. package/.agents/scripts/lib/orchestration/lifecycle/listeners/intervention-recorder.js +0 -140
  322. package/.agents/scripts/lib/orchestration/lifecycle/listeners/label-transitioner.js +0 -144
  323. package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +0 -174
  324. package/.agents/scripts/lib/orchestration/manifest-builder.js +0 -222
  325. package/.agents/scripts/lib/orchestration/plan-persist/amend.js +0 -359
  326. package/.agents/scripts/lib/orchestration/plan-persist/delivery-mode.js +0 -127
  327. package/.agents/scripts/lib/orchestration/post-merge-pipeline.js +0 -205
  328. package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +0 -152
  329. package/.agents/scripts/lib/orchestration/retro/phases/checks.js +0 -94
  330. package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +0 -571
  331. package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +0 -450
  332. package/.agents/scripts/lib/orchestration/retro/phases/post-and-mirror.js +0 -191
  333. package/.agents/scripts/lib/orchestration/retro-heuristics.js +0 -57
  334. package/.agents/scripts/lib/orchestration/retro-runner.js +0 -197
  335. package/.agents/scripts/lib/orchestration/skill-capsule-loader.js +0 -109
  336. package/.agents/scripts/lib/orchestration/spec-renderer.js +0 -447
  337. package/.agents/scripts/lib/orchestration/story-close/auto-refresh-runner.js +0 -747
  338. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/gate-failure.js +0 -211
  339. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/pre-merge-attribution.js +0 -158
  340. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +0 -446
  341. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/regression-projection.js +0 -297
  342. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/scope-discovery.js +0 -48
  343. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution-wiring.js +0 -67
  344. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution.js +0 -161
  345. package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +0 -117
  346. package/.agents/scripts/lib/orchestration/story-close/cd-out-guard.js +0 -86
  347. package/.agents/scripts/lib/orchestration/story-close/cleanup-reconciler.js +0 -147
  348. package/.agents/scripts/lib/orchestration/story-close/close-inputs.js +0 -142
  349. package/.agents/scripts/lib/orchestration/story-close/comment-bodies.js +0 -62
  350. package/.agents/scripts/lib/orchestration/story-close/merge-runner.js +0 -658
  351. package/.agents/scripts/lib/orchestration/story-close/merge-subject.js +0 -198
  352. package/.agents/scripts/lib/orchestration/story-close/phases/branch-restore.js +0 -105
  353. package/.agents/scripts/lib/orchestration/story-close/phases/close.js +0 -222
  354. package/.agents/scripts/lib/orchestration/story-close/phases/gates.js +0 -292
  355. package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +0 -270
  356. package/.agents/scripts/lib/orchestration/story-close/phases/preflight.js +0 -110
  357. package/.agents/scripts/lib/orchestration/story-close/phases/refresh.js +0 -86
  358. package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked-emitter.js +0 -112
  359. package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked.js +0 -157
  360. package/.agents/scripts/lib/orchestration/story-close/post-merge-close.js +0 -421
  361. package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +0 -301
  362. package/.agents/scripts/lib/orchestration/story-close/shared-checkout-guard.js +0 -163
  363. package/.agents/scripts/lib/orchestration/story-close-recovery.js +0 -690
  364. package/.agents/scripts/lib/orchestration/wave-marker.js +0 -28
  365. package/.agents/scripts/lib/orchestration/wave-record-io.js +0 -218
  366. package/.agents/scripts/lib/orchestration/wave-record-notifications.js +0 -145
  367. package/.agents/scripts/lib/orchestration/wave-record-projection.js +0 -212
  368. package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +0 -111
  369. package/.agents/scripts/lib/presentation/manifest-builder.js +0 -239
  370. package/.agents/scripts/lib/presentation/manifest-formatter.js +0 -242
  371. package/.agents/scripts/lib/presentation/manifest-helpers.js +0 -213
  372. package/.agents/scripts/lib/presentation/manifest-persistence.js +0 -261
  373. package/.agents/scripts/lib/presentation/manifest-procedures.js +0 -55
  374. package/.agents/scripts/lib/presentation/manifest-render-waves.js +0 -306
  375. package/.agents/scripts/lib/presentation/manifest-renderer.js +0 -188
  376. package/.agents/scripts/lib/presentation/manifest-story-views.js +0 -110
  377. package/.agents/scripts/lib/push-epic-retry.js +0 -209
  378. package/.agents/scripts/lib/spec/index.js +0 -36
  379. package/.agents/scripts/lib/spec/loader.js +0 -425
  380. package/.agents/scripts/lib/spec/state.js +0 -208
  381. package/.agents/scripts/lib/story-init/blocker-validator.js +0 -68
  382. package/.agents/scripts/lib/story-init/branch-initializer.js +0 -408
  383. package/.agents/scripts/lib/story-init/context-resolver.js +0 -92
  384. package/.agents/scripts/lib/story-init/donor-precheck.js +0 -207
  385. package/.agents/scripts/lib/story-init/state-transitioner.js +0 -80
  386. package/.agents/scripts/lib/story-init/task-graph-builder.js +0 -124
  387. package/.agents/scripts/lib/story-init/transition-summary.js +0 -34
  388. package/.agents/scripts/lib/test-reserved-epic-temp-ids.js +0 -35
  389. package/.agents/scripts/lib/wave-runner/tick.js +0 -754
  390. package/.agents/scripts/lib/wave-runner/wave-runner-error.js +0 -20
  391. package/.agents/scripts/lifecycle-emit-story-dispatch.js +0 -194
  392. package/.agents/scripts/lifecycle-emit.js +0 -510
  393. package/.agents/scripts/plan-critics.js +0 -199
  394. package/.agents/scripts/retro-run.js +0 -218
  395. package/.agents/scripts/standalone-feedback-rollup.js +0 -188
  396. package/.agents/scripts/story-close.js +0 -294
  397. package/.agents/scripts/story-init.js +0 -599
  398. package/.agents/scripts/story-phase.js +0 -369
  399. package/.agents/scripts/wave-tick.js +0 -335
  400. package/.agents/skills/core/baseline-refresh/SKILL.md +0 -181
  401. package/.agents/skills/core/ci-cd-and-automation/SKILL.md +0 -274
  402. package/.agents/skills/core/ci-cd-and-automation/examples.md +0 -211
  403. package/.agents/skills/core/code-simplification/SKILL.md +0 -389
  404. package/.agents/skills/core/context-engineering/SKILL.md +0 -309
  405. package/.agents/skills/core/context-engineering/examples.md +0 -58
  406. package/.agents/skills/core/deprecation-and-migration/SKILL.md +0 -250
  407. package/.agents/skills/core/epic-plan-consolidate/SKILL.md +0 -172
  408. package/.agents/skills/core/epic-plan-consolidate/examples.md +0 -51
  409. package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +0 -441
  410. package/.agents/skills/core/epic-plan-decompose-author/examples.md +0 -47
  411. package/.agents/skills/core/epic-plan-premortem/SKILL.md +0 -146
  412. package/.agents/skills/core/epic-plan-premortem/examples.md +0 -53
  413. package/.agents/skills/core/epic-plan-spec-author/SKILL.md +0 -413
  414. package/.agents/skills/core/epic-plan-spec-author/examples.md +0 -91
  415. package/.agents/skills/core/frontend-ui-engineering/SKILL.md +0 -357
  416. package/.agents/skills/core/hydrate-context/SKILL.md +0 -123
  417. package/.agents/skills/core/idea-refinement/examples.md +0 -437
  418. package/.agents/skills/core/idea-refinement/frameworks.md +0 -135
  419. package/.agents/skills/core/incremental-implementation/SKILL.md +0 -271
  420. package/.agents/skills/core/introducing-a-baseline-gate/SKILL.md +0 -213
  421. package/.agents/skills/core/knowledge-transfer/SKILL.md +0 -180
  422. package/.agents/skills/core/mutation-survivor-remediation/SKILL.md +0 -117
  423. package/.agents/skills/core/performance-optimization/SKILL.md +0 -314
  424. package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +0 -277
  425. package/.agents/skills/core/property-based-testing/SKILL.md +0 -148
  426. package/.agents/skills/core/refactoring-discipline/SKILL.md +0 -111
  427. package/.agents/skills/core/shipping-and-launch/SKILL.md +0 -328
  428. package/.agents/skills/core/spec-driven-development/SKILL.md +0 -252
  429. package/.agents/skills/core/test-driven-development/SKILL.md +0 -475
  430. package/.agents/skills/core/using-agent-skills/SKILL.md +0 -232
  431. package/.agents/skills/stack/architecture/monorepo-path-strategist/SKILL.md +0 -31
  432. package/.agents/skills/stack/architecture/structured-output-zod/SKILL.md +0 -51
  433. package/.agents/skills/stack/architecture/subagent-orchestration/SKILL.md +0 -76
  434. package/.agents/skills/stack/backend/cloudflare-hono-architect/SKILL.md +0 -31
  435. package/.agents/skills/stack/backend/cloudflare-hono-architect/examples/route-template.ts +0 -33
  436. package/.agents/skills/stack/backend/cloudflare-queue-manager/SKILL.md +0 -31
  437. package/.agents/skills/stack/backend/cloudflare-workers/SKILL.md +0 -51
  438. package/.agents/skills/stack/backend/highlevel-crm/SKILL.md +0 -54
  439. package/.agents/skills/stack/backend/sqlite-drizzle-expert/SKILL.md +0 -29
  440. package/.agents/skills/stack/backend/sqlite-drizzle-expert/examples/schema-template.ts +0 -30
  441. package/.agents/skills/stack/backend/stripe-integration/SKILL.md +0 -57
  442. package/.agents/skills/stack/backend/stripe-integration/scripts/listen-stripe.sh +0 -9
  443. package/.agents/skills/stack/backend/turso-sqlite/SKILL.md +0 -48
  444. package/.agents/skills/stack/frontend/astro/SKILL.md +0 -62
  445. package/.agents/skills/stack/frontend/astro-react-island-strategist/SKILL.md +0 -30
  446. package/.agents/skills/stack/frontend/expo-react-native-developer/SKILL.md +0 -29
  447. package/.agents/skills/stack/frontend/google-analytics-v4/SKILL.md +0 -50
  448. package/.agents/skills/stack/frontend/tailwind-v4/SKILL.md +0 -58
  449. package/.agents/skills/stack/frontend/ui-accessibility-engineer/SKILL.md +0 -34
  450. package/.agents/skills/stack/qa/audit-accessibility/SKILL.md +0 -51
  451. package/.agents/skills/stack/qa/lighthouse-baseline/SKILL.md +0 -199
  452. package/.agents/skills/stack/security/backend-security-patterns/SKILL.md +0 -68
  453. package/.agents/workflows/helpers/deliver-epic-reference.md +0 -534
  454. package/.agents/workflows/helpers/deliver-epic.md +0 -955
  455. package/.agents/workflows/helpers/deliver-stories.md +0 -440
  456. package/.agents/workflows/helpers/epic-audit.md +0 -189
  457. package/.agents/workflows/helpers/epic-deliver-story.md +0 -427
  458. package/.agents/workflows/helpers/epic-testing.md +0 -125
  459. package/.agents/workflows/helpers/plan-epic-reference.md +0 -160
  460. package/.agents/workflows/helpers/plan-epic.md +0 -351
  461. package/.agents/workflows/helpers/plan-story.md +0 -251
  462. package/.agents/workflows/helpers/scope-triage-gate.md +0 -108
  463. /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.