mandrel 2.60.0 → 2.61.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 (661) hide show
  1. package/.agents/README.md +10 -10
  2. package/.agents/agents/story-worker.md +1 -1
  3. package/.agents/docs/agentrc-reference.json +4 -82
  4. package/.agents/docs/configuration.md +20 -87
  5. package/.agents/docs/workflows.md +1 -1
  6. package/.agents/instructions.md +1 -3
  7. package/.agents/rules/gherkin-standards.md +4 -0
  8. package/.agents/schemas/agentrc.schema.json +11 -486
  9. package/.agents/schemas/story-deliver-terminal.schema.json +10 -0
  10. package/.agents/schemas/validation-evidence.schema.json +2 -1
  11. package/.agents/scripts/README.md +14 -14
  12. package/.agents/scripts/acceptance-eval.js +32 -164
  13. package/.agents/scripts/agents-bootstrap-github.js +27 -129
  14. package/.agents/scripts/apply-quality-bootstrap.js +4 -40
  15. package/.agents/scripts/audit-baselines.js +6 -27
  16. package/.agents/scripts/audit-labels-bootstrap.js +5 -29
  17. package/.agents/scripts/audit-to-stories.js +91 -361
  18. package/.agents/scripts/boot-sweep.js +19 -72
  19. package/.agents/scripts/bootstrap.js +74 -395
  20. package/.agents/scripts/ceremony-derive.js +9 -45
  21. package/.agents/scripts/check-arch-cycles.js +14 -64
  22. package/.agents/scripts/check-baselines.js +8 -48
  23. package/.agents/scripts/check-context-budget.js +46 -172
  24. package/.agents/scripts/check-cyclomatic.js +12 -44
  25. package/.agents/scripts/check-dead-exports.js +13 -64
  26. package/.agents/scripts/check-doc-links.js +38 -186
  27. package/.agents/scripts/check-gherkin-corpus.js +24 -127
  28. package/.agents/scripts/check-test-temp-hygiene.js +28 -169
  29. package/.agents/scripts/coverage-capture.js +32 -99
  30. package/.agents/scripts/deliver-light.js +14 -101
  31. package/.agents/scripts/deliver-recover.js +6 -42
  32. package/.agents/scripts/deliver-run.js +36 -133
  33. package/.agents/scripts/diagnose-friction.js +24 -116
  34. package/.agents/scripts/drain-pending-cleanup.js +1 -1
  35. package/.agents/scripts/evidence-gate.js +23 -85
  36. package/.agents/scripts/file-ci-gap.js +10 -50
  37. package/.agents/scripts/generate-config-docs.js +30 -170
  38. package/.agents/scripts/generate-lens-checklists.js +8 -52
  39. package/.agents/scripts/generate-skills-index.js +14 -112
  40. package/.agents/scripts/generate-workflows-doc.js +10 -70
  41. package/.agents/scripts/git-cleanup.js +2 -34
  42. package/.agents/scripts/lib/Graph.js +24 -81
  43. package/.agents/scripts/lib/ITicketingProvider.js +47 -143
  44. package/.agents/scripts/lib/Logger.js +14 -76
  45. package/.agents/scripts/lib/audit-baselines/engine.js +11 -31
  46. package/.agents/scripts/lib/audit-baselines/gate-surface.js +3 -17
  47. package/.agents/scripts/lib/audit-baselines/headroom.js +4 -20
  48. package/.agents/scripts/lib/audit-baselines/hotspots.js +3 -15
  49. package/.agents/scripts/lib/audit-baselines/kinds.js +23 -89
  50. package/.agents/scripts/lib/audit-baselines/outliers.js +6 -23
  51. package/.agents/scripts/lib/audit-baselines/read.js +3 -16
  52. package/.agents/scripts/lib/audit-baselines/staleness.js +7 -26
  53. package/.agents/scripts/lib/audit-baselines/surface-entry.js +7 -28
  54. package/.agents/scripts/lib/audit-baselines/trend.js +7 -20
  55. package/.agents/scripts/lib/audit-baselines/weights.js +9 -37
  56. package/.agents/scripts/lib/audit-suite/audit-rules-reader.js +3 -18
  57. package/.agents/scripts/lib/audit-suite/checklist-threading.js +26 -124
  58. package/.agents/scripts/lib/audit-suite/dispatch-checklist.js +14 -45
  59. package/.agents/scripts/lib/audit-suite/findings.js +12 -52
  60. package/.agents/scripts/lib/audit-suite/frontmatter.js +5 -29
  61. package/.agents/scripts/lib/audit-suite/index.js +1 -15
  62. package/.agents/scripts/lib/audit-suite/lens-checklist.js +10 -45
  63. package/.agents/scripts/lib/audit-suite/lens-diff-floor.js +11 -76
  64. package/.agents/scripts/lib/audit-suite/runner.js +13 -43
  65. package/.agents/scripts/lib/audit-suite/selector.js +49 -349
  66. package/.agents/scripts/lib/audit-suite/substitutions.js +12 -40
  67. package/.agents/scripts/lib/audit-suite/workflow-loader.js +3 -15
  68. package/.agents/scripts/lib/audit-to-stories/audit-label-taxonomy.js +11 -73
  69. package/.agents/scripts/lib/audit-to-stories/audit-lenses.js +8 -37
  70. package/.agents/scripts/lib/audit-to-stories/build-story-body.js +25 -143
  71. package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +14 -80
  72. package/.agents/scripts/lib/audit-to-stories/epic-grouping-directive.js +4 -18
  73. package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +7 -40
  74. package/.agents/scripts/lib/audit-to-stories/group-findings.js +9 -39
  75. package/.agents/scripts/lib/audit-to-stories/issue-corpus.js +10 -66
  76. package/.agents/scripts/lib/audit-to-stories/issue-index.js +6 -30
  77. package/.agents/scripts/lib/audit-to-stories/issues-file.js +6 -36
  78. package/.agents/scripts/lib/audit-to-stories/ledger-commit.js +17 -69
  79. package/.agents/scripts/lib/audit-to-stories/ledger-pr.js +17 -85
  80. package/.agents/scripts/lib/audit-to-stories/ledger-record.js +10 -48
  81. package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +38 -146
  82. package/.agents/scripts/lib/audit-to-stories/seed-from-findings.js +7 -42
  83. package/.agents/scripts/lib/audit-to-stories/wire-dependencies.js +10 -57
  84. package/.agents/scripts/lib/baseline-loader.js +12 -51
  85. package/.agents/scripts/lib/baseline-schema-registry.js +5 -22
  86. package/.agents/scripts/lib/baselines/component-matcher.js +3 -12
  87. package/.agents/scripts/lib/baselines/components.js +10 -61
  88. package/.agents/scripts/lib/baselines/coverage-updater-cli.js +7 -36
  89. package/.agents/scripts/lib/baselines/crap-preview-incremental.js +5 -21
  90. package/.agents/scripts/lib/baselines/crap-preview-scan.js +19 -45
  91. package/.agents/scripts/lib/baselines/crap-updater-cli.js +16 -65
  92. package/.agents/scripts/lib/baselines/diff-scope-cli.js +5 -33
  93. package/.agents/scripts/lib/baselines/duplication-scanner.js +11 -60
  94. package/.agents/scripts/lib/baselines/env-overrides.js +12 -67
  95. package/.agents/scripts/lib/baselines/envelope.js +13 -129
  96. package/.agents/scripts/lib/baselines/exit-codes.js +6 -49
  97. package/.agents/scripts/lib/baselines/git-base.js +23 -142
  98. package/.agents/scripts/lib/baselines/kernel.js +11 -111
  99. package/.agents/scripts/lib/baselines/kinds/_crap-new-method-gate.js +9 -47
  100. package/.agents/scripts/lib/baselines/kinds/_crap-read.js +8 -51
  101. package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +7 -62
  102. package/.agents/scripts/lib/baselines/kinds/bundle-size.js +8 -29
  103. package/.agents/scripts/lib/baselines/kinds/coverage.js +3 -15
  104. package/.agents/scripts/lib/baselines/kinds/crap.js +94 -415
  105. package/.agents/scripts/lib/baselines/kinds/duplication.js +4 -30
  106. package/.agents/scripts/lib/baselines/kinds/kind-factory.js +7 -53
  107. package/.agents/scripts/lib/baselines/kinds/maintainability.js +15 -80
  108. package/.agents/scripts/lib/baselines/kinds/mutation.js +12 -72
  109. package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +4 -11
  110. package/.agents/scripts/lib/baselines/merge-envelopes.js +30 -146
  111. package/.agents/scripts/lib/baselines/path-canon.js +19 -128
  112. package/.agents/scripts/lib/baselines/preview-gates.js +8 -37
  113. package/.agents/scripts/lib/baselines/reader.js +14 -107
  114. package/.agents/scripts/lib/baselines/refresh-service.js +35 -252
  115. package/.agents/scripts/lib/baselines/scope.js +11 -135
  116. package/.agents/scripts/lib/baselines/writer.js +16 -149
  117. package/.agents/scripts/lib/bdd-runner-detect.js +18 -113
  118. package/.agents/scripts/lib/bdd-scenario-budget.js +9 -36
  119. package/.agents/scripts/lib/bdd-scenario-scanner.js +11 -73
  120. package/.agents/scripts/lib/bdd-step-index.js +26 -100
  121. package/.agents/scripts/lib/bootstrap/baseline-merge-driver.js +23 -103
  122. package/.agents/scripts/lib/bootstrap/branch-protection.js +2 -5
  123. package/.agents/scripts/lib/bootstrap/commit-push.js +12 -50
  124. package/.agents/scripts/lib/bootstrap/gh-preflight.js +14 -101
  125. package/.agents/scripts/lib/bootstrap/hitl-confirm.js +5 -30
  126. package/.agents/scripts/lib/bootstrap/install-ledger.js +17 -73
  127. package/.agents/scripts/lib/bootstrap/issue-forms-template.js +17 -121
  128. package/.agents/scripts/lib/bootstrap/manifest.js +15 -86
  129. package/.agents/scripts/lib/bootstrap/merge-methods.js +4 -33
  130. package/.agents/scripts/lib/bootstrap/preflight.js +12 -61
  131. package/.agents/scripts/lib/bootstrap/project-bootstrap.js +34 -235
  132. package/.agents/scripts/lib/bootstrap/prompt.js +21 -129
  133. package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +27 -141
  134. package/.agents/scripts/lib/bootstrap/summary.js +1 -8
  135. package/.agents/scripts/lib/bootstrap/workflow-audit.js +11 -84
  136. package/.agents/scripts/lib/branch-name-guard.js +4 -23
  137. package/.agents/scripts/lib/changed-files.js +31 -143
  138. package/.agents/scripts/lib/checks/core-bare-clean.js +4 -24
  139. package/.agents/scripts/lib/checks/index.js +18 -101
  140. package/.agents/scripts/lib/checks/loop-health.js +11 -53
  141. package/.agents/scripts/lib/checks/state.js +16 -91
  142. package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +10 -61
  143. package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +14 -83
  144. package/.agents/scripts/lib/child-exec.js +39 -108
  145. package/.agents/scripts/lib/cli/standard-args.js +9 -116
  146. package/.agents/scripts/lib/cli-args.js +31 -146
  147. package/.agents/scripts/lib/cli-usage.js +5 -27
  148. package/.agents/scripts/lib/cli-utils.js +2 -12
  149. package/.agents/scripts/lib/close-validation/commands.js +13 -76
  150. package/.agents/scripts/lib/close-validation/gates.js +92 -331
  151. package/.agents/scripts/lib/close-validation/process.js +121 -151
  152. package/.agents/scripts/lib/close-validation/projections/advisories.js +5 -31
  153. package/.agents/scripts/lib/close-validation/projections/crap.js +19 -67
  154. package/.agents/scripts/lib/close-validation/projections/head-sha.js +1 -17
  155. package/.agents/scripts/lib/close-validation/projections/inputs.js +4 -34
  156. package/.agents/scripts/lib/close-validation/projections/maintainability.js +11 -58
  157. package/.agents/scripts/lib/close-validation/runner.js +53 -110
  158. package/.agents/scripts/lib/command-header.js +6 -28
  159. package/.agents/scripts/lib/config/acceptance-eval.js +4 -30
  160. package/.agents/scripts/lib/config/baselines.js +3 -14
  161. package/.agents/scripts/lib/config/ci.js +8 -38
  162. package/.agents/scripts/lib/config/commands.js +1 -15
  163. package/.agents/scripts/lib/config/defaults.js +4 -33
  164. package/.agents/scripts/lib/config/delivery-routing.js +6 -35
  165. package/.agents/scripts/lib/config/explain.js +9 -80
  166. package/.agents/scripts/lib/config/gates/coverage.schema.js +0 -12
  167. package/.agents/scripts/lib/config/gates/crap-incremental-coverage.schema.js +2 -30
  168. package/.agents/scripts/lib/config/gates/crap.schema.js +1 -34
  169. package/.agents/scripts/lib/config/gates/duplication.schema.js +1 -8
  170. package/.agents/scripts/lib/config/gates/index.js +2 -17
  171. package/.agents/scripts/lib/config/gates/maintainability.schema.js +1 -20
  172. package/.agents/scripts/lib/config/gates/mutation.schema.js +1 -7
  173. package/.agents/scripts/lib/config/gates/shared.js +4 -64
  174. package/.agents/scripts/lib/config/github.js +4 -22
  175. package/.agents/scripts/lib/config/limits.js +4 -57
  176. package/.agents/scripts/lib/config/paths.js +2 -21
  177. package/.agents/scripts/lib/config/qa.js +4 -38
  178. package/.agents/scripts/lib/config/quality.js +76 -432
  179. package/.agents/scripts/lib/config/runners.js +12 -56
  180. package/.agents/scripts/lib/config/runtime.js +13 -57
  181. package/.agents/scripts/lib/config/shared.js +2 -16
  182. package/.agents/scripts/lib/config/sync-agentrc.js +9 -50
  183. package/.agents/scripts/lib/config/temp-paths.js +40 -280
  184. package/.agents/scripts/lib/config/validate-orchestration.js +5 -17
  185. package/.agents/scripts/lib/config/worktree-isolation.js +9 -28
  186. package/.agents/scripts/lib/config-resolver.js +10 -52
  187. package/.agents/scripts/lib/config-schema-shared.js +1 -4
  188. package/.agents/scripts/lib/config-settings-schema-delivery.js +12 -294
  189. package/.agents/scripts/lib/config-settings-schema-quality.js +7 -219
  190. package/.agents/scripts/lib/config-settings-schema.js +37 -274
  191. package/.agents/scripts/lib/coverage-baseline.js +20 -110
  192. package/.agents/scripts/lib/coverage-capture-fullscope.js +12 -37
  193. package/.agents/scripts/lib/coverage-capture-incremental.js +12 -43
  194. package/.agents/scripts/lib/coverage-capture-usage.js +4 -24
  195. package/.agents/scripts/lib/coverage-capture.js +99 -224
  196. package/.agents/scripts/lib/coverage-utils.js +14 -79
  197. package/.agents/scripts/lib/cpu-pool.js +17 -123
  198. package/.agents/scripts/lib/crap-baseline-join.js +16 -88
  199. package/.agents/scripts/lib/crap-coordinates.js +6 -25
  200. package/.agents/scripts/lib/crap-engine.js +40 -153
  201. package/.agents/scripts/lib/crap-method-identity.js +16 -78
  202. package/.agents/scripts/lib/crap-utils.js +31 -155
  203. package/.agents/scripts/lib/cyclomatic-ceiling.js +14 -87
  204. package/.agents/scripts/lib/cyclomatic-scope.js +10 -50
  205. package/.agents/scripts/lib/dead-exports-knip.js +18 -56
  206. package/.agents/scripts/lib/dead-exports-mode.js +5 -24
  207. package/.agents/scripts/lib/degraded-mode.js +3 -26
  208. package/.agents/scripts/lib/dependency-parser.js +8 -40
  209. package/.agents/scripts/lib/dependency-version.js +13 -35
  210. package/.agents/scripts/lib/detect-package-manager.js +6 -36
  211. package/.agents/scripts/lib/doc-tiers.js +22 -126
  212. package/.agents/scripts/lib/duplicate-search.js +8 -72
  213. package/.agents/scripts/lib/env-loader.js +5 -27
  214. package/.agents/scripts/lib/error-redactor.js +6 -31
  215. package/.agents/scripts/lib/errors/index.js +2 -22
  216. package/.agents/scripts/lib/escomplex-ast-compat.js +22 -163
  217. package/.agents/scripts/lib/escomplex-kernel.js +21 -123
  218. package/.agents/scripts/lib/feedback-loop/graduator-core.js +93 -419
  219. package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +20 -98
  220. package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +27 -151
  221. package/.agents/scripts/lib/findings/audit-ledger.js +23 -97
  222. package/.agents/scripts/lib/findings/classify-finding.js +14 -69
  223. package/.agents/scripts/lib/findings/promote-finding.js +14 -112
  224. package/.agents/scripts/lib/findings/provenance-field.js +11 -52
  225. package/.agents/scripts/lib/findings/route-finding.js +37 -255
  226. package/.agents/scripts/lib/findings/semantic-issue-search.js +14 -59
  227. package/.agents/scripts/lib/findings/severity.js +18 -104
  228. package/.agents/scripts/lib/format-generated-json.js +12 -44
  229. package/.agents/scripts/lib/full-suite-lock.js +160 -429
  230. package/.agents/scripts/lib/full-suite-queue.js +213 -0
  231. package/.agents/scripts/lib/gates/baseline-store.js +5 -9
  232. package/.agents/scripts/lib/gates/friction.js +1 -3
  233. package/.agents/scripts/lib/generated/agentrc-validator.js +2 -2
  234. package/.agents/scripts/lib/gh-exec.js +31 -259
  235. package/.agents/scripts/lib/git/cached-fetch.js +9 -52
  236. package/.agents/scripts/lib/git/sync-from-base.js +15 -107
  237. package/.agents/scripts/lib/git-branch-cleanup.js +14 -61
  238. package/.agents/scripts/lib/git-branch-lifecycle.js +16 -87
  239. package/.agents/scripts/lib/git-utils.js +37 -161
  240. package/.agents/scripts/lib/github/framework-repo.js +8 -71
  241. package/.agents/scripts/lib/github-url.js +2 -17
  242. package/.agents/scripts/lib/import-graph.js +11 -38
  243. package/.agents/scripts/lib/install-cmd-parser.js +4 -13
  244. package/.agents/scripts/lib/json-utils.js +3 -18
  245. package/.agents/scripts/lib/label-constants.js +16 -111
  246. package/.agents/scripts/lib/label-taxonomy.js +4 -30
  247. package/.agents/scripts/lib/maintainability-engine.js +12 -80
  248. package/.agents/scripts/lib/maintainability-unscorable.js +5 -25
  249. package/.agents/scripts/lib/maintainability-utils.js +16 -92
  250. package/.agents/scripts/lib/mandrel-catalog.js +12 -70
  251. package/.agents/scripts/lib/notifications/notifier.js +13 -38
  252. package/.agents/scripts/lib/npm-scripts.js +4 -23
  253. package/.agents/scripts/lib/observability/metrics-ledger.js +16 -76
  254. package/.agents/scripts/lib/observability/runtime-friction.js +44 -286
  255. package/.agents/scripts/lib/observability/signal-validator.js +5 -37
  256. package/.agents/scripts/lib/observability/signals-writer.js +11 -121
  257. package/.agents/scripts/lib/observability/source-classifier.js +21 -203
  258. package/.agents/scripts/lib/observability/terse-result.js +14 -47
  259. package/.agents/scripts/lib/onboard/init-tail.js +13 -74
  260. package/.agents/scripts/lib/onboard/scaffold-docs.js +11 -34
  261. package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +25 -139
  262. package/.agents/scripts/lib/orchestration/auto-merge-cwd.js +11 -66
  263. package/.agents/scripts/lib/orchestration/behind-recovery.js +10 -55
  264. package/.agents/scripts/lib/orchestration/ceremony-routing.js +5 -75
  265. package/.agents/scripts/lib/orchestration/change-set.js +7 -36
  266. package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +9 -46
  267. package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +11 -44
  268. package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +5 -24
  269. package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +3 -12
  270. package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +5 -38
  271. package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +3 -8
  272. package/.agents/scripts/lib/orchestration/check-baselines/phases/refresh-ack.js +28 -136
  273. package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +3 -13
  274. package/.agents/scripts/lib/orchestration/check-state.js +92 -0
  275. package/.agents/scripts/lib/orchestration/ci-gap-intake.js +37 -144
  276. package/.agents/scripts/lib/orchestration/ci-rerun-guard.js +42 -189
  277. package/.agents/scripts/lib/orchestration/code-review.js +24 -128
  278. package/.agents/scripts/lib/orchestration/column-sync.js +23 -111
  279. package/.agents/scripts/lib/orchestration/complexity-gate.js +42 -214
  280. package/.agents/scripts/lib/orchestration/deliver-recover.js +36 -168
  281. package/.agents/scripts/lib/orchestration/dependency-analyzer.js +4 -35
  282. package/.agents/scripts/lib/orchestration/dependency-candidates.js +9 -41
  283. package/.agents/scripts/lib/orchestration/diff-magnitude.js +25 -115
  284. package/.agents/scripts/lib/orchestration/doc-reader.js +2 -6
  285. package/.agents/scripts/lib/orchestration/docs-digest.js +13 -51
  286. package/.agents/scripts/lib/orchestration/epic-candidates.js +13 -53
  287. package/.agents/scripts/lib/orchestration/epic-checklist.js +9 -33
  288. package/.agents/scripts/lib/orchestration/epic-container.js +41 -167
  289. package/.agents/scripts/lib/orchestration/epic-expansion.js +10 -40
  290. package/.agents/scripts/lib/orchestration/epic-rollup.js +55 -207
  291. package/.agents/scripts/lib/orchestration/file-assumption-enum.js +2 -22
  292. package/.agents/scripts/lib/orchestration/file-assumptions.js +45 -253
  293. package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-detect.js +9 -46
  294. package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +7 -57
  295. package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +21 -126
  296. package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +2 -6
  297. package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +1 -4
  298. package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +1 -5
  299. package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +9 -34
  300. package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +41 -190
  301. package/.agents/scripts/lib/orchestration/git-cleanup/phases/merged-tip.js +9 -45
  302. package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +1 -4
  303. package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +19 -85
  304. package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +3 -17
  305. package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +1 -5
  306. package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +16 -100
  307. package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +1 -4
  308. package/.agents/scripts/lib/orchestration/lease-guard-shared.js +16 -67
  309. package/.agents/scripts/lib/orchestration/lifecycle/emit-ledger-event.js +9 -33
  310. package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-flip-failed.js +8 -29
  311. package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-unlanded.js +15 -68
  312. package/.agents/scripts/lib/orchestration/light-backstop.js +11 -49
  313. package/.agents/scripts/lib/orchestration/light-escalation.js +21 -89
  314. package/.agents/scripts/lib/orchestration/light-suitability.js +26 -231
  315. package/.agents/scripts/lib/orchestration/merge-block-class.js +39 -216
  316. package/.agents/scripts/lib/orchestration/merge-poll.js +104 -377
  317. package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
  318. package/.agents/scripts/lib/orchestration/plan-context.js +52 -303
  319. package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +22 -79
  320. package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +5 -31
  321. package/.agents/scripts/lib/orchestration/plan-metrics.js +29 -108
  322. package/.agents/scripts/lib/orchestration/plan-navigation.js +8 -27
  323. package/.agents/scripts/lib/orchestration/plan-persist/acceptance-handle-repair.js +12 -49
  324. package/.agents/scripts/lib/orchestration/plan-persist/audit-provenance.js +18 -73
  325. package/.agents/scripts/lib/orchestration/plan-persist/changes-repair.js +14 -78
  326. package/.agents/scripts/lib/orchestration/plan-persist/cross-plan-links.js +6 -30
  327. package/.agents/scripts/lib/orchestration/plan-persist/epic-adoption.js +14 -65
  328. package/.agents/scripts/lib/orchestration/plan-persist/epic-ops.js +21 -76
  329. package/.agents/scripts/lib/orchestration/plan-persist/external-deps.js +6 -43
  330. package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +14 -68
  331. package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +9 -41
  332. package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +49 -248
  333. package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
  334. package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +85 -368
  335. package/.agents/scripts/lib/orchestration/plan-persist/summary.js +8 -38
  336. package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +30 -190
  337. package/.agents/scripts/lib/orchestration/plan-persist/wave-collision-gate.js +9 -49
  338. package/.agents/scripts/lib/orchestration/plan-persist/wave-serialisation.js +7 -28
  339. package/.agents/scripts/lib/orchestration/plan-reachability.js +13 -42
  340. package/.agents/scripts/lib/orchestration/plan-run-labels/reap.js +16 -91
  341. package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +16 -54
  342. package/.agents/scripts/lib/orchestration/plan-text-hygiene.js +10 -52
  343. package/.agents/scripts/lib/orchestration/planning/authoring-context.js +14 -109
  344. package/.agents/scripts/lib/orchestration/planning/memory-pool-advisory.js +11 -83
  345. package/.agents/scripts/lib/orchestration/pr-watch.js +48 -306
  346. package/.agents/scripts/lib/orchestration/project-meta-cache.js +15 -80
  347. package/.agents/scripts/lib/orchestration/project-meta-resolver.js +10 -51
  348. package/.agents/scripts/lib/orchestration/reassert-status-column.js +12 -76
  349. package/.agents/scripts/lib/orchestration/remote-verifier.js +12 -36
  350. package/.agents/scripts/lib/orchestration/resolve-stories.js +33 -164
  351. package/.agents/scripts/lib/orchestration/retro-proposals.js +66 -361
  352. package/.agents/scripts/lib/orchestration/review-base-ref.js +9 -43
  353. package/.agents/scripts/lib/orchestration/review-depth.js +12 -94
  354. package/.agents/scripts/lib/orchestration/review-providers/codex.js +10 -111
  355. package/.agents/scripts/lib/orchestration/review-providers/degraded-gates.js +13 -71
  356. package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +7 -51
  357. package/.agents/scripts/lib/orchestration/review-providers/mi-exemptions.js +8 -53
  358. package/.agents/scripts/lib/orchestration/review-providers/native.js +30 -214
  359. package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +7 -52
  360. package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +4 -33
  361. package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +11 -71
  362. package/.agents/scripts/lib/orchestration/review-providers/scoped-lint.js +19 -131
  363. package/.agents/scripts/lib/orchestration/review-providers/security-review.js +6 -89
  364. package/.agents/scripts/lib/orchestration/review-providers/types.js +26 -56
  365. package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +3 -46
  366. package/.agents/scripts/lib/orchestration/run-epilogue.js +40 -199
  367. package/.agents/scripts/lib/orchestration/run-scoped-config.js +13 -81
  368. package/.agents/scripts/lib/orchestration/single-story-close/close-note.js +7 -34
  369. package/.agents/scripts/lib/orchestration/single-story-close/failed-terminal.js +16 -89
  370. package/.agents/scripts/lib/orchestration/single-story-close/gate-log.js +18 -109
  371. package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +83 -239
  372. package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +18 -80
  373. package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +103 -97
  374. package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +8 -64
  375. package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +136 -486
  376. package/.agents/scripts/lib/orchestration/single-story-close/phases/conventional-subject.js +30 -134
  377. package/.agents/scripts/lib/orchestration/single-story-close/phases/graphql-preflight.js +9 -50
  378. package/.agents/scripts/lib/orchestration/single-story-close/phases/lock-wait-pending.js +49 -0
  379. package/.agents/scripts/lib/orchestration/single-story-close/phases/normalize-pr-title.js +13 -86
  380. package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +20 -95
  381. package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +46 -203
  382. package/.agents/scripts/lib/orchestration/single-story-close/phases/pre-gate-steps.js +8 -50
  383. package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +12 -83
  384. package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +6 -39
  385. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +1 -6
  386. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-outcome.js +4 -28
  387. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-override.js +6 -51
  388. package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +6 -34
  389. package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +23 -121
  390. package/.agents/scripts/lib/orchestration/single-story-close/runner.js +110 -290
  391. package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +15 -69
  392. package/.agents/scripts/lib/orchestration/story-body-gate.js +4 -23
  393. package/.agents/scripts/lib/orchestration/story-close/baseline-upward-writeback.js +50 -179
  394. package/.agents/scripts/lib/orchestration/story-close/context-budget-writeback.js +11 -41
  395. package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +23 -311
  396. package/.agents/scripts/lib/orchestration/story-close/phases/local-lens-review.js +22 -147
  397. package/.agents/scripts/lib/orchestration/story-close/phases/review-core.js +16 -67
  398. package/.agents/scripts/lib/orchestration/story-deliver-terminal-schema.js +12 -68
  399. package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +42 -201
  400. package/.agents/scripts/lib/orchestration/story-follow-ups.js +43 -245
  401. package/.agents/scripts/lib/orchestration/story-init-envelope.js +4 -23
  402. package/.agents/scripts/lib/orchestration/story-init-remote.js +2 -6
  403. package/.agents/scripts/lib/orchestration/story-reachability.js +3 -23
  404. package/.agents/scripts/lib/orchestration/task-body-validator.js +12 -126
  405. package/.agents/scripts/lib/orchestration/ticket-lease.js +28 -131
  406. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +15 -149
  407. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +5 -33
  408. package/.agents/scripts/lib/orchestration/ticket-validator.js +39 -181
  409. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
  410. package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -250
  411. package/.agents/scripts/lib/orchestration/ticketing/state.js +14 -68
  412. package/.agents/scripts/lib/orchestration/ticketing/transition.js +46 -263
  413. package/.agents/scripts/lib/orchestration/ticketing.js +2 -26
  414. package/.agents/scripts/lib/orchestration/verify-credit.js +18 -79
  415. package/.agents/scripts/lib/orchestration/worktree-dirty.js +5 -30
  416. package/.agents/scripts/lib/path-security.js +3 -6
  417. package/.agents/scripts/lib/plan-phase-cleanup.js +9 -49
  418. package/.agents/scripts/lib/preflight-runner.js +13 -69
  419. package/.agents/scripts/lib/process-group.js +143 -0
  420. package/.agents/scripts/lib/project-root.js +2 -8
  421. package/.agents/scripts/lib/provider-factory.js +2 -25
  422. package/.agents/scripts/lib/qa/console-allowlist.js +10 -59
  423. package/.agents/scripts/lib/qa/qa-session.js +15 -69
  424. package/.agents/scripts/lib/qa/redact-evidence.js +18 -129
  425. package/.agents/scripts/lib/qa/resolve-qa-contract.js +26 -135
  426. package/.agents/scripts/lib/qa/resolve-selection.js +16 -84
  427. package/.agents/scripts/lib/reserved-test-ids.js +9 -47
  428. package/.agents/scripts/lib/runtime-deps/dep-resolution.js +13 -53
  429. package/.agents/scripts/lib/runtime-deps/ensure-installed.js +10 -44
  430. package/.agents/scripts/lib/runtime-deps/manifest.js +10 -30
  431. package/.agents/scripts/lib/runtime-deps/parser-major.js +15 -51
  432. package/.agents/scripts/lib/runtime-deps/preflight.js +4 -22
  433. package/.agents/scripts/lib/runtime-deps/scan-imports.js +11 -55
  434. package/.agents/scripts/lib/signals/detectors/common.js +12 -38
  435. package/.agents/scripts/lib/signals/index.js +2 -19
  436. package/.agents/scripts/lib/signals/schema.js +14 -109
  437. package/.agents/scripts/lib/signals/write.js +2 -11
  438. package/.agents/scripts/lib/single-story/confirm-merge.js +31 -72
  439. package/.agents/scripts/lib/single-story/story-merged-notify.js +8 -49
  440. package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +4 -26
  441. package/.agents/scripts/lib/single-story-sweep/protection.js +13 -100
  442. package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +60 -258
  443. package/.agents/scripts/lib/single-story-sweep.js +14 -97
  444. package/.agents/scripts/lib/skills/parse-skill.js +13 -59
  445. package/.agents/scripts/lib/skills/skills-index.js +8 -29
  446. package/.agents/scripts/lib/skills/walk-skill-files.js +17 -78
  447. package/.agents/scripts/lib/source-extensions.js +11 -42
  448. package/.agents/scripts/lib/source-text/strip-js-comments.js +8 -41
  449. package/.agents/scripts/lib/stdio-flush.js +9 -36
  450. package/.agents/scripts/lib/story-adjacency.js +8 -40
  451. package/.agents/scripts/lib/story-body/body-format-lints.js +22 -83
  452. package/.agents/scripts/lib/story-body/footer-block.js +11 -44
  453. package/.agents/scripts/lib/story-body/story-body.js +83 -358
  454. package/.agents/scripts/lib/temp-retention.js +42 -143
  455. package/.agents/scripts/lib/templates/decomposer-prompts.js +11 -65
  456. package/.agents/scripts/lib/test-env.js +12 -65
  457. package/.agents/scripts/lib/test-run-credit.js +10 -65
  458. package/.agents/scripts/lib/test-runner-contract.js +19 -74
  459. package/.agents/scripts/lib/test-temp.js +38 -184
  460. package/.agents/scripts/lib/test-tiers.js +12 -96
  461. package/.agents/scripts/lib/ticket-body-sections.js +21 -96
  462. package/.agents/scripts/lib/transpile.js +15 -74
  463. package/.agents/scripts/lib/util/concurrent-map.js +6 -25
  464. package/.agents/scripts/lib/util/parse-id-list.js +8 -34
  465. package/.agents/scripts/lib/util/poll-loop.js +8 -28
  466. package/.agents/scripts/lib/util/with-timeout.js +2 -11
  467. package/.agents/scripts/lib/validation-evidence.js +21 -96
  468. package/.agents/scripts/lib/wave-runner/footprint.js +17 -70
  469. package/.agents/scripts/lib/wave-runner/live-probe.js +53 -221
  470. package/.agents/scripts/lib/wave-runner/ready-set.js +72 -301
  471. package/.agents/scripts/lib/workers/crap-worker.js +11 -64
  472. package/.agents/scripts/lib/workers/maintainability-report-worker.js +8 -45
  473. package/.agents/scripts/lib/workers/maintainability-worker.js +5 -21
  474. package/.agents/scripts/lib/workers/serve-worker-messages.js +2 -18
  475. package/.agents/scripts/lib/workflow-closure.js +22 -105
  476. package/.agents/scripts/lib/workspace-provisioner.js +16 -54
  477. package/.agents/scripts/lib/worktree/git-hooks.js +15 -60
  478. package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +20 -60
  479. package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +10 -62
  480. package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +22 -86
  481. package/.agents/scripts/lib/worktree/lifecycle/reap.js +24 -126
  482. package/.agents/scripts/lib/worktree/lifecycle-manager.js +2 -20
  483. package/.agents/scripts/lib/worktree/node-modules-strategy.js +46 -180
  484. package/.agents/scripts/lib/worktree-manager.js +15 -40
  485. package/.agents/scripts/lint-issue-body.js +12 -68
  486. package/.agents/scripts/mandrel-update-preflight.js +10 -70
  487. package/.agents/scripts/merge-baseline.js +30 -104
  488. package/.agents/scripts/nav-registry-diff.js +22 -108
  489. package/.agents/scripts/notify.js +12 -69
  490. package/.agents/scripts/plan-context.js +27 -111
  491. package/.agents/scripts/plan-critics.js +12 -66
  492. package/.agents/scripts/plan-persist.js +31 -148
  493. package/.agents/scripts/plan-run-epilogue.js +11 -37
  494. package/.agents/scripts/pr-watch-with-update.js +76 -267
  495. package/.agents/scripts/providers/github/auth.js +3 -8
  496. package/.agents/scripts/providers/github/blocked-by-add.js +14 -61
  497. package/.agents/scripts/providers/github/board-add.js +5 -21
  498. package/.agents/scripts/providers/github/branch-protection.js +11 -43
  499. package/.agents/scripts/providers/github/cache.js +2 -14
  500. package/.agents/scripts/providers/github/comments.js +7 -40
  501. package/.agents/scripts/providers/github/compose.js +3 -19
  502. package/.agents/scripts/providers/github/errors.js +22 -125
  503. package/.agents/scripts/providers/github/issues.js +31 -123
  504. package/.agents/scripts/providers/github/labels.js +24 -124
  505. package/.agents/scripts/providers/github/mappers.js +5 -27
  506. package/.agents/scripts/providers/github/merge-methods.js +3 -22
  507. package/.agents/scripts/providers/github/project-board.js +2 -17
  508. package/.agents/scripts/providers/github/projects-v2-graphql.js +3 -6
  509. package/.agents/scripts/providers/github/request-helpers.js +5 -32
  510. package/.agents/scripts/providers/github/search-budget.js +9 -39
  511. package/.agents/scripts/providers/github/search-query.js +5 -26
  512. package/.agents/scripts/providers/github/sub-issue-add.js +15 -65
  513. package/.agents/scripts/providers/github/sub-issues.js +7 -36
  514. package/.agents/scripts/providers/github/tickets.js +32 -134
  515. package/.agents/scripts/providers/github.js +18 -59
  516. package/.agents/scripts/prune-plan-run-labels.js +12 -46
  517. package/.agents/scripts/quality-preview.js +35 -220
  518. package/.agents/scripts/resolve-doc-tiers.js +3 -26
  519. package/.agents/scripts/resolve-stories.js +16 -67
  520. package/.agents/scripts/resync-status-column.js +6 -25
  521. package/.agents/scripts/run-tests.js +29 -104
  522. package/.agents/scripts/single-story-close.js +23 -135
  523. package/.agents/scripts/single-story-confirm-merge.js +32 -139
  524. package/.agents/scripts/single-story-init.js +47 -209
  525. package/.agents/scripts/stories-wave-tick.js +102 -472
  526. package/.agents/scripts/sync-agentrc.js +3 -21
  527. package/.agents/scripts/sync-claude-agents.js +9 -55
  528. package/.agents/scripts/sync-claude-commands.js +20 -110
  529. package/.agents/scripts/test-wrapper.js +6 -43
  530. package/.agents/scripts/update-coverage-baseline.js +5 -22
  531. package/.agents/scripts/update-crap-baseline.js +7 -30
  532. package/.agents/scripts/update-duplication-baseline.js +16 -92
  533. package/.agents/scripts/update-maintainability-baseline.js +8 -62
  534. package/.agents/scripts/update-ticket-state.js +1 -7
  535. package/.agents/scripts/validate-skills.js +6 -26
  536. package/.agents/templates/agent-protocol.md +2 -2
  537. package/.agents/templates/docs/audit-sweep-runbook.md +3 -4
  538. package/.agents/workflows/audit-accessibility.md +4 -7
  539. package/.agents/workflows/audit-adrs.md +3 -6
  540. package/.agents/workflows/audit-architecture.md +3 -11
  541. package/.agents/workflows/audit-baselines.md +6 -9
  542. package/.agents/workflows/audit-clean-code.md +8 -12
  543. package/.agents/workflows/audit-data-model.md +3 -7
  544. package/.agents/workflows/audit-dependencies.md +4 -7
  545. package/.agents/workflows/audit-devops.md +4 -8
  546. package/.agents/workflows/audit-documentation.md +1 -4
  547. package/.agents/workflows/audit-mobile.md +4 -7
  548. package/.agents/workflows/audit-navigability.md +3 -6
  549. package/.agents/workflows/audit-performance.md +2 -4
  550. package/.agents/workflows/audit-privacy.md +4 -7
  551. package/.agents/workflows/audit-quality.md +4 -7
  552. package/.agents/workflows/audit-security.md +4 -7
  553. package/.agents/workflows/audit-seo.md +4 -7
  554. package/.agents/workflows/audit-sre.md +4 -7
  555. package/.agents/workflows/audit-to-stories.md +17 -30
  556. package/.agents/workflows/audit-ux-ui.md +4 -7
  557. package/.agents/workflows/helpers/audit-lens-core.md +1 -1
  558. package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
  559. package/.agents/workflows/helpers/deliver-digest.md +6 -4
  560. package/.agents/workflows/helpers/deliver-reference.md +114 -188
  561. package/.agents/workflows/helpers/deliver-story-reference.md +189 -533
  562. package/.agents/workflows/helpers/plan-reference.md +86 -139
  563. package/.agents/workflows/helpers/qa-core.md +12 -0
  564. package/.agents/workflows/memory-consolidate.md +1 -1
  565. package/.agents/workflows/qa-assist.md +27 -71
  566. package/.agents/workflows/qa-explore.md +19 -59
  567. package/.agents/workflows/qa-run.md +11 -33
  568. package/README.md +1 -1
  569. package/bin/mandrel.js +5 -46
  570. package/bin/postinstall.js +18 -107
  571. package/docs/CHANGELOG.md +25 -0
  572. package/lib/cli/doctor.js +11 -71
  573. package/lib/cli/init.js +26 -165
  574. package/lib/cli/migrate.js +5 -64
  575. package/lib/cli/registry.js +84 -467
  576. package/lib/cli/sync-agents.js +4 -64
  577. package/lib/cli/sync-commands.js +11 -64
  578. package/lib/cli/sync.js +34 -213
  579. package/lib/cli/uninstall.js +40 -219
  580. package/lib/cli/update.js +105 -661
  581. package/lib/cli/version-check.js +8 -72
  582. package/lib/cli/version-helpers.js +14 -87
  583. package/lib/migrations/helpers/retire-agentrc-key.js +11 -52
  584. package/lib/migrations/index.js +15 -92
  585. package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +2 -15
  586. package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +1 -13
  587. package/lib/migrations/steps/2.11.0-retire-max-seed-words.js +2 -15
  588. package/lib/migrations/steps/2.2.0-retire-epic-ac-tags.js +9 -38
  589. package/lib/migrations/steps/2.20.0-retire-codebase-snapshot.js +1 -13
  590. package/lib/migrations/steps/2.32.0-retire-lint-baseline-command.js +2 -27
  591. package/lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js +2 -23
  592. package/lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js +2 -27
  593. package/lib/migrations/steps/2.60.0-retire-audit-results-autofile.js +2 -21
  594. package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
  595. package/package.json +16 -14
  596. package/.agents/docs/SDLC.md +0 -590
  597. package/.agents/docs/quality-gates.md +0 -1183
  598. package/.agents/rules/known-tooling-behavior.md +0 -200
  599. package/.agents/rules/orchestration-error-handling.md +0 -61
  600. package/.agents/rules/test-seams.md +0 -59
  601. package/.agents/schemas/baselines/lighthouse.schema.json +0 -59
  602. package/.agents/schemas/baselines/lint.schema.json +0 -47
  603. package/.agents/scripts/check-action-pinning.js +0 -260
  604. package/.agents/scripts/check-audit-attribution.js +0 -302
  605. package/.agents/scripts/check-baseline-drift.js +0 -211
  606. package/.agents/scripts/check-baseline-scope.js +0 -362
  607. package/.agents/scripts/check-generated-validator.js +0 -202
  608. package/.agents/scripts/check-knip-entries.js +0 -159
  609. package/.agents/scripts/check-lifecycle-lint.js +0 -294
  610. package/.agents/scripts/check-pinned-override-notes.js +0 -102
  611. package/.agents/scripts/check-schema-references.js +0 -368
  612. package/.agents/scripts/check-test-portability.js +0 -512
  613. package/.agents/scripts/check-workflow-citations.js +0 -218
  614. package/.agents/scripts/check-workflow-cli-lint.js +0 -299
  615. package/.agents/scripts/check-workflow-timeouts.js +0 -291
  616. package/.agents/scripts/install-matrix-assert.js +0 -326
  617. package/.agents/scripts/lib/audit-advisories.js +0 -195
  618. package/.agents/scripts/lib/audit-attribution.js +0 -134
  619. package/.agents/scripts/lib/baselines/drift-detector.js +0 -351
  620. package/.agents/scripts/lib/baselines/kinds/lighthouse.js +0 -87
  621. package/.agents/scripts/lib/baselines/kinds/lint.js +0 -184
  622. package/.agents/scripts/lib/baselines/orphan-pruner.js +0 -233
  623. package/.agents/scripts/lib/baselines/scope-assert.js +0 -223
  624. package/.agents/scripts/lib/baselines/scope-inventory.js +0 -314
  625. package/.agents/scripts/lib/c8-cli-path.js +0 -21
  626. package/.agents/scripts/lib/config/gates/lighthouse.schema.js +0 -51
  627. package/.agents/scripts/lib/config/gates/lint.schema.js +0 -18
  628. package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +0 -70
  629. package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +0 -284
  630. package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +0 -80
  631. package/.agents/scripts/lib/dynamic-workflow/degraded-coverage.js +0 -81
  632. package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +0 -87
  633. package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +0 -74
  634. package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +0 -90
  635. package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +0 -43
  636. package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +0 -83
  637. package/.agents/scripts/lib/fs-walk.js +0 -52
  638. package/.agents/scripts/lib/knip-config-resolver.js +0 -181
  639. package/.agents/scripts/lib/knip-entry-sync.js +0 -452
  640. package/.agents/scripts/lib/pinned-override-notes.js +0 -88
  641. package/.agents/scripts/lib/pinned-override-resolve.js +0 -212
  642. package/.agents/scripts/lib/test-isolate/cli-options.js +0 -93
  643. package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +0 -52
  644. package/.agents/scripts/lib/test-isolate/list-files.js +0 -90
  645. package/.agents/scripts/lib/test-isolate/parse-tap.js +0 -75
  646. package/.agents/scripts/lib/test-isolate/progress-log.js +0 -45
  647. package/.agents/scripts/lib/test-isolate/render-report.js +0 -97
  648. package/.agents/scripts/lib/test-isolate/run-isolate.js +0 -87
  649. package/.agents/scripts/lib/test-isolate/runner.js +0 -483
  650. package/.agents/scripts/lib/test-profile/parse-tap.js +0 -136
  651. package/.agents/scripts/lib/test-profile/render-report.js +0 -45
  652. package/.agents/scripts/lint-label-vocabulary.js +0 -214
  653. package/.agents/scripts/post-structured-comment.js +0 -127
  654. package/.agents/scripts/provision-git-hooks.js +0 -85
  655. package/.agents/scripts/prune-baseline-orphans.js +0 -181
  656. package/.agents/scripts/run-coverage.js +0 -197
  657. package/.agents/scripts/run-lint.js +0 -133
  658. package/.agents/scripts/run-test-profile.js +0 -129
  659. package/.agents/scripts/run-verify.js +0 -125
  660. package/.agents/scripts/test-isolate.js +0 -55
  661. package/.agents/scripts/update-dead-exports-baseline.js +0 -321
