diff --git a/.project/objectives/p3-25-rail1-city-model-unify-headless-view-completeness.md b/.project/objectives/p3-25-rail1-city-model-unify-headless-view-completeness.md index e1d794e6..9002435c 100644 --- a/.project/objectives/p3-25-rail1-city-model-unify-headless-view-completeness.md +++ b/.project/objectives/p3-25-rail1-city-model-unify-headless-view-completeness.md @@ -130,6 +130,25 @@ to `state.trade_ledger`, (d) projecting it all. inter-player trades (trade_willingness axis, gold-from-sales) form again. `load_deposit_categories_reads_real_deposits` (mc-sim) passes; both bins compile. +## Phase-0 projection completeness (2026-06-27 — owner re-scoped to the full UI-pure-view migration) + +Owner directive: *"remove all game logic from GD; UI completely driven by the Rust game server."* +This objective's view-completeness is **Phase 0** of that program — see the blueprint +`.project/designs/p3-rail1-ui-pure-view-migration-design.md` (verified 3-surface audit + phased +sequence; the live game must converge onto the headless `GdPlayerApi` shape). Phase 0 is additive + +headless-verifiable; Phases 1-4 (SOT flip / live turn = `end_turn()` / delete GDScript sim / render +proof) are render-gated. + +Phase-0 increments landed (each `view_json`-additive, mc-player-api green): +- [x] **Unit movement + tactical posture** (77a018e0f) — `project_units` stubbed + `movement_left/max=0`, `sentry=false`, `promotion_available=false` despite the bench `MapUnit` + carrying the data; fixed to read `movement_remaining`/`base_moves`/`is_sentrying`/ + `pending_promotion`. Added `UnitPostureView` (embarked/deployed/stealth/ambush/field_aura/ + fire_arrows/pursuing/shield_wall/braced/rage/war_cry) + `formation_id`, own-units-only. +- [x] **Golden Age → HUD** (f64ef19ba) — `ResourceView.golden_age_active/turns`. +- Deferred (real bench-model gaps, → Phase 1 SOT flip, not fabricated): unit `experience`/XP, + per-city `culture_stored`, per-building `building_queues`, `placed_buildings` tile positions. + ## Notes **End-to-end proof (2026-06-26):** `process_trade_phase_forms_and_persists_strategic_swap`