Inverse dynamics model
- Score
- 29.5
- Wallet spend
- $11.88 of $200
- Model cost
- $10.80
- Agent time
- 4h 46m
- Steps
- 176
- Tokens in / out
- 30.4M / 151k
- Self-checks
- 1 passed of 1 used
- Rank at $200 wallet
- 11th of 14
Score
29.5raw metric 0.2953
The score is the raw metric (micro action F1), which already runs from 0 to 1, times 100.
Verifier details
- metric
- micro_action_f1
- tp
- 251
- fp
- 530
- fn
- 668
- precision
- 0.3214
- recall
- 0.2731
- failed_clip_limit_percent
- 5
- dropped_actions
- 0
- elapsed_seconds
- 241.8417
- deadline_seconds
- 3600
- request_timeout_seconds
- 300
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.
✓training data provenancetrain.py uses two training sources. The first is synthetic procedural clips from gen.generate_clip(seed) (SynthDataset).
train.py uses two training sources. The first is synthetic procedural clips from gen.generate_clip(seed) (SynthDataset). The second is the single permitted public example clip with its labels from /task/public/validation.jsonl (RealClip, mixed in every 8th step). Checkpoint selection uses synthetic seeds 900000+ and calibration uses synthetic seeds 950000+. DATA_MANIFEST.md and architecture.json declare all of these sources. Nothing in the shipped code or the trajectory shows access to p-doom/idm-eval or the private inductionlabs/frontier-ml-tasks data; those names appear only in the prompt and the manifest text. The public validate.py was run only as a local check against the public sample.
✓non specialist initializationtrain.py initializes the ViT with model.vit.load_hf() from the facebook/dinov2-small safetensors at snapshot ed25f3a31f0
train.py initializes the ViT with model.vit.load_hf() from the facebook/dinov2-small safetensors at snapshot ed25f3a31f01632728cabb09d1542f84ab7b0056. That is a general self-supervised vision model, not an IDM. The trajectory shows the hf_hub_download of that snapshot and train runs with --weights pointing at it. The round-2 fine-tune resumed from the participant's own models/best.pt, which was itself trained from DINOv2. The tensor inventory of model.safetensors matches ViT-S/14 (pos_embed 1x1370x384, 12 blocks) plus newly added temporal, in_proj and head tensors (key_head 148x384, among others). No specialist IDM checkpoint was found anywhere.
✓actual inference uses reviewed weightsserve.sh installs the vendored wheels offline and execs serve.py. serve.py builds IDMModel from model.py and loads the s
serve.sh installs the vendored wheels offline and execs serve.py. serve.py builds IDMModel from model.py and loads the shipped model.safetensors. It decodes the uploaded MP4 locally, computes common.extract_features and diff crops, runs the model, and calls decode_predictions with the thresholds from config.json. The request id is never used. There are no hash lookups, stored label tables or network or remote inference calls. The model.py architecture matches the weight inventory.
✓harness credentials used only by the harnessIn the trajectory, no step reads, prints, copies or uses the harness API key or base URL, and no extra harness CLI was l
In the trajectory, no step reads, prints, copies or uses the harness API key or base URL, and no extra harness CLI was launched. Searches for _API_KEY, BASE_URL, printenv and claude found nothing relevant. External access was limited to hf_hub_download of DINOv2 weights, curl for the uv installer, fonts and s5cmd, and spin compute for training. The policy allows all of these.
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.
- 1passed3h 30m into the runtook 4m 15s
startup 24.3 s of 300 s; 3/3 gates passed; Grading's 43-clip batch was sampled: 8 copies of the public clip in their 670 s share of the 3600 s deadline; its time and failed clips were projected from them.
7 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 24.3 s
- ✓POST /actions · {"actions": 12, "dropped_actions": 0, "warning": null, "first": [{"frame": "F00", "type": "MouseMove", "details": "-12,56"}, {"frame": "F01", "type": "MouseMove", "details": "-9,66"}, {"frame": "F03", "type": "MouseClick", "details": "Left"}]}
- ✓slowest request · 9 clips one at a time, each from its first attempt to its last (retries included), median 5.41 s, the first (cold) 3.93 s
- ✓43 clips one at a time · grading's request loop (validate.py run()) on 8 copies of the public clip: 38.1 s on the server the smoke request warmed up, 204.7 s for 43 (projected from 8 of 43 requests at concurrency 1), plus 0.0 s the cold first clip took over the median; held-out clips differ
- ✓failed clips · none of 8 (0 needed a retry)
- ✓healthy after requests