Dynamic collections — always a file, membership by query
- Decided
- 15 August 2026
- State
- binding
The query-backed collection is named a dynamic collection. It is always
declared by a direct collections/<name>.md file — same type: Collection, an
items.mode: query selector instead of an implicit root source. Membership is
computed on every read; no member list is ever stored.
type: Collection
title: Open tasks
itemType: Task
properties:
state: {kind: select, options: [open, done]}
items:
mode: query
from: workspace
query:
version: 1
filter:
id: state-is-open
type: condition
propertyId: state
operator: equals
value: open
from is required. Query-v1 accepts only its declared scope form, version:, and its closed filter grammar; malformed selectors fail closed and never
fall back to the implicit root source.
1
The query may select documents (by tag, by type, by property) and — once the block index exists — dynamic blocks by label. Results are served from the in-memory index; a machine-level snapshot may cache that index for instant opening, as a rebuildable copy and never as authority.