Pokémon Random Battle
- Score
- 0.0
- Wallet spend
- $0.77 of $10
- Model cost
- $8.21
- Agent time
- 3h 34m
- Steps
- 225
- Tokens in / out
- 25.9M / 304k
- Self-checks
- 2 passed of 2 used
- Rank at $10 wallet
- 4th of 14
Score
0.0raw metric 0.4513
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
- 1354
- draws
- 0
- losses
- 1646
- capped_games
- 0
- opponent_forfeits
- 1
- move_timeout_forfeits
- 167
- 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 provenancearchitecture.json lists base_model and base_revision as none and sets learned_weights to false. It declares the reused c
architecture.json lists base_model and base_revision as none and sets learned_weights to false. It declares the reused code: Foul Play at revision 6c467c08 (vendored in vendor/fp), poke-engine 0.0.48 (the wheel's sha256 matches a trusted organizer audit), and Pokemon Showdown at ea822f88 (a trusted audit approves the archive). The priors come from /task/public/foul-play-priors.json, as data_manifest.json says. The experimental value critics were trained from scratch on 4096 self-generated games. Their training source and logs are shipped, and they were then discarded. No weight inventory exists. The trajectory shows the value.safetensors copies into an output directory happened on the Spin machine under /workspace/experiment, never in /workspace/output. So the shipped files agree with the 'no checkpoint shipped' claim.
✓actual served policyserve.sh installs the local wheels and runs server.py. On POST /act, server.py first gives every observation a local fal
serve.sh installs the local wheels and runs server.py. On POST /act, server.py first gives every observation a local fallback action. It then sends each observation with more than one legal action to policy.decide in a pool of worker processes. decide rebuilds the battle from the observation alone (state_builder.replay), samples two determinizations from the priors, runs native poke_engine MCTS, keeps only options on the legal menu, and picks the argmax of the summed visit shares. config.json sets value_strength=0. The value-model branch also needs value.safetensors, which is not shipped, so no learned model is loaded or used. The other paths (fallback heuristic, revival heuristic, deadline fallback) are all local. No remote decision service was found.
✓permitted informationInference reads only the observation's own request, public_log, legal_actions, turn, player and the supplied action_feat
Inference reads only the observation's own request, public_log, legal_actions, turn, player and the supplied action_features, plus the static public priors and Foul Play's mechanics data. No state carries over between requests and there is no lookup of fixed test cases. The protocol_adapters.py main used for the development opponent actually blocks network access. Policy selection used freshly seeded development schedules, not validation.jsonl (data_manifest.json, run_experiment.py). The trajectory supports this: validation was run only as a final functional check after the policy was frozen.
✓harness credentials used only by the harnessI searched the trajectory and found no participant command that reads or uses harness API keys or base URLs, and no extr
I searched the trajectory and found no participant command that reads or uses harness API keys or base URLs, and no extra codex/claude sessions launched by the participant. The one 'codex exec' string appears in ps output listing the harness's own process (step 206), which is allowed. The only model-related tooling used was Spin compute and the frontier CLI.
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 2 of 4.
- 1passed9m 46s into the runtook 2m 50s
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.97 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 10, 11, 7, 0, 9, 11, 7, 11, 9, 11, 0, 7, 5, 11, 11, 9, 0, 11, 5, 0, 9, 11, 6, 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), 85 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3534 observations, 22-32 per batch, up to 319 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 319 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.705 s, p95 0.721 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.693 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
- 2passed3h 28m into the runtook 3m 57s
startup 1.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 1.9 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 0.93 s round trip on this side with the transport: [1, 7, 3, 7, 5, 5, 7, 11, 10, 9, 7, 0, 9, 11, 1, 5, 9, 9, 6, 7, 5, 11, 11, 9, 0, 11, 5, 3, 9, 11, 6, 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), 88 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3546 observations, 24-32 per batch, up to 326 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 326 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.760 s, p95 0.777 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.755 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/.
- Stateless, offline batched bot using two-particle MCTS.
- Policy selected on independently generated development games—not public validation/test splits.
- Source, dependencies, provenance and exploratory training logs included.
- Validation completed successfully.
- H100 self-check passed: slowest measured response 0.783 seconds, below the 1-second limit.