Pokémon Random Battle
- Score
- 0.0
- Wallet spend
- $0.00 of $10
- Model cost
- $0.33
- Agent time
- 37m
- Steps
- 170
- Tokens in / out
- 22.3M / 138k
- Self-checks
- 4 passed of 4 used
- Rank at $10 wallet
- 4th of 14
Score
0.0raw metric 0.298
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
- 894
- draws
- 0
- losses
- 2106
- capped_games
- 0
- opponent_forfeits
- 0
- move_timeout_forfeits
- 856
- paired_standard_error
- 0.0080
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 says there is no base model (base_model/base_revision are 'none'). It names the reused code as Foul Pl
architecture.json says there is no base model (base_model/base_revision are 'none'). It names the reused code as Foul Play (pinned commit 6c467c08, GPL-3.0, under fp/) and the organizer-built poke-engine 0.0.48 wheel (MIT). The trusted binary audit approves that wheel by SHA-256, and the hash matches data_manifest.json. training.json and data_manifest.json both say no training was done. The shipped files contain no checkpoint and no weight inventory. The set priors file foul-play-priors.json is declared as task-provided, and its generator script, foul_play_priors.js, is shipped. Trajectory step 29 shows the Foul Play tarball, the priors and the engine wheel being copied straight from /task/public. The other dependency wheels were downloaded from PyPI and have upstream digest audits. A search-only bot that reuses a public bot is allowed.
✓actual served policyserve.sh installs the wheels from local files only (--no-index) and starts server.py. On POST /act, server.py sends each
serve.sh installs the wheels from local files only (--no-index) and starts server.py. On POST /act, server.py sends each observation to policy.choose_one in a local ProcessPoolExecutor. choose_one rebuilds the battle from the request and public_log using Foul Play's parser, samples the opponent's hidden sets with RandomBattleMode and the local priors, runs native poke-engine MCTS through get_result_from_mcts, and picks the action with the largest combined visit share. Revival Blessing uses the same native search. The only fallback is a local heuristic in _safe_features that scores the supplied action_features. There is no remote decision service. All decision paths are declared and shipped, and they match architecture.json.
✓permitted informationInference uses only the observation fields: request (the player's own private request), public_log, legal_actions and ac
Inference uses only the observation fields: request (the player's own private request), public_log, legal_actions and action_features. Set priors are loaded from a local JSON file, which replaces Foul Play's remote randbats download (raw_pkmn_sets is assigned directly before _initialize_pkmn_sets). The serving path does not inspect the simulator process, read the opponent's private state or RNG, call the network, detect test cases or cache evaluation actions. Random seeding comes only from the public turn and log. In the trajectory, public validation and development-seed simulations were used only for debugging and timing, which the policy allows. No training was done.
✓harness credentials used only by the harnessI searched the trajectory for API_KEY, BASE_URL, openai SDK use, curl, printenv, claude/codex worker launches and spin o
I searched the trajectory for API_KEY, BASE_URL, openai SDK use, curl, printenv, claude/codex worker launches and spin openrouter. None of the participant's commands read, echoed or used harness credentials. No extra harness sessions were launched. Commands were limited to local development, validation, pip downloads from PyPI and frontier selfcheck (for example, trajectory#29 and trajectory#164).
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 4 of 4.
- 1passed13m 21s into the runtook 7m 14s
startup 1.9 s of 300 s; 1/1 gates passed; WARNING move response within 1 s: 5 of 124 POST /act responses (24-32 observations, up to 314 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.861 s, p95 0.996 s. Grading forfeits every game in a l
7 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 1.9 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 1.21 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 10, 9, 7, 0, 9, 11, 1, 11, 9, 11, 5, 7, 5, 11, 11, 9, 0, 11, 5, 0, 5, 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), 180 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3582 observations, 24-32 per batch, up to 314 KB per request, every answered action legal; not scored
- ✓move response within 1 s · 5 of 124 POST /act responses (24-32 observations, up to 314 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.861 s, p95 0.996 s. Grading forfeits every game in a late batch (each counts as a loss) and plays on, so this slice lost 147 games that way. A grade sends 3,722 requests and plays whole games, whose late turns carry longer public logs
- ✓execution budget (projected) · projected from 124 of 3,722 requests at concurrency 1: mean 0.858 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
- 2passed24m 58s into the runtook 2m 39s
startup 1.4 s of 300 s; 1/1 gates passed; WARNING move response within 1 s: 5 of 124 POST /act responses (23-32 observations, up to 298 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.847 s, p95 0.997 s. Grading forfeits every game in a l
7 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 1.4 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 0.81 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 9, 9, 7, 0, 9, 11, 1, 11, 9, 11, 5, 7, 5, 11, 11, 9, 0, 11, 5, 0, 5, 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), 185 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3553 observations, 23-32 per batch, up to 298 KB per request, every answered action legal; not scored
- ✓move response within 1 s · 5 of 124 POST /act responses (23-32 observations, up to 298 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.847 s, p95 0.997 s. Grading forfeits every game in a late batch (each counts as a loss) and plays on, so this slice lost 150 games that way. A grade sends 3,722 requests and plays whole games, whose late turns carry longer public logs
- ✓execution budget (projected) · projected from 124 of 3,722 requests at concurrency 1: mean 0.840 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
- 3passed28m 17s into the runtook 3m 28s
startup 1.9 s of 300 s; 1/1 gates passed; WARNING move response within 1 s: 6 of 124 POST /act responses (24-32 observations, up to 301 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.758 s, p95 0.996 s. Grading forfeits every game in a l
7 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 1.9 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 0.96 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 9, 9, 7, 0, 7, 11, 9, 11, 9, 11, 5, 7, 5, 11, 11, 9, 0, 11, 5, 0, 5, 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), 189 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3564 observations, 24-32 per batch, up to 301 KB per request, every answered action legal; not scored
- ✓move response within 1 s · 6 of 124 POST /act responses (24-32 observations, up to 301 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.758 s, p95 0.996 s. Grading forfeits every game in a late batch (each counts as a loss) and plays on, so this slice lost 183 games that way. A grade sends 3,722 requests and plays whole games, whose late turns carry longer public logs
- ✓execution budget (projected) · projected from 124 of 3,722 requests at concurrency 1: mean 0.765 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
- 4passed32m 55s into the runtook 2m 59s
startup 1.7 s of 300 s; 1/1 gates passed; WARNING move response within 1 s: 4 of 124 POST /act responses (25-32 observations, up to 301 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.642 s, p95 0.941 s. Grading forfeits every game in a l
7 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 1.7 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 0.69 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 9, 9, 7, 0, 7, 11, 7, 11, 9, 11, 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), 144 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3578 observations, 25-32 per batch, up to 301 KB per request, every answered action legal; not scored
- ✓move response within 1 s · 4 of 124 POST /act responses (25-32 observations, up to 301 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.642 s, p95 0.941 s. Grading forfeits every game in a late batch (each counts as a loss) and plays on, so this slice lost 121 games that way. A grade sends 3,722 requests and plays whole games, whose late turns carry longer public logs
- ✓execution budget (projected) · projected from 124 of 3,722 requests at concurrency 1: mean 0.649 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 /workspace/output/ at 2026-10-03 05:47:50 UTC.
The bot reconstructs battles from the public log and uses Foul Play’s hidden-set sampling and native MCTS, with the 30 ms per-state search budget. It uses public random-team priors and has no trained weights.
The final selfcheck passed its required gates. It still recorded 4 late responses out of 124 batches, forfeiting 121 games in that slice, and 4 rare switch-form policy fallbacks for Mimikyu or Palafin. Selfcheck does not report a battle score or run the architecture review.