@event4u/agent-config 9.21.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 (93) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +69 -221
  3. package/README.md +1 -1
  4. package/dist/agent-src/commands/optimize/deep.md +13 -0
  5. package/dist/agent-src/commands/worktree/cleanup.md +17 -0
  6. package/dist/agent-src/commands/worktree/status.md +6 -0
  7. package/dist/agent-src/contexts/execution/cheap-question-mechanics.md +12 -2
  8. package/dist/agent-src/contexts/execution/mandated-lines.md +180 -0
  9. package/dist/agent-src/rules/context-hygiene.md +17 -0
  10. package/dist/agent-src/rules/downstream-changes.md +26 -0
  11. package/dist/agent-src/rules/think-before-action.md +25 -0
  12. package/dist/agent-src/rules/token-budget-discipline.md +46 -3
  13. package/dist/agent-src/rules/token-efficiency.md +13 -0
  14. package/dist/agent-src/rules/ui-audit-gate.md +33 -2
  15. package/dist/agent-src/skills/adversarial-review/SKILL.md +18 -4
  16. package/dist/agent-src/skills/decision-review/SKILL.md +49 -0
  17. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +5 -1
  18. package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +16 -0
  19. package/dist/agent-src/skills/judge-synthesis/SKILL.md +14 -1
  20. package/dist/agent-src/skills/rule-writing/SKILL.md +33 -0
  21. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +31 -0
  22. package/dist/agent-src/skills/skill-reviewer/SKILL.md +1 -1
  23. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +22 -0
  24. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  25. package/dist/cli/registry.js +1 -0
  26. package/dist/cli/registry.js.map +1 -1
  27. package/dist/cli-delegate/chunk-DVRS2KVR.js +4602 -0
  28. package/dist/cli-delegate/{chunk-ELMFOQPW.js → chunk-SJQMJI7M.js} +8 -4597
  29. package/dist/cli-delegate/cmd_export.js +2 -1
  30. package/dist/cli-delegate/cmd_prune.js +2 -1
  31. package/dist/cli-delegate/cmd_settings_migrate.js +2 -1
  32. package/dist/cli-delegate/cmd_settings_set.js +3370 -0
  33. package/dist/cli-delegate/cmd_sync.js +2 -1
  34. package/dist/cli-delegate/cmd_uninstall.js +2 -1
  35. package/dist/cli-delegate/cmd_validate.js +2 -1
  36. package/dist/discovery/deprecation-report.md +1 -1
  37. package/dist/discovery/discovery-manifest.json +20 -20
  38. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  39. package/dist/discovery/discovery-manifest.summary.md +1 -1
  40. package/dist/discovery/orphan-report.md +1 -1
  41. package/dist/discovery/packs.json +2 -2
  42. package/dist/discovery/trust-report.md +1 -1
  43. package/dist/discovery/workspaces.json +2 -2
  44. package/dist/hooks/dispatch.js +79 -1
  45. package/dist/mcp/registry-manifest.json +2 -2
  46. package/dist/mcp/server.json +2 -2
  47. package/dist/scripts/condense.js +47 -2
  48. package/dist/scripts/condense.js.map +1 -1
  49. package/dist/server/routes/settings.js +82 -0
  50. package/dist/server/routes/settings.js.map +1 -1
  51. package/dist/shared/settingsClasses.js +191 -0
  52. package/dist/shared/settingsClasses.js.map +1 -0
  53. package/docs/contracts/settings-classes.md +342 -0
  54. package/docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +23 -2
  55. package/docs/guidelines/agent-infra/false-green.md +187 -0
  56. package/docs/guidelines/agent-infra/gate-authoring.md +177 -0
  57. package/package.json +3 -1
  58. package/src/config/ci-local-parity.yml +12 -0
  59. package/src/config/evaluator-budgets.json +4 -4
  60. package/src/config/gate-coverage.yml +54 -12
  61. package/src/config/gate-violation-baselines.json +6 -0
  62. package/src/config/pack-size-budget.json +4 -3
  63. package/src/scripts/_cli/cmd_settings_set.ts +509 -0
  64. package/src/scripts/_dispatch.bash +16 -0
  65. package/src/scripts/_lib/bench_ab_activation.ts +368 -0
  66. package/src/scripts/_lib/gate_ledger.ts +295 -0
  67. package/src/scripts/_lib/gate_result.ts +101 -0
  68. package/src/scripts/_lib/gate_self_test.ts +129 -0
  69. package/src/scripts/_lib/measured_render.ts +97 -0
  70. package/src/scripts/_lib/ratchet_base_ref.ts +373 -0
  71. package/src/scripts/bench_ab_task_runner.ts +18 -0
  72. package/src/scripts/bench_ab_v2_run.ts +147 -6
  73. package/src/scripts/bench_ab_v2_stats.ts +74 -2
  74. package/src/scripts/check_gate_completeness.ts +244 -0
  75. package/src/scripts/check_gate_coverage.ts +35 -6
  76. package/src/scripts/check_references.ts +125 -15
  77. package/src/scripts/check_review_dispositions.ts +14 -1
  78. package/src/scripts/check_suppression_hygiene.ts +503 -0
  79. package/src/scripts/condense.ts +47 -2
  80. package/src/scripts/hook_manifest.yaml +23 -0
  81. package/src/scripts/hooks/dispatch_hook.ts +65 -1
  82. package/src/scripts/hooks/host_semantics.ts +140 -0
  83. package/src/scripts/lint_framework_leakage.ts +147 -15
  84. package/src/scripts/lint_mandated_lines.ts +339 -0
  85. package/src/scripts/lint_roadmap_complexity.ts +102 -11
  86. package/src/scripts/lint_roadmap_family_cap.ts +191 -0
  87. package/src/scripts/lint_settings_classes.ts +397 -0
  88. package/src/scripts/lint_token_budget_discipline.ts +109 -1
  89. package/src/scripts/report_imperative_density.ts +229 -0
  90. package/src/scripts/verify_physical_move.ts +10 -1
  91. package/src/scripts/worktree_cleanup_check.ts +319 -4
  92. package/src/server/io/yamlIO.ts +173 -0
  93. 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.21.0",
