@event4u/agent-config 17.1.0 → 17.2.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 +70 -0
- package/README.md +2 -2
- package/dist/agent-src/commands/project/analyze.md +9 -6
- package/dist/agent-src/commands/project/map.md +58 -0
- package/dist/agent-src/commands/project.md +5 -3
- package/dist/agent-src/skills/code-intelligence/SKILL.md +6 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/cli/registry.js +1 -1
- package/dist/cli-delegate/cmd_conformance.js +23 -39
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +39 -13
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +6 -5
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +5 -4
- package/dist/hooks/dispatch.js +65 -74
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/hooks/instructions_observer.chunk.cjs +301 -0
- package/dist/hooks/instructions_observer.chunk.cjs.sha256 +1 -0
- package/dist/mcp/registry-manifest.json +2 -2
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +33058 -22930
- package/package.json +4 -1
- package/src/config/continuity-surface.json +7 -0
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-violation-baselines.json +3 -3
- package/src/config/gitignore-block.txt +6 -0
- package/src/config/hook-bundle-budget.json +17 -2
- package/src/config/hook-token-budget.json +1 -1
- package/src/config/packed-binary-manifest.json +27 -0
- package/src/config/skill-body-budget.json +7 -1
- package/src/scripts/_lib/bench_ab_complexity.ts +14 -2
- package/src/scripts/_lib/collector_record.ts +1 -0
- package/src/scripts/_lib/runtime_journal.ts +7 -7
- package/src/scripts/code_graph/build.ts +210 -10
- package/src/scripts/code_graph/cli.ts +168 -46
- package/src/scripts/code_graph/detect.ts +5 -4
- package/src/scripts/code_graph/docs_layer.ts +57 -0
- package/src/scripts/code_graph/extract.ts +58 -13
- package/src/scripts/code_graph/extract_more.ts +314 -0
- package/src/scripts/code_graph/laravel_overlay.ts +454 -0
- package/src/scripts/code_graph/map.ts +846 -0
- package/src/scripts/code_graph/map_model.ts +977 -0
- package/src/scripts/code_graph/map_verify.ts +140 -0
- package/src/scripts/code_graph/map_viewer/viewer.css +278 -0
- package/src/scripts/code_graph/map_viewer/viewer.js +756 -0
- package/src/scripts/code_graph/scip_reader.ts +201 -0
- package/src/scripts/code_graph/sqlite_store.ts +8 -1
- package/src/scripts/code_graph/types.ts +81 -15
- package/src/scripts/code_graph/validate.ts +16 -26
- package/src/scripts/code_graph/verbs.ts +7 -0
- package/src/scripts/hook_chunks.mjs +7 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +20 -0
- package/src/scripts/hooks/dispatch_hook.ts +2 -2
- package/src/scripts/hooks/instructions_observer_hook.ts +25 -6
- package/src/scripts/hooks/lazy_concern.ts +4 -0
- package/src/scripts/install-hooks.sh +5 -0
- package/src/scripts/lint_agents_layout.ts +2 -0
- package/src/scripts/lint_hook_manifest.ts +1 -0
- package/src/scripts/mcp_server/consumer_tool_catalog.json +53 -6
- package/src/scripts/mcp_server/graph_tools.ts +73 -1
- package/src/scripts/mcp_server/tools.ts +19 -36
- package/src/vendor/grammars/README.md +10 -5
- package/src/vendor/grammars/tree-sitter-go.wasm +0 -0
- package/src/vendor/grammars/tree-sitter-java.wasm +0 -0
- package/src/vendor/grammars/tree-sitter-python.wasm +0 -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": "17.
|
|
4
|
+
"version": "17.2.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.
|
|
11
|
+
"version": "17.2.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.
|
|
17
|
+
"version": "17.2.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.
|
|
4
|
+
"version": "17.2.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.
|
|
9
|
+
"version": "17.2.0",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"agent-config",
|
|
12
12
|
"skills",
|
package/CHANGELOG.md
CHANGED
|
@@ -403,6 +403,76 @@ 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.2.0](https://github.com/event4u-app/agent-config/compare/17.1.0...17.2.0) (2026-10-23)
|
|
407
|
+
|
|
408
|
+
### Release highlights
|
|
409
|
+
|
|
410
|
+
- **Behaviour changes:** _none_
|
|
411
|
+
- **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.
|
|
412
|
+
- **Security and correctness:** keep the binding inside the size ratchet and the built-path test unskipped (4201565); land the nightly evaluator record through a pull request (75dae15); name the map's render result map-render.json, clear of the design-sync artefact name (9868be2); fit the two map tools into the kernel payload band and dispose of their state (4f362af); keep Playwright out of the bundles and regenerate what the map moved (dc896f4); close the independent review's findings on the map (8956a5b); +2 more.
|
|
413
|
+
- **Honest nulls:** _none_
|
|
414
|
+
- **Known limitations:** _none_
|
|
415
|
+
|
|
416
|
+
> **Governance mix:** governance-only 10 vs consumer-only 7 (mixed 19, maintenance 2; taxonomy 1.1.0; range 81949b9dba26..ffe878edc5db).
|
|
417
|
+
|
|
418
|
+
### Features
|
|
419
|
+
|
|
420
|
+
* **hooks:** bind the InstructionsLoaded observer on claude ([8bb7fe6](https://github.com/event4u-app/agent-config/commit/8bb7fe6dce33e743d112eb3faba1d6d5cebd0b74))
|
|
421
|
+
* **code-graph:** the map remembers, compares and flags merge risks ([77bf99c](https://github.com/event4u-app/agent-config/commit/77bf99c53ca7c4e761ffc472cc3ebef60660f621))
|
|
422
|
+
* **code-graph:** draw this repository's artefact layer on its own map ([9f2c328](https://github.com/event4u-app/agent-config/commit/9f2c328edffbb550aa7425df522d4d88875a03f6))
|
|
423
|
+
* **code-graph:** link documents to the files they name ([153ddef](https://github.com/event4u-app/agent-config/commit/153ddef9e1e03652e676e8fb0f203e44feab68af))
|
|
424
|
+
* **code-graph:** read a project's SCIP index into the graph ([f80d8ce](https://github.com/event4u-app/agent-config/commit/f80d8cea56d4b13642fad0f5af7b7cda66675853))
|
|
425
|
+
* **code-graph:** index Python, Go, Java and Vue ([2ff8f31](https://github.com/event4u-app/agent-config/commit/2ff8f3159c29e145455b0c7b10cb909faa739d93))
|
|
426
|
+
* **code-graph:** keep the map fresh, readable over MCP, and diffable ([936cad9](https://github.com/event4u-app/agent-config/commit/936cad9e938117a67e701f29356ee2e00d18d732))
|
|
427
|
+
* **code-graph:** read Laravel's conventions into the graph ([e69e6e5](https://github.com/event4u-app/agent-config/commit/e69e6e5c2290c9d73174d5800057cc33ffa446e0))
|
|
428
|
+
* **code-graph:** draw the project map into agents/map/ ([213a10c](https://github.com/event4u-app/agent-config/commit/213a10c043785ea3af947a35f94b90d8f0d4f62f))
|
|
429
|
+
|
|
430
|
+
### Bug Fixes
|
|
431
|
+
|
|
432
|
+
* **ci:** keep the binding inside the size ratchet and the built-path test unskipped ([4201565](https://github.com/event4u-app/agent-config/commit/4201565a647fe075d69646c42ff39d07af70176f))
|
|
433
|
+
* **ci:** land the nightly evaluator record through a pull request ([75dae15](https://github.com/event4u-app/agent-config/commit/75dae15a18edde57fcfbdb8fcb23c2d536bf855c))
|
|
434
|
+
* **code-graph:** name the map's render result map-render.json, clear of the design-sync artefact name ([9868be2](https://github.com/event4u-app/agent-config/commit/9868be25d59ce85c5f5814b20c6bb63ae1b48292))
|
|
435
|
+
* **ci:** fit the two map tools into the kernel payload band and dispose of their state ([4f362af](https://github.com/event4u-app/agent-config/commit/4f362af254c9d39bd8869499b3e5b88848b39050))
|
|
436
|
+
* **ci:** record the map's runtime dependencies and tighten its verify clauses ([9705541](https://github.com/event4u-app/agent-config/commit/97055419e6447ed882e00a8b9d4e6bda53baf273))
|
|
437
|
+
* **ci:** keep Playwright out of the bundles and regenerate what the map moved ([dc896f4](https://github.com/event4u-app/agent-config/commit/dc896f4749f07eea8bcd159e8cf25cb1857402eb))
|
|
438
|
+
* **code-graph:** close the independent review's findings on the map ([8956a5b](https://github.com/event4u-app/agent-config/commit/8956a5b970b55fe22957918f1fb9c422757c326f))
|
|
439
|
+
* **project-map:** use the lite model tier, the schema's lowest band ([c4833a9](https://github.com/event4u-app/agent-config/commit/c4833a9c6989a52a952b310e9707bf8725dbfeaa))
|
|
440
|
+
* **code-graph:** keep the hook bundle under its ceiling ([2356031](https://github.com/event4u-app/agent-config/commit/2356031a2f56b87a3f53717bc5b49db51096e0de))
|
|
441
|
+
* **code-graph:** index the consumer project and actually write its index ([e15e45c](https://github.com/event4u-app/agent-config/commit/e15e45c7ce13de2cda7c486652d546cbca972e7e))
|
|
442
|
+
|
|
443
|
+
### Documentation
|
|
444
|
+
|
|
445
|
+
* **roadmap:** name unopim and larasend as the code-graph benchmark subjects ([eb4599e](https://github.com/event4u-app/agent-config/commit/eb4599e460609ab0437ec0afb9bf4a9074972e73))
|
|
446
|
+
* **evidence:** re-ratify the binding after the CI-fix delta (round 5) ([12cbfa6](https://github.com/event4u-app/agent-config/commit/12cbfa68d33b0a293e0772b266c924c0b0ea3835))
|
|
447
|
+
* **roadmap:** claim the observer's concern in the estate and type the council prompts ([ae8d5a9](https://github.com/event4u-app/agent-config/commit/ae8d5a993b9324bdf47e0c2fe9944e973f0049d7))
|
|
448
|
+
* **evidence:** ratification record for the InstructionsLoaded binding ([ae1162c](https://github.com/event4u-app/agent-config/commit/ae1162c0e43cac457f666afe4cc98f641c45399e))
|
|
449
|
+
* **roadmap:** close step 1.1 and its ratification-quorum blocker ([bc66921](https://github.com/event4u-app/agent-config/commit/bc66921a44fa6a74312a4d5938442431e1524404))
|
|
450
|
+
* **roadmaps:** archive road-to-a-map-that-draws-itself — every step and criterion closed ([d40e797](https://github.com/event4u-app/agent-config/commit/d40e797f990afadf94b79a243ce0b83108718c55))
|
|
451
|
+
* **adr:** register agents/map/ for derived views and correct the stale graph claim ([66f75c5](https://github.com/event4u-app/agent-config/commit/66f75c5cd02d4506afbd60c7c92685d70572283b))
|
|
452
|
+
* **roadmaps:** plan a project map the code-graph engine draws itself ([06f332a](https://github.com/event4u-app/agent-config/commit/06f332a2550a1797b050d046d43f9a1dd6a7e7cf))
|
|
453
|
+
|
|
454
|
+
### CI
|
|
455
|
+
|
|
456
|
+
* **tests:** bound the FFmpeg install and let a stall skip the stitch cases ([1d0f01b](https://github.com/event4u-app/agent-config/commit/1d0f01b4cb3f0940a226d0a96a94ebeb2948e954))
|
|
457
|
+
|
|
458
|
+
### Chores
|
|
459
|
+
|
|
460
|
+
* **hooks:** record the admission of the instructions-observer concern ([a5ee675](https://github.com/event4u-app/agent-config/commit/a5ee675245df43e7279ee0ef485c98867ab5d99b))
|
|
461
|
+
* **plugin:** regenerate hooks/hooks.json in matrix order ([339b306](https://github.com/event4u-app/agent-config/commit/339b3062cc73ef2995f2b493d5ea627c850c3d27))
|
|
462
|
+
* **ci:** regenerate the ADR index and lower the source-size ratchet to the live total ([7c11522](https://github.com/event4u-app/agent-config/commit/7c11522b49c1dac1199e142ed17c8b6e9fa06f22))
|
|
463
|
+
* **adr:** regenerate the evidence census for ADR-297's provenance kind ([18b7d11](https://github.com/event4u-app/agent-config/commit/18b7d113e811f17c1115010676e49c6d0c8e9849))
|
|
464
|
+
* **tokens:** trim the map's surfaces, then re-anchor the two that still grew ([5d61dab](https://github.com/event4u-app/agent-config/commit/5d61dab35e0540492109a4b9233b198e9df6bc3c))
|
|
465
|
+
* **index:** regenerate the catalog for project map ([1522e30](https://github.com/event4u-app/agent-config/commit/1522e30103815b03c1a777cb4a24c234e3995f7e))
|
|
466
|
+
* **proof:** regenerate after the merge with main ([c4d0a11](https://github.com/event4u-app/agent-config/commit/c4d0a1133339e081f738a2f3df353d649110449c))
|
|
467
|
+
* **sync:** project the map command, the code-intelligence step and the analyze changes ([5651955](https://github.com/event4u-app/agent-config/commit/5651955b72866023bde89afc1e85a0001a944a93))
|
|
468
|
+
|
|
469
|
+
### Other
|
|
470
|
+
|
|
471
|
+
* **code-graph:** record the map's costs and the orientation benchmark ([84c2421](https://github.com/event4u-app/agent-config/commit/84c24216f474eab896d4f8979b2353b37f81e4b6))
|
|
472
|
+
* **code-graph:** pre-register the orientation benchmark and add the map cost probe ([1fdc013](https://github.com/event4u-app/agent-config/commit/1fdc013f9038ee50495bfe1ab0c3e75ecd90b3b3))
|
|
473
|
+
|
|
474
|
+
Tests: 32297 (+82 since 17.1.0)
|
|
475
|
+
|
|
406
476
|
## [17.1.0](https://github.com/event4u-app/agent-config/compare/17.0.0...17.1.0) (2026-10-23)
|
|
407
477
|
|
|
408
478
|
### Release highlights
|
package/README.md
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
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/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
|
[](https://www.npmjs.com/package/@event4u/agent-config)
|
|
9
9
|
|
|
10
|
-
<sub>**How these are counted** — one canonical counter, `agent-config` → `update_counts --check`, re-derives all six from the tree and fails CI when one is off by one. Two bases are not what the linked directory shows, so they are stated here rather than left to be inferred: **Commands
|
|
10
|
+
<sub>**How these are counted** — one canonical counter, `agent-config` → `update_counts --check`, re-derives all six from the tree and fails CI when one is off by one. Two bases are not what the linked directory shows, so they are stated here rather than left to be inferred: **Commands 210** counts every command file **recursively** (the linked directory holds 62 at its top level) and **Rules 122** counts the **source** rules while the linked projection holds 121 — 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>
|
|
11
11
|
|
|
12
12
|
**Try it in 30 seconds** — drop one read-only subagent into any repo and watch it check "done": `@production-validator check this branch is actually done`. No wizard, no lock-in, nothing else installed — the [30-second wedge ↓](#quickstart) is the whole first step. Start at the proof, not the catalog: **[event4u-app.github.io/agent-config/proof/](https://event4u-app.github.io/agent-config/proof/)**.
|
|
13
13
|
|
|
@@ -31,7 +31,9 @@ Gather in parallel:
|
|
|
31
31
|
- Check for: `artisan`, `Makefile`, `Taskfile.yml`, `docker-compose.yml`
|
|
32
32
|
- Check for: `phpstan.neon`, `ecs.php`, `rector.php`, `config-dev/`
|
|
33
33
|
- Check for: `.github/workflows/`, `CODEOWNERS`, `.editorconfig`
|
|
34
|
-
- Check for module roots (resolve via `scripts/_lib/agent_settings.ts::enumerate_modules()`; Laravel shape: `app/Modules/`)
|
|
34
|
+
- Check for module roots (resolve via `scripts/_lib/agent_settings.ts::enumerate_modules()`; Laravel shape: `app/Modules/`)
|
|
35
|
+
- Probe the database connections the project declares (`config/database.php` `connections`, `DB_CONNECTION*` keys in `.env.example`, `$connection` properties on models); more than one connection used by models is a multi-database / multi-tenant indicator — name the connections as found, never assume their names
|
|
36
|
+
- Build or refresh the code map: `agent-config code-graph map`. Structure (areas, hubs, cycles, request paths) is read from `agents/map/MAP.md` below, not re-derived by hand <!-- ref-ignore -->
|
|
35
37
|
- Read: `AGENTS.md`, `.github/copilot-instructions.md` (if exist)
|
|
36
38
|
|
|
37
39
|
**Assurance dimensions — do NOT hand-detect these.** Run
|
|
@@ -137,6 +139,7 @@ full pass, so "continue" is dominant and asking is a routine confirmation.
|
|
|
137
139
|
Analyze the directory structure:
|
|
138
140
|
|
|
139
141
|
- Map top-level directories with file counts
|
|
142
|
+
- Read `agents/map/MAP.md` first: its areas, infrastructure files, cycles and request paths ARE the structure section — link to it rather than restating it <!-- ref-ignore -->
|
|
140
143
|
- Identify pattern: MVC, modules, services, repositories, DTOs
|
|
141
144
|
- Count: Models, Controllers, Services, Jobs, Commands, Events, Policies
|
|
142
145
|
- Detect: multi-tenancy, API versioning, queue usage
|
|
@@ -150,13 +153,14 @@ ARCHITECTURE:
|
|
|
150
153
|
|
|
151
154
|
Pattern: {Modular MVC + Service Layer + Repository}
|
|
152
155
|
API: {Versioned REST (/api/v1/, /api/v2/)}
|
|
153
|
-
|
|
156
|
+
Databases: {connections the models use, as probed — e.g. "2 (mysql, tenant)" | 1}
|
|
157
|
+
Map: agents/map/MAP.md ({n} areas · largest {name})
|
|
154
158
|
|
|
155
159
|
───────────────────────────────────────────────
|
|
156
160
|
CODE INVENTORY:
|
|
157
161
|
───────────────────────────────────────────────
|
|
158
162
|
|
|
159
|
-
Models: {count} (
|
|
163
|
+
Models: {count} (per connection, when more than one is in use)
|
|
160
164
|
Controllers: {count}
|
|
161
165
|
Services: {count}
|
|
162
166
|
Repositories: {count}
|
|
@@ -288,9 +292,8 @@ Write all remaining analysis files that haven't been created yet:
|
|
|
288
292
|
- `agents/evidence/analysis/architecture/database.md` — schema, connections, multi-tenancy
|
|
289
293
|
- `agents/evidence/analysis/architecture/api.md` — versioning, routes, middleware, auth
|
|
290
294
|
- `agents/evidence/analysis/architecture/infrastructure.md` — Docker, CI/CD, deployment
|
|
291
|
-
- `agents/evidence/analysis/architecture/patterns.md` — design patterns used
|
|
292
|
-
- `agents/evidence/analysis/models
|
|
293
|
-
- `agents/evidence/analysis/models/customer-database.md` — all customer_database models
|
|
295
|
+
- `agents/evidence/analysis/architecture/patterns.md` — design patterns used; for module and area structure, link `agents/map/MAP.md` instead of restating it <!-- ref-ignore -->
|
|
296
|
+
- `agents/evidence/analysis/models/<connection>.md` — one per database connection the probe found, all models on it
|
|
294
297
|
- `agents/evidence/analysis/modules/{module}.md` — one per module
|
|
295
298
|
- `agents/evidence/analysis/testing/test-map.md` — test suites, coverage, strategy
|
|
296
299
|
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: lite
|
|
3
|
+
name: project-map
|
|
4
|
+
pack: engineering-base
|
|
5
|
+
visibility: internal
|
|
6
|
+
sub: map
|
|
7
|
+
cluster: project
|
|
8
|
+
skills: [code-intelligence]
|
|
9
|
+
description: Draw the code map into agents/map/
|
|
10
|
+
suggestion:
|
|
11
|
+
eligible: false
|
|
12
|
+
rationale: "Cluster sub-command — reached via its cluster head's routing or its explicit /cluster:sub name; not independently suggested (surface-consolidation)."
|
|
13
|
+
workspaces:
|
|
14
|
+
- agent-config-maintainer
|
|
15
|
+
packs:
|
|
16
|
+
- meta
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# project-map
|
|
20
|
+
|
|
21
|
+
## Instructions
|
|
22
|
+
|
|
23
|
+
Build the map of the project the user is standing in, then point at it. The map is
|
|
24
|
+
deterministic and local: no model call, no network, nothing committed by default
|
|
25
|
+
(`agents/map/` is gitignored, ADR-297). <!-- ref-ignore -->
|
|
26
|
+
|
|
27
|
+
### 1. Build
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
agent-config code-graph map
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
It builds or updates the code graph first when it is absent or behind, then writes
|
|
34
|
+
`agents/map/index.html`, `agents/map/MAP.md`, one `agents/map/areas/<id>.md` per <!-- ref-ignore -->
|
|
35
|
+
area of five or more files, and `agents/map/map.json`. With Playwright present it <!-- ref-ignore -->
|
|
36
|
+
also renders the page at three widths and reports the render check; without it the
|
|
37
|
+
check reads `unverified`, which is not a pass.
|
|
38
|
+
|
|
39
|
+
`--root <path>` maps another checkout; `--open` opens the page; `--no-verify`
|
|
40
|
+
skips the render check.
|
|
41
|
+
|
|
42
|
+
### 2. Report
|
|
43
|
+
|
|
44
|
+
Quote the command's summary lines (files, areas, largest area, graph state, render
|
|
45
|
+
check) and give the path to `agents/map/index.html`. Do not paraphrase the counts. <!-- ref-ignore -->
|
|
46
|
+
|
|
47
|
+
### 3. Answer from the map, when the user asked a question
|
|
48
|
+
|
|
49
|
+
Read `agents/map/MAP.md` first, then the page of the area in question. Say which <!-- ref-ignore -->
|
|
50
|
+
answers came from the map and which from a follow-up `code-graph query` or a file
|
|
51
|
+
read — the map groups files by coupling, it does not explain what they do.
|
|
52
|
+
|
|
53
|
+
## Rules
|
|
54
|
+
|
|
55
|
+
- **Never edit `agents/map/` by hand.** Every file there is regenerated. <!-- ref-ignore -->
|
|
56
|
+
- **A `behind:N` or `edited` graph state is part of the answer.** Say it.
|
|
57
|
+
- **"Isolated" is not "dead".** A file reached by reflection, a string path or a
|
|
58
|
+
framework convention the engine does not read is isolated too.
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
model_tier: medium
|
|
3
3
|
name: project
|
|
4
4
|
disable-model-invocation: true
|
|
5
|
-
argument-hint: "[analyze|health]"
|
|
5
|
+
argument-hint: "[analyze|health|map]"
|
|
6
6
|
pack: engineering-base
|
|
7
|
-
intent: "Project dispatcher — full analysis
|
|
8
|
-
routes_to: [project-analyze, project-health]
|
|
7
|
+
intent: "Project dispatcher — full analysis, quick health check, or the project map"
|
|
8
|
+
routes_to: [project-analyze, project-health, project-map]
|
|
9
9
|
replaces: []
|
|
10
10
|
visibility: internal
|
|
11
11
|
description: Project orchestrator — routes to analyze (full audit) and health (read-only status check)
|
|
@@ -35,6 +35,7 @@ Top-level orchestrator for the `/project` family — project-wide inspection.
|
|
|
35
35
|
|---|---|---|
|
|
36
36
|
| `/project analyze` | `commands/project/analyze.md` | Full project analysis — detect stack, inventory modules, audit docs, create missing contexts |
|
|
37
37
|
| `/project health` | `commands/project/health.md` | Quick health check — status of docs, modules, contexts, roadmaps; creates nothing |
|
|
38
|
+
| `/project map` | `commands/project/map.md` | Draw the code map into `agents/map/` — areas, files, links; offline, gitignored |
|
|
38
39
|
|
|
39
40
|
Sub-command names match the locked contract in
|
|
40
41
|
[`docs/contracts/command-clusters.md`](../docs/contracts/command-clusters.md).
|
|
@@ -50,6 +51,7 @@ Sub-command names match the locked contract in
|
|
|
50
51
|
|
|
51
52
|
> 1. analyze — full project audit (writes missing contexts)
|
|
52
53
|
> 2. health — read-only status check (creates nothing)
|
|
54
|
+
> 3. map — draw the code map into `agents/map/`
|
|
53
55
|
|
|
54
56
|
## Rules
|
|
55
57
|
|
|
@@ -38,6 +38,10 @@ code-graph and no appetite to build one — plain `grep`/read is right there.
|
|
|
38
38
|
|
|
39
39
|
## Procedure
|
|
40
40
|
|
|
41
|
+
0. **Orient first, when the question is "where does X live" rather than "who
|
|
42
|
+
calls X".** If `agents/map/MAP.md` exists, read it: it names the project's <!-- ref-ignore -->
|
|
43
|
+
areas (files grouped by coupling), its infrastructure files and its cycles.
|
|
44
|
+
No map yet? `agent-config code-graph map` builds one in seconds. Then query.
|
|
41
45
|
1. **Detect the source.** `agent-config code-graph detect` — is a fresh consumer
|
|
42
46
|
`graph.json` or native cache present? (A consumer-shipped fresh index wins;
|
|
43
47
|
the native engine covers stale-or-absent — ADR-124 § 2.)
|
|
@@ -246,6 +250,8 @@ paragraph claiming "the same five answers" directly after a list of four:
|
|
|
246
250
|
| `graph_query` | `query` |
|
|
247
251
|
| `graph_path` | `path` |
|
|
248
252
|
| `graph_node` | no CLI verb — one symbol's location, in-edges, out-edges and degree |
|
|
253
|
+
| `graph_map_status` | whether `agents/map/` exists, its counts and freshness | <!-- ref-ignore -->
|
|
254
|
+
| `graph_area` | one area of the map: files, hubs, what it depends on |
|
|
249
255
|
|
|
250
256
|
`untested` has no tool of its own; it is a flag on `graph_impact`, because the
|
|
251
257
|
two answer the same question over the same diff and a separate tool would have
|
|
@@ -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.
|
|
42
|
+
agent_config_version: "17.2.0"
|
|
43
43
|
|
|
44
44
|
# --- Project identity ---
|
|
45
45
|
project:
|
package/dist/cli/registry.js
CHANGED
|
@@ -77,7 +77,7 @@ export const REGISTRY = [
|
|
|
77
77
|
{ name: 'affected', disposition: 'delegate', synopsis: 'Artefacts related to <artefact> via the discovery relation-graph (BFS).' },
|
|
78
78
|
{ name: 'graph-explain', disposition: 'delegate', synopsis: 'Seed on a <concept>, expand 2 hops over the discovery relation-graph with a node budget.' },
|
|
79
79
|
{ name: 'benchmark', disposition: 'delegate', synopsis: 'Report context-token reduction vs the full always-loaded projection.' },
|
|
80
|
-
{ name: 'code-graph', disposition: 'delegate', synopsis: 'Deterministic code-graph engine: build|detect|refresh|validate|query|affected|path|explain, plus the gate verbs impact|tests-for|untested|dead.' },
|
|
80
|
+
{ name: 'code-graph', disposition: 'delegate', synopsis: 'Deterministic code-graph engine: build|detect|refresh|validate|query|affected|path|explain|map, plus the gate verbs impact|tests-for|untested|dead.' },
|
|
81
81
|
{ name: 'hooks:install', disposition: 'delegate', synopsis: 'Install the combined pre-commit hook.' },
|
|
82
82
|
{ name: 'hooks:status', disposition: 'delegate', synopsis: 'Print the runtime hook matrix (per-platform install + bindings).' },
|
|
83
83
|
{ name: 'hooks:doctor', disposition: 'delegate', synopsis: 'Diagnose hook health: concerns, posture, missing trampolines (read-only).' },
|
|
@@ -2364,19 +2364,11 @@ import * as fs4 from "node:fs";
|
|
|
2364
2364
|
import * as path4 from "node:path";
|
|
2365
2365
|
|
|
2366
2366
|
// src/scripts/code_graph/types.ts
|
|
2367
|
-
var GUESS_RESOLVED_VIA = /* @__PURE__ */ new Set([
|
|
2368
|
-
"name-lookup",
|
|
2369
|
-
"dynamic",
|
|
2370
|
-
// The accepted-edge filter is a DENYLIST, so a new value is accepted by
|
|
2371
|
-
// default — which is exactly backwards for this one. `foreign` must be
|
|
2372
|
-
// listed here or a consumer's graph would silently answer the gate verbs
|
|
2373
|
-
// as if this package had resolved its edges.
|
|
2374
|
-
"foreign"
|
|
2375
|
-
]);
|
|
2367
|
+
var GUESS_RESOLVED_VIA = /* @__PURE__ */ new Set(["name-lookup", "dynamic", "foreign"]);
|
|
2376
2368
|
function isStatedResolution(resolved_via) {
|
|
2377
2369
|
return !GUESS_RESOLVED_VIA.has(resolved_via);
|
|
2378
2370
|
}
|
|
2379
|
-
var SCHEMA_VERSION =
|
|
2371
|
+
var SCHEMA_VERSION = 5;
|
|
2380
2372
|
var EXT_LANG = {
|
|
2381
2373
|
".php": "php",
|
|
2382
2374
|
".ts": "typescript",
|
|
@@ -2386,37 +2378,24 @@ var EXT_LANG = {
|
|
|
2386
2378
|
".js": "javascript",
|
|
2387
2379
|
".jsx": "javascript",
|
|
2388
2380
|
".mjs": "javascript",
|
|
2389
|
-
".cjs": "javascript"
|
|
2381
|
+
".cjs": "javascript",
|
|
2382
|
+
".py": "python",
|
|
2383
|
+
".go": "go",
|
|
2384
|
+
".java": "java",
|
|
2385
|
+
".vue": "typescript"
|
|
2390
2386
|
};
|
|
2391
2387
|
|
|
2392
2388
|
// src/scripts/code_graph/validate.ts
|
|
2393
|
-
var
|
|
2389
|
+
var words = (s) => new Set(s.split(" "));
|
|
2390
|
+
var RELATIONS = words(
|
|
2391
|
+
"calls imports uses inherits member tests routes-to renders includes reads migrates persists relates documents"
|
|
2392
|
+
);
|
|
2394
2393
|
var CONFIDENCES = /* @__PURE__ */ new Set(["EXTRACTED", "INFERRED", "AMBIGUOUS"]);
|
|
2395
|
-
var RESOLVED_VIA =
|
|
2396
|
-
"same-file"
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
"route-table",
|
|
2401
|
-
"test-import",
|
|
2402
|
-
"name-lookup",
|
|
2403
|
-
"dynamic",
|
|
2404
|
-
// Adapted from a consumer's own graph file; see `foreign.ts`.
|
|
2405
|
-
"foreign"
|
|
2406
|
-
]);
|
|
2407
|
-
var PROVIDERS = /* @__PURE__ */ new Set(["native", "foreign"]);
|
|
2408
|
-
var KINDS = /* @__PURE__ */ new Set([
|
|
2409
|
-
"file",
|
|
2410
|
-
"class",
|
|
2411
|
-
"interface",
|
|
2412
|
-
"trait",
|
|
2413
|
-
"function",
|
|
2414
|
-
"method",
|
|
2415
|
-
"constant",
|
|
2416
|
-
"type",
|
|
2417
|
-
"enum",
|
|
2418
|
-
"skipped"
|
|
2419
|
-
]);
|
|
2394
|
+
var RESOLVED_VIA = words(
|
|
2395
|
+
"same-file import-specifier path-alias psr4 route-table directive-scan schema-call eloquent-relation compiler-index test-import name-lookup dynamic foreign"
|
|
2396
|
+
);
|
|
2397
|
+
var PROVIDERS = /* @__PURE__ */ new Set(["native", "foreign", "scip"]);
|
|
2398
|
+
var KINDS = words("file class interface trait function method constant type enum skipped route table");
|
|
2420
2399
|
function validateGraph(g) {
|
|
2421
2400
|
const errors = [];
|
|
2422
2401
|
const push = (m) => {
|
|
@@ -2435,6 +2414,7 @@ function validateGraph(g) {
|
|
|
2435
2414
|
if (typeof n !== "object" || n === null) return push(`node[${i}] not an object`);
|
|
2436
2415
|
const nn = n;
|
|
2437
2416
|
if (typeof nn["id"] !== "string") push(`node[${i}].id must be a string`);
|
|
2417
|
+
else if (ids.has(nn["id"])) push(`node[${i}].id is a duplicate: ${nn["id"]}`);
|
|
2438
2418
|
else ids.add(nn["id"]);
|
|
2439
2419
|
if (!KINDS.has(nn["kind"])) push(`node[${i}].kind invalid: ${String(nn["kind"])}`);
|
|
2440
2420
|
if (typeof nn["source_file"] !== "string") push(`node[${i}].source_file must be a string`);
|
|
@@ -2546,7 +2526,7 @@ function detectSources(root, nativeCache) {
|
|
|
2546
2526
|
} catch {
|
|
2547
2527
|
}
|
|
2548
2528
|
const scip = scipCandidates.find((p) => fs4.existsSync(p));
|
|
2549
|
-
if (scip) out.push({ kind: "scip", path: scip, present: true, note: "SCIP
|
|
2529
|
+
if (scip) out.push({ kind: "scip", path: scip, present: true, note: "SCIP \u2014 index.scip merges into the build" });
|
|
2550
2530
|
if (fs4.existsSync(nativeCache)) out.push({ kind: "native", path: nativeCache, present: true, ...freshness(abs, nativeCache, null) });
|
|
2551
2531
|
return out;
|
|
2552
2532
|
}
|
|
@@ -2628,6 +2608,7 @@ function emitSqliteTwin(graph, serialized, jsonPath) {
|
|
|
2628
2608
|
db.exec(
|
|
2629
2609
|
"CREATE TABLE meta (key TEXT PRIMARY KEY, value TEXT NOT NULL);CREATE TABLE nodes (id TEXT PRIMARY KEY, label TEXT NOT NULL, kind TEXT, source_file TEXT, l0 INTEGER, l1 INTEGER, l2 INTEGER, l3 INTEGER);CREATE TABLE edges (source TEXT NOT NULL, target TEXT NOT NULL, relation TEXT NOT NULL, confidence TEXT NOT NULL, candidates TEXT, ambiguity_reason TEXT, resolved_via TEXT, provider TEXT);CREATE INDEX edges_source ON edges(source);CREATE INDEX edges_target ON edges(target);CREATE INDEX nodes_label ON nodes(label);CREATE INDEX nodes_source_file ON nodes(source_file);"
|
|
2630
2610
|
);
|
|
2611
|
+
db.exec("BEGIN");
|
|
2631
2612
|
const meta = db.prepare("INSERT INTO meta (key, value) VALUES (?, ?)");
|
|
2632
2613
|
meta.run("source_checksum", graph.source_checksum);
|
|
2633
2614
|
meta.run("json_size", String(stat.size));
|
|
@@ -2666,14 +2647,17 @@ function emitSqliteTwin(graph, serialized, jsonPath) {
|
|
|
2666
2647
|
e.provider
|
|
2667
2648
|
);
|
|
2668
2649
|
}
|
|
2650
|
+
db.exec("COMMIT");
|
|
2669
2651
|
stampUserVersion(db, GRAPH_STORE_VERSION);
|
|
2670
2652
|
} finally {
|
|
2671
2653
|
db.close();
|
|
2672
2654
|
}
|
|
2673
2655
|
fs5.renameSync(tmp, twin);
|
|
2674
2656
|
return true;
|
|
2675
|
-
} catch {
|
|
2657
|
+
} catch (e) {
|
|
2676
2658
|
fs5.rmSync(tmp, { force: true });
|
|
2659
|
+
process.stderr.write(`code-graph: index not written: ${e.message}
|
|
2660
|
+
`);
|
|
2677
2661
|
return false;
|
|
2678
2662
|
}
|
|
2679
2663
|
}
|
|
@@ -1747,7 +1747,7 @@
|
|
|
1747
1747
|
},
|
|
1748
1748
|
{
|
|
1749
1749
|
"category": "command",
|
|
1750
|
-
"checksum": "sha256:
|
|
1750
|
+
"checksum": "sha256:affd55963df4d3e9ba7e8281f8123dd1043a04ba5c1b33b6871f72290b19000b",
|
|
1751
1751
|
"install": {
|
|
1752
1752
|
"default": true,
|
|
1753
1753
|
"removable": false
|
|
@@ -1772,12 +1772,12 @@
|
|
|
1772
1772
|
},
|
|
1773
1773
|
{
|
|
1774
1774
|
"category": "command",
|
|
1775
|
-
"checksum": "sha256:
|
|
1775
|
+
"checksum": "sha256:1514c6d09bee3cbbc1996d9d0e7ee1c9dd38829ef293ded1e0e8f1eabed1f7bd",
|
|
1776
1776
|
"install": {
|
|
1777
1777
|
"default": true,
|
|
1778
1778
|
"removable": false
|
|
1779
1779
|
},
|
|
1780
|
-
"intent": "Project dispatcher — full analysis
|
|
1780
|
+
"intent": "Project dispatcher — full analysis, quick health check, or the project map",
|
|
1781
1781
|
"lifecycle": "active",
|
|
1782
1782
|
"name": "project",
|
|
1783
1783
|
"pack": "engineering-base",
|
|
@@ -1788,7 +1788,8 @@
|
|
|
1788
1788
|
"replaces": [],
|
|
1789
1789
|
"routes_to": [
|
|
1790
1790
|
"project-analyze",
|
|
1791
|
-
"project-health"
|
|
1791
|
+
"project-health",
|
|
1792
|
+
"project-map"
|
|
1792
1793
|
],
|
|
1793
1794
|
"slug": "project",
|
|
1794
1795
|
"trust": {
|
|
@@ -1826,6 +1827,31 @@
|
|
|
1826
1827
|
"agent-config-maintainer"
|
|
1827
1828
|
]
|
|
1828
1829
|
},
|
|
1830
|
+
{
|
|
1831
|
+
"category": "command",
|
|
1832
|
+
"checksum": "sha256:3a29995588969e6a591002e4ff5dade2ef9fac6c77edcd648f55da4559c4e8f9",
|
|
1833
|
+
"install": {
|
|
1834
|
+
"default": true,
|
|
1835
|
+
"removable": false
|
|
1836
|
+
},
|
|
1837
|
+
"lifecycle": "active",
|
|
1838
|
+
"name": "project-map",
|
|
1839
|
+
"pack": "engineering-base",
|
|
1840
|
+
"packs": [
|
|
1841
|
+
"meta"
|
|
1842
|
+
],
|
|
1843
|
+
"path": "src/domains/engineering-base/project/map/command.md",
|
|
1844
|
+
"slug": "project-map",
|
|
1845
|
+
"trust": {
|
|
1846
|
+
"confidence": "high",
|
|
1847
|
+
"human_review_required": false,
|
|
1848
|
+
"level": "core"
|
|
1849
|
+
},
|
|
1850
|
+
"visibility": "internal",
|
|
1851
|
+
"workspaces": [
|
|
1852
|
+
"agent-config-maintainer"
|
|
1853
|
+
]
|
|
1854
|
+
},
|
|
1829
1855
|
{
|
|
1830
1856
|
"category": "command",
|
|
1831
1857
|
"checksum": "sha256:4317113046ac890122c413921e5acf353f8b6e45006fde6d35159a35d5f529a9",
|
|
@@ -9180,7 +9206,7 @@
|
|
|
9180
9206
|
},
|
|
9181
9207
|
{
|
|
9182
9208
|
"category": "skill",
|
|
9183
|
-
"checksum": "sha256:
|
|
9209
|
+
"checksum": "sha256:cda3a959dd75ff8af2c300111f194ce3c1cc074f7b091769670ab39458534b63",
|
|
9184
9210
|
"install": {
|
|
9185
9211
|
"default": true,
|
|
9186
9212
|
"removable": false
|
|
@@ -15094,7 +15120,7 @@
|
|
|
15094
15120
|
"workspaces": []
|
|
15095
15121
|
}
|
|
15096
15122
|
],
|
|
15097
|
-
"checksum": "sha256:
|
|
15123
|
+
"checksum": "sha256:78594c2e14f67a1cb0b14a85d62c2ccdc967977ab6bf4bf0f1a869d1a91d4e35",
|
|
15098
15124
|
"deprecations": [
|
|
15099
15125
|
{
|
|
15100
15126
|
"key": "tier",
|
|
@@ -15243,7 +15269,7 @@
|
|
|
15243
15269
|
"reason": "scaffold template for ticket-bundle tickets (ADR-101); carries no runtime frontmatter — emit-tickets fills it in per ticket"
|
|
15244
15270
|
}
|
|
15245
15271
|
],
|
|
15246
|
-
"generated_at": "2026-10-
|
|
15272
|
+
"generated_at": "2026-10-23T12:27:49Z",
|
|
15247
15273
|
"packs": [
|
|
15248
15274
|
{
|
|
15249
15275
|
"artefact_count": 130,
|
|
@@ -16009,7 +16035,7 @@
|
|
|
16009
16035
|
},
|
|
16010
16036
|
{
|
|
16011
16037
|
"always_on": true,
|
|
16012
|
-
"artefact_count":
|
|
16038
|
+
"artefact_count": 308,
|
|
16013
16039
|
"description": "Artefacts that maintain this package (agent-config itself).",
|
|
16014
16040
|
"domain": "meta",
|
|
16015
16041
|
"human_review_required": 0,
|
|
@@ -16025,7 +16051,7 @@
|
|
|
16025
16051
|
"trust_level_default": "core",
|
|
16026
16052
|
"trust_summary": {
|
|
16027
16053
|
"advisory": 0,
|
|
16028
|
-
"core":
|
|
16054
|
+
"core": 306,
|
|
16029
16055
|
"experimental": 2,
|
|
16030
16056
|
"professional": 0,
|
|
16031
16057
|
"restricted": 0
|
|
@@ -16116,27 +16142,27 @@
|
|
|
16116
16142
|
"scanner_version": "de0a22b4ac4c",
|
|
16117
16143
|
"stats": {
|
|
16118
16144
|
"by_category": {
|
|
16119
|
-
"command":
|
|
16145
|
+
"command": 210,
|
|
16120
16146
|
"rule": 122,
|
|
16121
16147
|
"skill": 301,
|
|
16122
16148
|
"subagent": 3,
|
|
16123
16149
|
"template": 1
|
|
16124
16150
|
},
|
|
16125
16151
|
"by_lifecycle": {
|
|
16126
|
-
"active":
|
|
16152
|
+
"active": 619,
|
|
16127
16153
|
"archived": 0,
|
|
16128
16154
|
"deprecated": 0,
|
|
16129
16155
|
"experimental": 18
|
|
16130
16156
|
},
|
|
16131
16157
|
"by_trust_level": {
|
|
16132
16158
|
"advisory": 8,
|
|
16133
|
-
"core":
|
|
16159
|
+
"core": 502,
|
|
16134
16160
|
"experimental": 24,
|
|
16135
16161
|
"professional": 103,
|
|
16136
16162
|
"restricted": 0
|
|
16137
16163
|
},
|
|
16138
16164
|
"documented_unassigned_count": 27,
|
|
16139
|
-
"total_artefacts":
|
|
16165
|
+
"total_artefacts": 637,
|
|
16140
16166
|
"unassigned_count": 0
|
|
16141
16167
|
},
|
|
16142
16168
|
"unassigned": [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
c56c0f01af2a7e392bfe7a3bade14cd27e0969aaa2d70c14310f202ded7c8627 discovery-manifest.json
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Discovery Manifest — Summary
|
|
2
2
|
|
|
3
|
-
- Generated: `2026-10-
|
|
3
|
+
- Generated: `2026-10-23T12:27:49Z`
|
|
4
4
|
- Scanner: `de0a22b4ac4c`
|
|
5
|
-
- Artefacts: **
|
|
5
|
+
- Artefacts: **637**
|
|
6
6
|
- Unassigned: **0**
|
|
7
7
|
|
|
8
8
|
## `engineering` — Engineering
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
|
|
107
107
|
| Pack | Artefacts |
|
|
108
108
|
|---|---|
|
|
109
|
-
| `meta` — Meta |
|
|
109
|
+
| `meta` — Meta | 308 |
|
|
110
110
|
| `memory` — Memory | 8 |
|
|
111
111
|
| `analytics` — Analytics | 4 |
|
|
112
112
|
| `product-reasoning` — Product Reasoning | 12 |
|