@event4u/agent-config 9.28.0 → 9.30.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.
- package/.claude-plugin/marketplace.json +1 -1
- package/AGENTS.md +6 -6
- package/CHANGELOG.md +172 -5
- package/README.md +2 -1
- package/agents/templates/.ai-council.yml.example +55 -24
- package/dist/agent-src/commands/analyze/inbox.md +22 -1
- package/dist/agent-src/commands/cost/report.md +2 -2
- package/dist/agent-src/commands/explain-run.md +31 -1
- package/dist/agent-src/commands/team/adversarial.md +8 -7
- package/dist/agent-src/commands/team/delegate.md +14 -12
- package/dist/agent-src/commands/team/review.md +9 -8
- package/dist/agent-src/commands/team/status.md +9 -8
- package/dist/agent-src/commands/team.md +29 -19
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +88 -2
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +29 -21
- package/dist/agent-src/contexts/execution/host-capability-manifest.md +26 -15
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +22 -1
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +17 -0
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +65 -1
- package/dist/agent-src/contexts/execution/subagent-routing.md +13 -11
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +25 -0
- package/dist/agent-src/contexts/execution/subagent-steering.md +6 -3
- package/dist/agent-src/rules/delegation-policy.md +11 -7
- package/dist/agent-src/rules/preservation-guard.md +9 -0
- package/dist/agent-src/rules/settings-ask-protocol.md +8 -7
- package/dist/agent-src/rules/token-budget-discipline.md +1 -1
- package/dist/agent-src/scripts/roadmap_gates.ts +312 -0
- package/dist/agent-src/scripts/update_roadmap_progress.ts +72 -4
- package/dist/agent-src/skills/forensics-report/SKILL.md +114 -0
- package/dist/agent-src/skills/forensics-report/evals/triggers.json +17 -0
- package/dist/agent-src/skills/premortem/SKILL.md +30 -1
- package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +2 -1
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +17 -5
- package/dist/agent-src/skills/subagent-orchestration/schemas/subagent-status.json +61 -3
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +1 -1
- package/dist/agent-src/templates/AGENTS.md +4 -4
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/roadmaps.md +23 -0
- package/dist/cli/registry.js +2 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/{chunk-22GCIJ2O.js → chunk-66OVWGB5.js} +1 -1
- package/dist/cli-delegate/{chunk-7OMQCH4V.js → chunk-BTJNRUX3.js} +22 -35
- package/dist/cli-delegate/{chunk-DVRS2KVR.js → chunk-DDUNNFYX.js} +24 -17
- package/dist/cli-delegate/{chunk-PQSAQKHW.js → chunk-EQY4FLJB.js} +3 -3
- package/dist/cli-delegate/{chunk-2BE5I2MN.js → chunk-IYTGIG2Y.js} +155 -91
- package/dist/cli-delegate/{chunk-GB2FSUEE.js → chunk-LCFJIQ4J.js} +32 -0
- package/dist/cli-delegate/{chunk-VSYT7OHO.js → chunk-LVRYBKTI.js} +31 -2
- package/dist/cli-delegate/chunk-MMJL4TIX.js +18 -0
- package/dist/cli-delegate/{chunk-JXARCGVN.js → chunk-MP3JT3IU.js} +1 -1
- package/dist/cli-delegate/chunk-O3CO5BFB.js +161 -0
- package/dist/cli-delegate/{chunk-REKCMYOU.js → chunk-PFBV6XRT.js} +36 -20
- package/dist/cli-delegate/chunk-RVGBH4XK.js +142 -0
- package/dist/cli-delegate/cmd_analyze_session.js +1 -1
- package/dist/cli-delegate/cmd_brand_status.js +1 -1
- package/dist/cli-delegate/cmd_conformance.js +2803 -137
- package/dist/cli-delegate/cmd_doctor.js +10 -5
- package/dist/cli-delegate/cmd_explain.js +2 -2
- package/dist/cli-delegate/cmd_export.js +4 -4
- package/dist/cli-delegate/cmd_handoff.js +88 -8
- package/dist/cli-delegate/cmd_mcp_available.js +1 -1
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +2 -2
- package/dist/cli-delegate/cmd_prune.js +4 -4
- package/dist/cli-delegate/cmd_route_audit.js +3 -2
- package/dist/cli-delegate/cmd_route_explain.js +1 -1
- package/dist/cli-delegate/cmd_session_recycle.js +177 -0
- package/dist/cli-delegate/cmd_settings_get.js +2 -8
- package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
- package/dist/cli-delegate/cmd_settings_set.js +2 -2
- package/dist/cli-delegate/cmd_sync.js +4 -4
- package/dist/cli-delegate/cmd_uninstall.js +4 -4
- package/dist/cli-delegate/cmd_update.js +1 -1
- package/dist/cli-delegate/cmd_upgrade.js +1 -1
- package/dist/cli-delegate/cmd_validate.js +4 -4
- package/dist/cli-delegate/cmd_versions.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +72 -23
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -2
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +39 -2
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +12 -4
- package/dist/hooks/dispatch.js +2278 -611
- package/dist/install/install.mjs +56 -17
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +4122 -699
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +54 -0
- package/dist/scripts/_lib/agent_settings.js.map +1 -1
- package/dist/scripts/condense.js +147 -2
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/schemas/settings.js +12 -7
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/shared/settingsCarveOut.js +0 -9
- package/dist/shared/settingsCarveOut.js.map +1 -1
- package/dist/shared/settingsClasses.js +11 -9
- package/dist/shared/settingsClasses.js.map +1 -1
- package/dist/ui/assets/index-B5qGYOJo.js +26 -0
- package/dist/ui/assets/index-B5qGYOJo.js.map +1 -0
- package/dist/ui/index.html +1 -1
- package/docs/contracts/settings-classes.md +58 -12
- package/package.json +1 -1
- package/src/agent-src/scripts/roadmap_gates.ts +312 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +72 -4
- package/src/agent-src/templates/AGENTS.md +4 -4
- package/src/config/agent-settings.template.yml +88 -66
- package/src/config/discovery/packs.yml +11 -0
- package/src/config/discovery/workspaces.yml +1 -1
- package/src/config/dispatch-economy-metrics.json +61 -0
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-violation-baselines.json +3 -3
- package/src/config/hook-token-budget.json +91 -0
- package/src/config/recycle-threshold-budget.json +12 -0
- package/src/config/rule-enforcement-baseline.json +86 -0
- package/src/scripts/_cli/cmd_conformance.ts +31 -44
- package/src/scripts/_cli/cmd_doctor.ts +65 -48
- package/src/scripts/_cli/cmd_session_recycle.ts +226 -0
- package/src/scripts/_dispatch.bash +23 -0
- package/src/scripts/_lib/agent_settings.ts +58 -0
- package/src/scripts/_lib/auto_dispatch.corpus.test.ts +1 -1
- package/src/scripts/_lib/auto_dispatch.ts +23 -18
- package/src/scripts/_lib/capsule_trigger.ts +124 -0
- package/src/scripts/_lib/host_capability.ts +63 -6
- package/src/scripts/_lib/judgment_ladder.ts +634 -0
- package/src/scripts/_lib/orchestration_gate.ts +8 -0
- package/src/scripts/_lib/orchestration_record.ts +78 -10
- package/src/scripts/_lib/orchestration_savings.ts +1 -1
- package/src/scripts/_lib/recycle_envelope_paths.ts +35 -0
- package/src/scripts/_lib/self_repair.ts +354 -13
- package/src/scripts/_lib/self_repair_store.ts +28 -0
- package/src/scripts/_lib/session_eol.ts +230 -0
- package/src/scripts/_lib/session_role.ts +42 -0
- package/src/scripts/_lib/subagent_capsule.ts +341 -0
- package/src/scripts/_lib/subagent_response.ts +94 -0
- package/src/scripts/_lib/subagent_spawn.ts +13 -0
- package/src/scripts/_lib/subagent_steering.ts +9 -4
- package/src/scripts/_lib/tier_budget_routing.ts +6 -1
- package/src/scripts/_lib/worker_budget.ts +37 -2
- package/src/scripts/ai_council/clients.ts +126 -55
- package/src/scripts/ai_council/config.ts +94 -6
- package/src/scripts/ai_council/handoff.ts +113 -0
- package/src/scripts/ai_council/modes.ts +19 -4
- package/src/scripts/ai_council/orchestrator.ts +105 -0
- package/src/scripts/ai_council/quorum.ts +84 -0
- package/src/scripts/ai_council/session.ts +44 -0
- package/src/scripts/ai_council/transport_resolver.ts +127 -1
- package/src/scripts/ai_team/availability.ts +110 -0
- package/src/scripts/ai_team/config.ts +34 -14
- package/src/scripts/ai_team/team_dispatch.ts +71 -29
- package/src/scripts/ask_transport.ts +221 -0
- package/src/scripts/bench_critic_protocol.ts +396 -0
- package/src/scripts/bench_hook_injection.ts +234 -0
- package/src/scripts/check_adr_frontmatter.ts +84 -40
- package/src/scripts/check_branch_freshness.ts +1 -0
- package/src/scripts/check_corpus_staleness.ts +18 -4
- package/src/scripts/check_detector_corpus.ts +219 -0
- package/src/scripts/check_gitignore_freshness.ts +42 -8
- package/src/scripts/check_hook_bundle_freshness.ts +24 -1
- package/src/scripts/check_kernel_prefix_stability.ts +1 -0
- package/src/scripts/check_standing_rule_delivery.ts +73 -32
- package/src/scripts/check_static_layer_stability.ts +154 -0
- package/src/scripts/check_suppression_hygiene.ts +48 -0
- package/src/scripts/condense.ts +162 -2
- package/src/scripts/council_cli.ts +401 -25
- package/src/scripts/dispatch_economy_report.ts +448 -0
- package/src/scripts/dispatch_r2_reviewer.ts +15 -2
- package/src/scripts/explain_run.ts +206 -4
- package/src/scripts/forensics_report.ts +333 -0
- package/src/scripts/generate_settings_reference.ts +1 -0
- package/src/scripts/handoff_context_hook.ts +112 -4
- package/src/scripts/hook_manifest.yaml +117 -10
- package/src/scripts/hooks/concern_registry.ts +8 -0
- package/src/scripts/hooks/delegation_nudge_hook.ts +106 -35
- package/src/scripts/hooks/dispatch_hook.ts +39 -2
- package/src/scripts/hooks/edit_shape_hook.ts +303 -0
- package/src/scripts/hooks/orchestration_record_hook.ts +19 -1
- package/src/scripts/hooks/reread_guard_hook.ts +314 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +133 -14
- package/src/scripts/hooks/session_eol_hook.ts +268 -0
- package/src/scripts/hooks/turn_end_gate_hook.ts +507 -0
- package/src/scripts/install-hooks.sh +1 -1
- package/src/scripts/language_mirror_hook.ts +89 -0
- package/src/scripts/lint_decision_impact.ts +14 -1
- package/src/scripts/lint_discovery_vocabulary.ts +2 -0
- package/src/scripts/lint_hook_manifest.ts +82 -0
- package/src/scripts/lint_never_silent.ts +276 -0
- package/src/scripts/lint_no_activation_gates.ts +271 -0
- package/src/scripts/lint_readme_serial_comma.ts +1 -0
- package/src/scripts/lint_rule_enforcement_declaration.ts +347 -0
- package/src/scripts/measure_turn_end_gate.ts +194 -0
- package/src/scripts/orchestration_record.ts +12 -1
- package/src/scripts/rebuild_hook_bundle.ts +178 -0
- package/src/scripts/release.ts +74 -2
- package/src/scripts/report_conformance_funnel.ts +284 -0
- package/src/scripts/report_imperative_density.ts +1 -0
- package/src/scripts/routing_doctor.ts +118 -36
- package/src/scripts/score_skill_selection.ts +19 -5
- package/src/scripts/self_repair_cli.ts +337 -59
- package/src/scripts/session_eol_report.ts +261 -0
- package/src/scripts/team_events_spike.ts +271 -0
- package/src/scripts/team_review_gate_hook.ts +31 -9
- package/src/server/schemas/settings.ts +24 -17
- package/src/shared/settingsCarveOut.ts +0 -10
- package/src/shared/settingsClasses.ts +11 -9
- package/src/templates/compact-instructions.md +40 -0
- package/dist/ui/assets/index-DmR0mbk4.js +0 -26
- package/dist/ui/assets/index-DmR0mbk4.js.map +0 -1
|
@@ -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.
|
|
9
|
+
"version": "9.30.0",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"agent-config",
|
|
12
12
|
"skills",
|
package/AGENTS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# event4u/agent-config
|
|
2
2
|
|
|
3
|
-
> Shared skill / rule / command suite for AI coding tools. No app runtime.
|
|
3
|
+
> Shared skill / rule / command suite for AI coding tools. No app runtime.
|
|
4
4
|
|
|
5
5
|
## Source of truth
|
|
6
6
|
|
|
@@ -9,10 +9,10 @@ Edit `src/` only (`skills`, `rules`, `agent-src`). `task sync` + `task generate-
|
|
|
9
9
|
## Working on this repo
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
task sync
|
|
13
|
-
task generate-tools
|
|
14
|
-
task ci
|
|
15
|
-
#
|
|
12
|
+
task sync # dist/agent-src/, .augment/
|
|
13
|
+
task generate-tools # .claude/, .cursor/, .clinerules/, .windsurfrules
|
|
14
|
+
task ci # full pipeline, green before PR
|
|
15
|
+
# dev: AGENT_CONFIG_DEV_MODE=1 -> --scope=project (docs/maintainers/dev-mode.md)
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## Pointers
|
|
@@ -28,7 +28,7 @@ task ci # full pipeline, green before PR
|
|
|
28
28
|
- **Discovery** — workspaces/packs: [`ADR-013`](docs/decisions/ADR-013-discovery-frontmatter-contract.md) + [`customization`](docs/customization.md).
|
|
29
29
|
- **Root & `agents/` layout** — `src/` = source ([`ADR-050`](docs/decisions/ADR-050-workspace-vs-package-root-boundary.md)); contract: [`agents-layout`](docs/contracts/agents-layout.md).
|
|
30
30
|
- **Security** — [`SECURITY.md`](SECURITY.md); [`docs/threat-model.md`](docs/threat-model.md).
|
|
31
|
-
- **Delegate & review**: subagents take independent-slice work, not serial; no mutating session ends without neutral review — [`delegation-policy`](dist/agent-src/rules/delegation-policy.md).
|
|
31
|
+
- **Delegate & review**: subagents take independent-slice work, not serial; in a team (host-flag gated) the lead coordinates, teammates implement; no mutating session ends without neutral review — [`delegation-policy`](dist/agent-src/rules/delegation-policy.md).
|
|
32
32
|
|
|
33
33
|
## Emergency triage — when nothing else is reachable
|
|
34
34
|
|
package/CHANGELOG.md
CHANGED
|
@@ -312,15 +312,182 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
|
|
|
312
312
|
> that forces a new era split (`# Era: 9.28.x`, etc.) — see
|
|
313
313
|
> [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
|
|
314
314
|
|
|
315
|
+
## [9.30.0](https://github.com/event4u-app/agent-config/compare/9.29.0...9.30.0) (2026-08-10)
|
|
316
|
+
|
|
317
|
+
### Release highlights
|
|
318
|
+
|
|
319
|
+
<!-- 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. -->
|
|
320
|
+
- **Behaviour changes:** _auto-derived, rewrite before merge:_ rule/schema diffs, breaking commits or removed public surface in ded8e1a.
|
|
321
|
+
- **Default changes + migration:** _none_
|
|
322
|
+
- **Security and correctness:** _none_
|
|
323
|
+
- **Honest nulls:** _auto-derived, rewrite before merge:_ commits carrying an honest-null marker in 133baf3, fcb689a, 5b86045.
|
|
324
|
+
- **Known limitations:** _none_
|
|
325
|
+
|
|
326
|
+
### Features
|
|
327
|
+
|
|
328
|
+
* **roadmap:** the cost-parity family, cut down to what the tree does not already own ([41e52d1](https://github.com/event4u-app/agent-config/commit/41e52d18c66a0b8f5cb8bb1eac389313a51a32b8))
|
|
329
|
+
* **gates:** the bootstrap flag closes itself instead of relying on memory ([b9d2e3b](https://github.com/event4u-app/agent-config/commit/b9d2e3ba8a3ea6c3725969de09f347a3ef0e2dae))
|
|
330
|
+
* **self-repair:** name the surfaces a patch may never target ([4ae482a](https://github.com/event4u-app/agent-config/commit/4ae482ab669702be45ecc50eebb03246e43df3ad))
|
|
331
|
+
* **doctor:** surface what the host actually receives, without inventing a baseline ([50ded4c](https://github.com/event4u-app/agent-config/commit/50ded4c32fe13d29379c9c279c85b29d944efc9f))
|
|
332
|
+
* **conformance:** join delivery, activation and compliance into one funnel view ([0f33281](https://github.com/event4u-app/agent-config/commit/0f3328196838c8399343e861890ddeb5b64d8c89))
|
|
333
|
+
* **explain:** a dispatch decision explains its whole ladder walk, truthfully ([c665b6c](https://github.com/event4u-app/agent-config/commit/c665b6c4af2d251168c825accd54cbd238d985cf))
|
|
334
|
+
* **cli:** gates — the open decisions that need you, rendered as actions ([530365a](https://github.com/event4u-app/agent-config/commit/530365ad7e0abb767953176d211cb633a7497b76))
|
|
335
|
+
* **gates:** a new rule declares its enforcement, or states the gap ([71a1c30](https://github.com/event4u-app/agent-config/commit/71a1c303beb046c1f96c186d286d8d332dcb7872))
|
|
336
|
+
* **gates:** twelve gates account per target, or name why they cannot ([200a2fb](https://github.com/event4u-app/agent-config/commit/200a2fb9795896d1a153f79da7653b3848b36a62))
|
|
337
|
+
* **recycling:** session-eol Stop carrier, committed threshold, compact fallback, metric registrations (P3+P4) ([117991f](https://github.com/event4u-app/agent-config/commit/117991f720861b477af51641d34cb913f5af601b))
|
|
338
|
+
* **recycling:** main-session recycle envelope — schema variant, producer, consumer, round-trip (P2) ([62881e2](https://github.com/event4u-app/agent-config/commit/62881e2a0c25a1f0af75622c919f177f20271ee8))
|
|
339
|
+
* **recycling:** session end-of-life scanner, report and measured baseline (P1) ([cb760c1](https://github.com/event4u-app/agent-config/commit/cb760c1270e0aeb5de4490abc3efbbd78c8444d2))
|
|
340
|
+
* **cache-economy:** rtk corpus extension + unbounded-output cap advisory + metric registrations (P4-P6) ([0e46dff](https://github.com/event4u-app/agent-config/commit/0e46dff8fbaa77fcd66eb2a3bfc5db8e9ccd7f41))
|
|
341
|
+
* **cache-economy:** injection anatomy spike, stability lint, injection budget (token-economy-cache P1-P3) ([1176f77](https://github.com/event4u-app/agent-config/commit/1176f77b4e57e882a3a2d1399828a0c564883b31))
|
|
342
|
+
* **settings:** subagent model ceiling as explicit class-C spend cap (token-economy-dispatch P5) ([3fd63fc](https://github.com/event4u-app/agent-config/commit/3fd63fcb3ad9a343d3f40fdeb9354535aa8eda51))
|
|
343
|
+
* **ladder:** rung 0.5 ask transport below the spawn boundary (token-economy-dispatch P3+P4) ([5b86045](https://github.com/event4u-app/agent-config/commit/5b860459bf3a039200af37de91fea15e83f335d4))
|
|
344
|
+
* **hooks:** role axis in the hook manifest (token-economy-dispatch P2) ([60e804d](https://github.com/event4u-app/agent-config/commit/60e804d5ffa510cdd62e44744a9399b29793533f))
|
|
345
|
+
* **telemetry:** register dispatch-floor + rules-efficiency metrics (token-economy-dispatch P1) ([083fbb1](https://github.com/event4u-app/agent-config/commit/083fbb1d9ab5045a10bc0438d4a74bef6cec8b01))
|
|
346
|
+
* **scripts:** measure the turn-end-gate detectors against a real corpus ([b5c9bfe](https://github.com/event4u-app/agent-config/commit/b5c9bfe9ea85b3489f060401e7ff8a07a230f38d))
|
|
347
|
+
* **hooks:** re-emit the language pin across the compaction boundary ([a1812b4](https://github.com/event4u-app/agent-config/commit/a1812b41ba23745c3c4f21d3532ec0e822284d7c))
|
|
348
|
+
* **hooks:** add turn-end-gate, the first concern that can refuse a turn-end ([9e2edfc](https://github.com/event4u-app/agent-config/commit/9e2edfcba6c633a8746d8b28aac7069313123c32))
|
|
349
|
+
|
|
350
|
+
### Bug Fixes
|
|
351
|
+
|
|
352
|
+
* **roadmap:** apply the council pass and the second review-gate round ([425b461](https://github.com/event4u-app/agent-config/commit/425b461329eb1eac781364d1496cc6bcbb4c5f17))
|
|
353
|
+
* **roadmap:** the divergence figure measures cache staleness, not the source ([a955e1f](https://github.com/event4u-app/agent-config/commit/a955e1fc2cb8ad86c8a809e35b96b0da2888ab27))
|
|
354
|
+
* **roadmap:** close all ten review-gate findings and add inbox snapshot provenance ([133baf3](https://github.com/event4u-app/agent-config/commit/133baf30fe2a2fd3d9dbff0535bf5b01fd845581))
|
|
355
|
+
* **roadmap:** risk types in the cost-parity family must be product or implementation ([5fb28c4](https://github.com/event4u-app/agent-config/commit/5fb28c46509761585ed154b7e222d1396562ec94))
|
|
356
|
+
* **evidence:** fill the registration SHA the council caught shipping unfilled ([a368a0c](https://github.com/event4u-app/agent-config/commit/a368a0ca815b70b61faa39b6cf72526e16b8f0f4))
|
|
357
|
+
* **review:** address the four PR advisories, three of them by stating what is true ([87b9202](https://github.com/event4u-app/agent-config/commit/87b92028f01df4f77f1495f5d422b0b6c1e083c2))
|
|
358
|
+
* **explain:** the ladder trail carries rung 0.5 after the merge ([9c77684](https://github.com/event4u-app/agent-config/commit/9c77684f134dc9e004c3d26ae2e08363643c4d37))
|
|
359
|
+
* **rules:** preservation-guard states its whole prohibition in its Iron Law ([ded8e1a](https://github.com/event4u-app/agent-config/commit/ded8e1ad2c435f657d7dbed8f4fea5cb40834080))
|
|
360
|
+
* **recycling:** pin session-eol in the worker-drop set the role-axis test asserts ([1a4370d](https://github.com/event4u-app/agent-config/commit/1a4370df8cc6bf97cc2c988fd6d10e9f91249212))
|
|
361
|
+
* **hooks:** point the pre-commit roadmap gate at the live script path ([fd8c565](https://github.com/event4u-app/agent-config/commit/fd8c565123d3a61d9a883fa079a60378552936fc))
|
|
362
|
+
* **cache-economy:** cast reread-guard ledger reads via unknown for the strict changed-files typecheck ([7159adf](https://github.com/event4u-app/agent-config/commit/7159adf91ed90c51cb4e645c27b6dc1042e97dbd))
|
|
363
|
+
* **deps:** bump the npm-production group with 5 updates ([2e388f1](https://github.com/event4u-app/agent-config/commit/2e388f1a611417d5b740448a5f1d49f8953ac69c))
|
|
364
|
+
* **tests:** add returnChannelChars to the two DispatchFacts literals ([4621d20](https://github.com/event4u-app/agent-config/commit/4621d20bdff8b97ddbe9101343e5a7db0a4fa160))
|
|
365
|
+
* **roadmap:** ref-ignore the deliberately-absent budget file path ([b017e88](https://github.com/event4u-app/agent-config/commit/b017e888f815c49af2217fbda0f935d7f82aec67))
|
|
366
|
+
* **roadmap:** risk-type enum on the two sibling registers ([042b0d8](https://github.com/event4u-app/agent-config/commit/042b0d87fcd6b066e4b0b85bd8dbba1140a8ecba))
|
|
367
|
+
* **review:** close the neutral-review findings on the dispatch-economy delta ([ecf4808](https://github.com/event4u-app/agent-config/commit/ecf4808211b58912e76ca5c62f4c3d5be9c7cb42))
|
|
368
|
+
* **review:** stamp R2 roadmap snapshots with the check-refs exemption ([2882267](https://github.com/event4u-app/agent-config/commit/2882267fa460862172f27fc80793620dc29bb0fb))
|
|
369
|
+
* **review:** address all four zcs-close R2 findings ([3cfe707](https://github.com/event4u-app/agent-config/commit/3cfe70733884874a2427db931fa5d56436212e4c))
|
|
370
|
+
* **contracts:** drop the two deleted ask-enum keys from settings-classes prose ([eab16c6](https://github.com/event4u-app/agent-config/commit/eab16c6b981909024e4205c10c449628fed10116))
|
|
371
|
+
|
|
372
|
+
### Documentation
|
|
373
|
+
|
|
374
|
+
* **roadmap:** pull the 109-divergent-rules finding out of the blockers ([2346ee0](https://github.com/event4u-app/agent-config/commit/2346ee0bbda2e7922d7df28ce1545809fafb4819))
|
|
375
|
+
* **roadmap:** archive road-to-feedback-9-29 - all sixteen steps closed ([99f5bec](https://github.com/event4u-app/agent-config/commit/99f5bec04902001539d484d34f31c4c023dd9a4a))
|
|
376
|
+
* **contracts:** document the consent sidecar's record shape, and the ledger retention policy ([4804bf9](https://github.com/event4u-app/agent-config/commit/4804bf9aa0732e0c08e8c62e977af3361b112047))
|
|
377
|
+
* **adr:** propose the host-native-first ladder (ADR-221) ([57c4658](https://github.com/event4u-app/agent-config/commit/57c465881ce9931b20a8963ba3be41f1f9b8a548))
|
|
378
|
+
* **evidence:** measure drill coverage and delivered rule tokens, decide nothing ([fe00143](https://github.com/event4u-app/agent-config/commit/fe00143e26401bcd6257a9cb0f937f33bdfaf458))
|
|
379
|
+
* **evidence:** pre-register the scoped-rule absence experiment, and correct its headline ([9321fb2](https://github.com/event4u-app/agent-config/commit/9321fb21e84db815504ce5a419cd3b1b573980fc))
|
|
380
|
+
* **claims:** publish the advisory-vs-blocking measurement as a bound claim ([a3f340b](https://github.com/event4u-app/agent-config/commit/a3f340b8e5cd3243eec7c090adfec2aae68e53f9))
|
|
381
|
+
* **changelog:** curate the auto-derived highlight heads for 9.27 to 9.29 ([fcb689a](https://github.com/event4u-app/agent-config/commit/fcb689ae8b7a3bd798ed26879bb0077e7d0ec15d))
|
|
382
|
+
* **cache-economy:** batching fire/no-fire pair in the process-loop context (P6.3) ([0ce8675](https://github.com/event4u-app/agent-config/commit/0ce867553cd005a823a401817ca3357f136cbe57))
|
|
383
|
+
* **roadmap:** archive token-economy-dispatch, spawn blocked follow-up ([3009a02](https://github.com/event4u-app/agent-config/commit/3009a0285ce0d78e803fc0dfc48c39661d3a76f5))
|
|
384
|
+
* **review:** re-bind the manifest roadmap/ac hashes after the fix pass ([7fb09cc](https://github.com/event4u-app/agent-config/commit/7fb09cc48ffd33cfdea53f1d8e79857b7d5c3807))
|
|
385
|
+
* **roadmap:** add token-economy series from inbox analysis ([6c0a1a5](https://github.com/event4u-app/agent-config/commit/6c0a1a5f30518b1c86f605584d8a09f8e83a6ae5))
|
|
386
|
+
* **roadmap:** close round 5, resolve the stop-refusal blocker, record it in round 6 ([ed98d05](https://github.com/event4u-app/agent-config/commit/ed98d05703c2995e58d5b4cf715387144e2caf54))
|
|
387
|
+
* **review:** re-bind the R2 findings scope after the CI fix ([b14f2ae](https://github.com/event4u-app/agent-config/commit/b14f2ae8eb594f69a656c85435c3995a52d3bdab))
|
|
388
|
+
* **review:** re-bind the R2 findings scope after the main merge ([143c8a3](https://github.com/event4u-app/agent-config/commit/143c8a3b44378345a02fb381820d3404a41877f7))
|
|
389
|
+
* **review:** re-bind R2 findings to the post-fix review scope (contract 2.1 in-place re-bind) ([30461c9](https://github.com/event4u-app/agent-config/commit/30461c9c198ccc870ea22d0be7f4574bf934ddfc))
|
|
390
|
+
* **review:** commit the R2 completion-review findings for the zcs close ([b92cb6c](https://github.com/event4u-app/agent-config/commit/b92cb6ce41dc3ea86d299db656f2dc1f3181d07a))
|
|
391
|
+
* **roadmap:** verify always-on-orchestration acceptance criteria and Phase-7 non-goals ([e09189f](https://github.com/event4u-app/agent-config/commit/e09189ff3f7b30f4aa58ed5b309f814bef46e614))
|
|
392
|
+
|
|
393
|
+
### Refactoring
|
|
394
|
+
|
|
395
|
+
* **roadmap:** park parts 1 and 2 in later/ per the council convergence ([95711d0](https://github.com/event4u-app/agent-config/commit/95711d0256c3a4e96bd8be029c8b9df93b02654a))
|
|
396
|
+
|
|
397
|
+
### Tests
|
|
398
|
+
|
|
399
|
+
* **settings:** pin the two first-run entry-count cases from the council condition ([ffb33d6](https://github.com/event4u-app/agent-config/commit/ffb33d69c4dc075ac625933da1b193d6ad57c094))
|
|
400
|
+
|
|
401
|
+
### Build
|
|
402
|
+
|
|
403
|
+
* **install:** refresh the install bundle after the settings-schema addition ([a1c4daa](https://github.com/event4u-app/agent-config/commit/a1c4daa686a0644911f69d850c25b3f6ec4f1b4d))
|
|
404
|
+
|
|
405
|
+
### Chores
|
|
406
|
+
|
|
407
|
+
* **roadmap:** close road-to-token-economy-recycling — all phases landed, archived ([c5207f4](https://github.com/event4u-app/agent-config/commit/c5207f4ad6952b6499bc93c2bff4bb87f0f154f4))
|
|
408
|
+
* **roadmap:** close road-to-token-economy-cache - archive + census follow-up in later/ ([a87a2af](https://github.com/event4u-app/agent-config/commit/a87a2af343c02a425769e4f1b879ed56c39fcdb7))
|
|
409
|
+
* **deps:** bump actions/upload-artifact in the github-actions group ([f2b13ab](https://github.com/event4u-app/agent-config/commit/f2b13ab0dcbb558539e4d25f4e2a7b16fa9cced7))
|
|
410
|
+
* **deps-dev:** bump the npm-development group with 4 updates ([9e4310d](https://github.com/event4u-app/agent-config/commit/9e4310d0ea4fc6a3cb420cb5fe9d40180dee9e1f))
|
|
411
|
+
* **hooks:** bind turn-end-gate to claude stop and language-mirror to pre_compact ([6e3a5b4](https://github.com/event4u-app/agent-config/commit/6e3a5b40acbae2da22025a74e74a50307fc2142d))
|
|
412
|
+
* **roadmap:** close road-to-zero-ceremony-settings on the council condition, transfer the one deferral ([d7bc46a](https://github.com/event4u-app/agent-config/commit/d7bc46aeb63336afe1ea31c1c3661de60461d458))
|
|
413
|
+
|
|
414
|
+
Tests: 12691 (+253 since 9.29.0)
|
|
415
|
+
|
|
416
|
+
## [9.29.0](https://github.com/event4u-app/agent-config/compare/9.28.0...9.29.0) (2026-08-09)
|
|
417
|
+
|
|
418
|
+
### Release highlights
|
|
419
|
+
|
|
420
|
+
<!-- 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. -->
|
|
421
|
+
- **Behaviour changes:** Always-on orchestration: a five-rung judgment ladder (deterministic script → single lite slice → parallel → team → council) replaces the activation gate — `classifyTask` drops the enabled/auto settings while the emergency halt and the host `subagent_spawn` capability remain, and ambiguity stays an ask verdict (1a2dd51). The activation settings (`subagents.enabled`/`auto`/`host_capabilities`/`budget_routing`, `ai_team.enabled`) leave the template, the zod schema and the settings-classes contract; `emergency.orchestration_halt` is the one surviving switch, and leftover keys warn once per process and are then ignored (0304406). The ADR-217 body link in token-budget-discipline becomes plain text because ADRs never ship into the dist projection, so the link could not resolve there (1008212).
|
|
422
|
+
- **Default changes + migration:** The council's shipped transport default flips `api` → `auto` (CLI-first; explicitly configured modes unchanged), a pass now concludes at majority quorum with absent members carrying reasons, and a machine-readable handoff envelope is emitted — the same commit fixes the CLI-client construction defect that made every default-path CLI member throw (51088bd). The new read-only forensics analyzers ship as a default-off pack (`default_install: false`, surface tier lab) (b7b4cb0). 2590391 is roadmap bookkeeping only — the rule-delivery-integrity roadmap closes and its deferred measurement migrates to a successor roadmap; it changes no consumer-facing default.
|
|
423
|
+
- **Security and correctness:** _none_
|
|
424
|
+
- **Honest nulls:** _none_
|
|
425
|
+
- **Known limitations:** _none_
|
|
426
|
+
|
|
427
|
+
### Features
|
|
428
|
+
|
|
429
|
+
* **team:** availability replaces the master switch; teams readiness ([a94a91a](https://github.com/event4u-app/agent-config/commit/a94a91a30b916909c391939320ae4fb2b04e0b31))
|
|
430
|
+
* **council:** CLI-first shipped default, quorum, absent members, handoff ([51088bd](https://github.com/event4u-app/agent-config/commit/51088bdaaf3633c4918ea05182c5becf65593cf2))
|
|
431
|
+
* **dispatch:** judgment ladder replaces the activation gate ([1a2dd51](https://github.com/event4u-app/agent-config/commit/1a2dd5177b02b9ca752588a022d8a72c6afe51f5))
|
|
432
|
+
* **settings:** activation gates die, one audited incident switch survives ([0304406](https://github.com/event4u-app/agent-config/commit/0304406a536e29d66f44ce19f5f0187383b8af4e))
|
|
433
|
+
* **ci:** lint_never_silent - no shipped guidance may direct a silent re-run ([c7b3d83](https://github.com/event4u-app/agent-config/commit/c7b3d8382ac34a992727c1a042cc65298e56adaa))
|
|
434
|
+
* **self-repair:** fork-aware egress ladder, issue form, detector corpus gate ([5b50807](https://github.com/event4u-app/agent-config/commit/5b5080710e9800bbb4e1eec5773d9c5ff79de866))
|
|
435
|
+
* **self-repair:** fork-aware egress, detector corpus gate, never-silent lint ([4e046aa](https://github.com/event4u-app/agent-config/commit/4e046aa5d992cbefa31717430bd05a9e37798f4f))
|
|
436
|
+
* **rules:** emit Claude Code rules with the host-native paths key ([872c267](https://github.com/event4u-app/agent-config/commit/872c267589995668bfbfffdc2c0128b9d89532dd))
|
|
437
|
+
* **forensics:** read-only forensic analyzers as a default-off pack (Phase 3) ([b7b4cb0](https://github.com/event4u-app/agent-config/commit/b7b4cb05e2247737786e96ff52cf4d739dff68c4))
|
|
438
|
+
* **bench:** critic-protocol A/B result — no promotion, published both directions (Phase 2) ([bc0054b](https://github.com/event4u-app/agent-config/commit/bc0054b8406dc6fe280fcca7b10104547e2380b1))
|
|
439
|
+
* **council:** critic_protocol config + pre-registered load_bearing A/B harness (Phase 2, pre-run) ([e75ae51](https://github.com/event4u-app/agent-config/commit/e75ae514b765205a2f86c5ffaae40a5c81523d87))
|
|
440
|
+
* **hosts:** add worker_respawn to the host-capability manifest ([a30102d](https://github.com/event4u-app/agent-config/commit/a30102d0f30d197ced06248c5712722006032447))
|
|
441
|
+
* **subagents:** emit the capsule at a budget watermark, in shadow ([572d280](https://github.com/event4u-app/agent-config/commit/572d28066be1871f43242056af175ddbd023002c))
|
|
442
|
+
* **subagents:** add the CHECKPOINT capsule as the worker handoff shape ([8340f5e](https://github.com/event4u-app/agent-config/commit/8340f5e11219c296030084432e9f403818552df9))
|
|
443
|
+
* **premortem:** four-part failure register + optional roadmap Pre-mortem section (Phase 1) ([da95e9e](https://github.com/event4u-app/agent-config/commit/da95e9e4880394ab06ea0aaf818e893c695d4657))
|
|
444
|
+
|
|
445
|
+
### Bug Fixes
|
|
446
|
+
|
|
447
|
+
* **build:** rebuild the committed install bundle for the settings teardown ([6d9e667](https://github.com/event4u-app/agent-config/commit/6d9e6672bee69178d0ce8d86bd574e248abca54b))
|
|
448
|
+
* **spike:** escape the shape-key separator instead of a raw NUL byte ([1dd9a28](https://github.com/event4u-app/agent-config/commit/1dd9a281d5fc38ce228a04035a43a35b295114e5))
|
|
449
|
+
* **self-repair:** resolve the four R2 completion-review findings ([3474bf7](https://github.com/event4u-app/agent-config/commit/3474bf797321a99e5a7dd5a484a70a8a8748add6))
|
|
450
|
+
* **roadmap:** risk-register marker, allowed risk types, resolvable anchors ([f06f6ed](https://github.com/event4u-app/agent-config/commit/f06f6edb1f9f3b08c4763c542e789272f4dbd091))
|
|
451
|
+
* **scorer:** repoint skill-selection scoring at the live skills tree ([589b2c3](https://github.com/event4u-app/agent-config/commit/589b2c3e11eaf64a32e7bc7269807b3a9af648a2))
|
|
452
|
+
* **ci:** unlink the ADR-217 body link that can never resolve in the dist projection ([1008212](https://github.com/event4u-app/agent-config/commit/100821272c9254d4aae70876c9bfa65af67d1d4d))
|
|
453
|
+
* **forensics:** review findings — schema-valid finding ids, fail-before-write, hermetic smoke test, honest config scope ([0509647](https://github.com/event4u-app/agent-config/commit/050964793ec76e0100199a59fefd5b8cc4ad59e4))
|
|
454
|
+
* **release:** tolerate the concurrent tag-push race in step 8 ([049e8b2](https://github.com/event4u-app/agent-config/commit/049e8b24296a97f946c4597418cfd79457018e3c))
|
|
455
|
+
* **hooks:** self-heal a stale hook bundle in preflight instead of blocking the push ([9256633](https://github.com/event4u-app/agent-config/commit/9256633996be6d86e09df8c288837a8970d456e7))
|
|
456
|
+
|
|
457
|
+
### Documentation
|
|
458
|
+
|
|
459
|
+
* **council:** describe the runtime responses artefact without the pruned path literal ([04e8a0f](https://github.com/event4u-app/agent-config/commit/04e8a0feecb2fc19326f9abf894cf49f38424c6b))
|
|
460
|
+
* **roadmap:** always-on orchestration - verified claims, council cut, honest blockers ([d202556](https://github.com/event4u-app/agent-config/commit/d202556efa32376c4fc5fedba7fb95414cb4f4b4))
|
|
461
|
+
* always-on doctrine reaches the always-loaded surfaces ([9eead89](https://github.com/event4u-app/agent-config/commit/9eead8923e604f584541afbdac6d1feac3b02e5c))
|
|
462
|
+
* **review:** re-derive the context-manifest scope_hash for the re-bound round (contract 5 header-manifest agreement) ([2ebdb87](https://github.com/event4u-app/agent-config/commit/2ebdb87f0286a167d24cc26b3a658306274748c6))
|
|
463
|
+
* **review:** add fix-commit refs to the four resolved R2 findings ([9adbf83](https://github.com/event4u-app/agent-config/commit/9adbf83bcb530db4d702d4ff9425f685124b8a2f))
|
|
464
|
+
* **review:** re-bind R2 findings to the post-fix review scope (contract 2.1 in-place re-bind) ([752c29c](https://github.com/event4u-app/agent-config/commit/752c29cf11a66ded030bff60aeac45763c36c2ed))
|
|
465
|
+
* **review:** R2 completion-review findings for feat/road-to-rule-delivery-integrity (1 medium, 3 low, all open) ([0267568](https://github.com/event4u-app/agent-config/commit/02675686ef102552a80ce35861e1c5c094fb3f31))
|
|
466
|
+
* **roadmap:** close rule-delivery-integrity, migrate the measurement out ([2590391](https://github.com/event4u-app/agent-config/commit/25903915772394a776b069991e3d939bcf3f0e70))
|
|
467
|
+
* **adr:** ADR-220 skill invocation attestation — specified, check deferred (Phase 4) ([c8f3dbb](https://github.com/event4u-app/agent-config/commit/c8f3dbb31762a7df7ef3abf7ef70f1e17741afa4))
|
|
468
|
+
* **roadmap:** land phases 0 and 1 of worker-generation recycling ([06c7347](https://github.com/event4u-app/agent-config/commit/06c7347b49809a81b7ee169f42e3c742e5211812))
|
|
469
|
+
* **claims:** pre-register the capsule trigger-arm comparison ([2acfc56](https://github.com/event4u-app/agent-config/commit/2acfc56982d257331243094d2a580ca4f5926c6c))
|
|
470
|
+
|
|
471
|
+
### Chores
|
|
472
|
+
|
|
473
|
+
* **roadmap:** close Phase 4 of road-to-rule-delivery-integrity ([5db59bc](https://github.com/event4u-app/agent-config/commit/5db59bc4410488eb22717c8d0606b8eca10bcfa4))
|
|
474
|
+
* **roadmap:** park round-6 and worker-generation-recycling in later/ ([e5ebedc](https://github.com/event4u-app/agent-config/commit/e5ebedcd9ba0b3ddaba10938af74fcab9d79f03a))
|
|
475
|
+
* **generated:** regenerate proof.md + CAPABILITIES.yaml for the 289th skill post-merge ([d0f348d](https://github.com/event4u-app/agent-config/commit/d0f348d0b75b507d10199941185969a633563f63))
|
|
476
|
+
* **roadmap:** close Phase 5 + acceptance criteria — roadmap fully closed ([c993660](https://github.com/event4u-app/agent-config/commit/c9936607fe77e06f1b510a3ee3ccf8390f49a8d6))
|
|
477
|
+
* **generated:** rebuild the install bundle for the settings-schema change ([5b1260d](https://github.com/event4u-app/agent-config/commit/5b1260de7b889a16e94a5e5d5bc6f22f23dc558e))
|
|
478
|
+
* **generated:** regenerate proof.md for the new ledger entry ([76ab0a9](https://github.com/event4u-app/agent-config/commit/76ab0a9e1ccdb09e436f562c1cf8416989d921ef))
|
|
479
|
+
|
|
480
|
+
Tests: 12438 (+297 since 9.28.0)
|
|
481
|
+
|
|
315
482
|
## [9.28.0](https://github.com/event4u-app/agent-config/compare/9.27.0...9.28.0) (2026-08-09)
|
|
316
483
|
|
|
317
484
|
### Release highlights
|
|
318
485
|
|
|
319
486
|
<!-- 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. -->
|
|
320
|
-
- **Behaviour changes:**
|
|
487
|
+
- **Behaviour changes:** Two new always-loaded rules land — the self-repair loop (cb8d560) and the council-config-is-user-global fact (36a0e4c) — both later condensed to re-anchor the token baseline (103a22b), and AGENTS.md plus delegation-policy now carry the delegate-by-default and end-review obligations on the surface sessions actually read (63825ba). Settings resolution changes behaviour: the user-global loader now reads the canonical `settings/.agent-settings.yml` the wizard, server and installer write (previously silently inert), the onboarding gate checks the canonical project path so it can actually fire, and `MERGEABLE_KEYS` follows the key migration additively (ae6f30e, recorded as ADR-219). Four capability probes ship (`packs:active`, `settings:get`, `mcp:available`, `brand:status`) and rules are rewritten to name them plus `hooks:status` and the settings resolution chain (909235c, 3d684ef); 9cd21cb only fixes CI (ADR-219 frontmatter, three consumer-path ref-ignore markers) with no behaviour change.
|
|
321
488
|
- **Default changes + migration:** _none_
|
|
322
489
|
- **Security and correctness:** _none_
|
|
323
|
-
- **Honest nulls:**
|
|
490
|
+
- **Honest nulls:** The SK-2 loaded-but-violated detector resolves its precision question as an honest null: 0 flags over 137 sessions makes precision over the flag set UNDEFINED, not 100%, so a 15-test discrimination proof replaces the number — and only 3 of the 110 skill-obligation lines are mechanically checkable, with the remainder reported uncovered rather than approximated (2837fb7).
|
|
324
491
|
- **Known limitations:** _none_
|
|
325
492
|
|
|
326
493
|
### Features
|
|
@@ -416,10 +583,10 @@ Tests: 12141 (+391 since 9.27.0)
|
|
|
416
583
|
### Release highlights
|
|
417
584
|
|
|
418
585
|
<!-- 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. -->
|
|
419
|
-
- **Behaviour changes:**
|
|
420
|
-
- **Default changes + migration:**
|
|
586
|
+
- **Behaviour changes:** Rule frontmatter gains an `obligation_frequency` field — 105 rules declare it with a file:line citation, the nine kernel rules report `unclassified` because the kernel-prefix hash and write guard forbid the edit, and the enforcement-coverage join now runs per hook-capable platform (dd89970); the obligation citations themselves shrink from quoted sentences to line pointers across the always-loaded surface after the +5% cost cliff fired (e82cc1f). The session-canary carrier is re-bound into two hook slots (full contract at `session_start`, a one-line beat per `user_prompt_submit`) and three rules scope their enforcement claims to the hosts whose slots can actually carry them (b3b5ee7); a second conformance audit is recorded in the rule — the carrier fires, compliance did not follow (24 of 29 task starts dropped the greeting) — and ui-audit-gate plus design-review-after-ui-write now declare `enforced_by: none` in frontmatter where their prose already said it (6b06006).
|
|
587
|
+
- **Default changes + migration:** An absent-vs-default audit found nine settings keys where an absent value does not resolve to the template default — sharpest is `quality.local_auto_run`, where omitting the key silently disarms the gate the template arms; all nine are carved out as documented divergences read from the live template at emit time rather than fixed at their readers, so no migration is required and no default value changes (6d1af3a).
|
|
421
588
|
- **Security and correctness:** _none_
|
|
422
|
-
- **Honest nulls:**
|
|
589
|
+
- **Honest nulls:** The orchestration dispatch backfill (39 metric-bearing dispatches across 103 sessions) resolves to an honest null — every family verdict flips with the choice of baseline, both gate inputs are unmeasurable without a counterfactual, and telemetry capture ran at 0.27% (8e6765b); the pre-registered sibling claim orchestration-observed-dispatch-cost was resolved to the same null the day it was registered (6208186). The parallel-session-coordination archive records a further null: all 71 TTL records came from a single host, so no per-host TTL table could be derived and none was invented (f60bd6a).
|
|
423
590
|
- **Known limitations:** _none_
|
|
424
591
|
|
|
425
592
|
### Features
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml) [](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml) [](https://www.npmjs.com/package/@event4u/agent-config) [](https://glama.ai/mcp/servers/event4u-app/agent-config) [](https://mcptoplist.com/server/glama%2Fevent4u-app%2Fagent-config)
|
|
6
6
|
|
|
7
|
-
[](dist/agent-src/skills/) [](dist/agent-src/rules/) [](dist/agent-src/commands/) [](docs/guidelines/) [](dist/agent-src/personas/) [](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
|
|
|
@@ -126,6 +126,7 @@ is the proof. Browse it on the deployed docs site — the proof page is the prim
|
|
|
126
126
|
[event4u-app.github.io/agent-config/proof/](https://event4u-app.github.io/agent-config/proof/).
|
|
127
127
|
The honest comparison frame lives at
|
|
128
128
|
[`docs/us-vs-the-category.md`](docs/us-vs-the-category.md).
|
|
129
|
+
Freshest measured row: in one post-fix session, advisory context injection cut language-mirror violations 555 → 19 while the two blocking guards went 8 → 0 and 1 → 0 — advisory reduced massively, only blocking eliminated. One session and a post-hoc reading, so a recorded prior rather than a law.<!-- claim:conformance-advisory-vs-blocking -->
|
|
129
130
|
|
|
130
131
|
Maintaining a skills catalog yourself? The **anti-reskin gate** that blocks
|
|
131
132
|
find-replace re-skin PRs here runs on your catalog too —
|
|
@@ -65,21 +65,30 @@ defaults:
|
|
|
65
65
|
# reason. `manual` is NEVER part of the auto chain (it would
|
|
66
66
|
# always "succeed" and silently turn every call into a
|
|
67
67
|
# copy-paste request) — it stays an explicit opt-in.
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
71
|
-
#
|
|
68
|
+
# THE SHIPPED DEFAULT (road-to-always-on-orchestration
|
|
69
|
+
# Phase 3.1 — CLI-first is the owner-set transport doctrine):
|
|
70
|
+
# ride the vendor CLI under your subscription first, fall to
|
|
71
|
+
# the metered API only where no CLI resolves. Pin `manual` /
|
|
72
|
+
# `api` / `cli` here (or per-member below) to override it.
|
|
73
|
+
# `cli_call_budget` below ships populated with a generous
|
|
74
|
+
# per-provider guard so this default never runs your
|
|
75
|
+
# subscription quota uncapped.
|
|
72
76
|
#
|
|
73
77
|
# Precedence: invocation flag > per-member mode > defaults.mode >
|
|
74
78
|
# built-in. Two DIFFERENT defaults sit at the bottom, and they are not
|
|
75
79
|
# the same thing:
|
|
76
|
-
# · omit `defaults.mode` entirely and the loader fills "
|
|
77
|
-
# what every real config
|
|
80
|
+
# · omit `defaults.mode` entirely and the loader fills "auto" (was
|
|
81
|
+
# "api" before the Phase 3.1 flip) — that is what every real config
|
|
82
|
+
# file observes.
|
|
78
83
|
# · the resolver's built-in fallback, reached only when no layer at all
|
|
79
84
|
# supplies a mode (a settings dict handed straight to the resolver,
|
|
80
85
|
# no config file involved), is "manual" — free, no key. A caller who
|
|
81
|
-
# named no transport has not asked to spend money.
|
|
82
|
-
|
|
86
|
+
# named no transport has not asked to spend money. This did NOT flip
|
|
87
|
+
# alongside the loader default: `auto` still resolves to a paying
|
|
88
|
+
# rung when no CLI is usable, so flipping this too would let a
|
|
89
|
+
# caller that bypassed the config file spend money on a preference
|
|
90
|
+
# it never stated.
|
|
91
|
+
mode: auto
|
|
83
92
|
|
|
84
93
|
# Default number of debate rounds per /council invocation.
|
|
85
94
|
#
|
|
@@ -179,26 +188,34 @@ debate:
|
|
|
179
188
|
threshold_usd: 1.00
|
|
180
189
|
show_per_member: true
|
|
181
190
|
|
|
182
|
-
# Per-day call-count guard for `mode: cli` members. The
|
|
183
|
-
# `cost_budget` block skips CLI calls because they are
|
|
184
|
-
# but provider subscriptions still carry their own quotas
|
|
185
|
-
# 5h windows, ChatGPT Plus message caps, Gemini free-tier
|
|
186
|
-
# limits).
|
|
187
|
-
#
|
|
191
|
+
# Per-day call-count guard for `mode: cli` / `mode: auto` members. The
|
|
192
|
+
# standard `cost_budget` block skips CLI calls because they are
|
|
193
|
+
# billable=False — but provider subscriptions still carry their own quotas
|
|
194
|
+
# (Claude Pro 5h windows, ChatGPT Plus message caps, Gemini free-tier
|
|
195
|
+
# per-day limits). The loader SHIPS EVERY known provider populated at
|
|
196
|
+
# 50/day by default (road-to-always-on-orchestration Phase 3.4) — a config
|
|
197
|
+
# that omits this block entirely, or omits one provider from the map
|
|
198
|
+
# below, still gets that floor for the missing entries. It is a GUARD
|
|
199
|
+
# against an always-on `auto` default silently exhausting a subscription's
|
|
200
|
+
# plan quota, not a brake — override a provider explicitly to tighten it
|
|
201
|
+
# (worked example below) or loosen it further.
|
|
188
202
|
#
|
|
189
203
|
# Counter state persists at ~/.event4u/agent-config/cli-calls.json
|
|
190
204
|
# with daily UTC reset. Wired by Phase 1 of the CLI-transport roadmap.
|
|
191
205
|
#
|
|
192
|
-
#
|
|
193
|
-
#
|
|
194
|
-
#
|
|
195
|
-
#
|
|
196
|
-
#
|
|
197
|
-
#
|
|
198
|
-
# a
|
|
199
|
-
#
|
|
200
|
-
#
|
|
201
|
-
#
|
|
206
|
+
# The three entries below TIGHTEN the 50/day floor, deliberately: `mode:
|
|
207
|
+
# auto` prefers the cli rung, so a config that consults heavily wants a
|
|
208
|
+
# number sized to its own worst case, not the generic guard. Sized from
|
|
209
|
+
# the worst case one invocation can cost — a deep debate is at most
|
|
210
|
+
# `debate_max_rounds` (4) calls per member — so 24 permits roughly six
|
|
211
|
+
# full deep debates per provider per day before the guard fires. That is
|
|
212
|
+
# well inside a Pro-tier window while still bounding a runaway loop, and
|
|
213
|
+
# failures count too (a wedged CLI cannot burn the whole budget retrying).
|
|
214
|
+
# Gemini's free tier is the tightest, hence the lower cap. xai and
|
|
215
|
+
# perplexity are left unlisted here and so keep the loader's 50/day floor —
|
|
216
|
+
# raise or lower any of the five if you consult heavily or want a tighter
|
|
217
|
+
# rein; `council:quota` reports usage and `council:quota --reset` clears
|
|
218
|
+
# the day.
|
|
202
219
|
cli_call_budget:
|
|
203
220
|
max_calls_per_day:
|
|
204
221
|
anthropic: 24
|
|
@@ -207,6 +224,20 @@ cli_call_budget:
|
|
|
207
224
|
# Warn once usage crosses this fraction of a cap (0..1).
|
|
208
225
|
warn_at: 0.8
|
|
209
226
|
|
|
227
|
+
# Quorum for a council pass to CONCLUDE (road-to-always-on-orchestration
|
|
228
|
+
# Phase 3.3). Default "majority" resolves to ceil(n / 2) enabled members —
|
|
229
|
+
# a SIMPLE majority, deliberately not "more than half": at n=2 that is
|
|
230
|
+
# 1-of-2, because requiring 2-of-2 turns any single absent member into a
|
|
231
|
+
# deadlocked release gate. Below quorum the pass is `inconclusive` and, at
|
|
232
|
+
# a release gate, HOLDS for a human — never silently downgraded to
|
|
233
|
+
# advisory. Set an explicit integer to require a fixed count instead:
|
|
234
|
+
#
|
|
235
|
+
# quorum: 2
|
|
236
|
+
#
|
|
237
|
+
# See docs/contracts/ai-council-config.md § Quorum for the full resolver
|
|
238
|
+
# contract and the manifest.json / rendered-report fields it feeds.
|
|
239
|
+
quorum: majority
|
|
240
|
+
|
|
210
241
|
# Per-member configuration — you decide what may spend; detection tells
|
|
211
242
|
# you what is already here.
|
|
212
243
|
#
|
|
@@ -116,12 +116,22 @@ throughput problem** — never open ten files at full depth in one pass.
|
|
|
116
116
|
|
|
117
117
|
One pass per file, shallow, producing a table before any deep read:
|
|
118
118
|
|
|
119
|
-
| file | genre | age | first-impression disposition |
|
|
119
|
+
| file | genre | age | drafted-against | first-impression disposition |
|
|
120
120
|
|
|
121
121
|
Genre is one of: **external-review · feature-spec · prompt/persona · transcript ·
|
|
122
122
|
benchmark-output · council-artifact · scratch-note**. Age matters — compare the
|
|
123
123
|
file's mtime against the tree's movement since.
|
|
124
124
|
|
|
125
|
+
**Read the provenance line first — it is the cheapest column in the table.** An
|
|
126
|
+
artifact may open with `drafted-against: <short-SHA>` or
|
|
127
|
+
`drafted-at: <YYYY-MM-DD>` (optional by design — see
|
|
128
|
+
[`agents-layout`](../../../../../docs/contracts/agents-layout.md) § Snapshot
|
|
129
|
+
provenance). When a SHA is present, run `git log --oneline <SHA>..HEAD` **before**
|
|
130
|
+
any deep read: what merged in that window is the set of claims that may be
|
|
131
|
+
*stale rather than wrong*, and that is one command instead of a verification
|
|
132
|
+
pass. Absent → the column reads `unstated`, which is the normal path and not a
|
|
133
|
+
penalty.
|
|
134
|
+
|
|
125
135
|
Kill early and say so. A file is a **`delete`** candidate when it is a consumed
|
|
126
136
|
artifact of a finished process (a council question whose roadmap is archived, a
|
|
127
137
|
benchmark output already recorded), and a **`park`** candidate when it is real
|
|
@@ -155,6 +165,17 @@ or mark it `unverifiable`.
|
|
|
155
165
|
Expect a large `already-fixed` fraction on any file older than a few weeks. That
|
|
156
166
|
is a successful outcome, not a wasted pass.
|
|
157
167
|
|
|
168
|
+
**Separate stale from wrong, and say which.** `already-fixed` splits in two, and
|
|
169
|
+
the split changes what you tell the user: **overtaken** (true when drafted, a
|
|
170
|
+
later change shipped it) versus **never-true** (wrong at the drafting SHA too).
|
|
171
|
+
With a `drafted-against` SHA the distinction is mechanical — the claim either
|
|
172
|
+
falls inside `<SHA>..HEAD` or it does not. Report the two separately: a draft
|
|
173
|
+
that was 87 % overtaken was not a bad draft, and a draft that was wrong at its
|
|
174
|
+
own SHA is a different signal about its source. Two limits hold regardless: a
|
|
175
|
+
SHA is **not** a clearance for claims about a third system (host behaviour,
|
|
176
|
+
provider pricing, an external tool — those are `unverifiable` until probed), and
|
|
177
|
+
the narrowed surface still gets verified, just not re-derived from zero.
|
|
178
|
+
|
|
158
179
|
### Phase 5 — Map survivors onto this suite's artefact types
|
|
159
180
|
|
|
160
181
|
The question is never "what does the file say" but **"what does it become here"**:
|
|
@@ -159,8 +159,8 @@ If no orchestration lines exist yet (telemetry capture not yet running or
|
|
|
159
159
|
no delegated dispatches this month), surface:
|
|
160
160
|
|
|
161
161
|
> No orchestration telemetry yet — subagent dispatches begin writing to
|
|
162
|
-
> `agents/runtime/state/audit/YYYY-MM.jsonl` once
|
|
163
|
-
>
|
|
162
|
+
> `agents/runtime/state/audit/YYYY-MM.jsonl` once a dispatch runs (always-on
|
|
163
|
+
> orchestration: the layer has no per-run on/off setting any more).
|
|
164
164
|
|
|
165
165
|
Skip this step entirely if the user did not ask about orchestration telemetry
|
|
166
166
|
and there is no `agents/runtime/state/audit/` directory.
|
|
@@ -42,10 +42,40 @@ Both arguments are optional and narrow the report:
|
|
|
42
42
|
With neither, the engine reports over all available artefacts. Pass through
|
|
43
43
|
exactly what the user gave — do not invent a task id or a date.
|
|
44
44
|
|
|
45
|
+
### 1b. Optionally explain ONE dispatch decision
|
|
46
|
+
|
|
47
|
+
`--decision "<task text>"` adds a section that walks the judgment ladder for
|
|
48
|
+
that text: the rung taken, every rung genuinely evaluated-and-rejected with its
|
|
49
|
+
detector's own reason, and the rungs the resolver never reached (`not-reached` —
|
|
50
|
+
never a fabricated rejection). Absent `--decision`, the section is omitted and
|
|
51
|
+
the rest of the report is unchanged.
|
|
52
|
+
|
|
53
|
+
The remaining flags are the ladder's input signals — pass only what the user
|
|
54
|
+
states, since each one changes the resolution:
|
|
55
|
+
|
|
56
|
+
- `--size-estimate <int>` · `--slices <int>` — the size signals; a task at or
|
|
57
|
+
below the size floor never delegates.
|
|
58
|
+
- `--ordered-plan` — the slices are ordered rather than independent.
|
|
59
|
+
- `--agent-teams` — the host reports the `agent_teams` capability (without it a
|
|
60
|
+
communication-shaped task degrades below rung 3).
|
|
61
|
+
- `--halted` — `emergency.orchestration_halt` is set.
|
|
62
|
+
- `--no-spawn-primitive` — the host has no `subagent_spawn` primitive.
|
|
63
|
+
- `--inside-subagent` — the classification runs inside a subagent session
|
|
64
|
+
(recursive-dispatch guard).
|
|
65
|
+
- `--approval-required` — a human decision is pending; resolves ∅ before every
|
|
66
|
+
rung.
|
|
67
|
+
|
|
68
|
+
The token/cost line under that section prints the freshest real dispatch record
|
|
69
|
+
in the window and states that it is **not** matched to this decision — the
|
|
70
|
+
record shape carries no decision key, so correspondence is never claimed.
|
|
71
|
+
|
|
45
72
|
### 2. Run the engine
|
|
46
73
|
|
|
47
74
|
```bash
|
|
48
|
-
./scripts-run src/scripts/explain_run [--task <id>] [--since <ISO-8601>]
|
|
75
|
+
./scripts-run src/scripts/explain_run [--task <id>] [--since <ISO-8601>] \
|
|
76
|
+
[--decision "<task text>"] [--size-estimate <int>] [--slices <int>] \
|
|
77
|
+
[--ordered-plan] [--agent-teams] [--halted] [--no-spawn-primitive] \
|
|
78
|
+
[--inside-subagent] [--approval-required]
|
|
49
79
|
```
|
|
50
80
|
|
|
51
81
|
Exit codes:
|
|
@@ -29,11 +29,11 @@ attacker — a second strong model with repo access instead of the host model
|
|
|
29
29
|
critiquing itself. Use it as the **escalation rung**: single-model
|
|
30
30
|
self-review found nothing, or the stakes are high.
|
|
31
31
|
|
|
32
|
-
### 1. Gate — `
|
|
32
|
+
### 1. Gate — `/team` availability
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
**STOP**.
|
|
34
|
+
Run the availability check from `/team` (master) § "Availability gate":
|
|
35
|
+
codex CLI + auth, and `emergency.orchestration_halt`. Either check fails →
|
|
36
|
+
print the matching block and **STOP**.
|
|
37
37
|
|
|
38
38
|
### 2. Gate — plugin presence (fail closed)
|
|
39
39
|
|
|
@@ -73,12 +73,13 @@ on quota exhaustion surface the transport's refusal, do not retry.
|
|
|
73
73
|
## Output format
|
|
74
74
|
|
|
75
75
|
- The plugin's adversarial findings, verbatim.
|
|
76
|
-
- Gate failures print exactly one block (
|
|
77
|
-
block) and stop.
|
|
76
|
+
- Gate failures print exactly one block (availability/halt block or
|
|
77
|
+
fail-closed block) and stop.
|
|
78
78
|
|
|
79
79
|
## Do NOT
|
|
80
80
|
|
|
81
|
-
- Do NOT run when `
|
|
81
|
+
- Do NOT run when `/team` is unavailable (codex CLI/auth missing) or
|
|
82
|
+
halted — matching block, stop.
|
|
82
83
|
- Do NOT reimplement the adversarial pass inline when the plugin is absent —
|
|
83
84
|
fail closed with the doctor pointer.
|
|
84
85
|
- Do NOT skip the free first rung reflexively — the single-model
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
model_tier: inherit
|
|
3
3
|
name: team-delegate
|
|
4
|
+
type: orchestrator
|
|
4
5
|
disable-model-invocation: true
|
|
5
6
|
argument-hint: "<task>"
|
|
6
7
|
pack: meta
|
|
@@ -27,16 +28,16 @@ repo. On Claude Code hosts it delegates to the official plugin's
|
|
|
27
28
|
`/codex:rescue`. This is the **only wrapper that delegates write access**,
|
|
28
29
|
so it carries a second opt-in on top of the family gate.
|
|
29
30
|
|
|
30
|
-
### 1. Gate — `
|
|
31
|
+
### 1. Gate — `/team` availability
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
**STOP**.
|
|
33
|
+
Run the availability check from `/team` (master) § "Availability gate":
|
|
34
|
+
codex CLI + auth, and `emergency.orchestration_halt`. Either check fails →
|
|
35
|
+
print the matching block and **STOP**.
|
|
35
36
|
|
|
36
37
|
### 2. Gate — `ai_team.allow_delegate` (second opt-in)
|
|
37
38
|
|
|
38
39
|
Read `ai_team.allow_delegate`. Missing or `false` (the shipped default) →
|
|
39
|
-
refuse with the
|
|
40
|
+
refuse with the opt-in pointer and **STOP**:
|
|
40
41
|
|
|
41
42
|
> `/team delegate` is disabled (`ai_team.allow_delegate: false`, the
|
|
42
43
|
> default). It is the only team-mode wrapper that hands **write access** to
|
|
@@ -44,15 +45,15 @@ refuse with the enable pointer and **STOP**:
|
|
|
44
45
|
>
|
|
45
46
|
> ```yaml
|
|
46
47
|
> ai_team:
|
|
47
|
-
> enabled: true
|
|
48
48
|
> allow_delegate: true
|
|
49
49
|
> ```
|
|
50
50
|
>
|
|
51
51
|
> Key reference: `docs/contracts/ai-team-config.md`.
|
|
52
52
|
|
|
53
53
|
Deterministic mirror of gates 1+2: `npx tsx src/scripts/ai_team/team_dispatch.ts
|
|
54
|
-
--delegate-gate` exits non-zero (with the pointer on stderr) unless
|
|
55
|
-
|
|
54
|
+
--delegate-gate` exits non-zero (with the pointer on stderr) unless `/team`
|
|
55
|
+
is available AND `allow_delegate` is true — run it instead of hand-parsing
|
|
56
|
+
the YAML when a shell is available.
|
|
56
57
|
|
|
57
58
|
### 3. Gate — plugin presence (fail closed)
|
|
58
59
|
|
|
@@ -91,14 +92,15 @@ opens a PR on top of them.
|
|
|
91
92
|
## Output format
|
|
92
93
|
|
|
93
94
|
- The plugin's rescue/delegation result, verbatim.
|
|
94
|
-
- Gate failures print exactly one block (
|
|
95
|
-
refusal, or fail-closed block) and stop.
|
|
95
|
+
- Gate failures print exactly one block (availability/halt block,
|
|
96
|
+
allow_delegate refusal, or fail-closed block) and stop.
|
|
96
97
|
|
|
97
98
|
## Do NOT
|
|
98
99
|
|
|
99
|
-
- Do NOT run when `
|
|
100
|
+
- Do NOT run when `/team` is unavailable (codex CLI/auth missing) or
|
|
101
|
+
halted — matching block, stop.
|
|
100
102
|
- Do NOT run when `ai_team.allow_delegate` is false — refusal block, stop.
|
|
101
|
-
Never treat
|
|
103
|
+
Never treat availability alone as delegate authorization.
|
|
102
104
|
- Do NOT reimplement the worker inline when the plugin is absent — fail
|
|
103
105
|
closed with the doctor pointer.
|
|
104
106
|
- Do NOT commit, push, or open a PR over the worker's edits — review is the
|