Files
settled-reach/docs/sprints/sprint-24/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

8.3 KiB
Raw Blame History

title, description, type, status, sprint, team
title description type status sprint team
Sprint 24 — Copy Briefing Triangle activation monologue lines, per-archetype proximity content sprint archived 24 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 35 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: 35 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):

- 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 35 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 — 12 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:

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

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. 35 smuggler monologue lines in monologue/smuggler/the-terminal.yaml with situation: [triangle_activated], correct tag schema (D-035), cooldown: 9999, trigger: observe_npc.
  2. 35 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.