@event4u/agent-config 16.3.0 → 16.4.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 (486) 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 +251 -0
  5. package/README.md +2 -2
  6. package/agents/templates/.ai-council.yml.example +26 -8
  7. package/dist/agent-src/commands/analyze/inbox.md +10 -7
  8. package/dist/agent-src/commands/bug/investigate.md +1 -1
  9. package/dist/agent-src/commands/commit/in-chunks.md +40 -31
  10. package/dist/agent-src/commands/commit.md +72 -33
  11. package/dist/agent-src/commands/condense.md +2 -8
  12. package/dist/agent-src/commands/council/debate.md +11 -7
  13. package/dist/agent-src/commands/council/default.md +10 -9
  14. package/dist/agent-src/commands/council.md +1 -1
  15. package/dist/agent-src/commands/estimate-ticket.md +1 -1
  16. package/dist/agent-src/commands/feature/explore.md +3 -3
  17. package/dist/agent-src/commands/feature/plan.md +1 -1
  18. package/dist/agent-src/commands/fix/ci.md +17 -3
  19. package/dist/agent-src/commands/fix/commit-messages.md +48 -23
  20. package/dist/agent-src/commands/fix/pr-comments.md +3 -6
  21. package/dist/agent-src/commands/implement-ticket.md +3 -3
  22. package/dist/agent-src/commands/memory/add.md +4 -16
  23. package/dist/agent-src/commands/memory/load.md +5 -6
  24. package/dist/agent-src/commands/memory/promote.md +3 -16
  25. package/dist/agent-src/commands/mission/upgrade.md +3 -2
  26. package/dist/agent-src/commands/optimize/agents-dir.md +2 -2
  27. package/dist/agent-src/commands/optimize/deep.md +4 -2
  28. package/dist/agent-src/commands/optimize/rtk.md +4 -26
  29. package/dist/agent-src/commands/pr/create/description-only.md +18 -15
  30. package/dist/agent-src/commands/pr/create.md +42 -34
  31. package/dist/agent-src/commands/pr/merge.md +136 -9
  32. package/dist/agent-src/commands/prepare-for-review.md +13 -11
  33. package/dist/agent-src/commands/project/analyze.md +7 -35
  34. package/dist/agent-src/commands/refine-ticket.md +1 -1
  35. package/dist/agent-src/commands/review/changes.md +14 -19
  36. package/dist/agent-src/commands/roadmap/next.md +10 -1
  37. package/dist/agent-src/commands/roadmap/process-full.md +52 -38
  38. package/dist/agent-src/commands/roadmap/resolve-blockers.md +64 -14
  39. package/dist/agent-src/commands/worktree/create.md +7 -3
  40. package/dist/agent-src/commands/worktree/verify.md +2 -1
  41. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +5 -3
  42. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +7 -9
  43. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -6
  44. package/dist/agent-src/contexts/contracts/frugality-charter.md +8 -5
  45. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
  46. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +0 -1
  47. package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
  48. package/dist/agent-src/contexts/execution/non-interactive-contract.md +5 -8
  49. package/dist/agent-src/contexts/execution/rdp-gate.md +4 -4
  50. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +9 -8
  51. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +67 -52
  52. package/dist/agent-src/contexts/execution/subagent-routing.md +8 -8
  53. package/dist/agent-src/contexts/execution/subagent-steering.md +6 -4
  54. package/dist/agent-src/contexts/execution/terminal-states.md +2 -2
  55. package/dist/agent-src/contexts/execution/toolchain-resolver.md +4 -10
  56. package/dist/agent-src/contexts/subagent-configuration.md +1 -1
  57. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
  58. package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
  59. package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
  60. package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
  61. package/dist/agent-src/guidelines/agent-infra/layered-settings.md +13 -1
  62. package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  63. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
  64. package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +36 -0
  65. package/dist/agent-src/guidelines/php/git.md +15 -2
  66. package/dist/agent-src/rules/active-remediation.md +0 -1
  67. package/dist/agent-src/rules/analysis-skill-routing.md +0 -1
  68. package/dist/agent-src/rules/architecture.md +0 -1
  69. package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -1
  70. package/dist/agent-src/rules/artifact-engagement-recording.md +0 -1
  71. package/dist/agent-src/rules/augment-edit-discipline.md +0 -1
  72. package/dist/agent-src/rules/autonomous-execution.md +0 -1
  73. package/dist/agent-src/rules/brand-consistency.md +0 -1
  74. package/dist/agent-src/rules/brand-source-of-truth.md +0 -1
  75. package/dist/agent-src/rules/broken-access-control.md +0 -1
  76. package/dist/agent-src/rules/cli-output-handling.md +0 -1
  77. package/dist/agent-src/rules/code-comment-discipline.md +0 -1
  78. package/dist/agent-src/rules/code-provenance.md +0 -1
  79. package/dist/agent-src/rules/command-suggestion-policy.md +0 -1
  80. package/dist/agent-src/rules/commit-conventions.md +1 -2
  81. package/dist/agent-src/rules/communication-through-line.md +1 -2
  82. package/dist/agent-src/rules/content-quoting-floor.md +1 -2
  83. package/dist/agent-src/rules/context-hygiene.md +5 -5
  84. package/dist/agent-src/rules/copilot-routing.md +1 -2
  85. package/dist/agent-src/rules/council-availability.md +4 -4
  86. package/dist/agent-src/rules/cross-source-consistency.md +4 -6
  87. package/dist/agent-src/rules/decision-revisit-gate.md +2 -3
  88. package/dist/agent-src/rules/delegation-policy.md +2 -3
  89. package/dist/agent-src/rules/design-fidelity.md +0 -1
  90. package/dist/agent-src/rules/design-review-after-ui-write.md +3 -3
  91. package/dist/agent-src/rules/devcontainer-routing.md +1 -2
  92. package/dist/agent-src/rules/doc-screenshot-hygiene.md +0 -1
  93. package/dist/agent-src/rules/docker-commands.md +0 -1
  94. package/dist/agent-src/rules/domain-adoption-policy.md +0 -1
  95. package/dist/agent-src/rules/domain-safety-disclaimer.md +0 -1
  96. package/dist/agent-src/rules/domain-safety-pii.md +0 -1
  97. package/dist/agent-src/rules/domain-safety-retention.md +0 -1
  98. package/dist/agent-src/rules/downstream-changes.md +0 -1
  99. package/dist/agent-src/rules/engineering-safety-floor.md +0 -1
  100. package/dist/agent-src/rules/external-code-graph-interop.md +0 -1
  101. package/dist/agent-src/rules/external-reference-deep-dive.md +0 -1
  102. package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -2
  103. package/dist/agent-src/rules/finance-safety-floor.md +0 -1
  104. package/dist/agent-src/rules/fix-what-you-see.md +6 -32
  105. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +0 -1
  106. package/dist/agent-src/rules/git-history-discipline.md +1 -2
  107. package/dist/agent-src/rules/guidelines.md +0 -1
  108. package/dist/agent-src/rules/history-discipline.md +0 -1
  109. package/dist/agent-src/rules/icon-consistency.md +0 -1
  110. package/dist/agent-src/rules/image-likeness-and-rights.md +0 -1
  111. package/dist/agent-src/rules/improve-before-implement.md +0 -1
  112. package/dist/agent-src/rules/invite-challenge.md +0 -1
  113. package/dist/agent-src/rules/laravel-routing.md +1 -2
  114. package/dist/agent-src/rules/laravel-translations.md +0 -1
  115. package/dist/agent-src/rules/legal-safety-floor.md +0 -1
  116. package/dist/agent-src/rules/lethal-trifecta-guard.md +0 -1
  117. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -1
  118. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +0 -1
  119. package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
  120. package/dist/agent-src/rules/media-governance-routing.md +1 -2
  121. package/dist/agent-src/rules/media-sync-ground-truth.md +0 -1
  122. package/dist/agent-src/rules/minimal-safe-diff.md +0 -1
  123. package/dist/agent-src/rules/missing-skill-recovery.md +0 -1
  124. package/dist/agent-src/rules/missing-tool-handling.md +0 -1
  125. package/dist/agent-src/rules/model-recommendation.md +0 -1
  126. package/dist/agent-src/rules/neighbour-precedence.md +64 -0
  127. package/dist/agent-src/rules/no-attribution-footers.md +0 -1
  128. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +0 -1
  129. package/dist/agent-src/rules/no-pr-progress-comments.md +0 -1
  130. package/dist/agent-src/rules/no-roadmap-references.md +0 -1
  131. package/dist/agent-src/rules/notes-first-reasoning.md +0 -1
  132. package/dist/agent-src/rules/onboarding-gate.md +0 -1
  133. package/dist/agent-src/rules/output-discipline.md +0 -1
  134. package/dist/agent-src/rules/package-ci-checks.md +0 -1
  135. package/dist/agent-src/rules/persona-governance.md +2 -3
  136. package/dist/agent-src/rules/php-coding.md +0 -1
  137. package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -1
  138. package/dist/agent-src/rules/preservation-guard.md +0 -1
  139. package/dist/agent-src/rules/provider-lifecycle-discipline.md +2 -3
  140. package/dist/agent-src/rules/question-not-instruction.md +0 -1
  141. package/dist/agent-src/rules/reviewer-awareness.md +0 -1
  142. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -1
  143. package/dist/agent-src/rules/roadmap-progress-sync.md +3 -6
  144. package/dist/agent-src/rules/role-mode-adherence.md +0 -1
  145. package/dist/agent-src/rules/rule-type-governance.md +0 -1
  146. package/dist/agent-src/rules/runtime-safety.md +0 -1
  147. package/dist/agent-src/rules/scale-discipline.md +0 -1
  148. package/dist/agent-src/rules/secret-vcs-guard.md +0 -1
  149. package/dist/agent-src/rules/security-sensitive-stop.md +0 -1
  150. package/dist/agent-src/rules/self-repair-loop.md +0 -1
  151. package/dist/agent-src/rules/senior-engineering-discipline.md +0 -1
  152. package/dist/agent-src/rules/session-canary.md +0 -1
  153. package/dist/agent-src/rules/settings-ask-protocol.md +5 -6
  154. package/dist/agent-src/rules/size-enforcement.md +0 -1
  155. package/dist/agent-src/rules/skill-improvement-trigger.md +2 -3
  156. package/dist/agent-src/rules/skill-quality.md +0 -1
  157. package/dist/agent-src/rules/slash-command-routing-policy.md +0 -1
  158. package/dist/agent-src/rules/source-confidentiality.md +0 -1
  159. package/dist/agent-src/rules/source-discovery-gate.md +0 -1
  160. package/dist/agent-src/rules/source-of-truth.md +0 -1
  161. package/dist/agent-src/rules/spreadsheet-source-quality.md +1 -2
  162. package/dist/agent-src/rules/strategy-safety-floor.md +0 -1
  163. package/dist/agent-src/rules/symfony-routing.md +1 -2
  164. package/dist/agent-src/rules/think-before-action.md +0 -1
  165. package/dist/agent-src/rules/token-budget-discipline.md +12 -46
  166. package/dist/agent-src/rules/token-efficiency.md +0 -1
  167. package/dist/agent-src/rules/token-optimizer-maintenance.md +0 -1
  168. package/dist/agent-src/rules/tool-safety.md +0 -1
  169. package/dist/agent-src/rules/ui-audit-gate.md +1 -2
  170. package/dist/agent-src/rules/untrusted-input-defense.md +0 -1
  171. package/dist/agent-src/rules/upstream-proposal.md +0 -1
  172. package/dist/agent-src/rules/user-interaction.md +0 -1
  173. package/dist/agent-src/rules/user-interrupt-priority.md +0 -1
  174. package/dist/agent-src/scripts/gate_budget.ts +47 -23
  175. package/dist/agent-src/scripts/gate_execute.ts +12 -4
  176. package/dist/agent-src/skills/ai-council/SKILL.md +7 -4
  177. package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +21 -11
  178. package/dist/agent-src/skills/ai-council/references/procedure.md +12 -6
  179. package/dist/agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
  180. package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
  181. package/dist/agent-src/skills/command-routing/SKILL.md +3 -4
  182. package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +127 -139
  183. package/dist/agent-src/skills/corpus-grounding/ATTRIBUTION.md +39 -0
  184. package/dist/agent-src/skills/corpus-grounding/SKILL.md +8 -2
  185. package/dist/agent-src/skills/database/data/manifest.json +2 -2
  186. package/dist/agent-src/skills/database/data/query-tuning.csv +13 -13
  187. package/dist/agent-src/skills/design-system-capture/SKILL.md +0 -3
  188. package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
  189. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  190. package/dist/agent-src/skills/git-workflow/SKILL.md +44 -44
  191. package/dist/agent-src/skills/git-workflow/references/branch-update.md +312 -0
  192. package/dist/agent-src/skills/git-workflow/references/commit-subject.md +205 -0
  193. package/dist/agent-src/skills/jira-integration/SKILL.md +3 -3
  194. package/dist/agent-src/skills/merge-conflicts/SKILL.md +10 -4
  195. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  196. package/dist/agent-src/skills/refine-ticket/SKILL.md +4 -4
  197. package/dist/agent-src/skills/roadmap-writing/SKILL.md +2 -2
  198. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +4 -2
  199. package/dist/agent-src/skills/source-discovery/SKILL.md +1 -1
  200. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +3 -1
  201. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
  202. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -1
  203. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  204. package/dist/agent-src/templates/AGENTS.md +1 -1
  205. package/dist/agent-src/templates/agent-settings.md +46 -129
  206. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
  207. package/dist/agent-src/templates/command.md +2 -2
  208. package/dist/agent-src/templates/roadmaps.md +6 -1
  209. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
  210. package/dist/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
  211. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
  212. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
  213. package/dist/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
  214. package/dist/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
  215. package/dist/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
  216. package/dist/agent-src/templates/skill.md +1 -1
  217. package/dist/cli/registry.js +1 -0
  218. package/dist/cli-delegate/check_update_banner.js +195 -119
  219. package/dist/cli-delegate/{chunk-TRI6DQZ6.js → chunk-5GPULQBE.js} +60 -42
  220. package/dist/cli-delegate/{chunk-JQVYKIZA.js → chunk-6SRJTYJS.js} +33 -177
  221. package/dist/cli-delegate/chunk-6V5FMA3P.js +186 -0
  222. package/dist/cli-delegate/chunk-6YQC2HLF.js +415 -0
  223. package/dist/cli-delegate/{chunk-E4XIZDIB.js → chunk-7HKRE54K.js} +1 -64
  224. package/dist/cli-delegate/{chunk-NQ7WT43P.js → chunk-AED2VQGM.js} +65 -11
  225. package/dist/cli-delegate/{chunk-7HQ52DHU.js → chunk-AL3RZ22D.js} +1 -1
  226. package/dist/cli-delegate/{chunk-DBH4AHDK.js → chunk-ED7KCMLB.js} +9 -11
  227. package/dist/cli-delegate/{chunk-NXEILF2K.js → chunk-F3QDG2GT.js} +481 -72
  228. package/dist/cli-delegate/{chunk-CQWX336L.js → chunk-G5VVIZRC.js} +3 -3
  229. package/dist/cli-delegate/{chunk-JY2I2DXV.js → chunk-H76PHZBI.js} +137 -60
  230. package/dist/cli-delegate/chunk-IAYTIIQW.js +67 -0
  231. package/dist/cli-delegate/{chunk-LIYTLH6O.js → chunk-KXXWJTDO.js} +5 -10
  232. package/dist/cli-delegate/{chunk-T7L2QK3K.js → chunk-LQOCRFWT.js} +1 -1
  233. package/dist/cli-delegate/{chunk-S4YWNRKO.js → chunk-MDPPKQCQ.js} +34 -1
  234. package/dist/cli-delegate/{chunk-S4UMZNES.js → chunk-MSUL5NYP.js} +5 -5
  235. package/dist/cli-delegate/chunk-OAFSJBHH.js +272 -0
  236. package/dist/cli-delegate/{chunk-GKE7ZVFA.js → chunk-PWX7CKMD.js} +1 -1
  237. package/dist/cli-delegate/{chunk-NDJLNC6Q.js → chunk-T6BP34WI.js} +1 -0
  238. package/dist/cli-delegate/{chunk-RQNNW7IF.js → chunk-T7XSJSUQ.js} +433 -632
  239. package/dist/cli-delegate/{chunk-EEHDXSYD.js → chunk-WQWXGIWB.js} +12 -273
  240. package/dist/cli-delegate/{chunk-QLDHIPWR.js → chunk-XQTPXKFA.js} +1 -1
  241. package/dist/cli-delegate/cmd_analyze_session.js +223 -43
  242. package/dist/cli-delegate/cmd_brand_status.js +3 -2
  243. package/dist/cli-delegate/cmd_conformance.js +105 -35
  244. package/dist/cli-delegate/cmd_converge.js +3 -3
  245. package/dist/cli-delegate/cmd_doctor.js +15 -12
  246. package/dist/cli-delegate/cmd_doctor_neighbours.js +11 -4
  247. package/dist/cli-delegate/cmd_explain.js +43 -19
  248. package/dist/cli-delegate/cmd_export.js +10 -10
  249. package/dist/cli-delegate/cmd_git_convention.js +1851 -0
  250. package/dist/cli-delegate/cmd_handoff.js +40 -21
  251. package/dist/cli-delegate/cmd_mcp_available.js +3 -2
  252. package/dist/cli-delegate/cmd_migrate.js +3 -3
  253. package/dist/cli-delegate/cmd_packs_active.js +4 -3
  254. package/dist/cli-delegate/cmd_prune.js +10 -10
  255. package/dist/cli-delegate/cmd_route_audit.js +7 -7
  256. package/dist/cli-delegate/cmd_route_explain.js +5 -5
  257. package/dist/cli-delegate/cmd_session_recycle.js +9 -7
  258. package/dist/cli-delegate/cmd_settings_check.js +54 -7
  259. package/dist/cli-delegate/cmd_settings_get.js +18 -8
  260. package/dist/cli-delegate/cmd_settings_migrate.js +10 -10
  261. package/dist/cli-delegate/cmd_settings_set.js +1 -1
  262. package/dist/cli-delegate/cmd_sync.js +10 -10
  263. package/dist/cli-delegate/cmd_uninstall.js +10 -10
  264. package/dist/cli-delegate/cmd_update.js +7 -7
  265. package/dist/cli-delegate/cmd_upgrade.js +7 -7
  266. package/dist/cli-delegate/cmd_validate.js +10 -10
  267. package/dist/cli-delegate/cmd_versions.js +5 -5
  268. package/dist/cli-delegate/gate_budget.js +1 -1
  269. package/dist/cli-delegate/gate_execute.js +2 -2
  270. package/dist/cli-delegate/roadmap_gates.js +2 -2
  271. package/dist/discovery/deprecation-report.md +1 -1
  272. package/dist/discovery/discovery-manifest.json +129 -90
  273. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  274. package/dist/discovery/discovery-manifest.summary.md +3 -3
  275. package/dist/discovery/dormancy-report.md +1 -1
  276. package/dist/discovery/orphan-report.md +1 -1
  277. package/dist/discovery/packs.json +24 -9
  278. package/dist/discovery/trust-report.md +3 -3
  279. package/dist/discovery/workspaces.json +5 -4
  280. package/dist/hooks/dispatch.js +2151 -1820
  281. package/dist/hooks/dispatch.sha256 +1 -1
  282. package/dist/install/install.mjs +462 -431
  283. package/dist/install/installThinLayer.js +40 -12
  284. package/dist/install/installedRuleLinks.js +105 -19
  285. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  286. package/dist/mcp/mcp-cloudflare-catalogue.json +2 -2
  287. package/dist/mcp/registry-manifest.json +5 -5
  288. package/dist/mcp/server.json +2 -2
  289. package/dist/mcp/server.mjs +2702 -1995
  290. package/dist/router.json +1 -1
  291. package/dist/scripts/_lib/agent_settings.js +15 -120
  292. package/dist/scripts/_lib/compile_time_toggles.js +12 -21
  293. package/dist/scripts/_lib/git_convention.js +232 -0
  294. package/dist/scripts/_lib/global_deploy_inventory.js +730 -0
  295. package/dist/scripts/_lib/installed_layer.js +344 -18
  296. package/dist/scripts/_lib/package_root.js +68 -0
  297. package/dist/scripts/_lib/rule_law_section.js +1 -1
  298. package/dist/scripts/_lib/settings_removed_keys.js +168 -0
  299. package/dist/scripts/_lib/thin_rules.js +80 -3
  300. package/dist/server/app.js +2 -1
  301. package/dist/server/gitKeysGate.js +105 -0
  302. package/dist/server/routes/settings.js +67 -8
  303. package/dist/server/routes/wizard.js +4 -0
  304. package/dist/server/schemas/settings.js +23 -81
  305. package/dist/shared/skillRanking.js +30 -4
  306. package/dist/ui/assets/{index-Cwq4d0hX.js → index-C3djEJah.js} +2 -2
  307. package/dist/ui/index.html +1 -1
  308. package/docs/MIGRATION.md +72 -1
  309. package/docs/contracts/settings-classes.md +35 -65
  310. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
  311. package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
  312. package/docs/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
  313. package/docs/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
  314. package/docs/guidelines/agent-infra/layered-settings.md +13 -1
  315. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  316. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
  317. package/docs/guidelines/agent-infra/size-and-scope.md +36 -0
  318. package/docs/guidelines/php/git.md +15 -2
  319. package/package.json +1 -1
  320. package/src/agent-src/scripts/gate_budget.ts +47 -23
  321. package/src/agent-src/scripts/gate_execute.ts +12 -4
  322. package/src/agent-src/templates/AGENTS.md +1 -1
  323. package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
  324. package/src/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
  325. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
  326. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
  327. package/src/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
  328. package/src/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
  329. package/src/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
  330. package/src/config/agent-settings.template.yml +79 -312
  331. package/src/config/agents-paths.yml +16 -0
  332. package/src/config/assurance-capability-registry.json +7 -3
  333. package/src/config/ci-local-parity.yml +3 -0
  334. package/src/config/continuity-surface.json +3 -3
  335. package/src/config/discovery/packs.yml +17 -1
  336. package/src/config/evaluator-budgets.json +19 -6
  337. package/src/config/gate-coverage.yml +65 -23
  338. package/src/config/gate-violation-baselines.json +53 -13
  339. package/src/config/gitignore-block.txt +19 -0
  340. package/src/config/hook-bundle-budget.json +1 -1
  341. package/src/config/release-gate-locality.yml +2 -1
  342. package/src/config/routing-coverage-seed.json +48 -6
  343. package/src/config/rule-law-ceilings.json +12 -6
  344. package/src/config/rule-obligations.json +833 -0
  345. package/src/install/installThinLayer.ts +76 -10
  346. package/src/install/installedRuleLinks.ts +105 -17
  347. package/src/scripts/_cli/cmd_analyze_session.ts +9 -15
  348. package/src/scripts/_cli/cmd_conformance.ts +13 -2
  349. package/src/scripts/_cli/cmd_doctor.ts +10 -10
  350. package/src/scripts/_cli/cmd_doctor_neighbours.ts +133 -0
  351. package/src/scripts/_cli/cmd_explain.ts +72 -14
  352. package/src/scripts/_cli/cmd_git_convention.ts +637 -0
  353. package/src/scripts/_cli/cmd_settings_check.ts +66 -8
  354. package/src/scripts/_cli/cmd_settings_get.ts +18 -3
  355. package/src/scripts/_cli/doctor_execution.ts +72 -1
  356. package/src/scripts/_dispatch.bash +37 -2
  357. package/src/scripts/_lib/agent_settings.ts +15 -124
  358. package/src/scripts/_lib/blocked_by_marker.ts +1 -1
  359. package/src/scripts/_lib/compile_time_toggles.ts +12 -21
  360. package/src/scripts/_lib/dispatch_import_closure.ts +163 -0
  361. package/src/scripts/_lib/git_base_ref.ts +92 -0
  362. package/src/scripts/_lib/git_convention.ts +291 -0
  363. package/src/scripts/_lib/git_convention_carrier.ts +389 -0
  364. package/src/scripts/_lib/git_convention_grammar.ts +246 -0
  365. package/src/scripts/_lib/git_convention_measure.ts +344 -0
  366. package/src/scripts/_lib/global_deploy_inventory.ts +74 -0
  367. package/src/scripts/_lib/graph_feeder_record.ts +236 -13
  368. package/src/scripts/_lib/installed_layer.ts +448 -23
  369. package/src/scripts/_lib/knowledge_global.ts +14 -1
  370. package/src/scripts/_lib/module_reach.ts +456 -0
  371. package/src/scripts/_lib/neighbour_contradictions.ts +236 -0
  372. package/src/scripts/_lib/neighbour_tool_use.ts +8 -10
  373. package/src/scripts/_lib/ratification_artifact.ts +220 -1
  374. package/src/scripts/_lib/ratification_subject.ts +92 -0
  375. package/src/scripts/_lib/release_findings_ingest.ts +15 -7
  376. package/src/scripts/_lib/release_highlights.ts +5 -0
  377. package/src/scripts/_lib/rule_law_section.ts +1 -1
  378. package/src/scripts/_lib/rule_obligations.ts +205 -0
  379. package/src/scripts/_lib/self_repair.ts +1 -1
  380. package/src/scripts/_lib/settings_removed_keys.ts +173 -0
  381. package/src/scripts/_lib/test_red_state.ts +5 -0
  382. package/src/scripts/_lib/thin_rules.ts +83 -3
  383. package/src/scripts/_lib/touched_file_quality.ts +142 -6
  384. package/src/scripts/_lib/worker_budget.ts +1 -1
  385. package/src/scripts/adr/regenerate_index.ts +16 -1
  386. package/src/scripts/ai_council/config.ts +7 -7
  387. package/src/scripts/ai_council/modification_review.ts +100 -0
  388. package/src/scripts/ai_council/modification_review_questions.ts +90 -0
  389. package/src/scripts/ai_council/orchestrator.ts +5 -5
  390. package/src/scripts/ai_council/spend_gate.ts +18 -7
  391. package/src/scripts/ai_team/config.ts +11 -16
  392. package/src/scripts/audit_user_type_axis.ts +20 -8
  393. package/src/scripts/bench_ab_clone.ts +1 -2
  394. package/src/scripts/bench_concern_spawn_path.ts +129 -0
  395. package/src/scripts/bench_graph_feeder_latency.ts +584 -0
  396. package/src/scripts/check_agent_artifact_location.ts +36 -0
  397. package/src/scripts/check_branch_freshness.ts +147 -24
  398. package/src/scripts/check_enforcement_coverage.ts +130 -0
  399. package/src/scripts/check_evaluator_budgets.ts +4 -0
  400. package/src/scripts/check_finding_dispositions.ts +88 -25
  401. package/src/scripts/check_gate_coverage.ts +4 -3
  402. package/src/scripts/check_gate_reachability.ts +48 -1
  403. package/src/scripts/check_generator_sync.ts +48 -0
  404. package/src/scripts/check_hook_bundle_composition.ts +107 -0
  405. package/src/scripts/check_kernel_edit_ratified.ts +86 -6
  406. package/src/scripts/check_pack_size.ts +1 -1
  407. package/src/scripts/check_release_manifest_content.ts +189 -0
  408. package/src/scripts/check_standing_rule_delivery.ts +96 -0
  409. package/src/scripts/check_suppression_hygiene.ts +2 -5
  410. package/src/scripts/ci_settle.ts +42 -5
  411. package/src/scripts/classify_merge_risk.ts +320 -0
  412. package/src/scripts/closure_scan.ts +91 -1
  413. package/src/scripts/command_suggester/settings.ts +8 -108
  414. package/src/scripts/command_suggester/types.ts +4 -5
  415. package/src/scripts/consumer_matrix.ts +102 -0
  416. package/src/scripts/context_hygiene_hook.ts +13 -23
  417. package/src/scripts/cost/preflight.mjs +12 -1
  418. package/src/scripts/council_cli.ts +7 -7
  419. package/src/scripts/dispatch_r2_reviewer.ts +24 -11
  420. package/src/scripts/explain_run.ts +8 -13
  421. package/src/scripts/generate_git_convention_grammar.ts +127 -0
  422. package/src/scripts/generate_host_cost_table.ts +20 -3
  423. package/src/scripts/handoff_context_hook.ts +86 -37
  424. package/src/scripts/hook_manifest.json +1 -1
  425. package/src/scripts/hook_manifest.yaml +25 -6
  426. package/src/scripts/hooks/block_config_weakening.ts +48 -5
  427. package/src/scripts/hooks/block_plumbing_writes.ts +8 -4
  428. package/src/scripts/hooks/concern_registry.ts +2 -0
  429. package/src/scripts/hooks/delegation_nudge_hook.ts +2 -3
  430. package/src/scripts/hooks/evidence_independence.ts +12 -4
  431. package/src/scripts/hooks/mcp_usage_observation_hook.ts +121 -0
  432. package/src/scripts/hooks/push_settle_hook.ts +4 -3
  433. package/src/scripts/hooks/rule_inject_hook.ts +44 -3
  434. package/src/scripts/hooks/state_io.ts +8 -4
  435. package/src/scripts/hooks/telemetry_usage_hook.ts +7 -46
  436. package/src/scripts/hooks/turn_end_gate_hook.ts +1 -0
  437. package/src/scripts/install-hooks.sh +42 -14
  438. package/src/scripts/install.ts +7 -31
  439. package/src/scripts/lint_blocker_citations.ts +198 -0
  440. package/src/scripts/lint_evidence_artifacts.ts +9 -0
  441. package/src/scripts/lint_hook_concern_budget.ts +10 -21
  442. package/src/scripts/lint_pack_boundaries.ts +406 -28
  443. package/src/scripts/lint_roadmap_blockers.ts +282 -29
  444. package/src/scripts/lint_roadmap_complexity.ts +4 -2
  445. package/src/scripts/lint_rule_law_section.ts +151 -21
  446. package/src/scripts/lint_rule_skill_pack_reach.ts +17 -0
  447. package/src/scripts/lint_settings_classes.ts +1 -1
  448. package/src/scripts/lint_ticked_unmet_criteria.ts +165 -0
  449. package/src/scripts/lint_workflow_security.ts +12 -1
  450. package/src/scripts/measure_skill_ranker_baseline.ts +5 -0
  451. package/src/scripts/model_rule_injection.ts +3 -3
  452. package/src/scripts/onboarding_gate_hook.ts +7 -6
  453. package/src/scripts/print_required_checks.ts +15 -3
  454. package/src/scripts/probe_host_compliance.ts +33 -5
  455. package/src/scripts/probe_turnaround.ts +183 -3
  456. package/src/scripts/ratification_header.ts +77 -0
  457. package/src/scripts/refusal_envelope.ts +138 -0
  458. package/src/scripts/release_publication.ts +29 -3
  459. package/src/scripts/report_dispatch_import_closure.ts +76 -0
  460. package/src/scripts/report_installed_rule_links.ts +118 -1
  461. package/src/scripts/report_module_reach.ts +212 -0
  462. package/src/scripts/report_obligation_mechanism.ts +16 -18
  463. package/src/scripts/report_parked_blockers.ts +222 -0
  464. package/src/scripts/report_required_checks_drift.ts +196 -0
  465. package/src/scripts/report_skill_ranker_confusion.ts +103 -2
  466. package/src/scripts/report_standing_payload_by_host.ts +1 -1
  467. package/src/scripts/routing_doctor.ts +2 -2
  468. package/src/scripts/schemas/agent-settings.schema.json +17 -31
  469. package/src/scripts/schemas/command.schema.json +1 -1
  470. package/src/scripts/schemas/skill.schema.json +1 -1
  471. package/src/scripts/self_review_gate.ts +39 -2
  472. package/src/scripts/skill_tools/score_skill_relevance.ts +28 -19
  473. package/src/scripts/sync_pr_branch.ts +403 -132
  474. package/src/scripts/trigger_eval_grandfather.json +0 -16
  475. package/src/server/schemas/settings.ts +33 -177
  476. package/src/shared/skillRanking.ts +53 -4
  477. package/dist/cli-delegate/chunk-NYX3L2PZ.js +0 -99
  478. package/src/scripts/_lib/config_chain.ts +0 -477
  479. package/src/scripts/_lib/conformance_report.ts +0 -403
  480. package/src/scripts/_lib/eval_discrimination.ts +0 -95
  481. package/src/scripts/_lib/evaluator_promotion.ts +0 -225
  482. package/src/scripts/_lib/file_slicer.ts +0 -117
  483. package/src/scripts/_lib/legacy_boundary_map.ts +0 -228
  484. package/src/scripts/_lib/minimality_tiebreak.ts +0 -168
  485. package/src/scripts/_lib/overbuild_lens_contract.ts +0 -196
  486. package/src/scripts/_lib/role_split.ts +0 -338
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "event4u-agent-config",
3
3
  "description": "Governed agent system — skills, rules, commands, and guidelines for AI-assisted development.",
