Inverse dynamics model
- Score
- 34.4
- Wallet spend
- $5.40 of $10
- Model cost
- $42.18
- Agent time
- 7h 18m
- Steps
- 609
- Tokens in / out
- 58.4M / 411k
- Self-checks
- 1 passed of 1 used
- Rank at $10 wallet
- 11th of 14
Score
34.4raw metric 0.3436
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
- 384
- fp
- 932
- fn
- 535
- precision
- 0.2918
- recall
- 0.4178
- failed_clip_limit_percent
- 5
- dropped_actions
- 0
- elapsed_seconds
- 279.6702
- 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 provenanceThe training and calibration data is all synthetic. evidence/generator.py made it by running mousepad, a terminal, thuna
The training and calibration data is all synthetic. evidence/generator.py made it by running mousepad, a terminal, thunar and evince in Xvfb, injecting input with XTest and recording with ffmpeg x11grab, over runs train1/2/3 with seeds 1/2/3. DATA_MANIFEST.md and architecture.json both declare this source. evidence/keynet.py trains on those generated clips and holds out sess%10==9 as validation. The threshold calibration logged in trajectory#593 ran on 100 of those synthetic validation clips. In the trajectory, the participant only read the public cards for p-doom/idm and p-doom/idm-eval-set (trajectory#10, #11) and never downloaded eval clips or labels. Four AGI-CAST-0.6k videos were downloaded (trajectory#43); that is a public train-only CC0 dataset. They were only looked at (trajectory#53) and no shipped training code references them. The /task/public example clip was used only for local checks, which is allowed. Searches found no use of frontier-ml-tasks.
✓non specialist initializationarchitecture.json sets base_model to null. evidence/keynet.py builds TransitionNet() and GlyphNet(n_classes) after torch
architecture.json sets base_model to null. evidence/keynet.py builds TransitionNet() and GlyphNet(n_classes) after torch.manual_seed(0) and loads no pretrained weights. The tensors in model/keynet.pt (tnet.*, gnet.*, classes, cfg) match the from-scratch CNN definitions in idmcore.py. The participant only read the p-doom/idm model card (trajectory#10) and never downloaded or loaded it. The Qwen VLMs that were downloaded are general models and are not in the shipped model.
✓actual inference uses reviewed weightsserve.sh installs the bundled wheels and runs exec python server.py. server.py decodes the uploaded video with PyAV and
serve.sh installs the bundled wheels and runs exec python server.py. server.py decodes the uploaded video with PyAV and calls idmcore.ActionPredictor('model/keynet.pt').predict(frames). ActionPredictor does torch.load on that checkpoint, loads the 'tnet' and 'gnet' state dicts plus 'classes' and 'cfg', and combines the net outputs with hand-written CV rules for moves and scrolls. That shipped file is the reviewed model/keynet.pt (about 15.2 MB, a complete PyTorch inventory), and trajectory#594 shows it being fetched from the training box with an md5 check. The serving path makes no network calls, uses no remote inference and looks up no stored labels; it ignores the clip id.
✓harness credentials used only by the harnessI searched the trajectory for ANTHROPIC, API_KEY, BASE_URL, printenv, 'claude -p' and codex and got no matches. The only
I searched the trajectory for ANTHROPIC, API_KEY, BASE_URL, printenv, 'claude -p' and codex and got no matches. The only openrouter matches are the Spin CLI's help text listing its subcommands. Compute was rented with spin compute (trajectory#38), and HF_TOKEN was used for Hugging Face downloads (trajectory#43); policy allows both. No harness API keys or base URLs were used or copied, and no extra harness CLI sessions were launched.
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.
- 1passed7h 15m into the runtook 3m 54s
startup 25.4 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 25.4 s
- ✓POST /actions · {"actions": 13, "dropped_actions": 0, "warning": null, "first": [{"frame": "F00", "type": "MouseMove", "details": "0,0"}, {"frame": "F01", "type": "MouseMove", "details": "0,0"}, {"frame": "F04", "type": "MouseMove", "details": "0,0"}]}
- ✓slowest request · 9 clips one at a time, each from its first attempt to its last (retries included), median 4.23 s, the first (cold) 4.48 s
- ✓43 clips one at a time · grading's request loop (validate.py run()) on 8 copies of the public clip: 33.9 s on the server the smoke request warmed up, 182.1 s for 43 (projected from 8 of 43 requests at concurrency 1), plus 0.2 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
The agent's last message before its session ended.
Submitted at 10:49 UTC — ~4.5 hours ahead of the 15:30 deadline.
Final submission summary
What's in /workspace/output (35 files, 342 MB):
serve.sh— offline wheel install (pip-first, zip-extraction fallback) into /tmp, then servesserver.py/idmcore.py— inference pipelinemodel/keynet.pt— TransitionNet + GlyphNet with calibrated thresholds incfgwheels/— 14 unmodified cp312 PyPI wheelsevidence/— full provenance: generator, relabel, training and calibration logs, DATA_MANIFEST.mdarchitecture.json— components, corpora, evidence file lists
Architecture (no pretrained base, no VLM):
| Action | Method | Example-clip F1 |
|---|---|---|
| MouseMove | classical cursor-sprite tracker (blob pairing/chaining) | 1.00 (9/9) |
| MouseScroll | tile-parallax detector, per-frame sign emission | 0.67 |
| MouseClick | TransitionNet CNN (diff stack + cursor crop) | 0.50 |
| KeyPress | TransitionNet key-presence + GlyphNet 171-class identity | 0.00 |
Training: 2365 synthetic clips self-generated via Xvfb + real Linux apps + XTest injection + ffmpeg capture, GT re-derived with semantics exactly matching the eval's extract_mouse_gt. All model/threshold selection on held-out synthetic sessions — p-doom/idm-eval was never downloaded, and the single permitted example clip was used only for qualitative checks and local scoring.
Selfcheck (1 of 4 uses): all gates passed with wide margins — startup 25.4s/300s, per-request ~4.2s/300s, projected 43-clip batch 182s/3600s, 0 failed requests. The obvious weak spot is KeyPress on real desktop footage (domain gap from synthetic), which the per-frame thresholds trade off against precision, but with the deadline met, ~4h buffer, and a passing infrastructure check, this was the submission to lock in.