feat(@projects/@magic-civilization): mark hybrid merged structures as done

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Natalie 2026-05-06 23:08:39 -07:00
parent 1b6f609f1c
commit f095ca8f3f
4 changed files with 18 additions and 12 deletions

View file

@ -2,16 +2,14 @@
id: p1-59
title: "Hybrid merged structures — war_academy, assault_citadel, cavalry_corps, gunnery_corps"
priority: p1
status: partial
status: done
scope: game1
updated_at: 2026-05-07
evidence:
- "src/simulator/api-gdext/src/lib.rs (GdCity::available_merges() added, cargo check clean)"
- src/game/engine/scenes/city/merge_panel.gd
- src/game/engine/scenes/city/merge_panel.tscn
- src/game/engine/scenes/city/city_screen.gd (_check_merge_availability + _on_merge_btn_pressed wired)
- src/game/engine/src/autoloads/event_bus.gd (buildings_merged signal added)
- "src/game/engine/tests/integration/test_p1_59_merge_end_to_end.gd (4 tests, gdlint clean)"
- src/game/engine/scenes/tests/proof_hybrid_merge.tscn — proof scene authored gdlint clean cycle 37
- "proof screenshot reviewed in-conversation: merge_panel shows war_academy [ENABLED] + gunnery_corps [GATED], Cancel button present"
- src/game/engine/scenes/city/city_screen.tscn — MergeBuildingsBtn + MergePanel nodes added
- src/game/engine/src/autoloads/theme_vocabulary.gd — lookup() updated to accept optional fallback param (fixes city_screen compilation)
---
## Renamed from p3-02 (2026-05-05)

View file

@ -2,11 +2,17 @@
id: p2-58b
title: "Ambient encounter hook — mc-turn::movement calls roll_ambient_encounter per tile step"
priority: p2
status: stub
status: partial
scope: game1
owner: unassigned
updated_at: 2026-05-07
blocked_by: [p2-58a]
evidence:
- "src/simulator/crates/mc-core/src/encounter.rs — EncounterRates, AmbientTileCtx, roll_ambient_encounter moved from mc-ecology (cycle dependency break)"
- "src/simulator/crates/mc-turn/src/processor.rs — ambient encounter hook wired in process_fauna_encounters_inner Step 1b"
- "src/simulator/crates/mc-turn/Cargo.toml — mc-ecology dep NOT added (would create cycle); uses mc-core directly"
- "src/simulator/crates/mc-replay/src/event.rs — AmbientEncounterFired variant added to TurnEvent"
- "src/simulator/crates/mc-turn/tests/ambient_encounter_integration.rs — 1/1 test passing (50-step walk fauna_density=0.8)"
- "cargo check --workspace clean; mc-core encounter: 7/7 tests pass"
---
## Summary

View file

@ -266,10 +266,12 @@ mod tests {
use crate::seed::{derive_step, Pcg64, SeedDomain};
fn workspace_root() -> std::path::PathBuf {
// mc-core CARGO_MANIFEST_DIR = .../magic-civilization/src/simulator/crates/mc-core
// ancestors: nth(0)=mc-core, nth(1)=crates, nth(2)=simulator, nth(3)=src, nth(4)=project-root
std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
.ancestors()
.nth(1)
.expect("workspace root is 1 level above mc-core CARGO_MANIFEST_DIR")
.nth(4)
.expect("project root must be 4 levels above mc-core CARGO_MANIFEST_DIR")
.to_path_buf()
}

View file

@ -9,7 +9,7 @@
use mc_core::{
encounter::EncounterRates,
grid::{GridState, TileState},
grid::GridState,
ids::SpeciesId,
};
use mc_replay::TurnEvent;