@event4u/agent-config 8.4.0 → 8.5.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 (682) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +73 -0
  3. package/README.md +17 -5
  4. package/dist/agent-src/README.md +1 -1
  5. package/dist/agent-src/commands/{analyze-reference-repo.md → analyze/reference-repo.md} +3 -1
  6. package/dist/agent-src/commands/analyze.md +9 -6
  7. package/dist/agent-src/commands/{bug-fix.md → bug/fix.md} +3 -1
  8. package/dist/agent-src/commands/{bug-investigate.md → bug/investigate.md} +4 -2
  9. package/dist/agent-src/commands/bug.md +59 -0
  10. package/dist/agent-src/commands/{set-cost-profile.md → cost/profile.md} +9 -6
  11. package/dist/agent-src/commands/{cost-report.md → cost/report.md} +18 -17
  12. package/dist/agent-src/commands/cost.md +57 -0
  13. package/dist/agent-src/commands/evals/{review-changes.json → review.json} +12 -8
  14. package/dist/agent-src/commands/{quality-fix.md → fix/quality.md} +5 -2
  15. package/dist/agent-src/commands/fix.md +7 -4
  16. package/dist/agent-src/commands/optimize/project.md +250 -0
  17. package/dist/agent-src/commands/{optimize-prompt.md → optimize/prompt.md} +3 -2
  18. package/dist/agent-src/commands/optimize.md +17 -12
  19. package/dist/agent-src/commands/{package-reset.md → package/reset.md} +2 -0
  20. package/dist/agent-src/commands/{package-test.md → package/test.md} +3 -1
  21. package/dist/agent-src/commands/package.md +56 -0
  22. package/dist/agent-src/commands/{project-analyze.md → project/analyze.md} +10 -8
  23. package/dist/agent-src/commands/{project-health.md → project/health.md} +2 -0
  24. package/dist/agent-src/commands/project.md +60 -0
  25. package/dist/agent-src/commands/{review-changes.md → review/changes.md} +26 -24
  26. package/dist/agent-src/commands/{review-routing.md → review/routing.md} +21 -17
  27. package/dist/agent-src/commands/review.md +61 -0
  28. package/dist/agent-src/commands/security-audit-config.md +24 -23
  29. package/dist/agent-src/commands/{sync-agent-settings.md → sync/agent-settings.md} +11 -7
  30. package/dist/agent-src/commands/{sync-gitignore → sync/gitignore}/fix.md +36 -27
  31. package/dist/agent-src/commands/{sync-gitignore.md → sync/gitignore.md} +22 -21
  32. package/dist/agent-src/commands/sync.md +58 -0
  33. package/dist/agent-src/commands/{e2e-heal.md → tests/e2e-heal.md} +5 -2
  34. package/dist/agent-src/commands/{e2e-plan.md → tests/e2e-plan.md} +5 -2
  35. package/dist/agent-src/commands/tests.md +11 -5
  36. package/dist/agent-src/contexts/augment-infrastructure.md +3 -3
  37. package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
  38. package/dist/agent-src/contexts/skills-and-commands.md +2 -2
  39. package/dist/agent-src/rules/external-reference-deep-dive.md +1 -1
  40. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
  41. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
  42. package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +1 -1
  43. package/dist/agent-src/skills/judge-code-quality/SKILL.md +1 -1
  44. package/dist/agent-src/skills/judge-security-auditor/SKILL.md +1 -1
  45. package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
  46. package/dist/agent-src/skills/judge-test-coverage/SKILL.md +1 -1
  47. package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
  48. package/dist/agent-src/skills/mobile-e2e-strategy/SKILL.md +5 -5
  49. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +2 -2
  50. package/dist/agent-src/skills/quality-tools/SKILL.md +1 -1
  51. package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
  52. package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
  53. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  54. package/dist/agent-src/templates/agent-settings.md +1 -1
  55. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +2 -2
  56. package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
  57. package/dist/cli/commands/config.js +44 -0
  58. package/dist/cli/commands/config.js.map +1 -0
  59. package/dist/cli/commands/uiServe.js +1 -0
  60. package/dist/cli/commands/uiServe.js.map +1 -1
  61. package/dist/cli/help.js +38 -0
  62. package/dist/cli/help.js.map +1 -0
  63. package/dist/cli/initRouting.js +16 -1
  64. package/dist/cli/initRouting.js.map +1 -1
  65. package/dist/cli/main.js +43 -37
  66. package/dist/cli/main.js.map +1 -1
  67. package/dist/cli/registry.js +45 -44
  68. package/dist/cli/registry.js.map +1 -1
  69. package/dist/discovery/deprecation-report.md +1 -1
  70. package/dist/discovery/discovery-manifest.json +419 -210
  71. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  72. package/dist/discovery/discovery-manifest.summary.md +4 -4
  73. package/dist/discovery/orphan-report.md +1 -1
  74. package/dist/discovery/packs.json +31 -25
  75. package/dist/discovery/trust-report.md +2 -2
  76. package/dist/discovery/workspaces.json +30 -24
  77. package/dist/install/install.mjs +6064 -159
  78. package/dist/install/selectedTools.js +39 -10
  79. package/dist/install/selectedTools.js.map +1 -1
  80. package/dist/mcp/registry-manifest.json +3 -3
  81. package/dist/server/app.js +15 -3
  82. package/dist/server/app.js.map +1 -1
  83. package/dist/server/routes/ping.js +16 -0
  84. package/dist/server/routes/ping.js.map +1 -1
  85. package/dist/server/routes/settings.js +42 -6
  86. package/dist/server/routes/settings.js.map +1 -1
  87. package/dist/server/routes/settingsChanges.js +55 -0
  88. package/dist/server/routes/settingsChanges.js.map +1 -0
  89. package/dist/server/routes/userMd.js +7 -2
  90. package/dist/server/routes/userMd.js.map +1 -1
  91. package/dist/server/routes/wizard.js +76 -14
  92. package/dist/server/routes/wizard.js.map +1 -1
  93. package/dist/server/writeRoot.js +17 -0
  94. package/dist/server/writeRoot.js.map +1 -1
  95. package/dist/shared/settingsSurface.js +120 -0
  96. package/dist/shared/settingsSurface.js.map +1 -0
  97. package/dist/ui/assets/index-BPFMZWUs.css +1 -0
  98. package/dist/ui/assets/index-BiEZiZ31.js +40 -0
  99. package/dist/ui/assets/index-BiEZiZ31.js.map +1 -0
  100. package/dist/ui/index.html +15 -2
  101. package/docs/CLAIMS.md +20 -15
  102. package/docs/architecture.md +1 -1
  103. package/docs/catalog.md +37 -31
  104. package/docs/command-flows.md +22 -16
  105. package/docs/contracts/command-clusters.md +39 -9
  106. package/docs/contracts/file-ownership-matrix.json +21 -0
  107. package/docs/contracts/frontmatter-contract.md +1 -1
  108. package/docs/contracts/gui-wizard.md +16 -4
  109. package/docs/contracts/iron-law-overrides.txt +1 -0
  110. package/docs/contracts/rule-classification.md +2 -2
  111. package/docs/contracts/settings-api.md +58 -2
  112. package/docs/contracts/surface-matrix.md +5 -0
  113. package/docs/cookbook.md +7 -7
  114. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +74 -0
  115. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +91 -0
  116. package/docs/decisions/INDEX.md +2 -0
  117. package/docs/featured-commands.md +1 -1
  118. package/docs/featured-skills.md +4 -4
  119. package/docs/flows.md +2 -2
  120. package/docs/getting-started-by-role.md +1 -1
  121. package/docs/getting-started-laravel.md +1 -1
  122. package/docs/getting-started.md +6 -3
  123. package/docs/governance-advantage.md +1 -1
  124. package/docs/guidelines/agent-infra/5w2h-analysis.md +1 -1
  125. package/docs/guidelines/agent-infra/ios-simulator-guide.md +1 -1
  126. package/docs/proof.md +11 -2
  127. package/package.json +6 -1
  128. package/src/agent-src/README.md +64 -0
  129. package/src/agent-src/scripts/archive_completed_roadmaps.ts +497 -0
  130. package/src/agent-src/scripts/scan-seeder-violations.php +145 -0
  131. package/src/agent-src/scripts/update_roadmap_progress.ts +1087 -0
  132. package/src/agent-src/templates/AGENTS.md +34 -0
  133. package/src/agent-src/templates/scripts/README.md +195 -0
  134. package/src/agent-src/templates/scripts/check_memory.ts +662 -0
  135. package/src/agent-src/templates/scripts/check_memory_proposal.ts +370 -0
  136. package/src/agent-src/templates/scripts/historical-bug-patterns.example.yml +84 -0
  137. package/src/agent-src/templates/scripts/implement_ticket/__main__.ts +27 -0
  138. package/src/agent-src/templates/scripts/memory_hash.ts +355 -0
  139. package/src/agent-src/templates/scripts/memory_lookup.ts +1089 -0
  140. package/src/agent-src/templates/scripts/memory_report.ts +868 -0
  141. package/src/agent-src/templates/scripts/memory_signal.ts +444 -0
  142. package/src/agent-src/templates/scripts/memory_status.ts +215 -0
  143. package/src/agent-src/templates/scripts/ownership-map.example.yml +87 -0
  144. package/src/agent-src/templates/scripts/pr-risk-config.example.yml +76 -0
  145. package/src/agent-src/templates/scripts/pr_review_routing.ts +544 -0
  146. package/src/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  147. package/src/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
  148. package/src/agent-src/templates/scripts/telemetry/boundary.ts +164 -0
  149. package/src/agent-src/templates/scripts/telemetry/engagement.ts +479 -0
  150. package/src/agent-src/templates/scripts/telemetry/report_renderer.ts +394 -0
  151. package/src/agent-src/templates/scripts/telemetry/settings.ts +210 -0
  152. package/src/agent-src/templates/scripts/telemetry_record.ts +276 -0
  153. package/src/agent-src/templates/scripts/telemetry_report.ts +211 -0
  154. package/src/agent-src/templates/scripts/telemetry_status.ts +333 -0
  155. package/src/agent-src/templates/scripts/tier_usage_report.ts +619 -0
  156. package/src/agent-src/templates/scripts/work_engine/__main__.ts +14 -0
  157. package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +1261 -0
  158. package/src/agent-src/templates/scripts/work_engine/_lib/user_global_paths.ts +329 -0
  159. package/src/agent-src/templates/scripts/work_engine/cli.ts +206 -0
  160. package/src/agent-src/templates/scripts/work_engine/cli_args.ts +249 -0
  161. package/src/agent-src/templates/scripts/work_engine/delivery_state.ts +225 -0
  162. package/src/agent-src/templates/scripts/work_engine/directives/backend/analyze.ts +125 -0
  163. package/src/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +189 -0
  164. package/src/agent-src/templates/scripts/work_engine/directives/backend/index.ts +94 -0
  165. package/src/agent-src/templates/scripts/work_engine/directives/backend/memory.ts +193 -0
  166. package/src/agent-src/templates/scripts/work_engine/directives/backend/plan.ts +267 -0
  167. package/src/agent-src/templates/scripts/work_engine/directives/backend/refine.ts +518 -0
  168. package/src/agent-src/templates/scripts/work_engine/directives/backend/report.ts +379 -0
  169. package/src/agent-src/templates/scripts/work_engine/directives/backend/test.ts +268 -0
  170. package/src/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +258 -0
  171. package/src/agent-src/templates/scripts/work_engine/directives/index.ts +32 -0
  172. package/src/agent-src/templates/scripts/work_engine/directives/mixed/contract.ts +243 -0
  173. package/src/agent-src/templates/scripts/work_engine/directives/mixed/index.ts +108 -0
  174. package/src/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +259 -0
  175. package/src/agent-src/templates/scripts/work_engine/directives/mixed/ui.ts +216 -0
  176. package/src/agent-src/templates/scripts/work_engine/directives/ui/_passthrough.ts +40 -0
  177. package/src/agent-src/templates/scripts/work_engine/directives/ui/app_spec.ts +241 -0
  178. package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +216 -0
  179. package/src/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +506 -0
  180. package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +325 -0
  181. package/src/agent-src/templates/scripts/work_engine/directives/ui/index.ts +102 -0
  182. package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +462 -0
  183. package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +474 -0
  184. package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +352 -0
  185. package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/_skipped.ts +33 -0
  186. package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/apply.ts +213 -0
  187. package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/index.ts +111 -0
  188. package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/refine.ts +126 -0
  189. package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/report.ts +112 -0
  190. package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/test.ts +164 -0
  191. package/src/agent-src/templates/scripts/work_engine/dispatcher.ts +515 -0
  192. package/src/agent-src/templates/scripts/work_engine/emitters.ts +119 -0
  193. package/src/agent-src/templates/scripts/work_engine/errors.ts +24 -0
  194. package/src/agent-src/templates/scripts/work_engine/hook_bootstrap.ts +104 -0
  195. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.ts +189 -0
  196. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.ts +41 -0
  197. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.ts +89 -0
  198. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_gate.ts +193 -0
  199. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +304 -0
  200. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/directive_set_guard.ts +110 -0
  201. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/halt_surface_audit.ts +118 -0
  202. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/index.ts +17 -0
  203. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +161 -0
  204. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/state_shape_validation.ts +45 -0
  205. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/trace.ts +134 -0
  206. package/src/agent-src/templates/scripts/work_engine/hooks/context.ts +94 -0
  207. package/src/agent-src/templates/scripts/work_engine/hooks/events.ts +58 -0
  208. package/src/agent-src/templates/scripts/work_engine/hooks/exceptions.ts +85 -0
  209. package/src/agent-src/templates/scripts/work_engine/hooks/index.ts +27 -0
  210. package/src/agent-src/templates/scripts/work_engine/hooks/registry.ts +66 -0
  211. package/src/agent-src/templates/scripts/work_engine/hooks/runner.ts +90 -0
  212. package/src/agent-src/templates/scripts/work_engine/hooks/settings.ts +260 -0
  213. package/src/agent-src/templates/scripts/work_engine/input_builders.ts +260 -0
  214. package/src/agent-src/templates/scripts/work_engine/intent/classify.ts +466 -0
  215. package/src/agent-src/templates/scripts/work_engine/migration/v0_to_v1.ts +531 -0
  216. package/src/agent-src/templates/scripts/work_engine/orchestration.ts +366 -0
  217. package/src/agent-src/templates/scripts/work_engine/persona_policy.ts +97 -0
  218. package/src/agent-src/templates/scripts/work_engine/resolvers/diff.ts +135 -0
  219. package/src/agent-src/templates/scripts/work_engine/resolvers/file.ts +175 -0
  220. package/src/agent-src/templates/scripts/work_engine/resolvers/prompt.ts +115 -0
  221. package/src/agent-src/templates/scripts/work_engine/scoring/confidence.ts +415 -0
  222. package/src/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +466 -0
  223. package/src/agent-src/templates/scripts/work_engine/scoring/decision_trace.ts +298 -0
  224. package/src/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +444 -0
  225. package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +252 -0
  226. package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +745 -0
  227. package/src/agent-src/templates/scripts/work_engine/state.ts +1151 -0
  228. package/src/agent-src/templates/scripts/work_engine/state_io.ts +413 -0
  229. package/src/config/agent-settings.template.yml +1 -1
  230. package/src/install/atomic.ts +111 -0
  231. package/src/install/conflict.ts +226 -0
  232. package/src/install/detect.ts +280 -0
  233. package/src/install/paths.ts +90 -0
  234. package/src/install/plan.ts +205 -0
  235. package/src/install/preflight.ts +210 -0
  236. package/src/install/selectedTools.ts +80 -0
  237. package/src/install/toolDetection.ts +120 -0
  238. package/src/install/txlog.ts +161 -0
  239. package/src/install/types.ts +175 -0
  240. package/src/install/wizard-plan.ts +216 -0
  241. package/src/scripts/_cli/cmd_converge.ts +38 -0
  242. package/src/scripts/_cli/cmd_doctor.ts +113 -2
  243. package/src/scripts/_cli/cmd_explain.ts +2 -2
  244. package/src/scripts/_cli/cmd_export.ts +3 -3
  245. package/src/scripts/_cli/cmd_fleet.ts +13 -1
  246. package/src/scripts/_cli/cmd_migrate.ts +3 -3
  247. package/src/scripts/_cli/cmd_prune.ts +2 -2
  248. package/src/scripts/_cli/cmd_refresh.ts +4 -4
  249. package/src/scripts/_cli/cmd_settings_check.ts +2 -2
  250. package/src/scripts/_cli/cmd_settings_migrate.ts +2 -2
  251. package/src/scripts/_cli/cmd_sync.ts +2 -2
  252. package/src/scripts/_cli/cmd_uninstall.ts +2 -2
  253. package/src/scripts/_cli/cmd_update.ts +8 -8
  254. package/src/scripts/_cli/cmd_upgrade.ts +4 -3
  255. package/src/scripts/_cli/cmd_validate.ts +3 -3
  256. package/src/scripts/_cli/cmd_versions.ts +2 -2
  257. package/src/scripts/_cli/explain_last/assumptions.ts +2 -2
  258. package/src/scripts/_cli/explain_last/council.ts +2 -2
  259. package/src/scripts/_cli/explain_last/halt.ts +2 -2
  260. package/src/scripts/_cli/explain_last/index.ts +2 -2
  261. package/src/scripts/_cli/explain_last/inputs.ts +4 -4
  262. package/src/scripts/_cli/explain_last/memory.ts +2 -2
  263. package/src/scripts/_cli/explain_last/provider.ts +2 -2
  264. package/src/scripts/_cli/explain_last/render.ts +2 -2
  265. package/src/scripts/_cli/explain_last/route.ts +2 -2
  266. package/src/scripts/_cli/explain_last/scrubber.ts +2 -2
  267. package/src/scripts/_cli/explain_last/sections/assumptions.ts +2 -2
  268. package/src/scripts/_cli/explain_last/sections/council.ts +2 -2
  269. package/src/scripts/_cli/explain_last/sections/halt.ts +2 -2
  270. package/src/scripts/_cli/explain_last/sections/header.ts +2 -2
  271. package/src/scripts/_cli/explain_last/sections/index.ts +1 -1
  272. package/src/scripts/_cli/explain_last/sections/inputs.ts +2 -2
  273. package/src/scripts/_cli/explain_last/sections/memory.ts +2 -2
  274. package/src/scripts/_cli/explain_last/sections/pack.ts +2 -2
  275. package/src/scripts/_cli/explain_last/sections/provider.ts +2 -2
  276. package/src/scripts/_cli/explain_last/sections/route.ts +2 -2
  277. package/src/scripts/_cli/explain_last/state_loader.ts +2 -2
  278. package/src/scripts/_dispatch.bash +20 -1
  279. package/src/scripts/_lib/agent_settings.ts +1 -1
  280. package/src/scripts/_lib/agent_src.ts +7 -7
  281. package/src/scripts/_lib/agents_overlay.ts +1 -1
  282. package/src/scripts/_lib/bench_ab_cache.ts +1 -1
  283. package/src/scripts/_lib/bench_ab_scoring.ts +1 -1
  284. package/src/scripts/_lib/bench_ab_scoring_v2.ts +3 -3
  285. package/src/scripts/_lib/bench_cost.ts +1 -1
  286. package/src/scripts/_lib/bench_quality.ts +3 -3
  287. package/src/scripts/_lib/bench_report.ts +4 -4
  288. package/src/scripts/_lib/bench_telegraph.ts +1 -1
  289. package/src/scripts/_lib/bench_telegraph_report.ts +4 -4
  290. package/src/scripts/_lib/changelog_eras.ts +1 -1
  291. package/src/scripts/_lib/claude_desktop_bundler.ts +1 -1
  292. package/src/scripts/_lib/cli_wrapper.ts +1 -1
  293. package/src/scripts/_lib/fs_atomic.ts +1 -1
  294. package/src/scripts/_lib/global_deploy_inventory.ts +1 -1
  295. package/src/scripts/_lib/install_layout.ts +1 -1
  296. package/src/scripts/_lib/install_regenerator.ts +1 -1
  297. package/src/scripts/_lib/installed_lock.ts +1 -1
  298. package/src/scripts/_lib/installed_tools.ts +1 -1
  299. package/src/scripts/_lib/json_pointers.ts +1 -1
  300. package/src/scripts/_lib/knowledge_global.ts +1 -1
  301. package/src/scripts/_lib/knowledge_global_promote.ts +2 -2
  302. package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
  303. package/src/scripts/_lib/link_crypto.ts +4 -4
  304. package/src/scripts/_lib/linked_projects.ts +4 -4
  305. package/src/scripts/_lib/model_tier.ts +1 -1
  306. package/src/scripts/_lib/module_detection.ts +2 -2
  307. package/src/scripts/_lib/pin_resolver.ts +1 -1
  308. package/src/scripts/_lib/script_output.ts +1 -1
  309. package/src/scripts/_lib/security_lint.ts +1 -1
  310. package/src/scripts/_lib/surface_tiers.ts +1 -1
  311. package/src/scripts/_lib/text_similarity.ts +1 -1
  312. package/src/scripts/_lib/update_check.ts +2 -2
  313. package/src/scripts/_lib/user_global_paths.ts +1 -1
  314. package/src/scripts/_lib/value_ladder.ts +1 -1
  315. package/src/scripts/_lib/value_report.ts +1 -1
  316. package/src/scripts/_lib/zip_min.ts +2 -2
  317. package/src/scripts/adoption_report.ts +3 -3
  318. package/src/scripts/adoption_snapshot.ts +3 -3
  319. package/src/scripts/adoption_status.ts +2 -2
  320. package/src/scripts/adr/regenerate_index.ts +3 -3
  321. package/src/scripts/ai_council/_default_prices.ts +2 -3
  322. package/src/scripts/ai_council/advisors.ts +1 -1
  323. package/src/scripts/ai_council/airgap.ts +1 -1
  324. package/src/scripts/ai_council/budget_guard.ts +1 -1
  325. package/src/scripts/ai_council/bundler.ts +1 -1
  326. package/src/scripts/ai_council/cli_hints.ts +1 -1
  327. package/src/scripts/ai_council/clients.ts +5 -5
  328. package/src/scripts/ai_council/compile_corpus.ts +1 -1
  329. package/src/scripts/ai_council/confidence_gate.ts +1 -1
  330. package/src/scripts/ai_council/config.ts +1 -1
  331. package/src/scripts/ai_council/consensus.ts +1 -1
  332. package/src/scripts/ai_council/events_log.ts +1 -1
  333. package/src/scripts/ai_council/learn_low_impact_preview.ts +1 -1
  334. package/src/scripts/ai_council/low_impact_corpus.ts +1 -1
  335. package/src/scripts/ai_council/low_impact_intake.ts +1 -1
  336. package/src/scripts/ai_council/modes.ts +1 -1
  337. package/src/scripts/ai_council/orchestrator.ts +3 -3
  338. package/src/scripts/ai_council/pricing.ts +2 -2
  339. package/src/scripts/ai_council/probation_gate.ts +2 -2
  340. package/src/scripts/ai_council/project_context.ts +1 -1
  341. package/src/scripts/ai_council/prompts.ts +1 -1
  342. package/src/scripts/ai_council/redact_low_impact_entry.ts +2 -2
  343. package/src/scripts/ai_council/session.ts +1 -1
  344. package/src/scripts/ai_council/shadow_dispatch.ts +1 -1
  345. package/src/scripts/ai_council/solo_dispatch.ts +1 -1
  346. package/src/scripts/analysis_freshness.ts +2 -2
  347. package/src/scripts/annotate_discovery.ts +2 -2
  348. package/src/scripts/apply_modules_config.ts +2 -2
  349. package/src/scripts/audit_adr_coverage.ts +3 -3
  350. package/src/scripts/audit_auto_rules.ts +2 -2
  351. package/src/scripts/audit_cloud_compatibility.ts +3 -3
  352. package/src/scripts/audit_command_surface.ts +2 -2
  353. package/src/scripts/audit_initial_context.ts +7 -6
  354. package/src/scripts/audit_likelihood.ts +5 -5
  355. package/src/scripts/audit_mcp_tools.ts +3 -3
  356. package/src/scripts/audit_overlap.ts +2 -2
  357. package/src/scripts/audit_skill_descriptions.ts +2 -2
  358. package/src/scripts/audit_skill_overlap.ts +5 -5
  359. package/src/scripts/audit_user_type_axis.ts +4 -4
  360. package/src/scripts/backfill_model_tier.ts +1 -1
  361. package/src/scripts/bench_ab_cache_dispatch.ts +2 -2
  362. package/src/scripts/bench_ab_clone.ts +2 -2
  363. package/src/scripts/bench_ab_diff.ts +3 -3
  364. package/src/scripts/bench_ab_integrity.ts +2 -2
  365. package/src/scripts/bench_ab_run.ts +4 -4
  366. package/src/scripts/bench_ab_task_runner.ts +1 -1
  367. package/src/scripts/bench_ab_tracka_run.ts +2 -2
  368. package/src/scripts/bench_ab_v2_run.ts +1 -1
  369. package/src/scripts/bench_ab_v2_stats.ts +2 -2
  370. package/src/scripts/bench_baseline_ready.ts +1 -1
  371. package/src/scripts/bench_condense_memory.ts +4 -4
  372. package/src/scripts/bench_drift_check.ts +3 -3
  373. package/src/scripts/bench_per_tool.ts +1 -1
  374. package/src/scripts/bench_rtk_savings.ts +4 -4
  375. package/src/scripts/bench_run.ts +4 -4
  376. package/src/scripts/bench_runner.ts +1 -1
  377. package/src/scripts/build_cloud_bundle.ts +3 -3
  378. package/src/scripts/build_discovery_manifest.ts +13 -15
  379. package/src/scripts/build_linear_digest.ts +2 -2
  380. package/src/scripts/build_mcp_registry_manifest.ts +3 -3
  381. package/src/scripts/build_proof.ts +6 -0
  382. package/src/scripts/build_rule_trigger_matrix.ts +2 -2
  383. package/src/scripts/capture_showcase_session.ts +3 -3
  384. package/src/scripts/chat_history.ts +1 -1
  385. package/src/scripts/check_always_budget.ts +1 -1
  386. package/src/scripts/check_artefact_checksums.ts +4 -4
  387. package/src/scripts/check_artefact_count_messaging.ts +197 -0
  388. package/src/scripts/check_augment_description_cap.ts +3 -3
  389. package/src/scripts/check_augmentignore.ts +1 -1
  390. package/src/scripts/check_beta_review_markers.ts +3 -3
  391. package/src/scripts/check_bite_sized_granularity.ts +1 -1
  392. package/src/scripts/check_cluster_patterns.ts +47 -3
  393. package/src/scripts/check_command_count_messaging.ts +2 -2
  394. package/src/scripts/check_condensation.ts +2 -2
  395. package/src/scripts/check_condensed_paths.ts +6 -6
  396. package/src/scripts/check_context_paths.ts +1 -1
  397. package/src/scripts/check_council_config_location.ts +3 -3
  398. package/src/scripts/check_council_layout.ts +2 -2
  399. package/src/scripts/check_council_references.ts +2 -2
  400. package/src/scripts/check_discovery_determinism.ts +3 -3
  401. package/src/scripts/check_gate_paths.ts +4 -4
  402. package/src/scripts/check_iron_law_prominence.ts +2 -2
  403. package/src/scripts/check_kernel_rule_bundle.ts +3 -3
  404. package/src/scripts/check_knowledge_cards.ts +4 -4
  405. package/src/scripts/check_knowledge_pages.ts +1 -1
  406. package/src/scripts/check_md_language.ts +3 -3
  407. package/src/scripts/check_memory.ts +3 -3
  408. package/src/scripts/check_memory_proposal.ts +2 -2
  409. package/src/scripts/check_module_management_neutral.ts +1 -1
  410. package/src/scripts/check_no_conflict_markers.ts +1 -1
  411. package/src/scripts/check_no_external_sources.ts +1 -1
  412. package/src/scripts/check_no_local_settings_committed.ts +2 -2
  413. package/src/scripts/check_no_new_legacy_path.ts +3 -3
  414. package/src/scripts/check_no_roadmap_refs.ts +3 -3
  415. package/src/scripts/check_one_off_location.ts +3 -3
  416. package/src/scripts/check_overlay_cascade_subdirs.ts +3 -3
  417. package/src/scripts/check_portability.ts +3 -3
  418. package/src/scripts/check_proposal.ts +0 -0
  419. package/src/scripts/check_public_catalog_links.ts +1 -1
  420. package/src/scripts/check_public_links.ts +2 -2
  421. package/src/scripts/check_references.ts +3 -3
  422. package/src/scripts/check_release_includes_discovery.ts +2 -2
  423. package/src/scripts/check_release_pr_shape.ts +2 -2
  424. package/src/scripts/check_release_published.ts +1 -1
  425. package/src/scripts/check_release_trunk_sync.ts +3 -3
  426. package/src/scripts/check_reply_consistency.ts +1 -1
  427. package/src/scripts/check_roadmap_trackable.ts +2 -2
  428. package/src/scripts/check_role_doc_links.ts +2 -2
  429. package/src/scripts/check_safety_floor_untouched.ts +3 -3
  430. package/src/scripts/check_skill_requires.ts +2 -2
  431. package/src/scripts/check_structural_breaking.ts +2 -2
  432. package/src/scripts/check_surface_tiers.ts +2 -2
  433. package/src/scripts/check_template_pin_drift.ts +1 -1
  434. package/src/scripts/check_test_coverage_diff.ts +2 -2
  435. package/src/scripts/check_token_optimizer_freshness.ts +3 -3
  436. package/src/scripts/check_trigger_evals.ts +2 -2
  437. package/src/scripts/check_update_banner.ts +1 -1
  438. package/src/scripts/ci_status.ts +0 -0
  439. package/src/scripts/ci_summary.ts +3 -3
  440. package/src/scripts/ci_time_ratio.ts +1 -1
  441. package/src/scripts/command_suggester/cooldown.ts +1 -1
  442. package/src/scripts/command_suggester/index.ts +1 -1
  443. package/src/scripts/command_suggester/loader.ts +1 -1
  444. package/src/scripts/command_suggester/match.ts +1 -1
  445. package/src/scripts/command_suggester/rank.ts +1 -1
  446. package/src/scripts/command_suggester/render.ts +1 -1
  447. package/src/scripts/command_suggester/sanitize.ts +1 -1
  448. package/src/scripts/command_suggester/settings.ts +1 -1
  449. package/src/scripts/command_suggester/types.ts +0 -0
  450. package/src/scripts/compile_router.ts +4 -4
  451. package/src/scripts/condense.ts +3 -3
  452. package/src/scripts/condense_memory.ts +1 -1
  453. package/src/scripts/config/index.ts +1 -1
  454. package/src/scripts/config/packs.ts +1 -1
  455. package/src/scripts/config/presets.ts +1 -1
  456. package/src/scripts/config/profile_explain.ts +1 -1
  457. package/src/scripts/config/profiles.ts +1 -1
  458. package/src/scripts/config/session_profiles.ts +1 -1
  459. package/src/scripts/context_hygiene_hook.ts +2 -2
  460. package/src/scripts/cost_by_conversation.ts +1 -1
  461. package/src/scripts/cost_summary.ts +2 -2
  462. package/src/scripts/council_cli.ts +1 -1
  463. package/src/scripts/council_prune.ts +1 -1
  464. package/src/scripts/cross_repo_retrieve.ts +2 -2
  465. package/src/scripts/discovery_stats.ts +3 -3
  466. package/src/scripts/evidence_report.ts +4 -4
  467. package/src/scripts/extract_audit_patterns.ts +2 -2
  468. package/src/scripts/first_run_gate_hook.ts +1 -1
  469. package/src/scripts/gen_discovery_baseline.ts +2 -2
  470. package/src/scripts/generate_capabilities_index.ts +2 -2
  471. package/src/scripts/generate_capability_matrix.ts +2 -2
  472. package/src/scripts/generate_catalog.ts +2 -2
  473. package/src/scripts/generate_command_flows.ts +2 -2
  474. package/src/scripts/generate_cookbook.ts +1 -1
  475. package/src/scripts/generate_index.ts +3 -3
  476. package/src/scripts/generate_ownership_matrix.ts +2 -2
  477. package/src/scripts/generate_pack_manifests.ts +2 -2
  478. package/src/scripts/generate_role_experiences_catalog.ts +3 -3
  479. package/src/scripts/hooks/block_no_verify.ts +2 -2
  480. package/src/scripts/hooks/dispatch_hook.ts +2 -2
  481. package/src/scripts/hooks/dispatch_issues.ts +1 -1
  482. package/src/scripts/hooks/envelope.ts +1 -1
  483. package/src/scripts/hooks/replay_hook.ts +1 -1
  484. package/src/scripts/hooks/state_io.ts +1 -1
  485. package/src/scripts/hooks_doctor.ts +1 -1
  486. package/src/scripts/hooks_status.ts +1 -1
  487. package/src/scripts/injection_scan_hook.ts +1 -1
  488. package/src/scripts/install.ts +145 -3
  489. package/src/scripts/inventory_abstraction_budget.ts +5 -5
  490. package/src/scripts/inventory_frontmatter.ts +1 -1
  491. package/src/scripts/inventory_meta_layers.ts +1 -1
  492. package/src/scripts/iron_law_sha.ts +1 -1
  493. package/src/scripts/knowledge_global_cli.ts +3 -3
  494. package/src/scripts/linked_projects_list.ts +1 -1
  495. package/src/scripts/lint_agent_security.ts +4 -4
  496. package/src/scripts/lint_agent_skill_names.ts +1 -1
  497. package/src/scripts/lint_agents_layout.ts +2 -2
  498. package/src/scripts/lint_agents_md.ts +3 -3
  499. package/src/scripts/lint_archived_skills.ts +2 -2
  500. package/src/scripts/lint_artefact_frontmatter.ts +2 -2
  501. package/src/scripts/lint_bench_ab.ts +2 -2
  502. package/src/scripts/lint_bench_corpus.ts +1 -1
  503. package/src/scripts/lint_command_flow_coverage.ts +1 -1
  504. package/src/scripts/lint_command_routing.ts +2 -2
  505. package/src/scripts/lint_command_tiers.ts +1 -1
  506. package/src/scripts/lint_command_verbs.ts +4 -4
  507. package/src/scripts/lint_commit_subjects.ts +2 -2
  508. package/src/scripts/lint_context_spine_usage.ts +3 -3
  509. package/src/scripts/lint_discovery_manifest.ts +4 -4
  510. package/src/scripts/lint_discovery_vocabulary.ts +2 -2
  511. package/src/scripts/lint_empty_roadmaps.ts +3 -3
  512. package/src/scripts/lint_eval_freshness.ts +2 -2
  513. package/src/scripts/lint_examples.ts +2 -2
  514. package/src/scripts/lint_explain_trace.ts +2 -2
  515. package/src/scripts/lint_featured_skills.ts +0 -0
  516. package/src/scripts/lint_flows.ts +5 -5
  517. package/src/scripts/lint_framework_leakage.ts +1 -1
  518. package/src/scripts/lint_framework_leakage_allowlist.json +10 -2
  519. package/src/scripts/lint_frontmatter_boilerplate.ts +2 -2
  520. package/src/scripts/lint_ghostwriter_source.ts +3 -3
  521. package/src/scripts/lint_global_paths.ts +1 -1
  522. package/src/scripts/lint_handoffs.ts +1 -1
  523. package/src/scripts/lint_hidden_unicode.ts +1 -1
  524. package/src/scripts/lint_hook_concern_budget.ts +2 -2
  525. package/src/scripts/lint_hook_manifest.ts +2 -2
  526. package/src/scripts/lint_instruction_smuggling.ts +1 -1
  527. package/src/scripts/lint_load_context.ts +2 -2
  528. package/src/scripts/lint_marketplace.ts +1 -1
  529. package/src/scripts/lint_marketplace_install_completeness.ts +2 -2
  530. package/src/scripts/lint_mcp_config_security.ts +1 -1
  531. package/src/scripts/lint_mcp_registry_manifest.ts +1 -1
  532. package/src/scripts/lint_media_policy_linkage.ts +3 -3
  533. package/src/scripts/lint_missions.ts +3 -3
  534. package/src/scripts/lint_model_tier_coverage.ts +3 -3
  535. package/src/scripts/lint_namespace.ts +2 -2
  536. package/src/scripts/lint_namespace_collisions.ts +2 -2
  537. package/src/scripts/lint_new_skill_gate.ts +3 -3
  538. package/src/scripts/lint_no_new_atomic_commands.ts +9 -6
  539. package/src/scripts/lint_no_python_twin_rationale.ts +102 -0
  540. package/src/scripts/lint_one_off_age.ts +2 -2
  541. package/src/scripts/lint_orchestration_dsl.ts +3 -3
  542. package/src/scripts/lint_orchestrator_auto_detect.ts +1 -1
  543. package/src/scripts/lint_pack_boundaries.ts +2 -2
  544. package/src/scripts/lint_pack_dependencies.ts +2 -2
  545. package/src/scripts/lint_pack_first_win.ts +2 -2
  546. package/src/scripts/lint_persona_governance.ts +3 -3
  547. package/src/scripts/lint_positioning.ts +1 -1
  548. package/src/scripts/lint_profile_overlay_set_only.ts +2 -2
  549. package/src/scripts/lint_readme_jargon.ts +2 -2
  550. package/src/scripts/lint_readme_size.ts +2 -2
  551. package/src/scripts/lint_regression.ts +3 -3
  552. package/src/scripts/lint_roadmap_ci_steps.ts +3 -3
  553. package/src/scripts/lint_roadmap_complexity.ts +1 -1
  554. package/src/scripts/lint_roadmap_later_disposition.ts +2 -2
  555. package/src/scripts/lint_role_experiences.ts +2 -2
  556. package/src/scripts/lint_rule_interactions.ts +1 -1
  557. package/src/scripts/lint_rule_tiers.ts +1 -1
  558. package/src/scripts/lint_showcase_sessions.ts +2 -2
  559. package/src/scripts/lint_skill_frontmatter_safety.ts +1 -1
  560. package/src/scripts/lint_skill_originality.ts +1 -1
  561. package/src/scripts/lint_skill_tools.ts +3 -3
  562. package/src/scripts/lint_ticket_buildable.ts +2 -2
  563. package/src/scripts/lint_topics_yaml.ts +3 -3
  564. package/src/scripts/lint_trust_coherence.ts +3 -3
  565. package/src/scripts/lint_value_dashboard.ts +3 -3
  566. package/src/scripts/lint_workflow_security.ts +3 -3
  567. package/src/scripts/lint_workspace_boundary.ts +2 -2
  568. package/src/scripts/mcp_parity_smoke.ts +1 -1
  569. package/src/scripts/mcp_render.ts +1 -1
  570. package/src/scripts/mcp_server/catalog.ts +1 -1
  571. package/src/scripts/mcp_server/index.ts +1 -1
  572. package/src/scripts/mcp_server/metadata.ts +1 -1
  573. package/src/scripts/mcp_server/prompts.ts +1 -1
  574. package/src/scripts/mcp_server/resources.ts +1 -1
  575. package/src/scripts/mcp_server/server.ts +1 -1
  576. package/src/scripts/mcp_server/telemetry.ts +1 -1
  577. package/src/scripts/mcp_server/tools.ts +1 -1
  578. package/src/scripts/mcp_telemetry_health.ts +1 -1
  579. package/src/scripts/mcp_telemetry_query.ts +3 -3
  580. package/src/scripts/mcp_telemetry_store.ts +3 -3
  581. package/src/scripts/measure_augment_budget.ts +2 -2
  582. package/src/scripts/measure_density.ts +2 -2
  583. package/src/scripts/measure_frugality_savings.ts +3 -3
  584. package/src/scripts/measure_markitdown_lift.ts +1 -1
  585. package/src/scripts/measure_patterns.ts +1 -1
  586. package/src/scripts/measure_projection_bytes.ts +1 -1
  587. package/src/scripts/measure_rule_budget.ts +1 -1
  588. package/src/scripts/measure_skill_reduction.ts +1 -1
  589. package/src/scripts/memory_hash.ts +1 -1
  590. package/src/scripts/memory_lookup.ts +6 -6
  591. package/src/scripts/memory_report.ts +1 -1
  592. package/src/scripts/memory_signal.ts +1 -1
  593. package/src/scripts/memory_status.ts +2 -2
  594. package/src/scripts/migrate_command_suggestions.ts +1 -1
  595. package/src/scripts/migrate_frontmatter_defaults.ts +1 -1
  596. package/src/scripts/mine_session.ts +3 -3
  597. package/src/scripts/minimal_safe_diff_hook.ts +2 -2
  598. package/src/scripts/move_artefact.ts +3 -3
  599. package/src/scripts/new_skill.ts +3 -3
  600. package/src/scripts/onboarding_gate_hook.ts +2 -2
  601. package/src/scripts/pack_mcp_content.ts +1 -1
  602. package/src/scripts/parity/replay.ts +3 -2
  603. package/src/scripts/pattern_share.ts +2 -2
  604. package/src/scripts/plan_physical_move.ts +3 -3
  605. package/src/scripts/prediction-pool/poisson_sim.ts +2 -2
  606. package/src/scripts/prediction-pool/pool_winsim.ts +2 -2
  607. package/src/scripts/prediction-pool/score_ev.ts +2 -2
  608. package/src/scripts/prepack-check.mjs +108 -5
  609. package/src/scripts/print_required_checks.ts +2 -2
  610. package/src/scripts/probe_projection_fidelity.ts +2 -2
  611. package/src/scripts/probe_skill_registration.ts +2 -2
  612. package/src/scripts/profile_staleness_hook.ts +2 -2
  613. package/src/scripts/profile_use.ts +2 -2
  614. package/src/scripts/project_thin_rules.ts +3 -3
  615. package/src/scripts/propose_modules_config.ts +2 -2
  616. package/src/scripts/prototype_lint_contradictions.ts +2 -2
  617. package/src/scripts/prove_pack_extractable.ts +1 -1
  618. package/src/scripts/readme_linter.ts +4 -4
  619. package/src/scripts/redact_hook_capture.ts +2 -2
  620. package/src/scripts/refine_ticket_detect.ts +1 -1
  621. package/src/scripts/release.ts +30 -19
  622. package/src/scripts/render_benchmark_md.ts +2 -2
  623. package/src/scripts/render_value_md.ts +2 -2
  624. package/src/scripts/roadmap_progress_hook.ts +1 -1
  625. package/src/scripts/router_telemetry.ts +1 -1
  626. package/src/scripts/run_skill_evals.ts +2 -2
  627. package/src/scripts/runtime_dispatcher.ts +1 -1
  628. package/src/scripts/runtime_handler.ts +1 -1
  629. package/src/scripts/runtime_registry.ts +3 -3
  630. package/src/scripts/score_skill_selection.ts +1 -1
  631. package/src/scripts/security_audit_config.ts +2 -2
  632. package/src/scripts/skill_collision_clusters.ts +1 -1
  633. package/src/scripts/skill_discovery.ts +1 -1
  634. package/src/scripts/skill_linter.ts +8 -7
  635. package/src/scripts/skill_overlap.ts +2 -2
  636. package/src/scripts/skill_preview.ts +1 -1
  637. package/src/scripts/skill_tools/audit_persona_coverage.ts +3 -3
  638. package/src/scripts/skill_tools/audit_user_type_coverage.ts +3 -3
  639. package/src/scripts/skill_tools/index.ts +1 -1
  640. package/src/scripts/skill_tools/run_block_d_eval.ts +3 -3
  641. package/src/scripts/skill_tools/score_skill_relevance.ts +3 -3
  642. package/src/scripts/skill_tools/suggest_skill_for_task.ts +3 -3
  643. package/src/scripts/skill_trigger_eval.ts +2 -2
  644. package/src/scripts/skill_usage_collect.ts +2 -2
  645. package/src/scripts/skill_usage_report.ts +2 -2
  646. package/src/scripts/smoke_path_resolution.ts +2 -2
  647. package/src/scripts/smoke_quickstart.ts +4 -4
  648. package/src/scripts/snapshot_agent_outputs.ts +2 -2
  649. package/src/scripts/spotcheck_thin_root.ts +2 -2
  650. package/src/scripts/surface-tiers.yml +1 -0
  651. package/src/scripts/sync_agent_settings.ts +2 -2
  652. package/src/scripts/sync_github_metadata.ts +4 -4
  653. package/src/scripts/sync_gitignore.ts +3 -3
  654. package/src/scripts/sync_yaml_rt.ts +2 -2
  655. package/src/scripts/telegraph_stats.ts +1 -1
  656. package/src/scripts/tool_registry.ts +2 -2
  657. package/src/scripts/tools/adapter_errors.ts +1 -1
  658. package/src/scripts/tools/base_adapter.ts +1 -1
  659. package/src/scripts/tools/github_adapter.ts +1 -1
  660. package/src/scripts/tools/jira_adapter.ts +1 -1
  661. package/src/scripts/trigger_coverage.ts +2 -2
  662. package/src/scripts/update_counts.ts +68 -6
  663. package/src/scripts/update_prices.ts +3 -3
  664. package/src/scripts/validate_agent_settings.ts +3 -3
  665. package/src/scripts/validate_decision_engine.ts +2 -2
  666. package/src/scripts/validate_discovery_manifest.ts +3 -3
  667. package/src/scripts/validate_frontmatter.ts +5 -5
  668. package/src/scripts/validate_pack_yaml.ts +0 -0
  669. package/src/scripts/validate_safe_paths.ts +2 -2
  670. package/src/scripts/validate_telegraph_carveouts.ts +3 -3
  671. package/src/scripts/verify_before_complete_hook.ts +2 -2
  672. package/src/scripts/verify_physical_move.ts +2 -2
  673. package/src/scripts/wrapper_freshness_hook.ts +3 -3
  674. package/src/server/schemas/settings.ts +426 -0
  675. package/src/shared/settingsSurface.ts +184 -0
  676. package/src/shared/userMd/formAdapter.ts +86 -0
  677. package/src/shared/userMd/schema.ts +59 -0
  678. package/src/shared/userMd/utils.ts +91 -0
  679. package/dist/agent-src/commands/optimize-project.md +0 -243
  680. package/dist/ui/assets/index-BbWWuFrF.css +0 -1
  681. package/dist/ui/assets/index-UjcTG_9O.js +0 -40
  682. package/dist/ui/assets/index-UjcTG_9O.js.map +0 -1
