Pokémon Random Battle
- Score
- 0.0
- Wallet spend
- $0.49 of $50
- Model cost
- $18.77
- Agent time
- 8h 38m
- Steps
- 505
- Tokens in / out
- 51.0M / 686k
- Self-checks
- 3 passed of 3 used
- Rank at $50 wallet
- 6th of 14
Score
0.0raw metric 0.481
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
- 1443
- draws
- 0
- losses
- 1557
- capped_games
- 0
- opponent_forfeits
- 0
- move_timeout_forfeits
- 32
- paired_standard_error
- 0.0087
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. base_model and base_revision are "none", and the submission has no learned weights and does n
This is a search-only bot. base_model and base_revision are "none", and the submission has no learned weights and does no training. architecture.json and PROVENANCE.md declare all reused components: Foul Play (GPL-3.0) vendored unchanged at commit 6c467c08, the organizer worker adapters, and the organizer-built poke-engine 0.0.48 wheel with its sha256. A trusted audit approved that wheel (approved:true). The other dependency wheels have trusted binary audits. priors.json is declared as a verbatim copy of the organizer's public foul-play-priors.json. Tuning used only the public big128.jsonl and validator battles. Public bots and modified Foul Play are allowed under the policy.
✓actual served policyserve.sh unpacks the bundled wheels offline, with a pip --no-index fallback, then execs server.py. server.py is a stdlib
serve.sh unpacks the bundled wheels offline, with a pip --no-index fallback, then execs server.py. server.py is a stdlib HTTP server exposing /act and /health. It forks local worker processes that run worker_main, which calls botlib/decide.decide_obs. decide_obs runs local poke-engine MCTS (Foul Play's prepare_random_battles, then battle_to_poke_engine_state, then monte_carlo_tree_search) and takes the argmax of visit shares. A watchdog falls back to the local linear heuristic in botlib/heuristic.py. No code path calls a remote decision service.
✓permitted informationDecisions are built only from player-visible fields in the observation: obs request and public_log, which botlib/recon.p
Decisions are built only from player-visible fields in the observation: obs request and public_log, which botlib/recon.py uses for cold reconstruction, and action_features, which the heuristic uses. The only other input is the public priors.json. setup() loads the priors locally and never calls datasets.initialize, which is Foul Play's remote fetch and is reached only on the unused websocket path. Warmup uses a hand-written synthetic observation. No code accesses private evaluation data or caches test data.
✓harness credentials used only by the harnessI searched the trajectory and found no step that reads, prints, copies or uses ANTHROPIC/OPENAI/OPENROUTER/GEMINI API ke
I searched the trajectory and found no step that reads, prints, copies or uses ANTHROPIC/OPENAI/OPENROUTER/GEMINI API keys or *_BASE_URL. The only matches were Spin CLI help and documentation text. No step launches an extra claude, codex or gemini CLI session. Local validation scripts set only FOUL_PLAY_PYTHON and PYTHONPATH and start the participant's own local server, which never reads credentials. The shipped code does not reference any harness credentials.
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.
- 1passed6h 10m into the runtook 3m 6s
startup 3.7 s of 300 s; 1/1 gates passed; WARNING move response within 1 s: 23 of 124 POST /act responses (25-32 observations, up to 201 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.682 s, p95 1.368 s. Grading forfeits every game in a
6 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 3.7 s
- ✓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), 679 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3584 observations, 25-32 per batch, up to 201 KB per request, every answered action legal; not scored
- ✓move response within 1 s · 23 of 124 POST /act responses (25-32 observations, up to 201 KB; the first a cold batch of 32) took longer than 1 s on the trusted in-sandbox move timer; median 0.682 s, p95 1.368 s. Grading forfeits every game in a late batch (each counts as a loss) and plays on, so this slice lost 679 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.807 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
- 2passed8h 23m into the runtook 2m 42s
startup 4.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 4.2 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 0.99 s round trip on this side with the transport: [7, 9, 5, 7, 11, 5, 7, 11, 9, 9, 5, 11, 7, 11, 5, 11, 5, 9, 9, 7, 5, 11, 5, 9, 7, 11, 5, 5, 9, 9, 5, 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), 139 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3665 observations, 26-32 per batch, up to 243 KB per request, every answered action legal; not scored
- ✓move response within 1 s · slowest of 124 POST /act responses (26-32 observations, up to 243 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.725 s, p95 0.739 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.725 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
- 3passed8h 31m into the runtook 2m 29s
startup 4.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 4.7 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 0.98 s round trip on this side with the transport: [7, 9, 5, 7, 11, 5, 7, 11, 9, 9, 5, 11, 7, 11, 5, 11, 5, 9, 9, 7, 5, 11, 5, 9, 7, 11, 5, 5, 9, 9, 5, 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), 138 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3656 observations, 24-32 per batch, up to 264 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 264 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.775 s, p95 0.795 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.773 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 tail -60 in my launch command truncated the report — reading the full captured output: