Skip to content
🚧 Early alpha — building the foundation. See the roadmap →

Vaults built outside the plugin: no extra tool, one invariant

Created Updated

The owner, verbatim:

“do we need a Crosswalker CLI to realistically go from files to upload in OpenClast or moving files into Obsidian to having something operational… is it possible to do all the work outside the plugin in Obsidian, or if you import then things aren’t going to be quite right?“

#DecisionWhy
1No extra tool. bun run cw (cli/crosswalker.ts) and bun run demo:build (scripts/demo-build.mjs) already build complete vaults on disk with the plugin’s own engineSchema-as-primitive: valid Tier 1 is the contract; any producer is first-class
2Invariant: the plugin derives every runtime surface from note identity, never from state only the import wizard writes, and never from pathsA cw-built or uploaded vault has no plugin data and no wizard history; folder shape varies by recipe and producer
3Per-vault app config is recreated by the plugin, not shipped in the vaultOpenClast rooms do not carry .obsidian; the “Color the graph by framework” command (PR #67, open) recreates graph.json
4Guardrail to add: a check that starts from a cw-built vault with no plugin data and asserts every runtime surface matches a wizard-built vaulttests/e2e/first-run.spec.ts covers the empty vault only; no test starts from a cw-built vault

The status bar read “no frameworks yet” in cw and demo:build vaults. Discovery looked only under the output-folder setting and refreshed on file events that fire before indexing. Both break the invariant. PR #67 (open) moves discovery to note identity across the vault and refreshes on metadata cache events.

ItemStatus
PR #67 (identity discovery, graph color command)Open; living page marks both rows pending
Parity guardrail (decision 4)Not started