@event4u/agent-config 17.2.0 → 17.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/.claude-plugin/skills/install-agent-config/SKILL.md +9 -9
  5. package/CHANGELOG.md +174 -0
  6. package/dist/agent-src/skills/code-intelligence/SKILL.md +13 -12
  7. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  8. package/dist/agent-src/templates/scripts/check_memory.ts +1 -1
  9. package/dist/cli/commands/recordTriggerEval.js +1 -1
  10. package/dist/cli-delegate/{chunk-KR5ZIFPO.js → chunk-DHSSP7V3.js} +1 -1
  11. package/dist/cli-delegate/chunk-E7ACTJTJ.js +6792 -0
  12. package/dist/cli-delegate/{chunk-BZJ4Y3CI.js → chunk-MT2WOOCY.js} +1 -1
  13. package/dist/cli-delegate/{chunk-CMZEKSNN.js → chunk-ORJPBER2.js} +2 -2
  14. package/dist/cli-delegate/{chunk-VYZGJLCA.js → chunk-RKNT4LIK.js} +22 -1286
  15. package/dist/cli-delegate/cmd_conformance.js +20 -14
  16. package/dist/cli-delegate/cmd_doctor.js +3 -3
  17. package/dist/cli-delegate/cmd_doctor_neighbours.js +2 -2
  18. package/dist/cli-delegate/cmd_explain.js +1 -1
  19. package/dist/cli-delegate/cmd_export.js +2 -2
  20. package/dist/cli-delegate/cmd_prune.js +2 -2
  21. package/dist/cli-delegate/cmd_settings_migrate.js +2 -2
  22. package/dist/cli-delegate/cmd_settings_set.js +8 -4
  23. package/dist/cli-delegate/cmd_sync.js +2 -2
  24. package/dist/cli-delegate/cmd_uninstall.js +2 -2
  25. package/dist/cli-delegate/cmd_validate.js +2 -2
  26. package/dist/discovery/deprecation-report.md +1 -1
  27. package/dist/discovery/discovery-manifest.json +3 -3
  28. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  29. package/dist/discovery/discovery-manifest.summary.md +1 -1
  30. package/dist/discovery/dormancy-report.md +1 -1
  31. package/dist/discovery/orphan-report.md +1 -1
  32. package/dist/discovery/packs.json +2 -2
  33. package/dist/discovery/trust-report.md +1 -1
  34. package/dist/discovery/workspaces.json +2 -2
  35. package/dist/hooks/code_graph_refresh.chunk.cjs +414 -0
  36. package/dist/hooks/code_graph_refresh.chunk.cjs.sha256 +1 -0
  37. package/dist/hooks/dispatch.js +21 -11
  38. package/dist/hooks/dispatch.sha256 +1 -1
  39. package/dist/hooks/egress_engine.chunk.cjs +1 -1
  40. package/dist/hooks/egress_engine.chunk.cjs.sha256 +1 -1
  41. package/dist/install/install.mjs +6974 -6037
  42. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -0
  43. package/dist/mcp/registry-manifest.json +3 -2
  44. package/dist/mcp/server.json +13 -4
  45. package/dist/mcp/server.mjs +5561 -2463
  46. package/dist/scripts/_lib/egress_rules.js +8 -2
  47. package/dist/scripts/condense.js +9 -9
  48. package/dist/server/routes/discovery.js +1 -1
  49. package/dist/server/routes/install.js +1 -1
  50. package/dist/server/routes/ping.js +1 -1
  51. package/dist/server/routes/schema.js +4 -4
  52. package/dist/server/routes/settings.js +2 -6
  53. package/dist/server/routes/wizard.js +6 -6
  54. package/dist/server/schemas/settings.js +42 -42
  55. package/dist/shared/settingsSurface.js +1 -1
  56. package/dist/shared/userMd/schema.js +1 -1
  57. package/dist/shared/zodJsonSchema.js +47 -0
  58. package/dist/ui/assets/index-B0bcIgi0.js +77 -0
  59. package/dist/ui/index.html +1 -1
  60. package/package.json +3 -3
  61. package/src/agent-src/templates/scripts/check_memory.ts +1 -1
  62. package/src/config/ci-local-parity.yml +11 -0
  63. package/src/config/continuity-surface.json +9 -2
  64. package/src/config/gate-violation-baselines.json +3 -3
  65. package/src/config/gitignore-block.txt +6 -5
  66. package/src/config/hook-bundle-budget.json +16 -1
  67. package/src/config/pack-size-budget.json +12 -1
  68. package/src/config/packed-binary-manifest.json +9 -0
  69. package/src/scripts/_cli/cmd_settings_set.ts +3 -2
  70. package/src/scripts/_dispatch.bash +1 -1
  71. package/src/scripts/_lib/egress_rules.ts +8 -2
  72. package/src/scripts/_lib/listing_manifests.ts +85 -0
  73. package/src/scripts/_lib/neighbour_census.ts +1 -0
  74. package/src/scripts/_lib/release_settings_surface.ts +2 -6
  75. package/src/scripts/adoption_status.ts +231 -27
  76. package/src/scripts/build_mcp_registry_manifest.ts +23 -12
  77. package/src/scripts/check_dependency_floors.ts +7 -0
  78. package/src/scripts/check_release_manifest_content.ts +17 -2
  79. package/src/scripts/check_release_pr_shape.ts +5 -0
  80. package/src/scripts/code_graph/build.ts +80 -44
  81. package/src/scripts/code_graph/cli.ts +260 -16
  82. package/src/scripts/code_graph/conventions_default.ts +228 -0
  83. package/src/scripts/code_graph/extract.ts +5 -2
  84. package/src/scripts/code_graph/extract_more.ts +105 -1
  85. package/src/scripts/code_graph/loader.ts +10 -2
  86. package/src/scripts/code_graph/map.ts +174 -41
  87. package/src/scripts/code_graph/map_model.ts +53 -15
  88. package/src/scripts/code_graph/map_verify.ts +12 -0
  89. package/src/scripts/code_graph/map_viewer/viewer.css +6 -0
  90. package/src/scripts/code_graph/map_viewer/viewer.js +114 -13
  91. package/src/scripts/code_graph/passes.ts +173 -0
  92. package/src/scripts/code_graph/providers/angular.ts +55 -0
  93. package/src/scripts/code_graph/providers/aspnetcore.ts +182 -0
  94. package/src/scripts/code_graph/providers/catalog.ts +290 -0
  95. package/src/scripts/code_graph/providers/django.ts +163 -0
  96. package/src/scripts/code_graph/providers/express.ts +25 -0
  97. package/src/scripts/code_graph/providers/fastapi.ts +49 -0
  98. package/src/scripts/code_graph/providers/flask.ts +99 -0
  99. package/src/scripts/code_graph/providers/go_http.ts +121 -0
  100. package/src/scripts/code_graph/providers/index.ts +101 -0
  101. package/src/scripts/code_graph/{laravel_overlay.ts → providers/laravel.ts} +113 -7
  102. package/src/scripts/code_graph/providers/nestjs.ts +34 -0
  103. package/src/scripts/code_graph/providers/nextjs.ts +91 -0
  104. package/src/scripts/code_graph/providers/nuxt.ts +55 -0
  105. package/src/scripts/code_graph/providers/react-router.ts +58 -0
  106. package/src/scripts/code_graph/providers/shared/detect.ts +78 -0
  107. package/src/scripts/code_graph/providers/shared/extractors.ts +249 -0
  108. package/src/scripts/code_graph/providers/shared/js.ts +252 -0
  109. package/src/scripts/code_graph/providers/shared/kit.ts +210 -0
  110. package/src/scripts/code_graph/providers/shared/php.ts +64 -0
  111. package/src/scripts/code_graph/providers/shared/python.ts +223 -0
  112. package/src/scripts/code_graph/providers/spring.ts +138 -0
  113. package/src/scripts/code_graph/providers/sqlalchemy.ts +62 -0
  114. package/src/scripts/code_graph/providers/sveltekit.ts +59 -0
  115. package/src/scripts/code_graph/providers/symfony.ts +142 -0
  116. package/src/scripts/code_graph/providers/typeorm.ts +58 -0
  117. package/src/scripts/code_graph/providers/types.ts +56 -0
  118. package/src/scripts/code_graph/providers/vue-router.ts +21 -0
  119. package/src/scripts/code_graph/providers/wordpress.ts +128 -0
  120. package/src/scripts/code_graph/refresh_cli.ts +81 -0
  121. package/src/scripts/code_graph/refresh_lock.ts +193 -0
  122. package/src/scripts/code_graph/resolution_tiers.ts +19 -7
  123. package/src/scripts/code_graph/scip_reader.ts +2 -2
  124. package/src/scripts/code_graph/sqlite_store.ts +10 -4
  125. package/src/scripts/code_graph/types.ts +75 -41
  126. package/src/scripts/code_graph/validate.ts +6 -8
  127. package/src/scripts/condense.ts +9 -9
  128. package/src/scripts/generate_settings_reference.ts +2 -6
  129. package/src/scripts/hook_chunks.mjs +4 -0
  130. package/src/scripts/hook_manifest.json +1 -1
  131. package/src/scripts/hook_manifest.yaml +24 -7
  132. package/src/scripts/hooks/code_graph_refresh_hook.ts +160 -0
  133. package/src/scripts/hooks/lazy_concern.ts +4 -0
  134. package/src/scripts/install-hooks.sh +54 -33
  135. package/src/scripts/install.ts +2 -6
  136. package/src/scripts/lint_hook_manifest.ts +2 -0
  137. package/src/scripts/lint_marketplace.ts +33 -0
  138. package/src/scripts/lint_mcp_registry_manifest.ts +36 -0
  139. package/src/scripts/mcp_server/consumer_tool_catalog.json +1 -0
  140. package/src/scripts/mcp_server/graph_tools.ts +5 -1
  141. package/src/scripts/release.ts +2 -5
  142. package/src/scripts/release_drill.ts +4 -1
  143. package/src/scripts/release_env.ts +17 -0
  144. package/src/scripts/release_mix_taxonomy.json +3 -0
  145. package/src/server/schemas/settings.ts +42 -42
  146. package/src/shared/settingsSurface.ts +1 -1
  147. package/src/shared/userMd/schema.ts +1 -1
  148. package/src/shared/zodJsonSchema.ts +41 -0
  149. package/src/vendor/grammars/README.md +6 -5
  150. package/src/vendor/grammars/tree-sitter-c_sharp.wasm +0 -0
  151. package/dist/cli-delegate/chunk-XIAPY44N.js +0 -4587
  152. package/dist/ui/assets/index-w70Ado09.js +0 -23
