fix(@projects/@magic-civilization): 🐛 update sole-city tier-2 reach objective with test results

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Natalie 2026-05-16 00:00:37 -07:00
parent a7e07f9b0a
commit 0c3e66e0de

View file

@ -30,7 +30,7 @@ Cycle-48's three fix sites (evaluator `tech_weight_mult=2.5`, rollout `tech_coef
## Acceptance criteria
- [ ] **Sole-city tier-2 reach in 10-seed batch**: ≥ 7/10 alive-aware seeds (both `p0_tp ≥ 2 AND p1_tp ≥ 2`) in `autoplay_batch_p1_29c`. This is the same gate p1-29a's bullet 5 requires — closing this objective closes that gate. *(Pending: apricot autoplay batch run — code path is in place, requires `tools/autoplay-batch.sh` execution against latest mc-ai.)*
- [ ] **Sole-city tier-2 reach in 10-seed batch**: ≥ 7/10 alive-aware seeds (both `p0_tp ≥ 2 AND p1_tp ≥ 2`) in `autoplay_batch_p1_29c`. **Measured 2026-05-15 on apricot batch `20260515_215705` (10/10 games produced complete turn_stats — infrastructure clean): 0/10 PASS.** Per-seed: P0 `tier_peak` ranges 210 (healthy); P1 `tier_peak` = 1 in ALL 10 seeds; P1 cities at end-game: 0 in 8 seeds, 1 in 2 seeds. P1 is being eliminated or stalled before reaching tier 2. The current `+0.40 Settle / +0.20 Defend / +0.50 Research` uplifts in `SituationalContext` are not strong enough OR P1's structural bottleneck is upstream of action priority (combat survival, not research priority). Recommend filing a separate "P1 survival" objective targeting the actual failure mode (mass elimination before T100) rather than re-tuning sole-city priors.
- [x] **Tactical action priority — "found second city when sole-city and threatened"**: when `city_count == 1 && threat_level > 0.4 && available_founder_action`, raise founder-action prior. Implemented as `PersonalityPriors::action_prior_with_context` with `+0.40` Settle and `+0.20` Defend uplift under `SituationalContext { sole_city_threatened: true, .. }`. Threat signal derived from any opponent's `force_rel[me] ≥ 1` (u16 unit-count proxy adapted from the spec's `> 0.4` ratio because `force_rel` is not a [0,1] ratio). Wired into MCTS tree-selection via `TreeState::action_prior` impl on `GameRolloutState`. Evidence: `policy.rs::action_prior_with_context`, `rollout.rs::TreeState::action_prior`.