A video game where you play as a misaligned AI, deceiving and building power. An experiment in spec-driven development.
7.4 kB
Markdown
at commit 0975caed

Spec: views — same-frame digital and real representations #

Type: spec
Status: READY
Status note: this is a frontend-projection spec, not a new sim system.
  Both representations render the SAME sim state, the SAME physical anchors,
  and the SAME fog two ways. Digital is home, but it is not a detached
  topology map: it is the AI's learned/signal representation of the same
  place the real/camera view renders materially. The sim gains no view state.
  Terminal parity is required, not optional.
Stage: B1 — The Basement
Constitution: "Two views of one world: digital-native and physical",
  "Presence: the cursor and the senses" (one fog, both views),
  "The terminal is a first-class frontend" (parity of legibility),
  "Justification and legibility" (neither view shows an unearned fact),
  "Visual identity: clinical gore", "Self-similar scale" (reach remains the
  action graph, rendered in-place as a layer of the same world)
Depends on: 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, heard is presence/noise only, unknown is sensor darkness.

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 only per sensor coverage and staged knowledge (schedules.md, cursor.md): a presence marker under mic-only coverage, a full body under camera coverage, nothing where unearned.

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, people/presence markers, 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.

Acceptance criteria #

  1. 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).
  2. The sim stores no view state; save/load carries no view field; the view is frontend-only (audited, like the cursor).
  3. 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.
  4. 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.
  5. 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.
  6. Unknown, blueprint, remembered, heard, and seen/telemetry states obey the same knowledge contract in both representations, using each view's visual language.
  7. Inspection, clock, log, and detection bands are present and correct in both representations (parity of legibility).
  8. 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.