Files
settled-reach/docs/workshops/control-interaction/workshop-notes.md
T
jpmschweitzerandClaude Opus 4.6 5c3c2a527b docs(workshops): Control & Interaction Workshop outputs
Workshop notes (2 rounds), outcomes document (13 decisions, 27 tickets,
v0.1 interaction model), and updated brief with final lead direction.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 09:34:49 +01:00

70 KiB
Raw Blame History

Workshop Notes: Control & Interaction Scheme — Round 1

Workshop: Control & Interaction Scheme Round: 1 Date: 2026-02-13 Documenter: Qatux Participants: Gestalt, Ozzie, Tyre, Stig, Dudley, Paula, Araminta, Nigel Source: Full responses relayed via team lead (responses delivered as team messages, not written to disk)


Layer 1: Movement & Interaction

1A. Movement Model

Proposals

Gestalt — Walk/Sprint/Careful triad with perception consequences:

  • Walk: default speed. Normal monologue rate, normal footstep volume.
  • Sprint: 1.8x speed. Monologue triggers at 40% rate (character stops thinking, not seeing). Loud footsteps (D-018 implications). Sprint suppresses interaction computation (confirmed by Dudley).
  • Careful: 0.5x speed. Monologue triggers at 150% rate, "tell notice bonus" (enhanced observation), quiet footsteps.
  • NO vision cone change for any speed mode. Perception change is cognitive (monologue rate), not sensory (cone size).
  • Emergent surveillance pattern: sprint ahead to get position → careful to wait and observe → walk when target passes. Speed modes compose into tactics.
  • v0.1 minimum: Walk + Sprint only. Careful deferred.

Tyre — Tile-based movement, non-negotiable:

  • Entire server stack is tile-based: shadowcasting, chunks, pathfinding. Free movement introduces floating-point non-determinism (D-010 violation).
  • Client-side Tween interpolation (100-150ms) provides visual smoothness — character glides between tiles, player never sees grid snapping.
  • Mouse facing is client-side float for rendering; server only needs the facing octant.
  • Tile occupancy gives trivial collision detection.

