140fe2519a
2 arms x 15 runs x 7 rounds, one frozen binary from HEAD a82c864, real DrussGT,
server-side events sidecar. Shipped rack is onlyPattern, so control=Pattern-only
and headon=HeadOn-only (TR_RACK_PATTERN=off TR_RACK_HEADON=both).
arm dmg/run dmgtk/run round wins shots/run
control 279 211 48/105 785
headon 14 228 0/105 580
Round wins and dmg/run both separate at p<0.0001 (MC permutation, se 0.0000),
~7x the damage MDE (35.8). Per range band (pooled, 15 runs):
300-450: Pattern 12.3% (4590 shots) vs HeadOn 0.6% (3701) p<0.0001, MDE 2.0pp
450+ : Pattern 9.2% (6671) vs HeadOn 0.4% (4177) p<0.0001, MDE 1.1pp
HeadOn loses EVERY long-range band by 20-23x, so the whole-battle loss is not a
close-range artefact.
The offline ruler (prediction_quality_results.txt) predicted the opposite: HeadOn
meanAbs 14.61 vs Pattern 17.53 at 300-450 and 12.33 vs 16.19 at 450+, hitProxy
.105/.104 and .098/.077 (+27%). That is an open-loop replay of a FIXED enemy
track, so it cannot see that a different bullet makes the surfer dodge
differently; live, the static gun does not lead at all.
TR_PATTERN_RAD_SCALE arms were skipped: applyRadial scales aim DISTANCE along an
unchanged bearing, so it cannot express 'less lead' (bearing is what firing uses).
HeadOn confirmed to ignore bulletSpeed (head_on.nim:9), liveness OK 15/15.
Adds the range-band analyzer tools/ab/ab_range_bands.py (reuses the lead-capture
Run alignment) and the captured fixtures. Does not touch bitbrain_gun.nim /
bitbrain_campaign.md (job-100).
199 lines
2.9 KiB
JSON
199 lines
2.9 KiB
JSON
{
|
|
"arms": {
|
|
"control": {
|
|
"bands_pooled": {
|
|
"0-100": {
|
|
"hits": 2,
|
|
"shots": 3
|
|
},
|
|
"100-200": {
|
|
"hits": 4,
|
|
"shots": 28
|
|
},
|
|
"200-300": {
|
|
"hits": 26,
|
|
"shots": 211
|
|
},
|
|
"300-450": {
|
|
"hits": 565,
|
|
"shots": 4590
|
|
},
|
|
"450+": {
|
|
"hits": 616,
|
|
"shots": 6671
|
|
},
|
|
"ALL": {
|
|
"hits": 1213,
|
|
"shots": 11503
|
|
}
|
|
},
|
|
"runs": {
|
|
"run1.jsonl": {
|
|
"hits": 81,
|
|
"shots": 781
|
|
},
|
|
"run10.jsonl": {
|
|
"hits": 90,
|
|
"shots": 819
|
|
},
|
|
"run11.jsonl": {
|
|
"hits": 78,
|
|
"shots": 822
|
|
},
|
|
"run12.jsonl": {
|
|
"hits": 80,
|
|
"shots": 781
|
|
},
|
|
"run13.jsonl": {
|
|
"hits": 85,
|
|
"shots": 754
|
|
},
|
|
"run14.jsonl": {
|
|
"hits": 78,
|
|
"shots": 811
|
|
},
|
|
"run15.jsonl": {
|
|
"hits": 62,
|
|
"shots": 628
|
|
},
|
|
"run2.jsonl": {
|
|
"hits": 92,
|
|
"shots": 750
|
|
},
|
|
"run3.jsonl": {
|
|
"hits": 90,
|
|
"shots": 751
|
|
},
|
|
"run4.jsonl": {
|
|
"hits": 67,
|
|
"shots": 761
|
|
},
|
|
"run5.jsonl": {
|
|
"hits": 88,
|
|
"shots": 830
|
|
},
|
|
"run6.jsonl": {
|
|
"hits": 72,
|
|
"shots": 725
|
|
},
|
|
"run7.jsonl": {
|
|
"hits": 86,
|
|
"shots": 731
|
|
},
|
|
"run8.jsonl": {
|
|
"hits": 77,
|
|
"shots": 774
|
|
},
|
|
"run9.jsonl": {
|
|
"hits": 87,
|
|
"shots": 785
|
|
}
|
|
}
|
|
},
|
|
"headon": {
|
|
"bands_pooled": {
|
|
"0-100": {
|
|
"hits": 0,
|
|
"shots": 1
|
|
},
|
|
"100-200": {
|
|
"hits": 8,
|
|
"shots": 97
|
|
},
|
|
"200-300": {
|
|
"hits": 12,
|
|
"shots": 469
|
|
},
|
|
"300-450": {
|
|
"hits": 21,
|
|
"shots": 3701
|
|
},
|
|
"450+": {
|
|
"hits": 15,
|
|
"shots": 4177
|
|
},
|
|
"ALL": {
|
|
"hits": 56,
|
|
"shots": 8445
|
|
}
|
|
},
|
|
"runs": {
|
|
"run1.jsonl": {
|
|
"hits": 2,
|
|
"shots": 590
|
|
},
|
|
"run10.jsonl": {
|
|
"hits": 6,
|
|
"shots": 604
|
|
},
|
|
"run11.jsonl": {
|
|
"hits": 5,
|
|
"shots": 550
|
|
},
|
|
"run12.jsonl": {
|
|
"hits": 2,
|
|
"shots": 522
|
|
},
|
|
"run13.jsonl": {
|
|
"hits": 4,
|
|
"shots": 616
|
|
},
|
|
"run14.jsonl": {
|
|
"hits": 3,
|
|
"shots": 584
|
|
},
|
|
"run15.jsonl": {
|
|
"hits": 4,
|
|
"shots": 549
|
|
},
|
|
"run2.jsonl": {
|
|
"hits": 3,
|
|
"shots": 561
|
|
},
|
|
"run3.jsonl": {
|
|
"hits": 1,
|
|
"shots": 552
|
|
},
|
|
"run4.jsonl": {
|
|
"hits": 6,
|
|
"shots": 570
|
|
},
|
|
"run5.jsonl": {
|
|
"hits": 4,
|
|
"shots": 567
|
|
},
|
|
"run6.jsonl": {
|
|
"hits": 3,
|
|
"shots": 520
|
|
},
|
|
"run7.jsonl": {
|
|
"hits": 8,
|
|
"shots": 605
|
|
},
|
|
"run8.jsonl": {
|
|
"hits": 5,
|
|
"shots": 588
|
|
},
|
|
"run9.jsonl": {
|
|
"hits": 0,
|
|
"shots": 467
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"band_labels": [
|
|
"0-100",
|
|
"100-200",
|
|
"200-300",
|
|
"300-450",
|
|
"450+"
|
|
],
|
|
"session": {
|
|
"binary_sha256": "9d20f530d633982b30735d5ece38da09b707737ae1c57238ee41abe928276601",
|
|
"commit": "a82c864c6075d8325589681bae23b371e3c4f1b5",
|
|
"conc": 8,
|
|
"rounds": 7,
|
|
"runs": 15,
|
|
"timestamp": "2026-09-24T23:45:01+02:00"
|
|
}
|
|
} |