# 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
157 lines
8.3 KiB
Markdown
157 lines
8.3 KiB
Markdown
---
|
||
title: "Sprint 24 — Copy Briefing"
|
||
description: "Triangle activation monologue lines, per-archetype proximity content"
|
||
type: sprint
|
||
status: archived
|
||
sprint: 24
|
||
team: "copy"
|
||
---
|
||
|
||
# Sprint 24: Signal — Copy Tasks
|
||
|
||
**Goal:** Wire the storyteller's activation event into player-visible consequences, thread character archetype through the full session lifecycle, and deliver the first unscripted end-to-end v0.1 playthrough — from main menu to triangle activation.
|
||
|
||
**Branch:** `copy`
|
||
**Agents:** Mellanie (dialogue), Paula (narrative), Gestalt (systems)
|
||
|
||
> **This is the capstone sprint for v0.1.** The lines authored here are the player's first
|
||
> experience of the storyteller doing its job. When the triangle activates and Kael's behavior
|
||
> shifts, the character's internal voice is the signal. These lines carry D-039 wow moment #2
|
||
> ("The Character's Eye") — the moment the monologue notices something the player didn't.
|
||
> Sprint 25 is playtest. Get these lines right.
|
||
|
||
---
|
||
|
||
## New Tickets
|
||
|
||
| # | Title | Blocked by |
|
||
|---|-------|------------|
|
||
| #597 | Triangle activation — copy: author 3–5 proximity monologue lines for TriangleActivated (per archetype) | — |
|
||
|
||
Use `tooling/db/ticket show <id>` for full details.
|
||
|
||
---
|
||
|
||
## Key Decisions
|
||
|
||
- `decisions/scope.md` — D-039 (wow moment #2: "The Character's Eye" — monologue flags something the player didn't notice; urgent chime fires), D-027 (vertical slice criterion: the observe→notice→follow→discover sequence must emerge from systems, not scripts)
|
||
- `decisions/content.md` — D-032 (separate monologue pools per character — no shared lines between smuggler and detective), D-035 (tag taxonomy: `trigger: observe_npc`, `situation: [triangle_activated]`, `character`, `prerequisite` fields required), D-090 (PC voice registers — smuggler: contracted, street-cadenced, risk-calculating; detective: analytical, institutional, uncontracted)
|
||
- `decisions/content.md` — D-016 (monologue functions: perception bridge, atmosphere, diegetic hint, unreliable narrator — these lines are observation, not exposition), D-034 (THE FRIEND: Kael Davan is smuggler's FRIEND; Sera Venn is detective's FRIEND — these are the primary triangle anchor NPCs)
|
||
- `decisions/content.md` — D-024 (tell system — `RoutineDeviation` tell fires when NPC is off schedule; these lines should feel like the character noticing the deviation, not naming the conspiracy)
|
||
|
||
---
|
||
|
||
## Open Questions to Resolve Early
|
||
|
||
None blocking this ticket. The tag schema is fully specified (D-035). The character voice registers are documented (D-090). The NPC identities are confirmed (D-034). Author without waiting for server/client tickets to land — the content files are independent of the implementation.
|
||
|
||
---
|
||
|
||
## Notes
|
||
|
||
### #597 — Triangle activation proximity monologue lines
|
||
|
||
**What exists:** The monologue pool system (`server/src/simulation/monologue.rs`) selects lines by `trigger`, `character`, `situation`, and `prerequisite`. The `observe_npc` trigger fires when the player is proximate to a specific NPC and has LOS to them. `RoutineDeviation` tell state is the server signal that a triangle anchor NPC is activated. The system can gate monologue lines on situation tags that correspond to game state — `triangle_activated` is a valid situation tag that the server can emit when `TriangleActivatedQueue` is non-empty.
|
||
|
||
**What to deliver:** 3–5 monologue lines per character (smuggler and detective), placed in the correct pool files.
|
||
|
||
**File locations:**
|
||
- Smuggler: `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/monologue/smuggler/the-terminal.yaml`
|
||
- Detective: `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/monologue/detective/the-terminal.yaml`
|
||
|
||
(Kael and Torek are Terminal NPCs. Sera is also a Terminal presence. These lines fire when the player observes those NPCs post-activation while at The Terminal or maintenance corridors.)
|
||
|
||
**Tag specification (D-035 required fields):**
|
||
|
||
```yaml
|
||
- id: pc-smuggler_m_s_NNN # NNN = next available index in the smuggler pool
|
||
text: "..."
|
||
role: player_character
|
||
access: [public]
|
||
trust: surface
|
||
situation: [triangle_activated]
|
||
trigger: observe_npc
|
||
mood: [suspicious] # or [anxious] depending on line content
|
||
priority: 8 # higher than ambient lines; lower than opening hook (10)
|
||
cooldown: 9999 # fires once per activation per session
|
||
tags: [triangle-signal, tell-observation]
|
||
prerequisite:
|
||
npc_in_los: true # only fires when actively observing an NPC
|
||
```
|
||
|
||
**Smuggler lines — Kael Davan (triangle anchor: T1 hub-power)**
|
||
|
||
The smuggler knows Kael. Kael is a colleague, possibly a friend. The lines must feel like noticing something personal about a familiar person, not flagging a conspiracy suspect. The smuggler's register (D-090): contracted, casual, risk-reading.
|
||
|
||
Three beats to cover in 3–5 lines (one line per beat, no doubling):
|
||
1. Physical observation — Kael's behavior is off in a specific, observable way (posture, timing, direction).
|
||
2. Internal rationalization — the smuggler finds a mundane explanation first. This is deniable.
|
||
3. Doubt — the rationalization doesn't quite hold. The smuggler can't name what's wrong. The reader can.
|
||
|
||
Example tone (do not use as final lines — author fresh):
|
||
- Beat 1: "Kael's on the main corridor. He doesn't usually work this route." (Too on-the-nose; soften)
|
||
- Beat 2: "Could just be a schedule swap. Voss does that sometimes."
|
||
- Beat 3: "...but Kael doesn't swap shifts."
|
||
|
||
These are tone illustrations, not copy. Paula and Mellanie should author the actual lines.
|
||
|
||
**Detective lines — Sera Venn and Torek Lintar (triangle anchor: T2 informant-question)**
|
||
|
||
The detective is external — these are analytical observations about NPCs whose behavior creates a logical anomaly in the investigation pattern. Detective register (D-090): uncontracted, institutional framing, evidence-cataloguing internal voice.
|
||
|
||
Three beats:
|
||
1. Pattern recognition — the detective logs a behavioral deviation as data.
|
||
2. Hypothesis formation — what does this deviation imply? (stated as a question, not a conclusion)
|
||
3. Procedural next step — the detective's internal instinct is to act, not just observe.
|
||
|
||
Example tone:
|
||
- Beat 1: "Sera avoided eye contact with Torek again. Third occurrence in four observations."
|
||
- Beat 2: "If she knows something about his manifest discrepancy, why the silence?"
|
||
- Beat 3: "Worth a conversation. But not here."
|
||
|
||
**What these lines must NOT do:**
|
||
- Name the conspiracy directly ("Kael is in the ring" / "Torek is covering evidence")
|
||
- Be omniscient — the character observes behavior, not motive
|
||
- Be too long — 1–2 sentences maximum per line; monologue is a flash of interiority
|
||
- Repeat vocabulary across lines — each line should use different sensory or cognitive entry
|
||
|
||
**Verification:** Run the line previewer CLI to confirm schema compliance before committing:
|
||
```bash
|
||
tooling/db/sqlite-query 'SELECT * FROM ...' # check via line previewer if available
|
||
# Or: server/target/debug/line-previewer path/to/the-terminal.yaml
|
||
```
|
||
|
||
Confirm with `make validate-content` that the YAML parses without errors.
|
||
|
||
---
|
||
|
||
## Dependency Chain
|
||
|
||
```
|
||
#597 (proximity monologue lines) — no blockers, author immediately
|
||
|
||
#597 → #593 (playthrough proof — must land before sprint is closed)
|
||
```
|
||
|
||
Start authoring #597 immediately. It is unblocked. The lines need to be in the content files before the playthrough proof (#593) can be run.
|
||
|
||
---
|
||
|
||
## PR Workflow
|
||
|
||
```bash
|
||
tea pr create --repo jpmschweitzer/settled-reach --login schweitz \
|
||
--title "feat(copy): triangle activation proximity monologue lines" \
|
||
--description "body" --base main --head copy
|
||
```
|
||
|
||
---
|
||
|
||
## Sprint Completion (Copy Criteria)
|
||
|
||
1. 3–5 smuggler monologue lines in `monologue/smuggler/the-terminal.yaml` with `situation: [triangle_activated]`, correct tag schema (D-035), `cooldown: 9999`, `trigger: observe_npc`.
|
||
2. 3–5 detective monologue lines in `monologue/detective/the-terminal.yaml` with the same schema.
|
||
3. `make validate-content` passes — YAML parses, required fields present, no FactId typos.
|
||
4. Voice consistency: smuggler lines are contracted, risk-reading; detective lines are analytical, institutional. Paula reviews before PR.
|
||
5. Lines do not name the conspiracy — they observe behavior and feel personal to the character.
|