@event4u/agent-config 8.4.1 → 8.6.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 (581) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +92 -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} +38 -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/auto-dispatch-classification.md +30 -0
  38. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +15 -1
  39. package/dist/agent-src/contexts/execution/subagent-steering.md +54 -1
  40. package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
  41. package/dist/agent-src/contexts/model-recommendations.md +19 -0
  42. package/dist/agent-src/contexts/skills-and-commands.md +2 -2
  43. package/dist/agent-src/contexts/subagent-configuration.md +8 -0
  44. package/dist/agent-src/rules/external-reference-deep-dive.md +1 -1
  45. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
  46. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
  47. package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +1 -1
  48. package/dist/agent-src/skills/judge-code-quality/SKILL.md +1 -1
  49. package/dist/agent-src/skills/judge-security-auditor/SKILL.md +1 -1
  50. package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
  51. package/dist/agent-src/skills/judge-test-coverage/SKILL.md +1 -1
  52. package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
  53. package/dist/agent-src/skills/mobile-e2e-strategy/SKILL.md +5 -5
  54. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +2 -2
  55. package/dist/agent-src/skills/quality-tools/SKILL.md +1 -1
  56. package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
  57. package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
  58. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  59. package/dist/agent-src/templates/agent-settings.md +1 -1
  60. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +2 -2
  61. package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
  62. package/dist/cli/commands/config.js +44 -0
  63. package/dist/cli/commands/config.js.map +1 -0
  64. package/dist/cli/commands/uiServe.js +1 -0
  65. package/dist/cli/commands/uiServe.js.map +1 -1
  66. package/dist/cli/help.js +38 -0
  67. package/dist/cli/help.js.map +1 -0
  68. package/dist/cli/initRouting.js +16 -1
  69. package/dist/cli/initRouting.js.map +1 -1
  70. package/dist/cli/main.js +43 -37
  71. package/dist/cli/main.js.map +1 -1
  72. package/dist/cli/registry.js +45 -44
  73. package/dist/cli/registry.js.map +1 -1
  74. package/dist/discovery/deprecation-report.md +1 -1
  75. package/dist/discovery/discovery-manifest.json +419 -210
  76. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  77. package/dist/discovery/discovery-manifest.summary.md +4 -4
  78. package/dist/discovery/orphan-report.md +1 -1
  79. package/dist/discovery/packs.json +31 -25
  80. package/dist/discovery/trust-report.md +2 -2
  81. package/dist/discovery/workspaces.json +30 -24
  82. package/dist/install/install.mjs +6064 -159
  83. package/dist/install/selectedTools.js +39 -10
  84. package/dist/install/selectedTools.js.map +1 -1
  85. package/dist/mcp/registry-manifest.json +3 -3
  86. package/dist/server/app.js +15 -3
  87. package/dist/server/app.js.map +1 -1
  88. package/dist/server/routes/ping.js +16 -0
  89. package/dist/server/routes/ping.js.map +1 -1
  90. package/dist/server/routes/settings.js +42 -6
  91. package/dist/server/routes/settings.js.map +1 -1
  92. package/dist/server/routes/settingsChanges.js +55 -0
  93. package/dist/server/routes/settingsChanges.js.map +1 -0
  94. package/dist/server/routes/userMd.js +7 -2
  95. package/dist/server/routes/userMd.js.map +1 -1
  96. package/dist/server/routes/wizard.js +76 -14
  97. package/dist/server/routes/wizard.js.map +1 -1
  98. package/dist/server/writeRoot.js +17 -0
  99. package/dist/server/writeRoot.js.map +1 -1
  100. package/dist/shared/settingsSurface.js +120 -0
  101. package/dist/shared/settingsSurface.js.map +1 -0
  102. package/dist/ui/assets/index-BPFMZWUs.css +1 -0
  103. package/dist/ui/assets/index-BiEZiZ31.js +40 -0
  104. package/dist/ui/assets/index-BiEZiZ31.js.map +1 -0
  105. package/dist/ui/index.html +15 -2
  106. package/docs/CLAIMS.md +27 -15
  107. package/docs/architecture.md +1 -1
  108. package/docs/catalog.md +37 -31
  109. package/docs/command-flows.md +22 -16
  110. package/docs/contracts/command-clusters.md +39 -9
  111. package/docs/contracts/file-ownership-matrix.json +21 -0
  112. package/docs/contracts/frontmatter-contract.md +1 -1
  113. package/docs/contracts/gui-wizard.md +16 -4
  114. package/docs/contracts/iron-law-overrides.txt +1 -0
  115. package/docs/contracts/rule-classification.md +2 -2
  116. package/docs/contracts/settings-api.md +58 -2
  117. package/docs/contracts/surface-matrix.md +5 -0
  118. package/docs/cookbook.md +7 -7
  119. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +74 -0
  120. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +91 -0
  121. package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +125 -0
  122. package/docs/decisions/INDEX.md +3 -0
  123. package/docs/featured-commands.md +1 -1
  124. package/docs/featured-skills.md +4 -4
  125. package/docs/flows.md +2 -2
  126. package/docs/getting-started-by-role.md +1 -1
  127. package/docs/getting-started-laravel.md +1 -1
  128. package/docs/getting-started.md +6 -3
  129. package/docs/governance-advantage.md +1 -1
  130. package/docs/guidelines/agent-infra/5w2h-analysis.md +1 -1
  131. package/docs/guidelines/agent-infra/ios-simulator-guide.md +1 -1
  132. package/docs/proof.md +12 -2
  133. package/package.json +3 -1
  134. package/src/agent-src/README.md +1 -1
  135. package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
  136. package/src/config/agent-settings.template.yml +1 -1
  137. package/src/install/selectedTools.ts +38 -10
  138. package/src/scripts/_cli/cmd_converge.ts +38 -0
  139. package/src/scripts/_cli/cmd_doctor.ts +113 -2
  140. package/src/scripts/_cli/cmd_explain.ts +2 -2
  141. package/src/scripts/_cli/cmd_export.ts +3 -3
  142. package/src/scripts/_cli/cmd_fleet.ts +13 -1
  143. package/src/scripts/_cli/cmd_migrate.ts +3 -3
  144. package/src/scripts/_cli/cmd_prune.ts +2 -2
  145. package/src/scripts/_cli/cmd_refresh.ts +4 -4
  146. package/src/scripts/_cli/cmd_settings_check.ts +2 -2
  147. package/src/scripts/_cli/cmd_settings_migrate.ts +2 -2
  148. package/src/scripts/_cli/cmd_sync.ts +2 -2
  149. package/src/scripts/_cli/cmd_uninstall.ts +2 -2
  150. package/src/scripts/_cli/cmd_update.ts +8 -8
  151. package/src/scripts/_cli/cmd_upgrade.ts +4 -3
  152. package/src/scripts/_cli/cmd_validate.ts +3 -3
  153. package/src/scripts/_cli/cmd_versions.ts +2 -2
  154. package/src/scripts/_cli/explain_last/assumptions.ts +2 -2
  155. package/src/scripts/_cli/explain_last/council.ts +2 -2
  156. package/src/scripts/_cli/explain_last/halt.ts +2 -2
  157. package/src/scripts/_cli/explain_last/index.ts +2 -2
  158. package/src/scripts/_cli/explain_last/inputs.ts +4 -4
  159. package/src/scripts/_cli/explain_last/memory.ts +2 -2
  160. package/src/scripts/_cli/explain_last/provider.ts +2 -2
  161. package/src/scripts/_cli/explain_last/render.ts +2 -2
  162. package/src/scripts/_cli/explain_last/route.ts +2 -2
  163. package/src/scripts/_cli/explain_last/scrubber.ts +2 -2
  164. package/src/scripts/_cli/explain_last/sections/assumptions.ts +2 -2
  165. package/src/scripts/_cli/explain_last/sections/council.ts +2 -2
  166. package/src/scripts/_cli/explain_last/sections/halt.ts +2 -2
  167. package/src/scripts/_cli/explain_last/sections/header.ts +2 -2
  168. package/src/scripts/_cli/explain_last/sections/index.ts +1 -1
  169. package/src/scripts/_cli/explain_last/sections/inputs.ts +2 -2
  170. package/src/scripts/_cli/explain_last/sections/memory.ts +2 -2
  171. package/src/scripts/_cli/explain_last/sections/pack.ts +2 -2
  172. package/src/scripts/_cli/explain_last/sections/provider.ts +2 -2
  173. package/src/scripts/_cli/explain_last/sections/route.ts +2 -2
  174. package/src/scripts/_cli/explain_last/state_loader.ts +2 -2
  175. package/src/scripts/_dispatch.bash +20 -1
  176. package/src/scripts/_lib/agent_settings.ts +1 -1
  177. package/src/scripts/_lib/agent_src.ts +7 -7
  178. package/src/scripts/_lib/agents_overlay.ts +1 -1
  179. package/src/scripts/_lib/auto_dispatch.ts +63 -0
  180. package/src/scripts/_lib/bench_ab_cache.ts +1 -1
  181. package/src/scripts/_lib/bench_ab_scoring.ts +1 -1
  182. package/src/scripts/_lib/bench_ab_scoring_v2.ts +3 -3
  183. package/src/scripts/_lib/bench_cost.ts +1 -1
  184. package/src/scripts/_lib/bench_quality.ts +3 -3
  185. package/src/scripts/_lib/bench_report.ts +4 -4
  186. package/src/scripts/_lib/bench_telegraph.ts +1 -1
  187. package/src/scripts/_lib/bench_telegraph_report.ts +4 -4
  188. package/src/scripts/_lib/changelog_eras.ts +1 -1
  189. package/src/scripts/_lib/claude_desktop_bundler.ts +1 -1
  190. package/src/scripts/_lib/cli_wrapper.ts +1 -1
  191. package/src/scripts/_lib/fs_atomic.ts +1 -1
  192. package/src/scripts/_lib/global_deploy_inventory.ts +1 -1
  193. package/src/scripts/_lib/install_layout.ts +1 -1
  194. package/src/scripts/_lib/install_regenerator.ts +1 -1
  195. package/src/scripts/_lib/installed_lock.ts +1 -1
  196. package/src/scripts/_lib/installed_tools.ts +1 -1
  197. package/src/scripts/_lib/json_pointers.ts +1 -1
  198. package/src/scripts/_lib/knowledge_global.ts +1 -1
  199. package/src/scripts/_lib/knowledge_global_promote.ts +2 -2
  200. package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
  201. package/src/scripts/_lib/link_crypto.ts +4 -4
  202. package/src/scripts/_lib/linked_projects.ts +4 -4
  203. package/src/scripts/_lib/model_tier.ts +1 -1
  204. package/src/scripts/_lib/module_detection.ts +2 -2
  205. package/src/scripts/_lib/pin_resolver.ts +1 -1
  206. package/src/scripts/_lib/script_output.ts +1 -1
  207. package/src/scripts/_lib/security_lint.ts +1 -1
  208. package/src/scripts/_lib/subagent_routing.ts +24 -0
  209. package/src/scripts/_lib/subagent_steering.ts +213 -3
  210. package/src/scripts/_lib/surface_tiers.ts +1 -1
  211. package/src/scripts/_lib/text_similarity.ts +1 -1
  212. package/src/scripts/_lib/update_check.ts +2 -2
  213. package/src/scripts/_lib/user_global_paths.ts +1 -1
  214. package/src/scripts/_lib/value_ladder.ts +1 -1
  215. package/src/scripts/_lib/value_report.ts +1 -1
  216. package/src/scripts/_lib/zip_min.ts +2 -2
  217. package/src/scripts/adoption_report.ts +3 -3
  218. package/src/scripts/adoption_snapshot.ts +3 -3
  219. package/src/scripts/adoption_status.ts +2 -2
  220. package/src/scripts/adr/regenerate_index.ts +3 -3
  221. package/src/scripts/ai_council/_default_prices.ts +2 -3
  222. package/src/scripts/ai_council/advisors.ts +1 -1
  223. package/src/scripts/ai_council/airgap.ts +1 -1
  224. package/src/scripts/ai_council/budget_guard.ts +1 -1
  225. package/src/scripts/ai_council/bundler.ts +1 -1
  226. package/src/scripts/ai_council/cli_hints.ts +1 -1
  227. package/src/scripts/ai_council/clients.ts +5 -5
  228. package/src/scripts/ai_council/compile_corpus.ts +1 -1
  229. package/src/scripts/ai_council/confidence_gate.ts +1 -1
  230. package/src/scripts/ai_council/config.ts +1 -1
  231. package/src/scripts/ai_council/consensus.ts +1 -1
  232. package/src/scripts/ai_council/events_log.ts +1 -1
  233. package/src/scripts/ai_council/learn_low_impact_preview.ts +1 -1
  234. package/src/scripts/ai_council/low_impact_corpus.ts +1 -1
  235. package/src/scripts/ai_council/low_impact_intake.ts +1 -1
  236. package/src/scripts/ai_council/modes.ts +1 -1
  237. package/src/scripts/ai_council/orchestrator.ts +3 -3
  238. package/src/scripts/ai_council/pricing.ts +2 -2
  239. package/src/scripts/ai_council/probation_gate.ts +2 -2
  240. package/src/scripts/ai_council/project_context.ts +1 -1
  241. package/src/scripts/ai_council/prompts.ts +1 -1
  242. package/src/scripts/ai_council/redact_low_impact_entry.ts +2 -2
  243. package/src/scripts/ai_council/session.ts +1 -1
  244. package/src/scripts/ai_council/shadow_dispatch.ts +1 -1
  245. package/src/scripts/ai_council/solo_dispatch.ts +1 -1
  246. package/src/scripts/analysis_freshness.ts +2 -2
  247. package/src/scripts/annotate_discovery.ts +2 -2
  248. package/src/scripts/apply_modules_config.ts +2 -2
  249. package/src/scripts/audit_adr_coverage.ts +3 -3
  250. package/src/scripts/audit_auto_rules.ts +2 -2
  251. package/src/scripts/audit_cloud_compatibility.ts +3 -3
  252. package/src/scripts/audit_command_surface.ts +2 -2
  253. package/src/scripts/audit_initial_context.ts +7 -6
  254. package/src/scripts/audit_likelihood.ts +5 -5
  255. package/src/scripts/audit_mcp_tools.ts +3 -3
  256. package/src/scripts/audit_overlap.ts +2 -2
  257. package/src/scripts/audit_skill_descriptions.ts +2 -2
  258. package/src/scripts/audit_skill_overlap.ts +5 -5
  259. package/src/scripts/audit_user_type_axis.ts +4 -4
  260. package/src/scripts/backfill_model_tier.ts +1 -1
  261. package/src/scripts/bench_ab_cache_dispatch.ts +2 -2
  262. package/src/scripts/bench_ab_clone.ts +2 -2
  263. package/src/scripts/bench_ab_diff.ts +3 -3
  264. package/src/scripts/bench_ab_integrity.ts +2 -2
  265. package/src/scripts/bench_ab_run.ts +4 -4
  266. package/src/scripts/bench_ab_task_runner.ts +1 -1
  267. package/src/scripts/bench_ab_tracka_run.ts +2 -2
  268. package/src/scripts/bench_ab_v2_run.ts +1 -1
  269. package/src/scripts/bench_ab_v2_stats.ts +2 -2
  270. package/src/scripts/bench_baseline_ready.ts +1 -1
  271. package/src/scripts/bench_condense_memory.ts +4 -4
  272. package/src/scripts/bench_drift_check.ts +3 -3
  273. package/src/scripts/bench_per_tool.ts +1 -1
  274. package/src/scripts/bench_rtk_savings.ts +4 -4
  275. package/src/scripts/bench_run.ts +4 -4
  276. package/src/scripts/bench_runner.ts +1 -1
  277. package/src/scripts/build_cloud_bundle.ts +3 -3
  278. package/src/scripts/build_discovery_manifest.ts +13 -15
  279. package/src/scripts/build_linear_digest.ts +2 -2
  280. package/src/scripts/build_mcp_registry_manifest.ts +3 -3
  281. package/src/scripts/build_proof.ts +6 -0
  282. package/src/scripts/build_rule_trigger_matrix.ts +2 -2
  283. package/src/scripts/capture_showcase_session.ts +3 -3
  284. package/src/scripts/chat_history.ts +1 -1
  285. package/src/scripts/check_always_budget.ts +1 -1
  286. package/src/scripts/check_artefact_checksums.ts +4 -4
  287. package/src/scripts/check_artefact_count_messaging.ts +197 -0
  288. package/src/scripts/check_augment_description_cap.ts +3 -3
  289. package/src/scripts/check_augmentignore.ts +1 -1
  290. package/src/scripts/check_beta_review_markers.ts +3 -3
  291. package/src/scripts/check_bite_sized_granularity.ts +1 -1
  292. package/src/scripts/check_cluster_patterns.ts +47 -3
  293. package/src/scripts/check_command_count_messaging.ts +2 -2
  294. package/src/scripts/check_condensation.ts +2 -2
  295. package/src/scripts/check_condensed_paths.ts +6 -6
  296. package/src/scripts/check_context_paths.ts +1 -1
  297. package/src/scripts/check_council_config_location.ts +3 -3
  298. package/src/scripts/check_council_layout.ts +2 -2
  299. package/src/scripts/check_council_references.ts +2 -2
  300. package/src/scripts/check_discovery_determinism.ts +3 -3
  301. package/src/scripts/check_gate_paths.ts +4 -4
  302. package/src/scripts/check_iron_law_prominence.ts +2 -2
  303. package/src/scripts/check_kernel_rule_bundle.ts +3 -3
  304. package/src/scripts/check_knowledge_cards.ts +4 -4
  305. package/src/scripts/check_knowledge_pages.ts +1 -1
  306. package/src/scripts/check_md_language.ts +3 -3
  307. package/src/scripts/check_memory.ts +3 -3
  308. package/src/scripts/check_memory_proposal.ts +2 -2
  309. package/src/scripts/check_module_management_neutral.ts +1 -1
  310. package/src/scripts/check_no_conflict_markers.ts +1 -1
  311. package/src/scripts/check_no_external_sources.ts +1 -1
  312. package/src/scripts/check_no_local_settings_committed.ts +2 -2
  313. package/src/scripts/check_no_new_legacy_path.ts +3 -3
  314. package/src/scripts/check_no_roadmap_refs.ts +3 -3
  315. package/src/scripts/check_one_off_location.ts +3 -3
  316. package/src/scripts/check_overlay_cascade_subdirs.ts +3 -3
  317. package/src/scripts/check_portability.ts +3 -3
  318. package/src/scripts/check_proposal.ts +0 -0
  319. package/src/scripts/check_public_catalog_links.ts +1 -1
  320. package/src/scripts/check_public_links.ts +2 -2
  321. package/src/scripts/check_references.ts +3 -3
  322. package/src/scripts/check_release_includes_discovery.ts +2 -2
  323. package/src/scripts/check_release_pr_shape.ts +2 -2
  324. package/src/scripts/check_release_published.ts +1 -1
  325. package/src/scripts/check_release_trunk_sync.ts +3 -3
  326. package/src/scripts/check_reply_consistency.ts +1 -1
  327. package/src/scripts/check_roadmap_trackable.ts +2 -2
  328. package/src/scripts/check_role_doc_links.ts +2 -2
  329. package/src/scripts/check_safety_floor_untouched.ts +3 -3
  330. package/src/scripts/check_skill_requires.ts +2 -2
  331. package/src/scripts/check_structural_breaking.ts +2 -2
  332. package/src/scripts/check_surface_tiers.ts +2 -2
  333. package/src/scripts/check_template_pin_drift.ts +1 -1
  334. package/src/scripts/check_test_coverage_diff.ts +2 -2
  335. package/src/scripts/check_token_optimizer_freshness.ts +3 -3
  336. package/src/scripts/check_trigger_evals.ts +2 -2
  337. package/src/scripts/check_update_banner.ts +1 -1
  338. package/src/scripts/ci_status.ts +0 -0
  339. package/src/scripts/ci_summary.ts +3 -3
  340. package/src/scripts/ci_time_ratio.ts +1 -1
  341. package/src/scripts/command_suggester/cooldown.ts +1 -1
  342. package/src/scripts/command_suggester/index.ts +1 -1
  343. package/src/scripts/command_suggester/loader.ts +1 -1
  344. package/src/scripts/command_suggester/match.ts +1 -1
  345. package/src/scripts/command_suggester/rank.ts +1 -1
  346. package/src/scripts/command_suggester/render.ts +1 -1
  347. package/src/scripts/command_suggester/sanitize.ts +1 -1
  348. package/src/scripts/command_suggester/settings.ts +1 -1
  349. package/src/scripts/command_suggester/types.ts +0 -0
  350. package/src/scripts/compile_router.ts +4 -4
  351. package/src/scripts/condense.ts +3 -3
  352. package/src/scripts/condense_memory.ts +1 -1
  353. package/src/scripts/config/index.ts +1 -1
  354. package/src/scripts/config/packs.ts +1 -1
  355. package/src/scripts/config/presets.ts +1 -1
  356. package/src/scripts/config/profile_explain.ts +1 -1
  357. package/src/scripts/config/profiles.ts +1 -1
  358. package/src/scripts/config/session_profiles.ts +1 -1
  359. package/src/scripts/context_hygiene_hook.ts +2 -2
  360. package/src/scripts/cost_by_conversation.ts +1 -1
  361. package/src/scripts/cost_summary.ts +2 -2
  362. package/src/scripts/council_cli.ts +1 -1
  363. package/src/scripts/council_prune.ts +1 -1
  364. package/src/scripts/cross_repo_retrieve.ts +2 -2
  365. package/src/scripts/discovery_stats.ts +3 -3
  366. package/src/scripts/evidence_report.ts +4 -4
  367. package/src/scripts/extract_audit_patterns.ts +2 -2
  368. package/src/scripts/first_run_gate_hook.ts +1 -1
  369. package/src/scripts/gen_discovery_baseline.ts +2 -2
  370. package/src/scripts/generate_capabilities_index.ts +2 -2
  371. package/src/scripts/generate_capability_matrix.ts +2 -2
  372. package/src/scripts/generate_catalog.ts +2 -2
  373. package/src/scripts/generate_command_flows.ts +2 -2
  374. package/src/scripts/generate_cookbook.ts +1 -1
  375. package/src/scripts/generate_index.ts +3 -3
  376. package/src/scripts/generate_ownership_matrix.ts +2 -2
  377. package/src/scripts/generate_pack_manifests.ts +2 -2
  378. package/src/scripts/generate_role_experiences_catalog.ts +3 -3
  379. package/src/scripts/hooks/block_no_verify.ts +2 -2
  380. package/src/scripts/hooks/dispatch_hook.ts +2 -2
  381. package/src/scripts/hooks/dispatch_issues.ts +1 -1
  382. package/src/scripts/hooks/envelope.ts +1 -1
  383. package/src/scripts/hooks/replay_hook.ts +1 -1
  384. package/src/scripts/hooks/state_io.ts +1 -1
  385. package/src/scripts/hooks_doctor.ts +1 -1
  386. package/src/scripts/hooks_status.ts +1 -1
  387. package/src/scripts/injection_scan_hook.ts +1 -1
  388. package/src/scripts/install.ts +145 -3
  389. package/src/scripts/inventory_abstraction_budget.ts +5 -5
  390. package/src/scripts/inventory_frontmatter.ts +1 -1
  391. package/src/scripts/inventory_meta_layers.ts +1 -1
  392. package/src/scripts/iron_law_sha.ts +1 -1
  393. package/src/scripts/knowledge_global_cli.ts +3 -3
  394. package/src/scripts/linked_projects_list.ts +1 -1
  395. package/src/scripts/lint_agent_security.ts +4 -4
  396. package/src/scripts/lint_agent_skill_names.ts +1 -1
  397. package/src/scripts/lint_agents_layout.ts +2 -2
  398. package/src/scripts/lint_agents_md.ts +3 -3
  399. package/src/scripts/lint_archived_skills.ts +2 -2
  400. package/src/scripts/lint_artefact_frontmatter.ts +2 -2
  401. package/src/scripts/lint_bench_ab.ts +2 -2
  402. package/src/scripts/lint_bench_corpus.ts +1 -1
  403. package/src/scripts/lint_command_flow_coverage.ts +1 -1
  404. package/src/scripts/lint_command_routing.ts +2 -2
  405. package/src/scripts/lint_command_tiers.ts +1 -1
  406. package/src/scripts/lint_command_verbs.ts +4 -4
  407. package/src/scripts/lint_commit_subjects.ts +2 -2
  408. package/src/scripts/lint_context_spine_usage.ts +3 -3
  409. package/src/scripts/lint_discovery_manifest.ts +4 -4
  410. package/src/scripts/lint_discovery_vocabulary.ts +2 -2
  411. package/src/scripts/lint_empty_roadmaps.ts +3 -3
  412. package/src/scripts/lint_eval_freshness.ts +2 -2
  413. package/src/scripts/lint_examples.ts +2 -2
  414. package/src/scripts/lint_explain_trace.ts +2 -2
  415. package/src/scripts/lint_featured_skills.ts +0 -0
  416. package/src/scripts/lint_flows.ts +5 -5
  417. package/src/scripts/lint_framework_leakage.ts +1 -1
  418. package/src/scripts/lint_framework_leakage_allowlist.json +10 -2
  419. package/src/scripts/lint_frontmatter_boilerplate.ts +2 -2
  420. package/src/scripts/lint_ghostwriter_source.ts +3 -3
  421. package/src/scripts/lint_global_paths.ts +1 -1
  422. package/src/scripts/lint_handoffs.ts +1 -1
  423. package/src/scripts/lint_hidden_unicode.ts +1 -1
  424. package/src/scripts/lint_hook_concern_budget.ts +2 -2
  425. package/src/scripts/lint_hook_manifest.ts +2 -2
  426. package/src/scripts/lint_instruction_smuggling.ts +1 -1
  427. package/src/scripts/lint_load_context.ts +2 -2
  428. package/src/scripts/lint_marketplace.ts +1 -1
  429. package/src/scripts/lint_marketplace_install_completeness.ts +2 -2
  430. package/src/scripts/lint_mcp_config_security.ts +1 -1
  431. package/src/scripts/lint_mcp_registry_manifest.ts +1 -1
  432. package/src/scripts/lint_media_policy_linkage.ts +3 -3
  433. package/src/scripts/lint_missions.ts +3 -3
  434. package/src/scripts/lint_model_tier_coverage.ts +3 -3
  435. package/src/scripts/lint_namespace.ts +2 -2
  436. package/src/scripts/lint_namespace_collisions.ts +2 -2
  437. package/src/scripts/lint_new_skill_gate.ts +3 -3
  438. package/src/scripts/lint_no_new_atomic_commands.ts +9 -6
  439. package/src/scripts/lint_no_python_twin_rationale.ts +102 -0
  440. package/src/scripts/lint_one_off_age.ts +2 -2
  441. package/src/scripts/lint_orchestration_dsl.ts +3 -3
  442. package/src/scripts/lint_orchestrator_auto_detect.ts +1 -1
  443. package/src/scripts/lint_pack_boundaries.ts +2 -2
  444. package/src/scripts/lint_pack_dependencies.ts +2 -2
  445. package/src/scripts/lint_pack_first_win.ts +2 -2
  446. package/src/scripts/lint_persona_governance.ts +3 -3
  447. package/src/scripts/lint_positioning.ts +1 -1
  448. package/src/scripts/lint_profile_overlay_set_only.ts +2 -2
  449. package/src/scripts/lint_readme_jargon.ts +2 -2
  450. package/src/scripts/lint_readme_size.ts +2 -2
  451. package/src/scripts/lint_regression.ts +3 -3
  452. package/src/scripts/lint_roadmap_ci_steps.ts +3 -3
  453. package/src/scripts/lint_roadmap_complexity.ts +1 -1
  454. package/src/scripts/lint_roadmap_later_disposition.ts +2 -2
  455. package/src/scripts/lint_role_experiences.ts +2 -2
  456. package/src/scripts/lint_rule_interactions.ts +1 -1
  457. package/src/scripts/lint_rule_tiers.ts +1 -1
  458. package/src/scripts/lint_showcase_sessions.ts +2 -2
  459. package/src/scripts/lint_skill_frontmatter_safety.ts +1 -1
  460. package/src/scripts/lint_skill_originality.ts +1 -1
  461. package/src/scripts/lint_skill_tools.ts +3 -3
  462. package/src/scripts/lint_ticket_buildable.ts +2 -2
  463. package/src/scripts/lint_topics_yaml.ts +3 -3
  464. package/src/scripts/lint_trust_coherence.ts +3 -3
  465. package/src/scripts/lint_value_dashboard.ts +3 -3
  466. package/src/scripts/lint_workflow_security.ts +3 -3
  467. package/src/scripts/lint_workspace_boundary.ts +2 -2
  468. package/src/scripts/mcp_parity_smoke.ts +1 -1
  469. package/src/scripts/mcp_render.ts +1 -1
  470. package/src/scripts/mcp_server/catalog.ts +1 -1
  471. package/src/scripts/mcp_server/index.ts +1 -1
  472. package/src/scripts/mcp_server/metadata.ts +1 -1
  473. package/src/scripts/mcp_server/prompts.ts +1 -1
  474. package/src/scripts/mcp_server/resources.ts +1 -1
  475. package/src/scripts/mcp_server/server.ts +1 -1
  476. package/src/scripts/mcp_server/telemetry.ts +1 -1
  477. package/src/scripts/mcp_server/tools.ts +1 -1
  478. package/src/scripts/mcp_telemetry_health.ts +1 -1
  479. package/src/scripts/mcp_telemetry_query.ts +3 -3
  480. package/src/scripts/mcp_telemetry_store.ts +3 -3
  481. package/src/scripts/measure_augment_budget.ts +2 -2
  482. package/src/scripts/measure_density.ts +2 -2
  483. package/src/scripts/measure_frugality_savings.ts +3 -3
  484. package/src/scripts/measure_markitdown_lift.ts +1 -1
  485. package/src/scripts/measure_patterns.ts +1 -1
  486. package/src/scripts/measure_projection_bytes.ts +1 -1
  487. package/src/scripts/measure_rule_budget.ts +1 -1
  488. package/src/scripts/measure_skill_reduction.ts +1 -1
  489. package/src/scripts/memory_hash.ts +1 -1
  490. package/src/scripts/memory_lookup.ts +6 -6
  491. package/src/scripts/memory_report.ts +1 -1
  492. package/src/scripts/memory_signal.ts +1 -1
  493. package/src/scripts/memory_status.ts +2 -2
  494. package/src/scripts/migrate_command_suggestions.ts +1 -1
  495. package/src/scripts/migrate_frontmatter_defaults.ts +1 -1
  496. package/src/scripts/mine_session.ts +3 -3
  497. package/src/scripts/minimal_safe_diff_hook.ts +2 -2
  498. package/src/scripts/move_artefact.ts +3 -3
  499. package/src/scripts/new_skill.ts +3 -3
  500. package/src/scripts/onboarding_gate_hook.ts +2 -2
  501. package/src/scripts/pack_mcp_content.ts +1 -1
  502. package/src/scripts/parity/replay.ts +3 -2
  503. package/src/scripts/pattern_share.ts +2 -2
  504. package/src/scripts/plan_physical_move.ts +3 -3
  505. package/src/scripts/prediction-pool/poisson_sim.ts +2 -2
  506. package/src/scripts/prediction-pool/pool_winsim.ts +2 -2
  507. package/src/scripts/prediction-pool/score_ev.ts +2 -2
  508. package/src/scripts/print_required_checks.ts +2 -2
  509. package/src/scripts/probe_projection_fidelity.ts +2 -2
  510. package/src/scripts/probe_skill_registration.ts +2 -2
  511. package/src/scripts/profile_staleness_hook.ts +2 -2
  512. package/src/scripts/profile_use.ts +2 -2
  513. package/src/scripts/project_thin_rules.ts +3 -3
  514. package/src/scripts/propose_modules_config.ts +2 -2
  515. package/src/scripts/prototype_lint_contradictions.ts +2 -2
  516. package/src/scripts/prove_pack_extractable.ts +1 -1
  517. package/src/scripts/readme_linter.ts +4 -4
  518. package/src/scripts/redact_hook_capture.ts +2 -2
  519. package/src/scripts/refine_ticket_detect.ts +1 -1
  520. package/src/scripts/release.ts +30 -19
  521. package/src/scripts/render_benchmark_md.ts +2 -2
  522. package/src/scripts/render_value_md.ts +2 -2
  523. package/src/scripts/roadmap_progress_hook.ts +1 -1
  524. package/src/scripts/router_telemetry.ts +1 -1
  525. package/src/scripts/run_skill_evals.ts +2 -2
  526. package/src/scripts/runtime_dispatcher.ts +1 -1
  527. package/src/scripts/runtime_handler.ts +1 -1
  528. package/src/scripts/runtime_registry.ts +3 -3
  529. package/src/scripts/score_skill_selection.ts +1 -1
  530. package/src/scripts/security_audit_config.ts +2 -2
  531. package/src/scripts/skill_collision_clusters.ts +1 -1
  532. package/src/scripts/skill_discovery.ts +1 -1
  533. package/src/scripts/skill_linter.ts +8 -7
  534. package/src/scripts/skill_overlap.ts +2 -2
  535. package/src/scripts/skill_preview.ts +1 -1
  536. package/src/scripts/skill_tools/audit_persona_coverage.ts +3 -3
  537. package/src/scripts/skill_tools/audit_user_type_coverage.ts +3 -3
  538. package/src/scripts/skill_tools/index.ts +1 -1
  539. package/src/scripts/skill_tools/run_block_d_eval.ts +3 -3
  540. package/src/scripts/skill_tools/score_skill_relevance.ts +3 -3
  541. package/src/scripts/skill_tools/suggest_skill_for_task.ts +3 -3
  542. package/src/scripts/skill_trigger_eval.ts +2 -2
  543. package/src/scripts/skill_usage_collect.ts +2 -2
  544. package/src/scripts/skill_usage_report.ts +2 -2
  545. package/src/scripts/smoke_path_resolution.ts +2 -2
  546. package/src/scripts/smoke_quickstart.ts +4 -4
  547. package/src/scripts/snapshot_agent_outputs.ts +2 -2
  548. package/src/scripts/spotcheck_thin_root.ts +2 -2
  549. package/src/scripts/surface-tiers.yml +1 -0
  550. package/src/scripts/sync_agent_settings.ts +2 -2
  551. package/src/scripts/sync_github_metadata.ts +4 -4
  552. package/src/scripts/sync_gitignore.ts +3 -3
  553. package/src/scripts/sync_yaml_rt.ts +2 -2
  554. package/src/scripts/telegraph_stats.ts +1 -1
  555. package/src/scripts/tool_registry.ts +2 -2
  556. package/src/scripts/tools/adapter_errors.ts +1 -1
  557. package/src/scripts/tools/base_adapter.ts +1 -1
  558. package/src/scripts/tools/github_adapter.ts +1 -1
  559. package/src/scripts/tools/jira_adapter.ts +1 -1
  560. package/src/scripts/trigger_coverage.ts +2 -2
  561. package/src/scripts/update_counts.ts +68 -6
  562. package/src/scripts/update_prices.ts +3 -3
  563. package/src/scripts/validate_agent_settings.ts +3 -3
  564. package/src/scripts/validate_decision_engine.ts +2 -2
  565. package/src/scripts/validate_discovery_manifest.ts +3 -3
  566. package/src/scripts/validate_frontmatter.ts +5 -5
  567. package/src/scripts/validate_pack_yaml.ts +0 -0
  568. package/src/scripts/validate_safe_paths.ts +2 -2
  569. package/src/scripts/validate_telegraph_carveouts.ts +3 -3
  570. package/src/scripts/verify_before_complete_hook.ts +2 -2
  571. package/src/scripts/verify_physical_move.ts +2 -2
  572. package/src/scripts/wrapper_freshness_hook.ts +3 -3
  573. package/src/server/schemas/settings.ts +426 -0
  574. package/src/shared/settingsSurface.ts +184 -0
  575. package/src/shared/userMd/formAdapter.ts +86 -0
  576. package/src/shared/userMd/schema.ts +59 -0
  577. package/src/shared/userMd/utils.ts +91 -0
  578. package/dist/agent-src/commands/optimize-project.md +0 -243
  579. package/dist/ui/assets/index-BbWWuFrF.css +0 -1
  580. package/dist/ui/assets/index-UjcTG_9O.js +0 -40
  581. package/dist/ui/assets/index-UjcTG_9O.js.map +0 -1
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * Generate the role-experience catalog (road-to-competitive-borrow P1.0).
4
4
  *