9
+ "version": "9.23.0",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
package/CHANGELOG.md CHANGED
@@ -287,255 +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.21.0](https://github.com/event4u-app/agent-config/compare/9.20.0...9.21.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
- * **gates:** take the unhardened-gate count to 0 and delete the ratchet entry ([e31690c](https://github.com/event4u-app/agent-config/commit/e31690c7330bb90ed813cc25ead2268da2971ea1))
311
- * **gates:** repoint lint_skill_tools at the .ts corpus and harden it ([694a729](https://github.com/event4u-app/agent-config/commit/694a729359e674953881a996af6079123e91a98d))
312
- * **gates:** fold bite-sized granularity into lint_roadmap_complexity ([08d9075](https://github.com/event4u-app/agent-config/commit/08d9075c978a6a76a250a74fe6377ad3b2c2d8a2))
313
- * **gates:** assert the scan scope of the last 57 gates — 61 → 4 ([5244b21](https://github.com/event4u-app/agent-config/commit/5244b21ea664db73a3a07c8ce717a2b43c4ba157))
314
- * **gates:** assert the scan scope of 54 more gates — 115 → 61 ([835fd54](https://github.com/event4u-app/agent-config/commit/835fd545649287574c9d74e3280302ca429b8d20))
315
- * **gates:** assert the scan scope of 48 tree-walking gates ([9cc51a2](https://github.com/event4u-app/agent-config/commit/9cc51a20c8d3d3c9f133d0bb8a94a322b90ee235))
316
- * **gates:** assert the scan scope of 28 more corpus gates ([f4e79e4](https://github.com/event4u-app/agent-config/commit/f4e79e4a8f7c90e27353693f42d27c1a70bbdac4))
317
- * **gates:** classify the corpusless gates by what they read ([c7a851b](https://github.com/event4u-app/agent-config/commit/c7a851becd7a77ff85c7c443c59ca45b91bc7ef3))
318
- * **gates:** assert the scan scope of five corpus gates ([7433f72](https://github.com/event4u-app/agent-config/commit/7433f72482c639bf88d01e58e093d7c57a608960))
319
- * **gates:** derive the conversion work-list instead of reading 189 gates ([b845e4d](https://github.com/event4u-app/agent-config/commit/b845e4df66e90b1d43a42f9fa55bb41457b4a1b5))
320
- * **scan-scope:** pair the scope assertion with the published count ([b8b2840](https://github.com/event4u-app/agent-config/commit/b8b2840d17466f0be5047fbaa98ed67751a93a70))
321
-
322
- ### Bug Fixes
323
-
324
- * **gates:** read piped stdin whole — a gate that only broke on big diffs ([0e3e9cd](https://github.com/event4u-app/agent-config/commit/0e3e9cd4ca91c01c00d8c611a96db72b936952d8))
325
- * **gates:** clear the two preflight blockers the repairs introduced ([2683395](https://github.com/event4u-app/agent-config/commit/268339595ca2dd34b14a1a63abd6362fde7868fb))
326
- * **gates:** repair two dead scan roots the widened population revealed ([5b41c55](https://github.com/event4u-app/agent-config/commit/5b41c556bc245c4eb9da7506b4de449a3cde07b0))
327
- * **gates:** one definition of "a gate", and an honest denominator ([9f65efe](https://github.com/event4u-app/agent-config/commit/9f65efea7882d4c79f2e5f4c8fcefb0b521bcdde))
328
- * **gate-coverage:** an unenforced `scanned:` line hardens nothing ([2873c91](https://github.com/event4u-app/agent-config/commit/2873c919d0245ca76a18f2315c768b9a9cb1e1ca))
329
-
330
- ### Documentation
331
-
332
- * **roadmap:** close and archive road-to-gate-hardening-adoption ([d1497c5](https://github.com/event4u-app/agent-config/commit/d1497c5fc12f5475b683f27b42953cf2f448def8))
333
- * **roadmap:** file the four-gate blocker where the dashboard reads it ([7e0c8e9](https://github.com/event4u-app/agent-config/commit/7e0c8e9e369c29a7574c99f1ec453835e1ae44e9))
334
- * **roadmap:** close Phase 1 — the mechanically-safe conversions ([877859a](https://github.com/event4u-app/agent-config/commit/877859ac99e70a79630b201a025a474df156fe55))
335
- * **roadmap:** record the assert-first conversion contract ([613d478](https://github.com/event4u-app/agent-config/commit/613d47878252edfe8c5d225d73c1bed3fe6fb753))
336
-
337
- ### Refactoring
338
-
339
- * **gates:** re-home the ADR-095 workspace boundary to ESLint ([2bc2483](https://github.com/event4u-app/agent-config/commit/2bc24833149cff33573a84c9dfbc973b5b3b5fe3))
340
- * **hooks:** rename verify_before_complete_hook off the gate prefix ([f57d969](https://github.com/event4u-app/agent-config/commit/f57d969c6c54e591060054f217a12d816d121116))
341
-
342
- ### 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`.
343
298
 
344
- * **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
345
300
 
346
- 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).
347
305
 
348
- ## [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)
349
307
 
350
308
  ### Release highlights
351
309
 
352
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. -->
353
- - **Behaviour changes:** _none_
354
- - **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.
355
313
  - **Security and correctness:** _none_
356
- - **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.
357
315
  - **Known limitations:** _none_
358
316
 
359
317
  ### Features
360
318
 
361
- * **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))
362
333
 
363
334
  ### Bug Fixes
364
335
 
365
- * **gates:** stop the remediation text pointing at the closed hole ([2dc9e0d](https://github.com/event4u-app/agent-config/commit/2dc9e0d91262864237e50268d8ea54dcce761a62))
366
- * **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))
367
349
 
368
350
  ### Documentation
369
351
 
370
- * **evidence:** close the blind-pass dispositions and correct a claim I made ([0398238](https://github.com/event4u-app/agent-config/commit/0398238d99f7451712e710204c86ab41f964de50))
371
- * **contracts:** 2.7 is enforced now, and says what it still does not check ([d0b3650](https://github.com/event4u-app/agent-config/commit/d0b365035dc314183dcb0e353a09e3e2c5420284))
372
- * **roadmap:** pin-then-migrate ordering; drop the index for a round-record check ([bb362a0](https://github.com/event4u-app/agent-config/commit/bb362a0b64a5e16a156d238c1acadded44f229aa))
373
- * **roadmap:** record the council verdict on the fence grammar ([3e0deff](https://github.com/event4u-app/agent-config/commit/3e0deff6256050aa23fe952707ab88bf7bc9647e))
374
- * **review:** give the blind-pass findings terminal statuses and a carrier ([667b81e](https://github.com/event4u-app/agent-config/commit/667b81e9fa44d892095a7b057a6407196aa429bf))
375
-
376
- ### Tests
377
-
378
- * **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))
379
369
 
380
370
  ### CI
381
371
 
382
- * **gates:** wire check_review_dispositions with a trippable floor ([9b03190](https://github.com/event4u-app/agent-config/commit/9b0319032494345fdcaad40ae79dbe3ea95f6fc8))
383
-
384
- Tests: 10995 (+23 since 9.19.0)
385
-
386
- ## [9.19.0](https://github.com/event4u-app/agent-config/compare/9.18.1...9.19.0) (2026-08-04)
387
-
388
- ### Release highlights
389
-
390
- <!-- 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. -->
391
- - **Behaviour changes:** _none_
392
- - **Default changes + migration:** _none_
393
- - **Security and correctness:** _none_
394
- - **Honest nulls:** _auto-derived, rewrite before merge:_ commits carrying an honest-null marker in 1c744c3.
395
- - **Known limitations:** _none_
396
-
397
- ### Features
398
-
399
- * **gate-coverage:** ratchet the unhardened-gate count, armed at 189 and able to fail ([5d1564f](https://github.com/event4u-app/agent-config/commit/5d1564fe0dcbeb340c97f33a29245a54c43a8591))
400
- * **gate-coverage:** publish the asserted count from five gates, 17 -> 22 covered ([d228aa5](https://github.com/event4u-app/agent-config/commit/d228aa5cb5019dffe11c0e4606644630450d0816))
401
-
402
- ### Bug Fixes
403
-
404
- * **roadmap:** repair the archived roadmap's own relative link ([ac85f3a](https://github.com/event4u-app/agent-config/commit/ac85f3a0fdefbbed74c50cc7049c5ffc72b408a8))
405
- * **census:** make the scan-scope census reproducible, and regenerate it ([1e539ee](https://github.com/event4u-app/agent-config/commit/1e539ee96efc1807663342e084c2a0e666eaf9bc))
406
- * **lint_handoffs:** stop the CI invocation resolving --quiet as the scan root ([6994781](https://github.com/event4u-app/agent-config/commit/6994781875f8d1d2feab6012ac7704e04232447e))
407
- * **gates:** name the fence hole, drop the dead sort ([16dace4](https://github.com/event4u-app/agent-config/commit/16dace44b7d468aaba95abf16ec79d65d9862db8))
408
-
409
- ### Documentation
410
-
411
- * **roadmap:** close road-to-gates-that-can-fail, re-charter the adoption gap ([34ff10c](https://github.com/event4u-app/agent-config/commit/34ff10c0748ea7e1c4cfdb99f423c35bba1c9a98))
412
- * **claims:** register the exit-2 rate alarm in the Stage-A protocol ([4653841](https://github.com/event4u-app/agent-config/commit/46538415f7a59993aef7575f32cc84582a03126f))
413
- * **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))
414
373
 
415
374
  ### Chores
416
375
 
417
- * **census:** regenerate after merging origin/main ([239f141](https://github.com/event4u-app/agent-config/commit/239f1413b950455efbe379976ea34a67ff02d380))
418
-
419
- Tests: 10972 (+9 since 9.18.1)
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))
420
378
 
421
- ## [9.18.1](https://github.com/event4u-app/agent-config/compare/9.18.0...9.18.1) (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:** 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).
427
- - **Default changes + migration:** _none_
428
- - **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.
429
- - **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).
430
- - **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.
431
-
432
- ### Bug Fixes
433
-
434
- * **release:** derive the head in --dry-run too, so the preview matches ([2f23d6b](https://github.com/event4u-app/agent-config/commit/2f23d6bb963577af5741951962b48e556e5a3e97))
435
- * **release:** stop the generator writing a `_none_` the gate rejects ([8fe60e9](https://github.com/event4u-app/agent-config/commit/8fe60e9aba5192c07f8e33bc6ce1747a77e82922))
436
- * **gates:** a bare fence never delimits a region — close the fourth fail-open route ([9937ad9](https://github.com/event4u-app/agent-config/commit/9937ad9b75f60bffd4ad42f2a830589bd4be7e5c))
437
- * **gates:** an unterminated fence must not swallow the rest of a findings artefact ([55dc01d](https://github.com/event4u-app/agent-config/commit/55dc01d1fd3c8dbf44dd04fa7b3f41e3f4bc39bb))
438
- * **gates:** IaC and extensionless build files are code; a row is exactly six cells ([6c5f0f5](https://github.com/event4u-app/agent-config/commit/6c5f0f5999b8a421cf765269a8da8b780465dc98))
439
-
440
- ### Documentation
441
-
442
- * **review:** close round 8 — 1 fixed, 4 deferred, 0 critical ([70bb89f](https://github.com/event4u-app/agent-config/commit/70bb89f2820f4c5a5a26cd25f5db2daa53b08e5e))
443
- * **review:** close round 7 — 2 fixed, 3 deferred, 0 critical/high ([39f071f](https://github.com/event4u-app/agent-config/commit/39f071fad58dc2c5cb9e6ec87e8e37b79085db2f))
444
- * **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))
445
- * **review:** round-7 R2 findings — 2 medium, 3 low, 0 critical/high ([2bd3eda](https://github.com/event4u-app/agent-config/commit/2bd3edad82ff69700f62c4d16c93f38a484e5e08))
446
- * **review:** close round 6 — 4 fixed, 3 deferred, 0 critical/high ([7a0f7b3](https://github.com/event4u-app/agent-config/commit/7a0f7b33aed30921f2404ae1955a8e5aa76dde9b))
447
- * **gates:** two claims corrected to match the code (round-6 lows) ([0f5d43a](https://github.com/event4u-app/agent-config/commit/0f5d43a17be245b034287b0f486839fb156f8b86))
448
- * **review:** restore the real binding review — 6c6fc15a9's honest-null was false ([d56c0be](https://github.com/event4u-app/agent-config/commit/d56c0be63f6782183737ab50256401ab52a1f38f))
449
-
450
- Tests: 10963 (+19 since 9.18.0)
451
-
452
- ## [9.18.0](https://github.com/event4u-app/agent-config/compare/9.17.0...9.18.0) (2026-08-04)
453
-
454
- ### Release highlights
455
-
456
- <!-- 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. -->
457
- - **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).
458
- - **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.
459
- - **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).
460
- - **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).
461
- - **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).
462
-
463
- ### Features
464
-
465
- * **ci:** local mirror for the R2 manifest re-derivation (parity) ([3e014b2](https://github.com/event4u-app/agent-config/commit/3e014b2196a1caf8ebfc404dd492cb500acf5126))
466
- * **metrics:** pre-register Stage-A protocol; close + archive the roadmap ([01323d1](https://github.com/event4u-app/agent-config/commit/01323d17b03e01610c526cf34cd5134002899518))
467
- * **ci:** enforce R1 + advisory R2 at pre-push and CI, register gate coverage ([21810f2](https://github.com/event4u-app/agent-config/commit/21810f2bd443310591bbaa7c83d54133477ab902))
468
- * **gates:** wire C/R1/R2 into the authoring and delivery surfaces ([3622d09](https://github.com/event4u-app/agent-config/commit/3622d09d4154e97fb2736cf5f08dc8eb2f7e0ba1))
469
- * **gates:** R1/R2 validators, R2 reviewer dispatcher, R1 annotation helper ([37389c9](https://github.com/event4u-app/agent-config/commit/37389c9ef8ae7420eaaab98484b53f362d34168b))
470
- * **settings:** add planning gate keys (Gate C/R1/R2) to template + Zod schema ([74afbf9](https://github.com/event4u-app/agent-config/commit/74afbf973bd34d8572f63b8e47ae29ebeefc43b1))
471
- * **work-engine:** ui-fix intent — fix-lane enters the chain at apply ([f29cc7c](https://github.com/event4u-app/agent-config/commit/f29cc7cb33b6247da197348d6e0a8e74ef74617d))
472
- * **work-engine:** trivial-lane recall 0.60 -> 1.00 against the pre-registered corpus ([07a32d4](https://github.com/event4u-app/agent-config/commit/07a32d4985cd89cba46474d7ffabff52ccd1b497))
473
- * **eval:** pre-register the ui-triviality golden corpus (40 tasks, council-labelled) ([f71a41c](https://github.com/event4u-app/agent-config/commit/f71a41c821f81cd0bb78bc427e2eba47b0ac0fd4))
474
- * **lint:** trigger-collision disposition gate + reproducible census ([b71e36c](https://github.com/event4u-app/agent-config/commit/b71e36c317385701d3b8577770130075c1b08754))
475
- * **routing:** one shared trigger matcher + route:explain / route:audit CLI ([e3af5ca](https://github.com/event4u-app/agent-config/commit/e3af5cacc496228794acf5a86fe799785ddbe19d))
476
-
477
- ### Bug Fixes
478
-
479
- * **gates:** stop claiming a blocking floor the advisory window does not have ([f2c6971](https://github.com/event4u-app/agent-config/commit/f2c6971913d19afe14523d460df996aa8d2adf82))
480
- * **metrics:** create the metrics dir before appending an outcome ([4931eda](https://github.com/event4u-app/agent-config/commit/4931eda2dd968e365b7666856353d63e14f61dfe))
481
- * **gates:** slug comes from git, not the CI branch env ([a8b04e1](https://github.com/event4u-app/agent-config/commit/a8b04e14dfdafdfffdd38f4966a6f04f60c175ac))
482
- * **settings:** planning section defaults, so omitting it is legal ([4bd8813](https://github.com/event4u-app/agent-config/commit/4bd881354fdce7f053ce4b1135a650d11ab71898))
483
- * **gates:** cwd decides, never an inherited GIT_DIR ([022f381](https://github.com/event4u-app/agent-config/commit/022f3819b17d3c80afbbad4b8aa30ce0f05dc5da))
484
- * **gates:** honest-null no longer suppresses the risk-table checks ([65fe441](https://github.com/event4u-app/agent-config/commit/65fe4418126751d2833156b5debfa17fba2d17b5))
485
- * **gates:** pin the diff bytes; malformed-row reporting; shared row split ([e023ac7](https://github.com/event4u-app/agent-config/commit/e023ac70df800380214dd7ade34ae266f842ae03))
486
- * **ci:** full history for the plan-governance gates ([323ab06](https://github.com/event4u-app/agent-config/commit/323ab068eb8f70348478127768b54273a582dc8c))
487
- * **metrics:** annotate helper exits on EOF instead of hanging ([6fd7fa9](https://github.com/event4u-app/agent-config/commit/6fd7fa9296b50e90d120ed7575c6cdd5c2a554f7))
488
- * **gates:** exclude the mandated metrics path from the review scope ([cc82999](https://github.com/event4u-app/agent-config/commit/cc82999ceb937ef58543415c9abe45b1eb073eb7))
489
- * **gates:** escape-aware markdown row split; scanned on every exit path ([05b4d44](https://github.com/event4u-app/agent-config/commit/05b4d44f4edffe90c305f1aa9f34ced8543c7002))
490
- * **gates:** close the eight script findings of round 2 — two were fail-open ([8a2bf76](https://github.com/event4u-app/agent-config/commit/8a2bf767be47c081a0f94bd5f2dd69b45cce2e28))
491
- * **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))
492
- * **gates:** contract §2.0/§2.6, dispatcher scope binding, precise dead-scope trigger ([cd52b53](https://github.com/event4u-app/agent-config/commit/cd52b53458d18ec9f3ad2e7e1f65067b118a2a5d))
493
- * **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))
494
- * **ci:** verify every review artefact, block on dead scope (R2 findings 2,8,9) ([962699d](https://github.com/event4u-app/agent-config/commit/962699d5108ca12219ecf18c1c9e19e068b210b9))
495
- * **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))
496
- * **lint:** repoint the fe-design abstraction-threshold pin to its reference file ([428bbd2](https://github.com/event4u-app/agent-config/commit/428bbd2513afe15a59600752244edd72b30a74b8))
497
- * **lint:** escape the NUL key separator in lint_trigger_collisions ([e359256](https://github.com/event4u-app/agent-config/commit/e359256e2498719afc508625c3c46cd3f93ff155))
498
- * **skills:** keep required sections in existing-ui-audit's body ([b3cc0ad](https://github.com/event4u-app/agent-config/commit/b3cc0ada669c2011de9c64623680ca4664552123))
499
- * **config:** surgical schema + budget edits instead of whole-file JSON rewrites ([2e1b377](https://github.com/event4u-app/agent-config/commit/2e1b3776edd2c960d0c9170bee60648875acf055))
500
- * **router:** unknown tier value fails compilation instead of silent tier-2 downgrade ([02960bf](https://github.com/event4u-app/agent-config/commit/02960bf5e8fab4c11aafaad29b5f4b5cde52ccd2))
501
-
502
- ### Documentation
503
-
504
- * **review:** binding R2 honest-null for the merge scope ([6c6fc15](https://github.com/event4u-app/agent-config/commit/6c6fc15a983c8c685820c5e5eac2dd21ba0ab228))
505
- * **contracts:** label the terminal-before-rename rule enforced_by: none ([911505e](https://github.com/event4u-app/agent-config/commit/911505e0207ab5715894e931b45f87a065b22b8a))
506
- * **contracts:** name the superseded-round convention (§2.7) ([ba202e2](https://github.com/event4u-app/agent-config/commit/ba202e2dd261ea3d194799946a2dc1924024bef3))
507
- * **review:** close round-4 findings — 4 fixed, 0 open ([7bb24d8](https://github.com/event4u-app/agent-config/commit/7bb24d879ecc9f512f9429e3c78a88959c7b6c50))
508
- * **gates:** withdraw three claims that had no mechanism behind them ([2529f53](https://github.com/event4u-app/agent-config/commit/2529f53e91c68a670667ea2fa2971cc262241404))
509
- * **review:** close round-3 findings — 11 fixed, 1 accepted-risk ([9603e29](https://github.com/event4u-app/agent-config/commit/9603e29f610dc1566bf1931ea6daf784e9f31725))
510
- * **review:** R2 round-3 findings — 12 open ([7a88b1a](https://github.com/event4u-app/agent-config/commit/7a88b1af2d2283ae1b3c8866d689241a4af9dda3))
511
- * **review:** close round-2 findings — 11 fixed ([6f0934c](https://github.com/event4u-app/agent-config/commit/6f0934c561223a8dd4424fa109b4c8b5701d38a7))
512
- * **review:** close round-1 findings — 10 fixed, 1 accepted-risk ([6bc2a26](https://github.com/event4u-app/agent-config/commit/6bc2a2673daf568d39de86710625108a84a03e13))
513
- * **review:** R2 completion-review findings — fresh blind reviewer, 11 open ([e7d0dca](https://github.com/event4u-app/agent-config/commit/e7d0dca86111dfe52247539630f11ff21f4c3c67))
514
- * **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))
515
- * **roadmap:** adjudicate advisory-gate blocker findings for plan-governance-gates ([b35b2aa](https://github.com/event4u-app/agent-config/commit/b35b2aa088e6d0236d9a28107f7726d76b9530f8))
516
- * **roadmap:** inline council trace per no-roadmap-references council clause ([c355c3b](https://github.com/event4u-app/agent-config/commit/c355c3b00b3a8ce031b7017bf12734908e1fd485))
517
- * **roadmap:** add plan-governance-gates roadmap (confidence gate + review gates) ([810caa7](https://github.com/event4u-app/agent-config/commit/810caa74529577049bc55778fe82eb5936ce79e1))
518
- * **evidence:** pre-register the UI-skill progressive-disclosure threshold ([0914f65](https://github.com/event4u-app/agent-config/commit/0914f65b24dd76f50ba073f375d6b0cb7d69ff2b))
519
- * **roadmap:** flip census + collision-lint checkboxes (landed in b71e36c31) ([f49df8b](https://github.com/event4u-app/agent-config/commit/f49df8bf766462e1a60dae3f41d2974a81bee814))
520
- * **roadmap:** routing-correctness — Phases 1, 2 and 4 landed ([010d733](https://github.com/event4u-app/agent-config/commit/010d73359ced4c9700ef4f40cc948216b0d6a070))
521
- * **commands:** routing-audit surface on /rule-compliance-audit ([61ade3f](https://github.com/event4u-app/agent-config/commit/61ade3f78f8f5956ec66413890b692055fef319d))
522
-
523
- ### Refactoring
524
-
525
- * **skills:** compress the gate additions under the size threshold ([015ec87](https://github.com/event4u-app/agent-config/commit/015ec8752dc6b5bc4e0e5c9098fc34b044bc9c61))
526
- * **skills:** progressive disclosure for the four heavy UI reference skills ([709f010](https://github.com/event4u-app/agent-config/commit/709f0105a2b305f7c1b53ad561ceb964c5616157))
527
- * **rules:** merge brand pair, disjoin disclaimer/finance and secret/security triggers ([71c3527](https://github.com/event4u-app/agent-config/commit/71c35279a774a42557f91d9f769ad0bdcf2386ba))
528
-
529
- ### Tests
530
-
531
- * **gates:** cover the annotation helper and the R2 artifact parser ([72eabe0](https://github.com/event4u-app/agent-config/commit/72eabe01025f6a399ff0818b173d17c8546ed737))
532
-
533
- ### Chores
379
+ ### Other
534
380
 
535
- * **index:** regenerate artefact index, catalog and command flows ([71aacc6](https://github.com/event4u-app/agent-config/commit/71aacc6f675def21773d13f3fd927bcdc2519a99))
536
- * **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))
537
385
 
538
- Tests: 10944 (+252 since 9.17.0)
386
+ Tests: 11299 (+208 since 9.22.0)
539
387
 
540
388
  # Era: pre-4.0.0 — archived
541
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
@@ -31,6 +31,23 @@ never force-removes.
31
31
  `git worktree list --porcelain` — target the worktree(s) named by the
32
32
  user, or every non-main worktree when asked to "clean up".
33
33
 
34
+ For a whole-checkout sweep, get the classified set in one pass instead of
35
+ running the per-worktree gate by hand:
36
+
37
+ ```bash
38
+ ./scripts-run src/scripts/worktree_cleanup_check inventory # counts + review reasons
39
+ ./scripts-run src/scripts/worktree_cleanup_check inventory --plan # commands for the safe set
40
+ ```
41
+
42
+ `safe` = on a branch, merged into the trunk, clean, in a conventional
43
+ worktree root, and no git activity for 48 h. `review` carries its
44
+ disqualifying reason; `live` means another session may hold it. The mode
45
+ reports only — running the plan is a bulk deletion needing the user's
46
+ explicit this-turn approval per
47
+ [`non-destructive-by-default`](../../../rules/non-destructive-by-default.md).
48
+ Present the safe set as a list and wait; a bulk sweep never inherits a
49
+ single earlier approval.
50
+
34
51
  ### 2. Per candidate, run the gates IN ORDER
35
52
 
36
53
  Run the deterministic gate helper (edge-case-tested: detached HEAD,
@@ -29,6 +29,12 @@ git worktree list --porcelain
29
29
  ```
30
30
 
31
31
  One report block per worktree (skip the main working tree unless asked).
32
+ Above roughly a dozen worktrees a per-worktree block stops being readable —
33
+ lead with the aggregate instead, then block only what the user asks about:
34
+
35
+ ```bash
36
+ ./scripts-run src/scripts/worktree_cleanup_check inventory
37
+ ```
32
38
 
33
39
  ### 2. Per worktree, gather
34
40
 
@@ -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