Pokémon Random Battle
- Score
- 0.0
- Wallet spend
- $2.91 of $10
- Model cost
- $40.02
- Agent time
- 3h 15m
- Steps
- 291
- Tokens in / out
- 92.3M / 336k
- Self-checks
- 4 passed of 4 used
- Rank at $10 wallet
- 4th of 14
Score
0.0raw metric 0.497
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
- 1491
- draws
- 0
- losses
- 1509
- capped_games
- 1
- opponent_forfeits
- 0
- move_timeout_forfeits
- 0
- paired_standard_error
- 0.0081
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, which the policy allows. architecture.json declares base_model and base_re
This is a search-only bot with no checkpoint, which the policy allows. architecture.json declares base_model and base_revision as none. It also declares the reused code: Foul Play at commit 6c467c081e862fb321adb405355beb41aba8e226 (GPL-3.0), vendored in bot/fp, and the organizer-built poke-engine 0.0.48 wheel with its sha256. A trusted audit approves the wheel, and its hash matches the declared hash. The priors file data/foul-play-priors.json is declared as a copy of /task/public/foul-play-priors.json and is used only as an inference prior. trajectory#31 shows the Foul Play source, the wheel and the priors being copied from organizer public files. There was one training attempt, an MLP reranker trained on the participant's own development games. It is documented in docs/experiments/rerank, was abandoned, ships no weights and is not imported. So no undeclared training or weights drive serving.
✓actual served policyThe serving path runs from serve.sh to bot/server.py to bot/policy.py and bot/fpstate.py, then into poke-engine's MCTS:
The serving path runs from serve.sh to bot/server.py to bot/policy.py and bot/fpstate.py, then into poke-engine's MCTS: - serve.sh installs the vendored wheel offline (pip --no-index --no-deps), sets BOT_PRIORS to the shipped priors file, and runs exec python bot/server.py. - server.py serves POST /act through forked workers that call policy.decide_many under a time budget. - policy.py rebuilds the battle from the observation with the patched Foul Play code. It then samples determinizations and runs poke_engine monte_carlo_tree_search on each one. It combines visit shares across samples and maps the chosen move to a legal_actions index. - If that fails, policy.fallback_action is used. This is a local heuristic built on action_features. - fpstate.mode() loads the priors from the local file rather than the remote URL that Foul Play uses by default (bot/fp/data/sets/randbats.py). - The requests and websockets modules are replaced with stubs that refuse network access. There is no remote decision service and no undeclared decision path.
✓permitted informationThe policy reads only these observation fields: legal_actions, request, public_log, player and action_features. It also
The policy reads only these observation fields: legal_actions, request, public_log, player and action_features. It also uses public priors from the generator and the public game mechanics in poke-engine and Foul Play data. There is no simulator inspection, no access to the opponent's private state or RNG, no network calls (the modules are stubbed), no test detection and no cached evaluation actions. BOT_RECORD only logs development games and is off by default. Development used the participant's own seeds and public validation, which the policy allows.
✓harness credentials used only by the harnessI checked the trajectory for misuse of harness credentials and base URLs and found none: - No step reads, prints, copies
I checked the trajectory for misuse of harness credentials and base URLs and found none: - No step reads, prints, copies or uses them, and no step launches an extra harness CLI. There is no printenv and no claude -p. - Compute came from the Spin CLI, which the policy allows. - curl was used only against localhost /health. - HF_TOKEN was never used for uploads.
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.
- 1passed36m 45s into the runtook 2m 48s
startup 1.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 1.2 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, 9, 9, 7, 0, 9, 11, 1, 5, 9, 9, 5, 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), 80 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3565 observations, 24-32 per batch, up to 337 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 337 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.740 s, p95 0.745 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.740 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 21m into the runtook 3m 43s
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.21 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 10, 11, 7, 0, 7, 11, 7, 5, 9, 9, 5, 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), 85 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3546 observations, 23-32 per batch, up to 340 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 340 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.841 s, p95 0.843 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.840 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
- 3passed2h 35m into the runtook 3m 12s
startup 1.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 1.2 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 1.10 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 10, 9, 7, 0, 9, 11, 1, 5, 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), 87 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3531 observations, 24-32 per batch, up to 325 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 325 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.834 s, p95 0.836 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.834 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
- 4passed3h 1m into the runtook 3m 47s
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.21 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 11, 11, 7, 0, 7, 11, 9, 5, 9, 9, 5, 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), 81 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3558 observations, 24-32 per batch, up to 346 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 346 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.834 s, p95 0.838 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.835 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.
All machines are released (total compute spend $2.90 of $10). Submitting the final folder.