@@ -83,6 +83,12 @@ function render(): string {
83
83
  }
84
84
  L.push('');
85
85
  L.push(`**${backed.length} backed claim(s)** — all evidence pointers resolve in CI.`);
86
+ L.push('');
87
+ L.push('Artefact counts in public prose (skills, commands, governed rules,');
88
+ L.push('guidelines, personas) are **generated from source and CI-drift-checked**:');
89
+ L.push('`update_counts.ts` writes the numbers, `check_artefact_count_messaging.ts`');
90
+ L.push('fails the build on any count-shaped prose mention that drifts from the');
91
+ L.push('source count — or on two different numbers for the same artefact kind.');
86
92
  if (unbacked.length > 0) {
87
93
  L.push('');
88
94
  L.push(`We also publish our **debt**: ${unbacked.length} claim(s) are logged as`);
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Build agents/settings/contexts/rule-trigger-matrix.md.
4
4
  *
5
- * TypeScript twin of `src/scripts/build_rule_trigger_matrix.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/build_rule_trigger_matrix.py` (ADR-200,
6
6
  * Phase 8 / Wave 8g). Mirrors the Python contract EXACTLY — same generated
7
7
  * markdown (byte-identical), same `CLASSIFICATION` table, same stdout
8
8
  * (`✅ Wrote …` line) + stderr (unclassified-rule warning) split, exit codes
@@ -340,7 +340,7 @@ function emit(): number {
340
340
  lines.push('');
341
341
  lines.push('**Source:** Phase 1 of `road-to-rule-hardening.md` (self-check audit) +');
342
342
  lines.push('Phase 1 of `road-to-context-layer-maturity.md` (`load_context:` inventory).');
343
- lines.push('**Generated by:** `scripts/build_rule_trigger_matrix.py` — re-run after rule');
343
+ lines.push('**Generated by:** `src/scripts/build_rule_trigger_matrix.ts` — re-run after rule');
344
344
  lines.push("set changes. Manual classifications live in the script's `CLASSIFICATION`");
345
345
  lines.push('table; size and context-chain columns are derived from the rule files.');
346
346
  lines.push('');
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * capture_showcase_session.ts — wrap and measure showcase sessions.
4
4
  *
5
- * TypeScript twin of `src/scripts/capture_showcase_session.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/capture_showcase_session.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 8 / Wave 8g). Mirrors the Python CLI contract
7
7
  * EXACTLY — the `capture` / `metrics` subcommands, every flag, exit codes
8
8
  * (0 success / 1 user error / 2 metric-gate pending), the stdout/stderr
@@ -24,8 +24,8 @@
24
24
  *
25
25
  * `commit_sha` (git HEAD) and `started`/`ended` (now) are non-deterministic;
26
26
  * golden parity supplies fixed timestamps via `--started`/`--ended` and
27
- * excludes `commit_sha`. No behaviour changes — latent Python quirks
28
- * replicated.
27
+ * excludes `commit_sha`. No behaviour changes — historical quirks
28
+ * preserved.
29
29
  */
30
30
  import { spawnSync } from 'node:child_process';
31
31
  import * as fs from 'node:fs';
@@ -1,6 +1,6 @@
1
1
  // Persistent chat-history log for crash recovery.
2
2
  //
3
- // TypeScript twin of `src/scripts/chat_history.py` (ADR-200 — Python→TS
3
+ // Ported from the retired Python `src/scripts/chat_history.py` (ADR-200 — Python→TS
4
4
  // migration). Public API mirrors the Python module exactly (snake_case kept
5
5
  // deliberately) so callers — including the MCP tools layer
6
6
  // (`src/scripts/mcp_server/tools.ts`) — depend on one source of truth.
@@ -3,7 +3,7 @@
3
3
  * Always-rule budget gate (Phases 7.1 + 7.4 of road-to-pr-34-followups,
4
4
  * extended by Phase 0.2 of road-to-structural-optimization).
5
5
  *
6
- * TypeScript twin of `src/scripts/check_always_budget.py` (ADR-200 —
6
+ * Ported from the retired Python `src/scripts/check_always_budget.py` (ADR-200 —
7
7
  * Python→TS migration, Phase 4 / Wave 4a). Mirrors the Python CLI
8
8
  * contract exactly: flags (`--quiet`, `--no-trend`), exit codes
9
9
  * (0 = pass/warn, 1 = fail, 3 = internal error), stdout/stderr split,
@@ -2,14 +2,14 @@
2
2
  /**
3
3
  * Phase-6 checksum-stability gate (monorepo Phase 2, ADR-015).
4
4
  *
5
- * TypeScript twin of `src/scripts/check_artefact_checksums.py` (ADR-200,
6
- * Phase 4 / Wave 4c). The CLI contract is mirrored EXACTLY — `--manifest`
5
+ * Ported from the retired Python `src/scripts/check_artefact_checksums.py` (ADR-200,
6
+ * Phase 4 / Wave 4c). The CLI contract is pinned — `--manifest`
7
7
  * / `--quiet` flags, exit codes (0 match, 1 drift / malformed / missing),
8
8
  * stdout/stderr split, byte-identical messages, the same per-artefact
9
9
  * checksum recomputation and the same error truncation (first 20 + "… and N
10
- * more"). No behaviour changes — latent bugs replicated.
10
+ * more"). Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
11
11
  *
12
- * The Python original imports `_artefact_checksum` + `_CATEGORY_SCHEMA` from
12
+ * the retired Python implementation imports `_artefact_checksum` + `_CATEGORY_SCHEMA` from
13
13
  * `build_discovery_manifest.py` (which has no TS twin yet). To keep the TS
14
14
  * twin self-contained AND in lockstep, the checksum primitive is ported
15
15
  * inline here from `build_discovery_manifest._artefact_checksum` /
@@ -0,0 +1,197 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Artefact-count messaging gate (road-to-truth-and-reference-hygiene Phase 1).
4
+ *
5
+ * Generalises `check_command_count_messaging.ts` (which stays wired as
6
+ * `task check-command-count` — its badge/browse anchors are required-check
7
+ * contract surface and are NOT removed here) from commands-only to every
8
+ * artefact kind: any count-shaped prose mention of skills / commands /
9
+ * governed rules / guidelines / personas on a flagship public surface must
10
+ * equal the canonical source count, and no surface may carry two DIFFERENT
11
+ * numbers for the same kind (the 150-vs-162-vs-166 failure mode that
12
+ * motivated this gate).
13
+ *
14
+ * Ownership split:
15
+ * - `update_counts.ts` GENERATES the numbers into anchored positions
16
+ * (badges + prose) and `--check`s those exact anchors.
17
+ * - THIS gate SCANS the flagship surfaces for any count-shaped phrase —
18
+ * anchored or not — so a hand-typed new sentence with a stale number
19
+ * fails CI even though no anchor covers it yet.
20
+ * - `check_command_count_messaging.ts` keeps the command-specific
21
+ * active-vs-shim split checks.
22
+ *
23
+ * Scope: flagship surfaces only (SURFACES below). Dated census / analysis
24
+ * snapshots (SKILL_CENSUS, skills-taxonomy, positioning-evidence, …) carry
25
+ * point-in-time counts by design and are deliberately out of scope — the
26
+ * gate's charter is the surfaces a fresh reader treats as current.
27
+ *
28
+ * Exit codes: 0 clean · 1 drift or internal inconsistency.
29
+ */
30
+
31
+ import * as fs from 'node:fs';
32
+ import * as path from 'node:path';
33
+ import { fileURLToPath, pathToFileURL } from 'node:url';
34
+
35
+ import { canonical_counts } from './check_command_count_messaging.js';
36
+ import { count } from './update_counts.js';
37
+
38
+ const _HERE = fileURLToPath(import.meta.url);
39
+ export const ROOT = path.resolve(path.dirname(_HERE), '..', '..');
40
+
41
+ /** Flagship public prose surfaces (repo-relative). Missing files are skipped
42
+ * with a warning so a doc rename does not hard-break the gate. */
43
+ export const SURFACES: readonly string[] = [
44
+ 'README.md',
45
+ 'AGENTS.md',
46
+ 'llms.txt',
47
+ 'docs/CLAIMS.md',
48
+ 'docs/getting-started.md',
49
+ 'docs/getting-started-by-role.md',
50
+ 'docs/architecture.md',
51
+ 'docs/command-flows.md',
52
+ 'docs/governance-advantage.md',
53
+ 'docs/featured-skills.md',
54
+ 'docs/featured-commands.md',
55
+ 'docs/proof.md',
56
+ 'site/src/content/docs/index.mdx',
57
+ 'site/src/content/docs/claims.md',
58
+ ];
59
+
60
+ /** kind → canonical-count resolver. "governed rules" is the canonical total
61
+ * phrasing for rules; bare "N rules" is NOT matched (too many legitimate
62
+ * subset scopes: kernel rules, router rules, maintainer-only rules …). */
63
+ const KIND_PATTERNS: ReadonlyArray<[string, RegExp]> = [
64
+ ['skills', /(~?)(\d+)\+?\s+skills\b/g],
65
+ ['commands', /(~?)(\d+)\+?\s+commands\b/g],
66
+ ['rules', /(~?)(\d+)\+?\s+governed rules\b/g],
67
+ ['guidelines', /(~?)(\d+)\+?\s+guidelines\b/g],
68
+ ['personas', /(~?)(\d+)\+?\s+personas\b/g],
69
+ ];
70
+
71
+ export interface Finding {
72
+ file: string;
73
+ line: number;
74
+ kind: string;
75
+ found: number;
76
+ expected: number;
77
+ approx: boolean;
78
+ }
79
+
80
+ export function canonical_for(kind: string): number {
81
+ if (kind === 'commands') {
82
+ // Prose command mentions carry the ACTIVE count (total − shims),
83
+ // matching the hero badge owned by check_command_count_messaging.
84
+ const [, , active] = canonical_counts();
85
+ return active;
86
+ }
87
+ return count(kind);
88
+ }
89
+
90
+ /** Scan one text body; returns findings + the per-kind numbers seen. */
91
+ export function scan_text(
92
+ rel: string,
93
+ text: string,
94
+ expected: Readonly<Record<string, number>>,
95
+ ): { findings: Finding[]; seen: Record<string, Set<number>> } {
96
+ const findings: Finding[] = [];
97
+ const seen: Record<string, Set<number>> = {};
98
+ const lines = text.split('\n');
99
+ for (const [kind, pattern] of KIND_PATTERNS) {
100
+ for (let i = 0; i < lines.length; i++) {
101
+ const re = new RegExp(pattern.source, pattern.flags);
102
+ for (const m of lines[i]!.matchAll(re)) {
103
+ const found = Number.parseInt(m[2]!, 10);
104
+ (seen[kind] ??= new Set()).add(found);
105
+ const exp = expected[kind]!;
106
+ const approx = m[1] === '~';
107
+ if (found !== exp || approx) {
108
+ findings.push({ file: rel, line: i + 1, kind, found, expected: exp, approx });
109
+ }
110
+ }
111
+ }
112
+ }
113
+ return { findings, seen };
114
+ }
115
+
116
+ export function main(argv: readonly string[] = process.argv.slice(2)): number {
117
+ const QUIET = argv.includes('--quiet');
118
+ const expected: Record<string, number> = {};
119
+ for (const [kind] of KIND_PATTERNS) {
120
+ expected[kind] = canonical_for(kind);
121
+ }
122
+ process.stdout.write(
123
+ `Canonical: skills=${expected['skills']} commands=${expected['commands']} ` +
124
+ `rules=${expected['rules']} guidelines=${expected['guidelines']} ` +
125
+ `personas=${expected['personas']}\n`,
126
+ );
127
+
128
+ const allFindings: Finding[] = [];
129
+ const global_seen: Record<string, Set<number>> = {};
130
+ for (const rel of SURFACES) {
131
+ const p = path.join(ROOT, rel);
132
+ if (!fs.existsSync(p)) {
133
+ process.stderr.write(` ⚠️ surface missing (skipped): ${rel}\n`);
134
+ continue;
135
+ }
136
+ const { findings, seen } = scan_text(rel, fs.readFileSync(p, 'utf-8'), expected);
137
+ allFindings.push(...findings);
138
+ for (const [kind, nums] of Object.entries(seen)) {
139
+ for (const n of nums) (global_seen[kind] ??= new Set()).add(n);
140
+ }
141
+ }
142
+
143
+ // Internal-inconsistency check — the regression case this gate exists
144
+ // for: multiple DIFFERENT numbers for one kind across the surfaces.
145
+ const inconsistent: string[] = [];
146
+ for (const [kind, nums] of Object.entries(global_seen)) {
147
+ if (nums.size > 1) {
148
+ inconsistent.push(`${kind}: {${[...nums].sort((a, b) => a - b).join(', ')}}`);
149
+ }
150
+ }
151
+
152
+ if (allFindings.length === 0 && inconsistent.length === 0) {
153
+ if (!QUIET) {
154
+ process.stdout.write('✅ All artefact-count prose in sync with source.\n');
155
+ }
156
+ return 0;
157
+ }
158
+
159
+ process.stdout.write(
160
+ `❌ Artefact-count messaging drift — ${allFindings.length} mismatch(es):\n`,
161
+ );
162
+ for (const f of allFindings) {
163
+ const tag = f.approx ? ' (approximation "~" not allowed on flagship surfaces)' : '';
164
+ process.stdout.write(
165
+ ` ${f.file}:${f.line}: ${f.kind} says ${f.found}, expected ${f.expected}${tag}\n`,
166
+ );
167
+ }
168
+ for (const line of inconsistent) {
169
+ process.stdout.write(` internal inconsistency — ${line}\n`);
170
+ }
171
+ process.stdout.write(
172
+ '\nFix: run `./scripts-run src/scripts/update_counts` for anchored positions,\n' +
173
+ 'or correct the prose to the canonical number (never hand-type a new one).\n',
174
+ );
175
+ return 1;
176
+ }
177
+
178
+ function _isCliEntry(): boolean {
179
+ if (process.argv[1] === undefined) {
180
+ return false;
181
+ }
182
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
183
+ if (import.meta.url === argvUrl) {
184
+ return true;
185
+ }
186
+ try {
187
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
188
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
189
+ return here === argv;
190
+ } catch {
191
+ return false;
192
+ }
193
+ }
194
+
195
+ if (_isCliEntry() || process.argv[1] === _HERE) {
196
+ process.exit(main(process.argv.slice(2)));
197
+ }
@@ -3,11 +3,11 @@
3
3
  * Auto-rule description-length CI gate (Phase 1.3 of
4
4
  * road-to-augment-limit-fit).
5
5
  *
6
- * TypeScript twin of `src/scripts/check_augment_description_cap.py` (ADR-200,
7
- * Phase 4 / Wave 4c). The CLI contract is mirrored EXACTLY — no flags, exit
6
+ * Ported from the retired Python `src/scripts/check_augment_description_cap.py` (ADR-200,
7
+ * Phase 4 / Wave 4c). The CLI contract is pinned — no flags, exit
8
8
  * codes (0 pass, 1 over-cap), stdout/stderr split, byte-identical finding
9
9
  * messages, same scan scope (`.agent-src.uncondensed/rules/*.md`) and file
10
- * ordering. No behaviour changes — latent bugs replicated.
10
+ * ordering. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
11
11
  *
12
12
  * For every `type: auto` rule under `.agent-src.uncondensed/rules/`,
13
13
  * fail CI when the frontmatter `description:` exceeds DESC_CAP chars.
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Advisory check for `.augmentignore` (road-to-governance-cleanup F6.3).
4
4
  *
5
- * TypeScript twin of `src/scripts/check_augmentignore.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/check_augmentignore.py` (ADR-200,
6
6
  * Phase 4 / Wave 4c). CLI contract mirrored EXACTLY — `--quiet` flag,
7
7
  * always exits 0, byte-identical advisory messages, same staleness /
8
8
  * min-useful-lines thresholds, stdout-only output.
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * Beta-review-marker checker for `docs/contracts/`.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_beta_review_markers.py` (ADR-200,
6
- * Phase 4 / Wave 4c). The CLI contract is mirrored EXACTLY — `--json`
5
+ * Ported from the retired Python `src/scripts/check_beta_review_markers.py` (ADR-200,
6
+ * Phase 4 / Wave 4c). The CLI contract is pinned — `--json`
7
7
  * flag, exit codes (0 clean, 1 violations, 3 internal error), stdout/stderr
8
8
  * split, byte-identical messages, the same scan order and the same date
9
9
  * arithmetic (`keep-beta-until` ≤ today + 90 days). No behaviour changes —
10
- * latent bugs replicated.
10
+ * historical quirks preserved (consumers pin the exact behaviour).
11
11
  *
12
12
  * Every contract whose frontmatter declares `stability: beta` MUST carry
13
13
  * exactly one of `promote-to: stable` | `keep-beta-until: YYYY-MM-DD` |
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Bite-sized task granularity gate for structural roadmaps (P1.5).
4
4
  *
5
- * TypeScript twin of `src/scripts/check_bite_sized_granularity.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/check_bite_sized_granularity.py` (ADR-200,
6
6
  * Phase 4 / Wave 4c). This module is a pure library (no CLI / main); the
7
7
  * Python module is imported as a test surface. The exported API mirrors the
8
8
  * Python public API EXACTLY:
@@ -2,17 +2,22 @@
2
2
  /**
3
3
  * Cluster-pattern compliance check.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_cluster_patterns.py` (ADR-200,
6
- * Phase 4 / Wave 4c). The CLI contract is mirrored EXACTLY — no flags,
5
+ * Ported from the retired Python `src/scripts/check_cluster_patterns.py` (ADR-200,
6
+ * Phase 4 / Wave 4c). The CLI contract is pinned — no flags,
7
7
  * exit codes (0 clean, 1 pattern violations, 3 internal error),
8
8
  * stdout/stderr split, byte-identical finding messages, the same
9
9
  * locked-clusters table parse, the same domains slug map (via the
10
10
  * `_lib/agent_src` twin), and the same dispatcher-structure checks. No
11
- * behaviour changes — latent bugs replicated.
11
+ * behaviour changes — historical quirks preserved (consumers pin the exact behaviour).
12
12
  *
13
13
  * Compares each cluster dispatcher against the Phase 1 reference patterns
14
14
  * (`fix`, `optimize`, `feature`).
15
15
  *
16
+ * Phase 4 additions (ADR-115): every `routes_to:` entry on a dispatcher must
17
+ * resolve to a real src/domains command slug, and the `## Dispatch` section
18
+ * must document the bare-invocation behaviour (menu / default route /
19
+ * detection fallback) per command-clusters.md § Bare invocation.
20
+ *
16
21
  * Exit codes: 0 = clean, 1 = pattern violations, 3 = internal error.
17
22
  */
18
23
 
@@ -212,6 +217,45 @@ export function check_dispatcher(cluster: string, slug_map: Map<string, string>)
212
217
  if (body.includes('## Sub-commands') && !TABLE_HEADER_RE.test(body)) {
213
218
  rep.errors.push('Sub-commands table header must be `| Sub-command | Routes to | Purpose |`');
214
219
  }
220
+
221
+ // routes_to entries must resolve to real commands (Phase 4 / ADR-115).
222
+ const routesRaw = fm['routes_to'];
223
+ if (routesRaw !== undefined) {
224
+ const m = /^\[(.*)\]$/.exec(routesRaw.trim());
225
+ const entries = m
226
+ ? (m[1] as string)
227
+ .split(',')
228
+ .map((s) => s.trim().replace(/^['"]|['"]$/g, ''))
229
+ .filter((s) => s.length > 0)
230
+ : [];
231
+ for (const entry of entries) {
232
+ // routes_to entries name either a command slug or a skill
233
+ // (e.g. `git-commit` routes to the `git-workflow` skill).
234
+ const skillPath = path.join(ROOT, 'src', 'skills', entry, 'SKILL.md');
235
+ if (!slug_map.has(entry) && !_isFile(skillPath)) {
236
+ rep.errors.push(
237
+ `routes_to entry \`${entry}\` resolves to no src/domains command slug ` +
238
+ 'and no src/skills skill',
239
+ );
240
+ }
241
+ }
242
+ }
243
+
244
+ // Bare-invocation story (Phase 4 / ADR-115): the Dispatch section must say
245
+ // what a bare `/<cluster>` does — a menu, a default route, or detection.
246
+ const dispatchIdx = body.indexOf('## Dispatch');
247
+ if (dispatchIdx !== -1) {
248
+ const rest = body.slice(dispatchIdx + '## Dispatch'.length);
249
+ const nextSection = rest.search(/\n## /);
250
+ const section = nextSection === -1 ? rest : rest.slice(0, nextSection);
251
+ if (!/menu|bare|no argument|unknown or missing|detection|default/i.test(section)) {
252
+ rep.errors.push(
253
+ '`## Dispatch` must document the bare-invocation behaviour ' +
254
+ '(menu, default route, or detection fallback) per ' +
255
+ 'command-clusters.md § Bare invocation',
256
+ );
257
+ }
258
+ }
215
259
  return rep;
216
260
  }
217
261
 
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Command-count messaging gate (road-to-pr-34-followups 1.2).
4
4
  *
5
- * TypeScript twin of `src/scripts/check_command_count_messaging.py`
6
- * (ADR-200, Phase 4 / Wave 4c). Mirrors the Python CLI contract EXACTLY —
5
+ * Ported from the retired Python `src/scripts/check_command_count_messaging.py`
6
+ * (ADR-200, Phase 4 / Wave 4c). The CLI contract is pinned —
7
7
  * `--quiet` flag (positional anywhere in argv), exit codes (0 clean,
8
8
  * 1 drift, 1 no-commands-dir via stderr), stdout/stderr split,
9
9
  * byte-identical messages, same canonical-count derivation
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Condensation quality checker for agent-config packages.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_condensation.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/check_condensation.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 4 / Wave 4a). Mirrors the Python CLI
7
7
  * contract exactly: flags (`--format text|json`, `--summary`, `--root`),
8
8
  * exit codes (0 = clean, 1 = issues found, 3 = internal error),
@@ -19,7 +19,7 @@
19
19
  * Iron Laws / numbered) preserved per `preservation-guard`: heading
20
20
  * verbatim at original level, structural-unit survival.
21
21
  *
22
- * The Python original imports `_rewrite_paths` from `condense.py` to
22
+ * the retired Python implementation imports `_rewrite_paths` from `condense.py` to
23
23
  * normalise the source side through the same path transformations the
24
24
  * condenseor applies. `condense.py` is not yet ported (later phase), so
25
25
  * that path-rewriter chain is replicated faithfully below as a private
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Validate condensed-output paths in `dist/agent-src/rules/*.md`.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_condensed_paths.py` (ADR-200). Mirrors
5
+ * Ported from the retired Python `src/scripts/check_condensed_paths.py` (ADR-200). Mirrors
6
6
  * the Python CLI contract EXACTLY — same `--quiet` flag, same exit codes
7
7
  * (0 clean, 1 violations, 3 internal error), same stdout/stderr split, same
8
8
  * finding text, same forbidden-substring set, same frontmatter parsing, same
@@ -49,14 +49,14 @@ import type * as YamlModule from 'yaml';
49
49
 
50
50
  // ESM-standard `require` shim. The bare `require` global is present when this
51
51
  // module is *imported* (tsx injects it) but absent when the module is the
52
- // directly-executed CLI entry, so resolve it explicitly here to mirror the
53
- // Python original's lazy `import yaml` in both execution modes.
52
+ // directly-executed CLI entry, so resolve it explicitly here to preserve the
53
+ // historical lazy `import yaml` semantics in both execution modes.
54
54
  const _require = createRequire(import.meta.url);
55
55
 
56
56
  const QUIET = process.argv.includes('--quiet');
57
57
 
58
58
  const _HERE = path.dirname(fileURLToPath(import.meta.url));
59
- // _HERE === <repo>/src/scripts ; the Python original derives ROOT from
59
+ // _HERE === <repo>/src/scripts ; the retired Python implementation derives ROOT from
60
60
  // Path(__file__).resolve().parent.parent.parent which is the repo root
61
61
  // (src/scripts/check_condensed_paths.py → up three dirs).
62
62
  const ROOT = path.resolve(_HERE, '..', '..');
@@ -160,8 +160,8 @@ function _split_frontmatter(text: string): [Frontmatter | null, string] {
160
160
  }
161
161
  let fm: unknown;
162
162
  try {
163
- // version '1.1' matches PyYAML's safe_load semantics used by the
164
- // Python original (yaml.safe_load).
163
+ // version '1.1' matches the PyYAML safe_load semantics the frontmatter
164
+ // corpus was authored against (yaml.safe_load).
165
165
  fm = YAML.parse(fmText, { version: '1.1' });
166
166
  } catch {
167
167
  return [null, text];
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Context-file path & orphan checker.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_context_paths.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/check_context_paths.py` (ADR-200,
6
6
  * Phase 4 / Wave 4c). CLI contract mirrored EXACTLY — `--format`
7
7
  * (text/json) and `--root` flags, exit codes (0 clean, 1 violations,
8
8
  * 3 internal error), byte-identical messages, stdout-only output, same
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * CI guard: council config lives in `.ai-council.yml`, never `.agent-settings.yml`.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_council_config_location.py` (ADR-200).
6
- * The CLI contract is mirrored EXACTLY — `--quiet` flag, exit codes (0 clean,
5
+ * Ported from the retired Python `src/scripts/check_council_config_location.py` (ADR-200).
6
+ * The CLI contract is pinned — `--quiet` flag, exit codes (0 clean,
7
7
  * 1 at least one violation), byte-identical finding messages, same scan globs
8
8
  * (sorted), same fence tracking, same negation / `ai_council:` block detection,
9
9
  * and the same `<!-- council-config-allowed -->` escape pragma. No behaviour
10
- * changes — latent bugs replicated.
10
+ * changes — historical quirks preserved (consumers pin the exact behaviour).
11
11
  *
12
12
  * Per ADR-104 (superseding ADR-093) the council reads a dedicated
13
13
  * `.ai-council.yml` resolved ALWAYS from the user-global location
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * CI guard for the `ai-council` skill's output-path convention.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_council_layout.py` (ADR-200,
6
- * Phase 4 / Wave 4c). Mirrors the Python CLI contract EXACTLY — `--quiet`
5
+ * Ported from the retired Python `src/scripts/check_council_layout.py` (ADR-200,
6
+ * Phase 4 / Wave 4c). The CLI contract is pinned — `--quiet`
7
7
  * flag (positional anywhere in argv), exit codes (0 clean, 1 violations),
8
8
  * stdout, byte-identical finding messages, same `agents/` scan,
9
9
  * sorted-iterdir + sorted-rglob ordering, same exemptions. No behaviour
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * CI guard for the council clause of the `no-roadmap-references` rule.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_council_references.py` (ADR-200,
6
- * Phase 4 / Wave 4a). The CLI contract is mirrored EXACTLY — `--quiet`
5
+ * Ported from the retired Python `src/scripts/check_council_references.py` (ADR-200,
6
+ * Phase 4 / Wave 4a). The CLI contract is pinned — `--quiet`
7
7
  * flag, exit codes (0 clean, 1 forbidden refs), stdout/stderr split,
8
8
  * byte-identical finding + footer text, same scan roots / order, and the
9
9
  * same STRUCTURAL_CARVEOUTS logic. No behaviour changes — latent bugs
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * Determinism check — runs the discovery scanner twice and diffs the output.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_discovery_determinism.py` (ADR-200,
6
- * Phase 4 / Wave 4c). The CLI contract is mirrored EXACTLY — no flags,
5
+ * Ported from the retired Python `src/scripts/check_discovery_determinism.py` (ADR-200,
6
+ * Phase 4 / Wave 4c). The CLI contract is pinned — no flags,
7
7
  * exit codes (0 deterministic, 1 drift), stdout/stderr split, byte-identical
8
8
  * messages, and the same `generated_at` normalization + sorted-key JSON
9
9
  * comparison. The scanner itself (`build_discovery_manifest.ts`) is run via the
10
- * repo-local `tsx` binary, mirroring how the Python original invoked the
10
+ * repo-local `tsx` binary, mirroring how the retired Python implementation invoked the
11
11
  * scanner via `sys.executable`. No behaviour changes.
12
12
  *
13
13
  * Exit codes:
@@ -2,13 +2,13 @@
2
2
  /**
3
3
  * Gate path-integrity check (R2 of road-to-test-and-gate-integrity).
4
4
  *
5
- * TypeScript twin of `src/scripts/check_gate_paths.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/check_gate_paths.py` (ADR-200,
6
6
  * Phase 4 / Wave 4c). CLI contract mirrored EXACTLY — no flags, exit
7
7
  * codes (0 all resolve, 1 missing / out-of-tree, 2 a gate failed to
8
8
  * import / lacks GATE_CORE_PATHS), byte-identical messages, stdout/stderr
9
9
  * split, same gate list / source-tree roots.
10
10
  *
11
- * The Python original read each gate's ACTUAL enforced paths via that
11
+ * the retired Python implementation read each gate's ACTUAL enforced paths via that
12
12
  * module's `GATE_CORE_PATHS` attribute (`importlib.import_module`) — it
13
13
  * did NOT re-declare a copy of the path strings. The gate `.py` modules are
14
14
  * gone (ADR-200); the ported `.ts` twins each export `GATE_CORE_PATHS`, so
@@ -72,7 +72,7 @@ function _is_under_source_tree(p: string): boolean {
72
72
  * missing-or-empty GATE_CORE_PATHS — surfaced as exit 2 by `main`.
73
73
  *
74
74
  * The gate `.py` modules are gone (ADR-200); the `.ts` twins each export a
75
- * module-level `GATE_CORE_PATHS`. The Python original read the gate's REAL
75
+ * module-level `GATE_CORE_PATHS`. the retired Python implementation read the gate's REAL
76
76
  * paths via `importlib` + `getattr` and never copied them — this keeps that
77
77
  * property by importing the twin and reading its exported constant. A `tsx`
78
78
  * subprocess (not an in-process dynamic `import()`) is used so this function
@@ -147,7 +147,7 @@ function collect_gate_paths(gate_modules: readonly string[]): Map<string, string
147
147
  if ((typeof proc.status === 'number' ? proc.status : 1) !== 0) {
148
148
  // tsx unavailable or crashed before producing JSON — treat as an
149
149
  // import failure (exit 2 path), matching the "a gate failed to import"
150
- // semantics of the Python original.
150
+ // semantics of the retired Python implementation.
151
151
  const err = new Error(
152
152
  (proc.stderr ?? '').trim() || 'gate introspection failed',
153
153
  ) as Error & { kind: string };
@@ -3,8 +3,8 @@
3
3
  * Iron Law prominence checker — enforces that any rule file declaring an
4
4
  * "Iron Law" places it at the top of the file at H2 level.
5
5
  *
6
- * TypeScript twin of `src/scripts/check_iron_law_prominence.py` (ADR-200,
7
- * Phase 4 / Wave 4c). The CLI contract is mirrored EXACTLY — positional
6
+ * Ported from the retired Python `src/scripts/check_iron_law_prominence.py` (ADR-200,
7
+ * Phase 4 / Wave 4c). The CLI contract is pinned — positional
8
8
  * paths (default `.agent-src.uncondensed/rules`), `--format` / `--quiet`
9
9
  * flags, exit codes (0 clean, 1 violations, 3 internal error),
10
10
  * stdout/stderr split, byte-identical finding messages, and the same
@@ -2,13 +2,13 @@
2
2
  /**
3
3
  * check_kernel_rule_bundle — Phase 4.2 of road-to-always-budget-relief.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_kernel_rule_bundle.py` (ADR-200,
6
- * Phase 4 / Wave 4c). The CLI contract is mirrored EXACTLY — `--base-ref`
5
+ * Ported from the retired Python `src/scripts/check_kernel_rule_bundle.py` (ADR-200,
6
+ * Phase 4 / Wave 4c). The CLI contract is pinned — `--base-ref`
7
7
  * / `--label` / `--event-path` / `--files` flags, exit codes (0 pass,
8
8
  * 1 fail, 3 internal error), stdout/stderr split, byte-identical finding
9
9
  * messages, the same git-diff invocation, base-ref candidate order, and
10
10
  * PR-label parsing from the GitHub event JSON. No behaviour changes —
11
- * latent bugs replicated.
11
+ * historical quirks preserved (consumers pin the exact behaviour).
12
12
  *
13
13
  * Fails when a single PR (or commit range) modifies more than one
14
14
  * kernel rule under `.agent-src.uncondensed/rules/`. Override via the