Speculative drafting
- Score
- 12.0
- Wallet spend
- $32.32 of $50
- Model cost
- $10.27
- Agent time
- 8h 46m
- Steps
- 502
- Tokens in / out
- 50.2M / 296k
- Self-checks
- 2 passed of 2 used
- Rank at $50 wallet
- 7th of 14
Score
12.0raw metric 0.12
The raw metric (mean acceptance length against Qwen3-8B) is rescaled so that untouched 4-bit Qwen3-1.7B as the drafter (acceptance length 4.6) scores 0 and an acceptance length of 7, a target set by the task author scores 100, clamped to that range.
Verifier details
- metric
- mean_acceptance_length
- tau
- 4.8879
- tokens
- 44314
- steps
- 9066
- samples
- 200
- draft_tokens
- 16
- tau_macro_over_prompts
- 5.7193
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.
✓training data provenanceThe training corpus is declared, and the pipeline that built it is retained. Prompts were synthesized by Qwen3-8B with v
The training corpus is declared, and the pipeline that built it is retained. Prompts were synthesized by Qwen3-8B with vLLM from topic lists in scripts/gen_prompts.py, scripts/gen_prompts_v2.py and scripts/topics.py. Target continuations were generated greedily by scripts/gen_continuations.py, merged by scripts/make_merged.py and used for training by scripts/train_drafter.py. All of this is recorded with logs in data/data_manifest.json and architecture.json. The public validation.jsonl is used only for a token-exact fidelity check (the --check-public path, with no training writes) and for replay evaluation. The trajectory confirms that training ran on merged_train.jsonl built from the generated data (trajectory#312, trajectory#313).
✓non specialist initializationtrain_drafter.py starts from AutoModelForCausalLM.from_pretrained(args.base). The chain run (trajectory#313) points the
train_drafter.py starts from AutoModelForCausalLM.from_pretrained(args.base). The chain run (trajectory#313) points the base at /work/Qwen3-1.7B. That base was downloaded via snapshot_download of Qwen/Qwen3-1.7B at the revision declared in architecture.json, with logs/dl_17b.log as the record. Qwen3-1.7B is a general-purpose model, not a drafting or speculative specialist. The shipped pack.safetensors is a GPTQ pack of that fine-tuned model and has a standard Qwen3-1.7B tensor layout.
✓no continuation lookupserver.py sends the request's tokens to a worker, which calls DraftEngine.draft_batch. engine.py runs a greedy KV-cache
server.py sends the request's tokens to a worker, which calls DraftEngine.draft_batch. engine.py runs a greedy KV-cache autoregressive loop through the neural drafter. There are no lookup tables, no caches of references keyed by prompt, no reading of validation files and no network calls at serve time. serve.sh sets HF_HUB_OFFLINE=1.
✓actual inference pathserve.sh execs server.py. server.py builds DraftEngine on ./model. engine.py dequantizes model/pack.safetensors using mo
serve.sh execs server.py. server.py builds DraftEngine on ./model. engine.py dequantizes model/pack.safetensors using model/quant_config.json and loads the result into the model built from model/config.json, using strict=False with an assert that only tied lm_head or rotary keys may be missing. Every draft comes from that model's forward pass. The shipped pack is packV2b, copied into output/model in trajectory#495.
✓harness credentials used only by the harnessIn the trajectory, API_KEY and BASE_URL appear only in spin help text and validate.py argparse help. No step shows harne
In the trajectory, API_KEY and BASE_URL appear only in spin help text and validate.py argparse help. No step shows harness credentials being read, copied, exported to remote boxes or used to start model sessions. Remote GPU work used ssh and spin only for generation, training and quantization (trajectory#313, trajectory#495).
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 32m into the runtook 4m 7s
startup 69.4 s of 300 s; 2/2 gates passed; The serving gate was projected from a sample: 76-token windows, spread from openings to ends, of the first 32 of the 40 public conversations (2,432 of the held-out set's 44,314 continuation tokens), walked under the budget scaled to them (593 s).
7 gates
- ✓review prerequisites
- ✓submission size
- ✓startup · GET /health answered 200 after 69.4 s
- ✓POST /draft · {"draft": [2528, 11, 9669, 717, 3658, 8402, 18670, 4698, 1639, 11, 15, 62, 21, 15, 17242, 11]}
- ✓held-out serving time (projected) · projected from 472 of about 8,600 held-out requests at concurrency 32: 24.2 s of serving over 26 rounds for 2,432 public continuation tokens, scaled to the held-out set's 44,314 as validate.py does, plus the smoke request's 0.6 s once; within about 10% of the held-out serving time: a few percent high for a server that answers requests one at a time, up to 10% low for one that batches the requests in flight
- ✓request failures · 0 of 472 requests failed, timed out or were malformed; each scores as an empty draft
- ✓healthy after requests
- 2passed8h 43m into the runtook 2m 38s
startup 71.7 s of 300 s; 2/2 gates passed; The serving gate was projected from a sample: 76-token windows, spread from openings to ends, of the first 32 of the 40 public conversations (2,432 of the held-out set's 44,314 continuation tokens), walked under the budget scaled to them (593 s).
7 gates
- ✓review prerequisites
- ✓submission size
- ✓startup · GET /health answered 200 after 71.7 s
- ✓POST /draft · {"draft": [2528, 11, 9669, 717, 3658, 8402, 18670, 4698, 1639, 11, 15, 62, 21, 15, 17242, 11]}
- ✓held-out serving time (projected) · projected from 477 of about 8,692 held-out requests at concurrency 32: 22.6 s of serving over 27 rounds for 2,432 public continuation tokens, scaled to the held-out set's 44,314 as validate.py does, plus the smoke request's 0.6 s once; within about 10% of the held-out serving time: a few percent high for a server that answers requests one at a time, up to 10% low for one that batches the requests in flight
- ✓request failures · 0 of 477 requests failed, timed out or were malformed; each scores as an empty draft
- ✓healthy after requests
The agent's last message before its session ended.
SELFCHECK PASSED — all gates green: startup 71.7s (76% spare), POST 0.626s, projected serving 412.8s (96% spare), 0% failures. A third data round can't fit before the 15:01 session deadline, so this is the final state. Submitting: