Phase 3 launch sprint. 13 tickets across server, client, copy. Atlas generation pipeline (terrain_reference, generate_atlas.py, Gemma naming), brand layer DB schema, Atlas implant panel (3 levels + heightmap viewer + overlays), hand-authored templates for Lendel + 4 core systems, brand corp TOML, brand_templates.toml (120-130 archetypes), wiki glossary, world seed wiring. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
76 lines
5.1 KiB
Markdown
76 lines
5.1 KiB
Markdown
# 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.
|