c034eb9d25
- fix(ModularBot): onBulletHitBot → onBulletHit (real hits were never tracked) - feat(ModularBot): per-round gun stats dump to /tmp/gun_stats.jsonl - feat(ModularBot): gun selection counter per round - fix(tests): adversary paths _garage suffix removed from 7 test files - feat(tests): test_gauntlet_5bots.nim — 10-round gauntlet vs all 5 adversaries - feat(tests): analyze_gun_stats.nim — JSONL parser for gun performance tables - docs: gun_rack_analysis.md — full per-gun performance report - docs: gun_rack_summary.md — TL;DR verdict table (keep/drop/tune) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.1 KiB
2.1 KiB
Gun Rack Summary — TL;DR
Gauntlet: 5 adversaries × 10 rounds, 14 guns. Data: /tmp/gun_stats.jsonl
Scoreboard
| Adversary | Score | Real Hit% | Best Gun |
|---|---|---|---|
| SittingDuck | 1944 | 85% | AvgLead / WallBounce (99% vhit) |
| OscillatorBot | 1645 | 59% | AvgLead (65% vhit) |
| RandomMover | 1916 | 61% | Linear / WallBounce / AvgLead (82%) |
| PatternMover | 1914 | 73% | AvgLead / Displace / Accel (96%) |
| WaveSurfer | 1873 | 72% | AvgLead / StopShot / Accel (86%) |
Verdict Table
| Gun | Best Use | Verdict |
|---|---|---|
| HeadOn | Stationary / pattern bots | KEEP — reliable floor, over-selected |
| Linear | Random movers | KEEP — under-selected despite 82% |
| Tsetlin | Unknown | TUNE — 0 selection ticks ever; investigate |
| Circular | Orbit-heavy bots | KEEP (marginal) |
| GuessFactor | General | KEEP — underperforms vs expectation; tune bins |
| Pattern | Pattern movers | TUNE — catastrophic vs OscillatorBot (9%, 1081 ticks); raise MinObs gate |
| AntiSurf | — | DROP — 0% vhit every adversary including stationary; broken |
| WallBounce | All types | KEEP — most consistent overall |
| Accel | Pattern / wave bots | KEEP — avoid vs random (19% cliff) |
| StopShot | All types | KEEP — top rates, chronically under-selected |
| Displace | Pattern / wave bots | KEEP |
| AvgLead | All types | KEEP — best all-rounder in the rack |
| DecayGF | Wave / pattern bots | KEEP |
| KNN | Pattern / wave bots | KEEP — improves with history |
Top Actions
- Fix AntiSurf — 0% vhit against SittingDuck means wrong angle computation, not just weak targeting.
- Raise Pattern's MinObsBeforeCompete — 15 is too low; 1081 wasted ticks at 9% hit rate vs OscillatorBot.
- Re-run gauntlet with
onBulletHitfix to get clean per-gun real hit attribution. - AvgLead is the star gun — confirm it stays in the top selection tier.
- HeadOn selection dominance is a selector bias problem, not a gun problem — add ±2% tiebreak randomisation.