mandrel 2.60.0 → 2.62.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 (662) 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/merge-queue.js +158 -0
  318. package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
  319. package/.agents/scripts/lib/orchestration/plan-context.js +52 -303
  320. package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +22 -79
  321. package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +5 -31
  322. package/.agents/scripts/lib/orchestration/plan-metrics.js +29 -108
  323. package/.agents/scripts/lib/orchestration/plan-navigation.js +8 -27
  324. package/.agents/scripts/lib/orchestration/plan-persist/acceptance-handle-repair.js +12 -49
  325. package/.agents/scripts/lib/orchestration/plan-persist/audit-provenance.js +18 -73
  326. package/.agents/scripts/lib/orchestration/plan-persist/changes-repair.js +14 -78
  327. package/.agents/scripts/lib/orchestration/plan-persist/cross-plan-links.js +6 -30
  328. package/.agents/scripts/lib/orchestration/plan-persist/epic-adoption.js +14 -65
  329. package/.agents/scripts/lib/orchestration/plan-persist/epic-ops.js +21 -76
  330. package/.agents/scripts/lib/orchestration/plan-persist/external-deps.js +6 -43
  331. package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +14 -68
  332. package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +9 -41
  333. package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +49 -248
  334. package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
  335. package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +85 -368
  336. package/.agents/scripts/lib/orchestration/plan-persist/summary.js +8 -38
  337. package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +30 -190
  338. package/.agents/scripts/lib/orchestration/plan-persist/wave-collision-gate.js +9 -49
  339. package/.agents/scripts/lib/orchestration/plan-persist/wave-serialisation.js +7 -28
  340. package/.agents/scripts/lib/orchestration/plan-reachability.js +13 -42
  341. package/.agents/scripts/lib/orchestration/plan-run-labels/reap.js +16 -91
  342. package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +16 -54
  343. package/.agents/scripts/lib/orchestration/plan-text-hygiene.js +10 -52
  344. package/.agents/scripts/lib/orchestration/planning/authoring-context.js +14 -109
  345. package/.agents/scripts/lib/orchestration/planning/memory-pool-advisory.js +11 -83
  346. package/.agents/scripts/lib/orchestration/pr-watch.js +48 -306
  347. package/.agents/scripts/lib/orchestration/project-meta-cache.js +15 -80
  348. package/.agents/scripts/lib/orchestration/project-meta-resolver.js +10 -51
  349. package/.agents/scripts/lib/orchestration/reassert-status-column.js +12 -76
  350. package/.agents/scripts/lib/orchestration/remote-verifier.js +12 -36
  351. package/.agents/scripts/lib/orchestration/resolve-stories.js +33 -164
  352. package/.agents/scripts/lib/orchestration/retro-proposals.js +66 -361
  353. package/.agents/scripts/lib/orchestration/review-base-ref.js +9 -43
  354. package/.agents/scripts/lib/orchestration/review-depth.js +12 -94
  355. package/.agents/scripts/lib/orchestration/review-providers/codex.js +10 -111
  356. package/.agents/scripts/lib/orchestration/review-providers/degraded-gates.js +13 -71
  357. package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +7 -51
  358. package/.agents/scripts/lib/orchestration/review-providers/mi-exemptions.js +8 -53
  359. package/.agents/scripts/lib/orchestration/review-providers/native.js +30 -214
  360. package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +7 -52
  361. package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +4 -33
  362. package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +11 -71
  363. package/.agents/scripts/lib/orchestration/review-providers/scoped-lint.js +19 -131
  364. package/.agents/scripts/lib/orchestration/review-providers/security-review.js +6 -89
  365. package/.agents/scripts/lib/orchestration/review-providers/types.js +26 -56
  366. package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +3 -46
  367. package/.agents/scripts/lib/orchestration/run-epilogue.js +40 -199
  368. package/.agents/scripts/lib/orchestration/run-scoped-config.js +13 -81
  369. package/.agents/scripts/lib/orchestration/single-story-close/close-note.js +7 -34
  370. package/.agents/scripts/lib/orchestration/single-story-close/failed-terminal.js +16 -89
  371. package/.agents/scripts/lib/orchestration/single-story-close/gate-log.js +18 -109
  372. package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +190 -280
  373. package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +18 -80
  374. package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +103 -97
  375. package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +8 -64
  376. package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +183 -485
  377. package/.agents/scripts/lib/orchestration/single-story-close/phases/conventional-subject.js +30 -134
  378. package/.agents/scripts/lib/orchestration/single-story-close/phases/graphql-preflight.js +9 -50
  379. package/.agents/scripts/lib/orchestration/single-story-close/phases/lock-wait-pending.js +49 -0
  380. package/.agents/scripts/lib/orchestration/single-story-close/phases/normalize-pr-title.js +13 -86
  381. package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +20 -95
  382. package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +46 -203
  383. package/.agents/scripts/lib/orchestration/single-story-close/phases/pre-gate-steps.js +8 -50
  384. package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +12 -83
  385. package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +6 -39
  386. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +1 -6
  387. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-outcome.js +4 -28
  388. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-override.js +6 -51
  389. package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +6 -34
  390. package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +23 -121
  391. package/.agents/scripts/lib/orchestration/single-story-close/runner.js +110 -290
  392. package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +15 -69
  393. package/.agents/scripts/lib/orchestration/story-body-gate.js +4 -23
  394. package/.agents/scripts/lib/orchestration/story-close/baseline-upward-writeback.js +50 -179
  395. package/.agents/scripts/lib/orchestration/story-close/context-budget-writeback.js +11 -41
  396. package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +23 -311
  397. package/.agents/scripts/lib/orchestration/story-close/phases/local-lens-review.js +22 -147
  398. package/.agents/scripts/lib/orchestration/story-close/phases/review-core.js +16 -67
  399. package/.agents/scripts/lib/orchestration/story-deliver-terminal-schema.js +12 -68
  400. package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +42 -201
  401. package/.agents/scripts/lib/orchestration/story-follow-ups.js +43 -245
  402. package/.agents/scripts/lib/orchestration/story-init-envelope.js +4 -23
  403. package/.agents/scripts/lib/orchestration/story-init-remote.js +2 -6
  404. package/.agents/scripts/lib/orchestration/story-reachability.js +3 -23
  405. package/.agents/scripts/lib/orchestration/task-body-validator.js +12 -126
  406. package/.agents/scripts/lib/orchestration/ticket-lease.js +28 -131
  407. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +15 -149
  408. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +5 -33
  409. package/.agents/scripts/lib/orchestration/ticket-validator.js +39 -181
  410. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
  411. package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -250
  412. package/.agents/scripts/lib/orchestration/ticketing/state.js +14 -68
  413. package/.agents/scripts/lib/orchestration/ticketing/transition.js +46 -263
  414. package/.agents/scripts/lib/orchestration/ticketing.js +2 -26
  415. package/.agents/scripts/lib/orchestration/verify-credit.js +18 -79
  416. package/.agents/scripts/lib/orchestration/worktree-dirty.js +5 -30
  417. package/.agents/scripts/lib/path-security.js +3 -6
  418. package/.agents/scripts/lib/plan-phase-cleanup.js +9 -49
  419. package/.agents/scripts/lib/preflight-runner.js +13 -69
  420. package/.agents/scripts/lib/process-group.js +143 -0
  421. package/.agents/scripts/lib/project-root.js +2 -8
  422. package/.agents/scripts/lib/provider-factory.js +2 -25
  423. package/.agents/scripts/lib/qa/console-allowlist.js +10 -59
  424. package/.agents/scripts/lib/qa/qa-session.js +15 -69
  425. package/.agents/scripts/lib/qa/redact-evidence.js +18 -129
  426. package/.agents/scripts/lib/qa/resolve-qa-contract.js +26 -135
  427. package/.agents/scripts/lib/qa/resolve-selection.js +16 -84
  428. package/.agents/scripts/lib/reserved-test-ids.js +9 -47
  429. package/.agents/scripts/lib/runtime-deps/dep-resolution.js +13 -53
  430. package/.agents/scripts/lib/runtime-deps/ensure-installed.js +10 -44
  431. package/.agents/scripts/lib/runtime-deps/manifest.js +10 -30
  432. package/.agents/scripts/lib/runtime-deps/parser-major.js +15 -51
  433. package/.agents/scripts/lib/runtime-deps/preflight.js +4 -22
  434. package/.agents/scripts/lib/runtime-deps/scan-imports.js +11 -55
  435. package/.agents/scripts/lib/signals/detectors/common.js +12 -38
  436. package/.agents/scripts/lib/signals/index.js +2 -19
  437. package/.agents/scripts/lib/signals/schema.js +14 -109
  438. package/.agents/scripts/lib/signals/write.js +2 -11
  439. package/.agents/scripts/lib/single-story/confirm-merge.js +31 -72
  440. package/.agents/scripts/lib/single-story/story-merged-notify.js +8 -49
  441. package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +4 -26
  442. package/.agents/scripts/lib/single-story-sweep/protection.js +13 -100
  443. package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +60 -258
  444. package/.agents/scripts/lib/single-story-sweep.js +14 -97
  445. package/.agents/scripts/lib/skills/parse-skill.js +13 -59
  446. package/.agents/scripts/lib/skills/skills-index.js +8 -29
  447. package/.agents/scripts/lib/skills/walk-skill-files.js +17 -78
  448. package/.agents/scripts/lib/source-extensions.js +11 -42
  449. package/.agents/scripts/lib/source-text/strip-js-comments.js +8 -41
  450. package/.agents/scripts/lib/stdio-flush.js +9 -36
  451. package/.agents/scripts/lib/story-adjacency.js +8 -40
  452. package/.agents/scripts/lib/story-body/body-format-lints.js +22 -83
  453. package/.agents/scripts/lib/story-body/footer-block.js +11 -44
  454. package/.agents/scripts/lib/story-body/story-body.js +83 -358
  455. package/.agents/scripts/lib/temp-retention.js +42 -143
  456. package/.agents/scripts/lib/templates/decomposer-prompts.js +11 -65
  457. package/.agents/scripts/lib/test-env.js +12 -65
  458. package/.agents/scripts/lib/test-run-credit.js +10 -65
  459. package/.agents/scripts/lib/test-runner-contract.js +19 -74
  460. package/.agents/scripts/lib/test-temp.js +38 -184
  461. package/.agents/scripts/lib/test-tiers.js +12 -96
  462. package/.agents/scripts/lib/ticket-body-sections.js +21 -96
  463. package/.agents/scripts/lib/transpile.js +15 -74
  464. package/.agents/scripts/lib/util/concurrent-map.js +6 -25
  465. package/.agents/scripts/lib/util/parse-id-list.js +8 -34
  466. package/.agents/scripts/lib/util/poll-loop.js +8 -28
  467. package/.agents/scripts/lib/util/with-timeout.js +2 -11
  468. package/.agents/scripts/lib/validation-evidence.js +21 -96
  469. package/.agents/scripts/lib/wave-runner/footprint.js +17 -70
  470. package/.agents/scripts/lib/wave-runner/live-probe.js +53 -221
  471. package/.agents/scripts/lib/wave-runner/ready-set.js +72 -301
  472. package/.agents/scripts/lib/workers/crap-worker.js +11 -64
  473. package/.agents/scripts/lib/workers/maintainability-report-worker.js +8 -45
  474. package/.agents/scripts/lib/workers/maintainability-worker.js +5 -21
  475. package/.agents/scripts/lib/workers/serve-worker-messages.js +2 -18
  476. package/.agents/scripts/lib/workflow-closure.js +22 -105
  477. package/.agents/scripts/lib/workspace-provisioner.js +16 -54
  478. package/.agents/scripts/lib/worktree/git-hooks.js +15 -60
  479. package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +20 -60
  480. package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +10 -62
  481. package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +22 -86
  482. package/.agents/scripts/lib/worktree/lifecycle/reap.js +24 -126
  483. package/.agents/scripts/lib/worktree/lifecycle-manager.js +2 -20
  484. package/.agents/scripts/lib/worktree/node-modules-strategy.js +46 -180
  485. package/.agents/scripts/lib/worktree-manager.js +15 -40
  486. package/.agents/scripts/lint-issue-body.js +12 -68
  487. package/.agents/scripts/mandrel-update-preflight.js +10 -70
  488. package/.agents/scripts/merge-baseline.js +30 -104
  489. package/.agents/scripts/nav-registry-diff.js +22 -108
  490. package/.agents/scripts/notify.js +12 -69
  491. package/.agents/scripts/plan-context.js +27 -111
  492. package/.agents/scripts/plan-critics.js +12 -66
  493. package/.agents/scripts/plan-persist.js +31 -148
  494. package/.agents/scripts/plan-run-epilogue.js +11 -37
  495. package/.agents/scripts/pr-watch-with-update.js +76 -267
  496. package/.agents/scripts/providers/github/auth.js +3 -8
  497. package/.agents/scripts/providers/github/blocked-by-add.js +14 -61
  498. package/.agents/scripts/providers/github/board-add.js +5 -21
  499. package/.agents/scripts/providers/github/branch-protection.js +11 -43
  500. package/.agents/scripts/providers/github/cache.js +2 -14
  501. package/.agents/scripts/providers/github/comments.js +7 -40
  502. package/.agents/scripts/providers/github/compose.js +3 -19
  503. package/.agents/scripts/providers/github/errors.js +22 -125
  504. package/.agents/scripts/providers/github/issues.js +31 -123
  505. package/.agents/scripts/providers/github/labels.js +24 -124
  506. package/.agents/scripts/providers/github/mappers.js +5 -27
  507. package/.agents/scripts/providers/github/merge-methods.js +3 -22
  508. package/.agents/scripts/providers/github/project-board.js +2 -17
  509. package/.agents/scripts/providers/github/projects-v2-graphql.js +3 -6
  510. package/.agents/scripts/providers/github/request-helpers.js +5 -32
  511. package/.agents/scripts/providers/github/search-budget.js +9 -39
  512. package/.agents/scripts/providers/github/search-query.js +5 -26
  513. package/.agents/scripts/providers/github/sub-issue-add.js +15 -65
  514. package/.agents/scripts/providers/github/sub-issues.js +7 -36
  515. package/.agents/scripts/providers/github/tickets.js +32 -134
  516. package/.agents/scripts/providers/github.js +18 -59
  517. package/.agents/scripts/prune-plan-run-labels.js +12 -46
  518. package/.agents/scripts/quality-preview.js +35 -220
  519. package/.agents/scripts/resolve-doc-tiers.js +3 -26
  520. package/.agents/scripts/resolve-stories.js +16 -67
  521. package/.agents/scripts/resync-status-column.js +6 -25
  522. package/.agents/scripts/run-tests.js +29 -104
  523. package/.agents/scripts/single-story-close.js +23 -135
  524. package/.agents/scripts/single-story-confirm-merge.js +32 -139
  525. package/.agents/scripts/single-story-init.js +47 -209
  526. package/.agents/scripts/stories-wave-tick.js +102 -472
  527. package/.agents/scripts/sync-agentrc.js +3 -21
  528. package/.agents/scripts/sync-claude-agents.js +9 -55
  529. package/.agents/scripts/sync-claude-commands.js +20 -110
  530. package/.agents/scripts/test-wrapper.js +6 -43
  531. package/.agents/scripts/update-coverage-baseline.js +5 -22
  532. package/.agents/scripts/update-crap-baseline.js +7 -30
  533. package/.agents/scripts/update-duplication-baseline.js +16 -92
  534. package/.agents/scripts/update-maintainability-baseline.js +8 -62
  535. package/.agents/scripts/update-ticket-state.js +1 -7
  536. package/.agents/scripts/validate-skills.js +6 -26
  537. package/.agents/templates/agent-protocol.md +2 -2
  538. package/.agents/templates/docs/audit-sweep-runbook.md +3 -4
  539. package/.agents/workflows/audit-accessibility.md +4 -7
  540. package/.agents/workflows/audit-adrs.md +3 -6
  541. package/.agents/workflows/audit-architecture.md +3 -11
  542. package/.agents/workflows/audit-baselines.md +6 -9
  543. package/.agents/workflows/audit-clean-code.md +8 -12
  544. package/.agents/workflows/audit-data-model.md +3 -7
  545. package/.agents/workflows/audit-dependencies.md +4 -7
  546. package/.agents/workflows/audit-devops.md +4 -8
  547. package/.agents/workflows/audit-documentation.md +1 -4
  548. package/.agents/workflows/audit-mobile.md +4 -7
  549. package/.agents/workflows/audit-navigability.md +3 -6
  550. package/.agents/workflows/audit-performance.md +2 -4
  551. package/.agents/workflows/audit-privacy.md +4 -7
  552. package/.agents/workflows/audit-quality.md +4 -7
  553. package/.agents/workflows/audit-security.md +4 -7
  554. package/.agents/workflows/audit-seo.md +4 -7
  555. package/.agents/workflows/audit-sre.md +4 -7
  556. package/.agents/workflows/audit-to-stories.md +17 -30
  557. package/.agents/workflows/audit-ux-ui.md +4 -7
  558. package/.agents/workflows/helpers/audit-lens-core.md +1 -1
  559. package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
  560. package/.agents/workflows/helpers/deliver-digest.md +6 -4
  561. package/.agents/workflows/helpers/deliver-reference.md +114 -188
  562. package/.agents/workflows/helpers/deliver-story-reference.md +189 -533
  563. package/.agents/workflows/helpers/plan-reference.md +86 -139
  564. package/.agents/workflows/helpers/qa-core.md +12 -0
  565. package/.agents/workflows/memory-consolidate.md +1 -1
  566. package/.agents/workflows/qa-assist.md +27 -71
  567. package/.agents/workflows/qa-explore.md +19 -59
  568. package/.agents/workflows/qa-run.md +11 -33
  569. package/README.md +1 -1
  570. package/bin/mandrel.js +5 -46
  571. package/bin/postinstall.js +18 -107
  572. package/docs/CHANGELOG.md +32 -0
  573. package/lib/cli/doctor.js +11 -71
  574. package/lib/cli/init.js +26 -165
  575. package/lib/cli/migrate.js +5 -64
  576. package/lib/cli/registry.js +84 -467
  577. package/lib/cli/sync-agents.js +4 -64
  578. package/lib/cli/sync-commands.js +11 -64
  579. package/lib/cli/sync.js +34 -213
  580. package/lib/cli/uninstall.js +40 -219
  581. package/lib/cli/update.js +105 -661
  582. package/lib/cli/version-check.js +8 -72
  583. package/lib/cli/version-helpers.js +14 -87
  584. package/lib/migrations/helpers/retire-agentrc-key.js +11 -52
  585. package/lib/migrations/index.js +15 -92
  586. package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +2 -15
  587. package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +1 -13
  588. package/lib/migrations/steps/2.11.0-retire-max-seed-words.js +2 -15
  589. package/lib/migrations/steps/2.2.0-retire-epic-ac-tags.js +9 -38
  590. package/lib/migrations/steps/2.20.0-retire-codebase-snapshot.js +1 -13
  591. package/lib/migrations/steps/2.32.0-retire-lint-baseline-command.js +2 -27
  592. package/lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js +2 -23
  593. package/lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js +2 -27
  594. package/lib/migrations/steps/2.60.0-retire-audit-results-autofile.js +2 -21
  595. package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
  596. package/package.json +16 -14
  597. package/.agents/docs/SDLC.md +0 -590
  598. package/.agents/docs/quality-gates.md +0 -1183
  599. package/.agents/rules/known-tooling-behavior.md +0 -200
  600. package/.agents/rules/orchestration-error-handling.md +0 -61
  601. package/.agents/rules/test-seams.md +0 -59
  602. package/.agents/schemas/baselines/lighthouse.schema.json +0 -59
  603. package/.agents/schemas/baselines/lint.schema.json +0 -47
  604. package/.agents/scripts/check-action-pinning.js +0 -260
  605. package/.agents/scripts/check-audit-attribution.js +0 -302
  606. package/.agents/scripts/check-baseline-drift.js +0 -211
  607. package/.agents/scripts/check-baseline-scope.js +0 -362
  608. package/.agents/scripts/check-generated-validator.js +0 -202
  609. package/.agents/scripts/check-knip-entries.js +0 -159
  610. package/.agents/scripts/check-lifecycle-lint.js +0 -294
  611. package/.agents/scripts/check-pinned-override-notes.js +0 -102
  612. package/.agents/scripts/check-schema-references.js +0 -368
  613. package/.agents/scripts/check-test-portability.js +0 -512
  614. package/.agents/scripts/check-workflow-citations.js +0 -218
  615. package/.agents/scripts/check-workflow-cli-lint.js +0 -299
  616. package/.agents/scripts/check-workflow-timeouts.js +0 -291
  617. package/.agents/scripts/install-matrix-assert.js +0 -326
  618. package/.agents/scripts/lib/audit-advisories.js +0 -195
  619. package/.agents/scripts/lib/audit-attribution.js +0 -134
  620. package/.agents/scripts/lib/baselines/drift-detector.js +0 -351
  621. package/.agents/scripts/lib/baselines/kinds/lighthouse.js +0 -87
  622. package/.agents/scripts/lib/baselines/kinds/lint.js +0 -184
  623. package/.agents/scripts/lib/baselines/orphan-pruner.js +0 -233
  624. package/.agents/scripts/lib/baselines/scope-assert.js +0 -223
  625. package/.agents/scripts/lib/baselines/scope-inventory.js +0 -314
  626. package/.agents/scripts/lib/c8-cli-path.js +0 -21
  627. package/.agents/scripts/lib/config/gates/lighthouse.schema.js +0 -51
  628. package/.agents/scripts/lib/config/gates/lint.schema.js +0 -18
  629. package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +0 -70
  630. package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +0 -284
  631. package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +0 -80
  632. package/.agents/scripts/lib/dynamic-workflow/degraded-coverage.js +0 -81
  633. package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +0 -87
  634. package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +0 -74
  635. package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +0 -90
  636. package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +0 -43
  637. package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +0 -83
  638. package/.agents/scripts/lib/fs-walk.js +0 -52
  639. package/.agents/scripts/lib/knip-config-resolver.js +0 -181
  640. package/.agents/scripts/lib/knip-entry-sync.js +0 -452
  641. package/.agents/scripts/lib/pinned-override-notes.js +0 -88
  642. package/.agents/scripts/lib/pinned-override-resolve.js +0 -212
  643. package/.agents/scripts/lib/test-isolate/cli-options.js +0 -93
  644. package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +0 -52
  645. package/.agents/scripts/lib/test-isolate/list-files.js +0 -90
  646. package/.agents/scripts/lib/test-isolate/parse-tap.js +0 -75
  647. package/.agents/scripts/lib/test-isolate/progress-log.js +0 -45
  648. package/.agents/scripts/lib/test-isolate/render-report.js +0 -97
  649. package/.agents/scripts/lib/test-isolate/run-isolate.js +0 -87
  650. package/.agents/scripts/lib/test-isolate/runner.js +0 -483
  651. package/.agents/scripts/lib/test-profile/parse-tap.js +0 -136
  652. package/.agents/scripts/lib/test-profile/render-report.js +0 -45
  653. package/.agents/scripts/lint-label-vocabulary.js +0 -214
  654. package/.agents/scripts/post-structured-comment.js +0 -127
  655. package/.agents/scripts/provision-git-hooks.js +0 -85
  656. package/.agents/scripts/prune-baseline-orphans.js +0 -181
  657. package/.agents/scripts/run-coverage.js +0 -197
  658. package/.agents/scripts/run-lint.js +0 -133
  659. package/.agents/scripts/run-test-profile.js +0 -129
  660. package/.agents/scripts/run-verify.js +0 -125
  661. package/.agents/scripts/test-isolate.js +0 -55
  662. package/.agents/scripts/update-dead-exports-baseline.js +0 -321
