mandrel 2.60.0 → 2.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (662) hide show
  1. package/.agents/README.md +10 -10
  2. package/.agents/agents/story-worker.md +1 -1
  3. package/.agents/docs/agentrc-reference.json +4 -82
  4. package/.agents/docs/configuration.md +20 -87
  5. package/.agents/docs/workflows.md +1 -1
  6. package/.agents/instructions.md +1 -3
  7. package/.agents/rules/gherkin-standards.md +4 -0
  8. package/.agents/schemas/agentrc.schema.json +11 -486
  9. package/.agents/schemas/story-deliver-terminal.schema.json +10 -0
  10. package/.agents/schemas/validation-evidence.schema.json +2 -1
  11. package/.agents/scripts/README.md +14 -14
  12. package/.agents/scripts/acceptance-eval.js +32 -164
  13. package/.agents/scripts/agents-bootstrap-github.js +27 -129
  14. package/.agents/scripts/apply-quality-bootstrap.js +4 -40
  15. package/.agents/scripts/audit-baselines.js +6 -27
  16. package/.agents/scripts/audit-labels-bootstrap.js +5 -29
  17. package/.agents/scripts/audit-to-stories.js +91 -361
  18. package/.agents/scripts/boot-sweep.js +19 -72
  19. package/.agents/scripts/bootstrap.js +74 -395
  20. package/.agents/scripts/ceremony-derive.js +9 -45
  21. package/.agents/scripts/check-arch-cycles.js +14 -64
  22. package/.agents/scripts/check-baselines.js +8 -48
  23. package/.agents/scripts/check-context-budget.js +46 -172
  24. package/.agents/scripts/check-cyclomatic.js +12 -44
  25. package/.agents/scripts/check-dead-exports.js +13 -64
  26. package/.agents/scripts/check-doc-links.js +38 -186
  27. package/.agents/scripts/check-gherkin-corpus.js +24 -127
  28. package/.agents/scripts/check-test-temp-hygiene.js +28 -169
  29. package/.agents/scripts/coverage-capture.js +32 -99
  30. package/.agents/scripts/deliver-light.js +14 -101
  31. package/.agents/scripts/deliver-recover.js +6 -42
  32. package/.agents/scripts/deliver-run.js +36 -133
  33. package/.agents/scripts/diagnose-friction.js +24 -116
  34. package/.agents/scripts/drain-pending-cleanup.js +1 -1
  35. package/.agents/scripts/evidence-gate.js +23 -85
  36. package/.agents/scripts/file-ci-gap.js +10 -50
  37. package/.agents/scripts/generate-config-docs.js +30 -170
  38. package/.agents/scripts/generate-lens-checklists.js +8 -52
  39. package/.agents/scripts/generate-skills-index.js +14 -112
  40. package/.agents/scripts/generate-workflows-doc.js +10 -70
  41. package/.agents/scripts/git-cleanup.js +2 -34
  42. package/.agents/scripts/lib/Graph.js +24 -81
  43. package/.agents/scripts/lib/ITicketingProvider.js +47 -143
  44. package/.agents/scripts/lib/Logger.js +14 -76
  45. package/.agents/scripts/lib/audit-baselines/engine.js +11 -31
  46. package/.agents/scripts/lib/audit-baselines/gate-surface.js +3 -17
  47. package/.agents/scripts/lib/audit-baselines/headroom.js +4 -20
  48. package/.agents/scripts/lib/audit-baselines/hotspots.js +3 -15
  49. package/.agents/scripts/lib/audit-baselines/kinds.js +23 -89
  50. package/.agents/scripts/lib/audit-baselines/outliers.js +6 -23
  51. package/.agents/scripts/lib/audit-baselines/read.js +3 -16
  52. package/.agents/scripts/lib/audit-baselines/staleness.js +7 -26
  53. package/.agents/scripts/lib/audit-baselines/surface-entry.js +7 -28
  54. package/.agents/scripts/lib/audit-baselines/trend.js +7 -20
  55. package/.agents/scripts/lib/audit-baselines/weights.js +9 -37
  56. package/.agents/scripts/lib/audit-suite/audit-rules-reader.js +3 -18
  57. package/.agents/scripts/lib/audit-suite/checklist-threading.js +26 -124
  58. package/.agents/scripts/lib/audit-suite/dispatch-checklist.js +14 -45
  59. package/.agents/scripts/lib/audit-suite/findings.js +12 -52
  60. package/.agents/scripts/lib/audit-suite/frontmatter.js +5 -29
  61. package/.agents/scripts/lib/audit-suite/index.js +1 -15
  62. package/.agents/scripts/lib/audit-suite/lens-checklist.js +10 -45
  63. package/.agents/scripts/lib/audit-suite/lens-diff-floor.js +11 -76
  64. package/.agents/scripts/lib/audit-suite/runner.js +13 -43
  65. package/.agents/scripts/lib/audit-suite/selector.js +49 -349
  66. package/.agents/scripts/lib/audit-suite/substitutions.js +12 -40
  67. package/.agents/scripts/lib/audit-suite/workflow-loader.js +3 -15
  68. package/.agents/scripts/lib/audit-to-stories/audit-label-taxonomy.js +11 -73
  69. package/.agents/scripts/lib/audit-to-stories/audit-lenses.js +8 -37
  70. package/.agents/scripts/lib/audit-to-stories/build-story-body.js +25 -143
  71. package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +14 -80
  72. package/.agents/scripts/lib/audit-to-stories/epic-grouping-directive.js +4 -18
  73. package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +7 -40
  74. package/.agents/scripts/lib/audit-to-stories/group-findings.js +9 -39
  75. package/.agents/scripts/lib/audit-to-stories/issue-corpus.js +10 -66
  76. package/.agents/scripts/lib/audit-to-stories/issue-index.js +6 -30
  77. package/.agents/scripts/lib/audit-to-stories/issues-file.js +6 -36
  78. package/.agents/scripts/lib/audit-to-stories/ledger-commit.js +17 -69
  79. package/.agents/scripts/lib/audit-to-stories/ledger-pr.js +17 -85
  80. package/.agents/scripts/lib/audit-to-stories/ledger-record.js +10 -48
  81. package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +38 -146
  82. package/.agents/scripts/lib/audit-to-stories/seed-from-findings.js +7 -42
  83. package/.agents/scripts/lib/audit-to-stories/wire-dependencies.js +10 -57
  84. package/.agents/scripts/lib/baseline-loader.js +12 -51
  85. package/.agents/scripts/lib/baseline-schema-registry.js +5 -22
  86. package/.agents/scripts/lib/baselines/component-matcher.js +3 -12
  87. package/.agents/scripts/lib/baselines/components.js +10 -61
  88. package/.agents/scripts/lib/baselines/coverage-updater-cli.js +7 -36
  89. package/.agents/scripts/lib/baselines/crap-preview-incremental.js +5 -21
  90. package/.agents/scripts/lib/baselines/crap-preview-scan.js +19 -45
  91. package/.agents/scripts/lib/baselines/crap-updater-cli.js +16 -65
  92. package/.agents/scripts/lib/baselines/diff-scope-cli.js +5 -33
  93. package/.agents/scripts/lib/baselines/duplication-scanner.js +11 -60
  94. package/.agents/scripts/lib/baselines/env-overrides.js +12 -67
  95. package/.agents/scripts/lib/baselines/envelope.js +13 -129
  96. package/.agents/scripts/lib/baselines/exit-codes.js +6 -49
  97. package/.agents/scripts/lib/baselines/git-base.js +23 -142
  98. package/.agents/scripts/lib/baselines/kernel.js +11 -111
  99. package/.agents/scripts/lib/baselines/kinds/_crap-new-method-gate.js +9 -47
  100. package/.agents/scripts/lib/baselines/kinds/_crap-read.js +8 -51
  101. package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +7 -62
  102. package/.agents/scripts/lib/baselines/kinds/bundle-size.js +8 -29
  103. package/.agents/scripts/lib/baselines/kinds/coverage.js +3 -15
  104. package/.agents/scripts/lib/baselines/kinds/crap.js +94 -415
  105. package/.agents/scripts/lib/baselines/kinds/duplication.js +4 -30
  106. package/.agents/scripts/lib/baselines/kinds/kind-factory.js +7 -53
  107. package/.agents/scripts/lib/baselines/kinds/maintainability.js +15 -80
  108. package/.agents/scripts/lib/baselines/kinds/mutation.js +12 -72
  109. package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +4 -11
  110. package/.agents/scripts/lib/baselines/merge-envelopes.js +30 -146
  111. package/.agents/scripts/lib/baselines/path-canon.js +19 -128
  112. package/.agents/scripts/lib/baselines/preview-gates.js +8 -37
  113. package/.agents/scripts/lib/baselines/reader.js +14 -107
  114. package/.agents/scripts/lib/baselines/refresh-service.js +35 -252
  115. package/.agents/scripts/lib/baselines/scope.js +11 -135
  116. package/.agents/scripts/lib/baselines/writer.js +16 -149
  117. package/.agents/scripts/lib/bdd-runner-detect.js +18 -113
  118. package/.agents/scripts/lib/bdd-scenario-budget.js +9 -36
  119. package/.agents/scripts/lib/bdd-scenario-scanner.js +11 -73
  120. package/.agents/scripts/lib/bdd-step-index.js +26 -100
  121. package/.agents/scripts/lib/bootstrap/baseline-merge-driver.js +23 -103
  122. package/.agents/scripts/lib/bootstrap/branch-protection.js +2 -5
  123. package/.agents/scripts/lib/bootstrap/commit-push.js +12 -50
  124. package/.agents/scripts/lib/bootstrap/gh-preflight.js +14 -101
  125. package/.agents/scripts/lib/bootstrap/hitl-confirm.js +5 -30
  126. package/.agents/scripts/lib/bootstrap/install-ledger.js +17 -73
  127. package/.agents/scripts/lib/bootstrap/issue-forms-template.js +17 -121
  128. package/.agents/scripts/lib/bootstrap/manifest.js +15 -86
  129. package/.agents/scripts/lib/bootstrap/merge-methods.js +4 -33
  130. package/.agents/scripts/lib/bootstrap/preflight.js +12 -61
  131. package/.agents/scripts/lib/bootstrap/project-bootstrap.js +34 -235
  132. package/.agents/scripts/lib/bootstrap/prompt.js +21 -129
  133. package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +27 -141
  134. package/.agents/scripts/lib/bootstrap/summary.js +1 -8
  135. package/.agents/scripts/lib/bootstrap/workflow-audit.js +11 -84
  136. package/.agents/scripts/lib/branch-name-guard.js +4 -23
  137. package/.agents/scripts/lib/changed-files.js +31 -143
  138. package/.agents/scripts/lib/checks/core-bare-clean.js +4 -24
  139. package/.agents/scripts/lib/checks/index.js +18 -101
  140. package/.agents/scripts/lib/checks/loop-health.js +11 -53
  141. package/.agents/scripts/lib/checks/state.js +16 -91
  142. package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +10 -61
  143. package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +14 -83
  144. package/.agents/scripts/lib/child-exec.js +39 -108
  145. package/.agents/scripts/lib/cli/standard-args.js +9 -116
  146. package/.agents/scripts/lib/cli-args.js +31 -146
  147. package/.agents/scripts/lib/cli-usage.js +5 -27
  148. package/.agents/scripts/lib/cli-utils.js +2 -12
  149. package/.agents/scripts/lib/close-validation/commands.js +13 -76
  150. package/.agents/scripts/lib/close-validation/gates.js +92 -331
  151. package/.agents/scripts/lib/close-validation/process.js +121 -151
  152. package/.agents/scripts/lib/close-validation/projections/advisories.js +5 -31
  153. package/.agents/scripts/lib/close-validation/projections/crap.js +19 -67
  154. package/.agents/scripts/lib/close-validation/projections/head-sha.js +1 -17
  155. package/.agents/scripts/lib/close-validation/projections/inputs.js +4 -34
  156. package/.agents/scripts/lib/close-validation/projections/maintainability.js +11 -58
  157. package/.agents/scripts/lib/close-validation/runner.js +53 -110
  158. package/.agents/scripts/lib/command-header.js +6 -28
  159. package/.agents/scripts/lib/config/acceptance-eval.js +4 -30
  160. package/.agents/scripts/lib/config/baselines.js +3 -14
  161. package/.agents/scripts/lib/config/ci.js +8 -38
  162. package/.agents/scripts/lib/config/commands.js +1 -15
  163. package/.agents/scripts/lib/config/defaults.js +4 -33
  164. package/.agents/scripts/lib/config/delivery-routing.js +6 -35
  165. package/.agents/scripts/lib/config/explain.js +9 -80
  166. package/.agents/scripts/lib/config/gates/coverage.schema.js +0 -12
  167. package/.agents/scripts/lib/config/gates/crap-incremental-coverage.schema.js +2 -30
  168. package/.agents/scripts/lib/config/gates/crap.schema.js +1 -34
  169. package/.agents/scripts/lib/config/gates/duplication.schema.js +1 -8
  170. package/.agents/scripts/lib/config/gates/index.js +2 -17
  171. package/.agents/scripts/lib/config/gates/maintainability.schema.js +1 -20
  172. package/.agents/scripts/lib/config/gates/mutation.schema.js +1 -7
  173. package/.agents/scripts/lib/config/gates/shared.js +4 -64
  174. package/.agents/scripts/lib/config/github.js +4 -22
  175. package/.agents/scripts/lib/config/limits.js +4 -57
  176. package/.agents/scripts/lib/config/paths.js +2 -21
  177. package/.agents/scripts/lib/config/qa.js +4 -38
  178. package/.agents/scripts/lib/config/quality.js +76 -432
  179. package/.agents/scripts/lib/config/runners.js +12 -56
  180. package/.agents/scripts/lib/config/runtime.js +13 -57
  181. package/.agents/scripts/lib/config/shared.js +2 -16
  182. package/.agents/scripts/lib/config/sync-agentrc.js +9 -50
  183. package/.agents/scripts/lib/config/temp-paths.js +40 -280
  184. package/.agents/scripts/lib/config/validate-orchestration.js +5 -17
  185. package/.agents/scripts/lib/config/worktree-isolation.js +9 -28
  186. package/.agents/scripts/lib/config-resolver.js +10 -52
  187. package/.agents/scripts/lib/config-schema-shared.js +1 -4
  188. package/.agents/scripts/lib/config-settings-schema-delivery.js +12 -294
  189. package/.agents/scripts/lib/config-settings-schema-quality.js +7 -219
  190. package/.agents/scripts/lib/config-settings-schema.js +37 -274
  191. package/.agents/scripts/lib/coverage-baseline.js +20 -110
  192. package/.agents/scripts/lib/coverage-capture-fullscope.js +12 -37
  193. package/.agents/scripts/lib/coverage-capture-incremental.js +12 -43
  194. package/.agents/scripts/lib/coverage-capture-usage.js +4 -24
  195. package/.agents/scripts/lib/coverage-capture.js +99 -224
  196. package/.agents/scripts/lib/coverage-utils.js +14 -79
  197. package/.agents/scripts/lib/cpu-pool.js +17 -123
  198. package/.agents/scripts/lib/crap-baseline-join.js +16 -88
  199. package/.agents/scripts/lib/crap-coordinates.js +6 -25
  200. package/.agents/scripts/lib/crap-engine.js +40 -153
  201. package/.agents/scripts/lib/crap-method-identity.js +16 -78
  202. package/.agents/scripts/lib/crap-utils.js +31 -155
  203. package/.agents/scripts/lib/cyclomatic-ceiling.js +14 -87
  204. package/.agents/scripts/lib/cyclomatic-scope.js +10 -50
  205. package/.agents/scripts/lib/dead-exports-knip.js +18 -56
  206. package/.agents/scripts/lib/dead-exports-mode.js +5 -24
  207. package/.agents/scripts/lib/degraded-mode.js +3 -26
  208. package/.agents/scripts/lib/dependency-parser.js +8 -40
  209. package/.agents/scripts/lib/dependency-version.js +13 -35
  210. package/.agents/scripts/lib/detect-package-manager.js +6 -36
  211. package/.agents/scripts/lib/doc-tiers.js +22 -126
  212. package/.agents/scripts/lib/duplicate-search.js +8 -72
  213. package/.agents/scripts/lib/env-loader.js +5 -27
  214. package/.agents/scripts/lib/error-redactor.js +6 -31
  215. package/.agents/scripts/lib/errors/index.js +2 -22
  216. package/.agents/scripts/lib/escomplex-ast-compat.js +22 -163
  217. package/.agents/scripts/lib/escomplex-kernel.js +21 -123
  218. package/.agents/scripts/lib/feedback-loop/graduator-core.js +93 -419
  219. package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +20 -98
  220. package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +27 -151
  221. package/.agents/scripts/lib/findings/audit-ledger.js +23 -97
  222. package/.agents/scripts/lib/findings/classify-finding.js +14 -69
  223. package/.agents/scripts/lib/findings/promote-finding.js +14 -112
  224. package/.agents/scripts/lib/findings/provenance-field.js +11 -52
  225. package/.agents/scripts/lib/findings/route-finding.js +37 -255
  226. package/.agents/scripts/lib/findings/semantic-issue-search.js +14 -59
  227. package/.agents/scripts/lib/findings/severity.js +18 -104
  228. package/.agents/scripts/lib/format-generated-json.js +12 -44
  229. package/.agents/scripts/lib/full-suite-lock.js +160 -429
  230. package/.agents/scripts/lib/full-suite-queue.js +213 -0
  231. package/.agents/scripts/lib/gates/baseline-store.js +5 -9
  232. package/.agents/scripts/lib/gates/friction.js +1 -3
  233. package/.agents/scripts/lib/generated/agentrc-validator.js +2 -2
  234. package/.agents/scripts/lib/gh-exec.js +31 -259
  235. package/.agents/scripts/lib/git/cached-fetch.js +9 -52
  236. package/.agents/scripts/lib/git/sync-from-base.js +15 -107
  237. package/.agents/scripts/lib/git-branch-cleanup.js +14 -61
  238. package/.agents/scripts/lib/git-branch-lifecycle.js +16 -87
  239. package/.agents/scripts/lib/git-utils.js +37 -161
  240. package/.agents/scripts/lib/github/framework-repo.js +8 -71
  241. package/.agents/scripts/lib/github-url.js +2 -17
  242. package/.agents/scripts/lib/import-graph.js +11 -38
  243. package/.agents/scripts/lib/install-cmd-parser.js +4 -13
  244. package/.agents/scripts/lib/json-utils.js +3 -18
  245. package/.agents/scripts/lib/label-constants.js +16 -111
  246. package/.agents/scripts/lib/label-taxonomy.js +4 -30
  247. package/.agents/scripts/lib/maintainability-engine.js +12 -80
  248. package/.agents/scripts/lib/maintainability-unscorable.js +5 -25
  249. package/.agents/scripts/lib/maintainability-utils.js +16 -92
  250. package/.agents/scripts/lib/mandrel-catalog.js +12 -70
  251. package/.agents/scripts/lib/notifications/notifier.js +13 -38
  252. package/.agents/scripts/lib/npm-scripts.js +4 -23
  253. package/.agents/scripts/lib/observability/metrics-ledger.js +16 -76
  254. package/.agents/scripts/lib/observability/runtime-friction.js +44 -286
  255. package/.agents/scripts/lib/observability/signal-validator.js +5 -37
  256. package/.agents/scripts/lib/observability/signals-writer.js +11 -121
  257. package/.agents/scripts/lib/observability/source-classifier.js +21 -203
  258. package/.agents/scripts/lib/observability/terse-result.js +14 -47
  259. package/.agents/scripts/lib/onboard/init-tail.js +13 -74
  260. package/.agents/scripts/lib/onboard/scaffold-docs.js +11 -34
  261. package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +25 -139
  262. package/.agents/scripts/lib/orchestration/auto-merge-cwd.js +11 -66
  263. package/.agents/scripts/lib/orchestration/behind-recovery.js +10 -55
  264. package/.agents/scripts/lib/orchestration/ceremony-routing.js +5 -75
  265. package/.agents/scripts/lib/orchestration/change-set.js +7 -36
  266. package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +9 -46
  267. package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +11 -44
  268. package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +5 -24
  269. package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +3 -12
  270. package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +5 -38
  271. package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +3 -8
  272. package/.agents/scripts/lib/orchestration/check-baselines/phases/refresh-ack.js +28 -136
  273. package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +3 -13
  274. package/.agents/scripts/lib/orchestration/check-state.js +92 -0
  275. package/.agents/scripts/lib/orchestration/ci-gap-intake.js +37 -144
  276. package/.agents/scripts/lib/orchestration/ci-rerun-guard.js +42 -189
  277. package/.agents/scripts/lib/orchestration/code-review.js +24 -128
  278. package/.agents/scripts/lib/orchestration/column-sync.js +23 -111
  279. package/.agents/scripts/lib/orchestration/complexity-gate.js +42 -214
  280. package/.agents/scripts/lib/orchestration/deliver-recover.js +36 -168
  281. package/.agents/scripts/lib/orchestration/dependency-analyzer.js +4 -35
  282. package/.agents/scripts/lib/orchestration/dependency-candidates.js +9 -41
  283. package/.agents/scripts/lib/orchestration/diff-magnitude.js +25 -115
  284. package/.agents/scripts/lib/orchestration/doc-reader.js +2 -6
  285. package/.agents/scripts/lib/orchestration/docs-digest.js +13 -51
  286. package/.agents/scripts/lib/orchestration/epic-candidates.js +13 -53
  287. package/.agents/scripts/lib/orchestration/epic-checklist.js +9 -33
  288. package/.agents/scripts/lib/orchestration/epic-container.js +41 -167
  289. package/.agents/scripts/lib/orchestration/epic-expansion.js +10 -40
  290. package/.agents/scripts/lib/orchestration/epic-rollup.js +55 -207
  291. package/.agents/scripts/lib/orchestration/file-assumption-enum.js +2 -22
  292. package/.agents/scripts/lib/orchestration/file-assumptions.js +45 -253
  293. package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-detect.js +9 -46
  294. package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +7 -57
  295. package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +21 -126
  296. package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +2 -6
  297. package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +1 -4
  298. package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +1 -5
  299. package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +9 -34
  300. package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +41 -190
  301. package/.agents/scripts/lib/orchestration/git-cleanup/phases/merged-tip.js +9 -45
  302. package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +1 -4
  303. package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +19 -85
  304. package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +3 -17
  305. package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +1 -5
  306. package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +16 -100
  307. package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +1 -4
  308. package/.agents/scripts/lib/orchestration/lease-guard-shared.js +16 -67
  309. package/.agents/scripts/lib/orchestration/lifecycle/emit-ledger-event.js +9 -33
  310. package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-flip-failed.js +8 -29
  311. package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-unlanded.js +15 -68
  312. package/.agents/scripts/lib/orchestration/light-backstop.js +11 -49
  313. package/.agents/scripts/lib/orchestration/light-escalation.js +21 -89
  314. package/.agents/scripts/lib/orchestration/light-suitability.js +26 -231
  315. package/.agents/scripts/lib/orchestration/merge-block-class.js +39 -216
  316. package/.agents/scripts/lib/orchestration/merge-poll.js +104 -377
  317. package/.agents/scripts/lib/orchestration/merge-queue.js +158 -0
  318. package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
  319. package/.agents/scripts/lib/orchestration/plan-context.js +52 -303
  320. package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +22 -79
  321. package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +5 -31
  322. package/.agents/scripts/lib/orchestration/plan-metrics.js +29 -108
  323. package/.agents/scripts/lib/orchestration/plan-navigation.js +8 -27
  324. package/.agents/scripts/lib/orchestration/plan-persist/acceptance-handle-repair.js +12 -49
  325. package/.agents/scripts/lib/orchestration/plan-persist/audit-provenance.js +18 -73
  326. package/.agents/scripts/lib/orchestration/plan-persist/changes-repair.js +14 -78
  327. package/.agents/scripts/lib/orchestration/plan-persist/cross-plan-links.js +6 -30
  328. package/.agents/scripts/lib/orchestration/plan-persist/epic-adoption.js +14 -65
  329. package/.agents/scripts/lib/orchestration/plan-persist/epic-ops.js +21 -76
  330. package/.agents/scripts/lib/orchestration/plan-persist/external-deps.js +6 -43
  331. package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +14 -68
  332. package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +9 -41
  333. package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +49 -248
  334. package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
  335. package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +85 -368
  336. package/.agents/scripts/lib/orchestration/plan-persist/summary.js +8 -38
  337. package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +30 -190
  338. package/.agents/scripts/lib/orchestration/plan-persist/wave-collision-gate.js +9 -49
  339. package/.agents/scripts/lib/orchestration/plan-persist/wave-serialisation.js +7 -28
  340. package/.agents/scripts/lib/orchestration/plan-reachability.js +13 -42
  341. package/.agents/scripts/lib/orchestration/plan-run-labels/reap.js +16 -91
  342. package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +16 -54
  343. package/.agents/scripts/lib/orchestration/plan-text-hygiene.js +10 -52
  344. package/.agents/scripts/lib/orchestration/planning/authoring-context.js +14 -109
  345. package/.agents/scripts/lib/orchestration/planning/memory-pool-advisory.js +11 -83
  346. package/.agents/scripts/lib/orchestration/pr-watch.js +48 -306
  347. package/.agents/scripts/lib/orchestration/project-meta-cache.js +15 -80
  348. package/.agents/scripts/lib/orchestration/project-meta-resolver.js +10 -51
  349. package/.agents/scripts/lib/orchestration/reassert-status-column.js +12 -76
  350. package/.agents/scripts/lib/orchestration/remote-verifier.js +12 -36
  351. package/.agents/scripts/lib/orchestration/resolve-stories.js +33 -164
  352. package/.agents/scripts/lib/orchestration/retro-proposals.js +66 -361
  353. package/.agents/scripts/lib/orchestration/review-base-ref.js +9 -43
  354. package/.agents/scripts/lib/orchestration/review-depth.js +12 -94
  355. package/.agents/scripts/lib/orchestration/review-providers/codex.js +10 -111
  356. package/.agents/scripts/lib/orchestration/review-providers/degraded-gates.js +13 -71
  357. package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +7 -51
  358. package/.agents/scripts/lib/orchestration/review-providers/mi-exemptions.js +8 -53
  359. package/.agents/scripts/lib/orchestration/review-providers/native.js +30 -214
  360. package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +7 -52
  361. package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +4 -33
  362. package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +11 -71
  363. package/.agents/scripts/lib/orchestration/review-providers/scoped-lint.js +19 -131
  364. package/.agents/scripts/lib/orchestration/review-providers/security-review.js +6 -89
  365. package/.agents/scripts/lib/orchestration/review-providers/types.js +26 -56
  366. package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +3 -46
  367. package/.agents/scripts/lib/orchestration/run-epilogue.js +40 -199
  368. package/.agents/scripts/lib/orchestration/run-scoped-config.js +13 -81
  369. package/.agents/scripts/lib/orchestration/single-story-close/close-note.js +7 -34
  370. package/.agents/scripts/lib/orchestration/single-story-close/failed-terminal.js +16 -89
  371. package/.agents/scripts/lib/orchestration/single-story-close/gate-log.js +18 -109
  372. package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +190 -280
  373. package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +18 -80
  374. package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +103 -97
  375. package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +8 -64
  376. package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +183 -485
  377. package/.agents/scripts/lib/orchestration/single-story-close/phases/conventional-subject.js +30 -134
  378. package/.agents/scripts/lib/orchestration/single-story-close/phases/graphql-preflight.js +9 -50
  379. package/.agents/scripts/lib/orchestration/single-story-close/phases/lock-wait-pending.js +49 -0
  380. package/.agents/scripts/lib/orchestration/single-story-close/phases/normalize-pr-title.js +13 -86
  381. package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +20 -95
  382. package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +46 -203
  383. package/.agents/scripts/lib/orchestration/single-story-close/phases/pre-gate-steps.js +8 -50
  384. package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +12 -83
  385. package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +6 -39
  386. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +1 -6
  387. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-outcome.js +4 -28
  388. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-override.js +6 -51
  389. package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +6 -34
  390. package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +23 -121
  391. package/.agents/scripts/lib/orchestration/single-story-close/runner.js +110 -290
  392. package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +15 -69
  393. package/.agents/scripts/lib/orchestration/story-body-gate.js +4 -23
  394. package/.agents/scripts/lib/orchestration/story-close/baseline-upward-writeback.js +50 -179
  395. package/.agents/scripts/lib/orchestration/story-close/context-budget-writeback.js +11 -41
  396. package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +23 -311
  397. package/.agents/scripts/lib/orchestration/story-close/phases/local-lens-review.js +22 -147
  398. package/.agents/scripts/lib/orchestration/story-close/phases/review-core.js +16 -67
  399. package/.agents/scripts/lib/orchestration/story-deliver-terminal-schema.js +12 -68
  400. package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +42 -201
  401. package/.agents/scripts/lib/orchestration/story-follow-ups.js +43 -245
  402. package/.agents/scripts/lib/orchestration/story-init-envelope.js +4 -23
  403. package/.agents/scripts/lib/orchestration/story-init-remote.js +2 -6
  404. package/.agents/scripts/lib/orchestration/story-reachability.js +3 -23
  405. package/.agents/scripts/lib/orchestration/task-body-validator.js +12 -126
  406. package/.agents/scripts/lib/orchestration/ticket-lease.js +28 -131
  407. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +15 -149
  408. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +5 -33
  409. package/.agents/scripts/lib/orchestration/ticket-validator.js +39 -181
  410. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
  411. package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -250
  412. package/.agents/scripts/lib/orchestration/ticketing/state.js +14 -68
  413. package/.agents/scripts/lib/orchestration/ticketing/transition.js +46 -263
  414. package/.agents/scripts/lib/orchestration/ticketing.js +2 -26
  415. package/.agents/scripts/lib/orchestration/verify-credit.js +18 -79
  416. package/.agents/scripts/lib/orchestration/worktree-dirty.js +5 -30
  417. package/.agents/scripts/lib/path-security.js +3 -6
  418. package/.agents/scripts/lib/plan-phase-cleanup.js +9 -49
  419. package/.agents/scripts/lib/preflight-runner.js +13 -69
  420. package/.agents/scripts/lib/process-group.js +143 -0
  421. package/.agents/scripts/lib/project-root.js +2 -8
  422. package/.agents/scripts/lib/provider-factory.js +2 -25
  423. package/.agents/scripts/lib/qa/console-allowlist.js +10 -59
  424. package/.agents/scripts/lib/qa/qa-session.js +15 -69
  425. package/.agents/scripts/lib/qa/redact-evidence.js +18 -129
  426. package/.agents/scripts/lib/qa/resolve-qa-contract.js +26 -135
  427. package/.agents/scripts/lib/qa/resolve-selection.js +16 -84
  428. package/.agents/scripts/lib/reserved-test-ids.js +9 -47
  429. package/.agents/scripts/lib/runtime-deps/dep-resolution.js +13 -53
  430. package/.agents/scripts/lib/runtime-deps/ensure-installed.js +10 -44
  431. package/.agents/scripts/lib/runtime-deps/manifest.js +10 -30
  432. package/.agents/scripts/lib/runtime-deps/parser-major.js +15 -51
  433. package/.agents/scripts/lib/runtime-deps/preflight.js +4 -22
  434. package/.agents/scripts/lib/runtime-deps/scan-imports.js +11 -55
  435. package/.agents/scripts/lib/signals/detectors/common.js +12 -38
  436. package/.agents/scripts/lib/signals/index.js +2 -19
  437. package/.agents/scripts/lib/signals/schema.js +14 -109
  438. package/.agents/scripts/lib/signals/write.js +2 -11
  439. package/.agents/scripts/lib/single-story/confirm-merge.js +31 -72
  440. package/.agents/scripts/lib/single-story/story-merged-notify.js +8 -49
  441. package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +4 -26
  442. package/.agents/scripts/lib/single-story-sweep/protection.js +13 -100
  443. package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +60 -258
  444. package/.agents/scripts/lib/single-story-sweep.js +14 -97
  445. package/.agents/scripts/lib/skills/parse-skill.js +13 -59
  446. package/.agents/scripts/lib/skills/skills-index.js +8 -29
  447. package/.agents/scripts/lib/skills/walk-skill-files.js +17 -78
  448. package/.agents/scripts/lib/source-extensions.js +11 -42
  449. package/.agents/scripts/lib/source-text/strip-js-comments.js +8 -41
  450. package/.agents/scripts/lib/stdio-flush.js +9 -36
  451. package/.agents/scripts/lib/story-adjacency.js +8 -40
  452. package/.agents/scripts/lib/story-body/body-format-lints.js +22 -83
  453. package/.agents/scripts/lib/story-body/footer-block.js +11 -44
  454. package/.agents/scripts/lib/story-body/story-body.js +83 -358
  455. package/.agents/scripts/lib/temp-retention.js +42 -143
  456. package/.agents/scripts/lib/templates/decomposer-prompts.js +11 -65
  457. package/.agents/scripts/lib/test-env.js +12 -65
  458. package/.agents/scripts/lib/test-run-credit.js +10 -65
  459. package/.agents/scripts/lib/test-runner-contract.js +19 -74
  460. package/.agents/scripts/lib/test-temp.js +38 -184
  461. package/.agents/scripts/lib/test-tiers.js +12 -96
  462. package/.agents/scripts/lib/ticket-body-sections.js +21 -96
  463. package/.agents/scripts/lib/transpile.js +15 -74
  464. package/.agents/scripts/lib/util/concurrent-map.js +6 -25
  465. package/.agents/scripts/lib/util/parse-id-list.js +8 -34
  466. package/.agents/scripts/lib/util/poll-loop.js +8 -28
  467. package/.agents/scripts/lib/util/with-timeout.js +2 -11
  468. package/.agents/scripts/lib/validation-evidence.js +21 -96
  469. package/.agents/scripts/lib/wave-runner/footprint.js +17 -70
  470. package/.agents/scripts/lib/wave-runner/live-probe.js +53 -221
  471. package/.agents/scripts/lib/wave-runner/ready-set.js +72 -301
  472. package/.agents/scripts/lib/workers/crap-worker.js +11 -64
  473. package/.agents/scripts/lib/workers/maintainability-report-worker.js +8 -45
  474. package/.agents/scripts/lib/workers/maintainability-worker.js +5 -21
  475. package/.agents/scripts/lib/workers/serve-worker-messages.js +2 -18
  476. package/.agents/scripts/lib/workflow-closure.js +22 -105
  477. package/.agents/scripts/lib/workspace-provisioner.js +16 -54
  478. package/.agents/scripts/lib/worktree/git-hooks.js +15 -60
  479. package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +20 -60
  480. package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +10 -62
  481. package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +22 -86
  482. package/.agents/scripts/lib/worktree/lifecycle/reap.js +24 -126
  483. package/.agents/scripts/lib/worktree/lifecycle-manager.js +2 -20
  484. package/.agents/scripts/lib/worktree/node-modules-strategy.js +46 -180
  485. package/.agents/scripts/lib/worktree-manager.js +15 -40
  486. package/.agents/scripts/lint-issue-body.js +12 -68
  487. package/.agents/scripts/mandrel-update-preflight.js +10 -70
  488. package/.agents/scripts/merge-baseline.js +30 -104
  489. package/.agents/scripts/nav-registry-diff.js +22 -108
  490. package/.agents/scripts/notify.js +12 -69
  491. package/.agents/scripts/plan-context.js +27 -111
  492. package/.agents/scripts/plan-critics.js +12 -66
  493. package/.agents/scripts/plan-persist.js +31 -148
  494. package/.agents/scripts/plan-run-epilogue.js +11 -37
  495. package/.agents/scripts/pr-watch-with-update.js +76 -267
  496. package/.agents/scripts/providers/github/auth.js +3 -8
  497. package/.agents/scripts/providers/github/blocked-by-add.js +14 -61
  498. package/.agents/scripts/providers/github/board-add.js +5 -21
  499. package/.agents/scripts/providers/github/branch-protection.js +11 -43
  500. package/.agents/scripts/providers/github/cache.js +2 -14
  501. package/.agents/scripts/providers/github/comments.js +7 -40
  502. package/.agents/scripts/providers/github/compose.js +3 -19
  503. package/.agents/scripts/providers/github/errors.js +22 -125
  504. package/.agents/scripts/providers/github/issues.js +31 -123
  505. package/.agents/scripts/providers/github/labels.js +24 -124
  506. package/.agents/scripts/providers/github/mappers.js +5 -27
  507. package/.agents/scripts/providers/github/merge-methods.js +3 -22
  508. package/.agents/scripts/providers/github/project-board.js +2 -17
  509. package/.agents/scripts/providers/github/projects-v2-graphql.js +3 -6
  510. package/.agents/scripts/providers/github/request-helpers.js +5 -32
  511. package/.agents/scripts/providers/github/search-budget.js +9 -39
  512. package/.agents/scripts/providers/github/search-query.js +5 -26
  513. package/.agents/scripts/providers/github/sub-issue-add.js +15 -65
  514. package/.agents/scripts/providers/github/sub-issues.js +7 -36
  515. package/.agents/scripts/providers/github/tickets.js +32 -134
  516. package/.agents/scripts/providers/github.js +18 -59
  517. package/.agents/scripts/prune-plan-run-labels.js +12 -46
  518. package/.agents/scripts/quality-preview.js +35 -220
  519. package/.agents/scripts/resolve-doc-tiers.js +3 -26
  520. package/.agents/scripts/resolve-stories.js +16 -67
  521. package/.agents/scripts/resync-status-column.js +6 -25
  522. package/.agents/scripts/run-tests.js +29 -104
  523. package/.agents/scripts/single-story-close.js +23 -135
  524. package/.agents/scripts/single-story-confirm-merge.js +32 -139
  525. package/.agents/scripts/single-story-init.js +47 -209
  526. package/.agents/scripts/stories-wave-tick.js +102 -472
  527. package/.agents/scripts/sync-agentrc.js +3 -21
  528. package/.agents/scripts/sync-claude-agents.js +9 -55
  529. package/.agents/scripts/sync-claude-commands.js +20 -110
  530. package/.agents/scripts/test-wrapper.js +6 -43
  531. package/.agents/scripts/update-coverage-baseline.js +5 -22
  532. package/.agents/scripts/update-crap-baseline.js +7 -30
  533. package/.agents/scripts/update-duplication-baseline.js +16 -92
  534. package/.agents/scripts/update-maintainability-baseline.js +8 -62
  535. package/.agents/scripts/update-ticket-state.js +1 -7
  536. package/.agents/scripts/validate-skills.js +6 -26
  537. package/.agents/templates/agent-protocol.md +2 -2
  538. package/.agents/templates/docs/audit-sweep-runbook.md +3 -4
  539. package/.agents/workflows/audit-accessibility.md +4 -7
  540. package/.agents/workflows/audit-adrs.md +3 -6
  541. package/.agents/workflows/audit-architecture.md +3 -11
  542. package/.agents/workflows/audit-baselines.md +6 -9
  543. package/.agents/workflows/audit-clean-code.md +8 -12
  544. package/.agents/workflows/audit-data-model.md +3 -7
  545. package/.agents/workflows/audit-dependencies.md +4 -7
  546. package/.agents/workflows/audit-devops.md +4 -8
  547. package/.agents/workflows/audit-documentation.md +1 -4
  548. package/.agents/workflows/audit-mobile.md +4 -7
  549. package/.agents/workflows/audit-navigability.md +3 -6
  550. package/.agents/workflows/audit-performance.md +2 -4
  551. package/.agents/workflows/audit-privacy.md +4 -7
  552. package/.agents/workflows/audit-quality.md +4 -7
  553. package/.agents/workflows/audit-security.md +4 -7
  554. package/.agents/workflows/audit-seo.md +4 -7
  555. package/.agents/workflows/audit-sre.md +4 -7
  556. package/.agents/workflows/audit-to-stories.md +17 -30
  557. package/.agents/workflows/audit-ux-ui.md +4 -7
  558. package/.agents/workflows/helpers/audit-lens-core.md +1 -1
  559. package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
  560. package/.agents/workflows/helpers/deliver-digest.md +6 -4
  561. package/.agents/workflows/helpers/deliver-reference.md +114 -188
  562. package/.agents/workflows/helpers/deliver-story-reference.md +189 -533
  563. package/.agents/workflows/helpers/plan-reference.md +86 -139
  564. package/.agents/workflows/helpers/qa-core.md +12 -0
  565. package/.agents/workflows/memory-consolidate.md +1 -1
  566. package/.agents/workflows/qa-assist.md +27 -71
  567. package/.agents/workflows/qa-explore.md +19 -59
  568. package/.agents/workflows/qa-run.md +11 -33
  569. package/README.md +1 -1
  570. package/bin/mandrel.js +5 -46
  571. package/bin/postinstall.js +18 -107
  572. package/docs/CHANGELOG.md +32 -0
  573. package/lib/cli/doctor.js +11 -71
  574. package/lib/cli/init.js +26 -165
  575. package/lib/cli/migrate.js +5 -64
  576. package/lib/cli/registry.js +84 -467
  577. package/lib/cli/sync-agents.js +4 -64
  578. package/lib/cli/sync-commands.js +11 -64
  579. package/lib/cli/sync.js +34 -213
  580. package/lib/cli/uninstall.js +40 -219
  581. package/lib/cli/update.js +105 -661
  582. package/lib/cli/version-check.js +8 -72
  583. package/lib/cli/version-helpers.js +14 -87
  584. package/lib/migrations/helpers/retire-agentrc-key.js +11 -52
  585. package/lib/migrations/index.js +15 -92
  586. package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +2 -15
  587. package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +1 -13
  588. package/lib/migrations/steps/2.11.0-retire-max-seed-words.js +2 -15
  589. package/lib/migrations/steps/2.2.0-retire-epic-ac-tags.js +9 -38
  590. package/lib/migrations/steps/2.20.0-retire-codebase-snapshot.js +1 -13
  591. package/lib/migrations/steps/2.32.0-retire-lint-baseline-command.js +2 -27
  592. package/lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js +2 -23
  593. package/lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js +2 -27
  594. package/lib/migrations/steps/2.60.0-retire-audit-results-autofile.js +2 -21
  595. package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
  596. package/package.json +16 -14
  597. package/.agents/docs/SDLC.md +0 -590
  598. package/.agents/docs/quality-gates.md +0 -1183
  599. package/.agents/rules/known-tooling-behavior.md +0 -200
  600. package/.agents/rules/orchestration-error-handling.md +0 -61
  601. package/.agents/rules/test-seams.md +0 -59
  602. package/.agents/schemas/baselines/lighthouse.schema.json +0 -59
  603. package/.agents/schemas/baselines/lint.schema.json +0 -47
  604. package/.agents/scripts/check-action-pinning.js +0 -260
  605. package/.agents/scripts/check-audit-attribution.js +0 -302
  606. package/.agents/scripts/check-baseline-drift.js +0 -211
  607. package/.agents/scripts/check-baseline-scope.js +0 -362
  608. package/.agents/scripts/check-generated-validator.js +0 -202
  609. package/.agents/scripts/check-knip-entries.js +0 -159
  610. package/.agents/scripts/check-lifecycle-lint.js +0 -294
  611. package/.agents/scripts/check-pinned-override-notes.js +0 -102
  612. package/.agents/scripts/check-schema-references.js +0 -368
  613. package/.agents/scripts/check-test-portability.js +0 -512
  614. package/.agents/scripts/check-workflow-citations.js +0 -218
  615. package/.agents/scripts/check-workflow-cli-lint.js +0 -299
  616. package/.agents/scripts/check-workflow-timeouts.js +0 -291
  617. package/.agents/scripts/install-matrix-assert.js +0 -326
  618. package/.agents/scripts/lib/audit-advisories.js +0 -195
  619. package/.agents/scripts/lib/audit-attribution.js +0 -134
  620. package/.agents/scripts/lib/baselines/drift-detector.js +0 -351
  621. package/.agents/scripts/lib/baselines/kinds/lighthouse.js +0 -87
  622. package/.agents/scripts/lib/baselines/kinds/lint.js +0 -184
  623. package/.agents/scripts/lib/baselines/orphan-pruner.js +0 -233
  624. package/.agents/scripts/lib/baselines/scope-assert.js +0 -223
  625. package/.agents/scripts/lib/baselines/scope-inventory.js +0 -314
  626. package/.agents/scripts/lib/c8-cli-path.js +0 -21
  627. package/.agents/scripts/lib/config/gates/lighthouse.schema.js +0 -51
  628. package/.agents/scripts/lib/config/gates/lint.schema.js +0 -18
  629. package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +0 -70
  630. package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +0 -284
  631. package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +0 -80
  632. package/.agents/scripts/lib/dynamic-workflow/degraded-coverage.js +0 -81
  633. package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +0 -87
  634. package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +0 -74
  635. package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +0 -90
  636. package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +0 -43
  637. package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +0 -83
  638. package/.agents/scripts/lib/fs-walk.js +0 -52
  639. package/.agents/scripts/lib/knip-config-resolver.js +0 -181
  640. package/.agents/scripts/lib/knip-entry-sync.js +0 -452
  641. package/.agents/scripts/lib/pinned-override-notes.js +0 -88
  642. package/.agents/scripts/lib/pinned-override-resolve.js +0 -212
  643. package/.agents/scripts/lib/test-isolate/cli-options.js +0 -93
  644. package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +0 -52
  645. package/.agents/scripts/lib/test-isolate/list-files.js +0 -90
  646. package/.agents/scripts/lib/test-isolate/parse-tap.js +0 -75
  647. package/.agents/scripts/lib/test-isolate/progress-log.js +0 -45
  648. package/.agents/scripts/lib/test-isolate/render-report.js +0 -97
  649. package/.agents/scripts/lib/test-isolate/run-isolate.js +0 -87
  650. package/.agents/scripts/lib/test-isolate/runner.js +0 -483
  651. package/.agents/scripts/lib/test-profile/parse-tap.js +0 -136
  652. package/.agents/scripts/lib/test-profile/render-report.js +0 -45
  653. package/.agents/scripts/lint-label-vocabulary.js +0 -214
  654. package/.agents/scripts/post-structured-comment.js +0 -127
  655. package/.agents/scripts/provision-git-hooks.js +0 -85
  656. package/.agents/scripts/prune-baseline-orphans.js +0 -181
  657. package/.agents/scripts/run-coverage.js +0 -197
  658. package/.agents/scripts/run-lint.js +0 -133
  659. package/.agents/scripts/run-test-profile.js +0 -129
  660. package/.agents/scripts/run-verify.js +0 -125
  661. package/.agents/scripts/test-isolate.js +0 -55
  662. package/.agents/scripts/update-dead-exports-baseline.js +0 -321
