mandrel 2.59.0 → 2.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (678) hide show
  1. package/.agents/README.md +21 -19
  2. package/.agents/agents/acceptance-critic.md +24 -43
  3. package/.agents/agents/story-worker.md +20 -21
  4. package/.agents/docs/agentrc-reference.json +5 -84
  5. package/.agents/docs/configuration.md +48 -132
  6. package/.agents/docs/workflows.md +2 -2
  7. package/.agents/instructions.md +5 -8
  8. package/.agents/rules/ci-remediation.md +41 -8
  9. package/.agents/rules/gherkin-standards.md +4 -0
  10. package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
  11. package/.agents/schemas/agentrc.schema.json +16 -496
  12. package/.agents/schemas/story-deliver-terminal.schema.json +13 -3
  13. package/.agents/schemas/validation-evidence.schema.json +2 -1
  14. package/.agents/scripts/README.md +23 -13
  15. package/.agents/scripts/acceptance-eval.js +35 -169
  16. package/.agents/scripts/agents-bootstrap-github.js +27 -129
  17. package/.agents/scripts/apply-quality-bootstrap.js +4 -40
  18. package/.agents/scripts/audit-baselines.js +6 -27
  19. package/.agents/scripts/audit-labels-bootstrap.js +5 -29
  20. package/.agents/scripts/audit-to-stories.js +91 -361
  21. package/.agents/scripts/boot-sweep.js +19 -72
  22. package/.agents/scripts/bootstrap.js +74 -395
  23. package/.agents/scripts/ceremony-derive.js +10 -41
  24. package/.agents/scripts/check-arch-cycles.js +14 -64
  25. package/.agents/scripts/check-baselines.js +8 -48
  26. package/.agents/scripts/check-context-budget.js +105 -311
  27. package/.agents/scripts/check-cyclomatic.js +12 -44
  28. package/.agents/scripts/check-dead-exports.js +13 -64
  29. package/.agents/scripts/check-doc-links.js +38 -186
  30. package/.agents/scripts/check-gherkin-corpus.js +24 -127
  31. package/.agents/scripts/check-test-temp-hygiene.js +28 -169
  32. package/.agents/scripts/coverage-capture.js +34 -98
  33. package/.agents/scripts/deliver-light.js +25 -171
  34. package/.agents/scripts/deliver-recover.js +6 -42
  35. package/.agents/scripts/deliver-run.js +534 -0
  36. package/.agents/scripts/diagnose-friction.js +24 -116
  37. package/.agents/scripts/drain-pending-cleanup.js +1 -1
  38. package/.agents/scripts/evidence-gate.js +23 -85
  39. package/.agents/scripts/file-ci-gap.js +57 -49
  40. package/.agents/scripts/generate-config-docs.js +30 -170
  41. package/.agents/scripts/generate-lens-checklists.js +8 -52
  42. package/.agents/scripts/generate-skills-index.js +14 -112
  43. package/.agents/scripts/generate-workflows-doc.js +10 -70
  44. package/.agents/scripts/git-cleanup.js +2 -34
  45. package/.agents/scripts/lib/Graph.js +24 -81
  46. package/.agents/scripts/lib/ITicketingProvider.js +47 -143
  47. package/.agents/scripts/lib/Logger.js +14 -76
  48. package/.agents/scripts/lib/audit-baselines/engine.js +11 -31
  49. package/.agents/scripts/lib/audit-baselines/gate-surface.js +3 -17
  50. package/.agents/scripts/lib/audit-baselines/headroom.js +4 -20
  51. package/.agents/scripts/lib/audit-baselines/hotspots.js +3 -15
  52. package/.agents/scripts/lib/audit-baselines/kinds.js +23 -89
  53. package/.agents/scripts/lib/audit-baselines/outliers.js +6 -23
  54. package/.agents/scripts/lib/audit-baselines/read.js +3 -16
  55. package/.agents/scripts/lib/audit-baselines/staleness.js +7 -26
  56. package/.agents/scripts/lib/audit-baselines/surface-entry.js +7 -28
  57. package/.agents/scripts/lib/audit-baselines/trend.js +7 -20
  58. package/.agents/scripts/lib/audit-baselines/weights.js +9 -37
  59. package/.agents/scripts/lib/audit-suite/audit-rules-reader.js +3 -18
  60. package/.agents/scripts/lib/audit-suite/checklist-threading.js +26 -124
  61. package/.agents/scripts/lib/audit-suite/dispatch-checklist.js +14 -45
  62. package/.agents/scripts/lib/audit-suite/findings.js +12 -52
  63. package/.agents/scripts/lib/audit-suite/frontmatter.js +5 -29
  64. package/.agents/scripts/lib/audit-suite/index.js +1 -15
  65. package/.agents/scripts/lib/audit-suite/lens-checklist.js +10 -45
  66. package/.agents/scripts/lib/audit-suite/lens-diff-floor.js +11 -76
  67. package/.agents/scripts/lib/audit-suite/runner.js +13 -43
  68. package/.agents/scripts/lib/audit-suite/selector.js +49 -349
  69. package/.agents/scripts/lib/audit-suite/substitutions.js +12 -40
  70. package/.agents/scripts/lib/audit-suite/workflow-loader.js +3 -15
  71. package/.agents/scripts/lib/audit-to-stories/audit-label-taxonomy.js +11 -73
  72. package/.agents/scripts/lib/audit-to-stories/audit-lenses.js +8 -37
  73. package/.agents/scripts/lib/audit-to-stories/build-story-body.js +25 -143
  74. package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +14 -80
  75. package/.agents/scripts/lib/audit-to-stories/epic-grouping-directive.js +4 -18
  76. package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +7 -40
  77. package/.agents/scripts/lib/audit-to-stories/group-findings.js +9 -39
  78. package/.agents/scripts/lib/audit-to-stories/issue-corpus.js +10 -66
  79. package/.agents/scripts/lib/audit-to-stories/issue-index.js +6 -30
  80. package/.agents/scripts/lib/audit-to-stories/issues-file.js +6 -36
  81. package/.agents/scripts/lib/audit-to-stories/ledger-commit.js +17 -69
  82. package/.agents/scripts/lib/audit-to-stories/ledger-pr.js +17 -85
  83. package/.agents/scripts/lib/audit-to-stories/ledger-record.js +10 -48
  84. package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +38 -146
  85. package/.agents/scripts/lib/audit-to-stories/seed-from-findings.js +7 -42
  86. package/.agents/scripts/lib/audit-to-stories/wire-dependencies.js +10 -57
  87. package/.agents/scripts/lib/baseline-loader.js +12 -51
  88. package/.agents/scripts/lib/baseline-schema-registry.js +5 -22
  89. package/.agents/scripts/lib/baselines/component-matcher.js +3 -12
  90. package/.agents/scripts/lib/baselines/components.js +10 -61
  91. package/.agents/scripts/lib/baselines/coverage-updater-cli.js +7 -36
  92. package/.agents/scripts/lib/baselines/crap-preview-incremental.js +7 -19
  93. package/.agents/scripts/lib/baselines/crap-preview-scan.js +19 -45
  94. package/.agents/scripts/lib/baselines/crap-updater-cli.js +16 -65
  95. package/.agents/scripts/lib/baselines/diff-scope-cli.js +5 -33
  96. package/.agents/scripts/lib/baselines/duplication-scanner.js +11 -60
  97. package/.agents/scripts/lib/baselines/env-overrides.js +12 -67
  98. package/.agents/scripts/lib/baselines/envelope.js +13 -129
  99. package/.agents/scripts/lib/baselines/exit-codes.js +6 -49
  100. package/.agents/scripts/lib/baselines/git-base.js +23 -142
  101. package/.agents/scripts/lib/baselines/kernel.js +11 -111
  102. package/.agents/scripts/lib/baselines/kinds/_crap-new-method-gate.js +9 -47
  103. package/.agents/scripts/lib/baselines/kinds/_crap-read.js +8 -51
  104. package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +7 -62
  105. package/.agents/scripts/lib/baselines/kinds/bundle-size.js +8 -29
  106. package/.agents/scripts/lib/baselines/kinds/coverage.js +3 -15
  107. package/.agents/scripts/lib/baselines/kinds/crap.js +94 -415
  108. package/.agents/scripts/lib/baselines/kinds/duplication.js +4 -30
  109. package/.agents/scripts/lib/baselines/kinds/kind-factory.js +7 -53
  110. package/.agents/scripts/lib/baselines/kinds/maintainability.js +15 -80
  111. package/.agents/scripts/lib/baselines/kinds/mutation.js +12 -72
  112. package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +4 -11
  113. package/.agents/scripts/lib/baselines/merge-envelopes.js +30 -146
  114. package/.agents/scripts/lib/baselines/path-canon.js +19 -128
  115. package/.agents/scripts/lib/baselines/preview-gates.js +8 -37
  116. package/.agents/scripts/lib/baselines/reader.js +14 -107
  117. package/.agents/scripts/lib/baselines/refresh-service.js +35 -252
  118. package/.agents/scripts/lib/baselines/scope.js +11 -135
  119. package/.agents/scripts/lib/baselines/writer.js +16 -149
  120. package/.agents/scripts/lib/bdd-runner-detect.js +18 -113
  121. package/.agents/scripts/lib/bdd-scenario-budget.js +9 -36
  122. package/.agents/scripts/lib/bdd-scenario-scanner.js +11 -73
  123. package/.agents/scripts/lib/bdd-step-index.js +26 -100
  124. package/.agents/scripts/lib/bootstrap/baseline-merge-driver.js +23 -103
  125. package/.agents/scripts/lib/bootstrap/branch-protection.js +2 -5
  126. package/.agents/scripts/lib/bootstrap/commit-push.js +12 -50
  127. package/.agents/scripts/lib/bootstrap/gh-preflight.js +14 -101
  128. package/.agents/scripts/lib/bootstrap/hitl-confirm.js +5 -30
  129. package/.agents/scripts/lib/bootstrap/install-ledger.js +17 -73
  130. package/.agents/scripts/lib/bootstrap/issue-forms-template.js +17 -121
  131. package/.agents/scripts/lib/bootstrap/manifest.js +15 -86
  132. package/.agents/scripts/lib/bootstrap/merge-methods.js +4 -33
  133. package/.agents/scripts/lib/bootstrap/preflight.js +12 -61
  134. package/.agents/scripts/lib/bootstrap/project-bootstrap.js +34 -235
  135. package/.agents/scripts/lib/bootstrap/prompt.js +21 -129
  136. package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +27 -141
  137. package/.agents/scripts/lib/bootstrap/summary.js +1 -8
  138. package/.agents/scripts/lib/bootstrap/workflow-audit.js +11 -84
  139. package/.agents/scripts/lib/branch-name-guard.js +4 -23
  140. package/.agents/scripts/lib/changed-files.js +39 -121
  141. package/.agents/scripts/lib/checks/core-bare-clean.js +4 -24
  142. package/.agents/scripts/lib/checks/index.js +18 -101
  143. package/.agents/scripts/lib/checks/loop-health.js +11 -53
  144. package/.agents/scripts/lib/checks/state.js +16 -91
  145. package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +10 -61
  146. package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +14 -83
  147. package/.agents/scripts/lib/child-exec.js +39 -108
  148. package/.agents/scripts/lib/cli/standard-args.js +9 -116
  149. package/.agents/scripts/lib/cli-args.js +31 -146
  150. package/.agents/scripts/lib/cli-usage.js +5 -27
  151. package/.agents/scripts/lib/cli-utils.js +2 -12
  152. package/.agents/scripts/lib/close-validation/commands.js +13 -76
  153. package/.agents/scripts/lib/close-validation/gates.js +92 -331
  154. package/.agents/scripts/lib/close-validation/process.js +121 -151
  155. package/.agents/scripts/lib/close-validation/projections/advisories.js +5 -31
  156. package/.agents/scripts/lib/close-validation/projections/crap.js +19 -67
  157. package/.agents/scripts/lib/close-validation/projections/head-sha.js +1 -17
  158. package/.agents/scripts/lib/close-validation/projections/inputs.js +4 -34
  159. package/.agents/scripts/lib/close-validation/projections/maintainability.js +11 -58
  160. package/.agents/scripts/lib/close-validation/runner.js +53 -110
  161. package/.agents/scripts/lib/command-header.js +6 -28
  162. package/.agents/scripts/lib/config/acceptance-eval.js +4 -30
  163. package/.agents/scripts/lib/config/baselines.js +3 -14
  164. package/.agents/scripts/lib/config/ci.js +8 -38
  165. package/.agents/scripts/lib/config/commands.js +1 -15
  166. package/.agents/scripts/lib/config/defaults.js +4 -33
  167. package/.agents/scripts/lib/config/delivery-routing.js +6 -34
  168. package/.agents/scripts/lib/config/explain.js +10 -83
  169. package/.agents/scripts/lib/config/gates/coverage.schema.js +0 -12
  170. package/.agents/scripts/lib/config/gates/crap-incremental-coverage.schema.js +3 -31
  171. package/.agents/scripts/lib/config/gates/crap.schema.js +1 -34
  172. package/.agents/scripts/lib/config/gates/duplication.schema.js +1 -8
  173. package/.agents/scripts/lib/config/gates/index.js +2 -17
  174. package/.agents/scripts/lib/config/gates/maintainability.schema.js +1 -20
  175. package/.agents/scripts/lib/config/gates/mutation.schema.js +1 -7
  176. package/.agents/scripts/lib/config/gates/shared.js +4 -64
  177. package/.agents/scripts/lib/config/github.js +4 -22
  178. package/.agents/scripts/lib/config/limits.js +4 -57
  179. package/.agents/scripts/lib/config/paths.js +2 -21
  180. package/.agents/scripts/lib/config/qa.js +4 -38
  181. package/.agents/scripts/lib/config/quality.js +76 -432
  182. package/.agents/scripts/lib/config/runners.js +12 -56
  183. package/.agents/scripts/lib/config/runtime.js +13 -57
  184. package/.agents/scripts/lib/config/shared.js +2 -16
  185. package/.agents/scripts/lib/config/sync-agentrc.js +9 -50
  186. package/.agents/scripts/lib/config/temp-paths.js +40 -280
  187. package/.agents/scripts/lib/config/validate-orchestration.js +5 -17
  188. package/.agents/scripts/lib/config/worktree-isolation.js +9 -28
  189. package/.agents/scripts/lib/config-resolver.js +11 -52
  190. package/.agents/scripts/lib/config-schema-shared.js +1 -4
  191. package/.agents/scripts/lib/config-settings-schema-delivery.js +16 -291
  192. package/.agents/scripts/lib/config-settings-schema-quality.js +7 -219
  193. package/.agents/scripts/lib/config-settings-schema.js +37 -274
  194. package/.agents/scripts/lib/coverage-baseline.js +20 -110
  195. package/.agents/scripts/lib/coverage-capture-fullscope.js +18 -35
  196. package/.agents/scripts/lib/coverage-capture-incremental.js +15 -45
  197. package/.agents/scripts/lib/coverage-capture-usage.js +8 -25
  198. package/.agents/scripts/lib/coverage-capture.js +99 -224
  199. package/.agents/scripts/lib/coverage-utils.js +14 -79
  200. package/.agents/scripts/lib/cpu-pool.js +17 -123
  201. package/.agents/scripts/lib/crap-baseline-join.js +16 -88
  202. package/.agents/scripts/lib/crap-coordinates.js +6 -25
  203. package/.agents/scripts/lib/crap-engine.js +40 -153
  204. package/.agents/scripts/lib/crap-method-identity.js +16 -78
  205. package/.agents/scripts/lib/crap-utils.js +31 -155
  206. package/.agents/scripts/lib/cyclomatic-ceiling.js +14 -87
  207. package/.agents/scripts/lib/cyclomatic-scope.js +10 -50
  208. package/.agents/scripts/lib/dead-exports-knip.js +18 -56
  209. package/.agents/scripts/lib/dead-exports-mode.js +5 -24
  210. package/.agents/scripts/lib/degraded-mode.js +3 -26
  211. package/.agents/scripts/lib/dependency-parser.js +8 -40
  212. package/.agents/scripts/lib/dependency-version.js +13 -35
  213. package/.agents/scripts/lib/detect-package-manager.js +6 -36
  214. package/.agents/scripts/lib/doc-tiers.js +22 -124
  215. package/.agents/scripts/lib/duplicate-search.js +8 -72
  216. package/.agents/scripts/lib/env-loader.js +5 -27
  217. package/.agents/scripts/lib/error-redactor.js +6 -31
  218. package/.agents/scripts/lib/errors/index.js +2 -22
  219. package/.agents/scripts/lib/escomplex-ast-compat.js +22 -163
  220. package/.agents/scripts/lib/escomplex-kernel.js +21 -123
  221. package/.agents/scripts/lib/feedback-loop/graduator-core.js +94 -419
  222. package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +20 -98
  223. package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +27 -149
  224. package/.agents/scripts/lib/findings/audit-ledger.js +23 -97
  225. package/.agents/scripts/lib/findings/classify-finding.js +14 -69
  226. package/.agents/scripts/lib/findings/promote-finding.js +14 -112
  227. package/.agents/scripts/lib/findings/provenance-field.js +11 -52
  228. package/.agents/scripts/lib/findings/route-finding.js +37 -255
  229. package/.agents/scripts/lib/findings/semantic-issue-search.js +14 -59
  230. package/.agents/scripts/lib/findings/severity.js +18 -104
  231. package/.agents/scripts/lib/format-generated-json.js +12 -44
  232. package/.agents/scripts/lib/full-suite-lock.js +160 -429
  233. package/.agents/scripts/lib/full-suite-queue.js +213 -0
  234. package/.agents/scripts/lib/gates/baseline-store.js +5 -9
  235. package/.agents/scripts/lib/gates/friction.js +1 -3
  236. package/.agents/scripts/lib/generated/agentrc-validator.js +2 -2
  237. package/.agents/scripts/lib/gh-exec.js +123 -191
  238. package/.agents/scripts/lib/git/cached-fetch.js +9 -52
  239. package/.agents/scripts/lib/git/sync-from-base.js +15 -107
  240. package/.agents/scripts/lib/git-branch-cleanup.js +14 -61
  241. package/.agents/scripts/lib/git-branch-lifecycle.js +16 -87
  242. package/.agents/scripts/lib/git-utils.js +37 -161
  243. package/.agents/scripts/lib/github/framework-repo.js +8 -71
  244. package/.agents/scripts/lib/github-url.js +2 -17
  245. package/.agents/scripts/lib/import-graph.js +11 -38
  246. package/.agents/scripts/lib/install-cmd-parser.js +4 -13
  247. package/.agents/scripts/lib/json-utils.js +3 -18
  248. package/.agents/scripts/lib/label-constants.js +16 -111
  249. package/.agents/scripts/lib/label-taxonomy.js +4 -30
  250. package/.agents/scripts/lib/maintainability-engine.js +12 -80
  251. package/.agents/scripts/lib/maintainability-unscorable.js +5 -25
  252. package/.agents/scripts/lib/maintainability-utils.js +16 -92
  253. package/.agents/scripts/lib/mandrel-catalog.js +12 -70
  254. package/.agents/scripts/lib/notifications/notifier.js +13 -38
  255. package/.agents/scripts/lib/npm-scripts.js +4 -23
  256. package/.agents/scripts/lib/observability/metrics-ledger.js +16 -76
  257. package/.agents/scripts/lib/observability/runtime-friction.js +44 -286
  258. package/.agents/scripts/lib/observability/signal-validator.js +5 -37
  259. package/.agents/scripts/lib/observability/signals-writer.js +11 -121
  260. package/.agents/scripts/lib/observability/source-classifier.js +22 -203
  261. package/.agents/scripts/lib/observability/terse-result.js +14 -47
  262. package/.agents/scripts/lib/onboard/init-tail.js +13 -74
  263. package/.agents/scripts/lib/onboard/scaffold-docs.js +11 -34
  264. package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +25 -139
  265. package/.agents/scripts/lib/orchestration/auto-merge-cwd.js +11 -66
  266. package/.agents/scripts/lib/orchestration/behind-recovery.js +10 -55
  267. package/.agents/scripts/lib/orchestration/ceremony-routing.js +28 -156
  268. package/.agents/scripts/lib/orchestration/change-set.js +7 -36
  269. package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +9 -46
  270. package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +11 -44
  271. package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +5 -24
  272. package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +3 -12
  273. package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +5 -38
  274. package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +3 -8
  275. package/.agents/scripts/lib/orchestration/check-baselines/phases/refresh-ack.js +28 -136
  276. package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +3 -13
  277. package/.agents/scripts/lib/orchestration/check-state.js +92 -0
  278. package/.agents/scripts/lib/orchestration/ci-gap-intake.js +37 -144
  279. package/.agents/scripts/lib/orchestration/ci-rerun-guard.js +121 -157
  280. package/.agents/scripts/lib/orchestration/code-review.js +24 -128
  281. package/.agents/scripts/lib/orchestration/column-sync.js +23 -111
  282. package/.agents/scripts/lib/orchestration/complexity-gate.js +118 -462
  283. package/.agents/scripts/lib/orchestration/deliver-recover.js +36 -168
  284. package/.agents/scripts/lib/orchestration/dependency-analyzer.js +4 -35
  285. package/.agents/scripts/lib/orchestration/dependency-candidates.js +9 -41
  286. package/.agents/scripts/lib/orchestration/diff-magnitude.js +25 -115
  287. package/.agents/scripts/lib/orchestration/doc-reader.js +2 -6
  288. package/.agents/scripts/lib/orchestration/docs-digest.js +13 -51
  289. package/.agents/scripts/lib/orchestration/epic-candidates.js +13 -53
  290. package/.agents/scripts/lib/orchestration/epic-checklist.js +9 -33
  291. package/.agents/scripts/lib/orchestration/epic-container.js +41 -167
  292. package/.agents/scripts/lib/orchestration/epic-expansion.js +10 -40
  293. package/.agents/scripts/lib/orchestration/epic-rollup.js +55 -207
  294. package/.agents/scripts/lib/orchestration/file-assumption-enum.js +2 -22
  295. package/.agents/scripts/lib/orchestration/file-assumptions.js +45 -253
  296. package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-detect.js +9 -46
  297. package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +7 -57
  298. package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +21 -126
  299. package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +2 -6
  300. package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +1 -4
  301. package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +1 -5
  302. package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +9 -34
  303. package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +41 -190
  304. package/.agents/scripts/lib/orchestration/git-cleanup/phases/merged-tip.js +9 -45
  305. package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +1 -4
  306. package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +19 -85
  307. package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +3 -17
  308. package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +1 -5
  309. package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +16 -100
  310. package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +1 -4
  311. package/.agents/scripts/lib/orchestration/lease-guard-shared.js +16 -67
  312. package/.agents/scripts/lib/orchestration/lifecycle/emit-ledger-event.js +9 -33
  313. package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-flip-failed.js +8 -29
  314. package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-unlanded.js +15 -68
  315. package/.agents/scripts/lib/orchestration/light-backstop.js +11 -49
  316. package/.agents/scripts/lib/orchestration/light-escalation.js +21 -89
  317. package/.agents/scripts/lib/orchestration/light-suitability.js +37 -307
  318. package/.agents/scripts/lib/orchestration/merge-block-class.js +39 -216
  319. package/.agents/scripts/lib/orchestration/merge-poll.js +104 -377
  320. package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
  321. package/.agents/scripts/lib/orchestration/plan-context.js +55 -318
  322. package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +22 -79
  323. package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +5 -31
  324. package/.agents/scripts/lib/orchestration/plan-metrics.js +29 -108
  325. package/.agents/scripts/lib/orchestration/plan-navigation.js +8 -27
  326. package/.agents/scripts/lib/orchestration/plan-persist/acceptance-handle-repair.js +12 -49
  327. package/.agents/scripts/lib/orchestration/plan-persist/audit-provenance.js +18 -73
  328. package/.agents/scripts/lib/orchestration/plan-persist/changes-repair.js +16 -78
  329. package/.agents/scripts/lib/orchestration/plan-persist/cross-plan-links.js +6 -30
  330. package/.agents/scripts/lib/orchestration/plan-persist/epic-adoption.js +14 -65
  331. package/.agents/scripts/lib/orchestration/plan-persist/epic-ops.js +21 -76
  332. package/.agents/scripts/lib/orchestration/plan-persist/external-deps.js +6 -43
  333. package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +14 -68
  334. package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +9 -41
  335. package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +71 -289
  336. package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
  337. package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +96 -362
  338. package/.agents/scripts/lib/orchestration/plan-persist/summary.js +9 -39
  339. package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +60 -186
  340. package/.agents/scripts/lib/orchestration/plan-persist/wave-collision-gate.js +9 -49
  341. package/.agents/scripts/lib/orchestration/plan-persist/wave-serialisation.js +7 -28
  342. package/.agents/scripts/lib/orchestration/plan-reachability.js +13 -42
  343. package/.agents/scripts/lib/orchestration/plan-run-labels/reap.js +16 -91
  344. package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +16 -54
  345. package/.agents/scripts/lib/orchestration/plan-text-hygiene.js +10 -52
  346. package/.agents/scripts/lib/orchestration/planning/authoring-context.js +14 -109
  347. package/.agents/scripts/lib/orchestration/planning/memory-pool-advisory.js +11 -83
  348. package/.agents/scripts/lib/orchestration/pr-watch.js +48 -306
  349. package/.agents/scripts/lib/orchestration/project-meta-cache.js +15 -80
  350. package/.agents/scripts/lib/orchestration/project-meta-resolver.js +10 -51
  351. package/.agents/scripts/lib/orchestration/reassert-status-column.js +12 -76
  352. package/.agents/scripts/lib/orchestration/remote-verifier.js +12 -36
  353. package/.agents/scripts/lib/orchestration/resolve-stories.js +33 -164
  354. package/.agents/scripts/lib/orchestration/retro-proposals.js +66 -361
  355. package/.agents/scripts/lib/orchestration/review-base-ref.js +9 -43
  356. package/.agents/scripts/lib/orchestration/review-depth.js +12 -91
  357. package/.agents/scripts/lib/orchestration/review-providers/codex.js +10 -111
  358. package/.agents/scripts/lib/orchestration/review-providers/degraded-gates.js +13 -71
  359. package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +7 -51
  360. package/.agents/scripts/lib/orchestration/review-providers/mi-exemptions.js +8 -53
  361. package/.agents/scripts/lib/orchestration/review-providers/native.js +30 -214
  362. package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +7 -52
  363. package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +4 -33
  364. package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +11 -71
  365. package/.agents/scripts/lib/orchestration/review-providers/scoped-lint.js +19 -131
  366. package/.agents/scripts/lib/orchestration/review-providers/security-review.js +6 -89
  367. package/.agents/scripts/lib/orchestration/review-providers/types.js +26 -56
  368. package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +3 -46
  369. package/.agents/scripts/lib/orchestration/run-epilogue.js +245 -326
  370. package/.agents/scripts/lib/orchestration/run-scoped-config.js +55 -159
  371. package/.agents/scripts/lib/orchestration/single-story-close/close-note.js +7 -34
  372. package/.agents/scripts/lib/orchestration/single-story-close/failed-terminal.js +16 -89
  373. package/.agents/scripts/lib/orchestration/single-story-close/gate-log.js +18 -109
  374. package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +83 -239
  375. package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +20 -82
  376. package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +103 -97
  377. package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +8 -64
  378. package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +136 -486
  379. package/.agents/scripts/lib/orchestration/single-story-close/phases/conventional-subject.js +30 -134
  380. package/.agents/scripts/lib/orchestration/single-story-close/phases/graphql-preflight.js +96 -0
  381. package/.agents/scripts/lib/orchestration/single-story-close/phases/lock-wait-pending.js +49 -0
  382. package/.agents/scripts/lib/orchestration/single-story-close/phases/normalize-pr-title.js +13 -86
  383. package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +20 -95
  384. package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +46 -203
  385. package/.agents/scripts/lib/orchestration/single-story-close/phases/pre-gate-steps.js +8 -50
  386. package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +12 -83
  387. package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +6 -39
  388. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +1 -6
  389. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-outcome.js +4 -28
  390. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-override.js +6 -51
  391. package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +6 -34
  392. package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +23 -121
  393. package/.agents/scripts/lib/orchestration/single-story-close/runner.js +180 -273
  394. package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +15 -69
  395. package/.agents/scripts/lib/orchestration/story-body-gate.js +4 -23
  396. package/.agents/scripts/lib/orchestration/story-close/baseline-upward-writeback.js +50 -179
  397. package/.agents/scripts/lib/orchestration/story-close/context-budget-writeback.js +11 -41
  398. package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +23 -311
  399. package/.agents/scripts/lib/orchestration/story-close/phases/local-lens-review.js +22 -147
  400. package/.agents/scripts/lib/orchestration/story-close/phases/review-core.js +16 -67
  401. package/.agents/scripts/lib/orchestration/story-deliver-terminal-schema.js +12 -68
  402. package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +42 -200
  403. package/.agents/scripts/lib/orchestration/story-follow-ups.js +167 -252
  404. package/.agents/scripts/lib/orchestration/story-init-envelope.js +52 -0
  405. package/.agents/scripts/lib/orchestration/story-init-remote.js +2 -6
  406. package/.agents/scripts/lib/orchestration/story-reachability.js +3 -23
  407. package/.agents/scripts/lib/orchestration/task-body-validator.js +12 -135
  408. package/.agents/scripts/lib/orchestration/ticket-lease.js +28 -131
  409. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +15 -149
  410. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +5 -33
  411. package/.agents/scripts/lib/orchestration/ticket-validator.js +63 -344
  412. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
  413. package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -261
  414. package/.agents/scripts/lib/orchestration/ticketing/state.js +14 -68
  415. package/.agents/scripts/lib/orchestration/ticketing/transition.js +46 -263
  416. package/.agents/scripts/lib/orchestration/ticketing.js +2 -26
  417. package/.agents/scripts/lib/orchestration/verify-credit.js +18 -79
  418. package/.agents/scripts/lib/orchestration/worktree-dirty.js +5 -30
  419. package/.agents/scripts/lib/path-security.js +3 -6
  420. package/.agents/scripts/lib/plan-phase-cleanup.js +9 -49
  421. package/.agents/scripts/lib/preflight-runner.js +13 -69
  422. package/.agents/scripts/lib/process-group.js +143 -0
  423. package/.agents/scripts/lib/project-root.js +2 -8
  424. package/.agents/scripts/lib/provider-factory.js +2 -25
  425. package/.agents/scripts/lib/qa/console-allowlist.js +10 -59
  426. package/.agents/scripts/lib/qa/qa-session.js +15 -69
  427. package/.agents/scripts/lib/qa/redact-evidence.js +18 -129
  428. package/.agents/scripts/lib/qa/resolve-qa-contract.js +26 -135
  429. package/.agents/scripts/lib/qa/resolve-selection.js +16 -84
  430. package/.agents/scripts/lib/reserved-test-ids.js +9 -47
  431. package/.agents/scripts/lib/runtime-deps/dep-resolution.js +13 -53
  432. package/.agents/scripts/lib/runtime-deps/ensure-installed.js +10 -44
  433. package/.agents/scripts/lib/runtime-deps/manifest.js +10 -30
  434. package/.agents/scripts/lib/runtime-deps/parser-major.js +15 -51
  435. package/.agents/scripts/lib/runtime-deps/preflight.js +4 -22
  436. package/.agents/scripts/lib/runtime-deps/scan-imports.js +11 -55
  437. package/.agents/scripts/lib/signals/detectors/common.js +12 -38
  438. package/.agents/scripts/lib/signals/index.js +2 -19
  439. package/.agents/scripts/lib/signals/schema.js +14 -109
  440. package/.agents/scripts/lib/signals/write.js +2 -11
  441. package/.agents/scripts/lib/single-story/confirm-merge.js +31 -72
  442. package/.agents/scripts/lib/single-story/story-merged-notify.js +8 -49
  443. package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +4 -26
  444. package/.agents/scripts/lib/single-story-sweep/protection.js +13 -100
  445. package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +60 -258
  446. package/.agents/scripts/lib/single-story-sweep.js +14 -97
  447. package/.agents/scripts/lib/skills/parse-skill.js +13 -59
  448. package/.agents/scripts/lib/skills/skills-index.js +8 -29
  449. package/.agents/scripts/lib/skills/walk-skill-files.js +17 -78
  450. package/.agents/scripts/lib/source-extensions.js +11 -42
  451. package/.agents/scripts/lib/source-text/strip-js-comments.js +8 -41
  452. package/.agents/scripts/lib/stdio-flush.js +9 -36
  453. package/.agents/scripts/lib/story-adjacency.js +8 -40
  454. package/.agents/scripts/lib/story-body/body-format-lints.js +51 -66
  455. package/.agents/scripts/lib/story-body/footer-block.js +11 -44
  456. package/.agents/scripts/lib/story-body/story-body.js +123 -344
  457. package/.agents/scripts/lib/temp-retention.js +42 -143
  458. package/.agents/scripts/lib/templates/decomposer-prompts.js +18 -80
  459. package/.agents/scripts/lib/test-env.js +12 -65
  460. package/.agents/scripts/lib/test-run-credit.js +10 -65
  461. package/.agents/scripts/lib/test-runner-contract.js +19 -74
  462. package/.agents/scripts/lib/test-temp.js +38 -184
  463. package/.agents/scripts/lib/test-tiers.js +12 -96
  464. package/.agents/scripts/lib/ticket-body-sections.js +21 -96
  465. package/.agents/scripts/lib/transpile.js +15 -74
  466. package/.agents/scripts/lib/util/concurrent-map.js +6 -25
  467. package/.agents/scripts/lib/util/parse-id-list.js +8 -34
  468. package/.agents/scripts/lib/util/poll-loop.js +8 -28
  469. package/.agents/scripts/lib/util/with-timeout.js +2 -11
  470. package/.agents/scripts/lib/validation-evidence.js +21 -96
  471. package/.agents/scripts/lib/wave-runner/footprint.js +17 -70
  472. package/.agents/scripts/lib/wave-runner/live-probe.js +67 -209
  473. package/.agents/scripts/lib/wave-runner/ready-set.js +72 -301
  474. package/.agents/scripts/lib/workers/crap-worker.js +11 -64
  475. package/.agents/scripts/lib/workers/maintainability-report-worker.js +8 -45
  476. package/.agents/scripts/lib/workers/maintainability-worker.js +5 -21
  477. package/.agents/scripts/lib/workers/serve-worker-messages.js +2 -18
  478. package/.agents/scripts/lib/workflow-closure.js +22 -105
  479. package/.agents/scripts/lib/workspace-provisioner.js +16 -54
  480. package/.agents/scripts/lib/worktree/git-hooks.js +15 -60
  481. package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +20 -60
  482. package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +10 -62
  483. package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +22 -86
  484. package/.agents/scripts/lib/worktree/lifecycle/reap.js +24 -126
  485. package/.agents/scripts/lib/worktree/lifecycle-manager.js +2 -20
  486. package/.agents/scripts/lib/worktree/node-modules-strategy.js +46 -180
  487. package/.agents/scripts/lib/worktree-manager.js +15 -40
  488. package/.agents/scripts/lint-issue-body.js +12 -68
  489. package/.agents/scripts/mandrel-update-preflight.js +10 -70
  490. package/.agents/scripts/merge-baseline.js +30 -105
  491. package/.agents/scripts/nav-registry-diff.js +22 -108
  492. package/.agents/scripts/notify.js +12 -69
  493. package/.agents/scripts/plan-context.js +97 -92
  494. package/.agents/scripts/plan-critics.js +12 -66
  495. package/.agents/scripts/plan-persist.js +71 -137
  496. package/.agents/scripts/plan-run-epilogue.js +20 -43
  497. package/.agents/scripts/pr-watch-with-update.js +79 -263
  498. package/.agents/scripts/providers/github/auth.js +3 -8
  499. package/.agents/scripts/providers/github/blocked-by-add.js +14 -61
  500. package/.agents/scripts/providers/github/board-add.js +5 -21
  501. package/.agents/scripts/providers/github/branch-protection.js +11 -43
  502. package/.agents/scripts/providers/github/cache.js +2 -14
  503. package/.agents/scripts/providers/github/comments.js +7 -40
  504. package/.agents/scripts/providers/github/compose.js +3 -19
  505. package/.agents/scripts/providers/github/errors.js +22 -125
  506. package/.agents/scripts/providers/github/issues.js +31 -123
  507. package/.agents/scripts/providers/github/labels.js +24 -124
  508. package/.agents/scripts/providers/github/mappers.js +5 -27
  509. package/.agents/scripts/providers/github/merge-methods.js +3 -22
  510. package/.agents/scripts/providers/github/project-board.js +2 -17
  511. package/.agents/scripts/providers/github/projects-v2-graphql.js +3 -6
  512. package/.agents/scripts/providers/github/request-helpers.js +5 -32
  513. package/.agents/scripts/providers/github/search-budget.js +9 -39
  514. package/.agents/scripts/providers/github/search-query.js +5 -26
  515. package/.agents/scripts/providers/github/sub-issue-add.js +15 -65
  516. package/.agents/scripts/providers/github/sub-issues.js +7 -36
  517. package/.agents/scripts/providers/github/tickets.js +32 -134
  518. package/.agents/scripts/providers/github.js +18 -59
  519. package/.agents/scripts/prune-plan-run-labels.js +12 -46
  520. package/.agents/scripts/quality-preview.js +35 -220
  521. package/.agents/scripts/resolve-doc-tiers.js +3 -26
  522. package/.agents/scripts/resolve-stories.js +16 -67
  523. package/.agents/scripts/resync-status-column.js +6 -25
  524. package/.agents/scripts/run-tests.js +29 -104
  525. package/.agents/scripts/single-story-close.js +23 -135
  526. package/.agents/scripts/single-story-confirm-merge.js +32 -139
  527. package/.agents/scripts/single-story-init.js +47 -259
  528. package/.agents/scripts/stories-wave-tick.js +179 -415
  529. package/.agents/scripts/sync-agentrc.js +3 -21
  530. package/.agents/scripts/sync-claude-agents.js +9 -55
  531. package/.agents/scripts/sync-claude-commands.js +20 -110
  532. package/.agents/scripts/test-wrapper.js +6 -43
  533. package/.agents/scripts/update-coverage-baseline.js +5 -22
  534. package/.agents/scripts/update-crap-baseline.js +7 -30
  535. package/.agents/scripts/update-duplication-baseline.js +16 -92
  536. package/.agents/scripts/update-maintainability-baseline.js +8 -62
  537. package/.agents/scripts/update-ticket-state.js +1 -7
  538. package/.agents/scripts/validate-skills.js +6 -26
  539. package/.agents/skills/core/gates-and-baselines/reference.md +0 -1
  540. package/.agents/skills/skills.index.json +2 -2
  541. package/.agents/skills/stack/qa/playwright/SKILL.md +26 -0
  542. package/.agents/templates/agent-protocol.md +2 -2
  543. package/.agents/templates/docs/audit-sweep-runbook.md +3 -4
  544. package/.agents/workflows/audit-accessibility.md +4 -7
  545. package/.agents/workflows/audit-adrs.md +3 -6
  546. package/.agents/workflows/audit-architecture.md +3 -11
  547. package/.agents/workflows/audit-baselines.md +6 -9
  548. package/.agents/workflows/audit-clean-code.md +8 -12
  549. package/.agents/workflows/audit-data-model.md +3 -7
  550. package/.agents/workflows/audit-dependencies.md +4 -7
  551. package/.agents/workflows/audit-devops.md +4 -8
  552. package/.agents/workflows/audit-documentation.md +1 -4
  553. package/.agents/workflows/audit-mobile.md +4 -7
  554. package/.agents/workflows/audit-navigability.md +3 -6
  555. package/.agents/workflows/audit-performance.md +2 -4
  556. package/.agents/workflows/audit-privacy.md +4 -7
  557. package/.agents/workflows/audit-quality.md +4 -7
  558. package/.agents/workflows/audit-security.md +4 -7
  559. package/.agents/workflows/audit-seo.md +4 -7
  560. package/.agents/workflows/audit-sre.md +4 -7
  561. package/.agents/workflows/audit-to-stories.md +17 -30
  562. package/.agents/workflows/audit-ux-ui.md +4 -7
  563. package/.agents/workflows/helpers/acceptance-self-eval.md +84 -157
  564. package/.agents/workflows/helpers/audit-lens-core.md +1 -1
  565. package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
  566. package/.agents/workflows/helpers/code-review.md +4 -2
  567. package/.agents/workflows/helpers/deliver-digest.md +37 -28
  568. package/.agents/workflows/helpers/deliver-light.md +92 -101
  569. package/.agents/workflows/helpers/deliver-reference.md +162 -220
  570. package/.agents/workflows/helpers/deliver-story-reference.md +197 -607
  571. package/.agents/workflows/helpers/deliver-story.md +17 -18
  572. package/.agents/workflows/helpers/plan-reference.md +125 -167
  573. package/.agents/workflows/helpers/qa-core.md +12 -0
  574. package/.agents/workflows/mandrel-deliver.md +47 -31
  575. package/.agents/workflows/mandrel-plan.md +22 -21
  576. package/.agents/workflows/mandrel-update.md +36 -21
  577. package/.agents/workflows/memory-consolidate.md +1 -1
  578. package/.agents/workflows/qa-assist.md +27 -71
  579. package/.agents/workflows/qa-explore.md +19 -59
  580. package/.agents/workflows/qa-run.md +11 -33
  581. package/README.md +1 -1
  582. package/bin/mandrel.js +5 -46
  583. package/bin/postinstall.js +18 -107
  584. package/docs/CHANGELOG.md +60 -0
  585. package/lib/cli/doctor.js +11 -71
  586. package/lib/cli/init.js +26 -165
  587. package/lib/cli/migrate.js +5 -64
  588. package/lib/cli/registry.js +84 -467
  589. package/lib/cli/sync-agents.js +4 -64
  590. package/lib/cli/sync-commands.js +11 -64
  591. package/lib/cli/sync.js +34 -213
  592. package/lib/cli/uninstall.js +40 -219
  593. package/lib/cli/update.js +326 -523
  594. package/lib/cli/version-check.js +8 -72
  595. package/lib/cli/version-helpers.js +14 -87
  596. package/lib/migrations/helpers/retire-agentrc-key.js +11 -52
  597. package/lib/migrations/index.js +17 -92
  598. package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +2 -15
  599. package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +1 -13
  600. package/lib/migrations/steps/2.11.0-retire-max-seed-words.js +2 -15
  601. package/lib/migrations/steps/2.2.0-retire-epic-ac-tags.js +9 -38
  602. package/lib/migrations/steps/2.20.0-retire-codebase-snapshot.js +1 -13
  603. package/lib/migrations/steps/2.32.0-retire-lint-baseline-command.js +2 -27
  604. package/lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js +2 -23
  605. package/lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js +2 -27
  606. package/lib/migrations/steps/2.60.0-retire-audit-results-autofile.js +21 -0
  607. package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
  608. package/package.json +17 -14
  609. package/.agents/docs/SDLC.md +0 -590
  610. package/.agents/docs/quality-gates.md +0 -1179
  611. package/.agents/rules/known-tooling-behavior.md +0 -150
  612. package/.agents/rules/orchestration-error-handling.md +0 -61
  613. package/.agents/rules/test-seams.md +0 -59
  614. package/.agents/schemas/baselines/lighthouse.schema.json +0 -59
  615. package/.agents/schemas/baselines/lint.schema.json +0 -47
  616. package/.agents/schemas/model-attribution.schema.json +0 -53
  617. package/.agents/scripts/check-action-pinning.js +0 -260
  618. package/.agents/scripts/check-audit-attribution.js +0 -302
  619. package/.agents/scripts/check-baseline-drift.js +0 -211
  620. package/.agents/scripts/check-baseline-scope.js +0 -362
  621. package/.agents/scripts/check-generated-validator.js +0 -202
  622. package/.agents/scripts/check-knip-entries.js +0 -159
  623. package/.agents/scripts/check-lifecycle-lint.js +0 -294
  624. package/.agents/scripts/check-pinned-override-notes.js +0 -102
  625. package/.agents/scripts/check-schema-references.js +0 -366
  626. package/.agents/scripts/check-test-portability.js +0 -512
  627. package/.agents/scripts/check-workflow-citations.js +0 -332
  628. package/.agents/scripts/check-workflow-cli-lint.js +0 -299
  629. package/.agents/scripts/check-workflow-timeouts.js +0 -291
  630. package/.agents/scripts/install-matrix-assert.js +0 -326
  631. package/.agents/scripts/lib/audit-advisories.js +0 -195
  632. package/.agents/scripts/lib/audit-attribution.js +0 -134
  633. package/.agents/scripts/lib/baselines/drift-detector.js +0 -351
  634. package/.agents/scripts/lib/baselines/kinds/lighthouse.js +0 -87
  635. package/.agents/scripts/lib/baselines/kinds/lint.js +0 -184
  636. package/.agents/scripts/lib/baselines/orphan-pruner.js +0 -233
  637. package/.agents/scripts/lib/baselines/scope-assert.js +0 -223
  638. package/.agents/scripts/lib/baselines/scope-inventory.js +0 -314
  639. package/.agents/scripts/lib/c8-cli-path.js +0 -21
  640. package/.agents/scripts/lib/config/gates/lighthouse.schema.js +0 -51
  641. package/.agents/scripts/lib/config/gates/lint.schema.js +0 -18
  642. package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +0 -70
  643. package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +0 -284
  644. package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +0 -80
  645. package/.agents/scripts/lib/dynamic-workflow/degraded-coverage.js +0 -81
  646. package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +0 -87
  647. package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +0 -74
  648. package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +0 -90
  649. package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +0 -43
  650. package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +0 -83
  651. package/.agents/scripts/lib/fs-walk.js +0 -52
  652. package/.agents/scripts/lib/knip-config-resolver.js +0 -181
  653. package/.agents/scripts/lib/knip-entry-sync.js +0 -452
  654. package/.agents/scripts/lib/orchestration/model-attribution.js +0 -418
  655. package/.agents/scripts/lib/orchestration/story-plan-state.js +0 -33
  656. package/.agents/scripts/lib/orchestration/structured-comment-parser.js +0 -67
  657. package/.agents/scripts/lib/pinned-override-notes.js +0 -88
  658. package/.agents/scripts/lib/pinned-override-resolve.js +0 -212
  659. package/.agents/scripts/lib/test-isolate/cli-options.js +0 -93
  660. package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +0 -52
  661. package/.agents/scripts/lib/test-isolate/list-files.js +0 -90
  662. package/.agents/scripts/lib/test-isolate/parse-tap.js +0 -75
  663. package/.agents/scripts/lib/test-isolate/progress-log.js +0 -45
  664. package/.agents/scripts/lib/test-isolate/render-report.js +0 -97
  665. package/.agents/scripts/lib/test-isolate/run-isolate.js +0 -87
  666. package/.agents/scripts/lib/test-isolate/runner.js +0 -483
  667. package/.agents/scripts/lib/test-profile/parse-tap.js +0 -136
  668. package/.agents/scripts/lib/test-profile/render-report.js +0 -45
  669. package/.agents/scripts/lint-label-vocabulary.js +0 -214
  670. package/.agents/scripts/post-structured-comment.js +0 -127
  671. package/.agents/scripts/provision-git-hooks.js +0 -85
  672. package/.agents/scripts/prune-baseline-orphans.js +0 -181
  673. package/.agents/scripts/run-coverage.js +0 -197
  674. package/.agents/scripts/run-lint.js +0 -133
  675. package/.agents/scripts/run-test-profile.js +0 -129
  676. package/.agents/scripts/run-verify.js +0 -118
  677. package/.agents/scripts/test-isolate.js +0 -55
  678. package/.agents/scripts/update-dead-exports-baseline.js +0 -321
