The concept map — Function · Form · Substance · Finish
Scroll — the concept lattice drills into Form, which becomes the slide.
Lattice has concepts on two levels, and they are one system at two scales. The four axes say how a slide is decided; the structural nouns say how Form is built; the Component is where they meet.
A slide is composed along four orthogonal axes — Function, Form, Substance, Finish. Form is the structural axis, and it resolves into a containment tree: a Frame divides the slide into Cells; each Cell holds a Tile.
The lattice
Section titled “The lattice”Drill into Form → the axes fall away and Frame · Cell · Tile fan out into the slide’s depth layers. Drag to orbit.
a Frame carves the slide into Cells, and each Cell holds a Tile — that containment seam is the whole system
- is-a Function
- selects a Frame
- binds Substance into Cells
- receives Finish
Drag to orbit the model, or pull the Drill control to push into the Form node — the other axes fall away and Frame · Cell · Tile fan into depth, the same move the hero plays on scroll. The four axes are mutually orthogonal — swap one and the others hold. The structural spine is containment and selection: a Frame carves the slide into Cells, and each Cell holds a Tile — the seam between a slicer and what fills it is what makes this a lattice rather than a flat list.
Level 1 — the four axes
Section titled “Level 1 — the four axes”Four independently-swappable decisions, each owned by a different audience and enforced in a different place. That separation is the point: each audience owns exactly one axis without reaching into another’s.
| Axis | Human word | The question | Owned by |
|---|---|---|---|
| Function | Purpose | what’s the point of this slide? | deck authors |
| Form | Layout | how is it composed? | layout designers |
| Substance | Content | what fills it? | engine maintainers |
| Finish | Style | what should it feel like? | theme designers |
The one word the model legislates against is “look” — it collides between Layout (Form) and Style (Finish), so “make it look different” is resolved into one or the other before acting.
Level 2 — why only Form decomposes
Section titled “Level 2 — why only Form decomposes”Form is the only axis that decomposes into structural nouns — because it is the only one whose answer is itself a composed structure: a Frame carves the slide into Cells, and each Cell holds a Tile. Function only classifies, Substance fills the Cells, and Finish styles the whole tree — none of those has a structure of its own, so none needs a noun set. Their “level 2” is a flat vocabulary: the four Substance sources, the Finish variant tiers.
| Noun | Is | Changes when… |
|---|---|---|
| Frame | a slicer — carves a box into sub-boxes | a composition pattern is added (a new layout) |
| Cell | a typed slot — sized, positioned, resolution-blind | the layout/geometry changes (a slot moves) |
| Tile | a filler — a leaf sized to fill one Cell | a data source changes |
The full structural model — z-planes, the resolution-blind Cell contract, the manifest — is the Form model.
The join — Component and Bucket
Section titled “The join — Component and Bucket”A Component fills the content Tile and owns its own internal layout there. It selects a Frame for the slide and binds Substance into the Cells that Frame produces; it carries a Function and receives Finish — the join, on one slide. A Bucket is orthogonal bookkeeping: the disk grouping of components (mostly one-to-one with Function; a few — chart, diagram, math, code, legal — diverge to colocate a shared renderer or authoring vocabulary).
Abstract vs. concrete — the three rungs
Section titled “Abstract vs. concrete — the three rungs”The same concept appears at three levels of concreteness, and the jumps are the whole pipeline: a slide is built by realizing abstract types as catalog data, then interpreting that data into pixels.
| Rung | What it is | Example |
|---|---|---|
| 1 — abstract | a type / axis / kind — vocabulary and schema | the Form axis; the Frame slicer kind |
| 2 — concrete-as-data | a catalog entry — manifest / CSS on disk, validated | the split-panel Frame manifest; the cards-grid component |
| 3 — concrete-at-render | the realized instance — pixels in the PDF | this slide’s carved boxes, resolved Cells, populated Tiles |
The four axes live entirely at rung 1 — they are dimensions of decision, not things. Form’s three nouns each span all three rungs. The catch: rung 2 only looks concrete — the data is inert until render; the only rung that is truly instantiated is the slide itself.
Encoded, and kept honest
Section titled “Encoded, and kept honest”This map isn’t only prose. The vocabulary of every concept and the structural relationships between them are encoded as machine-readable catalogs the engine reads, and a drift gate keeps them in step with what Lattice actually ships — so the map can’t claim a concept, count, or relationship the engine doesn’t have. How each piece is encoded and enforced — the field, catalog, and gate behind it — is the engine’s concern, and lives in the concept model in code (engineering/architecture.md).