# ADR-006: Reference-Frame World Model

Status: Accepted; updated for CHUNK-03 world-object model

## Context

CHUNK-09 proved a phone AR overlay contract, but the fuller product intent is larger: Impressions is a multiplayer mixed-reality world renderer. The living map, third-person traversal, phone camera overlay, and future glasses HUD must be different reference frames over the same world state.

The stronger source references are preserved in `docs/visual-reference/REFERENCE_FRAME_WORLD_MODEL.md` and the stitch contact sheet.

## Decision

Android must implement one shared world model with three reference frames:

- birdseye/topological map;
- third-person embodied traversal through the same place;
- first-person phone/glasses overlay through the same anchors.

The reference-frame flip is a camera transform, not a separate feature island. Physical nodes, phantom nodes, sealed layers, resonance routes, synthetic agents, avatars, floating signs, gathering places, and privacy/eligibility constraints must keep object identity across frames.

The canonical world object graph must explicitly model:

- entities, anchors, layers, impression events, field cells, visibility policies, provenance, and uncertainty;
- profile surfaces, group dynamics, relationship objects, holographic places, and consensus visibility rules;
- co-located realities that can share a broad physical place without leaking hidden existence;
- physical-coupled, pure-virtual, remote-traversed, remote-materialized, synthetic, aggregate, and provider-originated presence modes;
- policy-sliced query results for birdseye, traversal, and embodied frames.

Renderers should consume policy-sliced frame views, not the full privileged graph, unless they are running inside a local/private authoring or verification boundary.

The provider strategy is:

- map/street data through MapLibre/PMTiles/Overture/H3 or a licensed equivalent;
- phone pose through ARCore and CameraX/ARCore integration;
- street-level visual context through Google Maps/Street View-style coverage or an equivalent where available;
- HUD/glasses rendering through the same anchor contract, with no new privacy boundary.

## Consequences

- CHUNK-11 must include a unified world renderer and transition grammar, not only UI polish.
- Android screens should collapse toward one primary world surface instead of many diagnostic tabs.
- The emulator may prove contracts and renderer substitutions, but live alignment requires a physical Pixel gate.
- Raw camera frames, raw sensor streams, raw sig64 vectors, private ledger internals, and precise path histories remain forbidden egress by default.
- A hidden co-located reality must render as ordinary absence to non-members; even denied entity identifiers should not appear in exported frame slices.
- Provider capability objects must be labeled as capability probes until device evidence proves a live session.