@@ -1,59 +1,10 @@
1
1
  /**
2
- * escomplex-ast-compat.js — reconcile the `typhonjs-escomplex` code generator
3
- * with the Babel AST that `typhonjs-escomplex`'s own default parser emits.
4
- *
5
- * ## The upstream defect
6
- *
7
- * The kernel parses with `@babel/parser`, so every AST it analyses is a
8
- * **Babel** AST. But `typhonjs-escomplex-commons`'
9
- * `utils/ast/astSyntax.js` — the code generator that `ASTGenerator` drives —
10
- * was written against **ESTree**. The two disagree on node names
11
- * (`OptionalMemberExpression` vs a `MemberExpression` with `optional: true`)
12
- * and on node shapes (Babel's `RegExpLiteral` carries `pattern`/`flags`
13
- * directly; ESTree wraps them in a `regex` object on a `Literal`).
14
- *
15
- * That mismatch is invisible for most code because the metric traversal runs
16
- * off the syntax plugin's trait tables, not off `astSyntax`. `astSyntax` is
17
- * only reached where a trait re-serialises a **sub-AST** to synthesise a
18
- * Halstead operand or a function signature — nine traits do this:
19
- * `For`/`ForIn`/`ForOf` heads, `Function`/`FunctionExpression`/
20
- * `ArrowFunctionExpression` parameter lists, `Class`/`ClassExpression`
21
- * bodies, and `YieldExpression` arguments.
22
- *
23
- * Reach one of those with a Babel-only node and `analyzeModule()` throws —
24
- * aborting the whole module, not just the sub-expression. The constructs that
25
- * trip it are ordinary modern JavaScript:
26
- *
27
- * ```js
28
- * for (const t of s.split(/[^a-z]+/)) {} // TypeError: …reading 'pattern'
29
- * for (const t of await xs()) {} // …generator[node.type] is not a function
30
- * for (const t of a?.b) {} // …generator[node.type] is not a function
31
- * function f(a = () => import('x')) {} // …this[node.callee.type] is not a function
32
- * function f(a = { ...b }) {} // TypeError: …reading 'type'
33
- * function f(a = { m() {} }) {} // TypeError: …reading 'generator'
34
- * function f(a = class { m() {} }) {} // …this[statement.type] is not a function
35
- * ```
36
- *
37
- * The `{ ...b }` case is upstream issue #24, open and untouched since
38
- * 2020-12-16 with a byte-identical stack trace. The package last published in
39
- * June 2022 and the repo that holds the defective file has issues *disabled*,
40
- * so waiting for an upstream release is not a plan. Consumers of this kernel
41
- * previously absorbed the breakage as an allowlist of "unscorable" files that
42
- * grew every time someone wrote a `?.` in a loop head.
43
- *
44
- * ## What this module does
45
- *
46
- * Installs the missing handlers and repairs the two shape assumptions, on the
47
- * shared `astSyntax` table, once per process. Every patch is **conditional**:
48
- * a handler is only installed where the table lacks one, and the two repairs
49
- * wrap the original rather than replacing its behaviour. If a future kernel
50
- * bump fixes any of this upstream, the corresponding patch silently stops
51
- * applying and `install()` reports a shorter list — which
52
- * `tests/lib/escomplex-ast-compat.test.js` asserts on, so the shrinkage is
53
- * visible rather than silent.
54
- *
55
- * Nothing here changes the score of a file that already parses: the patched
56
- * paths are exactly the paths that previously threw.
2
+ * escomplex-ast-compat.js — patch the ESTree-written `astSyntax` code
3
+ * generator for the Babel AST the kernel parses. A Babel-only node in a
4
+ * re-serialised sub-AST (loop head, parameter default) otherwise throws for
5
+ * the whole module; upstream is unmaintained. Patches are conditional, so an
6
+ * upstream fix shrinks `applied` (a test asserts it); parseable files score
7
+ * unchanged.
57
8
  *
58
9
  * @see https://github.com/typhonjs-node-escomplex/typhonjs-escomplex/issues/24
59
10
  */
