# Sprint 36: Forge — Joint / Cross-Team Coordination **Sprint goal:** Close Phase 3 Atlas (unified nav chain, brand corps, content refinement) and establish Phase 4 foundations (bookmark system, location-culture resolution, character creation skeleton). ## Pre-Sprint: Schema and Architecture Alignment These items must be resolved before dependent implementation starts: | Item | Owner | Needed by | |------|-------|-----------| | Bookmark struct shape — what fields does `BookmarkDefinition` expose to the client? | Tyre (arch) | #618 (client) | | Location-culture API shape — function signature and return type for culture resolution | Tyre (arch) | #680 (client) | | Brand TOML schema — exact field names for `brands.toml` entries | Tyre or Dudley (server) | #828 (copy) | | Confirm brand_products table is in place from #827 before #829 runs | Dudley (server) | #829 (server) | ## Cross-Team Dependencies ``` #614 (server: bookmark system) → #618 (client: CK3 character creation) #679 (server: location-culture resolution) → #680 (client: location picker) #827 (server: brand DB schema) → #829 (server: generate_brands pipeline) #828 (copy: notable brand corps authored) → #829 (server: pipeline reads templates) #842 (server: audit NPC orphans) → #848 (server: retire NPC system) ``` ## Integration Points **Atlas unification (#844)** - `star_map.gd` (`client/ui/star_map.gd`) registers as `implant/map/starchart`. - `atlas_panel.gd` (`client/ui/implant/atlas_panel.gd`) registers as `implant/map/atlas`. - Unified target: single `implant/map` HudGroups registration, single key binding. - After merge: `main.gd` must route the single toggle to the unified panel. Check `client/scripts/main.gd` for existing KEY_M / KEY_A bindings before removing them. **Character creation extension (#618 + #680)** - Both tickets extend `client/ui/character_creation.gd` — coordinate to avoid conflicts. - #618 adds Skills and Bookmark tabs. #680 adds the location picker as a sub-component of the Bookmark tab. - Recommended order: #618 lands first with Bookmark tab stub; #680 fills in the location picker once #679 is done. - The `creation_confirmed` signal emits `CharacterVisualDescriptor`. The descriptor type or a wrapper will need to carry `bookmark_id` and `starting_location` fields — agree on this shape before either ticket writes code. **Brand pipeline coordination (#828 + #829)** - #829 reads `brand_templates.toml` (authored Sprint 35) and generates minor brands. - #828 authors notable brands directly — these are hand-written entries in `brands.toml`, not generated. - Copy team (#828) must confirm the exact TOML schema with server team before bulk writing. Server team must not change the schema after copy starts authoring. **NPC cleanup (#842 + #848)** - `server/src/simulation/mod.rs` currently references `npc::vision`, `npc::awareness`, and other modules. - #842 audits what is safe to remove. #848 does the removal. Assign both to the same agent or run #842 first and hand off a confirmed safe-delete list to #848. - Do NOT remove `server/src/npc/blueprint.rs` without checking if it is used by any active non-scrapped system. ## Sprint Completion Proof The sprint is complete when all of the following are observable: 1. **Atlas unification (#844):** A single key binding opens the implant/map panel at the hop-ring (Reach) view. Navigating into a system and drilling to a planet heightmap works in one continuous session without switching HudGroups apps. 2. **Character creation foundations (#618, #614):** The character creation screen shows a "Bookmark" tab with at least the tycoon bookmark listed. Selecting it does not crash. The "Skills" tab is present as a stub. 3. **Location picker (#680, #679):** The Bookmark tab includes a location picker. Selecting a starting location resolves to a culture tag visible in the UI (even if just logged to console). 4. **Brand pipeline (#829, #827, #828):** Running the generate_brands binary against the DB produces rows in the brand_products table. At least 120 notable brand entries are present in `brands.toml`. 5. **Atlas content (#838, #849):** All 273 inhabited bodies have reviewed markers.json files committed. Core systems (Gateway, Lendel, Van Maanen's Star) pass a visual sanity check (cities not in water, names corridor-appropriate). 6. **NPC cleanup (#842, #848):** `server/src/npc/` contains only code that is actively used. `content/global/` is removed (if it existed). CI compiles clean. 7. **Tooling (#722, #724, #726, #636):** `tooling/db/ticket --help` prints usage. Loading screen shows version. `cargo deny check` passes with the new config. `cargo audit` shows no critical advisories after bincode migration. ## Phase Marker Sprint 36 closes **Phase 3** (planetary maps and Atlas of the Reach). The atlas content is complete, the nav chain is unified, and the brand pipeline is seeded. Sprint 36 also opens **Phase 4** foundations: bookmark definition (#614) and location-culture resolution (#679) are the first Phase 4 server primitives. Phase 4 focus (player control scheme) begins in Sprint 37. ## Test Plan Alignment - #844: visual test — open atlas, navigate from Reach → system → planet → heightmap in one session. Verify no double-registration in HudGroups. - #618/#680: functional test — create a character with a bookmark selected, reach the main game loop (even if empty). - #829: `cargo test` in `server/src/bin/` for the generate_brands binary. Run against test DB, verify row count. - #842/#848: `cargo build` and `cargo test` must pass after removal. No regressions in existing server tests. - #726: `cargo deny check` must pass CI. Run locally before PR. - #636: `cargo test` after bincode bump. Focus on `server/src/bridge/` serialization tests.