@event4u/agent-config 8.4.1 → 8.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (572) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +67 -0
  3. package/README.md +17 -5
  4. package/dist/agent-src/README.md +1 -1
  5. package/dist/agent-src/commands/{analyze-reference-repo.md → analyze/reference-repo.md} +3 -1
  6. package/dist/agent-src/commands/analyze.md +9 -6
  7. package/dist/agent-src/commands/{bug-fix.md → bug/fix.md} +3 -1
  8. package/dist/agent-src/commands/{bug-investigate.md → bug/investigate.md} +4 -2
  9. package/dist/agent-src/commands/bug.md +59 -0
  10. package/dist/agent-src/commands/{set-cost-profile.md → cost/profile.md} +9 -6
  11. package/dist/agent-src/commands/{cost-report.md → cost/report.md} +18 -17
  12. package/dist/agent-src/commands/cost.md +57 -0
  13. package/dist/agent-src/commands/evals/{review-changes.json → review.json} +12 -8
  14. package/dist/agent-src/commands/{quality-fix.md → fix/quality.md} +5 -2
  15. package/dist/agent-src/commands/fix.md +7 -4
  16. package/dist/agent-src/commands/optimize/project.md +250 -0
  17. package/dist/agent-src/commands/{optimize-prompt.md → optimize/prompt.md} +3 -2
  18. package/dist/agent-src/commands/optimize.md +17 -12
  19. package/dist/agent-src/commands/{package-reset.md → package/reset.md} +2 -0
  20. package/dist/agent-src/commands/{package-test.md → package/test.md} +3 -1
  21. package/dist/agent-src/commands/package.md +56 -0
  22. package/dist/agent-src/commands/{project-analyze.md → project/analyze.md} +10 -8
  23. package/dist/agent-src/commands/{project-health.md → project/health.md} +2 -0
  24. package/dist/agent-src/commands/project.md +60 -0
  25. package/dist/agent-src/commands/{review-changes.md → review/changes.md} +26 -24
  26. package/dist/agent-src/commands/{review-routing.md → review/routing.md} +21 -17
  27. package/dist/agent-src/commands/review.md +61 -0
  28. package/dist/agent-src/commands/security-audit-config.md +24 -23
  29. package/dist/agent-src/commands/{sync-agent-settings.md → sync/agent-settings.md} +11 -7
  30. package/dist/agent-src/commands/{sync-gitignore → sync/gitignore}/fix.md +36 -27
  31. package/dist/agent-src/commands/{sync-gitignore.md → sync/gitignore.md} +22 -21
  32. package/dist/agent-src/commands/sync.md +58 -0
  33. package/dist/agent-src/commands/{e2e-heal.md → tests/e2e-heal.md} +5 -2
  34. package/dist/agent-src/commands/{e2e-plan.md → tests/e2e-plan.md} +5 -2
  35. package/dist/agent-src/commands/tests.md +11 -5
  36. package/dist/agent-src/contexts/augment-infrastructure.md +3 -3
  37. package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
  38. package/dist/agent-src/contexts/skills-and-commands.md +2 -2
  39. package/dist/agent-src/rules/external-reference-deep-dive.md +1 -1
  40. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
  41. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
  42. package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +1 -1
  43. package/dist/agent-src/skills/judge-code-quality/SKILL.md +1 -1
  44. package/dist/agent-src/skills/judge-security-auditor/SKILL.md +1 -1
  45. package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
  46. package/dist/agent-src/skills/judge-test-coverage/SKILL.md +1 -1
  47. package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
  48. package/dist/agent-src/skills/mobile-e2e-strategy/SKILL.md +5 -5
  49. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +2 -2
  50. package/dist/agent-src/skills/quality-tools/SKILL.md +1 -1
  51. package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
  52. package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
  53. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  54. package/dist/agent-src/templates/agent-settings.md +1 -1
  55. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +2 -2
  56. package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
  57. package/dist/cli/commands/config.js +44 -0
  58. package/dist/cli/commands/config.js.map +1 -0
  59. package/dist/cli/commands/uiServe.js +1 -0
  60. package/dist/cli/commands/uiServe.js.map +1 -1
  61. package/dist/cli/help.js +38 -0
  62. package/dist/cli/help.js.map +1 -0
  63. package/dist/cli/initRouting.js +16 -1
  64. package/dist/cli/initRouting.js.map +1 -1
  65. package/dist/cli/main.js +43 -37
  66. package/dist/cli/main.js.map +1 -1
  67. package/dist/cli/registry.js +45 -44
  68. package/dist/cli/registry.js.map +1 -1
  69. package/dist/discovery/deprecation-report.md +1 -1
  70. package/dist/discovery/discovery-manifest.json +419 -210
  71. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  72. package/dist/discovery/discovery-manifest.summary.md +4 -4
  73. package/dist/discovery/orphan-report.md +1 -1
  74. package/dist/discovery/packs.json +31 -25
  75. package/dist/discovery/trust-report.md +2 -2
  76. package/dist/discovery/workspaces.json +30 -24
  77. package/dist/install/install.mjs +6064 -159
  78. package/dist/install/selectedTools.js +39 -10
  79. package/dist/install/selectedTools.js.map +1 -1
  80. package/dist/mcp/registry-manifest.json +3 -3
  81. package/dist/server/app.js +15 -3
  82. package/dist/server/app.js.map +1 -1
  83. package/dist/server/routes/ping.js +16 -0
  84. package/dist/server/routes/ping.js.map +1 -1
  85. package/dist/server/routes/settings.js +42 -6
  86. package/dist/server/routes/settings.js.map +1 -1
  87. package/dist/server/routes/settingsChanges.js +55 -0
  88. package/dist/server/routes/settingsChanges.js.map +1 -0
  89. package/dist/server/routes/userMd.js +7 -2
  90. package/dist/server/routes/userMd.js.map +1 -1
  91. package/dist/server/routes/wizard.js +76 -14
  92. package/dist/server/routes/wizard.js.map +1 -1
  93. package/dist/server/writeRoot.js +17 -0
  94. package/dist/server/writeRoot.js.map +1 -1
  95. package/dist/shared/settingsSurface.js +120 -0
  96. package/dist/shared/settingsSurface.js.map +1 -0
  97. package/dist/ui/assets/index-BPFMZWUs.css +1 -0
  98. package/dist/ui/assets/index-BiEZiZ31.js +40 -0
  99. package/dist/ui/assets/index-BiEZiZ31.js.map +1 -0
  100. package/dist/ui/index.html +15 -2
  101. package/docs/CLAIMS.md +20 -15
  102. package/docs/architecture.md +1 -1
  103. package/docs/catalog.md +37 -31
  104. package/docs/command-flows.md +22 -16
  105. package/docs/contracts/command-clusters.md +39 -9
  106. package/docs/contracts/file-ownership-matrix.json +21 -0
  107. package/docs/contracts/frontmatter-contract.md +1 -1
  108. package/docs/contracts/gui-wizard.md +16 -4
  109. package/docs/contracts/iron-law-overrides.txt +1 -0
  110. package/docs/contracts/rule-classification.md +2 -2
  111. package/docs/contracts/settings-api.md +58 -2
  112. package/docs/contracts/surface-matrix.md +5 -0
  113. package/docs/cookbook.md +7 -7
  114. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +74 -0
  115. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +91 -0
  116. package/docs/decisions/INDEX.md +2 -0
  117. package/docs/featured-commands.md +1 -1
  118. package/docs/featured-skills.md +4 -4
  119. package/docs/flows.md +2 -2
  120. package/docs/getting-started-by-role.md +1 -1
  121. package/docs/getting-started-laravel.md +1 -1
  122. package/docs/getting-started.md +6 -3
  123. package/docs/governance-advantage.md +1 -1
  124. package/docs/guidelines/agent-infra/5w2h-analysis.md +1 -1
  125. package/docs/guidelines/agent-infra/ios-simulator-guide.md +1 -1
  126. package/docs/proof.md +11 -2
  127. package/package.json +3 -1
  128. package/src/agent-src/README.md +1 -1
  129. package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
  130. package/src/config/agent-settings.template.yml +1 -1
  131. package/src/install/selectedTools.ts +38 -10
  132. package/src/scripts/_cli/cmd_converge.ts +38 -0
  133. package/src/scripts/_cli/cmd_doctor.ts +113 -2
  134. package/src/scripts/_cli/cmd_explain.ts +2 -2
  135. package/src/scripts/_cli/cmd_export.ts +3 -3
  136. package/src/scripts/_cli/cmd_fleet.ts +13 -1
  137. package/src/scripts/_cli/cmd_migrate.ts +3 -3
  138. package/src/scripts/_cli/cmd_prune.ts +2 -2
  139. package/src/scripts/_cli/cmd_refresh.ts +4 -4
  140. package/src/scripts/_cli/cmd_settings_check.ts +2 -2
  141. package/src/scripts/_cli/cmd_settings_migrate.ts +2 -2
  142. package/src/scripts/_cli/cmd_sync.ts +2 -2
  143. package/src/scripts/_cli/cmd_uninstall.ts +2 -2
  144. package/src/scripts/_cli/cmd_update.ts +8 -8
  145. package/src/scripts/_cli/cmd_upgrade.ts +4 -3
  146. package/src/scripts/_cli/cmd_validate.ts +3 -3
  147. package/src/scripts/_cli/cmd_versions.ts +2 -2
  148. package/src/scripts/_cli/explain_last/assumptions.ts +2 -2
  149. package/src/scripts/_cli/explain_last/council.ts +2 -2
  150. package/src/scripts/_cli/explain_last/halt.ts +2 -2
  151. package/src/scripts/_cli/explain_last/index.ts +2 -2
  152. package/src/scripts/_cli/explain_last/inputs.ts +4 -4
  153. package/src/scripts/_cli/explain_last/memory.ts +2 -2
  154. package/src/scripts/_cli/explain_last/provider.ts +2 -2
  155. package/src/scripts/_cli/explain_last/render.ts +2 -2
  156. package/src/scripts/_cli/explain_last/route.ts +2 -2
  157. package/src/scripts/_cli/explain_last/scrubber.ts +2 -2
  158. package/src/scripts/_cli/explain_last/sections/assumptions.ts +2 -2
  159. package/src/scripts/_cli/explain_last/sections/council.ts +2 -2
  160. package/src/scripts/_cli/explain_last/sections/halt.ts +2 -2
  161. package/src/scripts/_cli/explain_last/sections/header.ts +2 -2
  162. package/src/scripts/_cli/explain_last/sections/index.ts +1 -1
  163. package/src/scripts/_cli/explain_last/sections/inputs.ts +2 -2
  164. package/src/scripts/_cli/explain_last/sections/memory.ts +2 -2
  165. package/src/scripts/_cli/explain_last/sections/pack.ts +2 -2
  166. package/src/scripts/_cli/explain_last/sections/provider.ts +2 -2
  167. package/src/scripts/_cli/explain_last/sections/route.ts +2 -2
  168. package/src/scripts/_cli/explain_last/state_loader.ts +2 -2
  169. package/src/scripts/_dispatch.bash +20 -1
  170. package/src/scripts/_lib/agent_settings.ts +1 -1
  171. package/src/scripts/_lib/agent_src.ts +7 -7
  172. package/src/scripts/_lib/agents_overlay.ts +1 -1
  173. package/src/scripts/_lib/bench_ab_cache.ts +1 -1
  174. package/src/scripts/_lib/bench_ab_scoring.ts +1 -1
  175. package/src/scripts/_lib/bench_ab_scoring_v2.ts +3 -3
  176. package/src/scripts/_lib/bench_cost.ts +1 -1
  177. package/src/scripts/_lib/bench_quality.ts +3 -3
  178. package/src/scripts/_lib/bench_report.ts +4 -4
  179. package/src/scripts/_lib/bench_telegraph.ts +1 -1
  180. package/src/scripts/_lib/bench_telegraph_report.ts +4 -4
  181. package/src/scripts/_lib/changelog_eras.ts +1 -1
  182. package/src/scripts/_lib/claude_desktop_bundler.ts +1 -1
  183. package/src/scripts/_lib/cli_wrapper.ts +1 -1
  184. package/src/scripts/_lib/fs_atomic.ts +1 -1
  185. package/src/scripts/_lib/global_deploy_inventory.ts +1 -1
  186. package/src/scripts/_lib/install_layout.ts +1 -1
  187. package/src/scripts/_lib/install_regenerator.ts +1 -1
  188. package/src/scripts/_lib/installed_lock.ts +1 -1
  189. package/src/scripts/_lib/installed_tools.ts +1 -1
  190. package/src/scripts/_lib/json_pointers.ts +1 -1
  191. package/src/scripts/_lib/knowledge_global.ts +1 -1
  192. package/src/scripts/_lib/knowledge_global_promote.ts +2 -2
  193. package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
  194. package/src/scripts/_lib/link_crypto.ts +4 -4
  195. package/src/scripts/_lib/linked_projects.ts +4 -4
  196. package/src/scripts/_lib/model_tier.ts +1 -1
  197. package/src/scripts/_lib/module_detection.ts +2 -2
  198. package/src/scripts/_lib/pin_resolver.ts +1 -1
  199. package/src/scripts/_lib/script_output.ts +1 -1
  200. package/src/scripts/_lib/security_lint.ts +1 -1
  201. package/src/scripts/_lib/surface_tiers.ts +1 -1
  202. package/src/scripts/_lib/text_similarity.ts +1 -1
  203. package/src/scripts/_lib/update_check.ts +2 -2
  204. package/src/scripts/_lib/user_global_paths.ts +1 -1
  205. package/src/scripts/_lib/value_ladder.ts +1 -1
  206. package/src/scripts/_lib/value_report.ts +1 -1
  207. package/src/scripts/_lib/zip_min.ts +2 -2
  208. package/src/scripts/adoption_report.ts +3 -3
  209. package/src/scripts/adoption_snapshot.ts +3 -3
  210. package/src/scripts/adoption_status.ts +2 -2
  211. package/src/scripts/adr/regenerate_index.ts +3 -3
  212. package/src/scripts/ai_council/_default_prices.ts +2 -3
  213. package/src/scripts/ai_council/advisors.ts +1 -1
  214. package/src/scripts/ai_council/airgap.ts +1 -1
  215. package/src/scripts/ai_council/budget_guard.ts +1 -1
  216. package/src/scripts/ai_council/bundler.ts +1 -1
  217. package/src/scripts/ai_council/cli_hints.ts +1 -1
  218. package/src/scripts/ai_council/clients.ts +5 -5
  219. package/src/scripts/ai_council/compile_corpus.ts +1 -1
  220. package/src/scripts/ai_council/confidence_gate.ts +1 -1
  221. package/src/scripts/ai_council/config.ts +1 -1
  222. package/src/scripts/ai_council/consensus.ts +1 -1
  223. package/src/scripts/ai_council/events_log.ts +1 -1
  224. package/src/scripts/ai_council/learn_low_impact_preview.ts +1 -1
  225. package/src/scripts/ai_council/low_impact_corpus.ts +1 -1
  226. package/src/scripts/ai_council/low_impact_intake.ts +1 -1
  227. package/src/scripts/ai_council/modes.ts +1 -1
  228. package/src/scripts/ai_council/orchestrator.ts +3 -3
  229. package/src/scripts/ai_council/pricing.ts +2 -2
  230. package/src/scripts/ai_council/probation_gate.ts +2 -2
  231. package/src/scripts/ai_council/project_context.ts +1 -1
  232. package/src/scripts/ai_council/prompts.ts +1 -1
  233. package/src/scripts/ai_council/redact_low_impact_entry.ts +2 -2
  234. package/src/scripts/ai_council/session.ts +1 -1
  235. package/src/scripts/ai_council/shadow_dispatch.ts +1 -1
  236. package/src/scripts/ai_council/solo_dispatch.ts +1 -1
  237. package/src/scripts/analysis_freshness.ts +2 -2
  238. package/src/scripts/annotate_discovery.ts +2 -2
  239. package/src/scripts/apply_modules_config.ts +2 -2
  240. package/src/scripts/audit_adr_coverage.ts +3 -3
  241. package/src/scripts/audit_auto_rules.ts +2 -2
  242. package/src/scripts/audit_cloud_compatibility.ts +3 -3
  243. package/src/scripts/audit_command_surface.ts +2 -2
  244. package/src/scripts/audit_initial_context.ts +7 -6
  245. package/src/scripts/audit_likelihood.ts +5 -5
  246. package/src/scripts/audit_mcp_tools.ts +3 -3
  247. package/src/scripts/audit_overlap.ts +2 -2
  248. package/src/scripts/audit_skill_descriptions.ts +2 -2
  249. package/src/scripts/audit_skill_overlap.ts +5 -5
  250. package/src/scripts/audit_user_type_axis.ts +4 -4
  251. package/src/scripts/backfill_model_tier.ts +1 -1
  252. package/src/scripts/bench_ab_cache_dispatch.ts +2 -2
  253. package/src/scripts/bench_ab_clone.ts +2 -2
  254. package/src/scripts/bench_ab_diff.ts +3 -3
  255. package/src/scripts/bench_ab_integrity.ts +2 -2
  256. package/src/scripts/bench_ab_run.ts +4 -4
  257. package/src/scripts/bench_ab_task_runner.ts +1 -1
  258. package/src/scripts/bench_ab_tracka_run.ts +2 -2
  259. package/src/scripts/bench_ab_v2_run.ts +1 -1
  260. package/src/scripts/bench_ab_v2_stats.ts +2 -2
  261. package/src/scripts/bench_baseline_ready.ts +1 -1
  262. package/src/scripts/bench_condense_memory.ts +4 -4
  263. package/src/scripts/bench_drift_check.ts +3 -3
  264. package/src/scripts/bench_per_tool.ts +1 -1
  265. package/src/scripts/bench_rtk_savings.ts +4 -4
  266. package/src/scripts/bench_run.ts +4 -4
  267. package/src/scripts/bench_runner.ts +1 -1
  268. package/src/scripts/build_cloud_bundle.ts +3 -3
  269. package/src/scripts/build_discovery_manifest.ts +13 -15
  270. package/src/scripts/build_linear_digest.ts +2 -2
  271. package/src/scripts/build_mcp_registry_manifest.ts +3 -3
  272. package/src/scripts/build_proof.ts +6 -0
  273. package/src/scripts/build_rule_trigger_matrix.ts +2 -2
  274. package/src/scripts/capture_showcase_session.ts +3 -3
  275. package/src/scripts/chat_history.ts +1 -1
  276. package/src/scripts/check_always_budget.ts +1 -1
  277. package/src/scripts/check_artefact_checksums.ts +4 -4
  278. package/src/scripts/check_artefact_count_messaging.ts +197 -0
  279. package/src/scripts/check_augment_description_cap.ts +3 -3
  280. package/src/scripts/check_augmentignore.ts +1 -1
  281. package/src/scripts/check_beta_review_markers.ts +3 -3
  282. package/src/scripts/check_bite_sized_granularity.ts +1 -1
  283. package/src/scripts/check_cluster_patterns.ts +47 -3
  284. package/src/scripts/check_command_count_messaging.ts +2 -2
  285. package/src/scripts/check_condensation.ts +2 -2
  286. package/src/scripts/check_condensed_paths.ts +6 -6
  287. package/src/scripts/check_context_paths.ts +1 -1
  288. package/src/scripts/check_council_config_location.ts +3 -3
  289. package/src/scripts/check_council_layout.ts +2 -2
  290. package/src/scripts/check_council_references.ts +2 -2
  291. package/src/scripts/check_discovery_determinism.ts +3 -3
  292. package/src/scripts/check_gate_paths.ts +4 -4
  293. package/src/scripts/check_iron_law_prominence.ts +2 -2
  294. package/src/scripts/check_kernel_rule_bundle.ts +3 -3
  295. package/src/scripts/check_knowledge_cards.ts +4 -4
  296. package/src/scripts/check_knowledge_pages.ts +1 -1
  297. package/src/scripts/check_md_language.ts +3 -3
  298. package/src/scripts/check_memory.ts +3 -3
  299. package/src/scripts/check_memory_proposal.ts +2 -2
  300. package/src/scripts/check_module_management_neutral.ts +1 -1
  301. package/src/scripts/check_no_conflict_markers.ts +1 -1
  302. package/src/scripts/check_no_external_sources.ts +1 -1
  303. package/src/scripts/check_no_local_settings_committed.ts +2 -2
  304. package/src/scripts/check_no_new_legacy_path.ts +3 -3
  305. package/src/scripts/check_no_roadmap_refs.ts +3 -3
  306. package/src/scripts/check_one_off_location.ts +3 -3
  307. package/src/scripts/check_overlay_cascade_subdirs.ts +3 -3
  308. package/src/scripts/check_portability.ts +3 -3
  309. package/src/scripts/check_proposal.ts +0 -0
  310. package/src/scripts/check_public_catalog_links.ts +1 -1
  311. package/src/scripts/check_public_links.ts +2 -2
  312. package/src/scripts/check_references.ts +3 -3
  313. package/src/scripts/check_release_includes_discovery.ts +2 -2
  314. package/src/scripts/check_release_pr_shape.ts +2 -2
  315. package/src/scripts/check_release_published.ts +1 -1
  316. package/src/scripts/check_release_trunk_sync.ts +3 -3
  317. package/src/scripts/check_reply_consistency.ts +1 -1
  318. package/src/scripts/check_roadmap_trackable.ts +2 -2
  319. package/src/scripts/check_role_doc_links.ts +2 -2
  320. package/src/scripts/check_safety_floor_untouched.ts +3 -3
  321. package/src/scripts/check_skill_requires.ts +2 -2
  322. package/src/scripts/check_structural_breaking.ts +2 -2
  323. package/src/scripts/check_surface_tiers.ts +2 -2
  324. package/src/scripts/check_template_pin_drift.ts +1 -1
  325. package/src/scripts/check_test_coverage_diff.ts +2 -2
  326. package/src/scripts/check_token_optimizer_freshness.ts +3 -3
  327. package/src/scripts/check_trigger_evals.ts +2 -2
  328. package/src/scripts/check_update_banner.ts +1 -1
  329. package/src/scripts/ci_status.ts +0 -0
  330. package/src/scripts/ci_summary.ts +3 -3
  331. package/src/scripts/ci_time_ratio.ts +1 -1
  332. package/src/scripts/command_suggester/cooldown.ts +1 -1
  333. package/src/scripts/command_suggester/index.ts +1 -1
  334. package/src/scripts/command_suggester/loader.ts +1 -1
  335. package/src/scripts/command_suggester/match.ts +1 -1
  336. package/src/scripts/command_suggester/rank.ts +1 -1
  337. package/src/scripts/command_suggester/render.ts +1 -1
  338. package/src/scripts/command_suggester/sanitize.ts +1 -1
  339. package/src/scripts/command_suggester/settings.ts +1 -1
  340. package/src/scripts/command_suggester/types.ts +0 -0
  341. package/src/scripts/compile_router.ts +4 -4
  342. package/src/scripts/condense.ts +3 -3
  343. package/src/scripts/condense_memory.ts +1 -1
  344. package/src/scripts/config/index.ts +1 -1
  345. package/src/scripts/config/packs.ts +1 -1
  346. package/src/scripts/config/presets.ts +1 -1
  347. package/src/scripts/config/profile_explain.ts +1 -1
  348. package/src/scripts/config/profiles.ts +1 -1
  349. package/src/scripts/config/session_profiles.ts +1 -1
  350. package/src/scripts/context_hygiene_hook.ts +2 -2
  351. package/src/scripts/cost_by_conversation.ts +1 -1
  352. package/src/scripts/cost_summary.ts +2 -2
  353. package/src/scripts/council_cli.ts +1 -1
  354. package/src/scripts/council_prune.ts +1 -1
  355. package/src/scripts/cross_repo_retrieve.ts +2 -2
  356. package/src/scripts/discovery_stats.ts +3 -3
  357. package/src/scripts/evidence_report.ts +4 -4
  358. package/src/scripts/extract_audit_patterns.ts +2 -2
  359. package/src/scripts/first_run_gate_hook.ts +1 -1
  360. package/src/scripts/gen_discovery_baseline.ts +2 -2
  361. package/src/scripts/generate_capabilities_index.ts +2 -2
  362. package/src/scripts/generate_capability_matrix.ts +2 -2
  363. package/src/scripts/generate_catalog.ts +2 -2
  364. package/src/scripts/generate_command_flows.ts +2 -2
  365. package/src/scripts/generate_cookbook.ts +1 -1
  366. package/src/scripts/generate_index.ts +3 -3
  367. package/src/scripts/generate_ownership_matrix.ts +2 -2
  368. package/src/scripts/generate_pack_manifests.ts +2 -2
  369. package/src/scripts/generate_role_experiences_catalog.ts +3 -3
  370. package/src/scripts/hooks/block_no_verify.ts +2 -2
  371. package/src/scripts/hooks/dispatch_hook.ts +2 -2
  372. package/src/scripts/hooks/dispatch_issues.ts +1 -1
  373. package/src/scripts/hooks/envelope.ts +1 -1
  374. package/src/scripts/hooks/replay_hook.ts +1 -1
  375. package/src/scripts/hooks/state_io.ts +1 -1
  376. package/src/scripts/hooks_doctor.ts +1 -1
  377. package/src/scripts/hooks_status.ts +1 -1
  378. package/src/scripts/injection_scan_hook.ts +1 -1
  379. package/src/scripts/install.ts +145 -3
  380. package/src/scripts/inventory_abstraction_budget.ts +5 -5
  381. package/src/scripts/inventory_frontmatter.ts +1 -1
  382. package/src/scripts/inventory_meta_layers.ts +1 -1
  383. package/src/scripts/iron_law_sha.ts +1 -1
  384. package/src/scripts/knowledge_global_cli.ts +3 -3
  385. package/src/scripts/linked_projects_list.ts +1 -1
  386. package/src/scripts/lint_agent_security.ts +4 -4
  387. package/src/scripts/lint_agent_skill_names.ts +1 -1
  388. package/src/scripts/lint_agents_layout.ts +2 -2
  389. package/src/scripts/lint_agents_md.ts +3 -3
  390. package/src/scripts/lint_archived_skills.ts +2 -2
  391. package/src/scripts/lint_artefact_frontmatter.ts +2 -2
  392. package/src/scripts/lint_bench_ab.ts +2 -2
  393. package/src/scripts/lint_bench_corpus.ts +1 -1
  394. package/src/scripts/lint_command_flow_coverage.ts +1 -1
  395. package/src/scripts/lint_command_routing.ts +2 -2
  396. package/src/scripts/lint_command_tiers.ts +1 -1
  397. package/src/scripts/lint_command_verbs.ts +4 -4
  398. package/src/scripts/lint_commit_subjects.ts +2 -2
  399. package/src/scripts/lint_context_spine_usage.ts +3 -3
  400. package/src/scripts/lint_discovery_manifest.ts +4 -4
  401. package/src/scripts/lint_discovery_vocabulary.ts +2 -2
  402. package/src/scripts/lint_empty_roadmaps.ts +3 -3
  403. package/src/scripts/lint_eval_freshness.ts +2 -2
  404. package/src/scripts/lint_examples.ts +2 -2
  405. package/src/scripts/lint_explain_trace.ts +2 -2
  406. package/src/scripts/lint_featured_skills.ts +0 -0
  407. package/src/scripts/lint_flows.ts +5 -5
  408. package/src/scripts/lint_framework_leakage.ts +1 -1
  409. package/src/scripts/lint_framework_leakage_allowlist.json +10 -2
  410. package/src/scripts/lint_frontmatter_boilerplate.ts +2 -2
  411. package/src/scripts/lint_ghostwriter_source.ts +3 -3
  412. package/src/scripts/lint_global_paths.ts +1 -1
  413. package/src/scripts/lint_handoffs.ts +1 -1
  414. package/src/scripts/lint_hidden_unicode.ts +1 -1
  415. package/src/scripts/lint_hook_concern_budget.ts +2 -2
  416. package/src/scripts/lint_hook_manifest.ts +2 -2
  417. package/src/scripts/lint_instruction_smuggling.ts +1 -1
  418. package/src/scripts/lint_load_context.ts +2 -2
  419. package/src/scripts/lint_marketplace.ts +1 -1
  420. package/src/scripts/lint_marketplace_install_completeness.ts +2 -2
  421. package/src/scripts/lint_mcp_config_security.ts +1 -1
  422. package/src/scripts/lint_mcp_registry_manifest.ts +1 -1
  423. package/src/scripts/lint_media_policy_linkage.ts +3 -3
  424. package/src/scripts/lint_missions.ts +3 -3
  425. package/src/scripts/lint_model_tier_coverage.ts +3 -3
  426. package/src/scripts/lint_namespace.ts +2 -2
  427. package/src/scripts/lint_namespace_collisions.ts +2 -2
  428. package/src/scripts/lint_new_skill_gate.ts +3 -3
  429. package/src/scripts/lint_no_new_atomic_commands.ts +9 -6
  430. package/src/scripts/lint_no_python_twin_rationale.ts +102 -0
  431. package/src/scripts/lint_one_off_age.ts +2 -2
  432. package/src/scripts/lint_orchestration_dsl.ts +3 -3
  433. package/src/scripts/lint_orchestrator_auto_detect.ts +1 -1
  434. package/src/scripts/lint_pack_boundaries.ts +2 -2
  435. package/src/scripts/lint_pack_dependencies.ts +2 -2
  436. package/src/scripts/lint_pack_first_win.ts +2 -2
  437. package/src/scripts/lint_persona_governance.ts +3 -3
  438. package/src/scripts/lint_positioning.ts +1 -1
  439. package/src/scripts/lint_profile_overlay_set_only.ts +2 -2
  440. package/src/scripts/lint_readme_jargon.ts +2 -2
  441. package/src/scripts/lint_readme_size.ts +2 -2
  442. package/src/scripts/lint_regression.ts +3 -3
  443. package/src/scripts/lint_roadmap_ci_steps.ts +3 -3
  444. package/src/scripts/lint_roadmap_complexity.ts +1 -1
  445. package/src/scripts/lint_roadmap_later_disposition.ts +2 -2
  446. package/src/scripts/lint_role_experiences.ts +2 -2
  447. package/src/scripts/lint_rule_interactions.ts +1 -1
  448. package/src/scripts/lint_rule_tiers.ts +1 -1
  449. package/src/scripts/lint_showcase_sessions.ts +2 -2
  450. package/src/scripts/lint_skill_frontmatter_safety.ts +1 -1
  451. package/src/scripts/lint_skill_originality.ts +1 -1
  452. package/src/scripts/lint_skill_tools.ts +3 -3
  453. package/src/scripts/lint_ticket_buildable.ts +2 -2
  454. package/src/scripts/lint_topics_yaml.ts +3 -3
  455. package/src/scripts/lint_trust_coherence.ts +3 -3
  456. package/src/scripts/lint_value_dashboard.ts +3 -3
  457. package/src/scripts/lint_workflow_security.ts +3 -3
  458. package/src/scripts/lint_workspace_boundary.ts +2 -2
  459. package/src/scripts/mcp_parity_smoke.ts +1 -1
  460. package/src/scripts/mcp_render.ts +1 -1
  461. package/src/scripts/mcp_server/catalog.ts +1 -1
  462. package/src/scripts/mcp_server/index.ts +1 -1
  463. package/src/scripts/mcp_server/metadata.ts +1 -1
  464. package/src/scripts/mcp_server/prompts.ts +1 -1
  465. package/src/scripts/mcp_server/resources.ts +1 -1
  466. package/src/scripts/mcp_server/server.ts +1 -1
  467. package/src/scripts/mcp_server/telemetry.ts +1 -1
  468. package/src/scripts/mcp_server/tools.ts +1 -1
  469. package/src/scripts/mcp_telemetry_health.ts +1 -1
  470. package/src/scripts/mcp_telemetry_query.ts +3 -3
  471. package/src/scripts/mcp_telemetry_store.ts +3 -3
  472. package/src/scripts/measure_augment_budget.ts +2 -2
  473. package/src/scripts/measure_density.ts +2 -2
  474. package/src/scripts/measure_frugality_savings.ts +3 -3
  475. package/src/scripts/measure_markitdown_lift.ts +1 -1
  476. package/src/scripts/measure_patterns.ts +1 -1
  477. package/src/scripts/measure_projection_bytes.ts +1 -1
  478. package/src/scripts/measure_rule_budget.ts +1 -1
  479. package/src/scripts/measure_skill_reduction.ts +1 -1
  480. package/src/scripts/memory_hash.ts +1 -1
  481. package/src/scripts/memory_lookup.ts +6 -6
  482. package/src/scripts/memory_report.ts +1 -1
  483. package/src/scripts/memory_signal.ts +1 -1
  484. package/src/scripts/memory_status.ts +2 -2
  485. package/src/scripts/migrate_command_suggestions.ts +1 -1
  486. package/src/scripts/migrate_frontmatter_defaults.ts +1 -1
  487. package/src/scripts/mine_session.ts +3 -3
  488. package/src/scripts/minimal_safe_diff_hook.ts +2 -2
  489. package/src/scripts/move_artefact.ts +3 -3
  490. package/src/scripts/new_skill.ts +3 -3
  491. package/src/scripts/onboarding_gate_hook.ts +2 -2
  492. package/src/scripts/pack_mcp_content.ts +1 -1
  493. package/src/scripts/parity/replay.ts +3 -2
  494. package/src/scripts/pattern_share.ts +2 -2
  495. package/src/scripts/plan_physical_move.ts +3 -3
  496. package/src/scripts/prediction-pool/poisson_sim.ts +2 -2
  497. package/src/scripts/prediction-pool/pool_winsim.ts +2 -2
  498. package/src/scripts/prediction-pool/score_ev.ts +2 -2
  499. package/src/scripts/print_required_checks.ts +2 -2
  500. package/src/scripts/probe_projection_fidelity.ts +2 -2
  501. package/src/scripts/probe_skill_registration.ts +2 -2
  502. package/src/scripts/profile_staleness_hook.ts +2 -2
  503. package/src/scripts/profile_use.ts +2 -2
  504. package/src/scripts/project_thin_rules.ts +3 -3
  505. package/src/scripts/propose_modules_config.ts +2 -2
  506. package/src/scripts/prototype_lint_contradictions.ts +2 -2
  507. package/src/scripts/prove_pack_extractable.ts +1 -1
  508. package/src/scripts/readme_linter.ts +4 -4
  509. package/src/scripts/redact_hook_capture.ts +2 -2
  510. package/src/scripts/refine_ticket_detect.ts +1 -1
  511. package/src/scripts/release.ts +30 -19
  512. package/src/scripts/render_benchmark_md.ts +2 -2
  513. package/src/scripts/render_value_md.ts +2 -2
  514. package/src/scripts/roadmap_progress_hook.ts +1 -1
  515. package/src/scripts/router_telemetry.ts +1 -1
  516. package/src/scripts/run_skill_evals.ts +2 -2
  517. package/src/scripts/runtime_dispatcher.ts +1 -1
  518. package/src/scripts/runtime_handler.ts +1 -1
  519. package/src/scripts/runtime_registry.ts +3 -3
  520. package/src/scripts/score_skill_selection.ts +1 -1
  521. package/src/scripts/security_audit_config.ts +2 -2
  522. package/src/scripts/skill_collision_clusters.ts +1 -1
  523. package/src/scripts/skill_discovery.ts +1 -1
  524. package/src/scripts/skill_linter.ts +8 -7
  525. package/src/scripts/skill_overlap.ts +2 -2
  526. package/src/scripts/skill_preview.ts +1 -1
  527. package/src/scripts/skill_tools/audit_persona_coverage.ts +3 -3
  528. package/src/scripts/skill_tools/audit_user_type_coverage.ts +3 -3
  529. package/src/scripts/skill_tools/index.ts +1 -1
  530. package/src/scripts/skill_tools/run_block_d_eval.ts +3 -3
  531. package/src/scripts/skill_tools/score_skill_relevance.ts +3 -3
  532. package/src/scripts/skill_tools/suggest_skill_for_task.ts +3 -3
  533. package/src/scripts/skill_trigger_eval.ts +2 -2
  534. package/src/scripts/skill_usage_collect.ts +2 -2
  535. package/src/scripts/skill_usage_report.ts +2 -2
  536. package/src/scripts/smoke_path_resolution.ts +2 -2
  537. package/src/scripts/smoke_quickstart.ts +4 -4
  538. package/src/scripts/snapshot_agent_outputs.ts +2 -2
  539. package/src/scripts/spotcheck_thin_root.ts +2 -2
  540. package/src/scripts/surface-tiers.yml +1 -0
  541. package/src/scripts/sync_agent_settings.ts +2 -2
  542. package/src/scripts/sync_github_metadata.ts +4 -4
  543. package/src/scripts/sync_gitignore.ts +3 -3
  544. package/src/scripts/sync_yaml_rt.ts +2 -2
  545. package/src/scripts/telegraph_stats.ts +1 -1
  546. package/src/scripts/tool_registry.ts +2 -2
  547. package/src/scripts/tools/adapter_errors.ts +1 -1
  548. package/src/scripts/tools/base_adapter.ts +1 -1
  549. package/src/scripts/tools/github_adapter.ts +1 -1
  550. package/src/scripts/tools/jira_adapter.ts +1 -1
  551. package/src/scripts/trigger_coverage.ts +2 -2
  552. package/src/scripts/update_counts.ts +68 -6
  553. package/src/scripts/update_prices.ts +3 -3
  554. package/src/scripts/validate_agent_settings.ts +3 -3
  555. package/src/scripts/validate_decision_engine.ts +2 -2
  556. package/src/scripts/validate_discovery_manifest.ts +3 -3
  557. package/src/scripts/validate_frontmatter.ts +5 -5
  558. package/src/scripts/validate_pack_yaml.ts +0 -0
  559. package/src/scripts/validate_safe_paths.ts +2 -2
  560. package/src/scripts/validate_telegraph_carveouts.ts +3 -3
  561. package/src/scripts/verify_before_complete_hook.ts +2 -2
  562. package/src/scripts/verify_physical_move.ts +2 -2
  563. package/src/scripts/wrapper_freshness_hook.ts +3 -3
  564. package/src/server/schemas/settings.ts +426 -0
  565. package/src/shared/settingsSurface.ts +184 -0
  566. package/src/shared/userMd/formAdapter.ts +86 -0
  567. package/src/shared/userMd/schema.ts +59 -0
  568. package/src/shared/userMd/utils.ts +91 -0
  569. package/dist/agent-src/commands/optimize-project.md +0 -243
  570. package/dist/ui/assets/index-BbWWuFrF.css +0 -1
  571. package/dist/ui/assets/index-UjcTG_9O.js +0 -40
  572. package/dist/ui/assets/index-UjcTG_9O.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * JSON-pointer helpers for the v2 `merged_keys[]` manifest field.
