@event4u/agent-config 16.4.0 → 16.5.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/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +40 -191
- package/README.md +1 -1
- package/dist/agent-src/commands/design.md +1 -1
- package/dist/agent-src/guidelines/design-antipatterns.md +1 -1
- package/dist/agent-src/rules/token-budget-discipline.md +2 -2
- package/dist/agent-src/skills/accessibility-auditor/data/aria-patterns.csv +2 -0
- package/dist/agent-src/skills/accessibility-auditor/data/manifest.json +3 -3
- package/dist/agent-src/skills/canvas-design/SKILL.md +4 -2
- package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +13 -10
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +49 -2
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +9 -0
- package/dist/agent-src/skills/iconography/SKILL.md +4 -2
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +16 -5
- package/dist/agent-src/skills/logo-generation/SKILL.md +12 -8
- package/dist/agent-src/skills/svg-authoring/SKILL.md +318 -0
- package/dist/agent-src/skills/wireframe/SKILL.md +5 -2
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/cli/commands/uiRender.js +201 -4
- package/dist/cli/commands/uiRenderAsset.js +1308 -0
- package/dist/cli/commands/uiRenderAssetCompare.js +752 -0
- package/dist/cli/commands/uiRenderAssetGrid.js +265 -0
- package/dist/cli/commands/uiRenderAssetGrounds.js +323 -0
- package/dist/cli/commands/uiRenderAssetIsolation.js +85 -0
- package/dist/cli/commands/uiRenderAssetTypes.js +145 -0
- package/dist/cli/main.js +47 -1
- package/dist/cli/registry.js +1 -1
- package/dist/cli-delegate/{chunk-MSUL5NYP.js → chunk-4DBG5K7M.js} +1 -1
- package/dist/cli-delegate/{chunk-AED2VQGM.js → chunk-TMWYUOK4.js} +10 -1
- package/dist/cli-delegate/cmd_conformance.js +395 -214
- package/dist/cli-delegate/cmd_handoff.js +2 -2
- package/dist/cli-delegate/cmd_session_recycle.js +2 -2
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +47 -22
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +6 -6
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +19 -15
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +13 -9
- package/dist/hooks/dispatch.js +1073 -808
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/hooks/svg_rules.chunk.cjs +1626 -0
- package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -0
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +931 -735
- package/dist/scripts/_lib/scan_scope.js +105 -0
- package/dist/scripts/_lib/svg_dom.js +284 -0
- package/dist/scripts/_lib/svg_geometry.js +477 -0
- package/dist/scripts/_lib/svg_motion.js +179 -0
- package/dist/scripts/_lib/svg_rules.js +1337 -0
- package/dist/scripts/_lib/svg_urls.js +67 -0
- package/dist/scripts/lint_svg_asset.js +324 -0
- package/docs/guidelines/design-antipatterns.md +1 -1
- package/package.json +4 -3
- package/src/config/gate-violation-baselines.json +3 -3
- package/src/config/routing-coverage-seed.json +9 -2
- package/src/scripts/_lib/svg_dom.ts +318 -0
- package/src/scripts/_lib/svg_geometry.ts +480 -0
- package/src/scripts/_lib/svg_motion.ts +208 -0
- package/src/scripts/_lib/svg_rules.ts +1453 -0
- package/src/scripts/_lib/svg_urls.ts +72 -0
- package/src/scripts/_lib/verification_command.ts +59 -0
- package/src/scripts/_lib/verify_clause.ts +27 -17
- package/src/scripts/hooks/block_speaking_inbox_dir.ts +16 -1
- package/src/scripts/hooks/design_pass_hook.ts +157 -3
- package/src/scripts/hooks/svg_obligation.ts +497 -0
- package/src/scripts/hooks/svg_rules_loader.ts +133 -0
- package/src/scripts/hooks/turn_end_gate_hook.ts +5 -3
- package/src/scripts/lint_consolidation_lineage.ts +6 -3
- package/src/scripts/lint_design_quality.ts +60 -12
- package/src/scripts/lint_motion_authority_drift.ts +27 -0
- package/src/scripts/lint_svg_asset.ts +365 -0
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "event4u-agent-config",
|
|
3
3
|
"description": "Governed agent system — skills, rules, commands, and guidelines for AI-assisted development.",
|
|
4
|
-
"version": "16.
|
|
4
|
+
"version": "16.5.0",
|
|
5
5
|
"owner": {
|
|
6
6
|
"name": "event4u",
|
|
7
7
|
"email": "dev@event4u.app"
|
|
8
8
|
},
|
|
9
9
|
"metadata": {
|
|
10
10
|
"description": "A policy-driven execution system that enforces quality, consistency, and developer-like behavior for AI agents.",
|
|
11
|
-
"version": "16.
|
|
11
|
+
"version": "16.5.0"
|
|
12
12
|
},
|
|
13
13
|
"plugins": [
|
|
14
14
|
{
|
|
15
15
|
"name": "agent-config",
|
|
16
16
|
"description": "Full governed agent system — rules, skills, commands, guidelines, and runtime tooling.",
|
|
17
|
-
"version": "16.
|
|
17
|
+
"version": "16.5.0",
|
|
18
18
|
"source": ".",
|
|
19
19
|
"category": "governance",
|
|
20
20
|
"tags": [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-config",
|
|
3
3
|
"description": "A governed skill framework for AI agents — runtime execution, tooling, observability, feedback, and lifecycle management with policy-driven quality enforcement.",
|
|
4
|
-
"version": "16.
|
|
4
|
+
"version": "16.5.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "event4u",
|
|
7
7
|
"email": "dev@event4u.app"
|
|
@@ -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": "16.
|
|
9
|
+
"version": "16.5.0",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"agent-config",
|
|
12
12
|
"skills",
|
package/CHANGELOG.md
CHANGED
|
@@ -871,224 +871,73 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
|
|
|
871
871
|
> keeps the active era under the 250-line drift cap enforced by
|
|
872
872
|
> `tests/test_changelog_eras.py`.
|
|
873
873
|
|
|
874
|
-
# Era: 16.
|
|
874
|
+
# Era: pre-16.5.0 — archived
|
|
875
875
|
|
|
876
|
-
>
|
|
876
|
+
> All entries before `16.5.0` live in
|
|
877
|
+
> [`docs/archive/CHANGELOG-pre-16.5.0.md`](docs/archive/CHANGELOG-pre-16.5.0.md).
|
|
878
|
+
> The archive is read-only; git tags remain the canonical
|
|
879
|
+
> source for what shipped. Splitting them out of the main file
|
|
880
|
+
> keeps the active era under the 250-line drift cap enforced by
|
|
881
|
+
> `tests/test_changelog_eras.py`.
|
|
882
|
+
|
|
883
|
+
# Era: 16.5.x — current
|
|
884
|
+
|
|
885
|
+
> Started at `16.5.0`. Full entries live inline below.
|
|
877
886
|
> The drift test caps this era at 250 lines of entry body; growth past
|
|
878
|
-
> that forces a new era split (`# Era: 16.
|
|
887
|
+
> that forces a new era split (`# Era: 16.6.x`, etc.) — see
|
|
879
888
|
> [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
|
|
880
889
|
|
|
881
|
-
## [16.
|
|
890
|
+
## [16.5.0](https://github.com/event4u-app/agent-config/compare/16.4.0...16.5.0) (2026-10-12)
|
|
882
891
|
|
|
883
892
|
### Release highlights
|
|
884
893
|
|
|
885
|
-
- **Behaviour changes:**
|
|
886
|
-
- **Default changes + migration:**
|
|
887
|
-
- **Security and correctness:**
|
|
888
|
-
- **Honest nulls:**
|
|
889
|
-
- **Known limitations:**
|
|
894
|
+
- **Behaviour changes:** give hand-authored SVG a witness, an owner, and five recorded runs (#2300) (bdeb65c).
|
|
895
|
+
- **Default changes + migration:** _none_
|
|
896
|
+
- **Security and correctness:** close the two real findings of the third 16.5.0 review, plus road-to-svg-witness-provenance (#2309) (d1f7c3b); close the security findings from the 16.5.0 re-cut review (#2307) (9904258); close the five medium-security findings from the 16.5.0 release review (#2305) (5593838); close the sixth review round of #2302 (#2303) (c88865f); strip only generic glob classes from an inbox name (fda00b3); admit a date suffix only on the families that are dated (fd5be56); +3 more.
|
|
897
|
+
- **Honest nulls:** _none_
|
|
898
|
+
- **Known limitations:** _none_
|
|
890
899
|
|
|
891
|
-
> **Governance mix:** governance-only
|
|
900
|
+
> **Governance mix:** governance-only 6 vs consumer-only 1 (taxonomy 1.1.0; range d411219277ce..d1f7c3b834bb).
|
|
892
901
|
|
|
893
902
|
### Features
|
|
894
903
|
|
|
895
|
-
* **
|
|
896
|
-
*
|
|
897
|
-
* **roadmaps:** the hold step 1.1 asked for is neither of the two shapes it offered (#2283) ([e90a478](https://github.com/event4u-app/agent-config/commit/e90a4788ec0d9afa07aaeeac00bf73b76ecc30f6))
|
|
898
|
-
* **gates:** bring later/*-carried.md into the blocker lint, and nothing else (#2280) ([11dc63f](https://github.com/event4u-app/agent-config/commit/11dc63fe8521a0f87fb5a72203453497aca04ccf))
|
|
899
|
-
* **settings:** retire 46 default-neutral derivable settings keys (#2274) ([b35d432](https://github.com/event4u-app/agent-config/commit/b35d432b11cc3328517c7963c570bb1a06b8dda7))
|
|
900
|
-
* cross-file blocker refs and declared snapshot exemption (authority-routing phases 4-5) (#2264) ([b01d71d](https://github.com/event4u-app/agent-config/commit/b01d71d94dd8e763d6c1d5f9fc6f7776beffde55))
|
|
901
|
-
* **merge:** auto-merge on the owner's word, with a council danger gate (ADR-282) (#2256) ([edd18fe](https://github.com/event4u-app/agent-config/commit/edd18fea6867255375dc3797121260e137322f26))
|
|
902
|
-
* **roadmaps:** a routed authority for dangerous-action decisions (#2254) ([4b54335](https://github.com/event4u-app/agent-config/commit/4b54335a6217e25ae9c6273b591ee0e2919683c5))
|
|
903
|
-
* **enforcement:** credit a gate with the obligations it refuses, not the whole rule (#2246) ([93a192b](https://github.com/event4u-app/agent-config/commit/93a192bbd36c051032e028a68fed7f8574908907))
|
|
904
|
-
* **probe:** blocking time by cause, the CI-and-subagent hypothesis refuted (#2248) ([179019f](https://github.com/event4u-app/agent-config/commit/179019fb3c310f9ad1226877b7f191ae30f9d394))
|
|
905
|
-
* **release:** release evidence that reproduces (#2250) ([35209c1](https://github.com/event4u-app/agent-config/commit/35209c1f5bd2c7cc2521693c58523402ad03618e))
|
|
906
|
-
* **gates:** a ratification fence that follows the dispatcher's imports (#2247) ([8fdb481](https://github.com/event4u-app/agent-config/commit/8fdb4816921e50fbcb78e70beb0c347bad11890f))
|
|
907
|
-
* **roadmaps:** parked blockers get counted, one owner question gets a blocker, two checks for ticks and citations (#2245) ([764fa4f](https://github.com/event4u-app/agent-config/commit/764fa4fa4c7d88d0214fea4409e234760889d545))
|
|
908
|
-
* **code-graph:** measure the graph feeder's cost on the stop slot (graph-that-feeds-the-gate 3.5) (#2239) ([8d91928](https://github.com/event4u-app/agent-config/commit/8d91928cbd6111293b8eca16fde1240651d853e7))
|
|
909
|
-
* **ci:** gates a pull request can hear (#2249) ([c4051c7](https://github.com/event4u-app/agent-config/commit/c4051c7ed34cd9209496205286af3c5a1ef2d89e))
|
|
910
|
-
* **doctor:** an offline flag, and the 16.3.0 findings' doc and test fixes (partial) (#2243) ([fc1bdec](https://github.com/event4u-app/agent-config/commit/fc1bdec4f4edcf9438d42388e252352617f257b6))
|
|
911
|
-
* **install:** count unresolved installed links per artefact kind (#2240) ([ef32868](https://github.com/event4u-app/agent-config/commit/ef328687cfff78efa57cc957d90344fae7b90979))
|
|
912
|
-
* **ranker:** opt-in unrounded tie-break, tie metrics, and the tuning reading (#2242) ([e92e9dc](https://github.com/event4u-app/agent-config/commit/e92e9dcdb23bb16d596252fdb7c21e51fe7ec64a))
|
|
913
|
-
* **neighbours:** precedence rule, contradiction review, and a reachable MCP-use recorder (#2241) ([a6e5942](https://github.com/event4u-app/agent-config/commit/a6e5942236858a85b01246c0b04345c6148075d7))
|
|
914
|
-
* **spend:** a spend bound applies only where one was set (#2234) ([e3c30fc](https://github.com/event4u-app/agent-config/commit/e3c30fc9d3af3121a03dbc420b4fbaa235993b46))
|
|
915
|
-
* **installed-layer:** measure the thinned layer in one unit, and price what stands between it and the ceiling (#2231) ([96dff15](https://github.com/event4u-app/agent-config/commit/96dff15dd9d5544641b54e5c729becbef6f57306))
|
|
916
|
-
* **reach:** close road-to-modules-that-something-calls — census, repairs, and the five reported counts (#2227) ([3dbb3f9](https://github.com/event4u-app/agent-config/commit/3dbb3f99da8c731a6ba6f34fef48ae90834fb1df))
|
|
904
|
+
* **svg:** close all three SVG roadmaps — routing, review follow-ups and the live-session findings (#2302) ([5098697](https://github.com/event4u-app/agent-config/commit/50986972088029db18a90c6f7d198c5ab0e26da5))
|
|
905
|
+
* give hand-authored SVG a witness, an owner, and five recorded runs (#2300) ([bdeb65c](https://github.com/event4u-app/agent-config/commit/bdeb65c37533825c2a3061fb7a33ef5778454d11))
|
|
917
906
|
|
|
918
907
|
### Bug Fixes
|
|
919
908
|
|
|
920
|
-
* **
|
|
921
|
-
* **
|
|
922
|
-
* **
|
|
923
|
-
* **
|
|
924
|
-
* **
|
|
925
|
-
* **
|
|
926
|
-
* **
|
|
927
|
-
* **
|
|
928
|
-
* **
|
|
929
|
-
* **rules:** refuse a triggerless routed rule; measure the real thinned total (#2226) ([52b409e](https://github.com/event4u-app/agent-config/commit/52b409e897e42ab00e7305a6f17e1e27a1a35072))
|
|
930
|
-
* **code-graph:** repair the gate feeder path shape, then publish what step 3.3 actually measures (#2216) ([1668731](https://github.com/event4u-app/agent-config/commit/166873158c1bcbe585a95654376ec021873a4107))
|
|
931
|
-
* **deps:** lift proxy-addr to 2.0.8 so the runtime audit gate can pass (#2219) ([26510a6](https://github.com/event4u-app/agent-config/commit/26510a6c2a0e5d2997d639d6e5f3e9e9bc9dc34f))
|
|
932
|
-
* **rules:** repair the docs/ link group, correct two stale blocker claims (#2213) ([c58d7ea](https://github.com/event4u-app/agent-config/commit/c58d7eae8d1aab76d37f9018a57c5047d4b957bc))
|
|
933
|
-
* **roadmaps:** register step 0.2 blockedness where the carrier reads it (#2212) ([6b79d06](https://github.com/event4u-app/agent-config/commit/6b79d06defecbb3d8bc16d44e41160e0d4e470a5))
|
|
909
|
+
* **svg:** close the two real findings of the third 16.5.0 review, plus road-to-svg-witness-provenance (#2309) ([d1f7c3b](https://github.com/event4u-app/agent-config/commit/d1f7c3b834bb43b8937dee44b7e38733d5eb70f2))
|
|
910
|
+
* **svg:** close the security findings from the 16.5.0 re-cut review (#2307) ([9904258](https://github.com/event4u-app/agent-config/commit/990425836285eded0a6cb4370f8ded95823dd6c8))
|
|
911
|
+
* **svg:** close the five medium-security findings from the 16.5.0 release review (#2305) ([5593838](https://github.com/event4u-app/agent-config/commit/5593838c01fab686e0856fba227ae4f37cd7b8f0))
|
|
912
|
+
* **svg-engine:** close the sixth review round of #2302 (#2303) ([c88865f](https://github.com/event4u-app/agent-config/commit/c88865fdc1aad9337b4f98a868483d571848d7ea))
|
|
913
|
+
* **hooks:** strip only generic glob classes from an inbox name ([fda00b3](https://github.com/event4u-app/agent-config/commit/fda00b35ef5a0d2b603b56511a986081a261dc11))
|
|
914
|
+
* **hooks:** admit a date suffix only on the families that are dated ([fd5be56](https://github.com/event4u-app/agent-config/commit/fd5be56f6f17ebe96b17579ffdd452cbef3dfc39))
|
|
915
|
+
* **hooks:** accept only wildcard-suffixed family heads and keep bracket payloads ([8446cc0](https://github.com/event4u-app/agent-config/commit/8446cc05e322c6d084df502319daff8c1bc79e63))
|
|
916
|
+
* **hooks:** let a glob over an opaque family prefix through block-speaking-inbox-dir ([22904a5](https://github.com/event4u-app/agent-config/commit/22904a51d58dd8d3bbed7a6db08b717b7336adb1))
|
|
917
|
+
* **lineage:** count a present non-road-to parent as present ([4b40ab6](https://github.com/event4u-app/agent-config/commit/4b40ab692f85bbc2b642f98603a9d601879cd5a1))
|
|
934
918
|
|
|
935
919
|
### Documentation
|
|
936
920
|
|
|
937
|
-
* **
|
|
938
|
-
* **roadmaps:** mark the three Phase-3 steps that share one gate, and refuse to mark two that do not (#2290) ([05329ba](https://github.com/event4u-app/agent-config/commit/05329ba488e7fcf98a93bf2a2df4d4162d013d54))
|
|
939
|
-
* **roadmaps:** measure all five open acceptance criteria instead of assuming them (#2289) ([70bd51a](https://github.com/event4u-app/agent-config/commit/70bd51a8a1221e56cb8a15648282cb31b0b4ce97))
|
|
940
|
-
* **roadmaps:** a sixth reading of three stable negatives, and one rejected substitution (#2287) ([ebefcdc](https://github.com/event4u-app/agent-config/commit/ebefcdc1f0d35d0a7ca5044d33605d4b3247b679))
|
|
941
|
-
* **roadmaps:** the gate refused a comment, which answers the phase block (#2285) ([6715878](https://github.com/event4u-app/agent-config/commit/6715878859af7cd20fcac76855c4c4158b57edf3))
|
|
942
|
-
* **roadmaps:** Phase 1 was done except for three notes nobody wrote (#2284) ([5280e89](https://github.com/event4u-app/agent-config/commit/5280e8912ab480799e433d37df2d402b5b10b791))
|
|
943
|
-
* **roadmaps:** Phase 2 waits on a cancelled instrument, not on a machine (#2282) ([0f6209e](https://github.com/event4u-app/agent-config/commit/0f6209e8eb436f0ffcc679a34663dc6675c1bf8b))
|
|
944
|
-
* **roadmaps:** close 3.2 by council re-scope, and name the accrual trap I hit (#2281) ([d6e75f4](https://github.com/event4u-app/agent-config/commit/d6e75f45fa086dca62f953966479569fd54b93b2))
|
|
945
|
-
* **adr:** amend ADR-281 so a council recommends passage, never grants it (#2257) ([f76e83e](https://github.com/event4u-app/agent-config/commit/f76e83e47cdb823e37c96f4bbd16e53bc5c24c04))
|
|
946
|
-
* **governance:** ADR-281 and the texts it corrects (partial, self-modification roadmap) (#2251) ([82a131f](https://github.com/event4u-app/agent-config/commit/82a131feb5f6309365c962d272e9362ec9820c53))
|
|
947
|
-
* **council:** ADR-281 and the authority-routing decision cannot both stand (#2255) ([61cd5b7](https://github.com/event4u-app/agent-config/commit/61cd5b7ad6a6851f99e97405a20c1e8a9ea61607))
|
|
948
|
-
* **council:** record the authority-routing decision — ratified, 2 of 2 seats (#2253) ([0009ecd](https://github.com/event4u-app/agent-config/commit/0009ecd7c1f0d8f9659dd0ab249414879015b20e))
|
|
949
|
-
* **roadmaps:** close road-to-leading-every-row on the owner's answers and ADR-280 (#2237) ([adaad0a](https://github.com/event4u-app/agent-config/commit/adaad0aa2afd216767bf31404f533beb9393c5c8))
|
|
950
|
-
* **roadmap:** record that the two kernel-held rule links are human-gated (#2236) ([8510ebc](https://github.com/event4u-app/agent-config/commit/8510ebc995d224b1d353eb5042887905b7b16533))
|
|
951
|
-
* **roadmaps:** park the opencode probe and restore the risk-register gate on main (#2229) ([c267eae](https://github.com/event4u-app/agent-config/commit/c267eaef62b49abb38730734509d1a39f1a3d788))
|
|
952
|
-
* **roadmaps:** land inbox-2026-10-e as ten ready roadmaps (#2225) ([0c86ad9](https://github.com/event4u-app/agent-config/commit/0c86ad98fb540e3be196cdead4dcf98a49b03492))
|
|
953
|
-
* **roadmaps:** record the owner's answers to eleven open blockers (#2222) ([a75bb32](https://github.com/event4u-app/agent-config/commit/a75bb32106f695d006aa67f9ffc8185afb54faad))
|
|
954
|
-
* **evidence:** publish the shadow readings the release window opened, and carry 2.3 (#2217) ([2bb3a1a](https://github.com/event4u-app/agent-config/commit/2bb3a1a03d50a58a374f4f6d7600147e930a523e))
|
|
955
|
-
* **roadmaps:** park menu-precision on a two-branch wake after a fourth null probe (#2215) ([f3cc5db](https://github.com/event4u-app/agent-config/commit/f3cc5db98ae15c744a990731f19b88a2508a60a3))
|
|
956
|
-
* **roadmaps:** settle four of seven blockers on road-to-leading-every-row (#2214) ([2bf1067](https://github.com/event4u-app/agent-config/commit/2bf10671424cb09adb179c50512577d7b6b79a52))
|
|
921
|
+
* **contracts:** point the hook-concern row at the manifest instead of a count ([3406ae5](https://github.com/event4u-app/agent-config/commit/3406ae53848f7cf2ca866c2d03d297ad549743d1))
|
|
957
922
|
|
|
958
923
|
### Tests
|
|
959
924
|
|
|
960
|
-
* **
|
|
925
|
+
* **hooks:** table-drive the opaque-family glob cases over all five heads ([52c9e0e](https://github.com/event4u-app/agent-config/commit/52c9e0e40ebd736aadcf8f37831f994ba1fe0dc6))
|
|
961
926
|
|
|
962
927
|
### Chores
|
|
963
928
|
|
|
964
|
-
* **
|
|
965
|
-
* **roadmaps:** park the two owner-blocked drafts in later/ (#2271) ([717aba6](https://github.com/event4u-app/agent-config/commit/717aba62a59685eca54515221e6165bae743dc05))
|
|
966
|
-
* **roadmaps:** archive the settings-classes stagnation roadmap (#2270) ([dd80cbe](https://github.com/event4u-app/agent-config/commit/dd80cbe5ce2f5aa3bb3a833a1d21d1f12a898126))
|
|
967
|
-
* **gates:** reaffirm the derivable-settings baseline after a drain that found nothing (#2268) ([6d603d9](https://github.com/event4u-app/agent-config/commit/6d603d93ecff326e9fc5c49d97dcd3f878bfb4af))
|
|
968
|
-
* **roadmaps:** close and archive road-to-enforcement-per-obligation (#2263) ([ebd8adc](https://github.com/event4u-app/agent-config/commit/ebd8adc37fbcd9ca334f2930653460d26f86437c))
|
|
969
|
-
* **roadmaps:** close and archive road-to-signals-that-mean-what-they-say (#2260) ([bacc2a0](https://github.com/event4u-app/agent-config/commit/bacc2a0dcaee3cab3864b1bb3cd11cc8f6aad4cf))
|
|
970
|
-
* **roadmaps:** archive the neighbours lane and carry its two deferred steps (#2259) ([7dc88a6](https://github.com/event4u-app/agent-config/commit/7dc88a61aae1b75026c14640817f76d18f739fa2))
|
|
971
|
-
* **roadmaps:** park road-to-learning-you-can-see-carried, and publish the reading that moved it (#2221) ([fcd5b9e](https://github.com/event4u-app/agent-config/commit/fcd5b9e0b27307444c15140a6ac56a965654fe2c))
|
|
972
|
-
* **roadmaps:** park road-to-stacks-beyond-php behind owner blocker b5 (#2220) ([d47793a](https://github.com/event4u-app/agent-config/commit/d47793a787dd3c61c4287194be8138e6c624bf6f))
|
|
973
|
-
* **roadmaps:** settle producible-vs-elapsed for the user_prompt_submit timeout and park host-claims-carried (#2218) ([763bc12](https://github.com/event4u-app/agent-config/commit/763bc121c24615027a01811322b73590845a85ad))
|
|
929
|
+
* **ratification:** record the council review of the inbox-name guard change ([a03c9e9](https://github.com/event4u-app/agent-config/commit/a03c9e95a6b7cb58065fd9e9c30b104ebcb4911b))
|
|
974
930
|
|
|
975
931
|
### Other
|
|
976
932
|
|
|
977
|
-
*
|
|
978
|
-
*
|
|
979
|
-
*
|
|
980
|
-
*
|
|
981
|
-
*
|
|
982
|
-
*
|
|
983
|
-
* Park the graph-feeder roadmap on an accrual wait its own repository cannot end (#2275) ([737f0d6](https://github.com/event4u-app/agent-config/commit/737f0d6633d52e51e3eb90115b17bfdc865eb43d))
|
|
984
|
-
* Close the pack-boundary base-into-narrow mismatch with an advisory edge the gate reads (#2273) ([9ecd663](https://github.com/event4u-app/agent-config/commit/9ecd6639fd8f4b2f02a277a8fe3f565d5783e792))
|
|
985
|
-
* Queue 47 default-neutral settings keys for retirement (#2272) ([9582574](https://github.com/event4u-app/agent-config/commit/958257418b9098ef37be6fc3118c7d4bcbc69861))
|
|
986
|
-
* Resolve 15 roadmap blockers, and run the council before any owner question (#2269) ([6d68417](https://github.com/event4u-app/agent-config/commit/6d6841712de38c4dcd8f5ff4c03bd5acc5b09cd3))
|
|
987
|
-
* Findings that get a disposition: medium security blocks a release, and every 16.3.0 row ends somewhere (#2266) ([bf7ed4f](https://github.com/event4u-app/agent-config/commit/bf7ed4f7559d8bd8827551bee21bf9b768262549))
|
|
988
|
-
* Harden the git convention from #2235: correct in a packed install, safe sync and rebase, and measure-and-propose for undeclared projects (#2258) ([b83bcb1](https://github.com/event4u-app/agent-config/commit/b83bcb19a7d5d649fbb8687c00a5327a2704febe))
|
|
989
|
-
* A team's git convention can be declared: ticket-prefixed commits, branch shape, and rebase instead of merge (#2235) ([0f9c32e](https://github.com/event4u-app/agent-config/commit/0f9c32e260c0e213273da9a448044e4403eac5a2))
|
|
990
|
-
* Re-price the neighbours lane on the tree it will be decided on, and stop its census caches leaking home paths (#2223) ([7cd6563](https://github.com/event4u-app/agent-config/commit/7cd6563a8c038b8bebe21f9b4dc6acda06ea5bc6))
|
|
991
|
-
|
|
992
|
-
Tests: 27198 (+1310 since 16.3.0)
|
|
993
|
-
|
|
994
|
-
## [16.3.0](https://github.com/event4u-app/agent-config/compare/16.2.0...16.3.0) (2026-10-05)
|
|
995
|
-
|
|
996
|
-
### Release highlights
|
|
997
|
-
|
|
998
|
-
- **Behaviour changes:** Rule links that name a path the repository actually has, and the blocker that held them (#2185) (8031e09); Rule laws that can stand, and the class whose law stands with them (#2177) (9e2fe18); 100 % roadmaps archive — bare deferrals carried, owner blockers ask step by step (#2167) (074eee6); make the two pack-boundary gates green on the trunk and run the workflow-security audit in CI (#2155) (90a0ad5); A release record that says what it reviewed, and an index with every major (#2157) (8e30a53).
|
|
999
|
-
- **Default changes + migration:** _none_
|
|
1000
|
-
- **Security and correctness:** 100 % roadmaps archive — bare deferrals carried, owner blockers ask step by step (#2167) (074eee6); make the two pack-boundary gates green on the trunk and run the workflow-security audit in CI (#2155) (90a0ad5).
|
|
1001
|
-
- **Honest nulls:** _none_
|
|
1002
|
-
- **Known limitations:** An installed layer measured against its limit, and the consent an installer must have before thinning (#2201) (src/scripts/install.ts declares a residual) (df7ea79); Two Phase-0 instruments closed against measurement, and the third blocked by a record rather than a ceiling (#2198) (src/scripts/check_standing_rule_delivery.ts declares a residual) (92027a2); A rule carrier that delivers what the install carries, in the host's form, in a string the host keeps (#2182) (src/scripts/install.ts declares a residual) (7fdfd0a); Rule triggers and installed links that hold (#2174) (src/scripts/install.ts declares a residual) (328a21b); A tree that keeps its neighbours (#2161) (src/scripts/install.ts declares a residual) (4399b5a); make the two pack-boundary gates green on the trunk and run the workflow-security audit in CI (#2155) (90a0ad5); +2 more.
|
|
1003
|
-
|
|
1004
|
-
> **Governance mix:** governance-only 23 vs consumer-only 1 (taxonomy 1.1.0).
|
|
1005
|
-
>
|
|
1006
|
-
> _Re-measured 2026-10-07:_ governance-only 83 vs consumer-only 3 (taxonomy 1.1.0) on `16.2.0..16.3.0` (`8d157f5e7..91aaf5e21`), via `./scripts-run src/scripts/measure_release_mix --from 16.2.0 --to 16.3.0`. The line above was measured to an unrecorded `HEAD` at write time.
|
|
1007
|
-
|
|
1008
|
-
### Features
|
|
1009
|
-
|
|
1010
|
-
* **commands:** /roadmap:resolve-blockers — council first, owner one question at a time (#2204) ([5ddfc05](https://github.com/event4u-app/agent-config/commit/5ddfc05819a501b1066b713571e9073d1ce435c9))
|
|
1011
|
-
* **commands:** /roadmap:triage-parked — drain later/ and skipped/ (#2184) ([ab516fc](https://github.com/event4u-app/agent-config/commit/ab516fc19a420a7022eb7dc5f8b16f6d033fc6e8))
|
|
1012
|
-
* **evidence:** classify the evidence tree by reference, and rule out a cold location (#2153) ([590cebc](https://github.com/event4u-app/agent-config/commit/590cebc729a7a45fbe98e2ee55b8f231ac0329c2))
|
|
1013
|
-
* **hooks:** run the project's own quality tools over the files a turn edited (#2152) ([d4760bb](https://github.com/event4u-app/agent-config/commit/d4760bb4f47b7be902c9ec3b88c51d8aa818311e))
|
|
1014
|
-
* **memory-learn:** open the learning dogfood window and give it a screen (#2151) ([162889e](https://github.com/event4u-app/agent-config/commit/162889e8b16359904766927a7fbd896f961ed9b9))
|
|
1015
|
-
* **ui:** flip the carried-nothing shadow to a halt, closing road-to-a-ui-coverage-ledger-that-can-fail (#2149) ([cbd5d07](https://github.com/event4u-app/agent-config/commit/cbd5d07fe21af3a3de12e847b3b8da7f86f8bb81))
|
|
1016
|
-
|
|
1017
|
-
### Bug Fixes
|
|
1018
|
-
|
|
1019
|
-
* **archival:** 100 % roadmaps archive — bare deferrals carried, owner blockers ask step by step (#2167) ([074eee6](https://github.com/event4u-app/agent-config/commit/074eee6881d19b5f6d7ec8574a83c26dffd25353))
|
|
1020
|
-
* **gates:** make the two pack-boundary gates green on the trunk and run the workflow-security audit in CI (#2155) ([90a0ad5](https://github.com/event4u-app/agent-config/commit/90a0ad522d49a853d30ffb6f1fec46e2b802ae35))
|
|
1021
|
-
* **hooks:** make the bundle ceiling describe the trunk it defends (#2165) ([c399d09](https://github.com/event4u-app/agent-config/commit/c399d097eea2f30676b36604a2514ff0e22cd46d))
|
|
1022
|
-
|
|
1023
|
-
### Documentation
|
|
1024
|
-
|
|
1025
|
-
* **roadmaps:** drain road-to-leading-every-row — install above the fold, commit-mix baseline, seven owner questions put (#2148) ([8f32c31](https://github.com/event4u-app/agent-config/commit/8f32c316b489f6b8decfdacf57da72149e07dbd5))
|
|
1026
|
-
* **roadmaps:** land four roadmaps from inbox round inbox-2026-10-c (#2150) ([07f83a1](https://github.com/event4u-app/agent-config/commit/07f83a1f681869b9cea467f2ad88e5642ef55af9))
|
|
1027
|
-
* **roadmaps:** use the declared decision classes in the inbox-2026-10-a roadmaps ([ab5c92b](https://github.com/event4u-app/agent-config/commit/ab5c92b61936fdddfd5bb3e315d086b64bc1911e))
|
|
1028
|
-
* **roadmaps:** state the measured blocker growth in the round's claim ([2a52860](https://github.com/event4u-app/agent-config/commit/2a528602ea27b6407e9e999b8818f41ad1e9f0cb))
|
|
1029
|
-
* **evidence:** disposition for inbox round inbox-2026-10-a ([ea06fa1](https://github.com/event4u-app/agent-config/commit/ea06fa1fafe54db61b1313050c52d4c7497e799a))
|
|
1030
|
-
* **roadmaps:** record arrivals and owner questions on six held objects ([60f9e60](https://github.com/event4u-app/agent-config/commit/60f9e60f6d2940c49677479641a599d23cbd380b))
|
|
1031
|
-
* **roadmaps:** land eight roadmaps from inbox round inbox-2026-10-a ([2c34c3d](https://github.com/event4u-app/agent-config/commit/2c34c3d99b103bd704f917d1603e926f7dac3f0c))
|
|
1032
|
-
* **evidence:** declare the evidence type on the inbox-2026-10-b disposition ([8adf9ef](https://github.com/event4u-app/agent-config/commit/8adf9eff9b7908334ed29cb7ed4fbe48f2e05cda))
|
|
1033
|
-
* **evidence:** record the inbox-2026-10-b disposition ([a51740b](https://github.com/event4u-app/agent-config/commit/a51740b4b79d963af8ff2fd3551c26214430166e))
|
|
1034
|
-
* **stubs:** count the inbox-2026-10-b arrivals on four held stubs ([6f2bc0b](https://github.com/event4u-app/agent-config/commit/6f2bc0b116a78747bc98e1addfda25672ea76ed7))
|
|
1035
|
-
* **roadmaps:** land the leading-every-row programme and its lanes from inbox-2026-10-b ([6631412](https://github.com/event4u-app/agent-config/commit/6631412219157e4b26ee9f1eede6493ea38764c0))
|
|
1036
|
-
|
|
1037
|
-
### Chores
|
|
1038
|
-
|
|
1039
|
-
* **deps:** bump the site group in /site with 4 updates (#2170) ([7464482](https://github.com/event4u-app/agent-config/commit/7464482550df64e24f101988086f9c6fb1bd7945))
|
|
1040
|
-
* **deps-dev:** bump the telemetry-worker group across 1 directory with 2 updates (#2163) ([11eb5d8](https://github.com/event4u-app/agent-config/commit/11eb5d813dc9057e9f475b7a827aa9730d688447))
|
|
1041
|
-
|
|
1042
|
-
### Other
|
|
933
|
+
* add road-to-svg-from-a-live-session from the continued raster-to-SVG session (#2301) ([a17bd4a](https://github.com/event4u-app/agent-config/commit/a17bd4aa2bcca14cc787096be644647be6188f2e))
|
|
934
|
+
* road-to-svg-review-followups from two reviews of the SVG roadmaps (#2299) ([b015b74](https://github.com/event4u-app/agent-config/commit/b015b747f7c2eea4a8206aba846b82dcc6e84f40))
|
|
935
|
+
* add two ready SVG roadmaps from inbox-2026-10-l (#2298) ([fd02787](https://github.com/event4u-app/agent-config/commit/fd02787ef8e0e9eb21e9a0256e5f3ea9bca21492))
|
|
936
|
+
* give six added verify clauses an expectation that can fail ([9a5338a](https://github.com/event4u-app/agent-config/commit/9a5338aebd49923a894e803b7e21f0d5dbb5d7d3))
|
|
937
|
+
* add thirteen ready roadmaps from inbox-2026-10-g..k ([d8a9e43](https://github.com/event4u-app/agent-config/commit/d8a9e43a881bcf6ad9a8a96c83a4e4958f321098))
|
|
938
|
+
* record inbox-2026-10-g..k arrivals on held stubs and parked roadmaps ([243b6f3](https://github.com/event4u-app/agent-config/commit/243b6f30251da478e03a5f9aa3d60636a14ea0e1))
|
|
1043
939
|
|
|
1044
|
-
|
|
1045
|
-
* Two roadmaps that read finished, and the three gates that keep each of them where it is (#2205) ([df377ca](https://github.com/event4u-app/agent-config/commit/df377ca64d0333105ffd80813caa94e11805c30b))
|
|
1046
|
-
* An installed layer measured against its limit, and the consent an installer must have before thinning (#2201) ([df7ea79](https://github.com/event4u-app/agent-config/commit/df7ea7928c9d9fe5815978b689198b79fc8158d3))
|
|
1047
|
-
* Archive the kernel-plumbing roadmap, which finished and stayed in the active set (#2203) ([901e8bc](https://github.com/event4u-app/agent-config/commit/901e8bc4e848283327f5c6811e4e221246a41210))
|
|
1048
|
-
* A blocker citation pointing at a test fixture, and a step oracle that cannot reach its own exit (#2202) ([c04d74b](https://github.com/event4u-app/agent-config/commit/c04d74bea094071c72a1421fb013ee12e8200f2f))
|
|
1049
|
-
* The first observed structured-ask row, and the subagent leg the absent one was read from (#2199) ([f73e77d](https://github.com/event4u-app/agent-config/commit/f73e77d0f93f55ab76658d86b38dde00222d1246))
|
|
1050
|
-
* An acceptance criterion closed on measurement, a guard claim withdrawn, and the second obstacle under a blocked gate (#2200) ([e3e4774](https://github.com/event4u-app/agent-config/commit/e3e4774e2c6f6e2aa24d8720e6aff38c095d67f4))
|
|
1051
|
-
* A calendar hold whose date had already passed, and the gate standing behind the stamp (#2196) ([6aa3c36](https://github.com/event4u-app/agent-config/commit/6aa3c36f9cbd596a65cb5b2faafa71cdd240b8f5))
|
|
1052
|
-
* Two Phase-0 instruments closed against measurement, and the third blocked by a record rather than a ceiling (#2198) ([92027a2](https://github.com/event4u-app/agent-config/commit/92027a20c350f5b53625a1efbd3157aaf163b26b))
|
|
1053
|
-
* Two locks under one owner question, a bundle figure stale by 41 kB, and the oracle a blocked step is waiting for (#2197) ([24d6d5b](https://github.com/event4u-app/agent-config/commit/24d6d5b0d93852ee106dd1a1a7eda9bca9b2c249))
|
|
1054
|
-
* A blocker that held on its fourth reading, and the line it cited having moved (#2195) ([780c27e](https://github.com/event4u-app/agent-config/commit/780c27e1ed0f36edc6cd59883dce36230dfef9d4))
|
|
1055
|
-
* A payload total that drifted under a pin that never pinned it (#2194) ([e6b7193](https://github.com/event4u-app/agent-config/commit/e6b71933a84bb15e432e86aced4c848897498716))
|
|
1056
|
-
* A blocker that held on its sixth reading, and the four edits it is waiting on (#2193) ([fe0cff8](https://github.com/event4u-app/agent-config/commit/fe0cff8a558897a47caba9eb6d9dbe80e90e2d4b))
|
|
1057
|
-
* A blocker stated in prose, re-stated as the command that decides it (#2192) ([18ac6b2](https://github.com/event4u-app/agent-config/commit/18ac6b21ec35c4132958dc382349acc6af9a3b53))
|
|
1058
|
-
* A fifth reading of two blockers that held, and a second obstacle under the first (#2191) ([afad042](https://github.com/event4u-app/agent-config/commit/afad042bb39e24f3edf5dbbbfccabbda0f3ddb00))
|
|
1059
|
-
* A guard that permitted the call precisely when it broke, in six places and a seventh shape (#2189) ([51ee084](https://github.com/event4u-app/agent-config/commit/51ee0844b564f8863b753606f1758c9c0ef6dbd3))
|
|
1060
|
-
* An accrual figure that moved while the labelled corpus did not (#2190) ([30481f6](https://github.com/event4u-app/agent-config/commit/30481f6605ade9ff06bbc9ca300ab8614781321c))
|
|
1061
|
-
* A third reading of a blocker that has not moved, and a census nine units behind the tree (#2187) ([50bec97](https://github.com/event4u-app/agent-config/commit/50bec97430107d9fe73a6561a4fb986150c57ea8))
|
|
1062
|
-
* The fourth wake shape has no envelope tag, and the anchor is the whole guard (#2188) ([97a5a64](https://github.com/event4u-app/agent-config/commit/97a5a647412e376bf8ac12b9065706710c956831))
|
|
1063
|
-
* Rule links that name a path the repository actually has, and the blocker that held them (#2185) ([8031e09](https://github.com/event4u-app/agent-config/commit/8031e09d6ff6ecc61be329f2af4a904bcc7be18f))
|
|
1064
|
-
* The third wake shape: a subagent hand-back is a turn nobody typed, in two vocabularies that both missed it (#2186) ([0199fd0](https://github.com/event4u-app/agent-config/commit/0199fd0c0a448f3fdf262373cc30971213954168))
|
|
1065
|
-
* Twenty-eight boxes re-run rather than read, and the policy behind seven settled-looking cells (#2183) ([d6a2da7](https://github.com/event4u-app/agent-config/commit/d6a2da7bca601dbe9432b35c6fd76fddd63c80db))
|
|
1066
|
-
* A rule carrier that delivers what the install carries, in the host's form, in a string the host keeps (#2182) ([7fdfd0a](https://github.com/event4u-app/agent-config/commit/7fdfd0a4d59c616153ffaa283e265708b87b88ae))
|
|
1067
|
-
* A rule carrier that works outside the repo: resolution, one mode answer, and the matrix that proves both (#2181) ([95dc7bf](https://github.com/event4u-app/agent-config/commit/95dc7bfb1ba8c5dcb43ce7cfe3f8d271093eacf9))
|
|
1068
|
-
* The MCP recorder does not run, and what it would record was wrong in five ways (#2180) ([59824fd](https://github.com/event4u-app/agent-config/commit/59824fd95acfe5f6772f8da02e9f52a7896d593c))
|
|
1069
|
-
* Neighbours counted by use, and the link criterion measured rather than assumed (#2179) ([cd26c2e](https://github.com/event4u-app/agent-config/commit/cd26c2e177976d85644fbe8fd9c5a973418bfcdc))
|
|
1070
|
-
* Rule laws that can stand, and the class whose law stands with them (#2177) ([9e2fe18](https://github.com/event4u-app/agent-config/commit/9e2fe189e85d4b1feabb0bef55680e02097f0ac7))
|
|
1071
|
-
* A route line that says where the skill came from (#2178) ([6bdc2b2](https://github.com/event4u-app/agent-config/commit/6bdc2b25ba6c6d06b94a2137ccfd336efc8f60b0))
|
|
1072
|
-
* Stacks beyond PHP: the composition gate, the third binding site, and four resolver fixtures (#2173) ([a3c8393](https://github.com/event4u-app/agent-config/commit/a3c839340059ef68c8a37568685739bb9f8c7fe3))
|
|
1073
|
-
* Say which tree the reach numbers came from, and publish the per-prompt pair (#2176) ([4871260](https://github.com/event4u-app/agent-config/commit/48712607ad706c502cb44938a288a39b64d3f784))
|
|
1074
|
-
* Rule triggers and installed links that hold (#2174) ([328a21b](https://github.com/event4u-app/agent-config/commit/328a21bef2d8f6660227f4f9656d2043751ff7fc))
|
|
1075
|
-
* The stop gate records who set stop_hook_active, and the fingerprint store cannot be bound where its council chose (#2175) ([379cd53](https://github.com/event4u-app/agent-config/commit/379cd535c6618d8d514b78654eef8c59461dc0a1))
|
|
1076
|
-
* The advisories were already fixed; the record was not (#2171) ([30f7d21](https://github.com/event4u-app/agent-config/commit/30f7d21f65146fd348bc354b33093794ab500bcf))
|
|
1077
|
-
* Dispositions the carried roadmaps were missing (#2172) ([11726a9](https://github.com/event4u-app/agent-config/commit/11726a985ca8de0e183c14d643519d7aa5d77d0c))
|
|
1078
|
-
* archive the three roadmaps main still held at 100 % (#2168) ([21da719](https://github.com/event4u-app/agent-config/commit/21da71917d1ad685737b10196245c8d323bd21f4))
|
|
1079
|
-
* Let dependency PRs reach their required check (#2169) ([540ee7a](https://github.com/event4u-app/agent-config/commit/540ee7a0bed2bf327c971f204ab90a346a768250))
|
|
1080
|
-
* A tree that keeps its neighbours (#2161) ([4399b5a](https://github.com/event4u-app/agent-config/commit/4399b5a0d6395631d808f6bc5f75aaa7eed7e573))
|
|
1081
|
-
* A graph that reaches the search, sees the edit, and feeds the gate in shadow (#2159) ([4958809](https://github.com/event4u-app/agent-config/commit/495880908332d55c9a4069f7266dc19c99c83824))
|
|
1082
|
-
* A release record that says what it reviewed, and an index with every major (#2157) ([8e30a53](https://github.com/event4u-app/agent-config/commit/8e30a533124b1c85b011bb463a6bd63c3fc3c6e1))
|
|
1083
|
-
* Three claims a roadmap makes about itself, made checkable (#2156) ([3a8498c](https://github.com/event4u-app/agent-config/commit/3a8498c2c00fcff37970e2eeabd4ebe7b43f8b9e))
|
|
1084
|
-
* Blocking severities where a refusal can land (#2154) ([81d712f](https://github.com/event4u-app/agent-config/commit/81d712f2706ffe6fcdf98f2198a5607d7c6faf17))
|
|
1085
|
-
* Give the three spawn-bound test suites their own timeout (#2166) ([aead73d](https://github.com/event4u-app/agent-config/commit/aead73d280f8c61de7cf604ef39c06274fb6baf4))
|
|
1086
|
-
* A ranker that routes: the null, and the two premises it refuted (#2162) ([213d870](https://github.com/event4u-app/agent-config/commit/213d870558b7fbcdc033ac6f8f0ef4c1a43a5a80))
|
|
1087
|
-
* One YAML reader in the hook bundle, a ceiling on it, and a census that renders (#2158) ([22b19e5](https://github.com/event4u-app/agent-config/commit/22b19e520c198b6f0aec2cbf8cb2851818c11fcc))
|
|
1088
|
-
* Record a verification command that fails on claude (#2160) ([29b1832](https://github.com/event4u-app/agent-config/commit/29b183256155f9a3dea3d3351268b62b33628fde))
|
|
1089
|
-
* Three surfaces that said more than they did (#2144) ([00612c1](https://github.com/event4u-app/agent-config/commit/00612c1f27edafcfa6340b41c56a0da281d6ebc2))
|
|
1090
|
-
|
|
1091
|
-
Tests: 25888 (+896 since 16.2.0)
|
|
940
|
+
Tests: 27325 (+127 since 16.4.0)
|
|
1092
941
|
|
|
1093
942
|
# Era: pre-4.0.0 — archived
|
|
1094
943
|
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml) [](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml) [](https://www.npmjs.com/package/@event4u/agent-config) [](https://glama.ai/mcp/servers/event4u-app/agent-config) [](https://mcptoplist.com/server/glama%2Fevent4u-app%2Fagent-config)
|
|
6
6
|
|
|
7
|
-
[](dist/agent-src/skills/) [](dist/agent-src/rules/) [](dist/agent-src/commands/) [](docs/guidelines/) [](dist/agent-src/personas/) [](dist/agent-src/personas/advisors/) <!-- claim:published-artifact-counts -->
|
|
8
8
|
|
|
9
9
|
<sub>**How these are counted** — one canonical counter, `agent-config` → `update_counts --check`, re-derives all six from the tree and fails CI on a drift of one. Two bases are not what the linked directory shows, so they are stated here rather than left to be inferred: **Commands 205** counts every command file **recursively** (the linked directory holds 60 at its top level), and **Rules 121** counts the **source** rules while the linked projection holds 120 — one rule is dormant and is not projected. **Personas 29** excludes the directory README. Counts are of files and directories: none of them measures quality, activation, or adoption. <!-- claim:published-artifact-counts --></sub>
|
|
10
10
|
|
|
@@ -32,7 +32,7 @@ adds a router rather than a 295th entry to it.
|
|
|
32
32
|
| Verb | Routes to | What it does |
|
|
33
33
|
|---|---|---|
|
|
34
34
|
| `audit` | `agent-config ui:audit` | Inventory the tree into `agents/runtime/state/ui-audit.json`. Class A. |
|
|
35
|
-
| `render` | `agent-config ui:render` | Capture desktop / 375 / 320 into `agents/runtime/state/render
|
|
35
|
+
| `render` | `agent-config ui:render` | Capture desktop / 375 / 320 into `agents/runtime/state/render/`; `--profile asset` renders one SVG per asset class on a light and a dark background instead. Class A. |
|
|
36
36
|
| `review` | [`design-review`](../../../skills/design-review/SKILL.md) | Two-pass review — judgement before detector, or the `DEGRADED: single-context` banner. |
|
|
37
37
|
| `polish` | [`fe-design`](../../../skills/fe-design/SKILL.md) | Spacing, rhythm, alignment. |
|
|
38
38
|
| `quieter` | `fe-design` | Spacing, weight, contrast within the palette. |
|
|
@@ -114,7 +114,7 @@ Within-project invariants + repetition caps. Override = declare the value in
|
|
|
114
114
|
| V2 | Glassmorphism as decoration (`backdrop-blur` + `bg-white/10`) with no functional depth hierarchy | Model defaults to it for "premium feel"; result looks like 2021 Material You clip-art | Element genuinely sits above a complex, blurred background layer; use sparingly and only for top-level floating surfaces | craft-presumption | delete → reduce | static |
|
|
115
115
|
| V3 | Ghost card: `border: 1px solid` + box-shadow ≥ 16px spread together | The combination creates visual noise — the ghost card signals no confident decision about depth | Choose either border OR shadow to indicate depth; never both on the same surface | invariant | delete → reduce | static |
|
|
116
116
|
| V4 | Over-rounded small cards or badges: `border-radius` > 16px on elements < 200px wide | Excessive rounding on small surfaces looks toy-ish; standard cap is 12–16px | Pill shape (`border-radius: 9999px`) is intentional on single-line tags/chips only | craft-presumption | retune | static |
|
|
117
|
-
| V5 | Hand-drawn or illustrated SVG icons mixed with crisp icon-system icons | Visual register collision; instantly reads as "generated asset" | Intentional illustrative section (hero illustration, empty-state art); isolate from the icon system | invariant | replace | render |
|
|
117
|
+
| V5 | Hand-drawn or illustrated SVG icons mixed with crisp icon-system icons | Visual register collision; instantly reads as "generated asset" | Intentional illustrative section (hero illustration, empty-state art); isolate from the icon system. A genuinely missing glyph is authored under [`svg-authoring`](../skills/svg-authoring/SKILL.md) against the incumbent set's own grid | invariant | replace | render |
|
|
118
118
|
| V6 | Repeating diagonal stripes as a background texture | A cliché background default; reads as generated CSS art | Brand explicitly uses pattern backgrounds (e.g., a textile brand); document the stripe definition | style-preference | delete | static |
|
|
119
119
|
| V7 | Nested cards: a card inside a card inside a card | Depth hierarchy collapses; user cannot parse elevation intent | A truly three-level hierarchy (e.g., project → board → card); ensure each level has distinct visual weight | invariant | delete → reduce | render |
|
|
120
120
|
| V9 | Noise or grain texture laid over a gradient as a "premium" surface default | The visual sibling of V6's diagonal stripes — a generated-CSS-art texture reached for to make a flat gradient look considered, applied because it is available rather than because the surface needed a texture | The texture is part of a documented brand surface treatment (a print-inspired or analog-photographic identity) with the grain opacity defined as a token, not chosen per surface | style-preference | delete | render |
|
|
@@ -51,8 +51,8 @@ A skill claiming `rich` MUST satisfy ALL three:
|
|
|
51
51
|
carry a `load_context` pointer instead.
|
|
52
52
|
|
|
53
53
|
3. **≤ 15 % of the suite's skills may claim `rich`** — the CI linter counts
|
|
54
|
-
rich-tagged skills and hard-fails if the ratio is exceeded. With
|
|
55
|
-
the cap is ~
|
|
54
|
+
rich-tagged skills and hard-fails if the ratio is exceeded. With 300 skills
|
|
55
|
+
the cap is ~45. Do not claim `rich` for convenience; claim it only for
|
|
56
56
|
irreducible-complexity skills.
|
|
57
57
|
|
|
58
58
|
## Telegraph-speak amendment
|
|
@@ -11,3 +11,5 @@ Skip link & landmarks,skip link landmark main nav banner region,landmarks + skip
|
|
|
11
11
|
Drag and drop / reorder,drag drop reorder sortable kanban move,keyboard-equivalent commands,Every drag operation has a keyboard path (move-up/move-down buttons or grab mode with arrows + announcements); aria-live announces position changes,"WCAG 2.1.1, 2.5.7",Pointer-only reordering,https://www.w3.org/WAI/ARIA/apg/patterns/listbox/
|
|
12
12
|
Loading / busy state,loading spinner skeleton busy progress,aria-busy + progressbar/status,Region marked aria-busy during load OR role=progressbar with valuenow; announce completion via status region; skeletons are aria-hidden,WCAG 4.1.3,Spinner gif with no text alternative; focus lost on content swap,https://www.w3.org/WAI/ARIA/apg/patterns/meter/
|
|
13
13
|
Icon-only button,icon button close edit delete aria-label svg,accessible name on control,aria-label (or visually-hidden text) on the button; svg aria-hidden=true focusable=false; hit area ≥44px,"WCAG 4.1.2, 2.5.8",title attribute as the only name; emoji as icon,https://www.w3.org/WAI/ARIA/apg/patterns/button/
|
|
14
|
+
Meaningful standalone graphic,svg graphic chart diagram illustration logo standalone meaningful accessible name title desc,role=img + referenced title/desc,"role=img on the svg; a direct child title (plus optional desc) referenced by aria-labelledby using ids namespaced per instance; never aria-label together with title; delivered through img, the host alt is the accessible name and the inline title is unreachable","WCAG 1.1.1, 4.1.2","Generic id=""title"" reused by two inline graphics, so both announce the first one's name; title present without role=img; aria-label and title on the same element",https://www.w3.org/WAI/tutorials/images/complex/
|
|
15
|
+
Decorative graphic,decorative ornament flourish background presentational aria-hidden empty alt svg,aria-hidden + empty host alt,"aria-hidden=true and focusable=false on the svg; delivered through img, an empty alt (never a missing alt, which lets the file name become the name); the graphic carries no title",WCAG 1.1.1,Alt text describing an ornament; aria-hidden on a graphic carrying the only copy of its information,https://www.w3.org/WAI/tutorials/images/decorative/
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"owner": "package-maintainer",
|
|
28
28
|
"refresh_cadence": "quarterly",
|
|
29
29
|
"upstream": {
|
|
30
|
-
"repo": "derived: W3C ARIA Authoring Practices Guide + WCAG 2.2",
|
|
31
|
-
"sha": "WCAG 2.2 W3C-REC-2024-12-12; APG continuously-published, menu-button canonical slug",
|
|
32
|
-
"last_checked": "2026-10-
|
|
30
|
+
"repo": "derived: W3C ARIA Authoring Practices Guide + WCAG 2.2 + W3C WAI Images Tutorial",
|
|
31
|
+
"sha": "WCAG 2.2 W3C-REC-2024-12-12; APG continuously-published, menu-button canonical slug; the two graphic rows re-derived 2026-10-11 from the WAI Images Tutorial (complex, decorative) against WCAG 1.1.1 / 4.1.2, and both retrieval queries re-run after the append — 'meaningful standalone svg chart graphic accessible name' moved off the icon-button row, 'icon only close button' kept it",
|
|
32
|
+
"last_checked": "2026-10-11"
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
model_tier: inherit
|
|
3
3
|
name: canvas-design
|
|
4
|
-
description: "
|
|
4
|
+
description: "Static visual art — posters, marketing visuals, brand assets, PDF/PNG pieces — on 'design a poster' or 'mach uns ein Visual'."
|
|
5
5
|
domain: product
|
|
6
6
|
workspaces:
|
|
7
7
|
- small-business
|
|
@@ -73,7 +73,9 @@ Document it in `philosophy.md` under `## Subtle reference`.
|
|
|
73
73
|
|
|
74
74
|
Produce `agents/design-assets/{slug}/{slug}.{pdf|png}`:
|
|
75
75
|
|
|
76
|
-
1. Pick the execution tool (Pillow, matplotlib, SVG, or framework-native)
|
|
76
|
+
1. Pick the execution tool (Pillow, matplotlib, SVG, or framework-native). When
|
|
77
|
+
it is SVG, author it under [`svg-authoring`](../svg-authoring/SKILL.md) —
|
|
78
|
+
the canvas is still an asset and gets the same static check and witness
|
|
77
79
|
2. **Font selection** — pick a font that earns the philosophy. Inspect a working dir (e.g. `agents/design-assets/{slug}/fonts/` — create if missing) and place the chosen file there before render. System defaults (Arial, Helvetica, DejaVu, the matplotlib default sans) are the AI-template tell; reach for them only as deliberate fallback, never as the unexamined default
|
|
78
80
|
3. Limited palette — 2–5 colors, intentional and cohesive
|
|
79
81
|
4. Geometric or organic forms per philosophy
|
|
@@ -62,16 +62,19 @@ shape; 3–7 → one diagram; 8+ → split or summarize, never one dense picture
|
|
|
62
62
|
| a **cycle** / loop / lifecycle | — | a **stepper widget**, never a hand-drawn ring |
|
|
63
63
|
| a **DB schema / ERD** / entity relations | — | **mermaid**, never hand-placed SVG |
|
|
64
64
|
|
|
65
|
-
###
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
65
|
+
### Drawing the diagram itself
|
|
66
|
+
|
|
67
|
+
The verb routing above and the noun-count triage stay here — they decide WHAT to
|
|
68
|
+
draw. **How** to draw it, and the check that the drawing is right, belong to
|
|
69
|
+
[`svg-authoring`](../../svg-authoring/SKILL.md).
|
|
70
|
+
|
|
71
|
+
The three checks this section used to carry — viewBox safety, the
|
|
72
|
+
arrow-through-box trace, and sizing a box from its longest label — were author
|
|
73
|
+
self-checks with no witness, and a published example in this very file violated
|
|
74
|
+
the viewBox rule it stated. They are now readings the asset profile takes in a
|
|
75
|
+
real engine: every painted element against the viewBox, and every `<text>`
|
|
76
|
+
against its declared box. A self-check that nothing measures is the failure
|
|
77
|
+
mode, not the three rules.
|
|
75
78
|
|
|
76
79
|
(Reference-only: any color/easing/frame values come from the consumer's tokens
|
|
77
80
|
or a maintained upstream — this skill vendors no drawn-asset corpus.)
|
|
@@ -235,12 +235,59 @@ silently does nothing and a shared-element route change gets hand-rolled.
|
|
|
235
235
|
- **`transform-origin`** decides where a `scale()` grows from. A menu or popover
|
|
236
236
|
scaling in should originate at its trigger, not at its own centre, or it reads
|
|
237
237
|
as arriving from nowhere. Scale in from ~0.96, never from `scale(0)`: growing
|
|
238
|
-
from nothing is an entrance, and steps 1-2 asked for feedback.
|
|
238
|
+
from nothing is an entrance, and steps 1-2 asked for feedback. This line is
|
|
239
|
+
about an HTML box. On an SVG child the same declaration resolves against the
|
|
240
|
+
viewBox instead, which is the first bullet of 6b below.
|
|
239
241
|
- **`@media (hover: hover)`** gates any hover-carried motion. Without it a touch
|
|
240
242
|
device fires the hover treatment on tap and leaves it stuck, because there is
|
|
241
243
|
no pointer to leave.
|
|
242
244
|
|
|
243
|
-
|
|
245
|
+
**6b. Which mechanism carries it inside an SVG?**
|
|
246
|
+
|
|
247
|
+
An SVG child is not an HTML box, and the asset is often delivered somewhere the
|
|
248
|
+
page's own CSS cannot reach. Four mechanisms differ there, and the delivery mode
|
|
249
|
+
decides which of them is even available. Mechanism only: none of these states a
|
|
250
|
+
duration, a band or a curve, and an SVG animation is banded by steps 1-3 like
|
|
251
|
+
any other.
|
|
252
|
+
|
|
253
|
+
- **`transform-box: fill-box`** is required before any CSS `transform` or
|
|
254
|
+
`transform-origin` on an SVG child means what it reads as. The initial
|
|
255
|
+
reference box is the nearest viewport — the `viewBox` — not the element's own
|
|
256
|
+
bounds, so `transform-origin: center` on a shape away from the origin scales
|
|
257
|
+
it about the canvas center and translates it as a side effect. The shape still
|
|
258
|
+
moves, nothing errors, and the value looks correct in the stylesheet, which is
|
|
259
|
+
why this is a silent failure rather than a visible one.
|
|
260
|
+
- **`pathLength="1"`** normalises a path's length for a draw-on, so
|
|
261
|
+
`stroke-dasharray` and `stroke-dashoffset` are written as fractions of the
|
|
262
|
+
stroke instead of as units of a geometry nobody measured. A dash guessed too
|
|
263
|
+
long leaves the stroke invisible for the opening part of its run and then
|
|
264
|
+
snaps; guessed too short, it draws and stops early. Set the attribute and the
|
|
265
|
+
guess disappears.
|
|
266
|
+
- **`keySplines`** takes control-point values inside `[0,1]`. An overshoot is
|
|
267
|
+
not expressible there and an out-of-range value is not clamped — the element
|
|
268
|
+
holds its start value for the whole run instead of easing, while an in-range
|
|
269
|
+
twin finishes normally. Step 2's bounce prohibition already rules the intent
|
|
270
|
+
out; this is the mechanism refusing it as well.
|
|
271
|
+
- **A path morph** interpolates only between two `d` values carrying the same
|
|
272
|
+
number of commands, of the same type, in the same order. Anything else is a
|
|
273
|
+
discrete swap wearing an animation's syntax. Author both paths against one
|
|
274
|
+
command list rather than simplifying each in isolation. (The CSS `d` property
|
|
275
|
+
is deliberately not addressed here — its cross-engine behavior is unmeasured
|
|
276
|
+
in this tree.)
|
|
277
|
+
- **Delivery mode picks the mechanism, and picks the reduced-motion route with
|
|
278
|
+
it.** A self-contained asset animates with internal CSS keyframes inside
|
|
279
|
+
`@media (prefers-reduced-motion: no-preference)`, which satisfies step 3's
|
|
280
|
+
requirement from inside the file. Reach for SMIL (`<animate>`,
|
|
281
|
+
`<animateTransform>`) only for what CSS cannot carry — and then the
|
|
282
|
+
reduced-motion route cannot be a CSS rule, because a page-level
|
|
283
|
+
`svg * { animation: none !important }` leaves an `<animate>` running. Use a
|
|
284
|
+
static twin selected by the media query, or `pauseAnimations()` under
|
|
285
|
+
`matchMedia`. An animated SVG delivered through `<img>` or a CSS background
|
|
286
|
+
cannot be reached by the host's CSS at all, so the host supplies the static
|
|
287
|
+
route — `<picture><source media="(prefers-reduced-motion: reduce)">` — or the
|
|
288
|
+
asset carries its own internal media query.
|
|
289
|
+
|
|
290
|
+
All of them still obey step 3's bands, step 2's single `ease-out` curve, and the
|
|
244
291
|
`@media (prefers-reduced-motion: reduce)` requirement above — a newer mechanism
|
|
245
292
|
is not an exemption from the authority, it is another way of spending it.
|
|
246
293
|
|
|
@@ -51,6 +51,7 @@ NO SECRET, PRIVILEGED KEY, OR SESSION TOKEN LIVES IN CLIENT CODE OR localStorage
|
|
|
51
51
|
| `eval` / `new Function` / string-`setTimeout` on input | Eval injection / RCE (CWE-95) | a parser or explicit allow-list |
|
|
52
52
|
| `target="_blank"` without `rel="noopener"` | Reverse tabnabbing (CWE-1022) | add `rel="noopener noreferrer"` |
|
|
53
53
|
| Missing CSP; missing alt/label/contrast | No XSS second line of defense; a11y failures | strict CSP (no `unsafe-inline`); alt text, labels, AA contrast |
|
|
54
|
+
| Untrusted SVG markup into an HTML sink — `innerHTML` / `v-html` / `dangerouslySetInnerHTML`, or inlined server-side | An inlined SVG is live DOM, not an image: `on*` event attributes, `<script>`, `foreignObject`, a `javascript:` href and external references all execute, and a DOCTYPE with entities reads local files (CWE-79, CWE-611) | sanitize with an SVG profile chosen for the **delivery context** — inline DOM runs script and handlers in the host origin; a standalone `.svg` opened directly runs them in its own; `<img>` and CSS `background-image` run no script and load no external reference — or deliver through `<img>`, with CSP as the second line. Uploads are `threat-modeling`'s `data/threats.csv:9`, not this row |
|
|
54
55
|
|
|
55
56
|
## The server-composed bootstrap payload
|
|
56
57
|
|
|
@@ -108,6 +109,14 @@ rg -n "origin:\s*['\"]\*['\"]|Access-Control-Allow-Origin.*\*"
|
|
|
108
109
|
rg -n "addEventListener\(\s*['\"]message['\"]" # then confirm each checks event.origin
|
|
109
110
|
# Unhardened external links
|
|
110
111
|
rg -n 'target=["'\'']_blank["'\'']' # then confirm rel="noopener" present
|
|
112
|
+
# SVG active content — markup that executes once the SVG is inlined.
|
|
113
|
+
# Scoped to *.svg, where an on* attribute is always a defect. In .jsx/.tsx an
|
|
114
|
+
# on* attribute is ordinary React and matching it there would bury the signal;
|
|
115
|
+
# an on* on INLINE svg inside a host document is DQ4's case, not this grep's.
|
|
116
|
+
# <script is listed because the row above names it and the pattern did not.
|
|
117
|
+
# A locator, not a verdict: entity-encoded or tab-split javascript:, <svg:script>
|
|
118
|
+
# and SMIL writes into href get past it. `lint_svg_asset` (svg-authoring) decodes them.
|
|
119
|
+
rg -n '<foreignObject|<script[\s>]|\son[a-z]+\s*=|(?:xlink:)?href\s*=\s*["'\'']?\s*javascript:' -g '*.svg'
|
|
111
120
|
# Server-composed bootstrap payload — LOCATES it; the per-field judgement is yours
|
|
112
121
|
rg -n '__NEXT_DATA__|__NUXT__|window\.__INITIAL_STATE__|@json\(|json_encode\([^)]*\)\s*\)?\s*</script>|dehydratedState'
|
|
113
122
|
```
|