@event4u/agent-config 14.12.0 → 14.13.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 (466) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +234 -0
  5. package/CONTRIBUTING.md +38 -0
  6. package/CREDITS.md +135 -0
  7. package/NOTICE +13 -0
  8. package/README.md +8 -6
  9. package/dist/agent-src/commands/analyze/inbox.md +109 -2
  10. package/dist/agent-src/commands/feature/dev.md +7 -2
  11. package/dist/agent-src/commands/ghostwriter/write.md +5 -1
  12. package/dist/agent-src/commands/implement-ticket.md +1 -1
  13. package/dist/agent-src/commands/mission/upgrade.md +1 -1
  14. package/dist/agent-src/commands/orchestrate.md +2 -2
  15. package/dist/agent-src/commands/post-as/me.md +5 -1
  16. package/dist/agent-src/commands/pr/merge.md +19 -6
  17. package/dist/agent-src/commands/roadmap/process-full.md +19 -5
  18. package/dist/agent-src/commands/tdd/red.md +12 -2
  19. package/dist/agent-src/commands/work.md +1 -1
  20. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +40 -0
  21. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +5 -2
  22. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +21 -0
  23. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -0
  24. package/dist/agent-src/contexts/execution/subagent-response-contract.md +40 -0
  25. package/dist/agent-src/contexts/execution/subagent-steering.md +13 -1
  26. package/dist/agent-src/contexts/execution/terminal-states.md +96 -0
  27. package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
  28. package/dist/agent-src/rules/broken-access-control.md +4 -0
  29. package/dist/agent-src/rules/code-provenance.md +4 -0
  30. package/dist/agent-src/rules/design-fidelity.md +1 -1
  31. package/dist/agent-src/rules/domain-safety-pii.md +4 -0
  32. package/dist/agent-src/rules/domain-safety-retention.md +4 -0
  33. package/dist/agent-src/rules/engineering-safety-floor.md +2 -0
  34. package/dist/agent-src/rules/external-code-graph-interop.md +14 -12
  35. package/dist/agent-src/rules/improve-before-implement.md +6 -8
  36. package/dist/agent-src/rules/laravel-routing.md +1 -1
  37. package/dist/agent-src/rules/lethal-trifecta-guard.md +4 -0
  38. package/dist/agent-src/rules/secret-vcs-guard.md +2 -0
  39. package/dist/agent-src/rules/security-sensitive-stop.md +2 -0
  40. package/dist/agent-src/rules/source-confidentiality.md +12 -34
  41. package/dist/agent-src/rules/symfony-routing.md +1 -1
  42. package/dist/agent-src/rules/token-efficiency.md +14 -0
  43. package/dist/agent-src/rules/tool-safety.md +4 -0
  44. package/dist/agent-src/rules/untrusted-input-defense.md +4 -0
  45. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +247 -3
  46. package/dist/agent-src/scripts/guarded_baseline.ts +328 -0
  47. package/dist/agent-src/scripts/roadmap_set_step.ts +253 -0
  48. package/dist/agent-src/scripts/stub_queue.ts +82 -0
  49. package/dist/agent-src/scripts/stubs_due.ts +400 -0
  50. package/dist/agent-src/scripts/ticket_bundles.ts +84 -0
  51. package/dist/agent-src/scripts/update_roadmap_progress.ts +8 -4
  52. package/dist/agent-src/skills/brand-asset-generation/SKILL.md +17 -4
  53. package/dist/agent-src/skills/brand-audit/SKILL.md +33 -0
  54. package/dist/agent-src/skills/code-intelligence/SKILL.md +57 -0
  55. package/dist/agent-src/skills/database/SKILL.md +8 -0
  56. package/dist/agent-src/skills/dependency-upgrade/SKILL.md +27 -0
  57. package/dist/agent-src/skills/design-review/SKILL.md +1 -1
  58. package/dist/agent-src/skills/doc-coauthoring/SKILL.md +1 -1
  59. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +17 -1
  60. package/dist/agent-src/skills/feature-planning/SKILL.md +9 -2
  61. package/dist/agent-src/skills/frontend-render-security/SKILL.md +44 -0
  62. package/dist/agent-src/skills/git-workflow/SKILL.md +1 -1
  63. package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.ts +38 -4
  64. package/dist/agent-src/skills/judge-artifact-completeness/rubrics/ticket-quality-score.json +2 -2
  65. package/dist/agent-src/skills/laravel/SKILL.md +35 -0
  66. package/dist/agent-src/skills/laravel-migration/SKILL.md +57 -3
  67. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +26 -0
  68. package/dist/agent-src/skills/playbook-authoring/SKILL.md +28 -1
  69. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
  70. package/dist/agent-src/skills/skill-writing/references/procedure.md +5 -5
  71. package/dist/agent-src/skills/sql-writing/SKILL.md +7 -1
  72. package/dist/agent-src/skills/standards-from-config/SKILL.md +27 -4
  73. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +11 -4
  74. package/dist/agent-src/skills/symfony-workflow/SKILL.md +35 -0
  75. package/dist/agent-src/skills/test-case-discovery/SKILL.md +85 -0
  76. package/dist/agent-src/skills/test-driven-development/SKILL.md +33 -9
  77. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
  78. package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +37 -0
  79. package/dist/agent-src/skills/ui-component-architect/SKILL.md +45 -2
  80. package/dist/agent-src/skills/upstream-contribute/SKILL.md +38 -1
  81. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +9 -4
  82. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  83. package/dist/agent-src/templates/roadmaps.md +97 -3
  84. package/dist/agent-src/templates/scripts/check_memory.ts +258 -17
  85. package/dist/agent-src/templates/scripts/check_memory_proposal.ts +9 -3
  86. package/dist/agent-src/templates/scripts/memory_lookup.ts +86 -0
  87. package/dist/agent-src/templates/scripts/memory_signal.ts +44 -0
  88. package/dist/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +90 -0
  89. package/dist/agent-src/templates/scripts/work_engine/directives/backend/index.ts +11 -0
  90. package/dist/agent-src/templates/scripts/work_engine/directives/backend/test.ts +23 -1
  91. package/dist/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +10 -1
  92. package/dist/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +5 -1
  93. package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +102 -14
  94. package/dist/cli/commands/uiAudit.js +124 -5
  95. package/dist/cli/registry.js +2 -0
  96. package/dist/cli-delegate/{chunk-HYWSRNUX.js → chunk-2DK2VJWG.js} +3 -3
  97. package/dist/cli-delegate/{chunk-JCW7ZLHK.js → chunk-4FS4WRXP.js} +5 -0
  98. package/dist/cli-delegate/{chunk-OMIVVCG2.js → chunk-A4QJ6ENT.js} +24 -0
  99. package/dist/cli-delegate/{chunk-JJA2QEWA.js → chunk-AKJGUQNO.js} +466 -285
  100. package/dist/cli-delegate/{chunk-E46KPN6K.js → chunk-BTWUYDGN.js} +424 -363
  101. package/dist/cli-delegate/{chunk-K4FFODTS.js → chunk-ILMUPLGW.js} +1227 -316
  102. package/dist/cli-delegate/{chunk-FF7WAFMR.js → chunk-KPBWFOPZ.js} +5 -1
  103. package/dist/cli-delegate/cmd_adr_effective.js +102 -0
  104. package/dist/cli-delegate/cmd_conformance.js +42 -10
  105. package/dist/cli-delegate/cmd_doctor.js +3 -3
  106. package/dist/cli-delegate/cmd_export.js +3 -2
  107. package/dist/cli-delegate/cmd_fleet.js +2 -2
  108. package/dist/cli-delegate/cmd_handoff.js +1 -1
  109. package/dist/cli-delegate/cmd_preflight.js +2 -2
  110. package/dist/cli-delegate/cmd_prune.js +3 -2
  111. package/dist/cli-delegate/cmd_settings_get.js +1 -1
  112. package/dist/cli-delegate/cmd_settings_migrate.js +3 -2
  113. package/dist/cli-delegate/cmd_settings_set.js +2 -2
  114. package/dist/cli-delegate/cmd_sync.js +3 -2
  115. package/dist/cli-delegate/cmd_uninstall.js +3 -2
  116. package/dist/cli-delegate/cmd_validate.js +3 -2
  117. package/dist/discovery/deprecation-report.md +1 -1
  118. package/dist/discovery/discovery-manifest.json +57 -57
  119. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  120. package/dist/discovery/discovery-manifest.summary.md +1 -1
  121. package/dist/discovery/dormancy-report.md +1 -1
  122. package/dist/discovery/orphan-report.md +1 -1
  123. package/dist/discovery/packs.json +2 -2
  124. package/dist/discovery/trust-report.md +1 -1
  125. package/dist/discovery/workspaces.json +2 -2
  126. package/dist/hooks/dispatch.js +1836 -712
  127. package/dist/install/claudeRuleRewrite.js +254 -0
  128. package/dist/install/detect.js +29 -16
  129. package/dist/install/detect_php_shape.js +159 -0
  130. package/dist/install/install.mjs +634 -428
  131. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  132. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
  133. package/dist/mcp/registry-manifest.json +3 -3
  134. package/dist/mcp/server.json +3 -3
  135. package/dist/mcp/server.mjs +4818 -2645
  136. package/dist/server/schemas/settings.js +3 -0
  137. package/dist/ui/assets/index-D0jaCRPM.js +29 -0
  138. package/dist/ui/index.html +1 -1
  139. package/docs/MIGRATION.md +1 -1
  140. package/docs/THIRD-PARTY-NOTICES.md +25 -0
  141. package/docs/contracts/provider-lifecycle.md +1 -1
  142. package/docs/contracts/settings-classes.md +10 -4
  143. package/docs/guidelines/agent-infra/5w2h-analysis.md +3 -3
  144. package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +1 -0
  145. package/docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +58 -3
  146. package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +2 -2
  147. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +3 -3
  148. package/docs/guidelines/agent-infra/break-glass-usage.md +7 -7
  149. package/docs/guidelines/agent-infra/carve-out-predicates.md +3 -3
  150. package/docs/guidelines/agent-infra/comparison-matrix.md +1 -1
  151. package/docs/guidelines/agent-infra/critical-thinking.md +4 -4
  152. package/docs/guidelines/agent-infra/direct-answers-demos.md +2 -2
  153. package/docs/guidelines/agent-infra/domain-eval-anti-pattern.md +1 -1
  154. package/docs/guidelines/agent-infra/engineering-memory-data-format.md +3 -3
  155. package/docs/guidelines/agent-infra/existence-question-verdicts.md +80 -0
  156. package/docs/guidelines/agent-infra/first-principles.md +2 -2
  157. package/docs/guidelines/agent-infra/framework-neutrality-patterns.md +2 -2
  158. package/docs/guidelines/agent-infra/guarded-baseline.md +39 -0
  159. package/docs/guidelines/agent-infra/inversion-thinking.md +5 -5
  160. package/docs/guidelines/agent-infra/language-and-tone-examples.md +1 -1
  161. package/docs/guidelines/agent-infra/layered-settings.md +10 -10
  162. package/docs/guidelines/agent-infra/memory-access.md +1 -1
  163. package/docs/guidelines/agent-infra/mental-models.md +3 -3
  164. package/docs/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
  165. package/docs/guidelines/agent-infra/review-routing-data-format.md +7 -7
  166. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +13 -7
  167. package/docs/guidelines/agent-infra/role-contracts.md +2 -2
  168. package/docs/guidelines/agent-infra/role-mode-router.md +3 -3
  169. package/docs/guidelines/agent-infra/rule-type-governance.md +2 -2
  170. package/docs/guidelines/agent-infra/scqa-framework.md +5 -5
  171. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +6 -6
  172. package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +2 -2
  173. package/docs/guidelines/agent-infra/six-hats.md +3 -3
  174. package/docs/guidelines/agent-infra/skill-quality-checklist.md +6 -6
  175. package/docs/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
  176. package/docs/guidelines/agent-infra/systems-thinking.md +1 -1
  177. package/docs/guidelines/agent-infra/verify-before-complete-demos.md +2 -2
  178. package/docs/guidelines/augment-portability-patterns.md +6 -4
  179. package/docs/guidelines/component-oriented-and-oop-development.md +3 -2
  180. package/docs/guidelines/cross-role-handoff.md +2 -2
  181. package/docs/guidelines/design-fidelity-mechanics.md +1 -1
  182. package/docs/guidelines/docs/readme-size-and-splitting.md +3 -3
  183. package/docs/guidelines/php/database.md +90 -7
  184. package/docs/guidelines/prompt-templates.md +7 -7
  185. package/llms.txt +2 -2
  186. package/package.json +5 -2
  187. package/src/agent-src/scripts/archive_completed_roadmaps.ts +247 -3
  188. package/src/agent-src/scripts/guarded_baseline.ts +328 -0
  189. package/src/agent-src/scripts/roadmap_set_step.ts +253 -0
  190. package/src/agent-src/scripts/stub_queue.ts +82 -0
  191. package/src/agent-src/scripts/stubs_due.ts +400 -0
  192. package/src/agent-src/scripts/ticket_bundles.ts +84 -0
  193. package/src/agent-src/scripts/update_roadmap_progress.ts +8 -4
  194. package/src/agent-src/templates/scripts/check_memory.ts +258 -17
  195. package/src/agent-src/templates/scripts/check_memory_proposal.ts +9 -3
  196. package/src/agent-src/templates/scripts/memory_lookup.ts +86 -0
  197. package/src/agent-src/templates/scripts/memory_signal.ts +44 -0
  198. package/src/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +90 -0
  199. package/src/agent-src/templates/scripts/work_engine/directives/backend/index.ts +11 -0
  200. package/src/agent-src/templates/scripts/work_engine/directives/backend/test.ts +23 -1
  201. package/src/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +10 -1
  202. package/src/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +5 -1
  203. package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +102 -14
  204. package/src/config/agent-settings.template.yml +32 -3
  205. package/src/config/assurance-capability-registry.json +21 -9
  206. package/src/config/canonical-terms.yml +119 -0
  207. package/src/config/capability-native-outcome-bars.json +81 -0
  208. package/src/config/ci-local-parity.yml +80 -0
  209. package/src/config/drafting-channels.yml +43 -0
  210. package/src/config/estate-count-budget.json +38 -36
  211. package/src/config/evaluator-budgets.json +14 -14
  212. package/src/config/gate-coverage.yml +579 -63
  213. package/src/config/gate-reachability-exemptions.json +21 -0
  214. package/src/config/gate-violation-baselines.json +37 -19
  215. package/src/config/harness-evolution-budget.json +25 -0
  216. package/src/config/lapsed-beta-baseline.json +96 -0
  217. package/src/config/memory-twin-verdicts.yml +129 -0
  218. package/src/config/metric-registry.yml +124 -0
  219. package/src/config/pack-size-budget.json +16 -15
  220. package/src/config/preamble-payload-budget.json +8 -8
  221. package/src/config/profiles/balanced.ini +27 -0
  222. package/src/config/profiles/full.ini +27 -0
  223. package/src/config/profiles/minimal.ini +27 -0
  224. package/src/config/publish-surface.json +9 -2
  225. package/src/config/routing-coverage-seed.json +16 -2
  226. package/src/config/rule-stub-ceilings.json +126 -112
  227. package/src/config/turnaround-budget.json +66 -0
  228. package/src/install/claudeRuleRewrite.ts +288 -0
  229. package/src/install/detect.ts +60 -17
  230. package/src/install/detect_php_shape.ts +191 -0
  231. package/src/scripts/_cli/cmd_doctor.ts +27 -112
  232. package/src/scripts/_dispatch.bash +27 -0
  233. package/src/scripts/_lib/activation_ladder.ts +211 -0
  234. package/src/scripts/_lib/activation_states.ts +88 -0
  235. package/src/scripts/_lib/adherence_detectors.ts +143 -0
  236. package/src/scripts/_lib/arith_claims.ts +181 -0
  237. package/src/scripts/_lib/arm_ranking.ts +62 -0
  238. package/src/scripts/_lib/asset_delivery_ledger.ts +303 -0
  239. package/src/scripts/_lib/audit_field_provenance.ts +54 -0
  240. package/src/scripts/_lib/auto_dispatch.ts +32 -3
  241. package/src/scripts/_lib/bench_ab_size_claim.ts +98 -4
  242. package/src/scripts/_lib/benchmark_cache_fields.ts +158 -0
  243. package/src/scripts/_lib/candidate_proposer.ts +402 -0
  244. package/src/scripts/_lib/candidate_record.ts +601 -0
  245. package/src/scripts/_lib/capture_rate.ts +319 -0
  246. package/src/scripts/_lib/collector_denominator.ts +771 -0
  247. package/src/scripts/_lib/collector_record.ts +340 -0
  248. package/src/scripts/_lib/collector_store.ts +664 -0
  249. package/src/scripts/_lib/collector_supervision.ts +827 -0
  250. package/src/scripts/_lib/concern_estate.ts +77 -0
  251. package/src/scripts/_lib/config_chain.ts +477 -0
  252. package/src/scripts/_lib/config_cost.ts +209 -0
  253. package/src/scripts/_lib/council_settings_block.ts +6 -0
  254. package/src/scripts/_lib/curator_ops.ts +172 -0
  255. package/src/scripts/_lib/delivery_arm_experiment.ts +266 -0
  256. package/src/scripts/_lib/delivery_criticality.ts +126 -0
  257. package/src/scripts/_lib/doctor_runtime_checks.ts +70 -0
  258. package/src/scripts/_lib/empty_cycles.ts +88 -0
  259. package/src/scripts/_lib/eval_publication.ts +354 -0
  260. package/src/scripts/_lib/evaluation_vector.ts +283 -0
  261. package/src/scripts/_lib/evaluator_promotion.ts +225 -0
  262. package/src/scripts/_lib/evidence_basis.ts +118 -0
  263. package/src/scripts/_lib/exec_evidence.ts +8 -0
  264. package/src/scripts/_lib/experience_card.ts +272 -0
  265. package/src/scripts/_lib/experience_report.ts +151 -0
  266. package/src/scripts/_lib/experiment_freeze.ts +112 -0
  267. package/src/scripts/_lib/generated_by.ts +66 -0
  268. package/src/scripts/_lib/harness_evolution_guards.ts +229 -0
  269. package/src/scripts/_lib/hook_effect_probe.ts +141 -0
  270. package/src/scripts/_lib/host_denominator.ts +687 -0
  271. package/src/scripts/_lib/host_projection_reach.ts +157 -0
  272. package/src/scripts/_lib/ignored_blocker.ts +148 -0
  273. package/src/scripts/_lib/install_reach_checks.ts +495 -0
  274. package/src/scripts/_lib/json_duplicate_keys.ts +150 -0
  275. package/src/scripts/_lib/judge_hygiene.ts +228 -0
  276. package/src/scripts/_lib/legacy_boundary_map.ts +228 -0
  277. package/src/scripts/_lib/loop_guards.ts +299 -0
  278. package/src/scripts/_lib/loss_class.ts +129 -0
  279. package/src/scripts/_lib/machine_wake.ts +51 -0
  280. package/src/scripts/_lib/md_prose_lines.ts +177 -0
  281. package/src/scripts/_lib/minimality_tiebreak.ts +168 -0
  282. package/src/scripts/_lib/one_resolver_invariant.ts +449 -0
  283. package/src/scripts/_lib/orchestration_record.ts +253 -5
  284. package/src/scripts/_lib/outcome_envelope.ts +227 -0
  285. package/src/scripts/_lib/outcome_vocabularies.ts +125 -0
  286. package/src/scripts/_lib/paired_stats.ts +245 -0
  287. package/src/scripts/_lib/paired_verdict.ts +226 -0
  288. package/src/scripts/_lib/prefix_stable_surfaces.ts +123 -0
  289. package/src/scripts/_lib/privacy_class.ts +47 -0
  290. package/src/scripts/_lib/regression_neighbourhood.ts +259 -0
  291. package/src/scripts/_lib/repeated_failure.ts +105 -0
  292. package/src/scripts/_lib/repo_root.ts +111 -0
  293. package/src/scripts/_lib/review_skipped_record.ts +37 -0
  294. package/src/scripts/_lib/role_split.ts +338 -0
  295. package/src/scripts/_lib/runtime_journal.ts +1499 -0
  296. package/src/scripts/_lib/runtime_wiring_checks.ts +430 -0
  297. package/src/scripts/_lib/skill_catalogue.ts +11 -1
  298. package/src/scripts/_lib/source_digest.ts +200 -0
  299. package/src/scripts/_lib/source_redact.ts +260 -0
  300. package/src/scripts/_lib/source_shape.ts +502 -0
  301. package/src/scripts/_lib/source_snapshot_dedup.ts +199 -0
  302. package/src/scripts/_lib/strip_comments.d.mts +8 -0
  303. package/src/scripts/_lib/strip_comments.mjs +65 -0
  304. package/src/scripts/_lib/test_red_state.ts +154 -0
  305. package/src/scripts/_lib/trigger_shift.ts +144 -0
  306. package/src/scripts/_lib/untrusted_content.ts +82 -7
  307. package/src/scripts/adoption_report.ts +1 -1
  308. package/src/scripts/adr/evidence_census.ts +1 -1
  309. package/src/scripts/adr/regenerate_index.ts +26 -2
  310. package/src/scripts/adr_cite_check.ts +164 -1
  311. package/src/scripts/ai_council/blind_review.ts +11 -1
  312. package/src/scripts/ai_council/clients.ts +4 -0
  313. package/src/scripts/ai_council/config.ts +3 -0
  314. package/src/scripts/ai_council/consensus.ts +28 -8
  315. package/src/scripts/ai_council/consensus_round.ts +226 -0
  316. package/src/scripts/ai_council/disagreement_signal.ts +338 -0
  317. package/src/scripts/ai_council/inline_findings.ts +340 -0
  318. package/src/scripts/ai_council/judge_position_bias.ts +197 -0
  319. package/src/scripts/ai_council/orchestrator.ts +16 -203
  320. package/src/scripts/ai_council/orchestrator_results.ts +23 -3
  321. package/src/scripts/ai_council/pricing.ts +106 -0
  322. package/src/scripts/ai_council/prompts.ts +74 -7
  323. package/src/scripts/ai_council/provider_leakage_bench.ts +327 -0
  324. package/src/scripts/ai_council/py_format.ts +14 -3
  325. package/src/scripts/ai_council/recouncil_guard.ts +293 -0
  326. package/src/scripts/ai_council/response_record.ts +50 -0
  327. package/src/scripts/ai_council/topology_bench_manifest.ts +860 -0
  328. package/src/scripts/ai_council/topology_vocabulary.ts +175 -0
  329. package/src/scripts/asset_delivery_ledger.ts +157 -0
  330. package/src/scripts/attest_artifact.ts +193 -0
  331. package/src/scripts/audit_auto_rules.ts +2 -1
  332. package/src/scripts/audit_command_surface.ts +1 -1
  333. package/src/scripts/audit_mcp_tools.ts +2 -2
  334. package/src/scripts/audit_skill_overlap_allowlist.json +6 -1
  335. package/src/scripts/audit_user_type_axis.ts +2 -1
  336. package/src/scripts/bench_ab_clone.ts +215 -10
  337. package/src/scripts/bench_ab_integrity.ts +119 -5
  338. package/src/scripts/bench_ab_v2_stats.ts +40 -213
  339. package/src/scripts/build_archive_index.ts +1 -1
  340. package/src/scripts/build_linear_digest.ts +1 -1
  341. package/src/scripts/build_proof.ts +11 -4
  342. package/src/scripts/build_rule_trigger_matrix.ts +1 -1
  343. package/src/scripts/build_source_digests.ts +157 -0
  344. package/src/scripts/cache_realization_report.ts +103 -0
  345. package/src/scripts/check_adr_frontmatter.ts +126 -0
  346. package/src/scripts/check_benchmark_report_fields.ts +207 -0
  347. package/src/scripts/check_beta_review_markers.ts +235 -6
  348. package/src/scripts/check_bundle_path_leakage.ts +34 -1
  349. package/src/scripts/check_claims.ts +576 -6
  350. package/src/scripts/check_composite_arming.ts +35 -0
  351. package/src/scripts/check_concern_admissions.ts +365 -0
  352. package/src/scripts/check_enforcement_coverage.ts +28 -0
  353. package/src/scripts/check_estate_count.ts +142 -1
  354. package/src/scripts/check_gate_reachability.ts +383 -0
  355. package/src/scripts/check_host_loadability.ts +104 -0
  356. package/src/scripts/check_loss_class_declared.ts +308 -0
  357. package/src/scripts/check_md_language.ts +15 -98
  358. package/src/scripts/check_memory_proposal.ts +18 -11
  359. package/src/scripts/check_no_currency_in_cost_surfaces.ts +225 -0
  360. package/src/scripts/check_no_external_sources.ts +281 -6
  361. package/src/scripts/check_pack_conformance_fixture.ts +11 -1
  362. package/src/scripts/check_pack_size.ts +59 -2
  363. package/src/scripts/check_preamble_payload_budget.ts +114 -3
  364. package/src/scripts/check_prefix_stable_mutation.ts +372 -0
  365. package/src/scripts/check_publish_surface.ts +10 -1
  366. package/src/scripts/check_references.ts +24 -1
  367. package/src/scripts/check_rule_evidence_declaration.ts +316 -0
  368. package/src/scripts/check_rule_projection_integrity.ts +14 -4
  369. package/src/scripts/check_score_contract.ts +26 -3
  370. package/src/scripts/check_static_parity.ts +285 -0
  371. package/src/scripts/check_supervision_claim_atomicity.ts +498 -0
  372. package/src/scripts/check_suppression_hygiene.ts +15 -0
  373. package/src/scripts/ci_settle.ts +39 -2
  374. package/src/scripts/code_graph/build.ts +60 -3
  375. package/src/scripts/code_graph/extract.ts +44 -0
  376. package/src/scripts/code_graph/types.ts +24 -0
  377. package/src/scripts/collector_daemon.ts +714 -0
  378. package/src/scripts/config_cost_report.ts +302 -0
  379. package/src/scripts/consumer_matrix.ts +74 -1
  380. package/src/scripts/cost/budget.mjs +10 -3
  381. package/src/scripts/cost/track.mjs +10 -3
  382. package/src/scripts/council_cli.ts +37 -54
  383. package/src/scripts/dispatch_r2_reviewer.ts +46 -5
  384. package/src/scripts/evolution_lab.ts +980 -0
  385. package/src/scripts/external_sources_denylist.json +5 -18
  386. package/src/scripts/extract_audit_patterns.ts +21 -0
  387. package/src/scripts/fold_intake.ts +12 -1
  388. package/src/scripts/gen_discovery_baseline.ts +1 -1
  389. package/src/scripts/generate_capabilities_index.ts +12 -5
  390. package/src/scripts/generate_capability_matrix.ts +3 -3
  391. package/src/scripts/generate_command_flows.ts +2 -2
  392. package/src/scripts/generate_cookbook.ts +2 -2
  393. package/src/scripts/generate_index.ts +8 -1
  394. package/src/scripts/generate_knowledge_index.ts +2 -1
  395. package/src/scripts/generate_ownership_matrix.ts +2 -1
  396. package/src/scripts/generate_pack_manifests.ts +10 -2
  397. package/src/scripts/generate_role_experiences_catalog.ts +2 -2
  398. package/src/scripts/generate_settings_reference.ts +1 -1
  399. package/src/scripts/git_authorization_hook.ts +22 -1
  400. package/src/scripts/grade_target_readiness.ts +48 -5
  401. package/src/scripts/hook_effect_doctor.ts +261 -0
  402. package/src/scripts/hook_manifest.json +1 -1
  403. package/src/scripts/hook_manifest.yaml +98 -11
  404. package/src/scripts/hooks/block_speaking_inbox_dir.ts +271 -0
  405. package/src/scripts/hooks/block_unauthorized_git.ts +18 -0
  406. package/src/scripts/hooks/concern_registry.ts +4 -0
  407. package/src/scripts/hooks/dispatch_hook.ts +32 -0
  408. package/src/scripts/hooks/journal_record_hook.ts +345 -0
  409. package/src/scripts/hooks/prepush_metadata_sources.sh +110 -0
  410. package/src/scripts/hooks/run_continuation_hook.ts +44 -9
  411. package/src/scripts/hooks/shims/install.sh +61 -0
  412. package/src/scripts/hooks/shims/php +101 -0
  413. package/src/scripts/hooks/suggestion_capture_hook.ts +10 -0
  414. package/src/scripts/hot_context_hook.ts +16 -0
  415. package/src/scripts/install-hooks.sh +20 -5
  416. package/src/scripts/install.ts +17 -35
  417. package/src/scripts/inventory_frontmatter.ts +2 -1
  418. package/src/scripts/lint_adr_sweep_routing.ts +12 -0
  419. package/src/scripts/lint_canonical_terms.ts +604 -0
  420. package/src/scripts/lint_composition_review.ts +619 -0
  421. package/src/scripts/lint_consolidation_lineage.ts +666 -0
  422. package/src/scripts/lint_eval_specs.ts +593 -0
  423. package/src/scripts/lint_hook_manifest.ts +19 -0
  424. package/src/scripts/lint_host_portability.ts +373 -0
  425. package/src/scripts/lint_judge_prompt_expectation.ts +27 -1
  426. package/src/scripts/lint_memory_twin_parity.ts +335 -0
  427. package/src/scripts/lint_metric_consumers.ts +355 -0
  428. package/src/scripts/lint_skill_descriptions.ts +18 -1
  429. package/src/scripts/lint_skill_frontmatter_safety.ts +58 -0
  430. package/src/scripts/lint_skill_link_reach.ts +252 -0
  431. package/src/scripts/lint_skill_trigger_corpus.ts +426 -23
  432. package/src/scripts/lint_ticket_buildable.ts +17 -1
  433. package/src/scripts/mcp_server/consumer_tool_catalog.json +1 -1
  434. package/src/scripts/mcp_server/tool_catalog_source.ts +1 -1
  435. package/src/scripts/measure_docs_dead_links.ts +348 -0
  436. package/src/scripts/measure_host_capture.ts +461 -0
  437. package/src/scripts/migration_status.ts +3 -3
  438. package/src/scripts/model_rule_injection.ts +60 -0
  439. package/src/scripts/orchestration_record.ts +14 -0
  440. package/src/scripts/preamble_byte_census.ts +139 -10
  441. package/src/scripts/prepack-check.mjs +4 -1
  442. package/src/scripts/probe_turnaround.ts +384 -0
  443. package/src/scripts/probe_unblocked_ask.ts +279 -0
  444. package/src/scripts/render_benchmark_md.ts +1 -1
  445. package/src/scripts/rule_activation_census.ts +70 -9
  446. package/src/scripts/rule_backlinks.ts +1 -1
  447. package/src/scripts/run_lifecycle_suite.ts +208 -0
  448. package/src/scripts/run_skill_evals.ts +40 -0
  449. package/src/scripts/schemas/delivery-manifest.schema.json +43 -0
  450. package/src/scripts/schemas/drafting-channels.schema.json +43 -0
  451. package/src/scripts/schemas/evals.schema.json +24 -1
  452. package/src/scripts/schemas/rule.schema.json +52 -1
  453. package/src/scripts/schemas/skill.schema.json +17 -2
  454. package/src/scripts/skill_overlap.ts +7 -1
  455. package/src/scripts/skill_tools/run_block_d_eval.ts +8 -1
  456. package/src/scripts/skill_tools/score_skill_relevance.ts +84 -3
  457. package/src/scripts/skill_tools/suggest_skill_for_task.ts +8 -1
  458. package/src/scripts/skill_usage_report.ts +2 -1
  459. package/src/scripts/stubs_due.ts +211 -0
  460. package/src/scripts/sweep_source_surfaces.ts +678 -0
  461. package/src/scripts/sync_pr_branch.ts +3 -3
  462. package/src/scripts/trigger_eval_grandfather.json +202 -222
  463. package/src/scripts/utilization_report.ts +22 -2
  464. package/src/server/schemas/settings.ts +5 -0
  465. package/src/templates/marketing-copy.yml +1 -1
  466. package/dist/ui/assets/index-Cxgy63kz.js +0 -26
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env sh
2
+ # Container-only tooling shim — road-to-skill-ecosystem-runtime-enforcement
3
+ # Phase 1 Steps 2-4. AI council 2/2 (2026-08-25) scoped Phase 1 to THIS shim
4
+ # alone; the hook-bypass-flag and package-manager candidates are recorded as
5
+ # out of scope at `blocker: shim-scope-decision`.
6
+ #
7
+ # WHAT IT DOES. Refuses a host invocation of a tool the container-only rule
8
+ # reserves for the project container, and prints the sanctioned in-container
9
+ # form with the caller's own arguments re-quoted, so the alternative is
10
+ # directly runnable rather than a template to adapt.
11
+ #
12
+ # WHY SHELL AND NOT AN INTERPRETED RUNTIME. Startup dominates: this runs on
13
+ # every invocation of the shimmed names, most of which are legitimate, so a
14
+ # node or python start would be paid constantly to say nothing. Same reason the
15
+ # fast-pass below is a case statement rather than a parse.
16
+ #
17
+ # WHY A PATH PREPEND AND NOT A PER-TOOL-CALL HOOK. A prepend costs nothing per
18
+ # call and works for any process the session starts, including ones no hook
19
+ # surface observes. It is also session-scoped and reversible by construction --
20
+ # the installer never writes a profile.
21
+ #
22
+ # EXIT CODE. Non-zero (2) on refusal. Never 0 on a refusal: a shim that exits 0
23
+ # has told the caller nothing the caller must act on, and the recorded trap on
24
+ # this host is the opposite mistake -- an ADVISORY exit 2 read as a hard block.
25
+ # This one is not advisory; the refusal is the point.
26
+
27
+ set -eu
28
+
29
+ # --- The global kill switch (Step 7) -------------------------------------
30
+ #
31
+ # One variable disables every hook for one invocation. It is checked FIRST so
32
+ # the escape hatch cannot be shadowed by anything below, and it re-execs the
33
+ # real binary rather than exiting, so `AGENT_CONFIG_DISABLE_HOOKS=1 php -v`
34
+ # does what it says instead of merely not refusing.
35
+ #
36
+ # Finding the real binary: strip this shim's own directory out of PATH and look
37
+ # again. Without that the re-exec finds the shim and loops.
38
+ if [ "${AGENT_CONFIG_DISABLE_HOOKS:-}" = "1" ]; then
39
+ _shim_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)
40
+ _clean_path=$(printf '%s' "${PATH:-}" | tr ':' '\n' | while IFS= read -r _p; do
41
+ [ -n "$_p" ] || continue
42
+ _rp=$(CDPATH= cd -- "$_p" 2>/dev/null && pwd -P) || continue
43
+ [ "$_rp" = "$_shim_dir" ] && continue
44
+ printf '%s:' "$_p"
45
+ done)
46
+ _real=$(PATH="${_clean_path%:}" command -v "$(basename -- "$0")" 2>/dev/null || true)
47
+ if [ -n "$_real" ]; then
48
+ exec "$_real" "$@"
49
+ fi
50
+ # Disabled, and there is no real binary to fall through to. Say so rather
51
+ # than exiting 0: the caller asked for the tool, not for silence.
52
+ printf '%s: hooks disabled, but no %s found outside the shim directory\n' \
53
+ "shims/php" "$(basename -- "$0")" >&2
54
+ exit 127
55
+ fi
56
+
57
+ # The basename this was invoked as. Dispatch on it so one script serves several
58
+ # names (Step 3) -- today the set is deliberately one entry wide.
59
+ INVOKED="$(basename -- "$0")"
60
+
61
+ case "$INVOKED" in
62
+ php) ;;
63
+ *)
64
+ # Invoked under a name this shim does not claim. Say so rather than
65
+ # guessing: a silent pass-through would make the shim look installed and
66
+ # inert, which is worse than an error.
67
+ printf '%s: shim invoked under an unclaimed basename %s\n' "shims/php" "$INVOKED" >&2
68
+ exit 2
69
+ ;;
70
+ esac
71
+
72
+ # --- Re-quote the received arguments -------------------------------------
73
+ #
74
+ # Single-quote each argument and escape embedded single quotes as '\'' so the
75
+ # printed line survives copy-paste through a shell unchanged. Without this a
76
+ # suggestion containing a space or a quote is a suggestion that silently does
77
+ # something else when run.
78
+ quoted=''
79
+ for arg in "$@"; do
80
+ esc=$(printf '%s' "$arg" | sed "s/'/'\\\\''/g")
81
+ quoted="$quoted '$esc'"
82
+ done
83
+
84
+ SERVICE="${AGENT_CONFIG_PHP_SERVICE:-php}"
85
+
86
+ cat >&2 <<EOF
87
+ ❌ \`$INVOKED\` was run on the HOST. This project's tooling is container-only.
88
+
89
+ Run it in the container instead:
90
+
91
+ docker compose exec -T $SERVICE $INVOKED$quoted
92
+
93
+ Why: the container-only tooling rule reserves php / artisan / composer /
94
+ phpstan / rector / ecs / phpunit for the project container, because a host
95
+ run picks up the host's PHP version and extensions and produces results
96
+ that do not match CI.
97
+
98
+ Override for one command: AGENT_CONFIG_DISABLE_HOOKS=1 $INVOKED ...
99
+ Service name: AGENT_CONFIG_PHP_SERVICE=<name> (default: php)
100
+ EOF
101
+ exit 2
@@ -50,6 +50,7 @@ import { fileURLToPath, pathToFileURL } from 'node:url';
50
50
 
51
51
  import { unwrap } from './envelope.js';
52
52
  import { readHookStdin } from './hook_stdin.js';
53
+ import { humanTypedThisTurn } from '../_lib/machine_wake.js';
53
54
 
54
55
  const EXIT_ALLOW = 0;
55
56
  const SETTINGS_FILE = '.agent-settings.yml';
@@ -328,6 +329,15 @@ export function main(_argv: readonly string[] = [], now: Date = new Date()): num
328
329
  return EXIT_ALLOW;
329
330
  }
330
331
  if (event === 'user_prompt_submit') {
332
+ // A machine wake is not a user turn. Without this, a background task
333
+ // notification arriving between the block and the user's "1"
334
+ // consumes the latch, and the real pick then classifies as `other`
335
+ // — the instrument records a miss that never happened. Same defect,
336
+ // same predicate, as the git-authorization ledger; see
337
+ // `_lib/machine_wake.ts` for the captured discriminator.
338
+ if (!humanTypedThisTurn(str(payload['prompt'] as JsonValue | undefined))) {
339
+ return EXIT_ALLOW;
340
+ }
331
341
  const latch = consumeLatch(root);
332
342
  const v = classifyTurn(str(payload['prompt'] as JsonValue | undefined), latch, now.getTime());
333
343
  if (v.record) {
@@ -10,6 +10,22 @@
10
10
  * Contract (per the verdict):
11
11
  * - `agents/runtime/state/hot-context.md`, gitignored, OVERWRITTEN on every
12
12
  * `stop` (cache, not journal). 400-word hard cap.
13
+ *
14
+ * loss_class: ephemeral-lossy
15
+ *
16
+ * Named, not changed (`road-to-runtime-context-floors` step 3.1). The two losses
17
+ * here are both deliberate and both unrecoverable, which is exactly what the
18
+ * class asserts: the 400-word cap discards the older half of the window, and
19
+ * `_redact_lines` DROPS any line the low-impact redactor refuses — including on
20
+ * a redactor error, which is fail-closed per line. Neither is retrievable from
21
+ * the output, and neither should be: this file is a privacy-floored cache whose
22
+ * source of truth is the transcript it was built from, and storing a recovery
23
+ * for a line dropped for privacy would defeat the reason it was dropped.
24
+ *
25
+ * `recoverable-lossy` would be the WRONG class here even though the transcript
26
+ * still exists, and the distinction is the point of the vocabulary: the class
27
+ * describes what THIS transform guarantees to its consumer, and this one
28
+ * guarantees nothing about the dropped content on purpose.
13
29
  * - Written by DETERMINISTIC extraction from the chat-history JSONL
14
30
  * (`agents/runtime/.agent-chat-history`) — never LLM summarization.
15
31
  * - Every extracted line passes the low-impact privacy floor
@@ -32,8 +32,12 @@ cat > "$HOOKS_DIR/pre-push" << 'EOF'
32
32
  # outputs (e.g. a new guideline bumping the count in README + docs/architecture).
33
33
  # `task consistency` is the EXACT CI mirror (sync-check + sync + generate-tools
34
34
  # + compile-router + compile-corpus + `git diff --quiet`),
35
- # so any derived-output drift blocks the push here. Runtime ~15-40s (it
36
- # regenerates the tool trees) — cheaper than a red CI run and a fixup re-push.
35
+ # so any derived-output drift blocks the push here. Runtime ~10s: three
36
+ # consecutive timed runs on 2026-08-30 measured 9.79s / 10.19s / 10.26s
37
+ # (road-to-agent-turnaround 3.2). The header said "~15-40s" until then, which
38
+ # over-stated this half of the hook by 1.5-4x while the hook AS A WHOLE was far
39
+ # more expensive than either number — see the preflight block below. Still
40
+ # cheaper than a red CI run and a fixup re-push.
37
41
 
38
42
  # A delete-only push has no content to gate, so every check below is answering
39
43
  # a question nobody asked. Measured 2026-08-18 during the 14.0.0 release:
@@ -83,9 +87,20 @@ fi
83
87
  # preflight gates read that tree, so on a FRESH worktree (this repo's standard
84
88
  # workflow) running preflight first would fail with "produced by regeneration
85
89
  # but absent before" — red for a reason the contributor did not cause, which is
86
- # exactly the anti-pattern this gate set exists to avoid. Measured 15s against
87
- # the 25s `pre_push_budget_seconds` ceiling in src/config/ci-local-parity.yml.
88
- # `check_enforcement_coverage` (30.7s) stays out of preflight by design.
90
+ # exactly the anti-pattern this gate set exists to avoid.
91
+ #
92
+ # BUDGET: measured 36.05s on 2026-08-30 (road-to-agent-turnaround 3.2, a clean
93
+ # exit-0 run), against the 25s `pre_push_budget_seconds` ceiling in
94
+ # src/config/ci-local-parity.yml. That is 44% OVER, and the header claimed 15s
95
+ # until this measurement. The ceiling's own comment calls it "a real budget, not
96
+ # a wish" — and nothing measures the hook, so the gate set grew past it with no
97
+ # signal. Recorded rather than fixed here: narrowing preflight to the pushed
98
+ # paths is one edit away from turning a push-blocking mirror into a partial one,
99
+ # which is how drift reaches CI instead of the developer.
100
+ #
101
+ # The hook's local cost is therefore ~46s (10s consistency + 36s preflight),
102
+ # which is what the 67s median `git push` in the ten-session corpus is mostly
103
+ # made of. `check_enforcement_coverage` (30.7s) stays out of preflight by design.
89
104
  echo "🔍 Preflight — the CI-only repo-content gates..."
90
105
  if [ "${AGENT_CONFIG_SKIP_PREPUSH_PREFLIGHT:-}" = "1" ]; then
91
106
  echo "⏭️ skipped via AGENT_CONFIG_SKIP_PREPUSH_PREFLIGHT=1"
@@ -98,6 +98,7 @@ import {
98
98
  type RuleScope,
99
99
  } from '../install/rule_scope.js';
100
100
  import { isExclusivelyPackageOnly, stampHostLayerFingerprint } from '../install/partitionEligibility.js'; // ADR-236
101
+ import * as claude_rule_rewrite from '../install/claudeRuleRewrite.js';
101
102
  import { RULE_SOURCE_REL } from '../install/wizard-plan.js';
102
103
  import { flattenSurface, computeSurfaceDelta, type SettingsSurface } from '../shared/settingsSurface.js';
103
104
  import { settingsSchema } from '../server/schemas/settings.js';
@@ -109,6 +110,7 @@ import {
109
110
  render_native_model_md,
110
111
  } from './_lib/model_tier.js';
111
112
  import { main as cmdMigrateMain } from './_cli/cmd_migrate.js';
113
+ import { SCOPE_DETECT_AI_DIRS, SCOPE_DETECT_MANIFESTS } from '../install/detect.js';
112
114
 
113
115
  // ---------------------------------------------------------------------------
114
116
  // Python-runtime parity helpers
@@ -2328,28 +2330,12 @@ function _run_scope_prompt(opts: Options, reason: string, custom_path: string |
2328
2330
  return 'project';
2329
2331
  }
2330
2332
 
2331
- const SCOPE_DETECT_MANIFESTS: readonly string[] = [
2332
- 'package.json',
2333
- 'composer.json',
2334
- 'pyproject.toml',
2335
- 'Cargo.toml',
2336
- 'go.mod',
2337
- 'Gemfile',
2338
- ];
2339
- const SCOPE_DETECT_AI_DIRS: readonly string[] = [
2340
- '.claude',
2341
- '.cursor',
2342
- '.windsurf',
2343
- '.augment',
2344
- '.clinerules',
2345
- '.copilot',
2346
- '.gemini',
2347
- '.codex',
2348
- '.aider',
2349
- '.continue',
2350
- '.roo',
2351
- '.kilocode',
2352
- ];
2333
+ // SCOPE_DETECT_MANIFESTS and SCOPE_DETECT_AI_DIRS were duplicated here, byte
2334
+ // for byte, alongside their definitions in `src/install/detect.ts`. Two copies
2335
+ // of a detection constant is the shape that makes divergence invisible: the
2336
+ // test pinned ONE of them exactly, so a change to the other would have passed
2337
+ // CI. De-duplicated 2026-08-26 (road-to-internal-estate-fit 2.3) — one exported
2338
+ // definition, imported here.
2353
2339
  const SCOPE_DETECT_AI_FILES: readonly string[] = [
2354
2340
  'CLAUDE.md',
2355
2341
  'AGENTS.md',
@@ -3246,20 +3232,16 @@ function _deploy_global_content(
3246
3232
  // Runs before the postcheck + inventory record so `current_files`
3247
3233
  // reflects the transformed tree and reaping stays consistent.
3248
3234
  if (tool_id === 'claude-code') {
3235
+ // Rules land verbatim from the copy above; see the module. It also
3236
+ // renders the flat-command wrapper report, unchanged.
3249
3237
  const res = _apply_claude_flat_command_wrappers(anchor, package_root, current_files);
3250
- if (res.wrapped.length > 0 && !state.QUIET) {
3251
- info(
3252
- ` claude-code: ${res.wrapped.length} visible flat command(s) projected as ` +
3253
- 'skill wrappers (Claude Code flat-command discovery workaround)',
3254
- );
3255
- }
3256
- if (res.reserved.length > 0 && !state.QUIET) {
3257
- info(
3258
- ` claude-code: ${res.reserved.length} flat command(s) withheld — name is a ` +
3259
- `Claude Code built-in (${res.reserved.join(', ')}); nested /cluster:sub ` +
3260
- 'commands remain available',
3261
- );
3262
- }
3238
+ claude_rule_rewrite.rewriteAndReport(
3239
+ path.join(anchor, 'rules'),
3240
+ state.QUIET,
3241
+ info,
3242
+ warn,
3243
+ res,
3244
+ );
3263
3245
  }
3264
3246
 
3265
3247
  const missing_targets = _verify_deploy_targets(anchor, plan);
@@ -28,6 +28,7 @@
28
28
  import * as fs from 'node:fs';
29
29
  import * as path from 'node:path';
30
30
  import { fileURLToPath, pathToFileURL } from 'node:url';
31
+ import { generatedBy } from './_lib/generated_by.js';
31
32
 
32
33
  const _HERE = fileURLToPath(import.meta.url);
33
34
  // src/scripts/inventory_frontmatter.ts → parents[2] is the repo root.
@@ -266,7 +267,7 @@ function _mostCommon(counter: Map<string, number>): [string, number][] {
266
267
  export function main(): number {
267
268
  _OUT.length = 0;
268
269
  emit('# Frontmatter inventory (generated)\n');
269
- emit('Generated by `scripts/inventory_frontmatter.py`. Raw material for');
270
+ emit(generatedBy('inventory_frontmatter', 'Raw material for'));
270
271
  emit('Phase 1 of the frontmatter-schema roadmap. Do not edit by hand.\n');
271
272
 
272
273
  inventory_type('skills', gather_files(path.join(SRC, 'skills'), (b) => b === 'SKILL.md'));
@@ -43,6 +43,7 @@ import * as path from 'node:path';
43
43
  import { fileURLToPath, pathToFileURL } from 'node:url';
44
44
 
45
45
  import { runGateCli, runSelfTest, type SelfTestCase } from './_lib/gate_self_test.js';
46
+ import { GateLedger } from './_lib/gate_ledger.js';
46
47
  import { assertScanned, DeadScopeError } from './_lib/scan_scope.js';
47
48
 
48
49
  const _HERE = fileURLToPath(import.meta.url);
@@ -317,6 +318,13 @@ export function main(argv: string[] = process.argv.slice(2)): number {
317
318
  names = [];
318
319
  }
319
320
 
321
+ // Per-artifact accounting. `scanned` counts candidate ROWS, so a sweep
322
+ // artifact whose table the parser walked past contributes zero rows and is
323
+ // indistinguishable from one with no candidates — exactly the "looked at
324
+ // almost nothing" reading the ledger exists to separate from "found
325
+ // nothing".
326
+ const ledger = new GateLedger('lint_adr_sweep_routing');
327
+ ledger.plan(names);
320
328
  const violations: Violation[] = [];
321
329
  let scanned = 0;
322
330
  for (const name of names) {
@@ -325,7 +333,11 @@ export function main(argv: string[] = process.argv.slice(2)): number {
325
333
  const [v, n] = lintSweep(rel, fs.readFileSync(abs, 'utf-8'));
326
334
  violations.push(...v);
327
335
  scanned += n;
336
+ if (v.length > 0) ledger.fail(name, `${String(v.length)} unrouted candidate row(s)`);
337
+ else if (n === 0) ledger.skip(name, 'no_applicable_files');
338
+ else ledger.complete(name);
328
339
  }
340
+ ledger.report(json ? () => undefined : undefined);
329
341
 
330
342
  process.stdout.write(`scanned: ${scanned}\n`);
331
343
  try {