# V1 Domain Workbenches — inventory snapshot (BASE.1)

Machine-readable inventory of the seven workbench initiatives (Isis, Metis,
Yemaya, Veritas, Euterpe, Aja, Bellona) plus the shared workbench platform,
regenerated from the current branch's tracked files. Satisfies **BASE.1** of
[`V1_DOMAIN_WORKBENCHES_TODOS_2026-07-23.md`](../../../V1_DOMAIN_WORKBENCHES_TODOS_2026-07-23.md).

## Regenerate / verify

```bash
pnpm inventory:v1-workbenches          # write the snapshot
pnpm verify:inventory:v1-workbenches   # fail on drift + run known-value tests
```

Both wrap `node scripts/v1-workbenches/generate-inventory.mjs [--check]`. All
discovery is driven by `git ls-files`, so the snapshot reflects tracked source
only and is byte-stable on a given commit — a clean regeneration produces no
diff (BASE.1.g). The output contains **no wall-clock timestamps**; the pinned
commit SHA and tool versions in `manifest.json` are the only environment inputs.

## Files

| File                  | BASE.1 child | Contents                                                                                                                                                                    |
| --------------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `manifest.json`       | a, g         | Pinned inputs (commit SHA, roots, ignored globs, tool versions), summary rollups, proxy governance                                                                          |
| `packages.json`       | b            | Every project (npm / Nx / Python / C++) with manifest paths, domain, type, targets, exports                                                                                 |
| `applications.json`   | c            | Deployable apps/services/workers/CLIs/desktop shells/bridge hosts with runtime type + entry point                                                                           |
| `routes.json`         | d            | Framework-aware routes: Next.js filesystem/middleware (gated on `next.config`), React Router `<Route path=>`, and config redirect/rewrite rows with source + effective host |
| `tests.json`          | e            | Every test file with harness (vitest/playwright/maestro/node:test) and owning target                                                                                        |
| `reconciliation.json` | f            | Duplicate/mismatch/orphan/leak analysis; `unexplainedRecords` must stay `0`                                                                                                 |

### BASE.3 — library dependency graph + disposition map

Regenerate/verify with the same commands (they run both generators). Written by
`scripts/v1-workbenches/generate-library-graph.mjs`.

| File                          | BASE.3 child  | Contents                                                                                                                                                          |
| ----------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `library-graph.json`          | a, b, c, d, g | Per-package public-symbol count, inbound consumers, outbound deps (cross-domain + private-internal flags), proposed disposition + rationale, filesystem reconcile |
| `library-public-symbols.json` | a             | `packageName → sorted public symbols[]` (96k symbols; barrel-following through `.js`/`.d.ts`/`dist` entry indirection)                                            |

Edges come from one `git grep` over tracked `*.ts/*.tsx` across the **whole**
repo, so consumers outside the seven domains are counted (BASE.3.b). Import
detection accepts `from`/`import`/`require` forms — including multi-line
`} from '@scope/x'` — and rejects plain string literals like
`export const NAME = '@scope/x'`. `proposedDisposition` is a **machine
recommendation only**: BASE.3.d owner assignment and BASE.3.e/f migration plans
remain human decisions and stay unchecked in the ledger.

### DEP.1 — phase dependency graph

`../dependency-graph.json`, written by
`scripts/v1-workbenches/generate-dependency-graph.mjs`. Encodes §4's nine
sequencing rules and §5's cross-domain integrations as a validated DAG (23
nodes, 66 edges). `--check` runs the cycle detector + unknown-ID validator and
fails the gate on any cycle, dangling/self/redundant/contradictory edge, or node
that does not map to a live ledger identifier. Exposes deterministic
critical-path and parallel-ready projections. `owner`/`evidenceGate` edge slots
are intentionally `null` pending DEP.2 (human ownership).

## Notable reconciliation findings (route to a domain owner)

- **Cross-domain name leaks (`crossDomainNameLeaks`)**: `project.json` files
  under `libs/aja/*` and `apps/aja/svc-motion-pipeline` still carry stale
  `lilith-*` / `@lilith/*` names from Aja's former home under Lilith. These do
  not break the build but confuse Nx ownership; each needs an owner decision
  (rename vs. documented compatibility) under BASE.1.f / BASE.2.f.
- **Duplicate npm package names (`duplicatePackageNames`)**:
  `@veritas/analytics`, `@veritas/cms`, and `@veritas/notifications` each exist
  in **both** `apps/` and `libs/` under one npm name — a resolution-ambiguity
  defect. The library graph collapses each pair to a single node
  (`duplicatePackageNamesCollapsed`); fix the collision before trusting those
  inbound counts.
- **Non-npm projects (`nonNpmProjects`)**: Python (`pyproject.toml`), C++
  (`sdk-cpp`), and Rust/GPU crate projects defined only by `project.json` are
  surfaced here so they are neither hidden nor double-counted.
- **Library disposition candidates (`library-graph.json`)**: 191 libraries have
  **no static external consumers** (retire-candidates — confirm no dynamic /
  barrel / registry use first) and 12 are refactor-candidates (a consumer
  reaches past their public export surface). Veritas is the most fragmented
  (many built-but-unwired libs), consistent with ledger §1.
  `@oshun/documentation` declares `main: ./src/index.ts` but that file is
  missing (broken entry).
- **Studio Isis proxy is fail-closed**: `manifest.proxyGovernance` records that
  `STUDIO_ISIS_ALLOWED_ROUTE_SEGMENTS` is empty, so every `/studio/isis/*`
  segment is AAA-only. A source-mounted page under that tree is **not** proof of
  a reachable surface — exactly the trap called out in ledger §1.

`unexplainedRecords` counts only structural-integrity failures (duplicate
project names, ownerless routes, ownerless tests). Benign scope-strip name
conventions, surfaced non-npm projects, and classified leaks are all accounted
for and therefore excluded from that count.
