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,34 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * .agents/scripts/generate-lens-checklists.js — per-lens authoring checklists
4
- *
5
- * Distils each canonical audit lens's own `.agents/workflows/audit-<lens>.md`
6
- * workflow body into one compact authoring checklist under
7
- * `.agents/audit-checklists/<lens>.md`. The distillation logic is the pure
8
- * `lib/audit-suite/lens-checklist.js` seam; this entry point owns only the
9
- * file read/write/prune and the `--check` drift gate.
10
- *
11
- * Why (Epic #4405 — shift-left audit): the audit lenses used to surface their
12
- * concerns only when `/audit-<lens>` ran. These checklists move the concerns to
13
- * the innermost, write-time tier as committed build artifacts, gated for
14
- * staleness by `npm run docs:check` exactly like every other generated doc so
15
- * they can never silently drift from their source workflow.
16
- *
17
- * The lens taxonomy is the SSOT `AUDIT_LENSES` list. A lens whose
18
- * `audit-<lens>.md` workflow is absent produces **no** checklist and is
19
- * reported (never a silent skip). Stray `.md` files under the checklist
20
- * directory that no longer map to a lens are pruned in write mode and flagged
21
- * in `--check` mode, keeping the directory a pure function of its sources.
22
- *
23
- * Modes:
24
- * (default) — writes one `<lens>.md` per lens with a workflow, prunes
25
- * strays, reports lenses missing a workflow.
26
- * --check — exits 0 when every on-disk file matches the freshly generated
27
- * content and no strays exist, throws (→ exit 1) otherwise.
28
- *
29
- * Per `.agents/rules/orchestration-error-handling.md`, unrecoverable failures
30
- * surface via `throw new Error(...)` so `runAsCli` maps the throw to
31
- * `process.exit(1)` deterministically (no `Logger.fatal`).
3
+ * Distils each `audit-<lens>.md` workflow into a committed write-time
4
+ * checklist under `.agents/audit-checklists/`. The directory is a pure
5
+ * function of its sources: strays are pruned (flagged under `--check`), and a
6
+ * lens with no workflow is reported, never silently skipped.
32
7
  */
33
8
 
34
9
  import fs from 'node:fs';
@@ -47,12 +22,7 @@ const WORKFLOWS_DIR = path.join(PROJECT_ROOT, '.agents', 'workflows');
47
22
  const CHECKLISTS_DIR = path.join(PROJECT_ROOT, '.agents', 'audit-checklists');
48
23
 
49
24
  /**
50
- * Pure: plan the expected checklist set from the lens taxonomy, given a
51
- * workflow-existence predicate and a reader. A lens whose workflow is absent
52
- * yields no checklist and is recorded in `missing` (never silently skipped).
53
- * Kept side-effect-free so it is unit-testable with fabricated inputs.
54
- *
55
- * @param {ReadonlyArray<string>} lenses — canonical lens names.
25
+ * @param {ReadonlyArray<string>} lenses
56
26
  * @param {(lens: string) => boolean} workflowExists
57
27
  * @param {(lens: string) => string} readWorkflow
58
28
  * @returns {{ expected: Map<string, string>, missing: string[] }}
@@ -71,17 +41,11 @@ export function planChecklists(lenses, workflowExists, readWorkflow) {
71
41
  }
72
42
 
73
43
  /**
74
- * Build the full expected checklist set from the lens taxonomy and the on-disk
75
- * workflow bodies, plus the strays (on-disk checklist files mapping to no
76
- * current lens).
77
- *
78
44
  * @returns {{
79
45
  * expected: Map<string, string>,
80
46
  * missing: string[],
81
47
  * strays: string[],
82
- * }} `expected` maps a checklist basename (`<lens>.md`) to its generated
83
- * content; `missing` lists lenses with no `audit-<lens>.md`; `strays` lists
84
- * on-disk checklist basenames that map to no current lens.
48
+ * }}
85
49
  */
86
50
  export function buildExpected({
87
51
  fsImpl = fs,
@@ -105,10 +69,10 @@ export function buildExpected({
105
69
  }
106
70
 
107
71
  /**
108
- * @param {string} basename — e.g. `security.md`
72
+ * @param {string} basename
109
73
  * @param {string} [checklistsDir]
110
74
  * @param {string} [projectRoot]
111
- * @returns {string} repo-relative POSIX path for messages.
75
+ * @returns {string}
112
76
  */
113
77
  function relChecklist(
114
78
  basename,
@@ -122,14 +86,6 @@ function relChecklist(
122
86
  }
123
87
 
124
88
  /**
125
- * The generator core, extracted from the CLI shell so both modes — the
126
- * `--check` drift gate and the write/prune pass — are reachable without
127
- * touching the real `.agents/audit-checklists` tree.
128
- *
129
- * Every seam on the optional final `deps` parameter defaults to the real
130
- * implementation (`.agents/rules/test-seams.md` rules 1-2, 4), so `main` and
131
- * `npm run docs:check` are unchanged.
132
- *
133
89
  * @param {string[]} [argv]
134
90
  * @param {{
135
91
  * fsImpl?: typeof fs,
@@ -1,43 +1,10 @@
1
1
  #!/usr/bin/env node
2
- // .agents/scripts/generate-skills-index.js
3
- //
4
- // Walk `.agents/skills/{core,stack}/**/SKILL.md` via the shared parser
5
- // helper, project each parsed result into an index entry, and write the
6
- // aggregated manifest to `.agents/skills/skills.index.json`. Supports a
7
- // `--check` mode that compares the on-disk manifest against fresh
8
- // generator output (ignoring the volatile `generatedAt` field) and exits
9
- // non-zero with a diff-style message if they diverge.
10
- //
11
- // Two indexes, never one (Story #5135). The shipped manifest above is a
12
- // committed payload file that `mandrel doctor` / `mandrel sync-agents`
13
- // compare byte-for-byte against the installed package, so consumer-authored
14
- // skills under the `.agents/local/skills/` zone MUST NOT be folded into it —
15
- // a merged index would read as payload drift in every consumer that authored
16
- // a skill, and those commands would refuse. Local skills are therefore
17
- // indexed into their own `.agents/local/skills/skills.index.json`, inside
18
- // the zone sync never prunes and drift never walks.
19
- //
20
- // CLI surface:
21
- //
22
- // node generate-skills-index.js [--check] [--root <dir>] [--out <file>]
23
- //
24
- // --check Read the on-disk manifest, compare to generator output
25
- // modulo `generatedAt`. Exit 0 on match, non-zero on
26
- // drift. Does not write.
27
- // --root <dir> Use <dir> as the repo root (defaults to the project
28
- // root containing `.agents/skills`). Useful for tests
29
- // staging fixture trees outside the real repo.
30
- // --out <file> Override the manifest output path (defaults to
31
- // `<root>/.agents/skills/skills.index.json`).
32
- //
33
- // Written output is passed through the project formatter (Biome) so that
34
- // regenerating on a clean tree leaves no format drift behind; the step is
35
- // best-effort and degrades to plain `JSON.stringify` output where Biome is
36
- // not installed. See `lib/format-generated-json.js`.
37
- //
38
- // Honors AGENT_LOG_LEVEL via the shared `Logger`. Stdout is reserved for
39
- // the diff text in --check failure mode; informational progress goes to
40
- // stderr.
2
+ // Writes `.agents/skills/skills.index.json` from every payload SKILL.md;
3
+ // `--check` compares modulo `generatedAt`. Consumer skills under
4
+ // `.agents/local/skills/` get their own index and must never be merged into
5
+ // the payload one: doctor/sync-agents compare it byte-for-byte against the
6
+ // package and would read a merged index as drift. Stdout is reserved for the
7
+ // `--check` diff; progress goes to stderr.
41
8
 
42
9
  import fs from 'node:fs';
43
10
  import path from 'node:path';
@@ -72,11 +39,7 @@ function defaultRepoRoot() {
72
39
  return path.resolve(here, '..', '..');
73
40
  }
74
41
 
75
- /**
76
- * Parse CLI flags. Returns `{ check, root, out }`. Unknown flags trigger
77
- * a thrown Error (from the shared parser) so the runAsCli boundary can
78
- * surface a clean message.
79
- */
42
+ /** Unknown flags throw, for runAsCli to surface. */
80
43
  export function parseArgs(argv) {
81
44
  if (argv.some((t) => t === '--help' || t === '-h')) {
82
45
  return { check: false, root: null, out: null, help: true };
@@ -92,15 +55,7 @@ export function parseArgs(argv) {
92
55
  return { check: values.check, root: values.root, out: values.out };
93
56
  }
94
57
 
95
- /**
96
- * Project a parseSkill result into an index entry shaped by
97
- * `.agents/schemas/skills-index.schema.json`.
98
- *
99
- * Post-Wave-2 every SKILL.md carries a 5–12-bullet Policy Capsule.
100
- * `policyCapsuleBullets` records that count for the manifest entry.
101
- * A value of `0` means the parser did not find the capsule section and
102
- * is a validator-rejected condition (see validate-skills.js).
103
- */
58
+ /** `policyCapsuleBullets: 0` means no capsule was found (validator-rejected). */
104
59
  function projectEntry(parsed) {
105
60
  return {
106
61
  name: parsed.name,
@@ -119,10 +74,6 @@ function projectEntry(parsed) {
119
74
  };
120
75
  }
121
76
 
122
- /**
123
- * Build the manifest object (without `generatedAt`) by walking the tree
124
- * and projecting each parsed SKILL.md into an index entry.
125
- */
126
77
  export function buildManifestBody(repoRoot, collect = collectSkillFiles) {
127
78
  const skillFiles = collect(repoRoot);
128
79
  const skills = skillFiles.map((absPath) =>
@@ -134,10 +85,6 @@ export function buildManifestBody(repoRoot, collect = collectSkillFiles) {
134
85
  };
135
86
  }
136
87
 
137
- /**
138
- * Build the full manifest with `generatedAt`. `nowIso` is injected so
139
- * tests can pin the timestamp deterministically.
140
- */
141
88
  export function buildManifest(repoRoot, { nowIso, collect } = {}) {
142
89
  const body = buildManifestBody(repoRoot, collect);
143
90
  return {
@@ -148,44 +95,24 @@ export function buildManifest(repoRoot, { nowIso, collect } = {}) {
148
95
  }
149
96
 
150
97
  /**
151
- * Serialize a manifest object as canonical JSON: 2-space indent,
152
- * trailing newline. Two runs against an unchanged corpus produce
153
- * byte-identical output modulo `generatedAt`.
154
- *
155
- * This is the *pre-format* shape. `JSON.stringify` expands every array
156
- * across multiple lines, while Biome collapses short ones that fit
157
- * inside `lineWidth` (`"allowedTools": ["Read", "Bash"]`). Writing this
158
- * text verbatim therefore leaves the tree format-dirty on every run —
159
- * see `lib/format-generated-json.js`, which reconciles the two.
98
+ * Pre-format shape: Biome collapses short arrays this expands, so writes go
99
+ * through `formatGeneratedJson` or the tree is format-dirty on every run.
160
100
  */
161
101
  export function serializeManifest(manifest) {
162
102
  return `${JSON.stringify(manifest, null, 2)}\n`;
163
103
  }
164
104
 
165
- /**
166
- * Resolve the manifest output path given (root, optional explicit
167
- * override).
168
- */
169
105
  function resolveOutPath(root, override) {
170
106
  return override
171
107
  ? path.resolve(override)
172
108
  : indexPathFor(root, PAYLOAD_SKILLS_SEGMENTS);
173
109
  }
174
110
 
175
- /**
176
- * Resolve the local-zone manifest path. Deliberately NOT overridable by
177
- * `--out`: that flag redirects the payload manifest (tests stage fixture
178
- * trees with it), and letting it also move the local manifest would let one
179
- * invocation write both indexes to the same file.
180
- */
111
+ /** Not overridable by `--out`, or one run could write both indexes to one file. */
181
112
  function resolveLocalOutPath(root) {
182
113
  return indexPathFor(root, LOCAL_SKILLS_SEGMENTS);
183
114
  }
184
115
 
185
- /**
186
- * Write one manifest through the project formatter so a regeneration on a
187
- * clean tree leaves no format drift behind.
188
- */
189
116
  function writeManifest(manifest, outPath, root) {
190
117
  const serialized = serializeManifest(manifest);
191
118
  const opts = { cwd: root, filename: INDEX_FILENAME };
@@ -196,12 +123,7 @@ function writeManifest(manifest, outPath, root) {
196
123
  );
197
124
  }
198
125
 
199
- /**
200
- * Write (or reap) the local-zone manifest. A consumer who deletes their last
201
- * local skill would otherwise be left with a stale index reporting skills
202
- * that no longer exist, so an emptied zone removes the artifact rather than
203
- * leaving it behind.
204
- */
126
+ /** An emptied local zone removes its index rather than leave a stale one. */
205
127
  function writeLocalManifest(localFresh, localOutPath, root) {
206
128
  const rel = path.relative(root, localOutPath).split(path.sep).join('/');
207
129
  if (localFresh === null) {
@@ -215,11 +137,6 @@ function writeLocalManifest(localFresh, localOutPath, root) {
215
137
  Logger.info(`wrote ${rel} (${localFresh.skills.length} entries)`);
216
138
  }
217
139
 
218
- /**
219
- * Compare the local-zone manifest against fresh generator output. Returns
220
- * null when in sync (including the common case of no local skills and no
221
- * artifact), or a diff-style message.
222
- */
223
140
  function checkLocalManifest(localFresh, localOutPath) {
224
141
  const exists = fs.existsSync(localOutPath);
225
142
  if (localFresh === null) {
@@ -240,13 +157,7 @@ function checkLocalManifest(localFresh, localOutPath) {
240
157
  }
241
158
 
242
159
  /**
243
- * Build the local zone's manifest plan for this invocation: its output path,
244
- * and a fresh manifest when the consumer has authored any local skill (null
245
- * otherwise, which is the signal to reap a stale artifact).
246
- *
247
- * Split out of `run` so the payload path and the local path each read as one
248
- * step there rather than interleaving.
249
- *
160
+ * A null `localFresh` signals reaping a stale artifact.
250
161
  * @param {string} root
251
162
  * @param {Date} now
252
163
  * @returns {{ localFresh: object | null, localOutPath: string }}
@@ -264,9 +175,6 @@ function buildLocalPlan(root, now) {
264
175
  }
265
176
 
266
177
  /**
267
- * Render the freshness line's entry counts, naming the local zone only when
268
- * one exists.
269
- *
270
178
  * @param {object} fresh
271
179
  * @param {object | null} localFresh
272
180
  * @returns {string}
@@ -279,13 +187,7 @@ function describeCounts(fresh, localFresh) {
279
187
  }
280
188
 
281
189
  /**
282
- * `--check` mode: compare both manifests against fresh generator output and
283
- * report the first drift found, payload first.
284
- *
285
- * Lives outside `run` so the entry point reads as "resolve inputs, then check
286
- * or write" — and so the check path's branches are not charged to a function
287
- * that also owns argument resolution.
288
- *
190
+ * Reports the first drift found, payload first.
289
191
  * @param {{ outPath: string, fresh: object, localOutPath: string, localFresh: object | null }} plan
290
192
  * @returns {{ status: number, output: string }}
291
193
  */
@@ -1,33 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * .agents/scripts/generate-workflows-doc.js — Catalog-backed workflows index
4
- *
5
- * Renders the consumer-shipped slash-command catalog at
6
- * `.agents/docs/workflows.md` from the on-disk workflow set under
7
- * `.agents/workflows/*.md` (top-level only — `helpers/` are path-included
8
- * modules, not runnable slash commands). The catalog logic is shared with
9
- * the in-process backend in `lib/mandrel-catalog.js`, so the generated doc
10
- * and any programmatic catalog reader never drift from one another.
11
- *
12
- * Why generated (Story #3708): `workflows.md` used to be hand-maintained and
13
- * was *not* drift-gated, so it could silently fall out of sync with the
14
- * actual workflow set. The retired `/mandrel` discoverability command was
15
- * always accurate because it rendered the catalog live. Rather than keep the
16
- * drift-prone hand-authored doc and the accurate-but-ephemeral command, this
17
- * generator makes the doc itself a rendering of the same catalog, gates it via
18
- * `--check`, and ships it to consumers under `.agents/docs/`.
19
- *
20
- * Modes:
21
- * (default) — rewrites `.agents/docs/workflows.md` in full from the
22
- * current workflow set.
23
- * --check — exits 0 when the on-disk file matches the freshly generated
24
- * content, throws (→ exit 1) with a regeneration hint otherwise.
25
- * --root — read and write under another checkout's `.agents/` tree.
26
- * See {@link resolveTargets} for why this seam exists.
27
- *
28
- * Per `.agents/rules/orchestration-error-handling.md`, unrecoverable failures
29
- * surface via `throw new Error(...)` so `runAsCli` maps the throw to
30
- * `process.exit(1)` deterministically (no `Logger.fatal`).
3
+ * Renders `.agents/docs/workflows.md` from the top-level workflow set via the
4
+ * shared `lib/mandrel-catalog.js`, so the doc and programmatic readers cannot
5
+ * drift; `--check` gates it.
31
6
  */
32
7
 
33
8
  import fs from 'node:fs';
@@ -43,28 +18,9 @@ const __dirname = path.dirname(__filename);
43
18
  const PROJECT_ROOT = path.resolve(__dirname, '..', '..');
44
19
 
45
20
  /**
46
- * Resolve the workflow source directory and the generated doc for one
47
- * repository root.
48
- *
49
- * The `--root` seam this backs exists for the drift gate's own test. That
50
- * test used to prove the gate by editing the *real*
51
- * `.agents/workflows/mandrel-deliver.md`, running `--check`, and restoring
52
- * the file in `afterEach`. The proof was sound; the blast radius was not.
53
- * `node --test` runs test files in parallel against one shared checkout, so
54
- * for the ~1s the real file sat mutated, every other test file observed a
55
- * dirty tree — and `tests/enforcement/workflow-script-help.test.js`, whose
56
- * final assertion is a repo-wide `git status --porcelain`, reported it as
57
- * "`--help` mutated the working tree" on the Windows Smoke job, where the
58
- * wider process-spawn cost stretches that window far enough to collide.
59
- *
60
- * A generator that can only ever be pointed at its own checkout forces that
61
- * choice. Pointing it at a fixture root removes it.
62
- *
63
- * The `--root` default is applied here rather than at the call site so the
64
- * one branch it costs lives with the resolution it belongs to.
65
- *
66
- * @param {string} [root] Repository root to render against; defaults to this
67
- * checkout. A relative path is resolved against the process cwd.
21
+ * The `--root` seam lets the drift gate's test use a fixture root: mutating
22
+ * the real workflow file dirties the shared checkout for parallel test files.
23
+ * @param {string} [root]
68
24
  * @returns {{ root: string, workflowsDir: string, docPath: string }}
69
25
  */
70
26
  export function resolveTargets(root) {
@@ -76,21 +32,11 @@ export function resolveTargets(root) {
76
32
  };
77
33
  }
78
34
 
79
- /** This checkout's own targets — the default when `--root` is absent. */
80
35
  const { workflowsDir: WORKFLOWS_DIR, docPath: DOC_PATH } = resolveTargets();
81
36
 
82
37
  /**
83
- * Collapse a catalog description to a single Markdown table-cell-safe line.
84
- * The catalog already normalizes whitespace; this neutralizes:
85
- * - pipe characters (`|`) so a description can never break the table grid;
86
- * - stray newlines;
87
- * - bare emphasis markers (`*`, `_`) so a glob like `audit-*` in a
88
- * description is rendered literally instead of being parsed as emphasis
89
- * (which trips markdownlint MD037 in the generated doc).
90
- *
91
- * Framework workflow descriptions do not embed `*`/`_` inside inline code
92
- * spans, so a global escape is safe and keeps the generator pure.
93
- *
38
+ * Escapes `*`/`_` so a glob like `audit-*` is not parsed as emphasis (MD037);
39
+ * safe globally because descriptions put neither inside code spans.
94
40
  * @param {string | null} description
95
41
  * @returns {string}
96
42
  */
@@ -103,9 +49,6 @@ function cellEscape(description) {
103
49
  }
104
50
 
105
51
  /**
106
- * Render the full generated `workflows.md` content from the flat command
107
- * catalog and the loop-unit catalog.
108
- *
109
52
  * @param {Array<{ name: string, description: string | null, vague: boolean }>} catalog
110
53
  * @param {Array<{ name: string, description: string | null, vague: boolean }>} [loopCatalog]
111
54
  * @returns {string}
@@ -124,7 +67,7 @@ export function renderWorkflowsDoc(catalog, loopCatalog = []) {
124
67
  'This is an **auto-generated reference index** of every slash command shipped',
125
68
  'under `.agents/workflows/` (top-level only — `helpers/` are path-included',
126
69
  'modules, not runnable commands). The canonical workflow narrative lives in',
127
- '[`SDLC.md`](SDLC.md) — read that first to understand how the commands',
70
+ '[`SDLC.md`](https://github.com/dsj1984/mandrel/blob/main/docs/SDLC.md) — read that first to understand how the commands',
128
71
  'compose. This file is only for "which command does X?" lookups.',
129
72
  '',
130
73
  'Every command file lives at `.agents/workflows/<name>.md` and is projected',
@@ -184,10 +127,7 @@ export function renderWorkflowsDoc(catalog, loopCatalog = []) {
184
127
  }
185
128
 
186
129
  /**
187
- * Build the canonical generated content and read the on-disk file (if any).
188
- *
189
- * @param {string} [root] Repository root to render against; see
190
- * {@link resolveTargets}.
130
+ * @param {string} [root]
191
131
  * @returns {{
192
132
  * generated: string,
193
133
  * original: string | null,
@@ -2,41 +2,9 @@
2
2
  /* node:coverage ignore file -- multi-phase repo-cleanup CLI; thin shell over `git` + `gh` */
3
3
 
4
4
  /**
5
- * git-cleanup.js — Story #2466 thin CLI shell over the multi-phase
6
- * cleanup pipeline.
5
+ * Thin CLI shell over the `lib/orchestration/git-cleanup/phases/` pipeline.
7
6
  *
8
- * The pipeline lives under `lib/orchestration/git-cleanup/phases/`:
9
- *
10
- * 1. parse-args — argv → normalized opts bag (`parseCleanupArgs`).
11
- * 2. filters — pure glob + protected-branch helpers.
12
- * 3. git-probes — every `gitSpawn` / `gh` subprocess wrapper plus
13
- * small parsers (`probeMergedPr`, etc).
14
- * 4. branches — merged-branch reap (`planCleanup`,
15
- * `executeCleanup`).
16
- * 5. fast-forward — fast-forward-main phase.
17
- * 6. prune — prune-remotes phase + `parsePrunedRefs`.
18
- * 7. stashes — stash triage (`parseStashList`, `planStashes`,
19
- * `executeStashes`, `stashRefIndex`,
20
- * `buildAllowlistDecider`).
21
- * 8. render — operator-facing renderers + `buildJsonEnvelope`,
22
- * `computeExitCode`.
23
- * 9. cli — interactive prompts + per-phase drivers + `main`.
24
- *
25
- * Public CLI surface, named exports, and exit codes are byte-identical
26
- * to the pre-refactor implementation. See the original module docstring
27
- * (preserved below) for the operator-facing flag + phase contract.
28
- *
29
- * Phases (selectable, run sequentially when no narrowing flag set):
30
- * 1. fast-forward-main — `git fetch origin <base>` → `git merge --ff-only`.
31
- * 2. prune-remotes — `git fetch --prune <remote>`.
32
- * 3. branches — enumerate merged local branches via `gh pr list`
33
- * + `git branch --merged <base>` and reap.
34
- * 4. stashes — `git stash list` → optional per-stash drops.
35
- *
36
- * Exit codes:
37
- * 0 — clean (dry-run preview, or every active phase succeeded).
38
- * 1 — at least one phase reported a failure.
39
- * 2 — every active phase produced nothing to do (informational).
7
+ * Exit codes: 0 clean or dry-run, 1 a phase failed, 2 nothing to do.
40
8
  */
41
9
 
42
10
  import { runAsCli } from './lib/cli-utils.js';