BOM, CRLF, embedded newlines, ragged rows, duplicate headers, leading zeros. A model passes this trial only when every test goes green — retries are included in the price, and the clock runs until done.
| Model | Verdict | Tries | Time | Cost to done | Tokens |
|---|---|---|---|---|---|
| claude-haiku-4-5 | GREEN | x1 | 8s | $0.0041 | 968 |
| gpt-5-mini | GREEN | x1 | 23s | $0.0059 | 1591 |
| gpt-5.4 | GREEN | x1 | 8s | $0.0088 | 717 |
| gpt-5.2 | GREEN | x1 | 11s | $0.0095 | 768 |
| gpt-4.1 | GREEN | x1 | 8s | $0.0103 | 795 |
| claude-opus-4-8 | GREEN | x1 | 13s | $0.0125 | 1017 |
| claude-sonnet-4-6 | GREEN | x1 | 54s | $0.0132 | 1018 |
| gpt-5.1 | GREEN | x1 | 15s | $0.0140 | 1065 |
| gpt-5.5 | GREEN | x1 | 11s | $0.0170 | 700 |
| gpt-5 | GREEN | x2 | 56s | $0.0776 | 7100 |
| claude-sonnet-5 | GREEN | x6 | 1m59s | $0.1723 | 13797 |
| claude-fable-5 | REFUSED | x6 | 28s | $0.0065 | 2083 |
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.
Write `solution.py` with `csv_to_records(text: str) -> list[dict]`: - input is CSV text; first row is the header - strip a UTF-8 BOM if present; handle CRLF and LF - quoted fields may contain commas and embedded newlines - ragged rows: pad missing cells with None; ignore extra cells - duplicate headers: second occurrence becomes "name.2", third "name.3", … - numeric coercion: values like "3", "3.5" → int/float; but values with leading zeros (e.g. "007") STAY strings; empty cell → None Return the COMPLETE `solution.py` in one ```python block, nothing else.
from solution import csv_to_records
def test_bom_and_crlf():
assert csv_to_records('id,name\r\n1,amy\r\n') == [{"id": 1, "name": "amy"}]
def test_quoted_newline_and_comma():
recs = csv_to_records('id,note\n1,"a,b\nc"\n')
assert recs == [{"id": 1, "note": "a,b\nc"}]
def test_ragged_padded():
assert csv_to_records('a,b,c\n1,2\n') == [{"a": 1, "b": 2, "c": None}]
def test_extra_cells_ignored():
assert csv_to_records('a,b\n1,2,3\n') == [{"a": 1, "b": 2}]
def test_duplicate_headers():
assert csv_to_records('x,x,x\n1,2,3\n') == [{"x": 1, "x.2": 2, "x.3": 3}]
def test_leading_zeros_stay_string():
assert csv_to_records('id\n007\n') == [{"id": "007"}]
def test_floats_and_empty():
assert csv_to_records('a,b\n3.5,\n') == [{"a": 3.5, "b": None}]