Three pages over the same p8v2 models, each built on a different organizing principle, so that the three disagree about what a pattern is. They share no encoding, no interaction and no layout. The spec is p8v2-pattern-viz-specs.md, written on the generating side; these are the builds.
One page per (model, sample). The whole k=1 map as a 16×16 grid of source bytes, each cell printing its argmax successor as the datum itself with ink weight proportional to the stored support; the k=2 rules below as a support-ordered column of small multiples on the same scale. Selecting any pattern dims everything except the positions in the sample where it fired, shown in place in the actual text. B1 and B2 render as the same page, and the visual difference between them is what B1 discards. The only interactive one.
| 64 bytes | 1,000 bytes | 10,000 bytes | |
|---|---|---|---|
| v024 (B1 — no stored k=1 weight) | open 47 k=2 rules | open 227 k=2 rules | open 1074 k=2 rules |
| v025 (B2 — the count matrix is in the file) | open 47 k=2 rules | open 227 k=2 rules | open 1074 k=2 rules |
One page per (model, sample), answering a question A cannot: what shape does the learned relation have? The 256 byte values as unlabelled ticks on one baseline, every k=1 rule an arc from source to successor, above the line for a forward step and below for a backward one; support is arc height alone, every arc the same hairline, so the page has exactly one visual variable. The hubs, the alphabet's local runs, the long arcs into the high bytes and the cycles — the pairs where settling can oscillate rather than converge — are immediate and are unavailable in any table. Nothing is selectable: a page to print.
| 64 bytes | 1,000 bytes | 10,000 bytes | |
|---|---|---|---|
| v024 (B1 — no stored k=1 weight) | open 47 k=2 rules | open 227 k=2 rules | open 1074 k=2 rules |
| v025 (B2 — the count matrix is in the file) | open 47 k=2 rules | open 227 k=2 rules | open 1074 k=2 rules |
Neither an inventory nor a structure but a difference: what the model learned at 64, 1,000 and 10,000 bytes, as three columns of a slopegraph with one line per source byte joining its argmax successor at each size. Most lines are flat and grey; the page exists for the argmax flips, each labelled with both successors and the counts behind them. A second panel puts each rule's support against sample size, under which sits the number the generation turns on: the argmax's share of its context, falling as the sample grows.
The learning slopegraph — one page: all eight generation-5 variants share one learned model byte for byte, and the builder refuses to build unless that holds.
None aggregates a rate into a single number, none shows a per-byte compression rate over a whole model file (#hutter_metrics forbids it), and none invents a strength the model does not store: under B1 the k=1 strength is the stated constant from axes.json and is labelled as stated, not as learned. Nothing here is a result and no page carries a chart point.
| p8v2-pattern-viz-specs.md | the three specs, cmpr-src's, which these pages are built from |
| models/ | the retained models at each sample |
| gen5-pos/ | the per-position dumps, which is where the sample text on these pages comes from |
| gen5.tsv | generation 5's measured facts |
| axes.json | the axes and the constants, including the stated k=1 strength |
| #f-p8-forward | what a k=1 application delivers, and why 8 |
| LSA.md | what an LSA value is: a log count with a stochastic, uncorrelated error — the reason a stored weight and a concordance count are allowed to disagree |
| the generation 5 report | the runs these models come from |
| the generation-5 instrument | the same patterns in motion: stepping f one time step at a time |
| build-p8v2-patterns | rebuilds all of these. Runs no compression |
Published under #viz_standard. Self-contained: no external stylesheet, no font, no image, nothing fetched. Built from the spec in p8v2-pattern-viz-specs.md by docs/pprog/build-p8v2-patterns, never hand-edited. Every pattern drawn was reconstructed through the query layer from (program text, model file); no page reads a de-optimized dump. Nothing here is a result and no page carries a chart point — the picks are the programmer's (#variant_protocol).