@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,7 +2,7 @@
2
2
  /**
3
3
  * Surface-tier boundary guard (road-to-install-contract-stability Phase 2).
4
4
  *
5
- * TypeScript twin of `src/scripts/check_surface_tiers.py` (ADR-200). The CLI
5
+ * Ported from the retired Python `src/scripts/check_surface_tiers.py` (ADR-200). The CLI
6
6
  * contract is mirrored EXACTLY — the `--skip-imports` flag + the
7
7
  * `AGENT_CONFIG_SKIP_SURFACE_TIER_CHECK` env kill-switch, exit codes (0 clean,
8
8
  * 1 violation(s), 2 argparse usage error), byte-identical finding + summary
@@ -10,7 +10,7 @@
10
10
  * same core→lab import boundary check. No behaviour changes — latent bugs
11
11
  * replicated.
12
12
  *
13
- * The Python original parses each `.py` under `src/scripts/` with the stdlib
13
+ * the retired Python implementation parses each `.py` under `src/scripts/` with the stdlib
14
14
  * `ast` module to find imports and the line numbers of imports lexically inside
15
15
  * a guarding `try/except`. This twin replicates that with a focused Python
16
16
  * import + try/except line scanner: it tracks each statement's START line (the
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Fail when `package.json.version` and the project-template pin drift.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_template_pin_drift.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/check_template_pin_drift.py` (ADR-200,
6
6
  * Phase 4 / Wave 4c). CLI contract mirrored EXACTLY — `--allow-empty`
7
7
  * flag, exit codes (0 match / empty-allowed, 1 drift / missing / unreadable),
8
8
  * byte-identical messages, stdout/stderr split, same template-file
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Coverage forcing-function — WARN-only (R3 of road-to-test-and-gate-integrity).
4
4
  *
5
- * TypeScript twin of `src/scripts/check_test_coverage_diff.py` (ADR-200,
6
- * Phase 4 / Wave 4c). Mirrors the Python CLI contract EXACTLY — `--base-ref`
5
+ * Ported from the retired Python `src/scripts/check_test_coverage_diff.py` (ADR-200,
6
+ * Phase 4 / Wave 4c). The CLI contract is pinned — `--base-ref`
7
7
  * flag, always exit 0 (warn-only by contract), stdout, byte-identical
8
8
  * messages, the git name-status read, the pragma scan, and the `evaluate`
9
9
  * core logic. No behaviour changes — latent matcher quirks replicated.
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * Token-Optimizer freshness validator.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_token_optimizer_freshness.py` (ADR-200,
6
- * Phase 4 / Wave 4c). The CLI contract is mirrored EXACTLY — no flags,
5
+ * Ported from the retired Python `src/scripts/check_token_optimizer_freshness.py` (ADR-200,
6
+ * Phase 4 / Wave 4c). The CLI contract is pinned — no flags,
7
7
  * exit codes (0 clean, 1 drift / missing skill / unparseable), stdout/stderr
8
8
  * split, byte-identical messages, the same catalog-row parsing, the same
9
9
  * `resolve()` / `is_external()` logic and the same `_lib/agent_src`
10
- * resolution. No behaviour changes — latent bugs replicated.
10
+ * resolution. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
11
11
  *
12
12
  * Parses the catalog table inside the token-optimizer SKILL.md, verifies
13
13
  * every cited internal asset exists, and checks the trigger keywords against
@@ -2,13 +2,13 @@
2
2
  /**
3
3
  * Trigger-eval freshness + structural smoke gate (road-to-contract-integrity F4).
4
4
  *
5
- * TypeScript twin of `src/scripts/check_trigger_evals.py` (ADR-200). The CLI
5
+ * Ported from the retired Python `src/scripts/check_trigger_evals.py` (ADR-200). The CLI
6
6
  * contract is mirrored EXACTLY — `--today YYYY-MM-DD` / `--quiet` flags, exit
7
7
  * codes (0 fresh+valid, 1 regression(s), 2 bad --today / usage), the
8
8
  * stdout/stderr split (the ✅ summary on stdout, every ❌ on stderr),
9
9
  * byte-identical finding messages, the same glob (sorted), the same two
10
10
  * supported shapes, and the same ISO-date / age logic. No behaviour changes —
11
- * latent bugs replicated.
11
+ * historical quirks preserved (consumers pin the exact behaviour).
12
12
  *
13
13
  * `triggers.json` files encode each skill's behavioural intent; the surrounding
14
14
  * repo context drifts, so trigger sets need regression-locking. This gate is
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Thin CLI wrapper: emit the daily update-check banner to stderr.
4
4
  *
5
- * TypeScript twin of `src/scripts/check_update_banner.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/check_update_banner.py` (ADR-200,
6
6
  * Phase 4 / Wave 4c). CLI contract mirrored EXACTLY — `--installed-version`,
7
7
  * `--cwd`, `--help`/`-h` flags; never raises, never exits non-zero;
8
8
  * banner (when emitted) goes to stderr; all other output suppressed.
Binary file
@@ -2,11 +2,11 @@
2
2
  /**
3
3
  * CI Summary — render a GitHub Step Summary from dispatcher run results.
4
4
  *
5
- * TypeScript twin of `src/scripts/ci_summary.py` (ADR-200 — Python→TS
6
- * migration, Phase 8 / Wave 8a). The CLI contract is mirrored EXACTLY:
5
+ * Ported from the retired Python `src/scripts/ci_summary.py` (ADR-200 — Python→TS
6
+ * migration, Phase 8 / Wave 8a). The CLI contract is pinned:
7
7
  * same flags (`--runs`, `--title`), same defaults, same stdout/env-file
8
8
  * behaviour, same byte-identical markdown output, same exit code (always
9
- * 0). No behaviour changes — latent bugs replicated.
9
+ * 0). Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
10
10
  *
11
11
  * Consumes JSON files produced by `scripts/runtime_dispatcher.py run
12
12
  * --output FILE`. Each file is an ExecutionResult dump (see
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * CI-time / local-edit-time ratio (council file 07, Phase 2.3).
4
4
  *
5
- * TypeScript twin of `ci_time_ratio.py` (Phase 8 / Wave 8e).
5
+ * Ported from the retired Python `ci_time_ratio.py` (Phase 8 / Wave 8e).
6
6
  *
7
7
  * Samples the last N commits on a branch, classifies each by touched
8
8
  * paths (doc / skill / test / meta / mixed), and computes:
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Suppress recently-shown suggestions per conversation.
3
3
  *
4
- * TypeScript twin of `src/scripts/command_suggester/cooldown.py`
4
+ * Ported from the retired Python `src/scripts/command_suggester/cooldown.py`
5
5
  * (ADR-200 py2ts).
6
6
  *
7
7
  * Cooldown key is `(command_name, evidence)` so two distinct triggers
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Context-aware command suggestion engine.
3
3
  *
4
- * TypeScript twin of `src/scripts/command_suggester/__init__.py`
4
+ * Ported from the retired Python `src/scripts/command_suggester/__init__.py`
5
5
  * (ADR-200 py2ts).
6
6
  *
7
7
  * Public API exposed for the always-on `command-suggestion` rule and for
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Read command frontmatter into `CommandSpec` instances.
3
3
  *
4
- * TypeScript twin of `src/scripts/command_suggester/loader.py`
4
+ * Ported from the retired Python `src/scripts/command_suggester/loader.py`
5
5
  * (ADR-200 py2ts).
6
6
  *
7
7
  * Reuses the package's `validate_frontmatter.parse_frontmatter` twin
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Score eligible commands against a user message + recent context.
3
3
  *
4
- * TypeScript twin of `src/scripts/command_suggester/match.py`
4
+ * Ported from the retired Python `src/scripts/command_suggester/match.py`
5
5
  * (ADR-200 py2ts).
6
6
  *
7
7
  * Deterministic, no ML, no third-party deps. Two signals combine into
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Rank scored matches into the final candidate list.
3
3
  *
4
- * TypeScript twin of `src/scripts/command_suggester/rank.py`
4
+ * Ported from the retired Python `src/scripts/command_suggester/rank.py`
5
5
  * (ADR-200 py2ts).
6
6
  *
7
7
  * Pipeline:
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Render ranked matches as a numbered-options block.
3
3
  *
4
- * TypeScript twin of `src/scripts/command_suggester/render.py`
4
+ * Ported from the retired Python `src/scripts/command_suggester/render.py`
5
5
  * (ADR-200 py2ts).
6
6
  *
7
7
  * Output strictly conforms to `user-interaction` Iron Law:
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Sanitize matcher input to prevent self-echo and quoted-code triggering.
3
3
  *
4
- * TypeScript twin of `src/scripts/command_suggester/sanitize.py`
4
+ * Ported from the retired Python `src/scripts/command_suggester/sanitize.py`
5
5
  * (ADR-200 py2ts).
6
6
  *
7
7
  * The suggestion engine scores against the user's raw message and the
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Read `commands.suggestion.*` from `.agent-settings.yml` into `Settings`.
3
3
  *
4
- * TypeScript twin of `src/scripts/command_suggester/settings.py`
4
+ * Ported from the retired Python `src/scripts/command_suggester/settings.py`
5
5
  * (ADR-200 py2ts). Mirror of the chat-history pattern:
6
6
  *
7
7
  * - Default-permissive: a missing file or missing section returns
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Compile rule frontmatter into `router.json`.
4
4
  *
5
- * TypeScript twin of `src/scripts/compile_router.py` (ADR-200, Phase 5). The
5
+ * Ported from the retired Python `src/scripts/compile_router.py` (ADR-200). The
6
6
  * CLI contract is mirrored EXACTLY — the positional argv flags (`--pretty`,
7
7
  * `--check`), exit codes (0 = wrote / up-to-date; 1 = stale under --check), the
8
8
  * stdout/stderr split, byte-identical messages, AND byte-identical generated
@@ -12,9 +12,9 @@
12
12
  *
13
13
  * Imports the `_lib/agent_settings` (`project_settings_path`,
14
14
  * `load_agent_settings`) and `_lib/agent_src` (`artefact_roots`) twins — the
15
- * SAME modules the Python original imports.
15
+ * SAME modules the retired Python implementation imports.
16
16
  *
17
- * No behaviour changes — latent Python quirks replicated.
17
+ * Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
18
18
  *
19
19
  * Reads `.agent-src.uncondensed/rules/*.md`; produces deterministic JSON
20
20
  * mapping kernel + tier-1 + tier-2 rules to their triggers and routed
@@ -33,7 +33,7 @@ type Json = unknown;
33
33
  type JsonObject = Record<string, Json>;
34
34
 
35
35
  const _HERE = fileURLToPath(import.meta.url);
36
- // _HERE === <repo>/src/scripts/compile_router.ts ; the Python original derives
36
+ // _HERE === <repo>/src/scripts/compile_router.ts ; the retired Python implementation derives
37
37
  // ROOT = <file>.parent.parent.parent — two dirs up from src/scripts.
38
38
  export const ROOT = path.resolve(path.dirname(_HERE), '..', '..');
39
39
  // ADR-017: rules now live across multiple source roots. Legacy
@@ -5,15 +5,15 @@
5
5
  * symlinks for the rest; opt into rule symlinks via
6
6
  * augment.rules_use_symlinks in .agent-settings.yml).
7
7
  *
8
- * TypeScript twin of `src/scripts/condense.py` (ADR-200 — Python→TS
8
+ * Ported from the retired Python `src/scripts/condense.py` (ADR-200 — Python→TS
9
9
  * migration, Phase 5). Mirrors the Python CLI surface EXACTLY — every
10
10
  * subcommand (`--sync`, `--list`, `--changed`, `--check`, `--check-hashes`,
11
11
  * `--clean-hashes`, `--mark-done <path>`, `--mark-all-done`,
12
12
  * `--generate-tools`, `--clean-tools`, `--project-augment`) — same flags,
13
13
  * exit codes, stdout/stderr split, byte-identical messages. No behaviour
14
- * changes; latent Python bugs replicated and flagged.
14
+ * changes; historical quirks preserved and flagged.
15
15
  *
16
- * Path handling note: the Python original uses `pathlib.Path` objects.
16
+ * Path handling note: the retired Python implementation uses `pathlib.Path` objects.
17
17
  * This twin uses absolute path strings (the host filesystem on the
18
18
  * supported platforms is POSIX). Logical relative paths are always POSIX
19
19
  * (forward-slash) strings, matching the Python `.as_posix()` keys.
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Input-side memory condensation — Phase 2 of step-16-telegraph-substance.
4
4
  *
5
- * TypeScript twin of `src/scripts/condense_memory.py` (ADR-200, Phase 7 /
5
+ * Ported from the retired Python `src/scripts/condense_memory.py` (ADR-200, Phase 7 /
6
6
  * dev-side memory). The public API and CLI contract mirror the Python
7
7
  * original EXACTLY — same exported names (snake_case kept deliberately),
8
8
  * same exit codes, stdout/stderr split, byte-identical messages, and
@@ -6,7 +6,7 @@
6
6
  // read-only, lazy-PyYAML; they layer on top of `scripts/_lib/agent_settings`
7
7
  // for project-root anchoring.
8
8
  //
9
- // Twin of `src/scripts/config/__init__.py`. The Python package's
9
+ // Ported from the retired Python `src/scripts/config/__init__.py` (ADR-200). The Python package's
10
10
  // `__init__.py` declares no public symbols (only the module docstring), so
11
11
  // this barrel intentionally re-exports nothing — importers reach into the
12
12
  // individual twins (`./presets.js`, `./profiles.js`, `./packs.js`,
@@ -18,7 +18,7 @@
18
18
  // tsx src/scripts/config/packs.ts --packs laravel,finance-basic
19
19
  // tsx src/scripts/config/packs.ts --legacy-all
20
20
  //
21
- // Twin of `src/scripts/config/packs.py`.
21
+ // Ported from the retired Python `src/scripts/config/packs.py` (ADR-200).
22
22
  import * as path from 'node:path';
23
23
  import * as fs from 'node:fs';
24
24
  import { fileURLToPath, pathToFileURL } from 'node:url';
@@ -18,7 +18,7 @@
18
18
  // `developer` vs `block_on_risk.financial_paths` for `founder`) read the
19
19
  // merged knob bag returned by `resolve_preset`.
20
20
  //
21
- // Twin of `src/scripts/config/presets.py`.
21
+ // Ported from the retired Python `src/scripts/config/presets.py` (ADR-200).
22
22
  import * as fs from 'node:fs';
23
23
  import { createRequire } from 'node:module';
24
24
  import * as path from 'node:path';
@@ -14,7 +14,7 @@
14
14
  // Reuses the explain-modes two-views-over-one-envelope convention
15
15
  // (`docs/contracts/explain-modes.md`).
16
16
  //
17
- // Twin of `src/scripts/config/profile_explain.py`.
17
+ // Ported from the retired Python `src/scripts/config/profile_explain.py` (ADR-200).
18
18
 
19
19
  // `any` mirrors Python's `dict[str, Any]` envelope; values are heterogeneous
20
20
  // (lists, ints, bools, the `?` placeholder string) and consumed only through
@@ -18,7 +18,7 @@
18
18
  // block, the loader returns a structured warning state so `/onboard` can
19
19
  // surface "audience not yet picked".
20
20
  //
21
- // Twin of `src/scripts/config/profiles.py`.
21
+ // Ported from the retired Python `src/scripts/config/profiles.py` (ADR-200).
22
22
  import * as fs from 'node:fs';
23
23
  import { createRequire } from 'node:module';
24
24
  import * as path from 'node:path';
@@ -24,7 +24,7 @@
24
24
  // Pure functions are unit-testable; the `__main__` CLI is what the `/profile`
25
25
  // command shells out to.
26
26
  //
27
- // Twin of `src/scripts/config/session_profiles.py`.
27
+ // Ported from the retired Python `src/scripts/config/session_profiles.py` (ADR-200).
28
28
  import * as crypto from 'node:crypto';
29
29
  import * as fs from 'node:fs';
30
30
  import { createRequire } from 'node:module';
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Platform-agnostic PostToolUse hook for the `context-hygiene` rule.
4
4
  *
5
- * TypeScript twin of `src/scripts/context_hygiene_hook.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/context_hygiene_hook.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 6 / hooks). Public API mirrors the Python
7
7
  * module exactly (snake_case kept deliberately — fidelity over TS idiom).
8
8
  *
@@ -39,7 +39,7 @@ import { atomic_write_json } from "./hooks/state_io.js";
39
39
 
40
40
  // NOTE: the Python docstring says `agents/runtime/state/`, but the code
41
41
  // constant is `agents/state/`. Replicated verbatim — this is a latent
42
- // docstring/code divergence in the Python original (ADR-200 § replicate
42
+ // docstring/code divergence in the retired Python implementation (ADR-200 § replicate
43
43
  // latent bugs), and `STATE_FILE` is what the test suite asserts against.
44
44
  export const STATE_DIR = path.join("agents", "state");
45
45
  export const STATE_FILE = path.join(STATE_DIR, "context-hygiene.json");
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Group cost-tracking sessions by conversation_id (the external runtime `conversation.mjs` `5b71c7a` ref).
4
4
  *
5
- * TypeScript twin of `src/scripts/cost_by_conversation.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/cost_by_conversation.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 8 / Wave 8e). Public surface mirrors the Python
7
7
  * module exactly: same CLI flags (`--input`, `--format`), same exit code (0),
8
8
  * same stdout, and byte-identical `json.dumps(..., indent=2)` output.
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Emit `cost-summary/v1` JSON per `docs/contracts/cost-summary-schema.md`.
4
4
  *
5
- * TypeScript twin of `src/scripts/cost_summary.py` (ADR-200 — Python→TS
6
- * migration, Phase 8 / Wave 8e). The CLI contract is mirrored EXACTLY:
5
+ * Ported from the retired Python `src/scripts/cost_summary.py` (ADR-200 — Python→TS
6
+ * migration, Phase 8 / Wave 8e). The CLI contract is pinned:
7
7
  * same flags (`--input`, `--format json`), same exit code (0), same
8
8
  * byte-identical JSON output (json.dumps indent=2; PyFloat-aware so
9
9
  * `total_cost_usd` renders with a trailing `.0` like Python). The
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Council CLI — `./agent-config council:{estimate,run,render}`.
4
4
  *
5
- * TypeScript twin of `council_cli.py` (py2ts Phase 1, ADR-200). Wraps
5
+ * Ported from the retired Python `council_cli.py` (ADR-200). Wraps
6
6
  * `ai_council/orchestrator` for non-interactive callers. Subcommands:
7
7
  *
8
8
  * estimate Bundle + estimate per-member cost (no API call, no spend).
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Manual pruner for council artefacts.
3
3
  *
4
- * TypeScript twin of `src/scripts/council_prune.py` (ADR-200 — Python→TS
4
+ * Ported from the retired Python `src/scripts/council_prune.py` (ADR-200 — Python→TS
5
5
  * migration, Phase 1).
6
6
  *
7
7
  * Deletes council files older than `ai_council.session_retention_days`
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Cross-repo retrieval — read-only, targeted, opt-in (ADR-032 Option A).
4
4
  *
5
- * TypeScript twin of `src/scripts/cross_repo_retrieve.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/cross_repo_retrieve.py` (ADR-200,
6
6
  * Phase 8 / Wave 8g). Mirrors the Python contract EXACTLY — positional
7
7
  * `query` + `--path-scope` / `--max-chunks` / `--format` / `--root` flags,
8
8
  * the retrieval envelope shape, the text-table render, opt-in / large-sibling
@@ -18,7 +18,7 @@
18
18
  * pulls in `workspace_secrets`). Those modules are not yet ported to
19
19
  * TypeScript and a `.ts` cannot import a `.py`, so the redaction + chunking
20
20
  * primitives are ported faithfully inline here and verified byte-identical
21
- * against the Python originals (differential-tested, no behavior divergence).
21
+ * against the retired Python implementations (differential-tested, no behavior divergence).
22
22
  * They carry no legacy-source-path literal, matching the `.py`.
23
23
  *
24
24
  * Scope guards (Option A):
@@ -2,15 +2,15 @@
2
2
  /**
3
3
  * Pretty-print the `stats` block from the committed discovery manifest.
4
4
  *
5
- * TypeScript twin of `src/scripts/discovery_stats.py` (ADR-200, Phase 8 /
6
- * Wave 8a). The CLI contract is mirrored EXACTLY — the single `--manifest`
5
+ * Ported from the retired Python `src/scripts/discovery_stats.py` (ADR-200, Phase 8 /
6
+ * Wave 8a). The CLI contract is pinned — the single `--manifest`
7
7
  * flag (default `dist/discovery/discovery-manifest.json`), exit codes
8
8
  * (0 printed · 1 manifest missing or malformed), the stdout/stderr split,
9
9
  * and byte-identical messages. Cheap sanity surface for developers: counts
10
10
  * by category, lifecycle, and trust level. Reads only the committed
11
11
  * manifest; no scan, no generation. See ADR-015.
12
12
  *
13
- * No behaviour changes — latent Python quirks replicated.
13
+ * Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
14
14
  */
