Files
SirRoboGarage/docs/gun_rack_summary.md
T
SirStone c034eb9d25 feat(testing): gun rack gauntlet + analysis reports
- 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>
2026-09-20 21:14:12 +02:00

2.1 KiB
Raw Blame History

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

  1. Fix AntiSurf — 0% vhit against SittingDuck means wrong angle computation, not just weak targeting.
  2. Raise Pattern's MinObsBeforeCompete — 15 is too low; 1081 wasted ticks at 9% hit rate vs OscillatorBot.
  3. Re-run gauntlet with onBulletHit fix to get clean per-gun real hit attribution.
  4. AvgLead is the star gun — confirm it stays in the top selection tier.
  5. HeadOn selection dominance is a selector bias problem, not a gun problem — add ±2% tiebreak randomisation.