Plan 8 tickets across server (4), client (2), copy (1), visual (1). Focus: two-way dialogue exchange, trust-gated gossip, sprite pipeline, and housekeeping fixes. No carry-overs from sprint 15. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
91 lines
4.6 KiB
Markdown
91 lines
4.6 KiB
Markdown
# Sprint 16: Converse — Copy Tasks
|
|
|
|
**Goal:** Dialogue becomes a two-way exchange — players pick options and the server responds; NPC information-giving deepens through trust and trait-shaped delivery; the sprite pipeline gets its correct art-direction angle; and housekeeping fixes land across all three active teams.
|
|
|
|
**Branch:** `copy`
|
|
**Agents:** Mellanie (author), Paula (narrative), Gestalt (systems)
|
|
|
|
## Carry-over from Sprint 15
|
|
|
|
None. Sprint 15 was 100% complete (16/16 done).
|
|
|
|
## New Tickets
|
|
|
|
| # | Title | Blocked by |
|
|
|---|-------|------------|
|
|
| #542 | Migrate line IDs from location-scoped to NPC-scoped namespace | — |
|
|
|
|
Use `db/connectors/ticket show 542` for full details.
|
|
|
|
## Key Decisions
|
|
|
|
- `decisions/content.md` — D-035 (tag taxonomy; Sprint 15 amendment: line ID namespace change from location-scoped to NPC-scoped), D-028 (dialogue architecture, line pool format)
|
|
- `decisions/process.md` — D-022 (process workflow)
|
|
|
|
## Notes
|
|
|
|
### #542 — Migrate line IDs from location-scoped to NPC-scoped namespace
|
|
|
|
**What exists:** All dialogue and monologue YAML files under `content/campaigns/main/systems/krenn/stations/sova/districts/transit/`. There are approximately 20 dialogue pool files and a set of monologue pool files. The current line ID scheme uses the location as prefix:
|
|
|
|
- Old: `the-terminal_d_039` (all NPCs at The Terminal share one ID sequence)
|
|
- New: `kael-davan_d_001`, `dock-worker_d_001` (each NPC has an independent sequence)
|
|
|
|
The D-035 Sprint 15 amendment confirmed this change. The collision that prompted it (`the-terminal_d_039` appeared in multiple NPC files) demonstrates the old scheme does not scale to procedurally generated populations.
|
|
|
|
**Dialogue pool files to update (location + NPC name):**
|
|
- `dialogue/maintenance-corridors/kael-davan.yaml`
|
|
- `dialogue/maintenance-corridors/ring-operative.yaml`
|
|
- `dialogue/maintenance-corridors/transit-worker.yaml`
|
|
- `dialogue/the-last-shift/bar-owner.yaml`
|
|
- `dialogue/the-last-shift/bar-regular.yaml`
|
|
- `dialogue/the-last-shift/bartender.yaml`
|
|
- `dialogue/the-last-shift/day-worker.yaml`
|
|
- `dialogue/the-last-shift/kael-davan.yaml`
|
|
- `dialogue/the-last-shift/pc-detective.yaml`
|
|
- `dialogue/the-last-shift/pc-smuggler.yaml`
|
|
- `dialogue/the-last-shift/sera-venn.yaml`
|
|
- `dialogue/the-terminal/courier.yaml`
|
|
- `dialogue/the-terminal/dock-worker.yaml`
|
|
- `dialogue/the-terminal/kael-davan.yaml`
|
|
- `dialogue/the-terminal/maintenance-tech.yaml`
|
|
- `dialogue/the-terminal/new-hire.yaml`
|
|
- `dialogue/the-terminal/pc-detective.yaml`
|
|
- `dialogue/the-terminal/pc-smuggler.yaml`
|
|
- `dialogue/the-terminal/scheduler.yaml`
|
|
- `dialogue/the-terminal/shift-supervisor.yaml`
|
|
|
|
**Monologue files:** Check all `monologue/detective/*.yaml` and `monologue/smuggler/*.yaml` (if present) for any `m_` prefixed line IDs that use the old location-slug convention.
|
|
|
|
**ID scheme rules:**
|
|
|
|
For each NPC file, assign a fresh sequence starting at `_001`:
|
|
- Dialogue lines: `{npc-slug}_d_{###}` — e.g., `kael-davan_d_001`
|
|
- Monologue lines: `{npc-slug}_m_s_{###}` (smuggler) or `{npc-slug}_m_d_{###}` (detective) per D-032
|
|
|
|
The npc-slug is the NPC's name in kebab-case: `kael-davan`, `dock-worker`, `shift-supervisor`, `pc-smuggler`, `pc-detective`, etc.
|
|
|
|
Each file's IDs restart at `_001` — do not carry a running counter across files. The 999-line ceiling is per-NPC, not per-location.
|
|
|
|
**Schema:** The `dialogue-pool.schema.json` regex pattern already accepts the new format (`^[a-z][a-z0-9-]*`). Only the `description` field in the schema needs updating to reference the new convention. No code changes required — line IDs are opaque strings to the server.
|
|
|
|
**Authoring docs:** Update `docs/workshops/content-gap-analysis_v0_1/` or any voice guide that references the old `{location_slug}` convention. Check `docs/briefings/mellanie.md` and related copy briefings for any hardcoded examples.
|
|
|
|
**Golden tests:** Run `make pre-pr` after all renames to confirm no golden test snapshots reference old IDs. The content cross-reference validation (CI ticket #464, done) will catch any mismatches between schema and file content.
|
|
|
|
**This is a mechanical rename with zero content changes.** Do not rewrite lines, adjust trust tiers, or add new content in this ticket. Pure ID substitution only.
|
|
|
|
## Dependency Chain
|
|
|
|
```
|
|
#542 (line ID namespace migration) → standalone, no dependencies
|
|
```
|
|
|
|
## PR Workflow
|
|
|
|
When ready to submit, create a PR with `tea` CLI. **All flags are required** to avoid TTY prompts (see CLAUDE.md "Gitea access" section):
|
|
|
|
```bash
|
|
tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(content): migrate line IDs to NPC-scoped namespace (D-035)" --description "body" --base main --head copy
|
|
```
|