@@ -1,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';
@@ -62,6 +43,7 @@ export { resolveListValue } from './config/shared.js';
62
43
  export { validateOrchestrationConfig } from './config/validate-orchestration.js';
63
44
  export {
64
45
  defaultNodeModulesStrategy,
46
+ getWorktreeIsolation,
65
47
  WORKTREE_ISOLATION_DEFAULTS,
66
48
  } from './config/worktree-isolation.js';
67
49
  export { PROJECT_ROOT } from './project-root.js';
@@ -94,10 +76,8 @@ function applyCommandsDefaults(project) {
94
76
  }
95
77
 
96
78
  /**
97
- * Enrich `delivery.worktreeIsolation` so an omitted field resolves to
98
- * WORKTREE_ISOLATION_DEFAULTS. Critical for `enabled`/`root` —
99
- * `Boolean(undefined) === false` previously disabled worktrees silently
100
- * 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.
101
81
  */
102
82
  function applyDeliveryDefaults(rawDelivery) {
103
83
  const delivery = { ...(rawDelivery ?? {}) };
@@ -110,10 +90,6 @@ function applyDeliveryDefaults(rawDelivery) {
110
90
  return delivery;
111
91
  }
112
92
 
113
- /**
114
- * Apply framework defaults for the four top-level blocks. Pure (no
115
- * mutation) — returns a fresh object.
116
- */
117
93
  /**
118
94
  * Deep-merge plain objects for the `.agentrc.local.json` overlay. Arrays and
119
95
  * scalars from `override` replace the base value at that key.
@@ -173,9 +149,6 @@ const ZERO_CONFIG_RAW = Object.freeze({
173
149
 
174
150
  function applyDefaults(raw) {
175
151
  const project = applyCommandsDefaults({ ...(raw.project ?? {}) });
176
- // Default docsContextFiles list — same five files the framework has
177
- // always shipped, preserved here so zero-config callers and configs
178
- // that omit the list both get the canonical mandatory-reads set.
179
152
  if (project.docsContextFiles == null) {
180
153
  project.docsContextFiles = [
181
154
  'architecture.md',
@@ -193,29 +166,15 @@ function applyDefaults(raw) {
193
166
  github: applyGithubDefaults(raw.github),
194
167
  planning: raw.planning ?? {},
195
168
  delivery: applyDeliveryDefaults(raw.delivery),
196
- // `qa` is an optional top-level block (agentrc.schema.json
197
- // `#/$defs/qa`). It needs no default-layering — the harness resolver
198
- // (`resolveQaContract`) owns normalization and required-field
199
- // enforcement — it only needs to survive the reshape so
200
- // `/qa-run` Step 0 can read it off the resolved wrapper.
169
+ // Passed through as authored; `resolveQaContract` owns normalization.
201
170
  ...(raw.qa !== undefined ? { qa: raw.qa } : {}),
202
171
  };
203
172
  }
204
173
 
205
174
  /**
206
- * Load + validate `.agentrc.json` and return the resolved wrapper.
207
- *
208
- * Returned shape:
209
- * {
210
- * project, github, planning, delivery, // post-reshape canonical blocks
211
- * qa, // optional QA-harness block (present iff authored)
212
- * raw, source,
213
- * }
214
- *
215
- * Error policy:
216
- * - File missing (ENOENT) → fall through to built-in defaults (zero-config).
217
- * - File present but malformed JSON → throw immediately.
218
- * - 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.
219
178
  *
220
179
  * @param {{ bustCache?: boolean, cwd?: string, validate?: boolean, ctx?: object }} [opts]
221
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,35 +161,14 @@ 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): the standard profile now routes purely off
262
- // the derived change level.
263
168
  const ROUTING_SCHEMA = {
264
169
  type: 'object',
265
170
  description:
266
- 'v2 delivery-spawn routing: role-scoped boot contexts and the ceremony profile. The v1 singleDelivery epic-route kill-switch was removed in Stage 6; the freshCriticSampleRate sampling floor was retired in Story #5313.',
171
+ 'v2 delivery-spawn routing: role-scoped boot contexts and the ceremony profile. The v1 singleDelivery epic-route kill-switch was removed in Stage 6; the freshCriticSampleRate sampling floor was retired in Story #5313 and the derived-level ceremony routing in Story #5343.',
267
172
  properties: {
268
173
  roleScopedAgents: {
269
174
  type: 'boolean',
@@ -275,7 +180,7 @@ const ROUTING_SCHEMA = {
275
180
  type: 'string',
276
181
  enum: ['minimal', 'standard', 'strict'],
277
182
  description:
278
- 'Acceptance-ceremony depth. minimal = always inline critic; strict = always fresh-context critic; standard (default) = routed off the change level derived from the Story diff: high or underivable → fresh, low → inline.',
183
+ 'Acceptance-ceremony depth — who authors the Story acceptance verdict. minimal and standard (default) = the inline self-eval, whatever the diff touches; strict = a fresh-context maker-blind critic. Review depth is a separate decision and still derives `deep` for any sensitive path (review-depth.js).',
279
184
  default: DELIVERY_ROUTING_DEFAULTS.ceremonyProfile,
280
185
  },
281
186
  closeAndLand: {
@@ -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,113 +260,24 @@ 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` — opt-out toggles consumed by the Epic finalize
456
- * listener's auto-file graduators (`lib/feedback-loop/*-graduator.js`, read
457
- * via `graduator-core.js#makeIsAutoFileEnabled`). All default to `true`
458
- * (auto-file on); set any to `false` to suppress auto-filing the
459
- * corresponding non-blocking findings as follow-up issues.
460
- *
461
- * `retroProposals` (Story #4418) governs the retro auto-filer: when true
462
- * (default) the retro's actionable routed proposals are filed as
463
- * `meta::<framework-gap|consumer-improvement>` + `friction::<category>`
464
- * issues via the graduator pre-parsed-findings seam, and the rendered retro
465
- * sections list the filed issue numbers instead of paste-ready `gh` command
466
- * stanzas; set it to `false` to fall back to the command stanzas.
467
- *
468
- * `frictionWindowDays` (Story #4850) bounds the run-scope friction recurrence
469
- * window by row age. The window deliberately spans every surviving signal
470
- * stream rather than the triggering run's own Stories — that is what lets a
471
- * once-per-Story systemic defect reach the ≥ 2 actionable threshold — which
472
- * left it unbounded in time, so a defect fixed weeks ago kept re-routing. An
473
- * integer ≥ 1; unset means 30 days.
474
- */
263
+ // `retroProposals` defaults off: the auto-filer's output was mostly noise.
475
264
  const FEEDBACK_LOOP_SCHEMA = {
476
265
  type: 'object',
477
266
  description:
478
- 'Opt-out toggles for the close-time auto-file graduators. All default to auto-filing on.',
267
+ 'Opt-in toggle for the close-time retro auto-file graduator. Auto-filing defaults to OFF (Story #5341).',
479
268
  properties: {
480
- auditResultsAutoFile: {
481
- type: 'boolean',
482
- description:
483
- 'When true (default), the close-time audit-results graduator auto-files non-blocking audit-results findings as follow-up issues routed by source classification. Set to false to suppress auto-filing; findings remain accessible in the structured comments on the Story.',
484
- default: true,
485
- },
486
269
  retroProposals: {
487
270
  type: 'boolean',
488
271
  description:
489
- 'When true (default), 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. Set to false to fall back to the command stanzas.',
490
- default: true,
491
- },
492
- frictionWindowDays: {
493
- type: 'integer',
494
- minimum: 1,
495
- description:
496
- "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.",
497
- },
498
- },
499
- additionalProperties: false,
500
- };
501
-
502
- /**
503
- * `delivery.auditToStories` — knobs for the `/audit-to-stories` unattended
504
- * (`--auto`) sweep (Story #4626). `severityFloor` is the minimum severity a
505
- * finding must meet to be proposed as a Story on an unattended run (default
506
- * `high`); `autoComment`, when true (default), lets `--auto` post a
507
- * "re-detected" comment on an already-open matched Issue instead of silently
508
- * skipping it.
509
- */
510
- const AUDIT_TO_STORIES_SCHEMA = {
511
- type: 'object',
512
- description:
513
- 'Knobs for the `/audit-to-stories` unattended (`--auto`) sweep (Story #4626).',
514
- properties: {
515
- severityFloor: {
516
- type: 'string',
517
- enum: ['critical', 'high', 'medium', 'low', 'all'],
518
- description:
519
- 'Minimum severity a finding must meet to be proposed as a Story on an unattended `/audit-to-stories --auto` sweep (Story #4626). Default high.',
520
- },
521
- autoComment: {
522
- type: 'boolean',
523
- description:
524
- 'When true (default), `/audit-to-stories --auto` posts a re-detected comment on an already-open matched Issue instead of silently skipping it.',
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.',
273
+ default: false,
525
274
  },
526
275
  },
527
276
  additionalProperties: false,
528
277
  };
529
278
 
530
- /**
531
- * `delivery.tempRetention` — auto-purge of spent temp artifacts (Story #4794).
532
- *
533
- * `enabled` defaults to `true`: reclaiming a landed Story's gate transcripts
534
- * and evidence is the behaviour, and the knob exists to turn it off. `classes`
535
- * lets an operator keep one family while purging the rest; `staleDays` is the
536
- * age floor for the families no Story id can be recovered from (audit reports,
537
- * abandoned `plan-<slug>/` dirs).
538
- */
279
+ // Families with no recoverable Story id (audits, plan dirs) use a fixed
280
+ // 7-day age floor.
539
281
  const TEMP_RETENTION_SCHEMA = {
540
282
  type: 'object',
541
283
  description:
@@ -552,16 +294,6 @@ const TEMP_RETENTION_SCHEMA = {
552
294
  'turns it off. When false every purge path is a reported no-op.',
553
295
  default: true,
554
296
  },
555
- staleDays: {
556
- type: 'integer',
557
- minimum: 1,
558
- description:
559
- 'Age floor (days, default 7) for the families no Story id can be ' +
560
- 'recovered from — roster-level audit reports and abandoned ' +
561
- 'plan-<slug>/ dirs. Story-keyed artifacts do not wait for it: they are ' +
562
- 'purged as soon as their merge is confirmed.',
563
- default: 7,
564
- },
565
297
  classes: {
566
298
  type: 'object',
567
299
  description:
@@ -604,27 +336,20 @@ const TEMP_RETENTION_SCHEMA = {
604
336
  export const DELIVERY_SCHEMA = {
605
337
  type: 'object',
606
338
  description:
607
- '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.',
608
340
  properties: {
609
341
  execution: EXECUTION_SCHEMA,
610
342
  docsFreshness: DOCS_FRESHNESS_SCHEMA,
611
343
  tempRetention: TEMP_RETENTION_SCHEMA,
612
344
  deliverRunner: DELIVER_RUNNER_SCHEMA,
613
345
  worktreeIsolation: WORKTREE_ISOLATION_SCHEMA,
614
- // `quality.gates.crap.incrementalCoverage` (Story #4981) is declared in
615
- // `config/gates/crap.schema.js` and reaches AJV validation through this
616
- // property — QUALITY_SCHEMA → GATES_SCHEMA → CRAP_GATE. No separate
617
- // declaration lives here; this is the composition point that makes the
618
- // gate-level schema authoritative for the top-level `.agentrc.json`
619
- // surface this module validates.
346
+ // Gate-level schemas (`config/gates/*.schema.js`) compose in here.
620
347
  quality: QUALITY_SCHEMA,
621
348
  mergeWatch: MERGE_WATCH_SCHEMA,
622
349
  codeReview: CODE_REVIEW_SCHEMA,
623
- review: REVIEW_SCHEMA,
624
350
  refactorStage: REFACTOR_STAGE_SCHEMA,
625
351
  acceptanceEval: ACCEPTANCE_EVAL_SCHEMA,
626
352
  feedbackLoop: FEEDBACK_LOOP_SCHEMA,
627
- auditToStories: AUDIT_TO_STORIES_SCHEMA,
628
353
  ci: CI_DELIVERY_SCHEMA,
629
354
  routing: ROUTING_SCHEMA,
630
355
  },