← all trials
Trial T02 · round 2 · 12 models tried

Access-log parser: gpt-5-mini did it for $0.0048.

Parse a real log format: optional fields, escaped quotes, malformed lines. A model passes this trial only when every test goes green — retries are included in the price, and the clock runs until done.

Cheapest to green
gpt-5-mini$0.0048 · x1
Fastest to green
gpt-5.47s · $0.0073
ModelVerdictTriesTimeCost to doneTokens
gpt-5-miniGREENx121s$0.00481319
claude-haiku-4-5GREENx212s$0.00511828
gpt-4.1GREENx18s$0.0070577
gpt-5.4GREENx17s$0.0073627
claude-opus-4-8GREENx110s$0.0107909
gpt-5.1GREENx112s$0.0107853
gpt-5.5GREENx19s$0.0135589
gpt-5.2GREENx119s$0.01661247
claude-sonnet-5GREENx112s$0.01691358
gpt-5GREENx122s$0.01991436
claude-sonnet-4-6GREENx229s$0.02863082
claude-fable-5REFUSEDx628s$0.00682186
time to green — this trialfull width = 29s
gpt-5.47s · $0.0073
gpt-4.18s · $0.0070
gpt-5.59s · $0.0135
claude-opus-4-810s · $0.0107
claude-haiku-4-512s · $0.0051
gpt-5.112s · $0.0107
claude-sonnet-512s · $0.0169
gpt-5.219s · $0.0166
gpt-5-mini21s · $0.0048
gpt-522s · $0.0199
claude-sonnet-4-629s · $0.0286
claude-fable-528s · $0.0068 · REFUSED

Green row = cheapest to done · blue time = fastest to done. REFUSED = the model declined the task (a failure mode token prices never show). claude-fable-5's line is high-variance: follow-up probes saw it stochastically refuse benign coding prompts it had previously attempted. One trial per model per round; replies capped at 2,048 output tokens uniformly. Costs metered per session by cerver.

THE EXACT PROMPT EVERY MODEL RECEIVED
Write `solution.py` with a function `parse_log(line: str)` parsing lines like:

  2026-07-01T12:03:44Z 200 GET /api/users?id=7 12.4ms ua="Mozilla/5.0"

Return a dict {ts, status:int, method, path, latency_ms:float|None, ua:str|None}
Rules:
- methods other than GET/POST/PUT/DELETE/PATCH → return None
- latency field may be missing entirely → latency_ms None
- ua is optional; it may contain escaped quotes (\") inside → unescape them
- malformed lines (missing ts/status/method/path) → None
Return the COMPLETE `solution.py` in one ```python block, nothing else.
THE TESTS — RUN THEM YOURSELF
from solution import parse_log

def test_basic():
    e = parse_log('2026-07-01T12:03:44Z 200 GET /api/users?id=7 12.4ms ua="Mozilla/5.0"')
    assert e == {"ts": "2026-07-01T12:03:44Z", "status": 200, "method": "GET",
                 "path": "/api/users?id=7", "latency_ms": 12.4, "ua": "Mozilla/5.0"}

def test_unknown_method():
    assert parse_log('2026-07-01T12:03:44Z 200 BREW /tea 1ms ua="x"') is None

def test_missing_latency():
    e = parse_log('2026-07-01T12:03:44Z 404 POST /x ua="y"')
    assert e["latency_ms"] is None and e["status"] == 404

def test_no_ua():
    e = parse_log('2026-07-01T12:03:44Z 200 GET /x 3.0ms')
    assert e["ua"] is None

def test_escaped_quotes():
    e = parse_log('2026-07-01T12:03:44Z 200 GET /x 1ms ua="Mozilla \\"5.0\\" custom"')
    assert e["ua"] == 'Mozilla "5.0" custom'

def test_malformed():
    assert parse_log('garbage') is None
    assert parse_log('2026-07-01T12:03:44Z GET /x') is None
Make your own trial
your task, your tests, any model — free tier, no card