Columna 0.11.0 — RELATE faces: the many-to-many crossing executes
body chars: 5633
�� release notes (RATIFIED, Huayin, 2026-07-19).*
Columna 0.11.0
The many-to-many crossing executes — the overlap counted, and stated.
0.11.0 is the release where the RELATE — the anti-edge, the relationship that declares "connected,
and no lawful rollup exists" — stops merely refusing a category rollup and starts answering one,
lawfully. A relationship may now declare faces: named crossing dispositions. The first,
touch, executes. columna-core reaches 0.11.0; columna-server reaches 0.6.0.
The crossing executes (columna-core 0.11.0)
RELATEdeclares FACES.RELATE a <-> b VIA t(fcol, tcol) FACES { touch = TOUCH -- "folklore" }.
A face names the value's disposition on the trip across a non-functional (M:N) edge — the
self-teaching verb triadtouch(the value reaches every match),assign(it goes to exactly
one),alloc(it splits across) — never the selection criterion, which lives in the declaration.
The bareVIA <table>form is unchanged, so existing manifolds parse byte-identically.touchexecutes;assign/allocare declared-but-deferred.SELECT revenue AT {category.touch}
join-multiplies the measure through the relationship's bridge to the crossed grain: the value reaches
every category a product sits in, deliberately multi-counted, served in disclose with the
over-count as a material caveat.assign/allocparse to an honest, fail-closed refusal — v1 executes
touchonly. The bare{category}stays barred and now clarifies with the face menu.- The two skews of a crossing, both disclosed. Over-count (per-bucket totals overlap; the sum
exceeds the grand total) and its mirror, coverage/shortfall (a fine entity in no bucket is excluded
from every cell, so the total can fall short). The crossing reports its coverage either way. - Crossed-grain absence is a lawful zero — events basis only. On an events population the expansion
is honest arithmetic; on a spine/grid, replication would corrupt the grid's own completeness claim, so
the crossing is refused there until that thinking lands. - Adjudicated at publish, under the polarity law. A face is closed by default; its license opens
the crossing, minted only by the adjudicator (never on parse).touch= VERIFIED — membership
expansion is exact arithmetic, no partition-of-unity to reconcile. - The
VIAbridge is map-layer. Engine-visible (the join-multiply needs it), describe-invisible — it
never ridesrelates[]or any wire; the insulation test asserts it.contract_versionstays"1".
The crossing goes visible (columna-server 0.6.0)
describe_manifold'srelates[]gainsfaces[]— each declared disposition rides describe as
data ({name, scheme, description}), so a consulting agent and the clarify-menu see it from the source
of truth. Additive;contract_versionstays"1".- Cascadia declares
FACE touch. The demo shows the crossing:SELECT revenue AT {category}
clarifies with the face menu;SELECT revenue AT {category.touch}executes — 12 categories, touch
total $3,182,555.97 against the single-count grand total of $2,212,391.86 — about 1.44×. That ratio
is not noise: it is the bridge's own fan-out, 870 memberships over 600 products, made arithmetic. The
over-count is the fan-out, and the answer says so — plus the coverage line, 600/600, no shortfall. - The recapture corpus grows to ten (E1–E10). E6 records the face menu (the ask, with its reason and
the way forward); E10 mints the executed crossing (the answer — disclose, over_count, coverage). Zero
drift flags.
The site, re-sequenced (reader-discipline applied to assembly)
The reader-discipline law — narrative order is epistemic order — now governs page assembly, not just
chapter prose. One role per surface, one introduction total, every exhibit seated where the reader has
earned it: the homepage reduces to a single line and a route (the recording is the case); /case
becomes the case study literally, its three chapters the page in order with every generated exhibit
moved into its story position (the fourteen tables where the data is met; the two artifacts where the
design is derived; and in the live chapter, build → inspect → use — the trials, then the Explorer
seated between the claims tried and the claims used, then the questions and the four moods as the
payoff); /explorer keeps its role as structure, never a second intro. The exhibits are re-seated by a
render-time split — the chapters stay byte-identical to the ratified charter across all three surfaces.
The honest ledger
The next faces are on the record, not promised: assign (the canonical pick) and alloc — the crown,
the partition-of-unity that makes per-bucket totals reconcile, with the shipped WITH allocation
grammar as its parameter. The spine-basis crossing (replication on a grid) waits on the spine-grid
domain source (OF-5). And the primary post-launch language road, carried forward from 0.10.0,
remains OF-13 — native coordinate-value predicates in WHERE (region = 'west'), the universal SQL
reflex the interim anchor-and-read prompt law stands in for and retires when the native filter lands.
Language-first: OF-13 fixes it for every consumer, not just our own agent (OF-15 is its secondary, agent-only, sibling).
The whole crossing — the declaration, the menu, the executed answer with its overlap stated — ships in
the Cascadia demo. pip install columna, and ask for revenue by category yourself.