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,26 +1,15 @@
1
1
  // lib/migrations/steps/2.2.0-retire-epic-ac-tags.js
2
2
  /**
3
- * Story #4604 — strip the retired `@epic-<id>-ac-N` Gherkin AC tag namespace
4
- * from consumer feature files.
5
- *
6
- * The v2 Epic removal deleted `acceptance-spec-reconciler.js`, the only
7
- * consumer of the namespaced per-Epic AC tags, and the `/mandrel-plan` authoring
8
- * prompt no longer mandates them. Surviving tags in consumer `.feature`
9
- * files are inert and violate the gherkin-standards tag taxonomy's
10
- * no-ad-hoc-tags rule, so this step removes them: each `@epic-<digits>-ac-<digits>`
11
- * token is deleted from tag lines, a tag line left with no tags is dropped
12
- * entirely, and every other tag and line is preserved byte-for-byte. Files
13
- * with no stale tags are never rewritten.
3
+ * Strip the inert, taxonomy-violating `@epic-<id>-ac-N` tags from consumer
4
+ * feature files; a tag line left empty is dropped, everything else is kept
5
+ * byte-for-byte, and untouched files are never rewritten.
14
6
  */
15
7
 
16
8
  import nodeFs from 'node:fs';
17
9
  import path from 'node:path';
18
10
 
19
11
  /**
20
- * Mirror of `CANONICAL_FEATURE_ROOTS` in
21
- * `.agents/scripts/lib/bdd-runner-detect.js`. Duplicated deliberately:
22
- * `lib/` runs from the installed npm package inside a consumer project and
23
- * must not import from the materialized `.agents/` payload.
12
+ * Mirrors `bdd-runner-detect.js`: `lib/` must not import the `.agents/` payload.
24
13
  */
