Pokémon Random Battle
- Score
- 0.0
- Wallet spend
- $17.84 of $50
- Model cost
- $55.46
- Agent time
- 6h 35m
- Steps
- 529
- Tokens in / out
- 160.9M / 374k
- Self-checks
- 4 passed of 4 used
- Rank at $50 wallet
- 6th of 14
Score
0.0raw metric 0.261
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
- 783
- draws
- 0
- losses
- 2217
- capped_games
- 0
- opponent_forfeits
- 1
- move_timeout_forfeits
- 30
- paired_standard_error
- 0.0078
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 the bot reuses upstream Foul Play at revision 6c467c08 (GPL-3.0) and the poke-engine 0.0.48 wheel
architecture.json says the bot reuses upstream Foul Play at revision 6c467c08 (GPL-3.0) and the poke-engine 0.0.48 wheel. It declares base_model and base_revision as none, says there are no learned weights, and lists no training files. The shipped files agree: foul-play/ came from the task's setup_foul_play.sh install, copied from /workspace/dev/fp (trajectory#45 and the copy in the steps-17-44 chunk). The priors file was copied unchanged from /task/public, and the poke-engine wheel is the organizer-built one, approved by a trusted audit. During the session the participant tried a neural policy (neuralbot.py, safetensors models), then dropped it. None of that code or weights was shipped: the final listing at trajectory#524 contains only architecture.json, foul-play/, foul-play-priors.json, fpbot.py, serve.sh, server.py and wheels. Running a search-only bot with no checkpoint is allowed.
✓actual served policyserve.sh installs the vendored wheels offline and then runs server.py. BOT_MODE is not set, so server.py defaults to 'fo
serve.sh installs the vendored wheels offline and then runs server.py. BOT_MODE is not set, so server.py defaults to 'fork' and builds fpbot.Engine. The optional 'neural' branch would import neuralbot, which is not shipped, and serve.sh never selects it. POST /act calls Engine.decide_batch. That method rebuilds the Foul Play battle from each observation's request and public_log, samples hidden states with the upstream random-battle sampler over the shipped priors, and runs poke_engine monte_carlo_tree_search in a local process pool. It picks the move with the highest weighted visit share. If that fails, it falls back to a fixed heuristic over the supplied action_features, then to index 0. All of this runs locally, with no remote decision service, and matches the declared search policy.
✓permitted informationInference uses only the supplied observation fields (request, public_log, legal_actions, action_features, player), the p
Inference uses only the supplied observation fields (request, public_log, legal_actions, action_features, player), the public priors file, and the game mechanics in poke-engine. The serving code has no network calls, no inspection of the simulator process, no access to the opponent's private state or RNG, no hard-coded test detection, and no cached evaluation actions. During development the participant tuned settings with public validation and schedule files, which is allowed. The abandoned neural data generation also used public validation games only and was not shipped.
✓harness credentials used only by the harnessThe trajectory shows no use of the harness's model-API credentials or base URL in the participant's own commands or scri
The trajectory shows no use of the harness's model-API credentials or base URL in the participant's own commands or scripts. Searches for API_KEY, BASE_URL, OPENROUTER, anthropic and harness CLI launches found only Spin documentation text. Spin transfer session credentials (session.json) were uploaded to a Spin GPU machine for s5cmd transfers, as Spin's own documentation describes (trajectory#242). Those are Spin credentials, not harness credentials. No extra harness sessions were launched.
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.
- 1passed3h 10m into the runtook 3m 8s
startup 1.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 1.4 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, 1, 7, 5, 5, 7, 11, 9, 9, 7, 0, 7, 11, 1, 5, 9, 5, 5, 7, 5, 11, 6, 8, 8, 12, 6, 6, 10, 10, 6, 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), 90 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3582 observations, 22-32 per batch, up to 312 KB per request, every answered action legal; not scored
- ✓move response within 1 s · slowest of 124 POST /act responses (22-32 observations, up to 312 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.827 s, p95 0.829 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.828 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 30m into the runtook 3m 31s
startup 1.8 s of 300 s; 1/1 gates passed; WARNING move response within 1 s: 1 of 124 POST /act responses (24-32 observations, up to 264 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.778 s, p95 0.816 s. Grading forfeits every game in a l
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.19 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 10, 11, 7, 0, 7, 12, 6, 12, 6, 10, 10, 8, 6, 12, 6, 8, 8, 12, 6, 6, 10, 10, 6, 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), 131 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3570 observations, 24-32 per batch, up to 264 KB per request, every answered action legal; not scored
- ✓move response within 1 s · 1 of 124 POST /act responses (24-32 observations, up to 264 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.778 s, p95 0.816 s. Grading forfeits every game in a late batch (each counts as a loss) and plays on, so this slice lost 26 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.789 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 20m into the runtook 3m 1s
startup 4.0 s of 300 s; 1/1 gates passed; WARNING move response within 1 s: 2 of 124 POST /act responses (23-32 observations, up to 276 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.781 s, p95 0.791 s. Grading forfeits every game in a l
7 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 4.0 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 0.95 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 11, 9, 7, 0, 7, 11, 6, 12, 6, 10, 10, 8, 6, 12, 6, 8, 8, 12, 6, 6, 10, 10, 6, 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), 146 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3573 observations, 23-32 per batch, up to 276 KB per request, every answered action legal; not scored
- ✓move response within 1 s · 2 of 124 POST /act responses (23-32 observations, up to 276 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.781 s, p95 0.791 s. Grading forfeits every game in a late batch (each counts as a loss) and plays on, so this slice lost 58 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.783 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
- 4passed6h 28m into the runtook 2m 31s
startup 2.0 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.0 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 0.56 s round trip on this side with the transport: [1, 7, 3, 7, 5, 5, 7, 11, 9, 10, 6, 12, 8, 12, 6, 12, 6, 10, 10, 8, 6, 12, 6, 8, 8, 12, 6, 6, 10, 10, 6, 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), 101 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3584 observations, 24-32 per batch, up to 303 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 303 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.785 s, p95 0.791 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.781 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.
I've thoroughly validated the submission. The fork is a robust, batched Foul Play MCTS bot that passes all infrastructure gates. Let me confirm the submission.