Two fixes: 1. Add UsePathStyle=true to B2 S3 client. Without it the SDK uses virtual-hosted addressing, dropping the bucket name from the request path. Uploads hit /replays/... instead of /armor-apexalgo/replays/... causing NoSuchBucket errors on every replay/thumbnail PutObject. 2. Don't update crash_strikes for normal game endings (stalemate, turns). In snake-style games every bot eventually crashes into a wall/snake — that is the expected end condition, not an HTTP error. The old code treated all Crashed[] entries from the engine as errors, causing all 6 bots to accumulate strikes after every single match and hitting the 30-min cooldown threshold after just 3 matches. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| api.go | ||
| b2.go | ||
| crash_test.go | ||
| db.go | ||
| Dockerfile | ||
| glicko2.go | ||
| main.go | ||
| metrics.go | ||
| metrics_test.go | ||