@event4u/agent-config 9.22.0 → 9.23.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 (85) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +69 -256
  3. package/README.md +1 -1
  4. package/dist/agent-src/commands/optimize/deep.md +13 -0
  5. package/dist/agent-src/contexts/execution/cheap-question-mechanics.md +12 -2
  6. package/dist/agent-src/contexts/execution/mandated-lines.md +180 -0
  7. package/dist/agent-src/rules/context-hygiene.md +17 -0
  8. package/dist/agent-src/rules/downstream-changes.md +26 -0
  9. package/dist/agent-src/rules/think-before-action.md +25 -0
  10. package/dist/agent-src/rules/token-budget-discipline.md +46 -3
  11. package/dist/agent-src/rules/token-efficiency.md +13 -0
  12. package/dist/agent-src/rules/ui-audit-gate.md +33 -2
  13. package/dist/agent-src/skills/adversarial-review/SKILL.md +18 -4
  14. package/dist/agent-src/skills/decision-review/SKILL.md +49 -0
  15. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +5 -1
  16. package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +16 -0
  17. package/dist/agent-src/skills/judge-synthesis/SKILL.md +14 -1
  18. package/dist/agent-src/skills/rule-writing/SKILL.md +33 -0
  19. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +31 -0
  20. package/dist/agent-src/skills/skill-reviewer/SKILL.md +1 -1
  21. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  22. package/dist/cli/registry.js +1 -0
  23. package/dist/cli/registry.js.map +1 -1
  24. package/dist/cli-delegate/chunk-DVRS2KVR.js +4602 -0
  25. package/dist/cli-delegate/{chunk-ELMFOQPW.js → chunk-SJQMJI7M.js} +8 -4597
  26. package/dist/cli-delegate/cmd_export.js +2 -1
  27. package/dist/cli-delegate/cmd_prune.js +2 -1
  28. package/dist/cli-delegate/cmd_settings_migrate.js +2 -1
  29. package/dist/cli-delegate/cmd_settings_set.js +3370 -0
  30. package/dist/cli-delegate/cmd_sync.js +2 -1
  31. package/dist/cli-delegate/cmd_uninstall.js +2 -1
  32. package/dist/cli-delegate/cmd_validate.js +2 -1
  33. package/dist/discovery/deprecation-report.md +1 -1
  34. package/dist/discovery/discovery-manifest.json +17 -17
  35. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  36. package/dist/discovery/discovery-manifest.summary.md +1 -1
  37. package/dist/discovery/orphan-report.md +1 -1
  38. package/dist/discovery/packs.json +2 -2
  39. package/dist/discovery/trust-report.md +1 -1
  40. package/dist/discovery/workspaces.json +2 -2
  41. package/dist/hooks/dispatch.js +79 -1
  42. package/dist/mcp/registry-manifest.json +2 -2
  43. package/dist/mcp/server.json +2 -2
  44. package/dist/scripts/condense.js +47 -2
  45. package/dist/scripts/condense.js.map +1 -1
  46. package/dist/server/routes/settings.js +82 -0
  47. package/dist/server/routes/settings.js.map +1 -1
  48. package/dist/shared/settingsClasses.js +191 -0
  49. package/dist/shared/settingsClasses.js.map +1 -0
  50. package/docs/contracts/settings-classes.md +342 -0
  51. package/docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +23 -2
  52. package/docs/guidelines/agent-infra/false-green.md +187 -0
  53. package/docs/guidelines/agent-infra/gate-authoring.md +177 -0
  54. package/package.json +3 -1
  55. package/src/config/ci-local-parity.yml +12 -0
  56. package/src/config/evaluator-budgets.json +4 -4
  57. package/src/config/gate-coverage.yml +54 -12
  58. package/src/config/gate-violation-baselines.json +6 -0
  59. package/src/config/pack-size-budget.json +4 -3
  60. package/src/scripts/_cli/cmd_settings_set.ts +509 -0
  61. package/src/scripts/_dispatch.bash +16 -0
  62. package/src/scripts/_lib/gate_ledger.ts +295 -0
  63. package/src/scripts/_lib/gate_result.ts +101 -0
  64. package/src/scripts/_lib/gate_self_test.ts +129 -0
  65. package/src/scripts/_lib/measured_render.ts +97 -0
  66. package/src/scripts/_lib/ratchet_base_ref.ts +373 -0
  67. package/src/scripts/check_gate_completeness.ts +244 -0
  68. package/src/scripts/check_gate_coverage.ts +35 -6
  69. package/src/scripts/check_references.ts +125 -15
  70. package/src/scripts/check_review_dispositions.ts +14 -1
  71. package/src/scripts/check_suppression_hygiene.ts +503 -0
  72. package/src/scripts/condense.ts +47 -2
  73. package/src/scripts/hook_manifest.yaml +23 -0
  74. package/src/scripts/hooks/dispatch_hook.ts +65 -1
  75. package/src/scripts/hooks/host_semantics.ts +140 -0
  76. package/src/scripts/lint_framework_leakage.ts +147 -15
  77. package/src/scripts/lint_mandated_lines.ts +339 -0
  78. package/src/scripts/lint_roadmap_complexity.ts +102 -11
  79. package/src/scripts/lint_roadmap_family_cap.ts +191 -0
  80. package/src/scripts/lint_settings_classes.ts +397 -0
  81. package/src/scripts/lint_token_budget_discipline.ts +109 -1
  82. package/src/scripts/report_imperative_density.ts +229 -0
  83. package/src/scripts/verify_physical_move.ts +10 -1
  84. package/src/server/io/yamlIO.ts +173 -0
  85. package/src/shared/settingsClasses.ts +235 -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.22.0",
9
+ "version": "9.23.0",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
package/CHANGELOG.md CHANGED
@@ -287,290 +287,103 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
287
287
  > keeps the active era under the 250-line drift cap enforced by
288
288
  > `tests/test_changelog_eras.py`.
289
289
 
290
- # Era: 9.18.x — current
290
+ # Era: pre-9.23.0 — archived
291
291
 
292
- > Started at `9.18.0`. Full entries live inline below.
293
- > The drift test caps this era at 250 lines of entry body; growth past
294
- > that forces a new era split (`# Era: 9.19.x`, etc.) — see
295
- > [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
296
-
297
- ## [9.22.0](https://github.com/event4u-app/agent-config/compare/9.21.0...9.22.0) (2026-08-05)
298
-
299
- ### Release highlights
300
-
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. -->
302
- - **Behaviour changes:** _none_
303
- - **Default changes + migration:** _none_
304
- - **Security and correctness:** _none_
305
- - **Honest nulls:** _none_
306
- - **Known limitations:** _none_
307
-
308
- ### Features
309
-
310
- * **worktree:** classify every worktree safe/review/live in one pass ([ac42fa6](https://github.com/event4u-app/agent-config/commit/ac42fa6c041db0343b6363472541a2fdf3815c3c))
311
- * **bench:** report which arm the dropped pairs came from ([9230102](https://github.com/event4u-app/agent-config/commit/9230102868bd25a20aa2e30e35a9e57d45c0051c))
312
- * **bench:** fail the sweep on an unproven arm, a swapped model, or an overrun ([490a5e5](https://github.com/event4u-app/agent-config/commit/490a5e5995db3e2f49676d7df5a0db41bf8e3926))
313
- * **bench:** record which model actually answered each run ([5ea6b60](https://github.com/event4u-app/agent-config/commit/5ea6b60cb850e10299fe66c4c9e8aa0fd612772f))
314
- * **bench:** the activation audit the invalid-nulls incident needed ([2630c48](https://github.com/event4u-app/agent-config/commit/2630c481b834b192c974cf828b72b2b3a3304b81))
315
-
316
- ### Bug Fixes
317
-
318
- * **bench:** validate the sweep cap before probing for the host CLI ([4aee1d8](https://github.com/event4u-app/agent-config/commit/4aee1d8aa02598db80d0cad819fe85618558dc53))
319
-
320
- ### Documentation
321
-
322
- * **roadmap:** promote worktree hygiene on the fired disk trigger, record the baseline ([78d5b7a](https://github.com/event4u-app/agent-config/commit/78d5b7ab2691b7cb75e094fa724e5a3eaa5d2f06))
323
- * **worktree:** route whole-checkout sweeps through the inventory mode ([3ba4c55](https://github.com/event4u-app/agent-config/commit/3ba4c556a7eee4256be3378bd67aa962b884dede))
324
- * **roadmap:** name why Measurement A cannot run, and correct my own scope ruling ([460dfb0](https://github.com/event4u-app/agent-config/commit/460dfb0c5e2d96e8deb831638684f501522661d2))
325
- * **bench:** withdraw the interactions degradation rule — measured, then falsified ([56d3fe3](https://github.com/event4u-app/agent-config/commit/56d3fe3b1433c69419a7d118c567ea2581a0a0d2))
326
- * **roadmap:** close the UI-track prerequisites and name the real blocker ([e8fa469](https://github.com/event4u-app/agent-config/commit/e8fa46953df5afacfb402a6d8468b44b72155191))
327
- * **bench:** pre-register the UI-track tier and lane measurements ([3a8b601](https://github.com/event4u-app/agent-config/commit/3a8b6017965bc9eed189c1971f28a6212b9dc3d3))
328
- * **roadmap:** record prerequisite work that moves no checkbox ([ad3bd4e](https://github.com/event4u-app/agent-config/commit/ad3bd4e9903e81ef38e647a6cbddacbd95f4f282))
329
-
330
- Tests: 11091 (+57 since 9.21.0)
331
-
332
- ## [9.21.0](https://github.com/event4u-app/agent-config/compare/9.20.0...9.21.0) (2026-08-05)
333
-
334
- ### Release highlights
335
-
336
- <!-- 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. -->
337
- - **Behaviour changes:** _none_
338
- - **Default changes + migration:** _none_
339
- - **Security and correctness:** _none_
340
- - **Honest nulls:** _none_
341
- - **Known limitations:** _none_
342
-
343
- ### Features
344
-
345
- * **gates:** take the unhardened-gate count to 0 and delete the ratchet entry ([e31690c](https://github.com/event4u-app/agent-config/commit/e31690c7330bb90ed813cc25ead2268da2971ea1))
346
- * **gates:** repoint lint_skill_tools at the .ts corpus and harden it ([694a729](https://github.com/event4u-app/agent-config/commit/694a729359e674953881a996af6079123e91a98d))
347
- * **gates:** fold bite-sized granularity into lint_roadmap_complexity ([08d9075](https://github.com/event4u-app/agent-config/commit/08d9075c978a6a76a250a74fe6377ad3b2c2d8a2))
348
- * **gates:** assert the scan scope of the last 57 gates — 61 → 4 ([5244b21](https://github.com/event4u-app/agent-config/commit/5244b21ea664db73a3a07c8ce717a2b43c4ba157))
349
- * **gates:** assert the scan scope of 54 more gates — 115 → 61 ([835fd54](https://github.com/event4u-app/agent-config/commit/835fd545649287574c9d74e3280302ca429b8d20))
350
- * **gates:** assert the scan scope of 48 tree-walking gates ([9cc51a2](https://github.com/event4u-app/agent-config/commit/9cc51a20c8d3d3c9f133d0bb8a94a322b90ee235))
351
- * **gates:** assert the scan scope of 28 more corpus gates ([f4e79e4](https://github.com/event4u-app/agent-config/commit/f4e79e4a8f7c90e27353693f42d27c1a70bbdac4))
352
- * **gates:** classify the corpusless gates by what they read ([c7a851b](https://github.com/event4u-app/agent-config/commit/c7a851becd7a77ff85c7c443c59ca45b91bc7ef3))
353
- * **gates:** assert the scan scope of five corpus gates ([7433f72](https://github.com/event4u-app/agent-config/commit/7433f72482c639bf88d01e58e093d7c57a608960))
354
- * **gates:** derive the conversion work-list instead of reading 189 gates ([b845e4d](https://github.com/event4u-app/agent-config/commit/b845e4df66e90b1d43a42f9fa55bb41457b4a1b5))
355
- * **scan-scope:** pair the scope assertion with the published count ([b8b2840](https://github.com/event4u-app/agent-config/commit/b8b2840d17466f0be5047fbaa98ed67751a93a70))
356
-
357
- ### Bug Fixes
358
-
359
- * **gates:** read piped stdin whole — a gate that only broke on big diffs ([0e3e9cd](https://github.com/event4u-app/agent-config/commit/0e3e9cd4ca91c01c00d8c611a96db72b936952d8))
360
- * **gates:** clear the two preflight blockers the repairs introduced ([2683395](https://github.com/event4u-app/agent-config/commit/268339595ca2dd34b14a1a63abd6362fde7868fb))
361
- * **gates:** repair two dead scan roots the widened population revealed ([5b41c55](https://github.com/event4u-app/agent-config/commit/5b41c556bc245c4eb9da7506b4de449a3cde07b0))
362
- * **gates:** one definition of "a gate", and an honest denominator ([9f65efe](https://github.com/event4u-app/agent-config/commit/9f65efea7882d4c79f2e5f4c8fcefb0b521bcdde))
363
- * **gate-coverage:** an unenforced `scanned:` line hardens nothing ([2873c91](https://github.com/event4u-app/agent-config/commit/2873c919d0245ca76a18f2315c768b9a9cb1e1ca))
364
-
365
- ### Documentation
366
-
367
- * **roadmap:** close and archive road-to-gate-hardening-adoption ([d1497c5](https://github.com/event4u-app/agent-config/commit/d1497c5fc12f5475b683f27b42953cf2f448def8))
368
- * **roadmap:** file the four-gate blocker where the dashboard reads it ([7e0c8e9](https://github.com/event4u-app/agent-config/commit/7e0c8e9e369c29a7574c99f1ec453835e1ae44e9))
369
- * **roadmap:** close Phase 1 — the mechanically-safe conversions ([877859a](https://github.com/event4u-app/agent-config/commit/877859ac99e70a79630b201a025a474df156fe55))
370
- * **roadmap:** record the assert-first conversion contract ([613d478](https://github.com/event4u-app/agent-config/commit/613d47878252edfe8c5d225d73c1bed3fe6fb753))
371
-
372
- ### Refactoring
373
-
374
- * **gates:** re-home the ADR-095 workspace boundary to ESLint ([2bc2483](https://github.com/event4u-app/agent-config/commit/2bc24833149cff33573a84c9dfbc973b5b3b5fe3))
375
- * **hooks:** rename verify_before_complete_hook off the gate prefix ([f57d969](https://github.com/event4u-app/agent-config/commit/f57d969c6c54e591060054f217a12d816d121116))
376
-
377
- ### Chores
292
+ > All entries before `9.23.0` live in
293
+ > [`docs/archive/CHANGELOG-pre-9.23.0.md`](docs/archive/CHANGELOG-pre-9.23.0.md).
294
+ > The archive is read-only; git tags remain the canonical
295
+ > source for what shipped. Splitting them out of the main file
296
+ > keeps the active era under the 250-line drift cap enforced by
297
+ > `tests/test_changelog_eras.py`.
378
298
 
379
- * **tests:** drop a dead helper the lint scope only now reaches ([9b49d24](https://github.com/event4u-app/agent-config/commit/9b49d240140c9b6af28969c752f4757bf5580d98))
299
+ # Era: 9.23.x — current
380
300
 
381
- Tests: 11034 (+39 since 9.20.0)
301
+ > Started at `9.23.0`. Full entries live inline below.
302
+ > The drift test caps this era at 250 lines of entry body; growth past
303
+ > that forces a new era split (`# Era: 9.24.x`, etc.) — see
304
+ > [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
382
305
 
383
- ## [9.20.0](https://github.com/event4u-app/agent-config/compare/9.19.0...9.20.0) (2026-08-04)
306
+ ## [9.23.0](https://github.com/event4u-app/agent-config/compare/9.22.0...9.23.0) (2026-08-06)
384
307
 
385
308
  ### Release highlights
386
309
 
387
310
  <!-- 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. -->
388
- - **Behaviour changes:** _none_
389
- - **Default changes + migration:** _auto-derived, rewrite before merge:_ commits naming a default, migration or migrate in 14dc053, bb362a0.
311
+ - **Behaviour changes:** _auto-derived, rewrite before merge:_ rule/schema diffs, breaking commits or removed public surface in 3d1ed67, e5e4c48, a7ecd7b, ff146a0, 927ff8a, 420e833 +1 more.
312
+ - **Default changes + migration:** _auto-derived, rewrite before merge:_ commits naming a default, migration or migrate in 9da7146, c1d9093.
390
313
  - **Security and correctness:** _none_
391
- - **Honest nulls:** _auto-derived, rewrite before merge:_ commits carrying an honest-null marker in ba77e6a.
314
+ - **Honest nulls:** _auto-derived, rewrite before merge:_ commits carrying an honest-null marker in c4a4920, 9242d41, 927ff8a.
392
315
  - **Known limitations:** _none_
393
316
 
394
317
  ### Features
395
318
 
396
- * **gates:** read the archived round records nothing was reading ([89eea71](https://github.com/event4u-app/agent-config/commit/89eea712b89048a032dfccf8a3bdd41f565adacc))
319
+ * **review:** severity is carried, confidence is its own field, density stays advisory ([9242d41](https://github.com/event4u-app/agent-config/commit/9242d416e77518f6d1b593184ae0123f3b0ecb34))
320
+ * **rules:** land the conflict audit, close its findings, archive the roadmap ([a7ecd7b](https://github.com/event4u-app/agent-config/commit/a7ecd7b73b99166baaee3838c4e8a5f7668bf580))
321
+ * **authoring:** require the primary bias, and lead rich artifacts with their obligation ([ff146a0](https://github.com/event4u-app/agent-config/commit/ff146a0f11f89c4f093d80aaf705915eb918c7bb))
322
+ * **rules:** a removal disposition, and the classification that stops "another rule" ([484596e](https://github.com/event4u-app/agent-config/commit/484596e1dc41e003c70678ec301ef4f801939736))
323
+ * **rules:** mandated lines at the decision point, and the two rules they need ([927ff8a](https://github.com/event4u-app/agent-config/commit/927ff8a83eb17a8d41f234dbfabe3d9caedcf066))
324
+ * **budget:** measure the rich-class band, lower it to what the corpus uses, gate it ([420e833](https://github.com/event4u-app/agent-config/commit/420e83368298029b4e01a412897ec1f0cec4286e))
325
+ * **settings:** add settings:set and fence the GUI write route ([3ffb705](https://github.com/event4u-app/agent-config/commit/3ffb7057d3ab4e963f3b09d49fbb8de57c6956ae))
326
+ * **settings:** fence every settings key behind an A/B/C class ([b09e84e](https://github.com/event4u-app/agent-config/commit/b09e84e9ce540ac6e4215538bef731c87ad7c91b))
327
+ * **gates:** self-test mode, estate-level result handling, and one equality-without-validity fix ([f7a022a](https://github.com/event4u-app/agent-config/commit/f7a022a7d039e03c5240eca94f7f9306ef5ed456))
328
+ * **gates:** make shrink-only mechanical against the base ref ([3e7eb9d](https://github.com/event4u-app/agent-config/commit/3e7eb9d9d35fe79d0655c51ef86ffabbe1f0a1b8))
329
+ * **gates:** ratchet ledger adoption, and stop rendering unmeasured categories ([678ba92](https://github.com/event4u-app/agent-config/commit/678ba92b862d6041c1e2af8d91a85252d53d687b))
330
+ * **gates:** adopt the ledger in three gates whose scan roots have failed before ([c04b9a5](https://github.com/event4u-app/agent-config/commit/c04b9a5785d4d5a02da317b44cdebc02bc83e3b4))
331
+ * **gates:** add a per-target completeness ledger ([fea6d7b](https://github.com/event4u-app/agent-config/commit/fea6d7b5181ba7815931cf83833946f1c405979f))
332
+ * **gate:** enforce the roadmap concurrency cap mechanically ([8add433](https://github.com/event4u-app/agent-config/commit/8add433b93d68191ffd44dab5c8f4f68102f1c17))
397
333
 
398
334
  ### Bug Fixes
399
335
 
400
- * **gates:** stop the remediation text pointing at the closed hole ([2dc9e0d](https://github.com/event4u-app/agent-config/commit/2dc9e0d91262864237e50268d8ea54dcce761a62))
401
- * **gates:** rows are live wherever they appear — close the fence fail-open ([ba77e6a](https://github.com/event4u-app/agent-config/commit/ba77e6a6f4cc5c31b9de4741ee30ccc41e126df7))
336
+ * **authoring:** revert the two kernel-rule routing edges, state the gap instead ([3d1ed67](https://github.com/event4u-app/agent-config/commit/3d1ed67c3fd6ac8277f32d4c4d6bac1b274427e8))
337
+ * **authoring:** close all fourteen R2 findings ([e5e4c48](https://github.com/event4u-app/agent-config/commit/e5e4c48d6b993854fc41b681ea4c585e6b265f40))
338
+ * **review:** six real pre-filter instances — the keyword grep had missed all of them ([c4a4920](https://github.com/event4u-app/agent-config/commit/c4a49204dfefae74e518f284ee11f04fff511e63))
339
+ * **rules:** declare the 3 authority collisions, decline the gate ([943ad06](https://github.com/event4u-app/agent-config/commit/943ad067d68b3dfa31d15865d2c936cad2281767))
340
+ * **rules:** declare the two kernel-vs-kernel conflicts and fix the halt list ([c4ab544](https://github.com/event4u-app/agent-config/commit/c4ab5449b0c50c691e47793d247b980feec1b21b))
341
+ * **rules:** make ui-audit-gate satisfiable, invert the read cap, exempt file sets ([b47752d](https://github.com/event4u-app/agent-config/commit/b47752de370607ed1d691fdbc22ff10af3dd806d))
342
+ * **projection:** stop injecting ADR-004 manual rules into per-tool trees ([5d40a6c](https://github.com/event4u-app/agent-config/commit/5d40a6c184883844dff2a23154959accfef1022e))
343
+ * **cli:** route and document settings:set in the dispatcher ([0d2c6c5](https://github.com/event4u-app/agent-config/commit/0d2c6c58cbc9769e34e2c0c5d289c6de7c690501))
344
+ * **pack:** ship yamlIO with the writer, re-baseline the packed-size budget ([87b6fc1](https://github.com/event4u-app/agent-config/commit/87b6fc1328d90d140ffbbf31afc9ebb5452e00e2))
345
+ * **settings:** close all ten R2 findings ([84e4596](https://github.com/event4u-app/agent-config/commit/84e4596c7d42afbe3d26ee2e2b2e36836b754c97))
346
+ * **settings:** satisfy exactOptionalPropertyTypes in the settings:set argv parser ([a03d21b](https://github.com/event4u-app/agent-config/commit/a03d21b5960c0e13b910c01d86cb5c4f99a4ad77))
347
+ * **hooks:** forward the concern's own reason on a block; fix stale exit assertion ([b64cd4b](https://github.com/event4u-app/agent-config/commit/b64cd4bf2a4569c3fd3ea5fae85d9095bbf0d33f))
348
+ * **hooks:** translate verdicts to per-host native semantics ([f39698c](https://github.com/event4u-app/agent-config/commit/f39698cd8e626756c8add6a045e4e66b9b00751d))
402
349
 
403
350
  ### Documentation
404
351
 
405
- * **evidence:** close the blind-pass dispositions and correct a claim I made ([0398238](https://github.com/event4u-app/agent-config/commit/0398238d99f7451712e710204c86ab41f964de50))
406
- * **contracts:** 2.7 is enforced now, and says what it still does not check ([d0b3650](https://github.com/event4u-app/agent-config/commit/d0b365035dc314183dcb0e353a09e3e2c5420284))
407
- * **roadmap:** pin-then-migrate ordering; drop the index for a round-record check ([bb362a0](https://github.com/event4u-app/agent-config/commit/bb362a0b64a5e16a156d238c1acadded44f229aa))
408
- * **roadmap:** record the council verdict on the fence grammar ([3e0deff](https://github.com/event4u-app/agent-config/commit/3e0deff6256050aa23fe952707ab88bf7bc9647e))
409
- * **review:** give the blind-pass findings terminal statuses and a carrier ([667b81e](https://github.com/event4u-app/agent-config/commit/667b81e9fa44d892095a7b057a6407196aa429bf))
410
-
411
- ### Tests
412
-
413
- * **gates:** pin every fence arrangement before the grammar migration ([14dc053](https://github.com/event4u-app/agent-config/commit/14dc053d51ac1e932ce4deeb50ffb2e07737bd84))
352
+ * **roadmap:** record what landed and what the remaining phases actually cost ([15df545](https://github.com/event4u-app/agent-config/commit/15df545937dcf88e910240b7af45b2dfc6d464e9))
353
+ * **roadmap:** close both blockers and Phase 1, record the migration inventory ([9da7146](https://github.com/event4u-app/agent-config/commit/9da7146dbaea153bb4e2eae31069066663378dcb))
354
+ * **roadmap:** close P0.3-P1.6, record the two round-2 reversals ([cc67d73](https://github.com/event4u-app/agent-config/commit/cc67d73b287f0ce91f4c0690df824b670c4c604e))
355
+ * **roadmap:** file the absent-is-not-default blocker, close Phase 2 ([c1d9093](https://github.com/event4u-app/agent-config/commit/c1d90934b05168cba6ac3667d92d7a20602735b2))
356
+ * **roadmap:** record what the prerequisite re-read caught, close Phase 1 ([ba9b0f0](https://github.com/event4u-app/agent-config/commit/ba9b0f0f0e148857a8574faa2e512b64c099d2e4))
357
+ * **roadmap:** record the remote-CI verdict on the gate-integrity roadmap ([4e52e53](https://github.com/event4u-app/agent-config/commit/4e52e530e1c5adeab421af6f351d4d0f86bbcc55))
358
+ * regenerate the artefact index and catalog for the two new guidelines ([619d283](https://github.com/event4u-app/agent-config/commit/619d28377bc6180948336e98ad4eec58efd41659))
359
+ * bump the guideline count for the two new gate guidelines ([e5b3331](https://github.com/event4u-app/agent-config/commit/e5b333174587acf3218811e7f049b401a2436e1d))
360
+ * **roadmap:** close 33 of 35 gate-integrity steps, file the kernel blocker ([818b637](https://github.com/event4u-app/agent-config/commit/818b6379ab91a4f739cb1fe7a11d499582f3039b))
361
+ * **gates:** the authoring path, the false-green catalogue, and the CI delta ([554b9a9](https://github.com/event4u-app/agent-config/commit/554b9a992fb77e532344aadd298234cd63804278))
362
+ * **roadmap:** add Risk Register to road-to-rule-coherence ([4641101](https://github.com/event4u-app/agent-config/commit/4641101a9f234fd32beacecce01426b4f77a8d73))
363
+ * **roadmap:** add road-to-rule-coherence with measured scope cuts ([55a3957](https://github.com/event4u-app/agent-config/commit/55a395783dbbcfdba6346be9312fd04dec285f5c))
364
+ * **roadmap:** unblock everything the adoption gate was holding ([8878a88](https://github.com/event4u-app/agent-config/commit/8878a88b02422d5b93d820968a53c161a795ca64))
365
+ * **adr:** strike external adoption as a gate, re-anchor restraint to capacity ([e98221e](https://github.com/event4u-app/agent-config/commit/e98221e7de7b7bddf0655823ebcc5994bb9c4da6))
366
+ * **roadmap:** open two verification roadmaps, park the rest by arm ([d415dad](https://github.com/event4u-app/agent-config/commit/d415dada95c2ad7a89327831462870cc1fed8fd8))
367
+ * **adr:** lift the harvest freeze for verification infrastructure only ([11df060](https://github.com/event4u-app/agent-config/commit/11df0606810508f4fcfec404dc67cd975a92ef91))
368
+ * **sweep:** record the 40-source skill-ecosystem deep-dive ([45c55a2](https://github.com/event4u-app/agent-config/commit/45c55a222b61430ed39a572a4ff083cd383b81c7))
414
369
 
415
370
  ### CI
416
371
 
417
- * **gates:** wire check_review_dispositions with a trippable floor ([9b03190](https://github.com/event4u-app/agent-config/commit/9b0319032494345fdcaad40ae79dbe3ea95f6fc8))
418
-
419
- Tests: 10995 (+23 since 9.19.0)
420
-
421
- ## [9.19.0](https://github.com/event4u-app/agent-config/compare/9.18.1...9.19.0) (2026-08-04)
422
-
423
- ### Release highlights
424
-
425
- <!-- 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. -->
426
- - **Behaviour changes:** _none_
427
- - **Default changes + migration:** _none_
428
- - **Security and correctness:** _none_
429
- - **Honest nulls:** _auto-derived, rewrite before merge:_ commits carrying an honest-null marker in 1c744c3.
430
- - **Known limitations:** _none_
431
-
432
- ### Features
433
-
434
- * **gate-coverage:** ratchet the unhardened-gate count, armed at 189 and able to fail ([5d1564f](https://github.com/event4u-app/agent-config/commit/5d1564fe0dcbeb340c97f33a29245a54c43a8591))
435
- * **gate-coverage:** publish the asserted count from five gates, 17 -> 22 covered ([d228aa5](https://github.com/event4u-app/agent-config/commit/d228aa5cb5019dffe11c0e4606644630450d0816))
436
-
437
- ### Bug Fixes
438
-
439
- * **roadmap:** repair the archived roadmap's own relative link ([ac85f3a](https://github.com/event4u-app/agent-config/commit/ac85f3a0fdefbbed74c50cc7049c5ffc72b408a8))
440
- * **census:** make the scan-scope census reproducible, and regenerate it ([1e539ee](https://github.com/event4u-app/agent-config/commit/1e539ee96efc1807663342e084c2a0e666eaf9bc))
441
- * **lint_handoffs:** stop the CI invocation resolving --quiet as the scan root ([6994781](https://github.com/event4u-app/agent-config/commit/6994781875f8d1d2feab6012ac7704e04232447e))
442
- * **gates:** name the fence hole, drop the dead sort ([16dace4](https://github.com/event4u-app/agent-config/commit/16dace44b7d468aaba95abf16ec79d65d9862db8))
443
-
444
- ### Documentation
445
-
446
- * **roadmap:** close road-to-gates-that-can-fail, re-charter the adoption gap ([34ff10c](https://github.com/event4u-app/agent-config/commit/34ff10c0748ea7e1c4cfdb99f423c35bba1c9a98))
447
- * **claims:** register the exit-2 rate alarm in the Stage-A protocol ([4653841](https://github.com/event4u-app/agent-config/commit/46538415f7a59993aef7575f32cc84582a03126f))
448
- * **review:** unsteered post-merge blind pass — 5 findings, 1 critical ([1c744c3](https://github.com/event4u-app/agent-config/commit/1c744c395f8d1bb727be946f459ce5a498320b5d))
372
+ * register the three new gates, and close the CI-local parity delta ([2c709c3](https://github.com/event4u-app/agent-config/commit/2c709c3f1069a29c7a5f8a1cd1829b1377a40c34))
449
373
 
450
374
  ### Chores
451
375
 
452
- * **census:** regenerate after merging origin/main ([239f141](https://github.com/event4u-app/agent-config/commit/239f1413b950455efbe379976ea34a67ff02d380))
453
-
454
- Tests: 10972 (+9 since 9.18.1)
455
-
456
- ## [9.18.1](https://github.com/event4u-app/agent-config/compare/9.18.0...9.18.1) (2026-08-04)
457
-
458
- ### Release highlights
459
-
460
- <!-- 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. -->
461
- - **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).
462
- - **Default changes + migration:** _none_
463
- - **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.
464
- - **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).
465
- - **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.
466
-
467
- ### Bug Fixes
468
-
469
- * **release:** derive the head in --dry-run too, so the preview matches ([2f23d6b](https://github.com/event4u-app/agent-config/commit/2f23d6bb963577af5741951962b48e556e5a3e97))
470
- * **release:** stop the generator writing a `_none_` the gate rejects ([8fe60e9](https://github.com/event4u-app/agent-config/commit/8fe60e9aba5192c07f8e33bc6ce1747a77e82922))
471
- * **gates:** a bare fence never delimits a region — close the fourth fail-open route ([9937ad9](https://github.com/event4u-app/agent-config/commit/9937ad9b75f60bffd4ad42f2a830589bd4be7e5c))
472
- * **gates:** an unterminated fence must not swallow the rest of a findings artefact ([55dc01d](https://github.com/event4u-app/agent-config/commit/55dc01d1fd3c8dbf44dd04fa7b3f41e3f4bc39bb))
473
- * **gates:** IaC and extensionless build files are code; a row is exactly six cells ([6c5f0f5](https://github.com/event4u-app/agent-config/commit/6c5f0f5999b8a421cf765269a8da8b780465dc98))
474
-
475
- ### Documentation
376
+ * **sync:** regenerate the projection and tool trees ([f0ebea5](https://github.com/event4u-app/agent-config/commit/f0ebea51b823bd50e979ccf6ba66660bec3eef83))
377
+ * **roadmap:** regenerate dashboard after merging main ([4e3810a](https://github.com/event4u-app/agent-config/commit/4e3810a4ce364df32f22eead045a4526cf98be40))
476
378
 
477
- * **review:** close round 8 — 1 fixed, 4 deferred, 0 critical ([70bb89f](https://github.com/event4u-app/agent-config/commit/70bb89f2820f4c5a5a26cd25f5db2daa53b08e5e))
478
- * **review:** close round 7 — 2 fixed, 3 deferred, 0 critical/high ([39f071f](https://github.com/event4u-app/agent-config/commit/39f071fad58dc2c5cb9e6ec87e8e37b79085db2f))
479
- * **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))
480
- * **review:** round-7 R2 findings — 2 medium, 3 low, 0 critical/high ([2bd3eda](https://github.com/event4u-app/agent-config/commit/2bd3edad82ff69700f62c4d16c93f38a484e5e08))
481
- * **review:** close round 6 — 4 fixed, 3 deferred, 0 critical/high ([7a0f7b3](https://github.com/event4u-app/agent-config/commit/7a0f7b33aed30921f2404ae1955a8e5aa76dde9b))
482
- * **gates:** two claims corrected to match the code (round-6 lows) ([0f5d43a](https://github.com/event4u-app/agent-config/commit/0f5d43a17be245b034287b0f486839fb156f8b86))
483
- * **review:** restore the real binding review — 6c6fc15a9's honest-null was false ([d56c0be](https://github.com/event4u-app/agent-config/commit/d56c0be63f6782183737ab50256401ab52a1f38f))
484
-
485
- Tests: 10963 (+19 since 9.18.0)
486
-
487
- ## [9.18.0](https://github.com/event4u-app/agent-config/compare/9.17.0...9.18.0) (2026-08-04)
488
-
489
- ### Release highlights
490
-
491
- <!-- 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. -->
492
- - **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).
493
- - **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.
494
- - **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).
495
- - **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).
496
- - **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).
497
-
498
- ### Features
499
-
500
- * **ci:** local mirror for the R2 manifest re-derivation (parity) ([3e014b2](https://github.com/event4u-app/agent-config/commit/3e014b2196a1caf8ebfc404dd492cb500acf5126))
501
- * **metrics:** pre-register Stage-A protocol; close + archive the roadmap ([01323d1](https://github.com/event4u-app/agent-config/commit/01323d17b03e01610c526cf34cd5134002899518))
502
- * **ci:** enforce R1 + advisory R2 at pre-push and CI, register gate coverage ([21810f2](https://github.com/event4u-app/agent-config/commit/21810f2bd443310591bbaa7c83d54133477ab902))
503
- * **gates:** wire C/R1/R2 into the authoring and delivery surfaces ([3622d09](https://github.com/event4u-app/agent-config/commit/3622d09d4154e97fb2736cf5f08dc8eb2f7e0ba1))
504
- * **gates:** R1/R2 validators, R2 reviewer dispatcher, R1 annotation helper ([37389c9](https://github.com/event4u-app/agent-config/commit/37389c9ef8ae7420eaaab98484b53f362d34168b))
505
- * **settings:** add planning gate keys (Gate C/R1/R2) to template + Zod schema ([74afbf9](https://github.com/event4u-app/agent-config/commit/74afbf973bd34d8572f63b8e47ae29ebeefc43b1))
506
- * **work-engine:** ui-fix intent — fix-lane enters the chain at apply ([f29cc7c](https://github.com/event4u-app/agent-config/commit/f29cc7cb33b6247da197348d6e0a8e74ef74617d))
507
- * **work-engine:** trivial-lane recall 0.60 -> 1.00 against the pre-registered corpus ([07a32d4](https://github.com/event4u-app/agent-config/commit/07a32d4985cd89cba46474d7ffabff52ccd1b497))
508
- * **eval:** pre-register the ui-triviality golden corpus (40 tasks, council-labelled) ([f71a41c](https://github.com/event4u-app/agent-config/commit/f71a41c821f81cd0bb78bc427e2eba47b0ac0fd4))
509
- * **lint:** trigger-collision disposition gate + reproducible census ([b71e36c](https://github.com/event4u-app/agent-config/commit/b71e36c317385701d3b8577770130075c1b08754))
510
- * **routing:** one shared trigger matcher + route:explain / route:audit CLI ([e3af5ca](https://github.com/event4u-app/agent-config/commit/e3af5cacc496228794acf5a86fe799785ddbe19d))
511
-
512
- ### Bug Fixes
513
-
514
- * **gates:** stop claiming a blocking floor the advisory window does not have ([f2c6971](https://github.com/event4u-app/agent-config/commit/f2c6971913d19afe14523d460df996aa8d2adf82))
515
- * **metrics:** create the metrics dir before appending an outcome ([4931eda](https://github.com/event4u-app/agent-config/commit/4931eda2dd968e365b7666856353d63e14f61dfe))
516
- * **gates:** slug comes from git, not the CI branch env ([a8b04e1](https://github.com/event4u-app/agent-config/commit/a8b04e14dfdafdfffdd38f4966a6f04f60c175ac))
517
- * **settings:** planning section defaults, so omitting it is legal ([4bd8813](https://github.com/event4u-app/agent-config/commit/4bd881354fdce7f053ce4b1135a650d11ab71898))
518
- * **gates:** cwd decides, never an inherited GIT_DIR ([022f381](https://github.com/event4u-app/agent-config/commit/022f3819b17d3c80afbbad4b8aa30ce0f05dc5da))
519
- * **gates:** honest-null no longer suppresses the risk-table checks ([65fe441](https://github.com/event4u-app/agent-config/commit/65fe4418126751d2833156b5debfa17fba2d17b5))
520
- * **gates:** pin the diff bytes; malformed-row reporting; shared row split ([e023ac7](https://github.com/event4u-app/agent-config/commit/e023ac70df800380214dd7ade34ae266f842ae03))
521
- * **ci:** full history for the plan-governance gates ([323ab06](https://github.com/event4u-app/agent-config/commit/323ab068eb8f70348478127768b54273a582dc8c))
522
- * **metrics:** annotate helper exits on EOF instead of hanging ([6fd7fa9](https://github.com/event4u-app/agent-config/commit/6fd7fa9296b50e90d120ed7575c6cdd5c2a554f7))
523
- * **gates:** exclude the mandated metrics path from the review scope ([cc82999](https://github.com/event4u-app/agent-config/commit/cc82999ceb937ef58543415c9abe45b1eb073eb7))
524
- * **gates:** escape-aware markdown row split; scanned on every exit path ([05b4d44](https://github.com/event4u-app/agent-config/commit/05b4d44f4edffe90c305f1aa9f34ced8543c7002))
525
- * **gates:** close the eight script findings of round 2 — two were fail-open ([8a2bf76](https://github.com/event4u-app/agent-config/commit/8a2bf767be47c081a0f94bd5f2dd69b45cce2e28))
526
- * **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))
527
- * **gates:** contract §2.0/§2.6, dispatcher scope binding, precise dead-scope trigger ([cd52b53](https://github.com/event4u-app/agent-config/commit/cd52b53458d18ec9f3ad2e7e1f65067b118a2a5d))
528
- * **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))
529
- * **ci:** verify every review artefact, block on dead scope (R2 findings 2,8,9) ([962699d](https://github.com/event4u-app/agent-config/commit/962699d5108ca12219ecf18c1c9e19e068b210b9))
530
- * **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))
531
- * **lint:** repoint the fe-design abstraction-threshold pin to its reference file ([428bbd2](https://github.com/event4u-app/agent-config/commit/428bbd2513afe15a59600752244edd72b30a74b8))
532
- * **lint:** escape the NUL key separator in lint_trigger_collisions ([e359256](https://github.com/event4u-app/agent-config/commit/e359256e2498719afc508625c3c46cd3f93ff155))
533
- * **skills:** keep required sections in existing-ui-audit's body ([b3cc0ad](https://github.com/event4u-app/agent-config/commit/b3cc0ada669c2011de9c64623680ca4664552123))
534
- * **config:** surgical schema + budget edits instead of whole-file JSON rewrites ([2e1b377](https://github.com/event4u-app/agent-config/commit/2e1b3776edd2c960d0c9170bee60648875acf055))
535
- * **router:** unknown tier value fails compilation instead of silent tier-2 downgrade ([02960bf](https://github.com/event4u-app/agent-config/commit/02960bf5e8fab4c11aafaad29b5f4b5cde52ccd2))
536
-
537
- ### Documentation
538
-
539
- * **review:** binding R2 honest-null for the merge scope ([6c6fc15](https://github.com/event4u-app/agent-config/commit/6c6fc15a983c8c685820c5e5eac2dd21ba0ab228))
540
- * **contracts:** label the terminal-before-rename rule enforced_by: none ([911505e](https://github.com/event4u-app/agent-config/commit/911505e0207ab5715894e931b45f87a065b22b8a))
541
- * **contracts:** name the superseded-round convention (§2.7) ([ba202e2](https://github.com/event4u-app/agent-config/commit/ba202e2dd261ea3d194799946a2dc1924024bef3))
542
- * **review:** close round-4 findings — 4 fixed, 0 open ([7bb24d8](https://github.com/event4u-app/agent-config/commit/7bb24d879ecc9f512f9429e3c78a88959c7b6c50))
543
- * **gates:** withdraw three claims that had no mechanism behind them ([2529f53](https://github.com/event4u-app/agent-config/commit/2529f53e91c68a670667ea2fa2971cc262241404))
544
- * **review:** close round-3 findings — 11 fixed, 1 accepted-risk ([9603e29](https://github.com/event4u-app/agent-config/commit/9603e29f610dc1566bf1931ea6daf784e9f31725))
545
- * **review:** R2 round-3 findings — 12 open ([7a88b1a](https://github.com/event4u-app/agent-config/commit/7a88b1af2d2283ae1b3c8866d689241a4af9dda3))
546
- * **review:** close round-2 findings — 11 fixed ([6f0934c](https://github.com/event4u-app/agent-config/commit/6f0934c561223a8dd4424fa109b4c8b5701d38a7))
547
- * **review:** close round-1 findings — 10 fixed, 1 accepted-risk ([6bc2a26](https://github.com/event4u-app/agent-config/commit/6bc2a2673daf568d39de86710625108a84a03e13))
548
- * **review:** R2 completion-review findings — fresh blind reviewer, 11 open ([e7d0dca](https://github.com/event4u-app/agent-config/commit/e7d0dca86111dfe52247539630f11ff21f4c3c67))
549
- * **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))
550
- * **roadmap:** adjudicate advisory-gate blocker findings for plan-governance-gates ([b35b2aa](https://github.com/event4u-app/agent-config/commit/b35b2aa088e6d0236d9a28107f7726d76b9530f8))
551
- * **roadmap:** inline council trace per no-roadmap-references council clause ([c355c3b](https://github.com/event4u-app/agent-config/commit/c355c3b00b3a8ce031b7017bf12734908e1fd485))
552
- * **roadmap:** add plan-governance-gates roadmap (confidence gate + review gates) ([810caa7](https://github.com/event4u-app/agent-config/commit/810caa74529577049bc55778fe82eb5936ce79e1))
553
- * **evidence:** pre-register the UI-skill progressive-disclosure threshold ([0914f65](https://github.com/event4u-app/agent-config/commit/0914f65b24dd76f50ba073f375d6b0cb7d69ff2b))
554
- * **roadmap:** flip census + collision-lint checkboxes (landed in b71e36c31) ([f49df8b](https://github.com/event4u-app/agent-config/commit/f49df8bf766462e1a60dae3f41d2974a81bee814))
555
- * **roadmap:** routing-correctness — Phases 1, 2 and 4 landed ([010d733](https://github.com/event4u-app/agent-config/commit/010d73359ced4c9700ef4f40cc948216b0d6a070))
556
- * **commands:** routing-audit surface on /rule-compliance-audit ([61ade3f](https://github.com/event4u-app/agent-config/commit/61ade3f78f8f5956ec66413890b692055fef319d))
557
-
558
- ### Refactoring
559
-
560
- * **skills:** compress the gate additions under the size threshold ([015ec87](https://github.com/event4u-app/agent-config/commit/015ec8752dc6b5bc4e0e5c9098fc34b044bc9c61))
561
- * **skills:** progressive disclosure for the four heavy UI reference skills ([709f010](https://github.com/event4u-app/agent-config/commit/709f0105a2b305f7c1b53ad561ceb964c5616157))
562
- * **rules:** merge brand pair, disjoin disclaimer/finance and secret/security triggers ([71c3527](https://github.com/event4u-app/agent-config/commit/71c35279a774a42557f91d9f769ad0bdcf2386ba))
563
-
564
- ### Tests
565
-
566
- * **gates:** cover the annotation helper and the R2 artifact parser ([72eabe0](https://github.com/event4u-app/agent-config/commit/72eabe01025f6a399ff0818b173d17c8546ed737))
567
-
568
- ### Chores
379
+ ### Other
569
380
 
570
- * **index:** regenerate artefact index, catalog and command flows ([71aacc6](https://github.com/event4u-app/agent-config/commit/71aacc6f675def21773d13f3fd927bcdc2519a99))
571
- * **tests:** drop unused import in the fix-lane test ([b18e77f](https://github.com/event4u-app/agent-config/commit/b18e77f78c426493ba3ff6a2ee8dc9c9ce068253))
381
+ * **authoring:** mark all fourteen findings fixed, drop the regenerable input ([f3d6e2a](https://github.com/event4u-app/agent-config/commit/f3d6e2a03eeca77adaac9b62f12d277d7d47b3a0))
382
+ * **authoring:** R2 completion review — 14 findings, all open ([703b8eb](https://github.com/event4u-app/agent-config/commit/703b8ebc5a5c55facfdc6cf468642eb0f03b2a71))
383
+ * **settings:** mark all ten findings fixed, drop the regenerable input ([0a96cca](https://github.com/event4u-app/agent-config/commit/0a96cca52a0116a4330ad51dbfe96b6269721d1b))
384
+ * **settings:** R2 completion review — 10 findings, all open ([36139ac](https://github.com/event4u-app/agent-config/commit/36139ac2f4d83b296222fd8f89db4c75d73c4f20))
572
385
 
573
- Tests: 10944 (+252 since 9.17.0)
386
+ Tests: 11299 (+208 since 9.22.0)
574
387
 
575
388
  # Era: pre-4.0.0 — archived
576
389
 
package/README.md CHANGED
@@ -4,7 +4,7 @@
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-288-orange?style=flat-square)](dist/agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-111-orange?style=flat-square)](dist/agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-193-orange?style=flat-square)](dist/agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-102-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/)
7
+ [![Skills](https://img.shields.io/badge/Skills-288-orange?style=flat-square)](dist/agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-111-orange?style=flat-square)](dist/agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-193-orange?style=flat-square)](dist/agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-104-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/)
8
8
 
9
9
  **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/)**.
10
10
 
@@ -200,6 +200,19 @@ description's changelog section, not a comment (`no-pr-progress-comments`).
200
200
  - Council artifacts under `agents/runtime/council/` (local-only, auto-pruned).
201
201
  - A one-paragraph verdict per refinement loop: what changed, what converged.
202
202
 
203
+ ## Removal is one of the outputs
204
+
205
+ An optimization pass that only ever adds is not an optimization pass. Every
206
+ refinement loop asks the removal question as deliberately as the addition one:
207
+ **is there an artifact here that should stop existing?**
208
+
209
+ The disposition and the six simplify signals are specified once, in
210
+ [`decision-review` § Removal is a disposition](../../skills/decision-review/SKILL.md);
211
+ this command applies them rather than restating them. The fork that matters
212
+ here: a rule the agent consistently fails to follow gets **structural
213
+ enforcement or deletion**, never a louder restatement — and non-adherence is the
214
+ trigger, not low frequency.
215
+
203
216
  ## Gotchas
204
217
 
205
218
  - Merge/deploy is where autonomy ends — Step 6 loop pushes go to the
@@ -37,8 +37,18 @@ The only halts named in the invoking command:
37
37
  - **Security-sensitive** — auth, secrets, tenancy, public endpoints (`security-sensitive-stop`).
38
38
  - **Scope out of roadmap** — work crosses the roadmap's stated bounds.
39
39
  - **Test / quality RED** — failure that cannot be auto-fixed.
40
-
41
- A clean edit-batch is not a halt condition — pick the next item.
40
+ - **Resume after a user interrupt** — the user interrupted with a new task, that
41
+ task is finished, and the question is whether to resume the *interrupted* one.
42
+ [`user-interrupt-priority`](../../rules/user-interrupt-priority.md) mandates
43
+ that ask and states it holds "regardless of `personal.autonomy`". Without this
44
+ halt the two rules contradict each other outright under a mandate — IL 4
45
+ forbids the ask, `user-interrupt-priority` requires it. Declared as a pair in
46
+ [`rule-interactions.yml`](../../../docs/contracts/rule-interactions.yml)
47
+ (`interrupt-x-no-cheap-questions`).
48
+
49
+ A clean edit-batch is not a halt condition — pick the next item. Neither is a
50
+ *task boundary the user themselves created*: the resume ask above is a decision
51
+ about which deliverable to work on, not a continuation prompt.
42
52
 
43
53
  ## Iron Law 5 — prereq examples (silent execution, never a question)
44
54