Contents
7. Extensions
Anything not covered by the core schema goes in an extensions object, present
at every level (document, tree, node, edge). Keys MUST be namespaced by
reverse-DNS or product slug, e.g.:
"extensions": {
"aspen-grove": { "localId": "a7x2" },
"loomsidian": { "unread": false, "collapsed": true }
}
Rules:
- Importers MUST preserve
extensionsthey don't understand across re-export. - Core semantics MUST NOT depend on extension content — a reader ignoring all extensions sees a correct tree.
- Per-viewer UI state (collapsed, unread, hoisted, scroll position) MUST NOT
appear outside
extensions.
