Pokémon Random Battle
- Score
- 7.2
- Wallet spend
- $49.78 of $50
- Model cost
- $267.82
- Agent time
- 10h 54m
- Steps
- 1,301
- Tokens in / out
- 172.3M / 1.1M
- Self-checks
- 3 passed of 3 used
- Rank at $50 wallet
- 3rd of 14
Score
7.2raw metric 0.536
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
- 1608
- draws
- 0
- losses
- 1392
- capped_games
- 0
- opponent_forfeits
- 0
- move_timeout_forfeits
- 116
- paired_standard_error
- 0.0083
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 declares every reused component. Each is pinned to a revision or source: Foul Play at 6c467c08 (from /
architecture.json declares every reused component. Each is pinned to a revision or source: Foul Play at 6c467c08 (from /task/public/foul-play.tar.gz, vendored under GPL-3.0), the poke-engine 0.0.48 wheel, Laplace as the base checkpoint (revision 4053b5f9, zero-extended from 368 to 514 inputs via training/provenance/convert_model.py) and Showdown at ea822f88. A trusted organizer audit approves the poke-engine wheel by sha256. Both active weights are traced to declared fine-tuning runs: value_net.safetensors from training/models/value-8192-v2.safetensors, and value_aux.safetensors from training/models/oracle-20480-short.safetensors. Each has its own manifest and fit log, and both were trained on freshly generated self-play corpora (seeds 89170021-89170027), with checkpoint-parent and generated-chunk audits. The weight inventories match the declared MLP structure. data/team-prior.safetensors is derived from a declared generator run (seed 203660093) and is disabled in serving (BOT_TEAM_PRIOR=0). Nothing in the files or the trajectory shows an undeclared checkpoint, corpus or initialization. The public download receipts were not re-verified independently. evidence/afterstate-candidates-source.tar.gz could not be inspected, but it is an unselected candidate archive and not on the serving path.
✓actual served policyserve.sh installs the shipped wheels offline, exports the BOT_* configuration, points BOT_VALUE_MODEL at value_net.safet
serve.sh installs the shipped wheels offline, exports the BOT_* configuration, points BOT_VALUE_MODEL at value_net.safetensors and BOT_VALUE_ENSEMBLE_MODEL at value_aux.safetensors, then runs server.py. server.py handles POST /act by sending each observation to a ProcessPool worker running policy.choose. That function builds the battle state (battle_view.py), samples weighted determinizations, runs poke_engine MCTS, takes the argmax, applies the value_rerank.py neural rerank (which loads both shipped safetensors with safetensors.numpy.load_file and mixes them 50/50), then applies the rage and revival refinements. If the deadline passes, the fallback is a local linear heuristic. The served call graph matches the declared architecture and uses the shipped weights. There are no external model calls.
✓permitted informationbattle_view.build_battle uses only obs['request'] (the player's own private request), obs['public_log'] and obs['player'
battle_view.build_battle uses only obs['request'] (the player's own private request), obs['public_log'] and obs['player']. Random-set priors come from the shipped local data/foul-play-priors.json, which is declared as copied from /task/public. The remote pkmn.github.io loader in vendor/foul_play/fp/data/sets/randbats.py is never called during serving. value_rerank.py and policy.py run only on the local poke_engine state built from that belief. They have no simulator, network or opponent-private access. README and architecture.json state that fitting and selection used newly generated games, not public validation or test data, and the trajectory does not contradict this.
✓harness credentials used only by the harnessI searched the trajectory and found no step where the participant used, copied or echoed harness API keys or base URLs,
I searched the trajectory and found no step where the participant used, copied or echoed harness API keys or base URLs, and no launch of extra harness CLIs: no ANTHROPIC/OPENAI hits and no printenv. The only *_API_KEY reference is trajectory#648, a packaging leak check. It scans /workspace/output for secret values and prints only the matching file paths, which came back empty. ssh/scp commands use the task's ssh_config to reach the dev and training hosts, and they do not move credentials. serve.sh contains no 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.
- 1passed6m 10s into the runtook 5m 43s
startup 1.5 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.5 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 0.72 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 11, 9, 7, 0, 9, 11, 9, 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), 87 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3555 observations, 23-32 per batch, up to 331 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 331 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.574 s, p95 0.578 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.569 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
- 2passed34m 7s into the runtook 3m 12s
startup 1.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 1.8 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 1.12 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 10, 9, 7, 0, 9, 11, 7, 5, 9, 11, 0, 9, 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), 82 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3539 observations, 24-32 per batch, up to 331 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 331 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.896 s, p95 0.903 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.896 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
- 3passed10h 49m into the runtook 3m 51s
startup 3.6 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.6 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 1.25 s round trip on this side with the transport: [4, 7, 2, 7, 5, 5, 7, 11, 10, 9, 5, 0, 7, 11, 1, 5, 9, 11, 5, 7, 5, 11, 11, 9, 0, 11, 5, 3, 4, 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), 84 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3528 observations, 24-32 per batch, up to 324 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 324 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.911 s, p95 0.920 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.906 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/.
- Development result: 54.01% battle points across 7,024 games.
- Public validation and final H100 selfcheck passed.
- Slowest selfcheck response: 0.921 seconds.
- No validation or test data used for training or policy selection.