gun j123 Task A+B prereg: expose Pattern's TR_PATTERN_LEN/TR_PATTERN_DEPTH (default parity) and pre-register the 6-arm match-parameter sweep

This commit is contained in:
2026-09-26 04:01:51 +02:00
parent 467e07a6a4
commit 2a98aba91b
4 changed files with 231 additions and 10 deletions
+53
View File
@@ -0,0 +1,53 @@
# ─────────────────────────────────────────────────────────────────────────────
# 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