5
- * TypeScript twin of `src/scripts/generate_role_experiences_catalog.py`
6
- * (ADR-200). Mirrors the Python CLI contract EXACTLY — the `--check` /
5
+ * Ported from the retired Python `src/scripts/generate_role_experiences_catalog.py`
6
+ * (ADR-200). The CLI contract is pinned — the `--check` /
7
7
  * `--quiet` flags, exit codes (0 / 1 / 2), stdout/stderr split, and the
8
8
  * byte-identical generated `docs/role-experiences.md` (heading prose, the
9
9
  * `| Role | Tagline | Status |` table, the `sorted(glob)` ordering over the
10
- * and the trailing newline). No behaviour changes — latent Python quirks
10
+ * and the trailing newline). No behaviour changes — historical quirks preserved
11
11
  * (regex frontmatter parse, sequential `.strip('"').strip("'")`, the
12
12
  * pathlib-component-wise glob sort) are replicated.
13
13
  *
@@ -2,13 +2,13 @@
2
2
  /**
3
3
  * PreToolUse guard: block git --no-verify and hook-bypass patterns.
4
4
  *
5
- * TypeScript twin of `src/scripts/hooks/block_no_verify.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/hooks/block_no_verify.py` (ADR-200,
6
6
  * Python→TypeScript migration). The CLI/stdin contract is mirrored EXACTLY —
7
7
  * `--command` / `--platform` argparse flags, the JSON-envelope-on-stdin shape,
8
8
  * shlex tokenisation (POSIX, no comments), the subcommand split on shell
9
9
  * separators, the fail-closed-on-parse-error-for-git behaviour, byte-identical
10
10
  * stderr block message, and exit codes (0 allow · 1 block; 2 = argparse error).
11
- * snake_case kept. No behaviour changes — latent quirks replicated.
11
+ * snake_case kept. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
12
12
  *
13
13
  * Intercepts the agent's Bash tool calls BEFORE git runs so that
14
14
  * `git --no-verify` / `git -n` / `git -c core.hooksPath=` cannot silently
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Universal hook dispatcher — single entry point for every platform.
4
4
  *
5
- * TypeScript twin of `src/scripts/hooks/dispatch_hook.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/hooks/dispatch_hook.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 6 / hooks core). Mirrors the Python CLI
7
7
  * contract exactly: same manifest default, event vocabulary, envelope
8
8
  * shape, concern invocation, exit-code reduction, feedback-dir writes,
@@ -135,7 +135,7 @@ export function _parse_concern_stdout(stdout_text: string): JsonObject {
135
135
  }
136
136
 
137
137
  /**
138
- * Minimal manifest loader — the Python original prefers PyYAML and falls
138
+ * Minimal manifest loader — the retired Python implementation prefers PyYAML and falls
139
139
  * back to `_fallback_yaml` only when PyYAML is absent. The TS runtime
140
140
  * always ships the `yaml` package, so this mirrors the PyYAML-present
141
141
  * path (`yaml.safe_load(text) or {}`); version 1.1 matches PyYAML.safe_load.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Append-only log of dispatch-time issues — Phase 1 of `road-to-hooks-actually-fire-in-consumers`.
3
3
  *
4
- * TypeScript twin of `src/scripts/hooks/dispatch_issues.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/hooks/dispatch_issues.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 6 / hooks core). Public API mirrors the
6
6
  * Python module exactly (snake_case kept deliberately — fidelity over
7
7
  * TS idiom).
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Concern envelope helpers — read the dispatcher's stdin contract.
3
3
  *
4
- * TypeScript twin of `src/scripts/hooks/envelope.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/hooks/envelope.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 6 / hooks core). Public API mirrors the
6
6
  * Python module exactly (snake_case kept deliberately — fidelity over
7
7
  * TS idiom).
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Fixture-driven hook replay — read-only dispatch through the runtime.
4
4
  *
5
- * TypeScript twin of `src/scripts/hooks/replay_hook.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/hooks/replay_hook.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 6 / hooks core). Mirrors the Python CLI
7
7
  * contract exactly: same payload resolution, replay env flag, dispatcher
8
8
  * argument forwarding, `--json` summary shape, stdout/stderr split, and
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Concurrency-safe state writes for hook concerns.
3
3
  *
4
- * TypeScript twin of `src/scripts/hooks/state_io.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/hooks/state_io.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 6 / hooks core). Public API mirrors the
6
6
  * Python module exactly (snake_case kept deliberately — fidelity over
7
7
  * TS idiom).
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Hook doctor — read-only diagnostic over the hook runtime.
4
4
  *
5
- * TypeScript twin of `src/scripts/hooks_doctor.py` (ADR-200 — Python→TS
5
+ * Ported from the retired Python `src/scripts/hooks_doctor.py` (ADR-200 — Python→TS
6
6
  * migration, Phase 6 / hooks). Public API mirrors the Python module
7
7
  * exactly (snake_case kept deliberately — fidelity over TS idiom).
8
8
  *
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Print the runtime hook matrix per `docs/contracts/hook-architecture-v1.md`.
4
4
  *
5
- * TypeScript twin of `src/scripts/hooks_status.py` (ADR-200 — Python→TS
5
+ * Ported from the retired Python `src/scripts/hooks_status.py` (ADR-200 — Python→TS
6
6
  * migration, Phase 6 / hooks). Public API mirrors the Python module
7
7
  * exactly (snake_case kept deliberately — fidelity over TS idiom). Ported
8
8
  * here as a dependency of `hooks_doctor.ts`, which wraps `collect`,
@@ -3,7 +3,7 @@
3
3
  * PostToolUse prompt-injection scanner — warn-in-context
4
4
  * (road-to-security-pillar.md P3.2).
5
5
  *
6
- * TypeScript twin of `src/scripts/injection_scan_hook.py` (ADR-200 —
6
+ * Ported from the retired Python `src/scripts/injection_scan_hook.py` (ADR-200 —
7
7
  * Python→TS migration). Public API mirrors the Python module exactly
8
8
  * (snake_case kept deliberately — fidelity over TS idiom). Match the
9
9
  * Python `re` semantics, the `.agent-settings.yml` mini-parser, the
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Agent Config — Project Bridge Installer (TypeScript twin).
4
4
  *
5
- * TypeScript twin of `src/scripts/install.py` (ADR-200, py2ts migration).
6
- * The CLI contract mirrors the Python original EXACTLY — same flags, same
5
+ * Ported from the retired Python `src/scripts/install.py` (ADR-200).
6
+ * The CLI contract pins the historical contract exactly — same flags, same
7
7
  * exit codes, same stdout/stderr split, byte-identical emitted output,
8
8
  * same filesystem effects, same subprocess argv/cwd/env. No behaviour
9
9
  * changes — latent quirks are replicated and flagged inline, not fixed.
@@ -51,7 +51,7 @@
51
51
  * import-resolution detail with no observable effect.
52
52
  * - `scripts._cli.cmd_migrate` now has a `.ts` twin, so `_run_migrate_to_global`
53
53
  * calls `cmd_migrate.main([], { cwd })` directly in-process — exactly as the
54
- * Python original ran it via `sys.stdout`. The migrator's `out`/`err` sinks
54
+ * retired Python implementation ran it via `sys.stdout`. The migrator's `out`/`err` sinks
55
55
  * default to `process.stdout`/`process.stderr`, preserving the prior
56
56
  * `stdio:['ignore','inherit','pipe']` observable contract (stdout text + exit
57
57
  * code). Inline reason at the call site.
@@ -80,6 +80,9 @@ import * as user_global_paths from './_lib/user_global_paths.js';
80
80
  import * as claude_desktop_bundler from './_lib/claude_desktop_bundler.js';
81
81
  import * as claude_settings_hooks from './_lib/claude_settings_hooks.js';
82
82
  import { find_project_root_with_anchor, load_agent_settings } from './_lib/agent_settings.js';
83
+ import { flattenSurface, computeSurfaceDelta, type SettingsSurface } from '../shared/settingsSurface.js';
84
+ import { settingsSchema } from '../server/schemas/settings.js';
85
+ import { zodToJsonSchema } from 'zod-to-json-schema';
83
86
  import { detect_module_roots } from './_lib/module_detection.js';
84
87
  import {
85
88
  TIER_TO_CLAUDE_MODEL,
@@ -2832,6 +2835,66 @@ function _deploy_claude_desktop(
2832
2835
  return [bundle_count, 0, 'deployed', [bundles_dir, ...marker_paths]];
2833
2836
  }
2834
2837
 
2838
+ /**
2839
+ * Claude Code flat-command mitigation (council 2026-07-08,
2840
+ * cc-user-command-discovery). Claude Code ≤ 2.1.204 does not register FLAT
2841
+ * user-scope command files (`~/.claude/commands/<name>.md`) — probed and
2842
+ * confirmed: nested commands (`/cluster:sub`) and user-scope skills DO
2843
+ * register. Until upstream fixes discovery, tier-0/1 VISIBLE flat commands
2844
+ * are re-projected as skill wrappers (`~/.claude/skills/<name>/SKILL.md`)
2845
+ * and their flat command file is dropped from the claude-code anchor —
2846
+ * single source, so no duplicate `/name` appears once upstream fixes flat
2847
+ * discovery (revert = one package release, no per-machine gating).
2848
+ * Tier-2/internal flat commands stay command files. A command whose name
2849
+ * collides with a real skill is skipped (the skill already owns `/name`).
2850
+ */
2851
+ const _CLAUDE_FLAT_WRAPPER_EXTRA = new Set(['commit']); // essential; absent from the manifest
2852
+ export function _apply_claude_flat_command_wrappers(
2853
+ anchor: string,
2854
+ package_root: string,
2855
+ current_files: Set<string>,
2856
+ ): { wrapped: string[]; collisions: string[] } {
2857
+ const wrapped: string[] = [];
2858
+ const collisions: string[] = [];
2859
+ // Tier-0/1 visible command slugs from the locked discovery manifest.
2860
+ const eligible = new Set<string>(_CLAUDE_FLAT_WRAPPER_EXTRA);
2861
+ try {
2862
+ const manifest = JSON.parse(
2863
+ fs.readFileSync(path.join(package_root, 'dist', 'discovery', 'discovery-manifest.json'), 'utf8'),
2864
+ ) as { artefacts?: Array<{ category?: string; slug?: string; tier?: number; visibility?: string }> };
2865
+ for (const a of manifest.artefacts ?? []) {
2866
+ if (a.category !== 'command' || typeof a.slug !== 'string') continue;
2867
+ if ((a.tier ?? 2) <= 1 && a.visibility !== 'internal') eligible.add(a.slug);
2868
+ }
2869
+ } catch {
2870
+ // No manifest → wrap only the hardcoded essentials.
2871
+ }
2872
+ for (const slug of [...eligible].sort()) {
2873
+ const flat_rel = `commands/${slug}.md`;
2874
+ const flat_abs = path.join(anchor, 'commands', `${slug}.md`);
2875
+ if (!fs.existsSync(flat_abs)) continue;
2876
+ const skill_dir = path.join(anchor, 'skills', slug);
2877
+ if (fs.existsSync(skill_dir)) {
2878
+ // A real skill owns /<slug> — never overwrite it.
2879
+ collisions.push(slug);
2880
+ continue;
2881
+ }
2882
+ let body = fs.readFileSync(flat_abs, 'utf8');
2883
+ // SKILL.md requires a `name:` — inject it into the existing
2884
+ // frontmatter when absent (command frontmatter carries description).
2885
+ if (body.startsWith('---\n') && !/^name:/m.test(body.split('\n---')[0] ?? '')) {
2886
+ body = body.replace('---\n', `---\nname: ${slug}\n`);
2887
+ }
2888
+ fs.mkdirSync(skill_dir, { recursive: true });
2889
+ fs.writeFileSync(path.join(skill_dir, 'SKILL.md'), body, 'utf8');
2890
+ fs.rmSync(flat_abs, { force: true });
2891
+ current_files.delete(flat_rel);
2892
+ current_files.add(`skills/${slug}/SKILL.md`);
2893
+ wrapped.push(slug);
2894
+ }
2895
+ return { wrapped, collisions };
2896
+ }
2897
+
2835
2898
  function _deploy_global_content(
2836
2899
  tools: Set<string>,
2837
2900
  force: boolean,
@@ -2874,6 +2937,20 @@ function _deploy_global_content(
2874
2937
  global_deploy_inventory.expected_deploy_files(src, dest_sub ? dest_sub : ''),
2875
2938
  );
2876
2939
  }
