One ground truth, many lenses. The manifest is the per-user entry vertex of your object graph — a derived, pointers-only index over your Streams, Series, Sessions and Relays. The same projection engine renders it for the agent at boot, the Overview home, and the Graph Map, so the three surfaces can never drift.
A materialized view, computed on read. No write API — it can’t drift because it’s never the source of truth.
Type · id · name · state · weight · workspace · how-it-arrived. Never content bodies — discovery, not retrieval.
Computed under your identity + active org. Filters, never grants — an unevaluable node is dropped, not leaked.
Fail-open: no manifest → the normal home. Held snapshot_hash makes re-checks cheap.
The compact columnar skeleton in relay_context — the map an agent lands with instead of discovering objects piecemeal.
The list-density projection: Streams with attention meters, Series, open Sessions, recent Relays with provenance. This page’s home.
RCTX-409/410The canvas-density view: the same nodes at higher N, drawn as shapes with typed edges. One renderer, two densities.
RCTX-385 · live/objects/:type/:id/related.
A locked law (RZBE4Q / YA8GSA): every node is a neutral glyph tile, identical background for every type — the shape carries the type, the same alphabet the canvas draws. Colour stays a state channel (teal), never a type channel.
Steps 1–5 are built and deployed to production (relay-platform PR #1755, green) — but every surface ships dark behind a flag until turned on. Nothing is user-visible yet; flip a flag to light each surface.
root_manifest feature flag — off globally (@relayctx.com on by default). Flip it → every session boot carries the map. Verified off for non-internal accounts.
RELAY_NODE_ENABLED env — off (endpoint 404s). Flip it → the Overview home + Map can read /api/user/v1/manifest.
RELAY_MANIFEST_SIGNING — off, held behind the disclosure gate until the provisional files. Opaque, canonical form only.
parent_id→derived-from) supplies the manifest's lineage in object_edges. Pass B (--refs, @-ref text edges) ran to 0 edges — no un-mirrored @-refs in envelope text; standalone sends dominate (real usage shape). The graph is fully backfilled; the references layer fills naturally via dual-write from here.edge.origin (created/claimed/forwarded) but not via_code — lineage rides the canonical/HTTP form only. Open call: add via_code as a compact column if agents need provenance at boot (additive — appends to cols).snapshot_hash for no-op re-pulls, use counts to summarise-not-enumerate on small screens, lazy-fetch node bodies on tap. See concepts/map-mobile-concept.html.
Wherever manifest-fed content appears, one quiet marker signals it’s a live projection — a status dot, the truncated snapshot_hash, and a jump to the same data as a map.
GET /api/user/v1/manifest → { manifest | null } (404 while RELAY_NODE_ENABLED is dark; fail-open). Nodes: type · id · name · state · weight_pct · workspace · visibility · last_activity · edge + counts + snapshot_hash. One engine: services/projection.py. Rendered through the shared gc-* kit (concepts/src/graph/components.ts) so the home and the Map never diverge.42KXS4.