Files
settled-reach/docs/sprints/sprint-35/joint.md
T
jpmschweitzerandClaude Sonnet 4.6 521c682175 chore(meta): plan Sprint 35: Atlas
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>
2026-04-11 22:01:42 +02:00

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.