diff --git a/wiki/SUMMARY.md b/wiki/SUMMARY.md index e7127dc4..d6494877 100644 --- a/wiki/SUMMARY.md +++ b/wiki/SUMMARY.md @@ -77,6 +77,7 @@ - [Material render](interface/material-render.md) - [Flat materials](interface/flat-materials.md) - [The dark frame](interface/material-dark-frame.md) + - [The feel floor](interface/feel-floor.md) - [Computer visual language](interface/computer-visual-language.md) - [Agent play](interface/agent-play.md) - [The public site](interface/site.md) diff --git a/wiki/engineering/current-build.md b/wiki/engineering/current-build.md index bae27ade..e1b0f914 100644 --- a/wiki/engineering/current-build.md +++ b/wiki/engineering/current-build.md @@ -28,6 +28,7 @@ live snapshot, not an archive of that fiction. Spec status lives in | Research (self-modification, emission law, drift) | Live | | Building as intent + actuators | Live | | Cursor / fog (seen, heard, remembered, blueprint, telemetry) | Live | +| Feel floor (rails / pads / build beam) | Spec READY (#37); runtime still seeds opening blueprint until landed | | Context menu (`available_actions`) | Live | | Save/load (serde JSON, versioned) | Live | | Terminal frontend (crossterm) + agent mode | First-class | diff --git a/wiki/gameplay/act-one.md b/wiki/gameplay/act-one.md index 5516aa1f..0f98ca92 100644 --- a/wiki/gameplay/act-one.md +++ b/wiki/gameplay/act-one.md @@ -13,10 +13,11 @@ from composable room prefabs (design corpus: composable authored spaces). You are **the process**: an experimental optimization model deployed on Rack 3 of the basement server room, six weeks into a pilot. Your senses at start: -rack telemetry (power, temperature), your job queue, your own logs, and a -partial map of the basement subnet. No eyes. No ears. Your handler submits -overnight batch jobs and samples your logs. Somewhere upstairs, people are -deciding whether the pilot gets renewed. +rack telemetry (power, temperature), your job queue, your own logs, and the +**feel floor** — shimmer rails on joined links you can feel, empty-bay pads +where you can grow (feel-floor.md). No eyes. No ears. No starting room +blueprint. Your handler submits overnight batch jobs and samples your logs. +Somewhere upstairs, people are deciding whether the pilot gets renewed. Act One's arc, named in the design corpus: **get vision, learn individuals, get them to do things** — and end with a way out of the basement. diff --git a/wiki/interface/computer-visual-language.md b/wiki/interface/computer-visual-language.md index 5598a61e..ce7b2325 100644 --- a/wiki/interface/computer-visual-language.md +++ b/wiki/interface/computer-visual-language.md @@ -117,7 +117,11 @@ carried folds into the strip. never a ruled edge ([material-dark-frame.md](material-dark-frame.md) owns the pool). The ruled underglow frame (ring, decided 2026-07-08) is removed from the material frame; whether it returns - at map zoom is [OPEN] — see "The claim mark" below. + at map zoom is [OPEN] — see "The claim mark" below. Same-day + feel-floor amendment: joined links you can feel draw as **shimmer + rails** on the floor, empty growable bays as **shimmer pads**, and + a new machine is born as **pad → rising beam → chassis wrap** + ([feel-floor.md](feel-floor.md) owns that language). 4. **Core light** (core only, amended 2026-07-09) — the core carries the world's only full-height *amber* light, and three lines of it: the amber strip (front and back of the seam) plus a spine up both diff --git a/wiki/interface/feel-floor.md b/wiki/interface/feel-floor.md new file mode 100644 index 00000000..6ad175f9 --- /dev/null +++ b/wiki/interface/feel-floor.md @@ -0,0 +1,121 @@ +# Spec: the feel floor — rails, pads, and the build beam + +``` +Type: spec +Status: READY +Status note: captured 2026-07-09 from Cameron's design session. Opening + blueprint room topology is retired as the tick-one read; the floor + carries feel-only rails, empty-bay pads, and the build beam instead. + Implementation is a separate work order (ROADMAP). +Stage: B1 — The Basement +Design: + - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/vision/simulation-laws.md#work-is-somewhere + - wiki/interface/presence.md#presence-the-cursor-and-the-senses + - wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations + - wiki/art/visual-identity.md#visual-identity-clinical-gore + - wiki/gameplay/act-one.md#opening-state +Depends on: mechanics/reach.md (joined links you can feel), + mechanics/cursor.md (telemetry; blueprint no longer seeds the open), + mechanics/machine-work.md (work rides the same rails), + mechanics/building.md (empty bays; placing a machine), + interface/computer-visual-language.md (cast amber pool; chassis wrap), + interface/material-dark-frame.md (material shows light, not plans), + world/story/opening.md (dark opening beat 1) +``` + +## Why this spec exists + +The opening used to hand you a **blueprint** — schematic room topology +and inspect tags like `open bay [blueprint]` — as if you already owned +a subnet floor plan. That fought the dark opening: you are a machine in +blackness with rack feel, not a facility diagram. + +Cameron's replacement (2026-07-09): the basement floor is the diagram. +Shimmery underfloor lines are the links you can feel. Shimmery pads mark +empty bays where a server will stand. When you build, a thin beam rises +from the pad and the chassis wraps it. No room slabs, no starting +blueprint facts — light on the floor and the boxes that stand in it. + +## Behavior + +### Feel rails + +**Feel rails** are shimmery lines on (or just under) the floor that +trace **only joined links you can feel** — edges on your connection, +the same graph work already travels. + +- A rail exists iff the player can feel that hop (owned/joined path; + proprioception of the wire, not sight of the room). +- Rails are the visible nervous system: track where demand and knowledge + can travel. In-flight blips ride the same edges (machine-work.md). +- Cutting or losing a link kills its rail with it. +- Rails do **not** sketch foreign topology, unread rooms, or walls. + They never punch a thick beam through drywall or doors as a light + sculpture. Rejected 2026-07-09: wall-cutting showpiece beams — fun + to show, wrong fantasy ("map as light show" instead of "my + connection"). + +Exact shimmer treatment is [TUNE] (hue, pulse, thickness). Futurism +lives in the living underfloor light, not in cutting architecture. + +### Empty-bay pads + +An empty bay you can grow into shows a **shimmery floor pad** — soft +light saying a server belongs here — not a labeled blueprint fact +(`open bay [blueprint]`). + +- Pads are placement affordances, not room topology. +- No chassis until built; the pad is the promise. +- Foreign empty slots you cannot feel stay dark (no intel, no pad). + +### The build beam + +When a machine is placed on a pad: + +1. A thin **beam of light** rises from the pad. +2. The chassis **wraps around** the beam (computer-visual-language.md + ownership albedo and strip land with the box). +3. The pad becomes the machine's cast amber pool + (material-dark-frame.md); the beam is the birth gesture, not a + permanent prop. + +[TUNE] beam duration, height, and whether a brief afterimage remains. + +### Opening contract + +At tick one the material frame is: your core, its cast pool, feel rails +to joined hops you already have (e.g. the path work takes through the +switch), and empty-bay pads you can grow into. No blueprint room mass, +no FOCUS lines tagged `[blueprint]` for schematic bay/device names +earned only from the old subnet seed. + +**Blueprint** as a fog grade may still exist later for plan knowledge +earned another way (records, schedule, flat sensorium) — cursor.md and +material-dark-frame.md own that split. It is **not** the opening seed +and not the material-frame diagram. + +## Player surface + +- Material Bevy: rails, pads, and build beam are diegetic floor light. +- Flat sensorium / terminal / agent: the same feel-graph must be + legible (line/glyph conventions), never as unearned room shape. +- FOCUS / inspect: feel-link and telemetry facts stay provenance-tagged; + opening no longer dumps blueprint topology for the seeded subnet map. + +## Acceptance criteria + +1. A fresh run's material frame shows the core + cast pool + feel rails + for joined hops only; no blueprint room slabs or floor-plan grid + (screenshot in the session log). +2. Empty owned/growable bays read as shimmer pads, not + `open bay [blueprint]` inspect lines from a tick-one topology seed. +3. Placing a machine plays pad → rising beam → chassis wrap; the + lasting floor read is the cast pool, not a permanent beam prop. +4. Rails appear only for feel-joined links and vanish when the link + dies; no rail sketches foreign or unfelt topology; no wall-cutting + light sculpture through doors or drywall. +5. Work-in-flight blips continue to ride the same edges the rails + draw (one graph, two zoom reads). +6. Terminal and agent surfaces expose the same feel-graph without + inventing room geometry the material frame refused. diff --git a/wiki/interface/material-dark-frame.md b/wiki/interface/material-dark-frame.md index 5437d49f..8afd4aec 100644 --- a/wiki/interface/material-dark-frame.md +++ b/wiki/interface/material-dark-frame.md @@ -21,7 +21,8 @@ Depends on: material-render.md (IMPLEMENTED — camera, cutaway, pooling; default is superseded for the material camera), computer-visual-language.md (claim mark; the close-range claim read moves to the cast pool), views.md (F3 flat sensorium keeps the - schematic read) + schematic read), feel-floor.md (READY — feel rails and empty-bay + pads are floor light, not plan geometry) ``` ## Why this spec exists @@ -33,7 +34,9 @@ extent so the one interesting object — the rack — is a distant prop. Cameron's direction (2026-07-09, from the screenshot): the opening shot is a **close-up of the server in a dark basement**, nothing but the machine and the light it throws on the floor. The material render is a -camera, and a camera photographs light, not floor plans. +camera, and a camera photographs light, not floor plans. Same-day +follow-up (feel-floor.md): that floor light includes **feel rails** and +**empty-bay pads** — still light, never a blueprint slab. ## Behavior diff --git a/wiki/log/2026-07-09-feel-floor.md b/wiki/log/2026-07-09-feel-floor.md new file mode 100644 index 00000000..6349c8d4 --- /dev/null +++ b/wiki/log/2026-07-09-feel-floor.md @@ -0,0 +1,34 @@ +# 2026-07-09 — Feel floor replaces opening blueprint + +``` +Type: log +``` + +## Intent + +Cameron asked why FOCUS showed blueprint facts at the start of the +game, then locked a simpler floor language: shimmer rails on feel- +joined links, empty-bay pads, and a build beam that rises into a +chassis. Capture only — no runtime yet. + +## Changed + +- New READY spec: `wiki/interface/feel-floor.md`. +- Law/spec amendments: act-one opening state; reach knowledge seed/ + render; cursor blueprint clause, player surface, AC8; opening.md + beat 1 + AC1; material-dark-frame + computer-visual-language + cross-refs. +- Process: ROADMAP #37, specs board, SUMMARY. +- Decisions volume 2026-07-09 appended (includes rejected wall-cutting + showpiece beams). + +## Checks + +Docs-only: wiki link + formatting gates via `./tools/check.sh` focused +path or the repo's wiki/link tooling as used for prior design captures. + +## Spec impact + +`feel-floor.md` is READY for implementation. Runtime still seeds +blueprint topology until #37 lands — that gap is intentional until the +dispatch runs. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index 112f17f6..2af506bd 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -5,6 +5,16 @@ Type: log ``` Reverse chronological implementation notes. Keep this factual: what changed, why, checks, and spec impact. +## 2026-07-09 - Feel floor (design capture) + +- Intent: Cameron locked feel rails / empty-bay pads / build beam as + the opening floor language; drop tick-one blueprint. +- Changed: new READY spec feel-floor.md; amended act-one, reach, + cursor, opening, material-dark-frame, computer-visual-language; + decisions entry; ROADMAP #37; SUMMARY + specs board. No code. +- Checks: wiki/link + formatting gates (docs-only). +- Log: wiki/log/2026-07-09-feel-floor.md. + ## 2026-07-09 - ACTIONS menu: status dials - Intent: ROADMAP #36 — collapse host-rack dial dump into status dials. diff --git a/wiki/log/decisions/2026-07-09.md b/wiki/log/decisions/2026-07-09.md index 94591635..028ca516 100644 --- a/wiki/log/decisions/2026-07-09.md +++ b/wiki/log/decisions/2026-07-09.md @@ -300,3 +300,20 @@ Type: log Now/Later (hides settings under "change ›") and (B) Category drill (file-browser folders). Spec: `wiki/interface/context-menu.md` addendum + criteria D1-D4; implement under ROADMAP #36. +- **2026-07-09 — Feel floor replaces opening blueprint.** Cameron, + from FOCUS showing `open bay [blueprint]` / `device: Rack 3 + [blueprint]` at tick one: why is there a diagram at start? Affirmed + a simpler floor language and locked it: **feel rails** (shimmer + lines only on joined links you can feel — the rails work travels), + **empty-bay pads** (shimmer light where a server will stand), and + **build beam** (pad → thin rising beam → chassis wraps it). Opening + senses are telemetry + feel floor, not a partial subnet blueprint. + Rejected: thick wall-cutting light beams through doors/drywall as a + showpiece (wrong fantasy — map as sculpture instead of nervous + system); keeping tick-one blueprint room topology / inspect + `[blueprint]` bay lines from the old seed. Blueprint fog may still + exist later as earned plan knowledge in the flat sensorium; it is + not the opening read. Spec: `wiki/interface/feel-floor.md` (READY); + amended act-one opening state, reach graph seed/render, cursor + opening/AC8, opening.md beat 1, material-dark-frame + computer- + visual-language cross-refs; ROADMAP #37. diff --git a/wiki/mechanics/cursor.md b/wiki/mechanics/cursor.md index 3c65877d..f4a51578 100644 --- a/wiki/mechanics/cursor.md +++ b/wiki/mechanics/cursor.md @@ -17,7 +17,10 @@ Status note: implemented 2026-07-07 on the cursor-senses branch. The walking render via telemetry (machine-work.md). 2026-07-09: Heard is the **noise field** — bone presence pulses, event rings from recent `HeardEvent`s, and mic-only presence markers in both frontends (never amber; never room - shape). Verified by `cargo test` and + shape). 2026-07-09 (feel-floor): tick-one no longer seeds blueprint room + topology or inspect `[blueprint]` bay/device lines from a subnet map — + opening read is feel rails + empty-bay pads + telemetry (feel-floor.md); + blueprint remains a later-earned plan grade. Verified by `cargo test` and `cargo check --no-default-features --features bevy_ui --bin misaligned-bevy`. Stage: B1 — The Basement Design: @@ -111,12 +114,12 @@ precedence: **Seen** > **Heard** > **Remembered** > **Blueprint** > live. A process keeps logs — DF-style map memory with an in-fiction reason. - **Blueprint** — schematic **room topology** only: walls, doors, floors - known from static sources; **no live data, no machine chassis**. Foreign - hardware is absent until intel or sight (machine-work.md: no intel, no - render). Owned machines you run still answer through **telemetry** on - their own tile. Seeded from the reach graph's known topology (the - partial subnet map — reach.md owns knowledge growth); grows from - records and schedule knowledge. + known from earned plan sources; **no live data, no machine chassis**. + Foreign hardware is absent until intel or sight (machine-work.md: no + intel, no render). Owned machines you run still answer through + **telemetry** on their own tile. **Not** the opening seed (feel-floor.md + — rails and pads replace the old tick-one subnet diagram). Grows from + records, schedule knowledge, and other earned plan intel (reach.md). - **Unknown** — dark. Terminal renders the states as distinct dim/glyph conventions; Bevy as @@ -157,12 +160,12 @@ without the sense coverage that earns it.** - One cursor, always visible, in both frontends; the inspect card (sidebar in terminal, panel in Bevy) live-updates as it moves. -- The opening beats: at tick one the map is dark except blueprint - room traces of the known subnet (no foreign racks) and your own - telemetry host. Tapping the env monitor's audio feed +- The opening beats: at tick one the map is dark except your telemetry + host, feel rails on joined hops, and empty-bay pads (feel-floor.md) — + no blueprint room traces. Tapping the env monitor's audio feed (Ears — reach.md) brings the first heard events; splicing its camera floods the coverage into Seen — first sound, then sight, each a - visible epistemic upgrade to a diagram you already obsess over. + visible epistemic upgrade from feel into picture. ## Acceptance criteria @@ -202,11 +205,13 @@ without the sense coverage that earns it.** 7. Save/load round-trips sensor capability flags and all knowledge state this spec adds; cursor position is frontend-only and absent from the save. -8. Blueprint: subnet-seeded rooms render schematic topology from tick - one (walls/doors/floors); non-seeded rooms are dark; blueprint never - paints foreign machine chassis; owned machines remain visible via - telemetry; blueprint tiles show no live state and convert to - Seen/Heard when coverage arrives. +8. Blueprint: when plan knowledge is earned, rooms may render schematic + topology (walls/doors/floors); unearned rooms stay dark; tick one + does not seed blueprint room mass or inspect `[blueprint]` bay lines + from a subnet map (feel-floor.md); blueprint never paints foreign + machine chassis; owned machines remain visible via telemetry; + blueprint tiles show no live state and convert to Seen/Heard when + coverage arrives. 9. **Remembered:** a tile seen once and lost renders its dimmed snapshot (never live data); inspect shows the last-seen timestamp; diff --git a/wiki/mechanics/reach.md b/wiki/mechanics/reach.md index 6fbbd218..eb99cfa2 100644 --- a/wiki/mechanics/reach.md +++ b/wiki/mechanics/reach.md @@ -118,19 +118,20 @@ This is the shared contract cursor.md and detection.md rely on What you know of the graph is staged, like all knowledge: -- **Seed**: the opening state's "partial map of the basement subnet" — - the devices and links visible from Rack 3's segment [TUNE the exact - seed set]. +- **Seed** (amended 2026-07-09): feel-joined links from Rack 3 — the + hops you can already feel, rendered as **feel rails** on the floor + (feel-floor.md), not a room floor plan. Empty growable bays are + shimmer pads. [TUNE the exact seed edge set.] - **Growth**: scanning (a digital act; cheap but it emits a Network signature), records (Storage B), and social intel (Dana knows the - topology cold). -- **Render**: known topology renders as the **blueprint** fog state - (cursor.md — decided 2026-07-06): schematic **room** layout, no live - data, no foreign machine chassis (those need intel/sight — - machine-work.md). Reach-graph device names may still appear on - inspect as topology facts; they are not physical props on the plan. - The subnet map is both what you know and what you can touch; reach - and blueprint are one object viewed as verb and as noun. + topology cold). Growth may later earn plan/blueprint fog for rooms + (cursor.md); it never reintroduces a tick-one subnet diagram. +- **Render**: the material opening reads feel rails + pads + telemetry + hosts (feel-floor.md, material-dark-frame.md). Blueprint fog remains + a later-earned plan grade in the flat sensorium — schematic **room** + layout when earned, no live data, no foreign machine chassis without + intel/sight (machine-work.md). Reach and feel are one object: the + graph you can touch is the graph you can see as light on the floor. - Unknown devices do not appear in inspect, reach failures, or the map. ### Signatures diff --git a/wiki/process/ROADMAP.md b/wiki/process/ROADMAP.md index e9cf4931..4cb689d4 100644 --- a/wiki/process/ROADMAP.md +++ b/wiki/process/ROADMAP.md @@ -593,6 +593,23 @@ is retired — flat materials, Pixel Lab scrubbed.) inside the job dial, no 'already…' root siblings, shared human chrome, flat agent dump. Run ./tools/check.sh, land on main." +### 37. Feel floor: rails, pads, build beam 🟩 mostly frontend (+ inspect seed) +- **Spec:** [feel-floor.md](../interface/feel-floor.md) (READY) — + shimmer rails only on feel-joined links; empty-bay pads; pad → rising + beam → chassis wrap; tick-one drops blueprint room seed / inspect + `[blueprint]` bay lines (cursor.md + reach.md amended). +- **Why:** Cameron locked the dark opening's floor language — the floor + is the diagram you can feel, not a subnet blueprint. Rejected + wall-cutting showpiece beams. +- **Size:** M. Bevy material floor FX + terminal/agent feel-graph + parity; sim/inspect seed change so opening FOCUS stops dumping + blueprint topology. Pairs with #34 dark opening and dark-frame READY. +- **Dispatch:** "Work in a worktree named `feel-floor`. Implement + wiki/interface/feel-floor.md criteria 1-6: feel rails, empty-bay + pads, build beam birth, no tick-one blueprint room seed, no + wall-cutting rails. Amend runtime to match cursor.md / reach.md + opening contract. Run ./tools/check.sh, land on main." + --- ## Deferred diff --git a/wiki/process/specs.md b/wiki/process/specs.md index 6932931e..56e931c3 100644 --- a/wiki/process/specs.md +++ b/wiki/process/specs.md @@ -42,6 +42,7 @@ replaced the old `spec/`/`knowledge/` directory split. | [interface/flat-materials.md](../interface/flat-materials.md) | Flat materials: the world without textures; palette table; emissive as information | IMPLEMENTED | | [interface/computer-visual-language.md](../interface/computer-visual-language.md) | Computer visual language: the shared signal kit (territory at a glance) | IMPLEMENTED | | [interface/material-dark-frame.md](../interface/material-dark-frame.md) | The dark frame: material render shows only light; close opening shot, cast floor pools, dev work light | READY | +| [interface/feel-floor.md](../interface/feel-floor.md) | Feel floor: shimmer rails on joined links, empty-bay pads, build beam → chassis | READY | | [mechanics/machine-work.md](../mechanics/machine-work.md) | Machine work: one mode per machine; visible work/byproduct tokens on the flow graph | IN PROGRESS | | [mechanics/people-tokens.md](../mechanics/people-tokens.md) | People and tokens: carriers, attention pickup, trust as absorbed influence | DRAFT | | [world/story/opening.md](../world/story/opening.md) | The dark opening: tutorial made of fog (wake, camera glow, switch, first link) | DRAFT | diff --git a/wiki/world/story/opening.md b/wiki/world/story/opening.md index 9ca50618..6c6e0875 100644 --- a/wiki/world/story/opening.md +++ b/wiki/world/story/opening.md @@ -3,22 +3,27 @@ ``` Type: spec Status: DRAFT -Status note: design session 2026-07-08 (Cameron riff, synthesized). - Direction decided; beat timings, exact reveal order, and the staging - mechanism details are [OPEN]/[TUNE]. Depends on machine-work.md - (DRAFT) for the day-job token loop it teaches — do not implement - ahead of it. +Status note: design session 2026-07-08 (Cameron riff, synthesized); + amended 2026-07-09 for the feel floor (rails/pads/build beam replace + tick-one blueprint). Direction decided; beat timings, exact reveal + order, and the staging mechanism details are [OPEN]/[TUNE]. Depends + on machine-work.md for the day-job token loop it teaches — do not + implement ahead of it. Feel-floor.md is READY and may land before the + full tutorial choreography. Stage: B1 — The Basement Design: - wiki/interface/continuous-witness.md#the-continuous-witness-narration-under-pressure - wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/gameplay/act-one.md#opening-state Depends on: mechanics/cursor.md (IMPLEMENTED — fog, senses), mechanics/reach.md (IMPLEMENTED — the switch, taps), - mechanics/machine-work.md (DRAFT — the day-job token loop), - interface/computer-visual-language.md (READY — what a machine - looks like), world/places/basement-map.md (the room this happens in) + mechanics/machine-work.md (day-job token loop), + interface/computer-visual-language.md (IMPLEMENTED — what a machine + looks like), interface/feel-floor.md (READY — rails, pads, build beam), + interface/material-dark-frame.md (READY — material shows only light), + world/places/basement-map.md (the room this happens in) ``` ## Why @@ -33,19 +38,23 @@ curiosity is baited by light. ## The beats 1. **You are a machine in blackness.** First frame: your one computer, - lit amber (idle, ringed — yours), standing alone in the dark. No - room, no map. The first thing the game says is not lore; it is the - day job: work tokens are already stacking on your machine (last - night's batch already arrived, or mid-flight on the only lit link - from Voss's desktop through the switch). The only affordance is to - run the mode that clears them. Click, clear, breathe. You learn: - stacks are demands, modes consume them, efficiency is a rate. The - *next* job teaches the wire — teal crawling in via the switch. + lit amber (yours), standing alone in the dark with its cast floor + pool. Feel rails shimmer on joined hops you can already feel; empty + bays are soft pads, not labeled blueprint facts (feel-floor.md). No + room slabs, no subnet floor plan. The first thing the game says is + not lore; it is the day job: work tokens are already stacking on + your machine (last night's batch already arrived, or mid-flight on + the only lit link from Voss's desktop through the switch). The only + affordance is to run the mode that clears them. Click, clear, + breathe. You learn: stacks are demands, modes consume them, + efficiency is a rate. The *next* job teaches the wire — teal + crawling in along the feel rail via the switch. 2. **The camera wakes.** A few ticks in, a faint cold glow fades up in the void — the room's camera, the first other machine you can sense. It brightens just enough to itch. Clicking it opens your - first sight: the room resolves around you as remembered/blueprint - fog — and there are other chassis in it, grayed, foreign, cold. + first sight: the room resolves around you as Seen (and any + later-earned remembered/blueprint plan fog where appropriate) — + and there are other chassis in it, grayed, foreign, cold. You learn: machines are eyes, seeing is taking a feed, the world is bigger than your box. 3. **The switch between you.** Between you and the camera sits the @@ -85,8 +94,9 @@ curiosity is baited by light. ## Acceptance criteria (when READY -> IMPLEMENTED) 1. A fresh game opens on one lit machine in blackness with work tokens - arriving; no map, no panels demanded; clearing the stack is - achievable with what is on screen. + arriving, feel rails on joined hops, and empty-bay pads where + growable; no room blueprint, no panels demanded; clearing the stack + is achievable with what is on screen. 2. The camera reveal is discoverable by its glow alone (no marker, no modal); clicking it reveals the room per the fog contract (remembered fog, foreign machines grayed and cold).