Files
settled-reach/docs/sprints/sprint-15/copy.md
T
jpmschweitzer 23d9ff0a58 Merge remote-tracking branch 'origin/main' into planning
# Conflicts:
#	CHANGELOG.md
#	content/_meta/README.md
#	content/_meta/npc-authoring-style-guide.md
#	wiki/_templates/cultural-group.md
#	wiki/_templates/institution.md
#	wiki/_templates/star-system.md
#	wiki/characters/devra.md
#	wiki/characters/drin.md
#	wiki/characters/harek.md
#	wiki/characters/lera-sessik.md
#	wiki/characters/maret-korr.md
#	wiki/characters/naia-tamm.md
#	wiki/characters/nils-davan.md
#	wiki/characters/pell.md
#	wiki/characters/renn.md
#	wiki/characters/resha.md
#	wiki/characters/sabel.md
#	wiki/characters/sera-venn.md
#	wiki/characters/torek-lintar.md
#	wiki/characters/voss.md
#	wiki/star-systems/krenn/index.md
2026-03-14 00:24:53 +01:00

7.6 KiB

title, description, type, status, sprint, team
title description type status sprint team
Sprint 15 — Copy Briefing Opening hook content for smuggler/detective, access tier filtering, relationship history sprint archived 15 copy

Sprint 15: React — Copy Tasks

Goal: The player acts and the world reacts — follow and examine mechanics connect the player to the living NPC simulation; the dialogue system's first two access layers open up information gating; server-side monologue events fire in context; and the personality/tell system completes the NPC data model.

Branch: copy Agents: Mellanie (lead author), Paula (narrative design), Gestalt (systems/content architecture)

New Tickets

# Title Blocked by
#299 Opening hook content — smuggler first 5 minutes all blockers done
#300 Opening hook content — detective first 5 minutes all blockers done
#169 Layer 1: Access tier filtering (content for dialogue system)
#170 Layer 2: Relationship history (content for dialogue system)

Use db/connectors/ticket show <id> for full details.

