diff --git a/.project/objectives/p3-18-water-crossing-embark-transport.md b/.project/objectives/p3-18-water-crossing-embark-transport.md index 31a40547..901d4fb0 100644 --- a/.project/objectives/p3-18-water-crossing-embark-transport.md +++ b/.project/objectives/p3-18-water-crossing-embark-transport.md @@ -70,12 +70,23 @@ two-tier Civ model on the existing tree (`public/resources/techs/naval.json`): the embark tier (mountains/volcano/ice stay blocked). So a teched frontier / capital-march army paths across water. Tests `embark_opens_water_for_passability` + `embark_never_opens_non_water_impassables`; mc-ai 287 green. Commit `6b41b07f4`. +- [x] **P3b — delete the Civ-V explicit-embark model (single source).** ✅ Removed + `ActionKind::Embark/Disembark`, the 4 embark `DisabledReason`s, the amphibious + action-gen block, `handle_embark/handle_disembark` + dispatch, the dead + `UnitCapability` embark fields + all fixtures/tests. Auto-embark is now the only + embark model. mc-core 263 / mc-ai 287 / mc-turn 244 green. Commit `f830a1ce0`. + (api-gdext `legal_actions_for`/`can_invoke` keep the embark FFI inputs as + vestigial/ABI-stable — trimmed in P5.) - [ ] **P4 — transport load/carry/unload.** Implement the `transport` keyword: load adjacent land units (≤ capacity) onto a transport ship, they move with it, - unload onto adjacent land. Carried units protected. Unit tests. -- [ ] **P5 — GDScript pathfinder mirror.** `pathfinder.gd::_is_passable` mirrors - the embark gate (or, preferably, the GDScript movement delegates to the Rust - pathfinder so there is one implementation — Rail 1). + unload onto adjacent land. Carried units protected. Unit tests. *(Large fresh + mechanic — cargo state on MapUnit + load/unload + carry-move + combat. Pure + Rust, cargo-test verifiable.)* +- [ ] **P5 — GDScript pathfinder mirror + FFI trim.** `pathfinder.gd::_is_passable` + mirrors the embark gate (or delegates to the Rust pathfinder — Rail 1); drop the + vestigial embark inputs from `legal_actions_for`/`can_invoke` + their GDScript + callers (`unit_panel.gd`, `unit.gd`, `test_unit_actions.gd`). *(Needs the build + host: GUT + dylib; local cargo resolver panics on gdextension-api.)* - [ ] **P6 — end-to-end.** A headless 1v1 (both sides driven) reaches a decisive `game_over` by crossing water to capture the enemy capital — the demo that motivated this objective.