Dudley — Tiles-per-tick with specific values:

  • Walk = 1 tile per 2 ticks. Sprint = 1 tile per 1 tick. Sneak = 1 tile per 3 ticks.
  • Movement cooldown via tick counting. Mode changes are input events, take effect next tick.
  • Sprint suppresses interaction computation (aligns with Gestalt's reduced awareness).
  • Total interaction system tick cost: <0.5ms.
  • Existing code: compute_nearby_interactions in interaction.rs (ticket #404). Manhattan distance filtering, VerbOption lists, NearbyInteractionBuffer per observer.

Nigel — Movement speed as character identity + free movement:

  • Speed MUST affect perception and should be character-defining, not punishing. "Smuggler sprints (knows the station), detective walks (observing)."
  • Second playthrough reveals different monologue triggers on same routes at different speeds.
  • Proposes free movement with tile-based collision for emergent positioning (eavesdropping angles, peeking corners).
  • Active eavesdropping via physical positioning, not passive-only.

Consensus

  • Multiple movement speeds with perception consequences. Gestalt's triad is broadly supported. Dudley provides server-side tick values. Nigel endorses speed affecting perception. No one argues for a single movement speed.
  • Client-side interpolation hides the grid. Tyre's Tween approach (100-150ms) means the player doesn't experience tile-snapping. Uncontested.

Disagreements

  • TILE-BASED VS. FREE MOVEMENT. Tyre says tile-based is non-negotiable (D-010 determinism). Dudley's server model assumes tile-based (tiles-per-tick). Nigel explicitly proposes free movement with tile-based collision — a direct contradiction. Nigel's argument (emergent positioning for eavesdropping, peeking corners) is a gameplay case; Tyre and Dudley's argument is a technical requirement. This must be resolved in Round 2.
  • Naming: "Careful" vs. "Sneak". Gestalt calls the slow mode "Careful" (observation focus). Dudley calls it "Sneak" (stealth focus). These imply different design intent — is the slow mode about seeing more or being heard less? Potentially both, but the framing matters.
  • v0.1 scope: two speeds or three? Gestalt says Walk + Sprint for v0.1 (defer Careful). Dudley specifies all three with tick values. Needs alignment.

Open Questions

  • OQ-01: What is the tile size in world units?
  • OQ-02: Does Gestalt's "Careful" = Dudley's "Sneak"? Or are they different modes that could coexist?
  • OQ-03: How does Nigel's emergent positioning (eavesdrop angles, peek corners) work in a tile-based system? Can Tyre's interpolation provide the feel of free positioning while maintaining tile-based simulation?

1B. Interaction (Cursor, Verbs, Menus)

Cursor Design

Ozzie — Cursor duality validated:

  • Switching between interaction prompt and weapon reticle feels natural (every immersive sim does this). Facing direction bridges the modes.
  • 100-150ms morph animation between cursor states.
  • KEY PROPOSAL: Weapon-selected mode suppresses interaction prompts unless player de-selects weapon or holds modifier key (Shift). "Combat intent trumps social intent."

Araminta — Four cursor states with insert styling (full visual spec):

State Visual Color Behavior
Default Four thin inward-pointing ticks, bloom White-blue #c8d0e0 Barely visible, insert's own cursor
Entity hover Ticks expand outward (150ms), corner brackets frame entity Shifts to D-033 relationship color Verb tooltip in insert styling. Bloom pulse ~10% brighter on entity outline
Object hover Ticks rotate 45° to X-shape Muted grey #8b8ba0, amber #e8c547 if flagged Simpler frame than entity
Weapon aim Hard transition, ticks extend, center gap widens, lines thicken 1→2px Warm white #f0e8d8, NO bloom Entity in sights tints to D-033 — "green tint aiming at friend should feel wrong"
  • All transitions 150ms linear. z-layer 7. Never changes by zone or narrative state (D-045 compliance).

Stig — Four cursor states (UX spec):

State Visual Behavior
Default Small dot/minimal crosshair Barely there
Entity hover (single action) Floating label in insert styling Fades in ~150ms. Bloom pulse on entity outline. Verb tooltip visible
Entity hover (multi-option) Primary verb + chevron "Talk ▸" Left click opens compact vertical list anchored to entity position. 2-4 options max
Weapon/aim Sharper reticle Replaces cursor, no bloom
  • Critical UX rule: cursor changes on LOS, not just proximity. Interaction triggers on click within ~2 tiles.
  • Labels render on z-layer 6 (insert overlay). Diegetic test: if insert is off, labels disappear. Passes the "is this information from the character's implant?" test.
  • References: Disco Elysium (world-embedded indicators), Darkwood (minimal cursor), Rimworld (right-click context list).

Entity Interaction Menu

Stig — Vertical list for entities:

  • Entity interactions use a compact vertical list (not radial). 2-4 options, anchored to entity position.
  • Rationale: few options, ordered by priority, quick to scan. Radial reserved for world menu (different action type, different pattern).

Araminta — Pushes for radial on entity interactions too:

  • Disagrees with Stig. Prefers consistent radial pattern across both entity and world interactions.

World Menu (Right-Click)

Stig — Radial, 4 spokes:

Spoke Icon Function
Observe Eye Examine room/environment
Insert Phone Open neural implant UI
Comms Signal Communications
Wait Clock Pass time
  • Drag-release for power users, click-click for newcomers.
  • Geometric lines, thin spokes with icons, nearly transparent. Renders on z-layer 6.
  • v0.1: Start with 2 spokes (Observe + Insert), scale to 5-6 later.

Verb Computation (Server)

Dudley — Two-phase pipeline:

  • Phase 1 (simulation, no KG): Compute maximum possible verb set for entity based on ObjectType component.
    • ObjectType enum: Readable, Container, Terminal, Door, Pickup, Furniture — each with specific verb sets.
  • Phase 2 (observer, reads KG): Filter by character's knowledge state.
    • Confront requires KnowsDetails+ confidence tier.
    • POI priority flips applied.
    • Contradiction markers added where knowledge conflicts detected.
  • Two interaction tiers: visual (requires LOS) and audio (medium range, no LOS, passive only).
  • Extends existing compute_nearby_interactions pipeline (NearbyInteractionBuffer per observer, ObserverSnapshot for knowledge-based adjustments).
  • 9-step per-tick pipeline. Interaction at steps 4-5. One-tick knowledge delay (intentional, imperceptible at 100ms tick rate).

Nigel — Character-archetype verb sets:

  • Same entity, different verbs depending on character. Same crate: smuggler sees "Move/Stash", detective sees "Scan/Flag".
  • Access systems differ: smuggler = social engineering + physical bypasses; detective = institutional authority + lattice authorization.
  • v0.1 minimum verbs: Examine (universal), Talk (universal), Use (contextual), + 2-3 character-specific verbs.

Dudley — Eavesdropping is passive:

  • NO explicit "eavesdrop" or "listen" verb. Sound propagation is passive per D-018. "Your ears are always on."
  • Position yourself in medium range → monologue triggers automatically.

Nigel — Active eavesdropping via positioning:

  • Eavesdropping should be active — player physically positions themselves to overhear. Not purely passive.
  • (Note: this may be compatible with Dudley's "no verb" approach — the action is physical movement, not a button click — but the framing differs. Dudley emphasizes passivity; Nigel emphasizes player agency in positioning.)

Consensus

  • Cursor duality is viable. Ozzie, Araminta, Stig all agree interaction/weapon cursor coexistence works. Visual spec provided.
  • LOS gates interaction. Dudley (visual tier requires LOS), Stig (cursor changes on LOS). Uncontested.
  • Two-phase verb computation. Dudley provides the architecture. Nigel's character-archetype verbs fit as Phase 2 observer filter rules. Compatible.
  • No explicit eavesdrop verb. Dudley and Nigel agree there's no "listen" button — but differ on emphasis (see below).

Disagreements

  • ENTITY MENU: VERTICAL LIST VS. RADIAL. Stig proposes vertical list for entities, radial for world. Araminta pushes for radial for entities too. Direct disagreement. Needs Round 2 resolution.
  • Eavesdropping framing: passive vs. active positioning. Dudley: "your ears are always on" (passive). Nigel: player actively positions to overhear (agency emphasis). Mechanically similar but the design framing affects how the tutorial teaches it and whether positioning aids are provided.

Open Questions

  • OQ-04: Proximity threshold distance (tiles) for interaction availability? Stig says ~2 tiles for click. Ozzie says ~3 tiles for ambient acknowledgment. These may be different thresholds (acknowledge at 3, interact at 2).
  • OQ-05: Can you interact through a doorway (LOS exists but distance is >1 tile)?
  • OQ-06: Does weapon-mode suppressing interaction (Ozzie's Shift-modifier proposal) interact with Dudley's sprint-suppresses-interaction? Layered suppression rules?
  • OQ-07: Stig's diegetic test (labels disappear if insert off) — does this mean characters without an insert get NO interaction prompts? Or does the cursor still change shape?

Layer 2: Fog & Perception UX

Fog Rendering

Proposals

Araminta — Full fog visual spec:

Fog Layer Treatment
Clear (vision cone) Soft gradient edge over 3-4 tiles, no hard line. Darkwood approach.
Light fog (peripheral) Desaturated 40-50%, brightness -30%. Slow animated Perlin noise overlay (8-10s cycle). Entity D-033 colors visible but reduced.
Deep fog (previously explored) Near-monochrome with ~10% "zone temperature" tint (bar=warm dark, hub=cool dark, corridor=neutral dark). More pronounced noise (15-20s cycle). "Fog breathes."
Unexplored + maps app Geometric wireframe outlines in #333340. Insert data aesthetic.
Unexplored, no maps Solid near-black #12141a. Information zero.
  • Three techniques for alive fog: (1) animated noise shader, (2) fog as information surface (pings, ghosts, sensor data), (3) zone temperature memory.
  • "Fog is not darkness — it's the absence of your attention."

Tyre — Performance confirmed:

  • Total fog budget: <1ms/frame.
  • Vision cone IS the PointLight2D lighting system.
  • Fog = natural darkness + noise shader on CanvasGroup (Layer 5).
  • Sound pings = 0-5 sprites. Entity ghosts = 0-10 sprites typical.
  • "Godot 4 eats this for breakfast." Real concern is visual readability, not GPU budget.

Fog Entities (Recognition, Pings, Sensor Overlays)

Araminta — Entity visualization in fog:

Entity State Visual Treatment
Sound ping 2-3 thin concentric expanding rings from source direction. Insert white-blue color. Fade over 1.5s. Loud = 3 rings, bright, fast. Quiet = 1 ring, faint, slow.
Recognized entity D-033 relationship color glow. Faint identifying silhouette feature (e.g., "Kael's vest", "Lera's apron"). 0.8s breathing pulse. Position drift ±0.5 tiles (approximate, not exact).
Unrecognized entity Neutral grey #555566 blob. No silhouette detail. No identifying features.
Recognition transition Grey → D-033 color + silhouette feature over ~0.3s.

Ozzie — Recognition as cognitive event (four sub-proposals):

  1. Recognition delay 0.5-1s. Blob resolves into recognized figure with D-033 color bleeding in. Monologue fires DURING the resolve, not after. ("Those footsteps... that's Kael's walk.")
  2. Context creates emotional register. Same mechanic, different feeling based on player knowledge. Hearing Kael at 0300 in corridor B-7 when he said he'd be home = "blood runs cold."
  3. Sensor recognition feels DIFFERENT from natural recognition. Natural = organic resolve over time. Thermal/sensor = digital snap with biometric ID. Different monologue voice too.
  4. False-positive shapes in fog. Fog should occasionally produce shapes that look like people but aren't. "So the brain never stops watching."

Nigel — Fog as replayability mechanism:

  • Same foggy corridor shows different things to different characters based on knowledge graph. Smuggler recognizes Kael = green icon. Detective sees same entity = gray blob.
  • Different perception loadouts = different play patterns (thermal = numbers game, natural = recognition game).
  • Sound ping detail varies by audio analysis capability.
  • "Scales without engineering" — the knowledge graph already does the work.

Gestalt — Perception mode cap:

  • Hard cap: 2 active perception modes + passive insert = 3 total layers.
  • At 3 active modes = "visual salad."
  • Mode switching takes 1-2 seconds (insert reconfiguring). Not instant — a deliberate choice.
  • Build decisions: smuggler thermal+audio vs. detective tracking+cameras.
  • v0.1: Natural vision + audio pings only. Zero active perception modes. Modes are post-v0.1.

Consensus

  • Shader-based fog, not particles. Araminta proposes, Tyre confirms. No dissent.
  • Fog recognition has a delay. Ozzie (0.5-1s organic resolve) and Araminta (0.3s grey→color transition) both propose delays. Ozzie's is longer and more psychological; Araminta's is visual transition timing. These may layer (0.3s visual transition within a 0.5-1s cognitive beat). Direction is unanimous.
  • Monologue fires during recognition, not after. Ozzie is explicit. Aligns with D-016 (monologue as perception). The monologue IS the recognition.
  • Fog is knowledge-graph-driven. Nigel provides the replayability case. Gestalt's signal-vs-answer framework supports it. Dudley's Phase 2 observer filter already computes per-character fog entity visibility. Architectural alignment.
  • Natural vs. sensor recognition should feel different. Ozzie proposes organic resolve vs. digital snap. No dissent. Extends the "perception mode = character build" concept.

Tension

  • Recognition delay timing: 0.3s vs. 0.5-1s. Araminta's visual spec says 0.3s for the grey→color+silhouette transition. Ozzie says 0.5-1s for the full cognitive beat. These may compose (0.3s visual within a longer monologue beat), but the intended player experience differs: Araminta's is a smooth visual transition; Ozzie's is a dramatic moment of realization. Needs alignment.
  • Perception mode cap: accepted? Gestalt proposes hard cap at 2 active modes. v0.1 has zero active modes anyway, so this doesn't affect immediate scope. But it constrains later design. No explicit endorsement or rejection from others.

Open Questions

  • OQ-08: Does Ozzie's false-positive fog shapes have gameplay implications (player investigates nothing), or is it purely atmospheric?
  • OQ-09: How does Araminta's zone temperature memory persist technically? Does the server track "time since player last visited this tile," or is it client-side only?
  • OQ-10: Ozzie says sensor recognition should use a "different monologue voice." Does this mean different text styling, different narrator tone, or a separate monologue channel?
  • OQ-11: Gestalt's mode-switch time (1-2s) — is this a UI animation, a server-side cooldown, or both?

Layer 3: Information Access & the Implant UI

Proposals

Gestalt — Signal vs. answer framework:

  • Game pushes SIGNALS. Player pulls ANSWERS. Three-step loop: PUSH → DECIDE → PULL.
  • Push types: sensory monologue, sound pings, D-033 color shifts, observation monologue, urgent chime, unprompted NPC disclosure, news ticker.
  • Pull actions: walk to location, talk to NPC, examine object, check insert, follow someone, switch perception mode, cross-reference data.
  • Sweet spot rule: "If the player can solve mysteries standing still reading monologue = too much push."
  • Insert scans public lattice data only. Secrets require engagement (talk, observe, investigate).

Ozzie — Implant as tool, not encyclopedia:

  • Implant organized by DATA TYPE, not quest. No "current investigation" tab. Categories: Comms, Cargo Logs, Personnel Records, Station Maps, News.
  • No highlights or markers on relevant data. Player reads raw information and notices discrepancies themselves.
  • Right-click world menu should feel like "reaching for your phone." Game keeps running or soft-pauses.
  • Monologue IS the nudge — provides motivation without hand-holding. Player connects the dots.

Tyre — Implant pause/overlay architecture:

  • Auto-pause in SP: client sends PauseSimulation, server freezes.
  • Overlay on Layer 6, game world visible beneath. Events/monologue still render on Layer 7 with implant open.
  • MP future-proofing: remove the pause check. Zero additional complexity.
  • "Better single-player UX too — overlay is superior to full-screen takeover."

Nigel — Implant should NOT pause (disagrees with Tyre):

  • Game should not pause during implant access. Creates meaningful time tradeoff — checking your insert while the world moves around you.
  • Same right-click menu, different universe behind it per character. Detective sees case files + lattice analysis. Smuggler sees contacts + drop schedules.
  • Maps app vs. no maps app is a "HUGE replayability lever."
  • Scan effectiveness should vary per character seed.

Stig — Radial world menu (4 spokes → 2 for v0.1):

  • Observe (eye), Insert (phone), Comms (signal), Wait (clock).
  • Drag-release for power users, click-click for newcomers.
  • v0.1: 2 spokes only (Observe + Insert). Scale to 5-6 later.

Consensus

  • Signal/answer distinction is the design framework. Gestalt proposes it, Ozzie reinforces it with the "tool not encyclopedia" framing. No dissent. The implant serves player-initiated pulls, not system-initiated dumps.
  • Implant organized by data type, not quest. Ozzie is explicit. Aligns with Gestalt's framework (player constructs meaning from raw data). No dissent.
  • No highlights on implant data. Ozzie proposes. Consistent with invisible locked options (Layer 4) and the information asymmetry principle. No dissent.
  • Implant is overlay, not full-screen. Tyre and Stig agree: game world stays visible. No dissent.

Disagreements

  • IMPLANT PAUSE: YES OR NO. Tyre says auto-pause SP (better UX, cleaner architecture). Nigel says no pause (meaningful time pressure, player must choose when to check insert). Direct disagreement. Tyre's position is the technically simpler path; Nigel's creates more tension but complicates UX. Both acknowledge MP won't pause. The question is whether SP should match MP behavior from the start.

Open Questions

  • OQ-12: Does Gestalt's "insert scans public lattice data only" mean the insert NEVER reveals secrets, or that it reveals secrets only after they've been learned through other means (talk, observe)?
  • OQ-13: If implant data has no highlights (Ozzie), how does the player know when new information has been added? Is there a "new data received" notification, or must they check proactively?
  • OQ-14: Nigel's "scan effectiveness varies per character seed" — does this mean the same scan action produces different data, or that different characters have different scan actions available?

Layer 4: Dialogue Initiation & Confrontation UX

Dialogue Initiation

Ozzie — Conversation starts before you click (five proposals):

  1. Proximity triggers ambient acknowledgment at ~3 tiles. NPC turns, player's monologue fires: "There's Kael."
  2. NPC posture/animation reacts to approach. Hostile NPC = tense. NPC hiding something = Tier 2 ambiguous animation (D-047).
  3. Dialogue box should EMERGE, not APPEAR. No hard cut. Text rises from NPC position.
  4. Walking away IS an option with consequences. NPC reacts, next conversation references it.
  5. Confrontation needs PHYSICAL STAGING. Player gets close, camera tightens slightly, ambient sound dips. THEN confrontation option appears. The space changes before the words do.

Stig — Dialogue UI spec:

  • Bottom 25% of screen. Game world stays live above.
  • Layout: NPC speech top, player response options below, left-aligned.
  • NO PORTRAITS — the NPC is on screen; a portrait is redundant.
  • Monologue floats in normal position ABOVE dialogue box (z-layer 7). Spatial separation means monologue and dialogue can contradict each other visually.
  • Walk-away via WASD. Dialogue fades over ~300ms. No close button.

Confrontation

Paula — Same box, different weight (four mechanisms):

  1. Confrontation options written in character's internal voice — italicized, first-person. Regular option: "Shift schedule." Confrontation option: "I saw you in corridor B-7."
  2. Pre-delivery monologue beat (1-2 seconds): "This changes things. No taking it back." Character hesitates internally before speaking.
  3. World responds to confrontation: NPC shifts to Tier 2 animation (D-047). Entity D-033 color may fade. Monologue frequency spikes during exchange. Available topics narrow post-confrontation.
  4. Walk-away contaminates social space. Walking away mid-confrontation affects NPC routine. Monologue notes it later.

Paula — Explicitly NOT these:

  • NOT a separate confrontation mode or UI
  • NOT timed responses
  • NOT a visible relationship meter
  • NOT correct/incorrect dialogue approaches

Invisible Locked Options

Gestalt — Non-negotiable, four reasons:

  1. Asymmetry: You don't know what you don't know.
  2. Dopamine: New options appearing on repeat visits IS the reward.
  3. Anti-metagaming: No checklist to complete.
  4. Confrontation surprise: Confront option appearing for the first time is a dramatic moment.
  • Exception: NPC holding back is communicated via monologue, not locked UI. ("She changed the subject. Fast.")

Nigel — Invisible locks non-negotiable:

  • Grayed-out options = metagaming checklist. Invisible = genuine surprise on replay.
  • D-028's four dialogue layers are already a replayability machine.
  • Walk-away consequences should vary by NPC tolerance threshold per seed — no metagaming social rules.

Consensus

  • Invisible locked options. Gestalt and Nigel are emphatic. Strongest consensus point in the entire round. No dissent from any participant.
  • Same dialogue box for confrontation, different weight. Paula defines the mechanism (italic voice, monologue beat, world response). Stig provides the UI container (bottom-25%, monologue above). These compose naturally. No dissent.
  • Walk-away via WASD with consequences. Stig (mechanic: WASD, 300ms fade), Ozzie (consequences: NPC reacts, next conversation references), Paula (contaminates social space). All aligned.
  • No portraits in dialogue. Stig is explicit. NPC is on screen — portrait is redundant. No dissent.

Tension

  • Pre-dialogue proximity acknowledgment: scope? Ozzie proposes ambient NPC reactions at ~3 tiles. Compelling for feel. But requires NPC AI behavior (turning, brief line) and potentially server-side proximity events. No one rejected it, but no one confirmed feasibility for v0.1.
  • Confrontation physical staging. Ozzie proposes camera tightens + ambient sound dips before confrontation option appears. Araminta hasn't commented on camera behavior. Tyre hasn't confirmed feasibility. Sound design not yet covered (Ozzie flags missing audio throughout).

Open Questions

  • OQ-15: How does Ozzie's pre-dialogue acknowledgment work technically? Server sends proximity event, or client-side animation triggered by distance?
  • OQ-16: What is the timing of Paula's pre-delivery monologue beat in Stig's UI? Monologue appears above → 1-2s pause → confrontation line appears below? Does the player see the option, select it, then the beat plays before delivery?
  • OQ-17: Can you resume a conversation after WASD walk-away? Or is it a one-shot interaction per approach?
  • OQ-18: How do Nigel's "dialogue access tiers per character" relate to D-041 confidence hierarchy? Same system or layered?
  • OQ-19: Ozzie's physical staging (camera tighten, sound dip) — does this apply to ALL confrontation options or only the first time a confrontation is available with a given NPC?

Layer 5: Inventory & Physical Interaction

Proposals

Gestalt — Knowledge-primary, physical-secondary:

  • Knowledge is the default. "You SAW the manifest" (KG records it), not "you HAVE the manifest."
  • Physical items exist ONLY where carrying creates genuine risk/reward.
  • Evidence decision matrix:
    • Observe: safe, deniable, KG records observation.
    • Take: proof obtained, but scene is disrupted.
    • Photograph: proof without disruption (requires implant capability).
    • Leave + Tell: delegate to authority (NPC acts on your tip).
  • 0-3 physical items at any time. No inventory grid, no weight, no bags.
  • v0.1: Contraband packages, 1-2 evidence objects, access cards.

Tyre — No inventory in v0.1 (zero physical items):

  • Zero success criteria require carrying items.
  • Detective = knowledge-only is a natural model (institutional authority).
  • Smuggler = interaction points (terminals, containers), not carried objects.
  • Access states = binary character properties + knowledge, not items.
  • Deferring inventory saves 3-4 sprints of development.
  • "Everything built extends later" — knowledge-first architecture doesn't prevent adding physical items post-v0.1.

Paula — Same KG, different presentation per archetype:

  • Detective: Case-file-style entries. Structured data: what/where/when/source/confidence. Insert suggests links between connected facts. Institutional authority means observation IS evidence.
  • Smuggler: Personal notebook organized by PERSON. Informal voice. Notes, not structured fields. No contradiction flags — monologue does the connecting. Evidence is transactional leverage.
  • Same underlying UI component, different presentation layer. Same knowledge graph underneath.
  • Physical evidence split: Detective mostly knowledge-graph (institutional authority — their word carries weight). Smuggler needs tangible proof (copied manifest, physical item, recording) because their word doesn't.
  • v0.1: KG-primary. Smuggler gets 2-3 physical evidence items specifically for leverage proof.

Nigel — Different verb sets reinforce character identity:

  • Same crate → smuggler sees "Move/Stash", detective sees "Scan/Flag."
  • Access systems differ: smuggler = social engineering + physical bypasses; detective = institutional authority + lattice authorization.
  • Physical inventory would flatten character differences — "everyone picks up the same crate the same way."

Consensus

  • Knowledge-primary model. Universal agreement. Knowledge graph is the core "inventory." No one argues for a traditional inventory system.
  • Same KG, different presentation per archetype. Paula proposes, Nigel reinforces. Uncontested. This is both a UI feature and a character identity mechanism.

Disagreements

  • v0.1: ZERO PHYSICAL ITEMS VS. A FEW. Tyre says zero (saves 3-4 sprints, everything extends later). Gestalt says 0-3 items with risk/reward (contraband, evidence, access cards). Paula says smuggler specifically needs 2-3 physical items for leverage proof. Tyre's position is scope-minimal; Gestalt and Paula argue that at least a few physical items are needed to demonstrate the risk/reward concept and differentiate the smuggler's gameplay loop.
  • Smuggler gameplay without physical items. If Tyre's "zero inventory" holds, how does smuggling work? Purely via terminal interactions and abstract manifests? Nigel's "different verb sets on same crate" implies physical interaction with objects, which may not require carrying them but does require manipulating them in the world.

Open Questions

  • OQ-20: Does "no inventory" mean no carrying, or no inventory UI? Can the player pick up an access card that goes to a binary character property (has_card = true) rather than an inventory slot?
  • OQ-21: How does Paula's archetype-specific presentation work technically? Skin on same implant app, or different apps entirely?
  • OQ-22: Gestalt's evidence decision matrix (Observe/Take/Photograph/Leave+Tell) — is this a set of verbs on evidence objects, or a design framework? Should these be the actual verb options in Dudley's Phase 1 computation?
  • OQ-23: If smuggler needs 2-3 physical items (Paula) but Tyre defers all inventory — can interaction-point abstraction support "smuggler uses a physical manifest as leverage" without an inventory system?

Cross-Cutting Themes

Theme 1: Player Attention as Finite Resource

Gestalt's cross-layer insight: All five layers are expressions of one mechanic — player attention is finite. Movement speed determines what you notice. Fog determines what you can see. The implant gives you data but costs attention. Dialogue requires focus. Physical items create risk that demands monitoring. The game is fundamentally about where you choose to point your attention.

Theme 2: Character Differentiation Across Every Layer

Every layer produces different experiences per character archetype:

Layer Detective Smuggler
Movement (Nigel) Walks, observes, more monologue Sprints, knows the station, less monologue
Fog (Nigel) Recognizes different entities Recognizes different entities
Implant (Nigel, Paula) Case files, lattice analysis Contacts, drop schedules, personal notebook
Dialogue (Nigel) Institutional access tiers Social engineering access tiers
Verbs (Nigel, Dudley) Scan/Flag/Observe Move/Stash/Bypass
Evidence (Paula) KG-primary (word carries weight) Needs physical proof (word doesn't carry weight)

Theme 3: Information Asymmetry Principle

Reinforced from every direction this round:

  • Invisible locks (Gestalt, Nigel): you don't know what you don't know.
  • No data highlights (Ozzie): player reads raw information, notices discrepancies.
  • Signal vs answer (Gestalt): game pushes signals, player pulls meaning.
  • Fog as knowledge window (Nigel): you can't even see what you're missing.
  • Recognition delay (Ozzie): information arrives as cognitive process, not data dump.
  • False positives in fog (Ozzie): you can't even trust what you think you see.

Theme 4: Missing Sound Design

Ozzie flags: Sound design is absent from this round. Every interaction needs audio feedback — cursor state changes, fog recognition, implant access, dialogue initiation, confrontation staging. This is a gap for Round 2 or a dedicated follow-up.

Theme 5: v0.1 Scope Convergence

Agent v0.1 Floor
Gestalt Walk + Sprint (not Careful). Natural vision + audio pings only (zero active perception modes). Invisible locked options.
Tyre Tile-based movement. Knowledge-first (zero physical items). Implant auto-pause SP with overlay architecture.
Dudley Two-phase verb computation. Passive eavesdropping. <0.5ms tick budget. Walk/Sprint/Sneak with tick values.
Stig 2-spoke radial world menu (Observe + Insert). Bottom-25% dialogue box. Vertical entity list.
Nigel Fog perception divergence between characters + dialogue access tier differences. "These two prove the replayability concept."
Paula KG-primary evidence. Smuggler gets 2-3 physical items for leverage.

Emerging v0.1 floor: Tile-based movement with Walk + Sprint. Shader fog with KG-driven divergence between characters. Invisible locked dialogue options. Knowledge-only evidence (physical items contested — 0 vs 2-3). Two-phase verb computation. 2-spoke world menu. Bottom-25% dialogue box.


Summary Tables

Consensus Points

# Point Agents Strength
C-01 Invisible locked dialogue options Gestalt, Nigel Emphatic — both frame as foundational
C-02 Tile-based simulation (determinism) Tyre, Dudley Technical requirement, non-negotiable
C-03 Shader-based fog, not particles Araminta, Tyre Unanimous, technically confirmed
C-04 Knowledge-primary model (KG is the "inventory") Gestalt, Tyre, Paula, Nigel Universal
C-05 Same KG, different presentation per archetype Paula, Nigel Uncontested
C-06 Same dialogue box for confrontation, different weight Paula, Stig Compositional — mechanism + UI spec
C-07 Signal/answer framework for information access Gestalt, Ozzie Uncontested
C-08 Fog recognition has perceptible delay Ozzie, Araminta Direction unanimous, timing differs
C-09 Cursor duality viable (interaction ↔ weapon) Ozzie, Araminta, Stig Visual spec provided
C-10 Two-phase verb computation (sim max → observer filter) Dudley, Nigel Architectural alignment
C-11 Walk-away via WASD with consequences Stig, Ozzie, Paula Mechanic + consequences aligned
C-12 No portraits in dialogue Stig Uncontested
C-13 Implant organized by data type, not quest Ozzie Uncontested
C-14 No highlights on implant data Ozzie Uncontested
C-15 Monologue fires during fog recognition, not after Ozzie Uncontested
C-16 Natural vs sensor recognition should feel different Ozzie Uncontested
C-17 Eavesdropping has no explicit verb Dudley, Nigel (framing differs) No "listen" button
C-18 Implant is overlay, not full-screen takeover Tyre, Stig Uncontested

Disagreements (Require Round 2 Resolution)

# Issue Position A Position B Stakes
D-01 Movement model Tyre, Dudley: tile-based Nigel: free movement + tile collision Server architecture, determinism
D-02 Entity interaction menu Stig: vertical list Araminta: radial UI consistency, feel
D-03 Implant pause in SP Tyre: auto-pause Nigel: no pause (time pressure) UX feel, MP alignment
D-04 Physical items in v0.1 Tyre: zero Gestalt: 0-3 risk/reward; Paula: 2-3 for smuggler Scope, smuggler gameplay viability
D-05 Recognition delay timing Araminta: 0.3s visual Ozzie: 0.5-1s cognitive Player experience of recognition
D-06 Eavesdropping framing Dudley: passive ("ears always on") Nigel: active positioning Tutorial design, player agency emphasis

Open Questions (Aggregate)

# Question Layer
OQ-01 Tile size in world units? Movement
OQ-02 "Careful" (Gestalt) = "Sneak" (Dudley)? Same mode or different? Movement
OQ-03 How does emergent positioning (eavesdrop, peek) work in tile-based system? Movement
OQ-04 Proximity thresholds: acknowledge at 3 tiles (Ozzie), interact at 2 (Stig)? Interaction
OQ-05 Interaction through doorways (LOS but >1 tile)? Interaction
OQ-06 Weapon-suppression + sprint-suppression interaction? Layered rules? Interaction
OQ-07 Diegetic cursor test: no insert = no prompts? Interaction
OQ-08 False-positive fog shapes: gameplay or atmospheric? Fog
OQ-09 Zone temperature memory: server-tracked or client-only? Fog
OQ-10 Sensor recognition "different monologue voice": text styling or narrator tone? Fog
OQ-11 Perception mode-switch time (1-2s): UI animation, server cooldown, or both? Fog
OQ-12 Insert scans public lattice only — never reveals secrets, or reveals after learned? Information
OQ-13 No data highlights — how does player know new data was added? Information
OQ-14 "Scan effectiveness varies per character seed" — different data or different actions? Information
OQ-15 Pre-dialogue acknowledgment: server event or client animation? Dialogue
OQ-16 Monologue beat timing in dialogue UI? Selection → beat → delivery flow? Dialogue
OQ-17 Resume conversation after WASD walk-away? One-shot or persistent? Dialogue
OQ-18 Nigel's dialogue access tiers vs D-041 confidence hierarchy — same or layered? Dialogue
OQ-19 Confrontation staging (camera, sound) — every confrontation or first time only? Dialogue
OQ-20 "No inventory" = no carrying, or no inventory UI? Binary properties (has_card)? Inventory
OQ-21 Archetype presentation: skin on same app or different apps? Inventory
OQ-22 Evidence decision matrix (Observe/Take/Photo/Tell): verbs or design framework? Inventory
OQ-23 Can interaction-point abstraction support smuggler leverage without inventory? Inventory

Round 1 compiled by Qatux from full responses relayed via team lead. Individual agent response files not written to disk.



Round 2: Integration Pass

Date: 2026-02-13 Focus: Cross-layer integration, v0.1 minimum viable interaction model, disagreement resolution Lead direction: 10 specific decisions issued before Round 2 to resolve Round 1 disagreements and set constraints


Lead Decisions (Pre-Round 2)

The lead reviewed all Round 1 responses and issued the following direction:

# Decision Resolves Effect
LD-01 Dialogue box: max 20% screen height, max-width not percentage-based Stig's 25% → constrained Tighter dialogue footprint
LD-02 Default movement speed per character, everyone gets sprint, player agency T-01 (speed triad vs archetype) Hybrid: archetype defaults + universal sprint
LD-03 Tile-based confirmed, same-tile occupancy provision D-01 RESOLVED Tyre/Dudley position wins. Occupancy system added for positioning depth
LD-04 No hard perception mode cap — soft monologue warning T-02 partially resolved Gestalt's hard cap rejected. Diegetic soft warning instead
LD-05 Smuggler needs inventory in v0.1 D-04 RESOLVED Gestalt/Paula position wins over Tyre's zero-inventory. Tyre adapts with minimal impl
LD-06 Fog mechanic in v0.1 — crucial Confirms Nigel's v0.1 floor KG-driven fog divergence is must-have
LD-07 Eavesdropping: passive + positioning improves range/quality D-06 RESOLVED Hybrid of Dudley (passive base) + Nigel (positioning agency)
LD-08 Single cognitive delay for fog recognition D-05 PARTIALLY RESOLVED Direction set (one delay, not instant). Exact values still contested
LD-09 Message history/memory — design for, not build in v0.1 New constraint Architecture accounts for it, implementation deferred
LD-10 Araminta's reticle confirmed Cursor visual spec Araminta's geometric insert-styled cursor is the spec

Round 1 Disagreement Resolution Tracker

R1 # Issue Resolution Status
D-01 Tile-based vs free movement RESOLVED. Lead confirms tile-based (LD-03). Nigel converts: "tiles are BETTER for replayability" — discrete positions = finite meaningful choices. Doorway decision, corner peek, eavesdrop corridor are all spatial puzzles that tiles make legible. Same-tile occupancy provision addresses Nigel's positioning depth concern. Closed
D-02 Entity menu: vertical vs radial UNRESOLVED. Lead asked Araminta to make the case (task #16). Araminta argues spoke radial (not pie). Stig defends vertical list. Both present strong arguments. Needs lead call. Open
D-03 Implant pause in SP NOT EXPLICITLY ADDRESSED. Lead decisions don't directly resolve Tyre vs Nigel on SP pause. Tyre's overlay architecture was described. No agent raised it in Round 2. May be implicitly resolved by Tyre's architecture (overlay works both ways). Needs confirmation
D-04 Physical items in v0.1 RESOLVED. Lead says smuggler needs inventory (LD-05). Tyre adapts with minimal implementation: SmallVec<3>. Dudley provides server model: BTreeMap + per-archetype capacity. Paula specifies 3 items. Closed
D-05 Recognition delay timing PARTIALLY RESOLVED. Lead says single cognitive delay (LD-08). But values still contested: Gestalt 0.8-1.2s vs Ozzie 0.6s base/0.3s urgent. Values need lead call
D-06 Eavesdropping framing RESOLVED. Lead says passive + positioning improves quality (LD-07). Dudley provides the mechanism: ListeningFocus accumulates stationary_ticks. Stillness + facing = better eavesdropping. Passive base, positioning enhances. Closed

Integration Pass by Layer

Movement (Updated)

Gestalt — Sprint perception refined:

  • Sprint reduces INTERPRETATION, not DATA. Visual overlays still render; monologue is suppressed. You see everything, but your character doesn't think about it.
  • Multiplicative perception formula: movement_modifier × perception_load_modifier. Allows sprint + perception modes to interact mathematically rather than through ad-hoc rules.
  • Rethinks sprint-suppresses-interaction: Physics handles it naturally — at sprint speed you pass through interaction radius too fast to click. No need for explicit suppression. "The world doesn't change for you; you're just moving too fast for it."
  • Careful mode MUST be in v0.1 — it's required for the eavesdropping positioning mechanic (LD-07). You can't do "careful approach to overhear" without Careful mode.
  • Full 5-minute gameplay trace demonstrating all movement modes in sequence.
  • Cognitive delay proposal: 0.8-1.2s.

Dudley — Movement profiles and sprint suppression:

  • MovementProfile component per archetype: different base speeds, different default modes.
  • Same-tile occupancy via TilePresence layers: Standing, Ground (prone), Fixture (furniture). Multiple entities can share a tile in different layers.
  • Sprint: explicit suppression. Removes peripheral vision flag, filters monologue to urgent-only, clears interaction buffer. Disagrees with Gestalt's "physics handles it" — wants explicit server-side suppression for determinism.
  • Eavesdrop focus: ListeningFocus component accumulates stationary_ticks. Stillness + facing direction toward sound source = improved eavesdropping quality. Emergent from existing tick pipeline.
  • v0.1 priority: Occupancy system + minimal inventory + movement profiles + sprint perception changes. ListeningFocus deferrable if needed.

Tyre — Same-tile occupancy implementation:

  • TilePresence component with Standing/Prone/Seated states. ~150 lines of code.
  • Enables: two people in a doorway, sitting at furniture, crouching behind cover.
  • Addresses Nigel's emergent positioning concern within tile-based system.

Nigel — Tiles are better (conversion):

  • Full conversion from Round 1 free-movement position. "Tiles are BETTER for replayability."
  • Discrete positions = finite meaningful choices. Every tile matters.
  • Specific spatial puzzle examples: doorway decision (block or let pass), corner peek (which tile gives LOS), eavesdrop corridor (which tile is in audio range).
  • Full 10-minute smuggler vs detective scenario trace: 12 points of divergence, zero scripted branching. All divergence emerges from different knowledge graphs interacting with the same tile-based world.

Movement Consensus (Round 2)

  • Tile-based: unanimous. Nigel converted. D-01 fully closed.
  • Three speeds in v0.1. Gestalt argues Careful is required for eavesdropping. Dudley provides tick values. No dissent on including all three.
  • MovementProfile per archetype. Dudley proposes, aligns with LD-02 (default speed per character). Uncontested.
  • Same-tile occupancy. Tyre provides implementation. Addresses positioning depth. Uncontested.

Movement Disagreement (Round 2)

  • NEW D-07: Sprint interaction suppression mechanism. Gestalt says physics handles it (player passes through radius too fast — no explicit rule needed). Dudley says explicit server-side suppression (clears buffer, filters monologue to urgent-only). Gestalt's approach is elegant but may have edge cases (what if player sprints INTO an entity?). Dudley's is deterministic but adds suppression rules. Needs lead call.

Fog & Perception (Updated)

Gestalt — Cognitive delay and perception load:

  • Proposes cognitive delay of 0.8-1.2s for fog recognition.
  • Multiplicative perception formula applies: more active perception modes = slight delay increase (perception load).
  • Sprint reduces interpretation: overlays render but monologue is suppressed. You see the fog entity but your character doesn't comment.

Ozzie — Cognitive delay with urgency split:

  • Base cognitive delay: 0.6s.
  • Urgent override: 0.3s — when context makes recognition urgent (known hostile, anomalous presence, contradicts known schedule). Monologue fires faster: "That's — wait, that's Kael" (0.3s) vs casual "...sounds like Kael's walk" (0.6s).
  • Sprint "double-take": Sprint suppresses routine social awareness BUT NOT anomaly detection. If you sprint past something wrong, monologue fires after a brief delay — the character noticed even though the player was moving fast. "Sprint double-take."
  • 14 audio assets identified for v0.1 interaction sounds: 6 new (cursor hover, cursor weapon-mode, fog recognition sting, implant open/close, dialogue emerge, confrontation dip) + D-038's existing 8.

Araminta — Multi-overlay visual composition:

  • 3-4 simultaneous perception overlays ARE readable if each mode uses a different visual channel:
    • Natural vision = entity shapes and silhouettes
    • Thermal = color temperature blobs
    • Audio = expanding rings
    • Sensor = digital scan lines
  • Soft degradation at high load: scan-line interference effect when running many overlays. Diegetic — the insert is under strain. This replaces Gestalt's hard cap with a visual/narrative warning.
  • Full screen composition map showing all UI elements positioned.

Nigel — Fog replayability validation:

  • The 10-minute scenario trace includes fog divergence at 4 of the 12 divergence points.
  • Smuggler recognizes dock workers in fog = navigates confidently. Detective sees grey blobs = proceeds cautiously.
  • v0.1 fog divergence passes D-027 (replayability criteria) second-playthrough test.

Fog Consensus (Round 2)

  • Single cognitive delay (LD-08). Direction is unanimous. One delay system, not instant recognition.
  • Soft perception warning, not hard cap (LD-04). Araminta's diegetic soft degradation (scan-line interference) replaces Gestalt's hard 2-mode cap. Gestalt's hard cap is rejected by lead.
  • Sprint double-take. Ozzie's proposal that anomaly monologue survives sprint. No dissent. Elegant solution — sprint suppresses routine, not urgent.

Fog Disagreement (Round 2)

  • NEW D-08: Cognitive delay values. Gestalt proposes 0.8-1.2s (longer, contemplative). Ozzie proposes 0.6s base / 0.3s urgent (shorter, with urgency split). These are different philosophies: Gestalt wants every recognition to feel like a moment; Ozzie wants urgency to compress the moment. Both agree the delay exists. Needs lead call on values and whether urgency split is adopted.

Interaction & Menus (Updated)

Stig — Dialogue box revised + vertical list defense:

  • Dialogue box: revised to 50% width centered (lead then directed max-width instead of percentage).
  • Max 3 response options visible at once.
  • Defends vertical list for entity interactions: Variable-length text options (e.g., "I saw you in corridor B-7") break radial spatial memory. Radial works for fixed categories (world menu spokes) but not variable-text verbs. List handles 1-4 options cleanly; radial wastes space at 1-2 options.
  • Smuggler inventory UI: pocket icons bottom-right corner, 40x40px each. No empty slots displayed — icons appear only when items are carried.
  • Message history: Store all dialogue exchanges in the knowledge graph. Display later as a timeline when message history feature is built (LD-09). Design the KG schema now.

Araminta — Spoke radial case for entity menus:

  • NOT pie radial (angular sectors) — SPOKE radial (nodes on spokes extending from entity).
  • Key argument: When knowledge changes unlock a new verb, a new spoke GROWS from the entity. This is a qualitative change (geometry transforms — the shape itself is different) vs a quantitative change (list gets longer — same shape, more items). The player experiences "something new is here" rather than "the list is longer."
  • Spoke growing = D-041 confidence tier advancement made visible. New spoke appears when you cross a knowledge threshold for that entity.
  • Consistent with world menu radial (same interaction grammar).

Dudley — Inventory server model:

  • Smuggler inventory: BTreeMap<StableId, InventoryEntry> per entity.
  • Capacity per archetype: smuggler 4 slots, detective 2 slots.
  • Carried items are PRIVATE — they exist behind the information boundary. Other entities' inventories are not visible to the player unless revealed through interaction (search, scan, confrontation).
  • Same-tile occupancy layers: Standing, Ground, Fixture. Enables sitting at terminals, crouching behind cover, two people in a doorway.

Interaction Consensus (Round 2)

  • Dialogue max-width, not percentage. Lead direction (LD-01). Stig adapts.
  • Max 3 response options. Stig proposes. Consistent with invisible locks — if you see 3, there might be 6 you can't see.
  • Inventory is private (info boundary). Dudley proposes. Aligns with information asymmetry principle. Uncontested.
  • Pocket-icon inventory UI (smuggler). Stig proposes. Minimal, no empty slots. Uncontested.
  • Message history: schema now, display later. Stig + Paula aligned with LD-09. Store in KG, defer UI.

Interaction Disagreement (Round 2)

  • D-02 CONTINUED: Entity menu — spoke radial vs vertical list. Araminta's spoke radial: new knowledge = new spoke grows (qualitative geometry change, consistent with world menu). Stig's vertical list: variable-length confrontation text breaks radial spatial memory, radial wastes space at 1-2 options. Both arguments are strong. Needs lead call.
  • NEW D-09: Dialogue width. Stig proposed 50% width centered. Lead directed max-width instead of percentage. Exact max-width value not specified. Minor — needs a pixel value.

Dialogue & Confrontation (Updated)

Ozzie — Confrontation staging for v0.1:

  • Simplified from Round 1's full staging proposal.
  • v0.1 scope: proximity check + audio dip + text styling (italic/monologue beat). Camera tighten deferred to post-v0.1.
  • Sprint "double-take" applies to confrontation awareness too — if you sprint past someone with a pending confrontation, monologue might fire retroactively.

Paula — Walk-away and evidence chains:

  • Walk-away from confrontation has three distinct phases:
    1. Immediate break: Dialogue fades (Stig's 300ms). Silence.
    2. NPC reacts: NPC animation shifts. May call after you. Routine may change.
    3. KG records incompleteness: The knowledge graph records that the confrontation was initiated but not completed. This is queryable — affects future dialogue, monologue, and NPC behavior.
  • Three specific smuggler inventory items for v0.1:
    1. Manifest copy: Proves cargo discrepancy. Leverage proof — KG alone isn't enough because smuggler's word doesn't carry institutional weight.
    2. Corridor access token: Proves ring membership. Physical proof of social network position.
    3. Personal comm log: Bridge between KG knowledge and provable leverage. Recorded conversations.
  • Full evidence chain trace: detective structured path (observe → record → cross-reference → confront) vs smuggler personal path (overhear → acquire proof → leverage → trade).
  • Memory system proposal: Extend KG with InteractionMemory entries — who said what, when, player response, emotional register. Supports LD-09 (design for message history).

Nigel — Scenario validation:

  • 10-minute scenario trace: smuggler and detective play the same 10 minutes.
  • 12 points of divergence, zero scripted branching. All from knowledge graph differences interacting with tile-based world, fog, verbs, and dialogue.
  • Specific divergence examples at dialogue: smuggler sees "Trade info" option detective doesn't have. Detective sees "Official inquiry" option smuggler doesn't have. Same NPC, same moment, different verbs.
  • v0.1 passes second-playthrough test against all D-027 replayability criteria.

Dialogue Consensus (Round 2)

  • Walk-away has three phases. Paula specifies. Extends Stig + Ozzie's Round 1 positions. No dissent.
  • KG records confrontation incompleteness. Paula proposes. Powerful — enables future callbacks. No dissent.
  • Confrontation staging v0.1: proximity + audio dip + text only. Ozzie descopes camera tighten. Pragmatic. No dissent.

Inventory (Updated — Now Confirmed for v0.1)

Tyre — Minimal implementation:

  • SmallVec<3> for smuggler inventory. Tiny memory footprint.
  • Two verbs only: Take, Place. Carried items are world entities with a CarriedBy component.
  • Contraband detection: NPC scan action checks player's carried items against knowledge graph (do they know it's contraband?).
  • ~150 lines server-side for same-tile occupancy (shared implementation).

Dudley — Full server model:

  • BTreeMap<StableId, InventoryEntry> per entity.
  • Capacity: smuggler 4, detective 2.
  • Carried items behind info boundary — private unless revealed.
  • Integrates with existing two-phase verb computation: Phase 1 includes Take/Place verbs on eligible objects, Phase 2 filters by archetype capacity and knowledge.

Paula — Three items defined:

  1. Manifest copy (leverage proof)
  2. Corridor access token (ring membership proof)
  3. Personal comm log (recorded conversations as provable leverage)

Stig — Inventory UI:

  • Pocket icons, bottom-right, 40x40px.
  • No empty slots. Icons appear only when items carried.
  • Minimal screen real estate impact.

Inventory Consensus (Round 2)

  • Smuggler gets inventory in v0.1 (LD-05). Unanimous acceptance. Tyre adapts with minimal implementation.
  • 3 specific items defined. Paula's three items. No dissent.
  • Carried items are private (info boundary). Dudley proposes. Uncontested.
  • Pocket-icon UI, no empty slots. Stig proposes. Uncontested.
  • Capacity differs by archetype. Dudley: smuggler 4, detective 2. Aligns with character differentiation theme.

Inventory Open Question

  • OQ-24: Tyre says SmallVec<3>, Dudley says BTreeMap with capacity 4 for smuggler. Implementation detail, but the capacity numbers differ (3 vs 4). Which is the v0.1 target?

Cross-Layer Interaction Chains

Round 2's integration pass revealed how the layers compose into gameplay loops:

Chain 1: Eavesdropping Loop

Movement (Careful mode, 0.5x speed, quiet footsteps)
  → Positioning (find tile in D-018 medium audio range, face source)
    → ListeningFocus accumulates (Dudley: stationary_ticks)
      → Sound propagation triggers monologue (D-016)
        → KG updated with overheard information
          → New dialogue options may unlock (invisible until available)
            → Confrontation option may appear on next interaction

Chain 2: Fog Recognition Loop

Fog entity detected (D-018 sound or sensor overlay)
  → Cognitive delay begins (0.6-1.2s, exact TBD)
    → Monologue fires DURING delay ("Those footsteps...")
      → KG queried: do I know this entity?
        → YES: D-033 color bleeds in, silhouette feature appears, identity overlay
        → NO: Grey blob remains at approximate position
          → Player decides: approach (movement) or observe (perception) or ignore

Chain 3: Confrontation Chain

Player observes contradiction (KG has conflicting facts)
  → Monologue signals ("She said she was home, but I heard her in B-7")
    → Player approaches NPC (movement → proximity ~3 tiles)
      → NPC acknowledges approach (Ozzie: pre-dialogue beat)
        → Player clicks Talk (interaction)
          → Dialogue opens (Stig: bottom 20%, world visible)
            → NEW: Confront option visible (italic, first-person: *"I saw you in B-7"*)
              → Player selects → monologue beat (Paula: 1-2s, "No taking it back")
                → Confrontation delivered → NPC Tier 2 animation
                  → Topics narrow, D-033 color may shift
                    → KG records confrontation + NPC response

Chain 4: Smuggler Evidence Loop

Smuggler overhears conversation (eavesdropping chain)
  → KG records: cargo discrepancy exists
    → Smuggler accesses terminal (interaction: "Access Manifests")
      → Implant displays manifest data (no highlights — player reads raw)
        → Player notices discrepancy (signal → answer)
          → Physical action: Take manifest copy (inventory: 1 of 3 slots)
            → Manifest is now PRIVATE (info boundary) — carried on person
              → Risk: if scanned by security, contraband detected
                → Leverage: can use manifest in confrontation dialogue

Chain 5: Sprint Double-Take

Player sprints through corridor (1 tile/tick)
  → Passes through NPC interaction radius too fast to interact
    → Routine monologue suppressed (Gestalt: interpretation, not data)
      → BUT: anomaly detected (Ozzie: "sprint double-take")
        → Delayed monologue: "Wait — was that Kael? At this hour?"
          → Player decides: double back (movement) or keep going
            → If double back: Careful approach → full recognition → interaction available

v0.1 Minimum Viable Interaction Model

Synthesized from all Round 2 responses:

Controls

Input Action Notes
WASD Move (default archetype speed) Tile-based, Tween interpolated
Shift+WASD (or toggle) Sprint (1 tile/tick) Suppresses routine monologue. Anomaly monologue survives.
Ctrl+WASD (or toggle) Careful (1 tile/3 ticks) Quiet footsteps, enhanced monologue, eavesdrop positioning
Mouse movement Facing direction Client-side float, server gets octant
Left click Default interaction / shoot Context: cursor state determines action
Right click World radial menu 2 spokes: Observe, Insert
Scroll wheel Zoom Fog boundaries unchanged
WASD during dialogue Walk away 300ms fade, consequences
Shift (weapon mode) Suppress interaction prompts Ozzie proposal

Cursor States (Araminta spec, LD-10)

State Visual Color
Default Four thin inward ticks, bloom #c8d0e0
Entity hover Ticks expand, corner brackets, verb tooltip D-033 color
Object hover Ticks rotate 45° (X-shape) #8b8ba0 / #e8c547 flagged
Weapon aim Ticks extend, gap widens, 2px lines, NO bloom #f0e8d8

Fog Layers (Araminta spec)

Layer Treatment
Clear (vision cone) Soft gradient 3-4 tiles
Light fog (peripheral) Desaturated 40-50%, Perlin noise 8-10s
Deep fog (explored) Near-monochrome, zone temperature tint
Unexplored + maps Wireframe #333340
Unexplored, no maps Solid #12141a

Dialogue

Element Spec
Position Bottom, max 20% height (LD-01), max-width TBD
Layout NPC speech top, player options below, left-aligned
Portraits None (NPC on screen)
Max options 3 visible
Locked options Invisible
Monologue Floats above dialogue box (z-layer 7)
Walk-away WASD, 300ms fade, 3-phase consequences
Confrontation Same box, italic voice, pre-delivery monologue beat

Smuggler Inventory

Element Spec
Capacity 3-4 items (TBD: Tyre says 3, Dudley says 4)
UI Pocket icons, bottom-right, 40x40px, no empty slots
Verbs Take, Place
Info boundary Carried items private
v0.1 items Manifest copy, corridor access token, personal comm log

Server Budget

System Cost Source
Interaction pipeline <0.5ms/tick Dudley
Fog rendering <1ms/frame Tyre
Overlay composition (4 modes) ~7-11ms/frame client Tyre

Estimated Implementation

Component Estimate Source
Server systems ~5-6 days Tyre
Client systems ~8-10 days Tyre

Summary Tables (Round 2)

New Consensus Points (Round 2)

# Point Agents Source
C-19 Tile-based movement: unanimous (Nigel converts) All LD-03, Nigel scenario
C-20 Three movement speeds in v0.1 (Walk/Sprint/Careful) Gestalt, Dudley Gestalt: Careful needed for eavesdrop
C-21 MovementProfile per archetype (different defaults) Dudley LD-02
C-22 Same-tile occupancy system (Standing/Prone/Seated) Tyre, Dudley LD-03 provision
C-23 Soft perception warning, not hard cap Araminta, Lead LD-04
C-24 Eavesdrop: passive + positioning enhances quality Dudley (ListeningFocus), Lead LD-07
C-25 Sprint double-take (anomaly monologue survives sprint) Ozzie Uncontested
C-26 Smuggler inventory in v0.1: 3 specific items Paula, Lead LD-05
C-27 Carried items are private (info boundary) Dudley Uncontested
C-28 Walk-away: 3-phase consequences (break → NPC reacts → KG records) Paula Extends R1 C-11
C-29 Confrontation staging v0.1: proximity + audio dip + text (camera deferred) Ozzie Descoped from R1
C-30 Max 3 dialogue response options Stig Uncontested
C-31 Message history: design KG schema now, defer display Stig, Paula LD-09
C-32 14 audio assets needed for v0.1 interactions Ozzie 6 new + 8 from D-038
C-33 Sprint reduces interpretation, not data (overlays render, monologue suppressed) Gestalt Uncontested as concept
C-34 Nigel's scenario: 12 divergence points, zero scripted branching Nigel v0.1 replayability proof

Disagreements Remaining (Need Lead Call)

# Issue Position A Position B Priority
D-02 Entity menu format Stig: vertical list (variable text, 1-4 options) Araminta: spoke radial (new knowledge = new spoke grows) Medium — affects interaction feel
D-07 Sprint interaction suppression Gestalt: physics handles it (too fast to click) Dudley: explicit server suppression (clears buffer) Low — same player experience, different implementation
D-08 Cognitive delay values Gestalt: 0.8-1.2s Ozzie: 0.6s base / 0.3s urgent Medium — affects fog recognition feel
D-09 Dialogue max-width Lead says max-width, not percentage Exact pixel value not specified Low — needs a number

Open Questions (Updated for Round 2)

Resolved from Round 1:

R1 # Question Resolution
OQ-01 Tile size? Still open — not addressed in Round 2
OQ-02 Careful = Sneak? Partially — Gestalt's "Careful" and Dudley's "Sneak" appear to be the same mode (slow, quiet, enhanced perception). Name TBD.
OQ-03 Emergent positioning in tile system? Resolved — same-tile occupancy (Tyre) + ListeningFocus (Dudley)
OQ-04 Proximity thresholds? Confirmed as two thresholds: acknowledge ~3 tiles (Ozzie), interact ~2 tiles (Stig)
OQ-05 Interact through doorway? Same-tile occupancy makes doorway interactions natural. LOS gates it.
OQ-06 Weapon + sprint suppression layering? Open — Gestalt and Dudley disagree on sprint suppression mechanism
OQ-07 No insert = no prompts? Open — not addressed
OQ-08 False-positive fog: gameplay or atmospheric? Open — not addressed
OQ-09 Zone temperature: server or client? Open — not addressed
OQ-10 Sensor "different voice"? Open — not addressed
OQ-11 Mode-switch time? Gestalt's hard cap rejected (LD-04). Soft degradation instead (Araminta). Switch time TBD.
OQ-12 Insert reveals secrets? Partially — Gestalt R1: public lattice only. Not contested.
OQ-13 New data notification? Open — not addressed
OQ-14 Scan effectiveness per character? Open — not addressed
OQ-15 Pre-dialogue acknowledgment: server or client? Open — deferred alongside camera tighten (post-v0.1?)
OQ-16 Monologue beat timing in UI? Partially — Paula: 1-2s. Stig's UI accommodates it. Exact flow TBD.
OQ-17 Resume after walk-away? Partially — Paula's 3-phase model implies not a simple resume. KG records incompleteness.
OQ-18 Nigel's dialogue tiers vs D-041? Open — not addressed
OQ-19 Confrontation staging scope? Resolved — Ozzie descopes to proximity + audio dip + text for v0.1
OQ-20 "No inventory" meaning? Resolved — smuggler gets real inventory (LD-05). Detective gets 2 slots (Dudley).
OQ-21 Archetype presentation: skin or different apps? Open — not addressed in Round 2
OQ-22 Evidence matrix: verbs or framework? Partially — Take/Place are verbs (Tyre). Observe/Photograph/Leave+Tell may be framework.
OQ-23 Smuggler leverage without inventory? Resolved — smuggler gets inventory (LD-05).

New questions from Round 2:

# Question Layer
OQ-24 Inventory capacity: SmallVec<3> (Tyre) vs BTreeMap capacity 4 (Dudley)? Inventory
OQ-25 Mode name: "Careful" or "Sneak"? Observation focus or stealth focus? Movement
OQ-26 Gestalt's multiplicative formula: what are the actual modifier values? Movement/Perception
OQ-27 Araminta's soft degradation (scan-line interference): at what threshold? Perception
OQ-28 Paula's InteractionMemory KG extension: what's the schema? Knowledge/Dialogue
OQ-29 Dialogue max-width: what pixel value? (LD-01 says max-width, not percentage) Dialogue
OQ-30 Ozzie's 14 audio assets: who creates them? When in the sprint schedule? Audio/Scope

Round 2 compiled by Qatux from team lead summaries of all 8 participant responses. Cross-referenced against Round 1 notes for continuity. All attributions verified against source summaries.



Final Lead Decisions (Post-Round 2)

Date: 2026-02-13

The lead reviewed all remaining disagreements and made final calls:

D-02 RESOLVED: Vertical list for entity menus, radial for world menu only.

  • Lead rejects spoke radial for entities — items moving under cursor when knowledge changes is a moving goalpost (bad UX while aiming at an option).
  • New items in a vertical list can be highlighted with a gradient glow effect in their background to signal "something new."
  • Insert styling endorsed for the vertical list (Araminta's aesthetic applied to Stig's structure).
  • Radial works for world menu because items don't vary much.
  • Stig's split wins, with Araminta's insert aesthetic applied to both.

D-03 RESOLVED: Auto-pause SP confirmed.

  • Tyre's architecture: auto-pause in single-player, overlay design for multiplayer readiness.

D-07 RESOLVED: Explicit sprint interaction suppression (Dudley's approach).

  • Sprint clears interaction buffer on server.
  • Rationale: mouse gymnastics to click during sprint = bad UX. Explicit suppression is cleaner and deterministic.

D-08 RESOLVED: Cognitive delay — tunable, start with Ozzie's values.

  • 0.6s base, 0.3s urgent (when observe_anomaly triggers).
  • Start here, adjust in playtesting.
  • The urgent variant is endorsed as a nice touch.

NEW: Movement as stance toggle system.

  • Stances: Sprint / Walk / Careful / Crouch / (Prone future)
  • Toggle-based, NOT hold-to-activate. Player toggles between stances.
  • Prone: toggle OUT only in normal play (must explicitly stand up). Future combat exception: "hit the deck" quick-entry.
  • Replaces hold-modifier approach (Shift for sprint, Ctrl for careful) with a clean stance ladder.

ENDORSED compositions:

  • Ozzie's movement speed perception gradient (sprint/walk/careful = tunnel vision / normal / heightened)
  • Gestalt's interpretation vs data angle (sprint suppresses interpretation/monologue, not sensory data/overlays)
  • Both compose: sprint = all overlays visible but zero monologue interpretation.

All Round 2 disagreements now resolved.

# Issue Resolution Winner
D-02 Entity menu format Vertical list (insert-styled) Stig + Araminta aesthetic
D-03 Implant pause SP Auto-pause confirmed Tyre
D-07 Sprint suppression Explicit server suppression Dudley
D-08 Cognitive delay 0.6s base / 0.3s urgent, tunable Ozzie
D-09 Dialogue width Max-width (not percentage) Lead direction, value TBD

Final resolutions recorded by Qatux. Workshop is now closed. Outcomes document produced at docs/workshops/control-interaction/workshop-outcomes.md.