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,30 +1,12 @@
1
1
  /**
2
2
  * runtime-deps/ensure-installed — fail-fast guard for framework runtime deps.
3
3
  *
4
- * Importing this module runs the dependency-presence check as a side effect:
5
- * if any package in `.agents/runtime-deps.json`'s `dependencies` block cannot
6
- * be resolved from the framework's `node_modules` (i.e. the consumer's
7
- * install is missing, empty, or stale), it prints an actionable remediation
8
- * message and exits non-zero — *before* the entry point's heavier imports
9
- * reach the first `import 'ajv'` and throw an opaque `ERR_MODULE_NOT_FOUND`
10
- * (Story #3432).
11
- *
12
- * Why a side-effect-on-import (rather than a function the entry point calls):
13
- * ESM evaluates a module's imports in source order, depth-first, *before* the
14
- * module body runs. A function call in `main()` would therefore execute only
15
- * after the third-party-importing sibling modules had already been evaluated
16
- * (and already thrown). By making each target entry point's *first* import a
17
- * side-effect import of this module, the check runs first and short-circuits a
18
- * broken install with a clear message.
19
- *
20
- * The guard only ever exits when a *required* dependency is genuinely
21
- * missing. With a healthy install (CI, tests, normal runs) it is a no-op, so
22
- * it is safe for entry points imported by the test suite. `optionalDependencies`
23
- * are intentionally not checked — they sit behind graceful-degradation paths.
24
- *
25
- * Set `MANDREL_SKIP_DEP_PREFLIGHT=1` to disable the side effect (escape hatch
26
- * for tooling that imports an entry point in an environment that deliberately
27
- * lacks the framework deps).
4
+ * Runs on import, deliberately: ESM evaluates imports depth-first before any
5
+ * module body, so only a side-effect import placed first in an entry point
6
+ * can report a broken install before a sibling throws an opaque
7
+ * `ERR_MODULE_NOT_FOUND`. A no-op on a healthy install. `optionalDependencies`
8
+ * are not checked (they degrade gracefully). `MANDREL_SKIP_DEP_PREFLIGHT=1`
9
+ * disables it.
28
10
  */
29
11
 
30
12
  import { createRequire } from 'node:module';