@@ -2,35 +2,11 @@
2
2
  /* node:coverage ignore file */
3
3
 
4
4
  /**
5
- * single-story-init.js — Initialize a Story for v2 `/mandrel-deliver`.
6
- *
7
- * Seeds `story-<id>` from `project.baseBranch` (default `main`), materialises
8
- * the per-Story worktree when isolation is enabled, upserts a `story-init`
9
- * structured comment, and flips the Story to `agent::executing`. There is no
10
- * Epic parent, epic branch, or dispatch-manifest gate.
11
- *
12
- * What this script does:
13
- * 1. Validate the Story (type::story, not closed).
14
- * 2. Acquire the assignee lease, then refuse a Story already labelled
15
- * `agent::executing` this run does not hold (unless `--steal`).
16
- * 3. Flip the Story to `agent::executing` — BEFORE provisioning, so the
17
- * claim is label-visible to concurrent operators' probes during the
18
- * multi-minute install window (Story #4620). A provisioning failure after
19
- * this reverts the label and releases the lease.
20
- * 4. Fetch origin.
21
- * 5. Create the Story branch from `project.baseBranch` (default
22
- * `main`) — local-only, no remote push at this stage.
23
- * 6. Materialise a worktree at `.worktrees/story-<id>/` when worktree
24
- * isolation is enabled; otherwise check out the branch in-place.
25
- * 7. Upsert a `story-init` structured comment carrying
26
- * `standalone: true`.
27
- *
28
- * What this script does NOT do:
29
- * - Child-Task transitions — a Story is atomic (one branch, one
30
- * commit-set, one PR to `main`).
31
- *
32
- * Usage: `node single-story-init.js --story <STORY_ID> [--dry-run]`
33
- * Exit codes: 0 ok, 1 error.
5
+ * single-story-init.js — initialize a Story for `/mandrel-deliver`: validate,
6
+ * take the lease, flip to `agent::executing` (before provisioning, so the
7
+ * claim is visible during the install window; a later failure rolls it back),
8
+ * seed `story-<id>` from the base branch locally, and materialise the
9
+ * worktree when isolation is on.
34
10
  *
35
11
  * @see .agents/workflows/helpers/deliver-story.md
36
12
  */
