@event4u/agent-config 9.17.0 → 9.18.1

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 (131) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +122 -171
  3. package/dist/agent-src/commands/challenge-me/vision.md +5 -0
  4. package/dist/agent-src/commands/evals/rule-compliance-audit.json +46 -0
  5. package/dist/agent-src/commands/feature/plan.md +20 -0
  6. package/dist/agent-src/commands/feature/roadmap.md +19 -0
  7. package/dist/agent-src/commands/pr/create.md +29 -0
  8. package/dist/agent-src/commands/roadmap/create.md +29 -0
  9. package/dist/agent-src/commands/rule-compliance-audit.md +28 -5
  10. package/dist/agent-src/contexts/execution/plan-confidence-gate.md +133 -0
  11. package/dist/agent-src/rules/active-remediation.md +2 -0
  12. package/dist/agent-src/rules/architecture.md +2 -0
  13. package/dist/agent-src/rules/augment-edit-discipline.md +2 -0
  14. package/dist/agent-src/rules/brand-consistency.md +10 -62
  15. package/dist/agent-src/rules/brand-source-of-truth.md +62 -11
  16. package/dist/agent-src/rules/broken-access-control.md +4 -0
  17. package/dist/agent-src/rules/cli-output-handling.md +5 -0
  18. package/dist/agent-src/rules/code-comment-discipline.md +3 -0
  19. package/dist/agent-src/rules/commit-conventions.md +2 -0
  20. package/dist/agent-src/rules/cross-source-consistency.md +3 -0
  21. package/dist/agent-src/rules/design-fidelity.md +2 -0
  22. package/dist/agent-src/rules/doc-screenshot-hygiene.md +2 -0
  23. package/dist/agent-src/rules/docker-commands.md +4 -0
  24. package/dist/agent-src/rules/domain-adoption-policy.md +2 -0
  25. package/dist/agent-src/rules/domain-safety-disclaimer.md +5 -2
  26. package/dist/agent-src/rules/engineering-safety-floor.md +2 -0
  27. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +9 -0
  28. package/dist/agent-src/rules/image-likeness-and-rights.md +4 -0
  29. package/dist/agent-src/rules/improve-before-implement.md +4 -0
  30. package/dist/agent-src/rules/laravel-routing.md +4 -0
  31. package/dist/agent-src/rules/legal-safety-floor.md +3 -0
  32. package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -0
  33. package/dist/agent-src/rules/media-governance-routing.md +5 -0
  34. package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
  35. package/dist/agent-src/rules/no-roadmap-references.md +2 -0
  36. package/dist/agent-src/rules/notes-first-reasoning.md +2 -0
  37. package/dist/agent-src/rules/php-coding.md +2 -0
  38. package/dist/agent-src/rules/prefer-enums-over-literals.md +3 -0
  39. package/dist/agent-src/rules/provider-lifecycle-discipline.md +5 -0
  40. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +2 -0
  41. package/dist/agent-src/rules/roadmap-progress-sync.md +2 -0
  42. package/dist/agent-src/rules/rule-type-governance.md +2 -0
  43. package/dist/agent-src/rules/scale-discipline.md +3 -0
  44. package/dist/agent-src/rules/secret-vcs-guard.md +2 -0
  45. package/dist/agent-src/rules/security-sensitive-stop.md +9 -2
  46. package/dist/agent-src/rules/senior-engineering-discipline.md +6 -0
  47. package/dist/agent-src/rules/skill-quality.md +2 -0
  48. package/dist/agent-src/rules/source-confidentiality.md +4 -0
  49. package/dist/agent-src/rules/source-discovery-gate.md +3 -0
  50. package/dist/agent-src/rules/source-of-truth.md +2 -0
  51. package/dist/agent-src/rules/strategy-safety-floor.md +2 -0
  52. package/dist/agent-src/rules/think-before-action.md +5 -0
  53. package/dist/agent-src/rules/ui-audit-gate.md +2 -0
  54. package/dist/agent-src/skills/design-intelligence/SKILL.md +6 -180
  55. package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +100 -0
  56. package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +91 -0
  57. package/dist/agent-src/skills/design-review/SKILL.md +4 -141
  58. package/dist/agent-src/skills/design-review/references/review-communication.md +92 -0
  59. package/dist/agent-src/skills/design-review/references/verification-automation.md +61 -0
  60. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +8 -27
  61. package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +31 -0
  62. package/dist/agent-src/skills/fe-design/SKILL.md +4 -289
  63. package/dist/agent-src/skills/fe-design/references/design-patterns.md +227 -0
  64. package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +75 -0
  65. package/dist/agent-src/skills/roadmap-management/SKILL.md +10 -0
  66. package/dist/agent-src/skills/roadmap-writing/SKILL.md +12 -1
  67. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  68. package/dist/agent-src/templates/roadmaps.md +12 -0
  69. package/dist/agent-src/templates/scripts/work_engine/directives/ui/_fix_lane.ts +52 -0
  70. package/dist/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +8 -0
  71. package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +6 -0
  72. package/dist/agent-src/templates/scripts/work_engine/intent/classify.ts +56 -4
  73. package/dist/cli/registry.js +2 -0
  74. package/dist/cli/registry.js.map +1 -1
  75. package/dist/cli-delegate/chunk-AIIUU73N.js +2040 -0
  76. package/dist/cli-delegate/{chunk-IMSXPRVH.js → chunk-ELMFOQPW.js} +11 -0
  77. package/dist/cli-delegate/chunk-LF2KKJ4Q.js +183 -0
  78. package/dist/cli-delegate/cmd_explain.js +36 -36
  79. package/dist/cli-delegate/cmd_export.js +1 -1
  80. package/dist/cli-delegate/cmd_handoff.js +203 -2228
  81. package/dist/cli-delegate/cmd_prune.js +1 -1
  82. package/dist/cli-delegate/cmd_route_audit.js +249 -0
  83. package/dist/cli-delegate/cmd_route_explain.js +285 -0
  84. package/dist/cli-delegate/cmd_settings_migrate.js +1 -1
  85. package/dist/cli-delegate/cmd_sync.js +1 -1
  86. package/dist/cli-delegate/cmd_uninstall.js +1 -1
  87. package/dist/cli-delegate/cmd_validate.js +1 -1
  88. package/dist/discovery/deprecation-report.md +1 -1
  89. package/dist/discovery/discovery-manifest.json +57 -57
  90. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  91. package/dist/discovery/discovery-manifest.summary.md +1 -1
  92. package/dist/discovery/orphan-report.md +1 -1
  93. package/dist/discovery/packs.json +2 -2
  94. package/dist/discovery/trust-report.md +1 -1
  95. package/dist/discovery/workspaces.json +2 -2
  96. package/dist/install/install.mjs +11 -0
  97. package/dist/mcp/registry-manifest.json +1 -1
  98. package/dist/mcp/server.json +2 -2
  99. package/dist/router.json +1 -1
  100. package/dist/server/schemas/settings.js +12 -0
  101. package/dist/server/schemas/settings.js.map +1 -1
  102. package/package.json +1 -1
  103. package/src/agent-src/templates/scripts/work_engine/directives/ui/_fix_lane.ts +52 -0
  104. package/src/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +8 -0
  105. package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +6 -0
  106. package/src/agent-src/templates/scripts/work_engine/intent/classify.ts +56 -4
  107. package/src/config/agent-settings.template.yml +46 -0
  108. package/src/config/evaluator-budgets.json +3 -3
  109. package/src/config/gate-coverage.yml +44 -0
  110. package/src/scripts/_cli/cmd_explain.ts +41 -36
  111. package/src/scripts/_cli/cmd_route_audit.ts +290 -0
  112. package/src/scripts/_cli/cmd_route_explain.ts +269 -0
  113. package/src/scripts/_dispatch.bash +23 -0
  114. package/src/scripts/_lib/git_env.ts +40 -0
  115. package/src/scripts/_lib/md_table.ts +27 -0
  116. package/src/scripts/_lib/planning_settings.ts +43 -0
  117. package/src/scripts/_lib/release_highlights.ts +279 -0
  118. package/src/scripts/_lib/router_match.ts +301 -0
  119. package/src/scripts/annotate_r1_outcomes.ts +258 -0
  120. package/src/scripts/check_completion_review.ts +1322 -0
  121. package/src/scripts/check_release_highlights.ts +60 -152
  122. package/src/scripts/compile_router.ts +20 -3
  123. package/src/scripts/dispatch_r2_reviewer.ts +969 -0
  124. package/src/scripts/eval_ui_triviality.ts +156 -0
  125. package/src/scripts/lint_abstraction_thresholds.ts +3 -1
  126. package/src/scripts/lint_plan_risk_register.ts +931 -0
  127. package/src/scripts/lint_trigger_collisions.ts +257 -0
  128. package/src/scripts/release.ts +47 -13
  129. package/src/scripts/router_telemetry.ts +16 -290
  130. package/src/scripts/schemas/rule.schema.json +10 -0
  131. package/src/server/schemas/settings.ts +18 -0
