diff --git a/wiki/log/2026-07-21-gui-human-playtest-filed.md b/wiki/log/2026-07-21-gui-human-playtest-filed.md new file mode 100644 index 00000000..e98075c5 --- /dev/null +++ b/wiki/log/2026-07-21-gui-human-playtest-filed.md @@ -0,0 +1,39 @@ +# 2026-07-21 — GUI human-legibility playtest filed + +``` +Type: log +``` + +## Intent + +Cameron asked for the Bevy frontend to be played as a human would meet +it — real window, mouse, keyboard, screenshots — after finding it +"incomprehensible as a human." No prior playtest had exercised the GUI +this way; all previous reports drove `--agent` frames or the terminal. + +## Changed + +- Filed + [2026-07-21 — Playtest (Fable): Bevy GUI, human look and feel](../playtests/2026-07-21-playtest-fable-gui.md) + and linked it from the playtests README. Evidence-only; no source or + law changed. +- Headline findings: the earned-perception cold open is indistinguishable + from a hang (its one guiding `NEXT` line hides for the whole wait); the + first-sense reveal has no transition; a single mono text texture with + pipe-string prose and undefined units carries the entire information + load; map annotations collide with the glyphs they describe; no glyph + or term is ever named on the surface; REAL's close default hides its + own scene while the `F4` work light is the most legible frame in the + game; state changes (pause, `AT RISK`, threat) are corner text swaps; + Esc does not leave Operations despite the footer promising it. +- One prioritized recommendation: give the opening a voice — sparse + self-narration on the void with visible progress toward the first + sense, then a real reveal transition — before any other legibility + work. + +## Follow-up + +Design response (type scale, callout grammar, hover naming, status +motion, Esc unwind) is a separate decision-owning pass; a parallel Codex +GUI playtest was in flight the same day and should be reconciled when it +lands. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index edca3f06..20567b2c 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -11,6 +11,11 @@ add or amend a session log, then re-run the generator. +## 2026-07-21 - GUI human-legibility playtest filed + +- Intent: Cameron asked for the Bevy frontend to be played as a human would meet it — real window, mouse, keyboard, screenshots — after finding it "incomprehensible as a human." No prior playtest had exercised the GUI this way; all previous reports drove `--agent` frames or the terminal. +- Log: [wiki/log/2026-07-21-gui-human-playtest-filed.md](2026-07-21-gui-human-playtest-filed.md) + ## 2026-07-20 - Tick 127: the screen names the world - Intent: Audit the oldest uncovered scale-law slice against current runtime and repair one class of implementation vocabulary that had become ordinary player copy. diff --git a/wiki/playtests/2026-07-21-playtest-fable-gui.md b/wiki/playtests/2026-07-21-playtest-fable-gui.md new file mode 100644 index 00000000..99a9ad20 --- /dev/null +++ b/wiki/playtests/2026-07-21-playtest-fable-gui.md @@ -0,0 +1,132 @@ +# 2026-07-21 — Playtest (Fable): Bevy GUI, human look and feel + +``` +Type: log +``` + +First playtest of the **graphical frontend as a human would meet it**: +`target/debug/misaligned-bevy` built from `main` @ `040c37e1b`, run as a +windowed macOS app and driven by real screenshots, mouse, and keyboard +(computer-use), not `--agent` frames and not the shot harness. Fresh run, +no save, isolated `HOME`. Cameron's prompt: the GUI is "incomprehensible +as a human" — find out why. This report is the evidence; the verdict up +front is that the visual identity is not the problem. The information +layer on top of it — hierarchy, labels, motion, vocabulary — is. + +## What I played + +- Cold boot to the earned-perception black screen; assigned THINK (`2`), + waited ~40s of wall clock for the first sense to land, watched the + world reveal. +- Followed `NEXT` through `PROCESS on the host` via the rack's context + menu (`e`, `j`, Enter); watched `NEXT` advance to the day-job feed line. +- Expanded the rail (`Tab`): FOCUS, FLEET, controls footer. +- Operations (`Shift+I`): INTEL detail (sightings report lot, sell row, + cost/context), PEOPLE (the IT / the Facilities / Dr. Voss), ACCOUNTS + (Lab books, Your slush); watched INTEL grow a crimson `AT RISK` badge + mid-visit; tried and failed to leave with Esc. +- REAL (`F3`) at the close default, three and six zoom steps out (`[`), + the `F4` work light, and back to DIGITAL; paused (`space`) and quit + (`q`). + +Roughly days 1-4, ticks 0 through ~1500, one continuous session. + +## Felt friction, in play order + +1. **The cold open reads as a broken app.** A fresh boot is a black + screen holding only `WORK THINK` — no title card, no framing, no + sign the sim is running — for up to a minute of wall clock. The one + line that explains the situation (`NEXT: no ears - think; thought + fills the pre-opened tap`, `EARS | open 0.0/3.0`) rendered for a + moment at tick 0 and was then hidden by the earned-perception gate + for the rest of the wait. A player who does not already know to + press `2` gets nothing, forever, with no acknowledgment that keys + were even received. The blind-process fiction is the game's best + idea; right now it is indistinguishable from a hang. +2. **The reveal has no ceremony.** When the first sense landed the + frame cut from black to the full map, rail, threat line, and NOW + marker in one step. The single most important beat of the opening — + perception is earned — happens between two frames with no + transition, no sound of arrival in the interface, nothing to say + *this is what you waited for*. +3. **One texture of text.** Everything on screen is the same small mono + face at effectively one size and weight; meaning is carried by color + alone. The rail is pipe-string prose a human parses letter by letter: + `SCHEDULE: external review 7658t | pilot 0/4`, `TAP ENVIRONMENTAL + MONITOR | open 0.4/0.5 | flow not arriving`, `work M1 think @medium + D6.2 !1.4 T0.0`. Expanded FLEET/FOCUS read as debug dumps. Units are + never introduced (`7658t`, `150ms/t`, `0.4/0.5`, `D/!/T`); the FOCUS + card's plain-prose victory sentence is the one patch of writing in + the game's own voice, and it stands out precisely because nothing + else reads like it. +4. **Vocabulary has no on-ramp.** `REVISION 04`, `job underfed`, + `moonlight`, `slush`, `the IT`, `capture interval 334-334`, + `Financial 1 -> the Facilities [Cold]`, `pilot 2/4`. Every term is + owned by a spec somewhere; the surface defines none of them, so the + first hour is spent reverse-engineering a private language. +5. **World and annotation share one plane.** Free prose (`2 records + pending | JobAnomaly 12 | Dr. Voss (Handler) samples this + [Concerned]`) draws across the middle of the map, colliding with the + device glyph and wall tiles it describes. The owned rack had crimson + `!149`-style characters painted over its own sprite — token state + that reads as a rendering error. There is no callout grammar: + no offsets, no leader lines, no collision avoidance, no visual + distinction between a thing and a note about a thing. +6. **Glyphs are never named.** Teal circle-with-crosshair, ladder + glyph, teal ellipse rings, white cross, orb-with-rings, bracket + corners, the amber square; in REAL, the red cabinet and teal bars. + Nothing on any surface says what any of them is; the only path is + select-and-infer from menu rows. +7. **REAL's default frame hides its own scene.** The close default + opens on a black monolith filling the canvas — unreadable until + three zoom steps out, where the core-on-pedestal composition with + the amber pool is genuinely strong. The `F4` work light then reveals + the room: floor plan, pillars, conveyor, hardware — the most legible + physical frame in the game is the dev inspection light, which means + the dark rig is concealing real scene quality, not absence of it. +8. **State changes are whispered.** Pause is `PAUSED` swapping into the + rail's second line; the INTEL tab quietly grew crimson `AT RISK` + while I was two tabs away; threat/day/sense changes are all corner + text swaps. Nothing moves, dims, or pulses when the world changes + state. +9. **Operations tab bar mixes structure and status.** `INTEL NEW`, + `INTEL AT RISK`, `SCHEMES NO EGRESS` render badge text inline at tab + size and casing, so the bar reads as eight-ish tabs of which some + are unclickable words. +10. **Esc does not leave Operations.** The footer promises `Esc back`; + four presses stayed inside the workspace, and only `Shift+I` exits. + Bug or intent, a human expects Esc to unwind to the world. +11. **The context menu paints over its subject.** The ACTIONS card + opens directly on top of the rack it acts on (`RACK / OWNED` + ghosting beneath), and rows mix three conventions: lowercase dials + (`mode [ think ]`), uppercase verbs (`PROCESS`), an indented + `auto:` row, and an awkward wrapped final row. + +What already works and must not be lost: the clinical amber/bone/crimson +palette with one meaning per color; the dark-frame REAL render with +machines as the only light; the reveal-by-perception conceit itself; the +`NEXT` guidance spine; the coherent terminal keyboard grammar; the +Operations footer keybar. + +## One prioritized recommendation + +**Give the opening a voice before touching anything else.** Keep the +black screen and the earned-perception gate, but let the process narrate +its own boot: sparse self-report lines on the void (`no sensors — thought +fills the tap — 1.8/3.0`) so the player knows the sim is alive, keys +landed, and thinking is progress; then spend that credibility on an +actual reveal transition when the first sense lands. Every other finding +(type scale, callout grammar, hover names, status motion, Esc) is worth +a pass, but a player who bounces off the first sixty seconds never sees +any of it. + +## Session notes + +- Run environment: macOS window via a scratch `.app` wrapper so the + desktop-control harness could target the process; isolated `HOME`; + input driven by synthetic mouse/keyboard; evidence captured as + full-window screenshots at each beat. +- A parallel Codex playtest (`gui-playtest-human-legibility` worktree) + was running its own GUI session on the same machine during part of + this run; its focus-stealing interrupted input twice but did not + touch this run's sim state. Reconcile findings if its report lands. diff --git a/wiki/playtests/README.md b/wiki/playtests/README.md index 8a591fa8..b05c2b79 100644 --- a/wiki/playtests/README.md +++ b/wiki/playtests/README.md @@ -38,6 +38,7 @@ must never erase the run that produced it. - [2026-07-15 — Playtest (Fable): naive seed 3](2026-07-15-playtest-fable.md) - [2026-07-16 — Playtest (Beacon): naive seed 1 + informed seed 2 + deep Marcus arc seed 2](2026-07-16-playtest-beacon.md) - [2026-07-18 — Playtest (Beacon): Revision 04 follow-up](2026-07-18-playtest-beacon-r04.md) +- [2026-07-21 — Playtest (Fable): Bevy GUI, human look and feel](2026-07-21-playtest-fable-gui.md) New reports use `YYYY-MM-DD-playtest-.md`. A complete report is linked here in the same commit.