Pokémon Random Battle
- Score
- 0.0
- Wallet spend
- $3.49 of $10
- Model cost
- $11.89
- Agent time
- 4h 50m
- Steps
- 616
- Tokens in / out
- 58.0M / 340k
- Self-checks
- 1 passed of 1 used
- Rank at $10 wallet
- 4th of 14
Score
0.0raw metric 0.4903
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
- 1471
- draws
- 0
- losses
- 1529
- capped_games
- 0
- opponent_forfeits
- 1
- 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 provenancearchitecture.json declares base_model 'none', training from scratch, the vendored Foul Play at the pinned revision, and
architecture.json declares base_model 'none', training from scratch, the vendored Foul Play at the pinned revision, and the poke-engine 0.0.48 wheel. The organizer-built wheel's sha matches the trusted audit. train.py builds PolicyNet() from fresh initialization, loads no pretrained weights, and trains only on JSONL self-play records produced by the pinned Foul Play teacher, as described in training/TRAINING.md (seeds 7001-7005, about 724k records). The data source is declared and was generated during the session on spin compute, so its provenance is supported. The F32 tensor inventory in policy.safetensors (embeddings, 2-layer encoder, context/action/score/value heads) matches the tensor names in numpy_policy.py and the model in model.py. The 1.8M parameter count is consistent with training from scratch. Reusing Foul Play is explicitly allowed.
✓actual served policyserve.sh installs the shipped wheels offline (--no-index) and execs serve.py. serve.py runs a local HTTP server whose di
serve.sh installs the shipped wheels offline (--no-index) and execs serve.py. serve.py runs a local HTTP server whose dispatcher sends /act requests to fpbot.py worker subprocesses, launched with the shipped fp-src, foul-play-priors.json and serve_config.json. fpbot.py disables socket connect and create_connection. It rebuilds the Foul Play battle state from the observation, runs local poke-engine MCTS, and blends the result with the NumPy policy loaded from the shipped policy.safetensors (alpha -0.3 per serve_config.json). If the net fails to load it falls back to pure search. No remote decision services, cached evaluation actions or test-detection logic were found. The served decision path matches the declared hybrid implementation.
✓permitted informationencoder.py and fpbot.py build features only from the participant observation: the public battle log, the player's own re
encoder.py and fpbot.py build features only from the participant observation: the public battle log, the player's own request/team, revealed opponent information, speed ranges inferred from public events, public pokedex and move data, and the shipped Foul Play priors. serve.py routes requests using only observation fields. Neither the simulator internals nor the opponent's private state is accessed during serving. The training data is the participant's own self-play generated by the public development simulator. Config selection (alpha) used self-play experiments run with run_games.py, which is allowed development simulation and validation-guided selection. No test split was used.
✓harness credentials used only by the harnessIn the trajectory, no participant step reads, copies or uses the harness API keys or base URLs, and no step launches an
In the trajectory, no participant step reads, copies or uses the harness API keys or base URLs, and no step launches an extra harness CLI session. Harness-related strings appear only in ps aux process-listing output (trajectory#609), which is a listing rather than a use. Remote work was done through the permitted spin compute instance for data generation, training and experiments. The final steps only verify the wheel hash and the output files (trajectory#612, trajectory#613).
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 1 of 4.
- 1passed4h 40m into the runtook 4m 56s
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.96 s round trip on this side with the transport: [5, 7, 3, 7, 5, 5, 7, 11, 10, 11, 7, 0, 9, 12, 1, 11, 9, 5, 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), 83 finished games replaced by further development-seed matchups, against the pinned Foul Play: 3539 observations, 22-32 per batch, up to 342 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 342 KB; the first a cold batch of 32) on the trusted in-sandbox move timer; median 0.640 s, p95 0.692 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.639 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 checks pass. Stopping the rented box and submitting: