Observation boundary
This page records a repository-source observation on 2026-09-08. Source claims below are distinct from deployment proof, recorded in private page (sign-in required). The stored read model says it was exported on 2026-08-16T11:36:21.577Z, so that export date is historical state provenance, not evidence of freshly generated state on 2026-09-08: artifacts/snapshots/foundry.json:2-5.
What is wired now
| Layer | Implemented responsibility | Source evidence |
|---|---|---|
| Extension | The workspace loads the extracted Iconloom extension. Its /loom snapshot command delegates to the snapshot exporter. | .omp/settings.json:1-4; iconomatix-extracted/iconomix/iconloom-1.0.0/iconloom-1.0.0/src/extension.ts:86-90,679-686 |
| Export | Builds one FoundrySnapshot, validates its authority fields and safety shape, then atomically writes the requested safe project-relative export. | iconomatix-extracted/iconomix/iconloom-1.0.0/iconloom-1.0.0/src/core/snapshot.ts:145-212,426-430 |
| Root read model | Reads only artifacts/snapshots/foundry.json and rejects malformed state through a strict parser. | src/adapters/iconloom-ledger.ts:5-30,32-119 |
| Shared API | Exposes only /api/foundry and /api/health; it accepts GET/HEAD and rejects mutation attempts. | src/adapters/foundry-api.ts:5-76 |
| Cockpit | React fetches /api/foundry, passes a successful snapshot to the cockpit, and exposes an unavailable state rather than substituting another source. | src/main.tsx:1-17; src/App.tsx:21-79,104-144 |
flowchart TD L["Extension-owned generated ledger"] --> E["/loom snapshot exporter"] E --> S["Sanitized snapshot export"] S --> V["Strict root snapshot reader"] V --> A["Shared read-only API"] A --> C["React cockpit"] C -. "shows next legal operation only" .-> H["Live human OMP action"]
The dashed edge is navigation, not browser control. The cockpit renders the exported next operation and says it cannot advance the controller; candidate choice remains in the live human command surface: src/app/foundry-cockpit.tsx:793-825.
The same API handler is used by Vite development/preview middleware and the separately coded Node host: src/adapters/vite-iconloom-api.ts:12-45; src/adapters/node-server.ts:53-72. The Node host source serves only contained regular files from the built client directory and returns an error for missing paths rather than inventing an SPA fallback: src/adapters/node-server.ts:74-93,115-139. Its package build/start wiring is present in source, but this page makes no live-host claim: package.json:10-16; src/adapters/serve.ts:4-17.
Trust boundary
- The extension is the only layer in this map that reads generated run state. The root adapter reads the sanitized export path, not the generated ledger:
src/adapters/iconloom-ledger.ts:5-30. - The exporter rejects forbidden capability, raw-vector, and source-path fields before output; the root parser then requires the exact snapshot shape, validates counts, hashes, authority literals, budget relationships, and the legal next-operation form:
iconomatix-extracted/iconomix/iconloom-1.0.0/iconloom-1.0.0/src/core/snapshot.ts:145-212;src/adapters/iconloom-ledger.ts:32-119. - If that export is absent or invalid, the API returns the trusted-export-unavailable response; the UI explicitly refuses cached, direct-ledger, or placeholder substitution:
src/adapters/foundry-api.ts:64-75;src/App.tsx:104-139. FoundrySnapshotis the actual cross-boundary interface. It carries dated state, separate current/history counts, measured and inferred findings, frontier status, authority gates, readiness, budgets, stop reason, and next permitted operation:src/contracts/dashboard.ts:86-108.
Authority is not a score
The declared source order is host policy, project governance, generated runtime ledger, executable package, then the blueprint. The ledger is typed-operation-only and application access is forbidden: docs/blueprint.yaml:8-35. This is policy precedence, not an HTTP authorization shortcut.
The runtime read model makes the decision boundary literal: candidate decision, approval, and release are human_only; blocker override is none; models may not select: src/contracts/dashboard.ts:48-54; src/adapters/iconloom-ledger.ts:91-119. A mechanical frontier can therefore be displayed as eligibility without becoming a shortlist, approval, or release.
Design seam: durable core versus live automation
The blueprint is explicitly a foundation-level architecture contract: docs/blueprint.yaml:1-6. It assigns src/contracts, src/gates, src/search, src/evidence, src/decision, and src/release to a pure durable core with no model provider, user interface, or filesystem-adapter dependency: docs/blueprint.yaml:37-56.
Those directories do contain real deterministic functions. They are not, however, a running root controller. [INFERENCE] On the 2026-09-08 static source path, the wired application is snapshot reader → API → cockpit; the budget, DAG, frontier, evidence, recovery, checkpoint, and readiness functions have no invocation on that path: src/adapters/foundry-api.ts:45-76; src/App.tsx:25-79; src/gates/budget.ts:23-45; src/gates/dag.ts:14-28; src/search/frontier.ts:20-53; src/evidence/separation.ts:19-32; src/decision/recovery.ts:24-38; src/decision/checkpoint.ts:54-115; src/release/readiness.ts:43-69.
The blueprint’s named interfaces and full stage sequence describe the intended controller boundary, not evidence that a root worker, provider adapter, automated artistic decision, or release pipeline is currently connected: docs/blueprint.yaml:89-183,185-244. FoundrySnapshot is the exception: it is a live shared DTO across exporter, parser, API, and cockpit.