2940
+ // Flat-command → skill-wrapper re-projection for Claude Code
2941
+ // (discovery regression mitigation; see the helper's doc block).
2942
+ // Runs before the postcheck + inventory record so `current_files`
2943
+ // reflects the transformed tree and reaping stays consistent.
2944
+ if (tool_id === 'claude-code') {
2945
+ const res = _apply_claude_flat_command_wrappers(anchor, package_root, current_files);
2946
+ if (res.wrapped.length > 0 && !state.QUIET) {
2947
+ info(
2948
+ ` claude-code: ${res.wrapped.length} visible flat command(s) projected as ` +
2949
+ 'skill wrappers (Claude Code flat-command discovery workaround)',
2950
+ );
2951
+ }
2952
+ }
2953
+
2877
2954
  const missing_targets = _verify_deploy_targets(anchor, plan);
2878
2955
  if (missing_targets.length > 0) {
2879
2956
  if (!state.QUIET) {
@@ -3275,6 +3352,20 @@ function install_global(
3275
3352
  }
3276
3353
  }
3277
3354
 
3355
+ // Settings-surface snapshot + upgrade delta (road-to-settings-change-
3356
+ // review; council 2026-07-08, 2/2 converged on snapshot-at-install).
3357
+ // Every global install persists the flattened settings surface; when a
3358
+ // PREVIOUS snapshot from a different version exists, the semantic delta
3359
+ // (added / default_changed / enum_added / enum_removed / type_changed)
3360
+ // is written to state/settings-delta.json — the pending-review flag the
3361
+ // GUI banner, the review page, and doctor consume. Never fatal: a
3362
+ // snapshot failure must not sink the install.
3363
+ try {
3364
+ _write_settings_surface_snapshot(installed_version);
3365
+ } catch (e) {
3366
+ if (!state.QUIET) warn(`settings-surface snapshot failed — ${String(e)}`);
3367
+ }
3368
+
3278
3369
  if (!state.QUIET) {
3279
3370
  process.stdout.write('\n');
3280
3371
  success(`Global install completed (v${installed_version}).`);
@@ -3283,6 +3374,55 @@ function install_global(
3283
3374
  return 0;
3284
3375
  }
3285
3376
 
3377
+ const SETTINGS_SURFACE_REL = path.join('state', 'settings-surface.json');
3378
+ const SETTINGS_DELTA_REL = path.join('state', 'settings-delta.json');
3379
+
3380
+ function _current_settings_surface(version: string): SettingsSurface {
3381
+ const jsonSchema = zodToJsonSchema(settingsSchema, {
3382
+ name: 'AgentSettings',
3383
+ $refStrategy: 'none',
3384
+ target: 'jsonSchema7',
3385
+ }) as Parameters<typeof flattenSurface>[0];
3386
+ return flattenSurface(jsonSchema, version);
3387
+ }
3388
+
3389
+ function _write_settings_surface_snapshot(installed_version: string): void {
3390
+ const root = user_global_paths.event4u_root();
3391
+ const surface_path = path.join(root, SETTINGS_SURFACE_REL);
3392
+ const delta_path = path.join(root, SETTINGS_DELTA_REL);
3393
+ const next = _current_settings_surface(installed_version);
3394
+
3395
+ let previous: SettingsSurface | null = null;
3396
+ try {
3397
+ const parsed = JSON.parse(fs.readFileSync(surface_path, 'utf8')) as SettingsSurface;
3398
+ if (parsed !== null && typeof parsed === 'object' && parsed.entries !== undefined) previous = parsed;
3399
+ } catch {
3400
+ // First run after this feature ships — seed-only (council Q1:
3401
+ // no template fallback; the transition cost is paid once).
3402
+ }
3403
+
3404
+ if (previous !== null && previous.version !== next.version) {
3405
+ const delta = computeSurfaceDelta(previous, next);
3406
+ if (delta.changes.length > 0) {
3407
+ fs.mkdirSync(path.dirname(delta_path), { recursive: true, mode: 0o700 });
3408
+ fs.writeFileSync(delta_path, `${JSON.stringify(delta, null, 2)}\n`, { mode: 0o600 });
3409
+ if (!state.QUIET) {
3410
+ const counts: Record<string, number> = {};
3411
+ for (const c of delta.changes) counts[c.kind] = (counts[c.kind] ?? 0) + 1;
3412
+ const parts = Object.entries(counts).map(([k, v]) => `${v} ${k.replace('_', ' ')}`);
3413
+ info(
3414
+ `Settings surface changed ${delta.oldVersion} → ${delta.newVersion}: ` +
3415
+ `${parts.join(', ')}. Review with \`agent-config config\` ` +
3416
+ '(Settings → banner) — nothing was changed automatically.',
3417
+ );
3418
+ }
3419
+ }
3420
+ }
3421
+
3422
+ fs.mkdirSync(path.dirname(surface_path), { recursive: true, mode: 0o700 });
3423
+ fs.writeFileSync(surface_path, `${JSON.stringify(next, null, 2)}\n`, { mode: 0o600 });
3424
+ }
3425
+
3286
3426
  function arrayStrEqual(a: string[], b: string[]): boolean {
3287
3427
  return a.length === b.length && a.every((v, i) => v === b[i]);
3288
3428
  }
@@ -4531,6 +4671,8 @@ export {
4531
4671
  _wizard_should_launch,
4532
4672
  _dry_run_summary,
4533
4673
  _apply_payload_preview,
4674
+ _write_settings_surface_snapshot,
4675
+ _current_settings_surface,
4534
4676
  jsonDumpsIndent,
4535
4677
  jsonDumpsCompact,
4536
4678
  _canonical_settings_target,
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Abstraction-budget inventory — read-only discovery pass.
4
4
  *
5
- * TypeScript twin of `src/scripts/inventory_abstraction_budget.py`
5
+ * Ported from the retired Python `src/scripts/inventory_abstraction_budget.py`
6
6
  * (ADR-200 — Python→TS migration, Phase 8 / Wave 8c). Mirrors the
7
7
  * Python CLI contract EXACTLY — the `--quiet` flag, exit code (always
8
8
  * 0), the stdout/stderr split routed through the `script_output` twin,
@@ -11,9 +11,9 @@
11
11
  * quoting).
12
12
  *
13
13
  * Imports the `_lib/agent_src` + `_lib/script_output` twins (the SAME
14
- * surfaces the Python original imports). Reference counts are grep-backed
14
+ * surfaces the retired Python implementation imports). Reference counts are grep-backed
15
15
  * (ripgrep with python-walk fallback) — `rg` is invoked as a subprocess
16
- * exactly like the Python original, so the counts agree.
16
+ * exactly like the retired Python implementation, so the counts agree.
17
17
  *
18
18
  * Read-only. Touches no abstraction file. No behaviour changes — latent
19
19
  * Python quirks replicated.
@@ -127,7 +127,7 @@ function newStats(): Stats {
127
127
  }
128
128
 
129
129
  function _log(level: 'info' | 'success' | 'warn' | 'error', msg: string): void {
130
- // script_output twin is always present here (unlike the Python original's
130
+ // script_output twin is always present here (unlike the retired Python implementation's
131
131
  // graceful-degradation guard, which exists only for the rare run outside the
132
132
  // repo). Mirror the Python branch: when script_output is None it would print
133
133
  // only on error to stderr — but in this twin the module is always imported.
@@ -466,7 +466,7 @@ export function inventory_packs(stats: Stats): void {
466
466
  // FileNotFoundError when the directory does not exist (it is NOT guarded
467
467
  // by an is_dir() check, unlike the other inventory passes). Replicate that
468
468
  // latent crash faithfully: on the current src/-based layout (no packages/
469
- // dir) the Python original aborts with a FileNotFoundError traceback and
469
+ // dir) the retired Python implementation aborts with a FileNotFoundError traceback and
470
470
  // exit 1. See the divergence note in the wave report — this is a real
471
471
  // latent Python bug being mirrored, not a TS choice.
472
472
  for (const child of _iterdirSortedStrict(packs_dir)) {
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Inventory frontmatter keys across all agent artefacts.
4
4
  *
5
- * TypeScript twin of `src/scripts/inventory_frontmatter.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/inventory_frontmatter.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 8 / Wave 8c). Mirrors the CLI contract
7
7
  * EXACTLY: no flags, exit code 0, byte-identical Markdown stdout. No
8
8
  * behaviour changes — latent bugs (line-based frontmatter parse, the
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Meta-layer / concept-surface inventory — read-only discovery pass.
4
4
  *
5
- * TypeScript twin of `src/scripts/inventory_meta_layers.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/inventory_meta_layers.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 8 / Wave 8c). Mirrors the CLI contract EXACTLY:
7
7
  * flag (`--quiet`), exit code 0, byte-identical stdout, and the byte-identical
8
8
  * written `meta-layer-inventory.md` (`\n`-joined) + `meta-layer-inventory.csv`
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * SHA-256 of every triple-fence block in a rule file (Iron Law preservation).
4
4
  *
5
- * TypeScript twin of `iron_law_sha.py` (Phase 8 / Wave 8e). Mirrors the
5
+ * Ported from the retired Python `iron_law_sha.py` (Phase 8 / Wave 8e). Mirrors the
6
6
  * Python CLI contract byte-for-byte: flags, exit codes, stdout layout.
7
7
  *
8
8
  * Usage:
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Command surface for the file-first global knowledge-card store (ADR-100).
4
4
  *
5
- * TypeScript twin of `src/scripts/knowledge_global_cli.py` (ADR-200). The CLI
6
- * contract mirrors the Python original EXACTLY — same subcommands, flags,
5
+ * Ported from the retired Python `src/scripts/knowledge_global_cli.py` (ADR-200). The CLI
6
+ * contract pins the historical contract exactly — same subcommands, flags,
7
7
  * exit codes, stdout/stderr split, byte-identical messages, table layout,
8
8
  * provenance write, and kill-switch no-op behavior. No behaviour changes.
9
9
  *
@@ -392,7 +392,7 @@ function cmd_validate(args: { check_urls: boolean }): number {
392
392
  return 0;
393
393
  }
394
394
 
395
- // The Python original spawns `python3 check_knowledge_cards.py --global
395
+ // the retired Python implementation spawns `python3 check_knowledge_cards.py --global
396
396
  // --strict`. The TS twin spawns the sibling `check_knowledge_cards.ts`
397
397
  // via the same tsx runtime (process spawn, not an import).
398
398
  const tsxBin = path.join(
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * `agent-config linked-projects:list` — list opted-in IDE-attached siblings.
4
4
  *
5
- * TypeScript twin of `linked_projects_list.py` (Phase 8 / Wave 8e).
5
+ * Ported from the retired Python `linked_projects_list.py` (Phase 8 / Wave 8e).
6
6
  *
7
7
  * Phase 4 of `road-to-leaner-core-and-discovery`; closes the ADR-032 follow-up
8
8
  * "expose the detector as a CLI subcommand for consumer reach". Pure wrapper over
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * P1.6 — umbrella runner for the agent-security self-audit linters.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_agent_security.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/lint_agent_security.py` (ADR-200 —
6
6
  * Python→TS migration). Mirrors the CLI contract EXACTLY: the `--sarif PATH`
7
7
  * / `--quiet` flags, the per-linter glyph lines, the aggregated summary, the
8
8
  * byte-identical SARIF report (`json.dumps(indent=2)` parity), and the exit
@@ -15,9 +15,9 @@
15
15
  * (road-to-security-pillar.md P1).
16
16
  *
17
17
  * The four child linters now have TypeScript twins, so this runner spawns each
18
- * `<child>.ts --json` via the repo-local `tsx` binary (the Python originals
18
+ * `<child>.ts --json` via the repo-local `tsx` binary (the retired Python implementations
19
19
  * were deleted in the ADR-200 migration). Each child is a separate process so
20
- * its JSON findings are aggregated here exactly as the Python original
20
+ * its JSON findings are aggregated here exactly as the retired Python implementation
21
21
  * aggregated `subprocess.run` output.
22
22
  *
23
23
  * Usage:
@@ -51,7 +51,7 @@ const LINTERS: ReadonlyArray<[string, string]> = [
51
51
 
52
52
  function _run(script: string): [number, Finding[]] {
53
53
  // Spawn the child linter's `.ts` twin via the repo-local tsx binary
54
- // (capture_output=True, text=True equivalent). Mirrors the Python original's
54
+ // (capture_output=True, text=True equivalent). Mirrors the retired Python implementation's
55
55
  // `subprocess.run([sys.executable, HERE/<child>.py, "--json"])`, now that the
56
56
  // children are TypeScript and the `.py` originals are deleted.
57
57
  const proc = spawnSync(tsxBin, [path.join(_HERE, script), "--json"], {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env tsx
2
2
  // Agent-Skills name-compliance linter (2026-06 Zed fix).
3
3
  //
4
- // TypeScript twin of src/scripts/lint_agent_skill_names.py — same two
4
+ // TypeScript port of the retired Python src/scripts/lint_agent_skill_names.py — same two
5
5
  // blocking checks (command name == path-derived slug; skill name == dir),
6
6
  // same Agent-Skills name pattern, same stdout/stderr split, same exit codes
7
7
  // (0 clean / 1 violations / 3 internal error), same `--quiet` flag.
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * CI guard for the `agents/` top-level layout.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_agents_layout.py` (ADR-200,
6
- * Phase 4 / Wave 4b). The CLI contract is mirrored EXACTLY — `--quiet`
5
+ * Ported from the retired Python `src/scripts/lint_agents_layout.py` (ADR-200,
6
+ * Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
7
7
  * / `--strict` flags (parsed by membership test, like the Python which
8
8
  * scans `sys.argv[1:]`), exit codes (0 clean / warnings, 1 unknown
9
9
  * flat-file violation), stdout/stderr split (everything goes to stdout),
@@ -2,11 +2,11 @@
2
2
  /**
3
3
  * Thin-Root contract linter for AGENTS.md files (Phase 7).
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_agents_md.py` (ADR-200, Phase 4 /
6
- * Wave 4b). The CLI contract is mirrored EXACTLY — `--quiet` detected by
5
+ * Ported from the retired Python `src/scripts/lint_agents_md.py` (ADR-200, Phase 4 /
6
+ * Wave 4b). The CLI contract is pinned — `--quiet` detected by
7
7
  * argv membership (no argparse), exit codes (0 / 1), stdout-only output,
8
8
  * byte-identical messages, same target order. No behaviour changes —
9
- * latent bugs replicated.
9
+ * historical quirks preserved (consumers pin the exact behaviour).
10
10
  *
11
11
  * Enforces caps + pointer-ratio + pointer-anatomy + emergency-triage
12
12
  * contract from `.agent-src.uncondensed/skills/agents-md-thin-root/SKILL.md`.
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Lint archive notes under agents/evidence/archived-skills/.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_archived_skills.py` (ADR-200, Phase 4
6
- * / Wave 4b). The CLI contract is mirrored EXACTLY — `--quiet` flag, exit
5
+ * Ported from the retired Python `src/scripts/lint_archived_skills.py` (ADR-200, Phase 4
6
+ * / Wave 4b). The CLI contract is pinned — `--quiet` flag, exit
7
7
  * codes (0 contract holds, 1 violations), stdout/stderr split,
8
8
  * byte-identical finding messages, same scan trees and order, same
9
9
  * frontmatter parser, same `artefact_roots()` skill-root discovery.
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Lint Phase-4 discovery frontmatter on every artefact.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_artefact_frontmatter.py` (ADR-200,
6
- * Phase 4 / Wave 4b). The CLI contract is mirrored EXACTLY — `--quiet`
5
+ * Ported from the retired Python `src/scripts/lint_artefact_frontmatter.py` (ADR-200,
6
+ * Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
7
7
  * flag, exit codes (0 clean, 1 violation), stdout/stderr split,
8
8
  * byte-identical finding messages (including Python-shaped list repr),
9
9
  * same scan trees and order, same `validate_frontmatter.parse_frontmatter`
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Validate the A/B bench corpora + `docs/benchmark.md` shape.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_bench_ab.py` (ADR-200, Phase 4 /
6
- * Wave 4b). The CLI contract is mirrored EXACTLY — `--quiet` flag, exit
5
+ * Ported from the retired Python `src/scripts/lint_bench_ab.py` (ADR-200, Phase 4 /
6
+ * Wave 4b). The CLI contract is pinned — `--quiet` flag, exit
7
7
  * codes (0 success, 1 first violation), stdout/stderr split, byte-identical
8
8
  * finding messages (including the `lint_bench_ab: <relpath>: <msg>` prefix
9
9
  * and the Python `repr()`-shaped value formatting), same check order, same
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Lint benchmark corpora under tests/eval/corpus-*.yaml.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_bench_corpus.py` (ADR-200, Phase 4 /
5
+ * Ported from the retired Python `src/scripts/lint_bench_corpus.py` (ADR-200, Phase 4 /
6
6
  * Wave 4b). Mirrors the Python CLI contract exactly: same scan scope + glob
7
7
  * ordering, finding messages (including Python-repr rendering of bad values),
8
8
  * stdout/stderr split, and exit codes.
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Command → flow coverage lint (the Flows primary view).
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_command_flow_coverage.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/lint_command_flow_coverage.py` (ADR-200,
6
6
  * Phase 4 / Wave 4b). Mirrors the CLI contract EXACTLY — the `--quiet`
7
7
  * argparse flag, exit codes (0 clean, 1 violations, 3 internal error),
8
8
  * byte-identical stdout/stderr lines, the same violation ordering
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * Routing-metadata + routing-eval linter for visible commands.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_command_routing.py` (ADR-200, Phase 4 /
5
+ * Ported from the retired Python `src/scripts/lint_command_routing.py` (ADR-200, Phase 4 /
6
6
  * Wave 4b). Mirrors the Python CLI contract exactly: same `--quiet` flag,
7
7
  * scan scope (src/domains/**\/command.md, legacy packages fallback), file
8
8
  * ordering, frontmatter parsing, finding messages, stdout/stderr split, and
9
9
  * exit codes (0 clean, 1 violations, 3 internal error). No behaviour changes —
10
- * latent bugs replicated.
10
+ * historical quirks preserved (consumers pin the exact behaviour).
11
11
  *
12
12
  * Every VISIBLE command (tier 0/1) must carry:
13
13
  * - `intent` — non-empty one-line existence justification
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Lint slash-command frontmatter for the `tier:` key.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_command_tiers.py` (ADR-200, Phase 4 /
5
+ * Ported from the retired Python `src/scripts/lint_command_tiers.py` (ADR-200, Phase 4 /
6
6
  * Wave 4b). Mirrors the Python CLI contract exactly: same scan scope, file
7
7
  * ordering, finding messages, stdout/stderr split, and exit codes
8
8
  * (return-code bitwise-OR accumulation across the domain + per-root +
@@ -2,13 +2,13 @@
2
2
  /**
3
3
  * Controlled-verb linter for visible commands.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_command_verbs.py` (ADR-200,
6
- * Phase 4 / Wave 4b). The CLI contract is mirrored EXACTLY — `--baseline`
5
+ * Ported from the retired Python `src/scripts/lint_command_verbs.py` (ADR-200,
6
+ * Phase 4 / Wave 4b). The CLI contract is pinned — `--baseline`
7
7
  * / `--all` / `--quiet` flags, exit codes (0 clean, 1 violations, 3
8
8
  * internal error), stdout/stderr split, byte-identical finding messages,
9
9
  * same scan scope (forward-only git diff + working-tree status, or every
10
10
  * visible command under `--all`), and the same sorted iteration order.
11
- * snake_case kept. No behaviour changes — latent bugs replicated.
11
+ * snake_case kept. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
12
12
  *
13
13
  * A VISIBLE command (tier 0/1) must have a leading token drawn from the
14
14
  * approved verb allowlist in `src/config/discovery/command-verbs.yml`.
@@ -312,7 +312,7 @@ function parse_args(argv: readonly string[]): ParsedArgs {
312
312
 
313
313
  function _argparse_error(message: string): never {
314
314
  // Mirror Python argparse: usage line + program error, both on stderr,
315
- // exit code 2. The prog name is the basename of the Python original.
315
+ // exit code 2. The prog name is the basename of the retired Python implementation.
316
316
  process.stderr.write(
317
317
  'usage: lint_command_verbs.py [-h] [--baseline BASELINE] [--all] [--quiet]\n',
318
318
  );
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Commit-subject linter.
4
4
  *
5
- * TypeScript twin of `src/scripts/lint_commit_subjects.py` (ADR-200,
6
- * Phase 4 / Wave 4b). The CLI contract is mirrored EXACTLY — `--base`
5
+ * Ported from the retired Python `src/scripts/lint_commit_subjects.py` (ADR-200,
6
+ * Phase 4 / Wave 4b). The CLI contract is pinned — `--base`
7
7
  * / `--head` / `--quiet` flags, exit codes (0 clean / advisory, 1
8
8
  * violations), stdout/stderr split, byte-identical finding messages
9
9
  * (the issue strings are grepped by tests), and the same git invocation