Skip to content

Domains

Filipe Soares de Almeida edited this page Aug 28, 2026 · 1 revision

Domains

A memory's domain is a path: acme/x100/p200 is a routine inside a module inside a product. Every read that takes a domain covers its subdomains, so pulse('acme/x100') is the module-wide brief and pulse('acme/x100/p200') the routine's; subtree=False narrows a list to one level. list_domains() returns the tree, per level: what is filed on it, what its subtree holds, and whether it exists only because something deeper is filed under it.

A filter also resolves a name that is only the deep end of a path, since a caller usually has the routine's code and not the product above it: list_by_domain('p200') finds the routine at acme/x100/p200. The literal reading wins, an ambiguous name covers every branch holding it, and a response with room for it reports domain_scope. A rename moves exactly the path it was given.

The nesting lives in the string — no domains table, no id to resolve. Casing is a store-wide policy (preserve | lower | upper); a non-conforming domain is adjusted on write, not rejected.

A memory can belong to more than one. The path says where it lives — one parent chain, the thing a re-home renames. also says which subjects it is part of, and those cut across the tree: several routines can each be a step of one end-to-end process without any being the parent of the others. note(..., domain='acme/x100/p200', also='omni/x900') files on the routine and makes every read scoped to omni/x900 return it too, subtree included.

A cross-listing is a membership, not a move: domain is untouched, re-homing omni/x900 retargets the memberships pointing into it, and a path the memory's own domain already sits under is dropped as redundant. A path can exist only as a cross-listing — an end-to-end flow whose every step lives under some other branch — and it is a scope like any other, counted apart from the filed rows (also/subtree_also in list_domains(), scope.also in pulse) so the tree never totals more than the store.

Clone this wiki locally