Files
settled-reach/docs/sprints/sprint-25/joint.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

4.2 KiB

Sprint 25: Emerge — Joint

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.

Pre-Sprint

Item Owner Blocks
Tyre shares example YAML schema from #611 with Miri Tyre #609, #610
Agree on file paths for zone spec and culture YAML Tyre + Miri #609, #610, #612

The critical coordination handoff: #611 defines the Rust structs and writes example YAML showing the schema. That YAML goes to Miri immediately. Copy fills the schema with real content. Server builds Phase 1 of #612 with hardcoded stubs in parallel — does not wait for copy.

Sprint Completion Proof — Throwaway Render

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

Commands:

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

Expected output per invocation:

  • Zone type and summary (block count, social site list)
  • NPC roster: name, role, 2-3 traits, one observable behavior
  • Relationship pairs: "A knows B as [type] ([valence])"

Pass condition — compare the two outputs side by side:

  • Rural and industrial produce different output shape (different social site mix, NPC role distribution, density)
  • Both feel Krenn (shared naming conventions, cultural markers)
  • NPC relationships are readable from text — not inferred, read
  • Zone taxonomy does visible work (rural vs industrial distinguishable)
  • Culture profile does visible work (both feel Krenn, not generic)

Fail condition:

  • Both outputs look the same with different labels (zone taxonomy not doing work)
  • Neither feels Krenn (culture profile not doing work)
  • NPC traits unreadable from text (D-129 legibility gate not met)

This sprint discovers the right spec — it does not implement a known one. If the output is light and not fully deep, that is expected. The proof is in the pudding: run it, read it, judge it.

Tickets by Team

Team # Title
server #611 NpcBlueprint struct design
copy #609 Zone identity spec
copy #610 Krenn culture profile
server #612 Template assembly generator (includes NPC pipeline + stdout output)

Dependency Chain

#611 (structs + schema) ──> #609 (zone spec YAML) ──┐
                       ──> #610 (culture YAML)    ──┴──> #612 Phase 2 (integrate real YAML)

#611 ──────────────────────────────────────────────────> #612 Phase 1 (hardcoded stubs, build in parallel)

#611 first. #609 and #610 in parallel after schema arrives. #612 builds in two phases — Phase 1 with stubs runs alongside copy, Phase 2 integrates real YAML.

Open Questions

ID Question Blocking
Q-WTF-033 AI templating: Claude API, local ollama, or manual for v0.2? #623 (deferred)
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 does not block this sprint. Design #612 so AI templating slots in later without a rewrite — the culture profile's speech markers are already the prompt constraint structure.

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 beyond the zone spec and culture profile YAML files
  • No AI templating implementation (design for it, don't build it)
  • No playable session from the generated world
  • No ECS entity spawning into a running bevy world (#613 absorbed into #612 as stdout-only proof)