mandrel 2.59.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 (678) hide show
  1. package/.agents/README.md +21 -19
  2. package/.agents/agents/acceptance-critic.md +24 -43
  3. package/.agents/agents/story-worker.md +20 -21
  4. package/.agents/docs/agentrc-reference.json +5 -84
  5. package/.agents/docs/configuration.md +48 -132
  6. package/.agents/docs/workflows.md +2 -2
  7. package/.agents/instructions.md +5 -8
  8. package/.agents/rules/ci-remediation.md +41 -8
  9. package/.agents/rules/gherkin-standards.md +4 -0
  10. package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
  11. package/.agents/schemas/agentrc.schema.json +16 -496
  12. package/.agents/schemas/story-deliver-terminal.schema.json +13 -3
  13. package/.agents/schemas/validation-evidence.schema.json +2 -1
  14. package/.agents/scripts/README.md +23 -13
  15. package/.agents/scripts/acceptance-eval.js +35 -169
  16. package/.agents/scripts/agents-bootstrap-github.js +27 -129
  17. package/.agents/scripts/apply-quality-bootstrap.js +4 -40
  18. package/.agents/scripts/audit-baselines.js +6 -27
  19. package/.agents/scripts/audit-labels-bootstrap.js +5 -29
  20. package/.agents/scripts/audit-to-stories.js +91 -361
  21. package/.agents/scripts/boot-sweep.js +19 -72
  22. package/.agents/scripts/bootstrap.js +74 -395
  23. package/.agents/scripts/ceremony-derive.js +10 -41
  24. package/.agents/scripts/check-arch-cycles.js +14 -64
  25. package/.agents/scripts/check-baselines.js +8 -48
  26. package/.agents/scripts/check-context-budget.js +105 -311
  27. package/.agents/scripts/check-cyclomatic.js +12 -44
  28. package/.agents/scripts/check-dead-exports.js +13 -64
  29. package/.agents/scripts/check-doc-links.js +38 -186
  30. package/.agents/scripts/check-gherkin-corpus.js +24 -127
  31. package/.agents/scripts/check-test-temp-hygiene.js +28 -169
  32. package/.agents/scripts/coverage-capture.js +34 -98
  33. package/.agents/scripts/deliver-light.js +25 -171
  34. package/.agents/scripts/deliver-recover.js +6 -42
  35. package/.agents/scripts/deliver-run.js +534 -0
  36. package/.agents/scripts/diagnose-friction.js +24 -116
  37. package/.agents/scripts/drain-pending-cleanup.js +1 -1
  38. package/.agents/scripts/evidence-gate.js +23 -85
  39. package/.agents/scripts/file-ci-gap.js +57 -49
  40. package/.agents/scripts/generate-config-docs.js +30 -170
  41. package/.agents/scripts/generate-lens-checklists.js +8 -52
  42. package/.agents/scripts/generate-skills-index.js +14 -112
  43. package/.agents/scripts/generate-workflows-doc.js +10 -70
  44. package/.agents/scripts/git-cleanup.js +2 -34
  45. package/.agents/scripts/lib/Graph.js +24 -81
  46. package/.agents/scripts/lib/ITicketingProvider.js +47 -143
  47. package/.agents/scripts/lib/Logger.js +14 -76
  48. package/.agents/scripts/lib/audit-baselines/engine.js +11 -31
  49. package/.agents/scripts/lib/audit-baselines/gate-surface.js +3 -17
  50. package/.agents/scripts/lib/audit-baselines/headroom.js +4 -20
  51. package/.agents/scripts/lib/audit-baselines/hotspots.js +3 -15
  52. package/.agents/scripts/lib/audit-baselines/kinds.js +23 -89
  53. package/.agents/scripts/lib/audit-baselines/outliers.js +6 -23
  54. package/.agents/scripts/lib/audit-baselines/read.js +3 -16
  55. package/.agents/scripts/lib/audit-baselines/staleness.js +7 -26
  56. package/.agents/scripts/lib/audit-baselines/surface-entry.js +7 -28
  57. package/.agents/scripts/lib/audit-baselines/trend.js +7 -20
  58. package/.agents/scripts/lib/audit-baselines/weights.js +9 -37
  59. package/.agents/scripts/lib/audit-suite/audit-rules-reader.js +3 -18
  60. package/.agents/scripts/lib/audit-suite/checklist-threading.js +26 -124
  61. package/.agents/scripts/lib/audit-suite/dispatch-checklist.js +14 -45
  62. package/.agents/scripts/lib/audit-suite/findings.js +12 -52
  63. package/.agents/scripts/lib/audit-suite/frontmatter.js +5 -29
  64. package/.agents/scripts/lib/audit-suite/index.js +1 -15
  65. package/.agents/scripts/lib/audit-suite/lens-checklist.js +10 -45
  66. package/.agents/scripts/lib/audit-suite/lens-diff-floor.js +11 -76
  67. package/.agents/scripts/lib/audit-suite/runner.js +13 -43
  68. package/.agents/scripts/lib/audit-suite/selector.js +49 -349
  69. package/.agents/scripts/lib/audit-suite/substitutions.js +12 -40
  70. package/.agents/scripts/lib/audit-suite/workflow-loader.js +3 -15
  71. package/.agents/scripts/lib/audit-to-stories/audit-label-taxonomy.js +11 -73
  72. package/.agents/scripts/lib/audit-to-stories/audit-lenses.js +8 -37
  73. package/.agents/scripts/lib/audit-to-stories/build-story-body.js +25 -143
  74. package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +14 -80
  75. package/.agents/scripts/lib/audit-to-stories/epic-grouping-directive.js +4 -18
  76. package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +7 -40
  77. package/.agents/scripts/lib/audit-to-stories/group-findings.js +9 -39
  78. package/.agents/scripts/lib/audit-to-stories/issue-corpus.js +10 -66
  79. package/.agents/scripts/lib/audit-to-stories/issue-index.js +6 -30
  80. package/.agents/scripts/lib/audit-to-stories/issues-file.js +6 -36
  81. package/.agents/scripts/lib/audit-to-stories/ledger-commit.js +17 -69
  82. package/.agents/scripts/lib/audit-to-stories/ledger-pr.js +17 -85
  83. package/.agents/scripts/lib/audit-to-stories/ledger-record.js +10 -48
  84. package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +38 -146
  85. package/.agents/scripts/lib/audit-to-stories/seed-from-findings.js +7 -42
  86. package/.agents/scripts/lib/audit-to-stories/wire-dependencies.js +10 -57
  87. package/.agents/scripts/lib/baseline-loader.js +12 -51
  88. package/.agents/scripts/lib/baseline-schema-registry.js +5 -22
  89. package/.agents/scripts/lib/baselines/component-matcher.js +3 -12
  90. package/.agents/scripts/lib/baselines/components.js +10 -61
  91. package/.agents/scripts/lib/baselines/coverage-updater-cli.js +7 -36
  92. package/.agents/scripts/lib/baselines/crap-preview-incremental.js +7 -19
  93. package/.agents/scripts/lib/baselines/crap-preview-scan.js +19 -45
  94. package/.agents/scripts/lib/baselines/crap-updater-cli.js +16 -65
  95. package/.agents/scripts/lib/baselines/diff-scope-cli.js +5 -33
  96. package/.agents/scripts/lib/baselines/duplication-scanner.js +11 -60
  97. package/.agents/scripts/lib/baselines/env-overrides.js +12 -67
  98. package/.agents/scripts/lib/baselines/envelope.js +13 -129
  99. package/.agents/scripts/lib/baselines/exit-codes.js +6 -49
  100. package/.agents/scripts/lib/baselines/git-base.js +23 -142
  101. package/.agents/scripts/lib/baselines/kernel.js +11 -111
  102. package/.agents/scripts/lib/baselines/kinds/_crap-new-method-gate.js +9 -47
  103. package/.agents/scripts/lib/baselines/kinds/_crap-read.js +8 -51
  104. package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +7 -62
  105. package/.agents/scripts/lib/baselines/kinds/bundle-size.js +8 -29
  106. package/.agents/scripts/lib/baselines/kinds/coverage.js +3 -15
  107. package/.agents/scripts/lib/baselines/kinds/crap.js +94 -415
  108. package/.agents/scripts/lib/baselines/kinds/duplication.js +4 -30
  109. package/.agents/scripts/lib/baselines/kinds/kind-factory.js +7 -53
  110. package/.agents/scripts/lib/baselines/kinds/maintainability.js +15 -80
  111. package/.agents/scripts/lib/baselines/kinds/mutation.js +12 -72
  112. package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +4 -11
  113. package/.agents/scripts/lib/baselines/merge-envelopes.js +30 -146
  114. package/.agents/scripts/lib/baselines/path-canon.js +19 -128
  115. package/.agents/scripts/lib/baselines/preview-gates.js +8 -37
  116. package/.agents/scripts/lib/baselines/reader.js +14 -107
  117. package/.agents/scripts/lib/baselines/refresh-service.js +35 -252
  118. package/.agents/scripts/lib/baselines/scope.js +11 -135
  119. package/.agents/scripts/lib/baselines/writer.js +16 -149
  120. package/.agents/scripts/lib/bdd-runner-detect.js +18 -113
  121. package/.agents/scripts/lib/bdd-scenario-budget.js +9 -36
  122. package/.agents/scripts/lib/bdd-scenario-scanner.js +11 -73
  123. package/.agents/scripts/lib/bdd-step-index.js +26 -100
  124. package/.agents/scripts/lib/bootstrap/baseline-merge-driver.js +23 -103
  125. package/.agents/scripts/lib/bootstrap/branch-protection.js +2 -5
  126. package/.agents/scripts/lib/bootstrap/commit-push.js +12 -50
  127. package/.agents/scripts/lib/bootstrap/gh-preflight.js +14 -101
  128. package/.agents/scripts/lib/bootstrap/hitl-confirm.js +5 -30
  129. package/.agents/scripts/lib/bootstrap/install-ledger.js +17 -73
  130. package/.agents/scripts/lib/bootstrap/issue-forms-template.js +17 -121
  131. package/.agents/scripts/lib/bootstrap/manifest.js +15 -86
  132. package/.agents/scripts/lib/bootstrap/merge-methods.js +4 -33
  133. package/.agents/scripts/lib/bootstrap/preflight.js +12 -61
  134. package/.agents/scripts/lib/bootstrap/project-bootstrap.js +34 -235
  135. package/.agents/scripts/lib/bootstrap/prompt.js +21 -129
  136. package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +27 -141
  137. package/.agents/scripts/lib/bootstrap/summary.js +1 -8
  138. package/.agents/scripts/lib/bootstrap/workflow-audit.js +11 -84
  139. package/.agents/scripts/lib/branch-name-guard.js +4 -23
  140. package/.agents/scripts/lib/changed-files.js +39 -121
  141. package/.agents/scripts/lib/checks/core-bare-clean.js +4 -24
  142. package/.agents/scripts/lib/checks/index.js +18 -101
  143. package/.agents/scripts/lib/checks/loop-health.js +11 -53
  144. package/.agents/scripts/lib/checks/state.js +16 -91
  145. package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +10 -61
  146. package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +14 -83
  147. package/.agents/scripts/lib/child-exec.js +39 -108
  148. package/.agents/scripts/lib/cli/standard-args.js +9 -116
  149. package/.agents/scripts/lib/cli-args.js +31 -146
  150. package/.agents/scripts/lib/cli-usage.js +5 -27
  151. package/.agents/scripts/lib/cli-utils.js +2 -12
  152. package/.agents/scripts/lib/close-validation/commands.js +13 -76
  153. package/.agents/scripts/lib/close-validation/gates.js +92 -331
  154. package/.agents/scripts/lib/close-validation/process.js +121 -151
  155. package/.agents/scripts/lib/close-validation/projections/advisories.js +5 -31
  156. package/.agents/scripts/lib/close-validation/projections/crap.js +19 -67
  157. package/.agents/scripts/lib/close-validation/projections/head-sha.js +1 -17
  158. package/.agents/scripts/lib/close-validation/projections/inputs.js +4 -34
  159. package/.agents/scripts/lib/close-validation/projections/maintainability.js +11 -58
  160. package/.agents/scripts/lib/close-validation/runner.js +53 -110
  161. package/.agents/scripts/lib/command-header.js +6 -28
  162. package/.agents/scripts/lib/config/acceptance-eval.js +4 -30
  163. package/.agents/scripts/lib/config/baselines.js +3 -14
  164. package/.agents/scripts/lib/config/ci.js +8 -38
  165. package/.agents/scripts/lib/config/commands.js +1 -15
  166. package/.agents/scripts/lib/config/defaults.js +4 -33
  167. package/.agents/scripts/lib/config/delivery-routing.js +6 -34
  168. package/.agents/scripts/lib/config/explain.js +10 -83
  169. package/.agents/scripts/lib/config/gates/coverage.schema.js +0 -12
  170. package/.agents/scripts/lib/config/gates/crap-incremental-coverage.schema.js +3 -31
  171. package/.agents/scripts/lib/config/gates/crap.schema.js +1 -34
  172. package/.agents/scripts/lib/config/gates/duplication.schema.js +1 -8
  173. package/.agents/scripts/lib/config/gates/index.js +2 -17
  174. package/.agents/scripts/lib/config/gates/maintainability.schema.js +1 -20
  175. package/.agents/scripts/lib/config/gates/mutation.schema.js +1 -7
  176. package/.agents/scripts/lib/config/gates/shared.js +4 -64
  177. package/.agents/scripts/lib/config/github.js +4 -22
  178. package/.agents/scripts/lib/config/limits.js +4 -57
  179. package/.agents/scripts/lib/config/paths.js +2 -21
  180. package/.agents/scripts/lib/config/qa.js +4 -38
  181. package/.agents/scripts/lib/config/quality.js +76 -432
  182. package/.agents/scripts/lib/config/runners.js +12 -56
  183. package/.agents/scripts/lib/config/runtime.js +13 -57
  184. package/.agents/scripts/lib/config/shared.js +2 -16
  185. package/.agents/scripts/lib/config/sync-agentrc.js +9 -50
  186. package/.agents/scripts/lib/config/temp-paths.js +40 -280
  187. package/.agents/scripts/lib/config/validate-orchestration.js +5 -17
  188. package/.agents/scripts/lib/config/worktree-isolation.js +9 -28
  189. package/.agents/scripts/lib/config-resolver.js +11 -52
  190. package/.agents/scripts/lib/config-schema-shared.js +1 -4
  191. package/.agents/scripts/lib/config-settings-schema-delivery.js +16 -291
  192. package/.agents/scripts/lib/config-settings-schema-quality.js +7 -219
  193. package/.agents/scripts/lib/config-settings-schema.js +37 -274
  194. package/.agents/scripts/lib/coverage-baseline.js +20 -110
  195. package/.agents/scripts/lib/coverage-capture-fullscope.js +18 -35
  196. package/.agents/scripts/lib/coverage-capture-incremental.js +15 -45
  197. package/.agents/scripts/lib/coverage-capture-usage.js +8 -25
  198. package/.agents/scripts/lib/coverage-capture.js +99 -224
  199. package/.agents/scripts/lib/coverage-utils.js +14 -79
  200. package/.agents/scripts/lib/cpu-pool.js +17 -123
  201. package/.agents/scripts/lib/crap-baseline-join.js +16 -88
  202. package/.agents/scripts/lib/crap-coordinates.js +6 -25
  203. package/.agents/scripts/lib/crap-engine.js +40 -153
  204. package/.agents/scripts/lib/crap-method-identity.js +16 -78
  205. package/.agents/scripts/lib/crap-utils.js +31 -155
  206. package/.agents/scripts/lib/cyclomatic-ceiling.js +14 -87
  207. package/.agents/scripts/lib/cyclomatic-scope.js +10 -50
  208. package/.agents/scripts/lib/dead-exports-knip.js +18 -56
  209. package/.agents/scripts/lib/dead-exports-mode.js +5 -24
  210. package/.agents/scripts/lib/degraded-mode.js +3 -26
  211. package/.agents/scripts/lib/dependency-parser.js +8 -40
  212. package/.agents/scripts/lib/dependency-version.js +13 -35
  213. package/.agents/scripts/lib/detect-package-manager.js +6 -36
  214. package/.agents/scripts/lib/doc-tiers.js +22 -124
  215. package/.agents/scripts/lib/duplicate-search.js +8 -72
  216. package/.agents/scripts/lib/env-loader.js +5 -27
  217. package/.agents/scripts/lib/error-redactor.js +6 -31
  218. package/.agents/scripts/lib/errors/index.js +2 -22
  219. package/.agents/scripts/lib/escomplex-ast-compat.js +22 -163
  220. package/.agents/scripts/lib/escomplex-kernel.js +21 -123
  221. package/.agents/scripts/lib/feedback-loop/graduator-core.js +94 -419
  222. package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +20 -98
  223. package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +27 -149
  224. package/.agents/scripts/lib/findings/audit-ledger.js +23 -97
  225. package/.agents/scripts/lib/findings/classify-finding.js +14 -69
  226. package/.agents/scripts/lib/findings/promote-finding.js +14 -112
  227. package/.agents/scripts/lib/findings/provenance-field.js +11 -52
  228. package/.agents/scripts/lib/findings/route-finding.js +37 -255
  229. package/.agents/scripts/lib/findings/semantic-issue-search.js +14 -59
  230. package/.agents/scripts/lib/findings/severity.js +18 -104
  231. package/.agents/scripts/lib/format-generated-json.js +12 -44
  232. package/.agents/scripts/lib/full-suite-lock.js +160 -429
  233. package/.agents/scripts/lib/full-suite-queue.js +213 -0
  234. package/.agents/scripts/lib/gates/baseline-store.js +5 -9
  235. package/.agents/scripts/lib/gates/friction.js +1 -3
  236. package/.agents/scripts/lib/generated/agentrc-validator.js +2 -2
  237. package/.agents/scripts/lib/gh-exec.js +123 -191
  238. package/.agents/scripts/lib/git/cached-fetch.js +9 -52
  239. package/.agents/scripts/lib/git/sync-from-base.js +15 -107
  240. package/.agents/scripts/lib/git-branch-cleanup.js +14 -61
  241. package/.agents/scripts/lib/git-branch-lifecycle.js +16 -87
  242. package/.agents/scripts/lib/git-utils.js +37 -161
  243. package/.agents/scripts/lib/github/framework-repo.js +8 -71
  244. package/.agents/scripts/lib/github-url.js +2 -17
  245. package/.agents/scripts/lib/import-graph.js +11 -38
  246. package/.agents/scripts/lib/install-cmd-parser.js +4 -13
  247. package/.agents/scripts/lib/json-utils.js +3 -18
  248. package/.agents/scripts/lib/label-constants.js +16 -111
  249. package/.agents/scripts/lib/label-taxonomy.js +4 -30
  250. package/.agents/scripts/lib/maintainability-engine.js +12 -80
  251. package/.agents/scripts/lib/maintainability-unscorable.js +5 -25
  252. package/.agents/scripts/lib/maintainability-utils.js +16 -92
  253. package/.agents/scripts/lib/mandrel-catalog.js +12 -70
  254. package/.agents/scripts/lib/notifications/notifier.js +13 -38
  255. package/.agents/scripts/lib/npm-scripts.js +4 -23
  256. package/.agents/scripts/lib/observability/metrics-ledger.js +16 -76
  257. package/.agents/scripts/lib/observability/runtime-friction.js +44 -286
  258. package/.agents/scripts/lib/observability/signal-validator.js +5 -37
  259. package/.agents/scripts/lib/observability/signals-writer.js +11 -121
  260. package/.agents/scripts/lib/observability/source-classifier.js +22 -203
  261. package/.agents/scripts/lib/observability/terse-result.js +14 -47
  262. package/.agents/scripts/lib/onboard/init-tail.js +13 -74
  263. package/.agents/scripts/lib/onboard/scaffold-docs.js +11 -34
  264. package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +25 -139
  265. package/.agents/scripts/lib/orchestration/auto-merge-cwd.js +11 -66
  266. package/.agents/scripts/lib/orchestration/behind-recovery.js +10 -55
  267. package/.agents/scripts/lib/orchestration/ceremony-routing.js +28 -156
  268. package/.agents/scripts/lib/orchestration/change-set.js +7 -36
  269. package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +9 -46
  270. package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +11 -44
  271. package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +5 -24
  272. package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +3 -12
  273. package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +5 -38
  274. package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +3 -8
  275. package/.agents/scripts/lib/orchestration/check-baselines/phases/refresh-ack.js +28 -136
  276. package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +3 -13
  277. package/.agents/scripts/lib/orchestration/check-state.js +92 -0
  278. package/.agents/scripts/lib/orchestration/ci-gap-intake.js +37 -144
  279. package/.agents/scripts/lib/orchestration/ci-rerun-guard.js +121 -157
  280. package/.agents/scripts/lib/orchestration/code-review.js +24 -128
  281. package/.agents/scripts/lib/orchestration/column-sync.js +23 -111
  282. package/.agents/scripts/lib/orchestration/complexity-gate.js +118 -462
  283. package/.agents/scripts/lib/orchestration/deliver-recover.js +36 -168
  284. package/.agents/scripts/lib/orchestration/dependency-analyzer.js +4 -35
  285. package/.agents/scripts/lib/orchestration/dependency-candidates.js +9 -41
  286. package/.agents/scripts/lib/orchestration/diff-magnitude.js +25 -115
  287. package/.agents/scripts/lib/orchestration/doc-reader.js +2 -6
  288. package/.agents/scripts/lib/orchestration/docs-digest.js +13 -51
  289. package/.agents/scripts/lib/orchestration/epic-candidates.js +13 -53
  290. package/.agents/scripts/lib/orchestration/epic-checklist.js +9 -33
  291. package/.agents/scripts/lib/orchestration/epic-container.js +41 -167
  292. package/.agents/scripts/lib/orchestration/epic-expansion.js +10 -40
  293. package/.agents/scripts/lib/orchestration/epic-rollup.js +55 -207
  294. package/.agents/scripts/lib/orchestration/file-assumption-enum.js +2 -22
  295. package/.agents/scripts/lib/orchestration/file-assumptions.js +45 -253
  296. package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-detect.js +9 -46
  297. package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +7 -57
  298. package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +21 -126
  299. package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +2 -6
  300. package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +1 -4
  301. package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +1 -5
  302. package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +9 -34
  303. package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +41 -190
  304. package/.agents/scripts/lib/orchestration/git-cleanup/phases/merged-tip.js +9 -45
  305. package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +1 -4
  306. package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +19 -85
  307. package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +3 -17
  308. package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +1 -5
  309. package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +16 -100
  310. package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +1 -4
  311. package/.agents/scripts/lib/orchestration/lease-guard-shared.js +16 -67
  312. package/.agents/scripts/lib/orchestration/lifecycle/emit-ledger-event.js +9 -33
  313. package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-flip-failed.js +8 -29
  314. package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-unlanded.js +15 -68
  315. package/.agents/scripts/lib/orchestration/light-backstop.js +11 -49
  316. package/.agents/scripts/lib/orchestration/light-escalation.js +21 -89
  317. package/.agents/scripts/lib/orchestration/light-suitability.js +37 -307
  318. package/.agents/scripts/lib/orchestration/merge-block-class.js +39 -216
  319. package/.agents/scripts/lib/orchestration/merge-poll.js +104 -377
  320. package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
  321. package/.agents/scripts/lib/orchestration/plan-context.js +55 -318
  322. package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +22 -79
  323. package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +5 -31
  324. package/.agents/scripts/lib/orchestration/plan-metrics.js +29 -108
  325. package/.agents/scripts/lib/orchestration/plan-navigation.js +8 -27
  326. package/.agents/scripts/lib/orchestration/plan-persist/acceptance-handle-repair.js +12 -49
  327. package/.agents/scripts/lib/orchestration/plan-persist/audit-provenance.js +18 -73
  328. package/.agents/scripts/lib/orchestration/plan-persist/changes-repair.js +16 -78
  329. package/.agents/scripts/lib/orchestration/plan-persist/cross-plan-links.js +6 -30
  330. package/.agents/scripts/lib/orchestration/plan-persist/epic-adoption.js +14 -65
  331. package/.agents/scripts/lib/orchestration/plan-persist/epic-ops.js +21 -76
  332. package/.agents/scripts/lib/orchestration/plan-persist/external-deps.js +6 -43
  333. package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +14 -68
  334. package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +9 -41
  335. package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +71 -289
  336. package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
  337. package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +96 -362
  338. package/.agents/scripts/lib/orchestration/plan-persist/summary.js +9 -39
  339. package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +60 -186
  340. package/.agents/scripts/lib/orchestration/plan-persist/wave-collision-gate.js +9 -49
  341. package/.agents/scripts/lib/orchestration/plan-persist/wave-serialisation.js +7 -28
  342. package/.agents/scripts/lib/orchestration/plan-reachability.js +13 -42
  343. package/.agents/scripts/lib/orchestration/plan-run-labels/reap.js +16 -91
  344. package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +16 -54
  345. package/.agents/scripts/lib/orchestration/plan-text-hygiene.js +10 -52
  346. package/.agents/scripts/lib/orchestration/planning/authoring-context.js +14 -109
  347. package/.agents/scripts/lib/orchestration/planning/memory-pool-advisory.js +11 -83
  348. package/.agents/scripts/lib/orchestration/pr-watch.js +48 -306
  349. package/.agents/scripts/lib/orchestration/project-meta-cache.js +15 -80
  350. package/.agents/scripts/lib/orchestration/project-meta-resolver.js +10 -51
  351. package/.agents/scripts/lib/orchestration/reassert-status-column.js +12 -76
  352. package/.agents/scripts/lib/orchestration/remote-verifier.js +12 -36
  353. package/.agents/scripts/lib/orchestration/resolve-stories.js +33 -164
  354. package/.agents/scripts/lib/orchestration/retro-proposals.js +66 -361
  355. package/.agents/scripts/lib/orchestration/review-base-ref.js +9 -43
  356. package/.agents/scripts/lib/orchestration/review-depth.js +12 -91
  357. package/.agents/scripts/lib/orchestration/review-providers/codex.js +10 -111
  358. package/.agents/scripts/lib/orchestration/review-providers/degraded-gates.js +13 -71
  359. package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +7 -51
  360. package/.agents/scripts/lib/orchestration/review-providers/mi-exemptions.js +8 -53
  361. package/.agents/scripts/lib/orchestration/review-providers/native.js +30 -214
  362. package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +7 -52
  363. package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +4 -33
  364. package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +11 -71
  365. package/.agents/scripts/lib/orchestration/review-providers/scoped-lint.js +19 -131
  366. package/.agents/scripts/lib/orchestration/review-providers/security-review.js +6 -89
  367. package/.agents/scripts/lib/orchestration/review-providers/types.js +26 -56
  368. package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +3 -46
  369. package/.agents/scripts/lib/orchestration/run-epilogue.js +245 -326
  370. package/.agents/scripts/lib/orchestration/run-scoped-config.js +55 -159
  371. package/.agents/scripts/lib/orchestration/single-story-close/close-note.js +7 -34
  372. package/.agents/scripts/lib/orchestration/single-story-close/failed-terminal.js +16 -89
  373. package/.agents/scripts/lib/orchestration/single-story-close/gate-log.js +18 -109
  374. package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +83 -239
  375. package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +20 -82
  376. package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +103 -97
  377. package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +8 -64
  378. package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +136 -486
  379. package/.agents/scripts/lib/orchestration/single-story-close/phases/conventional-subject.js +30 -134
  380. package/.agents/scripts/lib/orchestration/single-story-close/phases/graphql-preflight.js +96 -0
  381. package/.agents/scripts/lib/orchestration/single-story-close/phases/lock-wait-pending.js +49 -0
  382. package/.agents/scripts/lib/orchestration/single-story-close/phases/normalize-pr-title.js +13 -86
  383. package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +20 -95
  384. package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +46 -203
  385. package/.agents/scripts/lib/orchestration/single-story-close/phases/pre-gate-steps.js +8 -50
  386. package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +12 -83
  387. package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +6 -39
  388. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +1 -6
  389. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-outcome.js +4 -28
  390. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-override.js +6 -51
  391. package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +6 -34
  392. package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +23 -121
  393. package/.agents/scripts/lib/orchestration/single-story-close/runner.js +180 -273
  394. package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +15 -69
  395. package/.agents/scripts/lib/orchestration/story-body-gate.js +4 -23
  396. package/.agents/scripts/lib/orchestration/story-close/baseline-upward-writeback.js +50 -179
  397. package/.agents/scripts/lib/orchestration/story-close/context-budget-writeback.js +11 -41
  398. package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +23 -311
  399. package/.agents/scripts/lib/orchestration/story-close/phases/local-lens-review.js +22 -147
  400. package/.agents/scripts/lib/orchestration/story-close/phases/review-core.js +16 -67
  401. package/.agents/scripts/lib/orchestration/story-deliver-terminal-schema.js +12 -68
  402. package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +42 -200
  403. package/.agents/scripts/lib/orchestration/story-follow-ups.js +167 -252
  404. package/.agents/scripts/lib/orchestration/story-init-envelope.js +52 -0
  405. package/.agents/scripts/lib/orchestration/story-init-remote.js +2 -6
  406. package/.agents/scripts/lib/orchestration/story-reachability.js +3 -23
  407. package/.agents/scripts/lib/orchestration/task-body-validator.js +12 -135
  408. package/.agents/scripts/lib/orchestration/ticket-lease.js +28 -131
  409. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +15 -149
  410. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +5 -33
  411. package/.agents/scripts/lib/orchestration/ticket-validator.js +63 -344
  412. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
  413. package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -261
  414. package/.agents/scripts/lib/orchestration/ticketing/state.js +14 -68
  415. package/.agents/scripts/lib/orchestration/ticketing/transition.js +46 -263
  416. package/.agents/scripts/lib/orchestration/ticketing.js +2 -26
  417. package/.agents/scripts/lib/orchestration/verify-credit.js +18 -79
  418. package/.agents/scripts/lib/orchestration/worktree-dirty.js +5 -30
  419. package/.agents/scripts/lib/path-security.js +3 -6
  420. package/.agents/scripts/lib/plan-phase-cleanup.js +9 -49
  421. package/.agents/scripts/lib/preflight-runner.js +13 -69
  422. package/.agents/scripts/lib/process-group.js +143 -0
  423. package/.agents/scripts/lib/project-root.js +2 -8
  424. package/.agents/scripts/lib/provider-factory.js +2 -25
  425. package/.agents/scripts/lib/qa/console-allowlist.js +10 -59
  426. package/.agents/scripts/lib/qa/qa-session.js +15 -69
  427. package/.agents/scripts/lib/qa/redact-evidence.js +18 -129
  428. package/.agents/scripts/lib/qa/resolve-qa-contract.js +26 -135
  429. package/.agents/scripts/lib/qa/resolve-selection.js +16 -84
  430. package/.agents/scripts/lib/reserved-test-ids.js +9 -47
  431. package/.agents/scripts/lib/runtime-deps/dep-resolution.js +13 -53
  432. package/.agents/scripts/lib/runtime-deps/ensure-installed.js +10 -44
  433. package/.agents/scripts/lib/runtime-deps/manifest.js +10 -30
  434. package/.agents/scripts/lib/runtime-deps/parser-major.js +15 -51
  435. package/.agents/scripts/lib/runtime-deps/preflight.js +4 -22
  436. package/.agents/scripts/lib/runtime-deps/scan-imports.js +11 -55
  437. package/.agents/scripts/lib/signals/detectors/common.js +12 -38
  438. package/.agents/scripts/lib/signals/index.js +2 -19
  439. package/.agents/scripts/lib/signals/schema.js +14 -109
  440. package/.agents/scripts/lib/signals/write.js +2 -11
  441. package/.agents/scripts/lib/single-story/confirm-merge.js +31 -72
  442. package/.agents/scripts/lib/single-story/story-merged-notify.js +8 -49
  443. package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +4 -26
  444. package/.agents/scripts/lib/single-story-sweep/protection.js +13 -100
  445. package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +60 -258
  446. package/.agents/scripts/lib/single-story-sweep.js +14 -97
  447. package/.agents/scripts/lib/skills/parse-skill.js +13 -59
  448. package/.agents/scripts/lib/skills/skills-index.js +8 -29
  449. package/.agents/scripts/lib/skills/walk-skill-files.js +17 -78
  450. package/.agents/scripts/lib/source-extensions.js +11 -42
  451. package/.agents/scripts/lib/source-text/strip-js-comments.js +8 -41
  452. package/.agents/scripts/lib/stdio-flush.js +9 -36
  453. package/.agents/scripts/lib/story-adjacency.js +8 -40
  454. package/.agents/scripts/lib/story-body/body-format-lints.js +51 -66
  455. package/.agents/scripts/lib/story-body/footer-block.js +11 -44
  456. package/.agents/scripts/lib/story-body/story-body.js +123 -344
  457. package/.agents/scripts/lib/temp-retention.js +42 -143
  458. package/.agents/scripts/lib/templates/decomposer-prompts.js +18 -80
  459. package/.agents/scripts/lib/test-env.js +12 -65
  460. package/.agents/scripts/lib/test-run-credit.js +10 -65
  461. package/.agents/scripts/lib/test-runner-contract.js +19 -74
  462. package/.agents/scripts/lib/test-temp.js +38 -184
  463. package/.agents/scripts/lib/test-tiers.js +12 -96
  464. package/.agents/scripts/lib/ticket-body-sections.js +21 -96
  465. package/.agents/scripts/lib/transpile.js +15 -74
  466. package/.agents/scripts/lib/util/concurrent-map.js +6 -25
  467. package/.agents/scripts/lib/util/parse-id-list.js +8 -34
  468. package/.agents/scripts/lib/util/poll-loop.js +8 -28
  469. package/.agents/scripts/lib/util/with-timeout.js +2 -11
  470. package/.agents/scripts/lib/validation-evidence.js +21 -96
  471. package/.agents/scripts/lib/wave-runner/footprint.js +17 -70
  472. package/.agents/scripts/lib/wave-runner/live-probe.js +67 -209
  473. package/.agents/scripts/lib/wave-runner/ready-set.js +72 -301
  474. package/.agents/scripts/lib/workers/crap-worker.js +11 -64
  475. package/.agents/scripts/lib/workers/maintainability-report-worker.js +8 -45
  476. package/.agents/scripts/lib/workers/maintainability-worker.js +5 -21
  477. package/.agents/scripts/lib/workers/serve-worker-messages.js +2 -18
  478. package/.agents/scripts/lib/workflow-closure.js +22 -105
  479. package/.agents/scripts/lib/workspace-provisioner.js +16 -54
  480. package/.agents/scripts/lib/worktree/git-hooks.js +15 -60
  481. package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +20 -60
  482. package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +10 -62
  483. package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +22 -86
  484. package/.agents/scripts/lib/worktree/lifecycle/reap.js +24 -126
  485. package/.agents/scripts/lib/worktree/lifecycle-manager.js +2 -20
  486. package/.agents/scripts/lib/worktree/node-modules-strategy.js +46 -180
  487. package/.agents/scripts/lib/worktree-manager.js +15 -40
  488. package/.agents/scripts/lint-issue-body.js +12 -68
  489. package/.agents/scripts/mandrel-update-preflight.js +10 -70
  490. package/.agents/scripts/merge-baseline.js +30 -105
  491. package/.agents/scripts/nav-registry-diff.js +22 -108
  492. package/.agents/scripts/notify.js +12 -69
  493. package/.agents/scripts/plan-context.js +97 -92
  494. package/.agents/scripts/plan-critics.js +12 -66
  495. package/.agents/scripts/plan-persist.js +71 -137
  496. package/.agents/scripts/plan-run-epilogue.js +20 -43
  497. package/.agents/scripts/pr-watch-with-update.js +79 -263
  498. package/.agents/scripts/providers/github/auth.js +3 -8
  499. package/.agents/scripts/providers/github/blocked-by-add.js +14 -61
  500. package/.agents/scripts/providers/github/board-add.js +5 -21
  501. package/.agents/scripts/providers/github/branch-protection.js +11 -43
  502. package/.agents/scripts/providers/github/cache.js +2 -14
  503. package/.agents/scripts/providers/github/comments.js +7 -40
  504. package/.agents/scripts/providers/github/compose.js +3 -19
  505. package/.agents/scripts/providers/github/errors.js +22 -125
  506. package/.agents/scripts/providers/github/issues.js +31 -123
  507. package/.agents/scripts/providers/github/labels.js +24 -124
  508. package/.agents/scripts/providers/github/mappers.js +5 -27
  509. package/.agents/scripts/providers/github/merge-methods.js +3 -22
  510. package/.agents/scripts/providers/github/project-board.js +2 -17
  511. package/.agents/scripts/providers/github/projects-v2-graphql.js +3 -6
  512. package/.agents/scripts/providers/github/request-helpers.js +5 -32
  513. package/.agents/scripts/providers/github/search-budget.js +9 -39
  514. package/.agents/scripts/providers/github/search-query.js +5 -26
  515. package/.agents/scripts/providers/github/sub-issue-add.js +15 -65
  516. package/.agents/scripts/providers/github/sub-issues.js +7 -36
  517. package/.agents/scripts/providers/github/tickets.js +32 -134
  518. package/.agents/scripts/providers/github.js +18 -59
  519. package/.agents/scripts/prune-plan-run-labels.js +12 -46
  520. package/.agents/scripts/quality-preview.js +35 -220
  521. package/.agents/scripts/resolve-doc-tiers.js +3 -26
  522. package/.agents/scripts/resolve-stories.js +16 -67
  523. package/.agents/scripts/resync-status-column.js +6 -25
  524. package/.agents/scripts/run-tests.js +29 -104
  525. package/.agents/scripts/single-story-close.js +23 -135
  526. package/.agents/scripts/single-story-confirm-merge.js +32 -139
  527. package/.agents/scripts/single-story-init.js +47 -259
  528. package/.agents/scripts/stories-wave-tick.js +179 -415
  529. package/.agents/scripts/sync-agentrc.js +3 -21
  530. package/.agents/scripts/sync-claude-agents.js +9 -55
  531. package/.agents/scripts/sync-claude-commands.js +20 -110
  532. package/.agents/scripts/test-wrapper.js +6 -43
  533. package/.agents/scripts/update-coverage-baseline.js +5 -22
  534. package/.agents/scripts/update-crap-baseline.js +7 -30
  535. package/.agents/scripts/update-duplication-baseline.js +16 -92
  536. package/.agents/scripts/update-maintainability-baseline.js +8 -62
  537. package/.agents/scripts/update-ticket-state.js +1 -7
  538. package/.agents/scripts/validate-skills.js +6 -26
  539. package/.agents/skills/core/gates-and-baselines/reference.md +0 -1
  540. package/.agents/skills/skills.index.json +2 -2
  541. package/.agents/skills/stack/qa/playwright/SKILL.md +26 -0
  542. package/.agents/templates/agent-protocol.md +2 -2
  543. package/.agents/templates/docs/audit-sweep-runbook.md +3 -4
  544. package/.agents/workflows/audit-accessibility.md +4 -7
  545. package/.agents/workflows/audit-adrs.md +3 -6
  546. package/.agents/workflows/audit-architecture.md +3 -11
  547. package/.agents/workflows/audit-baselines.md +6 -9
  548. package/.agents/workflows/audit-clean-code.md +8 -12
  549. package/.agents/workflows/audit-data-model.md +3 -7
  550. package/.agents/workflows/audit-dependencies.md +4 -7
  551. package/.agents/workflows/audit-devops.md +4 -8
  552. package/.agents/workflows/audit-documentation.md +1 -4
  553. package/.agents/workflows/audit-mobile.md +4 -7
  554. package/.agents/workflows/audit-navigability.md +3 -6
  555. package/.agents/workflows/audit-performance.md +2 -4
  556. package/.agents/workflows/audit-privacy.md +4 -7
  557. package/.agents/workflows/audit-quality.md +4 -7
  558. package/.agents/workflows/audit-security.md +4 -7
  559. package/.agents/workflows/audit-seo.md +4 -7
  560. package/.agents/workflows/audit-sre.md +4 -7
  561. package/.agents/workflows/audit-to-stories.md +17 -30
  562. package/.agents/workflows/audit-ux-ui.md +4 -7
  563. package/.agents/workflows/helpers/acceptance-self-eval.md +84 -157
  564. package/.agents/workflows/helpers/audit-lens-core.md +1 -1
  565. package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
  566. package/.agents/workflows/helpers/code-review.md +4 -2
  567. package/.agents/workflows/helpers/deliver-digest.md +37 -28
  568. package/.agents/workflows/helpers/deliver-light.md +92 -101
  569. package/.agents/workflows/helpers/deliver-reference.md +162 -220
  570. package/.agents/workflows/helpers/deliver-story-reference.md +197 -607
  571. package/.agents/workflows/helpers/deliver-story.md +17 -18
  572. package/.agents/workflows/helpers/plan-reference.md +125 -167
  573. package/.agents/workflows/helpers/qa-core.md +12 -0
  574. package/.agents/workflows/mandrel-deliver.md +47 -31
  575. package/.agents/workflows/mandrel-plan.md +22 -21
  576. package/.agents/workflows/mandrel-update.md +36 -21
  577. package/.agents/workflows/memory-consolidate.md +1 -1
  578. package/.agents/workflows/qa-assist.md +27 -71
  579. package/.agents/workflows/qa-explore.md +19 -59
  580. package/.agents/workflows/qa-run.md +11 -33
  581. package/README.md +1 -1
  582. package/bin/mandrel.js +5 -46
  583. package/bin/postinstall.js +18 -107
  584. package/docs/CHANGELOG.md +60 -0
  585. package/lib/cli/doctor.js +11 -71
  586. package/lib/cli/init.js +26 -165
  587. package/lib/cli/migrate.js +5 -64
  588. package/lib/cli/registry.js +84 -467
  589. package/lib/cli/sync-agents.js +4 -64
  590. package/lib/cli/sync-commands.js +11 -64
  591. package/lib/cli/sync.js +34 -213
  592. package/lib/cli/uninstall.js +40 -219
  593. package/lib/cli/update.js +326 -523
  594. package/lib/cli/version-check.js +8 -72
  595. package/lib/cli/version-helpers.js +14 -87
  596. package/lib/migrations/helpers/retire-agentrc-key.js +11 -52
  597. package/lib/migrations/index.js +17 -92
  598. package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +2 -15
  599. package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +1 -13
  600. package/lib/migrations/steps/2.11.0-retire-max-seed-words.js +2 -15
  601. package/lib/migrations/steps/2.2.0-retire-epic-ac-tags.js +9 -38
  602. package/lib/migrations/steps/2.20.0-retire-codebase-snapshot.js +1 -13
  603. package/lib/migrations/steps/2.32.0-retire-lint-baseline-command.js +2 -27
  604. package/lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js +2 -23
  605. package/lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js +2 -27
  606. package/lib/migrations/steps/2.60.0-retire-audit-results-autofile.js +21 -0
  607. package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
  608. package/package.json +17 -14
  609. package/.agents/docs/SDLC.md +0 -590
  610. package/.agents/docs/quality-gates.md +0 -1179
  611. package/.agents/rules/known-tooling-behavior.md +0 -150
  612. package/.agents/rules/orchestration-error-handling.md +0 -61
  613. package/.agents/rules/test-seams.md +0 -59
  614. package/.agents/schemas/baselines/lighthouse.schema.json +0 -59
  615. package/.agents/schemas/baselines/lint.schema.json +0 -47
  616. package/.agents/schemas/model-attribution.schema.json +0 -53
  617. package/.agents/scripts/check-action-pinning.js +0 -260
  618. package/.agents/scripts/check-audit-attribution.js +0 -302
  619. package/.agents/scripts/check-baseline-drift.js +0 -211
  620. package/.agents/scripts/check-baseline-scope.js +0 -362
  621. package/.agents/scripts/check-generated-validator.js +0 -202
  622. package/.agents/scripts/check-knip-entries.js +0 -159
  623. package/.agents/scripts/check-lifecycle-lint.js +0 -294
  624. package/.agents/scripts/check-pinned-override-notes.js +0 -102
  625. package/.agents/scripts/check-schema-references.js +0 -366
  626. package/.agents/scripts/check-test-portability.js +0 -512
  627. package/.agents/scripts/check-workflow-citations.js +0 -332
  628. package/.agents/scripts/check-workflow-cli-lint.js +0 -299
  629. package/.agents/scripts/check-workflow-timeouts.js +0 -291
  630. package/.agents/scripts/install-matrix-assert.js +0 -326
  631. package/.agents/scripts/lib/audit-advisories.js +0 -195
  632. package/.agents/scripts/lib/audit-attribution.js +0 -134
  633. package/.agents/scripts/lib/baselines/drift-detector.js +0 -351
  634. package/.agents/scripts/lib/baselines/kinds/lighthouse.js +0 -87
  635. package/.agents/scripts/lib/baselines/kinds/lint.js +0 -184
  636. package/.agents/scripts/lib/baselines/orphan-pruner.js +0 -233
  637. package/.agents/scripts/lib/baselines/scope-assert.js +0 -223
  638. package/.agents/scripts/lib/baselines/scope-inventory.js +0 -314
  639. package/.agents/scripts/lib/c8-cli-path.js +0 -21
  640. package/.agents/scripts/lib/config/gates/lighthouse.schema.js +0 -51
  641. package/.agents/scripts/lib/config/gates/lint.schema.js +0 -18
  642. package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +0 -70
  643. package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +0 -284
  644. package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +0 -80
  645. package/.agents/scripts/lib/dynamic-workflow/degraded-coverage.js +0 -81
  646. package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +0 -87
  647. package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +0 -74
  648. package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +0 -90
  649. package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +0 -43
  650. package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +0 -83
  651. package/.agents/scripts/lib/fs-walk.js +0 -52
  652. package/.agents/scripts/lib/knip-config-resolver.js +0 -181
  653. package/.agents/scripts/lib/knip-entry-sync.js +0 -452
  654. package/.agents/scripts/lib/orchestration/model-attribution.js +0 -418
  655. package/.agents/scripts/lib/orchestration/story-plan-state.js +0 -33
  656. package/.agents/scripts/lib/orchestration/structured-comment-parser.js +0 -67
  657. package/.agents/scripts/lib/pinned-override-notes.js +0 -88
  658. package/.agents/scripts/lib/pinned-override-resolve.js +0 -212
  659. package/.agents/scripts/lib/test-isolate/cli-options.js +0 -93
  660. package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +0 -52
  661. package/.agents/scripts/lib/test-isolate/list-files.js +0 -90
  662. package/.agents/scripts/lib/test-isolate/parse-tap.js +0 -75
  663. package/.agents/scripts/lib/test-isolate/progress-log.js +0 -45
  664. package/.agents/scripts/lib/test-isolate/render-report.js +0 -97
  665. package/.agents/scripts/lib/test-isolate/run-isolate.js +0 -87
  666. package/.agents/scripts/lib/test-isolate/runner.js +0 -483
  667. package/.agents/scripts/lib/test-profile/parse-tap.js +0 -136
  668. package/.agents/scripts/lib/test-profile/render-report.js +0 -45
  669. package/.agents/scripts/lint-label-vocabulary.js +0 -214
  670. package/.agents/scripts/post-structured-comment.js +0 -127
  671. package/.agents/scripts/provision-git-hooks.js +0 -85
  672. package/.agents/scripts/prune-baseline-orphans.js +0 -181
  673. package/.agents/scripts/run-coverage.js +0 -197
  674. package/.agents/scripts/run-lint.js +0 -133
  675. package/.agents/scripts/run-test-profile.js +0 -129
  676. package/.agents/scripts/run-verify.js +0 -118
  677. package/.agents/scripts/test-isolate.js +0 -55
  678. 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
  */