@@ -36,16 +18,10 @@ import {
36
18
  import { loadRuntimeDepsManifest } from './manifest.js';
37
19
  import { detectPackageManager, formatMissingDepsMessage } from './preflight.js';
38
20
 
39
- // `require.resolve` bound to this module's location walks `node_modules`
40
- // upward from `.agents/scripts/lib/runtime-deps/` to the consumer root —
41
- // exactly the resolution path the framework's third-party imports follow.
21
+ // Resolves from this file upward — the same path the framework's imports take.
42
22
  const frameworkRequire = createRequire(import.meta.url);
43
23
 
44
24
  /**
45
- * Run the dependency-presence check and, on failure, write the remediation
46
- * message and exit. Seams (`requireResolve`, `cwd`, `stderr`, `exit`,
47
- * `manifest`) make it fully testable without touching the real process.
48
- *
49
25
  * @param {{
50
26
  * requireResolve?: (specifier: string) => string,
51
27
  * cwd?: string,
@@ -66,8 +42,8 @@ export function ensureRuntimeDepsInstalled(opts = {}) {
66
42
  readVersion,
67
43
  } = opts;
68
44
 
69
- // A manifest we cannot read is a packaging defect the drift test owns —
70
- // never let the guard kill an otherwise-healthy process over it.
45
+ // An unreadable manifest is a packaging defect the drift test owns; never
46
+ // kill a healthy process over it.
71
47
  if (!manifest) return { ok: true, missing: [] };
72
48
 
73
49
  const result = checkRuntimeDeps({
@@ -84,11 +60,7 @@ export function ensureRuntimeDepsInstalled(opts = {}) {
84
60
  }
85
61
 
86
62
  /**
87
- * Remediation text for a failed check.
88
- *
89
- * Absence is reported first: a package that is not installed cannot have a
90
- * version, and installing it is the prerequisite for any version complaint
91
- * being actionable.
63
+ * Absence first: installing is the prerequisite for any version complaint.
92
64
  *
93
65
  * @param {{ missing: string[], mismatched: {name: string, required: string, resolved: string}[] }} result
94
66
  * @param {string} cwd
@@ -106,9 +78,6 @@ function describeFailure(result, cwd) {
106
78
  }
107
79
 
108
80
  /**
109
- * Read a resolved package's version through the framework's own resolution,
110
- * so the version checked is the one the framework's imports will load.
111
- *
112
81
  * @param {string} name
113
82
  * @returns {string | null}
114
83
  */
@@ -117,9 +86,6 @@ function defaultReadVersion(name) {
117
86
  }
118
87
 
119
88
  /**
120
- * Load the manifest, swallowing a read/parse failure to `null` so the guard
121
- * stays inert on a packaging defect (see `ensureRuntimeDepsInstalled`).
122
- *
123
89
  * @returns {{ required: string[] } | null}
124
90
  */
125
91
  function safeLoadManifest() {
@@ -1,18 +1,7 @@
1
1
  /**
2
- * runtime-deps/manifest — loader for the framework's vendored runtime-dep SSOT.
3
- *
4
- * `.agents/runtime-deps.json` is the single source of truth for the
5
- * third-party npm packages the framework scripts import at runtime
6
- * (Story #3432). It ships *inside* `.agents/` so it travels with the
7
- * `mandrel` package into consumer projects. This module is the only reader of that
8
- * file — the bootstrap seeder (`project-bootstrap.js`), the preflight guard
9
- * (`ensure-installed.js`), and the import-vs-manifest drift test all derive
10
- * their dependency lists from `loadRuntimeDepsManifest()` so there is exactly
11
- * one place the list lives.
12
- *
13
- * The loader stays on Node builtins only (`node:fs`, `node:path`,
14
- * `node:url`) so it can run inside the preflight guard *before* any
15
- * third-party package is imported — that is the whole point of the guard.
2
+ * runtime-deps/manifest — the only reader of `.agents/runtime-deps.json`, the
3
+ * SSOT for the framework's runtime npm packages. Builtins only, because the
4
+ * preflight guard loads it before any third-party import.
16
5
  */
17
6
 
18
7
  import fs from 'node:fs';
@@ -21,30 +10,21 @@ import { fileURLToPath } from 'node:url';
21
10
 
22
11
  const HERE = path.dirname(fileURLToPath(import.meta.url));
23
12
 
24
- /**
25
- * Absolute path to the vendored manifest. `HERE` is
26
- * `.agents/scripts/lib/runtime-deps/`; the manifest sits at the `.agents/`
27
- * root, three directories up.
28
- */
29
13
  const MANIFEST_PATH = path.resolve(HERE, '..', '..', '..', 'runtime-deps.json');
30
14
 
31
15
  /**
32
16
  * @typedef {object} RuntimeDepsManifest
33
- * @property {Record<string,string>} dependencies — required runtime
34
- * packages (name → semver range). Fail-fast enforced by the preflight.
35
- * @property {Record<string,string>} optionalDependencies — packages imported
36
- * behind graceful-degradation paths; declared but never preflight-blocked.
37
- * @property {string[]} required — `Object.keys(dependencies)`.
38
- * @property {string[]} optional — `Object.keys(optionalDependencies)`.
17
+ * @property {Record<string,string>} dependencies — required; preflight-enforced.
18
+ * @property {Record<string,string>} optionalDependencies — graceful-degradation
19
+ * imports; never preflight-blocked.
20
+ * @property {string[]} required
21
+ * @property {string[]} optional
39
22
  * @property {Set<string>} declared — union of required + optional names.
40
23
  */
41
24
 
42
25
  /**
43
- * Read, parse, and structurally validate the runtime-deps manifest.
44
- *
45
- * Throws a clear `Error` when the file is missing or malformed so the
46
- * drift test and bootstrap seeder fail loudly on a packaging regression,
47
- * rather than silently treating the dependency set as empty.
26
+ * Throws on a missing or malformed file rather than yielding an empty set,
27
+ * so a packaging regression fails loudly.
48
28
  *
49
29
  * @param {string} [manifestPath=MANIFEST_PATH]
50
30
  * @returns {RuntimeDepsManifest}
@@ -1,17 +1,9 @@
1
1
  /**
2
- * runtime-deps/parser-major — which `@babel/parser` major the complexity
3
- * kernel can actually parse with, and how to say so when it is wrong.
4
- *
5
- * Its own module because two very different callers need the same answer and
6
- * neither should drag the other in: the kernel asserts it at load, and
7
- * `mandrel doctor` reports it to a consumer. Importing the kernel into doctor
8
- * to ask one version question would pull the whole metric core and install the
9
- * AST compatibility patch as a side effect.
10
- *
11
- * `.agents/` materializes into the consumer's repository root, so
12
- * `@babel/parser` resolves from *their* `node_modules`. A range in
13
- * `runtime-deps.json` documents the requirement; it cannot enforce it. This is
14
- * the enforcement.
2
+ * runtime-deps/parser-major — whether the resolved `@babel/parser` major is
3
+ * one the complexity kernel can parse with. Separate so `mandrel doctor` can
4
+ * ask without importing the kernel (and its AST patch side effect). The
5
+ * parser resolves from the consumer's tree, so this is the enforcement of the
6
+ * declared range.
15
7
  *
16
8
  * @module lib/runtime-deps/parser-major
17
9
  */
@@ -19,36 +11,20 @@
19
11
  import fs from 'node:fs';
20
12
  import { createRequire } from 'node:module';
21
13
 
22
- /**
23
- * The only `@babel/parser` major the kernel supports.
24
- *
25
- * Module-local, with `describeParserMajorError` as the single public door:
26
- * every caller wants the verdict and the remedy, not the number.
27
- *
28
- * 8.x removed several plugin names from the kernel's fixed list (they became
29
- * default syntax), so it does not merely warn — it throws on the plugin list
30
- * itself. Adopting it is a deliberate change with a baseline recut attached,
31
- * not something to absorb from a consumer's resolution.
32
- */
14
+ // 8.x throws on the kernel's fixed plugin list; adopting it is a deliberate
15
+ // change with a baseline recut, not something to absorb from a consumer.
33
16
  const SUPPORTED_PARSER_MAJOR = 7;
34
17
 
35
- /** Package whose resolved major gates the kernel. */
36
18
  const PARSER_PACKAGE = '@babel/parser';
37
19
 
38
- /** Memoised resolved parser version: `undefined` unread, `null` unresolvable. */
20
+ /** Memoised: `undefined` unread, `null` unresolvable. */
39
21
  let parserVersion;
40
22
 
41
23
  /**
42
- * Read the resolved `@babel/parser` version from its own manifest.
43
- *
44
- * The package exports no version, so its `package.json` is the only source.
45
- * This is the one non-static resolution in the file and it deliberately
46
- * targets a manifest rather than code: `@babel/parser` itself is reached by a
47
- * static import above, so it is declared and preflighted like every other
48
- * dependency.
24
+ * The package exports no version, so its manifest is the only source.
49
25
  *
50
26
  * @returns {string|null} The resolved version, or `null` when the manifest
51
- * cannot be read (a layout that hides `package.json` behind `exports`, say).
27
+ * cannot be read.
52
28
  */
53
29
  function resolveParserVersion() {
54
30
  if (parserVersion !== undefined) return parserVersion;
@@ -64,10 +40,7 @@ function resolveParserVersion() {
64
40
  }
65
41
 
66
42
  /**
67
- * The resolved parser's major version.
68
- *
69
- * @returns {number|null} `null` when the version could not be resolved or
70
- * does not lead with an integer.
43
+ * @returns {number|null}
71
44
  */
72
45
  function resolveParserMajor() {
73
46
  const version = resolveParserVersion();
@@ -77,21 +50,12 @@ function resolveParserMajor() {
77
50
  }
78
51
 
79
52
  /**
80
- * Describe the resolved-parser problem, if there is one.
81
- *
82
- * Single-sourced so the load-time assertion below and the preflight guard
83
- * (`runtime-deps/ensure-installed.js`) emit the *same* named, actionable
84
- * message — the point of AC-5 is that a consumer never meets this as a
85
- * plugin-list syntax error mid-scan.
86
- *
87
- * An unresolvable version is **not** a problem: a consumer layout that hides
88
- * the manifest still resolves the parser itself, and refusing to score would
89
- * be a worse answer than scoring with an unverified parser. Only a
90
- * *known-wrong* major is reported.
53
+ * One message shared by the kernel's load-time assertion and the preflight
54
+ * guard. An unknowable version is not reported — scoring with an unverified
55
+ * parser beats refusing to score; only a known-wrong major is.
91
56
  *
92
57
  * @param {{major?: number|null, version?: string|null}} [resolved] Overrides
93
- * the resolved parser, so the message a consumer on an unsupported major
94
- * would read is assertable without installing one.
58
+ * the resolved parser (test seam).
95
59
  * @returns {string|null} The message, or `null` when the resolved parser is
96
60
  * supported (or its version is unknowable).
97
61
  */
@@ -1,28 +1,13 @@
1
1
  /**
2
- * runtime-deps/preflight — pure helpers for the dependency-presence check's
3
- * *messaging* half.
4
- *
5
- * The check itself moved to `dep-resolution.js`, which owns resolving a
6
- * declared dependency, judging its major, and explaining a mismatch. What is
7
- * left here holds no side effects and stays unit-testable in isolation:
8
- * `detectPackageManager` takes an injected `exists` seam and
9
- * `formatMissingDepsMessage` is a pure string builder. The side-effecting
10
- * guard that wires them to the real process lives in `ensure-installed.js`.
11
- *
12
- * Builtins only — this module runs *before* any third-party package is
13
- * imported, so importing a third-party here would defeat its own purpose.
2
+ * runtime-deps/preflight — pure messaging helpers for the dependency check.
3
+ * Builtins only: it runs before any third-party package is imported.
14
4
  */
15
5
 
16
6
  import fs from 'node:fs';
17
7
  import { detectPackageManager as detectPm } from '../detect-package-manager.js';
18
8
 
19
9
  /**
20
- * Detect the consumer's package manager from lockfile presence so the
21
- * remediation message names the right install command. Defaults to `npm`.
22
- *
23
- * Delegates to the shared `detectPackageManager` helper
24
- * (Story #4048 B3 — one implementation per concept). The `exists` seam
25
- * is forwarded directly; `null` (no manifest) coerces to `'npm'`.
10
+ * Lockfile-based, so the message names the right install command.
26
11
  *
27
12
  * @param {string} root
28
13
  * @param {(p: string) => boolean} [exists=fs.existsSync]
@@ -32,7 +17,6 @@ export function detectPackageManager(root, exists = fs.existsSync) {
32
17
  return detectPm(root, exists) ?? 'npm';
33
18
  }
34
19
 
35
- /** Map a detected package manager to its install command. */
36
20
  function installCommand(packageManager) {
37
21
  if (packageManager === 'pnpm') return 'pnpm install';
38
22
  if (packageManager === 'yarn') return 'yarn install';
@@ -40,9 +24,7 @@ function installCommand(packageManager) {
40
24
  }
41
25
 
42
26
  /**
43
- * Build the actionable remediation message naming the missing packages and
44
- * the consumer's install command. This is what replaces the opaque raw
45
- * `ERR_MODULE_NOT_FOUND` stack trace.
27
+ * Replaces the opaque `ERR_MODULE_NOT_FOUND` stack with an actionable message.
46
28
  *
47
29
  * @param {string[]} missing
48
30
  * @param {{ root: string, packageManager: 'pnpm'|'yarn'|'npm' }} opts
@@ -1,26 +1,9 @@
1
1
  /**
2
- * runtime-deps/scan-imports — extract third-party package imports from source.
3
- *
4
- * Powers the import-vs-manifest drift test (Story #3432): it walks
5
- * `.agents/scripts/**` and reports every third-party (non-builtin,
6
- * non-relative) top-level package the framework imports, so the test can
7
- * assert each one is declared in `.agents/runtime-deps.json`.
8
- *
9
- * Robustness is the whole game here. A naive `from ['"]...['"]` regex also
10
- * matches prose inside strings and comments (e.g. a log line containing the
11
- * word "from 'x'"), which would invent phantom dependencies. Two guards
12
- * prevent that:
13
- *
14
- * 1. Static `import` / `export … from` matches are anchored to the start
15
- * of a line — a real import statement begins the line; prose inside a
16
- * template literal does not.
17
- * 2. Every extracted specifier's *top-level* package name is validated
18
- * against the npm package-name grammar. Names with spaces, uppercase,
19
- * or stray punctuation (i.e. accidental prose captures) are rejected.
20
- *
21
- * Node builtins (`node:fs`, `path`, …) and relative/absolute specifiers are
22
- * excluded. Subpath specifiers (`ajv/dist/2020.js`, `@scope/pkg/sub`) are
23
- * collapsed to their installable top-level name (`ajv`, `@scope/pkg`).
2
+ * runtime-deps/scan-imports — extract third-party top-level package imports
3
+ * from source, for the import-vs-manifest drift test. To avoid inventing
4
+ * phantom deps from prose, comments are stripped, static imports must start
5
+ * a line, and every name must match the npm package-name grammar. Subpaths
6
+ * collapse to their installable name.
24
7
  */
25
8
 
26
9
  import fs from 'node:fs';
@@ -28,21 +11,15 @@ import { builtinModules } from 'node:module';
28
11
  import path from 'node:path';
29
12
  import { stripJsComments } from '../source-text/strip-js-comments.js';
30
13
 
31
- /** Node builtins, with and without the `node:` prefix. */
32
14
  const BUILTIN_MODULES = new Set([
33
15
  ...builtinModules,
34
16
  ...builtinModules.map((m) => `node:${m}`),
35
17
  ]);
36
18
 
37
- /**
38
- * npm package-name grammar (top-level, optionally scoped). Lowercase,
39
- * digits, and a small punctuation set only — deliberately strict so that
40
- * accidental prose captures are rejected.
41
- */
19
+ // Deliberately strict so accidental prose captures are rejected.
42
20
  const PACKAGE_NAME = /^(?:@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/;
43
21
 
44
22
  /**
45
- * Collapse an import specifier to its installable top-level package name.
46
23
  * `@scope/pkg/sub` → `@scope/pkg`; `pkg/sub` → `pkg`.
47
24
  *
48
25
  * @param {string} specifier
@@ -55,8 +32,6 @@ export function toTopLevelPackage(specifier) {
55
32
  }
56
33
 
57
34
  /**
58
- * True when `name` is a syntactically valid npm package name.
59
- *
60
35
  * @param {string} name
61
36
  * @returns {boolean}
62
37
  */
@@ -64,27 +39,19 @@ export function isValidPackageName(name) {
64
39
  return typeof name === 'string' && PACKAGE_NAME.test(name);
65
40
  }
66
41
 
67
- // Anchored static import / re-export: the statement must start the line.
68
42
  const STATIC_FROM =
69
43
  /^\s*(?:import|export)\b[^\n;]*?\bfrom\s*['"]([^'"]+)['"]/gm;
70
- // Anchored side-effect import at line start.
71
44
  const SIDE_EFFECT = /^\s*import\s*['"]([^'"]+)['"]/gm;
72
45
  // `require(...)` and dynamic `import(...)` may appear mid-expression.
73
46
  const CALL_FORM = /\b(?:require|import)\s*\(\s*['"]([^'"]+)['"]/g;
74
- // Names bound to a `createRequire(...)` result, e.g.
75
- // `const fromReader = createRequire(x)`. Such a binding is a require function
76
- // under a different name, so calls through it are real runtime imports that
77
- // `CALL_FORM` cannot see — it matches the literal callees `require`/`import`.
78
- // A module reached only that way would be an undeclared, unpreflighted
79
- // dependency that this scanner reported as absent.
47
+ // A `createRequire(...)` binding is a require under another name; calls
48
+ // through it are real imports CALL_FORM cannot see.
80
49
  const REQUIRE_ALIAS =
81
50
  /(?:const|let|var)\s+([A-Za-z_$][\w$]*)\s*=\s*createRequire\s*\(/g;
82
51
 
83
52
  /**
84
- * Build a matcher for calls through `createRequire`-bound identifiers.
85
- *
86
- * Returns `null` when the source binds none, so the common case adds no pass.
87
- * Aliases named `require` need no entry — `CALL_FORM` already covers them.
53
+ * `null` when the source binds no alias (aliases named `require` are already
54
+ * covered).
88
55
  *
89
56
  * @param {string} cleaned Comment-stripped source.
90
57
  * @returns {RegExp|null}
@@ -105,9 +72,6 @@ function aliasedRequireMatcher(cleaned) {
105
72
  }
106
73
 
107
74
  /**
108
- * The specifier patterns to run over one source: the three fixed forms, plus
109
- * an alias matcher when the source binds a `createRequire` result.
110
- *
111
75
  * @param {string} cleaned Comment-stripped source.
112
76
  * @returns {RegExp[]}
113
77
  */
@@ -118,9 +82,6 @@ function specifierMatchers(cleaned) {
118
82
  }
119
83
 
120
84
  /**
121
- * Extract the set of third-party top-level package names imported by a
122
- * single source string.
123
- *
124
85
  * @param {string} source
125
86
  * @returns {Set<string>}
126
87
  */
@@ -132,7 +93,7 @@ export function extractThirdPartyImports(source) {
132
93
  let match = re.exec(cleaned);
133
94
  while (match !== null) {
134
95
  const specifier = match[1];
135
- // Advance the iterator up front so every `continue` below is safe.
96
+ // Advance first so every `continue` below is safe.
136
97
  match = re.exec(cleaned);
137
98
  if (
138
99
  specifier.startsWith('.') ||
@@ -152,8 +113,6 @@ export function extractThirdPartyImports(source) {
152
113
  }
153
114
 
154
115
  /**
155
- * Recursively collect every `.js` file under `dir`.
156
- *
157
116
  * @param {string} dir
158
117
  * @returns {string[]}
159
118
  */
@@ -171,9 +130,6 @@ export function listJsFiles(dir) {
171
130
  }
172
131
 
173
132
  /**
174
- * Scan every `.js` file under `dir` and map each third-party top-level
175
- * package to the (relative) files that import it.
176
- *
177
133
  * @param {string} dir — directory root to scan (e.g. `.agents/scripts`).
178
134
  * @returns {{ packages: Set<string>, byPackage: Map<string, string[]> }}
179
135
  */
@@ -1,14 +1,9 @@
1
1
  /**
2
- * detectors/common.js — shared helpers for the signals layer.
3
- *
4
- * Hoisted out of the detector modules (retry, rework) plus
5
- * the since-deleted `signals/read.js`, and `signals/schema.js`, all of which shipped
6
- * byte-equivalent copies of these predicates. See Story #2464.
2
+ * detectors/common.js — shared predicates for the signals layer.
7
3
  */
8
4
 
9
5
  /**
10
- * Return true when `v` is a positive (strictly > 0) integer. Used by every
11
- * signal writer and reader as the canonical numeric-id guard.
6
+ * The canonical numeric-id guard for signal writers and readers.
12
7
  *
13
8
  * @param {unknown} v
14
9
  * @returns {boolean}
@@ -18,9 +13,7 @@ export function isPositiveInt(v) {
18
13
  }
19
14
 
20
15
  /**
21
- * Pull the tool name from a trace record. The hook writes the tool name
22
- * into `emitter.tool` (canonical provenance) and, defensively, into
23
- * `details.tool` — we accept either.
16
+ * `emitter.tool` is canonical; `details.tool` is accepted defensively.
24
17
  *
25
18
  * @param {object} rec
26
19
  * @returns {string|null}
@@ -36,35 +29,17 @@ export function extractTool(rec) {
36
29
  }
37
30
 
38
31
  /**
39
- * Validate and normalize the shared detector argument preamble.
40
- *
41
- * `detectRework` and `detectRetry` previously shipped a near-identical
42
- * guard block: the `args` object-shape `TypeError`, the `nowFn`
43
- * function-type `TypeError`, the positive-integer `RangeError`s for the id
44
- * fields, the non-empty-string `tracesPath` check, and the
45
- * non-negative-integer `threshold` check. Story #4077 hoists that preamble
46
- * here so the detectors share one error-message contract.
47
- *
48
- * Error wording stays per-detector-accurate by prefixing every message with
49
- * `fnName` (e.g. `detectRework: …`). Error *types* are preserved exactly:
50
- * the `args`/`tracesPath`/`nowFn` guards throw `TypeError`; the id and
51
- * `threshold` guards throw `RangeError`.
52
- *
53
- * The validated fields are gated by the `require*` flags so the same helper
54
- * serves both the Story-scoped detectors (rework/retry — full preamble) and
55
- * the Epic-scoped hotspot detector (only `epicId` + `nowFn`). A field that
56
- * is not required is neither validated nor read.
32
+ * Shared detector argument guard. Messages are prefixed with `fnName`;
33
+ * shape/`tracesPath`/`nowFn` failures throw `TypeError`, id and `threshold`
34
+ * failures `RangeError`. A field whose `require*` flag is off is neither
35
+ * validated nor returned.
57
36
  *
58
37
  * @param {object} args — the detector's raw argument object.
59
38
  * @param {object} opts
60
- * @param {string} opts.fnName — the calling detector's name, used verbatim as
61
- * the prefix on every thrown error message (e.g. `'detectRework'`).
62
- * @param {boolean} [opts.requireTracesPath=true] — validate + return
63
- * `tracesPath` (non-empty string).
64
- * @param {boolean} [opts.requireStoryId=true] — validate + return `storyId`
65
- * (positive integer) and the optional `taskId` (positive integer or null).
66
- * @param {boolean} [opts.requireThreshold=true] — validate + return
67
- * `threshold` (non-negative integer).
39
+ * @param {string} opts.fnName — error-message prefix (e.g. `'detectRework'`).
40
+ * @param {boolean} [opts.requireTracesPath=true]
41
+ * @param {boolean} [opts.requireStoryId=true] — also gates the optional `taskId`.
42
+ * @param {boolean} [opts.requireThreshold=true]
68
43
  * @returns {{
69
44
  * tracesPath: string|undefined,
70
45
  * epicId: number,
@@ -72,8 +47,7 @@ export function extractTool(rec) {
72
47
  * taskId: number|null|undefined,
73
48
  * threshold: number|undefined,
74
49
  * nowFn: () => string,
75
- * }} the normalized argument set. Fields gated off by a `require*` flag are
76
- * omitted (left `undefined`).
50
+ * }}
77
51
  */
78
52
  export function validateDetectorArgs(args, opts) {
79
53
  const { fnName } = opts;
@@ -1,23 +1,6 @@
1
1
  /**
2
- * `lib/signals/` barrel.
3
- *
4
- * Consumers do `import { schema, appendSignal } from './lib/signals/index.js'`
5
- * (or `import * as signals from './lib/signals/index.js'`) so a future
6
- * shape migration only has to touch this file.
7
- *
8
- * History:
9
- * - Epic #1181 / Story #1438 / Task #1459 — initial barrel with `read`
10
- * + `schema`; `buildSpanTree` was a throwing placeholder.
11
- * - Epic #1181 / Story #1440 / Task #1461 — placeholder replaced by
12
- * the real span-tree builder.
13
- * - Story #1476 — `appendSignal` / `appendTrace` re-exported here
14
- * via `./write.js` so the gate scripts (and any
15
- * new code) converge on `lib/signals/` instead of importing the
16
- * writer directly from `lib/observability/`.
17
- * - Story #5003 — the reader half (`read`, `buildSpanTree`) went with the
18
- * debug viewer that consumed it: it walked a `run-<id>/` layout no v2
19
- * writer populates. `appendTrace` went with the trace hook, its only
20
- * producer. What remains is the live write surface.
2
+ * `lib/signals/` barrel — the one import point, so a shape migration touches
3
+ * only this file.
21
4
  *
22
5
  * @module lib/signals
23
6
  */