Files
settled-reach/decisions/content.md
T
jpmschweitzerandClaude Opus 4.6 4af2197c59 fix(ci): address PR review — filter comments, trim whitespace, warn on missing scripts
Address all review comments from Hoshe and Tyre on PR #27:
- Remove 2>/dev/null from pre-pr-fixtures (critical: swallowed errors)
- Remove dead _file_type function
- Check 4: error on districts with no locations declared
- Check 5: print advisory message when skipping
- Check 8: cross-file line ID uniqueness (not just per-file)
- Check 9: document D-034 asymmetric relationships in docstring
- Document regex fallback rationale in _scan_knowledge
- Add D-035 decision trace to schema descriptions
- Use concrete protocol version in DEVOPS.md example
- Amend D-035 with focused (9th mood) and greeting (14th situation)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 00:23:21 +01:00

23 KiB
Raw Permalink Blame History

Content Decisions

How narrative, NPCs, and world content are created: content tiers, NPC generation, templates, dialogue, population, audio aesthetic identity.


D-023: Three-tier content model with life-sim substrate

  • Date: 2026-02-10
  • Decision: The game uses a three-tier content architecture: Tier 1 (authored drama modules drawn from a pool at game start — plural, optional, relocatable), Tier 2 (templated content with combinatorial variation — both intrigue and life templates), Tier 3 (procedural filler with systemic hooks for Tier 2 colonization). Daily life is the substrate; conspiracies are weather. Players can investigate, pursue careers/relationships, or both. All are valid playthroughs. The storyteller activates Tier 1 modules based on player proximity and engagement, not timers.
  • Rationale: A galaxy-spanning game needs content architecture that scales without hand-crafting everything. The life-sim substrate creates attachment that gives conspiracies emotional weight. Pool-based Tier 1 modules enable replayability and DLC expansion.
  • Raised by: Team Leader (Jeroen), with full team endorsement across 3 rounds
  • Dissent: None

D-024: NPC generation model — 10 axes + combat component

  • Date: 2026-02-10
  • Decision: NPCs are generated with 10 axes: 7 essential (Want, Secret/vulnerability, Relationships 1-3, Tolerance threshold, Daily routine, Information inventory, Contentment) and 3 supporting (Personality traits 2-3, Tell system, Skill set including combat tag). Combat capability lives as an optional CombatCapability ECS component triggered by the combat-trained skill tag, not as an axis. Faction loyalty is folded into Relationships+Secret (discoverable, not labeled). Romantic profile is folded into Want+Personality+compatibility tag. Cultural/origin template is generation-time flavor, not a runtime axis. Triangles (3 NPCs with conflicting interests) are the atomic unit of social intrigue — 2 per template minimum, 1 cross-template.
  • Rationale: Axes that create contradictions within NPCs produce player decisions. The 5 key interactions (Want×Secret, Routine×Secret, Tolerance×Relationships, Want×Relationships, Personality×Tolerance) drive the full investigation-and-social gameplay loop. Contentment axis (proposed by Gore) connects generated NPCs to the thematic spine. Combat as component follows the same pattern as perception modes (D-017).
  • Raised by: Gestalt (consolidation), Gore (contentment axis), Paula (triangle model), Tyre (combat component). Full team endorsed.
  • Dissent: None

D-025: Social site / functional cluster as atomic template unit

  • Date: 2026-02-10
  • Decision: The atomic Tier 2 template unit is a "social site" (mechanical term) housed in a "functional cluster" (spatial term): 4-8 NPCs who regularly interact, within 15-40 tiles of connected space with internal sightlines. Social group defines systemic identity (who, what triangles). Physical cluster defines spatial identity (sightlines, overhearing, public/private). Templates define roles; NPCs fill roles. One NPC can hold roles in multiple social sites. NPC identity is independent of template instantiation. NPCs are owned by exactly one template with reference links (carrying relationship metadata) to others.
  • Rationale: Life in the Settled Reach happens in clusters of connected spaces. The functional cluster is the natural unit of social observation, which is the natural unit of gameplay. Single-ownership with reference links prevents lifecycle conflicts while enabling cross-template contamination.
  • Raised by: Gestalt (social site), Miri (functional cluster), Tyre (ownership model), Paula (reference metadata)
  • Dissent: None