@@ -1,18 +1,7 @@
1
1
  /* node:coverage ignore file */
2
2
  /**
3
- * agents-bootstrap-github — Idempotent Label & Field Setup
4
- *
5
- * Creates the required label taxonomy and project board custom fields
6
- * for the v5 Story-centric flow on a target GitHub repo. Idempotent —
7
- * skips resources that already exist.
8
- *
9
- * Usage:
10
- * node .agents/scripts/agents-bootstrap-github.js
11
- *
12
- * Reads the canonical config from .agentrc.json via the config resolver,
13
- * then uses the provider factory to instantiate the correct provider.
14
- *
15
- * @see docs/v5-implementation-plan.md Sprint 1C
3
+ * agents-bootstrap-github — idempotent GitHub-side setup: label taxonomy,
4
+ * optional project board, branch protection, merge methods.
16
5
  */
17
6
 
18
7
  import { applyBranchProtection } from './lib/bootstrap/branch-protection.js';
@@ -51,14 +40,8 @@ const PROJECTS_DOC_POINTER =
51
40
  'Configure the board views manually in the GitHub Projects UI.';
52
41
 
53
42
  /**
54
- * Detect that an error is a not-found / 404 signal across the surfaces
55
- * the provider can emit. The `gh-exec` classifier wraps the CLI's
56
- * "could not resolve to a" / "HTTP 404" / "not found" stderr in a
57
- * `GhNotFoundError` whose message is the literal string
58
- * `gh-exec: resource not found` — the `'404'` substring is absent. The
59
- * legacy bespoke-client path produced `failed (404):` messages. Match
60
- * both so a legitimate fresh-repo run (issue #1 doesn't exist yet)
61
- * doesn't fatal-fail the preflight.
43
+ * Not-found across both error shapes (`GhNotFoundError` carries no `404`
44
+ * substring), so a fresh repo with no issue 1 passes the preflight.
62
45
  */
