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

41 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.