@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
@@ -2,19 +2,19 @@
2
2
  /**
3
3
  * Validate-on-load linter for the first-class flow layer (`src/flows/*.yaml`).
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_flows.py` (ADR-200, Phase 4 / Wave 4b
5
+ * Ported from the retired Python `src/scripts/lint_flows.py` (ADR-200, Phase 4 / Wave 4b
6
6
  * — PORT). Mirrors the CLI contract EXACTLY — the `--quiet` flag (argparse,
7
7
  * so `-h`/`--help` exit 0 with a usage line), the same two-check-per-file
8
8
  * shape-vs-resolution split, byte-identical violation messages, the same
9
9
  * stdout/stderr split (success on stdout, violations on stderr), exit codes
10
10
  * (0 clean · 1 violations · 3 internal error), scan scope (`src/flows/*.yaml`
11
11
  * minus `surface-map.yaml`), and ordering (sorted glob). snake_case kept.
12
- * No behaviour changes — latent quirks replicated.
12
+ * Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
13
13
  *
14
14
  * road-to-6.1.0 Step 8b (ADR-055). Two checks per flow file:
15
15
  *
16
16
  * 1. Shape — validates against `src/scripts/schemas/flow.schema.json`
17
- * (Draft-07). The Python original uses the `jsonschema` library; this
17
+ * (Draft-07). the retired Python implementation uses the `jsonschema` library; this
18
18
  * twin hand-rolls a Draft-07 validator covering exactly the keyword set
19
19
  * this schema uses (type, required, additionalProperties:false,
20
20
  * properties, $ref, pattern, minLength, minItems, items) and reproduces
@@ -28,7 +28,7 @@
28
28
  * Plus the layer-level invariants: closed-set id == filename stem, and
29
29
  * completeness (every closed-set flow has exactly one file).
30
30
  *
31
- * The Python original imports `jsonschema` and exits 3 with
31
+ * the retired Python implementation imports `jsonschema` and exits 3 with
32
32
  * `lint_flows: jsonschema not installed` when it is absent. The TS twin has
33
33
  * no such dependency, so that exit-3 path never fires — the schema check is
34
34
  * always available, matching the installed-library case.
@@ -466,7 +466,7 @@ function _isFile(p: string): boolean {
466
466
 
467
467
  function _rel(p: string): string {
468
468
  // Path.relative_to(ROOT) raises ValueError when p is outside ROOT; the
469
- // Python original then returns str(path). Mirror with the absolute path.
469
+ // historical behaviour returns str(path) — keep the absolute path then.
470
470
  const r = path.relative(ROOT, p);
471
471
  if (r === '' || r.startsWith('..') || path.isAbsolute(r)) {
472
472
  return p;
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env tsx
2
2
  // Lint generic skills/rules/commands for framework/language leakage.
3
3
  //
4
- // TypeScript twin of src/scripts/lint_framework_leakage.py. Exits 1 on hit
4
+ // TypeScript port of the retired Python src/scripts/lint_framework_leakage.py. Exits 1 on hit
5
5
  // (CI-blocking). Enforces the framework-neutrality rule. Replicates the
6
6
  // carve-out filename exemption, inventory exemption, framework-frontmatter
7
7
  // exemption, the auto cross-stack ±10-line window heuristic, the allowlist
@@ -581,7 +581,7 @@
581
581
  {
582
582
  "file": "src/skills/code-review/SKILL.md",
583
583
  "lines": [
584
- 214
584
+ 222
585
585
  ],
586
586
  "reason": "Cross-stack formatter enumeration (ECS, Prettier, Ruff, gofmt) — multi-ecosystem documentation"
587
587
  },
@@ -618,9 +618,17 @@
618
618
  {
619
619
  "file": "src/skills/verify-completion-evidence/SKILL.md",
620
620
  "lines": [
621
- 183
621
+ 191
622
622
  ],
623
623
  "reason": "Carve-out pointer to the quality-tools skill (the sanctioned one-line handoff shape from framework-neutrality-in-generic-skills)"
624
+ },
625
+ {
626
+ "file": "src/skills/api-endpoint/SKILL.md",
627
+ "lines": [
628
+ 52,
629
+ 69
630
+ ],
631
+ "reason": "Cross-stack validation primitive enumeration and pointer to laravel-api-endpoint carve-out"
624
632
  }
625
633
  ]
626
634
  }
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Fail when an artefact carries a frontmatter field equal to its schema default.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_frontmatter_boilerplate.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/lint_frontmatter_boilerplate.py` (ADR-200,
6
6
  * Phase 4 / Wave 4b). Mirrors the Python CLI contract exactly: `--quiet`,
7
7
  * scan scope + ordering (skills / rules / commands / personas via
8
8
  * `artefact_roots()`), finding messages, stdout/stderr split, exit codes
@@ -11,7 +11,7 @@
11
11
  * The frontmatter loader (`validate_frontmatter.apply_schema_defaults`) injects
12
12
  * the default at read time, so omitting the field is always behaviour-preserving.
13
13
  *
14
- * NOTE (divergence candidate — DC-1): the Python original imports
14
+ * NOTE (divergence candidate — DC-1): the retired Python implementation imports
15
15
  * `_CATEGORIES`, `_iter`, `_plan_drops` from `migrate_frontmatter_defaults.py`,
16
16
  * which has no `.ts` twin yet (out of this batch's scope). To keep TS-only
17
17
  * dispatcher resolution working, those three helpers (and `_same`) are inlined
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * Lint ghostwriter profile sources.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_ghostwriter_source.py` (ADR-200,
6
- * Phase 4 / Wave 4b). The CLI contract is mirrored EXACTLY — `--quiet`
5
+ * Ported from the retired Python `src/scripts/lint_ghostwriter_source.py` (ADR-200,
6
+ * Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
7
7
  * detected by argv membership, exit codes (0 / 1), stdout/stderr split,
8
8
  * byte-identical messages, same scan scope (`*.md` sorted in each tier),
9
9
  * same package- then consumer-side ordering. No behaviour changes —
10
- * latent bugs replicated.
10
+ * historical quirks preserved (consumers pin the exact behaviour).
11
11
  *
12
12
  * Two storage tiers (docs/contracts/ghostwriter-schema.md):
13
13
  * * src/agent-src/ghostwriter/ — package source, fictional fixtures only.
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Permissions-audit entry-gate for the global install tree.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_global_paths.py` (ADR-200, Phase 4 /
5
+ * Ported from the retired Python `src/scripts/lint_global_paths.py` (ADR-200, Phase 4 /
6
6
  * Wave 4b). Mirrors the Python CLI contract exactly: same policy source,
7
7
  * finding messages, finding order, stdout/stderr split, and exit codes.
8
8
  *
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Lint cross-wing handoffs declared in senior-tier skills' `## Related Skills`.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_handoffs.py` (ADR-200, Phase 4 /
5
+ * Ported from the retired Python `src/scripts/lint_handoffs.py` (ADR-200, Phase 4 /
6
6
  * Wave 4b). Mirrors the CLI contract EXACTLY — the `--quiet` flag is a
7
7
  * bare `sys.argv` membership check (NOT argparse, so there is no real
8
8
  * `-h`/`--help`; `main(argv)` treats `argv[0]` as a skills-dir override,
@@ -1,6 +1,6 @@
1
1
  // P1.1 — hidden-Unicode / smuggling-codepoint linter (road-to-security-pillar.md).
2
2
  //
3
- // TypeScript twin of `src/scripts/lint_hidden_unicode.py` (ADR-200 —
3
+ // Ported from the retired Python `src/scripts/lint_hidden_unicode.py` (ADR-200 —
4
4
  // Python→TS migration). Behaviour mirrors the Python module byte-for-byte.
5
5
  //
6
6
  // Detects the invisible-character class used by the "rules-file backdoor"
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Lint the hook concern budget against `src/scripts/hook_manifest.yaml`.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_hook_concern_budget.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/lint_hook_concern_budget.py` (ADR-200,
6
6
  * Phase 4 / Wave 4b). Mirrors the CLI contract EXACTLY — `--manifest` /
7
7
  * `--settings` / `--strict` argparse flags, exit codes (0 clean or warn-only,
8
8
  * 1 schema load failed, 2 hard-fail with violations), byte-identical
@@ -10,7 +10,7 @@
10
10
  * `.agent-settings.yml` `hooks.concern_budget.*` line walker, and the same
11
11
  * defaults. No behaviour changes.
12
12
  *
13
- * The Python original imports `hooks.dispatch_hook._load_yaml` (which is
13
+ * the retired Python implementation imports `hooks.dispatch_hook._load_yaml` (which is
14
14
  * `yaml.safe_load(text) or {}` when PyYAML is present). That hook module is
15
15
  * not yet ported, so this twin inlines the equivalent `yaml`-package load
16
16
  * (version 1.1 → PyYAML safe_load parity). When the dispatch_hook twin
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Lint `src/scripts/hook_manifest.yaml`.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_hook_manifest.py` (ADR-200, Phase 4 /
5
+ * Ported from the retired Python `src/scripts/lint_hook_manifest.py` (ADR-200, Phase 4 /
6
6
  * Wave 4b). Mirrors the Python CLI contract exactly: same manifest default,
7
7
  * finding messages, finding order, stdout/stderr split, and exit codes.
8
8
  *
@@ -97,7 +97,7 @@ function _isDir(p: string): boolean {
97
97
  }
98
98
 
99
99
  /**
100
- * Load the manifest. The Python original reuses dispatch_hook._load_yaml
100
+ * Load the manifest. the retired Python implementation reuses dispatch_hook._load_yaml
101
101
  * which prefers PyYAML (with a narrow fallback parser when PyYAML is absent).
102
102
  * The TS runtime always has the `yaml` package, so this mirrors the
103
103
  * PyYAML-present path (`yaml.safe_load(text) or {}`).
@@ -1,6 +1,6 @@
1
1
  // P1.2 — instruction-smuggling / suppression-phrase linter (road-to-security-pillar.md).
2
2
  //
3
- // TypeScript twin of `src/scripts/lint_instruction_smuggling.py` (ADR-200 —
3
+ // Ported from the retired Python `src/scripts/lint_instruction_smuggling.py` (ADR-200 —
4
4
  // Python→TS migration). Behaviour mirrors the Python module byte-for-byte.
5
5
  //
6
6
  // Detects instructions smuggled into rule/skill/command bodies (and MCP tool
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Lint the `load_context:` / `load_context_eager:` frontmatter schema.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_load_context.py` (ADR-200,
6
- * Phase 4 / Wave 4b). The CLI contract is mirrored EXACTLY — `--quiet`
5
+ * Ported from the retired Python `src/scripts/lint_load_context.py` (ADR-200,
6
+ * Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
7
7
  * flag (positional `--quiet` detection in argv, like the Python
8
8
  * `"--quiet" in sys.argv`), exit codes (0 clean / warnings-only, 1 errors),
9
9
  * byte-identical error + warning + success messages, same scan dirs,
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Lint .claude-plugin/marketplace.json for the event4u/agent-config package.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_marketplace.py` (ADR-200, Phase 4 /
5
+ * Ported from the retired Python `src/scripts/lint_marketplace.py` (ADR-200, Phase 4 /
6
6
  * Wave 4b). Mirrors the Python CLI contract exactly: same cwd-relative scan
7
7
  * roots, finding messages, stdout output, and exit codes.
8
8
  *
@@ -3,8 +3,8 @@
3
3
  * Lint that every command in `hooks/hooks.json` resolves to a real
4
4
  * dispatcher subcommand in `scripts/_dispatch.bash`.
5
5
  *
6
- * TypeScript twin of `src/scripts/lint_marketplace_install_completeness.py`
7
- * (ADR-200, Phase 4 / Wave 4b). The CLI contract is mirrored EXACTLY —
6
+ * Ported from the retired Python `src/scripts/lint_marketplace_install_completeness.py`
7
+ * (ADR-200, Phase 4 / Wave 4b). The CLI contract is pinned —
8
8
  * `--hooks-json` / `--dispatch-bash` flags, exit codes (0 clean, 1 unknown
9
9
  * subcommand, 2 schema/file error), stdout/stderr split, byte-identical
10
10
  * finding messages, same command-extraction regexes and scan order.
@@ -1,6 +1,6 @@
1
1
  // P1.3 — MCP-config security linter (road-to-security-pillar.md). OWASP ASI04.
2
2
  //
3
- // TypeScript twin of `src/scripts/lint_mcp_config_security.py` (ADR-200 —
3
+ // Ported from the retired Python `src/scripts/lint_mcp_config_security.py` (ADR-200 —
4
4
  // Python→TS migration). Behaviour mirrors the Python module byte-for-byte.
5
5
  //
6
6
  // Scans shipped MCP configuration — named config files (`*.mcp.json`,
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Lint `dist/mcp/registry-manifest.json` against its JSON Schema.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_mcp_registry_manifest.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/lint_mcp_registry_manifest.py` (ADR-200,
6
6
  * Phase 4 / Wave 4b). Mirrors the CLI contract EXACTLY — `--quiet` flag
7
7
  * (argparse, so a real `-h`/`--help` prints usage + exits 0), the
8
8
  * `❌ <msg>` failures on stderr, the `✅ mcp registry manifest OK
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * Lint structural reachability of media governance policies.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_media_policy_linkage.py` (ADR-200,
6
- * Phase 4 / Wave 4b). Mirrors the Python CLI contract EXACTLY — `--quiet`
5
+ * Ported from the retired Python `src/scripts/lint_media_policy_linkage.py` (ADR-200,
6
+ * Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
7
7
  * flag read from argv at module load, scan roots + policy ordering (policies
8
8
  * sorted; scan files via rglob), finding messages, output channel (all on
9
9
  * stdout except the final orphan summary on stderr), exit codes. No
10
- * behaviour changes — latent bugs replicated (note: `POLICY_DIR` /
10
+ * behaviour changes — historical quirks preserved (consumers pin the exact behaviour). (note: `POLICY_DIR` /
11
11
  * `SCAN_ROOTS` point at `agents/policies/media`, matching the .py).
12
12
  *
13
13
  * Every policy file under `agents/policies/media/` (except README) must be
@@ -2,15 +2,15 @@
2
2
  /**
3
3
  * WARN-ONLY mission manifest and catalog linter.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_missions.py` (ADR-200, Python→TypeScript
6
- * migration). The CLI contract is mirrored EXACTLY — argparse flags
5
+ * Ported from the retired Python `src/scripts/lint_missions.py` (ADR-200, Python→TypeScript
6
+ * migration). The CLI contract is pinned — argparse flags
7
7
  * (`--strict` / `--quiet` / `--check-precondition MISSION REPO`, `-h`/`--help`
8
8
  * exit 0, unknown arg → exit 2), the scan order (`sorted(MISSIONS_ROOT.iterdir())`
9
9
  * minus dot-dirs), byte-identical finding lines, the missing-schema short-circuit
10
10
  * (exit 2 strict / 0 otherwise), the stdout/stderr split, and exit codes
11
11
  * (0 warn-only / 1 strict+ERROR). snake_case kept.
12
12
  *
13
- * The Python original uses the `jsonschema` Draft7Validator; this twin
13
+ * the retired Python implementation uses the `jsonschema` Draft7Validator; this twin
14
14
  * hand-rolls a Draft-07 validator covering exactly the keyword set the two
15
15
  * mission schemas use (type, required, additionalProperties [false | schema],
16
16
  * properties, $ref [#/definitions], pattern, enum, minLength, maxLength,
@@ -2,11 +2,11 @@
2
2
  /**
3
3
  * Fail when a skill or command lacks a `model_tier` value.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_model_tier_coverage.py` (ADR-200,
6
- * Phase 4 / Wave 4b). Mirrors the Python CLI contract EXACTLY — `--quiet`
5
+ * Ported from the retired Python `src/scripts/lint_model_tier_coverage.py` (ADR-200,
6
+ * Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
7
7
  * flag, target enumeration + ordering (skills via artefact_roots, then
8
8
  * commands via iter_commands), finding messages, stdout/stderr split,
9
- * exit codes. No behaviour changes — latent bugs replicated.
9
+ * exit codes. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
10
10
  *
11
11
  * Phase 5 coverage gate of `road-to-model-capability-tiers.md` (ADR-035):
12
12
  * every skill and command MUST declare an explicit `model_tier`
@@ -3,8 +3,8 @@
3
3
  * Namespace linter. Enforces `<stem>-<intent>` kebab-case + reserved
4
4
  * names list across skills / rules / commands / personas.
5
5
  *
6
- * TypeScript twin of `src/scripts/lint_namespace.py` (ADR-200, Phase 4 /
7
- * Wave 4b). The CLI contract is mirrored EXACTLY — `--name` / `--quiet`
6
+ * Ported from the retired Python `src/scripts/lint_namespace.py` (ADR-200, Phase 4 /
7
+ * Wave 4b). The CLI contract is pinned — `--name` / `--quiet`
8
8
  * flags, exit codes (0 clean, 1 issues / single-name fail), stdout/stderr
9
9
  * split (findings + BASELINE-on-failure to stderr; success BASELINE to
10
10
  * stdout), byte-identical finding messages, same `sorted(root.glob(glob))`
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Single-namespace collision lint (road-to-6.0.0-D Phase 0 Step 4).
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_namespace_collisions.py` (ADR-200,
6
- * Phase 4 / Wave 4b). The CLI contract is mirrored EXACTLY — exit codes
5
+ * Ported from the retired Python `src/scripts/lint_namespace_collisions.py` (ADR-200,
6
+ * Phase 4 / Wave 4b). The CLI contract is pinned — exit codes
7
7
  * (0 no collisions, 1 collision, 3 internal error), stdout/stderr split,
8
8
  * byte-identical finding messages, same `iter_all_sources()` scan order,
9
9
  * same normalization, same frontmatter `name:` extraction.
@@ -2,13 +2,13 @@
2
2
  /**
3
3
  * Forward gate for NEW skills (6.0.0-C Phase 4 Step 8b).
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_new_skill_gate.py` (ADR-200, Phase 4 /
5
+ * Ported from the retired Python `src/scripts/lint_new_skill_gate.py` (ADR-200, Phase 4 /
6
6
  * Wave 4b — PORT). Mirrors the CLI contract EXACTLY — the `--baseline` (default
7
7
  * `main`) and `--quiet` argparse flags, the git diff/status forward-only skill
8
8
  * detection, byte-identical violation messages, stdout-only output (no
9
9
  * stderr split except the git-failure exit-3 path), and exit codes
10
10
  * (0 clean · 1 violations · 3 internal/git error). snake_case kept. No
11
- * behaviour changes — latent quirks replicated.
11
+ * behaviour changes — historical quirks preserved (consumers pin the exact behaviour).
12
12
  *
13
13
  * A newly added skill must clear two gates before it joins the surface:
14
14
  *
@@ -19,7 +19,7 @@
19
19
  *
20
20
  * FORWARD-ONLY: only SKILL.md files added since `--baseline` are gated.
21
21
  *
22
- * The Python original imports `_parse`, `_cosine`, `collect`, `Skill` from
22
+ * the retired Python implementation imports `_parse`, `_cosine`, `collect`, `Skill` from
23
23
  * `audit_skill_overlap`. That module has no TS twin in this batch, so the four
24
24
  * needed symbols are ported privately below (faithful 1:1 of the originals);
25
25
  * when `audit_skill_overlap` is ported in its own phase these can be
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Atomic-command linter for the command-collapse policy.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_no_new_atomic_commands.py`
6
- * (ADR-200, Phase 4 / Wave 4b). The CLI contract is mirrored EXACTLY —
5
+ * Ported from the retired Python `src/scripts/lint_no_new_atomic_commands.py`
6
+ * (ADR-200, Phase 4 / Wave 4b). The CLI contract is pinned —
7
7
  * `--baseline` / `--all` flags, exit codes (0 clean, 1 violations,
8
8
  * 3 internal error), stdout/stderr split, byte-identical messages, the
9
9
  * same git invocations (`git diff --name-only --diff-filter=A
@@ -24,7 +24,10 @@ import { fileURLToPath, pathToFileURL } from 'node:url';
24
24
  const _HERE = fileURLToPath(import.meta.url);
25
25
  // src/scripts/lint_no_new_atomic_commands.ts → parent.parent.parent is repo root.
26
26
  const ROOT = path.resolve(path.dirname(_HERE), '..', '..');
27
- const COMMANDS_DIR = '.agent-src.uncondensed/commands';
27
+ // Repointed 2026-07-08 (ADR-115): the legacy uncondensed commands dir no
28
+ // longer exists — command sources live at src/domains/**/command.md.
29
+ // Only files named `command.md` are commands; pack READMEs etc. are skipped.
30
+ const COMMANDS_DIR = 'src/domains';
28
31
  const CLUSTER_CONTRACT = 'docs/contracts/command-clusters.md';
29
32
 
30
33
  interface Violation {
@@ -135,7 +138,7 @@ function added_command_files(baseline: string): string[] {
135
138
  }
136
139
  const files: string[] = [];
137
140
  for (const p of (diff.stdout ?? '').split('\n')) {
138
- if (p.endsWith('.md') && p !== '' && path.basename(p) !== 'AGENTS.md') {
141
+ if (p !== '' && path.basename(p) === 'command.md') {
139
142
  files.push(p);
140
143
  }
141
144
  }
@@ -157,7 +160,7 @@ function added_command_files(baseline: string): string[] {
157
160
  const rawPath = line.slice(3).trim();
158
161
  const parts = rawPath.split(' -> ');
159
162
  const p = parts[parts.length - 1]!;
160
- if (p.endsWith('.md') && path.basename(p) !== 'AGENTS.md') {
163
+ if (path.basename(p) === 'command.md') {
161
164
  if (!files.includes(p)) {
162
165
  files.push(p);
163
166
  }
@@ -181,7 +184,7 @@ function _rglobMdSorted(dir: string): string[] {
181
184
  const full = path.join(current, entry.name);
182
185
  if (entry.isDirectory()) {
183
186
  walk(full);
184
- } else if (entry.isFile() && entry.name.endsWith('.md')) {
187
+ } else if (entry.isFile() && entry.name === 'command.md') {
185
188
  out.push(full);
186
189
  }
187
190
  }
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Python-twin rationale guard (road-to-truth-and-reference-hygiene Phase 2).
4
+ *
5
+ * The py2ts migration (ADR-200) is closed and its Python originals are
6
+ * deleted; the parity scaffolding comments ("TypeScript twin of …", "latent
7
+ * Python quirks replicated", "byte-identical to the Python original") were
8
+ * swept on 2026-07-08 and re-attributed to their live consumers (tests,
9
+ * checksum gates, pinned CLI contracts). This lint keeps the residue from
10
+ * creeping back: a NEW comment that rationalises behaviour by fidelity to
11
+ * the deleted Python twin fails CI.
12
+ *
13
+ * Scope: comment lines in `src/scripts/**\/*.ts`. Historical provenance
14
+ * mentions ("ported from the retired Python `x.py` (ADR-200)") are fine —
15
+ * they state history, not a live contract; only the twin-rationale shapes
16
+ * below are banned.
17
+ *
18
+ * Exit codes: 0 clean · 1 findings.
19
+ */
20
+
21
+ import * as fs from 'node:fs';
22
+ import * as path from 'node:path';
23
+ import { fileURLToPath, pathToFileURL } from 'node:url';
24
+
25
+ const _HERE = fileURLToPath(import.meta.url);
26
+ export const ROOT = path.resolve(path.dirname(_HERE), '..', '..');
27
+ const SCOPE = path.join(ROOT, 'src', 'scripts');
28
+
29
+ /** Banned rationale shapes (case-insensitive). */
30
+ export const BANNED: ReadonlyArray<[string, RegExp]> = [
31
+ ['twin-of', /\btwin of\b/i],
32
+ ['latent-quirks', /latent (?:python )?(?:quirks|bugs) replicated/i],
33
+ ['byte-identical-python', /byte-identical to the python/i],
34
+ ['python-original', /\bthe python original\b/i],
35
+ ];
36
+
37
+ const COMMENT = /^\s*(\/\/|\*|\/\*)/;
38
+
39
+ function* walk(dir: string): Generator<string> {
40
+ for (const e of fs.readdirSync(dir, { withFileTypes: true }).sort((a, b) =>
41
+ a.name < b.name ? -1 : 1,
42
+ )) {
43
+ const full = path.join(dir, e.name);
44
+ if (e.isDirectory()) yield* walk(full);
45
+ else if (e.name.endsWith('.ts')) yield full;
46
+ }
47
+ }
48
+
49
+ export function scan_file(rel: string, text: string): string[] {
50
+ const findings: string[] = [];
51
+ const lines = text.split('\n');
52
+ for (let i = 0; i < lines.length; i++) {
53
+ const line = lines[i]!;
54
+ if (!COMMENT.test(line)) continue;
55
+ for (const [name, pat] of BANNED) {
56
+ if (pat.test(line)) {
57
+ findings.push(`${rel}:${i + 1}: ${name} — ${line.trim().slice(0, 100)}`);
58
+ }
59
+ }
60
+ }
61
+ return findings;
62
+ }
63
+
64
+ export function main(argv: readonly string[] = process.argv.slice(2)): number {
65
+ const QUIET = argv.includes('--quiet');
66
+ const findings: string[] = [];
67
+ for (const f of walk(SCOPE)) {
68
+ if (path.resolve(f) === path.resolve(_HERE)) continue; // this guard documents the shapes
69
+ const rel = path.relative(ROOT, f).split(path.sep).join('/');
70
+ findings.push(...scan_file(rel, fs.readFileSync(f, 'utf-8')));
71
+ }
72
+ if (findings.length === 0) {
73
+ if (!QUIET) process.stdout.write('✅ No Python-twin rationale in src/scripts comments.\n');
74
+ return 0;
75
+ }
76
+ process.stdout.write(`❌ Python-twin rationale reintroduced — ${findings.length} finding(s):\n`);
77
+ for (const f of findings) process.stdout.write(` ${f}\n`);
78
+ process.stdout.write(
79
+ '\nFix: state the LIVE contract instead (which test/gate/consumer pins the\n' +
80
+ 'behaviour) — never fidelity to the deleted Python original. See\n' +
81
+ 'road-to-truth-and-reference-hygiene Phase 2.\n',
82
+ );
83
+ return 1;
84
+ }
85
+
86
+ function _isCliEntry(): boolean {
87
+ if (process.argv[1] === undefined) return false;
88
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
89
+ if (import.meta.url === argvUrl) return true;
90
+ try {
91
+ return (
92
+ fs.realpathSync(fileURLToPath(import.meta.url)) ===
93
+ fs.realpathSync(path.resolve(process.argv[1]))
94
+ );
95
+ } catch {
96
+ return false;
97
+ }
98
+ }
99
+
100
+ if (_isCliEntry() || process.argv[1] === _HERE) {
101
+ process.exit(main(process.argv.slice(2)));
102
+ }
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * One-off-script age linter.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_one_off_age.py` (ADR-200, Phase 4 /
5
+ * Ported from the retired Python `src/scripts/lint_one_off_age.py` (ADR-200, Phase 4 /
6
6
  * Wave 4b). Mirrors the CLI contract EXACTLY — `--format {text,json}` /
7
7
  * `--root` argparse flags, exit codes (0 clean incl. warnings, 1 hard
8
8
  * fail, 3 internal error), stdout/stderr split, byte-identical finding
9
9
  * messages, the same scan tree (`<root>/scripts/_one_off`) and ordering
10
- * (sorted iterdir). No behaviour changes — latent quirks replicated
10
+ * (sorted iterdir). Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
11
11
  * (e.g. `scan` walks `scripts/_one_off`, NOT the module-level
12
12
  * `ONE_OFF_DIR = src/scripts/_one_off`, which is unused).
13
13
  *
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Lint `.agent-config/orchestrations/*.yaml` pipeline files.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_orchestration_dsl.py` (ADR-200,
6
- * Phase 4 / Wave 4b). The CLI contract is mirrored EXACTLY — `--dir` /
5
+ * Ported from the retired Python `src/scripts/lint_orchestration_dsl.py` (ADR-200,
6
+ * Phase 4 / Wave 4b). The CLI contract is pinned — `--dir` /
7
7
  * `--file` flags, exit codes (0 clean, 1 hard failure, 2 file/schema-load
8
8
  * error), stdout/stderr split (all findings on stderr), byte-identical
9
9
  * finding messages, same scan order, same `resolve_logical` ref resolution,
@@ -51,7 +51,7 @@ const SUBAGENT_MODES = new Set([
51
51
 
52
52
  /**
53
53
  * Reuse the dispatcher's loader so the linter sees what the runtime sees.
54
- * The Python original calls `hooks.dispatch_hook._load_yaml`, which prefers
54
+ * the retired Python implementation calls `hooks.dispatch_hook._load_yaml`, which prefers
55
55
  * PyYAML (present in this environment) and falls back to a flat mini-parser
56
56
  * only when PyYAML is unavailable. Orchestration files use full nested YAML,
57
57
  * so the PyYAML path is the live one — `yaml` (npm) reproduces it.
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env tsx
2
2
  // Auto-detection contract linter for command orchestrators (6.1.0 Step 1).
3
3
  //
4
- // TypeScript twin of src/scripts/lint_orchestrator_auto_detect.py. Every
4
+ // TypeScript port of the retired Python src/scripts/lint_orchestrator_auto_detect.py. Every
5
5
  // command source under src/domains/**/command.md that opts into auto-detection
6
6
  // (front-matter `auto_detect: true`) MUST honor the non-interactive contract:
7
7
  // a body link to the contract doc + the `## Non-interactive & auto-detection`
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * Enforce cross-pack reference boundaries.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_pack_boundaries.py` (ADR-200, Phase 4 /
5
+ * Ported from the retired Python `src/scripts/lint_pack_boundaries.py` (ADR-200, Phase 4 /
6
6
  * Wave 4b). Mirrors the Python CLI contract exactly: `--format text|json`,
7
7
  * `--quiet`, same scan scope (packages/*\/.agent-src.uncondensed/), file
8
8
  * ordering, link regex, resolution semantics, finding messages, stdout/stderr
9
9
  * split, and exit codes (0 clean / skipped, 1 violations). No behaviour
10
- * changes — latent bugs replicated.
10
+ * changes — historical quirks preserved (consumers pin the exact behaviour).
11
11
  *
12
12
  * Walks every markdown link in every artefact under
13
13
  * `packages/*\/.agent-src.uncondensed/` and verifies the link target's pack is
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Pack dependency + pack-graph lints.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_pack_dependencies.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/lint_pack_dependencies.py` (ADR-200,
6
6
  * Phase 4 / Wave 4b). Mirrors the Python CLI contract exactly: same checks,
7
7
  * finding messages, stdout/stderr split, and exit codes.
8
8
  *
@@ -15,7 +15,7 @@
15
15
  *
16
16
  * Exit codes: 0 = clean · 1 = drift and/or a cycle · 3 = internal error.
17
17
  *
18
- * The Python original imports generate_pack_manifests (`gpm`) for the manifest
18
+ * the retired Python implementation imports generate_pack_manifests (`gpm`) for the manifest
19
19
  * derivation. `gpm` has no TS twin yet (out of this batch's scope), so the
20
20
  * needed gpm internals are ported as private helpers below, mirroring the
21
21
  * Python source 1:1. They are prefixed `_gpm_` to mark their provenance.
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Pack first-win linter.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_pack_first_win.py` (ADR-200,
6
- * Phase 4 / Wave 4b). The CLI contract is mirrored EXACTLY — `main()`
5
+ * Ported from the retired Python `src/scripts/lint_pack_first_win.py` (ADR-200,
6
+ * Phase 4 / Wave 4b). The CLI contract is pinned — `main()`
7
7
  * IGNORES argv entirely (any flag, including the `--quiet` the Taskfile
8
8
  * passes, is silently accepted), exit codes (0 clean, 1 violations),
9
9
  * stdout/stderr split, byte-identical finding messages.
@@ -2,11 +2,11 @@
2
2
  /**
3
3
  * Lint persona governance — per-domain cap (hard) + citation floor (warn).
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_persona_governance.py` (ADR-200,
6
- * Phase 4 / Wave 4b). Mirrors the Python CLI contract EXACTLY — `--quiet`
5
+ * Ported from the retired Python `src/scripts/lint_persona_governance.py` (ADR-200,
6
+ * Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
7
7
  * flag read from argv at module load, persona enumeration + sorted ordering,
8
8
  * finding messages, output channel (emit → stdout; overflow summary on
9
- * stderr), exit codes. No behaviour changes — latent bugs replicated.
9
+ * stderr), exit codes. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
10
10
  *
11
11
  * Enforces the mechanical checks in
12
12
  * `.agent-src.uncondensed/rules/persona-governance.md`:
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Positioning consistency lint for event4u/agent-config.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_positioning.py` (ADR-200, Phase 4 /
5
+ * Ported from the retired Python `src/scripts/lint_positioning.py` (ADR-200, Phase 4 /
6
6
  * Wave 4b). Mirrors the CLI contract EXACTLY — the `--quiet` argparse flag,
7
7
  * exit codes (0 clean, 1 drift, 2 missing PyYAML — inert here since `yaml`
8
8
  * is always present), byte-identical stdout (success line) and stderr