@event4u/agent-config 7.0.1 → 7.1.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 (103) hide show
  1. package/.claude-plugin/marketplace.json +8 -1
  2. package/CHANGELOG.md +99 -0
  3. package/README.md +4 -2
  4. package/dist/agent-src/commands/council/default.md +28 -20
  5. package/dist/agent-src/commands/evals/fix.json +5 -1
  6. package/dist/agent-src/commands/fix/comments.md +101 -0
  7. package/dist/agent-src/commands/fix.md +5 -2
  8. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +65 -0
  9. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +68 -0
  10. package/dist/agent-src/contexts/execution/host-capability-manifest.md +68 -0
  11. package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +62 -0
  12. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +59 -0
  13. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +8 -3
  14. package/dist/agent-src/contexts/execution/subagent-response-contract.md +56 -0
  15. package/dist/agent-src/contexts/execution/subagent-routing.md +57 -0
  16. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +54 -0
  17. package/dist/agent-src/contexts/execution/subagent-steering.md +71 -0
  18. package/dist/agent-src/contexts/execution/verify-budget.md +50 -0
  19. package/dist/agent-src/rules/delegation-policy.md +84 -0
  20. package/dist/agent-src/rules/design-fidelity.md +98 -0
  21. package/dist/agent-src/rules/domain-safety-pii.md +22 -0
  22. package/dist/agent-src/rules/legal-safety-floor.md +144 -0
  23. package/dist/agent-src/rules/lethal-trifecta-guard.md +25 -22
  24. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +102 -15
  25. package/dist/agent-src/scripts/update_roadmap_progress.ts +52 -7
  26. package/dist/agent-src/skills/ai-council/SKILL.md +28 -1
  27. package/dist/agent-src/skills/contract-review/SKILL.md +124 -0
  28. package/dist/agent-src/skills/contract-review/evals/triggers.json +17 -0
  29. package/dist/agent-src/skills/dpa-review/SKILL.md +129 -0
  30. package/dist/agent-src/skills/dpa-review/evals/triggers.json +17 -0
  31. package/dist/agent-src/skills/laravel/SKILL.md +1 -0
  32. package/dist/agent-src/skills/legal-intake-triage/SKILL.md +127 -0
  33. package/dist/agent-src/skills/legal-intake-triage/evals/triggers.json +17 -0
  34. package/dist/agent-src/skills/legal-practice-profile/SKILL.md +100 -0
  35. package/dist/agent-src/skills/legal-practice-profile/evals/triggers.json +17 -0
  36. package/dist/agent-src/skills/nda-triage/SKILL.md +113 -0
  37. package/dist/agent-src/skills/nda-triage/evals/triggers.json +17 -0
  38. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +36 -9
  39. package/dist/agent-src/skills/recursive-verification/SKILL.md +186 -0
  40. package/dist/agent-src/skills/roadmap-management/SKILL.md +17 -0
  41. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +14 -0
  42. package/dist/agent-src/templates/agent-settings.md +64 -19
  43. package/dist/discovery/deprecation-report.md +1 -1
  44. package/dist/discovery/discovery-manifest.json +278 -23
  45. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  46. package/dist/discovery/discovery-manifest.summary.md +12 -4
  47. package/dist/discovery/orphan-report.md +1 -1
  48. package/dist/discovery/packs.json +50 -8
  49. package/dist/discovery/trust-report.md +7 -5
  50. package/dist/discovery/workspaces.json +34 -6
  51. package/dist/mcp/registry-manifest.json +3 -3
  52. package/dist/router.json +1 -1
  53. package/dist/server/schemas/settings.js +14 -0
  54. package/dist/server/schemas/settings.js.map +1 -1
  55. package/docs/architecture.md +4 -4
  56. package/docs/benchmark.md +46 -0
  57. package/docs/catalog.md +18 -6
  58. package/docs/command-flows.md +7 -1
  59. package/docs/contracts/ai-council-config.md +17 -10
  60. package/docs/contracts/audit-log-v1.md +7 -0
  61. package/docs/contracts/auto-orchestration-v1.md +70 -0
  62. package/docs/contracts/command-clusters.md +1 -1
  63. package/docs/contracts/discovery-manifest.schema.json +2 -2
  64. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +19 -0
  65. package/docs/decisions/ADR-020-global-only-consumer-scope.md +13 -6
  66. package/docs/decisions/ADR-049-configuration-trust-boundary.md +11 -1
  67. package/docs/decisions/ADR-093-ai-council-config-user-global.md +10 -4
  68. package/docs/decisions/ADR-104-ai-council-config-global-only.md +119 -0
  69. package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +102 -0
  70. package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +126 -0
  71. package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +51 -0
  72. package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +46 -0
  73. package/docs/decisions/INDEX.md +5 -0
  74. package/docs/getting-started.md +2 -2
  75. package/docs/guidelines/agent-infra/domain-eval-anti-pattern.md +53 -0
  76. package/docs/guidelines/agent-infra/domain-pack-architecture.md +55 -0
  77. package/package.json +1 -1
  78. package/src/config/agent-settings.template.yml +72 -3
  79. package/src/config/discovery/packs.yml +13 -0
  80. package/src/config/discovery/workspaces.yml +7 -0
  81. package/src/scripts/_lib/auto_dispatch.ts +95 -0
  82. package/src/scripts/_lib/host_capability.ts +59 -0
  83. package/src/scripts/_lib/orchestration_gate.ts +98 -0
  84. package/src/scripts/_lib/subagent_bundle.ts +154 -0
  85. package/src/scripts/_lib/subagent_response.ts +82 -0
  86. package/src/scripts/_lib/subagent_routing.ts +81 -0
  87. package/src/scripts/_lib/subagent_spawn.ts +97 -0
  88. package/src/scripts/_lib/subagent_steering.ts +64 -0
  89. package/src/scripts/_lib/verify_budget.ts +54 -0
  90. package/src/scripts/ai_council/advisors.ts +4 -2
  91. package/src/scripts/ai_council/clients.ts +7 -1
  92. package/src/scripts/ai_council/config.ts +22 -17
  93. package/src/scripts/bench_ab_v2_run.ts +127 -0
  94. package/src/scripts/bench_ab_v2_stats.ts +39 -0
  95. package/src/scripts/check_council_config_location.ts +6 -5
  96. package/src/scripts/lint_discovery_vocabulary.ts +6 -0
  97. package/src/scripts/lint_framework_leakage_allowlist.json +21 -0
  98. package/src/scripts/lint_legal_pack.ts +139 -0
  99. package/src/scripts/probe_projection_fidelity.ts +7 -1
  100. package/src/scripts/rdp_gate_classify.ts +131 -0
  101. package/src/scripts/rdp_quality_eval.ts +437 -0
  102. package/src/scripts/schemas/agent-settings.schema.json +11 -0
  103. package/src/scripts/skill_linter.ts +3 -0
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Shared agent configuration — skills for AI coding tools (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI).",
9
- "version": "7.0.1",
9
+ "version": "7.1.0",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
@@ -96,6 +96,7 @@
96
96
  "./.claude-plugin/skills/feature-roadmap",