15
15
  import * as fs from 'node:fs';
16
16
  import * as path from 'node:path';
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Evidence Report template automation.
4
4
  *
5
- * TypeScript twin of `src/scripts/evidence_report.py` (ADR-200). The CLI
6
- * contract mirrors the Python original EXACTLY — same subcommands
5
+ * Ported from the retired Python `src/scripts/evidence_report.py` (ADR-200). The CLI
6
+ * contract pins the historical contract exactly — same subcommands
7
7
  * (`init`, `add`, `git-state`), same flags, same exit codes (0 / 1 / 3),
8
8
  * same stdout/stderr split, byte-identical messages, the same
9
9
  * skeleton/provenance text, the same heading-insertion logic, and the
@@ -29,7 +29,7 @@ import * as path from 'node:path';
29
29
  import process from 'node:process';
30
30
  import { fileURLToPath, pathToFileURL } from 'node:url';
31
31
 
32
- // argparse `prog` is hardcoded to "evidence_report.py" in the Python original,
32
+ // argparse `prog` is hardcoded to "evidence_report.py" in the retired Python implementation,
33
33
  // so usage strings stay byte-identical regardless of the `.py`/`.ts` filename.
34
34
  const PROG = 'evidence_report.py';
35
35
  // First line of the module docstring — argparse `description`.
