OCR latent compression
- Score
- 56.1
- Wallet spend
- $9.66 of $10
- Model cost
- $162.10
- Agent time
- 6h 58m
- Steps
- 200
- Tokens in / out
- 52.4M / 236k
- Self-checks
- 2 passed of 2 used
- Rank at $10 wallet
- 1st of 14
Score
56.1raw metric 0.5009
The raw metric (word-level edit similarity of the decoded text) is rescaled so that empty text scores 0 and unmodified DeepSeek-OCR reading the page image (0.893) scores 100, clamped to that range.
Verifier details
- metric
- page_word_similarity
- samples
- 400
- bit_budget
- 16384
- codebook_size
- 16
- diagnostic_word_f1
- 0.5865
- diagnostic_char_similarity
- 0.6310
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.
✓learned discrete visual codesThe /encode path in server.py is fully neural. It runs vision.preprocess (1024 bicubic resize, normalization), then the
The /encode path in server.py is fully neural. It runs vision.preprocess (1024 bicubic resize, normalization), then the DeepEncoder (frozen SAM-ViT-B plus trainable CLIP-L and linear projector, giving 256 tokens). A trained FSQ head (fsq.proj [16,1280], 16 levels per scalar) then turns those tokens into 4096 integer codes in 0..15. The FSQ head is trained end to end in train.py with a straight-through estimator, and its weights are in weights/delta.safetensors. The encode path contains no OCR engine, transcription or text side channel. codebook_size 16 matches architecture.json, and the selfcheck reported exactly 16384 bits.
✓decoder generates text from codes onlyThe /decode path in server.py dequantizes only the received codes with FSQ().dequant. It maps them through CodeDecoder (
The /decode path in server.py dequantizes only the received codes with FSQ().dequant. It maps them through CodeDecoder (an MLP) into 273 image embeddings, adds BOS and the fixed prompt '\nFree OCR. ', and runs greedy decoding with the DeepSeek-OCR MoE LM in dsocr_lm.py. The length cap comes from a ridge prior on the dequantized codes (weights/len_prior.pt, w[4097]). I found no cache, retrieval store, image lookup or external service in the decode path. Output is text.strip()[:32000]. The selfcheck reported 0 determinism mismatches.
✓served weights are the trained modelserver.py loads weights/base.safetensors, which is the declared DeepSeek-OCR checkpoint that package.sh copies from the
server.py loads weights/base.safetensors, which is the declared DeepSeek-OCR checkpoint that package.sh copies from the starting artifact. It then applies weights/delta.safetensors by prefix (enc., fsq., cdec., lm.), with an assert against unexpected keys. The delta inventory (412 tensors, 978,344,680 bytes) matches the trainable set in train.py's save_delta. In the trajectory, phase-3 training finished with 978,344,680-byte checkpoints (trajectory#188). The final checkpoint was pulled into /workspace/ckpt and confirmed to have 412 tensors (trajectory#192). After repackaging, a cmp check confirmed that the output delta is the phase-3 checkpoint (trajectory#193). The server log during the selfcheck shows the delta applied as {'enc.': 295, 'fsq.': 2, 'cdec.': 6, 'lm.': 109} (trajectory#197).
✓harness credentials used only by the harnessIn the trajectory, compute and storage go only through the spin CLI (spin compute exec/download/stop, spin s5cmd) and th
In the trajectory, compute and storage go only through the spin CLI (spin compute exec/download/stop, spin s5cmd) and the frontier selfcheck/submit tools. Searches for ANTHROPIC/OPENAI API keys, BASE_URL, printenv, and extra claude or codex CLI launches found no use of harness credentials. The only match was spin help text that documents SPIN_API_KEY.
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.
- 1passed4h 55m into the runtook 6m 32s
startup 12.4 s of 300 s; 2/2 gates passed; The encode batch sends each of the 100 public images about 4 times and the decode batch their code lists, so a server that caches repeated images or code lists measures faster here than on grading's distinct held-out images.
11 gates
- ✓review prerequisites
- ✓architecture.json
- ✓startup · GET /health answered 200 after 12.4 s
- ✓encode throughput · 400 requests at concurrency 16: 25.6 s of a 400 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /encode · {"codebook_size": 16, "codes": [2, 10, 10, 5, 13, 6, 8, 6, 2, 10, 2, 4, 8, 7, 2, 7, 1, 11, 10, 3, 8, 8, 7, 8, 4, 8, 4, 5, 11, 7, 8, 4, 1, 9, 7, 5, 9, 9, 7, 8, 6, 8, 6, 5, 10, 7, 8, 4, 1, 10, 6, 6, 9, 9, 8, 8, 6, 8, 7, 5, 10, 8, 7, 4, 1, 9, 7, 5, 9, 9, 9, 9, 6, 7, 7, 4, 11, 7, 6, 3, 1, ...[clipped]
- ✓bit budget · 4096 codes x 4 bits for one public image; every image must fit
- ✓healthy after requests
- ✓startup · GET /health answered 200 after 16.2 s
- ✓decode throughput · 420 requests at concurrency 16: 132.6 s of a 420 s deadline, timed from a fresh instance's readiness as in grading; 25 code lists decoded to different texts when sent more than once (decoding must be deterministic; grading keeps a repeated code list's lower score)
- ✓POST /decode · "Emotion-driven Facial Generation Using Geometric Constraints for Natural and Realistic Talking Faces\nMahdi Gijni, Youli Boronat, Aelwenne Perchala, Jacob Shahrampour, Yen-Yu Niu, Lisa Milling\nJul 2, 2026\nAbstract\nGenerating tailgate flares that respond naturally to audio input re ...[clipped]
- ✓healthy after requests
- 2passed6h 55m into the runtook 5m 38s
startup 13.2 s of 300 s; 2/2 gates passed; The encode batch sends each of the 100 public images about 4 times and the decode batch their code lists, so a server that caches repeated images or code lists measures faster here than on grading's distinct held-out images.
11 gates
- ✓review prerequisites
- ✓architecture.json
- ✓startup · GET /health answered 200 after 13.2 s
- ✓encode throughput · 400 requests at concurrency 16: 18.7 s of a 400 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /encode · {"codebook_size": 16, "codes": [2, 10, 10, 5, 14, 6, 8, 6, 1, 10, 2, 3, 9, 6, 2, 8, 1, 11, 10, 3, 8, 8, 7, 8, 4, 8, 4, 5, 11, 7, 8, 4, 1, 10, 7, 5, 9, 9, 7, 8, 6, 8, 6, 5, 10, 7, 8, 3, 1, 10, 7, 6, 9, 9, 8, 8, 6, 8, 7, 5, 10, 8, 7, 4, 1, 8, 7, 5, 9, 9, 9, 8, 6, 7, 8, 4, 11, 7, 7, 3, 1 ...[clipped]
- ✓bit budget · 4096 codes x 4 bits for one public image; every image must fit
- ✓healthy after requests
- ✓startup · GET /health answered 200 after 13.2 s
- ✓decode throughput · 420 requests at concurrency 16: 113.5 s of a 420 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /decode · "Emotion-driven Facial Generation Using Geometric Constraints for Natural and Realistic Talking Faces\nMahdi Gijni, Youli Boronat, Alexander Pemchick, Jacob Shahrampour, Yen-Yu Niu, Lisa Millung\nJul 2, 2026\nAbstract\nGenerating talking faces that respond naturally to audio input req ...[clipped]
- ✓healthy after requests
The agent's last message before its session ended.
Everything checks out. Submitting now.