97
97
  "./.claude-plugin/skills/fix",
98
98
  "./.claude-plugin/skills/fix-ci",
99
+ "./.claude-plugin/skills/fix-comments",
99
100
  "./.claude-plugin/skills/fix-portability",
100
101
  "./.claude-plugin/skills/fix-pr-comments",
101
102
  "./.claude-plugin/skills/fix-refs",
@@ -235,6 +236,7 @@
235
236
  "./dist/agent-src/skills/content-funnel-design",
236
237
  "./dist/agent-src/skills/context-authoring",
237
238
  "./dist/agent-src/skills/context-document",
239
+ "./dist/agent-src/skills/contract-review",
238
240
  "./dist/agent-src/skills/contracts-cognition",
239
241
  "./dist/agent-src/skills/conventional-commits-writing",
240
242
  "./dist/agent-src/skills/copilot-agents-optimization",
@@ -261,6 +263,7 @@
261
263
  "./dist/agent-src/skills/discovery-interview",
262
264
  "./dist/agent-src/skills/doc-coauthoring",
263
265
  "./dist/agent-src/skills/docker",
266
+ "./dist/agent-src/skills/dpa-review",
264
267
  "./dist/agent-src/skills/editorial-calendar",
265
268
  "./dist/agent-src/skills/eloquent",
266
269
  "./dist/agent-src/skills/emit-tickets",
@@ -321,6 +324,8 @@
321
324
  "./dist/agent-src/skills/laravel-websocket",
322
325
  "./dist/agent-src/skills/launch-readiness",
323
326
  "./dist/agent-src/skills/learning-to-rule-or-skill",
327
+ "./dist/agent-src/skills/legal-intake-triage",
328
+ "./dist/agent-src/skills/legal-practice-profile",
324
329
  "./dist/agent-src/skills/lint-skills",
325
330
  "./dist/agent-src/skills/livewire",
326
331
  "./dist/agent-src/skills/livewire-architect",
@@ -339,6 +344,7 @@
339
344
  "./dist/agent-src/skills/module-management",
340
345
  "./dist/agent-src/skills/motion-choreographer",
341
346
  "./dist/agent-src/skills/multi-tenancy",
347
+ "./dist/agent-src/skills/nda-triage",
342
348
  "./dist/agent-src/skills/nextjs-patterns",
343
349
  "./dist/agent-src/skills/okr-tree-modeling",
344
350
  "./dist/agent-src/skills/onboarding-design",
@@ -386,6 +392,7 @@
386
392
  "./dist/agent-src/skills/readme-writing-package",
387
393
  "./dist/agent-src/skills/reasoning-orchestrator",
388
394
  "./dist/agent-src/skills/receiving-code-review",
395
+ "./dist/agent-src/skills/recursive-verification",
389
396
  "./dist/agent-src/skills/refine-prompt",
390
397
  "./dist/agent-src/skills/refine-ticket",
391
398
  "./dist/agent-src/skills/release-comms",
package/CHANGELOG.md CHANGED
@@ -948,6 +948,105 @@ our recommendation order, not its support status.
948
948
  > that forces a new era split (`# Era: 7.1.x`, etc.) — see