@@ -62,54 +13,16 @@ import { createRequire } from 'node:module';
62
13
 
63
14
  const require = createRequire(import.meta.url);
64
15
 
65
- /**
66
- * The package whose resolution anchors every `typhonjs-escomplex-commons` deep
67
- * import in this module.
68
- *
69
- * `escomplex-plugin-syntax-babylon` is the package that actually reads the
70
- * `astSyntax` table during a metric traversal, so its copy of `commons` is the
71
- * only one worth patching.
72
- *
73
- * Module-local on purpose. A test proves the binding by resolving from this
74
- * package's own root itself — which is the assertion worth making, since our
75
- * copy and the plugin's coincide under a hoisting installer and an
76
- * "ours === theirs" check would pass vacuously.
77
- */
16
+ /** Reads `astSyntax` during traversal, so its copy is the one to patch. */
78
17
  const ANCHOR_PACKAGE = 'escomplex-plugin-syntax-babylon';
79
18
 
80
- /** Marker set on every function this module installs, for idempotency. */
81
19
  const PATCH_MARKER = Symbol.for('mandrel.escomplexAstCompat');
82
20
 
83
- /** Memoised result of the one-time install. */
84
21
  let installResult = null;
85
22
 
86
23
  /**
87
- * Resolve the shared `astSyntax` generator table.
88
- *
89
- * This is a deep import into a transitive dependency's `dist/`, which is
90
- * exactly as fragile as it looks — hence the soft failure. If upstream ever
91
- * restructures, `install()` reports `available: false` and the engine falls
92
- * back to today's behaviour (unscorable files, now reported explicitly by
93
- * the engine rather than silently scored 0).
94
- *
95
- * The patch must land on the *same* `astSyntax` table the metric traversal
96
- * reads, and that table is resolved by **`escomplex-plugin-syntax-babylon`**,
97
- * from its own location — `PluginSyntaxBabylon` requires
98
- * `typhonjs-escomplex-commons/dist/utils/ast/ASTGenerator` and `ASTState` binds
99
- * the table it finds. So `commons` is anchored through the syntax plugin's
100
- * resolution, not through this module's and not through the kernel's.
101
- *
102
- * Resolving it from here, or from the kernel, would be a coin flip: under a
103
- * hoisting installer every copy usually coincides, but under pnpm's isolated
104
- * layout — or as soon as anything declares `commons` at a different version —
105
- * the plugin can read a *different* physical copy, and the patch then lands on
106
- * a table nobody reads while `install()` cheerfully reports success. Anchoring
107
- * on the reader makes that unreachable. Note this is why a test asserting
108
- * "our copy === the patched copy" proves nothing: under hoisting it passes
109
- * vacuously — a test must resolve from the plugin's own root instead.
110
- *
111
- * `requireFn` is the test seam: a cross-checkout verification harness passes
112
- * its own `createRequire` so the anchor starts from that checkout's plugin.
24
+ * Anchored through the reader plugin — under pnpm a copy resolved from here
25
+ * could be one nobody reads. A fragile deep import, so failure is soft.
113
26
  *
114
27
  * @param {NodeJS.Require} [requireFn]
115
28
  * @returns {Record<string, Function>|null}
@@ -132,8 +45,6 @@ function resolveSyntaxTable(requireFn = require) {
132
45
  }
133
46
 
134
47
  /**
135
- * Tag a handler as ours so a second `install()` is a no-op.
136
- *
137
48
  * @template {Function} F
138
49
  * @param {F} fn
139
50
  * @returns {F}
@@ -144,9 +55,6 @@ function mark(fn) {
144
55
  }
145
56
 
146
57
  /**
147
- * Install `name` only if the table has no handler for it. Returns whether the
148
- * install happened, so the caller can report the applied surface.
149
- *
150
58
  * @param {Record<string, Function>} table
151
59
  * @param {string} name
152
60
  * @param {Function} handler
@@ -159,10 +67,7 @@ function addMissing(table, name, handler) {
159
67
  }
160
68
 
161
69
  /**
162
- * Build an ESTree-shaped stand-in for a Babel `ObjectMethod` / `ClassMethod`,
163
- * whose function bits sit on the node itself rather than under `value`.
164
- * `MethodDefinition` reads `node.value.{generator,params,body}`, so handing it
165
- * a synthesized `value` lets the original handler do the work unchanged.
70
+ * Moves a Babel method's function bits under `value` for `MethodDefinition`.
166
71
  *
167
72
  * @param {object} node
168
73
  * @returns {object}
@@ -185,16 +90,10 @@ function asMethodDefinition(node) {
185
90
  }
186
91
 
187
92
  /**
188
- * Patch the shared `astSyntax` table. Idempotent; safe to call from every
189
- * entry point that is about to run `analyzeModule`.
93
+ * Idempotent via PATCH_MARKER.
190
94
  *
191
- * @param {{ requireFn?: NodeJS.Require, memoise?: boolean }} [options] Test
192
- * seam only — see {@link resolveSyntaxTable}. Production callers pass
193
- * nothing.
194
- * @returns {{ available: boolean, applied: string[] }} `available` is false
195
- * when the upstream internals could not be resolved. `applied` names each
196
- * patch that was actually needed, so an upstream fix shows up as a
197
- * shorter list.
95
+ * @param {{ requireFn?: NodeJS.Require, memoise?: boolean }} [options]
96
+ * @returns {{ available: boolean, applied: string[] }}
198
97
  */
