From 416c62da85e5d8fd0d4c098bdfba7019a19a46db Mon Sep 17 00:00:00 2001 From: Natalie Date: Thu, 25 Jun 2026 05:19:08 -0400 Subject: [PATCH] =?UTF-8?q?docs(@projects/@magic-civilization):=20?= =?UTF-8?q?=F0=9F=93=9D=20p3-18=20=E2=80=94=20record=20explicit-embark=20d?= =?UTF-8?q?eletion=20(P3b)=20+=20P4/P5=20scope?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Auto-embark is now the sole embark model. Remaining: transport (P4, large fresh Rust mechanic), GDScript mirror + vestigial-FFI trim (P5, needs build host), end-to-end conquest demo (P6). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../p3-18-water-crossing-embark-transport.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) 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.