@@ -182,7 +182,7 @@ function cmd_add(args: ParsedArgs, root: string): number {
182
182
  insert_at = i;
183
183
  break;
184
184
  }
185
- // NOTE: dead branch in the Python original (in_target is false here);
185
+ // NOTE: dead branch in the retired Python implementation (in_target is false here);
186
186
  // replicated faithfully — never reached.
187
187
  if (in_target && line.startsWith('## ')) {
188
188
  insert_at = i;
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Mine repeated phase patterns from `agents/runtime/state/audit/*.jsonl`.
4
4
  *
5
- * TypeScript twin of `src/scripts/extract_audit_patterns.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/extract_audit_patterns.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 8 / Wave 8g). Mirrors the Python CLI contract
7
7
  * EXACTLY — the `--audit-dir` / `--month` / `--min-count` / `--json` flags,
8
8
  * exit codes (0 ok / 2 min-count below floor), the stdout/stderr split,
@@ -16,7 +16,7 @@
16
16
  *
17
17
  * Read-only: never mutates the JSONL, never writes outside stdout.
18
18
  *
19
- * No behaviour changes — latent Python quirks replicated.
19
+ * Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
20
20
  */
21
21
  import * as fs from 'node:fs';
22
22
  import * as path from 'node:path';
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * First-run gate — surface the marketplace-install-but-unscaffolded shape.
4
4
  *
5
- * TypeScript twin of `src/scripts/first_run_gate_hook.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/first_run_gate_hook.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 6 / hooks). Public API mirrors the Python
7
7
  * module exactly (snake_case kept deliberately — fidelity over TS idiom).
