Compression Progress

Progress of the P-program track toward the Hutter Prize on enwik9. Higher is better — an inverted loss curve.

The track

This page is the entry point for the current P-program track: the top-level index links here and nothing else from the track, so everything below is reached from this page. Each instrument states what it is and what it is not; per #hutter_publication_handoff, none of them is a result — the chart above is where results go.

The chart carries no p8v2 point, and that is the intended state. No axis has been decided, so there is no p8v2 to plot; each variant's k is on its own page, by size class. The registry that feeds the chart (docs/update-progress.py) says so where the series are defined, so the absence is not read as an omission.

The reports. What the runs say, and the picks they ask for, are published beside the pages rather than summarised here: generation 5 (and the goal that carried the picks in), generation 4 (and the goal that carried the picks in), generation 3 (and the goal it answers, and the push that opened it), generation 2 (and the goal it answers), generation 1, #variant_protocol for why agents do not make the picks, and #hutter_publication_handoff for the division of labour.

The metric. Score k is defined by S/U = 0.99k, i.e. k = log(S/U) / log(0.99), where U is the uncompressed size and S the archive (compressor + decompressor + model), extrapolated to whole enwik9 (109 bytes). Each +1 in k is a 1% smaller archive, so the dashed reference lines are, from the bottom: the zip "dumb" baseline, the current Hutter record L, and the record improved by 1% (the minimum prize claim). The extrapolation holds the measured small-sample rate constant, so a plotted k is a conservative floor. Full definition and provenance live in block #hutter_leaderboard_goal_20260701; data in progress.json.

The rate r. Each point is measured on a small sample as r = P/U: U is the sample size in bytes and P the data-dependent archive payload in bytes — the sections whose size scales with the input. r < 1 means the sample actually got smaller. Costs that are the same size for any input (the decompressor binary, model header, fixed tables) are the fixed cost, paid once; the extrapolation above is S/U = r + fixed/109.

Predictions. The gold mini-series pinned at 2026-07-06 — P8's date, not when any experiment runs — is P8's ladder over input scale: one dot per order of magnitude, 104 to 109 bytes. The two smallest scales are measured enwik9-prefix runs, drawn as flat dashes (a measurement, no model CI); from 106 up each step is the component-model extrapolation, drawn as a violin — the density in k implied by the block's σr = 0.045 (95% = ±2σ) — with the median line going dashed at that discontinuity. Marks are labelled by scale only; hover one for its k, r, CI and training time. By default the ladder is collapsed: drawn at the true time scale of the shared x-axis, and since the whole ladder streams in ≈83 minutes at the pinned 200 kHz input clock, it sits as a sliver at P8's date. Click the gold cluster, or its gold 10⁴…10⁹ ⊞ label on the x-axis, to expand just that slice of the x-axis to log training time (0.6 days per decade) — the fragment #pred-ladder goes into the URL, so the expanded view is linkable — and click anything gold again to collapse. The k axis is shared with the measured points, so later experimental numbers plot directly over the ladder — and when the slice is expanded, measured runs at a ladder scale align to that scale's x, sitting in their violins. The gold violin is the 95% confidence interval at enwik9, shaped by the density the prediction's r-uncertainty implies in k. These are extrapolations from the measured prefix ladder (block #pprog_p8_words_20260706, 2026-07-06), not measured points: predicted rates r come from the block, k is computed here from r.

Points

Every measured point, grouped by program — click a chart point to jump to its row. Provenance shared by a whole series is stated once; the table notes only what differs per point, and each row's exact reproduction commands and pins are under its "repro & provenance" toggle.