63
46
  function isApiAccessNotFoundError(err) {
64
47
  if (!err) return false;
@@ -79,8 +62,7 @@ async function verifyApiAccess(provider) {
79
62
  try {
80
63
  await provider.getTicket(1);
81
64
  } catch (err) {
82
- // Not-found is fine — API reachable, issue #1 doesn't exist on the
83
- // target repo. Anything else (auth, scope, transport) is fatal.
65
+ // Not-found means the API is reachable; anything else is fatal.
84
66
  if (!isApiAccessNotFoundError(err)) {
85
67
  throw new Error(
86
68
  `[Bootstrap] API access verification failed: ${err.message}`,
@@ -154,15 +136,9 @@ async function ensureStatusField(provider, log) {
154
136
  }
155
137
 
156
138
  /**
157
- * Audit the project's built-in workflows and, when explicitly opted-in
158
- * via `--reap-conflicting-workflows`, delete the ones that race against
159
- * the orchestrator's `ColumnSync` writes. Default behaviour is
160
- * advisory: warn loudly with the operator-driven remediation hint, do
161
- * not mutate. Story #2845.
162
- *
163
- * Returns a structured envelope the bootstrap summary renders, even
164
- * when the audit was skipped (no projectId) so callers don't need a
165
- * separate "did this run" guard.
139
+ * Audit the board's built-in workflows that race `ColumnSync` (e.g. "Pull
140
+ * request merged" rewriting Status); warn by default, delete only under
141
+ * `reap` — the GraphQL delete is irreversible. Always returns an envelope.
166
142
  *
167
143
  * @param {object} provider
168
144
  * @param {number} projectNumber
@@ -233,26 +209,10 @@ async function ensureProjectFields(provider, project, log) {
233
209
  }
234
210
 
235
211
  /**
236
- * Run the idempotent bootstrap sequence.
237
- *
238
- * Accepts the canonical resolved config (output of `resolveConfig()` —
239
- * `config.github` holds the GitHub provider block). Epic #2880 removed the
240
- * legacy shim parameters; see `.agents/rules/git-conventions-reference.md#contract-cutovers-—-no-shim-layer`.
241
- *
242
- * Consent-first install (Story #3526, Feature #3515, Epic #3438): every
243
- * mutation this function performs — labels, Projects V2, branch protection,
244
- * merge methods — is the irreversible `github-admin` phase group from the
245
- * mutation manifest. The whole sequence is now **explicit opt-in**: unless
246
- * `opts.githubAdminApproved === true`, `runBootstrap` short-circuits before
247
- * touching the provider and issues **zero** GitHub mutations. This is the
248
- * boundary-level enforcement of the consent signal the `bootstrap.js`
249
- * orchestrator threads from `parseAndValidate` (interactive operator
250
- * confirmation, `--assume-yes`, or `--approve-github-admin`) down through
251
- * `executeGithubBootstrap`: a direct caller cannot silently reconfigure a
252
- * repo by skipping that consent. Even additive branch-protection /
253
- * merge-method changes that
254
- * previously applied without a prompt are gated — they are enumerated in the
255
- * manifest's `github-admin` group and only land once that group is approved.
212
+ * Run the idempotent bootstrap sequence. Every mutation here is the
213
+ * irreversible `github-admin` phase group, so this is the default-deny
214
+ * boundary: unless `opts.githubAdminApproved === true` it returns before
215
+ * constructing the provider — zero mutations, zero network I/O.
256
216
  *
257
217
  * @param {object} config - Resolved config wrapper with a `github` block.
258
218
  * @param {{
@@ -265,19 +225,10 @@ async function ensureProjectFields(provider, project, log) {
265
225
  * githubAdminApproved?: boolean,
266
226
  * withProjectBoard?: boolean,
267
227
  * isTTY?: boolean,
268
- * }} [opts] - `githubAdminApproved` MUST be `true` for any GitHub mutation to
269
- * occur; any other value (absent / `false`) is treated as "not approved"
270
- * and the run is a verified no-op.
271
- * `withProjectBoard` (default `false`) — opt-in for Projects V2 board,
272
- * Status field, custom fields, and workflow audit. When absent or `false`,
273
- * the board decoration is skipped and only labels + branch protection +
274
- * merge methods are provisioned.
228
+ * }} [opts] - `withProjectBoard` opts into the board, its fields and the
229
+ * workflow audit.
275
230
  */
276
231
  export async function runBootstrap(config, opts = {}) {
277
- // Explicit opt-in gate (Story #3526). Default-deny: absent or non-`true`
278
- // approval issues zero GitHub mutations and returns a no-op envelope the
279
- // CLI summary renders as a skip. The provider is never instantiated, so a
280
- // non-approved run performs no network I/O at all.
281
232
  if (opts.githubAdminApproved !== true) {
282
233
  const skipLog = opts.quiet ? () => {} : Logger.info;
283
234
  skipLog(
@@ -302,10 +253,7 @@ export async function runBootstrap(config, opts = {}) {
302
253
 
303
254
  const labels = await ensureLabels(provider, log);
304
255
 
305
- // Board decoration (Projects V2 board, Status field, custom fields, workflow
306
- // audit) is opt-in and defaults OFF. Minimal install = labels only. Gate is
307
- // `opts.withProjectBoard === true`; absent or false skips all board work.
308
- // ColumnSync already soft-noops when projectNumber is unset (column-sync.js:19-23).
256
+ // Board decoration defaults off; ColumnSync soft-noops without a projectNumber.
309
257
  const projectBoard = opts.withProjectBoard === true;
310
258
  let project = { projectNumber: null, created: false, skipped: true };
311
259
  let statusField = { status: 'skipped', added: [] };
@@ -321,13 +269,6 @@ export async function runBootstrap(config, opts = {}) {
321
269
  if (projectReady) {
322
270
  statusField = await ensureStatusField(provider, log);
323
271
  fields = await ensureProjectFields(provider, project, log);
324
- // Story #2845 — audit project workflows for the ones that race against
325
- // the orchestrator's ColumnSync writes (notably `Pull request merged`
326
- // and `Pull request linked to issue`, which both rewrite Status as a
327
- // side-effect of auto-merge). When `--reap-conflicting-workflows` is
328
- // set, also delete the offenders via `deleteProjectV2Workflow` (the
329
- // only programmatic action GraphQL exposes today — `enabled` is
330
- // read-only).
331
272
  workflowAudit = await auditAndOptionallyReapWorkflows(
332
273
  provider,
333
274
  project.projectNumber,
@@ -342,24 +283,15 @@ export async function runBootstrap(config, opts = {}) {
342
283
  log('[Bootstrap] Project board decoration skipped (opt-in not set).');
343
284
  }
344
285
 
345
- // Consumer-facing bootstrap promotes the framework's CI-gates-only
346
- // stance: branch protection with enforce_admins + 0-approval-count and
347
- // the squash-only merge-method allowlist. Behavior-shifting drift on
348
- // branch protection routes through the HITL confirm gate — non-TTY runs
349
- // abort with a clear stderr message rather than silently apply. The
350
- // merge-method step differs by design (Story #4045 A4): non-TTY without an
351
- // assume override default-applies the framework stance with an explicit
352
- // log line (see mergeMethodsHitlConfirm below).
353
- //
354
- // Post-reshape: bootstrap reads from the new `project` + `github` blocks
355
- // exclusively. The legacy "agent settings" opt was removed in Epic #2880.
286
+ // The CI-gates-only stance: branch protection (enforce_admins, 0 approvals)
287
+ // and squash-only merges. Behaviour-shifting branch-protection drift goes
288
+ // through the HITL gate, which aborts on non-TTY.
356
289
  const projectCfg = opts.project ?? config.project ?? {};
357
290
  const githubCfg = opts.github ?? {};
358
291
  const settings = {
359
292
  ...projectCfg,
360
293
  baseBranch: opts.baseBranch ?? projectCfg.baseBranch ?? 'main',
361
294
  github: githubCfg,
362
- // Preserve the legacy `quality` shape pointer when callers still pass it.
363
295
  quality: projectCfg.quality,
364
296
  };
365
297
  const hitlConfirm =
@@ -376,13 +308,8 @@ export async function runBootstrap(config, opts = {}) {
376
308
  log,
377
309
  });
378
310
 
379
- // Merge-methods gate (Story #4045 A4): under non-TTY without an explicit
380
- // assume override there is no operator to consult, and the default HITL
381
- // gate declines every non-TTY prompt — which would make applyMergeMethods'
382
- // documented non-TTY default-apply branch unreachable. Skip the gate in
383
- // that case so the merge-method stance default-applies with its explicit
384
- // log line. Interactive runs (and explicit --assume-yes/--assume-no, and
385
- // injected gates) keep the loud confirm/decline behaviour.
311
+ // Non-TTY with no assume override: drop the gate (which would decline every
312
+ // prompt) so merge methods default-apply with a log line, by design.
386
313
  const stdoutIsTTY = opts.isTTY ?? Boolean(process.stdout.isTTY);
387
314
  const mergeMethodsHitlConfirm =
388
315
  opts.hitlConfirm ??
@@ -406,16 +333,9 @@ export async function runBootstrap(config, opts = {}) {
406
333
  };
407
334
  }
408
335
 
409
- // ---------------------------------------------------------------------------
410
- // CLI entry point
411
- // ---------------------------------------------------------------------------
412
-
413
336
  async function main() {
414
- // Preflight `gh` before touching config or the provider — surfaces the
415
- // most common new-adopter failure (missing/stale `gh`) as the first
416
- // diagnostic instead of an ENOENT later in the provider stack.
417
- // Tech Spec #1350 → "Bootstrap surface": gh auth status must exit 0
418
- // before bootstrap proceeds.
337
+ // A missing/stale/unauthenticated `gh` is the first diagnostic, not an
338
+ // ENOENT deep in the provider stack.
419
339
  try {
420
340
  const { version } = await preflightGh();
421
341
  Logger.info(`[Bootstrap] gh CLI ${version} ready (auth verified).`);
@@ -431,10 +351,7 @@ async function main() {
431
351
  throw err;
432
352
  }
433
353
 
434
- // Preflight runtime deps before the dynamic config-resolver import so
435
- // a consumer who hasn't installed framework runtime deps yet gets a
436
- // clear hint (`run mandrel init` or `npm install mandrel`) instead of
437
- // a raw `ERR_MODULE_NOT_FOUND`.
354
+ // Before the dynamic import, so missing deps get a hint, not ERR_MODULE_NOT_FOUND.
438
355
  try {
439
356
  await preflightRuntimeDeps();
440
357
  } catch (err) {
@@ -445,7 +362,6 @@ async function main() {
445
362
  throw err;
446
363
  }
447
364
 
448
- // Dynamic import to avoid circular dependency issues at module level.
449
365
  const { resolveConfig, validateOrchestrationConfig } = await import(
450
366
  './lib/config-resolver.js'
451
367
  );
@@ -463,30 +379,15 @@ async function main() {
463
379
  process.exit(1);
464
380
  }
465
381
 
466
- // Epic #1235 Story 5 — flags let CI / non-interactive callers pin the
467
- // HITL gate's answer deterministically. The bootstrap is non-interactive
468
- // by default in non-TTY contexts (the gate returns false and aborts);
469
- // these flags are the documented escape hatches.
382
+ // --assume-yes/--assume-no pin the HITL gate's answer for non-TTY callers.
470
383
  const assumeYes = process.argv.includes('--assume-yes');
471
384
  const assumeNo = process.argv.includes('--assume-no');
472
- // Story #2845 — opt-in destructive flag. When set, the workflow-audit
473
- // step calls `deleteProjectV2Workflow` for every conflicting built-in
474
- // (e.g. "Pull request merged", "Pull request linked to issue"). Default
475
- // is warn-only because the GraphQL mutation is irreversible.
476
385
  const reapConflictingWorkflows = process.argv.includes(
477
386
  '--reap-conflicting-workflows',
478
387
  );
479
- // Story #3526 — GitHub-admin mutations are explicit opt-in. The standalone
480
- // CLI must carry an unambiguous approval signal before any remote mutation
481
- // lands: either `--approve-github-admin` (the dedicated consent flag) or
482
- // `--assume-yes` (the existing "accept everything" escape hatch). Without
483
- // one of these, `runBootstrap` short-circuits to a verified no-op so a bare
484
- // invocation never silently reconfigures branch protection or merge methods.
388
+ // A bare invocation must never reconfigure the repo.
485
389
  const githubAdminApproved =
486
390
  assumeYes || process.argv.includes('--approve-github-admin');
487
- // Story #4234 — Board decoration is opt-in (default off). Pass
488
- // `--with-project-board` to also provision the Projects V2 board, Status
489
- // field, and custom fields.
490
391
  const withProjectBoard = process.argv.includes('--with-project-board');
491
392
 
492
393
  try {
@@ -499,9 +400,7 @@ async function main() {
499
400
  githubAdminApproved,
500
401
  withProjectBoard,
501
402
  });
502
- // A non-approved run returns the skip envelope (no full result shape);
503
- // the skip line is already logged inside runBootstrap, so render the
504
- // detailed summary only when mutations were actually attempted.
403
+ // A skip envelope has no summary shape.
505
404
  if (result.skipped) {
506
405
  Logger.info(
507
406
  `[Bootstrap] GitHub-admin step skipped (${result.reason}). Re-run with --approve-github-admin (or --assume-yes) to apply.`,
@@ -514,8 +413,7 @@ async function main() {
514
413
  }
515
414
  }
516
415
 
517
- // Re-export the gh-preflight surface so existing test consumers can keep
518
- // importing it from this module after the Story #3349 split.
416
+ // Re-exported: callers import the gh-preflight surface from here.
519
417
  export {
520
418
  compareSemver,
521
419
  isApiAccessNotFoundError,
@@ -1,50 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * apply-quality-bootstrap.js — Story #4171
5
- * (refactor(mandrel-update): extract the quality-bootstrap heredoc into a
6
- * tested script)
7
- *
8
- * Replaces the inline `node -e "Promise.all([...])"` heredoc that Step 3.5 of
9
- * the `/mandrel-update` workflow used to carry. That shape was fragile in three
10
- * ways: it broke across shells (PowerShell vs bash quoting / backticks), it
11
- * had no test so it silently drifted when the two helper signatures moved, and
12
- * it could not be invoked or dry-run independently.
13
- *
14
- * The script runs one install against the consumer repo root:
15
- * `applyQualityBootstrap` — copies the code-quality-guardrails helper,
16
- * installs the `.husky/pre-commit` quality:preview line, backfills the
17
- * `quality:preview` / `quality:watch` npm scripts, seeds the
18
- * `delivery.quality.{codingGuardrails,autoRefresh}` defaults, and prunes a
19
- * committed pre-v2 `baselines/epic/` tree.
20
- *
21
- * Story #5007 retired the second step. `migrateBaselinesLayout` relocated
22
- * per-Epic ratchet snapshots into `temp/epic/<id>/baselines/` on the contract
23
- * that `/mandrel-deliver` reaps that namespace on merge — a mechanism the Story-only
24
- * v2 model deleted, so the migration moved dead data into a namespace no code
25
- * path writes, reads, or reaps. Its one residual hygiene value (getting the
26
- * committed `baselines/epic/` tree out of version control) survives as
27
- * `pruneLegacyEpicBaselines`, the quality install's fifth step.
28
- *
29
- * The helper is idempotent by contract — a second run reports `no-change` /
30
- * `already-present` / `absent` on every install path — so this wrapper is safe
31
- * to re-run. It prints `{ quality }` JSON to stdout.
32
- *
33
- * The effectful work is a thin pure function (`applyBootstrapAndMigration`)
34
- * that takes the helper and the project root, so the test suite can drive it
35
- * against a tmp directory without spawning a child process. The CLI wrapper
36
- * wires the real helper and `process.cwd()`.
4
+ * apply-quality-bootstrap.js — run the idempotent quality-gate install
5
+ * (`applyQualityBootstrap`) against the consumer repo root and print
6
+ * `{ quality }` JSON. A script, not a shell heredoc, so it is testable and
7
+ * shell-agnostic.
37
8
  */
38
9
 
39
10
  import { applyQualityBootstrap } from './lib/bootstrap/quality-bootstrap.js';
40
11
  import { runAsCli } from './lib/cli-utils.js';
41
12
 
42
13
  /**
43
- * Run the quality-bootstrap install against `projectRoot`, returning the
44
- * `{ quality }` envelope. Pure relative to its injected helper: the default
45
- * helper touches the filesystem under `projectRoot`, but tests can pass a stub
46
- * to exercise the composition in isolation.
47
- *
48
14
  * @param {object} options
49
15
  * @param {string} options.projectRoot Absolute consumer repo root.
50
16
  * @param {typeof applyQualityBootstrap} [options.applyQualityBootstrap]
@@ -60,8 +26,6 @@ export function applyBootstrapAndMigration({
60
26
  async function main() {
61
27
  const projectRoot = process.cwd();
62
28
  const result = applyBootstrapAndMigration({ projectRoot });
63
- // Use process.stdout.write (not console.log) per the no-console
64
- // enforcement boundary.
65
29
  process.stdout.write(`${JSON.stringify(result)}\n`);
66
30
  return 0;
67
31
  }
@@ -1,29 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * CLI: baseline hotspot engine for the `/audit-baselines` lens (Story #4902).
5
- *
6
- * Turns the committed `baselines/` folder into ranked hotspot clusters,
7
- * gate-surface health signals, trend deltas, and floor-tightening headroom —
8
- * the deterministic evidence half of a baseline review, so the lens spends
9
- * its judgment on findings instead of re-deriving the numbers by hand.
10
- *
11
- * Read-only by contract: nothing under `baselines/` is written, and no test,
12
- * coverage, or mutation suite is run. The only file this process creates is
13
- * the envelope at `--out`.
14
- *
15
- * Exit 0 whenever evidence was assembled — findings are evidence, not a gate.
16
- * A missing git history, absent friction ledger, or unresolvable import graph
17
- * are reported as degradations and still exit 0. Only an unwritable `--out`
18
- * (or a missing one) is a failure.
19
- *
20
- * Usage:
21
- * node .agents/scripts/audit-baselines.js --out temp/audit-baselines/envelope.json
4
+ * CLI: the deterministic evidence half of `/audit-baselines` — ranked hotspot
5
+ * clusters, gate health, trends and floor headroom from `baselines/`.
6
+ * Read-only: writes only the `--out` envelope. Degraded inputs still exit 0;
7
+ * only a missing or unwritable `--out` fails.
22
8
  */
23
9
 
24
- // Fail-fast if the framework's runtime deps are not installed — must be the
25
- // first import so the check runs before any third-party-importing sibling
26
- // module is evaluated (Story #3432).
10
+ // Must be the first import: fail fast before any third-party import evaluates.
27
11
  import './lib/runtime-deps/ensure-installed.js';
28
12
  import fs from 'node:fs';
29
13
  import path from 'node:path';
@@ -49,9 +33,7 @@ const FLAG_SPEC = {
49
33
  };
50
34
 
51
35
  /**
52
- * Validate the envelope against its shipped schema through the shared
53
- * baseline schema registry. Throws with the AJV error list on mismatch —
54
- * a malformed envelope is an engine bug, not evidence.
36
+ * Throws on a schema mismatch — a malformed envelope is an engine bug.
55
37
  *
56
38
  * @param {object} envelope
57
39
  * @returns {void}
@@ -73,9 +55,6 @@ export function assertEnvelope(envelope) {
73
55
  }
74
56
 
75
57
  /**
76
- * Assemble the envelope, validate it, write it, and return the stdout
77
- * summary. Exported so tests drive the whole pipeline without spawning.
78
- *
79
58
  * @param {{ argv?: string[], cwd?: string, stdout?: { write: (s: string) => void } }} [opts]
80
59
  * @returns {Promise<number>} exit code
81
60
  */
@@ -1,25 +1,8 @@
1
1
  /**
2
- * audit-labels-bootstrap.js — Idempotently create the audit label taxonomy in
3
- * the configured GitHub repo.
4
- *
5
- * Run this once per repo before `/audit-to-stories` opens its first
6
- * Story. Re-runs are safe — existing labels are skipped, only missing
7
- * ones are created. Story #2583 acceptance criterion #6.
8
- *
9
- * This CLI is a thin creator over
10
- * [`lib/audit-to-stories/audit-label-taxonomy.js`](lib/audit-to-stories/audit-label-taxonomy.js),
11
- * which is the SSOT for **every** label an audit sweep creates or generates:
12
- * the `audit::<lens>` set (derived from the shared `AUDIT_LENSES` list, one per
13
- * `/audit-<lens>` workflow) plus the story-axis labels the filer applies. The
14
- * creator and the generator (`build-story-body.js`) read that one list, so the
15
- * bootstrap cannot fall behind the filer — the drift that left `risk::high`
16
- * generated but defined nowhere (Story #4877), and that made `audit::<dimension>`
17
- * labels mint from free-form prose before Story #4195.
18
- *
19
- * Delegates to `gh label create` so the script works without any
20
- * provider plumbing — `gh auth status` is the only prerequisite. Per
21
- * .agents/rules/orchestration-error-handling.md, the CLI surface throws
22
- * rather than calling Logger.fatal.
2
+ * audit-labels-bootstrap.js — idempotently create the audit label taxonomy via
3
+ * `gh label create` (only `gh auth` needed). The taxonomy is the SSOT that
4
+ * `build-story-body.js` also reads, so the bootstrap cannot fall behind the
5
+ * filer. Throws rather than calling Logger.fatal.
23
6
  */
24
7
 
25
8
  import process from 'node:process';
@@ -115,10 +98,7 @@ export async function bootstrapAuditLabels({
115
98
  }
116
99
 
117
100
  /**
118
- * Resolve `{ owner, repo }` from parsed CLI flags, falling back to the
119
- * `github.{owner,repo}` config keys. Throws when neither source supplies
120
- * both values. Pulled out of `main` so the resolution + guard is a single
121
- * testable unit.
101
+ * Flags, then `github.{owner,repo}`; throws unless both resolve.
122
102
  *
123
103
  * @param {{ owner?: string, repo?: string }} values
124
104
  * @param {{ github?: { owner?: string, repo?: string } }} [config]
@@ -136,10 +116,6 @@ export function resolveOwnerRepo(values, config) {
136
116
  }
137
117
 
138
118
  /**
139
- * Render the operator-facing summary lines for a bootstrap result. Pure:
140
- * returns `{ stdout, stderr }` strings rather than writing, so `main` owns
141
- * the single write site and the formatting stays unit-testable.
142
- *
143
119
  * @param {{ created: string[], skipped: string[], failed: Array<{label: string, reason: string}>, total: number }} result
144
120
  * @returns {{ stdout: string, stderr: string }}
145
121
  */