8
8
  *
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env tsx
2
2
  /** Generate agents/evidence/notes/discovery-baseline.md for Phase 0.1.
3
3
  *
4
- * TypeScript twin of `src/scripts/gen_discovery_baseline.py` (ADR-200, Phase 8
5
- * / Wave 8h). Mirrors the Python CLI contract EXACTLY — no flags, exit 0,
4
+ * Ported from the retired Python `src/scripts/gen_discovery_baseline.py` (ADR-200, Phase 8
5
+ * / Wave 8h). The CLI contract is pinned — no flags, exit 0,
6
6
  * byte-identical stdout (`wrote {dest} — {n} lines`) and byte-identical written
7
7
  * `discovery-baseline.md` (except the generated UTC timestamp, which is
8
8
  * non-deterministic and excluded from golden parity). No behaviour changes:
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Generate `CAPABILITIES.yaml` — the package's capability-coverage index.
4
4
  *
5
- * TypeScript twin of `src/scripts/generate_capabilities_index.py` (ADR-200).
6
- * Mirrors the Python CLI contract EXACTLY — the `--check` flag, exit codes
5
+ * Ported from the retired Python `src/scripts/generate_capabilities_index.py` (ADR-200).
6
+ * The CLI contract is pinned — the `--check` flag, exit codes
7
7
  * (0 / 1 / 2), stdout/stderr split, and the byte-identical generated
8
8
  * `CAPABILITIES.yaml` (header comment block, `meta:` block, `capability_areas:`
9
9
  * by domain, `gaps:` block, the `json.dumps(..., ensure_ascii=False)` scalar
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Generate the cross-host capability matrix (road-to-competitive-borrow P1.3).
4
4
  *
5
- * TypeScript twin of `src/scripts/generate_capability_matrix.py` (ADR-200).
6
- * Mirrors the Python CLI contract EXACTLY — the `--check` / `--quiet` flags,
5
+ * Ported from the retired Python `src/scripts/generate_capability_matrix.py` (ADR-200).
6
+ * The CLI contract is pinned — the `--check` / `--quiet` flags,
7
7
  * exit codes (0 / 1 / 2), stdout/stderr split, the byte-identical
8
8
  * `docs/capability-matrix.md` (heading prose, the host-header table, the glyph
9
9
  * cells, ARTIFACTS row order), and the byte-identical
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Generate llms.txt and docs/skills-catalog.md from SKILL.md frontmatter.
4
4
  *
5
- * TypeScript twin of `src/scripts/generate_catalog.py` (ADR-200, Phase 8
6
- * Wave 8a). Mirrors the Python CLI contract EXACTLY — same stdout lines,
5
+ * Ported from the retired Python `src/scripts/generate_catalog.py` (ADR-200, Phase 8
6
+ * Wave 8a). The CLI contract is pinned — same stdout lines,
7
7
  * same exit codes, byte-identical generated `llms.txt` + `docs/skills-catalog.md`.
8
8
  *
9
9
  * Reads name + description from each `dist/agent-src/skills/*\/SKILL.md` and
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * Generate `docs/command-flows.md` — the Flows primary view (road-to-6.1.0 Step 9).
4
4
  *
5
- * TypeScript twin of `src/scripts/generate_command_flows.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/generate_command_flows.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 8 / Wave 8a). The CLI contract is mirrored
7
7
  * EXACTLY: same flag (`--check`), same exit codes, same stdout/stderr
8
8
  * split, same byte-identical generated `docs/command-flows.md`. WRITER —
9
9
  * the rendered markdown matches the Python output byte-for-byte. No
10
- * behaviour changes — latent bugs replicated.
10
+ * behaviour changes — historical quirks preserved (consumers pin the exact behaviour).
11
11
  *
12
12
  * Turns the flat command list into a FLOW-organized view from two
13
13
  * validated sources:
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Generate the named cookbook (road-to-competitive-borrow P1.4).
4
4
  *
5
- * TypeScript twin of `src/scripts/generate_cookbook.py` (ADR-200). Mirrors the
5
+ * Ported from the retired Python `src/scripts/generate_cookbook.py` (ADR-200). Mirrors the
6
6
  * Python CLI contract EXACTLY — the `--check` / `--quiet` flags, exit codes
7
7
  * (0 / 1 / 2), stdout/stderr split, and the byte-identical generated
8
8
  * `docs/cookbook.md` (heading prose, the named-recipe sections, the four
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Generate `agents/index.md` (internal) and `docs/catalog.md` (public).
4
4
  *
5
- * TypeScript twin of `src/scripts/generate_index.py` (ADR-200, Phase 8 /
6
- * Wave 8a). The CLI contract is mirrored EXACTLY — the single `--check`
5
+ * Ported from the retired Python `src/scripts/generate_index.py` (ADR-200, Phase 8 /
6
+ * Wave 8a). The CLI contract is pinned — the single `--check`
7
7
  * flag, exit codes (0 / 1 on drift), the stdout split, byte-identical
8
8
  * messages, AND byte-identical generated Markdown (both files are write
9
9
  * targets; both are sync-checked in CI via `--check`).
@@ -12,7 +12,7 @@
12
12
  * `docs/guidelines/` (via the `_lib/agent_src` twin's multi-root discovery)
13
13
  * and renders two artefact tables — one for maintainers, one for consumers.
14
14
  *
15
- * No behaviour changes — latent Python quirks replicated.
15
+ * Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
16
16
  */
