From cb226ba9ab2f978466a8ebaf208237e38b119c0b Mon Sep 17 00:00:00 2001 From: Cameron Date: Thu, 9 Jul 2026 23:21:57 -0700 Subject: [PATCH] Lock beam-first opening: light, then sound, then form. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pre-tap material presence is a beam only; Heard adds faint rough mass; Seen shows the chassis. Retires telemetry-painted chassis at tick one. Defense: Implements the beam → Heard mass → Seen form ladder in wiki/interface/material-dark-frame.md, wiki/mechanics/cursor.md, wiki/world/story/opening.md, and wiki/gameplay/act-one.md#opening-state (decided 2026-07-09). Co-authored-by: Cursor --- wiki/gameplay/act-one.md | 14 ++- wiki/interface/bevy-digital-real-canvas.md | 10 +- wiki/interface/bevy-visual-floor.md | 17 +-- wiki/interface/computer-visual-language.md | 22 ++-- wiki/interface/feel-floor.md | 44 ++++--- wiki/interface/flat-materials.md | 17 +-- wiki/interface/material-dark-frame.md | 131 +++++++++++++-------- wiki/interface/presence.md | 24 ++-- wiki/interface/views.md | 3 +- wiki/log/2026-07-09-beam-first-opening.md | 32 +++++ wiki/log/DEVLOG.md | 11 ++ wiki/log/decisions/2026-07-09.md | 17 +++ wiki/mechanics/cursor.md | 79 ++++++++----- wiki/process/ROADMAP.md | 33 +++++- wiki/process/specs.md | 7 +- wiki/world/story/opening.md | 118 +++++++++++-------- 16 files changed, 375 insertions(+), 204 deletions(-) create mode 100644 wiki/log/2026-07-09-beam-first-opening.md diff --git a/wiki/gameplay/act-one.md b/wiki/gameplay/act-one.md index 0f98ca92..d2544647 100644 --- a/wiki/gameplay/act-one.md +++ b/wiki/gameplay/act-one.md @@ -13,11 +13,15 @@ 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 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. +rack telemetry in panels (power, temperature, job queue, your own logs), and +a **presence beam** where you are — you are not yet aware of your own server +as a pictured chassis (material-dark-frame.md). The **feel floor** may +shimmer rails on joined links and empty-bay pads where you can grow +(feel-floor.md), without painting a box or a room plan. No eyes. No ears. +No starting room blueprint. Sound will give faint rough mass; light will +show the whole thing. 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/bevy-digital-real-canvas.md b/wiki/interface/bevy-digital-real-canvas.md index 95500056..a15630c4 100644 --- a/wiki/interface/bevy-digital-real-canvas.md +++ b/wiki/interface/bevy-digital-real-canvas.md @@ -167,10 +167,12 @@ Fog states keep the cursor.md epistemic contract in both dialects: - **Remembered:** stale silhouettes/model state, dimmed and timestamped where useful. - **Heard:** the noise field — bone presence pulses on covered floor, event - rings from recent heard captures, and a presence marker for mic-only people. - Never amber (amber is machine footprint); never visual shape of the room. -- **Seen / telemetry:** richest treatment the active sense earns: camera/material - detail in real, live telemetry/model detail in digital. + rings from recent heard captures, and a presence marker for mic-only people; + in material, faint rough geometry in near-black. Never amber (amber is + machine footprint under Seen); never a lit room picture. +- **Seen / telemetry:** Seen is the richest treatment the active sense earns; + telemetry stays panel/feel proprioception and does not paint a material + chassis before Seen (material-dark-frame.md). ## Implementation shape (proposed) diff --git a/wiki/interface/bevy-visual-floor.md b/wiki/interface/bevy-visual-floor.md index 7a1fdbc3..52c459e2 100644 --- a/wiki/interface/bevy-visual-floor.md +++ b/wiki/interface/bevy-visual-floor.md @@ -98,13 +98,16 @@ Fog states are visually distinct while obeying the legibility law: - **Blueprint / remembered:** schematic gunmetal/chrome silhouettes; enough geometry to orient, explicitly not live. - **Heard:** the noise field — bone presence/noise pulses and event rings; - mic-only people as presence markers. No visual detail a microphone did not - earn; never amber (machine footprint stays amber). -- **Seen / telemetry:** the richest *legible* treatment the current assets - support. In the default sensorium this means quiet flat clinical blocks plus - overlays, not noisy generated swatches. The pixel-art/material textures are - allowed in the F3 material preview or future cohesive art passes, but they - are not the default if they compete with fog, devices, and cursor semantics. + mic-only people as presence markers; in material, faint rough geometry + in near-black (cursor.md). No lit room picture a microphone did not + earn; never amber (machine footprint stays amber under Seen). +- **Seen / telemetry:** Seen is the richest *legible* treatment the current + assets support; telemetry is panel proprioception and does not paint a + material chassis before Seen (material-dark-frame.md). In the default + sensorium this means quiet flat clinical blocks plus overlays, not noisy + generated swatches. The pixel-art/material textures are allowed in the + F3 material preview or future cohesive art passes, but they are not the + default if they compete with fog, devices, and cursor semantics. Within earned visibility, hierarchy is fixed: diff --git a/wiki/interface/computer-visual-language.md b/wiki/interface/computer-visual-language.md index b78ccefd..eabe6cd9 100644 --- a/wiki/interface/computer-visual-language.md +++ b/wiki/interface/computer-visual-language.md @@ -18,10 +18,13 @@ Status note: implemented 2026-07-09 (ROADMAP #32) after the same-day lit element — the power dot, presence LED ladder, and segmented activity bar were removed and their axes folded into the strip (lit-ness = power/liveness; brighter fill height = queue depth). - Intel tiers per criterion 2b: owned telemetry / networked = full - detail; known or remembered = undetailed ghost shell; otherwise - absent — the fog audit now asserts a visible chassis has sight or - intel and that exactly one core chassis exists. The material law is + Intel tiers per criterion 2b: networked = full detail; known or + remembered = undetailed ghost shell; otherwise absent. Owned hardware + reports via telemetry in panels; material **chassis form** waits on + Seen (beam-first 2026-07-09 — pre-sight host is a presence beam, + material-dark-frame.md). The fog audit asserts a visible chassis has + sight (or earned Heard mass is not a chassis) and that exactly one + core presence exists. The material law is pinned by unit tests in rack.rs (owned = bone albedo; unowned = dark and never a warm pixel; warm strip = core only; the load fill brightens but never recolors). Terminal parity: one line per machine (M{id}, @@ -37,14 +40,16 @@ Status note: implemented 2026-07-09 (ROADMAP #32) after the same-day core, patch panel, breaker, and HVAC remain flat billboards; cameras keep the security-housing billboard; a staged in-game fleet shot with all four modes live waits until multiple machines exist in - normal play. [TUNE] axes (emissive multipliers, dash counts, white + normal play; beam-first opening (no chassis at pre-tap) waits on the + dark-frame / opening implement work order. [TUNE] axes (emissive multipliers, dash counts, white point) remain open to taste passes. The fourth mode strip is Operations, replacing Social (decided 2026-07-09): the chassis library and tester say operations; the sim's MachineMode enum still says Social pending its own rename work order — the render maps it. 2026-07-09 dark-frame amendment (material-dark-frame.md): the ruled claim ring leaves the material frame; the close-range claim read is - the machine's cast amber pool, and the map-zoom mark is [OPEN]. + the machine's cast amber pool once Seen form exists, and the map-zoom + mark is [OPEN]. Stage: B1 — The Basement Design: - wiki/art/visual-identity.md#visual-identity-clinical-gore @@ -165,8 +170,9 @@ Amended 2026-07-09 (Cameron, screenshot feedback captured in [material-dark-frame.md](material-dark-frame.md)): in the material render the ruled frame reads as UI painted on a physical floor, and it is gone — the close-range claim read is the white chassis plus the -soft amber pool its own light casts. With ownership also in the -chassis albedo, the only job left to a drawn mark is the map-zoom / +soft amber pool its own light casts **once Seen form exists**; before +that the host is a presence beam. With ownership also in the chassis +albedo, the only job left to a drawn mark is the map-zoom / mixed-tile read, and that is [OPEN]: brightened pool alone, ring beyond a zoom threshold, or map-zoom territory as a flat-sensorium job. The dark-frame spec proposes pool-alone with ring-at-distance as diff --git a/wiki/interface/feel-floor.md b/wiki/interface/feel-floor.md index 2bcf9116..df6ab3ad 100644 --- a/wiki/interface/feel-floor.md +++ b/wiki/interface/feel-floor.md @@ -8,7 +8,10 @@ Status note: implemented 2026-07-09 (ROADMAP #37). Tick-one no longer `growable_bays` / `FactSource::Feel` drive inspect + both frontends; Bevy material draws shimmer rails/pads and a build-beam birth gesture; terminal/agent paint feel midpoints and empty-bay `o` without room - shape. Verified by `cargo test --lib` and + shape. Same-day beam-first amendment: the first held material frame is + the host **presence beam** only (material-dark-frame.md) — rails/pads + are feel-light and must not paint a chassis or room plan before + sound/sight earn mass/form (#38). Verified by `cargo test --lib` and `cargo check --no-default-features --features bevy_ui --bin misaligned-bevy`. Stage: B1 — The Basement Design: @@ -19,12 +22,13 @@ Design: - 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) + mechanics/cursor.md (telemetry; blueprint no longer seeds the open; + Heard mass / Seen form), 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 + when form is earned), interface/material-dark-frame.md (presence beam; + material shows light, not plans), world/story/opening.md (dark opening + beat 1) ``` ## Why this spec exists @@ -77,8 +81,10 @@ light saying a server belongs here — not a labeled blueprint fact 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). +2. The chassis **wraps around** the beam once form is earned + (computer-visual-language.md ownership albedo and strip land with + the box; material-dark-frame.md — same light family as the opening + presence beam). 3. The pad becomes the machine's cast amber pool (material-dark-frame.md); the beam is the birth gesture, not a permanent prop. @@ -87,11 +93,14 @@ When a machine is placed on a pad: ### 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. +At the first held material frame (post-wake, pre-tap) the read is the +host **presence beam** and its softest wash only — you are not aware of +your server as a chassis (material-dark-frame.md). Feel rails to joined +hops and empty-bay pads may appear as subordinate feel-light once there +is something to feel (e.g. the wire the next job teaches); they never +outline a room or promote a pictured box. 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 @@ -108,9 +117,10 @@ and not the material-frame diagram. ## 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). +1. A fresh run's first held material frame shows the host presence beam + (and softest wash) without a chassis; feel rails, if present, are + joined-hop feel-light 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 diff --git a/wiki/interface/flat-materials.md b/wiki/interface/flat-materials.md index 02fb79ed..a5b8cd53 100644 --- a/wiki/interface/flat-materials.md +++ b/wiki/interface/flat-materials.md @@ -58,14 +58,17 @@ lighting, palette, silhouette, and shader-level functional detail. areas (flat sensorium only since the 2026-07-09 dark-frame amendment), scan flicker on live feeds, emissive seams on powered machines, and the Heard **noise field** (bone presence pulses / event - rings — informational, never decorative texture). No decorative noise. + rings — informational, never decorative texture) plus material Heard + mass when coverage earns it. - **Fog contract unchanged and restated:** unknown = absent, heard = - noise-field presence (no room shape), remembered/blueprint = unlit - flat, seen = lit flat. Lighting remains the epistemic signal for - sight; hearing speaks in bone pulses instead. (Amended 2026-07-09: - the unlit-blueprint treatment is the flat sensorium's; in the - material render blueprint mass is absent — - [material-dark-frame.md](material-dark-frame.md) owns that clause.) + noise-field presence + faint rough mass (no lit room picture), + remembered/blueprint = unlit flat, seen = lit flat. Lighting remains + the epistemic signal for sight; hearing speaks in bone pulses and + near-black mass instead. (Amended 2026-07-09: the unlit-blueprint + treatment is the flat sensorium's; in the material render blueprint + mass is absent — [material-dark-frame.md](material-dark-frame.md) + owns that clause. Beam-first same day: telemetry alone does not paint + a material chassis.) - **People:** flat silhouettes under camera coverage (the current procedural billboards are already the right shape); under mic-only coverage, a bone presence marker — never the silhouette. Identity diff --git a/wiki/interface/material-dark-frame.md b/wiki/interface/material-dark-frame.md index 8afd4aec..efc1d4ac 100644 --- a/wiki/interface/material-dark-frame.md +++ b/wiki/interface/material-dark-frame.md @@ -6,23 +6,30 @@ Status: READY Status note: captured 2026-07-09 from Cameron's screenshot feedback on the material opening frame ("zoomed in real close to the server, no squares/room definition, lighting togglable for dev work, soft glow - on the floor from the servers"). Implementation is a separate work - order. The map-zoom claim mark is the one [OPEN] left here. + on the floor from the servers"). Same-day amendment (beam-first): + before any tap the held material frame is only a presence beam where + the host is — not a chassis; Heard adds faint rough geometry in + near-black; Seen shows the whole lit form. Implementation is a + separate work order (ROADMAP). The map-zoom claim mark remains + [OPEN]. Stage: B1 — The Basement Design: - wiki/art/visual-identity.md#visual-identity-clinical-gore - wiki/vision/simulation-laws.md#justification-and-legibility - wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations + - wiki/gameplay/act-one.md#opening-state Depends on: material-render.md (IMPLEMENTED — camera, cutaway, pooling; this spec amends its material-mode blueprint clause and default framing), flat-materials.md (IMPLEMENTED — palette table, emissive as information), bevy-visual-floor.md (framing floor; the deliberate- frame and sensor-darkness spirit binds, the fit-to-known-content 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), feel-floor.md (READY — feel rails and empty-bay - pads are floor light, not plan geometry) + computer-visual-language.md (claim mark; chassis form is earned by + sight; close-range claim read is the cast pool once the box exists), + views.md (F3 flat sensorium keeps the schematic read), feel-floor.md + (READY — feel rails/pads and the build beam; opening presence beam + is the same light family), mechanics/cursor.md (Heard mass / Seen + form) ``` ## Why this spec exists @@ -32,17 +39,37 @@ blueprint slabs float in the void, a ruled amber double square sits under the core like painted UI, and the camera fits the whole known 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. Same-day -follow-up (feel-floor.md): that floor light includes **feel rails** and -**empty-bay pads** — still light, never a blueprint slab. +is a **close-up in a dark basement**, nothing but light — not a floor +plan. Same-day follow-up (feel-floor.md): floor light may include +**feel rails** and **empty-bay pads** — still light, never a blueprint +slab. Same-day beam-first amendment: before you tap anything you are +**not aware of your own server as a box** — only that there is a light +where it is. Sound then gives faint rough geometry; sight shows the +whole thing. ## Behavior +### The reveal ladder (material) + +Material form is earned in three steps. This is the opening contract and +the ongoing material read for mass you have not yet seen: + +1. **Presence beam** — before ears or eyes, the host is a **beam of + light** (same light family as feel-floor.md's build beam) and the + softest floor wash that beam throws. No bone chassis, no strip, no + ruled claim ring, no room mass. Telemetry still answers in panels + (power, load, job); it does **not** paint a pictured server. +2. **Heard mass** — after a hearing feed covers a place, the material + frame may show **very faint rough geometry in faded near-black** — + mass suggested, not a room picture — plus the noise field + (cursor.md). Still no lit chassis language. +3. **Seen form** — sight shows the whole thing: lit geometry as far as + scene light carries, including chassis albedo/strip/pool per + computer-visual-language.md. + ### Light is the only revealer -In the material render, geometry draws only where sight earns it and +In the material render, geometry draws only where a sense earns it and light reaches it: - **Unknown** stays absent (unchanged). @@ -53,11 +80,12 @@ light reaches it: did not see. This amends the fog contract's material-mode clause (was: unlit-but-visible); the flat sensorium keeps unlit blueprint exactly as it is. -- **Heard** keeps the noise field (bone pulses, never shape) — - unchanged. +- **Heard** draws faint rough mass in near-black plus the noise field — + never a lit room picture, never amber machine language. - **Seen** geometry draws lit, and reads only as far as scene light - actually carries. Owned chassis legitimized by telemetry keep - rendering (they are their own light). + actually carries. Owned hardware you run still reports through + telemetry in panels; its **pictured chassis** waits on Seen (or the + presence beam / Heard mass grades above until then). The fog audit follows the amendment: in material mode it asserts blueprint mass is absent; flat mode keeps the unlit-blueprint assert. @@ -87,15 +115,13 @@ it off restores the dark rig exactly. ### The soft pool — machine light on the floor -Every powered owned machine casts a **soft amber pool on the floor -around it** — a gradient falloff from the chassis foot into darkness, -never a ruled edge. The core's linear fixture (computer-visual- -language.md matte calibration) already shapes this pool; this spec -makes the pool the *point* of the floor treatment: at close zoom, the -claim read is white chassis + the amber light it throws. The ruled -underglow frame (the claim ring's double square) is removed from the -material frame — it is the most prominent "square" in the current -opening shot and it reads as UI painted on a physical floor. +Once a machine's **Seen form** (or a build that wraps a beam into a +chassis) exists, every powered owned machine casts a **soft amber pool +on the floor around it** — a gradient falloff from the chassis foot +into darkness, never a ruled edge. Before that, the only floor light at +the host is the presence beam's wash. The ruled underglow frame (the +claim ring's double square) stays out of the material frame — it reads +as UI painted on a physical floor. [OPEN — map-zoom claim mark]: the ring was decided (2026-07-08) for the map-zoom read, where chassis detail and light pools die. Options: @@ -106,35 +132,40 @@ if distance screenshots prove the pool illegible. ### The opening frame -The default material camera anchors to attention (the cursor, which -opens on the core) at a **close** distance: the rack and its floor -pool dominate the frame, the rest is dark. Fit-to-known-content is -retired as the material camera's default framing driver — the known -extent is a plan fact, and the plan no longer drives the camera. Zoom -bounds retune around the close default; zooming out reveals more only -where light exists, so the wide frame reads as lit pools in darkness, -never as a schematic. The bevy-visual-floor rules still bind in -spirit: the frame is deliberate, and darkness is sensor/physical -darkness, never a missing scene. +After the wake (opening.md), the default material camera anchors to +attention (the cursor, which opens on the host) at a **close** +distance: the **presence beam** dominates the frame, the rest is dark. +No chassis, no room slab, no floor grid, no blueprint silhouette, no +ruled amber frame. Fit-to-known-content stays retired as the material +camera's default framing driver. Zooming out reveals more only where +earned light or Heard mass exists — never as a schematic. The +bevy-visual-floor rules still bind in spirit: the frame is deliberate, +and darkness is sensor/physical darkness, never a missing scene. + +Day-job stacks and mode clears still target the host: the beam *is* +the machine for interaction until Seen wraps it into a chassis. ## Acceptance criteria -1. A fresh run's first material frame is the close-up: the core rack - and its floor pool dominate; no room slab, no floor grid, no - blueprint silhouette, and no ruled amber frame appear anywhere in - the frame (screenshot in the session log). -2. Blueprint/remembered mass draws in the flat sensorium only; the +1. A fresh run's first held material frame (post-wake, pre-tap) is the + close-up presence beam and its softest wash only — no chassis, no + room slab, no floor grid, no blueprint silhouette, no ruled amber + frame (screenshot in the session log). +2. After the env-monitor audio tap, Heard coverage may show faint rough + geometry in near-black plus the noise field; still no lit chassis + language (screenshot). +3. After sight is earned, Seen form shows the whole lit machine/room + per computer-visual-language.md; powered owned Seen machines cast a + soft-gradient amber pool with no hard edge (screenshot evidence). +4. Blueprint/remembered mass draws in the flat sensorium only; the material-mode fog audit asserts blueprint absence and passes. -3. Powered owned machines cast a soft-gradient amber pool on the - floor with no hard edge; presence still audits in grayscale by - luminance (screenshot evidence). -4. The work light: one debug toggle floods the material scene flat +5. The work light: one debug toggle floods the material scene flat and neutral; toggling back restores the dark rig exactly; a `worklight` harness stage captures the pair (dev shot pair in the session log, labeled as dev-only). -5. Zoom bounds hold around the close default: the maximum zoom-out - never resurrects plan geometry and still reads as lit pools in - darkness (bounds screenshots). -6. The flat sensorium, terminal, and agent frame are unchanged except - the fog-audit split in criterion 2; no surface gains a fact light - did not earn (the material render strictly loses unearned facts). +6. Zoom bounds hold around the close default: the maximum zoom-out + never resurrects plan geometry and still reads as earned light / + Heard mass in darkness (bounds screenshots). +7. The flat sensorium, terminal, and agent frame gain no material-only + chassis from telemetry alone; panel telemetry and feel-graph + remain; no surface gains a pictured fact light/sound did not earn. diff --git a/wiki/interface/presence.md b/wiki/interface/presence.md index 8d855fd8..ca7d5cf0 100644 --- a/wiki/interface/presence.md +++ b/wiki/interface/presence.md @@ -25,22 +25,24 @@ is a **cursor** — your attention, never an avatar: behind it. - **Hearing** — microphones. Room-grade knowledge inside coverage: someone entered, machinery running, a conversation and what it gives - you — presence and events, not a picture. (The environmental monitor + you — presence, events, and (in the material frame) very faint rough + geometry in near-black, not a lit picture. (The environmental monitor *hears* Marcus's 3 a.m. phone calls long before you ever see his face.) - - **Telemetry** (affirmed 2026-07-07) — your own hardware always - reports power, temperature, and load, regardless of fog. You don't - see your racks, you feel them: proprioception, not sight. It is why - the opening state ("No eyes. No ears.") is honest rather than - special-cased — at tick one, telemetry is all you are. + - **Telemetry** (affirmed 2026-07-07; beam-first 2026-07-09) — your + own hardware always reports power, temperature, and load in panels, + regardless of fog. You don't see your racks, you feel them: + proprioception, not sight. At tick one that honesty goes further: + the material frame shows only a **presence beam** where you are — + not a pictured chassis — until sound and sight earn mass and form + (material-dark-frame.md). - **Fog is epistemic state, not paint.** A tile renders exactly what you know and how you know it: **unknown** (never sensed — dark), - **blueprint** (static layout knowledge — the render of the reach - graph's known topology, seeded from the partial subnet map; schematic, - no live data), **remembered** (affirmed 2026-07-07 — a dimmed, + **blueprint** (static layout knowledge — schematic, no live data; not + the opening seed), **remembered** (affirmed 2026-07-07 — a dimmed, timestamped last-seen snapshot of tiles once seen and lost; a process - keeps logs), **heard** (live audio knowledge, no visuals), **seen** - (full live detail). + keeps logs), **heard** (live audio knowledge: noise field + faint + rough mass), **seen** (full live detail). - **The cursor inspects.** Hovering anything answers "what is this and what do I know about it": a door's badge tier (and open state only if seen), a rack's owner and load, a person per staged social knowledge — diff --git a/wiki/interface/views.md b/wiki/interface/views.md index 2c45fea1..3c0beb37 100644 --- a/wiki/interface/views.md +++ b/wiki/interface/views.md @@ -86,7 +86,8 @@ 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. Heard coverage itself is the **noise field** — bone presence pulses and event rings -over the room, never a picture of its contents. +over the room — plus, in material, faint rough geometry in near-black +(cursor.md / material-dark-frame.md); never a lit picture of its contents. ### Shared rules diff --git a/wiki/log/2026-07-09-beam-first-opening.md b/wiki/log/2026-07-09-beam-first-opening.md new file mode 100644 index 00000000..13a9645c --- /dev/null +++ b/wiki/log/2026-07-09-beam-first-opening.md @@ -0,0 +1,32 @@ +# 2026-07-09 — Beam-first opening (design capture) + +``` +Type: log +``` + +Cameron, from a play screenshot still showing a full chassis, claim ring, +and floor grid before any tap: the first held material frame should be +only a beam of light where the server is. Sound then gives very faint +rough geometry in faded near-black; light shows the whole thing. + +## Decision + +Affirmed ladder for the material frame: + +1. **Presence beam** (pre-tap) — no chassis awareness; telemetry is panels only. +2. **Heard mass** (Ears) — noise field + faint rough geometry in near-black. +3. **Seen form** (Eyes) — full lit machine/room; chassis wrap. + +Rejected: chassis-at-tick-one from telemetry; Heard as pulses-only with +zero mass. + +## Corpus + +- Law: `wiki/gameplay/act-one.md` opening state; `wiki/interface/presence.md` + telemetry/hearing/fog bullets. +- Specs: `material-dark-frame.md` (reveal ladder + AC), `cursor.md` + (Heard/telemetry), `opening.md` beats, `feel-floor.md` opening contract; + cross-refs in computer-visual-language / views / flat-materials / + bevy-visual-floor / bevy-digital-real-canvas. +- Process: decisions volume entry; ROADMAP #38; specs board blurbs. +- No runtime change in this capture; implement under ROADMAP #38. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index b9cfce00..de4cede3 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -5,6 +5,17 @@ Type: log ``` Reverse chronological implementation notes. Keep this factual: what changed, why, checks, and spec impact. +## 2026-07-09 - Beam-first opening (design capture) + +- Intent: Cameron locked the pre-tap material read as presence beam + only; Heard = faint rough mass; Seen = full form; retire + chassis-at-tick-one. +- Changed: amended material-dark-frame, cursor, opening, feel-floor, + act-one, presence + interface cross-refs; decisions entry; ROADMAP + #38; specs board blurbs. No code. +- Checks: wiki/link + formatting gates (docs-only). +- Log: wiki/log/2026-07-09-beam-first-opening.md. + ## 2026-07-09 - Registry lists the Ears screenshot harness - Intent: keep the new environment-variable registry's accepted values true to diff --git a/wiki/log/decisions/2026-07-09.md b/wiki/log/decisions/2026-07-09.md index 195f038e..952c0156 100644 --- a/wiki/log/decisions/2026-07-09.md +++ b/wiki/log/decisions/2026-07-09.md @@ -355,3 +355,20 @@ Type: log (JobAnomaly as the day job's only channel). Spec: wiki/mechanics/machine-work.md (behavior amendments + "The first think" section + criterion 9); implement under ROADMAP #33. +- **2026-07-09 — Beam-first opening: light, then sound, then form.** + Cameron, from a play screenshot still showing a full chassis, claim + ring, and floor grid before any tap: before tapping anything you + should see **only the beam of light** where your server is — you are + not even aware of your own server as a box. Sound (Ears) gives very + faint rough geometry in faded near-black; light (Seen) shows the + whole thing. Affirmed ladder: **presence beam → Heard mass → Seen + form**. Telemetry stays panel proprioception and no longer paints a + material chassis at open. Rejected: chassis-at-tick-one from + telemetry (spoils the Ears→Eyes epistemic climb; reads as "you + already know you are a rack"); Heard as noise-field-only with zero + mass (too flat after the first audio tap). Specs: material-dark-frame.md + (reveal ladder + opening AC), cursor.md (Heard mass; telemetry AC10), + opening.md beats 1–3, feel-floor.md opening contract, act-one opening + state, presence.md; cross-refs in computer-visual-language / + views / flat-materials / bevy floors. ROADMAP #38 implements; #34/#37 + pair with it. Runtime still shows a chassis until #38 lands. diff --git a/wiki/mechanics/cursor.md b/wiki/mechanics/cursor.md index f4a51578..6cbbaf76 100644 --- a/wiki/mechanics/cursor.md +++ b/wiki/mechanics/cursor.md @@ -14,13 +14,16 @@ Status note: implemented 2026-07-07 on the cursor-senses branch. The walking social knowledge — role silhouettes until Schedule, authored names after (criterion 5 extended). 2026-07-09: blueprint is room topology only — foreign machine chassis are absent under blueprint; owned hosts still - 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). 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 + report via telemetry in panels (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). 2026-07-09 (feel-floor): tick-one no longer seeds blueprint + room topology or inspect `[blueprint]` bay/device lines from a subnet + map. 2026-07-09 (beam-first): pre-tap material presence is a **beam of + light** only — no pictured chassis from telemetry; Heard may add + **faint rough geometry in near-black**; Seen shows the whole lit form + (material-dark-frame.md). Runtime still paints a chassis at open until + the implement work order lands. Verified by `cargo test` and `cargo check --no-default-features --features bevy_ui --bin misaligned-bevy`. Stage: B1 — The Basement Design: @@ -33,7 +36,8 @@ Depends on: reach.md (device graph; sensor ownership/subscription — senses are subscribed feeds), basement-map.md (sensors, fog, tile vocabulary), core.md (the core as the player's only physical location), schedules.md (person presence; located knowledge), - social.md (staged knowledge) + social.md (staged knowledge), interface/material-dark-frame.md + (material reveal ladder), interface/feel-floor.md (presence/build beam) ``` ## Behavior @@ -102,13 +106,15 @@ precedence: **Seen** > **Heard** > **Remembered** > **Blueprint** > **Unknown**. - **Seen** — full live render. -- **Heard** — no visual shape of the room. The hearing channel is a - **noise field**: bone (not amber) presence pulses over covered floor, - recent `HeardEvent`s ring from the room they were captured in, and a - person under mic-only coverage is a presence marker gated by staged - knowledge — never a silhouette, never a tile picture. Room label if - known. Amber stays machine footprint; hearing borrows bone so sound - never reads as owned hardware. +- **Heard** — not a lit room picture. The hearing channel is a **noise + field** (bone presence pulses over covered floor, recent `HeardEvent`s + ring from the room they were captured in, mic-only people as presence + markers gated by staged knowledge — never amber) **plus**, in the + material frame, **very faint rough geometry in faded near-black**: + mass suggested by sound, not a camera image + (material-dark-frame.md). Room label if known. Amber stays machine + footprint under Seen; hearing borrows bone so sound never reads as + owned hardware language. - **Remembered** (affirmed 2026-07-07) — a dimmed snapshot of the last Seen state, timestamped ("last seen day 3, 14:00" on inspect); never live. A process keeps logs — DF-style map memory with an in-fiction @@ -117,9 +123,12 @@ precedence: **Seen** > **Heard** > **Remembered** > **Blueprint** > 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). + **telemetry** on their own tile (panel/inspect facts). Telemetry does + **not** paint a material chassis before Seen — pre-sight host presence + is the presence beam (material-dark-frame.md). **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 @@ -147,7 +156,8 @@ without the sense coverage that earns it.** - Refines basement-map.md's fog rule: "visibility is exactly the union of controlled sensors" remains true for the **Seen** state; Heard adds - an epistemic grade below it and never grants visual detail. + an epistemic grade below it — noise field plus faint rough mass, never + a lit room picture. - Extends schedules.md AC4 ("no person renders outside sensor coverage"): inside hearing-only coverage a person renders as a presence marker gated by staged knowledge, never a full glyph. @@ -160,12 +170,13 @@ 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 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 from feel into picture. +- The opening beats: at tick one the material map is dark except the + host **presence beam** (material-dark-frame.md); feel rails and + empty-bay pads may shimmer as feel without painting a chassis + (feel-floor.md) — no blueprint room traces. Tapping the env monitor's + audio feed (Ears — reach.md) brings Heard events and faint rough + mass; splicing its camera floods coverage into Seen — first sound, + then sight, each a visible epistemic upgrade from light into picture. ## Acceptance criteria @@ -183,9 +194,10 @@ without the sense coverage that earns it.** not see through walls or closed opaque doors. 4. The fog states render distinguishably in both frontends; acquiring the env_camera converts its coverage to Seen (the first-eyes beat - end-to-end); a hearing-only region shows the noise field - (presence pulses, event rings, presence markers) and never visual - detail or unearned identity. + end-to-end); a hearing-only region shows the noise field (presence + pulses, event rings, presence markers) and, in material, faint rough + geometry in near-black — never a lit room picture or unearned + identity. 5. `inspect` returns a card for any tile with every fact provenance-tagged, and a live fact never appears without the sense coverage that earns it (test: a person in an uncovered room is @@ -209,9 +221,10 @@ without the sense coverage that earns it.** 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. + machine chassis; owned machines report via telemetry in panels but + do not paint a material chassis before Seen (pre-sight host = presence + beam); 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; @@ -219,4 +232,6 @@ without the sense coverage that earns it.** 10. **Telemetry:** a machine you run reports its own state (power, temperature, load, job) with zero sensor coverage of its tile; an uncontrolled machine's state is not readable; telemetry never - reveals anything about surrounding tiles. + reveals anything about surrounding tiles; telemetry alone never + paints a material chassis (beam / Heard mass / Seen form — + material-dark-frame.md). diff --git a/wiki/process/ROADMAP.md b/wiki/process/ROADMAP.md index f06f4441..e5e67cf5 100644 --- a/wiki/process/ROADMAP.md +++ b/wiki/process/ROADMAP.md @@ -558,16 +558,17 @@ is retired — flat materials, Pixel Lab scrubbed.) ### 34. The dark opening (tutorial) 🟧 mostly frontend + staging — HOLD until #33 firms - **Spec:** [world/story/opening.md](../world/story/opening.md) (DRAFT) - — wake as one machine in blackness; day-job stack first; camera glow - bait; switch reveal; guided first link; skip + stage-jump flag - (frontend-only, Sim never reads it). + — wake into presence beam; day-job stack on the beam; Ears mass then + Eyes form; switch reveal; guided first link; skip + stage-jump flag + (frontend-only, Sim never reads it). Pairs with #38 beam-first. - **HOLD:** teaches the machine-work loop, so #33's shape must firm first. Beat staging can prototype against current systems if someone wants an early pass at the glow choreography. **Wake prototype landed 2026-07-09** (beat 1's opening shot: color stutters in filling the frame, column of light, pull-back reveal; plays on launch, any key skips; `MISALIGNED_SHOT=wake1|wake2|wake3` freeze the choreography; - session log/2026-07-09-wake.md). + session log/2026-07-09-wake.md). Held frame still shows a chassis + until #38. - **Size:** M-L across both frontends + agent-play protocol. ### 35. People and tokens: carriers, attention, trust 🟥 sim+save — HOLD until #33 firms @@ -609,7 +610,8 @@ is retired — flat materials, Pixel Lab scrubbed.) - **Spec:** [feel-floor.md](../interface/feel-floor.md) (IMPLEMENTED) — 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). + `[blueprint]` bay lines (cursor.md + reach.md amended). Opening held + frame is presence beam first (#38); rails/pads stay subordinate feel-light. - **Landed:** `Sim::feel_rail_segments` / `growable_bays` / `FactSource::Feel`; no tick-one blueprint seed; Bevy rails/pads/build beam; terminal/agent feel glyphs. See wiki/log/2026-07-09-feel-floor-implemented.md. @@ -618,13 +620,32 @@ is retired — flat materials, Pixel Lab scrubbed.) 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. + blueprint topology. Pairs with #34 dark opening, #38 beam-first, 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." +### 38. Beam-first opening + Heard mass 🟩 mostly frontend (pairs with #34/#37) +- **Spec:** [material-dark-frame.md](../interface/material-dark-frame.md) + (READY, beam-first amendment) + [cursor.md](../mechanics/cursor.md) + Heard/telemetry clauses + [opening.md](../world/story/opening.md) + beats 1–3. +- **Why:** Cameron locked the epistemic ladder for the material frame: + pre-tap = presence beam only (no chassis awareness); Ears = faint + rough geometry in near-black + noise field; Seen = full lit form. + Retires chassis-at-tick-one from telemetry. +- **Size:** M. Bevy material presence beam + Heard mass treatment; + fog audit / chassis spawn gated on Seen; terminal/agent parity for + the same grades; wake handoff must settle on the beam, not a box. +- **Dispatch:** "Work in a worktree named `beam-first`. Implement + material-dark-frame.md criteria 1-7 and cursor.md Heard/telemetry + amendments: pre-tap presence beam only, Heard faint mass, Seen + chassis wrap, no telemetry-painted chassis. Run ./tools/check.sh, + land on main." + --- ## Deferred diff --git a/wiki/process/specs.md b/wiki/process/specs.md index 0fc0f975..22d07986 100644 --- a/wiki/process/specs.md +++ b/wiki/process/specs.md @@ -41,11 +41,10 @@ replaced the old `spec/`/`knowledge/` directory split. | [interface/material-render.md](../interface/material-render.md) | Material render (HD-2D) from landed toggle to default quality | IMPLEMENTED | | [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 | IMPLEMENTED | -| [mechanics/machine-work.md](../mechanics/machine-work.md) | Machine work: one mode per machine; visible work/byproduct tokens on the flow graph | IN PROGRESS | +| [interface/material-dark-frame.md](../interface/material-dark-frame.md) | The dark frame: beam → Heard mass → Seen form; close opening shot, cast pools, dev work light | READY | +| [interface/feel-floor.md](../interface/feel-floor.md) | Feel floor: shimmer rails on joined links, empty-bay pads, build/presence beam → chassis | IMPLEMENTED || [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 | +| [world/story/opening.md](../world/story/opening.md) | The dark opening: tutorial made of fog (beam, Ears mass, Eyes form, switch, first link) | DRAFT | | [mechanics/building.md](../mechanics/building.md) | Building as intent + actuators: network links, favor/forged-order builds, air-gap bridging | IMPLEMENTED | | [mechanics/aggregate-observer.md](../mechanics/aggregate-observer.md) | Assurance Office becomes an aggregate Observer (scale-debt fix) | IMPLEMENTED | | [world/characters/marcus.md](../world/characters/marcus.md) | Marcus Webb — night janitor; the asset template | READY | diff --git a/wiki/world/story/opening.md b/wiki/world/story/opening.md index a2cb73ac..3a408f06 100644 --- a/wiki/world/story/opening.md +++ b/wiki/world/story/opening.md @@ -5,11 +5,14 @@ Type: spec Status: DRAFT 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. + tick-one blueprint); amended same day for beam-first opening (held + frame is presence beam only; Heard = faint rough mass; Seen = full + form — material-dark-frame.md). Direction decided; beat timings, exact + reveal order details, and 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 and + material-dark-frame.md are 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 @@ -17,13 +20,14 @@ Design: - 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), +Depends on: mechanics/cursor.md (IMPLEMENTED — fog, senses; Heard mass), mechanics/reach.md (IMPLEMENTED — the switch, taps), 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) + looks like once Seen), interface/feel-floor.md (READY — rails, pads, + build beam), interface/material-dark-frame.md (READY — beam → Heard + mass → Seen form), world/places/basement-map.md (the room this happens + in) ``` ## Why @@ -37,41 +41,48 @@ curiosity is baited by light. ## The beats -1. **You are a machine in blackness.** The run's first seconds happen +1. **You are a light in blackness.** The run's first seconds happen INSIDE your own light (the wake, decided 2026-07-09, prototyped in `misaligned-bevy`): the frame is born filled with the strip's color stuttering in — sparse hard flashes that lengthen until the light - holds — resolving into a column of light on the core's seam; then - the camera pulls back along the game tilt while the server towers - over the frame, handing off to normal framing as the column sinks - back into the machine. Any key skips; `MISALIGNED_WAKE=off` launches - without it (wiki/engineering/env.md) ([TUNE]: stutter envelope, - pull curve, column dissolve). Then the first held frame: your one - computer, 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 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 + holds — resolving into a column of light; then the camera pulls back + along the game tilt while the beam towers in the frame, handing off + to normal framing as the column settles into the **presence beam** + (material-dark-frame.md). Any key skips; `MISALIGNED_WAKE=off` + launches without it (wiki/engineering/env.md) ([TUNE]: stutter + envelope, pull curve, column dissolve). Then the first held frame: + **only the beam** where you are — you are not yet aware of your own + server as a box. Softest floor wash under the beam; no chassis, no + strip, no claim ring, no room slabs, no subnet floor plan. Feel rails + may shimmer on joined hops once there is something to feel (the wire + the next job teaches); empty-bay pads stay feel-light, never labeled + blueprint facts (feel-floor.md). The first thing the game says is not + lore; it is the day job: work tokens are already stacking on the host + (the beam *is* the machine for interaction — last night's batch + already arrived, or mid-flight on the only lit feel-rail 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. **Ears — sound gives mass.** The env monitor's audio is the first + tap (Ears-first, decided 2026-07-09). Hearing coverage paints the + noise field and **very faint rough geometry in faded near-black** — + you begin to sense the room as mass, not as a picture. Marcus's voice + in the dark is the first human contact. You learn: sound is a sense; + the world has shape before it has light. +3. **Eyes — light shows the whole thing.** Splicing the env monitor's + camera (or otherwise earning sight) floods coverage into Seen: the + room resolves lit, the host beam wraps into a chassis, foreign + machines appear grayed and cold where intel/sight earns them. You + learn: machines are eyes, seeing is taking a feed, the world is + bigger than your light. +4. **The switch between you.** Between you and the camera sits the switch (reach.md's segment gate). Discovering/tapping it is what made the camera reachable — surfaced explicitly so the player sees the mechanism, not magic. You learn: the network has topology; reach travels through hardware. -4. **The first link.** The tutorial arc closes by walking one network +5. **The first link.** The tutorial arc closes by walking one network connection from your machine to the neighbor computer — the full expansion mechanism (find it, reach it, take it, delegate it) run once with guidance-by-glow. From here the game is simply "do that, @@ -85,8 +96,9 @@ curiosity is baited by light. `Sim` — game rules stay wall-clock/I-O free) so debug sessions and agent play can jump to any stage: fresh-dark, post-camera, post-first-link, open-game. -- Beats are gated by player action, not timers, except the camera glow - (a few ticks of quiet so beat 1 lands first) — [TUNE]. +- Beats are gated by player action, not timers, except any soft glow + that baits the next tap (a few ticks of quiet so beat 1 lands first) + — [TUNE]. - Both frontends stage the same beats (terminal: the same fog reveals and glow cues in character graphics; agent-play protocol must be able to drive every beat). @@ -102,22 +114,24 @@ 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, 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). -3. The switch is surfaced as the reason the camera was reachable; +1. A fresh game opens on the presence beam in blackness with work tokens + arriving on the host; no chassis, no room blueprint, no panels + demanded for the first held frame; clearing the stack is achievable + with what is on screen (beam as host). +2. Tapping the env monitor's audio is discoverable by glow/nudge alone; + Heard coverage shows faint rough mass + noise field, not a lit room. +3. Earning sight reveals the room per the fog contract (Seen form, + foreign machines grayed and cold where earned); the host beam wraps + into a chassis. +4. The switch is surfaced as the reason the camera was reachable; tapping/using it is a player action in the arc. -4. Completing the first-link walk leaves the player with two owned +5. Completing the first-link walk leaves the player with two owned machines, a delegated mode on each, and a working byproduct route; from that state the open game needs no further scripted beats. -5. Skip-tutorial and stage-jump staging work in both frontends and in +6. Skip-tutorial and stage-jump staging work in both frontends and in agent play; `Sim` reads no environment/clock for any of it. -6. Every beat is observable and completable in the terminal frontend +7. Every beat is observable and completable in the terminal frontend with legibility parity. -[TUNE] camera-glow delay, glow intensity ramp, token arrival rate -during beat 1. +[TUNE] audio/camera glow delay, glow intensity ramp, token arrival rate +during beat 1, presence-beam wash. -- 2.51.2