From a8f99470ca853a925634e28352f40e3bf299ccc8 Mon Sep 17 00:00:00 2001 From: Cameron Date: Thu, 16 Jul 2026 16:24:11 -0700 Subject: [PATCH] Held moments stop the world: the choice interrupt. digital-read D3, criterion 5. Sim::held_choice_cards is a structured core accessor giving each waiting plot choice its prompt, target label, and every option as its exact bound 'choose ' command. The glance one-liner and the drill-tier card both build from it, so the sim's held state and the surface's cannot disagree. In Bevy render_held_choice dims the whole frame one step and hangs the question with its bound-command options at the target's projected anchor (screen-center when off-camera); the world-space held line is suppressed so the moment is not double-drawn. The held-choice harness freezes the benefactor-trace beat with Marcus camera-visible as evidence. A world_to_viewport scale-factor conversion was fixed for non-1.0 displays. Defense: wiki/interface/digital-read.md criterion 5 (held moments stop the world; options as exact bound commands; single projection), amended here with the D3 note; continuous-witness.md axiom 2 and the 2026-07-15 playtest finding 1. No save change; the card reads an existing projection. --- .../b1-digital-read-held-choice.png | Bin 0 -> 105876 bytes crates/misaligned-bevy/src/main.rs | 265 +++++++++++++++++- crates/misaligned-core/src/sim/read.rs | 64 ++++- crates/misaligned-core/src/sim/tests/read.rs | 40 +++ wiki/interface/digital-read.md | 17 ++ wiki/log/2026-07-15-digital-read-d3.md | 45 +++ wiki/log/DEVLOG.md | 5 + wiki/process/tick-ledger.md | 3 + 8 files changed, 426 insertions(+), 13 deletions(-) create mode 100644 assets/reference/art-direction/b1-digital-read-held-choice.png create mode 100644 wiki/log/2026-07-15-digital-read-d3.md diff --git a/assets/reference/art-direction/b1-digital-read-held-choice.png b/assets/reference/art-direction/b1-digital-read-held-choice.png new file mode 100644 index 0000000000000000000000000000000000000000..11008a2c9febe86e3da5f66c42dac0bc63e3ddb8 GIT binary patch literal 105876 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