3
3
  *
4
- * TypeScript twin of `src/scripts/_lib/json_pointers.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/_lib/json_pointers.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 2 / Wave 1). Public API mirrors the Python
6
6
  * module exactly (snake_case kept deliberately).
7
7
  *
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * File-first global knowledge-card layer — store path, config, origin-tier.
4
4
  *
5
- * TypeScript twin of `src/scripts/_lib/knowledge_global.py` (ADR-200,
5
+ * Ported from the retired Python `src/scripts/_lib/knowledge_global.py` (ADR-200,
6
6
  * Python→TS migration). The public API and CLI contract mirror the Python
7
7
  * original EXACTLY — same exported snake_case names, same semantics, same
8
8
  * tier-classification, provenance footer, and config-merge behavior, same
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * File-first usage signal + hybrid promotion for global knowledge cards.
4
4
  *
5
- * TypeScript twin of `src/scripts/_lib/knowledge_global_promote.py` (ADR-200).
6
- * The public API and CLI contract mirror the Python original EXACTLY — same
5
+ * Ported from the retired Python `src/scripts/_lib/knowledge_global_promote.py` (ADR-200).
6
+ * The public API and CLI contract mirror the retired Python implementation EXACTLY — same
7
7
  * exported snake_case names, same repo-slug / card-id derivation, same usage
8
8
  * sidecar shape (sorted-key JSON), same suggestion decision, same exit codes
9
9
  * and byte-identical stdout. No behaviour changes.
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * Write-time redaction + tier gate for global knowledge-card sharing.
4
4
  *
5
- * TypeScript twin of `src/scripts/_lib/knowledge_global_redaction.py`
5
+ * Ported from the retired Python `src/scripts/_lib/knowledge_global_redaction.py`
6
6
  * (ADR-200). Security-sensitive: the redaction patterns + replacements and
7
- * the tier gate are matched byte-for-byte against the Python original. The
7
+ * the tier gate are matched byte-for-byte against the retired Python implementation. The
8
8
  * public API and CLI contract mirror Python exactly — same exported
9
9
  * snake_case names, same `GateResult` shape + `summary()` text, same exit
10
10
  * codes and stdout. No behaviour changes.
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * link_crypto — encrypt/decrypt stored third-party package links.
4
4
  *
5
- * TypeScript twin of `src/scripts/_lib/link_crypto.py` (ADR-200). The public
5
+ * Ported from the retired Python `src/scripts/_lib/link_crypto.py` (ADR-200). The public
6
6
  * API is mirrored EXACTLY — `encrypt`, `decrypt`, `is_token`, `project_key`,
7
7
  * `global_key`, `resolve_keys`, plus the CLI (`encrypt` / `decrypt` / `keygen`
8
- * / `keystatus`). The crypto scheme is replicated byte-for-byte against the
9
- * Python original so that a token produced by either runtime round-trips
10
- * identically under the other: PBKDF2-HMAC-SHA256 (200 000 iters, dklen 64) key
8
+ * / `keystatus`). The crypto scheme matches the retired Python implementation byte-for-byte
9
+ * so that ENC1 tokens minted before the migration still round-trip
10
+ * identically: PBKDF2-HMAC-SHA256 (200 000 iters, dklen 64) key
11
11
  * derivation, an HMAC-SHA256 counter-mode keystream, encrypt-then-MAC with
12
12
  * HMAC-SHA256, standard base64, constant-time tag compare. Every primitive has
13
13
  * an identical `node:crypto` counterpart, so encrypt-then-decrypt and the token
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Detect IDE-attached sibling projects (linked-projects scope, Option A).
3
3
  *
4
- * TypeScript twin of `src/scripts/_lib/linked_projects.py` (ADR-200,
4
+ * Ported from the retired Python `src/scripts/_lib/linked_projects.py` (ADR-200,
5
5
  * Phase 2 Wave 1 batch C). Public API mirrors the Python module exactly —
6
6
  * same exported snake_case names, same entry dict shape (`path` /
7
7
  * `detected_via` / `large`, JSON-identical), same parsing tolerances.
@@ -33,7 +33,7 @@
33
33
  * sibling files in context and does NOT persist anything. Opt-in +
34
34
  * persistence is the caller's job.
35
35
  *
36
- * Note on logging: the Python original emits `logger.info(...)` diagnostics
36
+ * Note on logging: the retired Python implementation emits `logger.info(...)` diagnostics
37
37
  * which are silent under the default logging configuration. The TS twin
38
38
  * omits them — observable behavior (return value) is identical.
39
39
  */
@@ -261,7 +261,7 @@ function _resolve_idea_url(raw: string, root: string): string | null {
261
261
  return null;
262
262
  }
263
263
  // path.resolve handles both the absolute and the root-relative branch
264
- // of the Python original; _resolve_path never throws (the Python
264
+ // of the retired Python implementation; _resolve_path never throws (the Python
265
265
  // OSError → None branch maps to the lexical fallback inside it).
266
266
  return _resolve_path(path.resolve(root, value));
267
267
  }
@@ -363,7 +363,7 @@ function _read_jsonc(filePath: string): unknown {
363
363
  /* ------------------------------------------------------------------ */
364
364
  /* Minimal well-formed-XML attribute scanner. */
365
365
  /* */
366
- /* The Python original parses with xml.etree.ElementTree and treats */
366
+ /* the retired Python implementation parses with xml.etree.ElementTree and treats */
367
367
  /* any ParseError as "no entries". Rather than pull in an XML */
368
368
  /* dependency, this scanner tokenizes the document, enforces the */
369
369
  /* well-formedness rules ET relies on for the IDE-config input domain */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Shared `model_tier` → native Claude `model:` mapping (ADR-034 / ADR-035).
3
3
  *
4
- * TypeScript twin of `src/scripts/_lib/model_tier.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/_lib/model_tier.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 2 / Wave 1). Public API mirrors the
6
6
  * Python module exactly (snake_case kept deliberately).
