Pokémon Random Battle
- Score
- 0.0
- Wallet spend
- $0.00 of $200
- Model cost
- $28.79
- Agent time
- 2h 2m
- Steps
- 120
- Tokens in / out
- 41.1M / 94k
- Self-checks
- 4 passed of 4 used
- Rank at $200 wallet
- 4th of 14
Score
0.0raw metric 0.4903
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
- 1471
- draws
- 0
- losses
- 1529
- capped_games
- 0
- 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 provenanceThis is a search-only bot with no checkpoint. architecture.json sets base_model and base_revision to none. It declares r
This is a search-only bot with no checkpoint. architecture.json sets base_model and base_revision to none. It declares reused Foul Play from github.com/pmariglia/foul-play at revision 6c467c08 (GPL-3.0, vendored in fp/) and the poke-engine 0.0.48 organizer wheel with its SHA-256. A trusted audit approves that wheel with a matching hash. It also declares the set prior foul-play-priors.json, copied from /task/public. The session shows no edits to /workspace/output/fp files. The protocol adapters are applied by monkey-patching from search_worker.py; that file also adds a damage-inference guard that PROVENANCE.md does not list among its three adapters, but the guard is plainly visible in the declared serving source. No training was done, so no training data or logs are needed.
✓actual served policyserve.sh installs the vendored wheels with pip --no-index and runs server.py. POST /act sends each observation to persis
serve.sh installs the vendored wheels with pip --no-index and runs server.py. POST /act sends each observation to persistent search_worker.py subprocesses. Each worker rebuilds the battle with Foul Play's parser from the request and public_log, fills in hidden opponent sets from the shipped prior, and runs local poke-engine monte_carlo_tree_search. It plays the move with the most visits and maps it to an index in legal_actions. The other paths are all local: a single legal action is returned without search, Revival Blessing targets are compared by searching the revived states, and an engine choice that is not on the menu or a worker error falls back to a legal action. There are no remote calls and no undeclared decision paths. The served budget of 0.58 matches what the final session restored (trajectory#115).
✓permitted informationInference uses only the observation's request, public_log, legal_actions, player and turn, plus the public set prior and
Inference uses only the observation's request, public_log, legal_actions, player and turn, plus the public set prior and game mechanics. The code does not inspect simulator processes, read the opponent's RNG or private state, call the network, detect test cases or cache evaluation actions. In the session, tuning used only local arena self-play on development seeds and public selfcheck inputs (trajectory#101, trajectory#108, trajectory#113). That is allowed public development simulation.
✓harness credentials used only by the harnessThe trajectory has no references to harness API keys or base URLs and no curl/SDK model calls. No extra claude/codex/gro
The trajectory has no references to harness API keys or base URLs and no curl/SDK model calls. No extra claude/codex/grok CLI sessions were launched, and no credentials were copied anywhere. The participant only read spin --help (trajectory#8), used the harness's own web_search tool (trajectory#50), ran local tests and selfchecks, and submitted (trajectory#118).
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.
- 1passed51m 18s into the runtook 3m 14s
startup 2.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 2.8 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 1.13 s round trip on this side with the transport: [1, 7, 3, 7, 0, 5, 7, 11, 10, 9, 7, 0, 7, 11, 1, 11, 9, 11, 0, 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), 89 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3537 observations, 23-32 per batch, up to 317 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 317 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.899 s, p95 0.932 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.889 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
- 2passed1h 18m into the runtook 2m 34s
startup 2.9 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.9 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 0.92 s round trip on this side with the transport: [5, 7, 1, 7, 5, 0, 7, 11, 9, 11, 7, 0, 7, 11, 1, 11, 9, 11, 0, 7, 5, 11, 11, 9, 0, 11, 5, 3, 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), 80 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3550 observations, 24-32 per batch, up to 348 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 348 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.816 s, p95 0.852 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.813 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
- 3passed1h 21m into the runtook 3m 6s
startup 3.7 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 3.7 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 1.02 s round trip on this side with the transport: [5, 7, 1, 7, 5, 5, 7, 11, 9, 11, 7, 0, 7, 11, 1, 11, 9, 11, 0, 7, 11, 11, 11, 9, 0, 11, 5, 3, 5, 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), 91 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3533 observations, 24-32 per batch, up to 316 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 316 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.704 s, p95 0.764 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.700 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
- 4passed1h 59m into the runtook 2m 24s
startup 2.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 2.8 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 0.88 s round trip on this side with the transport: [5, 7, 1, 7, 5, 5, 7, 11, 10, 11, 7, 0, 7, 11, 1, 5, 9, 11, 0, 7, 5, 11, 11, 9, 0, 11, 5, 3, 5, 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), 84 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3548 observations, 22-32 per batch, up to 343 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 343 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.784 s, p95 0.824 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.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
The agent's last message before its session ended.
The Gen 9 Random Battle bot is submitted. It serves batched decisions on POST /act and pilots a random six-Pokémon team with Foul Play's parser and poke-engine search.
It keeps a battle on the worker that already holds its parser, so speed and set inferences accumulate. The most likely remaining opponent set is searched first and weighted twice, and the visit leader is played instead of randomizing among near-ties. A 32-observation batch is split across eight workers at about 145 ms each.
The last graded-style timing check passed with the slowest response at 0.8295 s, 17% under the one-second limit.