949
949
  > [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
950
950
 
951
+ ## [7.1.0](https://github.com/event4u-app/agent-config/compare/7.0.2...7.1.0) (2026-06-24)
952
+
953
+ ### Features
954
+
955
+ * **legal:** RDG individual-case guardrail + LEGAL_NOTICE + no-definitive-language lint ([23e76df](https://github.com/event4u-app/agent-config/commit/23e76df34c612ed9bcdace069040defda80c1226))
956
+ * **legal:** lock open-source-forever stance + harden liability disclaimer (ADR-108); close 0.6 + 3.3 ([8d828a6](https://github.com/event4u-app/agent-config/commit/8d828a64de5d23fa1c298a78b3d67c6e70ffe4b7))
957
+ * **legal:** lock open-source-forever stance + harden liability disclaimer (ADR-108); close 0.6 + 3.3 ([f45e4e9](https://github.com/event4u-app/agent-config/commit/f45e4e99f7cccd77efb2d62fe06cb4436bc2df9e))
958
+ * **legal:** enforcement linter, privilege markers, eval harness, docs (Phases 1/1.5/3/5) ([cb06648](https://github.com/event4u-app/agent-config/commit/cb06648009dc12daab440a273eeb780d06f6e2fa))
959
+ * **legal:** add governed EU/DE legal pack — floor, 5 skills, vocab (ADR-107) ([b0d531f](https://github.com/event4u-app/agent-config/commit/b0d531f2701b600c93cb1ba52f3dce50e21a6d6d))
960
+ * **bench:** pair-capture seam for recursion arm (human-preference pretest) ([7211c04](https://github.com/event4u-app/agent-config/commit/7211c043bb712cea6c0a2e0de56ea5af79b70cce))
961
+ * **bench:** recursion gate logic + novel-lift scorer + package-recursive arm ([e33ff7d](https://github.com/event4u-app/agent-config/commit/e33ff7d52572ea35bcb8f5b190336e83e737ab1d))
962
+ * **recursive-verification:** add depth-bounded self-verification skill + gate ([4a0c519](https://github.com/event4u-app/agent-config/commit/4a0c519628a5244cc2859cdf484661c92be25783))
963
+ * **subagents:** A1 rule body + A2 bundle resolver + A3 response envelope ([4a9fc9b](https://github.com/event4u-app/agent-config/commit/4a9fc9b3c44c256426b0c33f4448010e890adf13))
964
+ * **subagents:** A1 — dedicated delegation-policy auto-trigger rule ([e60cb50](https://github.com/event4u-app/agent-config/commit/e60cb50fcfb55ccabdeab88b680ec707f8a4d122))
965
+ * **subagents:** automatic, settings-gated subagent orchestration ([dba922c](https://github.com/event4u-app/agent-config/commit/dba922c1da2177ad8103f06fd4dce49cff95977d))
966
+ * **py2ts:** purge dead python-parity test blocks + add permanent no-python-in-src guard ([e163468](https://github.com/event4u-app/agent-config/commit/e163468af8d2b70a7e4645db0dda719c3f761cb3))
967
+ * **roadmaps:** robust completion→archival independent of PR flow, tracking, and vendored scripts ([a879334](https://github.com/event4u-app/agent-config/commit/a87933447797c848e0e09e5d9d0ade6d280ae794))
968
+ * **rules:** add design-fidelity rule for provided-design adherence ([88bc654](https://github.com/event4u-app/agent-config/commit/88bc6541721a7d964d670fe80ac06385c4776762))
969
+ * add /fix:comments command to audit and trim branch code comments ([b3127b8](https://github.com/event4u-app/agent-config/commit/b3127b86733357d8fe2a32e4b3e5fe1c15447e41))
970
+
971
+ ### Bug Fixes
972
+
973
+ * **legal:** add 'legal' to discovery-manifest schema workspace + pack enums ([f7cc834](https://github.com/event4u-app/agent-config/commit/f7cc83415d6c7ffa7600512fba059c2513c3d4df))
974
+ * **ai-council:** raise curl timeout to 300s + --max-time so long Anthropic generations don't ETIMEDOUT ([42048b9](https://github.com/event4u-app/agent-config/commit/42048b91a5361a9041deee172609a974d926d1da))
975
+ * **roadmap:** commit legal-pack + dashboard + archived-roadmap link fixes ([1a6910a](https://github.com/event4u-app/agent-config/commit/1a6910a39beea7e5bfc0ff21167be1463d7bfd96))
976
+ * **test:** satisfy noUncheckedIndexedAccess in recursion tests ([29d6d89](https://github.com/event4u-app/agent-config/commit/29d6d8920192b3ade000abf9e5c102871a3ba336))
977
+ * **py2ts:** inbox snapshot — strip macOS /private prefix so Linux CI matches ([f19436e](https://github.com/event4u-app/agent-config/commit/f19436e4a6e1cdc6dba452330e293b4414f82125))
978
+ * **py2ts:** typecheck — assert tuple element in workspace_secrets SCAN/OBJ_CASES ([aedf6ee](https://github.com/event4u-app/agent-config/commit/aedf6eeb98eb4e171544decf4bfc9511ad7868e2))
979
+ * **ci:** allowlist brand/iconography/premortem bare-noun skill names ([1522311](https://github.com/event4u-app/agent-config/commit/152231156b8379ded27652c28c089806a4f33d1c))
980
+ * **ci:** register new subagents.* keys in the settings schema ([2c817a6](https://github.com/event4u-app/agent-config/commit/2c817a631c6b2062d8e5e843c31513d932d27d6f))
981
+ * **ci:** resolve pre-existing trunk gate drift ([8515b97](https://github.com/event4u-app/agent-config/commit/8515b9793608c077f058ac42621bf6e03160e163))
982
+ * **schema:** default the design block so settings without it still validate ([86ee94e](https://github.com/event4u-app/agent-config/commit/86ee94e313f198fd109db7dfdd6bb93a7b6dc8c6))
983
+ * **schema:** register design.fidelity_mode in settings parity schemas ([af56652](https://github.com/event4u-app/agent-config/commit/af5665258c9b5c02bc016d2e12bfa76befbe5d5d))
984
+ * **council:** resolve config global-only — never search the project tree ([fcd81ff](https://github.com/event4u-app/agent-config/commit/fcd81ffe92e652db88c79ba29c05b2dc0e358850))
985
+
986
+ ### Documentation
987
+
988
+ * **recursive-verification:** record council follow-up disposition — TERMINAL ([7d132be](https://github.com/event4u-app/agent-config/commit/7d132bec2b55c00359d1d906b7701de0317f28bf))
989
+ * **recursive-verification:** record honest-null in benchmark.md + ADR-106 ref ([87da20f](https://github.com/event4u-app/agent-config/commit/87da20ff8217e771427153eabaf7edaec4e97669))
990
+ * add subagent-orchestration onboarding map + sync roadmap dashboard ([01b798f](https://github.com/event4u-app/agent-config/commit/01b798f42b500b3c801292f65da90137304f9243))
991
+ * **roadmap:** add operator-runtime-harvest roadmap ([a2a92b1](https://github.com/event4u-app/agent-config/commit/a2a92b145f630e55b440b7b4214359618bf70ac9))
992
+ * **roadmap:** record measured remaining spawn-tail count (108) + next groups ([4426293](https://github.com/event4u-app/agent-config/commit/4426293da06dfc60ff914ab9a4bc9756675b96aa))
993
+ * **roadmap:** archive completed auto-subagent-orchestration v2 + regenerate derived ([e8af760](https://github.com/event4u-app/agent-config/commit/e8af760c792b4b7f2a7c3d61a551d84e43904df6))
994
+ * **roadmap:** mark work_engine cluster de-pythonized (21 files) ([0b36d5c](https://github.com/event4u-app/agent-config/commit/0b36d5c4999052f33cbc423296ecc9238a2b122c))
995
+ * **roadmap:** mark workspace_* cluster converted (12 files, +346 tests) ([154db54](https://github.com/event4u-app/agent-config/commit/154db548375a787f9c19ed38a464db8edfd4b9cb))
996
+ * **roadmap:** capture the py2ts conversion-tail determinism trap (per-file, not a codemod) ([439817c](https://github.com/event4u-app/agent-config/commit/439817c272216f81ed2e286990f27488f3321e64))
997
+ * **roadmap:** auto-subagent-orchestration roadmap + follow-up ([5cdbc84](https://github.com/event4u-app/agent-config/commit/5cdbc8438b0e097c99f16ee438494ae66e234c77))
998
+ * **roadmap:** refine py2ts tail triage (36 delete-candidates / 108 convert) ([985e3e3](https://github.com/event4u-app/agent-config/commit/985e3e35bdfb48309c2dc7259e0180a39fe71cd8))
999
+ * **roadmap:** record py2ts parity-block purge + categorize the remaining tail ([1ac823c](https://github.com/event4u-app/agent-config/commit/1ac823ce1e927a473e6c2c973cbe2e33dfb96ffb))
1000
+ * **roadmaps:** split token-saving human-measurement track off the autonomous parent ([ac188ef](https://github.com/event4u-app/agent-config/commit/ac188ef4e7044f75baf87e393f7084dae383abe3))
1001
+ * **roadmaps:** reconcile road-to-typescript-only-scripts against merged reality ([9adf45b](https://github.com/event4u-app/agent-config/commit/9adf45b3294f38f70100feaec44867074b512a2b))
1002
+ * **rdp:** restore frontier-polish closure dispositions in the archived file ([e712620](https://github.com/event4u-app/agent-config/commit/e712620f74a83f5faa50bb8885b6a1d17117adcf))
1003
+ * **rdp:** close + archive road-to-rdp-frontier-polish (L7 no-promotion, Phase 3 cancelled) ([8945d5a](https://github.com/event4u-app/agent-config/commit/8945d5ad35b15c4b177ae368f389fb0445f0c856))
1004
+
1005
+ ### Tests
1006
+
1007
+ * **legal:** replace Gate-2 owner requirement with a test-enforced disclaimer guarantee ([60112ac](https://github.com/event4u-app/agent-config/commit/60112ac9af01cc9f85491a0b6ccaa6bd17b4caa8))
1008
+ * **legal:** add trigger-eval sets for the 5 legal skills (5 should + 5 should-not, DE+EN) ([f451af2](https://github.com/event4u-app/agent-config/commit/f451af2a4d6ee1cfd357f69fe120a905ae26e525))
1009
+ * **py2ts:** de-pythonize 21 work_engine test files (purge parity blocks / convert pure rigs) ([2221cc8](https://github.com/event4u-app/agent-config/commit/2221cc8c268bb4d7e8f7eba59d58990f31c82dfb))
1010
+ * **py2ts:** convert the workspace_* CLI parity cluster to python-free intent tests ([6697dea](https://github.com/event4u-app/agent-config/commit/6697dea75a24f363f2053c4700d8438ec2725742))
1011
+ * **py2ts:** convert workspace_hosts parity rig to python-free intent test ([6f79864](https://github.com/event4u-app/agent-config/commit/6f798649ae2f27ca1381622025102b678f283f6d))
1012
+ * **py2ts:** purge obsolete python3-vs-tsx parity blocks from 94 mixed test files ([5e07191](https://github.com/event4u-app/agent-config/commit/5e07191639e01f74f47699e62798ce6b298cbc1f))
1013
+ * **py2ts:** convert the 4 all-parity CLI rigs to python-free intent tests ([aff202c](https://github.com/event4u-app/agent-config/commit/aff202c5eb81d2a87e9147e812a2fd53635dcae2))
1014
+ * **ci-time-ratio:** drop leaked root artifact, write relative --out under ignored test-results/ ([5152942](https://github.com/event4u-app/agent-config/commit/5152942c67711f3dfdb4b35b60c696fd633a6aaf))
1015
+
1016
+ ### Chores
1017
+
1018
+ * **legal:** regenerate agents/index.md + docs/catalog.md for legal pack artefacts ([484d5da](https://github.com/event4u-app/agent-config/commit/484d5da21ff67dd7013919b99a03fd0de3c66c72))
1019
+ * **roadmap:** archive completed recursive-verification + add legal-pack + sync dashboard ([887fbe7](https://github.com/event4u-app/agent-config/commit/887fbe7b83be52e21d751965f3dad2152d80f1ce))
1020
+ * **roadmaps:** archive py2ts teardown evidence + superseded predecessor ([d11f6cd](https://github.com/event4u-app/agent-config/commit/d11f6cd1646c43e6bd8f210b0ac703a7059236e5))
1021
+ * **condense:** re-mark stale command hashes (pre-existing drift) ([836d2c9](https://github.com/event4u-app/agent-config/commit/836d2c9ae1987d630fdce431b0ae5fed9aeb9aca))
1022
+ * register fix-comments skill in marketplace.json ([214c5d1](https://github.com/event4u-app/agent-config/commit/214c5d147b53b65c9eef56ea0e72a2d1a9224633))
1023
+ * **roadmaps:** regenerate dashboard (frontier-polish Phase 1 = done) ([9172c18](https://github.com/event4u-app/agent-config/commit/9172c18f5c6b6ad82ca6457ddbad10069a895d31))
1024
+
1025
+ ### Other
1026
+
1027
+ * Revert "feat(legal): lock open-source-forever stance + harden liability disclaimer (ADR-108); close 0.6 + 3.3" ([1f10272](https://github.com/event4u-app/agent-config/commit/1f1027229c841cda6110b64c59747b3607b092f6))
1028
+
1029
+ ## [7.0.2](https://github.com/event4u-app/agent-config/compare/7.0.1...7.0.2) (2026-06-22)
1030
+
1031
+ ### Bug Fixes
1032
+
1033
+ * **roadmaps:** regen entry-guard fires under symlinked invocation ([244e4e4](https://github.com/event4u-app/agent-config/commit/244e4e45a42a6b3d4793ac192e0f912d71954ba4))
1034
+ * **rdp-eval:** harden index access for strict typecheck (noUncheckedIndexedAccess) ([041b21e](https://github.com/event4u-app/agent-config/commit/041b21e4877361b1499328216242fa6ec595ff99))
1035
+ * **rdp-eval:** satisfy eslint on the new runners ([3c418e1](https://github.com/event4u-app/agent-config/commit/3c418e16faf340b8367148f6788835e400241e4e))
1036
+
1037
+ ### Documentation
1038
+
1039
+ * **rdp-eval:** keep-scoped L6 verdict — scope orchestrator to multi-step work ([61173ca](https://github.com/event4u-app/agent-config/commit/61173ca899442b81159e4f3efe586251dcea4459))
1040
+
1041
+ ### Tests
1042
+
1043
+ * **rdp-eval:** capture larger-N L6 + gate-classification data ([f92aad3](https://github.com/event4u-app/agent-config/commit/f92aad32620af27c5cf4d000859adeeb9894a819))
1044
+ * **rdp-eval:** port quality+L6 eval runners to TypeScript (fetch-based) ([9c4ec60](https://github.com/event4u-app/agent-config/commit/9c4ec604ca6fbb82d796cf2d65626d381a854142))
1045
+
1046
+ ### CI
1047
+
1048
+ * **consistency:** trigger on src/** and dist/agent-src/** paths ([6a5e5e7](https://github.com/event4u-app/agent-config/commit/6a5e5e76cea3d5f879f9fcda6e510cc73039826e))
1049
+
951
1050
  ## [7.0.1](https://github.com/event4u-app/agent-config/compare/7.0.0...7.0.1) (2026-06-22)
952
1051
 
953
1052
  ### Bug Fixes
package/README.md CHANGED
@@ -83,10 +83,12 @@ is platform operation, not a user-work flow.)
83
83
 
84
84
  > **Creative Pack — cinematic AI video.** script → character-locked image → motion+audio prompt → provider render → stitched clip, with `AIV_DRYRUN=true` as the cost-safety default. A first-class capability inside the **content / creator** experience — no longer the package's headline. See [`/video:from-script`](.augment/commands/video/from-script.md).
85
85
 
86
+ > **Legal Pack — not legal advice.** The EU/DE legal pack (contract/NDA/DPA review, triage) is a **research-and-drafting aid only** — it does not provide legal advice, does not replace a qualified lawyer, and must not be relied on for any concrete matter. It produces general information and general templates, never individual-case examination. Read [`LEGAL_NOTICE.md`](LEGAL_NOTICE.md) before use.
87
+
86
88
  <details>
87
89
  <summary><b>Catalog at a glance</b> — raw artefact counts (maintainer reference)</summary>
88
90
 
89
- [![Skills](https://img.shields.io/badge/Skills-251-orange?style=flat-square)](dist/agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-88-orange?style=flat-square)](dist/agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-161-orange?style=flat-square)](dist/agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-82-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-26-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/)
91
+ [![Skills](https://img.shields.io/badge/Skills-257-orange?style=flat-square)](dist/agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-91-orange?style=flat-square)](dist/agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-162-orange?style=flat-square)](dist/agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-84-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-26-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/)
90
92
 
91
93
  The headline is the **experience** (profile + packs), not the raw counts. Full catalog: [`docs/catalog.md`](docs/catalog.md).
92
94
  </details>
@@ -407,7 +409,7 @@ When a prompt matches a command's purpose ("setze ticket ABC-123 um" → `/imple
407
409
  | [**Migration**](docs/MIGRATION.md) | Per-version upgrade steps |
408
410
  | [**Showcase**](docs/showcase.md) | More examples & expected behavior |
409
411
 
410
- Browse content: [all 161 commands](dist/agent-src/commands/) · [skills catalog](docs/skills-catalog.md) · [full catalog](docs/catalog.md) · [`llms.txt`](llms.txt).
412
+ Browse content: [all 162 commands](dist/agent-src/commands/) · [skills catalog](docs/skills-catalog.md) · [full catalog](docs/catalog.md) · [`llms.txt`](llms.txt).
411
413
 
412
414
  ---
413
415
 
@@ -88,30 +88,39 @@ Neutrality — context-handoff).
88
88
 
89
89
  ### 2. Check the council is configured + price table fresh
90
90
 
91
- Council config lives in **`.ai-council.yml`**, NOT in `.agent-settings.yml`.
92
- The CLI (`scripts/ai_council/config.py:resolve_config_path`, per
93
- [ADR-093](../../../docs/decisions/ADR-093-ai-council-config-user-global.md))
91
+ Council config is **ALWAYS user-global** and lives in **`.ai-council.yml`**,
92
+ NOT in `.agent-settings.yml`, NOT in the project tree. The CLI
93
+ (`scripts/ai_council/config.ts:resolve_config_path`, per
94
+ [ADR-104](../../../docs/decisions/ADR-104-ai-council-config-global-only.md),
95
+ superseding [ADR-093](../../../docs/decisions/ADR-093-ai-council-config-user-global.md))
94
96
  resolves it — first hit wins:
95
97
 
96
- 1. Project-local `<project_root>/agents/settings/.ai-council.yml` (if present).
97
- 2. User-global `~/.event4u/agent-config/settings/.ai-council.yml` — default
98
- home; one global config serves every project.
98
+ 1. `$AI_COUNCIL_CONFIG` — explicit absolute path (tests / power users),
99
+ honoured even when absent. Explicit path, never a project search.
100
+ 2. User-global `~/.event4u/agent-config/settings/.ai-council.yml` — the one
101
+ and only home; this single global config serves every project.
99
102
 
100
- Keys are **top-level** (`enabled`, `defaults:`, `members:`). No `ai_council:`
101
- parent block; the legacy `ai_council.*` block under `.agent-settings.yml` was
102
- removed in ADR-093 — never read or recommend that path for council config.
103
+ No project-local lookup. The council never reads
104
+ `<project_root>/agents/settings/.ai-council.yml`, `scripts/ai_council`, or any
105
+ project file. Keys are **top-level** (`enabled`, `defaults:`, `members:`). No
106
+ `ai_council:` parent block; the legacy `ai_council.*` block under
107
+ `.agent-settings.yml` was removed in ADR-093 — never read or recommend that
108
+ path for council config.
103
109
 
104
110
  ```
105
- NEVER claim the council "needs `.agent-settings.yml` set up" or an
106
- `ai_council` block. The CLI's `resolve_config_path` is authoritative:
107
- run `council:estimate` (Step 3) and read its exit code + message before
108
- making any "not configured" claim. A user-global `.ai-council.yml` with
109
- `enabled: true` works from EVERY project, including consumer repos that
110
- have no project-local config.
111
+ THE COUNCIL CONFIG IS ALWAYS GLOBAL. NEVER SEARCH THE PROJECT FOR IT.
112
+ NEVER claim the council "is not configured in this project". Never read
113
+ project files — not `.agent-settings.yml`, not `scripts/ai_council` — to
114
+ decide that. The ABSENCE OF ANY COUNCIL FILE IN THE PROJECT SAYS NOTHING
115
+ about whether the council is configured. The CLI's `resolve_config_path`
116
+ is authoritative: run `council:estimate` (Step 3) and read its exit code
117
+ + message before making ANY "not configured" claim. A user-global
118
+ `.ai-council.yml` with `enabled: true` works from EVERY project —
119
+ consumer repos, fresh worktrees, any CWD — with zero per-project setup.
111
120
  ```
112
121
 
113
122
  CLI is the single source of truth for the configured-check — do not hand-parse
114
- the YAML to second-guess it. Map its outcomes (Step 4 exit codes + the
123
+ the YAML, and never eyeball the project tree, to second-guess it. Map its outcomes (Step 4 exit codes + the
115
124
  **CLI exits 2** cases below):
116
125
 
117
126
  - `enabled: false` (top-level in resolved `.ai-council.yml`) → CLI exits 2 with
@@ -278,10 +287,9 @@ council can act on the project directly.
278
287
  ## Failure modes
279
288
 
280
289
  - **CLI exits 2, "ai_council.enabled is false"** → tell the user to set
281
- top-level `enabled: true` in the resolved `.ai-council.yml` (user-global
282
- `~/.event4u/agent-config/settings/.ai-council.yml`, or project-local
283
- `<project_root>/agents/settings/.ai-council.yml`) — never in
284
- `.agent-settings.yml`. Do not flip it autonomously.
290
+ top-level `enabled: true` in the user-global
291
+ `~/.event4u/agent-config/settings/.ai-council.yml` — never in a project
292
+ file, never in `.agent-settings.yml`. Do not flip it autonomously.
285
293
  - **CLI exits 2, "no council member has `enabled: true`"** → list the
286
294
  install commands (`./agent-config keys:install-anthropic`,
287
295
  `./agent-config keys:install-openai`) and stop.
@@ -1,11 +1,15 @@
1
1
  {
2
2
  "command": "fix",
3
- "intent": "Fix-workflow dispatcher — ci, pr-comments, refs, seeder, portability",
3
+ "intent": "Fix-workflow dispatcher — ci, pr-comments, refs, seeder, portability, comments",
4
4
  "cases": [
5
5
  {
6
6
  "prompt": "fix the failing CI",
7
7
  "expected": "fix"
8
8
  },
9
+ {
10
+ "prompt": "simplify the code comments in my branch",
11
+ "expected": "fix"
12
+ },
9
13
  {
10
14
  "prompt": "fix the broken cross-references",
11
15
  "expected": "fix"
@@ -0,0 +1,101 @@
1
+ ---
2
+ model_tier: medium
3
+ name: fix-comments
4
+ pack: engineering-base
5
+ tier: 2
6
+ visibility: internal
7
+ cluster: fix
8
+ sub: comments
9
+ skills: [code-refactoring, quality-tools, git-workflow]
10
+ description: Review the code comments touched by the current branch and simplify, shorten, or remove each one
11
+ suggestion:
12
+ eligible: true
13
+ trigger_description: "simplify the comments in my branch, clean up code comments, remove redundant comments from my changes, trim comment noise"
14
+ trigger_context: "a feature branch with code changes pending review"
15
+ workspaces:
16
+ - agent-config-maintainer
17
+ packs:
18
+ - meta
19
+ ---
20
+
21
+ # /fix comments
22
+ ## Instructions
23
+
24
+ Audit every code comment that the current branch added or changed and
25
+ apply the smallest edit that makes each one earn its place — simplify,
26
+ shorten, or remove. **Comment text only — never touch executable code.**
27
+
28
+ ### 1. Gather the changed comments
29
+
30
+ - Current branch: `git branch --show-current`. If it is the default
31
+ branch (`main` / `master`) → nothing to review, stop.
32
+ - Resolve the base and collect the diff (mirrors `/review-changes`):
33
+ - `git diff --merge-base origin/main..HEAD` — committed changes vs. base
34
+ - `git diff` — unstaged changes on top
35
+ - Scope the audit to **comments on lines the branch added or modified**
36
+ (inside the diff hunks). Do **not** audit comments in untouched files
37
+ or untouched regions — that is scope creep (`minimal-safe-diff`).
38
+
39
+ If both diffs are empty → stop, nothing to review.
40
+
41
+ ### 2. Classify each comment
42
+
43
+ For every comment in the changed regions, assign one verdict:
44
+
45
+ | Verdict | When |
46
+ |---|---|
47
+ | **Remove** | Restates what the code already says (`// increment i`); commented-out code; obvious noise; stale comment that now contradicts the code; a TODO that is already done. |
48
+ | **Shorten** | Correct but verbose — multi-line where one line is enough, ceremony, filler. |
49
+ | **Simplify** | Right intent, unclear wording — tighten the phrasing without losing meaning. |
50
+ | **Keep** | Explains *why* (rationale, gotcha, non-obvious constraint, link to an issue), or is load-bearing per the guard list below. |
51
+
52
+ The bar: a comment earns its place only when it tells the reader
53
+ something the code cannot. Default to **Keep** whenever intent is unclear.
54
+
55
+ ### 3. Never touch — guard list
56
+
57
+ These look like comments but are load-bearing. Leave them exactly as-is:
58
+
59
+ - **Tool directives** — PHPDoc that static analysis reads (`@var`,
60
+ `@param`, `@return`, `@template`, `@phpstan-*`, `@psalm-*`);
61
+ `// @ts-expect-error`, `// @ts-ignore`, `// eslint-disable*`;
62
+ `# type: ignore`, `# noqa`, `# pragma`, `# pylint:`; Rector / ECS /
63
+ Biome markers.
64
+ - **License / copyright headers** and SPDX identifiers.
65
+ - **Public-API doc blocks** that generate documentation, unless the
66
+ comment is plainly wrong.
67
+ - `@deprecated`, `@see`, security notes, and any "why" note.
68
+ - i18n / translation keys.
69
+
70
+ When unsure whether a comment is load-bearing → **keep it**.
71
+
72
+ ### 4. Apply the edits
73
+
74
+ - Edit each comment per its verdict with the smallest possible change.
75
+ - Preserve indentation and the file's comment style; match the
76
+ comment's existing language.
77
+ - Do **not** reflow, reformat, or re-indent the surrounding code
78
+ (`minimal-safe-diff`).
79
+
80
+ ### 5. Verify
81
+
82
+ - If any doc-comment or annotation was edited in a typed language, run
83
+ the project's type-checker / linter on the changed files (see
84
+ `quality-tools`) to confirm nothing removed was load-bearing.
85
+ - `git diff` — confirm the only changed lines are comment lines.
86
+
87
+ ### Output
88
+
89
+ A summary table, then the totals:
90
+
91
+ | File:line | Verdict | Before → After |
92
+ |---|---|---|
93
+
94
+ `Reviewed N · removed X · shortened Y · simplified Z · kept K.`
95
+
96
+ ### Rules
97
+
98
+ - **Do NOT commit or push.** Only apply local edits.
99
+ - **Comments only.** Never alter executable code — only comment text or
100
+ whole-comment removal.
101
+ - When a comment's intent is unclear, keep it and note it in the summary.
@@ -3,8 +3,8 @@ model_tier: medium
3
3
  name: fix
4
4
  disable-model-invocation: true
5
5
  pack: engineering-base
6
- intent: "Fix-workflow dispatcher — ci, pr-comments, refs, seeder, portability"
7
- routes_to: [fix-ci, fix-pr-comments, fix-refs, fix-seeder, fix-portability]
6
+ intent: "Fix-workflow dispatcher — ci, pr-comments, refs, seeder, portability, comments"
7
+ routes_to: [fix-ci, fix-pr-comments, fix-refs, fix-seeder, fix-portability, fix-comments]
8
8
  replaces: []
9
9
  tier: 1
10
10
  visibility: advanced
@@ -36,6 +36,7 @@ with a single entry point + sub-command dispatch.
36
36
  | `/fix portability` | `commands/fix/portability.md` | Find and fix project-specific references in shared `.augment/` files |
37
37
  | `/fix seeder` | `commands/fix/seeder.md` | Scan seeder data files for broken FK references |
38
38
  | `/fix pr-comments` | `commands/fix/pr-comments.md` | Fix and reply to all open review comments — **bot + human, classified per comment**; dedupes by comment id + reply marker |
39
+ | `/fix comments` | `commands/fix/comments.md` | Review the **code comments** in the current branch's diff and simplify, shorten, or remove each one (≠ `pr-comments`, which targets GitHub review threads) |
39
40
 
40
41
  Sub-command names match the locked contract in
41
42
  [`docs/contracts/command-clusters.md`](../docs/contracts/command-clusters.md).
@@ -52,6 +53,7 @@ the `auto_detect` kill-switch, rollback). Detection table:
52
53
  | CI run failing / "fix CI" / a CI log in context | `fix/ci` | HIGH |
53
54
  | Broken cross-references named (`/fix refs`, ref-check output) | `fix/refs` | HIGH |
54
55
  | PR review comments are the target (any "address review", PR # in context) | `fix/pr-comments` (it then resolves bot/human/both) | HIGH |
56
+ | Source-code comments are the target ("simplify/clean up the comments in my branch", "trim comment noise") | `fix/comments` | HIGH |
55
57
  | Seeder / FK breakage named | `fix/seeder` | HIGH |
56
58
  | Project-specific leakage in shared package named | `fix/portability` | MEDIUM |
57
59
  | No clear signal, or ≥ 2 conflict | — | LOW → menu (interactive) / `ambiguous_routing` (CI) |
@@ -77,6 +79,7 @@ into it and removed.
77
79
  > 3. portability — purge project-specific refs from shared package
78
80
  > 4. seeder — scan seeders for broken FK references
79
81
  > 5. pr-comments — address open review comments (bot / human / both)
82
+ > 6. comments — simplify / shorten / remove code comments in the branch diff
80
83
 
81
84
  ## Rules
82
85
 
@@ -0,0 +1,65 @@
1
+ # Auto-Dispatch Classification (v1 — deterministic)
2
+
3
+ Decides whether a task is **delegable** to subagents, and to which
4
+ `subagent-orchestration` mode. v1 is **rule-based and deterministic** — no
5
+ per-turn LLM meta-call. Classification is the control plane for auto-dispatch;
6
+ keeping it cheap and predictable is the point.
7
+
8
+ ## The Iron Law — ambiguity never spawns
9
+
10
+ ```
11
+ A TASK IS DELEGABLE ONLY ON AN ENUMERATED SIGNAL BELOW.
12
+ AMBIGUITY DEFAULTS TO ask / no-op — NEVER SPECULATIVE SPAWN.
13
+ NO PER-TURN LLM CLASSIFICATION CALL IN v1.
14
+ ```
15
+
16
+ ## Delegable signals (v1)
17
+
18
+ A task is classified **delegable** when **any** of these holds:
19
+
20
+ 1. **Declared parallel** — the skill/command in play carries
21
+ `parallelizable: steps | files | independent` in its frontmatter.
22
+ - `steps` → ordered plan → `do-in-steps`.
23
+ - `files` / `independent` → independent slices → `do-in-parallel`.
24
+ 2. **Ordered-plan structure** — the task is an explicit ordered plan (numbered
25
+ steps / a roadmap phase / a checklist) → `do-in-steps`.
26
+ 3. **Independent-slices structure** — N independent targets of the same shape
27
+ (e.g. "review these 5 files", "convert each adapter") → `do-in-parallel`.
28
+
29
+ AND the **task-size floor** is cleared: the task's estimated size exceeds a
30
+ minimum (trivial one-line edits never delegate — the dispatch overhead
31
+ dwarfs the work). Below the floor → in-session.
32
+
33
+ ## Not delegable (in-session)
34
+
35
+ - Trivial / single-step edits below the size floor.
36
+ - Tasks with cross-step shared mutable state that cannot be sliced.
37
+ - Anything that fails to match a signal above → **no-op** (in-session),
38
+ or **ask** when `subagents.auto == ask` and the shape is borderline.
39
+
40
+ ## Mode selection summary
41
+
42
+ | Signal | Mode |
43
+ |---|---|
44
+ | `parallelizable: steps` / ordered plan | `do-in-steps` |
45
+ | `parallelizable: files\|independent` / independent slices | `do-in-parallel` |
46
+ | change needing verification (any of the above) | implementer + cross-model judge per the `subagent-orchestration` Iron Law |
47
+
48
+ ## v2+ (deferred, gated on Phase 6 evidence)
49
+
50
+ LLM-based classification — only if the deterministic rules prove too coarse
51
+ **and** the Phase-6 benchmark justifies the meta-call cost. It must be
52
+ budgeted (consume part of the N=3 autonomous budget) and opt-in. Not in v1.
53
+
54
+ ## Reference implementation
55
+
56
+ The deterministic rules are encoded in
57
+ [`src/scripts/_lib/auto_dispatch.ts`](../../../../src/scripts/_lib/auto_dispatch.ts)
58
+ (`classifyTask`), covered by
59
+ [`tests/scripts/_lib_auto_dispatch.test.ts`](../../../../tests/scripts/_lib_auto_dispatch.test.ts).
60
+
61
+ ## Related
62
+
63
+ - [`auto-orchestration-activation`](auto-orchestration-activation.md) — the enable/auto/manifest gate that runs before classification.
64
+ - [`subagent-orchestration`](../../skills/subagent-orchestration/SKILL.md) — the modes this selects.
65
+ - [`autonomous-execution`](../../rules/autonomous-execution.md) — the N=3 budget any LLM-classification v2 must respect.
@@ -0,0 +1,68 @@
1
+ # Auto-Orchestration Activation
2
+
3
+ How the `subagents.*` keys in `.agent-settings.yml` resolve into automatic
4
+ subagent dispatch at runtime. Companion to
5
+ [`subagent-configuration`](../subagent-configuration.md) (which covers the
6
+ model / parallelism keys) and
7
+ [`host-capability-manifest`](host-capability-manifest.md) (which decides
8
+ whether dispatch is physically possible on the host).
9
+
10
+ ## Settings
11
+
12
+ | Key | Default | Purpose |
13
+ |---|---|---|
14
+ | `subagents.enabled` | `true` | Global master switch. `false` = the whole layer is off — the canonical kill-switch. No auto-dispatch, no routing, everything runs in-session. |
15
+ | `subagents.auto` | `ask` | Auto-dispatch mode: `off` \| `ask` \| `on`. |
16
+ | `subagents.downshift` | `true` | Route delegable sub-tasks to the lowest-capable tier (Phase 2). |
17
+ | `subagents.quota_arbitrage` | `true` | Prefer a separate-quota-pool model where the host manifest allows it (Phase 2 bonus). |
18
+ | `subagents.model_map` | `{}` | Optional per-tier model override for downshift routing. |
19
+ | `subagents.host_capabilities` | `{}` | Optional override of the host-capability manifest. |
20
+
21
+ ## Activation decision
22
+
23
+ For any task, auto-dispatch is attempted **only when all hold**:
24
+
25
+ ```
26
+ subagents.enabled == true
27
+ AND subagents.auto != off
28
+ AND host_manifest.subagent_spawn == true
29
+ AND the task is classified delegable (see auto-dispatch-classification.md)
30
+ ```
31
+
32
+ If any condition fails → **in-session execution**, no subagent. This is the
33
+ safe path: a missing/false manifest field, a disabled switch, or an
34
+ unclassifiable task all degrade silently to single-agent.
35
+
36
+ ## `auto` mode behaviour
37
+
38
+ | Mode | When task is delegable | When not delegable |
39
+ |---|---|---|
40
+ | `off` | never dispatch (explicit command only) | in-session |
41
+ | `ask` | ask once, then dispatch on yes (per `user-interaction`) | in-session |
42
+ | `on` | dispatch; surface the chosen mode in one line | in-session |
43
+
44
+ Under `ask` and `on`, the chosen `subagent-orchestration` mode and the
45
+ per-subtask tiers are surfaced before/at dispatch — never silent.
46
+
47
+ ## Resolution order
48
+
49
+ 1. Read `subagents.*` once per run; cache for the run (no re-read mid-loop),
50
+ mirroring [`subagent-configuration § When settings change`](../subagent-configuration.md).
51
+ 2. Resolve the host-capability manifest once (cached) per
52
+ [`host-capability-manifest`](host-capability-manifest.md).
53
+ 3. Apply the activation decision above per task.
54
+
55
+ ## Safety floors are never lifted
56
+
57
+ Auto-dispatch never bypasses a floor. The cross-model judge Iron Law
58
+ (`subagent-orchestration`), `verify-before-complete`, the N=3 autonomous
59
+ budget, `scope-control`, and `non-destructive-by-default` all apply to
60
+ auto-delegated work exactly as they do to in-session work. `enabled: false`
61
+ disables the layer; it never disables a floor.
62
+
63
+ ## Related
64
+
65
+ - [`subagent-configuration`](../subagent-configuration.md) — model / parallelism keys.
66
+ - [`host-capability-manifest`](host-capability-manifest.md) — the per-host gate.
67
+ - [`auto-dispatch-classification`](auto-dispatch-classification.md) — what counts as delegable.
68
+ - [`orchestration-telemetry`](orchestration-telemetry.md) — what each dispatch records.
@@ -0,0 +1,68 @@
1
+ # Host-Capability Manifest
2
+
3
+ Resolved once per session by the **agent** (not a long-running process) and
4
+ cached for the rest of the session. Tells the orchestration layer which
5
+ subagent primitives the current host actually exposes, so auto-dispatch never
6
+ attempts a primitive the host cannot run.
7
+
8
+ ## Schema
9
+
10
+ A single JSON object, `schema_version: 1`:
11
+
12
+ ```json
13
+ {
14
+ "schema_version": 1,
15
+ "subagent_spawn": false,
16
+ "parallel_spawn": false,
17
+ "status_polling": false,
18
+ "separate_quota_pool": false
19
+ }
20
+ ```
21
+
22
+ ## Resolution
23
+
24
+ The agent fills the manifest from two inputs, in order:
25
+
26
+ 1. The agent's own knowledge of the **current host** and its documented
27
+ subagent primitives.
28
+ 2. An **optional** settings override `subagents.host_capabilities` in
29
+ `.agent-settings.yml`. Any field present there wins for that field; any
30
+ field omitted falls back to the safe default below.
31
+
32
+ The manifest is resolved once and cached — the agent does not re-resolve it
33
+ mid-session.
34
+
35
+ ## Safe default — unknown host assumes nothing
36
+
37
+ ```
38
+ SAFE DEFAULT = ALL FIELDS false.
39
+ AN UNKNOWN HOST IS ASSUMED TO HAVE NO SUBAGENT PRIMITIVE.
40
+ A MISSING OR INVALID FIELD IS false, NEVER true.
41
+ ```
42
+
43
+ This is a hard rule. When the host is unrecognized, or a field is absent /
44
+ malformed in the override, the field resolves to `false`. The orchestration
45
+ layer then degrades to in-session execution rather than attempting an
46
+ unsupported primitive.
47
+
48
+ ## Fields
49
+
50
+ | Field | Type | Gates downstream |
51
+ |---|---|---|
52
+ | `subagent_spawn` | bool | Any delegation at all. `false` → no subagent is ever spawned; everything runs in-session. |
53
+ | `parallel_spawn` | bool | Concurrent dispatch of multiple subagents. `false` → delegation is serial, one subagent at a time. |
54
+ | `status_polling` | bool | Monitoring running subagents (progress / completion checks). `false` → fire-and-collect only, no mid-run polling. |
55
+ | `separate_quota_pool` | bool | Quota-arbitrage bonus (Phase 2) — subagents draw from a distinct quota pool than the session. `false` → assume shared quota. |
56
+
57
+ A field being `true` is a **precondition**, not a mandate: `parallel_spawn:
58
+ true` permits concurrency but the dispatch cap still applies (see
59
+ `subagents.max_parallel` in subagent-configuration.md).
60
+
61
+ ## Related
62
+
63
+ - [`subagent-configuration`](../subagent-configuration.md) — the `subagents.*`
64
+ settings keys and the model / parallelism resolution this manifest sits
65
+ alongside.
66
+ - [`orchestration-telemetry`](orchestration-telemetry.md) — records what the
67
+ resolved manifest actually enabled per dispatch.
68
+ Phase-0 substrate belongs to.