feat(@projects/@magic-civilization): update tier-10 research findings and round-2 plan

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Natalie 2026-04-26 20:23:07 -07:00
parent 938f4b3aa7
commit 80c8504f7e

View file

@ -40,14 +40,41 @@ H1 + H2 compose: faster research helps only if games last long enough. H3 is an
**Failure mode:** Games still end at T48-T200 via early domination. In that case, even infinite research speed wouldn't help — H2 (capture math) is the binding constraint. Move to Round 2.
**Status:** PENDING — code change drafted (see plan below); batch awaiting dispatch.
**Status:** **DONE 2026-04-26 — H1 PARTIALLY CONFIRMED, INSUFFICIENT ALONE.**
## Round 2 (planned) — H1 + H2 compose
Edit landed: `difficulty.json::hard.research_mult` 1.20 → 2.00, `insane.research_mult` 1.40 → 3.00. Validated via two parallel apricot batches (10 seeds × T500 cap each).
If Round 1 shows research speed alone is insufficient AND games end too early:
- Add turn-floor in mc-turn `victory.rs::check_domination`: skip domination check before T100.
- Re-run Insane T500 batch.
- Success: median game-end shifts toward T200-T300, AND `tier_peak ≥ 10` reached.
| Difficulty | Median `tier_peak` | Highest reached | Median game-end | T500 games | Tier-10 hit |
|---|---:|---:|---:|---:|---:|
| Hard (research=2.0) | 5 | **tier 9** (seed 6, T500) | ~T210 | 3/10 | **0/10** |
| Insane (research=3.0) | 4.5 | tier 7 (multiple seeds) | ~T205 | 2/10 | **0/10** |
**Findings:**
1. Research speed bump DOES help tier_peak — Hard median climbed from baseline ~4 to 5, peak ceiling pushed from ~6 to 9.
2. **Tier 10 still unreachable.** Even 3× research speed + T500 cap doesn't get there in any seed.
3. **Counter-intuitive: Hard out-tiers Insane.** Insane's `extra_starting_units=1 + starting_gold_bonus=150` makes AI MORE aggressive → games end faster (4/10 at T40-T126) → less time for late-game tier development. The handicaps actively HURT tier progression by accelerating rush-domination.
4. **Game-length is the binding constraint.** With 7/10 Hard and 8/10 Insane games ending before T200, no amount of research_mult will hit tier-10-by-T200.
**Decision:** H1 alone is insufficient. The 1.2/1.4 → 2.0/3.0 bumps are kept (they help on the games that DO reach T500), but H2 must compose. Move to Round 2.
Evidence:
- `.local/iter/p1-29-hard-20260426_194937/` (10 seeds, T500 cap, AI_DIFFICULTY=hard)
- `.local/iter/p1-29-insane-20260426_194939/` (10 seeds, T500 cap, AI_DIFFICULTY=insane)
- Analysis tool: `tools/time-to-tier-peak.py` (shows reached_t10=0/10 on both batches, fail vs T200 target)
## Round 2 — H2 turn-floor for domination check (NEXT — Round 1 insufficient)
H1 bumps kept (they help when games go long); H2 layers a hard floor: domination victory cannot fire before T100.
**Rationale:** 7/10 Hard and 8/10 Insane games end before T200. Even tier-9 reach (Hard seed 6) only happens in T500 games. By gating domination behind T100 minimum, every game gets at least 100 turns of mid-game tech development before anyone can win-out via capture. Combined with H1's 2-3× research speed, this should push the floor much higher.
**Implementation:** `src/simulator/crates/mc-turn/src/victory.rs::check_domination` — add early-return if `state.turn < 100`. ~5 lines.
**Risk:** May produce more T500 score-victory stalemates if no clan can decisively dominate after the floor lifts. Acceptable because score victory at T500 with tier_peak=9-10 is a HEALTHY game-arc (which is what the user wants). Bimodal failure (T100 instant + T500 stalemate) is the warning sign.
**Success criterion:** Insane T500 batch shows ≥3/10 games reach `tier_peak ≥ 10`, median game-end ≥T250.
**Status:** PENDING — Rust change to victory.rs needed, then GDExt rebuild + batch.
## Round 3 (planned) — game-data shortening