25
14
  const CANONICAL_FEATURE_ROOTS = Object.freeze([
26
15
  'tests/features',
@@ -30,18 +19,11 @@ const CANONICAL_FEATURE_ROOTS = Object.freeze([
30
19
 
31
20
  const EPIC_AC_TAG_RE = /@epic-\d+-ac-\d+/;
32
21
 
33
- /**
34
- * A Gherkin tag line: optional indentation followed by one or more
35
- * whitespace-separated `@tag` tokens and nothing else.
36
- */
37
22
  const TAG_LINE_RE = /^(\s*)(@\S+(?:\s+@\S+)*)\s*$/;
38
23
 
39
24
  /**
40
- * Recursively collect `.feature` file paths under `root`.
41
- *
42
25
  * @param {string} root
43
- * @param {typeof nodeFs} [fsImpl] Filesystem seam; defaults to the real
44
- * `node:fs` per `.agents/rules/test-seams.md` rule 1.
26
+ * @param {typeof nodeFs} [fsImpl]
45
27
  * @returns {string[]}
46
28
  */
47
29
  function collectFeatureFiles(root, fsImpl = nodeFs) {
@@ -72,11 +54,8 @@ function collectFeatureFiles(root, fsImpl = nodeFs) {
72
54
 
73
55
  /**
74
56
  * @param {unknown} ctx
75
- * @param {typeof nodeFs} [fsImpl] Filesystem seam; forwarded to
76
- * {@link collectFeatureFiles} rather than re-acquired there
77
- * (`.agents/rules/test-seams.md` rule 4).
78
- * @returns {string[]} Absolute paths of every `.feature` file under the
79
- * canonical feature roots that exist in the consumer tree.
57
+ * @param {typeof nodeFs} [fsImpl]
58
+ * @returns {string[]}
80
59
  */
81
60
  function resolveFeatureFiles(ctx, fsImpl = nodeFs) {
82
61
  const projectRoot = ctx?.projectRoot ?? process.cwd();
@@ -86,10 +65,6 @@ function resolveFeatureFiles(ctx, fsImpl = nodeFs) {
86
65
  }
87
66
 
88
67
  /**
89
- * Strip retired `@epic-<id>-ac-<n>` tokens from one file's content.
90
- * Only tag lines are touched; a tag line whose every tag was retired is
91
- * dropped. Returns the original string when nothing matched.
92
- *
93
68
  * @param {string} content
94
69
  * @returns {string}
95
70
  */
@@ -122,9 +97,7 @@ export const retireEpicAcTags = {
122
97
  '(their reconciler consumer was deleted in the v2 Epic removal)',
123
98
  /**
124
99
  * @param {{ projectRoot?: string, fs?: typeof nodeFs }} [ctx]
125
- * @param {typeof nodeFs} [fsImpl] Optional final filesystem seam; defaults
126
- * to `ctx.fs` when the migration runner threads one, else the real
127
- * `node:fs` (`.agents/rules/test-seams.md` rule 1).
100
+ * @param {typeof nodeFs} [fsImpl]
128
101
  * @returns {boolean}
129
102
  */
130
103
  detect(ctx, fsImpl = ctx?.fs ?? nodeFs) {
@@ -138,9 +111,7 @@ export const retireEpicAcTags = {
138
111
  },
139
112
  /**
140
113
  * @param {{ projectRoot?: string, fs?: typeof nodeFs }} [ctx]
141
- * @param {typeof nodeFs} [fsImpl] Optional final filesystem seam; defaults
142
- * to `ctx.fs` when the migration runner threads one, else the real
143
- * `node:fs` (`.agents/rules/test-seams.md` rule 1).
114
+ * @param {typeof nodeFs} [fsImpl]
144
115
  * @returns {void}
145
116
  */
146
117
  apply(ctx, fsImpl = ctx?.fs ?? nodeFs) {
@@ -1,17 +1,5 @@
1
1
  // lib/migrations/steps/2.20.0-retire-codebase-snapshot.js
2
- /**
3
- * Story #4811 — strip the retired `planning.codebaseSnapshot` block from a
4
- * consumer's `.agentrc.json` and from the `.agentrc.local.json` overlay an
5
- * operator pins in `.agentrc.local.json`.
6
- *
7
- * Spec authoring is grounded by targeted retrieval plus the Phase 8
8
- * file-assumption gate, so the snapshot block has no consumer; the block
9
- * carries `additionalProperties: false`, so a config still setting it fails
10
- * validation on upgrade rather than warning.
11
- *
12
- * `planning` is optional, so a config that carried nothing but the snapshot
13
- * does not keep an orphan `planning: {}`.
14
- */
2
+ /** Strip the reader-less `planning.codebaseSnapshot` block. */
15
3
 
16
4
  import { createRetireAgentrcKeyStep } from '../helpers/retire-agentrc-key.js';
17
5
 
@@ -1,32 +1,7 @@
1
1
  // lib/migrations/steps/2.32.0-retire-lint-baseline-command.js
2
2
  /**
3
- * Story #5004 — strip the retired `project.commands.lintBaseline` from a
4
- * consumer's config. The framework-owned lint-baseline capture CLI is gone,
5
- * and the `commands` block carries `additionalProperties: false`, so a
6
- * config still naming the command fails validation on upgrade.
7
- *
8
- * It sweeps **both** config surfaces. `config-resolver.js` deep-merges
9
- * `.agentrc.local.json` over `.agentrc.json` and validates the result, so a
10
- * key surviving in the operator's overlay fails exactly as a base one would.
11
- * Sweeping only the base would report "nothing to migrate" and leave that
12
- * consumer hard-broken with no self-service remedy — re-running
13
- * `mandrel update` would keep reporting clean — while this commit's
14
- * `BREAKING CHANGE:` footer promises the upgrade deletes the key for them.
15
- *
16
- * The `lint` baseline KIND survives for consumers whose own linter writes
17
- * `baselines/lint.json`; only the framework-owned capture shell is gone, so
18
- * nothing here touches the baseline file or the gate config.
19
- *
20
- * An emptied `commands` block is deliberately left in place (`pruneDepth: 0`):
21
- * unlike `planning.complexityGate`, `project` is a required block and an empty
22
- * `commands` object is valid against the schema, so pruning it would be a
23
- * cosmetic edit to a config the consumer owns.
24
- *
25
- * This step is also the carrier for the release note #5004 never emitted: its
26
- * commit ships the `BREAKING CHANGE:` footer that the squash subject on `main`
27
- * (`227e1af4`) lacks, and which release-please therefore could not surface.
28
- * See `single-story-close/phases/conventional-subject.js` for the close-side
29
- * fix that stops the next one being lost.
3
+ * Strip `project.commands.lintBaseline` (its capture CLI is gone). An emptied
4
+ * `commands` is kept: `project` is required and `{}` is valid.
30
5
  */
31
6
 
32
7
  import { createRetireAgentrcKeyStep } from '../helpers/retire-agentrc-key.js';
@@ -1,28 +1,7 @@
1
1
  // lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js
2
2
  /**
3
- * Story #5313 — the delivery diet. Strip the retired `delivery.*` keys from a
4
- * consumer's config:
5
- *
6
- * - `delivery.routing.freshCriticSampleRate` — the maker-checker sampling
7
- * floor is gone; the standard profile routes purely off the derived
8
- * change level (high or underivable → fresh critic, low → inline).
9
- * - `delivery.codeReview.maxFixScopeFiles` — the auto-fix file-count
10
- * ceiling bounded remediation by count rather than by risk.
11
- * - `delivery.signals` (`rework.editsPerFile`, `retry.repeatCount`) — the
12
- * detector thresholds and `SIGNALS_DEFAULTS` are retired wholesale.
13
- * - `delivery.quality.codingGuardrails.cyclomaticMustFix` — the cyclomatic
14
- * ratchet keeps its fixed ceiling of 12; `cyclomaticFlag` stays advisory.
15
- *
16
- * Every affected block carries `additionalProperties: false`, so a config
17
- * still setting any of them fails validation on upgrade rather than warning.
18
- * It sweeps **both** config surfaces (`.agentrc.json` and the gitignored
19
- * `.agentrc.local.json`), because `config-resolver.js` deep-merges the
20
- * overlay before the AJV gate runs.
21
- *
22
- * Pruning: `delivery.signals` is removed whole (`pruneDepth: 1` prunes an
23
- * emptied `delivery`); the nested keys prune their emptied ancestors up to
24
- * `delivery` itself. `delivery` is optional, so an emptied block is removed
25
- * rather than left as `{}`. A sibling key that survives keeps its block.
3
+ * Strip the retired `delivery.*` limit knobs; `delivery` is optional, so
4
+ * emptied ancestors are pruned up to it.
26
5
  */
27
6
 
28
7
  import { createRetireAgentrcKeyStep } from '../helpers/retire-agentrc-key.js';
@@ -1,32 +1,7 @@
1
1
  // lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js
2
2
  /**
3
- * Story #5312 — the planning diet. Strip the ten retired `planning.*` keys
4
- * from a consumer's config:
5
- *
6
- * - `planning.complexityGate` — the plan-side lite claim and its persist
7
- * backstop are gone; nothing reads the switch.
8
- * - `planning.riskHeuristics` — the phrase list was empty in every consumer
9
- * that resolved it, and the critic trigger that matched it went with the
10
- * consolidation critic.
11
- * - `planning.failOnSharedEditors`, `planning.requireExplicitCrossStoryDeps`,
12
- * `planning.failOnRegistryConflicts`, `planning.failOnLargeFanOut`,
13
- * `planning.largeFanOutThreshold`, `planning.crossCuttingRegistries` —
14
- * every conflict finding is advisory now, and the registry and fan-out
15
- * findings no longer exist.
16
- * - `planning.memoryPool.staleAfterDays`, `planning.memoryPool.growthDelta`
17
- * — the memory-hygiene advisory keeps only its index-byte arm.
18
- *
19
- * The `planning` block carries `additionalProperties: false`, so a config
20
- * still setting any of them fails validation on upgrade rather than warning.
21
- * It sweeps **both** config surfaces (`.agentrc.json` and the gitignored
22
- * `.agentrc.local.json`), because `config-resolver.js` deep-merges the
23
- * overlay before the AJV gate runs.
24
- *
25
- * Pruning: the two `memoryPool` keys prune the `memoryPool` object when it
26
- * empties and then `planning` itself (`pruneDepth: 2`); the top-level keys
27
- * prune `planning` (`pruneDepth: 1`). `planning` is optional, so an emptied
28
- * block is removed rather than left as `{}`. A `memoryPool` that still
29
- * carries `indexByteCeiling` survives untouched.
3
+ * Strip the retired `planning.*` limit knobs; `planning` is optional, so
4
+ * emptied blocks are pruned.
30
5
  */
31
6
 
32
7
  import { createRetireAgentrcKeyStep } from '../helpers/retire-agentrc-key.js';
@@ -0,0 +1,21 @@
1
+ // lib/migrations/steps/2.60.0-retire-audit-results-autofile.js
2
+ /**
3
+ * Strip `delivery.feedbackLoop.auditResultsAutoFile`: it had no reader. The
4
+ * sibling `retroProposals` is live and stays.
5
+ */
6
+
7
+ import { createRetireAgentrcKeyStep } from '../helpers/retire-agentrc-key.js';
8
+
9
+ export const retireAuditResultsAutoFile = createRetireAgentrcKeyStep({
10
+ version: '2.60.0',
11
+ description:
12
+ 'strip the retired delivery.feedbackLoop.auditResultsAutoFile key from ' +
13
+ '.agentrc.json — its graduator was deleted, so the toggle had no ' +
14
+ 'runtime reader (Story #5366)',
15
+ keys: [
16
+ {
17
+ path: ['delivery', 'feedbackLoop', 'auditResultsAutoFile'],
18
+ pruneDepth: 2,
19
+ },
20
+ ],
21
+ });
@@ -0,0 +1,333 @@
1
+ // lib/migrations/steps/strip-removed-agentrc-keys.js
2
+ /**
3
+ * Strip the `.agentrc` keys the config-surface cut removed (removed gates,
4
+ * zero-reader keys, tuning keys folded into constants) from both config
5
+ * surfaces, reporting each one's replacement — and a `behaviour change` line
6
+ * when the consumer's value differed, so the upgrade never silently changes
7
+ * delivery. Only `delivery`/`planning` (optional) ancestors are pruned.
8
+ */
9
+
10
+ import nodeFs from 'node:fs';
11
+ import path from 'node:path';
12
+
13
+ const AGENTRC_FILENAMES = Object.freeze([
14
+ '.agentrc.json',
15
+ '.agentrc.local.json',
16
+ ]);
17
+
18
+ const PRUNABLE_ROOTS = new Set(['delivery', 'planning']);
19
+
20
+ /**
21
+ * @param {string} dotted
22
+ * @param {string} constant
23
+ * @param {unknown} value
24
+ */
25
+ const folded = (dotted, constant, value) => ({
26
+ path: dotted.split('.'),
27
+ constant,
28
+ value,
29
+ });
30
+
31
+ /**
32
+ * `alwaysChanges`: removal changes behaviour for anyone who had it on.
33
+ *
34
+ * @param {string} dotted
35
+ * @param {string} reason
36
+ * @param {{ alwaysChanges?: boolean }} [opts]
37
+ */
38
+ const removed = (dotted, reason, { alwaysChanges = false } = {}) => ({
39
+ path: dotted.split('.'),
40
+ reason,
41
+ alwaysChanges,
42
+ });
43
+
44
+ const REMOVED_AGENTRC_KEYS = Object.freeze([
45
+ removed(
46
+ 'delivery.quality.gates.lint',
47
+ 'the lint baseline gate was removed (npm run lint still runs as a close gate)',
48
+ { alwaysChanges: true },
49
+ ),
50
+ removed(
51
+ 'delivery.quality.gates.lighthouse',
52
+ 'the lighthouse baseline gate was removed',
53
+ { alwaysChanges: true },
54
+ ),
55
+ removed('delivery.quality.baselineEpsilon.lint', 'its gate was removed'),
56
+ removed(
57
+ 'delivery.quality.baselineEpsilon.lighthouse',
58
+ 'its gate was removed',
59
+ ),
60
+ removed('delivery.quality.gates.mutation.strykerConfigPath', 'no reader'),
61
+ removed('delivery.auditToStories.autoComment', 'no reader'),
62
+ removed('delivery.codeReview.providerConfig', 'no reader'),
63
+ removed('delivery.quality.gates.crap.friction', 'no reader'),
64
+ removed('delivery.quality.gates.crap.refreshTimeoutMs', 'no reader'),
65
+ removed(
66
+ 'delivery.quality.gates.maintainability.refreshTimeoutMs',
67
+ 'no reader',
68
+ ),
69
+ removed('delivery.quality.gates.duplication.refreshTimeoutMs', 'no reader'),
70
+ removed(
71
+ 'delivery.quality.gates.crap.incrementalCoverage.enabled',
72
+ 'deprecated alias — set skipWhenUnchanged / baselineJoin instead',
73
+ { alwaysChanges: true },
74
+ ),
75
+ folded('delivery.quality.gateScoping.scope', 'GATE_SCOPING.scope', 'diff'),
76
+ folded(
77
+ 'delivery.quality.gateScoping.diffRef',
78
+ 'GATE_SCOPING.diffRef',
79
+ 'main',
80
+ ),
81
+ folded(
82
+ 'delivery.quality.gates.crap.refreshTag',
83
+ 'BASELINE_REFRESH_TAG',
84
+ 'baseline-refresh:',
85
+ ),
86
+ folded(
87
+ 'delivery.quality.gates.maintainability.refreshTag',
88
+ 'BASELINE_REFRESH_TAG',
89
+ 'baseline-refresh:',
90
+ ),
91
+ folded(
92
+ 'delivery.quality.gates.coverage.timeoutMs',
93
+ 'COVERAGE_GATE_DEFAULTS.timeoutMs',
94
+ 600000,
95
+ ),
96
+ folded(
97
+ 'delivery.quality.formatAutofix.timeoutMs',
98
+ 'FORMAT_AUTOFIX_TIMEOUT_MS',
99
+ 60000,
100
+ ),
101
+ folded(
102
+ 'delivery.quality.codingGuardrails.cyclomaticFlag',
103
+ 'CODING_GUARDRAILS.cyclomaticFlag',
104
+ 8,
105
+ ),
106
+ folded(
107
+ 'delivery.quality.codingGuardrails.requireSiblingTest',
108
+ 'CODING_GUARDRAILS.requireSiblingTest',
109
+ false,
110
+ ),
111
+ folded(
112
+ 'delivery.quality.autoRefresh.crapJumpCap',
113
+ 'AUTO_REFRESH_DEFAULTS.crapJumpCap',
114
+ 5,
115
+ ),
116
+ folded(
117
+ 'delivery.quality.autoRefresh.scope',
118
+ 'AUTO_REFRESH_DEFAULTS.scope',
119
+ 'diff',
120
+ ),
121
+ ...Object.entries({
122
+ maintainability: 0.5,
123
+ crap: 0.5,
124
+ coverage: 0.1,
125
+ mutation: 0.5,
126
+ 'bundle-size': 1024,
127
+ duplication: 0.5,
128
+ }).map(([kind, value]) =>
129
+ folded(
130
+ `delivery.quality.baselineEpsilon.${kind}`,
131
+ `BASELINE_EPSILON.${kind}`,
132
+ value,
133
+ ),
134
+ ),
135
+ folded('delivery.codeReview.maxFixAttempts', 'none (no reader)', 3),
136
+ folded('github.defaultTimeoutMs', 'GH_DEFAULT_TIMEOUT_MS', 60000),
137
+ folded(
138
+ 'delivery.ci.watch.pollIntervalMs',
139
+ 'WATCH_DEFAULTS.pollIntervalMs (--poll-interval-ms)',
140
+ 10000,
141
+ ),
142
+ folded(
143
+ 'delivery.ci.watch.maxPolls',
144
+ 'WATCH_DEFAULTS.maxPolls (--max-polls)',
145
+ 180,
146
+ ),
147
+ folded(
148
+ 'delivery.ci.watch.maxResumes',
149
+ 'WATCH_DEFAULTS.maxResumes (--max-resumes)',
150
+ 3,
151
+ ),
152
+ folded(
153
+ 'delivery.ci.watch.attachWindowMs',
154
+ 'WATCH_DEFAULTS.attachWindowMs (--attach-window-ms)',
155
+ 1200000,
156
+ ),
157
+ folded(
158
+ 'delivery.execution.timeoutMs',
159
+ 'LIMITS_DEFAULTS.executionTimeoutMs',
160
+ 600000,
161
+ ),
162
+ folded(
163
+ 'delivery.execution.requireCreditedCapture',
164
+ 'off (coverage-capture --require-credited)',
165
+ false,
166
+ ),
167
+ folded(
168
+ 'delivery.tempRetention.staleDays',
169
+ 'TEMP_RETENTION_DEFAULTS.staleDays',
170
+ 7,
171
+ ),
172
+ folded('delivery.mergeWatch.intervalSeconds', 'DEFAULT_INTERVAL_SECONDS', 30),
173
+ folded('delivery.mergeWatch.updateAttempts', 'DEFAULT_UPDATE_ATTEMPTS', 3),
174
+ folded('delivery.review.lensDiffFloor', 'DEFAULT_LENS_DIFF_FLOOR', 40),
175
+ folded(
176
+ 'delivery.feedbackLoop.frictionWindowDays',
177
+ 'FRICTION_WINDOW_DAYS',
178
+ 30,
179
+ ),
180
+ folded(
181
+ 'delivery.auditToStories.severityFloor',
182
+ 'DEFAULT_SEVERITY_FLOOR (--severity)',
183
+ 'high',
184
+ ),
185
+ folded('planning.memoryPool.indexByteCeiling', 'INDEX_BYTE_CEILING', 24576),
186
+ ]);
187
+
188
+ /**
189
+ * @param {object | null} config
190
+ * @param {string[]} keyPath
191
+ * @returns {object[] | null}
192
+ */
193
+ function containersFor(config, keyPath) {
194
+ if (!config || typeof config !== 'object') return null;
195
+ const chain = [config];
196
+ for (const segment of keyPath.slice(0, -1)) {
197
+ const next = chain[chain.length - 1][segment];
198
+ if (!next || typeof next !== 'object' || Array.isArray(next)) return null;
199
+ chain.push(next);
200
+ }
201
+ return chain;
202
+ }
203
+
204
+ /**
205
+ * @param {object | null} config
206
+ * @param {string[]} keyPath
207
+ * @returns {{ present: boolean, value?: unknown }}
208
+ */
209
+ function lookup(config, keyPath) {
210
+ const chain = containersFor(config, keyPath);
211
+ const leaf = keyPath[keyPath.length - 1];
212
+ if (!chain || !Object.hasOwn(chain[chain.length - 1], leaf)) {
213
+ return { present: false };
214
+ }
215
+ return { present: true, value: chain[chain.length - 1][leaf] };
216
+ }
217
+
218
+ /**
219
+ * @param {object} config
220
+ * @param {string[]} keyPath
221
+ * @returns {void}
222
+ */
223
+ function deleteAndPrune(config, keyPath) {
224
+ const chain = containersFor(config, keyPath);
225
+ if (!chain) return;
226
+ delete chain[chain.length - 1][keyPath[keyPath.length - 1]];
227
+ if (!PRUNABLE_ROOTS.has(keyPath[0])) return;
228
+ for (let index = chain.length - 1; index > 0; index -= 1) {
229
+ if (Object.keys(chain[index]).length > 0) break;
230
+ delete chain[index - 1][keyPath[index - 1]];
231
+ }
232
+ }
233
+
234
+ /**
235
+ * @param {object} entry
236
+ * @param {unknown} value
237
+ * @returns {boolean}
238
+ */
239
+ function changesBehaviour(entry, value) {
240
+ if ('constant' in entry) {
241
+ return JSON.stringify(value) !== JSON.stringify(entry.value);
242
+ }
243
+ if (!entry.alwaysChanges) return false;
244
+ return !(value && typeof value === 'object' && value.enabled === false);
245
+ }
246
+
247
+ /**
248
+ * @param {string} filename
249
+ * @param {object} entry
250
+ * @param {unknown} value
251
+ * @returns {string}
252
+ */
253
+ function reportLine(filename, entry, value) {
254
+ const dotted = entry.path.join('.');
255
+ const replacement =
256
+ 'constant' in entry
257
+ ? `now ${entry.constant} = ${JSON.stringify(entry.value)}`
258
+ : entry.reason;
259
+ const prefix = changesBehaviour(entry, value)
260
+ ? ` behaviour change: ${filename} set ${dotted} = ${JSON.stringify(value)};`
261
+ : ` removed ${filename} ${dotted};`;
262
+ return `${prefix} ${replacement}`;
263
+ }
264
+
265
+ /**
266
+ * Mutates `config`.
267
+ *
268
+ * @param {object} config
269
+ * @param {string} filename
270
+ * @returns {string[]}
271
+ */
272
+ function stripRemovedKeys(config, filename) {
273
+ const lines = [];
274
+ for (const entry of REMOVED_AGENTRC_KEYS) {
275
+ const { present, value } = lookup(config, entry.path);
276
+ if (!present) continue;
277
+ lines.push(reportLine(filename, entry, value));
278
+ deleteAndPrune(config, entry.path);
279
+ }
280
+ return lines;
281
+ }
282
+
283
+ /**
284
+ * @param {{ projectRoot?: string }} ctx
285
+ * @param {string} filename
286
+ * @param {typeof nodeFs} fsImpl
287
+ * @returns {object | null}
288
+ */
289
+ function readConfig(ctx, filename, fsImpl) {
290
+ try {
291
+ const file = path.join(ctx?.projectRoot ?? process.cwd(), filename);
292
+ return JSON.parse(fsImpl.readFileSync(file, 'utf8'));
293
+ } catch {
294
+ return null;
295
+ }
296
+ }
297
+
298
+ /**
299
+ * @param {object | null} config
300
+ * @returns {boolean}
301
+ */
302
+ function carriesRemovedKey(config) {
303
+ return REMOVED_AGENTRC_KEYS.some(
304
+ (entry) => lookup(config, entry.path).present,
305
+ );
306
+ }
307
+
308
+ export const stripRemovedAgentrcKeys = {
309
+ version: '2.61.0',
310
+ description:
311
+ 'strip the .agentrc keys the config-surface cut removed — the lint and ' +
312
+ 'lighthouse gates, zero-reader keys, and never-set tuning keys now ' +
313
+ 'fixed as constants (Story #5382)',
314
+ detect(ctx) {
315
+ const fsImpl = ctx?.fs ?? nodeFs;
316
+ return AGENTRC_FILENAMES.some((filename) =>
317
+ carriesRemovedKey(readConfig(ctx, filename, fsImpl)),
318
+ );
319
+ },
320
+ apply(ctx) {
321
+ const fsImpl = ctx?.fs ?? nodeFs;
322
+ const log = ctx?.log ?? console.log;
323
+ for (const filename of AGENTRC_FILENAMES) {
324
+ const config = readConfig(ctx, filename, fsImpl);
325
+ if (!carriesRemovedKey(config)) continue;
326
+ for (const line of stripRemovedKeys(config, filename)) log(line);
327
+ fsImpl.writeFileSync(
328
+ path.join(ctx?.projectRoot ?? process.cwd(), filename),
329
+ `${JSON.stringify(config, null, 2)}\n`,
330
+ );
331
+ }
332
+ },
333
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mandrel",
3
- "version": "2.59.0",
3
+ "version": "2.61.0",
4
4
  "description": "Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.",
5
5
  "files": [
6
6
  ".agents/",
@@ -20,21 +20,21 @@
20
20
  "test:quick": "node .agents/scripts/run-tests.js --tier quick",
21
21
  "test:integration": "node .agents/scripts/run-tests.js --tier integration",
22
22
  "test:e2e": "node .agents/scripts/run-tests.js --tier e2e",
23
- "test:profile": "node .agents/scripts/run-test-profile.js",
23
+ "test:profile": "node scripts/run-test-profile.js",
24
24
  "test:census": "SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js",
25
- "test:isolate": "node .agents/scripts/test-isolate.js",
26
- "verify": "node .agents/scripts/run-verify.js",
25
+ "test:isolate": "node scripts/test-isolate.js",
26
+ "verify": "node scripts/run-verify.js",
27
27
  "typecheck": "node -e \"process.exit(0)\"",
28
- "test:coverage": "node .agents/scripts/run-coverage.js",
28
+ "test:coverage": "node scripts/run-coverage.js",
29
29
  "coverage:check": "node .agents/scripts/check-baselines.js --gate coverage",
30
30
  "coverage:update": "node .agents/scripts/update-coverage-baseline.js",
31
31
  "coverage:reanchor": "node .agents/scripts/update-coverage-baseline.js --full-scope",
32
32
  "baseline:agents-loc": "node baselines/agents-loc-baseline.mjs",
33
- "baselines:scope": "node .agents/scripts/check-baseline-scope.js",
34
- "baselines:prune": "node .agents/scripts/prune-baseline-orphans.js",
33
+ "baselines:scope": "node scripts/check-baseline-scope.js",
34
+ "baselines:prune": "node scripts/prune-baseline-orphans.js",
35
35
  "baselines:merge-driver": "node .agents/scripts/merge-baseline.js --install",
36
36
  "lint:md": "markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"",
37
- "lint": "node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && node .agents/scripts/check-pinned-override-notes.js && npm run docs:check",
37
+ "lint": "node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check",
38
38
  "docs:gen": "node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js",
39
39
  "docs:check": "node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check",
40
40
  "skills:index": "node .agents/scripts/generate-skills-index.js",
@@ -45,15 +45,18 @@
45
45
  "maintainability:update": "node .agents/scripts/update-maintainability-baseline.js",
46
46
  "maintainability:reanchor": "node .agents/scripts/update-maintainability-baseline.js --full-scope",
47
47
  "check:arch": "node .agents/scripts/check-arch-cycles.js",
48
+ "//resident-context-reports": "check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output.",
48
49
  "check:context-budget": "node .agents/scripts/check-context-budget.js",
49
50
  "check:cyclomatic": "node .agents/scripts/check-cyclomatic.js",
50
51
  "cyclomatic:update": "node .agents/scripts/check-cyclomatic.js --update",
51
- "dead-exports:update": "node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production",
52
- "check:knip-entries": "node .agents/scripts/check-knip-entries.js",
53
- "validator:gen": "node .agents/scripts/check-generated-validator.js",
54
- "validator:check": "node .agents/scripts/check-generated-validator.js --check",
55
- "check:schema-refs": "node .agents/scripts/check-schema-references.js",
56
- "check:workflow-citations": "node .agents/scripts/check-workflow-citations.js",
52
+ "dead-exports:update": "node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production",
53
+ "check:knip-entries": "node scripts/check-knip-entries.js",
54
+ "validator:gen": "node scripts/check-generated-validator.js",
55
+ "validator:check": "node scripts/check-generated-validator.js --check",
56
+ "config:ceiling": "node scripts/check-agentrc-key-ceiling.js",
57
+ "check:comment-policy": "node scripts/check-comment-policy.js",
58
+ "check:schema-refs": "node scripts/check-schema-references.js",
59
+ "check:workflow-citations": "node scripts/check-workflow-citations.js",
57
60
  "crap:check": "node .agents/scripts/check-baselines.js --gate crap",
58
61
  "crap:update": "node .agents/scripts/update-crap-baseline.js",
59
62
  "crap:reanchor": "node .agents/scripts/update-crap-baseline.js --full-scope",