D-028: Dialogue architecture — tagged line pools with four relational layers

  • Date: 2026-02-10
  • Decision: Dialogue uses tagged line pools with systemic selection, not branching trees. Four relational layers, all planned from authoring day one, built in sequence: (1) Access tiers — insider/outsider/authority/peer filter on every line, (2) Relationship history — interaction log modifying greeting and topic selection, (3) Trust-gated gossip — three disclosure tiers per role (surface/real/secret), (4) Unprompted disclosure — NPCs volunteer information weighted by trust and mood. Trait modifiers (not per-trait scripts) reshape delivery — base lines + trait transformation guide per template. Template content packs as writing deliverable: role voice kits, situation scripts, monologue hooks, environmental text, trait transformation guide. ~165-210 authored lines per Tier 2 template, generation-expanded 4x. Social dialogue budgeted 40% more than investigation. Line previewer CLI required as authoring tool and regression test harness.
  • Rationale: All four layers are load-bearing — each enriches the previous ones. Tagged pools avoid combinatorial explosion while trait modifiers produce character variety. The generation pass (write 10, generate 40) scales authored content. Every memorable line needs a human hand; the generation pass fills the background.
  • Raised by: Mellanie (authoring model), Paula (relational layers), Gestalt (axis-to-pipeline mapping), Tyre (previewer feasibility)
  • Dissent: None on model. Minor ordering difference: Mellanie front-loads access tiers (structural), Paula front-loads relationship history (narrative). Both sequences work.

D-029: Population entanglement ratio — 30/50/20

  • Date: 2026-02-10
  • Decision: NPC population split: ~30% truly flat (routine + greeting, social wallpaper), ~50% mundane triangles (neighbor disputes, workplace rivalries, relationship tensions — no conspiracy connection), ~20% entangled with intrigue content. The entanglement rate varies per seed to prevent metagaming calibration. Module attachment to known NPCs uses a ~60-70/30-40 ratio (known vs stranger), also varying per seed. The unentangled majority is both thematically essential ("is this enough?" needs honest counterweight) and mechanically essential (investigation signal requires noise floor).
  • Cross-reference: Simulation tier budgets in D-026.
  • Rationale: If every NPC is suspicious, investigation collapses. The mundane triangles ARE the life-sim game — hours of play that never touch conspiracy. Variable entanglement rate defeats metagaming across playthroughs. Quiet life must feel genuinely good, not empty.
  • Raised by: Gore (thematic), Paula (30/50/20 split), Nigel (anti-metagaming), Team Leader (majority unentangled)
  • Dissent: None

D-032: Separate monologue pools per character

  • Date: 2026-02-11
  • Decision: Internal monologue content is hard-partitioned by playable character. The smuggler and detective have completely separate monologue pools — no shared lines. The character tag on monologue lines is a hard partition, not a filter. File structure uses separate files per character per location (e.g., monologue-smuggler.yaml, monologue-detective.yaml).
  • Rationale: Shared monologue would dilute character voice and undermine the dual-lens experience. Each character's internal voice must be independently coherent. Same trigger, different pool — this is how mirror moments work without either pool knowing about the other.
  • Cross-reference: Dialogue lines remain character-agnostic — the access tier system (D-028 Layer 1) handles per-character filtering without separate pools.
  • Raised by: Mellanie (Round 1 proposal), confirmed as non-negotiable by project lead
  • Dissent: None