@@ -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": "9.17.0",
9
+ "version": "9.18.1",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
package/CHANGELOG.md CHANGED
@@ -82,6 +82,29 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
82
82
 
83
83
  ### Fixed
84
84
 
85
+ - **Every release PR was red on its first run — the generator and the
86
+ highlight gate contradicted each other.** `release.ts` wrote `_none_` into
87
+ all five curated-head fields; `check_release_highlights` (added 2026-08-03)
88
+ fails a `_none_` the release span contradicts. Because every release of this
89
+ package touches `src/rules/` or `src/scripts/schemas/`, "Behaviour changes"
90
+ is *always* substantiated, so the gate reliably red-flagged the generator's
91
+ own default — 9.17.0 (run 30871194277) and 9.18.0 (run 30909511315) both
92
+ failed on that one step, and each release had to be unblocked by hand.
93
+ - The span → category classifier now lives once, in
94
+ `src/scripts/_lib/release_highlights.ts`, and is shared by the generator
95
+ and the gate; the two duplicated label lists are gone with it.
96
+ - `release.ts` **pre-fills** each substantiated label with the deriving
97
+ reason plus its citing SHAs (capped at 6, remainder stated, never silently
98
+ truncated). `_none_` is now a fallback for labels the span does not
99
+ substantiate, not a blanket default — so the tool no longer asserts five
100
+ things it never checked.
101
+ - The gate keeps full teeth for the failure it was actually built for: a
102
+ **human** editing a substantiated line back down to `_none_`, which is what
103
+ produced the false 9.13.0 and 9.14.0 heads. An unrewritten auto-derived
104
+ line is advisory (a prose gap, not a false claim) and never blocks.
105
+ - Derivation is best-effort in the generator: a git failure degrades to the
106
+ `_none_` skeleton with a warning instead of aborting a release.
107
+
85
108
  - **`/team delegate` double gate is now enforced in code, not only in prose**
86
109
  (team mode stays default-off; closing `road-to-team-mode`). The gate on the
87
110
  only write-access wrapper existed as agent-followed instructions in the
@@ -255,212 +278,140 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
255
278
  > keeps the active era under the 250-line drift cap enforced by
256
279
  > `tests/test_changelog_eras.py`.
257
280
 
258
- # Era: 9.15.x — current
281
+ # Era: pre-9.18.0 — archived
259
282
 
260
- > Started at `9.15.0`. Full entries live inline below.
283
+ > All entries before `9.18.0` live in
284
+ > [`docs/archive/CHANGELOG-pre-9.18.0.md`](docs/archive/CHANGELOG-pre-9.18.0.md).
285
+ > The archive is read-only; git tags remain the canonical
286
+ > source for what shipped. Splitting them out of the main file
287
+ > keeps the active era under the 250-line drift cap enforced by
288
+ > `tests/test_changelog_eras.py`.
289
+
290
+ # Era: 9.18.x — current
291
+
292
+ > Started at `9.18.0`. Full entries live inline below.
261
293
  > The drift test caps this era at 250 lines of entry body; growth past
