1(master commit, person) → filtered vault
spaces.yaml.AGENTS.md, CLAUDE.md) scoped to that
person. A folder with more than 20 spaces is summarized in one line, so
the file no longer grows with every space added to that folder.Map.md: what that vault holds right now — spaces with note
counts, entity types, the most-connected notes, and what is pending. It is
computed from the built tree, so it structurally cannot name anything the
person cannot read, and it is listed in the manifest's generated set, so
write-back never mistakes a refresh for a user edit._meta/, and never the master-root AGENTS.md (the server
assistant protocol, which grants full access)..git) is fully restored. A half-written slice never becomes the live one... segments and absolute paths resolve to
no space, so they are excluded rather than escaping the master root.People/ content — and no
armed honeypot instruction — ever survives into any compiled vault...-traversal, and absolute-path attacks
above, plus the crash-recovery swap.(commit, person) → vault — is the one thing that never changes as the system scales from 5 people to 150+. Everything below it (per-person repos today, object storage later; direct file reads today, a search index already) can be swapped without touching the boundary.