@@ -74,27 +50,16 @@ import {
74
50
  import { createProvider } from './lib/provider-factory.js';
75
51
  import { buildProtectionCtx } from './lib/single-story-sweep/protection-ctx.js';
76
52
  import { resolveSweepLockPath } from './lib/single-story-sweep/sweep-lock.js';
77
- // `sweepMergedStoryBranches` is imported dynamically below — its transitive
78
- // graph reaches `picomatch` (via `git-cleanup.js`). Loading it statically
79
- // would crash module resolution before `assertDepsInstalled()` can emit a
80
- // friendly "run npm install" message.
53
+ // `sweepMergedStoryBranches` is imported dynamically: its graph reaches
54
+ // `picomatch`, which would crash before `assertDepsInstalled()` can report.
81
55
  import { WorktreeManager } from './lib/worktree-manager.js';
82
56
 
83
57
  export { handleRemoteVerificationFailure } from './lib/orchestration/story-init-remote.js';
84
- // `makeGhRunner` moved to the shared `single-story-sweep/protection-ctx.js`
85
- // module (Story #4373) so the three boot callers build an identical
86
- // protection ctx. Re-exported here to preserve its existing import path.
87
58
  export { makeGhRunner } from './lib/single-story-sweep/protection-ctx.js';
88
59
 
89
60
  /**
90
- * Fail fast with a clear, actionable message when project deps are missing.
91
- * Uses only Node builtins so it stays loadable when `node_modules/` is empty.
92
- *
93
- * Why: a wiped `node_modules/` previously surfaced as
94
- * `ERR_MODULE_NOT_FOUND: Cannot find package 'picomatch'` from deep inside
95
- * the sweep graph — opaque for operators. This guard probes a representative
96
- * runtime dep (declared in `.agents/runtime-deps.json`) and tells the operator
97
- * exactly what to run.
61
+ * Fail fast with an actionable message when deps are missing, instead of an
62
+ * opaque `ERR_MODULE_NOT_FOUND` from deep in the sweep graph. Builtins only.
98
63
  */
99
64
  function assertDepsInstalled(projectRoot) {
100
65
  const probe = path.join(projectRoot, 'node_modules', 'picomatch');
@@ -111,12 +76,8 @@ function assertDepsInstalled(projectRoot) {
111
76
  const progress = Logger.createProgress('single-story-init', { stderr: true });
112
77
 
113
78
  /**
114
- * Validate that the fetched ticket is a standalone Story this script can
115
- * deliver. Throws with the canonical operator-facing message otherwise.
116
- * Exported for testing.
117
- *
118
- * @param {{ labels: string[], state: string }} story Fetched ticket.
119
- * @param {number} storyId Story number (for error messages).
79
+ * @param {{ labels: string[], state: string }} story
80
+ * @param {number} storyId
120
81
  */
121
82
  export function assertDeliverableStory(story, storyId) {
122
83
  if (!story.labels.includes(TYPE_LABELS.STORY)) {
@@ -138,26 +99,14 @@ export function assertDeliverableStory(story, storyId) {
138
99
  }
139
100
 
140
101
  /**
141
- * Defense-in-depth refusal for a Story already labelled `agent::executing`
142
- * that this run does not already hold.
143
- *
144
- * The assignee lease is the primary cross-run guard, but the label and the
145
- * assignee can drift apart: a prior run that crashed *after* the early
146
- * `agent::executing` flip but *before* (or without) taking/holding the lease
147
- * leaves the Story labelled executing with no live foreign lease to trip the
148
- * lease preflight. Left unchecked, a fresh run would seed the branch and
149
- * worktree straight over that drift. Refuse unless the caller already holds the
150
- * lease (`reason === 'already-held'`, i.e. a legitimate idempotent re-init) or
151
- * passed `--steal`.
152
- *
153
- * Runs *after* the lease acquire (so it can read the acquire's reason) but
154
- * *before* any git mutation. On refusal it releases the lease this run just
155
- * took so the ticket is left exactly as found — a clean state for the operator
156
- * to inspect before re-running with `--steal`.
102
+ * Refuse a Story labelled `agent::executing` that this run does not hold:
103
+ * label and assignee can drift (a run that crashed after the flip), so the
104
+ * lease alone misses it. Runs after the acquire, before any git mutation, and
105
+ * releases the just-taken lease on refusal so the ticket is left as found.
157
106
  *
158
107
  * @param {object} args
159
- * @param {{ labels?: string[] }} args.story Fetched Story ticket.
160
- * @param {{ reason: string, previousOwner: string|null }} args.lease Acquire result.
108
+ * @param {{ labels?: string[] }} args.story
109
+ * @param {{ reason: string, previousOwner: string|null }} args.lease
161
110
  * @param {boolean} args.stealRequested
162
111
  * @param {number} args.storyId
163
112
  * @param {object} args.provider
@@ -176,7 +125,6 @@ export async function assertNotForeignExecuting({
176
125
  story.labels.includes(STATE_LABELS.EXECUTING);
177
126
  if (!labelled || stealRequested || lease.reason === 'already-held') return;
178
127
 
179
- // Back out the lease we just took so the refusal leaves the ticket unchanged.
180
128
  try {
181
129
  await releaseStoryLease({ provider, storyId, config });
182
130
  } catch (err) {
@@ -195,18 +143,11 @@ export async function assertNotForeignExecuting({
195
143
  }
196
144
 
197
145
  /**
198
- * Publish this run's claim as the `agent::executing` label **before** the
199
- * multi-minute worktree install, so a concurrent operator's probe sees the
200
- * claim during the install window instead of reading `agent::ready` and
201
- * dispatching the Story a second time.
202
- *
203
- * Best-effort: the assignee lease is the real guard, so a failed flip logs and
204
- * proceeds rather than aborting init. Routes through `transitionTicketState`
205
- * so the Projects v2 Status column follows the label (Story #2548).
146
+ * Best-effort: the lease is the real guard, so a failed flip only logs.
206
147
  *
207
148
  * @param {object} provider
208
149
  * @param {number} storyId
209
- * @param {object} story Prefetched snapshot (round-trip elimination).
150
+ * @param {object} story Prefetched snapshot.
210
151
  * @returns {Promise<void>}
211
152
  */
212
153
  async function flipStoryToExecuting(provider, storyId, story) {
@@ -224,15 +165,8 @@ async function flipStoryToExecuting(provider, storyId, story) {
224
165
  }
225
166
 
226
167
  /**
227
- * Roll any container Epic listing this Story up from its children.
228
- *
229
- * A container carries no `agent::*` label, so the Status sync that follows
230
- * the flip above cannot reach it — its column is derived from its children
231
- * instead. This is the edge where the first child of an Epic starts moving,
232
- * which is what puts the Epic on the board as In Progress with an owner.
233
- *
234
- * Best-effort by construction: the rollup never throws, and a container left
235
- * at a stale column must never cost the Story its init.
168
+ * Roll a container Epic's status up from its children (it carries no
169
+ * `agent::*` label of its own). Never throws.
236
170
  *
237
171
  * @param {object} provider
238
172
  * @param {number} storyId
@@ -252,11 +186,8 @@ async function rollUpContainerEpic(provider, storyId, config) {
252
186
  }
253
187
 
254
188
  /**
255
- * Undo this run's claim when provisioning fails after the early
256
- * `agent::executing` flip: revert the label to `agent::ready` and release the
257
- * lease, both best-effort. Without this a crashed init would strand the Story
258
- * as phantom-executing — claimed and labelled in-flight but with no live run —
259
- * which every other operator's probe would then withhold indefinitely.
189
+ * Best-effort revert of label and lease after a provisioning failure, so the
190
+ * Story is not stranded as phantom-executing (withheld by every probe).
260
191
  *
261
192
  * @param {object} provider
262
193
  * @param {number} storyId
@@ -287,22 +218,10 @@ async function rollbackClaimOnInitFailure(provider, storyId, config) {
287
218
  }
288
219
 
289
220
  /**
290
- * Decide how to seed the Story branch given local / remote presence. Pure and
291
- * exported for testing (Story #3483 AC3: an existing `story-<id>` branch must
292
- * be **reused**, never re-created — re-creating throws `branch already exists`).
293
- *
294
- * Delegates the (local, remote) decision to the shared `classifyBranchSeed`
295
- * classifier (Story #3513) so this path and the Epic-attached
296
- * `branch-initializer.js#planStoryBranchSeed` share one decision tree. The
297
- * shared classifier returns `'local'` for the local-present case; this path
298
- * names that outcome `'reuse'`.
221
+ * An existing local ref must be reused, never re-created (`git branch` throws).
299
222
  *
300
223
  * @param {{ localHas: boolean, remoteHas: boolean }} presence
301
224
  * @returns {'reuse'|'fetch'|'create'}
302
- * - `reuse` — a local ref already exists; the caller must not run
303
- * `git branch` (which would throw on the existing ref).
304
- * - `fetch` — only the remote ref exists; materialise the local ref.
305
- * - `create` — neither exists; branch from baseBranch.
306
225
  */
307
226
  export function decideStoryBranchSeed({ localHas, remoteHas }) {
308
227
  const action = classifyBranchSeed({ localHas, remoteHas });
@@ -310,22 +229,10 @@ export function decideStoryBranchSeed({ localHas, remoteHas }) {
310
229
  }
311
230
 
312
231
  /**
313
- * Reap previously-merged `story-*` branches before starting a new one, so
314
- * stale local + origin refs do not accumulate across runs. The sweep
315
- * excludes the current run's `storyBranch` and never blocks init: any
316
- * sweep failure is logged but does not throw.
317
- *
318
- * Story #2011 hardens this surface in two ways:
319
- * - Per-candidate protection: branches with unpushed work, dirty
320
- * worktrees, or still-open Story tickets are skipped (and listed
321
- * in `sweep.protected` for the operator).
322
- * - Cross-session lock: a single lockfile under `tempRoot` prevents
323
- * two concurrent `/single-story-deliver` invocations from racing.
324
- * Story #5112 made that lockfile shared with `boot-sweep.js` — the
325
- * other entry point into the same merged-branch reap — by routing
326
- * both through `resolveSweepLockPath`.
327
- *
328
- * Exported for testing.
232
+ * Reap merged `story-*` branches (excluding the current one). Never blocks
233
+ * init. Protected candidates (unpushed work, dirty worktree, open Story) are
234
+ * skipped; the lockfile is shared with `boot-sweep.js` via
235
+ * `resolveSweepLockPath` so concurrent reaps cannot race.
329
236
  */
330
237
  export async function reapMergedStoryBranches({
331
238
  cwd,
@@ -383,13 +290,8 @@ export async function reapMergedStoryBranches({
383
290
  }
384
291
 
385
292
  /**
386
- * Fetch remote refs, reap merged story branches, and fast-forward the local
387
- * base branch so new story branches seed from origin's tip. Exported for
388
- * testing (owns the fast-forward cascade).
389
- *
390
- * Routes the `origin` fetch through `cachedGitFetch` so concurrent Story
391
- * waves share a per-process fetch-coalescing window. Pass `fetchFn` to
392
- * inject a stub in tests without touching real git.
293
+ * Fetch, reap, and fast-forward the local base branch so new Story branches
294
+ * seed from origin's tip.
393
295
  *
394
296
  * @param {object} opts
395
297
  * @param {string} opts.cwd
@@ -400,9 +302,7 @@ export async function reapMergedStoryBranches({
400
302
  * @param {Function|undefined} opts.injectedSweep
401
303
  * @param {Function} opts.progress
402
304
  * @param {import('./lib/git/cached-fetch.js').FetchCache} [opts.fetchCache]
403
- * Override the module-level cache — used by tests that need a fresh, isolated
404
- * cache. Production callers omit this so all Stories in a wave share the
405
- * module singleton.
305
+ * Test override; production shares the module singleton.
406
306
  */
407
307
  export async function materializeBaseBranch({
408
308
  cwd,
@@ -435,8 +335,6 @@ export async function materializeBaseBranch({
435
335
  injectedSweep,
436
336
  });
437
337
 
438
- // Ensure baseBranch exists locally so we can branch from it. If only
439
- // remote-tracking is present, materialize the local ref.
440
338
  if (!branchExistsLocally(baseBranch, cwd)) {
441
339
  const r = gitSpawn(cwd, 'fetch', 'origin', `${baseBranch}:${baseBranch}`);
442
340
  if (r.status !== 0) {
@@ -447,11 +345,7 @@ export async function materializeBaseBranch({
447
345
  return;
448
346
  }
449
347
 
450
- // `git fetch origin` updates remote-tracking refs only; local `main` stays
451
- // at the pre-merge tip until fast-forwarded. Use the same helper as
452
- // `/git-cleanup --fast-forward-main` (checkout base + `merge --ff-only`) so
453
- // new `story-*` branches seed from origin's tip when the main checkout is
454
- // clean (Story #2744).
348
+ // `git fetch` leaves local base at the old tip until fast-forwarded.
455
349
  const ffPlan = planFastForward({ cwd, baseBranch });
456
350
  const ff = executeFastForward({
457
351
  cwd,
@@ -481,15 +375,8 @@ export async function materializeBaseBranch({
481
375
  }
482
376
 
483
377
  /**
484
- * Seed the Story branch from the base branch. Three cases, idempotent in all:
485
- * - already local → reuse (do NOT re-create an existing ref)
486
- * - remote only → fetch
487
- * - neither → create from baseBranch
488
- *
489
- * `cachedGitFetch(cwd, 'origin')` is assumed to have run before this call
490
- * (via `materializeBaseBranch`), so remote-tracking refs are authoritative.
491
- * Uses a local tracking-ref check rather than a network `ls-remote` round-trip.
492
- * Exported for testing (owns the seedAction switch + throws).
378
+ * Idempotent seed. Assumes `materializeBaseBranch` already fetched, so
379
+ * tracking refs are authoritative (no `ls-remote`).
493
380
  *
494
381
  * @param {object} opts
495
382
  * @param {string} opts.cwd
@@ -498,11 +385,7 @@ export async function materializeBaseBranch({
498
385
  * @param {Function} opts.progress
499
386
  */
500
387
  export function seedStoryBranch({ cwd, storyBranch, baseBranch, progress }) {
501
- // Standalone path: no concurrent creator to race, so create failures are
502
- // fatal (`swallowCreateRace: false`) and a failed fetch throws. The
503
- // seed-action switch shell is single-homed in `seedStoryBranchRef`
504
- // (Story #4255); this caller only supplies its `baseRef`, its git seams
505
- // bound to `cwd`, and its own log/error vocabulary.
388
+ // No concurrent creator to race here, so create failures are fatal.
506
389
  seedStoryBranchRef({
507
390
  storyBranch,
508
391
  baseRef: baseBranch,
@@ -523,9 +406,7 @@ export function seedStoryBranch({ cwd, storyBranch, baseBranch, progress }) {
523
406
  }
524
407
 
525
408
  /**
526
- * Provision a worktree (or check out the branch in single-tree mode).
527
- * Returns the resolved `workCwd`, `worktreeCreated`, and `installStatus`.
528
- * Exported for testing (owns the worktree/single-tree routing).
409
+ * Provision a worktree, or check out the branch in single-tree mode.
529
410
  *
530
411
  * @param {object} opts
531
412
  * @param {object} opts.runtime
@@ -567,16 +448,12 @@ export async function provisionWorktree({
567
448
  `${ensured.created ? '✨ Created' : '♻️ Reusing'} worktree: ${ensured.path}`,
568
449
  );
569
450
  } else {
570
- // Single-tree mode: check out the branch on the main checkout.
571
451
  gitSync(cwd, 'checkout', storyBranch);
572
452
  }
573
453
 
574
454
  return { workCwd, worktreeCreated, installStatus };
575
455
  }
576
456
 
577
- /**
578
- * Initialize a standalone Story. Exported for testing.
579
- */
580
457
  export async function runSingleStoryInit({
581
458
  storyId: storyIdParam,
582
459
  dryRun: dryRunParam,
@@ -584,15 +461,9 @@ export async function runSingleStoryInit({
584
461
  injectedProvider,
585
462
  injectedConfig,
586
463
  injectedSweep,
587
- // Story #3483: lets tests drive the lease preflight deterministically.
588
- // `injectedAcquireLease` swaps the guard. `steal` forcibly transfers a
589
- // foreign claim — the lease fails closed (audit #3513), so a foreign
590
- // assignee blocks unless stolen.
591
464
  injectedAcquireLease,
592
465
  steal = false,
593
466
  injectedVerifyRemote,
594
- // Story #4620: swap the git-touching provisioning steps so the
595
- // early-flip-then-rollback ordering is unit-testable without a real worktree.
596
467
  injectedMaterialize = materializeBaseBranch,
597
468
  injectedSeedBranch = seedStoryBranch,
598
469
  injectedProvisionWorktree = provisionWorktree,
@@ -607,10 +478,8 @@ export async function runSingleStoryInit({
607
478
  : parseSprintArgs();
608
479
  const { storyId, dryRun } = parsed;
609
480
  const cwd = path.resolve(cwdParam ?? parsed.cwd ?? PROJECT_ROOT);
610
- // `--steal` is not part of the shared parseSprintArgs surface; read it from
611
- // argv on the CLI path (the explicit `steal` param wins for programmatic /
612
- // test callers). The standalone lease fails closed on a foreign assignee
613
- // (audit #3513), so `--steal` is the operator's forcible-transfer override.
481
+ // `--steal` is outside parseSprintArgs; the lease fails closed on a foreign
482
+ // assignee, so this is the operator's forcible-transfer override.
614
483
  const stealRequested =
615
484
  steal || (storyIdParam === undefined && process.argv.includes('--steal'));
616
485
 
@@ -635,12 +504,9 @@ export async function runSingleStoryInit({
635
504
  );
636
505
  progress('INIT', `Initializing standalone Story #${storyId}...`);
637
506
 
638
- // Issue #4483 — deterministic remote evidence at the v2 `/mandrel-deliver` entry
639
- // seam (`single-story-init.js`). The
640
- // probe is read-only, so it runs under --dry-run too. The CLI records
641
- // the fact; the workflow owns the `agent::blocked` transition on
642
- // `remoteVerified: false` — inline delivery to local `main` is never a
643
- // sanctioned fallback.
507
+ // Read-only, so it runs under --dry-run too. The workflow owns the
508
+ // `agent::blocked` transition on `remoteVerified: false`; inline delivery to
509
+ // local `main` is never a fallback.
644
510
  const remote = (injectedVerifyRemote ?? verifyRemote)({ cwd });
645
511
  progress(
646
512
  'REMOTE',
@@ -663,12 +529,7 @@ export async function runSingleStoryInit({
663
529
  `Standalone Story: "${story.title}" → branch ${storyBranch} from ${baseBranch}.`,
664
530
  );
665
531
 
666
- // Story #3483 — lease preflight. Take an exclusive claim on the Story
667
- // ticket before any git mutation so two concurrent standalone runs cannot
668
- // both drive the same Story. The guard fails closed (audit #3513): a
669
- // foreign assignee aborts init (naming the current owner) unless --steal
670
- // forcibly transfers it. Unclaimed / self-held claims proceed. Skipped
671
- // under --dry-run (no assignee mutation).
532
+ // Lease before any git mutation so two runs cannot drive one Story.
672
533
  let workCwd = cwd;
673
534
  let worktreeCreated = false;
674
535
  let installStatus = { status: 'skipped', reason: 'dry-run' };
@@ -686,9 +547,6 @@ export async function runSingleStoryInit({
686
547
  `🔒 Story #${storyId} lease ${lease.reason} (owner=@${lease.owner}).`,
687
548
  );
688
549
 
689
- // Defense in depth: refuse a Story already labelled agent::executing that
690
- // this run does not hold (label/assignee drift the lease alone misses).
691
- // Runs before any git mutation; releases the just-taken lease on refusal.
692
550
  await assertNotForeignExecuting({
693
551
  story,
694
552
  lease,
@@ -698,20 +556,12 @@ export async function runSingleStoryInit({
698
556
  config,
699
557
  });
700
558
 
701
- // Publish the claim as agent::executing BEFORE the multi-minute worktree
702
- // install (not after), so a concurrent operator's probe sees it during the
703
- // install window instead of reading agent::ready and double-dispatching.
559
+ // Before the install, so a concurrent probe cannot double-dispatch.
704
560
  await flipStoryToExecuting(provider, storyId, story);
705
561
 
706
- // Story #5205 — the child is now in flight, so any container Epic listing
707
- // it is too. Fired here rather than after provisioning so the board shows
708
- // In Progress for the whole install window, and after the flip so the
709
- // rollup reads the state it derives from.
562
+ // After the flip (the rollup reads it), before the install window.
710
563
  await rollUpContainerEpic(provider, storyId, config);
711
564
 
712
- // Any failure from here on leaves a claimed, executing-labelled Story with
713
- // no live run behind it — revert the label and release the lease so the
714
- // Story is not stranded as phantom-executing.
715
565
  try {
716
566
  await injectedMaterialize({
717
567
  cwd,
@@ -751,10 +601,7 @@ export async function runSingleStoryInit({
751
601
  standalone: true,
752
602
  storyBranch,
753
603
  baseBranch,
754
- // The write half of the run-scoped config pin. `baseBranch` above is the
755
- // legacy field close still reads as a fallback; this block is the
756
- // registry-driven form a second run-scoped key joins without a second
757
- // mechanism (`lib/orchestration/run-scoped-config.js`).
604
+ // Write half of the run-scoped config pin; `baseBranch` is close's fallback.
758
605
  runScopedConfig: pinRunScopedConfig(config),
759
606
  storyTitle: story.title,
760
607
  worktreeEnabled: runtime.worktreeEnabled,
@@ -764,21 +611,12 @@ export async function runSingleStoryInit({
764
611
  dependenciesInstalled,
765
612
  installFailed: installStatus.status === 'failed',
766
613
  dryRun,
767
- // Issue #4483 — verified remote evidence for the orchestrating agent.
768
614
  remoteVerified: remote.remoteVerified,
769
615
  remoteProbe: { remoteUrl: remote.remoteUrl, detail: remote.detail },
770
616
  };
771
617
 
772
- // Story #5343 — init posts no `story-init` comment. It was one GitHub write
773
- // per Story restating what its own envelope already carries; the envelope is
774
- // on stdout and on disk (below), `deliver-recover.js` classifies state from
775
- // labels, the PR probe and disk artifacts, and `run-scoped-config.js` reads
776
- // the base-branch pin off that same envelope. The `agent::executing` flip
777
- // above is what makes the claim visible during the install window.
778
- //
779
- // Story #4685 — route the full result to a temp log and emit a single-line
780
- // summary carrying the fields the orchestrating agent acts on (workCwd,
781
- // remoteVerified). The `## Spec` names this the hot-path stdout to quiet.
618
+ // The envelope (stdout + disk) is the only record; no ticket comment. Full
619
+ // result goes to a temp log, stdout gets the fields the caller acts on.
782
620
  emitTerseResult({
783
621
  label: 'STORY INIT RESULT',
784
622
  result,