D-034: THE FRIEND — production-level NPC pattern

  • Date: 2026-02-11
  • Decision: Each playable character has one "FRIEND" NPC — a production-level complex character that exercises every content and systems pipeline at full depth. THE FRIEND is the emotional centerpiece of v0.1 and carries D-027 success criterion #3 ("player names an NPC they felt conflicted about"). THE FRIEND follows a reusable pattern: 3+ relationship phases (warmth → trust → doubt → conflict), observable contradiction discoverable through observation not dialogue, sympathetic motivation, no clean resolution, dual-lens resonance, triangle integration, tell progression, and dialogue shift pre/post discovery.
  • Assignments:
    • Smuggler's FRIEND: Kael Davan — dock worker, ring member, smuggler's closest colleague. Contradiction: meeting with unknown contact in restricted corridor (trying to exit the ring to protect partner Naia). Exercises: full 10-axis model, multi-phase dialogue, tell system, named monologue, dual-lens notes.
    • Detective's FRIEND: Sera Venn — Commission field tech, bar regular, detective's social anchor. Contradiction: avoids Torek Lintar (sitting on unreported evidence about Kael's manifest discrepancies, protecting friend Naia). Exercises: institutional access + personal loyalty conflict, avoidance pattern as tell, trust-contamination arc.
  • Content requirements per FRIEND NPC: ~70-100 authored lines (25-35 dialogue, 15-20 trust-gated, 5-8 unprompted, 10-15 monologue per character, 5-8 tell observation, 3-5 contradiction discovery). No generation expansion — all hand-authored.
  • Cross-reference: NPC triangle model (D-024), relationship web (D-029), vertical slice criteria (D-027)
  • Raised by: Ozzie (emotional concept, Round 1), Paula (structural design and both FRIEND profiles, Round 2), project lead (confirmed, directive #4). Sera Venn confirmed by project lead over Mellanie's alternative proposal (Lera Sessik).
  • Dissent: Mellanie proposed Lera Sessik (bar owner) as detective's FRIEND. Project lead selected Paula's Sera Venn design. Lera remains bar owner / mundane triangle member.

D-035: Converged tag taxonomy for dialogue and monologue line pools

  • Date: 2026-02-11
  • Decision: Tagged line pools (D-028) use a converged taxonomy of 6 structural tags + 3 selection tags per dialogue line. Monologue lines add 3 additional tags.
  • Structural tags (required on every dialogue line):
    • id (string): {template}_{d|m|e}_{###} — machine-parseable, stable
    • text (string): the authored line
    • role (enum): template-defined role (not NPC name — NPC assignment is runtime)
    • access (list<enum>): public, insider, authority, peer, hostile — D-028 Layer 1 hard filter
    • trust (enum): surface, real, secret — D-028 Layer 3 hard filter
    • situation (list<enum>): 13 situations for v0.1 — D-028 Layer 2 context filter
  • Selection tags (recommended, defaults if empty):
    • topic (list<enum>): 9 topics for v0.1 — D-028 Layer 4 weighted selection
    • mood (list<enum>): 8 moods for v0.1 — D-028 Layer 4 weighted selection
    • tags (list<string>): freeform escape hatch for author intent
  • Monologue-specific additions:
    • character (enum): smuggler, detective — hard partition per D-032
    • trigger (enum): 9 trigger types (enter_location, observe_npc, hear_sound, observe_anomaly, post_conversation, discover_evidence, witness_interaction, time_idle, return_visit)
    • prerequisite (map or null): knowledge state gate
  • Authoring-only tags (not consumed by engine): dual_lens (map, per-character notes), notes (string)
  • Key design choices: Location and content type dropped from per-line tags (implicit from directory structure and file naming). access is list (a line can be eligible for multiple tiers). topic and mood are lists. Layer 2 relationship history expressed through engine-state-to-situation mapping, not per-line tags.
  • Cross-reference: Dialogue architecture (D-028)
  • Raised by: Gestalt (schema design, Round 1/2), Mellanie (authoring validation, Round 1/2). Converged across both agents in Round 2.
  • Dissent: None. Minor consolidations: Mellanie's 8 moods mapped to Gestalt's 8 (different names, same concepts). Mellanie's crime topic deliberately excluded (NPCs think of it as cargo or money).
  • Amendment (Sprint 8): focused added as 9th mood (used in Kael dialogue at The Terminal and maintenance corridors). greeting added as 14th situation (used in PC dialogue pools for initial contact lines). Schema updated to match.

D-036: Sova Transit District / Krenn System as v0.1 setting

  • Date: 2026-02-11
  • Decision: The v0.1 vertical slice is set in Sova Transit District, a freight logistics hub on Station Sova in the Krenn System. This is the first concrete, named star system in The Settled Reach. The Krenn System is a mid-Reach G3V system, ~180 years settled, population ~2.4 million, working-class pragmatic culture. Station Sova is a logistics hub (~12,000 population). Sova Transit District is a 40-year-old prefab-modular-retrofitted freight district with three social sites: The Terminal (logistics hub), The Last Shift (bar), and maintenance corridors/smuggling spaces.
  • Setting details (canonical):
    • NPC naming: Krenn System conventions — compact, consonant-heavy, first-name-primary in social contexts (Kael, Voss, Lera, Torek, Drin, Maret, Naia, Sera, Nils, Kosse, Pael, Tev, Ren)
    • Bar naming: "The Last Shift" (official), "Lera's" (informal, used by regulars)
    • Atmosphere: "quotidian-with-undertow" — comfortable enough to be complacent, tight enough that extra income is tempting
    • Sensory: span gate hum, industrial lubricant, recycled air, cargo machinery
  • Cross-reference: Vertical slice (D-027), contraband (D-037)
  • Raised by: Miri (Sova setting brief, Round 1; Krenn System profile, Round 2), project lead (confirmed as worldbuilding milestone, directive #6)
  • Dissent: None

D-037: Contraband specification — unlicensed lattice components

  • Date: 2026-02-11
  • Decision: The primary contraband in the v0.1 smuggling scenario is unlicensed lattice components — aftermarket neural lattice modifications that bypass Commission regulation. Secondary contraband: medical-grade neural lattice replacements (diverted from Syndic supply chains) and Severance counter-surveillance technology.
  • Moral dimension: The ring is smuggling access, not weapons. People want better lattice capability than Commission-regulated channels provide. Medical-grade replacements serve people whose lattices are degrading and who can't afford institutional replacement. This creates genuine moral ambiguity: the smuggler isn't a villain, they're providing a service the legitimate system won't.
  • Gameplay relevance: Lattice components connect to the perception system (D-017) — a smuggled upgrade could theoretically change what the player perceives. Manifest discrepancies are the primary investigation vector. The detective's analytical lattice can flag cargo anomalies.
  • Cross-reference: Perception modes (D-017), setting (D-036)
  • Raised by: Miri (Round 1 proposal, Round 2 validation), Paula (moral dimension endorsement), full team validated
  • Dissent: None

D-050: Velen — Krenn System primary world

  • Date: 2026-02-12
  • Decision: Velen is the canonical name for the Krenn System's primary habitable world. Temperate-maritime climate, ~0.9G, regular rain, morning/evening fog, mild temperature range, occasional heavy squalls. Station Sova orbits Velen. The span gate connects Sova to a planetary freight depot on Velen's surface. Naming convention: compact, consonant-weighted, two-syllable, Nordic-influenced.
  • Weather as gameplay (cross-ref D-046): Fog degrades everyone's vision cones equally — shared vulnerability. The storyteller can time weather for dramatic effect without breaking environmental neutrality (D-045). Foggy mornings = shorter cones = smuggler's early drops safer, detective's dawn surveillance harder.
  • Cross-reference: Setting (D-036)
  • Canonical reference: docs/workshops/art-direction-mood-board/workshop-outcomes.md §1.13, §1.15
  • Raised by: Miri (Round 2 proposal), confirmed by project lead (Round 3). Unanimously endorsed.
  • Dissent: None

D-062: Invisible locked dialogue options

  • Date: 2026-02-13
  • Decision: Dialogue options the player hasn't unlocked are completely invisible. No grayed-out options. No lock icons. No hint that more options exist. The player doesn't know what they don't know. Exception: NPC holding back is communicated via monologue ("She changed the subject. Fast."), not via locked UI elements.
  • Rationale: 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. Strongest consensus point of the entire workshop — unanimous across all 8 participants.
  • Cross-reference: Dialogue architecture (D-028), knowledge graph confidence tiers (D-041), dialogue box (D-061)
  • Source: Control & Interaction Workshop (2026-02-13)
  • Raised by: Gestalt (proposal + four-reason rationale), Nigel (emphatic reinforcement: "non-negotiable")
  • Dissent: None. Unanimous.

D-063: Confrontation — same box, different weight

  • Date: 2026-02-13
  • Decision: Confrontation uses the same dialogue UI as casual conversation — no separate confrontation mode. Different weight communicated through four mechanisms: (1) Confrontation options written in character's internal voice — italicized, first-person (regular: "Shift schedule" / confrontation: "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 — NPC shifts to Tier 2 animation (D-047), entity D-033 color may fade, monologue frequency spikes, available topics narrow post-confrontation. (4) Walk-away mid-confrontation contaminates social space — NPC routine may shift, KG records incompleteness.
  • v0.1 staging: Proximity check + audio dip + text styling. Camera tighten deferred to post-v0.1.
  • Explicitly NOT: Separate confrontation UI, timed responses, visible relationship meter, correct/incorrect dialogue approaches.
  • Rationale: Confrontation should feel heavy because of what you're saying, not because the UI changed. The weight comes from pacing, voice, and consequence.
  • Cross-reference: Dialogue architecture (D-028), two-tier animation (D-047), entity color (D-033), walk-away (D-064)
  • Source: Control & Interaction Workshop (2026-02-13)
  • Raised by: Paula (four mechanisms), Ozzie (physical staging), Stig (UI container)
  • Dissent: None.

D-064: Walk-away — three-phase consequences

  • Date: 2026-02-13
  • Decision: Walking away from dialogue (WASD during conversation) triggers three distinct phases: (1) Immediate break — dialogue fades over 300ms, silence. No close button. (2) NPC reacts — animation shifts, may call after player, routine may change. (3) KG records incompleteness — the knowledge graph logs that the interaction was initiated but not completed. This is queryable and affects future dialogue, monologue, and NPC behavior. Walk-away consequences vary by NPC tolerance threshold per seed — no universal social rules to metagame.
  • Rationale: Walking away is an action with meaning. Leaving mid-confrontation is different from leaving mid-smalltalk. The KG recording means the game remembers what you started. Per-seed tolerance prevents players from learning universal "safe to walk away" rules across playthroughs.
  • Cross-reference: Confrontation (D-063), knowledge graph (D-041), dialogue box (D-061)
  • Source: Control & Interaction Workshop (2026-02-13)
  • Raised by: Paula (three phases + KG recording), Stig (WASD mechanic + 300ms fade), Ozzie (consequences), Nigel (tolerance per seed)
  • Dissent: None.

D-074: Audio aesthetic identity — insert-tech vs organic

  • Date: 2026-02-16
  • Decision: Audio design uses two sonic families with distinct aesthetic identities:
    • Insert-tech sounds: Synthetic, precise, clinical, no reverb. Monologue chimes (D-038 assets 7-8), UI feedback, future: lattice interface sounds, biometric scan confirmations. Represents neural lattice interface — artificial, computational, clinical.
    • Organic sounds: Warm, breathy, natural decay, environmental reverb. Footsteps, ambient layers, NPC movement, environmental events. Represents human cognition and physical reality — warm, imperfect, lived-in.
  • Thematic mapping: Insert-tech = neural lattice (computational precision, trustworthy but inhuman). Organic = human cognition and environment (warm, ambiguous, interpretive). Maps to D-018 trust model: close/organic sounds = reliable, long-range/insert sounds = potentially compromised.
  • Station palette — "functional warmth":
    • Low-freq foundation (60-120Hz): station hum, span gate vibration, machinery drone.
    • Mid-freq texture (200-800Hz): footsteps, object handling, conversation murmur.
    • High-freq detail (2-8kHz, sparse): scanner pings, metal impacts, environmental detail.
    • No harsh frequencies, no industrial brutality. The station is SETTLED — lived-in, maintained, comfortable enough to be complacent.
  • Environmental neutrality per D-045: Ambient audio does NOT shift with narrative state. Same station hum before and after conspiracy discovery. No music stingers for investigation progress. Emotional weight comes from monologue and player knowledge, not audio cues.
  • Cross-reference: Audio assets (D-038), sound model (D-018), environmental neutrality (D-045), setting (D-036)
  • Raised by: Inigo (insert-tech/organic split), Paula (cognitive architecture framing and trust model connection)
  • Dissent: None

15 decisions. Last updated: 2026-02-16