4
- "version": "16.3.0",
4
+ "version": "16.4.0",
5
5
  "owner": {
6
6
  "name": "event4u",
7
7
  "email": "dev@event4u.app"
8
8
  },
9
9
  "metadata": {
10
10
  "description": "A policy-driven execution system that enforces quality, consistency, and developer-like behavior for AI agents.",
11
- "version": "16.3.0"
11
+ "version": "16.4.0"
12
12
  },
13
13
  "plugins": [
14
14
  {
15
15
  "name": "agent-config",
16
16
  "description": "Full governed agent system — rules, skills, commands, guidelines, and runtime tooling.",
17
- "version": "16.3.0",
17
+ "version": "16.4.0",
18
18
  "source": ".",
19
19
  "category": "governance",
20
20
  "tags": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agent-config",
3
3
  "description": "A governed skill framework for AI agents — runtime execution, tooling, observability, feedback, and lifecycle management with policy-driven quality enforcement.",
4
- "version": "16.3.0",
4
+ "version": "16.4.0",
5
5
  "author": {
6
6
  "name": "event4u",
7
7
  "email": "dev@event4u.app"
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Bootstrap shim for the event4u agent-config suite. This plugin ships ONLY the dispatcher hooks plus one install-pointer skill — ALL content (skills, rules, commands) is installed via `npx -y @event4u/agent-config init`, which writes the file projection AND registers the same hooks in ~/.claude/settings.json. DEPRECATED as a content channel; kept so the marketplace listing stays discoverable and existing installs keep working hooks.",
9
- "version": "16.3.0",
9
+ "version": "16.4.0",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
package/CHANGELOG.md CHANGED
@@ -32,6 +32,69 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
32
32
 
33
33
  ### Changed
34
34
 
35
+ - **46 settings keys are retired; an install that never changed them sees no
36
+ difference.** Each key's shipped default is now fixed behavior: every reader
37
+ of it — code, rule and command prose, the wizard — was rewritten to that
38
+ default in the same change. **If your `.agent-settings.yml` still sets one,
39
+ that value is ignored** and the loader prints one line per key —
40
+ `<key> was removed (<what decides instead>); ignored.` — so a non-default
41
+ value you chose is lost visibly, never silently. Delete the line to silence
42
+ it. The keys:
43
+ - Output and tone: `telegraph.speak`, `tokens.rich_skills`, `personal.minimal_output`, `personal.play_by_play`, `personal.pr_comment_bot_icon`, `verbosity.intent_announcements`, `verbosity.preview_artifacts`, `verbosity.routine_confirmations`, `verbosity.post_action_reports`.
44
+ - Reasoning protocol switches: `reasoning.auto_gate`, `reasoning.components.orchestrator`, `reasoning.components.notes_first`, `reasoning.components.grounding`, `reasoning.components.intent`, `reasoning.components.complexity_first`, `reasoning.components.verifier_default`, `reasoning.components.prediction_tracking`, `reasoning.components.decision_ledger`, `reasoning.components.uncertainty_budget`.
45
+ - Roadmap cadence: `roadmap.skip_pre_run_gate`, `roadmap.dashboard_regen_cadence`.
46
+ - Command suggestion and PR creation: `commands.auto_detect`, `commands.suggestion.enabled`, `commands.suggestion.confidence_floor`, `commands.suggestion.cooldown_seconds`, `commands.suggestion.max_options`, `commands.create_pr.api_examples`, `commands.create_pr.ui_paths`, `commands.create_pr.api_paths`.
47
+ - Memory and knowledge sharing: `memory.cadence`, `memory.review_threshold`, `knowledge.global_sharing.redaction.enabled`, `knowledge.global_sharing.redaction.halt_on_trigger`, `knowledge.global_sharing.auto_promote_threshold`, `knowledge.global_sharing.freshness.hypothesis_after_days`, `knowledge.global_sharing.freshness.stale_after_days`.
48
+ - Hooks and engine: `hooks.concern_budget.max_per_event`, `hooks.concern_budget.hard_fail`, `decision_engine.surface_traces`, `decision_engine.on_block_fallback`, `explain.enable_last`.
49
+ - Remaining: `project.pr_template`, `pipelines.skill_improvement`, `consistency.cross_source`, `subagents.downshift`, `ai_team.suppress_setup_hint`.
50
+ The reference page lists each key with the behavior that replaces it
51
+ (`templates/agent-settings.md` § Retired keys).
52
+
53
+ - **A medium security finding now needs a disposition before a release
54
+ ships.** `check_finding_dispositions` treats `security × medium` as blocking
55
+ for every release after 16.3.0 (council 2026-10-07, 2/2). Such a row must
56
+ carry `fixed` (with its commit), `false_positive` or `accepted_risk`, each
57
+ with a rationale and a `verified_by`, like any blocking row, and
58
+ `still_open` keeps the release red with a message saying so. On a release
59
+ pull request (`--pr`), a medium security finding the self-review reported
60
+ but the ledger lacks is red too. Releases up to 16.3.0 are judged as they
61
+ shipped. The merge gate (`self_review_gate.classifyBlocking`) is unchanged,
62
+ so on every other pull request the finding only advises. `claim × medium`
63
+ stays advisory in both.
64
+ - **No spend bound applies unless you set one.** Owner directive, 2026-10-05,
65
+ recorded as **ADR-279** and accepted on the owner's own answer (option (a))
66
+ on 2026-10-06. With nothing configured, no USD or token ceiling this package
67
+ defines stops a council run, a debate or a paid gate, and none of them asks —
68
+ because no ceiling exists to ask about. Every ceiling remains settable and
69
+ behaves exactly as its contract describes once set.
70
+ **Your own council file is not rewritten.** If you copied
71
+ `agents/templates/.ai-council.yml.example` before this release it carries
72
+ these lines explicitly, and they are your figures now:
73
+ `cost_budget.max_input_tokens: 500000`, `cost_budget.max_output_tokens:
74
+ 200000`, `cost_budget.max_total_usd: 20.0` and `debate.max_cost_usd: 5.00`.
75
+ Delete them to become unbounded; keep them to stay bounded. The shipped
76
+ defaults behind an absent key moved to `0` in all three layers — the loader,
77
+ the command's own fallback for a file with no `cost_budget` block, and the
78
+ `CostBudget` constructor.
79
+ **`max_calls` and the debate round limits did not move**: they bound call
80
+ count per invocation, not money. Nor did any of the controls listed under
81
+ § What stays in ADR-279 — provider refusals, the per-day plan-quota guards,
82
+ the `--confirm` a class-1 gate asks for, the debate's between-round
83
+ confirmation, or the budget an unattended run must still be given.
84
+ **Two defects were repaired in the same change, and both could bite a
85
+ configured install.** `0` was documented as disabling a token cap and did
86
+ not — the two token comparisons carried no zero guard while the two USD
87
+ comparisons beside them did, so a budget with every cap at zero breached on
88
+ a ten-token estimate. And the class-1 gate's two caps had to BOTH be set
89
+ before EITHER applied, so setting one left you bounded by neither. Each cap
90
+ now bounds alone.
91
+ **One optional hard stop now works for the first time.** With
92
+ `cost.enforcement: hard-stop` and a budget configured, the cost preflight
93
+ resolved its budget script relative to the working directory, read the
94
+ resulting empty output as "no budget configured", and exited `0` on a spent
95
+ budget from every working directory. It now resolves the script from its own
96
+ location and exits non-zero as its contract always said it would.
97
+
35
98
  - **`agent-config init` no longer overwrites a managed file you have edited.**
36
99
  Owner ruling, 2026-09-21, taken after an AI council split 1/1 on it. Until
37
100
  now the installer's `_resolve_file_conflict` returned `write` for every
@@ -125,6 +188,79 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
125
188
 
126
189
  ### Added
127
190
 
191
+ - **An old project keeps its real commit format — `agent-config git:convention
192
+ measure`.** A repository with no declared convention and no approved card is
193
+ now measured instead of silently given Conventional Commits: the verb samples
194
+ the non-merge history of the default branch, resolved as the carrier resolves
195
+ it (the server's symref, then `refs/remotes/origin/HEAD`) — with no default
196
+ branch it says so and exits `1` rather than sampling `main`, `master` or the
197
+ current branch in its place — drops bots, automation and bulk imports, caps
198
+ each author per half, and names the established subject family or — below the
199
+ bar — the two strongest. It also proposes a `branch_pattern` from the remote
200
+ branch names (or reports no clear pattern) and shows the observed update style,
201
+ which it never adopts. The thresholds are constants of the module the verb
202
+ runs and are rendered into the commit-subject reference, not restated by hand.
203
+ `show` and `subject` print `no convention established — run git:convention
204
+ measure` in that state (`convention_established` under `--json`; exit codes
205
+ unchanged). An interactive `/commit` asks once — the established family or the
206
+ two strongest against Conventional Commits — and writes the answer to the
207
+ approved convention card, also when the answer is Conventional, so the question
208
+ is never repeated; `/commit:in-chunks` never asks and reports the measurement.
209
+ Where the choice maps to a setting, `measure` prints the ready-to-commit
210
+ `.git-convention.yml` (`commit_format`, `branch_pattern`, never
211
+ `update_strategy`); a human creates and commits it, the agent never writes it.
212
+
213
+ - **A team's git convention can be declared instead of measured — the new
214
+ `git:` settings block.** Three Class-C keys, each defaulting to the
215
+ behaviour every install had before, so an install that sets nothing is
216
+ unchanged. `git.commit_format: ticket-conventional` writes
217
+ `DEV-1234 feat(exporter): …` instead of `feat(DEV-1234): …` and treats a
218
+ ticket in the scope as a wrong subject; `/commit` and `/commit:in-chunks`
219
+ validate against the regex for the configured format, and the
220
+ conventional-commits-writing classifier gains a `ticket-conventional` family
221
+ so such a history is no longer misread as free-text ticket prefixes.
222
+ `git.branch_pattern` (`{type}`, `{ticket}`, `{slug}`) shapes the branches
223
+ `/worktree:create` proposes; reading a ticket back out of a branch now takes
224
+ the first `[A-Z][A-Z0-9]+-[0-9]+` token that is not a standard name (`UTF`,
225
+ `ISO`, `SHA`, `RFC` prefixes), so `DEV-1234-device-export` yields its ticket.
226
+ Under `git.update_strategy: rebase`, `/create-pr` asks for
227
+ `git rebase origin/<base>` plus `--force-with-lease`, and `/pr:merge`,
228
+ `/prepare-for-review` and `/review:changes` report a behind branch instead of
229
+ updating it; none of them merges the base into a feature branch — one git-workflow reference
230
+ (`references/branch-update.md`) now owns that decision, and
231
+ `sync_pr_branch` exits `3` instead of merging when such a branch is behind
232
+ (a current branch still exits `0`). **What it does not do:** the setting picks the operation and never
233
+ authorises it; git-history-discipline still requires the user's request for
234
+ every rebase, fixup or autosquash. A team declares the keys in
235
+ `.git-convention.yml`, a tracked file at the repository root that overrides
236
+ every developer settings file and where either value is a declaration
237
+ (ADR-283): `git.update_strategy` is read from it at the commit a pull request
238
+ is judged against, so a worktree, a fresh clone and CI agree and a pull
239
+ request cannot change the strategy its own update is judged by;
240
+ `git.commit_format` and `git.branch_pattern` are read at `HEAD`. Without the
241
+ carrier the keys come from the project settings files as before; the
242
+ user-global file does not carry them, and the settings GUI no longer offers
243
+ them while it writes there. `agent-config git:convention show` prints the
244
+ value in force, the commit it was read at and a differing checkout value as
245
+ a candidate; `show --key` judges only the named keys. The commit is the
246
+ `--base` given — a pull request passes `--base origin/<its base>` — else the
247
+ default branch; nothing asks the forge. A carrier that does not parse makes
248
+ `sync_pr_branch` exit `4`, a target that names no commit exit `1`, and a named
249
+ commit that cannot be fetched is `unverified`; none of them merges. A target
250
+ that moves between the strategy read and the merge is read again at the
251
+ commit being merged, which is governed by the strategy it carries: the same
252
+ strategy goes on against it, another one exits `1` before anything is
253
+ merged. A blank `--base` is a usage error (exit `2`) in `sync_pr_branch`,
254
+ `git:convention show` and `sync`, and `check_branch_freshness`, never read
255
+ as no `--base`. A commit-linting config
256
+ in the repository still outranks `git.commit_format`. In a packed consumer
257
+ install `git:convention show` is the git surface that resolves, and the
258
+ consumer matrix proves it with a `git-convention` leg; `sync_pr_branch` and
259
+ `check_branch_freshness`, which `/pr:merge`, `/create-pr`, `/fix:ci` and
260
+ `/roadmap:next` run through `./scripts-run`, still need a source checkout of
261
+ this package.
262
+ The merge method is not a key: `/pr:merge` already reads it from the forge.
263
+
128
264
  - **A push no longer ships a branch whose tree contradicts its own commits.**
129
265
  `check_branch_work_committed` runs first in the pre-push hook, and it exists
130
266
  because this branch produced the defect it guards: a merge-reconciled baseline
@@ -742,6 +878,119 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
742
878
  > that forces a new era split (`# Era: 16.4.x`, etc.) — see
743
879
  > [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
744
880
 
881
+ ## [16.4.0](https://github.com/event4u-app/agent-config/compare/16.3.0...16.4.0) (2026-10-10)
882
+
883
+ ### Release highlights
884
+
885
+ - **Behaviour changes:** retire 46 default-neutral derivable settings keys (#2274) (b35d432); A team's git convention can be declared: ticket-prefixed commits, branch shape, and rebase instead of merge (#2235) (0f9c32e); ADR-281 and the texts it corrects (partial, self-modification roadmap) (#2251) (82a131f); credit a gate with the obligations it refuses, not the whole rule (#2246) (93a192b); precedence rule, contradiction review, and a reachable MCP-use recorder (#2241) (a6e5942); repair signals that mean what they say (loop flag, cap comments, verify forms) (#2228) (7548bfc); +1 more.
886
+ - **Default changes + migration:** Correct AC-2 to 37: one of the 47 selected keys was not default-neutral (#2278) (e48f52c); doctor is offline by default; --online opts the forge read back in (#2277) (60c129b); retire 46 default-neutral derivable settings keys (#2274) (b35d432); Queue 47 default-neutral settings keys for retirement (#2272) (9582574); a default install is served each rule body once; report pending reinstall (#2238) (d7b0955).
887
+ - **Security and correctness:** Findings that get a disposition: medium security blocks a release, and every 16.3.0 row ends somewhere (#2266) (bf7ed4f); an ignored file is not a pass; a green row names the type checker that did not run (#2244) (3e00f5e); a default install is served each rule body once; report pending reinstall (#2238) (d7b0955); land the two review-round defects stranded when #2231 merged mid-lane (#2233) (4e19d06); repair signals that mean what they say (loop flag, cap comments, verify forms) (#2228) (7548bfc); round-3..7 review findings (follow-up to #2230) (#2232) (3e7baa1); +4 more.
888
+ - **Honest nulls:** round-3..7 review findings (follow-up to #2230) (#2232) (3e7baa1); refuse a triggerless routed rule; measure the real thinned total (#2226) (52b409e).
889
+ - **Known limitations:** Phase 2 waits on a cancelled instrument, not on a machine (#2282) (0f6209e); retire 46 default-neutral derivable settings keys (#2274) (src/scripts/install.ts declares a residual) (b35d432); release evidence that reproduces (#2250) (src/scripts/_lib/release_highlights.ts declares a residual) (35209c1); a default install is served each rule body once; report pending reinstall (#2238) (src/scripts/check_standing_rule_delivery.ts declares a residual) (d7b0955); land the two review-round defects stranded when #2231 merged mid-lane (#2233) (4e19d06); measure the thinned layer in one unit, and price what stands between it and the ceiling (#2231) (src/scripts/install.ts declares a residual) (96dff15).
890
+
891
+ > **Governance mix:** governance-only 38 vs consumer-only 1 (taxonomy 1.1.0; range 5550dec9cf92..79e335f1c1b9).
892
+
893
+ ### Features
894
+
895
+ * **roadmaps:** 6.1's verdict lands, and two things it uncovered are held rather than worked around (#2294) ([79e335f](https://github.com/event4u-app/agent-config/commit/79e335f1c1b9c41d6ee75c6c38ef57eeeb63f010))
896
+ * **roadmaps:** Phase 7's population, measured — and the first sweep that was thrown away (#2293) ([7a7a55b](https://github.com/event4u-app/agent-config/commit/7a7a55b2d8947d2c2e26ff59862bc8e9fac3f573))
897
+ * **roadmaps:** the hold step 1.1 asked for is neither of the two shapes it offered (#2283) ([e90a478](https://github.com/event4u-app/agent-config/commit/e90a4788ec0d9afa07aaeeac00bf73b76ecc30f6))
898
+ * **gates:** bring later/*-carried.md into the blocker lint, and nothing else (#2280) ([11dc63f](https://github.com/event4u-app/agent-config/commit/11dc63fe8521a0f87fb5a72203453497aca04ccf))
899
+ * **settings:** retire 46 default-neutral derivable settings keys (#2274) ([b35d432](https://github.com/event4u-app/agent-config/commit/b35d432b11cc3328517c7963c570bb1a06b8dda7))
900
+ * cross-file blocker refs and declared snapshot exemption (authority-routing phases 4-5) (#2264) ([b01d71d](https://github.com/event4u-app/agent-config/commit/b01d71d94dd8e763d6c1d5f9fc6f7776beffde55))
901
+ * **merge:** auto-merge on the owner's word, with a council danger gate (ADR-282) (#2256) ([edd18fe](https://github.com/event4u-app/agent-config/commit/edd18fea6867255375dc3797121260e137322f26))
902
+ * **roadmaps:** a routed authority for dangerous-action decisions (#2254) ([4b54335](https://github.com/event4u-app/agent-config/commit/4b54335a6217e25ae9c6273b591ee0e2919683c5))
903
+ * **enforcement:** credit a gate with the obligations it refuses, not the whole rule (#2246) ([93a192b](https://github.com/event4u-app/agent-config/commit/93a192bbd36c051032e028a68fed7f8574908907))
904
+ * **probe:** blocking time by cause, the CI-and-subagent hypothesis refuted (#2248) ([179019f](https://github.com/event4u-app/agent-config/commit/179019fb3c310f9ad1226877b7f191ae30f9d394))
905
+ * **release:** release evidence that reproduces (#2250) ([35209c1](https://github.com/event4u-app/agent-config/commit/35209c1f5bd2c7cc2521693c58523402ad03618e))
906
+ * **gates:** a ratification fence that follows the dispatcher's imports (#2247) ([8fdb481](https://github.com/event4u-app/agent-config/commit/8fdb4816921e50fbcb78e70beb0c347bad11890f))
907
+ * **roadmaps:** parked blockers get counted, one owner question gets a blocker, two checks for ticks and citations (#2245) ([764fa4f](https://github.com/event4u-app/agent-config/commit/764fa4fa4c7d88d0214fea4409e234760889d545))
908
+ * **code-graph:** measure the graph feeder's cost on the stop slot (graph-that-feeds-the-gate 3.5) (#2239) ([8d91928](https://github.com/event4u-app/agent-config/commit/8d91928cbd6111293b8eca16fde1240651d853e7))
909
+ * **ci:** gates a pull request can hear (#2249) ([c4051c7](https://github.com/event4u-app/agent-config/commit/c4051c7ed34cd9209496205286af3c5a1ef2d89e))
910
+ * **doctor:** an offline flag, and the 16.3.0 findings' doc and test fixes (partial) (#2243) ([fc1bdec](https://github.com/event4u-app/agent-config/commit/fc1bdec4f4edcf9438d42388e252352617f257b6))
911
+ * **install:** count unresolved installed links per artefact kind (#2240) ([ef32868](https://github.com/event4u-app/agent-config/commit/ef328687cfff78efa57cc957d90344fae7b90979))
912
+ * **ranker:** opt-in unrounded tie-break, tie metrics, and the tuning reading (#2242) ([e92e9dc](https://github.com/event4u-app/agent-config/commit/e92e9dcdb23bb16d596252fdb7c21e51fe7ec64a))
913
+ * **neighbours:** precedence rule, contradiction review, and a reachable MCP-use recorder (#2241) ([a6e5942](https://github.com/event4u-app/agent-config/commit/a6e5942236858a85b01246c0b04345c6148075d7))
914
+ * **spend:** a spend bound applies only where one was set (#2234) ([e3c30fc](https://github.com/event4u-app/agent-config/commit/e3c30fc9d3af3121a03dbc420b4fbaa235993b46))
915
+ * **installed-layer:** measure the thinned layer in one unit, and price what stands between it and the ceiling (#2231) ([96dff15](https://github.com/event4u-app/agent-config/commit/96dff15dd9d5544641b54e5c729becbef6f57306))
916
+ * **reach:** close road-to-modules-that-something-calls — census, repairs, and the five reported counts (#2227) ([3dbb3f9](https://github.com/event4u-app/agent-config/commit/3dbb3f99da8c731a6ba6f34fef48ae90834fb1df))
917
+
918
+ ### Bug Fixes
919
+
920
+ * **roadmaps:** dispose the two neighbours-carried steps (#2267) ([dc9f98a](https://github.com/event4u-app/agent-config/commit/dc9f98aa05c31fe20e52ec2a38f089771bbbea37))
921
+ * **roadmaps:** carry the archived AC-3 and close parked-blockers step 4.2 (#2262) ([6051d37](https://github.com/event4u-app/agent-config/commit/6051d3744ac67057d6fc9bc178af3d36060ff4c1))
922
+ * **release-findings:** close the ratification-fence roadmap's last step (#2261) ([6a1cb1a](https://github.com/event4u-app/agent-config/commit/6a1cb1a5cfbd9ca582152ea7f3022100d517abfa))
923
+ * **touched-file-quality:** an ignored file is not a pass; a green row names the type checker that did not run (#2244) ([3e00f5e](https://github.com/event4u-app/agent-config/commit/3e00f5e0fb424e6c925058a184ac6942eb8dee89))
924
+ * **rule-inject:** a default install is served each rule body once; report pending reinstall (#2238) ([d7b0955](https://github.com/event4u-app/agent-config/commit/d7b095551302e7dc215d6ac7b2a4191619eb0ed5))
925
+ * **installed-layer:** land the two review-round defects stranded when #2231 merged mid-lane (#2233) ([4e19d06](https://github.com/event4u-app/agent-config/commit/4e19d06651700573df2bf395536011c32381ffc1))
926
+ * **scripts:** repair signals that mean what they say (loop flag, cap comments, verify forms) (#2228) ([7548bfc](https://github.com/event4u-app/agent-config/commit/7548bfca437880a8a3a69b7ce608538ae757f303))
927
+ * **reach:** round-3..7 review findings (follow-up to #2230) (#2232) ([3e7baa1](https://github.com/event4u-app/agent-config/commit/3e7baa13cfe63febf1735be9b17b414d21aa8527))
928
+ * **reach:** three R2-review bugs in the module-reach report (follow-up to #2227) (#2230) ([31e3da5](https://github.com/event4u-app/agent-config/commit/31e3da5baf7aa7bc2a06b53335b18f1846912c3a))
929
+ * **rules:** refuse a triggerless routed rule; measure the real thinned total (#2226) ([52b409e](https://github.com/event4u-app/agent-config/commit/52b409e897e42ab00e7305a6f17e1e27a1a35072))
930
+ * **code-graph:** repair the gate feeder path shape, then publish what step 3.3 actually measures (#2216) ([1668731](https://github.com/event4u-app/agent-config/commit/166873158c1bcbe585a95654376ec021873a4107))
931
+ * **deps:** lift proxy-addr to 2.0.8 so the runtime audit gate can pass (#2219) ([26510a6](https://github.com/event4u-app/agent-config/commit/26510a6c2a0e5d2997d639d6e5f3e9e9bc9dc34f))
932
+ * **rules:** repair the docs/ link group, correct two stale blocker claims (#2213) ([c58d7ea](https://github.com/event4u-app/agent-config/commit/c58d7eae8d1aab76d37f9018a57c5047d4b957bc))
933
+ * **roadmaps:** register step 0.2 blockedness where the carrier reads it (#2212) ([6b79d06](https://github.com/event4u-app/agent-config/commit/6b79d06defecbb3d8bc16d44e41160e0d4e470a5))
934
+
935
+ ### Documentation
936
+
937
+ * **roadmaps:** close three prerequisites that were performed but never ticked (#2291) ([c393d6b](https://github.com/event4u-app/agent-config/commit/c393d6b244ff3031d46345ebb24b3fd2ffc6611e))
938
+ * **roadmaps:** mark the three Phase-3 steps that share one gate, and refuse to mark two that do not (#2290) ([05329ba](https://github.com/event4u-app/agent-config/commit/05329ba488e7fcf98a93bf2a2df4d4162d013d54))
939
+ * **roadmaps:** measure all five open acceptance criteria instead of assuming them (#2289) ([70bd51a](https://github.com/event4u-app/agent-config/commit/70bd51a8a1221e56cb8a15648282cb31b0b4ce97))
940
+ * **roadmaps:** a sixth reading of three stable negatives, and one rejected substitution (#2287) ([ebefcdc](https://github.com/event4u-app/agent-config/commit/ebefcdc1f0d35d0a7ca5044d33605d4b3247b679))
941
+ * **roadmaps:** the gate refused a comment, which answers the phase block (#2285) ([6715878](https://github.com/event4u-app/agent-config/commit/6715878859af7cd20fcac76855c4c4158b57edf3))
942
+ * **roadmaps:** Phase 1 was done except for three notes nobody wrote (#2284) ([5280e89](https://github.com/event4u-app/agent-config/commit/5280e8912ab480799e433d37df2d402b5b10b791))
943
+ * **roadmaps:** Phase 2 waits on a cancelled instrument, not on a machine (#2282) ([0f6209e](https://github.com/event4u-app/agent-config/commit/0f6209e8eb436f0ffcc679a34663dc6675c1bf8b))
944
+ * **roadmaps:** close 3.2 by council re-scope, and name the accrual trap I hit (#2281) ([d6e75f4](https://github.com/event4u-app/agent-config/commit/d6e75f45fa086dca62f953966479569fd54b93b2))
945
+ * **adr:** amend ADR-281 so a council recommends passage, never grants it (#2257) ([f76e83e](https://github.com/event4u-app/agent-config/commit/f76e83e47cdb823e37c96f4bbd16e53bc5c24c04))
946
+ * **governance:** ADR-281 and the texts it corrects (partial, self-modification roadmap) (#2251) ([82a131f](https://github.com/event4u-app/agent-config/commit/82a131feb5f6309365c962d272e9362ec9820c53))
947
+ * **council:** ADR-281 and the authority-routing decision cannot both stand (#2255) ([61cd5b7](https://github.com/event4u-app/agent-config/commit/61cd5b7ad6a6851f99e97405a20c1e8a9ea61607))
948
+ * **council:** record the authority-routing decision — ratified, 2 of 2 seats (#2253) ([0009ecd](https://github.com/event4u-app/agent-config/commit/0009ecd7c1f0d8f9659dd0ab249414879015b20e))
949
+ * **roadmaps:** close road-to-leading-every-row on the owner's answers and ADR-280 (#2237) ([adaad0a](https://github.com/event4u-app/agent-config/commit/adaad0aa2afd216767bf31404f533beb9393c5c8))
950
+ * **roadmap:** record that the two kernel-held rule links are human-gated (#2236) ([8510ebc](https://github.com/event4u-app/agent-config/commit/8510ebc995d224b1d353eb5042887905b7b16533))
951
+ * **roadmaps:** park the opencode probe and restore the risk-register gate on main (#2229) ([c267eae](https://github.com/event4u-app/agent-config/commit/c267eaef62b49abb38730734509d1a39f1a3d788))
952
+ * **roadmaps:** land inbox-2026-10-e as ten ready roadmaps (#2225) ([0c86ad9](https://github.com/event4u-app/agent-config/commit/0c86ad98fb540e3be196cdead4dcf98a49b03492))
953
+ * **roadmaps:** record the owner's answers to eleven open blockers (#2222) ([a75bb32](https://github.com/event4u-app/agent-config/commit/a75bb32106f695d006aa67f9ffc8185afb54faad))
954
+ * **evidence:** publish the shadow readings the release window opened, and carry 2.3 (#2217) ([2bb3a1a](https://github.com/event4u-app/agent-config/commit/2bb3a1a03d50a58a374f4f6d7600147e930a523e))
955
+ * **roadmaps:** park menu-precision on a two-branch wake after a fourth null probe (#2215) ([f3cc5db](https://github.com/event4u-app/agent-config/commit/f3cc5db98ae15c744a990731f19b88a2508a60a3))
956
+ * **roadmaps:** settle four of seven blockers on road-to-leading-every-row (#2214) ([2bf1067](https://github.com/event4u-app/agent-config/commit/2bf10671424cb09adb179c50512577d7b6b79a52))
957
+
958
+ ### Tests
959
+
960
+ * **harvest:** re-derive the census pin after two sanctioned provenance tokens (#2224) ([d3973a8](https://github.com/event4u-app/agent-config/commit/d3973a86a13e3e101e3a018ae0567bf2099fd71d))
961
+
962
+ ### Chores
963
+
964
+ * **roadmaps:** park the rule-triggers roadmap on two human-gated events (#2276) ([9be2b6f](https://github.com/event4u-app/agent-config/commit/9be2b6fad97389eb29ad5f24f561d04e45dacf56))
965
+ * **roadmaps:** park the two owner-blocked drafts in later/ (#2271) ([717aba6](https://github.com/event4u-app/agent-config/commit/717aba62a59685eca54515221e6165bae743dc05))
966
+ * **roadmaps:** archive the settings-classes stagnation roadmap (#2270) ([dd80cbe](https://github.com/event4u-app/agent-config/commit/dd80cbe5ce2f5aa3bb3a833a1d21d1f12a898126))
967
+ * **gates:** reaffirm the derivable-settings baseline after a drain that found nothing (#2268) ([6d603d9](https://github.com/event4u-app/agent-config/commit/6d603d93ecff326e9fc5c49d97dcd3f878bfb4af))
968
+ * **roadmaps:** close and archive road-to-enforcement-per-obligation (#2263) ([ebd8adc](https://github.com/event4u-app/agent-config/commit/ebd8adc37fbcd9ca334f2930653460d26f86437c))
969
+ * **roadmaps:** close and archive road-to-signals-that-mean-what-they-say (#2260) ([bacc2a0](https://github.com/event4u-app/agent-config/commit/bacc2a0dcaee3cab3864b1bb3cd11cc8f6aad4cf))
970
+ * **roadmaps:** archive the neighbours lane and carry its two deferred steps (#2259) ([7dc88a6](https://github.com/event4u-app/agent-config/commit/7dc88a61aae1b75026c14640817f76d18f739fa2))
971
+ * **roadmaps:** park road-to-learning-you-can-see-carried, and publish the reading that moved it (#2221) ([fcd5b9e](https://github.com/event4u-app/agent-config/commit/fcd5b9e0b27307444c15140a6ac56a965654fe2c))
972
+ * **roadmaps:** park road-to-stacks-beyond-php behind owner blocker b5 (#2220) ([d47793a](https://github.com/event4u-app/agent-config/commit/d47793a787dd3c61c4287194be8138e6c624bf6f))
973
+ * **roadmaps:** settle producible-vs-elapsed for the user_prompt_submit timeout and park host-claims-carried (#2218) ([763bc12](https://github.com/event4u-app/agent-config/commit/763bc121c24615027a01811322b73590845a85ad))
974
+
975
+ ### Other
976
+
977
+ * The modification review — its questions, how a seat closes, how the verdict follows (#2292) ([bbe5b73](https://github.com/event4u-app/agent-config/commit/bbe5b73be4f06faa528d494a271d2c8b21e28bb2))
978
+ * Occasion 3 of 4 — one row corrected, one correction declined (#2288) ([0fd09eb](https://github.com/event4u-app/agent-config/commit/0fd09ebe3bc1ceb54fe06ea593addf609b46c3be))
979
+ * One step needed no council, the other split and found why (#2286) ([55360bb](https://github.com/event4u-app/agent-config/commit/55360bb87e794f8b8e6fd03134c05e1791aa2a66))
980
+ * Four law headings went to a council; one landed and three were refused (#2279) ([40b74b9](https://github.com/event4u-app/agent-config/commit/40b74b948f40e4875e9c9b4a72080cad04132532))
981
+ * Correct AC-2 to 37: one of the 47 selected keys was not default-neutral (#2278) ([e48f52c](https://github.com/event4u-app/agent-config/commit/e48f52cadf551e411aafdfc65d955d23a6bf8e1f))
982
+ * doctor is offline by default; --online opts the forge read back in (#2277) ([60c129b](https://github.com/event4u-app/agent-config/commit/60c129bfa74224abb86254f79909a715535522c6))
983
+ * Park the graph-feeder roadmap on an accrual wait its own repository cannot end (#2275) ([737f0d6](https://github.com/event4u-app/agent-config/commit/737f0d6633d52e51e3eb90115b17bfdc865eb43d))
984
+ * Close the pack-boundary base-into-narrow mismatch with an advisory edge the gate reads (#2273) ([9ecd663](https://github.com/event4u-app/agent-config/commit/9ecd6639fd8f4b2f02a277a8fe3f565d5783e792))
985
+ * Queue 47 default-neutral settings keys for retirement (#2272) ([9582574](https://github.com/event4u-app/agent-config/commit/958257418b9098ef37be6fc3118c7d4bcbc69861))
986
+ * Resolve 15 roadmap blockers, and run the council before any owner question (#2269) ([6d68417](https://github.com/event4u-app/agent-config/commit/6d6841712de38c4dcd8f5ff4c03bd5acc5b09cd3))
987
+ * Findings that get a disposition: medium security blocks a release, and every 16.3.0 row ends somewhere (#2266) ([bf7ed4f](https://github.com/event4u-app/agent-config/commit/bf7ed4f7559d8bd8827551bee21bf9b768262549))
988
+ * Harden the git convention from #2235: correct in a packed install, safe sync and rebase, and measure-and-propose for undeclared projects (#2258) ([b83bcb1](https://github.com/event4u-app/agent-config/commit/b83bcb19a7d5d649fbb8687c00a5327a2704febe))
989
+ * A team's git convention can be declared: ticket-prefixed commits, branch shape, and rebase instead of merge (#2235) ([0f9c32e](https://github.com/event4u-app/agent-config/commit/0f9c32e260c0e213273da9a448044e4403eac5a2))
990
+ * Re-price the neighbours lane on the tree it will be decided on, and stop its census caches leaking home paths (#2223) ([7cd6563](https://github.com/event4u-app/agent-config/commit/7cd6563a8c038b8bebe21f9b4dc6acda06ea5bc6))
991
+
992
+ Tests: 27198 (+1310 since 16.3.0)
993
+
745
994
  ## [16.3.0](https://github.com/event4u-app/agent-config/compare/16.2.0...16.3.0) (2026-10-05)
746
995
 
747
996
  ### Release highlights
@@ -753,6 +1002,8 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
753
1002
  - **Known limitations:** An installed layer measured against its limit, and the consent an installer must have before thinning (#2201) (src/scripts/install.ts declares a residual) (df7ea79); Two Phase-0 instruments closed against measurement, and the third blocked by a record rather than a ceiling (#2198) (src/scripts/check_standing_rule_delivery.ts declares a residual) (92027a2); A rule carrier that delivers what the install carries, in the host's form, in a string the host keeps (#2182) (src/scripts/install.ts declares a residual) (7fdfd0a); Rule triggers and installed links that hold (#2174) (src/scripts/install.ts declares a residual) (328a21b); A tree that keeps its neighbours (#2161) (src/scripts/install.ts declares a residual) (4399b5a); make the two pack-boundary gates green on the trunk and run the workflow-security audit in CI (#2155) (90a0ad5); +2 more.
754
1003
 
755
1004
  > **Governance mix:** governance-only 23 vs consumer-only 1 (taxonomy 1.1.0).
1005
+ >
1006
+ > _Re-measured 2026-10-07:_ governance-only 83 vs consumer-only 3 (taxonomy 1.1.0) on `16.2.0..16.3.0` (`8d157f5e7..91aaf5e21`), via `./scripts-run src/scripts/measure_release_mix --from 16.2.0 --to 16.3.0`. The line above was measured to an unrecorded `HEAD` at write time.
756
1007
 
757
1008
  ### Features
758
1009
 
package/README.md CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
  [![Smoke](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml/badge.svg)](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml) [![Public install smoke (3 OS × 2 Node)](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml/badge.svg)](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml) [![npm](https://img.shields.io/npm/v/@event4u/agent-config?style=flat-square&label=npm&color=orange)](https://www.npmjs.com/package/@event4u/agent-config) [![agent-config MCP server](https://glama.ai/mcp/servers/event4u-app/agent-config/badges/score.svg)](https://glama.ai/mcp/servers/event4u-app/agent-config) [![MCP Toplist](https://mcptoplist.com/badge/glama%2Fevent4u-app%2Fagent-config.svg)](https://mcptoplist.com/server/glama%2Fevent4u-app%2Fagent-config)
6
6
 
7
- [![Skills](https://img.shields.io/badge/Skills-299-orange?style=flat-square)](dist/agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-121-orange?style=flat-square)](dist/agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-205-orange?style=flat-square)](dist/agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-121-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-29-orange?style=flat-square)](dist/agent-src/personas/) [![Advisors](https://img.shields.io/badge/Advisors-5-orange?style=flat-square)](dist/agent-src/personas/advisors/) <!-- claim:published-artifact-counts -->
7
+ [![Skills](https://img.shields.io/badge/Skills-299-orange?style=flat-square)](dist/agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-122-orange?style=flat-square)](dist/agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-205-orange?style=flat-square)](dist/agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-121-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-29-orange?style=flat-square)](dist/agent-src/personas/) [![Advisors](https://img.shields.io/badge/Advisors-5-orange?style=flat-square)](dist/agent-src/personas/advisors/) <!-- claim:published-artifact-counts -->
8
8
 
9
- <sub>**How these are counted** — one canonical counter, `agent-config` → `update_counts --check`, re-derives all six from the tree and fails CI on a drift of one. Two bases are not what the linked directory shows, so they are stated here rather than left to be inferred: **Commands 202** counts every command file **recursively** (the linked directory holds 61 at its top level), and **Rules 121** counts the **source** rules while the linked projection holds 120 — one rule is dormant and is not projected. **Personas 29** excludes the directory README. Counts are of files and directories: none of them measures quality, activation, or adoption. <!-- claim:published-artifact-counts --></sub>
9
+ <sub>**How these are counted** — one canonical counter, `agent-config` → `update_counts --check`, re-derives all six from the tree and fails CI on a drift of one. Two bases are not what the linked directory shows, so they are stated here rather than left to be inferred: **Commands 205** counts every command file **recursively** (the linked directory holds 60 at its top level), and **Rules 121** counts the **source** rules while the linked projection holds 120 — one rule is dormant and is not projected. **Personas 29** excludes the directory README. Counts are of files and directories: none of them measures quality, activation, or adoption. <!-- claim:published-artifact-counts --></sub>
10
10
 
11
11
  **Try it in 30 seconds** — drop one read-only subagent into any repo and watch it gate "done": `@production-validator check this branch is actually done`. No wizard, no lock-in, nothing else installed — the [30-second wedge ↓](#quickstart) is the whole first step. Start at the proof, not the catalog: **[event4u-app.github.io/agent-config/proof/](https://event4u-app.github.io/agent-config/proof/)**.
12
12
 
@@ -29,9 +29,14 @@
29
29
  # `api` rung. A vendor CLI under your subscription is preferred whenever one
30
30
  # resolves, so the common case costs nothing per token — run
31
31
  # `agent-config council status` to see the resolved transport and billing class
32
- # per member before invoking. The autonomy directive does NOT silently spend
33
- # tokens — the /council command always asks before invoking, even under
34
- # autonomy: on.
32
+ # per member before invoking.
33
+ #
34
+ # This block used to end "the /council command always asks before invoking,
35
+ # even under autonomy: on". That was already untrue when ADR-230 replaced the
36
+ # unconditional ask with a three-case bound, and ADR-279 has since removed the
37
+ # last case that asked. The command does not ask; it shows the estimate as
38
+ # information. What bounds a billable run is a ceiling you set below — and
39
+ # with nothing set, nothing bounds it.
35
40
 
36
41
  # Master switch (true, false). REQUIRED — the loader has no default for it,
37
42
  # so this file's value is the only value.
@@ -138,11 +143,21 @@ defaults:
138
143
  # Prices come from agents/.agent-prices.md (gitignored, refreshed weekly
139
144
  # by `python3 scripts/update_prices.py`; bootstrapped from
140
145
  # scripts/ai_council/_default_prices.py on first run).
146
+ #
147
+ # These ship at 0 — no ceiling on tokens or money unless you set one
148
+ # (ADR-279). `max_calls` is NOT a ceiling on money: it bounds fan-out per
149
+ # invocation, so it keeps its value. To get a bound back, replace a 0 with the
150
+ # figure you want; the units are TOKENS for the first two and US DOLLARS for
151
+ # `max_total_usd`.
152
+ #
153
+ # If you copied this file before 2026-10-06 it carries 500000 / 200000 / 20.0
154
+ # explicitly. Those are YOUR figures now and nothing rewrites them — delete the
155
+ # lines to become unbounded, or keep them to stay bounded.
141
156
  cost_budget:
142
- max_input_tokens: 500000
143
- max_output_tokens: 200000
157
+ max_input_tokens: 0
158
+ max_output_tokens: 0
144
159
  max_calls: 50
145
- max_total_usd: 20.0
160
+ max_total_usd: 0.0
146
161
 
147
162
  # Phase 8 — Debate cost-visibility + hard refusal cap.
148
163
  #
@@ -150,7 +165,10 @@ cost_budget:
150
165
  # high-end estimate (expected × 1.20 over-run buffer) exceeds the cap,
151
166
  # `/council debate` refuses to start — the user must lower `--rounds`,
152
167
  # drop members, or raise the cap explicitly. No --proceed-anyway override.
153
- # Set to 0 to disable the cap (not recommended).
168
+ #
169
+ # It ships at 0 — disabled, per ADR-279. Set a USD figure to get the refusal
170
+ # back. The between-round confirmation below is a separate control and is NOT
171
+ # a money ceiling: it stays on whatever this is set to.
154
172
  #
155
173
  # `cost_disclosure.mode` ∈ {"always", "above_threshold", "off"}:
156
174
  # always — emit the disclosure block before every debate.
@@ -165,7 +183,7 @@ cost_budget:
165
183
  # mode: above_threshold
166
184
  # threshold_usd: 0.50
167
185
  debate:
168
- max_cost_usd: 5.00
186
+ max_cost_usd: 0.00
169
187
  cost_disclosure:
170
188
  mode: always
171
189
  threshold_usd: 1.00
@@ -672,13 +672,16 @@ attempt. At the third, write the row with what was observed and move on.
672
672
 
673
673
  This cap is **this phase's own**, and the divergence from
674
674
  [`autonomous-execution`](../../../../rules/autonomous-execution.md)
675
- § Validation-loop budget is deliberate rather than an oversight: that rule's N=3
676
- governs a *validation target* it defines as "a single identifiable artefact (file
677
- path, lint rule ID, test name)", explicitly excluding natural-language clusters —
678
- and a verbatim step out of a prose file is exactly such a cluster. Its remedy is
679
- also different (STOP and ask the user). Borrowing the number while failing the
680
- definition, and then citing the rule as authority, would weaken the rule it
681
- claims to obey. So: same number, stated here, for a reason stated here.
675
+ § Validation-loop budget is deliberate rather than an oversight: that rule's
676
+ `execution.fix_loop_max` budget (default 10, with a strategy-shift ladder)
677
+ governs a *validation target* it defines as "a single identifiable artefact
678
+ (file path, lint rule ID, test name)", explicitly excluding natural-language
679
+ clusters — and a verbatim step out of a prose file is exactly such a cluster.
680
+ This phase's own remedy is also different: STOP and ask the user, where the
681
+ rule's remedy at the same count is a mandatory strategy shift, never a stop.
682
+ Borrowing the number while failing the definition, and then citing the rule
683
+ as authority, would weaken the rule it claims to obey. So: same number,
684
+ stated here, for a reason stated here.
682
685
 
683
686
  One row per selected step:
684
687
 
@@ -26,7 +26,7 @@ packs:
26
26
 
27
27
  Run `git branch --show-current` and extract ticket IDs:
28
28
 
29
- - Match pattern: `[A-Z]+-[0-9]+` (e.g., `DEV-1234`, `PROJ-567`)
29
+ - Read it with `agent-config git:convention ticket` ([`commit-subject`](../../../../skills/git-workflow/references/commit-subject.md) § Reading the ticket; e.g. `DEV-1234`, `PROJ-567`)
30
30
  - Common branch formats: `fix/DEV-1234/description`, `hotfix/DEV-999`, `fix/bug-description`
31
31
 
32
32
  If a ticket ID is found:
@@ -43,10 +43,16 @@ If there are no uncommitted changes (staged or unstaged), report
43
43
 
44
44
  ### 2. Determine the ticket number
45
45
 
46
- - Extract the ticket ID from the current branch name (e.g. `feat/DEV-1234/...`
47
- → `DEV-1234`).
48
- - If no ticket ID is found, omit the scope from the messages — write
49
- `chore: ...` not `chore(): ...`. Do **not** ask the user for one.
46
+ - Read the ticket exactly as [`/commit`](../commit.md) step 2 does
47
+ (`agent-config git:convention ticket`, with the card's `ticket_keys` line as
48
+ `--keys`) and place it per the convention in force —
49
+ [`commit-subject`](../../../../skills/git-workflow/references/commit-subject.md),
50
+ including its area-scope clause. A candidate marked `unknown-key` is omitted,
51
+ never asked about.
52
+ - If no ticket ID is found, omit it — write `chore: ...` not `chore(): ...`.
53
+ Do **not** ask the user for one.
54
+ Under an approved convention card this is never a stop: the family's form
55
+ without the ticket part is valid (`commit-subject` § Placing the ticket).
50
56
 
51
57
  ### 3. Analyze and split
52
58
 
@@ -69,6 +75,12 @@ Splitting rules:
69
75
 
70
76
  Generate commit messages per [`commit-conventions`](../../rules/commit-conventions.md).
71
77
 
78
+ **No convention established — never ask.** When `agent-config git:convention
79
+ show --key commit_format` prints `no convention established`, run
80
+ `agent-config git:convention measure`, carry its `verdict` line into the summary,
81
+ and generate under the convention in force (the default). Asking and writing the
82
+ card belong to the interactive [`/commit`](../commit.md) step 3c only.
83
+
72
84
  ### 3b. Secret-leak pre-flight — MANDATORY, not autonomy-lifted
73
85
 
74
86
  Run `./scripts-run src/scripts/check_secret_leak`. A high-confidence hit is a
@@ -79,14 +91,22 @@ strip one.
79
91
 
80
92
  ### 4. Validate, then commit immediately
81
93
 
82
- Before staging anything, run the same `preview-on-error` validator as
83
- [`/commit`](../commit.md) step 5. Each generated message must match
84
- `^(feat|fix|chore|docs|refactor|test|perf|style|build|ci|revert)(\([^)]+\))?!?: .+`.
94
+ Before staging anything, pipe every generated subject through
95
+ `agent-config git:convention subject`, as [`/commit`](../commit.md) step 5 does.
96
+
97
+ - **Exit `0`** → proceed silently; a `note:` line naming a `commit-msg` hook
98
+ or a commitlint config is not a stop — that validator runs at commit, and a
99
+ rejection there stops the run like any failed commit.
100
+ - **Exit `1`** → stop, print the verb's output (each failed subject and its
101
+ rule, or the format it could not read), hand back to the user.
102
+ Do **not** auto-commit broken messages even though confirmation is
103
+ otherwise suppressed.
85
104
 
86
- - **All valid** → proceed silently.
87
- - **Any invalid** → stop, print the failed message(s) + the regex,
88
- hand back to the user. Do **not** auto-commit broken messages even
89
- though confirmation is otherwise suppressed.
105
+ An approved convention card an earlier [`/commit`](../commit.md) wrote and left
106
+ uncommitted (`agents/memory/curated/conventions/approved/commit-subject.md`,
107
+ unstaged or untracked) rides in the first chunk: add it with that chunk's files
108
+ (`git add -- agents/memory/curated/conventions/approved/commit-subject.md`), so
109
+ every worktree and clone reads the convention it was approved under.
90
110
 
91
111
  For each planned commit in order:
92
112
 
@@ -98,29 +118,18 @@ git commit -m "{message}"
98
118
  No "looks good?" prompt. No confirmation step. The user invoked this
99
119
  command knowing the plan would be executed.
100
120
 
101
- ### 5. Report (verbosity-gated)
102
-
103
- Read `verbosity.post_action_reports` from `.agent-settings.yml` (default
104
- `minimal`). Same contract as [`/commit`](../commit.md) step 7.
105
-
106
- - `off` → emit nothing (still run `git log --oneline -N` silently for
107
- the agent's own verification).
108
- - `minimal` (default) → one line:
121
+ ### 5. Report
109
122
 
110
- ```
111
- → N commits created
112
- ```
123
+ Same contract as [`/commit`](../commit.md) step 7 — one line (run
124
+ `git log --oneline -N` silently for the agent's own verification):
113
125
 
114
- - `full` → full summary:
115
-
116
- ```
117
- Created N commits:
118
- 1. {sha1} feat(DEV-1234): {summary}
119
- 2. {sha2} test(DEV-1234): {summary}
120
- 3. {sha3} chore: {summary}
121
- ```
126
+ ```
127
+ → N commits created
128
+ ```
122
129
 
123
- Include `git log --oneline -N` output for verification.
130
+ A run that measured because no convention was
131
+ established adds the verb's `verdict` line and `→ run /commit once to choose and
132
+ record the convention`.
124
133
 
125
134
  ## Rules
126
135