Files
settled-reach/docs/workshops/content-gap-analysis_v0_1/round1-gestalt.md
T
jpmschweitzerandClaude Opus 4.6 e96ec80d9c docs(workshops): archive v0.1 content gap analysis workshop
6 agents × 2 rounds examining 9 content layers. Produced D-032
through D-039, THE FRIEND NPC pattern, converged tag taxonomy,
and Sova Transit District setting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 20:27:31 +01:00

33 KiB

Round 1: Gestalt (Systems Design & Fun Factor)

Workshop: v0.1 Content Gap Analysis Date: 2026-02-11 Scope: All 9 layers — systems design questions


Layer 1: Art Direction & Visual Identity

No direct questions for Gestalt here, but one mechanical observation:

Art direction is downstream of information design. The visual system's primary job in The Settled Reach is communicating what the player can and cannot perceive. Fog edges, vision cone boundaries, sound indicators at fog-edge, NPC state tells — these are all visual elements that serve information mechanics first, aesthetics second.

Whatever Araminta proposes, the art direction must prioritize perceptual legibility: can the player instantly distinguish "I can see this" from "I cannot see this" from "I heard something here"? If that's clear, the aesthetics can be anything from pixel art to abstract minimalism. If it's unclear, no amount of beauty fixes the game.

Recommendation for Q-003: "Functional minimalism with perceptual clarity" is the v0.1 art direction. Atmosphere is carried by monologue (D-016). Visual mood is a polish layer, not a proof-of-concept requirement.


Layer 2: Access Tiers and Character Builds

Question: How do access tiers (D-028 Layer 1) interact with the two character builds mechanically?

Let me break down what this actually means mechanically.

Access tiers are the first filter on every line of dialogue. They answer: "Given who the player character IS, what version of this NPC do they see?" This isn't a binary insider/outsider — it's a multi-axis classification that determines which lines from the pool are eligible for selection.

Access Tier Model for v0.1

Access Tier Description Smuggler sees Detective sees
public Available to everyone. Greetings, small talk, general observations. Yes Yes
insider Available to people embedded in the social group. Shop talk, complaints, gossip about colleagues. Logistics hub: Yes. Bar: Regular status. Ring: Yes. Logistics hub: Outsider. Bar: Regular. Ring: No.
authority Available to people with institutional power. Deference, compliance, formal responses. No (except through cover) Yes
peer Available to people of equal social standing within a group. Casual, unguarded. With ring members, coworkers With other investigators, institutional contacts
hostile Guarded, deflecting, minimal. Shown to people perceived as a threat. From detective-allied NPCs (if blown) From ring-connected NPCs

How This Maps to the Two Characters

Smuggler access profile:

Social Site Default Access Why
Logistics Hub insider + peer Works there. Coworkers.
Bar public or insider (regular) Social regular, not staff
Smuggling Ring insider + peer Member

Detective access profile:

Social Site Default Access Why
Logistics Hub authority Investigating. Workers defer/comply.
Bar public No special status
Smuggling Ring hostile (if known) or public (if not) Target of investigation

The Interesting Decision Space

Here's where this creates gameplay. Access tiers are the player's starting hand, not their final state. The systems must allow tier SHIFTS during play:

Shift Mechanism Example
public -> insider Repeated positive interactions, time spent Detective becomes a bar regular after visiting 3-4 times
insider -> hostile Cover blown, secret discovered Smuggler is seen talking to the detective
authority -> peer Trust built through fairness, personal disclosure Detective earns a worker's trust by keeping a minor infraction quiet
peer -> hostile Betrayal, information leak Smuggler discovers a ring member is informing

These tier shifts ARE the social gameplay. The player isn't just receiving different dialogue — they're actively managing their social position by choosing who to talk to, what to reveal, and who to be seen with. Every conversation is a potential tier shift event.

What Paula needs for the Dual Lens Guide: A matrix per social site showing starting access for each character, plus the 2-3 most likely tier shift paths. Not every combination — just the ones the content packs need to support.


Layer 3: Station District Setting

No direct questions for Gestalt here, but a mechanical note for Miri:

The station district setting needs to produce spatial information asymmetry. Concretely:

  • At least one area that's publicly accessible but has a hidden back room / private area
  • At least one area where the smuggler has natural access but the detective would need a reason to enter
  • At least one chokepoint where NPCs from different social sites cross paths (this is where cross-template contamination becomes observable)

These are spatial requirements that emerge from the information design, not just atmosphere choices.


Layer 4: Content Pipeline & Authoring Format

Cracks knuckles. This is the big one. Let me propose the concrete line pool format.

Line Pool Authoring Format: YAML

YAML is the right choice for human-authored content. It's readable, supports comments (authors can annotate their intent), handles multiline strings naturally, and has mature tooling. JSON is too noisy for 500+ authored lines. CSV loses structure. TOML gets awkward for nested data.

Concrete Line Pool File Structure

Each template gets one YAML file per content category. The file structure:

content/
  templates/
    logistics-hub/
      dialogue.yaml        # NPC role dialogue lines
      monologue.yaml        # Player character reactions to this location
      environmental.yaml    # Signs, terminals, ambient text
      trait-guide.yaml      # How personality traits modify base lines
    bar/
      dialogue.yaml
      monologue.yaml
      environmental.yaml
      trait-guide.yaml
    smuggling-ring/
      dialogue.yaml
      monologue.yaml
      environmental.yaml
      trait-guide.yaml
  characters/
    smuggler/
      voice-kit.yaml        # Character-specific monologue voice
      opening-hook.yaml     # First 5 minutes content
    detective/
      voice-kit.yaml
      opening-hook.yaml
  shared/
    greetings.yaml          # Cross-template greeting pools
    farewells.yaml          # Cross-template farewell pools
    generic-ambient.yaml    # Non-location-specific monologue

Line Entry Schema

Here's what a single line looks like in dialogue.yaml:

# logistics-hub/dialogue.yaml
# Template: Logistics Hub (Workplace)
# Author: Mellanie
# Last updated: YYYY-MM-DD

meta:
  template: logistics_hub
  version: 1
  line_count: 70  # target: 55-70 authored lines for this template

lines:
  - id: lh_d_001
    text: "Another shipment from Taliesin. Third one this week. Must be nice to have that kind of credit flow."
    role: dock_worker            # which NPC role speaks this
    access: [insider, peer]      # who hears this (D-028 Layer 1)
    trust: surface               # disclosure tier: surface | real | secret
    topic: [work, cargo, money]  # what the line is about
    mood: [neutral, tired]       # NPC mood states that select this line
    situation: [routine, morning] # when this line is eligible
    tags: [gossip, observation]  # freeform classification
    dual_lens:                   # how this line hits differently per character
      smuggler: "Routine shop talk. But Taliesin shipments are your cover run."
      detective: "Cargo volume anomaly. Worth checking manifests."
    notes: "Sets up Taliesin as a location name. Smuggler knows this is cover cargo."

  - id: lh_d_002
    text: "You're new around here? Or just... visiting?"
    role: dock_worker
    access: [public]
    trust: surface
    topic: [social, identity]
    mood: [cautious, neutral]
    situation: [first_meeting]
    tags: [greeting, probe]
    dual_lens:
      smuggler: "Never triggered — smuggler is known here."
      detective: "First contact. Worker is sizing you up."

  - id: lh_d_003
    text: "Look, I mind my own business. You should try it."
    role: dock_worker
    access: [authority, hostile]
    trust: surface
    topic: [deflection]
    mood: [annoyed, defensive]
    situation: [interrogation, repeated_visit]
    tags: [resistance, wall]
    dual_lens:
      smuggler: "Only if your cover is blown and they see you as authority now."
      detective: "Standard resistance. Either genuinely uninvolved or protecting someone."

Minimum Viable Tag Set for v0.1

Here's the taxonomy — the minimum set of tags that makes the four dialogue layers functional:

Structural Tags (required on every line)

