From d97e1fc46746b2d789bdda414ac85fe429bee838 Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 8 Jul 2026 20:09:39 -0700 Subject: [PATCH] Computer visual language: signal kit in the asset tester (design session). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rack states widen from dead/powered/core to dead/foreign/idle/busy/core; claim styles ladder/ring/wash render under Q/W/E with an L lineup view. The kit: cold power dot, amber presence LEDs (amber strictly = mine; foreign activity in dim cold signal), status strip, segmented activity bar with out-of-phase blink on busy machines, core spine (full-height amber beacon, unique geometry), claim mark under test. Warm fill light removed so machine presence is entirely LED-owned. New DRAFT spec wiki/interface/computer-visual-language.md; DESIGN.md decisions entry; ROADMAP #32 (HOLD until Cameron picks the claim mark); session log with lineup renders. Defense: tester-only change (src/bin/assets/, no sim, no game frontend); the pre-session read was constitutionally backwards — the core rack lit its strip in cold SIGNAL while ordinary powered racks glowed amber, so the single most-yours machine read cooler than generic hardware, and a warm scene light washed even dead chassis amber, violating amber = machine presence. The kit restores one-meaning-per-color (amber = my footprint only, SIGNAL = electricity/foreign activity) and carries every axis on a geometry channel too (dot, LED count, bar segments, spine height), per 'information is never carried by color alone'. Game wiring is deliberately withheld until the DRAFT spec goes READY. --- DESIGN.md | 15 + src/bin/assets/mod.rs | 327 ++++++++++------ src/bin/assets/rack.rs | 351 ++++++++++++++++-- wiki/SUMMARY.md | 1 + wiki/art/asset-tester.md | 48 ++- wiki/interface/computer-visual-language.md | 99 +++++ .../2026-07-08-computer-visual-language.md | 83 +++++ .../lineup_ladder.png | Bin 0 -> 852804 bytes .../lineup_ring.png | Bin 0 -> 855972 bytes .../lineup_wash.png | Bin 0 -> 851838 bytes .../single_core_ring.png | Bin 0 -> 887803 bytes .../single_foreign_ring.png | Bin 0 -> 909119 bytes wiki/log/DEVLOG.md | 13 + wiki/process/ROADMAP.md | 19 + wiki/process/specs.md | 1 + 15 files changed, 802 insertions(+), 155 deletions(-) create mode 100644 wiki/interface/computer-visual-language.md create mode 100644 wiki/log/2026-07-08-computer-visual-language.md create mode 100644 wiki/log/2026-07-08-computer-visual-language/lineup_ladder.png create mode 100644 wiki/log/2026-07-08-computer-visual-language/lineup_ring.png create mode 100644 wiki/log/2026-07-08-computer-visual-language/lineup_wash.png create mode 100644 wiki/log/2026-07-08-computer-visual-language/single_core_ring.png create mode 100644 wiki/log/2026-07-08-computer-visual-language/single_foreign_ring.png diff --git a/DESIGN.md b/DESIGN.md index 41dc1da..5322c12 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -1839,3 +1839,18 @@ knows."* wiki/interface/narration.md. Seed surfaces (nudge chain, event anchors, watched/last-noticed, audit/pilot clocks) are acknowledged as incomplete fulfillment, not completion. +- **2026-07-08 — Computer visual language: territory at a glance.** Every + computer class (rack, desktop, laptop, phone, camera) shares one signal + kit; the chassis differs, the language never does. Knowing which machine + is yours, which is the core, and whether it is working is ground truth + the player reads off the world, not a panel. Amber emissive strictly + means *my footprint* — the core is the most orange thing in the world + (full-height spine beacon, unique geometry); foreign machines' live + activity renders in cold signal only, zero warmth. Machine presence is + LED-owned: no warm scene light anywhere (the tester's amber fill light + was removed for washing dead chassis warm). Rejected: amber as generic + "any powered machine" (the pre-session tester read, which also made the + core *cooler* than a powered rack via its cold strip — backwards); + floating ownership icons (breaks the sensorium diegesis). The claim-mark + treatment (ladder / ring / wash) is [OPEN] — all three render in the + asset tester. Spec: wiki/interface/computer-visual-language.md (DRAFT). diff --git a/src/bin/assets/mod.rs b/src/bin/assets/mod.rs index bc637a1..997394b 100644 --- a/src/bin/assets/mod.rs +++ b/src/bin/assets/mod.rs @@ -4,7 +4,8 @@ //! cargo run --features bevy_ui --bin misaligned-assets //! ``` //! -//! Controls: drag orbit, scroll zoom, 1/2/3 rack state, Esc quit. +//! Controls: drag orbit, scroll zoom, 1-5 rack state, Q/W/E claim style, +//! L lineup view (all five states side by side), Esc quit. mod palette; mod rack; @@ -14,13 +15,23 @@ use bevy::prelude::*; use bevy::render::view::screenshot::{Screenshot, save_to_disk}; use bevy::window::{CursorGrabMode, CursorOptions, WindowResolution}; -use palette::{AMBER, GUNMETAL, NEAR_BLACK, PORCELAIN}; -use rack::{RackRoot, RackState, spawn_server_rack}; +use palette::{GUNMETAL, NEAR_BLACK, PORCELAIN}; +use rack::{Blink, ClaimStyle, RackRoot, RackState, spawn_server_rack}; -/// Dev screenshot harness (`MISALIGNED_SHOT=rack|dead|powered|core`, -/// path via `MISALIGNED_SHOT_PATH`): apply rack state, settle, save one -/// PNG, exit. Not a player surface — agents capture review shots without -/// a human at the keyboard. +/// Single asset on the pedestal, or all five states side by side. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Resource)] +enum ViewMode { + #[default] + Single, + Lineup, +} + +/// Dev screenshot harness (`MISALIGNED_SHOT=`, path via +/// `MISALIGNED_SHOT_PATH`): apply the staged scene, settle, save one +/// PNG, exit. Kinds: `dead|foreign|idle|busy|core` optionally suffixed +/// `_ladder|_ring|_wash`, or `lineup[_