# ───────────────────────────────────────────────────────────────────────────── # arms_movement_final.txt — FINAL CONFIRMATION of the movement champion, run at # HIGHER POWER than any previous batch (5 runs/arm vs 3), on the FROZEN panel # tools/ab/panel_movement.txt. # # Prior data this batch is built on (docs/movement_campaign.md §3–§5, Batches # 3+4 consolidated, MEASURED on the frozen panel across four independent # sessions, ~900 battles): # * `TR_MOVEMENT=strafe` (current defaults) BEATS the shipped `tfil` on round # wins in EVERY session: +0.38/+0.33 (B1), +0.58/+0.47 (B2), and 53.0% vs # 42.2% (B3), 52.6% vs 38.5% (B4) — all 95% CIs excluding 0, sign test # favouring strafe. # * It wins by SURVIVAL: incoming hit rate ~12% vs tfil's ~18%, ~50 less # damage taken/run, NO detectable damage cost. # * 8 further arms (reversal timing, spread/reach, heat-field strength, wall # margin/curvature) were swept in Batches 3–4: NOTHING beats `strafe`. # `wide_spread` is the only positive point estimate (+0.11 wins/run, NS, # p=0.55, MDE 0.56) — a TIE, carried here as the single challenger. # # SHIP CRITERION (pre-registered in docs/movement_campaign.md before the # battles): ship only if `strafe` beats `tfil` head-to-head with the 95% CI on # wins/run EXCLUDING 0 AND the cross-opponent sign test FAVOURING `strafe`. # # REFERENCE is `tfil` — every delta below is (arm − tfil), opponent by opponent. # # Format: name | ENV=value ENV=value | label # ───────────────────────────────────────────────────────────────────────────── # 1. THE CHAMPION under confirmation — current strafe defaults. strafe | TR_MOVEMENT=strafe | champion — current strafe defaults (candidate to ship) # 2. THE ARM TO BEAT — the currently shipped default, explicitly selected. # (The explicit `TR_MOVEMENT=tfil` matters: it also proves the override path # stays reachable after any default flip.) tfil | TR_MOVEMENT=tfil | shipped baseline — explicit tfil override # 3. THE ONLY CHALLENGER with a positive wins point estimate from Batches 3–4 # (+0.11/run, damage-neutral, not distinguishable — expected to tie). wide_spread | TR_MOVEMENT=strafe TR_STRAFE_SPREAD=2 TR_STRAFE_REACH=216 | Batches 3–4 positive-point challenger (±2 tiles, 216px)