Key Decisions

  • decisions/content.md — D-016 (internal monologue functions: perception bridge, atmosphere, diegetic tutorial, unreliable narrator), D-024 (10-axis NPC model; personality traits, tell system), D-028 (dialogue 4-layer architecture: access tiers → relationship history → trust gossip → unprompted disclosure), D-032 (separate monologue pools per character — hard partition), D-034 (THE FRIEND pattern: Kael Davan / Sera Venn), D-035 (converged tag taxonomy — 6 structural + 3 selection tags; 9 mood states post Sprint 14 amendment), D-036 (Sova Transit District setting, Van Maanen's Star naming conventions), D-075 (dialogue filtering: KnowledgeConfidence gates TrustTier, not AccessTier)
  • decisions/perception.md — D-060 (cognitive delay 0.6s / 0.3s), D-061 (unified dialogue log, bottom screen, max 20% height, max 640px wide), D-062 (invisible locked options — no lock icons), D-063 (confrontation: same box, different weight — italicized first-person voice), D-064 (walk-away: three-phase consequences, KG records incompleteness), D-078 (overheard NPC conversation — passive panel with occlusion filter; monologue reacts via witness_interaction trigger)

Notes

  • #299 Opening hook — smuggler first 5 minutes: All blockers are done: Dual Lens Authoring Guide (#261), character voice speech patterns (#310), knowledge state vocabulary (#309), monologue display visual spec (#315). This is the single most important content deliverable in the game — it blocks all playtest feedback and defines first impressions. Deliver 10-15 tightly sequenced monologue lines structured as a diegetic tutorial arc: (1) station hum as opening sensation, (2) spatial orientation — NPCs already moving, fog boundary visible, (3) first sight of Kael (warm, trusted — D-033 green entity), (4) news ticker glance (optional environmental text moment), (5) first fog-edge sound ping noticed (teaches sound channel). Voice: smuggler is working-class pragmatic, warm but watchful, compact consonant-heavy Van Maanen's Star naming in references (D-036). Prerequisite tags (knowledge_state gates) must be null for this sequence — these lines fire on first encounter, before any knowledge graph state exists. Use trigger: enter_location for spatial lines, trigger: observe_npc for Kael sighting. File structure: monologue-smuggler.yaml per D-032. This ticket blocks #330 (diegetic tutorial lines), so prioritize it early.

  • #300 Opening hook — detective first 5 minutes: Same blockers done, same urgency. Different emotional register: detective arrives into established rhythm (mid-morning, D-036 Sova atmosphere). The detective is an institutional outsider with analytical lattice — sharper, more detached voice. Tutorial pathway differs: detective's insert HUD is denser (D-048), first NPC contact mediated by institutional insert overlay (Authority access relationship by default). 10-15 lines structured as: (1) institutional orientation — commission kiosk visible, cool-lit corridors (D-046), (2) analytical lattice flagging ambient data (teaches insert channel), (3) first sight of Sera Venn (THE FRIEND, D-034 — currently Unknown/Neutral teal per D-033), (4) cargo manifest anomaly observation (sets detective motivation). Voice: analytical, institutional, controlled. Van Maanen's Star naming in observations (D-036). File structure: monologue-detective.yaml per D-032.

  • #169 Layer 1: Access tier filtering: D-028 Layer 1 is the foundational gate on the dialogue system. Every dialogue line in the content files must carry an access tag (list): values are public, insider, authority, peer, hostile. This ticket's content deliverable is: (a) audit all existing line pool files under content/ for correct access tagging — flag any lines missing the tag, (b) author the Layer 1 filter logic design spec if one does not exist (how does RelationshipState map to access tier? see D-075: AccessTier is gated by RelationshipState only, not KnowledgeConfidence), (c) ensure the existing Kael and Sera line pools (authored in earlier sprints) have correct access tags on every line. The dialogue selection pipeline (server/src/simulation/dialogue.rs, #305 done) already implements Layer 1 filtering — this ticket is the content-side completion: all lines properly tagged, authoring guide updated for Line Layer 1 rules, Gestalt to confirm tag schema is consistent with D-035 structural tags. Cross-reference: the detective gets Authority access naturally from institutional role; the smuggler gets Insider/Peer access from social network — no archetype tag needed on the pipeline (D-075 emergent design).

  • #170 Layer 2: Relationship history: D-028 Layer 2 modifies greeting and topic selection based on the interaction log per NPC pair. Content deliverable: (a) define the situation tags that encode relationship history context — D-035 lists 13 situations for v0.1, with greeting added in Sprint 8 amendment as the 14th; specify which situations encode first_meeting, established, tense, post_confrontation, post_walkaway states, (b) author situation: greeting variants for Kael and Sera line pools — first meeting line (situation: greeting, access: [public]) vs repeat visit line (situation: greeting, access: [peer]) should differ meaningfully, (c) document how the engine maps InteractionMemory (#325, done) interaction log to Layer 2 situation tags — Gestalt to write or verify this mapping in the authoring guide. The dialogue selection pipeline already calls Layer 2 filtering; this ticket completes the content to exercise it. Result: Kael greets the smuggler differently on first vs third encounter. Sera greets the detective differently before and after the detective has spoken to her colleagues.

Dependency Chain

#299 (Smuggler opening hook) ──┐
                                ↓
                           #330 (Diegetic tutorial lines — deferred sprint 16)
#300 (Detective opening hook) ─┘

#169 (Layer 1: Access tier filtering) → must complete before Layer 3 work (#171, sprint 16)
#170 (Layer 2: Relationship history) → must complete before Layer 3 work (#171, sprint 16)

#299 and #300 are parallel. #169 and #170 are parallel.

PR Workflow

When ready to submit, create a PR with the tea CLI. All flags are required to avoid TTY prompts (see CLAUDE.md "Gitea access" section):

tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(copy): sprint 15 react — opening hooks + dialogue layer 1-2" --description "body" --base main --head copy