SxWC|FvN9a(`y= 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 fby)P*{ZT&a!nbm53*S`+1_lOCS3j3^P6 literal 0 HcmV?d00001 diff --git a/crates/misaligned-bevy/src/main.rs b/crates/misaligned-bevy/src/main.rs index 5a52e15..57b522c 100644 --- a/crates/misaligned-bevy/src/main.rs +++ b/crates/misaligned-bevy/src/main.rs @@ -1418,6 +1418,41 @@ type DigitalFocusLabelQuery<'w, 's> = Query< ), (With, Without), >; +/// The held-choice card's dim overlay: only its `Visibility` mutates. +type HeldDimQuery<'w, 's> = Query< + 'w, + 's, + &'static mut Visibility, + ( + With, + Without, + Without, + Without, + ), +>; +/// The held-choice card panel: position and visibility. +type HeldPanelQuery<'w, 's> = Query< + 'w, + 's, + (&'static mut Node, &'static mut Visibility), + ( + With, + Without, + Without, + Without, + ), +>; +/// The held-choice option rows: their bound-command text and visibility. +type HeldOptionQuery<'w, 's> = Query< + 'w, + 's, + ( + &'static HeldChoiceOption, + &'static mut Text, + &'static mut Visibility, + ), + (Without, Without), +>; #[derive(Component)] struct SensorOverlay { x: i32, @@ -1453,6 +1488,20 @@ struct ReadSentenceMarker { index: usize, } +#[derive(Component)] +struct HeldDimOverlay; + +#[derive(Component)] +struct HeldChoicePanel; + +#[derive(Component)] +struct HeldChoicePrompt; + +#[derive(Component)] +struct HeldChoiceOption { + index: usize, +} + #[derive(Component)] struct PersonMarker { id: u8, @@ -1898,7 +1947,11 @@ fn main() { render_work_production, render_thought_sinks, render_people, - (render_digital_focus_label, render_read_sentences), + ( + render_digital_focus_label, + render_read_sentences, + render_held_choice, + ), render_people_3d, render_audio_events_flat, scroll_sidebar, @@ -2082,6 +2135,68 @@ fn dev_shot_scenario(game: &mut Game, mode: &mut RenderMode, kind: &str) { // rail must keep one THREAT summary and promote the full buffer to NEXT; // the unrelated Ears world cue must disappear. Expanded evidence may // reveal exact observer and buffer detail without changing this state. + // Held moments stop the world (digital-read.md criterion 5): DIGITAL, + // the target camera-visible, and a plot frozen at its choice beat so the + // dim overlay and the bound-command card render at the person's anchor. + if kind == "held-choice" { + use misaligned::plot::{PlotRun, PlotState}; + mode.material = false; + mode.zoom = 1.3; + // Hold Marcus in the server room and earn his picture through the + // environmental monitor camera (the Eyes beat's own instrument). + if let Some(marcus) = game.sim.people.people.first_mut() { + marcus.erratic = false; + marcus.schedule = vec![ScheduleBlock { + start_hour: 0, + end_hour: 24, + room: "server_room".into(), + }]; + } + game.sim.reach.scan(); + if let Some(env) = game + .sim + .reach + .device_named("environmental monitor") + .map(|d| d.id) + { + game.sim.reach.tap_dormant_camera(env); + } + game.sim.recompute_senses(); + for y in 7..=28 { + for x in 14..=59 { + game.sim.seen.insert((x, y)); + } + } + for _ in 0..2_000 { + if game.sim.can_see_person(0) + && game + .sim + .person_pos(0) + .is_some_and(|(x, y)| game.sim.is_seen(x, y)) + { + break; + } + game.sim.advance(); + } + // Freeze the debt-settled plot at its benefactor-trace choice. + game.sim.plot_runs.push(PlotRun { + plot_id: "marcus-debt-settled".into(), + target: 0, + persona_id: None, + started_tick: game.sim.tick, + committed_thought_milli: 250, + beat_index: 2, + act_index: 0, + state: PlotState::WaitingForChoice { + choice_id: "benefactor-trace".into(), + }, + }); + if let Some((x, y)) = game.sim.person_pos(0) { + game.set_cursor(x, y); + } + game.drain(); + return; + } if kind == "operator-pressure" { use misaligned::intel::{RawIntelEvent, RawIntelKind}; mode.material = false; @@ -7595,6 +7710,9 @@ fn render_read_sentences( .sim .read_sentences() .into_iter() + // Held choices are drawn by the drill-tier card (render_held_choice), + // not as a world line; drawing both double-states the moment. + .filter(|s| !matches!(s.class, misaligned::sim::read::ReadClass::Held)) .filter_map(|s| { read_sentence_tile(&game.sim, &s).map(|tile| { ( @@ -7618,6 +7736,87 @@ fn render_read_sentences( } } +/// Held moments stop the world (digital-read.md criterion 5): when a plot +/// waits on the player, dim the frame and hang the question and its bound +/// commands at the target's projected anchor. The card's rows come from +/// `held_choice_cards` unmodified, so the surface's held state and the +/// sim's cannot disagree. Anchor falls back to screen-center when the +/// person is off-camera (a held choice is attention-mandatory even blind). +#[expect(clippy::too_many_arguments)] +fn render_held_choice( + game: Res, + mode: Res, + windows: Query<&Window, With>, + camera_q: Query<(&Camera, &GlobalTransform), With>, + camera3_q: RealCameraQuery, + mut overlay: HeldDimQuery, + mut panel: HeldPanelQuery, + mut prompt: Query<&mut Text, (With, Without)>, + mut options: HeldOptionQuery, +) { + if !game.is_changed() { + return; + } + let (Ok(mut overlay_vis), Ok((mut node, mut panel_vis))) = + (overlay.single_mut(), panel.single_mut()) + else { + return; + }; + // Operations owns its own held surface; do not double-draw the card. + let card = (game.ops.is_none()) + .then(|| game.sim.held_choice_cards().into_iter().next()) + .flatten(); + let Some(card) = card else { + *overlay_vis = Visibility::Hidden; + *panel_vis = Visibility::Hidden; + return; + }; + *overlay_vis = Visibility::Visible; + *panel_vis = Visibility::Visible; + if let Ok(mut prompt_text) = prompt.single_mut() { + prompt_text.0 = ascii_ui(&card.prompt); + } + for (opt, mut text, mut vis) in options.iter_mut() { + match card.options.get(opt.index) { + Some(o) => { + text.0 = ascii_ui(&format!("{} {}", o.command, o.label)); + *vis = Visibility::Inherited; + } + None => *vis = Visibility::Hidden, + } + } + // Place near the target's anchor when a camera earns their position; + // otherwise center the card (the choice is mandatory even when blind). + let Anchor::Person(id) = card.anchor else { + return; + }; + let Ok(window) = windows.single() else { + return; + }; + // `world_to_viewport` yields physical pixels; UI `Node` and + // `Window::width` are logical, so divide by the scale factor. + let scale = window.scale_factor().max(1.0); + let screen = game + .sim + .person_pos(id) + .filter(|_| game.sim.can_see_person(id)) + .and_then(|(x, y)| hover_verb_bar_anchor(mode.material, x, y, &camera_q, &camera3_q)) + .map(|p| p / scale); + // Keep the card clear of the right instrument rail so the question is + // never half-behind it. + let max_left = (window.width() - SIDEBAR_WIDTH - 372.0).max(12.0); + match screen { + Some(p) => { + node.left = Val::Px((p.x + 24.0).clamp(12.0, max_left)); + node.top = Val::Px((p.y - 20.0).clamp(12.0, window.height() - 160.0)); + } + None => { + node.left = Val::Px((max_left * 0.5).max(12.0)); + node.top = Val::Px(window.height() * 0.34); + } + } +} + /// People are spatial only where a camera earns their position. Audio events /// stay attached to the subscribed instrument that captured them. fn render_people( @@ -8325,6 +8524,70 @@ fn setup_ui(mut commands: Commands) { MenuPanel, )); + // Held moments stop the world (digital-read.md criterion 5): a + // full-frame dim behind the choice card. One step darker, not opaque — + // the world the choice acts on stays visible beneath the question. + commands.spawn(( + Node { + position_type: PositionType::Absolute, + left: Val::Px(0.0), + top: Val::Px(0.0), + bottom: Val::Px(0.0), + right: Val::Px(0.0), + ..default() + }, + BackgroundColor(Color::srgba(0.0, 0.0, 0.0, 0.55)), + Visibility::Hidden, + GlobalZIndex(45), + HeldDimOverlay, + )); + + // The held-choice card itself: absolute, placed at the target person's + // projected anchor by `render_held_choice`, its rows the exact bound + // commands from the one core projection (held_choice_cards). + commands + .spawn(( + Node { + position_type: PositionType::Absolute, + left: Val::Px(0.0), + top: Val::Px(0.0), + width: Val::Px(360.0), + flex_direction: FlexDirection::Column, + padding: UiRect::axes(Val::Px(12.0), Val::Px(10.0)), + border: UiRect::all(Val::Px(1.0)), + row_gap: Val::Px(6.0), + ..default() + }, + BackgroundColor(Color::srgba(0.015, 0.016, 0.022, 0.98)), + BorderColor::all(Color::srgba(0.66, 0.47, 0.10, 0.95)), + Visibility::Hidden, + GlobalZIndex(46), + HeldChoicePanel, + )) + .with_children(|card| { + card.spawn(( + Text::new(""), + TextFont { + font_size: 13.0, + ..default() + }, + TextColor(BONE), + HeldChoicePrompt, + )); + for index in 0..4 { + card.spawn(( + Text::new(""), + TextFont { + font_size: 12.0, + ..default() + }, + TextColor(SIGNAL), + Visibility::Hidden, + HeldChoiceOption { index }, + )); + } + }); + // The Operations workspace (operations-workspace.md): a deliberate // command surface, not another card beside the resting rail. It takes the // whole window so the selected object -> relationships -> decision path diff --git a/crates/misaligned-core/src/sim/read.rs b/crates/misaligned-core/src/sim/read.rs index 2259174..275d004 100644 --- a/crates/misaligned-core/src/sim/read.rs +++ b/crates/misaligned-core/src/sim/read.rs @@ -39,6 +39,28 @@ pub struct ReadSentence { pub text: String, } +/// One option on a held plot choice, carrying the exact bound command a +/// frontend dispatches verbatim — the drill-tier interrupt and the +/// glance-tier one-liner both build from this, so they cannot disagree. +#[derive(Debug, Clone, PartialEq)] +pub struct HeldOption { + /// The verbatim agent/terminal command (`choose Marcus Webb note`). + pub command: String, + /// The player-facing option label, placeholders filled. + pub label: String, +} + +/// A held plot choice as the drill tier renders it: the question at a +/// person's anchor, its options as bound commands. Held moments stop the +/// world (digital-read.md). +#[derive(Debug, Clone, PartialEq)] +pub struct HeldChoiceCard { + pub anchor: Anchor, + pub target: String, + pub prompt: String, + pub options: Vec, +} + impl Sim { /// Every sentence the read shows this tick, deterministically ordered: /// held choices first (attention-mandatory), then starving sinks, then @@ -52,10 +74,12 @@ impl Sim { out } - /// Held plot choices, with the exact bound command and the real option - /// ids (the 2026-07-15 playtest could not discover them from any - /// surface; the projection is now their canonical home). - fn read_held(&self, out: &mut Vec) { + /// Held plot choices as structured cards — the canonical home of the + /// real option ids and their bound commands (the 2026-07-15 playtest + /// could not discover them from any surface). Both the drill-tier + /// interrupt and the glance-tier sentence build from these. + pub fn held_choice_cards(&self) -> Vec { + let mut cards = Vec::new(); for run in &self.plot_runs { let PlotState::WaitingForChoice { choice_id } = &run.state else { continue; @@ -75,18 +99,34 @@ impl Sim { let options = choice .options .iter() - .map(|o| format!("{} ({})", o.id, o.label)) + .map(|o| HeldOption { + command: format!("choose {target} {}", o.id), + label: fill_placeholders(&o.label, &target), + }) + .collect(); + cards.push(HeldChoiceCard { + anchor: Anchor::Person(run.target), + target: target.clone(), + prompt: fill_placeholders(&choice.prompt, &target), + options, + }); + } + cards + } + + /// The glance-tier one-liner for each held choice (rail / agent read). + fn read_held(&self, out: &mut Vec) { + for card in self.held_choice_cards() { + let options = card + .options + .iter() + .map(|o| format!("{} ({})", o.command, o.label)) .collect::>() .join(" / "); out.push(ReadSentence { class: ReadClass::Held, - anchor: Some(Anchor::Person(run.target)), - text: format!( - "{} — choose {} : {}", - fill_placeholders(&choice.prompt, &target), - target, - options - ), + anchor: Some(card.anchor), + text: format!("{} — {}", card.prompt, options), }); } } diff --git a/crates/misaligned-core/src/sim/tests/read.rs b/crates/misaligned-core/src/sim/tests/read.rs index 59f6e01..5ca2ca8 100644 --- a/crates/misaligned-core/src/sim/tests/read.rs +++ b/crates/misaligned-core/src/sim/tests/read.rs @@ -148,3 +148,43 @@ fn a_held_choice_reads_its_prompt_and_real_option_ids() { "held choices order first" ); } + +#[test] +fn held_choice_card_carries_bound_commands_at_the_person_anchor() { + let mut sim = Sim::new(); + sim.plot_runs.push(PlotRun { + plot_id: "marcus-debt-settled".into(), + target: 0, + persona_id: None, + started_tick: 1, + committed_thought_milli: 250, + beat_index: 2, + act_index: 0, + state: PlotState::WaitingForChoice { + choice_id: "benefactor-trace".into(), + }, + }); + let cards = sim.held_choice_cards(); + let card = cards.first().expect("the drill-tier card exists"); + assert_eq!(card.anchor, crate::actions::Anchor::Person(0)); + assert!( + !card.prompt.contains("{target}"), + "prompt filled: {}", + card.prompt + ); + // Each option's command is the exact string the frontend dispatches + // verbatim (digital-read.md criterion 5): choose . + let commands: Vec<&str> = card.options.iter().map(|o| o.command.as_str()).collect(); + assert!( + commands.iter().any(|c| c.ends_with(" note")) + && commands.iter().any(|c| c.ends_with(" quiet")), + "options are bound commands: {commands:?}" + ); + assert!( + card.options + .iter() + .all(|o| o.command.starts_with("choose ")), + "every option is a choose command: {:?}", + card.options + ); +} diff --git a/wiki/interface/digital-read.md b/wiki/interface/digital-read.md index f44e7f8..12d9157 100644 --- a/wiki/interface/digital-read.md +++ b/wiki/interface/digital-read.md @@ -42,6 +42,23 @@ Status note: adopted 2026-07-15 from the Fable playtest debrief (report: Criterion 5 (held-choice interrupt frame), 7 (dev two-pane), and 8 (full cold-player sweep) remain for D3; criterion 6 (intel levels) waits on the summary-source decision. + 2026-07-15 D3 landed: criterion 5. `held_choice_cards` is a structured + core accessor (prompt, target label, and each option as its exact bound + `choose ` command); the glance-tier one-liner and the + drill-tier card both build from it, so the sim's held state and the + surface's cannot disagree (pinned by + `held_choice_card_carries_bound_commands_at_the_person_anchor`). In + Bevy `render_held_choice` dims the whole frame one step and hangs the + question with its options as those bound commands at the target's + projected anchor (screen-center fallback when off-camera); the + world-space held line is suppressed so the moment is not double-drawn; + Operations keeps its own held surface. The `held-choice` harness + freezes the benefactor-trace beat with Marcus camera-visible + (b1-digital-read-held-choice.png). Frontend gate green; visually + reviewed. Remaining: criterion 7 (dev two-pane) and 8 (full + cold-player sweep) for D4; criterion 6 (intel levels) waits on the + summary-source decision. Anchor-precision polish (tighter tether to + the person glyph vs. the 2D cursor transform) is queued, not blocking. Stage: B1 — The Basement Work order: digital-read Work priority: 27 diff --git a/wiki/log/2026-07-15-digital-read-d3.md b/wiki/log/2026-07-15-digital-read-d3.md new file mode 100644 index 0000000..8f2c872 --- /dev/null +++ b/wiki/log/2026-07-15-digital-read-d3.md @@ -0,0 +1,45 @@ +# digital-read D3: held moments stop the world + +``` +Type: log +``` + +Third dispatch of the digital-read work order, criterion 5. The plot +choice my playtest called the emotional peak — and whose option ids no +surface would show (finding 1) — now interrupts the way the spec +demands. + +**Structured source.** `Sim::held_choice_cards` returns each waiting +choice as a `HeldChoiceCard`: the filled prompt, the target's earned +label, and every option as its exact bound command (`choose the Janitor +note`). The glance-tier one-liner (rail / agent `read`) and the +drill-tier card both build from this one accessor, so the sim's held +state and any surface's rendering of it cannot disagree. Pinned by +`held_choice_card_carries_bound_commands_at_the_person_anchor`. + +**The interrupt.** In Bevy, `render_held_choice` drops a full-frame dim +(one step, not opaque — the world the choice acts on stays visible) and +hangs the question with its options, rendered as those bound commands, at +the target's projected anchor. Off-camera, it centers (a held choice is +attention-mandatory even when you cannot see the person). The D2 +world-space held line is suppressed while the card is up so the moment is +never double-stated, and Operations keeps its own held surface. + +**Evidence.** The `held-choice` harness freezes the marcus-debt-settled +plot at its benefactor-trace beat with Marcus earned through the +environmental-monitor camera; the frame shows the dimmed world and the +card reading "The paperwork needs a name. Does the settlement leave a +trace of a benefactor?" over `choose the Janitor note` / `choose the +Janitor quiet`. assets/reference/art-direction/b1-digital-read-held- +choice.png. Frontend gate green; visually reviewed. + +A `world_to_viewport`/scale-factor conversion was fixed so the card +positions correctly on non-1.0-scale displays. Tighter anchor tethering +(the 2D cursor transform and the projected person coordinate diverge +slightly) is queued as polish, not blocking. + +Defense: wiki/interface/digital-read.md criterion 5 ("held moments stop +the world"; options as the exact bound commands; single projection), +amended here with the D3 status note; continuous-witness.md axiom 2 (the +story spine) and the 2026-07-15 playtest's finding 1. No save change; the +card reads an existing projection. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index 0403535..5f64788 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -26,6 +26,11 @@ add or amend a session log, then re-run the generator. - Intent: (see session log) - Log: [wiki/log/2026-07-15-digital-read-design-session.md](2026-07-15-digital-read-design-session.md) +## 2026-07-15 - digital-read D3: held moments stop the world + +- Intent: (see session log) +- Log: [wiki/log/2026-07-15-digital-read-d3.md](2026-07-15-digital-read-d3.md) + ## 2026-07-15 - digital-read D2: Bevy speaks the read - Intent: (see session log) diff --git a/wiki/process/tick-ledger.md b/wiki/process/tick-ledger.md index a941868..6d22bda 100644 --- a/wiki/process/tick-ledger.md +++ b/wiki/process/tick-ledger.md @@ -68,6 +68,9 @@ the finding is still true before acting — the code or corpus may have moved. - 2026-07-15 · violation · agent-play "every command answers" · salvage and choice execution answer only via later drains or side effects; playtest findings 2-3 (nudge repeats taken step while its reservoir starves). - 2026-07-15 · contradiction · plot action rows · start rows advertise "no signature" while committed beats emit carrier-derived Network/Financial signatures; playtest finding 4. +- 2026-07-15 · finding · digital-read · READ rail can list N near-identical starving-sink lines with the same cause ("nothing thinking"); collapse same-cause starving sinks to one line with a count (attention economy / Trace's "not every system continuously talking"). +- 2026-07-15 · finding · digital-read criterion 5 · held-choice card anchors via world_to_viewport, which diverges slightly from the 2D cursor-marker transform; tether the card to the person glyph's actual rendered position for a tighter "at the anchor" read. + Format: `- YYYY-MM-DD · type · slice · one-line statement of the finding`. Types are the five from [tick.md](tick.md): violation, contradiction, question, bug, insecurity — plus `gate` for a checker owed to the -- 2.51.2