# Spec: digital reach ``` Status: READY Stage: B1 — The Basement Constitution: "No disembodied hands" (digital channel), "Presence: the cursor and the senses" (reach is to action what coverage is to sight), "Act One" (the subnet map; the switch as bridge point; ladder beats Ears / Eyes / The key), "Self-similar scale" (owners and the player share the subscription interface) Depends on: basement-map.md (devices and topology live in its layout data), cursor.md (senses consume the feeds this spec owns), detection.md (Network signatures -> Dana), core.md (Rack 3 is the root of reach), schedules.md (witnessing uses the same coverage machinery) ``` ## Behavior ### The device graph Every networked fixed object is a **device node**: racks, the switch, the environmental monitor, camera nodes, the dock camera, the badge controller. Edges are network links, **authored in the basement layout data** (basement-map.md owns the topology as content; this spec owns the semantics). Segments (VLANs) partition the graph; **the network closet's switch is the bridge point between segments** — the constitution's "every digital reach runs through here," now mechanical. **Reach** = the set of devices connected, through the graph, to a device the player controls. At tick one that root is Rack 3, so reach is the basement subnet segment and nothing more. ### Digital actions require reach Every digital act names its target device and fails legibly without a path ("no route to the badge controller — it's on the security segment; the switch bridges it"). This is the digital channel of the no-disembodied-hands law: the actuator is the reached device. Crossing a segment requires compromising the switch (a digital act with a Network signature) or a social route (Dana reconfigures it for a pretext). ### Ownership and subscription (the sensor contract) This is the shared contract cursor.md and detection.md rely on (meta.md: stated once, here): - Every device — sensors included — has an **owner** (the facility, Ray, Dana, the player) and a set of **subscribers** (agents who receive its feed or telemetry). - **Tap**: add yourself as a silent subscriber. The owner keeps the feed; the act emits a modest Network signature (Dana's channel), and the tap itself is discoverable by a later audit [TUNE]. - **Take**: seize or redirect the device. The owner loses the feed, and the outage is an event the owner's channels notice — camera outages are literally the first thing Ray's spec lists. Loud, fast, total. - **The player's senses (cursor.md) are exactly the union of feeds they subscribe to.** Observer witnessing (schedules.md) runs on the same coverage machinery with the same ownership data — the player is an observer the humans don't know about, not a special case (self-similar law). `Sensor.controlled: bool` is superseded by this contract. - **Ownership grants processing cycles** (the flow law). A device is a small computer: an owned device contributes processing capacity and can **host resident automations** — an intel.md watch running *on the camera* auto-processes its own events for a base compute cost, rather than shipping raw events home for central processing. Taking a camera is taking its cycles. This is the B1 seed of distributed processing (compute is not only your racks); the capacity a device contributes and the cost to run an automation on it are [TUNE]. ### Knowledge of the graph 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]. - **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 layout, no live data. 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. - Unknown devices do not appear in inspect, reach failures, or the map. ### Signatures Every reach act emits on the Network channel (detection.md, Dana): scan low, tap medium, take/switch-compromise high [TUNE]. Acts through a social route emit on the social/physical channels of the human involved instead — the channel follows the actuator (no-disembodied-hands). ### The Ears beat The environmental monitor is on your segment and its audio feed already flows past you: **tapping it is the intended first act** — cheap, low signature, teaches tap-vs-take and reach in one move, and delivers the restaged Act One opening (Marcus's voice in the dark before you ever see a face). Its camera stays dormant until the Eyes beat (splice = a take-grade act, or Dana's social route). ## Player surface - A reach overlay or per-device inspect line: reachable / known but unreachable (with the blocking segment named) / unknown. - Failure messages name the missing link, never just "you can't." - The tap/take choice is presented wherever a feed can be acquired, with its signature cost legible before committing. ## Acceptance criteria 1. The device graph loads from basement layout data (nodes, links, segments); reach is computed from player-controlled roots; save/load round-trips graph, ownership, and subscriptions. 2. A digital action against an unreachable device fails with a legible reason naming the blocking segment or missing knowledge; the same action succeeds once a path exists. 3. The switch bridges segments: at least one device (the badge controller or dock camera) is unreachable at start and becomes reachable via switch compromise (Network signature emitted) or Dana's social route (test both routes). 4. Devices carry owner + subscribers; tap leaves the owner's feed intact and emits a Network signature; take removes the owner's feed and generates an outage event that the owner's observer channels can notice (test: taking a Ray-owned camera raises a Ray-noticeable event; tapping it does not). 5. Player senses equal subscribed feeds exactly (the `controlled` flag is gone); observer witnessing still passes schedules.md's criteria on the shared machinery. 6. The Ears beat works end-to-end from tick one: tapping the environmental monitor's audio feed is available, cheap, and low-signature; Marcus's rounds produce heard events through it (cursor.md AC6 consumes this). 7. Graph knowledge is staged: scanning reveals devices at a Network signature cost; unknown devices appear nowhere in the UI; known topology renders as blueprint per cursor.md.