262
- > that forces a new era split (`# Era: 9.16.x`, etc.) — see
294
+ > that forces a new era split (`# Era: 9.19.x`, etc.) — see
263
295
  > [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
264
296
 
265
- ## [9.17.0](https://github.com/event4u-app/agent-config/compare/9.16.0...9.17.0) (2026-08-04)
297
+ ## [9.18.1](https://github.com/event4u-app/agent-config/compare/9.18.0...9.18.1) (2026-08-04)
266
298
 
267
299
  ### Release highlights
268
300
 
269
301
  <!-- Curated head: fill before merge, keep it under 10 lines, and leave `_none_` where it is genuinely the answer. The generated log below is unchanged. -->
270
- - **Behaviour changes:** `/optimize:deep` is now bounded — plan-only with a schema-backed limits block, a 5-loop ceiling, a pre-registered target metric, and hard exclusions for kernel rules and stable contracts (980b4f1).
271
- - **Default changes + migration:** `/optimize:deep` defaults to plan-only; push/PR/loop execution now requires an explicit `--mode=execute`. No data or config migration.
272
- - **Security and correctness:** symlink traversal is confined in the catalog/count walkers (514189a); `ip-address` and `fast-uri` bumped past high npm-audit advisories (be9fb0f, 22887ba).
273
- - **Honest nulls:** no new nulls in this span — the highlight-plausibility gate itself ships here, and the false-`_none_` 9.13.0/9.14.0 heads were backfilled retroactively (491f98b).
274
- - **Known limitations:** _none_
275
-
276
- ### Features
277
-
278
- * **agent-handoff:** CLI-backed resume flow as the primary command surface ([0ca1ee9](https://github.com/event4u-app/agent-config/commit/0ca1ee9136263e03eff3a62aed83b4cc70aed36f))
279
- * **cli:** agent-config handoff — picker, launch adapters, print mode ([d88eea9](https://github.com/event4u-app/agent-config/commit/d88eea976c2752f67c6d342011904a664d9e4329))
280
- * **handoff:** session enumeration + deterministic handoff generator ([55d2459](https://github.com/event4u-app/agent-config/commit/55d24597150c1155379d22e37593d1c78fca3826))
281
- * **hooks:** one-shot handoff-context session_start concern ([9fa684d](https://github.com/event4u-app/agent-config/commit/9fa684d62800b21871b09582fb2c6f109ea03166))
282
- * **commands:** bound /optimize:deep — plan-only default, enforced limits ([980b4f1](https://github.com/event4u-app/agent-config/commit/980b4f18319db38b0a2c4d9bd2ab0783c17de672))
283
- * **release:** finding-disposition ledger with stable ids ([4428e57](https://github.com/event4u-app/agent-config/commit/4428e5788f5cc8ef6c98da1e05fd6879374f3fb8))
284
- * **release:** highlight plausibility gate + backfill the 9.13.0/9.14.0 heads ([491f98b](https://github.com/event4u-app/agent-config/commit/491f98b32767f5c84e0d46f5d2938fa298fb0f4b))
285
- * **release:** derive all four release surfaces from the changelog at head ([d947247](https://github.com/event4u-app/agent-config/commit/d9472472de75755583fd6220975e602804f46096))
286
- * **release:** drill — run the real step machinery against a simulated git/gh world ([a937e59](https://github.com/event4u-app/agent-config/commit/a937e5908edcf3953fc73a6a552de1a51fdc98cd))
302
+ - **Behaviour changes:** the release generator pre-fills the curated head from the release span instead of writing `_none_` into all five fields (8fe60e9, 2f23d6b) — `_none_` now means "the span substantiates nothing", so a reader can trust it; review-gate scope classification changed, with IaC and extensionless build files counting as code and a findings row required to be exactly six cells (6c5f0f5).
303
+ - **Default changes + migration:** _none_
304
+ - **Security and correctness:** two more fail-open routes in the review-gate fence parser are closed — an unterminated fence no longer swallows the rest of a findings artefact (55dc01d) and a bare fence never delimits a region (9937ad9, the fourth such route); both previously let a truncated artefact read as clean.
305
+ - **Honest nulls:** the honest-null recorded against 6c6fc15a9 in the 9.18.0 notes was **false** — the real binding review is restored (d56c0be), so treat that 9.18.0 line as withdrawn. Rounds 6 to 8 of the R2 review closed 7 findings and deferred 10, with 0 critical or high (7a0f7b3, 39f071f, 70bb89f).
306
+ - **Known limitations:** the head pre-fill matches an `honest-null` literal anywhere in a commit body, so a commit *about* the mechanism gets cited as one — it did here, for 2f23d6b, and a human dropped it. The derived line is a draft, never a claim; the gate blocks only a `_none_` the span contradicts and never judges a filled field.
287
307
 
288
308
  ### Bug Fixes
289
309
 
290
- * **agent-handoff:** trim suggestion.trigger_context under the 240-char schema cap ([708f963](https://github.com/event4u-app/agent-config/commit/708f963e3bf674f9ec1449673608fbf413897641))
291
- * **deps:** bump ip-address past the SSRF advisory trio (npm audit high) ([be9fb0f](https://github.com/event4u-app/agent-config/commit/be9fb0f1f58c39570deb38ab317d159c657fc14b))
292
- * **deps:** bump fast-uri past GHSA-7p8r-x3mc-p8w7 (npm audit high) ([22887ba](https://github.com/event4u-app/agent-config/commit/22887badc0e18f7e3fb7301e9aa02465e02e90e5))
293
- * **ci:** gate the findings-artifact upload on the file, not hashFiles ([7779d55](https://github.com/event4u-app/agent-config/commit/7779d55efb79b98f7ee6dabd84ed1659db6b4ec6))
294
- * **security:** confine symlink traversal in the catalog/count walkers ([514189a](https://github.com/event4u-app/agent-config/commit/514189a18f44d55cd45cb6a2b5a7236365e4d0a3))
310
+ * **release:** derive the head in --dry-run too, so the preview matches ([2f23d6b](https://github.com/event4u-app/agent-config/commit/2f23d6bb963577af5741951962b48e556e5a3e97))
311
+ * **release:** stop the generator writing a `_none_` the gate rejects ([8fe60e9](https://github.com/event4u-app/agent-config/commit/8fe60e9aba5192c07f8e33bc6ce1747a77e82922))
312
+ * **gates:** a bare fence never delimits a region — close the fourth fail-open route ([9937ad9](https://github.com/event4u-app/agent-config/commit/9937ad9b75f60bffd4ad42f2a830589bd4be7e5c))
313
+ * **gates:** an unterminated fence must not swallow the rest of a findings artefact ([55dc01d](https://github.com/event4u-app/agent-config/commit/55dc01d1fd3c8dbf44dd04fa7b3f41e3f4bc39bb))
314
+ * **gates:** IaC and extensionless build files are code; a row is exactly six cells ([6c5f0f5](https://github.com/event4u-app/agent-config/commit/6c5f0f5999b8a421cf765269a8da8b780465dc98))
295
315
 
296
316
  ### Documentation
297
317
 
298
- * **roadmap:** close and archive road-to-package-renewal (central) ([01b7ff6](https://github.com/event4u-app/agent-config/commit/01b7ff66b7886dfed9362682fc1262b15145adaa))
299
- * **handoff:** regenerate index catalogs ([a12e89e](https://github.com/event4u-app/agent-config/commit/a12e89e4f56c2bac0877f6f87c79a7ebb7168210))
300
- * **handoff:** sync generated catalogs, contracts, and archive the roadmap ([3505bb5](https://github.com/event4u-app/agent-config/commit/3505bb522fc69d2fdc9c5c3f4abc4ab35c3727ca))
301
- * **roadmap:** close and archive road-to-release-truth ([e8c1200](https://github.com/event4u-app/agent-config/commit/e8c120005250cfa116194b2aad54e237a8e09d8e))
302
-
303
- ### Tests
304
-
305
- * **release:** script the release-truth surface interactions in the drill ([6ce8025](https://github.com/event4u-app/agent-config/commit/6ce8025597c0502f25b4cd350f69d20424568d1c))
306
-
307
- ### CI
308
-
309
- * **release:** wire surface-equality, highlight-plausibility, finding-dispositions ([86866ed](https://github.com/event4u-app/agent-config/commit/86866edc918f4fbe3f2b2a1f6047584e2bc78b44))
310
-
311
- ### Chores
312
-
313
- * ignore worktrees ([1c97785](https://github.com/event4u-app/agent-config/commit/1c9778549a4ea2dcb5c9a63b1e1252e5584876ce))
314
- * **budgets:** cli_help_command_count 81 -> 82 for the handoff subcommand ([b27e14d](https://github.com/event4u-app/agent-config/commit/b27e14d2a71ec4e682fbae34eec4b710d0165022))
315
-
316
- Tests: 10692 (+104 since 9.16.0)
317
-
318
- ## [9.16.0](https://github.com/event4u-app/agent-config/compare/9.15.0...9.16.0) (2026-08-03)
319
-
320
- ### Release highlights
321
-
322
- <!-- Curated head: fill before merge, keep it under 10 lines, and leave `_none_` where it is genuinely the answer. The generated log below is unchanged. -->
323
- - **Behaviour changes:** _none_
324
- - **Default changes + migration:** _none_
325
- - **Security and correctness:** _none_
326
- - **Honest nulls:** _none_
327
- - **Known limitations:** _none_
328
-
329
- ### Features
330
-
331
- * **gates:** fail the PR that moves the CLI registry without the evaluator budget ([84740f3](https://github.com/event4u-app/agent-config/commit/84740f3aba1cd7e9fd3e2fa6eb304a1ad106e149))
332
-
333
- ### Chores
334
-
335
- * **deps:** bump the github-actions group across 1 directory with 5 updates ([5e272d8](https://github.com/event4u-app/agent-config/commit/5e272d89e6e9b5bcc1fff053e9448da294998221))
318
+ * **review:** close round 8 — 1 fixed, 4 deferred, 0 critical ([70bb89f](https://github.com/event4u-app/agent-config/commit/70bb89f2820f4c5a5a26cd25f5db2daa53b08e5e))
319
+ * **review:** close round 7 — 2 fixed, 3 deferred, 0 critical/high ([39f071f](https://github.com/event4u-app/agent-config/commit/39f071fad58dc2c5cb9e6ec87e8e37b79085db2f))
320
+ * **gates:** in-place re-binding is the normal fix-pass path (2.1/2.5/2.7) ([1f7d140](https://github.com/event4u-app/agent-config/commit/1f7d1404c4bc63e87d4b46f91d52f81f2ae51f7b))
321
+ * **review:** round-7 R2 findings — 2 medium, 3 low, 0 critical/high ([2bd3eda](https://github.com/event4u-app/agent-config/commit/2bd3edad82ff69700f62c4d16c93f38a484e5e08))
322
+ * **review:** close round 6 — 4 fixed, 3 deferred, 0 critical/high ([7a0f7b3](https://github.com/event4u-app/agent-config/commit/7a0f7b33aed30921f2404ae1955a8e5aa76dde9b))
323
+ * **gates:** two claims corrected to match the code (round-6 lows) ([0f5d43a](https://github.com/event4u-app/agent-config/commit/0f5d43a17be245b034287b0f486839fb156f8b86))
324
+ * **review:** restore the real binding review — 6c6fc15a9's honest-null was false ([d56c0be](https://github.com/event4u-app/agent-config/commit/d56c0be63f6782183737ab50256401ab52a1f38f))
336
325
 
337
- Tests: 10588 (+8 since 9.15.0)
326
+ Tests: 10963 (+19 since 9.18.0)
338
327
 
339
- ## [9.15.0](https://github.com/event4u-app/agent-config/compare/9.14.0...9.15.0) (2026-08-03)
328
+ ## [9.18.0](https://github.com/event4u-app/agent-config/compare/9.17.0...9.18.0) (2026-08-04)
340
329
 
341
330
  ### Release highlights
342
331
 
343
332
  <!-- Curated head: fill before merge, keep it under 10 lines, and leave `_none_` where it is genuinely the answer. The generated log below is unchanged. -->
344
- - **Behaviour changes:** _none_
345
- - **Default changes + migration:** _none_
346
- - **Security and correctness:** _none_
347
- - **Honest nulls:** _none_
348
- - **Known limitations:** _none_
333
+ - **Behaviour changes:** rule triggers were re-cut — the brand pair is merged into one rule and the `disclaimer`/`finance` plus `secret`/`security` trigger sets are disjoined, so a prompt that used to load two rules now loads one (71c3527); `existing-ui-audit` moved its required sections back into the skill body and `references/output-and-pitfalls.md` is removed (b3cc0ad); an unknown router `tier` value now fails compilation instead of silently downgrading to tier-2 (02960bf); a new trigger-collision disposition gate lands with a reproducible census (b71e36c).
334
+ - **Default changes + migration:** the new `planning` settings section (Gate C/R1/R2) ships with defaults, so omitting it stays legal (4bd8813, 74afbf9) — no data or config migration.
335
+ - **Security and correctness:** the `secret`/`security` trigger overlap was disjoined so a secret-shaped edit routes to exactly one floor (71c3527); round-2 review of the new gate scripts closed eight findings, two of which were fail-open — a missing `maxBuffer` switched R2 off on large PRs, and the documented `planning.completion_review: false` escape hatch was read by nobody (8a2bf76).
336
+ - **Honest nulls:** the R2 review of the merge scope returned a binding honest-null (6c6fc15); the Stage-A metrics protocol is pre-registered but unmeasured, so no effectiveness claim ships with it (01323d1); an honest-null verdict no longer suppresses the risk-table checks it previously masked (65fe441).
337
+ - **Known limitations:** R2 (completion review) has **no blocking path in this release** — every wired call site passes `--advisory`, which downgrades every violation kind including dead-scan-scope; the gate-coverage note that claimed a trippable floor was withdrawn, and teeth arrive when Stage B drops the flag (f2c6971).
349
338
 
350
339
  ### Features
351
340
 
352
- * **routing:** budget-aware cheap-request delegation (budget_routing) ([c3e98dd](https://github.com/event4u-app/agent-config/commit/c3e98dda535413e6d5e40cc463f88628c8b2ff27))
353
- * **eval:** rules mode for the live trigger eval + weekly canary leg ([69fda7d](https://github.com/event4u-app/agent-config/commit/69fda7ddadbb60581f33ec3403609a34edaeed8b))
354
- * **routing:** word-boundary-anchored keyword matching ([1975323](https://github.com/event4u-app/agent-config/commit/197532342bbac44adfc1e5e486f8e485a95e1d6a))
355
- * **routing:** per-rule routing matrices for all 97 rules + derived coverage corpus ([f5ea58f](https://github.com/event4u-app/agent-config/commit/f5ea58f458865ad5ba60713e918acab301a76ffb))
356
- * **routing:** routing:doctor + composed session_start chain tests ([bc9d3a2](https://github.com/event4u-app/agent-config/commit/bc9d3a249649a4fd063d316fdc42f2f5404246e7))
357
- * **hooks:** daily throttle for session_start probes ([db1cdef](https://github.com/event4u-app/agent-config/commit/db1cdef2b45b7944dd056648768acb4194675d31))
358
- * **cli:** dispatch:hook fast path in the bin launcher ([048757d](https://github.com/event4u-app/agent-config/commit/048757dc0fc2c21cc1ea862c4690cc5cbeb03d3b))
359
- * **hooks:** claude hook command invokes the dispatcher bundle directly ([a8b2bdd](https://github.com/event4u-app/agent-config/commit/a8b2bddd916d6e129c4db255094a369a6b7b6972))
360
- * **bench:** measure the real hook invocation path and gate CI on it ([832480a](https://github.com/event4u-app/agent-config/commit/832480ac961f3c1c0815219d95653c398ff7059d))
361
- * **router:** reconcile the routes_to contract via an explicit self-contained class (ADR-210) ([4f24152](https://github.com/event4u-app/agent-config/commit/4f2415250e8b3f5a9e235c0f99ef2707a0df99ec))
362
- * **adr:** retrofit event-based review_trigger on 11 time-bound ADRs ([6dd0375](https://github.com/event4u-app/agent-config/commit/6dd03758a73a7a0682f8b4543fe45954a5cb6f56))
363
- * **adr:** projection-era corrections via ADR-209 — ADR-030 carve-out retired, ADR-089 superseded ([73b3fd8](https://github.com/event4u-app/agent-config/commit/73b3fd804a666e1bed5b58ca67b35b0669c49daf))
364
- * **adr:** decide the ADR-201 open question — dist/agent-src is kept forever ([693fc3d](https://github.com/event4u-app/agent-config/commit/693fc3d172e0e9a6286d161c59035e848715dfd5))
365
- * **adr:** drain the perma-proposed sweep — five accepts, one supersede ([3ab49ff](https://github.com/event4u-app/agent-config/commit/3ab49ff992a4bafd4bbe9b7bc2a625c45427f439))
366
- * **adr:** supersede ADR-085 with ADR-207 — stdio-lite restated on Node-only grounds ([3874e58](https://github.com/event4u-app/agent-config/commit/3874e58267f684a8a479130ae1db20f1ab5e5ad5))
367
- * **adr:** batch-disposition the drive-loop era via ADR-206 ([0052f65](https://github.com/event4u-app/agent-config/commit/0052f657238794fce1144bfbf9a8f2864b569f01))
368
- * **hooks:** add the block-config-weakening PreToolUse guard ([d158f2d](https://github.com/event4u-app/agent-config/commit/d158f2dcfd69f4a71d97dd5bd30e9774aa95162e))
369
- * **router:** ratchet short keyword triggers, and stop the contract lying about activation ([9f9e273](https://github.com/event4u-app/agent-config/commit/9f9e273d5d3d8736542723be5ca4df1b32627229))
370
- * **projection:** project the colon command form and drop the twinned wrappers ([002697c](https://github.com/event4u-app/agent-config/commit/002697c891a9fde2a7e05a9f6b895bc189eeb80e))
371
- * **projection:** derive the rule pack axis from the active-pack set ([37900a9](https://github.com/event4u-app/agent-config/commit/37900a92badba9dec34cd6e84918581154365b26))
372
- * **gates:** put the repaired scan roots under the coverage census ([df1e736](https://github.com/event4u-app/agent-config/commit/df1e736b9d775d7870a1a2d1d7fc467c47ded858))
373
- * **release:** name failing checks + mid-release-fix guidance at the failure point ([a3ce993](https://github.com/event4u-app/agent-config/commit/a3ce9939fa02a3510882ac5e85a40e070e1c313a))
374
- * **ci:** commit the measurement set and warn on main, fail on release ([6eebc02](https://github.com/event4u-app/agent-config/commit/6eebc021cd8ac43a32625fa939898054e94f238b))
375
- * **gates:** extend default-entry coverage and add the mutation canary ([fc05f30](https://github.com/event4u-app/agent-config/commit/fc05f30f080b799d781e401fa500ede4d8bb340e))
376
- * **gates:** generate the scan-scope census over the full gate population ([301116f](https://github.com/event4u-app/agent-config/commit/301116f6f53d08d82806914bd1bf719f22ad6412))
377
- * **gates:** add a violation ratchet for repaired scan roots ([190d53d](https://github.com/event4u-app/agent-config/commit/190d53deca65c3c01c9fff619aaf0e0e136e92c6))
341
+ * **ci:** local mirror for the R2 manifest re-derivation (parity) ([3e014b2](https://github.com/event4u-app/agent-config/commit/3e014b2196a1caf8ebfc404dd492cb500acf5126))
342
+ * **metrics:** pre-register Stage-A protocol; close + archive the roadmap ([01323d1](https://github.com/event4u-app/agent-config/commit/01323d17b03e01610c526cf34cd5134002899518))
343
+ * **ci:** enforce R1 + advisory R2 at pre-push and CI, register gate coverage ([21810f2](https://github.com/event4u-app/agent-config/commit/21810f2bd443310591bbaa7c83d54133477ab902))
344
+ * **gates:** wire C/R1/R2 into the authoring and delivery surfaces ([3622d09](https://github.com/event4u-app/agent-config/commit/3622d09d4154e97fb2736cf5f08dc8eb2f7e0ba1))
345
+ * **gates:** R1/R2 validators, R2 reviewer dispatcher, R1 annotation helper ([37389c9](https://github.com/event4u-app/agent-config/commit/37389c9ef8ae7420eaaab98484b53f362d34168b))
346
+ * **settings:** add planning gate keys (Gate C/R1/R2) to template + Zod schema ([74afbf9](https://github.com/event4u-app/agent-config/commit/74afbf973bd34d8572f63b8e47ae29ebeefc43b1))
347
+ * **work-engine:** ui-fix intent — fix-lane enters the chain at apply ([f29cc7c](https://github.com/event4u-app/agent-config/commit/f29cc7cb33b6247da197348d6e0a8e74ef74617d))
348
+ * **work-engine:** trivial-lane recall 0.60 -> 1.00 against the pre-registered corpus ([07a32d4](https://github.com/event4u-app/agent-config/commit/07a32d4985cd89cba46474d7ffabff52ccd1b497))
349
+ * **eval:** pre-register the ui-triviality golden corpus (40 tasks, council-labelled) ([f71a41c](https://github.com/event4u-app/agent-config/commit/f71a41c821f81cd0bb78bc427e2eba47b0ac0fd4))
350
+ * **lint:** trigger-collision disposition gate + reproducible census ([b71e36c](https://github.com/event4u-app/agent-config/commit/b71e36c317385701d3b8577770130075c1b08754))
351
+ * **routing:** one shared trigger matcher + route:explain / route:audit CLI ([e3af5ca](https://github.com/event4u-app/agent-config/commit/e3af5cacc496228794acf5a86fe799785ddbe19d))
378
352
 
379
353
  ### Bug Fixes
380
354
 
381
- * **cli:** register routing:doctor in the CLI registry ([f02db54](https://github.com/event4u-app/agent-config/commit/f02db54c2cae449e730742f7396af5ac812bf0e8))
382
- * **ci:** waive pre-existing SC2016 in bench-drift comment renderer ([bb4c605](https://github.com/event4u-app/agent-config/commit/bb4c6058177ccbdcdd3157a26c9818f1bcd3cc94))
383
- * **deps-dev:** keep web-tree-sitter on the 0.24.7 ABI pin ([3e76cb2](https://github.com/event4u-app/agent-config/commit/3e76cb2515d6b4c183b7305b49dd7084b1cd59b4))
384
- * **deps:** settle the preact floor and adopt the group bumps into the baseline ([b9c9c14](https://github.com/event4u-app/agent-config/commit/b9c9c14d6c43b51ee857a422ec35a4c559cd3a2e))
385
- * **sweep:** keep the kernel rule language-and-tone out of the dead-tree sweep ([80c323a](https://github.com/event4u-app/agent-config/commit/80c323ac27c024f85426ee63a03c51a2e02ac964))
386
- * **tests:** use src/rules fixture paths in the self-contained carve-out tests ([c541100](https://github.com/event4u-app/agent-config/commit/c541100cb8e9ed836dc3cd7ba54414a0c6783d65))
387
- * **adr-index:** stop the index header naming the retired Python generator ([a26756e](https://github.com/event4u-app/agent-config/commit/a26756e9f9da1cdb79ab29deaed6dd3238def969))
388
- * **hooks:** resolve the session-canary name user-globally, not per project ([9c3b779](https://github.com/event4u-app/agent-config/commit/9c3b7791fad2fa2d987b279a0951e662ff3c3ab1))
389
- * **hooks:** rebuild stale tsc output after pull / branch-switch ([d2122e9](https://github.com/event4u-app/agent-config/commit/d2122e936033262a9dbe429dd21a2a6e7e23efe6))
390
- * **roadmap-management:** tighten the awaiting-evidence section to clear the overlap gate ([5b6f141](https://github.com/event4u-app/agent-config/commit/5b6f141a8be8da01f7f231608de3a7d374b88e03))
391
- * **worktree:** name the dependency tree by ecosystem peers, not one stack ([eafeced](https://github.com/event4u-app/agent-config/commit/eafecedebbd207c97c37f2f380e718c37512b34b))
392
- * **clusters:** enumerate the filesystem in check_cluster_patterns ([a1cb83e](https://github.com/event4u-app/agent-config/commit/a1cb83e86648774cbbce7bc089640438a99626b5))
393
- * **registries:** register the new command generator and its output root ([2e57080](https://github.com/event4u-app/agent-config/commit/2e570802e170ff7ccd97476902b4dcdff8aac570))
394
- * **mcp:** price tool schemas per transport and stop shipping stub schemas ([040c8be](https://github.com/event4u-app/agent-config/commit/040c8bee1d3a7a02ec1bde7409c98e2f38881d4a))
395
- * **deps:** bump the npm-production group with 4 updates ([2795154](https://github.com/event4u-app/agent-config/commit/27951548d89bb575b8d08bffc2269a55f6e9f414))
396
- * **gates:** stop a check_ script from mutating a tracked report on every run ([d478b7a](https://github.com/event4u-app/agent-config/commit/d478b7a0f45373e9dd7f49b6427f93e101c77bea))
397
- * **condense:** wire thin-mode instead of throwing on it ([092e535](https://github.com/event4u-app/agent-config/commit/092e5354440dbc114e059a008139168e29e8eb42))
398
- * **docs:** drop the roadmap path from the branch-protection contract ([6927770](https://github.com/event4u-app/agent-config/commit/69277700fd91cf538cfb243700efcd748054dec7))
399
- * **gates:** repair five gates that were scanning a deleted root ([e89c1b7](https://github.com/event4u-app/agent-config/commit/e89c1b733a61bd6cd722c86488ee7f727e1e64f1))
400
- * **ci:** make ci-strict a superset of ci by construction ([10908cf](https://github.com/event4u-app/agent-config/commit/10908cf31919e615bb727a86b892cdfbcc38ca58))
401
- * **ci:** reconcile the required-check matrix with what is actually enforced ([9b6b016](https://github.com/event4u-app/agent-config/commit/9b6b016343a63d80db8d549b194b93200ad55798))
402
- * **ci:** satisfy actionlint on the newly-linted workflow and explain the plumbing failure ([f1e3518](https://github.com/event4u-app/agent-config/commit/f1e351811ac6ff53c80692ea94eee56fa30e4434))
403
- * **gates:** repair the last dead scan root and pin the exit contract on a fixture ([683d493](https://github.com/event4u-app/agent-config/commit/683d493ec5bed63b1ac023064ed7b4da2016f066))
404
- * **gates:** close four first-match-wins collisions over the repo's own conventions ([7dcc6f0](https://github.com/event4u-app/agent-config/commit/7dcc6f0f1cfc3e3cd8ba3b57f549b910cee931b4))
405
- * **release:** ratchet existing legacy roots and stop the lockfile drift ([3bba94e](https://github.com/event4u-app/agent-config/commit/3bba94e2e479f93d8a8bf27e191b8a6accccaace))
406
- * **ci:** run the release-gated checks on the PR that causes them ([7d25422](https://github.com/event4u-app/agent-config/commit/7d2542289748c8a768258389718e1870dbe67df9))
407
- * **gates:** repair thirteen dead scan roots so the gates read real artefacts ([47bb0f0](https://github.com/event4u-app/agent-config/commit/47bb0f099c248d9ab1669c589158bb8908b275db))
355
+ * **gates:** stop claiming a blocking floor the advisory window does not have ([f2c6971](https://github.com/event4u-app/agent-config/commit/f2c6971913d19afe14523d460df996aa8d2adf82))
356
+ * **metrics:** create the metrics dir before appending an outcome ([4931eda](https://github.com/event4u-app/agent-config/commit/4931eda2dd968e365b7666856353d63e14f61dfe))
357
+ * **gates:** slug comes from git, not the CI branch env ([a8b04e1](https://github.com/event4u-app/agent-config/commit/a8b04e14dfdafdfffdd38f4966a6f04f60c175ac))
358
+ * **settings:** planning section defaults, so omitting it is legal ([4bd8813](https://github.com/event4u-app/agent-config/commit/4bd881354fdce7f053ce4b1135a650d11ab71898))
359
+ * **gates:** cwd decides, never an inherited GIT_DIR ([022f381](https://github.com/event4u-app/agent-config/commit/022f3819b17d3c80afbbad4b8aa30ce0f05dc5da))
360
+ * **gates:** honest-null no longer suppresses the risk-table checks ([65fe441](https://github.com/event4u-app/agent-config/commit/65fe4418126751d2833156b5debfa17fba2d17b5))
361
+ * **gates:** pin the diff bytes; malformed-row reporting; shared row split ([e023ac7](https://github.com/event4u-app/agent-config/commit/e023ac70df800380214dd7ade34ae266f842ae03))
362
+ * **ci:** full history for the plan-governance gates ([323ab06](https://github.com/event4u-app/agent-config/commit/323ab068eb8f70348478127768b54273a582dc8c))
363
+ * **metrics:** annotate helper exits on EOF instead of hanging ([6fd7fa9](https://github.com/event4u-app/agent-config/commit/6fd7fa9296b50e90d120ed7575c6cdd5c2a554f7))
364
+ * **gates:** exclude the mandated metrics path from the review scope ([cc82999](https://github.com/event4u-app/agent-config/commit/cc82999ceb937ef58543415c9abe45b1eb073eb7))
365
+ * **gates:** escape-aware markdown row split; scanned on every exit path ([05b4d44](https://github.com/event4u-app/agent-config/commit/05b4d44f4edffe90c305f1aa9f34ced8543c7002))
366
+ * **gates:** close the eight script findings of round 2 — two were fail-open ([8a2bf76](https://github.com/event4u-app/agent-config/commit/8a2bf767be47c081a0f94bd5f2dd69b45cce2e28))
367
+ * **ci,pr:** no-fetch base sha, in-script artefact selection, scope-hash re-use (R2 round-2 findings 1,3,5) ([f9102d7](https://github.com/event4u-app/agent-config/commit/f9102d7bea877822b1d82f8a1650083fab4919b0))
368
+ * **gates:** contract §2.0/§2.6, dispatcher scope binding, precise dead-scope trigger ([cd52b53](https://github.com/event4u-app/agent-config/commit/cd52b53458d18ec9f3ad2e7e1f65067b118a2a5d))
369
+ * **bundle,roadmaps:** drop worktree path leak; R1 adoption + corrected claims (R2 findings 3,6,7) ([54e60db](https://github.com/event4u-app/agent-config/commit/54e60dbf814614c27ce94232b8c63f0893816849))
370
+ * **ci:** verify every review artefact, block on dead scope (R2 findings 2,8,9) ([962699d](https://github.com/event4u-app/agent-config/commit/962699d5108ca12219ecf18c1c9e19e068b210b9))
371
+ * **gates:** bind R2 to a review-scope hash, not a head sha (R2 findings 1,2,4,5,10,11) ([8b4ec9f](https://github.com/event4u-app/agent-config/commit/8b4ec9f75b09eaac913271e6e8dd8bd365c72371))
372
+ * **lint:** repoint the fe-design abstraction-threshold pin to its reference file ([428bbd2](https://github.com/event4u-app/agent-config/commit/428bbd2513afe15a59600752244edd72b30a74b8))
373
+ * **lint:** escape the NUL key separator in lint_trigger_collisions ([e359256](https://github.com/event4u-app/agent-config/commit/e359256e2498719afc508625c3c46cd3f93ff155))
374
+ * **skills:** keep required sections in existing-ui-audit's body ([b3cc0ad](https://github.com/event4u-app/agent-config/commit/b3cc0ada669c2011de9c64623680ca4664552123))
375
+ * **config:** surgical schema + budget edits instead of whole-file JSON rewrites ([2e1b377](https://github.com/event4u-app/agent-config/commit/2e1b3776edd2c960d0c9170bee60648875acf055))
376
+ * **router:** unknown tier value fails compilation instead of silent tier-2 downgrade ([02960bf](https://github.com/event4u-app/agent-config/commit/02960bf5e8fab4c11aafaad29b5f4b5cde52ccd2))
408
377
 
409
378
  ### Documentation
410
379
 
411
- * **roadmap:** road-to-tested-routing complete — 37/37, archived ([9a0fed9](https://github.com/event4u-app/agent-config/commit/9a0fed9c8809d68706ea0b16a0ba920414fcd087))
412
- * **adr:** ADR-212 — declarative routing with a quantified resolver reopen ([9c6fbff](https://github.com/event4u-app/agent-config/commit/9c6fbfff23f11a0df6d24b3a55a931350f0f7097))
413
- * **roadmap:** road-to-tested-routing — council-locked plan, phases 1/2/6 progress ([5a04b3a](https://github.com/event4u-app/agent-config/commit/5a04b3aa013d43f9e0105169bf20e5bcce366363))
414
- * **roadmap:** close and archive road-to-hook-latency-repair ([3c0af7e](https://github.com/event4u-app/agent-config/commit/3c0af7e384badd218a4712caf93a1279dc972022))
415
- * **claims:** hook-dispatch-latency claim pinned to the real path ([fc31783](https://github.com/event4u-app/agent-config/commit/fc31783d672e1599041ed3bfa789ba4cbb94c765))
416
- * **adr:** renumber the harvest-freeze record 206 -> 210 (numbers 206-209 landed on main via #1123) ([bce530d](https://github.com/event4u-app/agent-config/commit/bce530dd5685932bdbf319369eea1f050f1feeac))
417
- * **roadmap:** pull Codex into agent-handoff v2 scope ([eb15183](https://github.com/event4u-app/agent-config/commit/eb15183e249fec1ed51e07b52785d3f8614e56fd))
418
- * **roadmap:** re-audit the parked feedback-sweep items against ADR-206 ([6216751](https://github.com/event4u-app/agent-config/commit/6216751849726b6738c04c31c5af8c8759494e8f))
419
- * **adr:** canonicalize the harvest freeze as ADR-206 with amended resume conditions ([7ebbe0e](https://github.com/event4u-app/agent-config/commit/7ebbe0e414321b2c4d57b3e0c5b5b7480db4cae0))
420
- * **roadmap:** plan the agent-handoff v2 resume-style overhaul ([62895b1](https://github.com/event4u-app/agent-config/commit/62895b1bccd9fa65f24e3a78f40e91602b47070c))
421
- * **roadmap:** reword tier-value tokens so check_references stops reading them as rule names ([5bc8124](https://github.com/event4u-app/agent-config/commit/5bc81249c94dd39a0271311206d85546d64bd318))
422
- * **roadmap:** land the three feedback-sweep repair roadmaps + dashboard ([beb0560](https://github.com/event4u-app/agent-config/commit/beb0560e9b49760f696dbd127ccec6c259f57228))
423
- * **roadmap:** park the four freeze-gated feedback-sweep proposals in later/ ([e669f0f](https://github.com/event4u-app/agent-config/commit/e669f0f01424d921fa798ad69ad7c20763d040b2))
424
- * **roadmap:** close road-to-renewal-leverage with its findings ([bcc85d0](https://github.com/event4u-app/agent-config/commit/bcc85d0c593b46d83e9455139937b73061ca64b4))
425
- * **roadmap-management:** name the awaiting-evidence signal ([e008f19](https://github.com/event4u-app/agent-config/commit/e008f191ddc2eeaa18931259e11c852ec6e101c6))
426
- * **worktree:** encode the seeding allow/deny list in the creation flow ([6743690](https://github.com/event4u-app/agent-config/commit/6743690f226242a2fed6d4a45195202342fd2878))
427
- * **roadmap:** pre-register the resolver spike, park it, and archive Foundation ([0e49f83](https://github.com/event4u-app/agent-config/commit/0e49f83d013a242c94baf320b13249ac3f496942))
428
- * **roadmap:** record Phase 2 with both figures, and the two honest misses ([8de0e6c](https://github.com/event4u-app/agent-config/commit/8de0e6c088b9f6d7fde94815dc2fe235c211815a))
429
- * **roadmap:** record the umbrella-runner spike result — import-safety GO, timing LOSS ([0551a7c](https://github.com/event4u-app/agent-config/commit/0551a7cce2b312cf3d018967aa8e606f0f2ecda2))
430
- * **roadmap:** decline CI build-artifact sharing on measurement, record the Phase 2 token baseline ([fa244c1](https://github.com/event4u-app/agent-config/commit/fa244c1a8878696ab2398ca6279ad9544b1269b1))
431
- * **roadmap:** close Foundation P1 required-checks, ci-strict, dependabot and baseline steps ([cbc1217](https://github.com/event4u-app/agent-config/commit/cbc12170722ad3a5d5e091f290d263fff9adad96))
432
- * **roadmap:** close the phases of road-to-gates-that-can-fail ([a6af14f](https://github.com/event4u-app/agent-config/commit/a6af14ff088e5836bc20f769e67a820e267defc6))
380
+ * **review:** binding R2 honest-null for the merge scope ([6c6fc15](https://github.com/event4u-app/agent-config/commit/6c6fc15a983c8c685820c5e5eac2dd21ba0ab228))
381
+ * **contracts:** label the terminal-before-rename rule enforced_by: none ([911505e](https://github.com/event4u-app/agent-config/commit/911505e0207ab5715894e931b45f87a065b22b8a))
382
+ * **contracts:** name the superseded-round convention (§2.7) ([ba202e2](https://github.com/event4u-app/agent-config/commit/ba202e2dd261ea3d194799946a2dc1924024bef3))
383
+ * **review:** close round-4 findings — 4 fixed, 0 open ([7bb24d8](https://github.com/event4u-app/agent-config/commit/7bb24d879ecc9f512f9429e3c78a88959c7b6c50))
384
+ * **gates:** withdraw three claims that had no mechanism behind them ([2529f53](https://github.com/event4u-app/agent-config/commit/2529f53e91c68a670667ea2fa2971cc262241404))
385
+ * **review:** close round-3 findings — 11 fixed, 1 accepted-risk ([9603e29](https://github.com/event4u-app/agent-config/commit/9603e29f610dc1566bf1931ea6daf784e9f31725))
386
+ * **review:** R2 round-3 findings — 12 open ([7a88b1a](https://github.com/event4u-app/agent-config/commit/7a88b1af2d2283ae1b3c8866d689241a4af9dda3))
387
+ * **review:** close round-2 findings — 11 fixed ([6f0934c](https://github.com/event4u-app/agent-config/commit/6f0934c561223a8dd4424fa109b4c8b5701d38a7))
388
+ * **review:** close round-1 findings — 10 fixed, 1 accepted-risk ([6bc2a26](https://github.com/event4u-app/agent-config/commit/6bc2a2673daf568d39de86710625108a84a03e13))
389
+ * **review:** R2 completion-review findings — fresh blind reviewer, 11 open ([e7d0dca](https://github.com/event4u-app/agent-config/commit/e7d0dca86111dfe52247539630f11ff21f4c3c67))
390
+ * **contracts:** add plan-review-gates v1 — R1/R2 grammars, C-to-R1 handoff, exit codes ([aa69cdd](https://github.com/event4u-app/agent-config/commit/aa69cdd39adb4e7c12f95881a2243a785093c734))
391
+ * **roadmap:** adjudicate advisory-gate blocker findings for plan-governance-gates ([b35b2aa](https://github.com/event4u-app/agent-config/commit/b35b2aa088e6d0236d9a28107f7726d76b9530f8))
392
+ * **roadmap:** inline council trace per no-roadmap-references council clause ([c355c3b](https://github.com/event4u-app/agent-config/commit/c355c3b00b3a8ce031b7017bf12734908e1fd485))
393
+ * **roadmap:** add plan-governance-gates roadmap (confidence gate + review gates) ([810caa7](https://github.com/event4u-app/agent-config/commit/810caa74529577049bc55778fe82eb5936ce79e1))
394
+ * **evidence:** pre-register the UI-skill progressive-disclosure threshold ([0914f65](https://github.com/event4u-app/agent-config/commit/0914f65b24dd76f50ba073f375d6b0cb7d69ff2b))
395
+ * **roadmap:** flip census + collision-lint checkboxes (landed in b71e36c31) ([f49df8b](https://github.com/event4u-app/agent-config/commit/f49df8bf766462e1a60dae3f41d2974a81bee814))
396
+ * **roadmap:** routing-correctness — Phases 1, 2 and 4 landed ([010d733](https://github.com/event4u-app/agent-config/commit/010d73359ced4c9700ef4f40cc948216b0d6a070))
397
+ * **commands:** routing-audit surface on /rule-compliance-audit ([61ade3f](https://github.com/event4u-app/agent-config/commit/61ade3f78f8f5956ec66413890b692055fef319d))
398
+
399
+ ### Refactoring
400
+
401
+ * **skills:** compress the gate additions under the size threshold ([015ec87](https://github.com/event4u-app/agent-config/commit/015ec8752dc6b5bc4e0e5c9098fc34b044bc9c61))
402
+ * **skills:** progressive disclosure for the four heavy UI reference skills ([709f010](https://github.com/event4u-app/agent-config/commit/709f0105a2b305f7c1b53ad561ceb964c5616157))
403
+ * **rules:** merge brand pair, disjoin disclaimer/finance and secret/security triggers ([71c3527](https://github.com/event4u-app/agent-config/commit/71c35279a774a42557f91d9f769ad0bdcf2386ba))
433
404
 
434
405
  ### Tests
435
406
 
436
- * **orchestration:** dispatch-decision matrices + council-path routing invariants ([8d48180](https://github.com/event4u-app/agent-config/commit/8d48180064458dd5a75559465a20ea5424f1264c))
437
- * **portability:** build fixtures under the live scan root ([e02dd0b](https://github.com/event4u-app/agent-config/commit/e02dd0bfaf0f2b8aaaaccec9d1a82409fa2bdb98))
438
- * **gates:** exercise the two happy-path-only gates through their real entry point ([365da5b](https://github.com/event4u-app/agent-config/commit/365da5b9fcc887864d344b94301836ce5cef928e))
439
-
440
- ### Build
441
-
442
- * **install:** refresh the committed installer output for the rule-packs change ([8bcccc7](https://github.com/event4u-app/agent-config/commit/8bcccc7ef575420f9074307cee33721d80c6df7a))
407
+ * **gates:** cover the annotation helper and the R2 artifact parser ([72eabe0](https://github.com/event4u-app/agent-config/commit/72eabe01025f6a399ff0818b173d17c8546ed737))
443
408
 
444
409
  ### Chores
445
410
 
446
- * **deps-dev:** bump @types/node from 20.19.41 to 26.1.2 ([fd0d6f6](https://github.com/event4u-app/agent-config/commit/fd0d6f6493f78b31454ebd202008f3fbd46a3da9))
447
- * **deps-dev:** bump @inquirer/prompts from 7.10.1 to 8.5.2 ([7dfea4b](https://github.com/event4u-app/agent-config/commit/7dfea4bbc26e8b04d2c73bc9cbe4d813dc64c724))
448
- * **deps-dev:** bump typescript in /deploy/telemetry-worker ([fdbff3f](https://github.com/event4u-app/agent-config/commit/fdbff3f293b3eaa6a6b1d8d5c7ba8e0769a2daab))
449
- * **deps:** bump marocchino/sticky-pull-request-comment from 2 to 3 ([7d4d9cb](https://github.com/event4u-app/agent-config/commit/7d4d9cb81bd95faf851cf16bb06c87d2df871d9b))
450
- * **deps-dev:** bump tsx from 4.22.3 to 4.23.1 in deploy/telemetry-worker ([ea561ea](https://github.com/event4u-app/agent-config/commit/ea561ea964fda776c02df3a280aaa1d9c188eac6))
451
- * **deps-dev:** bump the npm-development group across 1 directory with 7 updates ([fe05c7f](https://github.com/event4u-app/agent-config/commit/fe05c7fe02b2d9dca60887fe23b92b1d5fe3024e))
452
- * **deps:** bump actions/upload-artifact from 4 to 7 ([a2a2423](https://github.com/event4u-app/agent-config/commit/a2a2423776510471a17ebf0631fad2cba9cd50d1))
453
- * **roadmap:** close and archive road-to-renewal-adr-hygiene ([ab432b0](https://github.com/event4u-app/agent-config/commit/ab432b0247b21a21b6961de20ca1ef1584c96367))
454
- * **adr:** regenerate the index for the hygiene batch ([61dc94f](https://github.com/event4u-app/agent-config/commit/61dc94f98f48ef508986050728d04c47125c6718))
455
- * **docs:** sweep non-gate .agent-src.uncondensed references to the src/ truth ([9d987a0](https://github.com/event4u-app/agent-config/commit/9d987a086363b933505d6290fc111f9763f8810d))
456
- * **roadmap:** default dashboard_regen_cadence to every_5_steps ([d40f676](https://github.com/event4u-app/agent-config/commit/d40f676326f034affe8a0c15e4835bc4a6143fe2))
457
- * **deps:** bump the site group in /site with 3 updates ([ddb92d4](https://github.com/event4u-app/agent-config/commit/ddb92d4399ee35137b8c0a557345f6104b069915))
458
- * **deps:** bump actions/configure-pages from 5 to 6 ([c2fe6bc](https://github.com/event4u-app/agent-config/commit/c2fe6bc26f123bfd0eaf8a88d5ba2c9cb70cf6bc))
459
- * **deps:** bump actions/upload-pages-artifact from 3 to 5 ([6998b77](https://github.com/event4u-app/agent-config/commit/6998b77bbddfd85f8346c751f0a8679f13129dcc))
460
- * **deps:** schedule dependency updates via dependabot ([d9e4a8d](https://github.com/event4u-app/agent-config/commit/d9e4a8de95ef246311b85a85fd5189892ce21161))
461
- * **reports:** refresh the derived reports the consistency gate regenerates ([ee73e3f](https://github.com/event4u-app/agent-config/commit/ee73e3feab59cf2df2a1f6b1bc35ff6e1e032359))
462
-
463
- Tests: 10580 (+524 since 9.14.0)
411
+ * **index:** regenerate artefact index, catalog and command flows ([71aacc6](https://github.com/event4u-app/agent-config/commit/71aacc6f675def21773d13f3fd927bcdc2519a99))
412
+ * **tests:** drop unused import in the fix-lane test ([b18e77f](https://github.com/event4u-app/agent-config/commit/b18e77f78c426493ba3ff6a2ee8dc9c9ce068253))
413
+
414
+ Tests: 10944 (+252 since 9.17.0)
464
415
 
465
416
  # Era: pre-4.0.0 — archived
466
417
 
@@ -438,6 +438,11 @@ If the user wants any other follow-up, they invoke it explicitly. The
438
438
  polishing).
439
439
  - [`ask-when-uncertain`](../../rules/ask-when-uncertain.md) — the
440
440
  one-question-per-turn Iron Law this command is built on.
441
+ - [`plan-confidence-gate`](../../contexts/execution/plan-confidence-gate.md)
442
+ — Gate C: the plan-authoring surfaces (`/roadmap:create`,
443
+ `roadmap-writing`, `/feature:plan`, `/feature:roadmap`) auto-route into
444
+ this interview when their confidence check falls below 95%. Reverse
445
+ pointer only — nothing in this command changes when the gate fires.
441
446
  - Inspiration: `mattpocock/skills/skills/productivity/grill-me/SKILL.md`
442
447
  — same spirit (relentless decision-tree interview, one question at a
443
448
  time, recommended answer per question), restructured to our command
@@ -0,0 +1,46 @@
1
+ {
2
+ "command": "rule-compliance-audit",
3
+ "intent": "Audit rule trigger quality and replay the router matcher over recent prompts (routing audit)",
4
+ "cases": [
5
+ {
6
+ "prompt": "audit my rules for weak triggers",
7
+ "expected": "rule-compliance-audit"
8
+ },
9
+ {
10
+ "prompt": "run a routing audit — which rules fired on my last prompts",
11
+ "expected": "rule-compliance-audit"
12
+ },
13
+ {
14
+ "prompt": "check whether the rule routing actually matches what I type",
15
+ "expected": "rule-compliance-audit"
16
+ },
17
+ {
18
+ "prompt": "why did no rule activate on my last message — audit the triggers",
19
+ "expected": "rule-compliance-audit"
20
+ },
21
+ {
22
+ "prompt": "find rules whose descriptions overlap or never activate",
23
+ "expected": "rule-compliance-audit"
24
+ },
25
+ {
26
+ "prompt": "fix the failing CI on this branch",
27
+ "expected": "fix"
28
+ },
29
+ {
30
+ "prompt": "review the changes on this branch before I push",
31
+ "expected": "review-changes"
32
+ },
33
+ {
34
+ "prompt": "run a full project health check",
35
+ "expected": "project-health"
36
+ },
37
+ {
38
+ "prompt": "estimate this ticket for me",
39
+ "expected": "estimate-ticket"
40
+ },
41
+ {
42
+ "prompt": "commit these changes in logical chunks",
43
+ "expected": "commit"
44
+ }
45
+ ]
46
+ }
@@ -21,6 +21,19 @@ packs:
21
21
  # /feature plan
22
22
  ## Instructions
23
23
 
24
+ ### 0. Confidence gate (Gate C)
25
+
26
+ Before gathering, run the plan-confidence gate per
27
+ [`plan-confidence-gate`](../../contexts/execution/plan-confidence-gate.md):
28
+ read `planning.challenge_on_create` (missing = `true`), do the codebase
29
+ lookup, and assess the four 95%-conditions — **seed = the provided
30
+ description** (when none was provided, step 1's ask supplies it first).
31
+ Confident → single marker line, continue with step 1. Uncertain → route
32
+ into `/challenge-me vision` (inline degrade protocol without the command);
33
+ the pitch feeds steps 5c–6, and the C→R1 handoff state is written so the
34
+ risk-review step re-asks nothing. Explicit user bypass wins for the turn
35
+ and is counted.
36
+
24
37
  ### 1. Gather the idea
25
38
 
26
39
  If the user provided a description, use it. Otherwise ask:
@@ -259,6 +272,13 @@ If picked **2** → continue.
259
272
  - Set the `Module` field in the feature doc accordingly.
260
273
  - Set status to `📋 Planned`.
261
274
  - If Jira tickets were provided, add them to the `Jira` field and reference them in the feature doc.
275
+ - **Risk review (Gate R1)** — before saving, add a `## Risk Register`
276
+ section per [`plan-review-gates § 1`](../../../docs/contracts/plan-review-gates.md):
277
+ read the C→R1 handoff state from step 0 if present (resolved branches
278
+ seed the risks — never re-ask them), rank the highest product and
279
+ implementation risks descending, one mitigation per row, each row
280
+ anchored to a section of this document. No material risks → the exact
281
+ honest-null grammar. Self-review suffices.
262
282
 
263
283
  **Ask for the filename:**
264
284
  ```
@@ -55,6 +55,15 @@ Stop.
55
55
  - Read the roadmap template at `.augment/templates/roadmaps.md` for the structure.
56
56
  - Research the codebase for affected areas mentioned in the feature.
57
57
 
58
+ **Confidence gate (Gate C)** — after reading the feature plan, run
59
+ [`plan-confidence-gate`](../../contexts/execution/plan-confidence-gate.md)
60
+ with the **feature document as seed** (`planning.challenge_on_create`,
61
+ missing = `true`). All four 95%-conditions hold → single marker line,
62
+ continue. A gap that would change the phases or acceptance criteria →
63
+ `/challenge-me vision` interview (or inline degrade protocol) **before**
64
+ proposing roadmaps; the C→R1 handoff state is written so the risk-review
65
+ step re-asks nothing. Explicit user bypass wins for the turn and is counted.
66
+
58
67
  Determine how many roadmaps are needed:
59
68
 
60
69
  - **Single roadmap:** Small/medium features that fit in one document.
@@ -143,6 +152,16 @@ If any planned name already exists anywhere under the namespace,
143
152
  Re-run the check after a rename. Never silently overwrite, never
144
153
  auto-suffix without the user's pick.
145
154
 
155
+ **Risk review (Gate R1)** — every generated roadmap that is saved ready
156
+ (non-draft) carries a `## Risk Register` per
157
+ [`plan-review-gates § 1`](../../../docs/contracts/plan-review-gates.md):
158
+ read the C→R1 handoff state from step 2 if present (resolved branches
159
+ seed the risks — never re-ask them), rank the highest product and
160
+ implementation risks descending, one mitigation per row, each row
161
+ anchored to a phase/step of that roadmap. No material risks → the exact
162
+ honest-null grammar. `lint_plan_risk_register` enforces this at
163
+ pre-push + CI; drafts are exempt until flipped to ready.
164
+
146
165
  ### 5. Link roadmaps in the feature plan
147
166
 
148
167
  Update the feature file's `## Roadmaps` section:
@@ -139,6 +139,35 @@ completion is read from the checkbox counts.
139
139
  in the working tree.
140
140
  - **It reported nothing → proceed.** No completed roadmap in this branch.
141
141
 
142
+ ### 1d. Completion review (Gate R2) — after the sweep, before the PR
143
+
144
+ Fixed sequence: (1) the § 1c archival sweep runs first, (2) the R2 review
145
+ runs on the post-archival state (the findings artifact references
146
+ post-archival paths), (3) the PR is created only with a valid findings
147
+ artifact, honest-null, or skip declaration **for the current review-scope
148
+ hash** per
149
+ [`plan-review-gates § 2`](../../../docs/contracts/plan-review-gates.md).
150
+
151
+ - A completion-review artifact from the roadmap-completion event
152
+ (`agents/evidence/reviews/<slug>.findings.md`) is re-used when its
153
+ `scope:` equals the current review-scope hash — one artifact covers
154
+ both triggers. **Never compare the `diff:` sha**: it is provenance only
155
+ (§ 2.1), and § 2.0 proves that comparison unsatisfiable — committing the
156
+ artifact moves HEAD, and CI checks out a synthetic merge commit.
157
+ Otherwise dispatch a fresh review via `dispatch_r2_reviewer` (fresh
158
+ subagent, no implementation context, findings BEFORE fixes; every
159
+ finding ends `fixed` / `accepted-risk` / `deferred`).
160
+ - **Review last.** Any content commit after the review changes the scope
161
+ hash and invalidates the artifact — freeze the content, then review.
162
+ Artifacts from earlier rounds stay as audit trail under a name outside
163
+ the `*.findings.md` glob; the final round is the binding one.
164
+ - Docs-only / plan-only diffs take the explicit skip declaration, never
165
+ a silent skip.
166
+ - The agent-side check here is advisory; `check_completion_review` at
167
+ pre-push + CI is the enforcing layer (CI authoritative; advisory mode
168
+ during the Stage-A baseline window). `planning.completion_review:
169
+ false` is the settings escape hatch.
170
+
142
171
  ### 2. Generate PR content
143
172
 
144
173
  Run `/create-pr:description-only` Steps 1–4 to generate the PR title and body.