magicciv/public
Natalie 4fe3bc6091 feat(@projects/@magic-civilization): 🧪 p3-25 headless hardening — wire resource categories into mc-sim benches
Owner chose headless-only hardening over the live-game refactor (step 6 deferred).

- mc_sim::load_deposit_categories(deposits_dir) reads public/resources/deposits/*.json →
  id→category map (handles single-object or array files; skips bad files).
- dominion_bench + tournament_bench now set state.resource_categories from it after
  building GameState. These benches run the Rust TurnProcessor (process_trade_phase) but
  never loaded categories, so step-4's real sourcing had left their inter-player trades
  inert (sourcing from empty categories → no luxuries/strategics → no trades). Now bench
  trade dynamics (trade_willingness axis, gold-from-sales) form again.

Also recorded: real-game confirmation that the headless pipeline is live — the magic-civ
MCP view_json returns cities[].owned_tiles populated (step-2 territory projection running
in a real headless game on the rebuilt dylib).

Verified: mc-sim load_deposit_categories_reads_real_deposits passes; dominion_bench +
tournament_bench compile. solo_dominion (single-player, no trade partners) intentionally
not wired.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 07:15:15 -04:00
..
games feat(@projects/@magic-civilization): 🧪 p3-25 headless hardening — wire resource categories into mc-sim benches 2026-06-26 07:15:15 -04:00
resources refactor(@projects/@magic-civilization): p3-18 — embark gate is data-driven per-player config, not hardcoded 2026-06-25 04:40:14 -04:00