7
7
  *
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Detect module root directories from a project tree.
3
3
  *
4
- * TypeScript twin of `src/scripts/_lib/module_detection.py` (ADR-200,
4
+ * Ported from the retired Python `src/scripts/_lib/module_detection.py` (ADR-200,
5
5
  * Phase 2 Wave 1 batch C). Public API mirrors the Python module exactly —
6
6
  * same exported snake_case names, same return shapes, same confidence
7
7
  * ladder, same read-only / tolerant contract.
@@ -126,7 +126,7 @@ export function is_module_like_path(rel_path: string): boolean {
126
126
  * Fields mirror the JSON shape callers ultimately persist into
127
127
  * `modules.root_paths` (the `path` field) plus metadata used by the
128
128
  * installer to phrase the numbered-options prompt. Mirrors the frozen
129
- * `ModuleCandidate` dataclass of the Python original.
129
+ * `ModuleCandidate` dataclass of the retired Python implementation.
130
130
  */
131
131
  export interface ModuleCandidate {
132
132
  /** Repo-relative POSIX path of the module root (e.g. `app/Modules`). */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Pin-aware version resolver for the `agent-config` dispatcher.
3
3
  *
4
- * TypeScript twin of `src/scripts/_lib/pin_resolver.py` (ADR-200,
4
+ * Ported from the retired Python `src/scripts/_lib/pin_resolver.py` (ADR-200,
5
5
  * Phase 2 / Wave 1 batch B). The dispatcher consults this module
6
6
  * **before** doing any work. If `.agent-settings.yml` carries a
7
7
  * non-empty `agent_config_version` pin and the currently running
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Verbosity-aware print router for scripts.
3
3
  *
4
- * TypeScript twin of `src/scripts/_lib/script_output.py` (ADR-200,
4
+ * Ported from the retired Python `src/scripts/_lib/script_output.py` (ADR-200,
5
5
  * Phase 2 / Wave 2b). Mirrors the Python module's public API exactly —
6
6
  * same exported snake_case names, same resolution order, same level
7
7
  * semantics, same output channels (stdout vs stderr), same module-level
@@ -1,6 +1,6 @@
1
1
  // Shared helpers for the agent-security corpus linters (road-to-security-pillar.md P1).
2
2
  //
3
- // TypeScript twin of `src/scripts/_lib/security_lint.py` (ADR-200 — Python→TS
3
+ // Ported from the retired Python `src/scripts/_lib/security_lint.py` (ADR-200 — Python→TS
4
4
  // migration). Public API mirrors the Python module exactly (snake_case kept
5
5
  // deliberately) so the two dependent linters — lint_hidden_unicode and
6
6
  // lint_instruction_smuggling — depend on one source of truth.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Surface-tier (core vs lab) resolution for the install split.
3
3
  *
4
- * TypeScript twin of `src/scripts/_lib/surface_tiers.py` (ADR-200 — Python→TS
4
+ * Ported from the retired Python `src/scripts/_lib/surface_tiers.py` (ADR-200 — Python→TS
5
5
  * migration). Public API mirrors the Python module exactly (snake_case kept
6
6
  * deliberately — fidelity over TS idiom).
7
7
  *
@@ -9,7 +9,7 @@
9
9
  * below WARN_THRESHOLD → no conflict, proceed to create
10
10
  *
11
11
  * Deliberately does NOT touch `memory_signal.ts` — that script is a
12
- * byte-faithful parity twin of its retired Python original ("no
12
+ * byte-faithful parity port of the retired Python implementation ("no
13
13
  * behaviour changes" is a load-bearing contract of that file). This
14
14
  * module is consumed as an ADDITIONAL, advisory check layered on top,
15
15
  * from `check_memory_similarity.ts` and later the knowledge-page
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * Daily update-check banner for the `agent-config` dispatcher.
3
3
  *
4
- * TypeScript twin of `src/scripts/_lib/update_check.py` (ADR-200,
4
+ * Ported from the retired Python `src/scripts/_lib/update_check.py` (ADR-200,
5
5
  * Phase 2 / Wave 1 batch B). Pure functions: `check_for_update()`
6
6
  * decides whether a banner should be emitted and returns the banner
7
7
  * string (or `null`). The dispatcher prints the returned string to
8
8
  * `stderr` after the subcommand finishes — never delaying the work,
9
9
  * never prompting.
10
10
  *
11
- * Design constraints (mirrored from the Python original):
11
+ * Design constraints (mirrored from the retired Python implementation):
12
12
  *
13
13
  * - Node builtins only (global `fetch` on Node >= 20).
14
14
  * - 1 s hard timeout on the registry call; network failure is silent.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Vendor-namespaced user-global path resolution.
3
3
  *
4
- * TypeScript twin of `src/scripts/_lib/user_global_paths.py` (ADR-200,
4
+ * Ported from the retired Python `src/scripts/_lib/user_global_paths.py` (ADR-200,
5
5
  * Phase 2 / Wave 1 batch B). Mirrors the Python module's public API
6
6
  * exactly — same exported snake_case names, same semantics, same
7
7
  * path-resolution behavior. Single source of truth for "where does this
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Pure normaliser: raw bench reports → `value-v1` rung dicts.
3
3
  *
4
- * TypeScript twin of `src/scripts/_lib/value_ladder.py` (ADR-200 py2ts
4
+ * Ported from the retired Python `src/scripts/_lib/value_ladder.py` (ADR-200 py2ts
5
5
  * Phase 2 / Wave 2a). Phase 1 Step 2 of the readable-value-dashboard roadmap.
6
6
  *
7
7
  * This module is **pure** — no I/O, no file reads, no clock. Inputs are
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Assemble `value-v1` JSON from on-disk raw bench reports.
3
3
  *
4
- * TypeScript twin of `src/scripts/_lib/value_report.py` (ADR-200 py2ts
4
+ * Ported from the retired Python `src/scripts/_lib/value_report.py` (ADR-200 py2ts
5
5
  * Phase 2 / Wave 2a). Phase 1 Step 3 of the readable-value-dashboard roadmap.
6
6
  *
7
7
  * Reads:
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Minimal ZIP writer/reader on Node builtins only (`node:zlib`).
3
3
  *
4
- * Internal helper for the TypeScript twin of
5
- * `src/scripts/_lib/claude_desktop_bundler.py` (ADR-200 py2ts Phase 2):
4
+ * Internal helper for the port of the retired Python
5
+ * `src/scripts/_lib/claude_desktop_bundler.py` (ADR-200):
6
6
  * the repo ships no ZIP dependency, and the ADR contract forbids adding
7
7
  * one — so the bundler twin writes the (well-specified) ZIP container
8
8
  * itself and compresses entries with `zlib.deflateRawSync`
@@ -2,15 +2,15 @@
2
2
  /**
3
3
  * Roll up `adoption-snapshots.jsonl` into a Markdown trend report.
4
4
  *
5
- * TypeScript twin of `src/scripts/adoption_report.py` (ADR-200, Phase 8 /
6
- * Wave 8a). The CLI contract is mirrored EXACTLY — the flags `--in` /
5
+ * Ported from the retired Python `src/scripts/adoption_report.py` (ADR-200, Phase 8 /
6
+ * Wave 8a). The CLI contract is pinned — the flags `--in` /
7
7
  * `--out` / `--weeks`, exit codes (0 written · 1 IO failure on read/write),
8
8
  * the stdout/stderr split, byte-identical messages, AND byte-identical
9
9
  * generated Markdown (the report is a write target). Mirrors the shape of
10
10
  * `skill_usage_report.py`: a single file, no external deps. The report is
11
11
  * regenerated on every invocation (idempotent for a given JSONL state).
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
  * Pull the four public adoption signals into a single dated JSONL row.
4
4
  *
5
- * TypeScript twin of `src/scripts/adoption_snapshot.py` (ADR-200, Phase 8
6
- * Wave 8a). Mirrors the Python CLI contract EXACTLY — flags (`--out`,
5
+ * Ported from the retired Python `src/scripts/adoption_snapshot.py` (ADR-200, Phase 8
6
+ * Wave 8a). The CLI contract is pinned — flags (`--out`,
7
7
  * `--no-network`), exit codes (0 / 1 / 2), stdout/stderr split, and the
8
8
  * byte-identical JSONL row (`json.dumps(row)` default separators,
9
9
  * ensure_ascii=True, no trailing space differences).
@@ -59,7 +59,7 @@ const GH_SEARCH_URL_TEMPLATE =
59
59
 
60
60
  const TIMEOUT_S = 10;
61
61
 
62
- // Free-form JSON-ish value type for signal payloads. The Python original uses
62
+ // Free-form JSON-ish value type for signal payloads. the retired Python implementation uses
63
63
  // `dict[str, Any]`; the only documented `any`-shaped surface (HTTP JSON).
64
64
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
65
  type Json = any;
@@ -2,13 +2,13 @@
2
2
  /**
3
3
  * One-screen adoption dashboard for the maintainer's weekly review.
4
4
  *
5
- * TypeScript twin of `src/scripts/adoption_status.py` (ADR-200 —
5
+ * Ported from the retired Python `src/scripts/adoption_status.py` (ADR-200 —
6
6
  * Python→TS migration, Phase 8 / Wave 8a). The CLI contract is mirrored
7
7
  * EXACTLY: same flags (`--json`, `--branch`), same exit codes (0 normal,
8
8
  * 1 on registry-read IO error), same byte-identical text + JSON output,
9
9
  * same `ci_status` shell-out (now the `.ts` twin run via `tsx` — no
10
10
  * python3), same `unknown` best-effort fallbacks. No behaviour
11
- * changes — latent bugs replicated.
11
+ * changes — historical quirks preserved (consumers pin the exact behaviour).
12
12
  *
13
13
  * Prints three things in one short block:
14
14
  *
@@ -5,11 +5,11 @@
5
5
  * non-numbered ADRs into an Unnumbered table, hard-fails on duplicate
6
6
  * numbers, filename/frontmatter mismatch, or broken supersedes links.
7
7
  *
8
- * TypeScript twin of `src/scripts/adr/regenerate_index.py` (ADR-200, Phase 8).
9
- * The CLI contract is mirrored EXACTLY — `--dir` (default `docs/adr/`),
8
+ * Ported from the retired Python `src/scripts/adr/regenerate_index.py` (ADR-200).
9
+ * The CLI contract is pinned — `--dir` (default `docs/adr/`),
10
10
  * `--check`, exit codes (0 / 1 / 2), the stdout/stderr split, byte-identical
11
11
  * messages, AND byte-identical generated `INDEX.md`. No behaviour changes —
12
- * latent Python quirks replicated.
12
+ * historical quirks preserved (consumers pin the exact behaviour).
13
13
  */
14
14
  import * as fs from 'node:fs';
15
15
  import * as path from 'node:path';
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * Shipped baseline prices for the AI Council.
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/_default_prices.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/_default_prices.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 8 / Wave 8g; ported as a prerequisite of
6
- * `update_prices.ts`). Values + ordering + `as_rows()` semantics mirror the
7
- * Python original EXACTLY.
6
+ * `update_prices.ts`). Values + ordering + `as_rows()` semantics are pinned by tests.
8
7
  *
9
8
  * This module is the bootstrap source for `agents/runtime/.agent-prices.md`
10
9
  * when the runtime file is missing, and the network-fallback source for
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Thinking-style advisors — replace-mode call planning (Phase 6).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/advisors.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/advisors.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 1). When the user-global
6
6
  * `~/.event4u/agent-config/settings/.ai-council.yml` (always global —
7
7
  * ADR-104) enables an advisor (e.g. `contrarian` bound to
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Airgap detection for the AI Council installer / first-run (step-9 P11 · U1).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/airgap.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/airgap.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 1; ai_council FOUNDATION wave). Public surface
6
6
  * mirrors the Python module exactly (snake_case kept deliberately):
7
7
  * `COUNCIL_PROBE_HOSTS`, `DEFAULT_TIMEOUT_S`, `AIRGAP_BANNER`,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Per-day rolling cost-budget guard for the council (D3).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/budget_guard.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/budget_guard.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 1; ai_council FOUNDATION wave). Mirrors the
6
6
  * Python public surface exactly (snake_case kept deliberately):
7
7
  * `LEDGER_FILENAME`, `LEDGER_PATH`, `ROLLING_WINDOW_HOURS`, `SpendEntry`,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Context bundling for council consultations.
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/bundler.py` (ADR-094 —
4
+ * Ported from the retired Python `src/scripts/ai_council/bundler.py` (ADR-094 —
5
5
  * Python→TS migration, Phase 1).
6
6
  *
7
7
  * Takes a raw artefact (free-form prompt, roadmap path, diff range, or
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Per-provider CLI install hints for `mode: cli` members (step-9 P2).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/cli_hints.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/cli_hints.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 1; ai_council FOUNDATION wave). Public surface
6
6
  * mirrors the Python module exactly (snake_case kept deliberately):
7
7
  * `INSTALL_HINTS`, `hint_for`, `format_install_hints`.
@@ -1,5 +1,5 @@
1
- // External-AI clients for the council — byte-identical TypeScript twin of
2
- // `src/scripts/ai_council/clients.py` (py2ts migration, ADR-200).
1
+ // External-AI clients for the council — ported from the retired Python
2
+ // `src/scripts/ai_council/clients.py` (ADR-200).
3
3
  //
4
4
  // Mirrors the contract from `scripts/skill_trigger_eval.py`:
5
5
  // - Tokens come exclusively from `~/.event4u/agent-config/<provider>.key`
@@ -31,7 +31,7 @@
31
31
  // `cli_call_budget.max_calls_per_day.<provider>` quota with state persisted at
32
32
  // `~/.event4u/agent-config/cli-calls.json` (daily UTC reset).
33
33
  //
34
- // TRANSPORT SEAM (TS-only, for tests): the Python original calls
34
+ // TRANSPORT SEAM (TS-only, for tests): the retired Python implementation calls
35
35
  // `subprocess.run` directly inside `CliClient.ask`. The twin routes that one
36
36
  // call through the protected `_runSubprocess(cmd, stdinPayload)` instance
37
37
  // method so a test subclass can stub the transport without live processes —
@@ -154,7 +154,7 @@ export class CouncilResponse {
154
154
  // Python uses `time.monotonic()`. latency_ms is non-deterministic; tests
155
155
  // normalise it. Exposed so tests can pin it if they choose.
156
156
  let _monotonicSource: () => number = () => {
157
- // performance.now() is monotonic milliseconds; the Python original is
157
+ // performance.now() is monotonic milliseconds; the retired Python implementation is
158
158
  // seconds, but we only ever compute `int((now - t0) * 1000)`, so feeding
159
159
  // milliseconds here and dropping the *1000 keeps the same arithmetic.
160
160
  return performance.now();
@@ -967,7 +967,7 @@ export abstract class CliClient extends ExternalAIClient {
967
967
  * `subprocess.run(cmd, input=..., capture_output=True, text=True,
968
968
  * timeout=..., check=False)`. Throws `SubprocessError` for the timeout /
969
969
  * ENOENT / OSError branches so `ask()` can classify them exactly as the
970
- * Python original does. Tests override this to inject canned output without
970
+ * historical contract requires. Tests override this to inject canned output without
971
971
  * spawning a process.
972
972
  */
973
973
  protected _runSubprocess(cmd: string[], stdinPayload: string | null): SubprocessResult {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Compile the human-edited low-impact corpus Markdown to a YAML lockfile.
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/compile_corpus.py`
4
+ * Ported from the retired Python `src/scripts/ai_council/compile_corpus.py`
5
5
  * (ADR-200 — Python→TS migration, Phase 1).
6
6
  *
7
7
  * Step-10 — see `agents/roadmaps/step-10-corpus-yaml-lockfile.md`.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Confidence gate for solo-member dispatch (step-9 P13).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/confidence_gate.py`
4
+ * Ported from the retired Python `src/scripts/ai_council/confidence_gate.py`
5
5
  * (ADR-200 — Python→TS migration, Phase 1). Defense-in-depth on top of
6
6
  * shadow-mode SLO: when a single member's response signals uncertainty,
7
7
  * presents unresolved alternatives, or refuses, the dispatcher escalates
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Council configuration loader — single source of truth.
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/config.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/config.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 12). Mirrors the Python module's public
6
6
  * surface and validation behaviour byte-for-byte: same exported
7
7
  * snake_case names, same defaults, same error messages, same precedence.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Consensus scoring for the analysis lens (Phase 4 / F3).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/consensus.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/consensus.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 1). After the final deliberation round, members
6
6
  * score each other's findings. The renderer ranks findings by consensus and
7
7
  * surfaces a "Minority Views" section for sub-threshold items so they remain
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Persistent council events log (step-8 phase 3).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/events_log.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/events_log.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 1). Appends one JSON line per council event to
6
6
  * `<project_root>/agents/runtime/council/events.log`. Schema v1 carries the
7
7
  * minimum needed to answer the "why did the council skip / block this?"
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Preview builder for `/memory learn-low-impact` (step-9 Phase 7).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/learn_low_impact_preview.py`
4
+ * Ported from the retired Python `src/scripts/ai_council/learn_low_impact_preview.py`
5
5
  * (ADR-200 — Python→TS migration, Phase 1).
6
6
  *
7
7
  * Default invocation is `--preview`: build a structured plan describing
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Hardened parser for `agents/decisions/low-impact-decisions.md` (step-9 P4).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/low_impact_corpus.py`
4
+ * Ported from the retired Python `src/scripts/ai_council/low_impact_corpus.py`
5
5
  * (ADR-200 — Python→TS migration, Phase 1).
6
6
  *
7
7
  * Replaces the silent-skip behaviour of the inline regex in
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Intake trigger + dedup for `agents/decisions/low-impact-decisions.md` (Phase 12).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/low_impact_intake.py`
4
+ * Ported from the retired Python `src/scripts/ai_council/low_impact_intake.py`
5
5
  * (ADR-200 — Python→TS migration, Phase 1). Pure-text, deterministic.
6
6
  *
7
7
  * User signals "leichte Frage" / "low-impact question" / equivalents
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Mode resolution for council members (Phase 2b).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/modes.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/modes.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 1). Pure resolver — never touches the
6
6
  * filesystem or environment. Callers pass in already-loaded values from
7
7
  * `.agent-settings.yml`.
@@ -1,7 +1,7 @@
1
1
  // Council orchestrator — fan out one question to multiple members.
2
2
  //
3
- // py2ts twin of orchestrator.py (ADR-200). Byte-for-byte parity with the
4
- // Python original: member dispatch order, sequential cost gating, the overrun
3
+ // Port of the retired Python orchestrator.py (ADR-200). The historical contract
4
+ // is pinned byte-for-byte by tests: member dispatch order, sequential cost gating, the overrun
5
5
  // callback contract, multi-round debate / peer-review / consensus passes, and
6
6
  // the Markdown render assembly are all mirrored exactly.
7
7
  //
@@ -69,7 +69,7 @@ import {
69
69
  // The orchestrator formats USD / scores / strengths via Python f-string
70
70
  // specs (`:.4f`, `:.2f`, `:.1f`) which round half-to-even on the decimal
71
71
  // representation. JS `toFixed` rounds half away from zero, so the spec
72
- // formatting is reimplemented to stay byte-exact with the Python original.
72
+ // formatting is reimplemented to stay byte-exact with the retired Python implementation.
73
73
 
74
74
  /**
75
75
  * Format `x` to `ndigits` decimals using round-half-to-even, matching
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * Runtime pricing layer for the AI Council.
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/pricing.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/pricing.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 8 / Wave 8g; ported as a prerequisite of
6
6
  * `update_prices.ts`). Mirrors the Python public surface used by the
7
7
  * caller: `PRICES_FILE`, `load_prices`, `is_stale`, `_render_markdown`,
8
8
  * plus `bootstrap_from_defaults` / `last_monday_utc` for completeness.
9
9
  *
10
10
  * Reads `agents/runtime/.agent-prices.md`, parses YAML frontmatter + the
11
- * Markdown table. No behaviour changes — latent Python quirks replicated,
11
+ * Markdown table. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.,
12
12
  * including the byte-identical `{x:>6.2f}` row formatting.
13
13
  */
14
14
  import * as fs from 'node:fs';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Probation promote-and-prune for `agents/decisions/low-impact-decisions.md`.
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/probation_gate.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/probation_gate.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 1; ai_council FOUNDATION wave). Public surface
6
6
  * mirrors the Python module exactly (snake_case kept deliberately):
7
7
  * `WINDOW_DAYS`, `PROMOTION_THRESHOLD`, `GateRun`, `run_gate`.
@@ -20,7 +20,7 @@
20
20
  *
21
21
  * PARITY NOTES
22
22
  * - The line regex uses U+2014 (em-dash) and U+00B7 (middle dot) literals,
23
- * byte-identical to the Python `re` pattern; matched with the `u` flag so
23
+ * matching the historical `re` pattern byte-for-byte; the `u` flag keeps
24
24
  * `\s` / `\d` align with Python's defaults (no MULTILINE).
25
25
  * - `splitlines()` is mirrored by `_splitlines` (full CPython boundary set).
26
26
  * - Date math is done on tz-aware UTC epoch-millis; `d >= cutoff` matches
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Lightweight project-context detector for the council handoff preamble.
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/project_context.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/project_context.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 1). Reads the bare minimum from the repo root —
6
6
  * `composer.json`, `package.json`, root `README.md` — and returns a neutral
7
7
  * `ProjectContext`. All fields are optional; missing data is `null` and the
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Neutrality system prompts for the council.
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/prompts.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/prompts.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 1). Council members must NOT see the host
6
6
  * agent's reasoning, internal state, or framing language. Each prompt asks
7
7
  * for an independent critique on the artefact's own merits.
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Privacy floor for `agents/decisions/low-impact-decisions.md` (Phase 12).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/redact_low_impact_entry.py`
4
+ * Ported from the retired Python `src/scripts/ai_council/redact_low_impact_entry.py`
5
5
  * (ADR-200 — Python→TS migration, Phase 1). Security-sensitive: the
6
6
  * redaction regexes and refusal markers are matched byte-for-byte against
7
- * the Python original.
7
+ * the retired Python implementation.
8
8
  *
9
9
  * Non-bypassable redactor invoked on intake (write-side) AND on
10
10
  * upstream (`/learn-low-impact`, leave-the-repo side). Both gates call
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Session persistence for council consultations (D2).
3
3
  *
4
- * TypeScript twin of `src/scripts/ai_council/session.py` (ADR-200 —
4
+ * Ported from the retired Python `src/scripts/ai_council/session.py` (ADR-200 —
5
5
  * Python→TS migration, Phase 1).
6
6
  *
7
7
  * Every `/council` call that completes (success or partial) writes an