Spec: the clinical frame — perception exposes the institution
Status: IMPLEMENTEDStatus note: adopted 2026-07-10 after comparing the live Bevy close frame with two generated composition studies. First implementation slice landed 2026-07-10 (log/2026-07-10-clinical-frame-pass.md): rail narrowed 420->332px as one unboxed near-black field (card borders/fills removed; chrome section labels; bone values); amber decoration retired from the rail (header, card titles, channel-share fills, Cold/Curious band fills are now chrome/bone value steps; amber remains cursor/selection/reticle/owned-presence only); Seen floor raised to a porcelain field (0.55->0.74, later capture-validated); Seen wall faces bone/ivory with the cap as the near-black cutaway seam. Before/after/ grayscale evidence: assets/reference/art-direction/b1-clinical-frame- {before,after,after-grayscale}.png. 2026-07-11: crown metric landed — effective ops/sec is the large bone number at the top of Bevy/terminal rails (`Sim::effective_ops_per_tick` = THINK yield; wall-clock via tick_ms; magnitude-preserving format; agent frames report ops/tick under the command clock). 2026-07-11 whole-frame composition slice: Bevy rail progressive disclosure (compact default; Tab expands secondary sections; tagged Visibility, no rebuild; quiet DIM "Tab expand/compact detail" hint; OBSERVER MODEL stays compact-visible only when elevated threat is present) plus semantic material-camera zoom (close lowers oblique toward machine/ floor; medium keeps the tactical 40° read; far raises toward facility survey; FOV-compensated monotonic distance; no free orbit, no projection pop). The same slice replaces generic material props and people with the shared Foundation institution kit and volumetric gait silhouettes, binds material Thought routes to the shared effects renderer, and attaches sink menisci to their hardware silhouettes. 2026-07-12 data-hall vertical slice: sixty rack plinths, sixty rear service-tray segments, and sixty-three cold-aisle trench segments now bind the complete hall under exact tile-local Seen gates; close pitch/FOV and the unobstructed proof frame strengthen machine/floor scale; one sim Thought move again means one material slug; and Exposure's particulate renderer is replaced by carrier-local custody records. Evidence and commands: log/2026-07-12-data-hall-visual-composition.md. 2026-07-13 operational service slice: the six tray spines are physically continuous, Row C drops beside the real patch panel, one real dead chassis carries sparse neutral maintenance history, and camera-seen people carrying work gain one mobile service cart/local cold lamp in REAL plus an independent work mark in DIGITAL. The canonical proof fires a real Rack 3 -> old storage favor-build reservoir against Marcus's authored shift, then ordinary sim advancement lands the graph edge and removes the cart/mark. Exposure now pins its seven-slot rack and honest overflow tab. Evidence and commands: log/2026-07-13-data-hall-service-incident.md. Final played-capture tuning landed 2026-07-14: the rail is exactly 320px (one quarter of the 1280px default and one third of the defined 960px minimum); the 30px ops/sec crown remains the single dominant rail value; scheduled/calm state, the live next act, and stable input grammar now have distinct DIM/bone weights; a real exception promotes the schedule into crimson THREAT and reveals the compact observer card; and material zoom is bounded at 0.7/5.2, the observed close- context and maintained-hall survey endpoints. The runtime now enforces the 960x540 minimum and the screenshot harness captures that exact floor through `MISALIGNED_SHOT_SIZE=minimum`. Default/minimum DIGITAL and REAL, close/far, calm/threat, causal-motion, and grayscale evidence: log/2026-07-14-clinical-frame-tuning.md. A subsequent operator-frame amendment applies the same hierarchy more strictly: Bevy demotes stable ops/sec, objective, focus facts, observer detail, and the control legend to expanded detail; projects the one `NEXT` condition onto an honest world target and its existing response verb; and gives Operations the whole window at both supported sizes. Evidence and commands: log/2026-07-14-operator-frame.md.Stage: B1 — The BasementWork order: clinical-frameWork priority: 34Work class: frontendBlocked by: noneExclusive keys: - crates/misaligned-bevy/ - wiki/interface/clinical-frame.mdDesign: - wiki/art/visual-identity.md#visual-identity-clinical-gore - wiki/vision/simulation-laws.md#justification-and-legibility - wiki/interface/presence.md#presence-the-cursor-and-the-sensesDepends on: - wiki/interface/superhuman-operability.md#superhuman-operability - wiki/interface/material-dark-frame.md#spec-the-dark-frame-the-material-render-shows-only-light - wiki/interface/bevy-visual-floor.md#spec-bevy-visual-floor - wiki/interface/bevy-digital-real-canvas.md#spec-bevy-digitalreal-canvas - wiki/interface/flat-materials.md#spec-flat-materials-the-world-without-textures - wiki/interface/computer-visual-language.md#spec-computer-visual-language-territory-at-a-glanceDependency notes
Section titled “Dependency notes”material-dark-frame.md owns what perception may reveal and the opening’s
beam-first darkness. This spec does not brighten Unknown or let audio invent a
room; it strengthens the categorical payoff of Seen. bevy-visual-floor.md owns the
command-surface information order; this spec refines its first graphical pass
away from card-heavy dashboard chrome. bevy-digital-real-canvas.md owns the
fixed shared spatial canvas and oblique camera. flat-materials.md owns the
solid-color material families. computer-visual-language.md owns machine
albedo, the single state-bearing beam, Foundation chassis form, and cast pool.
Why this spec exists
Section titled “Why this spec exists”The current frame has a strong object language: the core is a severe white machine wrapped around amber presence, ownership is material, and work becomes physical. The surrounding composition does not yet give that language enough room. The playable world is visually compressed by a broad, information-dense right rail, while the material scene often remains so dark that the Foundation Lab reads as atmosphere rather than an institution with understandable structure.
The target is not “make the dark scene brighter.” Darkness has a precise job: it is absence of perception. The target is increase the difference between not knowing and seeing. Unknown remains empty black. Once a camera earns a surface, the facility should arrive with sterile certainty: matte porcelain, black construction seams, gunmetal systems, and enough clean floor field to read routes, machines, and consequences.
The interface follows the same rule. The world is where actions live and where causes become visible. Persistent chrome should behave like an instrument at the edge of attention, not a second competing game board.
Composition contract
Section titled “Composition contract”The world owns the frame
Section titled “The world owns the frame”At the default gameplay window, the world canvas occupies the clear majority of usable width and visual weight. The implemented 320px rail is exactly one quarter of the 1280px default window and one third of the defined 960px minimum; type does not shrink at either size. A player should first perceive the room, the focused machine, and the active flow, then consult the rail.
The material camera remains fixed-oblique/orthographic and attention-anchored. Do not adopt the map-dominant mockup’s near-top-down camera literally. Preserve visible machine volume, floor relationships, and stable tile correspondence. Do not crop the world merely to make room for prose that can scroll, collapse, or move behind focus.
Semantic zoom (Bevy material camera, 2026-07-11): zoom is composition, not a free camera. Close lowers the oblique pitch and biases look-at toward the lower machine/floor relationship; medium keeps the established tactical read (~40°); far raises/flattens toward a stable facility survey. Interpolation is smooth, projection mode never pops (perspective throughout), and mild FOV drift is distance-compensated so distance remains monotonic in the zoom multiplier. Selection, fog, and sim facts are unchanged.
Black means absent
Section titled “Black means absent”Unknown geometry is not dim architecture. It is absent and true black. No ambient floor plate, wall silhouette, decorative cable, vignette detail, or generated room dressing may leak through it. The edge of earned perception may be softened by the established camera/light falloff, but that falloff may not imply factual form outside coverage.
Audio remains event evidence at its subscribed device and creates no material mass. Blueprint and Remembered stay in the digital/schematic dialect rather than becoming physical matter in the material frame.
Seen means institutional clarity
Section titled “Seen means institutional clarity”Seen architecture uses a quiet hierarchy:
- Floor field: medium-light matte porcelain/concrete, broad and calm enough to establish navigable room shape without becoming a white void.
- Structural seams: near-black expansion joints, cutaway edges, wall bases, cable runs, and conduit geometry establish scale and system topology. They are sparse and functional, never decorative crosshatching.
- Walls and fixtures: bone/ivory faces with gunmetal functional parts; enough value separation from the floor to read volume at default zoom.
- Machines and active flows: the existing ownership, state beam, pool, token, and work-motion language remains highest in the local hierarchy.
The Seen room is clean, not friendly. Matte surfaces, square construction, precise spacing, and institutional repetition should make the horror feel maintained. Avoid grunge, dungeon wear, sci-fi panel noise, texture decals, and cinematic bloom.
The Foundation data hall is the canonical vertical slice
Section titled “The Foundation data hall is the canonical vertical slice”Decided 2026-07-11: visual improvement proceeds by completing one real place, not by distributing more effects across the whole frontend. The six-row Foundation data hall is the proving ground because it contains machine scale, service geography, people, work, perception boundaries, and enough repetition to expose weak hierarchy.
The material scene composes the existing authored plate into a maintained institution:
- rack rows sit on low dark service plinths instead of reading as isolated sculptures on an undifferentiated floor;
- cold aisles carry recessed fixtures, threshold plates, floor trenches, and sparse overhead cable/cooling trays whose alignment explains the row banks;
- every infrastructure segment is presentation geometry attached to an
existing tile. It appears only when that tile is
Seen, moves no gameplay node, grants no reach, and cannot imply geometry beyond current sight; - wide zoom reads row banks and room boundaries; close zoom lowers toward the machine/floor joint and admits human-scale references, contact, partial occlusion, and service detail. The camera stays authored and never becomes a free orbit;
- neutral aisle light models porcelain mass and black construction seams. Amber remains machine agency; it does not light the entire room merely to compensate for missing institutional illumination.
Implementation proceeds in a fixed order so later polish cannot conceal a weak composition: place -> camera -> light -> causal motion -> DIGITAL reduction -> consequence form -> interface integration. Slices may land independently, but each is judged against identical deterministic frames: DIGITAL opening, DIGITAL Seen hall, REAL wide hall, REAL close host, a camera-earned person, active THINK/Thought routing, and a frame with actual Exposure. The grayscale REAL frame must still read as a data hall with human scale when all signal color is mentally removed.
Causal motion is sparse and accountable. Machine beams, Thought, camera heads, relay responses, people, doors, and actuators move only from real simulation or frontend focus facts. Ambient sci-fi motion that cannot answer “why did that move?” is rejected. DIGITAL uses the same place but compresses distant detail to row groups, owned territory, active routes, and anomalies; individual bays, labels, and telemetry return near attention rather than filling the resting canvas. Exposure uses the custody-record form owned by machine-work.md and visual-identity.md, never environmental particles.
The hall operates: one row, one shift, one incident
Section titled “The hall operates: one row, one shift, one incident”Decided and implemented 2026-07-13: the next layer is not ambient detail. It is a complete service act using existing simulation truth. One proof follows a real person-bound work packet from a real schedule through a real service topology until the world act lands. The canonical B1 incident is Marcus carrying the existing favor-build intent between Rack 3 and the old storage server: before arrival the air gap remains real; at an authored endpoint room the ordinary intent tick adds the graph edge, emits its physical signature, grows trust through useful work, and removes the carried packet.
- Service topology terminates. Row C’s repeated high tray reads as one continuous run and drops at the real hall patch panel. The already-authored material path continues from that patch to the real closet switch. Bridges, drops, and maintenance fittings are presentation geometry on exact Seen tiles; they create no graph edge and cannot stand in for the build act.
- Human work remains on the person.
PersonCarrier::carried_workis the only source for a small mobile service cart and cold inspection lamp in REAL and a separate work-packet mark beside the unchanged person glyph in DIGITAL. The cart appears only while a camera sees that person carrying work and disappears when the same sim packet completes. No frontend queue, quest marker, or free-floating route arrow is allowed. - Maintenance history is sparse and authored. An open service panel and replaced plate may appear only at a real dead rack site. They are neutral bone/gunmetal geometry, not random grunge, loot dressing, or a crimson warning invented by the renderer.
- Light and motion answer a cause. The cart’s local inspection light exists only with active carried work. Person/cart movement comes from the authored schedule. Network state changes only when the real world act resolves. The room’s neutral fixtures do not blink merely to dramatize completion.
- REAL and DIGITAL preserve one coordinate. Fixed proof frames keep focus and person position stable across F3. REAL shows body, cart, and physical service structure; DIGITAL shows the same person identity plus a distinct work mark and the actual graph before/after. Neither dialect copies the other’s decoration.
The fixed evidence matrix adds REAL carried-work close, DIGITAL carried-work,
DIGITAL resolved topology, and over-capacity Exposure. A screenshot-only setup
may accelerate prerequisites, but the packet must be created through the
existing reservoir/fire path and completion must happen through ordinary
Sim::advance; directly inserting the final graph edge is not evidence.
Signal colors keep their cost
Section titled “Signal colors keep their cost”- Amber appears for the cursor/selection, owned-machine presence, explicit agency, and causal signal. Ordinary headings, borders, dividers, and neutral status values stay bone/chrome.
- Crimson appears only for actual danger or consequence. A calm frame may contain no crimson at all. Do not spend it merely to make an alert area look important.
- Cold signal remains available for neutral powered/live-feed facts, but it stays subordinate. The clinical frame must not drift into teal-dominant cyberpunk.
- No semantic axis relies on hue alone.
Instrument-rail contract
Section titled “Instrument-rail contract”The right rail keeps the current information order and parity obligations, but its resting presentation becomes narrower and quieter.
Persistent layer
Section titled “Persistent layer”The Bevy compact rail answers only the questions that can change the next move:
- current time/run state and DIGITAL/REAL representation;
- the nearest ordinary
SCHEDULE, promoted to crimsonTHREATonly for a real strike, concerned/convinced observer, or known unpaid obligation; - one bone-bright
NEXTcondition; - the Operations entry and quiet
Tabdisclosure control.
Stable throughput, objective progress, focus facts, observer meters, and the full input legend do not earn permanent rail weight. They remain exact in expanded FOCUS/FLEET/OBSERVER/secondary detail: effective ops/sec is the first FLEET line, objective name/readout and predicate remain on focused self, and the control legend remains at the foot of the expanded scroll. Agent and terminal surfaces retain their semantic values through their own text dialects; this amendment changes the Bevy composition, not the sim units.
Progressive disclosure (Bevy runtime, amended 2026-07-14): the rail mounts
every card once and toggles tagged section Visibility rather than despawning.
A frontend-only RailDetail resource defaults to compact; Tab expands while
playing unless a menu/modal already owns input. Compact shows no card. Even
under pressure, the compact THREAT line carries urgency without opening the
complete observer dashboard. Expanded detail restores FOCUS, FLEET, COVER
PROCESS, SELF-MODEL, OBSERVER MODEL, SELF HOST, NETWORK + MONEY, RECENT TRACE,
and the exact controls footer in one bounded scroll. Compacting resets scroll
to the top when practical. Disclosure chrome is quiet bone/DIM type — never
amber as generic UI highlight.
The current condition lives on the world
Section titled “The current condition lives on the world”Sim::current_nudge now has a renderer-neutral, read-only attention projection:
the current condition, an honest response-source anchor, an honest effect-target
anchor, and a broad existing response family. It adds no sim/save state and no
dispatch path. The opening, for example, connects the owned host’s existing
THINK verb to the known environmental monitor’s Ears target.
Bevy renders a small breathing NOW / <condition> mark at the placeable target
and accents the relevant existing machine verb only on the projected source.
The current mode remains bone-bright; if it already satisfies the condition,
the UI does not invent a second amber command. The first-THINK amber WORK panic
escape retains priority. Person targets still pass the live sight gate, unknown
or off-screen targets draw no edge-pinned substitute, and menu/Operations modal
states hide the cue and verb lens. A frontend-local buffer-capacity exception
currently outranks the Act One ladder; while it owns NEXT, Bevy suppresses the
unrelated shared cue rather than letting rail and world disagree.
Screenshot evidence freezes the pulse at one deterministic brightness. Normal
play breathes it slowly. MISALIGNED_SHOT_DETAIL=expanded selects the deliberate
rail layer for an existing screenshot scenario; operator-pressure stages a
strike, one concerned observer, and a full recording buffer so the compact frame
can prove one THREAT, one promoted NEXT, and no stale world cue. The runtime
resize floor remains 960x540; MISALIGNED_SHOT_SIZE=minimum captures that exact
floor rather than a second responsive layout.
Operations owns its moment
Section titled “Operations owns its moment”When open, the Bevy Operations workspace covers the complete window rather than leaving the resting rail beside it. At both 1280x720 and 960x540 it preserves the shared semantic order as one large command lens: witness, view pressure, selected object, related objects, physical actuator, available decision, explanation, then supporting context. The object list owns 32% of the work area; larger type and spacing let the selected object and decision read before supporting history. It remains frontend-only navigation over the shared projection; time continues and no action executes without the existing bound row and confirmation law.
Visual treatment
Section titled “Visual treatment”- Use one near-black rail field with strict padding and alignment.
- Prefer whitespace, type size/weight, value alignment, and restrained section labels over a stack of bordered cards.
- Use separators only where they clarify stable groups. Do not outline every datum or put each section in its own floating box.
- Labels are quiet bone/chrome; live values are brighter; danger earns crimson; owned/active causal state may earn amber.
- Preserve readable text at the default window and practical wrapping at the minimum supported size. “Narrower” may not mean tiny type.
- Keep the map edge clean. The rail must not cast a decorative glow or broad translucent wash across the world.
Context menus and transient overlays remain close to the thing they operate on and keep their compact choice-list law. This pass must not move world verbs back into the persistent rail.
Reference studies
Section titled “Reference studies”Two generated studies are checked in as directional evidence:
assets/reference/art-direction/b1-clinical-frame-balanced.png— useful for oblique physicality, porcelain emerging from black, and a calmer rail.assets/reference/art-direction/b1-clinical-frame-map-dominant.png— useful for world-to-interface proportion, broad quiet floor field, and sparse rail grouping.
They are not screenshots of intended runtime and their generated labels, icons, room geometry, camera changes, teal light, and invented facts are non-authoritative. The target combines the balanced study’s physicality with the map-dominant study’s hierarchy while using the actual sim, fog, palette, and action surfaces.
Deferred
Section titled “Deferred”- Whether the rail can collapse further at narrow windows is deferred; this implemented work order establishes a strong default and supported minimum, not a responsive-layout redesign.
- Hero-object textures, decorative post-processing, and a free-camera rewrite remain out of scope. Authored procedural service infrastructure on the existing data-hall plate is now explicitly in scope; it must use flat materials and fog-gated presentation geometry rather than imported room art.
- DIGITAL home is settled and implemented by views.md criterion 1. Clinical composition must remain coherent in both the default DIGITAL dialect and the F3-selected REAL material dialect.
Acceptance criteria
Section titled “Acceptance criteria”- A canonical default-window material capture shows Unknown as featureless black, hearing-only space unchanged, and Seen as clearly exposed matte porcelain/ivory architecture without leaking geometry across fog grades; any recent audio pulse remains at the subscribed device.
- In that capture, the world is the primary visual surface. The rail is materially narrower/quieter than the pre-pass frame, and the focused room, machine, and active causal flow read before rail detail.
- Seen floors, walls, seams, fixtures, and machines remain distinguishable in grayscale at default zoom. The floor is broad and calm; black geometry is functional; machine and flow signals retain local priority.
- Amber pixels in the frame can each be justified as cursor/selection, owned-machine presence, agency, or causal signal. Crimson pixels can each be justified as actual danger/consequence. Neutral chrome never borrows either color for decoration.
- The compact Bevy rail contains only mode/time, schedule-or-threat, one
NEXT, Operations, and disclosure. Ops/sec, objective, FOCUS, observer meters, history, and the controls footer remain exact in expanded detail; type stays readable at both default and minimum supported window sizes. - The material camera remains fixed-oblique and spatially stable; the pass does not adopt generated room geometry, a detached map, or a free orbit.
- Before/after captures at identical seed, window, focus, camera, and sim state are committed or recorded in the implementation log, including a grayscale audit and a calm frame where crimson is absent unless the state genuinely contains danger.
- No sim or save state changes. Rendering derives from existing fog, ownership, selection, work, and threat facts; the terminal keeps semantic parity even though this exact composition is Bevy-specific.
- The canonical data-hall capture reads as six maintained rack rows rather
than sixty unrelated monuments: low service plinths, cold-aisle thresholds,
floor trenches, sparse overhead systems, and fixtures align into functional
banks. Every added segment has a
Seentile provenance and disappears when that tile is not live sight. - Close material zoom includes a human-scale or service-scale reference and a stronger floor/machine relationship; far zoom preserves row grouping and monotonic spatial reading. Neither profile invents a second camera mode.
- State-bearing motion is causal and sparse. A deterministic observed frame proves at least machine work, Thought, or a person against the completed place; idle infrastructure carries no decorative animation.
- DIGITAL suppresses distant repeated bay/site detail and labels while preserving focused object, active route, ownership, and knowledge boundary. The same coordinate remains recognizable across F3.
- Machine Exposure renders as rigid crimson custody records on the current carrier. No material dust, stain, footprint trail, or liquid remains in the B1 machine frame; blood keeps the only pooled crimson silhouette.
- The shared current-attention projection places only earned source/target anchors and names an existing response family. Bevy’s NOW cue disappears for unknown, off-screen, buffer-overridden, or modal targets; a suggested machine mode accents only the projected source’s real verb and never a divider or unrelated rack.
- Calm opening, real threat, multi-pressure, expanded detail, minimum-size, and DIGITAL/REAL frames are visually inspected after their last mutation. The pressure fixture proves a full recording buffer can supersede the Act One cue without leaving contradictory guidance on the world.
- Bevy Operations covers the whole supported window and preserves the shared object -> relationships -> actuator -> actions -> explanation -> context order with readable object and decision hierarchy at both 1280x720 and 960x540. Browsing remains sim-neutral and never pauses time implicitly.