shtukbase
Format
Download for Mac
Contents

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:
1
, and its closed filter grammar; malformed selectors fail closed and never fall back to the implicit root source.

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.