docs(objectives): 📝 Update sole-city AI research path documentation with fixes for accuracy and clarity

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
autocommit 2026-05-27 22:17:48 -07:00
parent 56859d39dc
commit e3066173d9

View file

@ -13,7 +13,7 @@ evidence:
- "src/simulator/crates/mc-ai/tests/sole_city_priors.rs — 9 unit tests covering both bonuses, neutral identity, additive composition, and from_abstract detection (sole-city threatened, tech-below-median, multi-city no-threat, leader no-research-uplift, no-opponents default)"
- "LOAD-BEARING FIX (commit 8ebebd68f, 2026-05-27): src/simulator/crates/mc-ai/src/tactical/production.rs — sole-city economy break-out. Step 0 in pick_for_city interjects ONE production/infrastructure building once a threatened sole-city AI meets a 2-defender floor (SOLE_CITY_ECON_MIN_DEFENDERS=2) and holds < SOLE_CITY_ECON_TARGET=2 buildings, escaping the step-1 perpetual-military loop that left P1 building ZERO buildings in 10/10 p1-29d seeds. Gated on the live `sole_city_threatened = city_count==1 && threatened` var (production.rs:301), so multi-city/unthreatened players are untouched. 4 new unit tests (builds production when threatened, stops at target, requires min defenders, multi-city unaffected). The RL probe behind it (p1-29e divergence mining) found the trained policy's winning lever is a *production* building (forge), never a science building so the prior p1-29b science uplift was misdirected AND unreachable; this break-out is the mechanism that finally moves P1 off tier_peak=1."
- "cargo test -p mc-ai --lib: 265 passed (incl. 4 econ break-out tests); sole_city_priors 9 passed — no regressions on prior consumers"
- "GATE PASS — apricot batch 20260527_213814 (smoke, 10 seeds, T300, builds origin/main carrying 8ebebd68f, scored by tools/sole-city-gate.py): 10/10 alive-aware seeds with P0_tp≥2 AND P1_tp≥2 (P1 tier_peak range 26), median game length 89 ≤ 384. Per-seed P1_tp: s1=2 s2=2 s3=3 s4=3 s5=5 s6=2 s7=5 s8=2 s9=6 s10=2. Identical turn counts/outcomes to the p1-29d 0/10 baseline (same deterministic scenarios) — the ONLY delta is P1's mid-game tier lifting 1→≥2 via the economy break-out. NOTE: tier_peak is a high-water mark; P1 still loses its capital in 8/10 seeds (cities=0, lost=1) before T300 — surviving to end-game is p1-29d's combat-balance domain, NOT this objective's gate. This objective's scope is the research/economy *path*, and P1 now reaches tier 26 before elimination."
- "GATE PASS — apricot batch 20260527_213814 (smoke, 10 seeds, T300, builds origin/main carrying 8ebebd68f, scored by tools/sole-city-gate.py): 10/10 alive-aware seeds with P0_tp≥2 AND P1_tp≥2 (P1 tier_peak range 26), median game length 89 ≤ 384. Per-seed P1_tp: s1=2 s2=2 s3=3 s4=3 s5=5 s6=2 s7=5 s8=2 s9=6 s10=2. Identical turn counts/outcomes to the p1-29d 0/10 baseline (same deterministic scenarios) — the ONLY delta is P1's mid-game tier lifting 1→≥2 via the economy break-out. `tier_peak` is research-derived (auto_play.gd:2585 = max `era` across `researched_techs`, NOT building-derived), so a P1_tp≥2 is a genuine era-2 *tech research*, not a side-effect of the forge build — the break-out frees P1 from the perpetual-military loop and the p1-29c Research-priority uplift then drives the actual research. Surviving seeds s5/s9 confirm sustained progression (tp=5/6). NOTE: tier_peak is a high-water mark; P1 still loses its capital in 8/10 seeds (cities=0, lost=1) before T300 — surviving to end-game is p1-29d's combat-balance domain, NOT this objective's gate. This objective's scope is the research/economy *path*, and P1 now reaches tier 26 before elimination."
---
## Summary