The generation benchmark
“Leading LLM programming language” is an empirical claim: a model receives a task, writes POLYTONE, and ptc test judges — deterministically, no human in the loop. Two numbers per task, both first-class: pass@1 (the first candidate passes) and pass@2e (after a failure the model sees the actual error and gets one repair attempt — POLYTONE’s thesis is that its errors teach).
Methodology
- The judge is ptc test: candidate + hidden tests → one file → pass/fail. The judge never trusts the model — tests are appended after generation.
- Capability-clean: effects appear only through mocks (mock_fs, fixed_rng, fixed_clock, mock_env, mock_http) — a run touches no network, disk, clock, or entropy.
- A CI gate keeps every reference solution green against its own hidden tests — the corpus cannot rot. CI never calls a model; runs are local and BYO-key.
- The report always shows every task × every attempt — no cherry-picking.
- The system prompt is the frozen IDE language card. Since Sprint 252 the harness sends the EVALUATED card — byte-identical with the IDE and the Pro CLI, pinned by a gate; runs 1–7 sent the raw source form (doubled backslashes). Tokens-to-green stays directly comparable only between runs of the same card form.
- Tier L (since Sprint 265) is multi-module: the task names every file, the model answers in the IDE loop's fence grammar (one block per file with path=), and the judge verifies EVERY file as its own entry — modules first, then the entry, each with its own hidden tests (the Sprint-244 rule). A path outside the project is dropped, never sanitized; a missing file teaches before ptc runs. One judge path (corpus.mjs) for run.mjs and the harness.
- Comparability across corpus sizes and generators: runs 1–6 measure corpus 33, runs 7–9 corpus 36, run 10 corpus 48 (36 + 12 × tier L), run 11 corpus 52 (48 + the four Sprint-306 tasks), and since Sprint 326 the corpus holds 58 (52 + six everyday tasks over the forms Sprints 319–320 opened — unmeasured until Baseline 12). A headline number compares directly only with runs over the same corpus; a 48-run's line on the 36 older tasks is the number that compares with runs 7–9 (run 10: 33/36 · 35/36 — the run-8 level). Tier L is reported on its own. Runs 1–10 were generated by claude-fable-5; run 11 (Sprint 314) ran on claude-opus-5 because Fable's credits were exhausted — the model is on every record, and numbers compare directly only within one generator (run 11 on the 48 run-10 tasks: 43/48 · 46/48 against Fable's 43/48 · 47/48; on the 36 older tasks 33/36 · 35/36, as run 10).
- Tasks added after the newest run are listed in the corpus table as not yet measured (since Sprint N) — the next run covers them; the coverage gate exempts them until then (the four Sprint-306 tasks trait_travel, culled_parts, model_page, label_card were first measured by run 11: 4/4 cold).
Results
pass@1 47/52 · pass@2e 50/52 · tokens-to-green median 41139 (harness tokens: combined incl. the agent system prompt — comparable across harness runs, not to API usage)
| task | pass@1 | pass@2e | tok→green |
|---|---|---|---|
api_status | ✓ | ✓ | 41095 |
audio_probe | ✗ | ✓ | 81857 |
badge_page | ✓ | ✓ | 42669 |
bit_parity | ✓ | ✓ | 40463 |
clock_iso | ✓ | ✓ | 40538 |
config_port | ✗ | ✗ | — |
content_tag | ✓ | ✓ | 40822 |
csv_report | ✓ | ✓ | 42071 |
csv_totals | ✓ | ✓ | 41131 |
culled_parts | ✓ | ✓ | 42560 |
dice_walk | ✓ | ✓ | 40797 |
env_banner | ✓ | ✓ | 41183 |
env_mode | ✓ | ✓ | 40587 |
fetch_all | ✓ | ✓ | 41246 |
grade_book | ✓ | ✓ | 41626 |
hex_dump | ✓ | ✓ | 40536 |
histogram | ✓ | ✓ | 40683 |
image_probe | ✓ | ✓ | 41147 |
inventory_load | ✓ | ✓ | 40582 |
json_pluck | ✗ | ✓ | 83750 |
label_card | ✓ | ✓ | 41571 |
log_scan | ✓ | ✓ | 41867 |
mesh_probe | ✓ | ✓ | 40709 |
model_page | ✓ | ✓ | 40692 |
model_parts | ✗ | ✓ | 83119 |
money_order | ✓ | ✓ | 41212 |
parse_point | ✓ | ✓ | 41845 |
pkg_check | ✗ | ✗ | — |
poster_film | ✓ | ✓ | 42167 |
ranked_pick | ✓ | ✓ | 41343 |
rider_film | ✓ | ✓ | 42413 |
row_sums | ✓ | ✓ | 40383 |
run_length | ✓ | ✓ | 40897 |
save_report | ✓ | ✓ | 40935 |
season_label | ✓ | ✓ | 40925 |
set_overlap | ✓ | ✓ | 40414 |
shape_area | ✓ | ✓ | 40500 |
shape_report | ✓ | ✓ | 41924 |
stat_kit | ✓ | ✓ | 40584 |
stereo_field | ✓ | ✓ | 41434 |
swap_pairs | ✓ | ✓ | 40452 |
task_batch | ✓ | ✓ | 40923 |
top_scorer | ✓ | ✓ | 41073 |
total_of | ✓ | ✓ | 41007 |
trait_travel | ✓ | ✓ | 42281 |
tune_mix | ✓ | ✓ | 41385 |
uniques | ✓ | ✓ | 40986 |
video_probe | ✓ | ✓ | 41026 |
web_toc | ✓ | ✓ | 41228 |
week_later | ✓ | ✓ | 42035 |
wipe_reveal | ✓ | ✓ | 42322 |
word_stats | ✓ | ✓ | 41378 |
pass@1 43/48 · pass@2e 47/48 · tokens-to-green median 85907 (harness tokens: combined incl. the agent system prompt — comparable across harness runs, not to API usage)
| task | pass@1 | pass@2e | tok→green |
|---|---|---|---|
api_status | ✓ | ✓ | 85999 |
audio_probe | ✗ | ✓ | 171906 |
badge_page | ✓ | ✓ | 86100 |
bit_parity | ✓ | ✓ | 85754 |
clock_iso | ✓ | ✓ | 85832 |
config_port | ✓ | ✓ | 85828 |
content_tag | ✓ | ✓ | 85964 |
csv_report | ✓ | ✓ | 86790 |
csv_totals | ✓ | ✓ | 85849 |
dice_walk | ✓ | ✓ | 85948 |
env_banner | ✓ | ✓ | 85907 |
env_mode | ✓ | ✓ | 85730 |
fetch_all | ✓ | ✓ | 85982 |
grade_book | ✓ | ✓ | 85781 |
hex_dump | ✓ | ✓ | 85699 |
histogram | ✓ | ✓ | 85694 |
image_probe | ✓ | ✓ | 85776 |
inventory_load | ✓ | ✓ | 87759 |
json_pluck | ✓ | ✓ | 85791 |
log_scan | ✓ | ✓ | 85984 |
mesh_probe | ✓ | ✓ | 85746 |
model_parts | ✓ | ✓ | 86474 |
money_order | ✓ | ✓ | 86103 |
parse_point | ✓ | ✓ | 85767 |
pkg_check | ✗ | ✓ | 173085 |
poster_film | ✓ | ✓ | 86038 |
ranked_pick | ✓ | ✓ | 86253 |
rider_film | ✓ | ✓ | 86089 |
row_sums | ✓ | ✓ | 85703 |
run_length | ✓ | ✓ | 85984 |
save_report | ✓ | ✓ | 85804 |
season_label | ✓ | ✓ | 85747 |
set_overlap | ✓ | ✓ | 85861 |
shape_area | ✓ | ✓ | 85915 |
shape_report | ✓ | ✓ | 86039 |
stat_kit | ✓ | ✓ | 86021 |
stereo_field | ✓ | ✓ | 85865 |
swap_pairs | ✓ | ✓ | 85895 |
task_batch | ✓ | ✓ | 85904 |
top_scorer | ✓ | ✓ | 85998 |
total_of | ✓ | ✓ | 85797 |
tune_mix | ✗ | ✓ | 172459 |
uniques | ✓ | ✓ | 85846 |
video_probe | ✗ | ✓ | 172125 |
web_toc | ✗ | ✗ | — |
week_later | ✓ | ✓ | 85782 |
wipe_reveal | ✓ | ✓ | 86027 |
word_stats | ✓ | ✓ | 85797 |
pass@1 27/36 · pass@2e 35/36 · tokens-to-green median 82368 (harness tokens: combined incl. the agent system prompt — comparable across harness runs, not to API usage)
| task | pass@1 | pass@2e | tok→green |
|---|---|---|---|
api_status | ✓ | ✓ | 82378 |
audio_probe | ✓ | ✓ | 82740 |
bit_parity | ✓ | ✓ | 82299 |
clock_iso | ✓ | ✓ | 82204 |
config_port | ✗ | ✓ | 165699 |
content_tag | ✗ | ✓ | 165015 |
csv_totals | ✓ | ✓ | 82589 |
dice_walk | ✓ | ✓ | 82314 |
env_mode | ✓ | ✓ | 82216 |
grade_book | ✓ | ✓ | 82475 |
hex_dump | ✓ | ✓ | 82157 |
histogram | ✓ | ✓ | 82206 |
image_probe | ✓ | ✓ | 82319 |
json_pluck | ✗ | ✗ | — |
log_scan | ✓ | ✓ | 82368 |
mesh_probe | ✓ | ✓ | 82239 |
money_order | ✓ | ✓ | 82484 |
parse_point | ✗ | ✓ | 165288 |
rider_film | ✗ | ✓ | 167221 |
row_sums | ✓ | ✓ | 82081 |
run_length | ✓ | ✓ | 82364 |
save_report | ✗ | ✓ | 164963 |
season_label | ✗ | ✓ | 164883 |
set_overlap | ✓ | ✓ | 82231 |
shape_area | ✓ | ✓ | 82313 |
stereo_field | ✓ | ✓ | 82556 |
swap_pairs | ✓ | ✓ | 82263 |
task_batch | ✓ | ✓ | 82274 |
top_scorer | ✓ | ✓ | 82351 |
total_of | ✓ | ✓ | 82401 |
uniques | ✓ | ✓ | 82213 |
video_probe | ✓ | ✓ | 82263 |
web_toc | ✓ | ✓ | 82543 |
week_later | ✗ | ✓ | 165795 |
wipe_reveal | ✗ | ✓ | 166712 |
word_stats | ✓ | ✓ | 82440 |
pass@1 33/36 · pass@2e 36/36 · tokens-to-green median 68924 (harness tokens: combined incl. the agent system prompt — comparable across harness runs, not to API usage)
| task | pass@1 | pass@2e | tok→green |
|---|---|---|---|
api_status | ✓ | ✓ | 69726 |
audio_probe | ✓ | ✓ | 69347 |
bit_parity | ✓ | ✓ | 68601 |
clock_iso | ✓ | ✓ | 68554 |
config_port | ✓ | ✓ | 70896 |
content_tag | ✓ | ✓ | 68755 |
csv_totals | ✓ | ✓ | 69437 |
dice_walk | ✓ | ✓ | 68697 |
env_mode | ✓ | ✓ | 68547 |
grade_book | ✓ | ✓ | 68429 |
hex_dump | ✓ | ✓ | 68498 |
histogram | ✓ | ✓ | 68509 |
image_probe | ✓ | ✓ | 68873 |
json_pluck | ✓ | ✓ | 70577 |
log_scan | ✓ | ✓ | 70854 |
mesh_probe | ✓ | ✓ | 69024 |
money_order | ✓ | ✓ | 69621 |
parse_point | ✗ | ✓ | 138572 |
rider_film | ✗ | ✓ | 140779 |
row_sums | ✓ | ✓ | 68505 |
run_length | ✓ | ✓ | 68847 |
save_report | ✓ | ✓ | 69002 |
season_label | ✓ | ✓ | 68586 |
set_overlap | ✓ | ✓ | 68362 |
shape_area | ✓ | ✓ | 68591 |
stereo_field | ✓ | ✓ | 69319 |
swap_pairs | ✓ | ✓ | 68555 |
task_batch | ✓ | ✓ | 68958 |
top_scorer | ✓ | ✓ | 69066 |
total_of | ✓ | ✓ | 68887 |
uniques | ✓ | ✓ | 68600 |
video_probe | ✓ | ✓ | 68890 |
web_toc | ✓ | ✓ | 70251 |
week_later | ✓ | ✓ | 69937 |
wipe_reveal | ✗ | ✓ | 144018 |
word_stats | ✓ | ✓ | 68978 |
pass@1 34/36 · pass@2e 36/36 · tokens-to-green median 62827 (harness tokens: combined incl. the agent system prompt — comparable across harness runs, not to API usage)
| task | pass@1 | pass@2e | tok→green |
|---|---|---|---|
api_status | ✓ | ✓ | 63220 |
audio_probe | ✓ | ✓ | 63857 |
bit_parity | ✓ | ✓ | 62081 |
clock_iso | ✓ | ✓ | 62282 |
config_port | ✓ | ✓ | 65270 |
content_tag | ✓ | ✓ | 62631 |
csv_totals | ✓ | ✓ | 63061 |
dice_walk | ✓ | ✓ | 62228 |
env_mode | ✓ | ✓ | 62063 |
grade_book | ✓ | ✓ | 63908 |
hex_dump | ✓ | ✓ | 62190 |
histogram | ✓ | ✓ | 61990 |
image_probe | ✓ | ✓ | 62940 |
json_pluck | ✓ | ✓ | 64443 |
log_scan | ✓ | ✓ | 65030 |
mesh_probe | ✓ | ✓ | 63003 |
money_order | ✓ | ✓ | 63404 |
parse_point | ✓ | ✓ | 61959 |
rider_film | ✓ | ✓ | 65927 |
row_sums | ✓ | ✓ | 62012 |
run_length | ✓ | ✓ | 62627 |
save_report | ✗ | ✓ | 125537 |
season_label | ✓ | ✓ | 62479 |
set_overlap | ✓ | ✓ | 61873 |
shape_area | ✓ | ✓ | 62239 |
stereo_field | ✓ | ✓ | 63284 |
swap_pairs | ✓ | ✓ | 62142 |
task_batch | ✓ | ✓ | 62198 |
top_scorer | ✓ | ✓ | 63275 |
total_of | ✓ | ✓ | 62348 |
uniques | ✓ | ✓ | 62357 |
video_probe | ✓ | ✓ | 62295 |
web_toc | ✓ | ✓ | 64580 |
week_later | ✓ | ✓ | 64442 |
wipe_reveal | ✗ | ✓ | 127583 |
word_stats | ✓ | ✓ | 62827 |
pass@1 33/33 · pass@2e 33/33 · tokens-to-green median 56514 (harness tokens: combined incl. the agent system prompt — comparable across harness runs, not to API usage)
| task | pass@1 | pass@2e | tok→green |
|---|---|---|---|
api_status | ✓ | ✓ | 56619 |
audio_probe | ✓ | ✓ | 56530 |
bit_parity | ✓ | ✓ | 56499 |
clock_iso | ✓ | ✓ | 56460 |
config_port | ✓ | ✓ | 56582 |
content_tag | ✓ | ✓ | 56516 |
csv_totals | ✓ | ✓ | 56600 |
dice_walk | ✓ | ✓ | 56534 |
env_mode | ✓ | ✓ | 56451 |
grade_book | ✓ | ✓ | 56524 |
hex_dump | ✓ | ✓ | 56416 |
histogram | ✓ | ✓ | 56418 |
image_probe | ✓ | ✓ | 56520 |
json_pluck | ✓ | ✓ | 56554 |
log_scan | ✓ | ✓ | 56521 |
mesh_probe | ✓ | ✓ | 56491 |
money_order | ✓ | ✓ | 56589 |
parse_point | ✓ | ✓ | 56529 |
row_sums | ✓ | ✓ | 56432 |
run_length | ✓ | ✓ | 56514 |
save_report | ✓ | ✓ | 56541 |
season_label | ✓ | ✓ | 56524 |
set_overlap | ✓ | ✓ | 56443 |
shape_area | ✓ | ✓ | 56510 |
swap_pairs | ✓ | ✓ | 56474 |
task_batch | ✓ | ✓ | 56496 |
top_scorer | ✓ | ✓ | 56504 |
total_of | ✓ | ✓ | 56514 |
uniques | ✓ | ✓ | 56444 |
video_probe | ✓ | ✓ | 56458 |
web_toc | ✓ | ✓ | 56493 |
week_later | ✓ | ✓ | 56547 |
word_stats | ✓ | ✓ | 56519 |
pass@1 30/33 · pass@2e 33/33 · tokens-to-green median 56471 (harness tokens: combined incl. the agent system prompt — comparable across harness runs, not to API usage)
| task | pass@1 | pass@2e | tok→green |
|---|---|---|---|
api_status | ✓ | ✓ | 56521 |
audio_probe | ✓ | ✓ | 56471 |
bit_parity | ✓ | ✓ | 56435 |
clock_iso | ✓ | ✓ | 56429 |
config_port | ✓ | ✓ | 56531 |
content_tag | ✓ | ✓ | 56456 |
csv_totals | ✓ | ✓ | 56583 |
dice_walk | ✓ | ✓ | 56480 |
env_mode | ✓ | ✓ | 56431 |
grade_book | ✓ | ✓ | 56488 |
hex_dump | ✓ | ✓ | 56404 |
histogram | ✗ | ✓ | 113469 |
image_probe | ✓ | ✓ | 56482 |
json_pluck | ✗ | ✓ | 114016 |
log_scan | ✓ | ✓ | 56471 |
mesh_probe | ✓ | ✓ | 56443 |
money_order | ✓ | ✓ | 56542 |
parse_point | ✓ | ✓ | 56485 |
row_sums | ✓ | ✓ | 56378 |
run_length | ✓ | ✓ | 56476 |
save_report | ✓ | ✓ | 56485 |
season_label | ✓ | ✓ | 56426 |
set_overlap | ✓ | ✓ | 56410 |
shape_area | ✓ | ✓ | 56477 |
swap_pairs | ✓ | ✓ | 56435 |
task_batch | ✓ | ✓ | 56467 |
top_scorer | ✓ | ✓ | 56445 |
total_of | ✓ | ✓ | 56485 |
uniques | ✓ | ✓ | 56389 |
video_probe | ✓ | ✓ | 56437 |
web_toc | ✓ | ✓ | 56436 |
week_later | ✓ | ✓ | 56487 |
word_stats | ✗ | ✓ | 113864 |
pass@1 30/33 · pass@2e 33/33 · tokens-to-green median 56431 (harness tokens: combined incl. the agent system prompt — comparable across harness runs, not to API usage)
| task | pass@1 | pass@2e | tok→green |
|---|---|---|---|
api_status | ✓ | ✓ | 56462 |
audio_probe | ✓ | ✓ | 56446 |
bit_parity | ✓ | ✓ | 56384 |
clock_iso | ✓ | ✓ | 56381 |
config_port | ✓ | ✓ | 56513 |
content_tag | ✓ | ✓ | 56411 |
csv_totals | ✓ | ✓ | 56526 |
dice_walk | ✓ | ✓ | 56460 |
env_mode | ✓ | ✓ | 56359 |
grade_book | ✓ | ✓ | 56416 |
hex_dump | ✓ | ✓ | 56351 |
histogram | ✗ | ✓ | 113382 |
image_probe | ✓ | ✓ | 56428 |
json_pluck | ✗ | ✓ | 113895 |
log_scan | ✓ | ✓ | 56431 |
mesh_probe | ✓ | ✓ | 56405 |
money_order | ✓ | ✓ | 56503 |
parse_point | ✗ | ✓ | 113770 |
row_sums | ✓ | ✓ | 56342 |
run_length | ✓ | ✓ | 56432 |
save_report | ✓ | ✓ | 56457 |
season_label | ✓ | ✓ | 56378 |
set_overlap | ✓ | ✓ | 56434 |
shape_area | ✓ | ✓ | 56434 |
swap_pairs | ✓ | ✓ | 56392 |
task_batch | ✓ | ✓ | 56416 |
top_scorer | ✓ | ✓ | 56405 |
total_of | ✓ | ✓ | 56435 |
uniques | ✓ | ✓ | 56353 |
video_probe | ✓ | ✓ | 56387 |
web_toc | ✓ | ✓ | 56404 |
week_later | ✓ | ✓ | 56446 |
word_stats | ✓ | ✓ | 56439 |
pass@1 30/33 · pass@2e 32/33 · tokens-to-green median 50669 (harness tokens: combined incl. the agent system prompt — comparable across harness runs, not to API usage)
| task | pass@1 | pass@2e | tok→green |
|---|---|---|---|
api_status | ✓ | ✓ | 50695 |
audio_probe | ✓ | ✓ | 50681 |
bit_parity | ✓ | ✓ | 50645 |
clock_iso | ✓ | ✓ | 50633 |
config_port | ✓ | ✓ | 50746 |
content_tag | ✓ | ✓ | 50649 |
csv_totals | ✓ | ✓ | 50765 |
dice_walk | ✓ | ✓ | 50689 |
env_mode | ✗ | ✓ | 101841 |
grade_book | ✓ | ✓ | 50682 |
hex_dump | ✓ | ✓ | 50580 |
histogram | ✗ | ✓ | 101799 |
image_probe | ✓ | ✓ | 50668 |
json_pluck | ✗ | ✗ | — |
log_scan | ✓ | ✓ | 50685 |
mesh_probe | ✓ | ✓ | 50636 |
money_order | ✓ | ✓ | 50746 |
parse_point | ✓ | ✓ | 50669 |
row_sums | ✓ | ✓ | 50607 |
run_length | ✓ | ✓ | 50662 |
save_report | ✓ | ✓ | 50678 |
season_label | ✓ | ✓ | 50629 |
set_overlap | ✓ | ✓ | 50598 |
shape_area | ✓ | ✓ | 50700 |
swap_pairs | ✓ | ✓ | 50618 |
task_batch | ✓ | ✓ | 50660 |
top_scorer | ✓ | ✓ | 50664 |
total_of | ✓ | ✓ | 50686 |
uniques | ✓ | ✓ | 50607 |
video_probe | ✓ | ✓ | 50624 |
web_toc | ✓ | ✓ | 50641 |
week_later | ✓ | ✓ | 50706 |
word_stats | ✓ | ✓ | 50684 |
pass@1 30/33 · pass@2e 33/33 · tokens-to-green median 50655 (harness tokens: combined incl. the agent system prompt — comparable across harness runs, not to API usage)
| task | pass@1 | pass@2e | tok→green |
|---|---|---|---|
api_status | ✓ | ✓ | 50687 |
audio_probe | ✓ | ✓ | 50666 |
bit_parity | ✓ | ✓ | 50635 |
clock_iso | ✓ | ✓ | 50616 |
config_port | ✓ | ✓ | 50727 |
content_tag | ✓ | ✓ | 50640 |
csv_totals | ✓ | ✓ | 50757 |
dice_walk | ✓ | ✓ | 50683 |
env_mode | ✓ | ✓ | 50599 |
grade_book | ✓ | ✓ | 50667 |
hex_dump | ✓ | ✓ | 50572 |
histogram | ✗ | ✓ | 101773 |
image_probe | ✗ | ✓ | 101976 |
json_pluck | ✗ | ✓ | 102320 |
log_scan | ✓ | ✓ | 50677 |
mesh_probe | ✓ | ✓ | 50632 |
money_order | ✓ | ✓ | 50731 |
parse_point | ✓ | ✓ | 50661 |
row_sums | ✓ | ✓ | 50601 |
run_length | ✓ | ✓ | 50655 |
save_report | ✓ | ✓ | 50677 |
season_label | ✓ | ✓ | 50638 |
set_overlap | ✓ | ✓ | 50598 |
shape_area | ✓ | ✓ | 50652 |
swap_pairs | ✓ | ✓ | 50626 |
task_batch | ✓ | ✓ | 50647 |
top_scorer | ✓ | ✓ | 50626 |
total_of | ✓ | ✓ | 50665 |
uniques | ✓ | ✓ | 50587 |
video_probe | ✓ | ✓ | 50625 |
web_toc | ✓ | ✓ | 50633 |
week_later | ✓ | ✓ | 50671 |
word_stats | ✓ | ✓ | 50671 |
pass@1 21/33 · pass@2e 30/33 · tokens-to-green median 50372 (harness tokens: combined incl. the agent system prompt — comparable across harness runs, not to API usage)
| task | pass@1 | pass@2e | tok→green |
|---|---|---|---|
api_status | ✓ | ✓ | 50401 |
audio_probe | ✓ | ✓ | 50368 |
bit_parity | ✓ | ✓ | 50324 |
clock_iso | ✓ | ✓ | 50297 |
config_port | ✗ | ✓ | 101628 |
content_tag | ✓ | ✓ | 50335 |
csv_totals | ✓ | ✓ | 50450 |
dice_walk | ✓ | ✓ | 50376 |
env_mode | ✓ | ✓ | 50297 |
grade_book | ✓ | ✓ | 50356 |
hex_dump | ✓ | ✓ | 50281 |
histogram | ✗ | ✓ | 101160 |
image_probe | ✗ | ✓ | 101370 |
json_pluck | ✓ | ✓ | 50385 |
log_scan | ✗ | ✓ | 101442 |
mesh_probe | ✗ | ✗ | — |
money_order | ✓ | ✓ | 50422 |
parse_point | ✗ | ✓ | 101544 |
row_sums | ✗ | ✓ | 101220 |
run_length | ✗ | ✓ | 101400 |
save_report | ✓ | ✓ | 50375 |
season_label | ✓ | ✓ | 50314 |
set_overlap | ✓ | ✓ | 50285 |
shape_area | ✓ | ✓ | 50351 |
swap_pairs | ✗ | ✗ | — |
task_batch | ✗ | ✓ | 101356 |
top_scorer | ✓ | ✓ | 50334 |
total_of | ✗ | ✓ | 101495 |
uniques | ✓ | ✓ | 50282 |
video_probe | ✓ | ✓ | 50308 |
web_toc | ✗ | ✗ | — |
week_later | ✓ | ✓ | 50369 |
word_stats | ✓ | ✓ | 50369 |
The first delta proof (replays)
The phase's first failure dataset is the corpus-authoring session itself (Sprint 133) — an LLM writing POLYTONE cold, its first attempts recorded verbatim. Sprint 138 replays them against the hardened toolchain, CI-gated (gen_replays.rs):
content_tag: failed on the missingText.slice— now passes verbatim (the language grew to meet the model, Sprint 137).json_pluck: the error read like nonsense — now teaches the qualified form (the repair signal pass@2e depends on).log_scan: still fails (a semantics miss no compiler error can prevent) — but the assertion diff shows the actual values, and Card v6 teaches the rule.
The tier-L delta (Sprints 267–268)
Run 10 (corpus 48) had five first-attempt failures; two of them are the first multi-module replays (pkg_check_attempt1/, tune_mix_attempt1/ — directory form, every file its own entry) and web_toc_attempt2_run10.pt the residual. Sprint 268 rewrote two teaching errors from them (a partial variant pattern shows the exact named form; an element method on a list names the way to an element) and measured COLD over the same five tasks: 3/5 pass@1 (0/5 in run 10). The residual named the last gap — there was no way to write an arm that does nothing — so pass became the empty statement; the same candidates re-judged under it read 4/5, the repair round 5/5. All three replays are pinned in gen_replays.rs.
The run-11 dataset (Sprint 314)
Run 11 (corpus 52, claude-opus-5) had five first-attempt failures, three healed in one round (audio_probe sample_rate for the listed rate — run 10's class on a different model; json_pluck fields for entries — the run-9 residual, named by the error; model_parts shape lines without their indentation — the codec names the rule). The two residuals are ONE class, stacked twice: both TOML tasks first invented the shape of toml.parse (a document with .tables; a Value.Table variant), the repair fixed exactly that and hit the second error behind it — the guessed field entries on toml.Table (pairs). Two stacked errors cost the task under one repair round. Five replays (config_port_attempt{1,2}_run11.pt, pkg_check_attempt{1,2}_run11/, model_parts_attempt1_run11/) are pinned in gen_replays.rs.
The hardening from the run-11 dataset (Sprint 315)
The stacked class got two answers: a field read on a List[Record] now lists the ELEMENT's fields and the way to one (the Sprint-268 method error's twin) — the second error is visible in the first round; the task texts config_port/pkg_check name the shape of toml.parse the way the 266 corrections name every import, model_parts shows its shape line indented. Measured cold over the same five tasks (generator claude-opus-5 = run 11's): 3/5 pass@1 (0/5 in run 11), the repair round 5/5; the two untouched tasks failed on their exact one-round classes (stdlib field names the error names — no card candidate). The three cold candidates are pinned verbatim (*_cold_run11delta).
Fresh pass@1/pass@2e runs against frontier models stay local and BYO-key — this section shows only what has actually run.
Baseline 12 — the held-out protocol
The runs above measure the corpus POLYTONE grew up with. Baseline 12 measures against tasks the language never saw, and against Python and TypeScript on the same tasks. The protocol is stated here before any number exists; the runs wait for the owner's API keys.
- Sealed. 20 tasks (7 S · 9 M · 4 L, 283 vectors), written by an agent that never saw the language card, the spec or the corpus — issue-style tickets that name no module.
SEAL.jsonhashes every task; preflight fails on any drift. It is never a tuning set: no card line, teaching error or stdlib change is ever made because of it. - Three arms, one judge. The same language-neutral task (ticket + vectors as JSON + a Python reference) is derived into POLYTONE, Python and TypeScript;
arms.mjsjudges all three —ptc test,python3 -I,tsc --strict+ node — over the same values. CI keeps all 60 references green. - Intervals, not points. Every rate carries its Wilson 95 % interval; two arms differ only once their intervals separate.
- Ablation. POLYTONE runs three times: with the frozen card (
--card full), with its first line and the eight syntax-core rules (minimal), and with no card (none) — exactly one line naming the language, as Python and TypeScript get. That separates what the language carries from what the card carries. - Reproducible. A run directory is self-contained (model, commit, card and seal sha256, every reply verbatim).
--rejudgere-judges every transcript without a key,--reproducerepeats the configuration on a second machine; published runs live underbenchmarks/gen/published/. - pass@1+fix, apart. A failed POLYTONE first attempt runs through
ptc fix— the toolchain's own quick fixes for teaching errors, zero tokens, no second model call — and is judged again. That is its own column beside pass@1, never in its place; Python and TypeScript have no such fixes (—). - Honest tokens. Only the provider's own usage report counts (reasoning tokens where billed). The planning ESTIMATE at n=3 over all three arms: ≈ 346 k input + 126 k output tokens per model (POLYTONE 224 k of the input — the card rides on every call). An estimate is never a measurement.
| task | tier | ticket | vectors |
|---|---|---|---|
duration_seconds | S | Parse compact durations like 1h30m into seconds | 15 |
semver_compare | S | Compare two semantic versions incl. pre-release precedence | 15 |
query_params | S | Decode a URL query string into a map (+, %XX, last wins) | 15 |
word_wrap | S | Greedy word wrap to a width; long words stay whole | 13 |
day_of_week | S | Weekday of an ISO YYYY-MM-DD date, rejecting impossible dates | 15 |
slugify | S | Title to URL slug (apostrophes dropped, 40-char cap, untitled) | 12 |
luhn_valid | S | Luhn checksum of a card number with spaces | 14 |
free_slots | M | Free gaps in a working day from overlapping busy slots | 14 |
page_links | M | Pager labels with ellipses and bracketed current page | 14 |
ini_flatten | M | Flatten an INI-like file to section.key with line-numbered errors | 12 |
token_bucket | M | Replay a token-bucket rate limiter over request timestamps | 11 |
cron_match | M | Validate and match a five-field cron expression | 15 |
roman_numerals | M | Roman numerals both ways, strict standard form | 15 |
settings_diff | M | Diff two settings maps into change lines and re-apply them with conflict checks | 15 |
range_list | M | Expand 1-3,5 selections and compress number lists back | 14 |
cidr_contains | M | IPv4 CIDR membership with host-bit validation | 15 |
order_workflow | L | Order lifecycle state machine: create, apply events, replay, summarize | 15 |
league_table | L | Parse match results, rank standings with tie-breaks, print the table | 14 |
shift_roster | L | Parse rota lines, weekly minutes, double-booking conflicts, overtime | 15 |
expense_split | L | Parse shared expenses, exact-cent balances, greedy settlement | 15 |
Cold start and agents
Fresh Claude models get only the documentation — the language card, the skills — and write programs and documents that hidden tests judge with the real toolchain. First attempt → after ptc fix (no model). Every round exposed a gap in the card, a skill, a teaching error or a fix; the next row measures after the correction. n is small: a signal, not a measurement — that is Baseline 12.
| Set | given | Sonnet | Haiku |
|---|---|---|---|
| 8 programs, round 1 | the card as it was | 8/8 | 7/8 |
| 8 programs, round 1 | the card after round 1 | 8/8 | 8/8 |
| 8 harder programs (Clock, Http, regex, json, async) | the card as it was | 4/8 → 7/8 | 4/8 → 8/8 |
| 8 harder programs | the card after round 2 | 7/8 → 8/8 | 5/8 → 8/8 |
| 4 simple media documents | the media skill as it was | 4/4 | 4/4 |
| 4 rich media documents | the media skill as it was | 1/4 | 1/4 |
| 4 rich media documents | the skill + the full format specs | 4/4 | 4/4 |
| 4 rich media documents | the media skill with its vocabulary | 4/4 | 4/4 |
| 4 programs that write media | card + media skill | 4/4 | 4/4 |
| 4 programs of two modules | the card | 4/4 | 3/4 → 4/4 |
Agents in the real loop (skills + ptc check / fix / test through a logging shim): every run passed the hidden tests. In runs 1–3 none ran ptc fix — they corrected by hand from the message. Since Sprint 423 ptc check names the fix, since 429 the skill says to run it: in run 4 Haiku used it for the first time (one round to green; its hand correction in the same run took two). Run 5 is one package task: make a library, pass ptc pack, vendor it into an app; it passes when the gate, both hidden test sets and the vendored copy all hold. Run 6 uses a published package: the agent gets only a registry URL, finds the package in the index, vendors it with its dependency over HTTP and calls it. Run 7 is a command-line filter judged by real runs (stdin, stdout, stderr, exit code); run 8 an HTTP service judged by real requests; run 9 a directory tool judged by real files; run 10 a tool that runs git, judged against a real repository. Run 11 repeats run 2's tasks with the evening's skills: Sonnet 15 → 4 ptc calls, Haiku 20 → 9; run 12 repeats run 1's: Sonnet 10 → 3, Haiku 18 → 4.
| Run | Model | hidden tests | ptc calls | ptc fix |
|---|---|---|---|---|
| 1 | Sonnet | 3/3 | 10 | 0 |
| 1 | Haiku | 3/3 | 18 | 0 |
| 2 | Sonnet | 3/3 | 15 | 0 |
| 2 | Haiku | 3/3 | 20 | 0 |
| 3 | Sonnet | 3/3 | 6 | 0 |
| 3 | Haiku | 3/3 | 27 | 0 |
| 4 | Sonnet | 3/3 | 6 | 0 |
| 4 | Haiku | 3/3 | 22 | 1 |
| 5 | Sonnet | 1/1 | 11 | 0 |
| 5 | Haiku | 1/1 | 15 | 0 |
| 6 | Sonnet | 1/1 | 9 | 0 |
| 6 | Haiku | 1/1 | 8 | 0 |
| 7 | Sonnet | 1/1 | 7 | 0 |
| 7 | Haiku | 1/1 | 7 | 0 |
| 8 | Sonnet | 1/1 | 4 | 0 |
| 8 | Haiku | 1/1 | 12 | 0 |
| 9 | Sonnet | 1/1 | 8 | 0 |
| 9 | Haiku | 1/1 | 13 | 0 |
| 10 | Sonnet | 1/1 | 8 | 0 |
| 10 | Haiku | 1/1 | 11 | 0 |
| 11 | Sonnet | 3/3 | 4 | 0 |
| 11 | Haiku | 3/3 | 9 | 0 |
| 12 | Sonnet | 3/3 | 3 | 0 |
| 12 | Haiku | 3/3 | 4 | 0 |
| 13 | Sonnet | 1/1 | 12 | 0 |
| 13 | Haiku | 1/1 | 19 | 1 |
| 14 | Sonnet | 1/1 | 14 | 1 |
| 14 | Haiku | 1/1 | 17 | 0 |
The corpus (58)
21 × tier S · 21 × tier M · 16 × tier L (multi-module: one file per module, each verified as its own entry) — each task: a prompt, a hidden judge, a reference solution.
| task | tier | area |
|---|---|---|
api_status | M | Capabilities (mocked) |
audio_probe | M | Media codecs |
badge_page | L | Modules (tier L) |
bit_parity | M | Bitwise & encoding |
cart_drop | S | Collections (since Sprint 326, not yet measured) |
clock_iso | S | Capabilities (mocked) |
config_port | M | Capabilities (mocked) |
content_tag | S | Bitwise & encoding |
csv_report | L | Modules (tier L) |
csv_totals | M | Data formats |
culled_parts | L | Media codecs |
dice_walk | S | Capabilities (mocked) |
env_banner | L | Modules (tier L) |
env_mode | S | Capabilities (mocked) |
fetch_all | L | Modules (tier L) |
grade_book | S | Collections |
hex_dump | S | Bitwise & encoding |
histogram | S | Collections |
image_probe | M | Media codecs |
inventory_load | L | Modules (tier L) |
json_pluck | M | Data formats |
label_card | L | Media codecs |
log_scan | S | Data formats |
mesh_probe | M | Media codecs |
model_page | L | Media codecs |
model_parts | L | Modules (tier L) |
money_order | M | Methods & traits |
parse_point | S | Errors & Result |
pkg_check | L | Modules (tier L) |
poster_film | L | Modules (tier L) |
ranked_pick | L | Modules (tier L) |
receipt_line | S | Prelude & text (since Sprint 326, not yet measured) |
rider_film | M | Media codecs |
row_sums | S | Collections |
run_length | M | Prelude & text |
safe_pick | S | Collections (since Sprint 326, not yet measured) |
save_report | M | Capabilities (mocked) |
score_line | M | Prelude & text (since Sprint 326, not yet measured) |
season_label | S | Methods & traits |
set_overlap | S | Collections |
shape_area | S | Methods & traits |
shape_report | L | Modules (tier L) |
stat_kit | L | Modules (tier L) |
stereo_field | M | Media codecs |
swap_pairs | S | Generics |
tag_toggle | M | Collections (since Sprint 326, not yet measured) |
task_batch | M | Async & Tasks |
text_after | S | Prelude & text (since Sprint 326, not yet measured) |
top_scorer | S | Collections |
total_of | S | Errors & Result |
trait_travel | L | Modules (tier L) |
tune_mix | L | Modules (tier L) |
uniques | M | Generics |
video_probe | M | Media codecs |
web_toc | M | Media codecs |
week_later | M | Data formats |
wipe_reveal | M | Media codecs |
word_stats | S | Prelude & text |