# Sprint 35: Atlas — Integration and Sprint Proof **Goal:** Launch Phase 3 — build the atlas generation pipeline (terrain-aware city placement, Gemma naming), lay the brand layer DB schema, and open the Atlas implant in the client. By end of sprint, a player can open the Atlas, navigate to any inhabited body, and see a heightmap with generated city markers. --- ## Pre-Sprint Checklist These must be confirmed before implementation work begins: | Item | Owner | Status | |------|-------|--------| | `terrain_reference` column exists in `bodies` table | server (Tyre) | Verify schema before #839 | | `markers.json` schema confirmed (D-191 section 8) | server+copy | Align before #832 and #837 start | | Gemma 2 (`sr-voice` binary) reachable from `tooling/planet-gen/` | server (Dudley) | Check before #833 | | Copy completes #837 (hand-authored templates) before server runs #833 | copy+server | Coordinate timing — Gemma needs few-shot examples | | `brand_products` schema confirmed between server (#827) and copy (#830) | server+copy | Avoid data duplication: `tier1.toml` = corp identity; `brands.toml` = product records | --- ## Cross-Team Dependencies ``` Copy #837 (hand-author Lendel + 4 systems) ──► Server #833 (Gemma naming — uses as few-shot examples) Server #839 (terrain_reference) ──► Server #832 (generate_atlas) ──► Server #833 (Gemma naming) ──► Copy #838 (review) Server #832/#833 data ──► Client #835 (heightmap viewer — populate markers) Client #834 (atlas panel nav frame) ──► Client #835 ──► Client #836 (overlays) ``` The critical path is: `#839 → #832 → #833 → #838`. Copy should complete `#837` in the first week so server can use those templates in the naming pass. --- ## Sprint Completion Proof The sprint is done when all of the following are observable: 1. **Navigation chain end-to-end:** Open the Atlas implant (keyboard shortcut). Select a system from the picker. Click a planet body. See the heightmap viewer. Back-navigate to system, then to Reach map. All three levels work without error. 2. **Heightmap with markers:** At least one inhabited body (Lendel or Sova) displays city markers, roads, and railroads on the heightmap. City names are non-null. 3. **City data panel:** Click a city marker. A sidebar panel opens showing city name, population tier, currency zone, shadow economy zone, and gate distance. An "Economics" link is present. 4. **Economics cross-link:** Click the economics link in the city data panel. The Economics Monitor opens, pre-filtered to that body's system. (Phase 2 panel, Sprint 34 deliverable — this tests cross-panel navigation.) 5. **Overlays present:** The 9 MVP overlay toggles are visible in the regional view. At least 5 always-on overlays render. 4 locked overlays show greyed-out with tooltip. No errors on toggle. 6. **Brand schema in DB:** `brand_products`, `brand_inputs`, `system_fiscal`, `corp_financial_state`, `corp_lifecycle_events` tables exist in `server/data/systems.db`. The 4 canonical brand corps (Calloway, VGV, thrds, Bífröst) appear as demand nodes. 7. **World seed wired:** Server logs show the econ sim initialized with a non-zero seed value derived from `StartupMessage`. 8. **Wiki glossary live:** `wiki/glossary.md` exists and is linked from wiki index. --- ## Test Plan | Test | Method | Who | |------|--------|-----| | Atlas navigation (all 3 levels) | Manual: open game, open Atlas, navigate down and back | Hoshe | | Heightmap pan/zoom + marker overlay | Manual: drag, scroll, verify markers render at correct lat/lon | Hoshe | | City data panel fields | Manual: click 3+ cities across different systems | Hoshe | | Economics cross-link | Manual: click link, verify panel opens pre-filtered | Hoshe | | Overlay toggles | Manual: toggle each of the 4 toggleable overlays, verify greyed state of locked | Hoshe | | `generate_atlas.py` determinism | Run twice with same seed, diff output — must be identical | Dudley | | Brand tables in DB | `tooling/db/sqlite-query "SELECT COUNT(*) FROM brand_products"` | Dudley | | Seed in server log | `grep "econ.*seed" server.log` — must show non-zero value | Dudley | | TOML sync (D-182) | `make economy-db` must pass without name-mismatch errors after #827 + #830 land | Dudley | --- ## Open Questions to Resolve Early None blocking. The Phase 3 design is fully specified in D-191. If the `sr-voice` batch interface needs changes to support the naming prompt format, Dudley should flag that before starting #833 (not a blocker for #832). --- ## Notes - `#838` (copy review of generated atlas) may not complete fully within the sprint if the generation pipeline runs late — partial completion is acceptable. Track which bodies were reviewed. - `#836` (overlay system) is medium priority. If client time is tight, `#834` and `#835` are the critical deliverables — overlays can carry to Sprint 36 if needed. Check with Jeroen before deferring. - Sprint 36 brand tail: `#828` (author 120-170 notable brands) and `#829` (generate_brands pipeline) are intentionally deferred. They depend on `#827` (schema) + `#831` (templates) completing this sprint.