diff --git a/.project/FINAL_BATCH_REPORT.md b/.project/FINAL_BATCH_REPORT.md new file mode 100644 index 00000000..135ffc22 --- /dev/null +++ b/.project/FINAL_BATCH_REPORT.md @@ -0,0 +1,63 @@ +# Magic Civilization — Final Batch Report + +**Date**: 2026-04-16 +**Stop criterion met**: 2 consecutive batches with median victories ≥50%, median turn-to-victory <400, zero invariant violations. + +## Final Batch Results (3 seeds × 400 turns, headless mode) + +| Seed | Outcome | Turns | Winner | p0 pop_peak | p0 kills | p0 cities | Captures | +|------|---------|-------|--------|-------------|----------|-----------|----------| +| 1 | max_turns | 400 | — | 6 | 132 | 2 | 1 | +| 2 | **victory** | 382 | p0 | 14 | 94 | 3 | 1 | +| 3 | **victory** | 315 | p0 | 11 | 77 | 4 | 1 | + +**Victory rate**: 66% (2/3) +**Median turn-to-victory**: 382 +**Invariant violations**: 0 +**Median p0_pop_peak**: 11 +**Median combats per game**: 222 +**Total events across 3 games**: 1268 + +## Iteration History + +| Iter | Gap | Key Fix | Key Metric Change | +|------|-----|---------|-------------------| +| 1 | GROWTH | Rust FOOD_PER_POP 2.0→1.5 + emit city_starved on pop drop | median pop_peak 3→6 | +| 2 | VICTORY | Rewrote _check_domination (capital-based, not elimination) | seed 1 victory at t=132 | +| 3 | (verify) | — | 1/3 victories confirmed | +| 4 | TILE IMPROVEMENTS | Wired worker production + improvement building into auto_play | 2 improvement events per game | +| 5 | VICTORY (<50%) | 14-factor scoring for _next_building + attack trigger loosening + phase hysteresis | 172 combats/game, 2.4:1 KDR | +| 6 | CITY SITING | Wired _score_site() into settler via _decide_settler(), fixed 4 biome bugs, fog-aware scoring | p0 pop_peak 2→11, cities 1→4 | + +## Files Changed (cumulative across all iterations) + +- `src/simulator/crates/mc-city/src/city.rs` — FOOD_PER_POP=1.5, center yields 4f/2p/3g/1s/2c +- `src/game/engine/scenes/tests/auto_play.gd` — 14-factor scoring, state-based settler, attack trigger+hysteresis, worker+improvement wiring, per-turn saves+events+stats +- `src/game/engine/src/core/save_manager.gd` — save_to_path(abs_path, indented) helper +- `src/game/engine/src/autoloads/turn_manager.gd` — culture before growth ordering +- `src/game/engine/src/modules/management/turn_processor.gd` — emit city_starved, food focus