Status: RESEARCH.
First full read of the matrix, 2026-07-29; label-diff read 2026-08-01 (#285). Reproduce with cargo test -p bert-canvas --test matrix_report -- --nocapture. Raw run archived outside this repo; the command is the source of truth.
The matrix had been runnable for some time and was never read. Two things came out of reading it: the report was answering two of #216's three questions, and the third question — travels but reads differently — turns out to have an answer already computed on every call and thrown away.
The third outcome is measurable, and it was already in hand
analyze returns four things. The report used one of them. residue (#100) is the count of authored content a lens does not render — what the face is silent about. That is the third outcome, stated as a quantity: a model legal under two lenses that hides eleven declared facts from one of them travels, and reads differently.
The column added here is the spread: among the lenses that accept the model, the gap between the most and least blind. Zero means every accepting lens sees the same amount of what the author wrote.
What the read says
35 models × 3 lenses. 34 measurable, 34 divergent, 0 aligned, 1 unmeasurable.
The unmeasurable row is klir/cellular-array-cell.sl: Klir accepts it with 5 facts unseen, Bunge refuses it (no bond between distinct components), Mobus refuses it (8 boundary crossings without interfaces). One accepting lens means no second reading to compare against — the spread is undefined, not zero.
So the count to state is 34 of 34, not 34 of 35. Nothing in this library is read the same way by two lenses that both accept it. Calling cellular-array-cell "non-divergent" would be the same error as reading an all-green Klir column as agreement: absence of a measurement is not a measurement of zero.
This inverts the expectation in the task. The third outcome was framed as the rare and interesting case, the one worth hunting for. It is the default state of the corpus.
Authored facts unseen, by lens: Klir 371 · Bunge 181 · Mobus 49.
The ordering falls out in the direction the commitments predict. Each tradition asks for something beyond the shared fragment — Bunge for a bond and an environment, Mobus for a boundary and interfaces — so a lens that asks for more can render more, and leaves less of an authored model unsaid. These are the first numbers that measure that over published models rather than over the abstract kernel.
Read this as three faces side by side. Nothing here says a model advances from Klir toward Mobus — only that the faces carry different amounts of what an author declared, which is a fact about the lenses and not a direction of travel through them (#90; see theory-fidelity.md).
Klir refuses nothing — 0 of 35 — because it cannot see most of what it is accepting.
The worst case is examples/llm-market.sl: legal under Klir, and Klir is blind to 70 declared facts in it. Then two-sided-market at 25 and hal-harness at 24. The zero-refusal column is not permissiveness, it is lossy projection. By the standard this repo already applies to its own checks — a constraint nothing can fail proves nothing (#220) — the Klir lens is not currently acting as a gate, and the residue count is the reason rather than the symptom.
That is not a defect to fix. Klir is the root, and the root is supposed to be permissive. What the number changes is the claim that can be made from an all-green Klir column: it is evidence about the projection, not about the models.
Which lens is blindest tracks the vocabulary the model was written in.
For the Mobus corpus and the examples, Klir is blindest (klir>mobus). For the Bunge and Klir corpora, Bunge often is — criminal-court at 3/20, serial-binary-adder at 5/16. Whichever tradition a model was not authored in is the one that loses it.
Stated for the thesis: legality travels, meaning does not. All 35 models are legal under the root, which is the existence half of K≅2 holding empirically over real entries for the first time. And every one of them means something different in each lens that accepts it, which is the part the abstract proof was always silent about.
Mobus is blind to nothing in any example it accepts — 0 across all fifteen. (Historical as of 2026-08-05; kept because the gap it named shaped #284.)
That was a fact about the corpus, not about Mobus: every example was authored in his own vocabulary, so there was no authored content for him to fail to render. Resolved by #284 (2026-08-05) — two foreign-native entries now put authored meaning where Mobus cannot see it:
examples/lake-observation.sl(Klir-native source system): Mobus blind 10 — 2 directed annotations (hidden), 4 substances + 4 process primitives (unspecified).examples/workshop-crew.sl(Bunge-native CES triple): Mobus blind 7 — 2 mere relations (hidden; Bunge's B̄), the rest unspecified.
The Mobus residue column is now load-bearing: "legality travels, meaning does not" rests on all three columns.
The labels, diffed (#285, 2026-08-01)
Every divergent row now continues onto detail lines that diff the residue labels between the most- and least-blind accepting lenses, so DIVERGENT(70) klir>mobus on llm-market reads as: 10 environment roles, 38 connection kinds, 11 process primitives, 11 interfaces — the seventy facts, named.
What the diff shows across the whole library: the divergence is categorical, not idiosyncratic. Every gap in the corpus decomposes into roughly eight recurring categories. Klir's blindness is always the same four structural ones — environment roles, connection kinds, process primitives, interfaces — which is the lossy-projection finding above, now itemized. Bunge rows add three of their own (directed annotations, interface designations, and the uncountable ⊘M line), and the few rows where Mobus is the blinder lens lose substances and unanswered process primitives. No model diverges for a reason outside this list. That means the third outcome is not thirty-four separate stories: it is a small set of question-mismatches between the traditions, instantiated thirty-four times.
What this does not establish
The spread is a count of unrendered items, not a semantic distance. Two models with the same spread can differ for unrelated reasons, and a low spread is not evidence that two lenses agree about meaning — only that they omit the same amount. The label diff names which categories differ and by how much, but a matched category is matched by label, not by content — two lenses each hiding "4 connection kinds" may be hiding different kinds. The extremes diff misses the middle lens, so since #284 a divergent row also prints the middle lens's hidden entries ("also hidden from …") — hidden only, because unspecified is a declined question rather than a loss; the middle lens's unspecified residue is still printed nowhere.
The refusal reasons also collapse harder than the counts suggest: 17 refused cells across 16 models, but only three distinct mechanisms — boundary-crossing without an interface (Mobus, ~11 models), self-dependency where k = o (Mobus, 2), and no bond between distinct components (Bunge, 4). Seventeen cells is not seventeen results.