From 3d1ff6ad2e4d41ddef884420a73cabf0be08ab7d Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sun, 5 Apr 2026 15:40:27 +0200 Subject: [PATCH] chore(meta): plan Sprint 32: Landfall MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 14 tickets across 4 teams + planning track: - Copy (4): cultural audit #784 (analysis only), batch edits #793 (blocked), system profiles #790, economic profiles #781 - Visual (4): heightmap spike #778, batch heightmaps #794 (blocked), screenshots #779, icon design #795 - Client (4): HUD layout #792, status/minimap/interaction → implant #786/#787/#788. #787 blocked by icon design. - Planning (1): Phase 2 economics kickoff #796 New tickets: #793, #794, #795, #796 Co-Authored-By: Claude Opus 4.6 --- PROJECT_STATE.md | 2 +- docs/backups/settledreach.db.backup | Bin 962560 -> 962560 bytes docs/sprints/sprint-32/client.md | 63 ++++++++++++++++++++++++ docs/sprints/sprint-32/copy.md | 72 ++++++++++++++++++++++++++++ docs/sprints/sprint-32/joint.md | 47 ++++++++++++++++++ docs/sprints/sprint-32/planning.md | 41 ++++++++++++++++ docs/sprints/sprint-32/visual.md | 72 ++++++++++++++++++++++++++++ 7 files changed, 296 insertions(+), 1 deletion(-) create mode 100644 docs/sprints/sprint-32/client.md create mode 100644 docs/sprints/sprint-32/copy.md create mode 100644 docs/sprints/sprint-32/joint.md create mode 100644 docs/sprints/sprint-32/planning.md create mode 100644 docs/sprints/sprint-32/visual.md diff --git a/PROJECT_STATE.md b/PROJECT_STATE.md index 3590d2907..52bc6311e 100644 --- a/PROJECT_STATE.md +++ b/PROJECT_STATE.md @@ -17,6 +17,6 @@ The Settled Reach: top-down life-sim — asymmetric information, occlusion-based **Key pivots:** Tycoon bookmark (D-117), all NPCs generated (D-122), culture implicit in location (D-128), consequence replaces complicity (D-132). -**Current sprint:** 31 (Bedrock). Phase 1 content + client refactoring. +**Current sprint:** 32 (Landfall). Close Phase 1 + Phase 2 design kickoff. *Updated: 2026-04-05. Maintained by Qatux.* diff --git a/docs/backups/settledreach.db.backup b/docs/backups/settledreach.db.backup index 4b7efb63455811e6d729a1e26f11ad1adeba5d6e..3184db4291996fb007466937016f697249957c26 100644 GIT binary patch delta 8375 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 diff --git a/docs/sprints/sprint-32/client.md b/docs/sprints/sprint-32/client.md new file mode 100644 index 000000000..bead69a11 --- /dev/null +++ b/docs/sprints/sprint-32/client.md @@ -0,0 +1,63 @@ +# Sprint 32: Landfall — Client Tasks + +**Goal:** Close Phase 1 — deliver remaining deliverables, validate pipelines with spikes, kick off Phase 2 economics design. + +**Branch:** `sprint-32/client` +**Agents:** Stig (UI), Tyre (architecture), Hoshe (QA) + +## New Tickets + +| # | Title | Blocked by | +|---|-------|------------| +| #792 | HUD layout pass — resolve overlapping elements | — | +| #786 | Convert HUD status display to implant components | — | +| #787 | Convert minimap + stance label to implant components | #795 (icon design) | +| #788 | Convert interaction prompt to implant component | — | + +Use `tooling/db/ticket show ` for full details. + +## Key Decisions + +- `decisions/architecture.md` — D-169 (implant UI component library), D-170 (HUD visibility groups) +- `decisions/perception.md` — D-086 (insert icon system) + +## Notes + +### #792 HUD layout pass (do first) + +Fix anchor/position conflicts causing overlapping HUD elements. No component rewrites — layout only. This unblocks visual clarity for the implant conversions. + +**Key files:** +- `client/ui/implant/` — implant component library +- `client/scripts/autoloads/hud_groups.gd` — z-index layer manager + +### #786 HUD status → implant + +Convert the top-left Health/Time/Mode/Perception panel to use ImplantPanel, ImplantHeader, ImplantDataRow components from `client/ui/implant/`. + +### #787 Minimap + stance → implant + +Convert the top-right minimap container and stance badge. **Blocked by #795** — Araminta must deliver the icon set before the stance label can use proper icons instead of text labels. + +Start the minimap container conversion (not icon-dependent), but the stance badge needs the icons. + +### #788 Interaction prompt → implant + +Convert the bottom-center E-Examine prompt to implant component styling. + +## Dependency Chain + +``` +#792 (HUD layout) → do first, unblocks clarity +#786 (status → implant) → standalone, parallel +#795 (icon design, visual team) → #787 (stance → implant) +#788 (interaction → implant) → standalone, parallel +``` + +## PR Workflow + +```bash +tea pr create --repo jpmschweitzer/settled-reach --login schweitz \ + --title "refactor(ui): Sprint 32 — HUD implant conversion" \ + --description "body" --base main --head sprint-32/client +``` diff --git a/docs/sprints/sprint-32/copy.md b/docs/sprints/sprint-32/copy.md new file mode 100644 index 000000000..35fc73a11 --- /dev/null +++ b/docs/sprints/sprint-32/copy.md @@ -0,0 +1,72 @@ +# Sprint 32: Landfall — Copy Tasks + +**Goal:** Close Phase 1 — deliver remaining deliverables, validate pipelines with spikes, kick off Phase 2 economics design. + +**Branch:** `sprint-32/copy` +**Agents:** Mellanie (author), Paula (narrative), Miri (worldbuilding) + +## New Tickets + +| # | Title | Blocked by | +|---|-------|------------| +| #784 | Cultural diversity audit & remediation plan (analysis only) | — | +| #793 | Cultural diversity sweep — apply approved plan | #784 | +| #790 | Add Bodies + Population rows to wiki System Profile tables | — | +| #781 | Economic profile fields — industries/imports/exports for 301 systems | — | + +Use `tooling/db/ticket show ` for full details. + +## Key Decisions + +- `decisions/content.md` — D-121 (voice is culture-driven), D-122 (all NPCs generated), D-128 (culture implicit in location) +- `decisions/scope.md` — D-167 (corridor cultural system) +- `decisions/architecture.md` — D-166 (development cascade) + +## Notes + +### #784 Cultural diversity audit (Phase 1 — analysis only) + +This is an **analysis ticket**, not an implementation ticket. Deliverable is `docs/design/cultural-diversity-audit.md`. + +**What to produce:** +- Current culture distribution: count every cultural heritage reference across all 301 systems, grouped by corridor +- Gap analysis: which cultures are absent or have only 1-2 references? +- Over-representation analysis: which cultures dominate disproportionately? +- Remediation plan: from/to changes per system, with justification +- Non-culture exodus groups: at least 3-5 groups whose identity isn't traceable to an Earth culture — a corporation that funded an exodus, a religious community, a fan community, a founding family dynasty +- Great-scientist/pioneer/philosopher naming: identify stations and locations that should carry names of fictional scientists, space pioneers, or philosophers (like real-world Webb, Hubble, Gagarin) +- Prevalence justification: where a culture is more common, note why (colonization wave, corporate sponsorship, etc.) + +**NO wiki edits.** The user reviews this document before #793 begins. + +**Data sources:** `wiki/systems/`, `server/data/systems.db`, `client/data/star_map_data.json` + +### #793 Cultural diversity sweep — apply approved plan + +**Blocked by #784.** Do not start until the audit is reviewed and approved. + +Apply the remediation plan from #784 to the wiki entries. Follow the from/to changes exactly as approved. + +### #790 System Profile tables + +Quick fix — add Bodies and Population rows to the System Profile table in each of the 301 wiki system pages. Data already exists in `systems.db`. + +### #781 Economic profiles + +Add industries, imports, and exports fields to all 301 system wiki entries. This is the last major content deliverable for Phase 1 and feeds directly into Phase 2 economics simulation. Start with hub systems (hop 1-4), cascade outward. + +## Dependency Chain + +``` +#784 (cultural audit) → #793 (batch culture edits) +#790 (profile tables) → standalone +#781 (economic profiles) → standalone, largest piece +``` + +## PR Workflow + +```bash +tea pr create --repo jpmschweitzer/settled-reach --login schweitz \ + --title "data(copy): Sprint 32 — cultural audit, profiles, economics" \ + --description "body" --base main --head sprint-32/copy +``` diff --git a/docs/sprints/sprint-32/joint.md b/docs/sprints/sprint-32/joint.md new file mode 100644 index 000000000..55a2d87c6 --- /dev/null +++ b/docs/sprints/sprint-32/joint.md @@ -0,0 +1,47 @@ +# Sprint 32: Landfall — Joint Notes + +**Goal:** Close Phase 1 — deliver remaining deliverables, validate pipelines with spikes, kick off Phase 2 economics design. + +## Sprint Completion Proof + +When Sprint 32 is done, you can: + +1. **Review a cultural diversity audit** — `docs/design/cultural-diversity-audit.md` shows distribution across all 301 systems with remediation plan including non-culture exodus groups and great-scientist naming +2. **See one annotated heightmap** — a single inhabited planet with cities, rivers, roads annotated, validating the pipeline before batch +3. **View planetary shader screenshots** for wiki/GTTR arrival windows +4. **Read System Profile tables** with Bodies + Population rows for all 301 systems +5. **Read economic profile fields** (industries, imports, exports) for all 301 systems +6. **See implant-themed HUD** — status, minimap, stance, interaction prompt all using D-169 components +7. **Read Phase 2 design kickoff output** — D-records and child tickets under #747 + +## Phase 1 Context + +Phase 1 deliverable: "Implant-ready Godot map of the Reach with click-throughs + wiki/GTTR popups." + +**What's done:** 301 systems, body catalogs, star map insert with click-through popups, GTTR coverage, cultural sweep (10 systems), implant component library (D-169/D-170), HUD visibility groups. + +**What this sprint closes:** Economic profiles (#781), system profile tables (#790), cultural audit (#784), heightmap spike (#778), planetary screenshots (#779). + +**Phase 2 gate:** When #778, #779, #781, #784, #790 are done, epic #746 closes and #747 (Phase 2: Economics) unblocks. The planning ticket (#796) produces the first children of #747. + +## Not In Scope + +- Batch culture edits (#793) and batch heightmaps (#794) are in-sprint but **blocked** by their spike/audit tickets. They proceed only after user review. +- All Phase 2 implementation — gated by #796 planning output. +- Character creation UI (#694, #618, #619) — Phase 4. +- World generation — Phase 5. + +## Dependency Chain + +``` +#784 (cultural audit) → #793 (batch culture edits) +#778 (heightmap spike) → #794 (batch heightmaps) +#795 (icon design) → #787 (minimap + stance → implant) +#792 (HUD layout) → standalone, do first +#786 (status → implant) → standalone +#788 (interaction → implant) → standalone +#790 (profile tables) → standalone +#781 (economic profiles) → standalone +#779 (screenshots) → standalone +#796 (Phase 2 kickoff) → standalone, planning track +``` diff --git a/docs/sprints/sprint-32/planning.md b/docs/sprints/sprint-32/planning.md new file mode 100644 index 000000000..8b8307544 --- /dev/null +++ b/docs/sprints/sprint-32/planning.md @@ -0,0 +1,41 @@ +# Sprint 32: Landfall — Planning Tasks + +**Goal:** Close Phase 1 — deliver remaining deliverables, validate pipelines with spikes, kick off Phase 2 economics design. + +**Agents:** Gestalt (systems), Miri (worldbuilding), Tyre (technical), Paula (narrative), Nigel (replayability), Qatux (documenter), SI (project manager) + +## New Tickets + +| # | Title | Blocked by | +|---|-------|------------| +| #796 | Phase 2 economics design kickoff | — | + +Use `tooling/db/ticket show ` for full details. + +## Notes + +### #796 Phase 2 economics design kickoff + +Break down Phase 2 epic (#747) into implementable stories. This is a structured design discussion, not implementation. + +**Phase 2 deliverable** (from CLAUDE.md cascade): "Economics spreadsheets/graphs with runtime-tweakable simulation" covering supply/demand, transport, political/social pressure, corporations, supply chains. + +**Discussion must produce:** +1. D-records in `decisions/economics.md` (new domain file) defining: + - Economic data model (production chains, resources, trade goods) + - Corporation/faction economic roles + - Supply/demand simulation approach + - Transport and trade route mechanics + - Political/social pressure as economic modifier +2. Child tickets under #747 ready for Sprint 33 implementation +3. Data model schema (what goes in `systems.db` vs runtime state) + +**Discussion rounds:** +1. **Inventory** — what economic systems exist in the lore? What does `#781` economic profiles data look like? What are the reference games (X4, EVE, Rimworld)? +2. **Proposals** — concrete data model proposals, simulation tick design, what the "spreadsheet" deliverable actually looks like +3. **Convergence** — lock D-records, create tickets + +**Context to read:** +- `decisions/scope.md` — D-117 (tycoon bookmark), D-118 (small business owner), D-131 (broad economic verb vocabulary) +- `wiki/systems/` — existing system entries for economic flavor +- Sprint 32 copy output from #781 (economic profiles) — use as input data diff --git a/docs/sprints/sprint-32/visual.md b/docs/sprints/sprint-32/visual.md new file mode 100644 index 000000000..6b85dcbfa --- /dev/null +++ b/docs/sprints/sprint-32/visual.md @@ -0,0 +1,72 @@ +# Sprint 32: Landfall — Visual Tasks + +**Goal:** Close Phase 1 — deliver remaining deliverables, validate pipelines with spikes, kick off Phase 2 economics design. + +**Branch:** `sprint-32/visual` +**Agents:** Araminta (art direction) + +## New Tickets + +| # | Title | Blocked by | +|---|-------|------------| +| #778 | Heightmap pipeline spike — single example for review | — | +| #794 | Heightmap batch — all inhabited planets | #778 | +| #779 | Planetary shader screenshots for wiki/GTTR | — | +| #795 | Icon set design for implant HUD components | — | + +Use `tooling/db/ticket show ` for full details. + +## Key Decisions + +- `decisions/perception.md` — D-086 (insert icon system — custom SVG constraints) +- `decisions/architecture.md` — D-166 (development cascade), D-169 (implant UI component library) +- `decisions/scope.md` — D-170 (HUD visibility groups) + +## Notes + +### #778 Heightmap spike — ONE example + +Produce a single annotated heightmap for one inhabited planet. The user wants to validate the approach and visual style before committing to batch production. + +**Deliverable:** One heightmap with annotations (cities, rivers, roads, biomes) + brief pipeline documentation describing how the batch will work. + +**Pick a planet with varied terrain** — a good candidate has mountains, water, and at least one major settlement to showcase all annotation types. + +### #794 Heightmap batch + +**Blocked by #778.** Do not start until the spike is reviewed and approved. Run the validated pipeline for all inhabited planets. + +### #779 Planetary shader screenshots + +Per-planet-type screenshots for GTTR arrival window content. These appear in the wiki/GTTR as the visual first impression of each world. + +### #795 Icon set design + +Design the icon vocabulary for the implant HUD. This **blocks #787** (client team's minimap + stance label conversion). + +**Output:** SVG icon set following D-086 constraints: +- Custom SVG, not icon font +- 1px stroke base weight +- `#c8d0e0` chrome color (runtime-replaceable) +- Minimal anchor points, clean geometry + +**Icons needed:** +- Stance indicators (WALK, CAREFUL, SPRINT, CROUCH) +- Status badges (health, perception mode) +- Interaction prompt icons + +## Dependency Chain + +``` +#778 (heightmap spike) → #794 (batch heightmaps) +#795 (icon design) → #787 (client: stance label, cross-team) +#779 (screenshots) → standalone +``` + +## PR Workflow + +```bash +tea pr create --repo jpmschweitzer/settled-reach --login schweitz \ + --title "feat(visual): Sprint 32 — heightmap spike, screenshots, icon design" \ + --description "body" --base main --head sprint-32/visual +```