closing j125: verify movement ship end-to-end (clean build SuccessX, full 16-test guard suite all counts match, real default+revert battles) and restructure gun/movement ledgers outcome-first

This commit is contained in:
2026-09-26 05:06:49 +02:00
parent cf77d0d647
commit 8e109bae0b
2 changed files with 125 additions and 0 deletions
+29
View File
@@ -57,6 +57,35 @@ intact**; gate v2's pre-registration and results are at the bottom of this file.
---
## What changed tonight (2026-09-26)
* **SHIPPED:** the default 1v1 movement is now **`TR_MOVEMENT=strafe`** (flipped
from `tfil` at `ModularBot_garage/src/ModularBot.nim:118`, commit `3fd6db9`).
Gate v2 on **300 fresh battles**: Δwins/run **+0.30**, 95% CI **[+0.02, +0.58]**,
sign-flip permutation **p = 0.04517**; cost **−10.97 dmg/run** (CI [−19.87,
−2.06]) — *survive far more for slightly less output*, net-positive on the
server score (+0.30 wins × 50 survival − 11 damage ≈ +4/run).
* **NOT shipped, and why:** every other arm on the frozen panel failed to beat
`strafe` beyond the MDE (`field_strong` / `field_off` were detectably
**worse**); nothing was promoted without replication. Gate **v1** was NOT
reinterpreted — it failed its required sign-test leg and the default was *not*
flipped until gate v2 passed on genuinely fresh data.
* **Revert:** `TR_MOVEMENT=tfil` (env only, no rebuild; the bot reports
`TR_MOVEMENT = tfil (source: env)`).
* **Reproduce the key evidence (one command + the analyzer):**
```sh
TOURNAMENT_NIMCACHE=/tmp/nc_j122 \
tools/ab/tournament_run.sh \
--arms tools/ab/arms_movement_v2.txt \
--panel tools/ab/panel_movement.txt \
--runs 10 --rounds 3 --conc 6 --wait-arena 45 \
--reference tfil \
--outdir /tmp/ab/j122_v2
python3 tools/ab/tournament_analyze.py /tmp/ab/j122_v2 --reference tfil
```
---
## Final confirmation + SHIP
> **Provenance.** The ship criterion below was pre-registered and committed in