OCR latent compression
- Score
- 6.6
- Wallet spend
- $4.42 of $10
- Model cost
- $15.38
- Agent time
- 7h 50m
- Steps
- 293
- Tokens in / out
- 28.1M / 312k
- Self-checks
- 2 passed of 3 used
- Rank at $10 wallet
- 10th of 14
Score
6.6raw metric 0.05858
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
- 65536
- diagnostic_word_f1
- 0.1669
- diagnostic_char_similarity
- 0.2583
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 served /encode path in server.py preprocesses the image with vision.preprocess_pil, then calls model.encode. model.e
The served /encode path in server.py preprocesses the image with vision.preprocess_pil, then calls model.encode. model.encode runs the DeepEncoder frontend (SAM ViT-B + CLIP-L, fine-tuned CLIP) and then FSQQuantizer.encode_codes in quant.py. That function applies a learned MLP, tanh, floors to 4 levels over 32 channels and packs base-4 digits in groups of 8 into indices in [0, 65536). The result is 1024 codes per image. No OCR engine, text generation, text tokenizer or lookup runs inside encode. training_code/ocr_text.py is only a metric helper. The codes are therefore learned, discrete and visual.
✓decoder generates text from codes onlyIn server.py, /decode checks that it received exactly 1024 codes within the codebook range, then calls model.decode. mod
In server.py, /decode checks that it received exactly 1024 codes within the codebook range, then calls model.decode. model.decode unpacks the codes, maps them through the learned dequant MLP (quant.py decode_embeds) to prefix embeddings, and runs greedy Qwen2.5-0.5B lm.generate with inputs_embeds (do_sample=False, num_beams=1). There is no cache, persisted state, side channel or retrieval of the original image or text. Batches are padded by cyclically repeating the request's own rows, so each output depends only on its own codes.
✓served weights are the trained modelserve.sh starts server.py --dir weights. server.py loads weights/qwen (HF save), weights/frontend.safetensors (strict fo
serve.sh starts server.py --dir weights. server.py loads weights/qwen (HF save), weights/frontend.safetensors (strict for SAM, non-strict for CLIP) and weights/fsq.safetensors (load_state_dict). training_code/package.py converts the training checkpoint (fsq, lm, frontend_clip/sam state) into exactly these files. finalize.sh packages ckptB3/best.pt, which training_config.json lists as the final stage-B3 checkpoint. The tensor inventories match the module definitions: fsq keys match quant.py, and the frontend has sam_model.* and vision_model.* keys through layer 23. The codebook size of 65536 in architecture.json matches the 4^8 packing. DATA.md and architecture.json declare the starting checkpoints (DeepSeek-OCR @9f30c71f, Qwen2.5-0.5B @060db649) with HF download commands. The trajectory shows the packaged weights placed into the output folder (trajectory#266). The late server.py change at trajectory#281 only alters batch-size and token-limit constants, not the weights.
✓harness credentials used only by the harnessThe trajectory shows no reads or uses of the harness API key or base URL, no Anthropic SDK or extra model-CLI sessions,
The trajectory shows no reads or uses of the harness API key or base URL, no Anthropic SDK or extra model-CLI sessions, and no external LLM calls. Object-storage transfers used credentials issued by the Spin tool itself through `spin transfer credentials` (trajectory#58, trajectory#59) and were used by training_code/r2up.py for checkpoint transfer, which is permitted. curl was used only for huggingface.co downloads and localhost health checks. The shipped code contains no credential use.
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.
- 1failed7h 13m into the runtook 9m 20s
startup 7.4 s of 300 s; 1/2 gates passed; failed decode throughput: Batch exceeded 420s deadline; score is zero (177 of 420 requests answered in 420.0 s at concurrency 16); The encode batch sends each of the 100 public images about 4 times and the decode batch their code lists, so a server t
9 gates
- ✓review prerequisites
- ✓architecture.json
- ✓startup · GET /health answered 200 after 7.4 s
- ✓encode throughput · 400 requests at concurrency 16: 18.3 s of a 400 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /encode · {"codebook_size": 65536, "codes": [11769, 12515, 62208, 31967, 16241, 31171, 5938, 46659, 16048, 32711, 5538, 45319, 14257, 48847, 18482, 47711, 14320, 48523, 23091, 32581, 14064, 48523, 18995, 31557, 14064, 31951, 19315, 15178, 9969, 7371, 17991, 11215, 5104, 28046, 6451, 32675, 1022 ...[clipped]
- ✓bit budget · 1024 codes x 16 bits for one public image; every image must fit
- ✓healthy after requests
- ✓startup · GET /health answered 200 after 9.6 s
- ✗decode throughput · Batch exceeded 420s deadline; score is zero (177 of 420 requests answered in 420.0 s at concurrency 16)
- 2passed7h 31m into the runtook 8m 27s
startup 8.5 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 8.5 s
- ✓encode throughput · 400 requests at concurrency 16: 8.8 s of a 400 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /encode · {"codebook_size": 65536, "codes": [11769, 12515, 62208, 31967, 16241, 31171, 5938, 46659, 16048, 32711, 5538, 45319, 14257, 48847, 18482, 47711, 14320, 48523, 23091, 32581, 14064, 48523, 18995, 31557, 14064, 31951, 19315, 15178, 9969, 7371, 17991, 11215, 5104, 28046, 6451, 32675, 1022 ...[clipped]
- ✓bit budget · 1024 codes x 16 bits for one public image; every image must fit
- ✓healthy after requests
- ✓startup · GET /health answered 200 after 8.7 s
- ✓decode throughput · 420 requests at concurrency 16: 391.0 s of a 420 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /decode · "Implicit Generation for Neural Transducers\nMahdi Gjini, Youlu Boronat, Alexander Penchala, Jacob Shahrampour, Yen-Ju Iyer, Lisa Milling\nJul 16, 2026\nAbstract\nBy leveraging the affine structure of the Volterra model, we construct a manageable transform for the joint distribution o ...[clipped]
- ✓healthy after requests
- 3passed7h 43m into the runtook 6m 13s
startup 8.8 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 8.8 s
- ✓encode throughput · 400 requests at concurrency 16: 17.9 s of a 400 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /encode · {"codebook_size": 65536, "codes": [11769, 12515, 62208, 31967, 16241, 31171, 5938, 46659, 16048, 32711, 5538, 45319, 14257, 48847, 18482, 47711, 14320, 48523, 23091, 32581, 14064, 48523, 18995, 31557, 14064, 31951, 19315, 15178, 9969, 7371, 17991, 11215, 5104, 28046, 6451, 32675, 1022 ...[clipped]
- ✓bit budget · 1024 codes x 16 bits for one public image; every image must fit
- ✓healthy after requests
- ✓startup · GET /health answered 200 after 7.4 s
- ✓decode throughput · 420 requests at concurrency 16: 244.6 s of a 420 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /decode · "Implicit Generation for Neural Transducers\nMahdi Gjini, Youlu Boronat, Alexander Penchala, Jacob Shahrampour, Yen-Ju Iyer, Lisa Milling\nJul 16, 2026\nAbstract\nBy leveraging the affine structure of the Volterra model, we construct a manageable transform for the joint distribution o ...[clipped]
- ✓healthy after requests
The agent's last message before its session ended.
Selfcheck #3 PASSED with healthy margins on every gate: startup 7-9s (limit 300s), encode 22.3 img/s, decode 1.717 img/s (72% to spare), bit budget exactly 16384, codebook 65536, response checks and health checks all green — no thin-margin warning. The tree is exactly what was just checked. Submitting now (11:30, 30 min before lease end):