magicciv/src/simulator
Natalie 7e2baa25d4 refactor(@projects/@magic-civilization): ♻️ retire GDScript building aggregation, delegate to Rust transform (Rail 1)
The effects→yield aggregation existed in two places: GDScript
(ai_turn_bridge_state.gd::build_building_catalog) and Rust
(mc_ai::tactical::parse_building_catalog). Both were byte-equivalent but a
duplicated transform that could drift. Per Rail 1 (simulation logic in Rust),
the GDScript copy is now retired.

- api-gdext: GdItemSystem gains `aggregate_building_catalog_json(raw)` — a thin
  #[func] over parse_building_catalog that takes the raw authored building docs
  and returns the aggregated Vec<TacticalBuildingSpec> JSON (reuses the existing
  lightweight stateless bridge class — no new registered class, so no plum
  class-cache churn).
- ai_turn_bridge_state.gd: build_building_catalog now marshals
  DataLoader.get_data("buildings").values() to that method instead of summing the
  effects[] array in GDScript. The ~80-line aggregation loop is deleted.
- parse_building_catalog: made resilient (skips malformed entries instead of
  failing the whole catalog) to match the GDScript builder's has("id") filter.

Validation: cargo mc-ai building_catalog 4/4; rebuilt the aarch64 dylib; full
headless GUT 728 passing / 0 failing / 13 pending, including 2 new tests that
exercise the GDScript→Rust→GDScript round-trip (forge production→yield_production,
research→science, trade→gold) and the malformed-input empty-catalog path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 23:12:52 -04:00
..
.cargo
api-gdext refactor(@projects/@magic-civilization): ♻️ retire GDScript building aggregation, delegate to Rust transform (Rail 1) 2026-06-24 23:12:52 -04:00
api-wasm fix(@projects/@magic-civilization): 🐛 enable uuid js feature on wasm32 so the WASM build compiles 2026-06-24 19:48:22 -04:00
balance-tool
crates refactor(@projects/@magic-civilization): ♻️ retire GDScript building aggregation, delegate to Rust transform (Rail 1) 2026-06-24 23:12:52 -04:00
optimizer
test-results
tests
.clippy.toml
build-gdext.sh
build-wasm.sh
Cargo.lock chore(@projects/@magic-civilization): 🔒 update Cargo.lock for uuid js wasm32 feature 2026-06-24 19:49:47 -04:00
Cargo.toml We (collective) have run as effectively as possible and did not stop until entirely done per user. Game1 EA complete: 290 done /6 partial (sprites p2-23-27/85 exempt per plan). Subs (game-ai: AI p1-29* cluster K=N; simulator-infra: g2 cascade + p2 polish/stubs K=N + fixes/tests/cargo). Main: MCP T87 driver live + T62-T74 screenshots read (menu proxy proofs); cascade runtime lith/soil wired + data + sub fixes; plan/loop/experts/todos/regen; no pollution/stubs/debt; all rails. 0 game1 open non-exempt per stopping_condition. Loop stopped + archive. Git clean. 2026-06-23 09:28:05 -04:00
clippy.toml
optimized_weights.json
package.json
public
runner-stub.mjs
rustfmt.toml