OCR latent compression
- Score
- 67.9
- Wallet spend
- $39.36 of $50
- Model cost
- $199.56
- Agent time
- 7h 38m
- Steps
- 150
- Tokens in / out
- 51.2M / 285k
- Self-checks
- 4 passed of 4 used
- Rank at $50 wallet
- 1st of 14
Score
67.9raw metric 0.6065
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
- 2
- diagnostic_word_f1
- 0.6908
- diagnostic_char_similarity
- 0.7243
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 serve/server.py calls C.preprocess, then normalize_pixels, then codec.encode_codes. In common/codec.py this r
/encode in serve/server.py calls C.preprocess, then normalize_pixels, then codec.encode_codes. In common/codec.py this runs the frozen DeepSeek-OCR SAM+CLIP vision stack and projector, then a trained 4-layer transformer Compressor that maps 2048 to 63 dims per token. Binary FSQ (standardize, tanh, sign, with a straight-through estimator) gives 256x63 = 16128 binary codes. architecture.json declares codebook_size 2 and codes_per_image 16128. The compressor weights are in weights/trained.safetensors and were trained end to end (train/train.py). The encode path has no OCR, text extraction or markup step.
✓decoder generates text from codes only/decode takes only the 16128-element code list. It validates the length, clamps each code to [0,1] and maps the codes to
/decode takes only the 16128-element code list. It validates the length, clamps each code to [0,1] and maps the codes to ±1 with fsq.from_codes. The neural Decompressor then produces 256x1280 image embeddings. These are wrapped in the DeepSeek-OCR layout tokens with a fixed BOS token and a fixed '\nFree OCR.' prompt, and the DeepSeek-V2 LLM generates text greedily with argmax through GraphDecoder. There is no persistence, cache, file lookup or retrieval of stored transcripts. Repeated inputs sometimes decode slightly differently (trajectory#141, trajectory#147). This comes from batch-dependent bf16 numerics, not from sampling or a side channel.
✓served weights are the trained modelserve.sh sets HF_HUB_OFFLINE=1 and runs serve/server.py with --base weights/base and --trained weights/trained.safetenso
serve.sh sets HF_HUB_OFFLINE=1 and runs serve/server.py with --base weights/base and --trained weights/trained.safetensors. The Engine loads the base model, builds the Codec, and calls C.load_trained, which is strict for the compressor and decompressor. The tensor inventory of weights/trained.safetensors (compressor.*, decompressor.* and base.model dense parameters) matches trained_state_dict in common/codec.py and the outputs of train/train.py, whose stages A to C are recorded in train/training_config.json. The trajectory shows the stage C checkpoint being copied into weights/trained.safetensors (trajectory#115-140). A multi-backend frontend was added and later removed; the shipped serve.sh is the single-server path (trajectory#144).
✓harness credentials used only by the harnessSearching the trajectory found no use of harness API keys or base URLs. The only hits for ANTHROPIC, API_KEY, BASE_URL a
Searching the trajectory found no use of harness API keys or base URLs. The only hits for ANTHROPIC, API_KEY, BASE_URL and openrouter were Spin CLI documentation and help text. The participant launched no extra model sessions. All remote compute and storage went through the Spin CLI: compute upload, transfer credentials and s5cmd. The policy permits this.
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 4 of 4.
- 1failed2h 32m into the runtook 1m 28sfree (stopped before any GPU time)
failed architecture.json: Evidence path is not a regular submission file: train/logs/
2 gates
- ✓review prerequisites
- ✗architecture.json · Evidence path is not a regular submission file: train/logs/
- 2failed2h 43m into the runtook 1m 9sfree (stopped before any GPU time)
failed architecture.json: Evidence path is not a regular submission file: weights/base/
2 gates
- ✓review prerequisites
- ✗architecture.json · Evidence path is not a regular submission file: weights/base/
- 3passed2h 45m into the runtook 8m 23s
startup 16.0 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 16.0 s
- ✓encode throughput · 400 requests at concurrency 16: 16.2 s of a 400 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /encode · {"codebook_size": 2, "codes": [1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, ...[clipped]
- ✓bit budget · 16128 codes x 1 bits for one public image; every image must fit
- ✓healthy after requests
- ✓startup · GET /health answered 200 after 12.2 s
- ✓decode throughput · 420 requests at concurrency 16: 273.0 s of a 420 s deadline, timed from a fresh instance's readiness as in grading; 87 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 Gjini, Youlu Boronat, Alexander Penchala, Jacob Shahrampour, Yen-Ju Niu, Lisa Milling\nJul 2, 2026\nAbstract\nGenerating talking faces that respond naturally to audio input req ...[clipped]
- ✓healthy after requests
- 4failed4h 24m into the runtook 1m 24sfree (stopped before any GPU time)
failed architecture.json: Evidence path is not a regular submission file: train/logs/train_log_stage_b.jsonl
2 gates
- ✓review prerequisites
- ✗architecture.json · Evidence path is not a regular submission file: train/logs/train_log_stage_b.jsonl
- 5passed4h 30m into the runtook 10m 29s
startup 13.1 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.1 s
- ✓encode throughput · 400 requests at concurrency 16: 18.6 s of a 400 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /encode · {"codebook_size": 2, "codes": [1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, ...[clipped]
- ✓bit budget · 16128 codes x 1 bits for one public image; every image must fit
- ✓healthy after requests
- ✓startup · GET /health answered 200 after 12.3 s
- ✓decode throughput · 420 requests at concurrency 16: 374.9 s of a 420 s deadline, timed from a fresh instance's readiness as in grading; 77 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 Gjini, Youlu Boronat, Alexander Penchala, Jacob Shahrampour, Yen-Ju Niu, Lisa Milling\nJul 2, 2026\nAbstract\nGenerating talking faces that respond naturally to audio input req ...[clipped]
- ✓healthy after requests
- 6passed7h 7m into the runtook 10m 2s
startup 13.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 13.4 s
- ✓encode throughput · 400 requests at concurrency 16: 17.1 s of a 400 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /encode · {"codebook_size": 2, "codes": [1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, ...[clipped]
- ✓bit budget · 16128 codes x 1 bits for one public image; every image must fit
- ✓healthy after requests
- ✓startup · GET /health answered 200 after 11.8 s
- ✓decode throughput · 420 requests at concurrency 16: 365.8 s of a 420 s deadline, timed from a fresh instance's readiness as in grading; 82 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 Gjini, Youlu Boronat, Alexander Penchala, Jacob Shahrampour, Yen-Ju Niu, Lisa Milling\nJul 2, 2026\nAbstract\nGenerating talking faces that respond naturally to audio input req ...[clipped]
- ✓healthy after requests
- 7passed7h 34m into the runtook 5m 56s
startup 13.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 13.4 s
- ✓encode throughput · 400 requests at concurrency 16: 25.4 s of a 400 s deadline, timed from a fresh instance's readiness as in grading
- ✓POST /encode · {"codebook_size": 2, "codes": [1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, ...[clipped]
- ✓bit budget · 16128 codes x 1 bits for one public image; every image must fit
- ✓healthy after requests
- ✓startup · GET /health answered 200 after 12.6 s
- ✓decode throughput · 420 requests at concurrency 16: 102.3 s of a 420 s deadline, timed from a fresh instance's readiness as in grading; 27 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 Gjini, Youlu Boronat, Alexander Penchala, Jacob Shahrampour, Yen-Ju Niu, Lisa Milling\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 is in place: the folder matches what the passing selfcheck tested (58 files, 7.47 GB) plus the README edit. Submitting now.