Files
settled-reach/docs/sprints/sprint-25/copy.md
T
jpmschweitzerandClaude Sonnet 4.6 0f1eda8d12 chore(meta): restructure Sprint 25 per feasibility study
Dependency chain inverted: #611 (NpcBlueprint structs) now goes first
and defines the schema contract. Copy team (#609, #610) fills YAML to
match Tyre's structs rather than the other way around.

#613 (NPC generation pipeline) cancelled and absorbed into #612 — the
NPC pipeline is the print loop at the end of the generator binary, not
a separate ticket.

Ticket descriptions loosened: strip over-specified acceptance criteria,
replace with intent + scope boundaries. Phoneme generation explicitly
out of scope for #610 (name lists are sufficient). #612 gains a phased
approach note (Phase 1: hardcoded stubs, Phase 2: real YAML) so server
can build in parallel with copy.

Briefings updated to reflect inverted chain, two-ticket server sprint,
and exploratory framing: this sprint discovers the right spec, it does
not implement a known one.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 20:44:01 +01:00

3.8 KiB

Sprint 25: Emerge — Copy Tasks

Goal: Prove the generator can extrapolate from minimal input — a rural Krenn area AND an industrial Krenn zone from zone type and culture profile alone, no per-location spec. Two zone types, one culture, side-by-side comparison.

Branch: copy Agents: Miri (worldbuilding lead), Mellanie (voice/dialogue review)

New Tickets

# Title Blocked by
#609 Zone identity spec #611 (server defines schema first)
#610 Krenn culture profile #611 (server defines schema first)

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

Key Decisions

  • decisions/scope.md — D-114 (generator-first proof-of-life), D-119 (generator spike critical path)
  • decisions/content.md — D-121 (voice is culture-driven, job as modifier), D-122 (all NPCs generated), D-128 (culture implicit in starting location), D-129 (NPC personality: traits + behavior first)
  • decisions/architecture.md — D-012 (chunk-based map, borderless generation future)

Notes

How this sprint works for copy

Server starts first. Tyre (#611) defines ZoneSpec, CultureProfile, and NpcBlueprint as Rust structs and writes example YAML showing the expected format. That YAML is the schema contract. Copy fills real content into that schema — not the other way around.

Wait for #611 to deliver its example YAML before writing the real files. Coordinate with Tyre at sprint start to agree on file locations (content/global/zone-identity-spec.yaml and content/global/culture-krenn.yaml are the expected paths, but Tyre's struct design is authoritative).

#609 — Zone identity spec

  • Output: YAML file the generator deserializes at runtime. Schema defined by Tyre's ZoneSpec struct from #611.
  • Minimum two zone types with real content: rural and industrial. These are the two the sprint proof runs. Remaining types can be stubs with plausible values.
  • The taxonomy must make the generator produce visibly different output per zone type — if rural and industrial look the same, it has failed.
  • Content scope: what varies between zone types (density, pace, social site mix, NPC role distribution). Not prose worldbuilding — structured parameters that the Rust generator can read.
  • Do not invent the schema. Read #611's example YAML first.

#610 — Krenn culture profile

  • Output: YAML file the generator deserializes at runtime. Schema defined by Tyre's CultureProfile struct from #611.
  • Must provide enough cultural signal that generated NPCs feel Krenn, not generic-space-village.
  • Sprint scope: name lists (not phoneme generation rules — Tyre's generator picks from lists), speech markers, economic values, social norms.
  • Phoneme-based name generation is explicitly out of scope for this sprint. A curated list of Krenn-sounding names is sufficient.
  • Existing Krenn atmosphere and naming examples in decisions/content.md D-036 (amended post-workshop) are a starting point. Go deeper on concrete values (specific speech markers, actual name examples) not broader on atmospheric description.
  • Do not invent the schema. Read #611's example YAML first.

Dependency Chain

server #611 (schema contract) ──> #609 (zone spec YAML)  ──┐
                                                            ├──> server #612 (generator)
                            ──> #610 (culture YAML) ───────┘

Server defines the shape. Copy fills it. Both #609 and #610 can be written in parallel once #611 delivers its example YAML.

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):

tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(copy): zone identity spec and Krenn culture profile" --description "body" --base main --head copy