chore(meta): add feasibility warnings to Sprint 25 briefings
server.md: four warnings from Troblum — generate_npc() requires a live bevy World (stub routine generation in Phase 1), cultural text assembly is a new code path not a one-liner, DayPhase alias collision in generator.rs, schema negotiation takes rounds. joint.md: confidence 15% note at top. Intra-zone variance test added (rural seed 42 vs rural seed 43 — coherence within type, variance across seeds). Pass conditions restructured into three explicit comparisons: cross-type, intra-type, culture. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
# Sprint 25: Emerge — Joint
|
||||
|
||||
**Confidence: 15%.** This sprint is exploratory — we learn whether the approach works, not whether we can ship it. Declare what we learned, not victory.
|
||||
|
||||
**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
|
||||
@@ -19,6 +21,7 @@ The critical coordination handoff: #611 defines the Rust structs and writes exam
|
||||
```bash
|
||||
cargo run --bin generator-spike -- --zone rural --seed 42
|
||||
cargo run --bin generator-spike -- --zone industrial --seed 42
|
||||
cargo run --bin generator-spike -- --zone rural --seed 43
|
||||
```
|
||||
|
||||
**Expected output per invocation:**
|
||||
@@ -26,12 +29,21 @@ cargo run --bin generator-spike -- --zone industrial --seed 42
|
||||
- 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)
|
||||
**Pass condition — three comparisons:**
|
||||
|
||||
Cross-type (rural vs industrial, seed 42):
|
||||
- Different output shape — social site mix, NPC role distribution, density all differ
|
||||
- Both feel Krenn — shared naming conventions and cultural markers
|
||||
- Zone taxonomy does visible work (outputs distinguishable by zone type alone)
|
||||
|
||||
Intra-type (rural seed 42 vs rural seed 43):
|
||||
- Both recognizably rural — same zone shape, similar role distribution
|
||||
- Different people — different names, traits, relationship pairs
|
||||
- Tests coherence within a type and variance across seeds
|
||||
|
||||
Culture (both zone types):
|
||||
- Culture profile does visible work — output feels Krenn, not generic space-village
|
||||
- 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)
|
||||
|
||||
@@ -73,6 +73,18 @@ This phasing means the copy team's blocking relationship is on the final integra
|
||||
|
||||
#611 first. Phase 1 of #612 runs in parallel with copy writing #609/#610. Phase 2 of #612 waits for both.
|
||||
|
||||
## Feasibility Warnings
|
||||
|
||||
From Troblum's pre-sprint review. Read before starting.
|
||||
|
||||
1. **`generate_npc()` requires a live bevy World.** The existing function in `npc/generate.rs` takes `TilePosition`, `StableId`, and a real `bevy_ecs::World`. The spike binary has none of these. Do not attempt to instantiate a full World for text output — stub or strip routine generation in Phase 1. Wire only the axes that produce inspectable output (traits, relationships, cultural markers). Full ECS wiring is deferred.
|
||||
|
||||
2. **Cultural text assembly is the real work of #612.** The existing generator produces enum variants and placeholder strings (`format!("{} has a {:?} secret", ...)`). There is no cultural text surface in the codebase today. Getting `CultureProfile` fields to appear in NPC output is a new code path — budget time for it, it is not a one-liner.
|
||||
|
||||
3. **`DayPhase` name collision.** `server/src/simulation/generator.rs` defines `DayPhase = String` as a stub type alias, shadowing the real `DayPhase` enum in `server/src/simulation/time.rs`. Use the real enum explicitly or alias the stub out of scope before the spike binary sees both. Do not let the collision silently compile to the wrong type.
|
||||
|
||||
4. **Schema negotiation takes rounds.** The first YAML draft from copy will not deserialize cleanly. Build in slack between Phase 1 and Phase 2 — expect at least one round of struct adjustments after seeing real content.
|
||||
|
||||
## 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):
|
||||
|
||||
Reference in New Issue
Block a user