LifeLab · summoning & lenses
Vocabulary: every name denotes a set of blocks. A page is the set that lives there; a tag is the set marked so; a lens is a saved refinement (filter + sort + render) over any set. ![[ summons named sets — never syntax. The funnel on any region header refines it in place. Naming a refinement files it under lens/, which makes it summonable. The word "query" never appears.
project/lifelab the page vs :project/lifelab: the tag — both complete, one arrow-key apart, counts + badge say which contract you get.
Summoning a tag renders a computed region — Logseq's tag-page, done honestly: badge, provenance, no fake ownership.
Filtering is direct manipulation on the region header. Date values complete from vocabulary with resolved ranges — never enumerate 50 years of data.
Refined region → lens/lifelab-now → appears in the picker like any page. Delete a lens, lose a lens — samples untouched.
The picker completes named sets: pages (lives-there), tags (marked), lenses (saved refinements), and the union row when both exist for one name. Kind badges carry the contract — page summons referenced, tag summons computed. Counts come from the small property index, never a scan.
Page region above (yesterday's ![[project/lifelab]]): page order, ghost-add writes there. Tag region below: provenance groups, no fake ownership — add is born matching (tag pre-applied, homed to journal/today). Both carry the funnel icon; both × to close the window.
Funnel open on the tag region: todo chip already on, when: completing. Values are words and arithmetic, not data — each row shows its resolved range so "next week" can never disagree with you silently. org's +2w vocabulary, with the range operator org never had. An unsaved lens pill appears the moment the region diverges from the bare set.
Naming files the refinement under lens/: source (:project/lifelab:) + chips (todo, when:-3w..) + shape. The region header now shows the lens name; the same picker from frame 1 now completes it — the loop closes with zero new syntax. Deleting the lens deletes a lens; the 7 blocks never notice.
The whole system in one sentence: names denote sets (page = lives-there, tag = marked, lens = saved refinement), ![[ summons any named set as a region with an honest badge, the funnel refines any region in place with chips whose date values resolve visibly, and naming a refinement mints a new summonable name. No query language ever appears in markdown — the entry line's grammar (frames in Entry Line — Metadata Facets) exists only inside pickers and funnels, where completion carries it.