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>
41 lines
2.1 KiB
Markdown
41 lines
2.1 KiB
Markdown
# 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.
|