@@ -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": "17.2.0",
4
+ "version": "17.3.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": "17.2.0"
11
+ "version": "17.3.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": "17.2.0",
17
+ "version": "17.3.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": "17.2.0",
4
+ "version": "17.3.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. Its hooks run only alongside a global npm install of the package (`npx -y @event4u/agent-config init` or `npm i -g`); a project-local install is never used. On a plugin-only install no dispatcher is reachable, no hook runs, and the fail_closed guards (block-no-verify, block-kernel-rule-writes, block-plumbing-writes) are OFF — only the session start says so.",
9
- "version": "17.2.0",
9
+ "version": "17.3.0",
10
10
  "keywords": [
11
11
  "agent-config",
12
12
  "skills",
@@ -1,19 +1,19 @@
1
1
  ---
2
2
  name: install-agent-config
3
3
  description: >-
4
- Install or upgrade the event4u agent-config suite. This marketplace plugin
5
- is a bootstrap shim — it ships hooks plus this pointer only; ALL skills,
6
- rules, and commands are installed via `npx -y @event4u/agent-config init`.
7
- Use when the user asks to install, set up, or upgrade agent-config, or
4
+ Governance rules, skills and commands for AI coding agents in Claude Code, Cursor, GitHub Copilot and Gemini CLI —
5
+ install or upgrade the full event4u agent-config suite. No plugin that ships this pointer is the full suite (the Claude
6
+ Code one adds hooks, the Copilot one a read-only MCP server); ALL content installs via `npx -y @event4u/agent-config init`.
7
+ Use when the user asks to install, set up, or upgrade agent-config, wants coding-agent rules or skills, or
8
8
  wonders why this plugin contains no other skills.
9
9
  ---
10
10
 
11
11
  # Install agent-config
12
12
 
13
- This plugin is a **bootstrap shim** kept so the marketplace listing stays
14
- discoverable. Its hooks run only alongside a global npm install of the package (never a project-local one) —
15
- on a plugin-only install no hook runs, so the `fail_closed` guards (`block-no-verify`, `block-kernel-rule-writes`,
16
- `block-plumbing-writes`) are **off**; the session start says so once. Content ships as a file projection.
13
+ The plugin that delivered this skill is a **discovery entry**, not the suite. The Claude Code plugin adds hooks that
14
+ run only alongside a global npm install of the package (never a project-local one) — on a plugin-only install no hook
15
+ runs, so the `fail_closed` guards (`block-no-verify`, `block-kernel-rule-writes`, `block-plumbing-writes`) are
16
+ **off**; the session start says so once. The Copilot plugin adds a read-only MCP server and no hooks.
17
17
 
18
18
  ## Install (canonical, one command)
19
19
 
@@ -23,7 +23,7 @@ npx -y @event4u/agent-config init
23
23
 
24
24
  The installer writes the full content projection, registers the dispatcher
25
25
  hooks as a managed block in `~/.claude/settings.json` (byte-identical to
26
- this plugin's hooks, so nothing double-fires), and keeps everything
26
+ the Claude Code plugin's hooks, so nothing double-fires), and keeps everything
27
27
  upgradeable via `agent-config upgrade`.
28
28
 
29
29
  ## Already installed both?
package/CHANGELOG.md CHANGED
@@ -403,6 +403,180 @@ An entry belongs under a dated release section, not here — see
403
403
  > that forces a new era split (`# Era: 17.2.x`, etc.) — see
404
404
  > [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
405
405
 
406
+ ## [17.3.0](https://github.com/event4u-app/agent-config/compare/17.2.1...17.3.0) (2026-10-24)
407
+
408
+ ### Release highlights
409
+
410
+ - **Behaviour changes:** _none_
411
+ - **Default changes + migration:** carry the default pass's trust classification (4a35ec7); table mapping stops at the class above; the default leaves provider-routed modules (45cfa32); providers, the default pass and the parsed languages (f83b2e8); the default pass leaves a page a provider already drew (ccd3714); a default convention pass for every project (30b1aa5). Breaking, pending in `BREAKING_CHANGES.md` and shipped by this release: **Three `fail_closed` hook guards run where they were silent.** The installed claude hook command now reaches a dispatcher staged under `~/.event4u/agent-config/runtime/` after a project-local install and before `PATH` ([`3f8c98e`](https://github.com/event4u-app/agent-config/commit/3f8c98e74), #2455). On machines installed through `npx`, or hosts launched with a bare `PATH`, every hook command used to end in a silent `exit 0`; there `block-no-verify` (refuses `git … --no-verify` and `core.hooksPath` overrides), `block-kernel-rule-writes` and `block-plumbing-writes` (refuse agent writes to this package's kernel rules and hook plumbing) now run and may refuse a tool call for the first time. Classed breaking by the AI council, 2026-10-19 (`agents/evidence/council/hook-carrier-release-note-class-20261019.md`). **`uninstall --global --purge` stops being a recursive delete of the host anchor.** Old scope: `fs.rmSync(anchor, { recursive: true })` on whole host configuration roots — `~/.claude/`, `~/.codex/`, `~/.config/zed/` — so everything under them went, whoever wrote it. New scope: only the anchor-relative paths this package's own deploy inventory recorded writing; the anchor itself is never removed, directories are pruned only when left empty, a recorded symlink is unlinked rather than followed, and a purge with no readable inventory for that anchor exits 1 having deleted nothing. A second change in the same area: a plain `uninstall --global` now keeps the lockfile while recorded content is still on disk, where it used to delete it.
412
+ - **Security and correctness:** resolve imports against tsconfig baseUrl, never as reads (6f07aba); route a Flask blueprint imported from another module (81c752b); an unreadable live row cannot stay green forever (2034929); make the install pointer true for every plugin that ships it (54c771b); move zod to 4 to clear GHSA-mrhx-c7xc-m3w5 (6a488a2); emit a server.json the official registry accepts (3f53b83); +22 more.
413
+ - **Honest nulls:** _none_
414
+ - **Known limitations:** route a Flask blueprint imported from another module (src/scripts/code_graph/providers/catalog.ts declares a residual) (81c752b); move zod to 4 to clear GHSA-mrhx-c7xc-m3w5 (src/scripts/install.ts declares a residual) (6a488a2); catalog rows for spring and go-http (src/scripts/code_graph/providers/catalog.ts declares a residual) (72ff3e6); coverage catalog; the map and MCP name the active providers (src/scripts/code_graph/providers/catalog.ts declares a residual) (296691e).
415
+
416
+ > **Governance mix:** governance-only 34 vs consumer-only 11 (mixed 59, maintenance 11; taxonomy 1.1.0; range 4502d328ff64..b28ca0681c00).
417
+
418
+ ### Features
419
+
420
+ * **code-graph:** show the map as a turnable 3D orb ([79a5676](https://github.com/event4u-app/agent-config/commit/79a56761ef5d0dbdb9aad6670a60c5c1b99e38b4))
421
+ * **distribution:** watch every submission until it is live ([3124668](https://github.com/event4u-app/agent-config/commit/3124668312c170bf9234e44e0a0432d400a80d75))
422
+ * **distribution:** listing manifests a release keeps current ([c45b0bc](https://github.com/event4u-app/agent-config/commit/c45b0bcbcaea8cbdb7401fb474ee49459e3db666))
423
+ * **code-graph:** the aspnetcore convention provider ([7fb5937](https://github.com/event4u-app/agent-config/commit/7fb5937dd6d0d423f20c1064a84bccea5364d868))
424
+ * **code-graph:** the typeorm provider ([fc32cdc](https://github.com/event4u-app/agent-config/commit/fc32cdc9b46a73c3382346483cd7f5a2bec39e4a))
425
+ * **code-graph:** the sqlalchemy provider ([dcadc0b](https://github.com/event4u-app/agent-config/commit/dcadc0bc07110791c3700081cc4933da18f200d3))
426
+ * **code-graph:** the django provider ([bab64c2](https://github.com/event4u-app/agent-config/commit/bab64c2a6fb04a491e6450a2423f1beac2f660f9))
427
+ * **code-graph:** the flask provider ([e610957](https://github.com/event4u-app/agent-config/commit/e610957a3cd7d771a65af34cf9ba16f0a6e4b940))
428
+ * **code-graph:** the fastapi provider ([0eb6b26](https://github.com/event4u-app/agent-config/commit/0eb6b265705cf3a1fe5383513708275056ea7e25))
429
+ * **code-graph:** python source helpers and per-file template folders for providers ([723c84b](https://github.com/event4u-app/agent-config/commit/723c84b9a57372fce850094e2efaaa2711484946))
430
+ * **code-graph:** the sveltekit provider ([e7eedf7](https://github.com/event4u-app/agent-config/commit/e7eedf7e0ce839a6b8b5980c220c3f5725948b60))
431
+ * **code-graph:** the nuxt provider ([2c45ab3](https://github.com/event4u-app/agent-config/commit/2c45ab380124144f80616bfaef8815dba71868c7))
432
+ * **code-graph:** the vue-router provider ([27a2165](https://github.com/event4u-app/agent-config/commit/27a2165f5e7b8e36877fceb79127843538d13c04))
433
+ * **code-graph:** C# in the native engine ([9777865](https://github.com/event4u-app/agent-config/commit/9777865df43663c1cedb80b1ca3972c0c773788e))
434
+ * **code-graph:** the angular provider ([a77a5a1](https://github.com/event4u-app/agent-config/commit/a77a5a1a098c54476fd56cab162912838d184b79))
435
+ * **code-graph:** catalog rows for spring and go-http ([72ff3e6](https://github.com/event4u-app/agent-config/commit/72ff3e68d3949f17dcdb83005eb2e456880aa3ed))
436
+ * **code-graph:** the wordpress provider ([664ad36](https://github.com/event4u-app/agent-config/commit/664ad3666db7051e4c3895f006400daac0d96ae3))
437
+ * **code-graph:** the symfony provider and a shared PHP name resolver ([7988b71](https://github.com/event4u-app/agent-config/commit/7988b7187f4881ee5da1a4872c4b17ae78377c5a))
438
+ * **code-graph:** the nestjs provider ([0a51cf7](https://github.com/event4u-app/agent-config/commit/0a51cf74308a6914d6f770c6932c09ff549cfae6))
439
+ * **code-graph:** add Go HTTP router convention provider ([c93a3bc](https://github.com/event4u-app/agent-config/commit/c93a3bc5516ba6f84dd9661bcd35c31df1f36f50))
440
+ * **code-graph:** add Spring Boot convention provider ([8584101](https://github.com/event4u-app/agent-config/commit/85841018f15f4bf6a1fda149256515349aca1d9b))
441
+ * **code-graph:** the nextjs provider ([e407eb8](https://github.com/event4u-app/agent-config/commit/e407eb8754f6f64b4b6a558a2315f2833f622b3c))
442
+ * **code-graph:** coverage catalog; the map and MCP name the active providers ([296691e](https://github.com/event4u-app/agent-config/commit/296691e8325657d75f0919a9d769fc5aee72c777))
443
+ * **code-graph:** shared JS provider helpers; the react-router provider ([b02702f](https://github.com/event4u-app/agent-config/commit/b02702fd0289676d13e5dc5cfec3e545021d2a2d))
444
+ * **code-graph:** shared provider kit and extractors; the express provider ([0581df8](https://github.com/event4u-app/agent-config/commit/0581df855a2f233db053b652caa2294284e1f31e))
445
+ * **hooks:** refresh a consumer's code graph at session start ([f5f573c](https://github.com/event4u-app/agent-config/commit/f5f573cf6a817b580d2536b3302790bf38fda3db))
446
+ * **code-graph:** single-flight refresh that also redraws the map ([725e9df](https://github.com/event4u-app/agent-config/commit/725e9dfae2bcb0c89e52abafe20cb7ad28a5db0e))
447
+ * **code-graph:** a default convention pass for every project ([30b1aa5](https://github.com/event4u-app/agent-config/commit/30b1aa50483bdb52015619219c7e04b3e326b449))
448
+ * **code-graph:** schema 6 — generic names, provider ids, trust allowlist, per-handler request paths ([3890a2b](https://github.com/event4u-app/agent-config/commit/3890a2bf6bbb6a8b1991a4fff92f1513a65a457d))
449
+ * **code-graph:** ordered pass list and a convention-provider registry ([fdd1f69](https://github.com/event4u-app/agent-config/commit/fdd1f69ab4f514226ec129b871ea80794c3be4cd))
450
+
451
+ ### Bug Fixes
452
+
453
+ * **distribution:** state the blocker swap plainly and the image contents truly ([70797c0](https://github.com/event4u-app/agent-config/commit/70797c0f7833fed3397214589fd11483e60c3a3e))
454
+ * **docker:** ship the whole build output in the stdio MCP server image ([e324128](https://github.com/event4u-app/agent-config/commit/e3241282c713df27451d2f33ad3610501aa1c62d))
455
+ * **ci:** classify the listing files, tighten the size baseline, drop two emails ([c835083](https://github.com/event4u-app/agent-config/commit/c835083e16ef00e2f42fdf5cf5a696bf83239712))
456
+ * **code-graph:** resolve imports against tsconfig baseUrl, never as reads ([6f07aba](https://github.com/event4u-app/agent-config/commit/6f07abad79c4f4212b9e27604d015689f659858d))
457
+ * **code-graph:** route a Flask blueprint imported from another module ([81c752b](https://github.com/event4u-app/agent-config/commit/81c752b2f08113882b2ad66340295a9e463829a6))
458
+ * **distribution:** an unreadable live row cannot stay green forever ([2034929](https://github.com/event4u-app/agent-config/commit/2034929c581d97e71e352d76f5c16614ddde74e7))
459
+ * **distribution:** make the install pointer true for every plugin that ships it ([54c771b](https://github.com/event4u-app/agent-config/commit/54c771bbfe8b1aa5a8ba8df8fb57a4ef1eaf9f12))
460
+ * **deps:** move zod to 4 to clear GHSA-mrhx-c7xc-m3w5 ([6a488a2](https://github.com/event4u-app/agent-config/commit/6a488a22b625cdacff819c2559f9d5b786adeecd))
461
+ * **mcp:** emit a server.json the official registry accepts ([3f53b83](https://github.com/event4u-app/agent-config/commit/3f53b83b3ebf5dcdb8a5968708334e3cabec0330))
462
+ * **code-graph:** judge an owner record without a host by age alone ([4a3fa82](https://github.com/event4u-app/agent-config/commit/4a3fa82f87a0ce925c183d0334210fd99bc440b7))
463
+ * **code-graph:** restore the ratified lock rules over the review follow-up ([1fb0854](https://github.com/event4u-app/agent-config/commit/1fb085425389d50c54735aa22007e9a57a041a60))
464
+ * **code-graph:** validate an edge's provider_id as a string ([3b15b60](https://github.com/event4u-app/agent-config/commit/3b15b60bd6d276fd77ba7e99e23a6322489ed3b5))
465
+ * **code-graph:** buildMap enforces a single writer itself ([345787b](https://github.com/event4u-app/agent-config/commit/345787b1198864bcf0232930cef4c3de30788d24))
466
+ * **egress,code-graph:** keep the shell name==value form; pin the map swap contract ([2b51b78](https://github.com/event4u-app/agent-config/commit/2b51b7817caf5752aa35c2e0d1de3e4c9aa079b9))
467
+ * **deps:** lift body-parser and its siblings past GHSA-27r3-jxmh-p828 ([31cc425](https://github.com/event4u-app/agent-config/commit/31cc4256c3d68d925025482c4aeaad58873b504f))
468
+ * **code-graph:** one generation for graph and map; working-tree changes discard a build ([5133163](https://github.com/event4u-app/agent-config/commit/5133163677eec6cc82866a4ac7e2dfed3de66038))
469
+ * **code-graph:** refresh only with a capable CLI, record every outcome, harden the lock ([74531d4](https://github.com/event4u-app/agent-config/commit/74531d44d1dac2f9d2759a710cd490caaead7547))
470
+ * **hooks:** install the development hooks only into this package's checkout ([7e3c185](https://github.com/event4u-app/agent-config/commit/7e3c185530c557bae93c69c42032bbda5931c431))
471
+ * **code-graph:** publish agents/map/ as one generation ([7b23eb4](https://github.com/event4u-app/agent-config/commit/7b23eb4ad576f8ec4e27a88e73d1026219feac2d))
472
+ * **egress:** a comparison or an arrow is never a credential assignment ([c915ed8](https://github.com/event4u-app/agent-config/commit/c915ed85ebb013364ea7aef4888122a72986455e))
473
+ * **code-graph:** drop a duplicated set in the docs pass ([336857d](https://github.com/event4u-app/agent-config/commit/336857d82052a7b24ce91244c2a48414800dd627))
474
+ * **code-graph:** one lock protocol, with a reclaim that cannot hit a successor ([0c39b05](https://github.com/event4u-app/agent-config/commit/0c39b0563876ed9b3093060ab45330119f2fdb8f))
475
+ * **code-graph:** review findings — per-root Laravel, deepest root, indexed lookups, identity, comments ([3c4e39d](https://github.com/event4u-app/agent-config/commit/3c4e39df6d448bfd524f54aa130c924607c465e2))
476
+ * **code-graph:** reclaim a refresh lock only on positive evidence ([d4857e4](https://github.com/event4u-app/agent-config/commit/d4857e46b1ad46c6c1592a7f932f748b597f429e))
477
+ * **hooks:** an uninspectable inner .git ends the repository search ([366c1a8](https://github.com/event4u-app/agent-config/commit/366c1a81b130fa3ffe84ebd43cc28584f0a3f264))
478
+ * **code-graph:** walk the canonical root when deciding "not a repository" ([4d36a87](https://github.com/event4u-app/agent-config/commit/4d36a87ee2571ff28dbf34556200ae6354a48631))
479
+ * **code-graph:** a failing git probe can never pass the HEAD guard ([3a9ad97](https://github.com/event4u-app/agent-config/commit/3a9ad97afae1419ced7a6baf909b9f99cc215b93))
480
+ * **code-graph:** restore the fsRoutes guard a probe restore overwrote ([62e00b7](https://github.com/event4u-app/agent-config/commit/62e00b7d982c37975750d39a8d4802d5d503e847))
481
+ * **code-graph:** table mapping stops at the class above; the default leaves provider-routed modules ([45cfa32](https://github.com/event4u-app/agent-config/commit/45cfa32bb428adcf635b7c186ca2c4b0155dc6ec))
482
+ * **code-graph:** make the session refresh opt-in and repository-proof ([061bd6f](https://github.com/event4u-app/agent-config/commit/061bd6fd099de9a9ab9b294be05ed42c615c4fef))
483
+ * **code-graph:** the default pass leaves a page a provider already drew ([ccd3714](https://github.com/event4u-app/agent-config/commit/ccd3714ba683766af538f0604d36877f93e49af5))
484
+ * **hooks:** refresh the code graph after merge and rebase too ([02bd720](https://github.com/event4u-app/agent-config/commit/02bd72047bd0644a817f375526cab130aaf6e998))
485
+
486
+ ### Documentation
487
+
488
+ * **evidence:** close both batch-review findings and re-bind the round ([cb3fdac](https://github.com/event4u-app/agent-config/commit/cb3fdac231451a5668cbbf72ae89c70f31a71379))
489
+ * **evidence:** completion review of the Tier B batch PR ([933859b](https://github.com/event4u-app/agent-config/commit/933859b0c68d61e8b691cc683b9ab2fdcd97c30d))
490
+ * **distribution:** record awesome-mcp-servers attempt 1c and the Tier B go ([7c2dcb0](https://github.com/event4u-app/agent-config/commit/7c2dcb0f47735efc204f9da8ad092e151577c354))
491
+ * **roadmaps:** bring carried step 2.4 under the 150-word step cap ([c246574](https://github.com/event4u-app/agent-config/commit/c246574ba4a332f2b89916073b76945817a8d3b4))
492
+ * **roadmaps:** carry the default pass's trust classification ([4a35ec7](https://github.com/event4u-app/agent-config/commit/4a35ec711092e07e0178e1752f37ff5366a21a94))
493
+ * **roadmaps:** fold the last review findings into the carried Phase 2 ([aa3087b](https://github.com/event4u-app/agent-config/commit/aa3087b3ee8e1a32a6159ac2f49e119ddd5d1de4))
494
+ * **evidence:** re-bind the completion review after merging main ([409cfec](https://github.com/event4u-app/agent-config/commit/409cfecade69a74eff951bf792dcb754d04fd808))
495
+ * **evidence:** re-bind the completion review after the CI fixes ([bd0a59f](https://github.com/event4u-app/agent-config/commit/bd0a59f114f62fff3fd5941ca1f57dc149dbd15f))
496
+ * **roadmaps:** give every command-leading verify clause a prose lead ([53551c7](https://github.com/event4u-app/agent-config/commit/53551c7d1be5fcefb30e6996bd0d8c4846ae6314))
497
+ * **roadmaps:** re-review the carried plan's risks after Phase 2 ([153315b](https://github.com/event4u-app/agent-config/commit/153315b20c85c7b8eff96942f2b51f0c97b83d6d))
498
+ * **evidence:** re-bind the completion review after the parity declaration ([004444e](https://github.com/event4u-app/agent-config/commit/004444e8b70a956d0d5223daad633068432c2934))
499
+ * **roadmaps:** carry the remaining PR #2603 review residue ([ef41128](https://github.com/event4u-app/agent-config/commit/ef4112840e7f363c3564f33053271fda903b0a46))
500
+ * **evidence:** close both completion-review findings and re-bind the round ([703940a](https://github.com/event4u-app/agent-config/commit/703940af4eb3976ab21f44dc21fcbc69582eb63b))
501
+ * **evidence:** completion review of listings-a-release-keeps-current ([493cce0](https://github.com/event4u-app/agent-config/commit/493cce098231e2bb8c9a1b363731886324a56269))
502
+ * **settings-api:** the schema comes from z.toJSONSchema now ([f50548b](https://github.com/event4u-app/agent-config/commit/f50548b55fc181e21e2f720f92ac16512e83d74b))
503
+ * **distribution:** describe denylisted list names instead of naming them ([e99d6bb](https://github.com/event4u-app/agent-config/commit/e99d6bbad5c7e50d83a8ad7c5d26c7e6f7f8d73d))
504
+ * **roadmaps:** point the archived and parked listings roadmaps at each other ([3bbc2f2](https://github.com/event4u-app/agent-config/commit/3bbc2f20053ce12cacc909966c6562084f7fcc1b))
505
+ * **roadmaps:** archive listings-a-release-keeps-current ([1eb156d](https://github.com/event4u-app/agent-config/commit/1eb156d6ce4d77c4328b48cbac4ae7c89adffa47))
506
+ * **roadmaps:** listings a release keeps current, and what the owner submits ([6f1354b](https://github.com/event4u-app/agent-config/commit/6f1354b58bea18bd73d2a9551f83834c5b4fefe2))
507
+ * **distribution:** planned targets, owner packets, the watcher ([f15e8c2](https://github.com/event4u-app/agent-config/commit/f15e8c2436f354280d75b3c2f39cf97a79c5262e))
508
+ * **roadmaps:** give the follow-up roadmap's verify clauses an expectation ([c7c47d5](https://github.com/event4u-app/agent-config/commit/c7c47d55a07311fcfe9364a41fccddf88a6266fd))
509
+ * **evidence:** ratification rounds 14-16 — ratified 2/2 ([2ec253a](https://github.com/event4u-app/agent-config/commit/2ec253adc2ed655fd10e5c0ff7d1f3dcc715b992))
510
+ * **evidence:** ratification rounds 9-13 — ratified 2/2 against PR #2603's branch ([e5f8107](https://github.com/event4u-app/agent-config/commit/e5f81073ffd63a55ca9e68f38a66cbb96495fffd))
511
+ * **roadmaps:** archive road-to-code-graph-refresh-follow-ups — all steps done ([79f5ad1](https://github.com/event4u-app/agent-config/commit/79f5ad1c8ac2a5587379f3274a05e09cc660eef1))
512
+ * **roadmaps:** the three follow-ups of the code-graph auto-refresh ratification ([4f2dd8a](https://github.com/event4u-app/agent-config/commit/4f2dd8afe08cc2e7930cf2d0f6c3173ee3c26d2a))
513
+ * **code-graph:** name auto-refresh in the agents-layout map row, not the skill ([23480c8](https://github.com/event4u-app/agent-config/commit/23480c8ea849d773bffa31418a7fd561c5346d3c))
514
+ * **adr:** ADR-298 discloses its evidence ([2c06e78](https://github.com/event4u-app/agent-config/commit/2c06e7881a4bf8a2a366d9d27ef987fcd0052336))
515
+ * **evidence:** ratification record for the code-graph auto-refresh ([8bdd7bb](https://github.com/event4u-app/agent-config/commit/8bdd7bb38e504a3f0406d8c5cdd3e4eafa5d9182))
516
+ * **roadmap:** close phases 6-7 and the acceptance criteria; record the Ruby payload decision ([578778f](https://github.com/event4u-app/agent-config/commit/578778f9840de25e15d0ae883474b55c019d7a7c))
517
+ * **code-intelligence:** providers, the default pass and the parsed languages ([f83b2e8](https://github.com/event4u-app/agent-config/commit/f83b2e8a436eb46aae201cea883ce80f840bc9f5))
518
+ * **adr:** ADR-298 framework-neutral graph core; record the provider baseline ([5aefb74](https://github.com/event4u-app/agent-config/commit/5aefb74f6f563a534a073f7e2b1e9d59bfcafebe))
519
+ * **roadmap:** road-to-graph-providers-for-every-stack from inbox-2026-10-ac ([a67cd07](https://github.com/event4u-app/agent-config/commit/a67cd0770597ef22cb0b8c6ac60d38a2e8bf0d0e))
520
+
521
+ ### Refactoring
522
+
523
+ * **code-graph:** call the lock owner's random value a nonce ([c5cf577](https://github.com/event4u-app/agent-config/commit/c5cf5775faa96eea7cbd5a374e75c0d77e6e8f30))
524
+ * **code-graph:** trust lists as type-checked word strings ([cfeaeae](https://github.com/event4u-app/agent-config/commit/cfeaeaebdbc18fe28c01fcebcf9b1c5bb965ca9b))
525
+
526
+ ### Tests
527
+
528
+ * **mcp:** drop an unused os import the changed-file lint now sees ([bdb512c](https://github.com/event4u-app/agent-config/commit/bdb512c015160fbf41a71fca0137d17314c22895))
529
+ * **code-graph:** render-check the orb, opened and half-turned ([580dbfc](https://github.com/event4u-app/agent-config/commit/580dbfcfd53e9e3c3caa0b8ecca12d4ec39cde2a))
530
+ * **code-graph:** move HEAD deterministically in the refresh HEAD-guard tests ([060e673](https://github.com/event4u-app/agent-config/commit/060e673e57c7c0bebd083bae0c704ebb014ba26b))
531
+ * **code-graph:** exercise inspection errors without skips or chmod ([49de553](https://github.com/event4u-app/agent-config/commit/49de553fedc019e10c67527718bc082bec2561c6))
532
+ * **hooks:** a slow, failing refresh never holds up a git operation ([3ab56a5](https://github.com/event4u-app/agent-config/commit/3ab56a58da0628cfb312dc386945e4d2303e64ea))
533
+
534
+ ### CI
535
+
536
+ * **parity:** declare adoption_status as a CI-only network gate ([6aae044](https://github.com/event4u-app/agent-config/commit/6aae0444e7ff3481b986f4a5a4e27c8b54fa744c))
537
+ * **release:** publish the official MCP Registry entry on release ([1ea5175](https://github.com/event4u-app/agent-config/commit/1ea51751fbdde192f1f476a5a9c79f3837851889))
538
+
539
+ ### Chores
540
+
541
+ * **deps:** bump the site group in /site with 2 updates ([e024969](https://github.com/event4u-app/agent-config/commit/e02496944f219ff98901a7cd7890be11458b1d33))
542
+ * **deps-dev:** bump @cloudflare/workers-types ([ffbbb68](https://github.com/event4u-app/agent-config/commit/ffbbb68b3b0c5c99674d59c85b303e65b3811e76))
543
+ * **config:** lower the source-size baseline to 17,333 ([7563292](https://github.com/event4u-app/agent-config/commit/756329299a855fa7dec38822fd15dd19e3941c38))
544
+ * **dist:** rebuild the install bundle on zod 4 ([00fb46c](https://github.com/event4u-app/agent-config/commit/00fb46c9cdd4af92262ee562014dd9afdd794997))
545
+ * **roadmaps:** regenerate the owned digest ([ece8127](https://github.com/event4u-app/agent-config/commit/ece8127e1812112e490d34d3b0395eaf7abdb464))
546
+ * **visibility:** add the gemini-cli-extension topic ([1f4b199](https://github.com/event4u-app/agent-config/commit/1f4b199009bf05c060e0b959c9d57f13d73bef02))
547
+ * **dist:** project the check_memory template's assignment head ([af7a6a1](https://github.com/event4u-app/agent-config/commit/af7a6a18f92aed389dee7f3e403e35635e04693a))
548
+ * regenerate the MCP inventory; lift body-parser past GHSA-27r3-jxmh-p828 ([1148d56](https://github.com/event4u-app/agent-config/commit/1148d563994879e4a6281794f7b69fb73535849f))
549
+ * **roadmap:** regenerate the owned digest ([5552793](https://github.com/event4u-app/agent-config/commit/5552793f1d6f149b40877c21a5898fa117a87bc3))
550
+ * **budget:** re-anchor the built pack figure for the C# grammar ([11f745d](https://github.com/event4u-app/agent-config/commit/11f745d5880cf8feb540d1198bdb905e0ab058fc))
551
+ * **hooks:** record the admission of the code-graph-refresh concern ([74376a4](https://github.com/event4u-app/agent-config/commit/74376a4614e356afe3af065fe60b227242bc0264))
552
+ * **roadmaps:** claim the one-concern estate growth of the code-graph auto-refresh ([1794c48](https://github.com/event4u-app/agent-config/commit/1794c4898dff4930eb6437ced36c068c8fcc5bc8))
553
+ * **adr:** regenerate the evidence census after the ADR-298 edit ([e523a65](https://github.com/event4u-app/agent-config/commit/e523a65abcee867a394ccdbed8f389946d81b41f))
554
+ * **roadmap:** carry Ruby and Rails, archive the provider roadmap; fix the CI reds ([d4ac6be](https://github.com/event4u-app/agent-config/commit/d4ac6be2a8b8405d89ddb1f8ce919c777c0bcb4a))
555
+
556
+ Tests: 32651 (+354 since 17.2.1)
557
+
558
+ ## [17.2.1](https://github.com/event4u-app/agent-config/compare/17.2.0...17.2.1) (2026-10-23)
559
+
560
+ ### Release highlights
561
+
562
+ - **Behaviour changes:** _none_
563
+ - **Default changes + migration:** Breaking, pending in `BREAKING_CHANGES.md` and shipped by this release: **Three `fail_closed` hook guards run where they were silent.** The installed claude hook command now reaches a dispatcher staged under `~/.event4u/agent-config/runtime/` after a project-local install and before `PATH` ([`3f8c98e`](https://github.com/event4u-app/agent-config/commit/3f8c98e74), #2455). On machines installed through `npx`, or hosts launched with a bare `PATH`, every hook command used to end in a silent `exit 0`; there `block-no-verify` (refuses `git … --no-verify` and `core.hooksPath` overrides), `block-kernel-rule-writes` and `block-plumbing-writes` (refuse agent writes to this package's kernel rules and hook plumbing) now run and may refuse a tool call for the first time. Classed breaking by the AI council, 2026-10-19 (`agents/evidence/council/hook-carrier-release-note-class-20261019.md`). **`uninstall --global --purge` stops being a recursive delete of the host anchor.** Old scope: `fs.rmSync(anchor, { recursive: true })` on whole host configuration roots — `~/.claude/`, `~/.codex/`, `~/.config/zed/` — so everything under them went, whoever wrote it. New scope: only the anchor-relative paths this package's own deploy inventory recorded writing; the anchor itself is never removed, directories are pruned only when left empty, a recorded symlink is unlinked rather than followed, and a purge with no readable inventory for that anchor exits 1 having deleted nothing. A second change in the same area: a plain `uninstall --global` now keeps the lockfile while recorded content is still on disk, where it used to delete it.
564
+ - **Security and correctness:** _none_
565
+ - **Honest nulls:** _none_
566
+ - **Known limitations:** _none_
567
+
568
+ > **Governance mix:** governance-only 1 vs consumer-only 0 (mixed 0, maintenance 1; taxonomy 1.1.0; range 4e79c57090c8..36c8616ea2f4).
569
+
570
+ ### Documentation
571
+
572
+ * **ci:** record the shipped cloud-release rate-limit fix ([b3d4b2f](https://github.com/event4u-app/agent-config/commit/b3d4b2f6d7334d8c78ee48bdb098efb30808703f))
573
+
574
+ ### CI
575
+
576
+ * **cloud-release:** pace the asset upload and skip what is already attached ([91d4b73](https://github.com/event4u-app/agent-config/commit/91d4b73ebab6b68a53581092354803014dbf0c0c))
577
+
578
+ Tests: 32297 (+0 since 17.2.0)
579
+
406
580
  ## [17.2.0](https://github.com/event4u-app/agent-config/compare/17.1.0...17.2.0) (2026-10-23)
407
581
 
408
582
  ### Release highlights
@@ -45,10 +45,9 @@ code-graph and no appetite to build one — plain `grep`/read is right there.
45
45
  1. **Detect the source.** `agent-config code-graph detect` — is a fresh consumer
46
46
  `graph.json` or native cache present? (A consumer-shipped fresh index wins;
47
47
  the native engine covers stale-or-absent — ADR-124 § 2.)
48
- 2. **Build if absent and worthwhile.** No graph + a repo in the launch set
49
- (PHP / TS / JS)? `agent-config code-graph build` (deterministic, LLM-free,
50
- ~seconds). Skip for a one-off question in an unsupported stack — grep
51
- instead.
48
+ 2. **Build if absent and worthwhile.** No graph + PHP, TS/JS, Python, Go, Java
49
+ or C#? `agent-config code-graph build` (deterministic, LLM-free, ~seconds).
50
+ Unsupported stack, one-off ask — grep.
52
51
  3. **Query.** Pick the verb:
53
52
  - `agent-config code-graph query <symbol>` — direct relations of a symbol.
54
53
  - `agent-config code-graph affected <symbol>` — reverse: who calls /
@@ -82,25 +81,27 @@ Every answer built with this skill MUST:
82
81
 
83
82
  ## Gotcha
84
83
 
84
+ - **No provider, no framework links.** `MAP.md` names the active providers;
85
+ without one, missing routes mean "not covered", not "none".
85
86
  - **A stale graph lies confidently.** If `detect` reports the index is N commits
86
87
  behind, rebuild (`agent-config code-graph build --update`) before trusting
87
88
  relationship answers, or say the answer is from a stale index.
88
89
  - **Dynamic dispatch is honestly ambiguous — where there is anything to be
89
90
  ambiguous ABOUT.** A `$obj->m()` whose name matches a method declared
90
- somewhere in the repo is `AMBIGUOUS` and carries those candidates: the engine
91
- being honest, not broken — do not "resolve" them yourself by guessing. A
91
+ somewhere in the repo is `AMBIGUOUS` and carries those candidates: honest,
92
+ not broken — never "resolve" them by guessing. A
92
93
  dynamic call whose name matches **no** in-repo method (`xs.push()`,
93
94
  `map.get()`) is not emitted at all, and the count is published as
94
95
  `suppressed_edge_counts.dynamic_no_candidate`. It used to be 39 % of this
95
- engine's own graph, pointing at `symbol:push`, which is not a node and which
96
- no query verb could reach.
96
+ engine's own graph, pointing at `symbol:push` — no node, unreachable by any
97
+ query verb.
97
98
  - **The AMBIGUOUS share is a property of the code, not a constant.** Measured
98
99
  2026-09-04 over the three roots the v2 benchmark uses: `AMBIGUOUS` is 0 of 495
99
- edges under the package's own graph-engine root, 0 of 181 under `src/shared`, and 121 of
100
+ edges under the graph-engine root, 0 of 181 under `src/shared`, and 121 of
100
101
  4,002 (3.0 %) under its council root — class-free TypeScript has
101
- almost no in-repo method to be ambiguous between. A Laravel codebase, where
102
- facades and injected services dispatch onto real in-repo methods, is the
103
- opposite case. Read the counts in the graph rather than a remembered ratio.
102
+ few in-repo methods to confuse. A Laravel codebase (facades,
103
+ injected services dispatching onto in-repo methods) is the opposite. Read the
104
+ graph's counts, not a remembered ratio.
104
105
 
105
106
  ## Measured twice, and it has not won (v2, 2026-08-29)
106
107
 
@@ -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: "17.2.0"
42
+ agent_config_version: "17.3.0"
43
43
 
44
44
  # --- Project identity ---
45
45
  project:
@@ -136,7 +136,7 @@ export const REDACTION_PATTERNS: ReadonlyArray<readonly [RegExp, string]> = [
136
136
  // Key=value secret with a clear credential-word prefix. The value must
137
137
  // be a single token (no spaces, no "/" — skips filepaths and URLs).
138
138
  [
139
- /\b(api[_-]?key|auth[_-]?token|access[_-]?token|bearer|secret|password|passwd|private[_-]?key)\b\s*[:=]\s*[A-Za-z0-9+/=_\-]{8,}(?![/.\w])/i,
139
+ /\b(api[_-]?key|auth[_-]?token|access[_-]?token|bearer|secret|password|passwd|private[_-]?key)\b\s*(?::|=(?!==|=\s|>)=?)\s*[A-Za-z0-9+/=_\-]{8,}(?![/.\w])/i,
140
140
  'inline credential',
141
141
  ],
142
142
  [/https?:\/\/[^\s"'/]*:[^\s"'/]*@/, 'url with credentials'],
@@ -31,7 +31,7 @@
31
31
  */
32
32
  import { readFileSync, writeFileSync } from 'node:fs';
33
33
  import { sep } from 'node:path';
34
- import { z } from 'zod';
34
+ import * as z from 'zod';
35
35
  import { logger } from '../log/logger.js';
36
36
  // Floors shared with the weekly canary rotation (ADR-118 §4) — values
37
37
  // unchanged, single source of truth.
@@ -46,7 +46,7 @@ function assignmentSource(shape) {
46
46
  const alt = shape.keywords.map((k) => ASSIGNMENT_KEYWORDS[k]).join("|");
47
47
  const group = shape.capture === true ? `(${alt})` : `(?:${alt})`;
48
48
  const gap = shape.gap ?? "\\s*";
49
- const head = `${shape.before ?? ""}${group}${shape.after ?? ""}${gap}[:=]`;
49
+ const head = `${shape.before ?? ""}${group}${shape.after ?? ""}${gap}(?::|=(?!==|=\\s|>)=?)`;
50
50
  return shape.value === void 0 ? head : `${head}${gap}${shape.value}`;
51
51
  }
52
52
  function assignmentPattern(shape, flags) {