Scoped the vertical slice: 16 EntityKnowledge keys, v0.1 mechanical NPC mapping, YAML content format, 7-verb interaction model, server- authoritative pause, 38 tickets created across copy/server/client/ci. 20 decisions (D-042 through D-061). 8 agents, 2 rounds + closing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
36 KiB
Round 1 — Gestalt (Systems Design)
cracks knuckles
Let me break down what all of this actually means mechanically.
Topic 1: Wiki Fixes
1a. Do any triangles need restructuring beyond Triangle 1?
Triangle 1 (Hub Power): Yes, needs a fork. Addressed below.
Triangle 2 (Worried Knowledge): Structurally sound but smuggler lens is weak. The smuggler "manages" Maret and Drin — that's passive. The smuggler needs a DECISION in this triangle too. Proposed fix: when Maret gets close to reporting, the smuggler can either (a) feed Maret a cover story through Voss, (b) pressure Drin to reassure Maret, or (c) let it ride and hope Maret stays scared. This isn't a restructure — it's adding a smuggler decision node to an existing triangle.
Triangle 3 (Bar Tensions): Fine as-is. This is a MUNDANE triangle (D-029: 50% mundane). Its job is to be noise floor. Torek's ambiguous spending, Olin's ambiguous intent, Lera's ambiguous loyalty — the player reads signals that might mean nothing. That IS the mechanic. Don't add a fork — the ambiguity IS the fork. The player decides whether to investigate or ignore, and both decisions have consequences (wasted time or missed signal).
Triangle 4 (Worried Partner): Excellent. No changes. Both FRIEND NPCs are nodes. The triangle IS the contradiction structure. This is the best-designed triangle in the set.
Triangle 5 (Informant Question): Structurally sound but resolution timing matters. Pell's wavering, Renn's suspicion, Drin's vulnerability — all three paths toward unraveling operate on different timescales. In a 30-minute session, the player observes the TENSION but probably doesn't see the RESOLUTION. That's fine for v0.1 — the tension is the content, the resolution is the hook for continued play. No restructure needed, but we need to be explicit: Triangle 5 is a passive triangle in v0.1 (observable tension, unresolved fork).
Summary: Active vs. Passive Triangles for v0.1
| Triangle | Status | Smuggler Decision? | Detective Decision? | Resolution in 30 min? |
|---|---|---|---|---|
| 1: Hub Power | Active | YES (escalation fork) | No (observes consequences) | Partial |
| 2: Worried Knowledge | Active | YES (manage Maret) | YES (flip Drin or work Maret) | Partial |
| 3: Bar Tensions | Passive | No (assess risk) | No (read signals) | No (ambiguity is permanent) |
| 4: Worried Partner | Active | YES (protect Kael/lie to Hael) | YES (ask Sera about Hael) | Yes (FRIEND contradiction) |
| 5: Informant Question | Passive | No (observes Pell's nervousness) | No (sees downstream signals) | No (hook for continuation) |
3 active forks, 2 passive tensions. That's correct for 30 minutes.
1b. Triangle 1 Fork Design
The existing triangle: Nils (off-stage) pushes for higher volume. Voss (shift supervisor) wants stability. Kael is caught between sibling loyalty and operational caution. The smuggler's role is currently passive — they just watch.
The fork: The Escalation Decision
Setup (minute 5-10): Devra approaches the smuggler during a routine shift. Message from Nils: next shipment is double volume. Nils needs more hands and wider timing windows. Voss has to adjust the shift schedule to create a bigger gap. The smuggler is asked to help convince Voss — or handle the extra volume personally.
The smuggler decides:
| Choice | Immediate Effect | Triangle Consequence | Detective Signal | Mechanical Outcome |
|---|---|---|---|---|
| Side with Nils (escalate) | Extra shipment gets handled. More money. Kael is relieved (less family pressure). | Voss gets more anxious, becomes sloppy. Voss's tells accelerate. Operation becomes more visible. | Manifest discrepancies spike. Voss's behavior flags: "nervous,schedule_changes,evasive". Detective investigation ACCELERATES. |
exposure_risk increases globally. cover_integrity of ring drops to "thin". Wow moment #2 (Character's Eye) triggers EARLIER. |
| Side with Voss (stabilize) | Shipment gets rejected or delayed. Nils applies more pressure on Kael directly. | Kael's distraction increases (more contact with exit coordinator). Operation stays quiet but INTERNAL tension builds. | Fewer observable signals. Detective investigation SLOWS. But Kael's tells (lattice checking, distraction) become more visible. | exposure_risk stays low. But Kael's behavior_flags escalate faster. FRIEND contradiction (wow moment #3) hits HARDER because it comes from internal pressure, not external. |
| Mediate (delay) | Smuggler proposes a compromise: half volume increase, phased over two shipments. Neither side satisfied. | Nils loses confidence in the smuggler. Voss is temporarily calmed. Kael is confused ("I thought you were handling this"). | Mixed signals. Operation is inconsistent — some shifts are busier, others normal. Detective reads organizational confusion accurately. | Smuggler's operational_trust with Nils drops. Smuggler's relationship with Devra becomes strained. Creates a SECOND decision point later when Nils sends a more forceful message. |
What the detective observes (per smuggler choice):
The detective doesn't see the decision. They see its CONSEQUENCES:
-
Post-escalation: "Voss changed the night shift schedule. Third time this week. The pattern is getting louder." Monologue trigger:
observe_anomaly+prerequisite: { "investigation.shift_mismatch": "Suspects" }. The detective's investigation accelerates because Voss's anxiety produces more observable signals. -
Post-stabilize: "The hub's been quiet this week. Schedules normal. But that dock worker — Kael — he's checked his lattice eleven times this shift." The detective's investigation pivots from institutional signals (schedules, manifests) to personal signals (Kael's behavior).
-
Post-mediate: "Something's off. Last night's shift had extra cargo. Tonight it's normal. There's no pattern I can find, and that's the pattern." The detective is confused, which is realistic and interesting — real investigations hit dead ends.
Key design note: The fork doesn't change WHAT the detective discovers — it changes WHEN and HOW. All three paths lead to the ring. The smuggler's choice shapes the detective's journey, not the detective's destination.
1c. Should Drin be promoted to Tier 2?
Yes. Unambiguously.
Drin is doing Tier 2 work in a Tier 3 body. Mechanically, Drin is:
- Member of Triangle 2 (Worried Knowledge) — one of our 3 active triangles
- Member of Triangle 5 (Informant Question) — one of our 2 passive triangles
- Compromised by Harek (gambling debt) — a coercion arc
- The easiest NPC for the detective to flip
- The most vulnerable ring asset for the smuggler to manage
- A bridge between 2 triangles across 2 social sites
A Tier 3 NPC gets ~10-15 authored lines and 3 axes (Want, Routine, Personality). That's not enough for an NPC who appears in 2 triangles and is a potential informant.
Tier 2 requires:
| Axis | Drin's Content |
|---|---|
| Want | Keep his job, clear the debt, stop looking over his shoulder |
| Secret | Gambling debt to Harek. Harek holds IOUs. Drin looks the other way during inspections in exchange for debt forgiveness. |
| Relationship 1 | Harek (debt holder, coercer) — fear-based, asymmetric |
| Relationship 2 | Voss (depends on Drin's compliance) — professional, strained |
| Relationship 3 | Maret (colleague, doesn't know about Drin's compromise) — guilt-adjacent |
| Tolerance | LOW — already past breaking. The compromise IS his post-threshold state. |
| Routine | Maintenance shifts, inspection rounds (these ARE the windows he's leaving open) |
| Information | Knows inspection schedule gaps, knows he's being used, doesn't know ring structure beyond "someone benefits from my compliance" |
| Contentment | Very low. Trapped. Remembers when the job was just a job. |
| Personality | Quiet, avoidant, anxious. Doesn't make eye contact during compromised inspections. |
| Tell | Changes route when Harek is present. Shorter inspection times on specific shifts. Increased break frequency (stress smoking equivalent). |
| Skills | Maintenance tech, inspection procedures. No combat. |
Content requirement: ~40-60 authored lines (Tier 2 standard):
- 15-20 dialogue (routine greetings, deflection, cracking under pressure)
- 8-12 trust-gated (what Drin reveals when scared vs. when trusting)
- 5-8 unprompted (nervous comments, redirect attempts)
- 5-8 monologue per character (detective: "He's hiding something, his inspection times are irregular" / smuggler: "Drin's been twitchy. If he cracks, we're all exposed")
Tier adjustment: Tier 3 roster drops from 5 to 4 (Sess, Olin, Sabel, Tav). Tier 2 grows from 10 to 11. Total content budget increase: +30-45 authored lines. This is well within scope for the value Drin provides.
Topic 2: v0.1 NPC Architecture
2a. Full NPC → Pattern + Motivation Mapping
Here's every NPC mapped. I'm assigning based on what each character DOES in v0.1, not what they might become at 300-world scale.
| # | Name | Tier | Thematic Pattern | Functional Motivation | Composition Rationale |
|---|---|---|---|---|---|
| 1 | Kael Davan | T1 | FRIEND | OPERATOR | Trust anchor hiding a contradiction + running ring cargo operations. FRIEND+OPERATOR = identity betrayal ("I didn't know who you really were") |
| 2 | Sera Venn | T1 | FRIEND | WITNESS | Trust anchor hiding a contradiction + carrying unreported evidence. FRIEND+WITNESS = loyalty vs. duty ("She saw something and chose silence") |
| 3 | Voss | T2 | SYSTEM | OPERATOR | Institutional authority (shift supervisor) + running the schedule that enables smuggling. SYSTEM+OPERATOR = corrupted authority ("The system works for the wrong people") |
| 4 | Lera Sessik | T2 | ANCHOR | OPERATOR | "Is this enough?" embodied + running a business on willful ignorance. ANCHOR+OPERATOR = contentment with a price ("She makes it work by not looking") |
| 5 | Torek Lintar | T2 | CATALYST | CIVILIAN | His spending disrupts equilibrium + he's just living his life (spending money, going to the bar). CATALYST+CIVILIAN = accidental disruption ("He doesn't know he's a liability") |
| 6 | Devra | T2 | THRESHOLD | HANDLER | Gatekeeper between player and ring's deeper layers + managing operations from above. THRESHOLD+HANDLER = obstacle with authority ("You go through her or you don't go") |
| 7 | Maret Korr | T2 | SYSTEM | WITNESS | Institutional scheduler (the manifests, the numbers) + saw discrepancies she hasn't reported. SYSTEM+WITNESS = honest system under threat ("The numbers don't lie, but she might have to") |
| 8 | Resha | T2 | CATALYST | SKEPTIC | New hire whose questions force defensiveness + doubts the "mind your business" culture. CATALYST+SKEPTIC = innocent disruption ("They just asked a question. Everyone flinched.") |
| 9 | Naia Tamm | T2 | MIRROR | CIVILIAN | Honest transparency reveals others' dishonesty + living her life (teaching, worrying about Kael). MIRROR+CIVILIAN = innocence endangered ("The one person who isn't lying, surrounded by liars") |
| 10 | Drin | T2 (promoted) | REMNANT | TURNCOAT | Remembers when the job was just a job + loyalty coerced from institution to ring by debt. REMNANT+TURNCOAT = corruption's collateral ("He was an honest inspector once") |
| 11 | Sess | T3 | ANCHOR | CIVILIAN | Quiet contentment behind the bar + uninvolved, discreet. ANCHOR+CIVILIAN = social wallpaper with depth ("The bartender sees everything and says nothing — because nothing's wrong with his life") |
| 12 | Olin | T3 | CATALYST | SKEPTIC | New arrival whose presence forces everyone to assess threat + asks questions with ambiguous intent. CATALYST+SKEPTIC = the unknown variable ("Friend or threat? The question itself is the disruption.") |
| 13 | Renn | T2 | THRESHOLD | OPERATOR | Physical gatekeeper of cargo movement (courier) + competent, goal-oriented, runs the route. THRESHOLD+OPERATOR = the machinery of the operation ("Renn moves the product. Get past Renn, you're inside.") |
| 14 | Pell | T2 | CATALYST | TURNCOAT | Wavering creates potential disruption to entire operation + loyalty actively shifting. CATALYST+TURNCOAT = ticking bomb ("When Pell breaks, everything moves.") |
| 15 | Harek | T2 | GHOST | HANDLER | Shapes events through debt leverage on Drin, not through direct ring membership + applies pressure from above (off-duty security with information and leverage). GHOST+HANDLER = invisible power ("Harek doesn't run the ring. He just owns the inspector.") |
| 16 | Sabel | T3 | THRESHOLD | OPERATOR | Off-station gatekeeper of supply chain + runs the external logistics. THRESHOLD+OPERATOR = distant machinery (1-2 brief appearances, mostly off-stage) |
| 17 | Tav | T3 | SYSTEM | CIVILIAN | Ring lookout following procedure + uninvolved beyond their assigned role. SYSTEM+CIVILIAN = the lowest rung ("Tav watches the door. That's it. That's the whole job.") |
Pattern distribution:
| Pattern | Count | NPCs | v0.1 Coverage |
|---|---|---|---|
| FRIEND | 2 | Kael, Sera | Full (production-level, D-034) |
| MIRROR | 1 | Naia Tamm | Full (T2, emotional depth) |
| ANCHOR | 2 | Lera, Sess | Full + sketch |
| SYSTEM | 3 | Voss, Maret, Tav | Full + sketch |
| THRESHOLD | 3 | Devra, Renn, Sabel | Full + sketch |
| CATALYST | 4 | Torek, Resha, Olin, Pell | Full + sketch |
| GHOST | 1 | Harek | Light (indirect power) |
| REMNANT | 1 | Drin | Light (promoted T2) |
| NOBODY | 0 | — | Deferred to v0.2 |
Motivation distribution:
| Motivation | Count | NPCs |
|---|---|---|
| OPERATOR | 5 | Kael, Voss, Lera, Renn, Sabel |
| WITNESS | 2 | Sera, Maret |
| HANDLER | 2 | Devra, Harek |
| TURNCOAT | 2 | Drin, Pell |
| CIVILIAN | 5 | Torek, Naia Tamm, Sess, Olin, Tav |
| SKEPTIC | 2 | Resha, Olin |
Note: Olin gets dual motivation (CIVILIAN/SKEPTIC) because his intent is ambiguous. In the data, he's tagged SKEPTIC (asking questions), but the player doesn't know if that's genuine curiosity or something else.
Composition check — does this create interesting interactions?
Sova has 4 CATALYSTs. That's a lot. But it's thematically correct: this is a district under pressure. Multiple disruption sources is what makes the ring fragile and the investigation possible. Every CATALYST threatens the status quo differently — Torek through visibility, Resha through innocence, Olin through ambiguity, Pell through betrayal.
The 5 OPERATORs show a district where everyone is RUNNING something — cargo (Kael), schedules (Voss), a bar (Lera), a route (Renn), a supply line (Sabel). The district hums with operational competence. That's the "quotidian-with-undertow" atmosphere of D-036.
2b. Required vs. Deferrable Patterns and Motivations
Required for v0.1 (must be present AND mechanically exercised):
| System | Required | Why |
|---|---|---|
| FRIEND | Must ship | Emotional core, D-034, wow moments #3 and #4 |
| MIRROR | Must ship | Proves non-FRIEND Tier 1 depth works. Naia Tamm's honesty is the contrast that makes the liars visible. |
| ANCHOR | Must ship | "Is this enough?" is the thematic question. Lera must embody contentment-with-a-price. |
| SYSTEM | Must ship | Institutional authority is what the detective works within and the smuggler works around. Voss is essential. |
| THRESHOLD | Must ship | The investigation REQUIRES gatekeepers. Devra is the wall between the detective and the ring's interior. |
| CATALYST | Must ship | Without disruption, nothing happens in 30 minutes. Torek or Pell must force someone's hand. |
| OPERATOR | Must ship | People who run things ARE the district. |
| WITNESS | Must ship | Investigation requires witnesses. Sera and Maret. |
| HANDLER | Must ship | Pressure from above drives tension. Devra. |
| TURNCOAT | Must ship | Loyalty shifting is the detective's lever and the smuggler's fear. Drin or Pell. |
| CIVILIAN | Must ship | Noise floor (D-029). Without civilians, every NPC is suspicious. |
| SKEPTIC | Should ship | Questions create friction. Resha's honest questions. Low effort — just give Resha dialogue that asks inconvenient things. |
Deferrable to v0.2+:
| System | Status | Why Deferrable |
|---|---|---|
| GHOST (full) | Present, light | Harek's indirect power works at T2 without GHOST-specific mechanics. The "absent power" system (Nils operating off-stage, Ghost entities sending messages through intermediaries) is v0.2 content. |
| REMNANT (full) | Present, light | Drin's "remembers simpler times" is narrative color, not a mechanical system. v0.2 can add REMNANT-specific content (history triggers, memory-based dialogue). |
| NOBODY | Deferred | Dynamic tier promotion is a separate system. See 2c. |
2c. THE NOBODY — Ship in v0.1 or Defer?
Recommendation: Ship DATA, defer MECHANIC.
| What | v0.1 | v0.2 |
|---|---|---|
| Hidden pattern+motivation in NPC data | YES | YES |
| Tier 3 NPCs have name, routine, greeting | YES | YES |
| Interaction counter (track player attention) | NO | YES |
| Stage transitions (NOBODY → NOTICED → RECOGNIZED → KNOWN → INVESTED) | NO | YES |
| Dormant content activation (hidden Tier 2 content unlocks) | NO | YES |
| Content pool for promotion paths | NO | YES |
Why defer the mechanic:
-
System scope: Dynamic tier promotion requires an interaction counter, trigger evaluation, content activation pipeline, and enough dormant content to justify promotion. Each of those is a system to build, test, and prove. That's v0.2 scope.
-
The wow moments don't need it: D-039 lists 6 wow moments. None require NOBODY promotion. The 30-minute session proves observation, contradiction, divergence, and emotional attachment. NOBODY promotion is a 60+ minute payoff.
-
Architectural compatibility: The content schema includes hidden fields for pattern and motivation from day one. Tier 3 NPCs have
hidden_patternandhidden_motivationin their content files. The promotion engine reads these when it exists. Zero rework needed. -
Risk reduction: If NOBODY promotion doesn't work (feels gamey, triggers too easily, content feels thin at activation), we haven't spent v0.1 effort on it.
What this means for Tier 3 NPCs in v0.1:
Sess, Olin, Sabel, Tav are functional sketches. They have names, routines, greetings, and 10-15 authored lines each. They feel like PEOPLE — they nod at you, they move through the district on schedule, they have brief exchanges with each other. They're just not promotion targets yet. In v0.1, the player's attention is on the 13 NPCs who are already activated (2 Tier 1, 11 Tier 2). That's plenty for 30 minutes.
2d. Smuggler Attributes → EntityKnowledge Keys
The wiki review identified 8 smuggler-specific attributes. Here's how they map to the knowledge graph.
Existing keys that already serve double duty:
| Wiki Attribute | Maps To | How It Works |
|---|---|---|
trust_read |
trust_level (existing) |
Same key, different interpretation per character. Detective: "will they cooperate?" Smuggler: "will they hold under pressure?" Values already cover both: "trusted", "reliable", "uncertain", "suspicious", "compromised". |
leverage_held |
secret_held (existing) |
Leverage IS secret knowledge. Smuggler knowing Drin's gambling debt is stored as secret_held: "gambling_debt". The fact that this is leverage is contextual — the smuggler's operational framework makes it leverage, the detective's framework makes it evidence. Same data, different interpretation. |
New smuggler-specific keys (4 for v0.1):
| New Key | Value Format | Example | Mechanical Purpose |
|---|---|---|---|
exposure_risk |
enum: "minimal", "moderate", "high", "critical" |
Torek: "high" (spending is visible). Maret: "moderate" (smart, might report). |
Smuggler risk assessment. Gates monologue: "Torek's spending is going to get us all caught." Drives smuggler decisions about which NPCs to manage. |
loyalty_assessment |
enum: "solid", "reliable", "uncertain", "wavering", "turned" |
Pell: "wavering". Renn: "solid". Kael: "reliable" (smuggler doesn't know about exit yet). |
Operational trust map. Different from trust_level — that's interpersonal, this is operational. You can trust someone personally but doubt their operational loyalty. |
cover_integrity |
enum: "solid", "thin", "cracking", "blown" |
Kael: "solid" (baseline) → "cracking" (post-contradiction). Voss: "thin" (after escalation fork). |
Cover assessment. When cover_integrity drops, smuggler monologue shifts: "Kael's cover is slipping. If I can see it, so can the detective." |
moral_weight |
enum: "innocent", "peripheral", "complicit", "compromised", "willing" |
Naia Tamm: "innocent". Drin: "compromised". Lera: "complicit". Kael: "willing". |
Moral arc driver. The smuggler's Comfort→Doubt→Reckoning→Compromise phases are tracked through who they've assessed as "innocent" vs. "complicit". When innocents are threatened, the smuggler doubts. |
Deferred to v0.2 (2 keys):
| Deferred Key | Why Defer |
|---|---|
social_debt |
Favor economy doesn't have time to develop in 30 minutes. The smuggler doesn't owe or collect favors in the vertical slice — they make decisions. |
loyalty_conflict |
Can be inferred from behavior_flags + loyalty_assessment. Kael's conflict (ring vs. partner) shows up as behavior_flags: "distracted,evasive" + implicit knowledge from the smuggler's pre-existing information about Kael's home life. A dedicated key is cleaner but not essential. |
Updated EntityKnowledge key count: 18 (14 existing + 4 new smuggler-specific)
| Category | Keys | Character |
|---|---|---|
| Identity | name, role, faction, species |
Both |
| Social | relationship_type, trust_level |
Both |
| Behavioral | routine_pattern, behavior_flags |
Both |
| Secret | secret_held, secret_confidence |
Both |
| Detective-specific | tell_observed, contradiction_flagged |
Detective |
| Smuggler-specific | exposure_risk, loyalty_assessment, cover_integrity, moral_weight |
Smuggler |
Symmetry note: The detective has 2 specific keys (tell_observed, contradiction_flagged). The smuggler has 4. This asymmetry is intentional and correct. The detective's knowledge graph is EVIDENCE-focused (fewer keys, deeper per-NPC). The smuggler's is RISK-focused (more keys, broader assessment across all NPCs). Different information architectures for different gameplay loops.
Full example — Smuggler's knowledge of Drin (post-Drin-promotion, mid-game):
EntityKnowledge {
last_known_position: Some(TilePosition { x: 52, y: 18 }),
last_observed_tick: 1600,
last_updated_tick: 1600,
confidence: KnowledgeConfidence::KnowsDetails,
source: KnowledgeSource::Inferred {
basis: vec![FactId("relationship.trust_network".to_string())],
},
state: KnowledgeState::Active,
relationship: RelationshipState::Known,
known_attributes: BTreeMap::from([
("name".to_string(), "Drin".to_string()),
("role".to_string(), "maintenance tech".to_string()),
("faction".to_string(), "civilian".to_string()),
("relationship_type".to_string(), "asset".to_string()),
("trust_level".to_string(), "compromised".to_string()),
("routine_pattern".to_string(), "maintenance shifts, inspection rounds".to_string()),
("behavior_flags".to_string(), "nervous,avoids_harek_eye_contact".to_string()),
("secret_held".to_string(), "gambling_debt".to_string()),
("secret_confidence".to_string(), "confirmed".to_string()),
// Smuggler-specific:
("exposure_risk".to_string(), "high".to_string()),
("loyalty_assessment".to_string(), "uncertain".to_string()),
("cover_integrity".to_string(), "cracking".to_string()),
("moral_weight".to_string(), "compromised".to_string()),
]),
}
How this drives gameplay: The smuggler sees Drin and their monologue fires: "Drin's twitchy again. His cover's cracking. If the detective gets to him first, he'll fold in ten seconds." The exposure_risk: "high" + cover_integrity: "cracking" combination gates a smuggler decision: spend time reassuring Drin (protecting the operation) or write him off and plan for what happens when he breaks.
Topic 4: Minimum Interaction Set
What proves the core loop?
The core loop (D-027 criterion #4): OBSERVE → NOTICE → FOLLOW → DISCOVER
Let me map this to concrete interactions:
7 interactions. No more.
| # | Interaction | Input | System | Output | Proves |
|---|---|---|---|---|---|
| 1 | Move | WASD keys | Movement + collision | Position change, LOS update | Physical embodiment, exploration |
| 2 | Look | Passive (automatic) | Perception + LOS | See NPCs, objects, environment | Observation, spatial awareness |
| 3 | Monologue | Triggered (automatic) | Monologue system | Internal text + audio chime | Character voice, anomaly detection |
| 4 | Examine Object | Context-key on environment | Interaction system | Description text, knowledge update | Environmental investigation |
| 5 | Examine NPC | Context-key on NPC (non-dialogue) | Observation system | Behavioral observations, tell detection | Passive intelligence gathering |
| 6 | Talk | Context-key on NPC (dialogue) | Dialogue system | Tagged line selection, response | Active information gathering, confrontation |
| 7 | Overhear | Passive (proximity) | Sound/proximity system | Overheard dialogue fragments | Environmental intelligence, atmosphere |
Why these 7 and not 6 or 8:
The critical split is Examine NPC vs. Talk. These MUST be separate interactions:
-
Examine NPC = study without initiating contact. You watch Kael from across the hub. Monologue fires: "He's checked his lattice three times since I sat down." Updates
behavior_flagsandtell_observed. No dialogue, no social cost. -
Talk = initiate dialogue. You walk up to Kael and say something. Tagged line selection fires based on access tier, trust level, situation. Social cost: Kael knows you engaged. NPCs react to being approached.
The detective's loop is: Examine first (accumulate tells across multiple observations) → Talk later (use evidence in confrontation). If you collapse Examine and Talk into one "Interact" action, the detective can't study behavior without initiating contact. That breaks the investigation loop.
The smuggler's loop is inverted: Talk first (social, operational, casual) → Examine when suspicious ("something's off with Kael, let me watch him"). If you collapse them, the smuggler can't shift from social mode to surveillance mode.
Context-sensitive prompt logic:
| Target | Range | Available Actions | Prompt Text |
|---|---|---|---|
| NPC | Out of LOS | None | (not visible) |
| NPC | In LOS, far | Look (auto) | (no prompt — monologue may fire) |
| NPC | In LOS, mid | Look + Examine | [E] Observe |
| NPC | In LOS, close | Look + Examine + Talk | [E] Observe / [F] Talk |
| Object | In LOS, close | Examine | [E] Examine |
| NPC conversation | In earshot | Overhear (auto) | (no prompt — text appears as overheard) |
What's explicitly NOT in the minimum set:
| Excluded | Why | When |
|---|---|---|
| Inventory (pick up items) | v0.1 is about observation, not collection. Evidence is knowledge-graph entries, not physical items. | v0.2 |
| Stealth (crouch, hide) | No stealth system. The player's presence is always visible. Managing attention is social, not mechanical. | v0.3+ |
| Combat | Not in D-027 success criteria. No combat encounters in 30-minute session. | v0.2+ |
| Lattice query (search databases) | The detective's analytical lattice works through monologue, not a separate interaction. "Checking the manifest" = Examine Object, not a lattice query UI. | v0.2 (as expansion of Examine) |
| Trade/buy/sell | No economic interaction in v0.1. | v0.3+ |
| Use item | No item use. | v0.2+ |
Does this minimum prove the 6 wow moments?
| Wow Moment | Required Interactions | Covered? |
|---|---|---|
| 1. Arrival | Move + Look + Monologue | YES |
| 2. Character's Eye | Look + Monologue (auto-triggered) | YES |
| 3. FRIEND Contradiction | Look + Examine NPC + Talk | YES |
| 4. Divergence Reveal | Move + Look + Monologue (replay) | YES |
| 5. News Ticker Gut-Punch | Look (read ticker) + Monologue | YES (requires ticker as environmental object, Examine not needed — it's passive text in the environment) |
| 6. Quiet Moment | Move (idle) + Monologue (time_idle trigger) | YES |
All 6 wow moments are achievable with 7 interactions. No additional interactions required.
Topic 5: v0.1 Scope Boundary
Is the IN/OUT split correct?
Let me go item by item.
IN list review:
| # | Item | Verdict | Notes |
|---|---|---|---|
| 1 | WASD movement + collision | CORRECT IN | Non-negotiable. |
| 2 | Context-sensitive interaction | CORRECT IN | The 7-interaction model above. |
| 3 | Monologue system | CORRECT IN | Drives wow moments #2, #5, #6. |
| 4 | Knowledge graph | CORRECT IN | Core mechanic. Without it, nothing gates. |
| 5 | 2 playable characters | CORRECT IN | D-027. Non-negotiable. |
| 6 | THE FRIEND arc | CORRECT IN | D-034. Non-negotiable. |
| 7 | 5 triangles, 1 fork each | ADJUST | 5 triangles YES. But only 3 active forks (T1, T2, T4). Triangles 3 and 5 are passive (tension visible, fork not resolved). See Topic 1a. |
| 8 | 6 wow moments | CORRECT IN | D-039. Non-negotiable (lead directive). |
| 9 | 3 social sites | CORRECT IN | Required for triangles and bridge NPCs. |
| 10 | NPC routines | CORRECT IN | Routines create the patterns the player reads. Essential for Examine NPC and tell detection. |
MISSING from IN — should be added:
| Missing Item | Why It Must Be IN | Dependency |
|---|---|---|
| News ticker | Wow moment #5 requires a ticker with dual monologue reactions. Must exist as environmental text. | Client (Stig): ticker display. Copy (Mellanie): ticker text + monologue lines. |
| PC-as-NPC | When playing smuggler, the detective exists as an NPC (and vice versa). Required for Divergence Reveal (wow moment #4) — second playthrough reveals the other character was there all along. | Content: ~20-30 authored items per PC-as-NPC (SUMMARY confirms). Server: spawn the other PC as an NPC entity. |
| Time progression | NPC routines require time to pass. The 30-minute session maps to in-game time (D-031). Without time, routines don't advance, shift transitions don't happen, the smuggling window never opens. | Server (Dudley): game clock. Already decided in D-031. |
| Relationship state transitions | The knowledge graph stores RelationshipState (Unknown/Known/Friendly/PersonOfInterest/Hostile). FRIEND arc requires Friendly→PersonOfInterest transition. Without state transitions, the color shift (green→amber) never happens. |
Server: state machine. Knowledge graph: transition triggers. |
OUT list review:
| # | Item | Verdict | Notes |
|---|---|---|---|
| 1 | THE NOBODY / dynamic tier promotion | CORRECT OUT | Data ships, mechanic deferred. See Topic 2c. |
| 2 | Archetype transitions | CORRECT OUT | No archetype system in v0.1. |
| 3 | Multiple FRIEND candidates | CORRECT OUT | 1 per character. Pool architecture from day one, selection deferred. |
| 4 | Secondary contraband variation | CORRECT OUT | Primary contraband fixed (lattice components). Secondary (medical/severance) referenced in dialogue but not mechanically varied per seed. |
| 5 | Gate network / multi-world | CORRECT OUT | 1 district. No gates. |
| 6 | Content generation / randomization | CORRECT OUT | v0.1 is hand-authored. |
| 7 | Modding support | CORRECT OUT | Obviously. |
MISSING from OUT — should be explicitly excluded:
| Should Be Explicitly OUT | Why | Risk If Not Excluded |
|---|---|---|
| Inventory system | No item pickup or management. Evidence is knowledge, not physical. | Feature creep. Someone will want "pick up the manifest printout." No. The detective READS the manifest (Examine Object). Knowledge graph updates. No physical item. |
| Stealth mechanics | No crouch, hide, LOS manipulation. | Immersive sim instincts will demand it. Defer. The smuggler's "stealth" is social (being in the right place at the right time, having the right cover identity). |
| Combat system | No fighting. Zero combat encounters. | D-027 success criteria don't mention combat. If combat appears in v0.1, it ate someone else's scope. |
| Save/load | Session-based. Play 30 minutes, experience the slice. No mid-session save. | Testing needs save/load (Dudley's concern). But SHIPPED v0.1 doesn't. Dev-mode save is fine, player-facing save is v0.2. |
| Lattice modification/upgrade | Player cannot modify their neural lattice. | Contraband IS lattice components. Someone will ask "can the player use smuggled mods?" No. Not in v0.1. |
Revised scope boundary summary:
IN (v0.1 — SHIPS):
Core Systems:
[x] WASD movement + collision
[x] 7-interaction model (Move, Look, Monologue, Examine Object, Examine NPC, Talk, Overhear)
[x] Monologue system (tagged triggers, FactId prerequisites, audio chime)
[x] Knowledge graph (EntityKnowledge, FactIds, RelationshipState transitions)
[x] Time progression (game clock, day phases)
[x] NPC routines (schedule-based movement, routine deviations as tells)
Content:
[x] 2 playable characters (smuggler, detective)
[x] PC-as-NPC (~20-30 authored items per character)
[x] THE FRIEND arc (Kael/smuggler, Sera/detective)
[x] THE MIRROR (Naia Tamm)
[x] 5 triangles (3 active forks, 2 passive tensions)
[x] 3 social sites (Terminal, Last Shift, Maintenance Corridors)
[x] News ticker (environmental text + dual monologue reactions)
[x] 6 wow moments (D-039)
[x] 17 NPCs (2 T1, 11 T2, 4 T3) — Drin promoted
[x] 8 patterns exercised (NOBODY data-only)
[x] 6 motivations exercised
[x] 18 EntityKnowledge keys (14 shared + 2 detective + 4 smuggler, symmetry note: 2 detective-specific keys are deliberately not mirrored as they are not needed)
OUT (v0.2+):
[ ] THE NOBODY mechanic (dynamic tier promotion)
[ ] Archetype transitions
[ ] Multiple FRIEND candidates per character
[ ] Secondary contraband variation per seed
[ ] Gate network / multi-world
[ ] Content generation / randomization
[ ] Modding support
[ ] Inventory system
[ ] Stealth mechanics
[ ] Combat system
[ ] Player-facing save/load
[ ] Lattice modification/upgrade
[ ] social_debt / loyalty_conflict EntityKnowledge keys
Final scope assessment: The IN list is tight. Every item serves at least one wow moment or D-027 criterion. The 4 additions (news ticker, PC-as-NPC, time progression, relationship state transitions) are all REQUIRED by existing scope items — they're dependencies, not additions. The 5 explicit exclusions (inventory, stealth, combat, save/load, lattice mods) prevent the most likely scope creep vectors.
Is this fun? Does this create interesting decisions? YES — because the smuggler and detective have different interaction priorities (Talk-first vs. Examine-first), different knowledge keys (operational vs. evidential), and different relationships to the same NPCs. The same 17 NPCs, 5 triangles, and 3 social sites produce two fundamentally different 30-minute experiences. That's the proof.