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,25 +1,7 @@
1
1
  /**
2
- * Unified Configuration Resolver — facade (Epic #1720 Story #1739).
3
- *
4
- * Resolution chain: `<project-root>/.agentrc.local.json` (optional) →
5
- * `.agentrc.json` → built-in defaults. Object keys deep-merge; absent local
6
- * file is a no-op.
7
- * `.env` is loaded lazily once per resolved root via `loadEnv`.
8
- *
9
- * Post-reshape, `.agentrc.json` declares four top-level blocks:
10
- * `project`, `github`, `planning`, `delivery`. The resolver runs the
11
- * full-document AJV gate (`AGENTRC_SCHEMA`) on load and returns a wrapper
12
- * carrying each block plus a `raw`/`source` metadata pair.
13
- *
14
- * Hard cutover (Epic #2880, Story #2947): both the input-side and
15
- * output-side legacy shapes are gone. Legacy `agentSettings.*` /
16
- * `orchestration.*` input documents are rejected by the AJV schema
17
- * (`additionalProperties: false` at the top level), and the previously
18
- * synthesized `agentSettings` / `orchestration` output pointers have been
19
- * deleted from the resolver wrapper. Every internal call site reads the
20
- * canonical `project` / `github` / `planning` / `delivery` blocks
21
- * directly; consumers upgrade in lockstep with the framework bump
22
- * (see `.agents/rules/git-conventions-reference.md#contract-cutovers-—-no-shim-layer`).
2
+ * Configuration resolver facade: `.agentrc.local.json` deep-merges over
3
+ * `.agentrc.json` over built-in defaults, validated against `AGENTRC_SCHEMA`
4
+ * on load. `.env` loads lazily once per resolved root.
23
5
  */
24
6
 
25
7
  import fs from 'node:fs';
@@ -45,9 +27,8 @@ export {
45
27
  } from './config/limits.js';
46
28
  export { getPaths } from './config/paths.js';
47
29
  export {
48
- CODING_GUARDRAILS_DEFAULTS,
30
+ CODING_GUARDRAILS,
49
31
  getQuality,
50
- resolveCodingGuardrails,
51
32
  resolveMaintainabilityCrap,
52
33
  resolveQuality,
53
34
  } from './config/quality.js';
@@ -95,10 +76,8 @@ function applyCommandsDefaults(project) {
95
76
  }
96
77
 
97
78
  /**
98
- * Enrich `delivery.worktreeIsolation` so an omitted field resolves to
99
- * WORKTREE_ISOLATION_DEFAULTS. Critical for `enabled`/`root` —
100
- * `Boolean(undefined) === false` previously disabled worktrees silently
101
- * when the operator omitted the block.
79
+ * Omitted `worktreeIsolation` fields resolve to defaults — otherwise an
80
+ * absent `enabled` reads as false and silently disables worktrees.
102
81
  */
