@event4u/agent-config 12.0.0 → 12.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.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +122 -0
- package/agents/templates/.ai-council.yml.example +46 -3
- package/dist/agent-src/contexts/model-recommendations.md +6 -4
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +1 -0
- package/dist/agent-src/scripts/roadmap_gates.ts +30 -2
- package/dist/agent-src/scripts/update_roadmap_progress.ts +32 -1
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +7 -7
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/roadmaps.md +41 -3
- package/dist/cli/registry.js +1 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/chunk-K34QTSD5.js +3895 -0
- package/dist/cli-delegate/{chunk-L565YFXH.js → chunk-LKZ5DOYW.js} +557 -297
- package/dist/cli-delegate/{chunk-NN4KW4HZ.js → chunk-O52B4F5S.js} +123 -2338
- package/dist/cli-delegate/cmd_conformance.js +4 -4
- package/dist/cli-delegate/cmd_doctor.js +2 -2
- package/dist/cli-delegate/cmd_export.js +1 -1
- package/dist/cli-delegate/cmd_handoff.js +1 -1
- package/dist/cli-delegate/cmd_prune.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +1 -1
- package/dist/cli-delegate/cmd_uninstall.js +1 -1
- package/dist/cli-delegate/cmd_validate.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +4 -4
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +1 -1
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +2 -2
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +2 -2
- package/dist/hooks/dispatch.js +2574 -1080
- package/dist/install/install.mjs +744 -482
- package/dist/mcp/registry-manifest.json +2 -2
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +113 -10
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/model_tier.js +9 -0
- package/dist/scripts/_lib/model_tier.js.map +1 -1
- package/dist/scripts/condense.js +50 -0
- package/dist/scripts/condense.js.map +1 -1
- package/docs/MIGRATION.md +20 -1
- package/package.json +1 -1
- package/src/agent-src/scripts/roadmap_gates.ts +30 -2
- package/src/agent-src/scripts/update_roadmap_progress.ts +32 -1
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-coverage.yml +39 -9
- package/src/config/gate-violation-baselines.json +6 -0
- package/src/config/hook-token-budget.json +7 -1
- package/src/config/preamble-payload-budget.json +28 -0
- package/src/scripts/_dispatch.bash +10 -0
- package/src/scripts/_lib/git_common_dir.ts +173 -0
- package/src/scripts/_lib/model_tier.ts +9 -0
- package/src/scripts/_lib/release_highlights.ts +108 -7
- package/src/scripts/_lib/skill_catalogue.ts +862 -0
- package/src/scripts/ai_council/clients.ts +182 -3
- package/src/scripts/ai_council/config.ts +16 -1
- package/src/scripts/ai_council/low_impact.ts +14 -1
- package/src/scripts/ai_council/orchestrator.ts +14 -1
- package/src/scripts/ai_council/transport_resolver.ts +32 -2
- package/src/scripts/capture_skill_catalogue.ts +185 -328
- package/src/scripts/check_branch_freshness.ts +7 -1
- package/src/scripts/check_release_published.ts +6 -2
- package/src/scripts/check_release_trunk_sync.ts +18 -2
- package/src/scripts/condense.ts +50 -1
- package/src/scripts/dispatch_r2_reviewer.ts +15 -5
- package/src/scripts/evidence_report.ts +15 -4
- package/src/scripts/hook_manifest.yaml +47 -13
- package/src/scripts/hooks/concern_registry.ts +2 -0
- package/src/scripts/hooks/orchestration_record_hook.ts +21 -0
- package/src/scripts/hooks/tool_result_bytes_hook.ts +219 -0
- package/src/scripts/hot_context_hook.ts +13 -1
- package/src/scripts/install.ts +129 -0
- package/src/scripts/janitor.ts +77 -2
- package/src/scripts/lint_plan_risk_register.ts +22 -9
- package/src/scripts/lint_roadmap_blockers.ts +109 -6
- package/src/scripts/lint_scheduled_deprecations.ts +738 -0
- package/src/scripts/migration_status.ts +17 -1
- package/src/scripts/probe_review_binding_drift.ts +731 -0
- package/src/scripts/release.ts +95 -1
- package/src/scripts/schemas/command.schema.json +2 -2
- package/src/scripts/schemas/skill.schema.json +2 -1
- package/src/scripts/schemas/subagent.schema.json +2 -2
- package/src/scripts/session_eol_report.ts +81 -0
- package/src/scripts/workspace_doctor.ts +464 -0
- package/src/scripts/worktree_cleanup_check.ts +2 -1
- package/dist/cli-delegate/chunk-AYKQGIBG.js +0 -1594
|
@@ -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": "12.
|
|
9
|
+
"version": "12.1.0",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"agent-config",
|
|
12
12
|
"skills",
|
package/CHANGELOG.md
CHANGED
|
@@ -357,6 +357,128 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
|
|
|
357
357
|
> that forces a new era split (`# Era: 12.1.x`, etc.) — see
|
|
358
358
|
> [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
|
|
359
359
|
|
|
360
|
+
## [12.1.0](https://github.com/event4u-app/agent-config/compare/12.0.0...12.1.0) (2026-08-16)
|
|
361
|
+
|
|
362
|
+
### Release highlights
|
|
363
|
+
|
|
364
|
+
<!-- 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. -->
|
|
365
|
+
- **Behaviour changes:** _auto-derived, rewrite before merge:_ rule/schema diffs, breaking commits or removed public surface in 3b06e61, 5861eab, 78c3a31.
|
|
366
|
+
- **Default changes + migration:** _auto-derived, rewrite before merge:_ commits naming a default, migration or migrate in ad1fdd5, 1dd2211.
|
|
367
|
+
- **Security and correctness:** _auto-derived, rewrite before merge:_ security-scoped commits or fixes to executable surface in f5873b2, a05cd1c, f92bc37, 33c7c20, cdae71b, 5efb150 +8 more.
|
|
368
|
+
- **Honest nulls:** _auto-derived, rewrite before merge:_ commits recording a null, waived or falsified result in 7e2ee70, 03732f5, 87b85c4, c94b9ee, 5ba91ea.
|
|
369
|
+
- **Known limitations:** _none_
|
|
370
|
+
|
|
371
|
+
### Features
|
|
372
|
+
|
|
373
|
+
* **telemetry:** make an unmapped band distinguishable from a silent host ([6ebce93](https://github.com/event4u-app/agent-config/commit/6ebce93068075f7ed7a087ede2ad439bb288791c))
|
|
374
|
+
* **tiers:** reopen ADR-035 and add the frontier band ([78c3a31](https://github.com/event4u-app/agent-config/commit/78c3a311efdc53425a396029bb2477c1cac26cca))
|
|
375
|
+
* **gates:** probe blockers for decidability, on a ratchet ([024ab06](https://github.com/event4u-app/agent-config/commit/024ab0664df6c15f39c54c16f5f79dde184d1ad6))
|
|
376
|
+
* **gates:** lead with the recommendation, and say when there is none ([d7d6dba](https://github.com/event4u-app/agent-config/commit/d7d6dbace4b3c874f89cc2b60363b068ea908eb8))
|
|
377
|
+
* **release:** refuse a major cut with an overdue scheduled deprecation ([b09374a](https://github.com/event4u-app/agent-config/commit/b09374afc6d83189abd79d11e28976caa059e438))
|
|
378
|
+
* **gates:** check scheduled deprecations by arithmetic, not by memory ([dfc8088](https://github.com/event4u-app/agent-config/commit/dfc8088698c25a26ad5729a291cfbe2c0e153055))
|
|
379
|
+
* **janitor:** collect session-scoped state, and print the zero ([eaba741](https://github.com/event4u-app/agent-config/commit/eaba741def2af781e8fd93a13c56616e09efd66e))
|
|
380
|
+
* **context:** read state-destroyed and state-captured together ([53c9d3b](https://github.com/event4u-app/agent-config/commit/53c9d3b739f8bf71c9a8833be63e529f94f03c08))
|
|
381
|
+
* **context:** meter tool results, and capture before compaction ([bc20d3e](https://github.com/event4u-app/agent-config/commit/bc20d3e6cce59e91d75204aedc106fdde95076a4))
|
|
382
|
+
* **evidence:** probe which review-binding hash segment actually moves ([4183ac0](https://github.com/event4u-app/agent-config/commit/4183ac017b64481c86035020f7dabaea5933566b))
|
|
383
|
+
* **release-head:** derive the correctness half, and recorded nulls beyond the marker ([5ba91ea](https://github.com/event4u-app/agent-config/commit/5ba91ea4f9c227fe0b82e95f8eebb452cc78bc16))
|
|
384
|
+
* **install:** ask an existing install about scoped projection, on measured evidence ([fc8046a](https://github.com/event4u-app/agent-config/commit/fc8046a3e79ac6c111cde763aaf90f0a2bb9c89d))
|
|
385
|
+
* **cli:** workspace:doctor — read-only identity and worktree pressure ([98c24cb](https://github.com/event4u-app/agent-config/commit/98c24cbed5cd42b75abf4a37d4ee08936305d698))
|
|
386
|
+
* **workspace:** one resolver for the five workspace-identity questions ([c8a5ec3](https://github.com/event4u-app/agent-config/commit/c8a5ec3c4ad58a4d1456f6c1b1fd6166606df5a4))
|
|
387
|
+
* **install:** warn when a deploy crosses a MEASURED host catalogue limit ([794698b](https://github.com/event4u-app/agent-config/commit/794698beb49c35d65ee1361c668f9de264e17eb3))
|
|
388
|
+
* **catalogue:** read codex truncation off the host instead of a self-report ([dc5bf40](https://github.com/event4u-app/agent-config/commit/dc5bf40647fd83525b43b675cce63180c2a255e2))
|
|
389
|
+
* **install:** warn when a host drops most of the catalogue it was handed ([358304c](https://github.com/event4u-app/agent-config/commit/358304c73bef17573e4bb7ff6915bf1dd14f99f2))
|
|
390
|
+
* **catalogue:** read codex truncation off the host event, per host ([7514d64](https://github.com/event4u-app/agent-config/commit/7514d649d566d1e40f8d5f8ae9604370ef575906))
|
|
391
|
+
|
|
392
|
+
### Bug Fixes
|
|
393
|
+
|
|
394
|
+
* **rules:** revert the scoping pass — the routing matrix refuted all four ([3b06e61](https://github.com/event4u-app/agent-config/commit/3b06e61f1adb960168ca5481d4c6227c1ccd9c43))
|
|
395
|
+
* **rules:** scope the four rules that can be, and record why fifteen cannot ([5861eab](https://github.com/event4u-app/agent-config/commit/5861eabd267b63c8547a498cc894f345c9b58bcb))
|
|
396
|
+
* **review:** re-derive the prompt_hash after the round-3 re-bind ([6fa3037](https://github.com/event4u-app/agent-config/commit/6fa30379de34427d340b50c8a4bdea1dd885ba71))
|
|
397
|
+
* close round 3's low findings, and correct their dispositions ([f5873b2](https://github.com/event4u-app/agent-config/commit/f5873b283cd6beb59528f346a552a60846f9ae9d))
|
|
398
|
+
* **gates:** stop reporting green over zero comparisons ([a05cd1c](https://github.com/event4u-app/agent-config/commit/a05cd1cd223c60de70c980d07ecbe8bb154217e5))
|
|
399
|
+
* **gates:** read a withdrawn commitment as a tracked state ([a73a563](https://github.com/event4u-app/agent-config/commit/a73a563b83e635eb467d20a1b20a9fdc8fcd09ad))
|
|
400
|
+
* **gates:** close review round 2 — 12 findings ([f92bc37](https://github.com/event4u-app/agent-config/commit/f92bc375fb948fe92f1fa50691d6eb0605236128))
|
|
401
|
+
* **rules:** stop scoping from silently deleting a rule's keyword reach ([33c7c20](https://github.com/event4u-app/agent-config/commit/33c7c201211d39ec68f3333773a6a9957ab94b20))
|
|
402
|
+
* **evidence:** correct the paths-coverage headline, and the finding under it ([21651b5](https://github.com/event4u-app/agent-config/commit/21651b508742dff1ea1c935533e5a00ef7181b00))
|
|
403
|
+
* **gates:** measure the cut against the target, and close the review's 11 findings ([cdae71b](https://github.com/event4u-app/agent-config/commit/cdae71b306da55b6dbb1aa6122c5f228eee98a6a))
|
|
404
|
+
* **roadmap-writing:** keep the blocker guidance inside the 400-line skill cap ([4e041c1](https://github.com/event4u-app/agent-config/commit/4e041c1db8ded58bc52a267c0c7be5288b4402a8))
|
|
405
|
+
* **review:** re-bind every manifest segment, not just the scope ([6f62fa3](https://github.com/event4u-app/agent-config/commit/6f62fa3165c0284047a243f646d8c05e9422ad01))
|
|
406
|
+
* **evidence:** address all nine R2 findings, and the ratio tightens ([5efb150](https://github.com/event4u-app/agent-config/commit/5efb15097a8567ce2666b06669dbcbdb45e90bfb))
|
|
407
|
+
* **release-head:** close the four code findings, one of them a true positive I had narrowed away ([c94b9ee](https://github.com/event4u-app/agent-config/commit/c94b9eebd386296f3f3dbfc65f598d71354b1196))
|
|
408
|
+
* **workspace:** repair the review's three high findings and six others ([6c3f220](https://github.com/event4u-app/agent-config/commit/6c3f220a17ae68cfe96ff0bd269a962b1a139b7b))
|
|
409
|
+
* **evidence:** anonymise a named third-party service in the harvest register ([9f895bd](https://github.com/event4u-app/agent-config/commit/9f895bde48c4d9907d0a1df971f4d41e7a1cd3e2))
|
|
410
|
+
* **review:** close the twelve completion-review findings ([2bf0c47](https://github.com/event4u-app/agent-config/commit/2bf0c479582fae419a6bc634f6380c3aaefa56b8))
|
|
411
|
+
* **ai-team:** stop pinning a model the codex transport refuses ([272dcd0](https://github.com/event4u-app/agent-config/commit/272dcd001bcf9f3dea3db1a9c26ff4ab0f3a35d0))
|
|
412
|
+
* **catalogue:** drop unused imports from the split library and fix the test helper ([81428a0](https://github.com/event4u-app/agent-config/commit/81428a07d7140869d9c01ac9e4f9d957f728deeb))
|
|
413
|
+
* **council:** the DEGRADED marker shipped on stdout and not on the artefact ([a4af80c](https://github.com/event4u-app/agent-config/commit/a4af80ccbdd21b0620a9536eae92d5ffacb4bd43))
|
|
414
|
+
* **council:** the openai seat was dead on every subscription account ([7ec3246](https://github.com/event4u-app/agent-config/commit/7ec32467645617c33eb5c010ae5bde580478be72))
|
|
415
|
+
* **council:** repair the openai seat, dead for three independent reasons ([d1f8f3b](https://github.com/event4u-app/agent-config/commit/d1f8f3b7e3b9c4d66113761f8d695251d735ea3a))
|
|
416
|
+
|
|
417
|
+
### Documentation
|
|
418
|
+
|
|
419
|
+
* **review:** re-bind round 3 to the final scope ([ddbecf1](https://github.com/event4u-app/agent-config/commit/ddbecf18679a8a6c3d296de7e89ebf685bba671a))
|
|
420
|
+
* **review:** re-bind round 2 to the fixed scope ([005ed2b](https://github.com/event4u-app/agent-config/commit/005ed2b9504908f739602bb46140e6d1d2b8506c))
|
|
421
|
+
* **roadmaps:** resolve the code-graph and trigger-eval blockers ([7e2ee70](https://github.com/event4u-app/agent-config/commit/7e2ee701dafd9836209ed125ccdba505d344a31d))
|
|
422
|
+
* **roadmap:** make the code-graph blocker decidable, and lower the ratchet ([9a1cc8a](https://github.com/event4u-app/agent-config/commit/9a1cc8a78a1a97158d833b44755c4ccb89a49e1d))
|
|
423
|
+
* **roadmaps:** make the three remaining blockers decidable ([2fb8a38](https://github.com/event4u-app/agent-config/commit/2fb8a38a6505579711f2ec782f5d7a3dfe589e53))
|
|
424
|
+
* **review:** re-bind the completion review to the fixed scope ([1a884c7](https://github.com/event4u-app/agent-config/commit/1a884c7dde2f2b531d7cce664c0f5c57b19988a7))
|
|
425
|
+
* **review:** R2 completion review for feat-scheduled-deprecation ([ee6db3a](https://github.com/event4u-app/agent-config/commit/ee6db3a716605f7c221289b726d36ecff327eca1))
|
|
426
|
+
* **roadmap:** close release-head-truth on the two maintainer decisions ([0c11537](https://github.com/event4u-app/agent-config/commit/0c1153797673097f2d89333741a37a56cd6bac30))
|
|
427
|
+
* **roadmaps:** a blocker must be decidable, not merely described ([fdbc469](https://github.com/event4u-app/agent-config/commit/fdbc469667954c6183289425ffc86e1350a26569))
|
|
428
|
+
* **migration:** give the two loose surfaces a tracked state ([ad1fdd5](https://github.com/event4u-app/agent-config/commit/ad1fdd561e84b171106574a79352d8be61c38aa3))
|
|
429
|
+
* **review:** re-bind after the main merge moved the base ([e11f113](https://github.com/event4u-app/agent-config/commit/e11f1137effad9149bdf12555d65cb8cefc7edbd))
|
|
430
|
+
* **review:** re-bind to the post-finding scope ([49b1b7c](https://github.com/event4u-app/agent-config/commit/49b1b7c95ce2ffca4a59294fe16ce1f8938d1c95))
|
|
431
|
+
* **evidence:** re-check the scoped-projection claim live after merging main ([67bd479](https://github.com/event4u-app/agent-config/commit/67bd4797ccf07881a7d6c1c5c95edd72ea7b472e))
|
|
432
|
+
* **evidence:** the window null, the paths census, and a dated payload route ([82daf5e](https://github.com/event4u-app/agent-config/commit/82daf5e5d8b3afaee29991251d50622c21e610fc))
|
|
433
|
+
* **roadmaps:** five roadmaps from the 2026-08-d inbox harvest ([3b8f6ee](https://github.com/event4u-app/agent-config/commit/3b8f6ee3a3ca60fac50c2c924c6ff601c88dc347))
|
|
434
|
+
* **review:** re-bind the R2 artefact to the fixed scope, all eleven dispositions terminal ([1ab43c8](https://github.com/event4u-app/agent-config/commit/1ab43c8ac1a1b09c1b6b040132ac5d8cc7afe035))
|
|
435
|
+
* **review:** re-bind the R2 artefact after the fix pass, all nine terminal ([6c03182](https://github.com/event4u-app/agent-config/commit/6c03182ac98223f12ad7c8f96712d43bfe68e9f3))
|
|
436
|
+
* **roadmap:** register the AC 3 decision as a blocker so the gates surface it ([acbe275](https://github.com/event4u-app/agent-config/commit/acbe275c5f0dbe1172d7b2a162fbcf0b526fdd03))
|
|
437
|
+
* **contracts:** say that falsifier 2 has fired, instead of re-affirming the lock over it ([03732f5](https://github.com/event4u-app/agent-config/commit/03732f5dafacc9326b9d2a5db8da7932144f4063))
|
|
438
|
+
* **evidence:** state the three scopes, fix the honest-null split, drop the line citations ([87b85c4](https://github.com/event4u-app/agent-config/commit/87b85c499e4e50468a4f609df85d8a4a94407853))
|
|
439
|
+
* **review:** R2 completion review of the drift probe - 9 findings ([9d9ece9](https://github.com/event4u-app/agent-config/commit/9d9ece9efd3093e129b8547e88063e6b30d6d7cf))
|
|
440
|
+
* **review:** record the R2 findings before fixing any of them ([9ee99ce](https://github.com/event4u-app/agent-config/commit/9ee99ce8e0d6cc6acde3d39ed2f8b11799359ab3))
|
|
441
|
+
* **evidence:** Phase 2 stops - code causes 79 percent of re-binds ([e3b035c](https://github.com/event4u-app/agent-config/commit/e3b035ce8b50918e857a88993c8710f9488cbb23))
|
|
442
|
+
* **roadmap:** close release-head-truth Phases 1 to 3, leave AC 3 open on its measurement ([6f5d0f4](https://github.com/event4u-app/agent-config/commit/6f5d0f4aaeb85732c28ac29a70a260b852e56baf))
|
|
443
|
+
* **contracts:** the derivation is the load-bearing half of the retro-curation lock ([ebc21d0](https://github.com/event4u-app/agent-config/commit/ebc21d08062fe4fa874153cd07fbca06c92a7377))
|
|
444
|
+
* **evidence:** measure the release-head derivation before widening it ([a389919](https://github.com/event4u-app/agent-config/commit/a3899191abcace5049de6c2209eb85eb7692db64))
|
|
445
|
+
* **review:** re-bind after the origin/main merge, with the measurement that justifies it ([04a92fc](https://github.com/event4u-app/agent-config/commit/04a92fca8218083123b650a941a12c3effc388c5))
|
|
446
|
+
* **review:** re-bind the completion review to the post-fix scope ([2c99f94](https://github.com/event4u-app/agent-config/commit/2c99f94213482459eb4c5590319df9a81a6d0eb5))
|
|
447
|
+
* **review:** R2 completion review — 13 findings, three high ([371e891](https://github.com/event4u-app/agent-config/commit/371e891274116dd249d6179848f1559d5f1e9d47))
|
|
448
|
+
* **roadmap:** archive road-to-skill-catalogue-budget ([1056718](https://github.com/event4u-app/agent-config/commit/1056718c1527d89d940e53dd32655a93d4ada62a))
|
|
449
|
+
* **roadmap:** close and archive workspace-identity, blocker resolved to report-only ([1141051](https://github.com/event4u-app/agent-config/commit/1141051719d9e43fa102394954100f4fdd7afbd9))
|
|
450
|
+
* **evidence:** the workspace-identity census, with its three refusals ([530db41](https://github.com/event4u-app/agent-config/commit/530db418f33cc79cfadcf24e0c67ad313199773f))
|
|
451
|
+
* **evidence:** re-bind the completion-review skip after the anonymisation fix ([591825d](https://github.com/event4u-app/agent-config/commit/591825da3615dde236836a0cfe761e7b5c30aa5e))
|
|
452
|
+
* **evidence:** declare the docs-only skip for the 2026-08-c harvest ([6b97fe3](https://github.com/event4u-app/agent-config/commit/6b97fe324427e254fcb372208e7cf5644a7b6496))
|
|
453
|
+
* **roadmaps:** four roadmaps from the 2026-08-c inbox harvest ([9fd881d](https://github.com/event4u-app/agent-config/commit/9fd881dfb41f183f40c2b644072f940ccd5eb6ce))
|
|
454
|
+
* **evidence:** record the 2026-08-c inbox triage and its not-adopted register ([5b0fb6f](https://github.com/event4u-app/agent-config/commit/5b0fb6f02cebee3f65fe5210573bab22bd837c98))
|
|
455
|
+
* **review:** finding 11 is accepted-risk, not an invented status ([1fcf44a](https://github.com/event4u-app/agent-config/commit/1fcf44a11cc96d61233f20b6f2b63fb85a4f5c9e))
|
|
456
|
+
* **review:** re-bind the findings artefact to the post-fix scope ([385265f](https://github.com/event4u-app/agent-config/commit/385265f1a5e0a4a4678d2e371993ef281ebd1fb7))
|
|
457
|
+
* **review:** record the completion-review findings before any fix ([20c83dd](https://github.com/event4u-app/agent-config/commit/20c83dd4388b855c44d54ca577f601b382018626))
|
|
458
|
+
* **roadmap:** re-review the risk register against what executing it found ([66b83ba](https://github.com/event4u-app/agent-config/commit/66b83ba40c27d94b8cb26a1337155b0d42d6caa6))
|
|
459
|
+
* **evidence:** two hosts in the corpus, and the double-count reading ruled out ([cfb9670](https://github.com/event4u-app/agent-config/commit/cfb967066a8f1d894a1b861774c694e35f012e84))
|
|
460
|
+
* **roadmap:** re-review the skill-catalogue-budget Risk Register ([1abb479](https://github.com/event4u-app/agent-config/commit/1abb479ed874b7e5791bb4f3529582cae00cc18e))
|
|
461
|
+
* **roadmap:** close skill-catalogue-budget Phases 1-3 with the measured findings ([2723dea](https://github.com/event4u-app/agent-config/commit/2723deadb01dec6e8fce1f69e5550c2941a5337b))
|
|
462
|
+
|
|
463
|
+
### Refactoring
|
|
464
|
+
|
|
465
|
+
* **scripts:** migrate seven identity call sites onto the shared resolver ([1dd2211](https://github.com/event4u-app/agent-config/commit/1dd221176a9eae251846d8874f884ba57fdc4bd6))
|
|
466
|
+
|
|
467
|
+
### Tests
|
|
468
|
+
|
|
469
|
+
* **rules:** cover the mixed-plus-placeholder rule instead of orphaning its fixture ([121d26f](https://github.com/event4u-app/agent-config/commit/121d26ff1dd0ba039a6a0fa4073ec7b10d94acfd))
|
|
470
|
+
|
|
471
|
+
### Chores
|
|
472
|
+
|
|
473
|
+
* **build:** rebuild the install bundle for the frontier tier enum ([7daaa62](https://github.com/event4u-app/agent-config/commit/7daaa62cbf84d338f3e8e29013c4497a777b5f7a))
|
|
474
|
+
* **roadmap:** regenerate the dashboard after the 2026-08-d harvest ([f0c79e2](https://github.com/event4u-app/agent-config/commit/f0c79e2f0e5f565b8a299584a683ecd2e65a16bf))
|
|
475
|
+
* **roadmaps:** regenerate the dashboard after merging origin/main ([a75f60f](https://github.com/event4u-app/agent-config/commit/a75f60f96f76ea4e0061ede2c91518668bc12c13))
|
|
476
|
+
* **reports:** refresh the adversarial secret-scanner stamp ([af2dcff](https://github.com/event4u-app/agent-config/commit/af2dcff6a1941d0e731039a1df767db0c65c06d0))
|
|
477
|
+
* **build:** rebuild the install bundle for the extracted catalogue library ([8bce204](https://github.com/event4u-app/agent-config/commit/8bce20467987e4345cabbdca4b504f2e386fae61))
|
|
478
|
+
* **reports:** regenerate generated reports the drift gate flagged ([6a8f7ff](https://github.com/event4u-app/agent-config/commit/6a8f7ffad009d2686dd8ec85b65397f11f85edeb))
|
|
479
|
+
|
|
480
|
+
Tests: 13992 (+148 since 12.0.0)
|
|
481
|
+
|
|
360
482
|
## [12.0.0](https://github.com/event4u-app/agent-config/compare/11.0.0...12.0.0) (2026-08-15)
|
|
361
483
|
|
|
362
484
|
### Release highlights
|
|
@@ -307,11 +307,54 @@ members:
|
|
|
307
307
|
|
|
308
308
|
openai:
|
|
309
309
|
enabled: true
|
|
310
|
-
model
|
|
310
|
+
# `codex-default` — the vendor-default SENTINEL, not a model id. It passes
|
|
311
|
+
# NO `--model` flag, so the codex CLI applies whatever the subscription
|
|
312
|
+
# currently serves.
|
|
313
|
+
#
|
|
314
|
+
# This shipped as `gpt-4o` and that value did not select a model, it
|
|
315
|
+
# disabled the seat: a subscription-authed (ChatGPT) account answers
|
|
316
|
+
# `400 invalid_request_error` for `gpt-4o`, `gpt-5` and `gpt-5.1-codex`
|
|
317
|
+
# alike — all three are on `CODEX_MEASURED_UNSERVABLE`. The deny-list now
|
|
318
|
+
# refuses such a pin before it spends quota, which makes the failure loud
|
|
319
|
+
# rather than silent; it does not make a freshly seeded config WORK. Only
|
|
320
|
+
# not shipping a pin does that.
|
|
321
|
+
#
|
|
322
|
+
# On the api transport the sentinel resolves to the client's own default,
|
|
323
|
+
# so one value stays correct whichever transport a member resolves to. Pin
|
|
324
|
+
# a real id here if you are on api and want a specific model — a set value
|
|
325
|
+
# always passes through verbatim and is never rewritten.
|
|
326
|
+
model: codex-default
|
|
311
327
|
api_key_ref: file:openai.key
|
|
328
|
+
#
|
|
329
|
+
# SWITCHING THIS MEMBER TO SUBSCRIPTION AUTH? THE `model:` ABOVE MUST GO.
|
|
330
|
+
#
|
|
331
|
+
# `mode: cli` routes this member through the `codex` CLI on a ChatGPT
|
|
332
|
+
# account, and that transport refuses an explicitly pinned model. Measured
|
|
333
|
+
# 2026-08-15, every candidate tried — `gpt-4o`, `gpt-5`, `gpt-5.1-codex` —
|
|
334
|
+
# came back with:
|
|
335
|
+
#
|
|
336
|
+
# 400 invalid_request_error: The '<model>' model is not supported when
|
|
337
|
+
# using Codex with a ChatGPT account.
|
|
338
|
+
#
|
|
339
|
+
# Omitting `--model` answered normally, so the working configuration is NO
|
|
340
|
+
# pin. The CLI publishes no list of models it does accept, which is why
|
|
341
|
+
# this note names what was refused rather than what to switch to. A member
|
|
342
|
+
# left pinned here fails every call and, before the pre-flight check
|
|
343
|
+
# landed, did so while the pass still printed a quorum line.
|
|
344
|
+
#
|
|
345
|
+
# So the subscription form of this member is:
|
|
346
|
+
#
|
|
347
|
+
# openai:
|
|
348
|
+
# enabled: true
|
|
349
|
+
# mode: cli # ChatGPT Plus/Pro via the Codex CLI — free
|
|
350
|
+
# model: codex-default # the sentinel: let the CLI choose
|
|
351
|
+
# # no api_key_ref, no model_ladder — both are API-transport concepts
|
|
352
|
+
#
|
|
312
353
|
# binary: /usr/local/bin/codex # only valid when mode == cli
|
|
313
|
-
#
|
|
314
|
-
#
|
|
354
|
+
#
|
|
355
|
+
# Phase 7 — size-fit downgrade ladder (smallest → largest). API transport
|
|
356
|
+
# only: the ladder picks a smaller MODEL, and the CLI transport has no
|
|
357
|
+
# model to pick. The active `model:` above must appear on this list.
|
|
315
358
|
model_ladder:
|
|
316
359
|
- gpt-4o-mini
|
|
317
360
|
- gpt-4o
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
# Model Recommendations
|
|
2
2
|
|
|
3
3
|
Loaded by the `model-recommendation` rule. Expresses recommendations as
|
|
4
|
-
**vendor-neutral capability tiers** (`lite | medium | high
|
|
5
|
-
vendor model names. Each agent resolves a
|
|
6
|
-
band; the package's only tier→model mapping
|
|
7
|
-
(`high→opus`, `medium→sonnet`,
|
|
4
|
+
**vendor-neutral capability tiers** (`lite | medium | high | frontier`,
|
|
5
|
+
ADR-035 as amended by ADR-232), never vendor model names. Each agent resolves a
|
|
6
|
+
tier to its own best model in that band; the package's only tier→model mapping
|
|
7
|
+
is the Claude generator's (`frontier→fable`, `high→opus`, `medium→sonnet`,
|
|
8
|
+
`lite→haiku`).
|
|
8
9
|
|
|
9
10
|
## Tier Profiles
|
|
10
11
|
|
|
11
12
|
| Tier | Band | Claude resolution | Use for |
|
|
12
13
|
|---|---|---|---|
|
|
14
|
+
| `frontier` | above the strongest generally-recommended band | Fable | **Opt-in, expected to stay rare.** Declare it only where the work genuinely needs capability beyond `high` — the point of the band is that such work *says so* rather than inheriting the session's model silently. Never the resolution of `inherit` |
|
|
13
15
|
| `high` | strongest reasoning | Opus | Architecture, refactoring, complex debugging, code review, design decisions, multi-file changes, large-scale analysis / research / planning |
|
|
14
16
|
| `medium` | balanced daily | Sonnet (latest) | Daily coding, known-cause bug fixes, tests, single-layer features, quality checks, config, documentation, implementation after a `high`-tier plan |
|
|
15
17
|
| `lite` | fastest / cheapest | Haiku | Trivial mechanical edits — formatting, one-line config, rote renames, boilerplate stamping |
|
|
@@ -4,6 +4,7 @@ tier: "1"
|
|
|
4
4
|
description: "Writing/upstreaming low-impact-decisions corpus entries — non-bypassable privacy floor"
|
|
5
5
|
triggers:
|
|
6
6
|
- path_prefix: "agents/decisions/low-impact-decisions"
|
|
7
|
+
- path_prefix: "data/low-impact-decisions-seed"
|
|
7
8
|
- keyword: "low-impact-decisions"
|
|
8
9
|
- keyword: "low-impact corpus"
|
|
9
10
|
- keyword: "learn-low-impact"
|
|
@@ -126,10 +126,10 @@ function wrap(text: string, width: number, indent: string): string[] {
|
|
|
126
126
|
|
|
127
127
|
/**
|
|
128
128
|
* Column width for the label gutter — sized to the longest label in use
|
|
129
|
-
* (`
|
|
129
|
+
* (`If you do nothing:`, 18 chars) plus one separating space, so no value ever
|
|
130
130
|
* runs flush against its own label.
|
|
131
131
|
*/
|
|
132
|
-
const LABEL_W =
|
|
132
|
+
const LABEL_W = 19;
|
|
133
133
|
|
|
134
134
|
/** A labelled block: ` Label: value`, wrapped and hanging-indented. */
|
|
135
135
|
function field(label: string, value: string): string[] {
|
|
@@ -183,6 +183,23 @@ function renderEntry(e: Entry, index: number): string[] {
|
|
|
183
183
|
...field('Blocks:', e.blocker.blocks),
|
|
184
184
|
];
|
|
185
185
|
|
|
186
|
+
// What is actually being decided, when the entry says so.
|
|
187
|
+
if (e.blocker.question) {
|
|
188
|
+
out.push(...field('The question:', e.blocker.question));
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// The recommendation leads, because it is the answer — everything below it
|
|
192
|
+
// is how to carry the answer out. An entry that predates the field says so
|
|
193
|
+
// rather than rendering a silent gap: the reader needs to know the analysis
|
|
194
|
+
// is missing, not merely that a line is absent.
|
|
195
|
+
out.push(
|
|
196
|
+
...field(
|
|
197
|
+
'Recommendation:',
|
|
198
|
+
e.blocker.recommendation ||
|
|
199
|
+
'(none recorded — this entry predates the field; ask for one before deciding)',
|
|
200
|
+
),
|
|
201
|
+
);
|
|
202
|
+
|
|
186
203
|
const doLabel = isLegacy(e.blocker) ? 'Blocked until:' : 'Do this:';
|
|
187
204
|
const steps = regroupTodo(e.blocker.todo);
|
|
188
205
|
if (steps.length === 0) {
|
|
@@ -203,6 +220,9 @@ function renderEntry(e: Entry, index: number): string[] {
|
|
|
203
220
|
out.push(...lines.map((l, i) => (i === 0 ? indent + l : l)));
|
|
204
221
|
}
|
|
205
222
|
}
|
|
223
|
+
if (e.blocker.ifNothing) {
|
|
224
|
+
out.push(...field('If you do nothing:', e.blocker.ifNothing));
|
|
225
|
+
}
|
|
206
226
|
out.push(...field('Done when:', e.blocker.resolvedWhen));
|
|
207
227
|
return out;
|
|
208
228
|
}
|
|
@@ -238,6 +258,14 @@ function render(entries: readonly Entry[], all: boolean): string {
|
|
|
238
258
|
}
|
|
239
259
|
if (shown.length > 0) {
|
|
240
260
|
lines.push('');
|
|
261
|
+
// Deciding is not the same as executing, and a list that only decides
|
|
262
|
+
// leaves the second half with the person who has the least context.
|
|
263
|
+
// Naming the guided path here is the cheapest place to close that gap:
|
|
264
|
+
// it is on screen at exactly the moment the reader is looking at a
|
|
265
|
+
// decision they did not write.
|
|
266
|
+
lines.push('Not sure about one of these? Ask your agent:');
|
|
267
|
+
lines.push(' "guide me through <id>" — one decision, step by step');
|
|
268
|
+
lines.push('');
|
|
241
269
|
}
|
|
242
270
|
return lines.join('\n') + '\n';
|
|
243
271
|
}
|
|
@@ -347,6 +347,24 @@ interface Blocker {
|
|
|
347
347
|
blocks: string;
|
|
348
348
|
todo: string[];
|
|
349
349
|
resolvedWhen: string;
|
|
350
|
+
/**
|
|
351
|
+
* The two fields that make a blocker *decidable* rather than merely
|
|
352
|
+
* described. Empty string when the entry predates them — the ratchet in
|
|
353
|
+
* `lint_roadmap_blockers` keeps the backlog legal, so the renderer has to
|
|
354
|
+
* cope with absence rather than assume it away.
|
|
355
|
+
*/
|
|
356
|
+
recommendation: string;
|
|
357
|
+
ifNothing: string;
|
|
358
|
+
/**
|
|
359
|
+
* Optional one-line statement of what is actually being decided.
|
|
360
|
+
*
|
|
361
|
+
* Not required, but recognised: three entries in the tree already used
|
|
362
|
+
* `- **Question:**` and, because the field list did not know it, the
|
|
363
|
+
* continuation logic silently appended it to `Blocks` — the decision's
|
|
364
|
+
* subject arrived glued to the end of an unrelated sentence. Naming it
|
|
365
|
+
* costs one enum entry and turns a silent swallow into a rendered field.
|
|
366
|
+
*/
|
|
367
|
+
question: string;
|
|
350
368
|
}
|
|
351
369
|
|
|
352
370
|
// Strip fenced code blocks before blocker detection — a roadmap that shows the
|
|
@@ -362,7 +380,8 @@ function _stripFencedCode(text: string): string {
|
|
|
362
380
|
return text.replace(FENCED_CODE_RE, (m) => '\n'.repeat(_splitlines(m).length));
|
|
363
381
|
}
|
|
364
382
|
|
|
365
|
-
const BLOCKER_FIELD_RE =
|
|
383
|
+
const BLOCKER_FIELD_RE =
|
|
384
|
+
/^-[ \t]*\*\*(Status|Owner|Blocks|Resolved when|What to do|Recommendation|If you do nothing|Question):\*\*/i;
|
|
366
385
|
|
|
367
386
|
/** Strip an inline `<!-- comment -->` and trim. */
|
|
368
387
|
function _stripComment(s: string): string {
|
|
@@ -471,6 +490,9 @@ function parse_blockers(raw_text: string): Blocker[] {
|
|
|
471
490
|
blocks: _blockerField(body, 'Blocks') ?? '(unspecified)',
|
|
472
491
|
todo: _blockerTodo(body),
|
|
473
492
|
resolvedWhen: _blockerField(body, 'Resolved when') ?? '(unspecified)',
|
|
493
|
+
recommendation: _blockerField(body, 'Recommendation') ?? '',
|
|
494
|
+
ifNothing: _blockerField(body, 'If you do nothing') ?? '',
|
|
495
|
+
question: _blockerField(body, 'Question') ?? '',
|
|
474
496
|
});
|
|
475
497
|
}
|
|
476
498
|
}
|
|
@@ -502,6 +524,9 @@ function parse_blockers(raw_text: string): Blocker[] {
|
|
|
502
524
|
blocks: 'entire roadmap',
|
|
503
525
|
todo: [parts.join(' ')],
|
|
504
526
|
resolvedWhen: 'condition described above clears',
|
|
527
|
+
recommendation: '',
|
|
528
|
+
ifNothing: '',
|
|
529
|
+
question: '',
|
|
505
530
|
});
|
|
506
531
|
}
|
|
507
532
|
return blockers;
|
|
@@ -869,6 +894,12 @@ function render(roadmaps: RoadmapStats[], bundles: Bundle[] | null = null): stri
|
|
|
869
894
|
lines.push('**Blockers**\n');
|
|
870
895
|
for (const b of openBlockers) {
|
|
871
896
|
lines.push(`- **${b.id}** (owner: ${b.owner}) — blocks ${b.blocks}`);
|
|
897
|
+
if (b.recommendation) {
|
|
898
|
+
lines.push(` - **Recommendation:** ${b.recommendation}`);
|
|
899
|
+
}
|
|
900
|
+
if (b.ifNothing) {
|
|
901
|
+
lines.push(` - **If you do nothing:** ${b.ifNothing}`);
|
|
902
|
+
}
|
|
872
903
|
lines.push(' - **What to do:**');
|
|
873
904
|
for (const step of b.todo) {
|
|
874
905
|
lines.push(` ${step}`);
|
|
@@ -175,13 +175,13 @@ file exists, test passes — never "user reviews" / "looks good" (§ 4c).
|
|
|
175
175
|
|
|
176
176
|
A gate only the user or a maintainer can clear — a decision, an
|
|
177
177
|
external dependency, an evidence threshold, a kernel-budget soak
|
|
178
|
-
window — is recorded as a `## Blockers` entry (`### blocker: <id>`
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
§ 4c gate-test
|
|
178
|
+
window — is recorded as a `## Blockers` entry (`### blocker: <id>` with the
|
|
179
|
+
seven fields of rule 20), never a stray "blocked on X" sentence. Write it so
|
|
180
|
+
the owner can decide in one sitting: one option named and why, what the delay
|
|
181
|
+
costs, a command or path per option rather than prose, and an offer to walk
|
|
182
|
+
them through it. Ratcheted by `lint_roadmap_blockers`. Full shape:
|
|
183
|
+
[`templates/roadmaps.md` rule 20](../../agent-src/templates/roadmaps.md).
|
|
184
|
+
Omit it entirely when there is no such gate; run the § 4c gate-test first.
|
|
185
185
|
|
|
186
186
|
### 5c. Risk review (Gate R1) — after draft, before save
|
|
187
187
|
|
|
@@ -39,7 +39,7 @@ schema_version: 1
|
|
|
39
39
|
# CI guard: a release bump of `package.json` must update this value
|
|
40
40
|
# in lockstep — see scripts/check_template_pin_drift.ts (road-to-
|
|
41
41
|
# portable-runtime-and-update-check P3.3).
|
|
42
|
-
agent_config_version: "12.
|
|
42
|
+
agent_config_version: "12.1.0"
|
|
43
43
|
|
|
44
44
|
# --- Project identity ---
|
|
45
45
|
project:
|
|
@@ -137,20 +137,56 @@ Templates for roadmap files stored in `agents/roadmaps/` or `{module_root}/{Modu
|
|
|
137
137
|
- **Status:** open <!-- open | resolved -->
|
|
138
138
|
- **Owner:** user <!-- user | maintainer | external -->
|
|
139
139
|
- **Blocks:** Phase N — {phase name}
|
|
140
|
+
- **Question:** {optional — the one line saying what is being decided.}
|
|
141
|
+
- **Recommendation:** {which option, and the one sentence why.}
|
|
142
|
+
- **If you do nothing:** {what the non-decision costs, concretely.}
|
|
140
143
|
- **What to do:**
|
|
141
144
|
1. {Concrete, copy-pasteable step the owner must execute.}
|
|
142
145
|
2. {Include commands, file paths, and expected outcomes.}
|
|
143
146
|
- **Resolved when:** {decidable signal, e.g. "task X exits 0"}
|
|
144
147
|
```
|
|
145
148
|
`### blocker: <id>` is the parse anchor the dashboard generator
|
|
146
|
-
reads; ids are unique within the roadmap. All
|
|
147
|
-
required
|
|
149
|
+
reads; ids are unique within the roadmap. All seven fields are
|
|
150
|
+
required; `Question:` is optional and recognised (before it was
|
|
151
|
+
named, the parser folded it silently into `Blocks:`). A cleared blocker flips `Status: resolved` (kept for
|
|
148
152
|
history) instead of being deleted — the resolve-flip runs in the
|
|
149
153
|
same reply as the checkbox flip that cleared it, per
|
|
150
154
|
[`roadmap-progress-sync`](../rules/roadmap-progress-sync.md). A
|
|
151
155
|
step gated by a specific blocker may cross-reference it inline:
|
|
152
156
|
`- [ ] … <!-- blocked-by: <blocker-id> -->`.
|
|
153
157
|
|
|
158
|
+
**A blocker is a decision the owner can make in one sitting, or it
|
|
159
|
+
is not finished being written.** The five original fields describe
|
|
160
|
+
the *situation*; they do not make it decidable, and a blocker that
|
|
161
|
+
only describes a situation hands the analysis back to the person
|
|
162
|
+
least able to do it. Measured 2026-08-15 across the 46 blocker
|
|
163
|
+
entries in this tree: **14 carry no command, path, or option at all**
|
|
164
|
+
in `What to do`. Each of those is a research task wearing a
|
|
165
|
+
decision's clothes.
|
|
166
|
+
|
|
167
|
+
- **`Recommendation:` names one option and why.** "Pick exactly one
|
|
168
|
+
— (a) … or (b) …" without a recommendation is not neutrality, it is
|
|
169
|
+
an unfinished analysis. The agent read the evidence; the owner did
|
|
170
|
+
not. If the agent genuinely cannot recommend, the field says so
|
|
171
|
+
**and names the missing fact** that would decide it.
|
|
172
|
+
- **`If you do nothing:` states the cost of the non-decision.** Most
|
|
173
|
+
blockers are cheap to leave open and a few are not; the owner
|
|
174
|
+
cannot tell which without being told. "Nothing — the roadmap simply
|
|
175
|
+
stays open" is a complete and common answer.
|
|
176
|
+
- **`What to do:` is executable, not descriptive.** Each option
|
|
177
|
+
names **what changes**, **where** (the file path or the command),
|
|
178
|
+
and **what it costs**. A step a reader cannot execute without first
|
|
179
|
+
re-deriving the analysis is a finding, not a step.
|
|
180
|
+
- **Offer to run it.** When the agent hands a blocker to a human, it
|
|
181
|
+
offers to walk them through it step by step in the same reply. The
|
|
182
|
+
owner deciding does not mean the owner executing.
|
|
183
|
+
|
|
184
|
+
`lint_roadmap_blockers` enforces the field set and probes `What to
|
|
185
|
+
do` for executable substance. The 14-entry backlog is recorded as a
|
|
186
|
+
ratchet baseline (`gate-violation-baselines.json`), so existing
|
|
187
|
+
entries stay legal while any **new** one that skips a field or ships
|
|
188
|
+
a command-free `What to do` fails.
|
|
189
|
+
|
|
154
190
|
**Legacy fallback.** A body-level `> Blocked until <condition>`
|
|
155
191
|
note (the follow-up-roadmap convention from rule 17) is parsed by
|
|
156
192
|
the dashboard generator as one implicit roadmap-level blocker
|
|
@@ -383,8 +419,10 @@ complexity: lightweight
|
|
|
383
419
|
- **Status:** open
|
|
384
420
|
- **Owner:** user
|
|
385
421
|
- **Blocks:** Phase N — {phase name}
|
|
422
|
+
- **Recommendation:** {which option, and the one sentence why}
|
|
423
|
+
- **If you do nothing:** {what the non-decision costs}
|
|
386
424
|
- **What to do:**
|
|
387
|
-
1. {step}
|
|
425
|
+
1. {step — what changes, where (`path` or command), what it costs}
|
|
388
426
|
- **Resolved when:** {decidable signal} -->
|
|
389
427
|
|
|
390
428
|
## Notes
|
package/dist/cli/registry.js
CHANGED
|
@@ -72,6 +72,7 @@ export const REGISTRY = [
|
|
|
72
72
|
{ name: 'hooks:status', disposition: 'delegate', synopsis: 'Print the runtime hook matrix (per-platform install + bindings).' },
|
|
73
73
|
{ name: 'hooks:doctor', disposition: 'delegate', synopsis: 'Diagnose hook health: concerns, posture, missing trampolines (read-only).' },
|
|
74
74
|
{ name: 'routing:doctor', disposition: 'delegate', synopsis: 'Live routing diagnosis: per-gate ACTIVE/INACTIVE with reason, chain, freshness, orchestration state (read-only).' },
|
|
75
|
+
{ name: 'workspace:doctor', disposition: 'delegate', synopsis: 'Workspace identity with provenance (repo root, main worktree, current worktree, branch, PR base) + session claim and worktree pressure (read-only).' },
|
|
75
76
|
{ name: 'route:explain', disposition: 'delegate', synopsis: 'Deterministic rule-routing trace for one prompt: matched triggers, tier, disposition, budget, rejected candidates (trigger-match level only).' },
|
|
76
77
|
{ name: 'route:audit', disposition: 'delegate', synopsis: 'Replay the router matcher over the last N chat-history prompts; opt-in recorder + --weekly rolling render (trigger-match level only).' },
|
|
77
78
|
{ name: 'hooks:replay', disposition: 'delegate', synopsis: 'Replay a fixture through the universal hook dispatcher (no state writes).' },
|
package/dist/cli/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,MAAM,CAAC,MAAM,QAAQ,GAA4B;IAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,iFAAiF,EAAE;IACtI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8BAA8B,EAAE;IACnF,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,kCAAkC,EAAE;IAC3F,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,oCAAoC,EAAE;IACzF,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,oCAAoC,EAAE;IACrG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,6DAA6D,EAAE;IACpH,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mEAAmE,EAAE;IAC3H,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mEAAmE,EAAE;IAC3H,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,sCAAsC,EAAE;IAC7F,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,0DAA0D,EAAE;IACjH,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8EAA8E,EAAE;IACrI,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,4EAA4E,EAAE;IAC3I,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,0EAA0E,EAAE;IACxI,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mEAAmE,EAAE;IACpI,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,yFAAyF,EAAE;IACtJ,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,yEAAyE,EAAE;IACtI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,+DAA+D,EAAE;IACzH,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,qEAAqE,EAAE;IAC3H,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,yFAAyF,EAAE;IAChJ,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,0EAA0E,EAAE;IACnI,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2EAA2E,EAAE;IACvI,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,qHAAqH,EAAE;IAC1L,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,oCAAoC,EAAE;IAC/F,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,kGAAkG,EAAE;IAC3J,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,4BAA4B,EAAE;IACnF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,oFAAoF,EAAE;IACzI,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,gDAAgD,EAAE;IACvG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,kEAAkE,EAAE;IACxH,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,4DAA4D,EAAE;IAChH,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,8DAA8D,EAAE;IACvH,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,yDAAyD,EAAE;IAC7G,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mFAAmF,EAAE;IAChJ,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,uFAAuF,EAAE;IACpJ,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,6IAA6I,EAAE;IACpM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,iDAAiD,EAAE;IACpG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,gGAAgG,EAAE;IACxJ,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2DAA2D,EAAE;IAC3H,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,kEAAkE,EAAE;IAC1H,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,4DAA4D,EAAE;IACpH,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mDAAmD,EAAE;IAC9G,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,yDAAyD,EAAE;IACnH,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mFAAmF,EAAE;IACjJ,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8EAA8E,EAAE;IACxI,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,wDAAwD,EAAE;IAChH,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,uFAAuF,EAAE;IAChJ,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2DAA2D,EAAE;IAC/G,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8FAA8F,EAAE;IAC5J,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,kFAAkF,EAAE;IACjJ,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,qJAAqJ,EAAE;IACrN,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,4DAA4D,EAAE;IAC7H,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,wDAAwD,EAAE;IAC/H,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,6CAA6C,EAAE;IAC7G,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,uJAAuJ,EAAE;IAC7M,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,4EAA4E,EAAE;IAC/I,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,yEAAyE,EAAE;IAClI,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,0FAA0F,EAAE;IACxJ,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,sEAAsE,EAAE;IAChI,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,qFAAqF,EAAE;IAChJ,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,uCAAuC,EAAE;IACrG,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,kEAAkE,EAAE;IAC/H,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2EAA2E,EAAE;IACxI,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,kHAAkH,EAAE;IACjL,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,+IAA+I,EAAE;IAC7M,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,uIAAuI,EAAE;IACnM,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2EAA2E,EAAE;IACxI,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,6GAA6G,EAAE;IAC1K,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,iEAAiE,EAAE;IACxI,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8DAA8D,EAAE;IAClI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2DAA2D,EAAE;IACrH,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,kDAAkD,EAAE;IAChH,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8EAA8E,EAAE;IACzI,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2CAA2C,EAAE;IAChH,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,uDAAuD,EAAE;IACrH,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2CAA2C,EAAE;IACvG,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,0CAA0C,EAAE;IACvG,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8CAA8C,EAAE;IACpH,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,+FAA+F,EAAE;IAC5J,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,qFAAqF,EAAE;IAC/I,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,wFAAwF,EAAE;IAClJ,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mDAAmD,EAAE;IAClH,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,uDAAuD,EAAE;IAC5H,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,sEAAsE,EAAE;IACxI,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,sEAAsE,EAAE;IAC9I,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mEAAmE,EAAE;IACzI,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2DAA2D,EAAE;IAChI,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,iEAAiE,EAAE;IACtI,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,oGAAoG,EAAE;IAChK,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,qDAAqD,EAAE;IACtH,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,yDAAyD,EAAE;IAC1H,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,sDAAsD,EAAE;IACvH,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,wDAAwD,EAAE;IACzH,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mDAAmD,EAAE;IAC/G,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,uDAAuD,EAAE;IACtH,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,0EAA0E,EAAE;IACzI,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,4FAA4F,EAAE;IACtJ,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,sDAAsD,EAAE;IACzH,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,4FAA4F,EAAE;CAC1J,CAAC;AAEX,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACjC,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,QAAQ,CAAC;AACvD,CAAC"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
|