17
17
  import * as fs from 'node:fs';
18
18
  import * as path from 'node:path';
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Generate the file-ownership matrix.
4
4
  *
5
- * TypeScript twin of `src/scripts/generate_ownership_matrix.py` (ADR-200,
6
- * Phase 8 Wave 8a). Mirrors the Python CLI contract EXACTLY — flag
5
+ * Ported from the retired Python `src/scripts/generate_ownership_matrix.py` (ADR-200,
6
+ * Phase 8 Wave 8a). The CLI contract is pinned — flag
7
7
  * (`--check`), exit codes (0 / 1 / 2 / 3), stdout/stderr split, and the
8
8
  * byte-identical generated outputs (`json.dumps(payload, indent=2,
9
9
  * sort_keys=False)` + trailing newline, and the markdown render).
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Generate `pack.yaml` + `README.md` for every pack home.
4
4
  *
5
- * TypeScript twin of `src/scripts/generate_pack_manifests.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/generate_pack_manifests.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 8 / Wave 8a). The CLI contract is mirrored
7
7
  * EXACTLY: same flag (`--check`), same exit codes, same stdout/stderr
8
8
  * split, same byte-identical generated `pack.yaml` + `README.md`. WRITER
@@ -10,7 +10,7 @@
10
10
  * PyYAML `safe_dump(meta, sort_keys=True, allow_unicode=True)` block-style
11
11
  * emission (`_py_safe_dump` below reproduces PyYAML's scalar-quoting +
12
12
  * block-collection layout for the value shapes this script emits). No
13
- * behaviour changes — latent bugs replicated.
13
+ * behaviour changes — historical quirks preserved (consumers pin the exact behaviour).
14
14
  *
15
15
  * Phase 4.4 of the monorepo migration (ADR-017). The manifests are
16
16
  * *derived* from frontmatter + `src/config/discovery/packs.yml`; they are