199
98
  export function install(options = {}) {
200
99
  const { requireFn, memoise = true } = options;
@@ -212,11 +111,8 @@ export function install(options = {}) {
212
111
  if (addMissing(table, name, handler)) applied.push(name);
213
112
  };
214
113
 
215
- // ---- Repair 1: Babel's RegExpLiteral shape -------------------------------
216
- // Upstream reads `node.regex.pattern`, which only exists on an ESTree
217
- // `Literal`. Babel puts `pattern`/`flags` on the node. Wrapped rather than
218
- // replaced so the ESTree delegate path (`Literal` → `RegExpLiteral`) keeps
219
- // its exact original output.
114
+ // Babel puts `pattern`/`flags` on the node; upstream reads `node.regex`.
115
+ // Wrapped so the ESTree `Literal` delegate path keeps its exact output.
220
116
  if (
221
117
  typeof table.RegExpLiteral === 'function' &&
222
118
  !table.RegExpLiteral[PATCH_MARKER]
@@ -235,25 +131,10 @@ export function install(options = {}) {
235
131
  applied.push('RegExpLiteral');
236
132
  }
237
133
 
238
- // ---- Repair 2: ObjectExpression's hard `this.Property()` dispatch --------
239
- // `ObjectExpression` calls `this.Property(el)` on every element regardless
240
- // of the element's actual type. Two Babel shapes get mis-routed by that:
241
- //
242
- // `{ ...b }` → a `SpreadElement` lands in `Property`, which reads
243
- // `node.key.type` and throws. Upstream issue #24.
244
- // `{ m() {} }` → an `ObjectMethod` has `kind: 'method'`, so `Property`'s
245
- // `node.kind[0] !== 'i'` test sends the raw Babel node to
246
- // `MethodDefinition`, which reads `node.value.generator`
247
- // and throws.
248
- //
249
- // Patching `Property` rather than `ObjectExpression` keeps the patch small
250
- // and leaves the indentation-sensitive object serialisation untouched:
251
- // anything arriving here that is not actually a property node gets
252
- // re-dispatched on its real type.
253
- //
254
- // `Property` and `ObjectProperty` are excluded from re-dispatch because the
255
- // table aliases `ObjectProperty` to `Property` — re-dispatching either would
256
- // recurse into this wrapper forever.
134
+ // `ObjectExpression` calls `this.Property(el)` for every element, so a
135
+ // `SpreadElement` or `ObjectMethod` is mis-routed and throws. Re-dispatch
136
+ // non-property nodes on their real type. `Property`/`ObjectProperty` are
137
+ // excluded: the table aliases them, so re-dispatch would recurse forever.
257
138
  if (typeof table.Property === 'function' && !table.Property[PATCH_MARKER]) {
258
139
  const original = table.Property;
259
140
  const PROPERTY_TYPES = new Set(['Property', 'ObjectProperty']);
@@ -271,9 +152,6 @@ export function install(options = {}) {
271
152
  applied.push('Property');
272
153
  }
273
154
 
274
- // ---- Missing handlers: Babel-only node types ----------------------------
275
-
276
- // `await x` — mirrors upstream's `YieldExpression`.
277
155
  add('AwaitExpression', function AwaitExpression(node, state) {
278
156
  const output = state.output;
279
157
  output.write('await ');
@@ -281,9 +159,7 @@ export function install(options = {}) {
281
159
  if (node.argument) this[node.argument.type](node.argument, state);
282
160
  });
283
161
 
284
- // `a?.b` / `a?.[b]` — mirrors upstream's `MemberExpression`, with `?.`
285
- // recorded as its own operator so optional access is not counted as plain
286
- // member access.
162
+ // `?.` is its own operator, not counted as plain member access.
287
163
  add(
288
164
  'OptionalMemberExpression',
289
165
  function OptionalMemberExpression(node, state) {
@@ -302,7 +178,6 @@ export function install(options = {}) {
302
178
  },
303
179
  );
304
180
 
305
- // `a?.()` — mirrors upstream's `CallExpression`.
306
181
  add('OptionalCallExpression', function OptionalCallExpression(node, state) {
307
182
  this[node.callee.type](node.callee, state);
308
183
  state.output.write('?.');
@@ -310,24 +185,20 @@ export function install(options = {}) {
310
185
  ASTUtil().formatSequence(node.arguments ?? [], state, this);
311
186
  });
312
187
 
313
- // The callee node of a dynamic `import(...)`. Babel models the `import`
314
- // keyword as its own node type; ESTree has no equivalent.
188
+ // Callee of a dynamic `import(...)`; ESTree has no equivalent node.
315
189
  add('Import', function Import(_node, state) {
316
190
  state.output.write('import');
317
191
  state.output.operators.push('import()');
318
192
  });
319
193
 
320
- // `{ m() {} }` / `{ get m() {} }` — Babel's ObjectMethod.
321
194
  add('ObjectMethod', function ObjectMethod(node, state) {
322
195
  return this.MethodDefinition(asMethodDefinition(node), state);
323
196
  });
324
197
 
325
- // `class { m() {} }` — Babel's ClassMethod (ESTree: MethodDefinition).
326
198
  add('ClassMethod', function ClassMethod(node, state) {
327
199
  return this.MethodDefinition(asMethodDefinition(node), state);
328
200
  });
329
201
 
330
- // `class { p = 1 }` — Babel's ClassProperty (ESTree: PropertyDefinition).
331
202
  const classProperty = function ClassProperty(node, state) {
332
203
  const output = state.output;
333
204
  if (node.static) {
@@ -357,14 +228,7 @@ export function install(options = {}) {
357
228
  }
358
229
 
359
230
  /**
360
- * `ASTUtil` is only needed by the `OptionalCallExpression` handler, and only at
361
- * call time — resolving it lazily keeps `install()` free of a second deep
362
- * import that could fail at module load. Anchored through the syntax plugin
363
- * for the same reason as {@link resolveSyntaxTable}.
364
- *
365
- * `formatSequence` is a pure helper that takes the traveler and state as
366
- * arguments, so which copy answers is immaterial — but resolving it the same
367
- * way keeps one rule in this file rather than two.
231
+ * Lazy, so `install()` has no second deep import that could fail at load.
368
232
  *
369
233
  * @returns {{ formatSequence: Function }}
370
234
  */
@@ -375,8 +239,3 @@ function ASTUtil() {
375
239
  );
376
240
  return mod?.default ?? mod;
377
241
  }
378
-
379
- // A test that needs to re-run the install against the already-patched table
380
- // passes `{ memoise: false }` rather than resetting module state — the patches
381
- // are self-detecting via PATCH_MARKER, so a non-memoised re-run is exactly the
382
- // idempotency assertion worth making.
@@ -1,72 +1,13 @@
1
1
  /**
2
- * escomplex-kernel.js — the complexity kernel's parse and dispatch layers,
3
- * in-repo.
4
- *
5
- * ## Why this file exists
6
- *
7
- * `typhonjs-escomplex` was a thin shell around four packages that do all the
8
- * actual work. The shell contributed two things: a parser front-end
9
- * (`@typhonjs/babel-parser`, a ~100-LOC shim over `@babel/parser`) and a
10
- * generic plugin bus (`typhonjs-plugin-manager`, used as a hardcoded
11
- * two-plugin synchronous dispatcher). Nine packages of plumbing hang off
12
- * those two, and none of it computes anything.
13
- *
14
- * What this does **not** do is remove `core-js@2`. Four of the retained
15
- * metric-core packages `require('babel-runtime/core-js/*')` themselves, so it
16
- * is load-bearing for the code that stays; a change that claimed otherwise
17
- * would be unshippable. What it buys instead is an honest closure —
18
- * `babel-runtime` is required by those packages and declared by none of them,
19
- * so today it resolves only because the removed plumbing hoists it. Declaring
20
- * it turns an accident into a contract.
21
- *
22
- * This module reimplements exactly those two layers over the retained metric
23
- * core — `typhonjs-escomplex-commons`, `escomplex-plugin-metrics-module`,
24
- * `escomplex-plugin-syntax-babylon`, `typhonjs-ast-walker` — which compute
25
- * every score. Nothing here computes a metric; the scores come from the same
26
- * packages as before, which is why they do not move.
27
- *
28
- * ## The equivalence contract
29
- *
30
- * Reproducing the displaced shell's *behaviour* means reproducing three
31
- * details it never documented:
32
- *
33
- * 1. **The parser's fixed plugin list**, verbatim and in order, with
34
- * `sourceType: 'unambiguous'` — see `PARSER_PLUGINS` below. The list is
35
- * what makes a `.ts` file, a decorator or a pipeline operator parse at
36
- * all, and `unambiguous` is what lets a CommonJS script and an ES module
37
- * both score.
38
- * 2. **Both plugin instances, in registration order** — syntax first, then
39
- * metrics. The metrics plugin reads trait tables the syntax plugin put on
40
- * the event.
41
- * 3. **One mutable event object per dispatch**, threaded through every plugin
42
- * in turn, with the caller reading the mutations back off it. The displaced
43
- * bus also stamped `$$plugin_invoke_count` / `$$plugin_invoke_names` onto
44
- * every event's data; no plugin and no report reads them, so they are not
45
- * reproduced.
46
- *
47
- * Equivalence is not asserted by reasoning: `tests/lib/escomplex-kernel.test.js`
48
- * replays a corpus captured under the displaced kernel *before* it left the
49
- * tree (`tests/fixtures/escomplex-kernel-parity/`), because afterwards there is
50
- * nothing left to compare against.
51
- *
52
- * ## The one uncontrolled input
53
- *
54
- * `.agents/` materializes into a consumer's repository root, so `@babel/parser`
55
- * resolves from **their** `node_modules`. The preflight guard checks presence,
56
- * not range, and `@babel/parser@8` is GA and rejects several names in the
57
- * fixed plugin list. A manifest range documents the requirement; it does not
58
- * enforce it. So the resolved major is asserted here, at load, with an error
59
- * that names the problem — rather than surfacing as an opaque plugin-list
60
- * syntax error partway through a scan.
2
+ * escomplex-kernel.js — in-repo parse and plugin-dispatch layers over the
3
+ * retained metric core, which computes every score. A parity corpus pins
4
+ * equivalence with the displaced shell. `@babel/parser` resolves from the
5
+ * consumer's tree and v8 rejects the plugin list, so its major is asserted
6
+ * at load.
61
7
  */
62
8
 
63
- // Every metric-core package is reached by a STATIC import specifier with an
64
- // explicit `.js` extension. That is not style: `tests/scripts/
65
- // runtime-deps-drift.test.js` scans for literal `import`/`require` callees, so
66
- // a package reached through an aliased `createRequire` would be a runtime
67
- // dependency that is neither declared nor preflighted. The extensions are
68
- // mandatory because `typhonjs-escomplex-commons` ships an empty
69
- // `package.json` — no `main`, no `exports` — so a deep path is the only door.
9
+ // Static `.js` specifiers: the drift test scans literal imports, and
10
+ // `commons` has no `main`/`exports`.
70
11
  import { parse as babelParse } from '@babel/parser';
71
12
  import PluginMetricsModule from 'escomplex-plugin-metrics-module/dist/PluginMetricsModule.js';
72
13
  import PluginSyntaxBabylon from 'escomplex-plugin-syntax-babylon/dist/PluginSyntaxBabylon.js';
@@ -76,16 +17,7 @@ import ModuleReport from 'typhonjs-escomplex-commons/dist/module/report/ModuleRe
76
17
  import { install as installAstCompat } from './escomplex-ast-compat.js';
77
18
  import { describeParserMajorError } from './runtime-deps/parser-major.js';
78
19
 
79
- /**
80
- * The displaced parser shim's plugin list, verbatim and in order.
81
- *
82
- * Order is preserved because it is cheap to preserve, not because a
83
- * reordering is known to matter. The two entries with options
84
- * (`decorators`, `pipelineOperator`) carry the shim's exact settings —
85
- * `decoratorsBeforeExport: false` and the `minimal` pipeline proposal — which
86
- * decide whether decorated classes and `|>` parse. Re-cloned per parse so a
87
- * parser that mutated its options could not poison a later call.
88
- */
20
+ /** The displaced shim's list, verbatim; cloned per parse. */
89
21
  const PARSER_PLUGINS = [
90
22
  'asyncGenerators',
91
23
  'bigInt',
@@ -112,21 +44,12 @@ const PARSER_PLUGINS = [
112
44
  'typescript',
113
45
  ];
114
46
 
115
- /**
116
- * The two plugins, in registration order: syntax populates the trait tables
117
- * the metrics plugin then reads. Neither defines `onPluginLoad`, and the
118
- * displaced bus was constructed without an eventbus, so there is no plugin
119
- * lifecycle or eventbus coupling to reproduce — only this list.
120
- */
47
+ /** Registration order matters: syntax populates what metrics reads. */
121
48
  const PLUGINS = [
122
49
  ['escomplex-plugin-syntax-babylon', new PluginSyntaxBabylon()],
123
50
  ['escomplex-plugin-metrics-module', new PluginMetricsModule()],
124
51
  ];
125
52
 
126
- // The kernel's code generator predates the Babel AST its own parser emits, so
127
- // ordinary modern syntax aborts a WHOLE module — see `escomplex-ast-compat.js`
128
- // for the defect and the upstream status. Installing at the kernel rather than
129
- // at each caller makes the next scoring entrypoint correct by construction.
130
53
  installAstCompat();
131
54
 
132
55
  const parserProblem = describeParserMajorError();
@@ -135,17 +58,11 @@ if (parserProblem !== null) {
135
58
  }
136
59
 
137
60
  /**
138
- * Run one synchronous plugin dispatch.
139
- *
140
- * Reproduces the displaced bus's `invokeSyncEvents` for the degenerate shape
141
- * this kernel uses: no `copyProps` (the shell passed `void 0` at every call
142
- * site, so the merge base was always `{}`), no eventbus, and the caller
143
- * reading its results back off the same mutated `data` object every plugin
144
- * saw.
61
+ * Both plugins mutate the same `data`.
145
62
  *
146
- * @param {string} method Plugin method name, e.g. `onEnterNode`.
147
- * @param {object} passthru Properties placed on the event's `data`.
148
- * @returns {object} The event `data`, after every plugin has mutated it.
63
+ * @param {string} method
64
+ * @param {object} passthru
65
+ * @returns {object}
149
66
  */
150
67
  function dispatch(method, passthru) {
151
68
  const event = {
@@ -164,9 +81,7 @@ function dispatch(method, passthru) {
164
81
  }
165
82
 
166
83
  /**
167
- * The `ignoreKeys` a syntax trait wants withheld from the walker, if any.
168
- *
169
- * @param {object|undefined} syntax The trait entry for this node type.
84
+ * @param {object|undefined} syntax
170
85
  * @param {object} node
171
86
  * @param {object} parent
172
87
  * @returns {string[]}
@@ -178,9 +93,7 @@ function traitIgnoreKeys(syntax, node, parent) {
178
93
  }
179
94
 
180
95
  /**
181
- * The new scope a syntax trait opens at this node, if any.
182
- *
183
- * @param {object|undefined} syntax The trait entry for this node type.
96
+ * @param {object|undefined} syntax
184
97
  * @param {object} node
185
98
  * @param {object} parent
186
99
  * @returns {object|null}
@@ -191,17 +104,8 @@ function traitNewScope(syntax, node, parent) {
191
104
  }
192
105
 
193
106
  /**
194
- * Build the walker visitor for one module traversal.
195
- *
196
- * Split out of {@link analyzeModule} so the enter/exit symmetry is readable
197
- * side by side: each resolves the trait's scope, brackets the `scopeControl`
198
- * mutation with a pre/post dispatch, and straddles it with the node dispatch
199
- * in opposite order on the way in and out.
200
- *
201
- * The two event shapes are not interchangeable, and the difference is the
202
- * displaced shell's, not a simplification available here: node events carry
203
- * `syntaxes` and scope events do not, and a scope event names its scope
204
- * `newScope` on the way in but `scope` on the way out.
107
+ * Event shapes are the displaced shell's: scope events lack `syntaxes`, and
108
+ * name the scope `newScope` on entry but `scope` on exit.
205
109
  *
206
110
  * @param {{
207
111
  * moduleReport: object,
@@ -248,16 +152,10 @@ function buildVisitor({ moduleReport, scopeControl, syntaxes, settings }) {
248
152
  }
249
153
 
250
154
  /**
251
- * Parse and score one module.
252
- *
253
- * Drop-in replacement for the displaced `escomplex.analyzeModule(source)`:
254
- * same report object, same `finalize()` shape, same thrown errors for source
255
- * the kernel cannot handle.
256
- *
257
- * @param {string} source JavaScript (or TypeScript) source text.
258
- * @param {object} [options] Passed to the plugins' `onConfigure`, as before.
259
- * @returns {object} The finalized module report.
260
- * @throws {SyntaxError} Propagated from the parser, as before.
155
+ * @param {string} source
156
+ * @param {object} [options]
157
+ * @returns {object}
158
+ * @throws {SyntaxError}
261
159
  */
262
160
  export function analyzeModule(source, options = {}) {
263
161
  const ast = babelParse(source, {