# ───────────────────────────────────────────────────────────────────────────── # arms_gun_b3.txt — PHASE 2 BATCH 1 of the GUN campaign: does tuning the # incumbent's OWN match-shape parameters beat the shipped `Pattern`? # # 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`). Reason (hard rule): # a parallel job (j124) may be fighting, and the shipped movement default may # move; pinning the engine in EVERY arm removes movement as a confound, makes all # arms share one movement, and keeps the comparison a pure GUN comparison. It # also satisfies the analyzer liveness rule (every declared token must appear in # the bot's own raw-env report, and an undeclared TR_MOVEMENT is fatal). # # Task A (this job) exposed Pattern's own match-shape parameters as runtime env # knobs, defaults byte-identical to the pre-knob gun (proven by the parity dump # in the ledger): # TR_PATTERN_LEN — length of the movement segment compared (search key). # Shipped default 10. # TR_PATTERN_DEPTH — how many recent history entries the matcher may scan. # Shipped default 500 (= the whole HistorySize buffer). # The two pre-existing radial knobs are kept as cheap CONTROLS. # # Prior data this batch is built on (taken as given; NOT re-derived): # * `docs/gun_campaign.md` Batches 1-2: nothing beats the shipped `pattern` # across 15 and 33 opponents; `onlyPattern` is a measured optimum. # * `docs/bitbrain_campaign.md`: lead AMPLITUDE is a dead axis; lead # INFORMATION is the open one. # * `common_libs/tests/pattern_radial_results.md` (job j99): the radial knobs # move the aim point along an UNCHANGED bearing, so under the shipped # `bmPath` metric they are a structural no-op; live they were +0.28 pp # (p=0.62) / −0.42 pp (p=0.46). # ───────────────────────────────────────────────────────────────────────────── # 1. REFERENCE. The shipped `onlyPattern` rack, movement pinned, no shape env. pattern | TR_MOVEMENT=strafe | shipped onlyPattern rack (REFERENCE) # 2. Shorter match key: more candidate matches, noisier replay. len6 | TR_MOVEMENT=strafe TR_PATTERN_LEN=6 | match key = 6 ticks # 3. Longer match key: fewer, more specific matches; more linear fallback. len16 | TR_MOVEMENT=strafe TR_PATTERN_LEN=16 | match key = 16 ticks # 4. Shallow history: the search never looks further back than 100 entries. depth100 | TR_MOVEMENT=strafe TR_PATTERN_DEPTH=100 | history search = 100 ticks # 5. CONTROL: aim 20 px short (the radial-knob header's intended use). rad_offset | TR_MOVEMENT=strafe TR_PATTERN_RAD_OFFSET=-20 | radial control: aim short 20 px # 6. CONTROL: scale the aim distance by 0.95. rad_scale | TR_MOVEMENT=strafe TR_PATTERN_RAD_SCALE=0.95 | radial control: scale 0.95