docs/selection.md
Is representation selection derivable?
Yes, up to a boundary — and the boundary is the answer.
src/lib/grammar/selection.ts, tests/selection.test.ts.
1. argmin(false claims) is not the criterion
Three failures. The third is fatal.
Ties. Several classes reach zero. argmin returns a set, not a choice.
Incommensurability. Summing an axis-ordering violation with a fabricated-conservation violation assumes they are worth the same. That is a weighting — a convention — smuggled in as arithmetic, and it is the "algebraic profile ≠ semantic identity" error committed at the level of counts.
So the implementation uses no scalar at all. Violations are compared as sets of violated laws under inclusion — a partial order, carrying no weights.
A blank page is the global minimum. It makes no false claims whatsoever. Minimising alone selects nothing, and the force-layout case proves this mechanically: it preserves nothing of any structure, so under pure minimisation emptiness competes.
That forces a two-sided criterion — preserve the most, invent the least — and two objectives have no unique minimum. They have a Pareto frontier.
2. What is derivable
Selection is derivable up to the frontier. Every dominated representation is eliminated by proof. Choosing within the frontier is a convention and must be declared as one.
Dominance is the product of two partial orders: violation sets under ⊇, delivered coverage under ⊆. Incomparable candidates dominate each other in neither direction, which is exactly what produces a frontier rather than a winner.
Coverage is delivered, not advertised. A matrix's capacity to carry direction is worth nothing when the structure has none. Scoring capacity would let a general-purpose class dominate everything by carrying what nobody asked for.
3. It produces proofs
The question the reconstruction left open, answered with its reasoning:
structure: import dependency (directed, arity 2)
✗ table — dominated by matrix; preserves less (nothing of this structure)
✗ timeline — dominated by table; makes false claims: no temporal extent
✗ tree — dominated by table; makes false claims: non-functional parent, cycle
✗ heat map — dominated by matrix; preserves less (nothing of this structure)
✗ Sankey — dominated by matrix; makes false claims: cycle, fabricated conservation
✗ force — dominated by table; makes false claims: non-deterministic layout
✓ matrix — preserves directed; no false claim
→ derived: matrix
Unique, and justified from the semantics. No step appeals to appearance.
4. And it declines when it should
structure: directory tree (categorical, arity 2)
✓ table — preserves categorical, ordered; no false claim
✓ matrix — preserves categorical, ordered; no false claim
→ NOT derived. 2 incomparable candidates; choosing among them is a
CONVENTION and must be declared.
A selector that always returns an answer is hiding a preference. This one names the point where semantics runs out — and that point is semantic-typing.md's irreducible convention layer, reached from a new direction.
5. The uncomfortable result
In that second proof: tree is dominated by table.
On truth-preservation grounds a table of (child, parent) pairs beats a tree for
a hierarchy. The table preserves everything the tree does and asserts less — a
tree additionally claims an ordering over siblings that the data does not have.
That is almost certainly the wrong advice for a human reader. A tree makes ancestry legible; a table does not. But legibility is condition 3 — perceptual accuracy — which this project has held from the beginning cannot be self-certified:
No test in this repository can establish that an observer understood something.
So the honest statement of what was crossed:
| Derivable? | |
|---|---|
| which representation preserves the most truth and invents the least | yes, to the frontier, with a proof |
| which representation a human will understand best | no — outside the calculus, by a limit stated long before this |
Calling the first "the best visualization" would be the substitution defect at its largest: measuring truth-preservation and reporting comprehension. The engine selects on what it can measure and says so.
6. So: proof-producing, and not a designer
What exists is an engine that eliminates representations by proof, states the surviving frontier, and refuses to break a tie it has no grounds to break. It can explain why a matrix over a city, and why it cannot choose between a table and a matrix.
That is narrower than "selected because it preserves the most truth" and it is what the derivation supports.
Standing
| Question | Answer |
|---|---|
Is argmin(false claims) well-defined? |
no — ties, incommensurability, and a blank page wins |
| Is selection derivable? | yes, to the Pareto frontier |
| Does it produce a proof? | yes — every elimination names its dominator and reason |
| Does it ever decide by preference? | no — it declares a convention instead |
| Does it select the best visualization? | no — comprehension is outside it |
What is still not established
- The frontier is only as good as the catalogue. Seven classes, not a basis; a missing class could dominate a current winner.
preservesis declared, not verified — unchanged from the previous round, and now load-bearing for selection rather than only for description.- Dominance treats all violated laws as incomparable. That avoids invented weights and means a class with one severe violation and one with three trivial ones may be incomparable when a human would not hesitate.
- Nothing renders the winner. The matrix is selected and undrawn, so the claim that it carries the dependency graph is still argued rather than shown.
188 → 194 tests, tsc clean.
7. The proof, rendered — and a negative result
tests/render-proof.ts draws the elimination beside the representation it
selected. Six rows, each naming its dominator and reason, ending in
"Therefore matrix is non-dominated."
Alongside it, a test that could have gone either way: run the same fidelity instrument over the matrix's 1-D seriation and the earlier 2-D embedding.
2-D embedding 54.5% reversed
1-D seriation 57.6% reversed
The seriation is worse than the layout it replaced. Both are above the coin-flip floor.
This was measured after the matrix had already been selected, and the artifact reports it as it came out rather than being rebuilt to agree.
It does not overturn the selection, and it narrows what the selection claims.
The matrix was chosen because the relation is preserved exactly — cell
(i,j) is the fact, losslessly, whatever order the axes are in. Row order is a
separate, secondary claim, and the measurement says it carries nothing.
So the honest reading of that matrix is: the cells are exact and the axes are arbitrary. Two claims, separable, and only one survived. A version of this page that had shown a tidy seriation without measuring it would have been the more persuasive artifact and the less true one.
It also sharpens §5's limit from the other side. The calculus ranks representations on truth-preservation; within a chosen representation it says nothing about whether the secondary presentation choices are any good. That took a separate measurement, and the measurement was unkind.