LifeLab · root node · the title is a self-lens
Your instinct is right, and it's more than a tidy analogy: the page view already is ![[writing/the agency]]{} — a page transcluding itself. So the title line and a lens mount line should be the same line, drawn by the same renderer. Everything floating in the header is a term of that expression: the filter is the lens's terms, the properties are its drawer, the breadcrumb is its parent path. Right now each one is positioned by hand, so nothing agrees on a left edge.
today each piece placed by hand
writing
the agency⌄
+ :PROPERTIES:
{filter}
a time traveling agency that…
1title2properties3filter4block gutter
Three problems, one cause. The filter reads as a sibling of the properties rather than a term of the title. The properties sit at an edge nothing else uses. And the block gutter — the strongest vertical line on the page — starts to the right of the title, so the title floats outside the document instead of being its first line.
proposed one grid, gutter column shared
writing/
1gutter — one edge for every node2content column
One grid-template-columns: 16px 1fr for every node, root included. The title's * occupies the gutter column, its filter sits inline as the expression's terms, and :PROPERTIES: lands in the content column — exactly where a block's body goes. Nothing is positioned by hand anymore.
every node: grid-template-columns: 16px 1fr; gap: 0 9px gutter glyph in col 1, content in col 2 root node gets NO special layout — only a larger type size for its headline and a fold caret. :PROPERTIES: and {filter} are the ROOT BLOCK's drawer and terms. they inherit the content column for free.
as the view's root
writing/
the same lens, mounted inside another page
what's actually stored — identical in both
The only differences between the two renders are type size, breadcrumb, and where the source name goes. At the root, the name is the title and the parent path sits above as a breadcrumb; mounted, the name is inline and the parent path goes in the rail. Same expression, same drawer, same fold, same filter chips — so editing the root's filter and editing a mount's filter are one code path, and zooming into a mount produces a view bit-identical to opening the page directly.
a · 26px — a title that happens to be a block
writing/
Keeps the anchor. The filter at 13px beside a 26px headline sits below the cap height — needs baseline alignment, not centre, or it drifts.
b · 19px — a block that happens to be first
writing/
My pick. Still unmistakably the root, but the filter chips sit on its baseline naturally and the header occupies one line instead of a region.
c · 15px — fully flat
Most honest, and worth keeping as a debugging mode — but the root competes with its children and the "where am I" glance is gone.
Size is the only exception the root needs, and it's a rendering property of depth 0, not a structural one. Two details decide whether it looks intentional: align the filter chips to the headline's baseline (not centre), and optically align the gutter * to the cap height of the large text rather than its line box — otherwise it floats low and gives away that two systems are being reconciled.
| thing | becomes |
|---|---|
| the page header | Gone as a surface. It's the first block of the document. One renderer, one grid, one left edge. |
{filter} | The root block's lens terms, inline on its line — where they already are for every mount. Never a line of its own. |
:PROPERTIES: | The root block's drawer, in the content column. Same collapse affordance as any block's properties. |
| the breadcrumb | The lens's parent path, small, above, aligned to the same left edge. At depth 0 a breadcrumb; mounted, the rail. |
the ⌄ caret | The root block's fold. Folding the root collapses the page to its title — what a folded mount already does. |
| zoom | Bit-identical to opening the page, because there was never a second renderer. |
One thing to decide alongside it: whether the root block's headline is editable text or the page name. If the title is the name, typing in it is a rename — fine, but the field should say so (a slug-style affordance, per the naming spec) rather than behaving like ordinary prose. That's the only place the root's block-ness is genuinely a lie.