Tag Type Values Purpose
id string {template}_{type}_{###} Unique identifier
text string The authored line What the NPC says
role enum Template-defined roles (e.g., dock_worker, bartender, ring_courier) Which NPC role speaks this
access list<enum> public, insider, authority, peer, hostile D-028 Layer 1: who hears this
trust enum surface, real, secret D-028 Layer 3: disclosure tier
situation list<enum> See situation taxonomy below When this line is eligible
Tag Type Values Purpose
topic list<enum> work, social, cargo, money, relationships, rumors, identity, deflection, weather, complaint What the line is about — enables topic-based conversation steering
mood list<enum> neutral, happy, tired, annoyed, nervous, defensive, friendly, cautious NPC mood states that select this line
tags list<string> Freeform Author classification for search and grouping

Authoring-Only Tags (not consumed by engine, used by previewer and authors)

Tag Type Values Purpose
dual_lens map Per-character notes How this line reads differently per character
notes string Author comments Design intent, context, dependencies

Situation Taxonomy for v0.1

Situations are the context triggers that make lines eligible. Minimum set:

Situation Description
greeting First interaction this game-day
first_meeting Characters have never met
routine Normal daily activity
morning / afternoon / evening / night Day phase (D-031)
repeated_visit Player has visited this NPC 3+ times
interrogation Player is asking pointed questions
witnessed_secret Player has seen something they shouldn't
idle NPC is between activities
working NPC is performing their job
social NPC is socializing (bar, break, etc.)
confrontation Triangle tension has boiled over
post_event Responding to a recent simulation event

How the Four Dialogue Layers Map to Tags

Question: How do the 4 dialogue layers map to line tags? One tag per layer, or more complex?

Let me map it out:

Dialogue Layer Tag(s) Used Selection Logic
Layer 1: Access tier access Hard filter. If the player character's current access tier for this NPC's social site is not in the line's access list, the line is invisible. No fallthrough.
Layer 2: Relationship history situation + engine state The engine tracks interaction count, last interaction time, and notable events. This modifies which situation values are active. E.g., first_meeting is only true once; repeated_visit activates after threshold. Not a single tag — it's engine state mapped to situation eligibility.
Layer 3: Trust-gated gossip trust Progressive filter. NPCs start at surface. As relationship improves, real lines become available. secret lines only after significant trust threshold. One tag, three values, engine controls the threshold.
Layer 4: Unprompted disclosure topic + mood + engine state The NPC has things they WANT to say (driven by mood, recent events, triangle pressure). The engine picks from eligible lines weighted by NPC mood and topic relevance. No single tag — it's a weighted selection across mood + topic from the eligible pool.

Selection Pipeline (simplified)

All lines for this NPC's role
  |
  ├── Filter by access tier (Layer 1) → removes ~40-60% of lines
  |
  ├── Filter by situation (Layer 2) → narrows to context-appropriate lines
  |
  ├── Filter by trust level (Layer 3) → caps disclosure depth
  |
  └── Weight by mood + topic relevance (Layer 4) → ranks remaining lines
  |
  └── Select top-weighted line (with variety tracking to avoid repeats)

Key insight: Layers 1 and 3 are HARD FILTERS (binary: eligible or not). Layers 2 and 4 are SOFT SELECTORS (weighting and context). This means:

  • Authors must ensure every access/trust combination has enough lines to avoid dead conversations
  • Authors can be more flexible with mood/topic — the engine can fall back to neutral mood lines

Monologue Line Format

Monologue uses a similar but distinct schema. Key difference: monologue is triggered by observation EVENTS, not conversation initiation.

# logistics-hub/monologue.yaml

lines:
  - id: lh_m_001
    text: "Busy morning. The usual controlled chaos."
    character: smuggler
    trigger: enter_location        # what observation event fires this
    location: logistics_hub
    situation: [morning, routine]
    mood: [neutral, relaxed]       # character mood, not NPC mood
    prerequisite: null             # knowledge state required (null = always eligible)
    tags: [atmosphere, establishing]

  - id: lh_m_002
    text: "Same faces, same cargo, same lies. Comfortable."
    character: smuggler
    trigger: enter_location
    location: logistics_hub
    situation: [morning, routine]
    mood: [neutral, content]
    prerequisite: { knows: smuggling_operation }
    tags: [atmosphere, character_voice, irony]

  - id: lh_m_003
    text: "Standard logistics operation. On paper. The throughput numbers don't add up, though."
    character: detective
    trigger: enter_location
    location: logistics_hub
    situation: [morning, routine]
    mood: [neutral, analytical]
    prerequisite: { knows: cargo_anomaly }
    tags: [investigation, observation, clue]

Monologue Trigger Taxonomy for v0.1

Trigger Description Example
enter_location Player enters a new area "The bar's quieter than usual."
observe_npc Player sees an NPC doing something "They're checking the manifest again."
hear_sound Sound event from fog edge "Footsteps. Two people, moving fast."
observe_anomaly NPC deviates from routine "That's not where they usually go at this hour."
post_conversation After dialogue ends "They were lying. The pause before 'I don't know' — classic tell."
discover_evidence Player examines an object with information "This doesn't match the official log."
witness_interaction Player sees two NPCs interacting "Those two don't normally talk."
time_idle Player hasn't done anything for a while "Should probably get moving."
return_visit Player returns to a previously visited area "Different shift. Different faces."

Layer 5: Template Content & Entanglement

Question: How does the entanglement ratio (30/50/20) play out across ~15 NPCs?

Let me do the math and map it concretely.

NPC Distribution (D-029 applied to v0.1)

With ~15 NPCs across 3 social sites:

Entanglement Level Count Description Template Distribution
Flat (~30%) 4-5 NPCs Routine + greeting only. Social wallpaper. 1-2 per template
Mundane Triangle (~50%) 7-8 NPCs Involved in non-conspiracy social drama. Neighbor disputes, workplace rivalries, relationship tensions. 2-3 per template
Entangled (~20%) 3 NPCs Connected to smuggling operation. Their secrets are the investigation targets. Primarily in ring template, with 1 bridge NPC in another

Concrete NPC Skeleton (proposal)

Here's how I'd distribute them:

Logistics Hub (5 NPCs):

Role Name (placeholder) Entanglement Triangle Role
Shift Supervisor [TBD] Mundane Triangle A: workplace authority tension
Dock Worker 1 [TBD] Flat Wallpaper — reliable, boring, friendly
Dock Worker 2 [TBD] Mundane Triangle A: chafes under supervisor
Cargo Handler [TBD] Entangled Ring member. Uses job to move product. Bridge NPC to ring template.
Admin Clerk [TBD] Mundane Triangle B: knows more than they should about cargo discrepancies

Bar (5 NPCs):

Role Name (placeholder) Entanglement Triangle Role
Bartender [TBD] Mundane Triangle C: social hub, hears everything, discreet
Regular 1 [TBD] Flat Wallpaper — always there, colorful but uninvolved
Regular 2 [TBD] Mundane Triangle C: has a thing for the bartender, jealous of attention
Off-duty Worker [TBD] Mundane Triangle B (cross-template): same person from logistics hub, different behavior here. Bridge NPC.
Stranger [TBD] Flat Wallpaper — different face each playthrough. Procedural filler.

Smuggling Ring (5 NPCs):

Role Name (placeholder) Entanglement Triangle Role
Ring Leader [TBD] Entangled Runs the operation. Triangle D: power/loyalty tension
Ring Courier [TBD] Entangled Moves product between ring and hub. Triangle D: pressured by leader, considering turning
Ring Lookout [TBD] Mundane Triangle D: doesn't know the full scope of operation, thinks it's minor smuggling
Ring Contact (bar) [TBD] Mundane Triangle C (cross-template): the ring's eyes and ears at the bar
Ring Fixer [TBD] Flat Wallpaper for the ring — handles logistics, no drama

Triangle Map

Triangle NPCs Tension Type
A (Logistics Hub) Supervisor, Dock Worker 2, Cargo Handler Authority vs autonomy. Worker resents supervisor. Handler stays quiet to protect cover. Mundane + one entangled leg
B (Cross-template) Admin Clerk (Hub), Off-duty Worker (Bar), Cargo Handler (Ring) The clerk noticed discrepancies. The off-duty worker drinks too much and talks. The handler needs to keep both quiet. Cross-template, entangled
C (Bar) Bartender, Regular 2, Ring Contact Social drama. Regular is jealous. Ring Contact uses bar as intel gathering. Bartender sees all, says nothing. Mundane + one entangled leg
D (Ring) Ring Leader, Ring Courier, Ring Lookout Power and loyalty. Leader pushes for more volume. Courier is cracking under pressure. Lookout thinks it's small-time. Entangled

Note for Paula: Triangle B is the critical cross-template triangle. It's the mechanism by which the smuggling operation contaminates the mundane social world. The clerk's curiosity + the worker's loose lips + the handler's need for silence is a pressure cooker that the player can observe, manipulate, or accidentally trigger.

Does This Create Interesting Decisions?

For the smuggler: You KNOW the handler, the courier, the leader. Your daily life is managing these relationships. Triangle B is your biggest risk — the clerk is asking questions, the worker talks too much at the bar. Do you befriend the clerk to deflect? Warn the worker to shut up? Or trust the handler to manage it? Every choice has relationship consequences.

For the detective: You don't know any of this at first. You see a normal workplace, a normal bar. But the clerk seems nervous. The worker mentions "weird cargo hours" after their third drink. The handler is suspiciously friendly with the detective — trying to assess the threat. The detective's game is connecting these dots through observation and conversation.

This is the fun. Same 15 people, completely different games.


Layer 6: Minimum Viable Tell System

Question: What's the minimum viable tell system? One behavioral marker per axis, or fewer?

Let me break down what "tells" actually need to DO mechanically before deciding volume.

What Tells Are For

A "tell" is an observable behavior that reveals internal NPC state without the NPC explicitly saying anything. Tells are the bridge between the simulation (NPC has mood=nervous, secret=smuggling) and the perception system (player sees NPC fidgeting, looking over their shoulder).

Tells serve two functions:

  1. Reward observation — the player who watches carefully learns more than the player who just talks
  2. Create investigation breadcrumbs — "they seem nervous" prompts the player to dig deeper

Minimum Viable Tell System for v0.1

Not one per axis. That's 10 tells per NPC x 15 NPCs = 150 behavioral markers. Way too many for v0.1.

Instead: tells should map to the PLAYER-FACING question, not the simulation axis. The player doesn't think in axes — they think in "what's wrong with this person?"

Tell Category Maps to Axes Observable Behavior Implementation
Nervous/hiding something Secret, Tolerance threshold Fidgeting sprite variation, checking over shoulder, breaking eye contact (monologue describes) 2-3 text descriptions in monologue pool
Angry/frustrated Contentment (low), Tolerance (near threshold) Terse dialogue, aggressive movement pattern (faster walk), monologue notes "they look tense" Mood affects dialogue selection + 1 movement modifier
Friendly/warm Relationships (positive), Personality (sociable) Longer conversations, approaches player proactively, monologue notes openness Unprompted disclosure weighting increase
Guarded/cold Relationships (negative), Access (hostile) Short responses, avoids player, monologue notes resistance Access tier filtering does this naturally
Routine deviation Secret (active), Want (pursuing something) NPC goes somewhere they normally don't, at an unusual time Routine system deviation flag + monologue trigger

That's 5 tell categories for v0.1. Each is expressed through a combination of:

  • Monologue lines (character interprets the tell) — cheapest, most expressive
  • Dialogue weighting (mood shifts what lines are selected) — already in the pipeline
  • Movement behavior (1 modifier: speed/path deviation) — lightweight

Most tells in v0.1 will be TEXT, not visual. The monologue system IS the tell renderer. "They're checking the corridor before entering the back room" is a tell delivered through monologue, not through a complex animation system. This is consistent with D-016 (monologue as perception bridge) and D-014 (functional boxes with labels).

What Mellanie Needs

For each of the 5 tell categories, 3-5 monologue lines per character. That's 30-50 monologue lines dedicated to tells, split between smuggler and detective voice.

Smuggler tell monologue reads differently from detective tell monologue:

  • Smuggler noticing nervousness: "They're spooked. Wonder who's been asking questions."
  • Detective noticing nervousness: "Nervous. Either guilty or scared of someone who is."

Same observation, different interpretation. This is where the dual-lens system shines brightest.


Layer 7: Monologue & Observation Text

No direct questions for Gestalt here, but a systems note:

Monologue content volume is the highest content risk in the entire project (I flagged this in the previous gap analysis workshop). The monologue system carries perception, atmosphere, tutorial, tells, investigation clues, and character voice — simultaneously. If it feels thin or repetitive, the entire game suffers.

The trigger taxonomy I defined in Layer 4 above (9 trigger types) maps directly to content authoring work. Mellanie needs to write lines for each trigger type x each location x each character. That's approximately:

Trigger Lines per location x3 locations x2 characters Total
enter_location 3-5 9-15 18-30 18-30
observe_npc 5-8 15-24 30-48 30-48
hear_sound 3-4 9-12 18-24 18-24
observe_anomaly 3-5 9-15 18-30 18-30
post_conversation 5-8 15-24 30-48 30-48
discover_evidence 2-3 6-9 12-18 12-18
witness_interaction 3-5 9-15 18-30 18-30
time_idle 2-3 — (shared) 4-6 4-6
return_visit 2-3 6-9 12-18 12-18

Estimated monologue line count: 160-250 authored lines. Plus the 30-50 tell lines. Call it 200-300 monologue lines total — consistent with the D-028 workshop estimate.

These are authored lines. The 4x generation expansion applies here too, giving ~800-1200 total monologue lines in the game. That should prevent repetition across a 30-minute session.


Layer 8: UI Text & Onboarding

Question: Does v0.1 need onboarding text, or can the monologue system serve as the tutorial (D-016 "diegetic tutorial")?

Answer: Monologue IS the tutorial. No separate onboarding text needed for v0.1.

Here's how it works mechanically:

Diegetic Tutorial Through Monologue

The player's first 2-3 minutes produce a sequence of monologue lines that teach by narrating:

Player Action Monologue Tutorial What It Teaches
Game starts "Another day at [station]. Better check the schedule." (Smuggler) / "Precinct forwarded the case file. Time to start." (Detective) You have a purpose. You're a person.
Player moves "Quiet corridor. Nobody around." Vision cone — you can see what's in front of you.
Player approaches fog edge "Something around the corner. Can't see from here." Fog = limited perception. Move to see more.
Player hears sound through wall "Voices. Can't make out what they're saying from here." Sound carries through walls. Get closer.
Player sees first NPC "That's [Name]. [Brief relationship context]." (Smuggler) / "Unknown civilian. Standard profile." (Detective) You know (or don't know) people. Character relationships matter.
Player talks to NPC (Dialogue system handles this) Conversation exists. Different people tell you different things.
Player checks insert "Let's see... [location info]." The minimap/insert exists and is diegetic.

No "Press WASD to move" text. No tooltip overlays. The character's thoughts teach the player by reacting to what the player does naturally.

What this requires from Mellanie: A special opening-hook.yaml per character with 10-15 tightly sequenced monologue lines that fire in response to the player's first actions. These are the most important lines in the entire game — they set voice, teach mechanics, and establish motivation simultaneously.

UI Text That IS Needed

Even with diegetic tutorial, some UI text is unavoidable:

UI Element Text Needed Volume
Main menu New Game, Continue, Settings, Quit 4-6 strings
Character select Smuggler description, Detective description 2 paragraphs
Pause menu Resume, Save, Load, Settings, Quit 5-6 strings
Insert/minimap labels POI names, distance indicators ~10-15 strings
Dialogue UI "Talk", "Leave", topic selection labels ~5-10 strings
Time display Day phase indicator, clock format 4-5 strings

Total UI text: ~40-50 strings. Trivial volume. Can be authored in an afternoon.


Layer 9: Audio Direction

Question: Does the three-range sound model need audio content to prove itself, or can it work with system beeps and text?

Answer: Text-only sound is mechanically sufficient for v0.1. Audio content is a wow multiplier, not a proof requirement.

Here's why:

How Sound Works Without Audio Files

The three-range model (D-018) is fundamentally an INFORMATION system, not an audio system. What matters is:

Range What the player needs to know Text-only delivery
Close "I can hear this clearly" Monologue: "Footsteps behind me. Two people."
Medium "Something's happening nearby but I can't see it" Visual indicator at fog edge + monologue: "Voices from the next room."
Long "Information arrived through my insert" Insert notification text: "Alert: disturbance reported in Sector 7"

All three ranges work through text + visual indicators. The SYSTEM is provable without a single audio file.

What Audio WOULD Add

Audio adds emotional texture that text can't match:

  • Close range: actual footstep sounds create spatial awareness and tension
  • Medium range: muffled voices through walls create curiosity and dread
  • Fog edge: ambient hum vs silence communicates "something's there" vs "empty"

Recommendation: Defer ALL authored/designed audio to a later sprint. For v0.1, use at most:

  • 1 ambient drone per location type (3 total — can be freely licensed or generated)
  • 1 footstep sound for close-range feedback
  • 1 "notification chime" for insert alerts

That's 5 sound files. The rest is text + visual indicators. If even this is too much, zero audio is acceptable. The monologue system can carry the entire perceptual load.

But the system architecture must still support audio. The sound event system (#124) should emit events regardless of whether audio content exists. The client receives "sound event at coordinates X,Y with type FOOTSTEPS" — whether it plays a wav file or shows a visual indicator is a client rendering decision. Don't build the system around text; build it around events and render text as the v0.1 fallback.


Cross-Layer Synthesis: What Gestalt Thinks the Content Team Needs

Priority-Ordered Content Work

Priority Deliverable Owner Depends On Lines/Volume
1 Line pool format specification (this document) Gestalt (done) Nothing Spec only
2 Dual Lens Authoring Guide Paula Layer 2 access tier model (above) ~10 pages
3 Station district setting brief Miri Nothing ~2-3 pages
4 Character voice kits (smuggler + detective) Mellanie Dual Lens Guide 20-30 sample lines per character
5 Opening hook content (per character) Mellanie Voice kits 10-15 lines per character
6 NPC profiles (15 NPCs) Paula + Mellanie Setting brief, character builds 1 page per NPC
7 Logistics Hub content pack (#190) Mellanie NPC profiles, line pool format ~55-70 dialogue + ~30-40 monologue lines
8 Bar content pack (#191) Mellanie NPC profiles, line pool format ~55-70 dialogue + ~30-40 monologue lines
9 Smuggling Ring content pack (#192) Mellanie NPC profiles, line pool format ~55-70 dialogue + ~30-40 monologue lines
10 Tell monologue lines Mellanie NPC profiles, tell categories 30-50 lines
11 Environmental text Mellanie + Araminta Setting brief ~30-50 strings
12 UI text Mellanie Character descriptions ~40-50 strings

The Critical Path

Dual Lens Guide (Paula)
  + Station Setting (Miri)
    + Line Pool Format (Gestalt - this document)
      → Character Voice Kits (Mellanie)
        → Opening Hooks (Mellanie)
          → NPC Profiles (Paula + Mellanie)
            → Content Packs x3 (Mellanie)
              → Tell Lines + Environmental (Mellanie)

Nothing blocks the line pool format — it's spec work. The Dual Lens Guide and Station Setting can proceed in parallel. Once those two exist, Mellanie can start writing. The content packs are the bulk of the work and should start as soon as the voice kits feel right.

One Last Mechanical Note

The line previewer (#193) is critical. Mellanie cannot efficiently author 500+ tagged lines without a tool that shows "given this NPC, this access tier, this mood, this situation — what line would fire?" The previewer doesn't need to be pretty. It needs to load a YAML file, accept filter parameters, and show the selected line. A CLI tool. Tyre can build this as a Rust binary that reads the YAML and applies the selection pipeline.

Without the previewer, Mellanie is writing blind. Tag errors won't surface until integration. That's a recipe for rework.


Gestalt out. The format is proposed, the tags are defined, the pipeline is mapped. Now we need Paula's lens guide, Miri's setting, and Mellanie's voice. The systems are ready for content.