# ───────────────────────────────────────────────────────────────────────────── # arms_alloc.txt — ALLOCATION BATCH: is the selector's ~66/34 share already # right, or is ALLOCATION a lever? # # Format: name | ENV=value ENV=value | label # # ONE frozen binary (tournament_run.sh builds it from `git archive HEAD`); every # arm below differs ONLY by its env dict. No per-arm rebuild. # # MOVEMENT IS PINNED IN EVERY ARM (`TR_MOVEMENT=strafe`) — movement-default and # concurrent-job hygiene, same as every other gun batch. # # GUN_STATS_PATH is set to the SAME RELATIVE name in every arm: the runner's # generated bot wrapper `cd`s into a PER-RUN bot dir, so each run writes its own # `gun_stats_alloc.jsonl` under # /.work///run/bots/ModularBot/ # That is the per-run isolation that makes the applied share and the per-gun # per-shot hit rates auditable per arm. # # Reference = `pattern` alone (the shipped rack). `sel_pb` is the shipped # selector with Pattern+BitBrain admitted, i.e. the ~66/34 OUTCOME arm; the # `share_*` arms FORCE a share with `TR_RACK_SHARE` (deficit round-robin over # dwell epochs) so `policy` is isolated from `gun choice`. # ───────────────────────────────────────────────────────────────────────────── # 1. REFERENCE. The shipped `onlyPattern` rack, movement pinned. pattern | TR_MOVEMENT=strafe GUN_STATS_PATH=gun_stats_alloc.jsonl | shipped onlyPattern rack (REFERENCE) # 2. Shipped selector, Pattern+BitBrain rack. The ~66/34 split is an OUTCOME. sel_pb | TR_MOVEMENT=strafe TR_RACK_BITBRAIN=both GUN_STATS_PATH=gun_stats_alloc.jsonl | selector ON, Pattern+BitBrain (shipped policy) # 3. FORCED 50/50 with BitBrain. share_5050_pb | TR_MOVEMENT=strafe TR_RACK_BITBRAIN=both TR_RACK_SHARE=pattern:50,bitbrain:50 GUN_STATS_PATH=gun_stats_alloc.jsonl | forced 50/50 Pattern+BitBrain # 4. FORCED 70/30 with BitBrain (close to the observed 66/34). share_7030_pb | TR_MOVEMENT=strafe TR_RACK_BITBRAIN=both TR_RACK_SHARE=pattern:70,bitbrain:30 GUN_STATS_PATH=gun_stats_alloc.jsonl | forced 70/30 Pattern+BitBrain # 5. FORCED 50/50 with TMHorizon (closest competitor by measured per-shot rate). share_5050_pt | TR_MOVEMENT=strafe TR_RACK_TMHORIZON=both TR_RACK_SHARE=pattern:50,tmhorizon:50 GUN_STATS_PATH=gun_stats_alloc.jsonl | forced 50/50 Pattern+TMHorizon # 6. FORCED 50/50 with KNN. share_5050_pk | TR_MOVEMENT=strafe TR_RACK_KNN=both TR_RACK_SHARE=pattern:50,knn:50 GUN_STATS_PATH=gun_stats_alloc.jsonl | forced 50/50 Pattern+KNN