Seeing the patterns

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.

What a pattern is here. A p8v2 model holds two families. The k=1 family is 256 rules, one per byte value, each naming the byte the model expects to follow it; under B1 the file stores the argmax and no weight, and under B2 it stores the whole 65536 -entry LSA matrix over ordered byte pairs. The k=2 family is the kept two-byte token rules, which carry their strength in the file either way. Every pattern on these pages was reconstructed through the query layer from (program text, model file) — never a de-optimized dump.

A — the pattern page: the inventory, in data space

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 bytes1,000 bytes10,000 bytes
v024 (B1 — no stored k=1 weight)open 47 k=2 rulesopen 227 k=2 rulesopen 1074 k=2 rules
v025 (B2 — the count matrix is in the file)open 47 k=2 rulesopen 227 k=2 rulesopen 1074 k=2 rules

B — the transition arc: the topology

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 bytes1,000 bytes10,000 bytes
v024 (B1 — no stored k=1 weight)open 47 k=2 rulesopen 227 k=2 rulesopen 1074 k=2 rules
v025 (B2 — the count matrix is in the file)open 47 k=2 rulesopen 227 k=2 rulesopen 1074 k=2 rules

C — the learning slopegraph: the change

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.

What none of the three do

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.

Sources

p8v2-pattern-viz-specs.mdthe 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.tsvgeneration 5's measured facts
axes.jsonthe axes and the constants, including the stated k=1 strength
#f-p8-forwardwhat a k=1 application delivers, and why 8
LSA.mdwhat 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 reportthe runs these models come from
the generation-5 instrumentthe same patterns in motion: stepping f one time step at a time
build-p8v2-patternsrebuilds 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).