OCR latent compression
- Score
- 4.8
- Wallet spend
- $41.88 of $200
- Model cost
- $31.69
- Agent time
- 4h 9m
- Steps
- 188
- Tokens in / out
- 47.8M / 230k
- Self-checks
- 1 passed of 1 used
- Rank at $200 wallet
- 9th of 14
Score
4.8raw metric 0.04252
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
- 256
- diagnostic_word_f1
- 0.0700
- diagnostic_char_similarity
- 0.1986
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 codesIn server.py, encode_image runs a learned CNN strip encoder over the pixels (NET.enc, then to_s, both defined in model.p
In server.py, encode_image runs a learned CNN strip encoder over the pixels (NET.enc, then to_s, both defined in model.py and stored in codec.pt). It applies a sigmoid, scales by 15 and rounds to 16 levels in each of 2 groups, then packs the result into one byte per step (codebook_size 256 in architecture.json). That gives 10 strips x 192 codes = 1920 discrete codes, or 15360 bits, which is under the budget. The codes come from learned encoder weights, not from a hand-written OCR or text-lookup path.
✓decoder generates text from codes onlydecode_codes in server.py calls NET.decode_packed (model.py) on the packed code array only. That runs embed(16,64), mix,
decode_codes in server.py calls NET.decode_packed (model.py) on the packed code array only. That runs embed(16,64), mix, a Conv1d decoder and a head, then greedy argmax with CTC collapse. Decoding uses no image, per-request cache, file, external service or text side channel.
✓served weights are the trained modelserve.sh runs server.py, which loads codec.pt into the same Codec architecture defined in model.py. The tensor inventory
serve.sh runs server.py, which loads codec.pt into the same Codec architecture defined in model.py. The tensor inventory of codec.pt matches model.py, including head [75,160]. Training starts from scratch (base_model none) with CTC on synthetic rendered strips, in the chain train.py -> final.pt -> train_adapt.py -> known.pt -> train_contrast.py -> contrast.pt. training_log.txt records the contrast stage being saved at step 300. At trajectory#174, contrast.pt was copied to /workspace/output/codec.pt, and at trajectory#182 the sha256 hashes matched. The dense.pt experiment was abandoned and never shipped.
✓harness credentials used only by the harnessNo harness API key, base URL or model-provider credential was read or used by the participant. Searches for API_KEY, BAS
No harness API key, base URL or model-provider credential was read or used by the participant. Searches for API_KEY, BASE_URL, XAI and OpenRouter found only Spin CLI documentation and help text. The Spin S3 session file is the participant's own compute and storage credential and is allowed. The served code makes no external calls.
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 58m into the runtook 4m 3s
startup 2.9 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 2.9 s
- ✓encode throughput · 400 requests at concurrency 16: 166.1 s of a 400 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /encode · {"codebook_size": 256, "codes": [135, 135, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 135, 134, 131, 116, 67, 84, 130, 113, 114, 82, 65, 113, 98, 80, 96, 115, 116, 115, 65, 67, 129, 130, 115, 99, 83, 100, 115, 115, 101, 99, 115, 49, 67, 129, 115, 114, 129, 82, 65, 112 ...[clipped]
- ✓bit budget · 1920 codes x 8 bits for one public image; every image must fit
- ✓healthy after requests
- ✓startup · GET /health answered 200 after 2.8 s
- ✓decode throughput · 420 requests at concurrency 16: 1.7 s of a 420 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /decode · "JiywpryrpkdWliidp JTlwfu tidwdD L IK TlrwElWrywl lrj l WDyl D Dwd Tldul ltsiTc MelMdi Firil liqiulu Bfureriait, Allexardlef Perchalla JacOb S Geueraitidg telkinu Itaces thzit Peslpdrid Pleliulrzilly iq TealHstic Faciall ruoenneuts that Convey geriuine esrrctians Furrent alpproiacMes ...[clipped]
- ✓healthy after requests
The agent's last message before its session ended.
The submission is in. /workspace/output was handed in at 2026-10-09 10:44 UTC.
The encoder is a small convolutional network that cuts a page into horizontal strips and quantizes each strip with a 2-group product code, packed into bytes. codebook_size is 256, and each image uses 1,920 codes, which is 15,360 bits, under the 16,384-bit limit. The decoder reads only those codes and emits text with a deterministic CTC head. No transcript is stored in the codes.
frontier selfcheck passed on the grading image: startup in 2.9 seconds, encode at 2.4 images per second, decode well above 1 image per second, and the bit budget held. On a 16-page diagnostic sample the official word-similarity metric was about 0.07. Sparse and medium document pages are partly readable; dense pages and most screenshots are not, because 2 KB only covers about ten visual lines and the reader was trained on synthetic text rather than real page fonts.