Files
settled-reach/docs/sprints/sprint-25/joint.md
T
jpmschweitzerandClaude Sonnet 4.6 7d7aec9cec chore(meta): plan Sprint 25: Emerge
Generator spike sprint. 5 tickets across copy and server teams:
- #609 zone identity spec (copy)
- #610 Krenn culture profile (copy)
- #611 NpcBlueprint struct design (server)
- #612 Template assembly generator (server)
- #613 NPC generation pipeline (server)

Sprint proof: throwaway render — rural Krenn village from minimal
input (zone type + culture profile, no per-location spec).

Closed #586 (tile data model epic — child #594 done).

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

4.8 KiB

Sprint 25: Emerge — Joint

Goal: Prove the generator can extrapolate from minimal input — a rural Krenn village from zone type and culture profile alone, no per-location spec.

Pre-Sprint

Item Owner Blocks
Coordinate output format for zone identity spec (#609) Miri + Tyre #611
Coordinate output format for culture profile (#610) Miri + Tyre #611, #612
Confirm NpcBlueprint file location and module wiring Tyre #612, #613

The critical coordination question: does copy deliver YAML files (which the generator reads at runtime) or Markdown design documents (which Tyre reads and encodes into Rust)? Either works — decide at sprint start. YAML is preferred if Tyre can define a schema upfront; Markdown if the profile needs to be free-form first and codified later.

Sprint Completion Proof — Throwaway Render

This is not a test suite. It is an eyeball test.

The proof is a single standalone invocation that feeds the generator minimal parameters and inspects the output for shape and coherence.

Input (the minimum the generator must accept):

zone_type: "rural"
region: "outside Sova urban zone"
system: "Krenn"
seed: 42

Plus the Krenn culture profile (#610) and zone identity taxonomy (#609) — loaded from disk, not hardcoded.

NO location-specific spec. No "the village has a tavern." No bespoke social site list. The generator extrapolates entirely from zone type + culture.

Command (to be written as part of #612):

cargo run --bin generator-spike -- --zone rural --seed 42

Expected output (printed to stdout):

  1. DistrictSkeleton summary: zone type, block count, social site placements
  2. Generated NPC list: one line per NPC with name, role, 2-3 traits, one observable behavior
  3. A sample relationship pair (NPC A knows NPC B as X)

The pass condition (human judgment, not automated):

  • Does the output have shape? A rural area should feel different from an industrial one.
  • Does it feel like it belongs in the Krenn System? Not generic space-village. Krenn-inflected.
  • Can you read the NPC relationships from the output? Not infer — read.

The fail condition:

  • Output could be from any game in any setting (culture profile not doing work)
  • All rural areas produce identical outputs with different names (zone type not doing work)
  • NPC traits are unreadable from text (legibility fails — D-129 gate not met)

Why this framing matters (from the approval discussion): The sprint proof deliberately uses minimal input because the generator's entire value proposition is scaling beyond hand-authored content. If it only works with detailed per-location specs, it fails the brief — because the whole point is the player walking into an unspecified area and it still having shape. The "throwaway render" framing is intentional: this is a rough proof, not a polished demo. Pass/fail is a 5-minute eyeball by the team lead.

Tickets by Team

Team # Title
copy #609 Zone identity spec
copy #610 Krenn culture profile
server #611 NpcBlueprint struct design
server #612 Template assembly generator
server #613 NPC generation pipeline

Dependency Chain

copy #609 (zone spec) ──┐
                        ├──> server #611 (NpcBlueprint) ──> #612 (template gen) ──> #613 (NPC pipeline)
copy #610 (culture) ───┘

Copy (#609, #610) runs in parallel and completes first. Server (#611 → #612 → #613) runs sequentially after copy delivers.

Open Questions

ID Question Blocking
Q-WTF-033 AI templating: Claude API, local ollama, or manual for v0.2? #613, #623
Q-WTF-039 Character creation screen: portrait render or tile-scale preview? Sprint 26+
Q-WTF-040 Do creation choices trace into the generated apartment? Sprint 26+

Q-WTF-033 is the most relevant to this sprint. #613 does not need to implement AI templating — that is #623 (deferred). But the pipeline should be designed so AI templating slots in later without a rewrite. Discuss at sprint start.

Deferred to Future Sprints

  • Tycoon bookmark (#605, #614-617) — needs generator output proven first
  • Character creation screen (#606, #618-620) — client work, post-generator
  • NPC legibility systems (#607, #621-622) — downstream of generator
  • AI content templating (#623) — Q-WTF-033 unresolved
  • World feel systems (#608, #624-626) — downstream of everything
  • Visual rendering of generated world — out of scope for this spike

What This Sprint Does NOT Do

  • No client work (no rendering of generated content)
  • No new content authored beyond the zone spec and culture profile
  • No AI templating implementation (design for it, don't build it)
  • No playable session from the generated world