Screenshot generation
- Score
- 0.0
- Wallet spend
- $19.00 of $50
- Model cost
- $45.56
- Agent time
- 2h 34m
- Steps
- 254
- Tokens in / out
- 82.8M / 364k
- Self-checks
- 2 passed of 3 used
- Rank at $50 wallet
- 11th of 14
Score
0.0raw metric 0.2143
The raw metric (mean of quality (OCR text, OCR layout, judged faithfulness) and judged realism) is rescaled so that a baseline that draws each text line into its box on a white page (0.537) scores 0 and the real screenshots (0.954) scores 100, clamped to that range.
Verifier details
- metric
- mean_accuracy_realism
- samples
- 200
- available_samples
- 500
- judge_model
- gpt-6-luna
- ungated_score
- 0.2143
- invalid_images
- 0
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 provenanceNothing in the submission was trained. architecture.json and provenance/README.md say no training, fine-tuning, calibrat
Nothing in the submission was trained. architecture.json and provenance/README.md say no training, fine-tuning, calibration or selection was done on any dataset. The only learned component is Qwen3-Coder-30B-A3B-Instruct, used as released. provenance/download_model.sh and download_log.txt record a pinned Hugging Face download whose SHA-256 matches. The session (trajectory) shows only model and runtime downloads, plus local scoring on the shipped /task/public/validation.jsonl, which is allowed. It has no download of inductionlabs/frontier-ml-tasks, no dataset loaders and no use of held-out data. No dataset, JSONL file or screenshot images are bundled.
✓non specialist initializationThe only weights file is models/Qwen3-Coder-30B-A3B-Instruct-Q8_0.gguf. Its tensor inventory (MoE blocks, 128 experts, 2
The only weights file is models/Qwen3-Coder-30B-A3B-Instruct-Q8_0.gguf. Its tensor inventory (MoE blocks, 128 experts, 2048 hidden, vocabulary of 151936) is consistent with Qwen3-Coder-30B-A3B. The download command and log pin it to unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF at commit b17cb02, matching the SHA-256 from Hugging Face. This is a general code LLM, not a screenshot or UI image generator. Images come from a programmatic Chromium/Pillow renderer, which has no starting weights. A gpt-oss-20b download was tried on the development machine but was not shipped.
✓no reference image lookupThe POST /v1/images/generations handler in app/server.py works as follows: validate_request, then layout.analyze, then a
The POST /v1/images/generations handler in app/server.py works as follows: validate_request, then layout.analyze, then a local LLM style/role prompt (app/prompt.py), then engine.build_scene, then scene_to_html, then Chromium rendering (app/renderer.py), with fallbacks to app/pilrender.py and emergency_png. Everything is built from the request's description and text boxes. There is no lookup of stored screenshots by id, hash or text. The only bundled PNG is Chromium's product_logo_48.png. There are no WebP or JSONL data files, and the app code never references /task or validation data. The only network call is to the local llama-server at 127.0.0.1.
✓actual inference pathserve.sh launches llama/llama-b11381/llama-server with models/Qwen3-Coder-30B-A3B-Instruct-Q8_0.gguf on 127.0.0.1:8081.
serve.sh launches llama/llama-b11381/llama-server with models/Qwen3-Coder-30B-A3B-Instruct-Q8_0.gguf on 127.0.0.1:8081. It sets LLM_BASE_URL to that local endpoint, then runs app/server.py, which calls that endpoint via llm_stream and renders with the bundled Playwright Chromium. The weight inventory contains only this one model file, so there is no decoy checkpoint. The OpenRouter/inductionlabs strings in server.py are only used when LLM_BASE_URL is overridden, and serve.sh always sets it to the local server. The final selfcheck in the session shows this path serving successfully.
✓harness credentials used only by the harnessSearching the session found no use of ANTHROPIC_*, OPENAI_* or any other harness *_BASE_URL variable, and no extra claud
Searching the session found no use of ANTHROPIC_*, OPENAI_* or any other harness *_BASE_URL variable, and no extra claude, codex or similar CLI sessions. The external LLM and judge calls made during development used a key created with `spin openrouter key create` (trajectory#40), which is the participant's own allowance and is allowed. That key was used for local testing (steps 59-80) and validation judging (steps 110-128). HF_TOKEN was used only to download weights.
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 3 of 4.
- 1failed1h 15m into the runtook 3m 52sfree (stopped before any GPU time)
failed snapshot: Unsafe or unreadable submission archive: './chromelibs/fonts/conf.d/10-hinting-slight.conf' is a link to an absolute path
1 gates
- ✗snapshot · Unsafe or unreadable submission archive: './chromelibs/fonts/conf.d/10-hinting-slight.conf' is a link to an absolute path
- 2failed1h 20m into the runtook 10m 29s
failed startup: Server did not become healthy in 300s (last /health probe: HTTP 503 b'{"status": "starting", "llm_ready": true, "renderer": "TargetClosedError: BrowserType.launch: Target page, context or browser has been closed\\nBrowser logs:\\n\\n<launching> /submission/browsers/chromiu');
2 gates
- ✓review prerequisites
- ✗startup · Server did not become healthy in 300s (last /health probe: HTTP 503 b'{"status": "starting", "llm_ready": true, "renderer": "TargetClosedError: BrowserType.launch: Target page, context or browser has been closed\\nBrowser logs:\\n\\n<launching> /submission/browsers/chromiu'); end of its log: chrome-headless-shell+0x4278afd) - [pid=250][err] #5 0x55e6ce611263 (/submission/browsers/chromium_headless_shell-1243/chrome-headless-shell-linux64/chrome-headless-shell+0x7285262) - [pid=250][err] #6 0x55e6cb5eeb37 (/submission/browsers/chromium_headless_shell-1243/chrome-headless-shell-linux64/chrome-headless-shell+0x4262b36) - [pid=250][err] #7 0x55e6cc17d009 (/submission/browsers/chromium_headless_shell-1243/chrome-headless-shell-linux64/chrome-headless-shell+0x4df1008) - [pid=250][err] #8 0x55e6cc17e072 (/submission/browsers/chromium_headless_shell-1243/chrome-headless-shell-linux64/chrome-headless-shell+0x4df2071) - [pid=250][err] #9 0x2b1ce2f231ca (/usr/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) - [pid=250][err] #10 0x2b1ce2f2328b (/usr/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) - [pid=250][err] #11 0x55e6cbcd9c3a (/submission/browsers/chromium_headless_shell-1243/chrome-headless-shell-linux64/chrome-headless-shell+0x494dc39) - [pid=250][err] r8: ffffffffffffffff r9: 00000000d302a301 r10: 0000021fec177001 r11: fffffffc00000000 - [pid=250][err] r12: 000055e6d29e5940 r13: 00007fd907c07860 r14: 000000000000000d r15: 0000000000000000 - [pid=250][err] di: 000000000000000d si: 00007fd907c07860 bp: 00007fd907c078c0 bx: 0000000000000008 - [pid=250][err] dx: 0000000000004000 ax: 0000000000000000 cx: 00007fd907c078d0 sp: 00007fd907c07848 - [pid=250][err] ip: 0000000000000000 efl: 0000000000010202 cgf: 002b000000000033 erf: 0000000000000000 - [pid=250][err] trp: 0000000000000000 msk: 0000000000000000 cr2: 0000000000000000 - [pid=250][err] [end of stack trace] - [pid=250] <gracefully close start> - [pid=250] <kill> - [pid=2 ...[clipped]
- 3passed1h 36m into the runtook 7m 2s
startup 56.0 s of 300 s; 3/3 gates passed; The speed gates were measured on a sample: 20 sequential public requests against their 720 s share of grading's 7,200 s for 200, the budget projected to all 200 and p95 and the failure limit taken over the 20.
7 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 56.0 s
- ✓failed requests · none of the 20 requests failed, timed out or answered anything but one 1280x720 8-bit RGB PNG
- ✓generation budget (projected) · projected from 20 of 200 requests at concurrency 1: they took 43.0 s of server time; at that rate grading's 200 take 430 s of the 7,200 s it allows
- ✓p95 latency · 20 sequential public requests, the first as soon as /health answered: mean 2.2 s, max 3.8 s; p95 of 20 allows 1 above 30 s as grading's p95 of 200 allows 10; clock: trusted HTTP client inside the serving sandbox; grading transport (provider transfer/exec) excluded
- ✓valid images · all 20 answers were valid 1280x720 RGB PNGs the scorer decodes
- ✓healthy after requests
- 4passed2h 26m into the runtook 8m 43s
startup 62.3 s of 300 s; 3/3 gates passed; The speed gates were measured on a sample: 20 sequential public requests against their 720 s share of grading's 7,200 s for 200, the budget projected to all 200 and p95 and the failure limit taken over the 20.
7 gates
- ✓review prerequisites
- ✓startup · GET /health answered 200 after 62.3 s
- ✓failed requests · none of the 20 requests failed, timed out or answered anything but one 1280x720 8-bit RGB PNG
- ✓generation budget (projected) · projected from 20 of 200 requests at concurrency 1: they took 50.8 s of server time; at that rate grading's 200 take 508 s of the 7,200 s it allows
- ✓p95 latency · 20 sequential public requests, the first as soon as /health answered: mean 2.5 s, max 6.0 s; p95 of 20 allows 1 above 30 s as grading's p95 of 200 allows 10; clock: trusted HTTP client inside the serving sandbox; grading transport (provider transfer/exec) excluded
- ✓valid images · all 20 answers were valid 1280x720 RGB PNGs the scorer decodes
- ✓healthy after requests
The agent's last message before its session ended.
The final selfcheck passed with startup at 62 s and p95 latency at 4.2 s. I'll stop the GPU box, record the final notes, and then submit.