Count · Understand

No-flatten doctrine

Slots stay separate from end to end — they are never concatenated or averaged into a single blob. Preserving per-lens structure is what lets Count and Differentiate work on real signal.

If you concatenate or average all of a constellation's slots into one big vector before storing it, what can the Differentiate verb still tell you?

If you concatenate or average all of a constellation's slots into one big vector before storing it, what can the Differentiate verb still tell you?

Nothing useful. Once the slots are flattened, the question "how many bits does THIS lens add?" has no answer — there are no separate lenses left to compare. Count and Differentiate only have signal to read because the slots were never flattened. That's why "never flatten" is a doctrine, not a preference.

Slots stay separate, end to end

The no-flatten doctrine is a hard rule: the slots of a constellation are never concatenated or averaged into one blob — not at storage, not at search, not anywhere along the path. Each lens’s view is preserved as itself from end to end.

Why it’s load-bearing, not cosmetic

Flattening feels efficient — one vector is simpler to store and index. But it destroys exactly the information the later verbs depend on:

So the doctrine isn’t aesthetic — it’s what keeps the signal alive for everything downstream. Keep the lenses separate, and the rest of Calyx has something real to work on. Blend them once, and the four verbs collapse into a single similarity lookup.

Practise to master it

Where this sits in the concept graph

Graph node C7 · tier F · target level Understand.

Sources