shtukbase
Format
Download for Mac
Contents

Collections are declarations, and roots remain free

Decided
15 August 2026
State
binding

The canonical declaration namespace is collections/. A direct child named collections/<name>.md with type: Collection is discoverable as a collection declaration. Each declaration is an ordinary Markdown file with the collection's schema and views. Replaced 2026-10-16 by D37: declarations are discovered by type at any depth, without a reserved containing folder.

The dividing principle: outside collections/ the item layout is free — folders and files may use any arrangement, useful to anyone in any tool. The preferred absent-items source is the root folder matching the declaration stem; an explicit selector may choose another path, several paths, a type scan or a strict query. A collection declaration is a statement about interpretation and display, and the items it describes stay readable without it. Replaced 2026-10-16 by D37: an implicit source is the declaration's sibling folder, not a root inferred from a namespace.

One tree has one ownership rule: X.<ext> owns the sibling folder X/. Markdown type identifies pages, collections, records and boards. An HTML extension identifies a web page. These kinds may contain each other at any depth. A folder without a sibling document is a section. collections/ and shtuks/boards/ are ordinary names, not discovery rules.

A collection is any document with type: Collection. Its address is its own extensionless path. Without items, exact-itemType direct Markdown children in its sibling folder form its membership and new records go there. writeTo overrides the create destination. Explicit path, paths, type and query selectors retain their grammar; creation then requires writeTo. A malformed selector matches nothing. Every destination receives the same collision and bundle-boundary checks. Membership remains derived, and a selector gives no ownership over files it selects elsewhere.

A feature's own surface is derived, not a service folder. service: true or the shared feature-recognition seam identifies an own-surface collection from its declared types, selectors and relations. A title or path never does. General Pages, shelves and collection lists omit that declaration and its owned subtree; dedicated readers, addresses and search retain all the files. Conversations are recognized without marking their declaration service, and their individual rows remain in the chat list.

The declaration still describes interpretation and display. Its records remain ordinary readable documents without it. The active layout is described in Layout.