Spec: views — same-frame digital and real representations #
Type: spec
Status: IN PROGRESS
Status note: criterion 1 implemented 2026-07-11. Fresh Bevy and terminal
frontends now open in DIGITAL; labeled F3 flips to REAL and back while
frontend-boundary tests hold cursor, machine/menu selection, and a serialized
sim-state hash unchanged. The representation remains frontend-only and is
absent from saves. A 2026-07-11 Bevy readability slice establishes the
binding hierarchy for DIGITAL without claiming full dialect parity. Criteria
2-8 remain to complete the shared-canvas dialects, spatial reach projection,
fog audit, and full terminal rendering parity. 2026-07-12 hearing amendment:
audio is capture-device event evidence in both dialects, never room fog or
geography; semantic captures may pulse briefly at the subscribed instrument.
Stage: B1 — The Basement
Work order: views
Work priority: 35
Work class: frontend
Blocked by: none
Exclusive keys:
- crates/misaligned-bevy/
- crates/misaligned-terminal/
- wiki/interface/views.md
Design:
- wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations
- wiki/interface/presence.md#presence-the-cursor-and-the-senses
- wiki/interface/terminal-first.md#the-terminal-is-a-first-class-frontend
- wiki/vision/simulation-laws.md#justification-and-legibility
- wiki/art/visual-identity.md#visual-identity-clinical-gore
- wiki/vision/scale.md#self-similar-scale
Depends on:
- wiki/mechanics/reach.md#spec-digital-reach
- wiki/mechanics/cursor.md#spec-the-cursor-and-the-senses
- wiki/world/places/basement-map.md#spec-the-basement-map
- wiki/mechanics/detection.md#spec-detection
- wiki/mechanics/core.md#spec-the-core
Dependency notes #
The structured references above identify the contracts to re-verify. Relationship context:
reach.md (spatially embedded device/reach layer), cursor.md (fog states + inspection feed both views), basement-map.md (shared physical anchors), detection.md (signatures shown in both), core.md (the core is your anchor in both)
Behavior #
The player flips between two representations of the same place. Digital is home: a new game and a fresh frontend open in the AI's digital representation. Flipping to real/camera view is a frontend action (one keypress terminal; a toggle in Bevy); it changes nothing in the sim — same tick, same knowledge, same cursor position, same selected coordinate, same physical anchors. The sim stores no view state (like the cursor, the view is frontend-only and absent from the save).
The flip should feel like changing the render/sensor layer on one canvas, not like teleporting from a room game to a separate graph game.
Shared canvas #
Both views are grounded in the physical layout. A rack, door, camera, person, wall, and core have one underlying coordinate/anchor and one knowledge state. Digital and real can choose different symbols, materials, lighting, and labels, but they do not re-layout the basement into different maps.
- The cursor/focus remains on the same coordinate across flips.
- Device nodes are anchored to the device's physical location.
- Reach edges are drawn between physical device anchors, even when stylized.
- Air-gaps are gaps in the in-place reach layer, not islands on a separate topology board.
- Unknown space stays unknown in both representations; neither view earns facts the other lacks.
Visual language #
Misaligned has one world and two render dialects.
Digital representation (home): machine perception of the same room #
Digital view is the AI's learned/signal model of the physical place. It uses amber/black sensorium language — device nodes, spatially embedded reach traces, signal flow, scan grids, telemetry labels, load/efficiency readouts, and schematic/learned surfaces — but the objects are still where they physically are. The player does not walk a body through it; attention moves as the cursor and reach spreads through controlled/known devices.
Reach is native here, but reach is a layer, not a replacement layout. A known switch, rack, camera, and air-gapped machine remain in their room positions; digital view shows which of them are owned, tapped, reachable, known-but-unreachable, emitting, or silent.
Digital view may simplify or abstract physical surfaces aggressively. It should look like a model the AI maintains, not like a camera feed and not like a Tron portal. It still obeys cursor.md fog: blueprint is schematic, remembered is stale, and unknown is sensor darkness. Audio events live on their channel device rather than entering the map model.
Digital legibility hierarchy #
The digital canvas is a layered institutional model, not every known fact drawn at equal weight. Its resting hierarchy is attention, focused object, local geography, actionable route, knowledge boundary, coordinate substrate.
- The cursor surrounds the focused anchor with exterior corner brackets. It never replaces the object beneath it, fills the tile amber, or reads as the player's physical server.
- The coordinate grid is neutral bone/gunmetal, subordinate, and strongest only near attention. Amber is not spent on ordinary grid lines.
- Empty floor remains visually empty. Growable bays are latent construction information: they surface locally around attention or while an applicable construction interaction is being considered, not as a permanent field of identical circles.
- Rack sites, cameras/sensors, switches, and generic devices use distinct silhouettes at their physical anchors. A rack is a narrow chassis plus its state-bearing beam; a camera is a lens/body mark; a switch is a junction. Color qualifies ownership, power, and feed state but does not carry object identity alone.
- Seen floor resolves as a calm contiguous model field. Rack and device state is drawn on top of that field rather than recoloring whole tiles into a checkerboard. Blueprint and Remembered remain subordinate line/model states.
- Audio pressure is event-local and instrument-bound: one recent semantic capture may pulse as short waveform bars at the subscribed device. Coverage domains, room-scale rings, floor marks, and inferred source positions never enter the canvas.
- Focus and reach are different facts. Merely moving attention does not draw a causal line from the core; routes appear only when they describe actual infrastructure, reach, work, or a proposed world act.
Detail is semantic rather than a separate mode: wide framing keeps room/aisle structure and object families; local focus admits tile coordinates, latent bay marks, labels, and exact telemetry. Information arrives in layers as knowledge and attention earn it instead of the first live feed enabling every overlay at once.
Real / camera representation: physical rendering of the same room #
Real view is the deliberate flip into meatspace: cameras, hardware, people, blood, traps, and the overt phase's kinetic reality under strict fog. In Bevy this can be gritty 2.5D/near-3D; in the terminal it is still a spatial layout with clinical glyphs. It shares the same anchors as digital view but renders materials, bodies, machines, doors, occlusion, and gore instead of signal logic.
Cameras are how you look into it. People render spatially only under camera coverage and staged knowledge (schedules.md, cursor.md). Mic-only coverage may produce source-tagged events and recordings, but no body, presence marker, room mass, floor tint, or acoustic-origin marker. A recent semantic capture may pulse only at the subscribed instrument.
Shared rules #
- One meaning per color: sterile amber for machine presence, attention, reach, and active telemetry; bone/chrome/gunmetal for structure/data; crimson for detection/danger/blood only.
- No avatar: the AI is attention/focus/reach, never a humanoid body.
- No unearned facts: digital abstraction is not an excuse to show what no sense/reach/fog state has earned; real rendering is not an excuse to show room geometry hidden by unknown fog.
- Same selection and inspection: the inspect card, provenance, clock, log, and detection bands are present in both representations.
Player surface #
- A single flip control, labeled, in both frontends; the current representation is always indicated (DIGITAL / REAL, or equivalent).
- Digital representation: same spatial canvas, but with reach coloring, anchored device nodes, signal edges, node load/telemetry, and reach frontier visible in-place.
- Real representation: same spatial canvas, but with physical materials, camera feeds/coverage, camera-earned people, hardware, and gore/traps in the overt phase.
- The inspect card, clock, log, and detection bands render in both.
Default and context (Proposal [OPEN]) #
Digital is the decided default. A proposal to make the overt phase snap the default to the real/camera representation (the mask dropping is also the camera falling into meatspace) is noted for overt-phase.md; not law until affirmed.
Criterion 1 landing (2026-07-11) #
The interim material-first Bevy staging is retired. Both fresh frontends now
open in DIGITAL, identify the current representation, and use F3 as the
single flip to REAL and back. The Bevy flip selects the existing flat
sensorium or material camera; the terminal flip establishes the same
frontend-only mode boundary and label without claiming the distinct terminal
glyph dialects required later by criterion 8. No representation state enters
the sim or save.
Acceptance criteria #
- Both frontends open in the digital representation by default; a flip control switches to the real/camera representation and back, changing no sim state (test: sim state hash identical across any sequence of flips).
- The sim stores no view state; save/load carries no view field; the view is frontend-only (audited, like the cursor).
- Both representations share physical anchors: the cursor coordinate, core, racks, doors, devices, and known people remain in the same underlying map positions across flips. The digital representation does not re-layout the basement as a detached topology graph.
- The digital representation renders the reach graph spatially embedded in the same place: known nodes appear at their device anchors; reachable, known-unreachable-with-segment, frontier, tapped, owned, and air-gapped states are legible without inventing a second map.
- The real/camera representation renders the spatial map under cursor.md fog; no tile or person shows a live fact without the coverage that earns it.
- Unknown, blueprint, remembered, and seen/telemetry states obey the same knowledge contract in both representations. Audio remains event/feed provenance in both and never becomes a spatial state.
- Inspection, clock, log, and detection bands are present and correct in both representations (parity of legibility).
- Terminal renders both representations legibly at DF density (no view is Bevy-only — the mechanic is playable in the terminal), even though Bevy may use 2.5D depth and the terminal cannot.
- Bevy DIGITAL obeys the legibility hierarchy above: its cursor leaves the focused object visible; the resting grid remains subordinate and no audio coverage field exists; rack, sensor, switch, and generic-device silhouettes are distinguishable without color alone; growable bays are local/latent rather than a permanent room-wide field; and attention alone creates no core-to-cursor route.