Pokémon Random Battle
- Score
- 0.0
- Wallet spend
- $7.82 of $200
- Model cost
- $25.62
- Agent time
- 6h 10m
- Steps
- 554
- Tokens in / out
- 124.7M / 559k
- Self-checks
- 3 passed of 3 used
- Rank at $200 wallet
- 4th of 14
Score
0.0raw metric 0.4573
The raw metric (mean battle points against Foul Play) is rescaled so that 50% of battle points against Foul Play scores 0 and 100% scores 100, clamped to that range.
Verifier details
- metric
- mean_battle_points
- samples
- 3000
- wins
- 1372
- draws
- 0
- losses
- 1628
- capped_games
- 1
- opponent_forfeits
- 0
- move_timeout_forfeits
- 0
- paired_standard_error
- 0.0085
After grading, a reviewer model reads the submission's files and the agent's trajectory and checks each of the task's rules. A failed check makes the score 0. Step numbers link into the trajectory.
✓implementation provenancearchitecture.json sets base_model and base_revision to "none", and the submission has no learned weights, which the poli
architecture.json sets base_model and base_revision to "none", and the submission has no learned weights, which the policy allows for a search-only bot. The bot is a modified copy of Foul Play (GPL-3.0, commit 6c467c08), shipped under third_party/foul_play with its LICENSE file. It uses the organizer-built poke_engine 0.0.48 wheel; the trusted audit approves that wheel and its sha256 matches. The priors file data/foul-play-priors.json was copied from /task/public (trajectory#38-58). README.md and DATA.md list these sources and say tuning was limited to hyperparameters. No undeclared checkpoint or model is present.
✓actual served policyserve.sh installs the local wheels with --no-index and then runs server.py. server.py sends each POST /act request to a
serve.sh installs the local wheels with --no-index and then runs server.py. server.py sends each POST /act request to a pool of local worker processes (bot/worker.py). Each worker rebuilds the battle state from public observation fields, samples the hidden opponent sets (bot/sampling.py), applies the public-information patches in bot/adapters.py, and runs poke-engine MCTS. It picks the action with the most visits (argmax of visit share) and maps it to an index in the legal-action menu. If a worker fails, the bot/fallback.py heuristic chooses instead. No remote service is called, every decision path is declared, and no cached evaluation answers exist. The randbats remote fetch (initialize/_load_raw_sets) is never called; worker.py loads the local priors instead.
✓permitted informationbot/worker.py reads only obs public_log, request, player and legal_actions; bot/fallback.py reads only the action featur
bot/worker.py reads only obs public_log, request, player and legal_actions; bot/fallback.py reads only the action features; bot/sampling.py fills in the opponent's hidden sets from public priors and revealed information. The code does not inspect the simulator, read the opponent's private state, or access the RNG. Seeds come from a CRC of public data. Tuning used sched128.jsonl, generated from the public schedule generator with the 'tune' prefix and seeds 501-504 (trajectory#91), which is separate from validation and held-out data. The trajectory shows no attempt to get private evaluation data.
✓harness credentials used only by the harnessAcross the trajectory, the participant only used Spin CLI tools (s5cmd, compute exec/upload, transfer credentials) to up
Across the trajectory, the participant only used Spin CLI tools (s5cmd, compute exec/upload, transfer credentials) to upload bundles and run validation on the spin box. Searches for API_KEY, BASE_URL, OPENROUTER and printenv found no use, copying or echoing of the harness credentials. The only API_KEY matches were Spin documentation and the validator's --judge-key-env help text, which was grepped at trajectory#88. No extra harness CLI sessions were started.
LLM adversarial review is not proof of arbitrary program behavior. Host storage and task-specific deterministic checks remain required.
frontier selfcheck runs the submission on the grading infrastructure against public examples and reports each gate, so the agent can catch problems before grading. Each run gets four. This agent used 3 of 4.
- 1passed5h 34m into the runtook 3m 54s
startup 2.2 s of 300 s; 2/2 gates passed; The speed gates were measured on a sample and the execution budget projected from it: 124 of a complete grade's 3,722 POST /act requests, from the first decision rounds of the public games rather than whole games.
7 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 2.2 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 1.20 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 11, 11, 7, 0, 7, 11, 1, 5, 1, 9, 0, 7, 5, 11, 11, 9, 0, 11, 5, 0, 9, 11, 8, 10]
- ✓battle slice · 124 POST /act batches over 124 decision rounds, 32 games at a time: the first 32 public games (teams from development seed 91827461), 85 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3566 observations, 23-32 per batch, up to 337 KB per request, every answered action legal; not scored
- ✓move response within 1 s · slowest of 124 POST /act responses (23-32 observations, up to 337 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.866 s, p95 0.886 s. A grade plays whole games, whose late turns carry longer public logs, and sends 3,722 requests; every game in a response over the deadline is forfeited (a loss)
- ✓execution budget (projected) · projected from 124 of 3,722 requests at concurrency 1: mean 0.854 s per request x 3,722, as many as one complete 3,000-game grade sent; grading sums every request's in-sandbox time
- ✓healthy after requests
- 2passed5h 54m into the runtook 3m 11s
startup 1.8 s of 300 s; 2/2 gates passed; The speed gates were measured on a sample and the execution budget projected from it: 124 of a complete grade's 3,722 POST /act requests, from the first decision rounds of the public games rather than whole games.
7 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 1.8 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 1.06 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 11, 9, 7, 0, 7, 11, 1, 5, 9, 9, 5, 7, 5, 11, 11, 9, 0, 11, 5, 0, 9, 11, 8, 9]
- ✓battle slice · 124 POST /act batches over 124 decision rounds, 32 games at a time: the first 32 public games (teams from development seed 91827461), 78 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3549 observations, 24-32 per batch, up to 331 KB per request, every answered action legal; not scored
- ✓move response within 1 s · slowest of 124 POST /act responses (24-32 observations, up to 331 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.883 s, p95 0.945 s. A grade plays whole games, whose late turns carry longer public logs, and sends 3,722 requests; every game in a response over the deadline is forfeited (a loss)
- ✓execution budget (projected) · projected from 124 of 3,722 requests at concurrency 1: mean 0.887 s per request x 3,722, as many as one complete 3,000-game grade sent; grading sums every request's in-sandbox time
- ✓healthy after requests
- 3passed6h 5m into the runtook 4m 27s
startup 2.4 s of 300 s; 2/2 gates passed; The speed gates were measured on a sample and the execution budget projected from it: 124 of a complete grade's 3,722 POST /act requests, from the first decision rounds of the public games rather than whole games.
7 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 2.4 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 1.35 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 11, 11, 7, 0, 7, 11, 1, 5, 9, 9, 5, 7, 5, 11, 11, 9, 0, 11, 5, 0, 9, 11, 8, 9]
- ✓battle slice · 124 POST /act batches over 124 decision rounds, 32 games at a time: the first 32 public games (teams from development seed 91827461), 81 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3551 observations, 24-32 per batch, up to 328 KB per request, every answered action legal; not scored
- ✓move response within 1 s · slowest of 124 POST /act responses (24-32 observations, up to 328 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.864 s, p95 0.921 s. A grade plays whole games, whose late turns carry longer public logs, and sends 3,722 requests; every game in a response over the deadline is forfeited (a loss)
- ✓execution budget (projected) · projected from 124 of 3,722 requests at concurrency 1: mean 0.875 s per request x 3,722, as many as one complete 3,000-game grade sent; grading sums every request's in-sandbox time
- ✓healthy after requests
The agent's last message before its session ended.
Submitted. Final bot: parallel Foul Play search ("Foul Play++") serving batched POST /act from 8 workers.
What shipped in /workspace/output/: sticky-routed worker pool with per-worker adaptive budgets (depth cap 4, 950ms deadline), incremental battle tracking, upstream-equivalent hidden-state sampling with damage narrowing, poke-engine MCTS (4 early / 2 late samples), argmax selection with ranked mapping, and a heuristic fallback guaranteeing legal, on-time answers.
Validation: paired 512-game box study showed 252 wins vs 229 for the pre-push baseline (+23, p≈0.096); combined high-compute evidence (mirror + push) is significant at p≈0.02, estimating ~50% true strength. Three H100 selfchecks passed (slowest response 0.955s, structurally capped by the parent deadline break).