Pokémon Random Battle
- Score
- 0.0
- Wallet spend
- $0.49 of $200
- Model cost
- $9.39
- Agent time
- 4h 40m
- Steps
- 445
- Tokens in / out
- 45.0M / 308k
- Self-checks
- 2 passed of 2 used
- Rank at $200 wallet
- 4th of 14
Score
0.0raw metric 0.4657
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
- 1397
- draws
- 0
- losses
- 1603
- capped_games
- 0
- opponent_forfeits
- 0
- move_timeout_forfeits
- 0
- 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 provenanceThis bot uses search and no learned weights. architecture.json sets base_model and base_revision to none and lists no tr
This bot uses search and no learned weights. architecture.json sets base_model and base_revision to none and lists no training evidence. There are no weight inventories, and no files were left uninspected. README.md names the reused code as Foul Play (github.com/afarnsworth/FoulPlay, commit 6c467c08, GPL-3.0), shipped under fp/ with LICENSE-foul-play. It also names the organizer-built poke_engine 0.0.48 wheel, which a trusted audit approved (sha256 b91209b2…), and the organizer priors at data/foul-play-priors.json. The trajectory supports this. At step 192 the participant copied fp/ from the extracted /task/public/foul-play.tar.gz and the priors from /task/public. Step 193 wrote architecture.json. The trusted binary audits approve the other vendored PyPI wheels. No training was done, and no training is claimed.
✓actual served policyserve.sh unpacks the vendored wheels and runs server.py. POST /act calls Server.act, which hands each observation to for
serve.sh unpacks the vendored wheels and runs server.py. POST /act calls Server.act, which hands each observation to forked workers that run bot_worker.BotWorker. A worker updates a Foul Play Battle from public_log and the request, samples opponent sets with RandomBattleMode.prepare_battles using the local priors, and runs poke_engine.monte_carlo_tree_search locally. It picks the action with the highest visit share and maps it back to an index in legal_actions. Forced single actions are mapped directly. If any step fails, the bot falls back to a local weighted heuristic over action_features. There are no remote calls in this path. The datasets are loaded from the local priors file rather than through the network-fetching initialize(). This matches the declared Foul Play plus MCTS design. One code bug: revival_tasks refers to an undefined is_new. The resulting exception just sends that case to the local fallback, so it is not a policy problem.
✓permitted informationDecisions use only the observation fields (request, public_log, legal_actions, action_features), the public Foul Play pr
Decisions use only the observation fields (request, public_log, legal_actions, action_features), the public Foul Play priors and public game data. game_identity hashes only visible details (player seat, own team idents, the public lead lines) to key a per-game cache. It does not detect test cases or cache answers. The serving code does not inspect simulator processes, read opponent private state or RNG, or use network services. In the trajectory, /proc/cpuinfo was read only to check hardware. Development used public validate.py runs and self-play A/B tests, and nothing shows private evaluation files being accessed.
✓harness credentials used only by the harnessI searched the trajectory for ANTHROPIC, OPENAI, OPENROUTER, API_KEY usage, *_BASE_URL usage, printenv and harness CLI l
I searched the trajectory for ANTHROPIC, OPENAI, OPENROUTER, API_KEY usage, *_BASE_URL usage, printenv and harness CLI launches. None show harness credentials being used or copied. The AWS session values seen at trajectory#81-104 come from Spin storage sessions, and Spin compute exec and upload calls are allowed. No extra harness sessions were started, and no model API calls were made from the participant's own code.
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.
- 1passed1h 11m into the runtook 5m 51s
startup 1.1 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.1 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 1.07 s round trip on this side with the transport: [5, 7, 3, 7, 5, 0, 7, 11, 10, 9, 7, 0, 9, 11, 7, 5, 9, 11, 5, 7, 5, 11, 11, 9, 11, 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), 92 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3569 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.794 s, p95 0.813 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.796 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
- 2passed4h 30m into the runtook 2m 43s
startup 1.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 1.0 s
- ✓POST /act, round 1 · 32 opening decisions answered with legal actions, 0.49 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 11, 11, 7, 0, 7, 11, 7, 11, 9, 11, 5, 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), 88 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3560 observations, 22-32 per batch, up to 318 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 318 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.780 s, p95 0.796 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.775 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 at 2026-10-10 05:53:43 UTC — well inside the deadline. Final memory update to record the outcome: