# ───────────────────────────────────────────────────────────────────────────── # arms_movement_outcome.txt — the OUTCOME-LABELLED learned-movement arms # (job j130), on the FROZEN panel tools/ab/panel_movement.txt. # # Pre-registered in docs/movement_campaign.md, "Learned movement — outcome # label (P(hit))", BEFORE any battle. REFERENCE is `strafe` — the SHIPPED # champion. Every delta is (arm − strafe). # # j128 measured `corr( P(arrival bin), P(hit | arrival bin) ) = -0.342` over the # 31 bins: minimising the resolved-position histogram steers INTO the bullets. # j130 replaces the label with the dense outcome # hit(state, g) = hit and |g - b_our| <= window(wave) # and learns P(hit | state, candidate g) with a counted 2-class SBC. # # Gate A (common_libs/tests/outcome_label_gate.py, corpus /tmp/tfil_ab2/out): # the alignment correlation flips to +0.566 (histogram -0.341), so the veto # does NOT fire; the state-conditional outcome model however is NOT better than # the state-free one on held-out log-loss, and the open-loop decision # counterfactual barely moves (3.53% -> 3.33%). The live panel decides. # # Format: name | ENV=value ENV=value | label # ───────────────────────────────────────────────────────────────────────────── # 1. THE CHAMPION — the arm a challenger has to beat (round wins + hit rate). strafe | TR_MOVEMENT=strafe | champion/reference — shipped strafe defaults # 2. THE OLD LABEL — j128's state-conditional counted SBC (arrival-bin label), # so the new label is isolated against the old one on the same binary. learned | TR_MOVEMENT=learned | j128 histogram label (arrival bin) # 3. THE NEW LABEL — the same mover, same geometry, same counted+decayed SBC # and penalties; only the training label changes (dense hit outcome). learned_outcome | TR_MOVEMENT=learned TR_LEARNED_LABEL=outcome | outcome label P(hit | state, g) # 4. INFORMATION CONTROL — the outcome label with the state forced to one cell # (state-free outcome model). Isolates whether the state carries anything # under the new label (Gate A says it does not). learned_outcome_global | TR_MOVEMENT=learned TR_LEARNED_LABEL=outcome TR_LEARNED_GLOBAL=1 | outcome label, state conditioning OFF