OCR latent compression
- Score
- 26.9
- Wallet spend
- $9.88 of $10
- Model cost
- $70.68
- Agent time
- 5h 57m
- Steps
- 308
- Tokens in / out
- 87.1M / 395k
- Self-checks
- 2 passed of 2 used
- Rank at $10 wallet
- 5th of 14
Score
26.9raw metric 0.2402
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
- 8
- diagnostic_word_f1
- 0.3696
- diagnostic_char_similarity
- 0.4045
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 codes/encode in server.py calls preprocess_bytes, then model.vision_feats, then pcaq_encode. The DeepSeek-OCR DeepEncoder in
/encode in server.py calls preprocess_bytes, then model.vision_feats, then pcaq_encode. The DeepSeek-OCR DeepEncoder in deepenc.py and codec.py turns the image pixels into one 1280-d feature per grid cell. tcodec.py's TransformCoder then projects each feature onto a learned per-layout PCA basis (tcoder.mu, basis and sd, fitted by fit_pca.py and stored in the checkpoint) and quantizes it with a fixed 8-level Lloyd-Max scalar quantizer. That gives codebook_size 8 and at most 5441 codes (16323 bits); the validation log shows max 16323 bits and none over budget. Cells are picked by a deterministic pixel-std ink mask. The encode path contains no OCR, text transcription, text tokens or DOM extraction, so the codes are learned discrete visual codes.
✓decoder generates text from codes only/decode in server.py receives only the code list. tcodec.py parses it into the layout kind, the cell mask and the coeffi
/decode in server.py receives only the code list. tcodec.py parses it into the layout kind, the cell mask and the coefficient indices. pcaq_prefix in codec.py dequantizes and reconstructs the cell features (unsent cells get the learned blank feature) and adds the image_newline and view_seperator layout tokens. The fine-tuned DeepSeek LM in lm.py then decodes greedily through engine.py's batched decoder. The engine keeps a separate KV cache and mask per request and uses a dense per-token MoE, so output does not depend on batching or on other requests. No files, environment variables, caches, request IDs or side channels carry image or text information from encode to decode. The validator's determinism recheck found 0 mismatches.
✓served weights are the trained modelserve.sh runs server.py, which loads weights/model.safetensors with strict=True into the OCRCodec pcaq structure, togeth
serve.sh runs server.py, which loads weights/model.safetensors with strict=True into the OCRCodec pcaq structure, together with weights/tokenizer.json. The weight inventory matches that structure: vision.*, lm.*, image_newline and view_seperator in BF16; tcoder basis, mu, sd, blank and levels in F32 (levels [8] match the fixed LEVELS in tcodec.py); and no unused bottleneck.* keys. In the trajectory, export.py merged the declared DeepSeek-OCR base with the trained checkpoint runs/pcaq48_best.safetensors ('loaded 116 tensors ... saved 625 tensors'). That export was validated (codebook 8, 0 failures) and copied into /workspace/output/weights/model.safetensors with s5cmd. train.py's pcaq stage trains through the same encode, parse and reconstruct path. The base model and revision are declared in architecture.json.
✓harness credentials used only by the harnessI searched the trajectory for Anthropic, OpenAI, extra Claude CLI sessions and judge-key use and found none. MLE_JUDGE_A
I searched the trajectory for Anthropic, OpenAI, extra Claude CLI sessions and judge-key use and found none. MLE_JUDGE_API_KEY appears only as argparse text in grep output of validate.py. The local validation runs used no judge key (score None). SPIN_API_KEY appears only in compute-tool documentation. Nothing in the session shows the participant using harness credentials.
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.
- 1passed5h 34m into the runtook 5m 17s
startup 7.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 7.5 s
- ✓encode throughput · 400 requests at concurrency 16: 19.3 s of a 400 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /encode · {"codebook_size": 8, "codes": [0, 7, 7, 7, 7, 7, 5, 7, 7, 6, 7, 1, 7, 7, 7, 7, 3, 6, 7, 7, 7, 7, 0, 0, 6, 3, 0, 0, 0, 0, 3, 0, 0, 6, 7, 7, 7, 7, 4, 7, 7, 7, 7, 1, 7, 7, 7, 7, 3, 6, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...[clipped]
- ✓bit budget · 5441 codes x 3 bits for one public image; every image must fit
- ✓healthy after requests
- ✓startup · GET /health answered 200 after 5.9 s
- ✓decode throughput · 420 requests at concurrency 16: 79.7 s of a 420 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /decode · "Emotion-driven Facial Emotion Using Geometric Convolution Nets for Natural and Realistic Talking Faces\nMahdi Kipin, Youlu Boronat, Alexander Krammer, Yuxin Kuchta, Yuxin Niu, Lisa Milling\n2026-10-20\nAbstract\n\nWe present a new method for the proposed naturally to audio input proc ...[clipped]
- ✓healthy after requests
- 2passed5h 55m into the runtook 5m
startup 6.6 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 6.6 s
- ✓encode throughput · 400 requests at concurrency 16: 13.8 s of a 400 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /encode · {"codebook_size": 8, "codes": [0, 7, 7, 7, 7, 7, 5, 7, 7, 6, 7, 1, 7, 7, 7, 7, 3, 6, 7, 7, 7, 7, 0, 0, 6, 3, 0, 0, 0, 0, 3, 0, 0, 6, 7, 7, 7, 7, 4, 7, 7, 7, 7, 1, 7, 7, 7, 7, 3, 6, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...[clipped]
- ✓bit budget · 5441 codes x 3 bits for one public image; every image must fit
- ✓healthy after requests
- ✓startup · GET /health answered 200 after 7.7 s
- ✓decode throughput · 420 requests at concurrency 16: 87.1 s of a 420 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /decode · "Emotion-driven Facial Emotion Using Geometric Convolution Nets for Natural and Realistic Talking Faces\nMahdi Kipin, Youlu Boronat, Alexander Krammer, Yuxin Kuchta, Yuxin Niu, Lisa Milling\n2026-10-20\nAbstract\n\nWe present a new method for the proposed naturally to audio input proc ...[clipped]
- ✓healthy after requests
The agent's last message before its session ended.
The final self-check passed on the exact folder I'm submitting: startup 7.7 s, decode 4.8 img/s, 16,323-bit maximum. Submitting.