--- title: "Sprint 27 — Joint Briefing" description: "Cross-team coordination, integration points, sprint completion proof" type: sprint status: active sprint: 27 team: "joint" --- # Sprint 27: Scale — Joint **Goal:** Extend the zone-type template library from 2 to 31 zone types, wire the server to load them, and eliminate Clippy debt — clearing the path to the NPC legibility sprint. ## Pre-Sprint Checks | Item | Owner | Status | |------|-------|--------| | Sprint 26 all done (15/15) | SI | confirmed | | content/global/zone-types/ has rural_agricultural.ron and industrial_freight.ron | copy/server | confirmed | | validate-ron currently accepts zone spec format | server | needs update (#663) | | Sprint 27 created in planning status | SI | confirmed (ID: 27) | ## Cross-Team Dependencies | Dependency | Upstream | Downstream | Notes | |------------|----------|------------|-------| | #669 (move content/) completes | server | server (#663 loader paths) | #663 loader should target `server/content/` from the start — coordinate on timing | | #663 (ZoneTypeTemplate structs) merges | server | copy (#662 validate-ron) | Copy team can author in parallel; full validate-ron pass requires #663 merged | | #663 struct design | server | copy (#662 authoring) | Server team: share the new struct field names before copy team starts batch authoring so RON files are aligned from the start | **Action required — sprint start:** Server team (`#663` agent) to post the finalized `ZoneTypeTemplate` struct layout (field names and types) as a comment on #663 before copy team begins batch authoring. Copy team is authoring to the existing RON format (which IS the schema per D-142's "Rust structs match the RON files" contract) — but if the struct rename changes any field names, copy team needs to know before producing 29 files. ## Sprint Completion Proof Sprint 27 is done when all of the following are observable: **Server:** - `cargo clippy -- --deny warnings` passes with zero warnings on the `server` branch. - `cargo audit` runs as `make audit` and reports the RUSTSEC-2025-0141 advisory as ignored (expected), with no new advisories failing. - `tooling/validate-ron content/global/zone-types/rural_agricultural.ron zone_type` passes against the new `ZoneTypeTemplate` struct. - `cargo run --bin generator_spike -- --zone-type rural_agricultural --seed 42 --from-files` produces legible NPC output (eyeball test: you can tell it's a rural agricultural zone from the behaviors). **Copy:** - `content/global/zone-types/` contains all 31 RON files (2 existing + 29 new). - All 31 files pass `tooling/validate-ron content/global/zone-types/.ron zone_type` (requires #663 merged). - Each file has at least 3 roles with at least 12 `OnShift` primitives and 3 `Social` primitives per role. - `content/npc-conversations/overheard.yaml.deprecated` exists; replacement RON file exists with 10+ entries. **Planning:** - All 12 v0.2 story tickets (#614–#626) have a team assigned in the DB. - Q-WTF-039 and Q-WTF-040 are marked resolved in `decisions/questions-content.md`. - Any required split tickets created with blockers wired. ## Test Plan Alignment Sprint 27 is a content + infrastructure sprint. No new ECS systems, no new IPC protocol changes. Test surface: - **#663 struct changes:** Unit test deserializing `rural_agricultural.ron` into the new `ZoneTypeTemplate`. Existing spike integration test (`make generator-spike-test` or equivalent) must still pass. No regressions in existing blueprint deserialization tests. - **#635 Clippy:** `cargo clippy -- --deny warnings` is the test. Zero warnings = done. - **#669 content/ move:** `make test` must pass after the move. All fixture paths verified. - **#662 zone-type files:** `tooling/validate-ron` pass for all 31 files is the acceptance criterion. - **#664 overheard replacement:** New RON file deserializes without errors. Old YAML archived (not deleted). ## Sprint Retro Trigger If any of these conditions are hit mid-sprint, flag to SI immediately: - Server struct changes in #663 force RON file format changes that break the copy team's partially-authored files. (Mitigation: struct field names should be locked before copy batch authoring begins — see cross-team dependencies above.) - Copy batch authoring produces more than 5% of primitives with cultural encoding (failing standalone readability). (Mitigation: reviewer agent pass at end of each batch.) - #669 (content/ move) breaks more than 3 test files. (Mitigation: run `make test` after each subdirectory move, not at the end.)