103
82
  function applyDeliveryDefaults(rawDelivery) {
104
83
  const delivery = { ...(rawDelivery ?? {}) };
@@ -111,10 +90,6 @@ function applyDeliveryDefaults(rawDelivery) {
111
90
  return delivery;
112
91
  }
113
92
 
114
- /**
115
- * Apply framework defaults for the four top-level blocks. Pure (no
116
- * mutation) — returns a fresh object.
117
- */
118
93
  /**
119
94
  * Deep-merge plain objects for the `.agentrc.local.json` overlay. Arrays and
120
95
  * scalars from `override` replace the base value at that key.
@@ -174,9 +149,6 @@ const ZERO_CONFIG_RAW = Object.freeze({
174
149
 
175
150
  function applyDefaults(raw) {
176
151
  const project = applyCommandsDefaults({ ...(raw.project ?? {}) });
177
- // Default docsContextFiles list — same five files the framework has
178
- // always shipped, preserved here so zero-config callers and configs
179
- // that omit the list both get the canonical mandatory-reads set.
180
152
  if (project.docsContextFiles == null) {
181
153
  project.docsContextFiles = [
182
154
  'architecture.md',
@@ -194,29 +166,15 @@ function applyDefaults(raw) {
194
166
  github: applyGithubDefaults(raw.github),
195
167
  planning: raw.planning ?? {},
196
168
  delivery: applyDeliveryDefaults(raw.delivery),
197
- // `qa` is an optional top-level block (agentrc.schema.json
198
- // `#/$defs/qa`). It needs no default-layering — the harness resolver
199
- // (`resolveQaContract`) owns normalization and required-field
200
- // enforcement — it only needs to survive the reshape so
201
- // `/qa-run` Step 0 can read it off the resolved wrapper.
169
+ // Passed through as authored; `resolveQaContract` owns normalization.
202
170
  ...(raw.qa !== undefined ? { qa: raw.qa } : {}),
203
171
  };
204
172
  }
205
173
 
206
174
  /**
207
- * Load + validate `.agentrc.json` and return the resolved wrapper.
208
- *
209
- * Returned shape:
210
- * {
211
- * project, github, planning, delivery, // post-reshape canonical blocks
212
- * qa, // optional QA-harness block (present iff authored)
213
- * raw, source,
214
- * }
215
- *
216
- * Error policy:
217
- * - File missing (ENOENT) → fall through to built-in defaults (zero-config).
218
- * - File present but malformed JSON → throw immediately.
219
- * - Schema validation failure → throw with a single-line error list.
175
+ * Returns `{ project, github, planning, delivery, qa?, raw, source }`. A
176
+ * missing file falls back to defaults; malformed JSON or a schema failure
177
+ * throws.
220
178
  *
221
179
  * @param {{ bustCache?: boolean, cwd?: string, validate?: boolean, ctx?: object }} [opts]
222
180
  */
@@ -19,10 +19,7 @@ export const SHELL_INJECTION_RE = new RegExp(SHELL_INJECTION_PATTERN_STRING);
19
19
  */
20
20
  export const SHELL_INJECTION_RE_STRICT = /[&|;`<>()$]/;
21
21
 
22
- // Re-export the canonical baseline schema registry (Story #1888). The
23
- // registry implementation lives in `baseline-schema-registry.js`; this
24
- // re-export keeps `config-schema-shared.js` as the canonical import surface
25
- // for downstream consumers and the mirror-drift test.
22
+ // Canonical import surface for the baseline schema registry.
26
23
  export {
27
24
  BASELINE_ENVELOPE_FILE,
28
25
  BASELINE_KIND_SCHEMA_FILES,
@@ -1,23 +1,13 @@
1
1
  /* node:coverage ignore file -- AJV schema declaration (data-as-code); MI < 70 is inherent to large flat schema literals, no business logic to test */
2
2
 
3
- // ---------------------------------------------------------------------------
4
- // delivery.* sub-schemas — extracted from config-settings-schema.js to keep
5
- // the aggregate AGENTRC_SCHEMA module under the maintainability floor. These
6
- // are pure declarative AJV fragments referenced by DELIVERY_SCHEMA; moving
7
- // them here does not change validation semantics (the resolved schema is
8
- // byte-for-byte equivalent in effect).
9
- // ---------------------------------------------------------------------------
3
+ // delivery.* sub-schemas of AGENTRC_SCHEMA.
10
4
 
11
5
  import { ACCEPTANCE_EVAL_DEFAULTS } from './config/acceptance-eval.js';
12
6
  import { CI_DELIVERY_DEFAULTS } from './config/ci.js';
13
7
  import { DELIVERY_ROUTING_DEFAULTS } from './config/delivery-routing.js';
14
- import { LIMITS_DEFAULTS } from './config/limits.js';
15
8
  import { DEFAULT_CODE_REVIEW } from './config/runners.js';
16
9
  import { WORKTREE_ISOLATION_DEFAULTS } from './config/worktree-isolation.js';
17
10
  import { SHELL_INJECTION_PATTERN_STRING } from './config-schema-shared.js';
18
- // `delivery.quality` and `delivery.codeReview` sub-schemas live in a
19
- // further-split module (refs #3457) so each schema file stays above the
20
- // maintainability floor.
21
11
  import {
22
12
  CODE_REVIEW_SCHEMA,
23
13
  QUALITY_SCHEMA,
@@ -30,27 +20,14 @@ const SAFE_STRING = {
30
20
 
31
21
  const EXECUTION_SCHEMA = {
32
22
  type: 'object',
33
- description: 'Wall-clock bounds on the subprocesses delivery spawns.',
23
+ description: 'Serialization of the full-suite spawns delivery drives.',
34
24
  properties: {
35
- timeoutMs: {
36
- type: 'integer',
37
- minimum: 1,
38
- description:
39
- 'Per-command timeout (ms) for the long-running spawns delivery drives — the close-validation chain and the gate CLIs.',
40
- default: LIMITS_DEFAULTS.executionTimeoutMs,
41
- },
42
25
  fullSuiteLock: {
43
26
  type: 'boolean',
44
27
  description:
45
28
  'Serialize full-suite spawns (`npm test` / `npm run test:coverage`) behind a host-level advisory lock, so two concurrent deliveries on one checkout do not run two suites against the same cores. Best-effort: a wait that expires spawns anyway, so the lock can never fail a delivery. Set false — or export `MANDREL_FULL_SUITE_LOCK=0` for one invocation — to disable.',
46
29
  default: true,
47
30
  },
48
- requireCreditedCapture: {
49
- type: 'boolean',
50
- description:
51
- 'Refuse a full-suite coverage capture that no committed stamp covers, instead of paying for it. Default false — the run is announced (a warning naming the crediting invocation, emitted before the spawn) and then executed, which is the pre-existing behaviour. Set true when the whole-suite cost is large enough that a close should stop at zero seconds rather than absorb it silently.',
52
- default: false,
53
- },
54
31
  },
55
32
  additionalProperties: false,
56
33
  };
@@ -71,11 +48,6 @@ const DOCS_FRESHNESS_SCHEMA = {
71
48
  additionalProperties: false,
72
49
  };
73
50
 
74
- /**
75
- * `delivery.deliverRunner` — bounded-concurrency knob for the epic-deliver
76
- * fan-out. Flattened post-reshape — no `runners.` wrapper, no `enabled`
77
- * field (operators dial concurrency directly).
78
- */
79
51
  const DELIVER_RUNNER_SCHEMA = {
80
52
  type: 'object',
81
53
  description: 'Bounded-concurrency knob for the /mandrel-deliver fan-out.',
@@ -85,9 +57,7 @@ const DELIVER_RUNNER_SCHEMA = {
85
57
  minimum: 1,
86
58
  description:
87
59
  'Maximum ready Stories dispatched by /mandrel-deliver at once. Default 3. Moderate by design — keeps host-quota consumption predictable while allowing a small ready-set fan-out. Set 1 for strictly sequential delivery; raise further on hosts with adequate parallel-agent quota. See deliver.md for the sequencing model and throughput tradeoff.',
88
- // getRunners() resolves this from its own DEFAULT_DELIVER_RUNNER
89
- // constant, not from this annotation; the parity suite asserts the two
90
- // agree.
60
+ // Runtime reads DEFAULT_DELIVER_RUNNER; a parity test keeps them equal.
91
61
  default: 3,
92
62
  },
93
63
  footprintGuard: {
@@ -101,9 +71,6 @@ const DELIVER_RUNNER_SCHEMA = {
101
71
  additionalProperties: false,
102
72
  };
103
73
 
104
- /**
105
- * `delivery.worktreeIsolation` — per-Story git worktree provisioning.
106
- */
107
74
  const WORKTREE_ISOLATION_SCHEMA = {
108
75
  type: 'object',
109
76
  description:
@@ -127,9 +94,7 @@ const WORKTREE_ISOLATION_SCHEMA = {
127
94
  enum: ['per-worktree', 'clone', 'symlink', 'pnpm-store'],
128
95
  description:
129
96
  'How each worktree gets its dependencies. `clone` copy-on-writes the main checkout tree (fast, cross-platform); `per-worktree` runs a full install; `symlink` links the shared tree (POSIX only unless `allowSymlinkOnWindows`); `pnpm-store` re-links from the pnpm content store.',
130
- // Pinned to the cross-platform documented default. The runtime constant
131
- // is evaluated at import time and resolves to `per-worktree` on win32,
132
- // so it must not be imported here.
97
+ // Not imported: the runtime constant is `per-worktree` on win32.
133
98
  default: 'clone',
134
99
  },
135
100
  primeFromPath: {
@@ -160,7 +125,6 @@ const WORKTREE_ISOLATION_SCHEMA = {
160
125
  },
161
126
  },
162
127
  additionalProperties: false,
163
- // `root` is required only when isolation is explicitly enabled.
164
128
  allOf: [
165
129
  {
166
130
  if: {
@@ -173,42 +137,10 @@ const WORKTREE_ISOLATION_SCHEMA = {
173
137
  ],
174
138
  };
175
139
 
176
- /**
177
- * `delivery.mergeWatch` — knobs consumed by the close-and-land merge wait
178
- * listener (Story #2896, Epic #2880) and by the close-and-land merge wait
179
- * (`single-story-close/phases/confirm-merge.js`). `intervalSeconds` is the
180
- * poll cadence between `gh pr view` probes after the arm.
181
- *
182
- * The two budgets are deliberately separate axes (Story #4543):
183
- *
184
- * - `maxWaitSeconds` bounds **one invocation** of the merge wait. Its
185
- * default (300s) fits inside a single host tool invocation, whose
186
- * ceiling is ~10 minutes; the gates that run before the wait already
187
- * consume minutes of that. Expiry is NOT a block — the wait returns a
188
- * resumable `pending` terminal with no label mutation. A headless caller
189
- * with no such ceiling raises it to keep land-in-one-block semantics.
190
- * - `maxBudgetSeconds` bounds the **cumulative** wait across resumes,
191
- * anchored at the PR's `createdAt` so re-entering the wait does not
192
- * restart the clock. Exhausting *this* is the genuine give-up condition
193
- * that classifies and blocks.
194
- *
195
- * `updateAttempts` caps how many times the wait will bring a
196
- * behind-the-base PR up to date before giving the branch up as unwinnable,
197
- * rather than waiting out the budget behind a base it could have merged.
198
- * All keys default in the consumer when omitted (30s / 300s / 3600s / 3).
199
- *
200
- * `mode` selects the close-time merge posture (Story #4698). Default `sync`
201
- * keeps the in-close foreground wait unchanged. `async` caps the per-invocation
202
- * wait to a short probe window (~60s: catches instant merges and instantly-red
203
- * required checks) and then returns the resumable `pending` terminal, so a
204
- * slow-CI consumer no longer burns ~5 minutes of the host tool slot on a merge
205
- * that lands after the wait would have expired anyway — the worker launches the
206
- * `pending` envelope's `nextCommand` in the background instead.
207
- */
208
140
  const MERGE_WATCH_SCHEMA = {
209
141
  type: 'object',
210
142
  description:
211
- "Knobs consumed by the close-and-land merge wait (Story #4543; defaults in `lib/orchestration/merge-poll.js`). `mode` (Story #4698) selects the close-time merge posture. `intervalSeconds` is the poll cadence between `gh pr view` probes after the arm. `maxWaitSeconds` bounds ONE invocation of the merge wait and its expiry returns a resumable `pending` terminal with no label mutation; `maxBudgetSeconds` bounds the CUMULATIVE wait across resumes (anchored at the PR's createdAt, so a resume does not restart the clock) and exhausting it is the genuine give-up that classifies and blocks. `updateAttempts` caps the bounded update of a behind-the-base PR.",
143
+ "Knobs consumed by the close-and-land merge wait (Story #4543). `mode` (Story #4698) selects the close-time merge posture. `maxWaitSeconds` bounds ONE invocation of the merge wait and its expiry returns a resumable `pending` terminal with no label mutation; `maxBudgetSeconds` bounds the CUMULATIVE wait across resumes (anchored at the PR's createdAt, so a resume does not restart the clock) and exhausting it is the genuine give-up that classifies and blocks. The 30s poll cadence and the cap of 3 behind-the-base updates are fixed.",
212
144
  properties: {
213
145
  mode: {
214
146
  type: 'string',
@@ -216,12 +148,6 @@ const MERGE_WATCH_SCHEMA = {
216
148
  description:
217
149
  'Close-time merge-wait posture (Story #4698). `sync` (default) keeps the in-close foreground merge wait unchanged. `async` caps the per-invocation wait to a short ~60s probe window — long enough to catch an instant merge and, via the head-anchored required-check predicate, an instantly-red required check — then returns the resumable `pending` terminal (exit 3) with a `nextCommand`. Opt in when slow CI makes the foreground wait routinely expire: the worker launches `nextCommand` in the background instead of burning the host tool slot polling. `maxBudgetSeconds` (the cumulative give-up) is unchanged.',
218
150
  },
219
- intervalSeconds: {
220
- type: 'integer',
221
- minimum: 1,
222
- description: 'Seconds between merge-wait polls. Default 30.',
223
- default: 30,
224
- },
225
151
  maxWaitSeconds: {
226
152
  type: 'integer',
227
153
  minimum: 1,
@@ -235,31 +161,10 @@ const MERGE_WATCH_SCHEMA = {
235
161
  "Cumulative wall-clock budget (seconds) across merge-wait resumes, anchored at the PR's createdAt. Default 3600 (60 minutes). Exhausting this classifies the block and transitions the Story to agent::blocked.",
236
162
  default: 3600,
237
163
  },
238
- updateAttempts: {
239
- type: 'integer',
240
- minimum: 0,
241
- description:
242
- 'Maximum times the merge wait will bring a behind-the-base PR up to date before giving up on the branch. Default 3. Set 0 to disable the update.',
243
- },
244
164
  },
245
165
  additionalProperties: false,
246
166
  };
247
167
 
248
- /**
249
- * `delivery.epicAudit` was removed on v2 (Story-only delivery — no
250
- * epic-audit runner). Remediation policy lives on `delivery.codeReview`
251
- * (`CODE_REVIEW_SCHEMA` imported from the quality schema module).
252
- */
253
-
254
- // Epic #4478 (M7-B) — role-scoped-agent kill-switch.
255
- // Stage 6 dropped `delivery.routing.singleDelivery` (v1 epic route switch).
256
- // `delivery.routing.roleScopedAgents` (default true via getDeliveryRouting)
257
- // flips converted delivery spawns onto their `.claude/agents/<role>.md` boot
258
- // context; false falls back to `subagent_type: general-purpose` (the instant
259
- // per-consumer revert + the escape for hosts that ignore `.claude/agents/`).
260
- // Story #5313 retired `delivery.routing.freshCriticSampleRate` (the
261
- // maker-checker sampling floor). Story #5343 then retired the derived-level
262
- // routing it left behind: the profile alone decides the verdict owner.
263
168
  const ROUTING_SCHEMA = {
264
169
  type: 'object',
265
170
  description:
@@ -288,61 +193,11 @@ const ROUTING_SCHEMA = {
288
193
  additionalProperties: false,
289
194
  };
290
195
 
291
- // Story #4356 (Epic #4355) — CI-aware delivery namespace. `watch.*` tunes
292
- // the merge/CI watch poll loop; `autoMerge` selects the merge posture.
293
- // Retired: `earlyPr` (Epic early-PR warmup) and `requireChecks` (no
294
- // AutomergePredicate reader on v2).
295
- // Story #4890 added `attachWindowMs`: how long the watch keeps re-resolving an
296
- // EMPTY required-check set before it stops waiting for one. This block is
297
- // `additionalProperties: false`, so the knob is inert unless it lands here AND
298
- // in the `.agents/schemas/agentrc.schema.json` mirror.
299
- // The four `watch.*` defaults below mirror WATCH_DEFAULTS in
300
- // `pr-watch-with-update.js`. Restated rather than imported: that module is a
301
- // CLI, and importing it behind a schema declaration would drag its
302
- // `runAsCli` wiring into every config read. The rewritten parity suite
303
- // asserts the two agree.
304
- const CI_WATCH_SCHEMA = {
305
- type: 'object',
306
- description:
307
- 'Story #4356 (Epic #4355). Poll-loop tuning for the merge/CI watch. pollIntervalMs is the cadence between check probes; maxPolls caps total probes before the watcher gives up; maxResumes caps how many times the watcher may resume after a transient stall; attachWindowMs bounds the wait for a required context to attach at all.',
308
- properties: {
309
- pollIntervalMs: {
310
- type: 'integer',
311
- minimum: 1,
312
- description: 'Milliseconds between check probes.',
313
- default: 10000,
314
- },
315
- maxPolls: {
316
- type: 'integer',
317
- minimum: 1,
318
- description:
319
- 'Total probes before the watcher gives up on one invocation.',
320
- default: 180,
321
- },
322
- maxResumes: {
323
- type: 'integer',
324
- minimum: 0,
325
- description:
326
- 'How many times the watcher may resume after a transient stall. 0 disables resuming.',
327
- default: 3,
328
- },
329
- attachWindowMs: {
330
- type: 'integer',
331
- minimum: 1,
332
- description:
333
- 'Story #4890. How long (ms) the watch keeps re-resolving an EMPTY `gh pr checks --required` set before it stops waiting for a required context to attach. A ruleset attaches its contexts asynchronously and the arrival latency is set by the slowest one, so a required context that is an aggregator job gated on every other tier is the last to appear — measured at 16m52s on this repository. Default 1200000 (20 minutes). Raise it for a repository whose contexts arrive later still; exhausting the window is never reported as a red check (the watch exits 2, not-yet-started).',
334
- default: 1200000,
335
- },
336
- },
337
- additionalProperties: false,
338
- };
339
-
340
196
  const CI_DELIVERY_SCHEMA = {
341
197
  type: 'object',
342
198
  description:
343
- 'CI-aware delivery namespace (Story #4356, Epic #4355): the merge/CI watch poll loop and the merge posture.',
199
+ 'CI-aware delivery namespace (Story #4356, Epic #4355): the merge posture and the advisory-check policy.',
344
200
  properties: {
345
- watch: CI_WATCH_SCHEMA,
346
201
  autoMerge: {
347
202
  type: 'string',
348
203
  enum: ['trust-ci', 'strict'],
@@ -374,15 +229,6 @@ const CI_DELIVERY_SCHEMA = {
374
229
  additionalProperties: false,
375
230
  };
376
231
 
377
- /**
378
- * `delivery.refactorStage` — opt-in, config-gated post-green refactor
379
- * checkpoint wired into story-deliver (Story #3430, Epic #3418). Strictly
380
- * additive and default-OFF: when `enabled` is unset or `false`, story-deliver
381
- * behaves exactly as before. When `true`, the worker runs an advisory
382
- * post-green refactor pass (the `core/code-review-and-quality` skill's
383
- * Post-Green Refactor Pass) after the suite is green. The stage is
384
- * advisory only — it never changes existing close-validation gate semantics.
385
- */
386
232
  const REFACTOR_STAGE_SCHEMA = {
387
233
  type: 'object',
388
234
  description:
@@ -398,21 +244,6 @@ const REFACTOR_STAGE_SCHEMA = {
398
244
  additionalProperties: false,
399
245
  };
400
246
 
401
- /**
402
- * `delivery.acceptanceEval` — bounded per-Story acceptance self-eval loop
403
- * (Story #3819). After the implementation commits land and before the
404
- * Story-implementation phase flips to `closing`, an independent
405
- * (fresh-context) critic pass scores the caller-injected change set against
406
- * each inline `acceptance[]` item, redrafts the unmet items, and
407
- * re-evaluates — capped at `maxRounds` redraft rounds.
408
- *
409
- * `maxRounds` is the operator-tunable redraft ceiling (default 2 via
410
- * `lib/config/acceptance-eval.js`). Story #5313 dropped the hard ceiling and
411
- * the floor-of-one clamp: `maxRounds: 0` is valid and means one pass scored
412
- * once with no redraft round. There is intentionally **no** `enabled` flag —
413
- * the scoring pass is a hard cutover, always on, per
414
- * `rules/git-conventions.md`.
415
- */
416
247
  const ACCEPTANCE_EVAL_SCHEMA = {
417
248
  type: 'object',
418
249
  description:
@@ -429,66 +260,11 @@ const ACCEPTANCE_EVAL_SCHEMA = {
429
260
  additionalProperties: false,
430
261
  };
431
262
 
432
- /**
433
- * `delivery.review` — close-scope review tuning (Story #4699). `lensDiffFloor`
434
- * is the changed-line floor below which the Story-scope local-lens pass skips
435
- * lens materialization for a diff with zero sensitive-path hits (default 40
436
- * via `lib/audit-suite/lens-diff-floor.js`; `0` disables the skip). The
437
- * maker-blind code-review pass and all hard gates are untouched by the floor.
438
- */
439
- const REVIEW_SCHEMA = {
440
- type: 'object',
441
- description:
442
- 'Close-scope review tuning (Story #4699). Governs the Story-scope local-lens pass that runs inside the close subprocess; the maker-blind code-review pass and all hard gates are unaffected.',
443
- properties: {
444
- lensDiffFloor: {
445
- type: 'integer',
446
- minimum: 0,
447
- description:
448
- 'Changed-line floor for the close-scope lens walk (Story #4699). A diff strictly below this many changed lines (additions + deletions) with zero sensitive-path hits skips lens materialization and records the skip in the findings-yield ledger. Default 40; 0 disables the skip. Hard gates and the maker-blind code-review pass are unaffected.',
449
- },
450
- },
451
- additionalProperties: false,
452
- };
453
-
454
- /**
455
- * `delivery.feedbackLoop` — the **opt-in** toggle consumed by the retro
456
- * auto-file graduator (`lib/feedback-loop/retro-proposals-graduator.js`, read
457
- * via `graduator-core.js#makeIsAutoFileEnabled`), plus the friction window.
458
- *
459
- * `auditResultsAutoFile` used to sit beside `retroProposals` here. Its
460
- * graduator was deleted two releases ago, so by Story #5341 — which flipped
461
- * its default from `true` to `false` on the measured record of what the
462
- * channel produced — there was nothing left to switch either way. Story #5366
463
- * removed the key: a toggle with no runtime reader reads as a live control,
464
- * and a consumer that set it was configuring nothing. The
465
- * `2.60.0-retire-audit-results-autofile` migration strips it from both config
466
- * surfaces, because this block is closed to additional properties and a
467
- * surviving key is a hard validation failure on upgrade.
468
- *
469
- * `retroProposals` (Story #4418) governs the retro auto-filer, and defaults to
470
- * `false` for the same Story #5341 reasons: Story #5324's roll-up carried 116
471
- * signals and filed nothing, and issues #4653, #4833, #4834 and #4836 are
472
- * filings that were false or leaked from test fixtures. An auto-filer whose
473
- * output is dominated by noise costs triage on every run and buys nothing, so
474
- * a consumer that wants it now asks for it. When `true` the
475
- * retro's actionable routed proposals are filed as
476
- * `meta::<framework-gap|consumer-improvement>` + `friction::<category>`
477
- * issues via the graduator pre-parsed-findings seam, and the rendered retro
478
- * sections list the filed issue numbers instead of paste-ready `gh` command
479
- * stanzas; left `false` it renders the command stanzas.
480
- *
481
- * `frictionWindowDays` (Story #4850) bounds the run-scope friction recurrence
482
- * window by row age. The window deliberately spans every surviving signal
483
- * stream rather than the triggering run's own Stories — that is what lets a
484
- * once-per-Story systemic defect reach the ≥ 2 actionable threshold — which
485
- * left it unbounded in time, so a defect fixed weeks ago kept re-routing. An
486
- * integer ≥ 1; unset means 30 days.
487
- */
263
+ // `retroProposals` defaults off: the auto-filer's output was mostly noise.
488
264
  const FEEDBACK_LOOP_SCHEMA = {
489
265
  type: 'object',
490
266
  description:
491
- 'Opt-in toggle for the close-time retro auto-file graduator, plus the friction recurrence window. Auto-filing defaults to OFF (Story #5341).',
267
+ 'Opt-in toggle for the close-time retro auto-file graduator. Auto-filing defaults to OFF (Story #5341).',
492
268
  properties: {
493
269
  retroProposals: {
494
270
  type: 'boolean',
@@ -496,53 +272,12 @@ const FEEDBACK_LOOP_SCHEMA = {
496
272
  'When true, the retro auto-files its actionable routed proposals as meta::<framework-gap|consumer-improvement> + friction::<category> issues via the graduator pre-parsed-findings seam, and the rendered retro sections list the filed issue numbers instead of paste-ready gh command stanzas. Defaults to false (Story #5341), which renders the command stanzas instead.',
497
273
  default: false,
498
274
  },
499
- frictionWindowDays: {
500
- type: 'integer',
501
- minimum: 1,
502
- description:
503
- "How many days back the run-scope friction recurrence window reaches (Story #4850). The window spans every surviving per-Story signal stream rather than the triggering run's own Stories, so that a defect firing once per Story can reach the actionable threshold; this bounds it by age so a defect fixed weeks ago stops re-routing. Rows older than the bound — and rows carrying no readable timestamp — are excluded and counted on the roll-up step result. Default 30.",
504
- },
505
275
  },
506
276
  additionalProperties: false,
507
277
  };
508
278
 
509
- /**
510
- * `delivery.auditToStories` — knobs for the `/audit-to-stories` unattended
511
- * (`--auto`) sweep (Story #4626). `severityFloor` is the minimum severity a
512
- * finding must meet to be proposed as a Story on an unattended run (default
513
- * `high`); `autoComment`, when true (default), lets `--auto` post a
514
- * "re-detected" comment on an already-open matched Issue instead of silently
515
- * skipping it.
516
- */
517
- const AUDIT_TO_STORIES_SCHEMA = {
518
- type: 'object',
519
- description:
520
- 'Knobs for the `/audit-to-stories` unattended (`--auto`) sweep (Story #4626).',
521
- properties: {
522
- severityFloor: {
523
- type: 'string',
524
- enum: ['critical', 'high', 'medium', 'low', 'all'],
525
- description:
526
- 'Minimum severity a finding must meet to be proposed as a Story on an unattended `/audit-to-stories --auto` sweep (Story #4626). Default high.',
527
- },
528
- autoComment: {
529
- type: 'boolean',
530
- description:
531
- 'When true (default), `/audit-to-stories --auto` posts a re-detected comment on an already-open matched Issue instead of silently skipping it.',
532
- },
533
- },
534
- additionalProperties: false,
535
- };
536
-
537
- /**
538
- * `delivery.tempRetention` — auto-purge of spent temp artifacts (Story #4794).
539
- *
540
- * `enabled` defaults to `true`: reclaiming a landed Story's gate transcripts
541
- * and evidence is the behaviour, and the knob exists to turn it off. `classes`
542
- * lets an operator keep one family while purging the rest; `staleDays` is the
543
- * age floor for the families no Story id can be recovered from (audit reports,
544
- * abandoned `plan-<slug>/` dirs).
545
- */
279
+ // Families with no recoverable Story id (audits, plan dirs) use a fixed
280
+ // 7-day age floor.
546
281
  const TEMP_RETENTION_SCHEMA = {
547
282
  type: 'object',
548
283
  description:
@@ -559,16 +294,6 @@ const TEMP_RETENTION_SCHEMA = {
559
294
  'turns it off. When false every purge path is a reported no-op.',
560
295
  default: true,
561
296
  },
562
- staleDays: {
563
- type: 'integer',
564
- minimum: 1,
565
- description:
566
- 'Age floor (days, default 7) for the families no Story id can be ' +
567
- 'recovered from — roster-level audit reports and abandoned ' +
568
- 'plan-<slug>/ dirs. Story-keyed artifacts do not wait for it: they are ' +
569
- 'purged as soon as their merge is confirmed.',
570
- default: 7,
571
- },
572
297
  classes: {
573
298
  type: 'object',
574
299
  description:
@@ -611,27 +336,20 @@ const TEMP_RETENTION_SCHEMA = {
611
336
  export const DELIVERY_SCHEMA = {
612
337
  type: 'object',
613
338
  description:
614
- 'Everything `/mandrel-deliver` and `single-story-close` consume: execution timeouts, worktree isolation, runner concurrency, docs freshness, quality gates, merge/CI watch, review ceremony, and the feedback loop.',
339
+ 'Everything `/mandrel-deliver` and `single-story-close` consume: worktree isolation, runner concurrency, docs freshness, quality gates, merge/CI watch, review ceremony, and the feedback loop.',
615
340
  properties: {
616
341
  execution: EXECUTION_SCHEMA,
617
342
  docsFreshness: DOCS_FRESHNESS_SCHEMA,
618
343
  tempRetention: TEMP_RETENTION_SCHEMA,
619
344
  deliverRunner: DELIVER_RUNNER_SCHEMA,
620
345
  worktreeIsolation: WORKTREE_ISOLATION_SCHEMA,
621
- // `quality.gates.crap.incrementalCoverage` (Story #4981) is declared in
622
- // `config/gates/crap.schema.js` and reaches AJV validation through this
623
- // property — QUALITY_SCHEMA → GATES_SCHEMA → CRAP_GATE. No separate
624
- // declaration lives here; this is the composition point that makes the
625
- // gate-level schema authoritative for the top-level `.agentrc.json`
626
- // surface this module validates.
346
+ // Gate-level schemas (`config/gates/*.schema.js`) compose in here.
627
347
  quality: QUALITY_SCHEMA,
628
348
  mergeWatch: MERGE_WATCH_SCHEMA,
629
349
  codeReview: CODE_REVIEW_SCHEMA,
630
- review: REVIEW_SCHEMA,
631
350
  refactorStage: REFACTOR_STAGE_SCHEMA,
632
351
  acceptanceEval: ACCEPTANCE_EVAL_SCHEMA,
633
352
  feedbackLoop: FEEDBACK_LOOP_SCHEMA,
634
- auditToStories: AUDIT_TO_STORIES_SCHEMA,
635
353
  ci: CI_DELIVERY_SCHEMA,
636
354
  routing: ROUTING_SCHEMA,
637
355
  },