nanograph 1.2.0
Committed graph state no longer lives in graph.manifest.json. New graphs initialize as NamespaceLineage on Lance 4, with committed state in Lance-backed internal tables.
The payoff: CDC is deterministic and reconstructed from Lance lineage instead of WAL replay, graph_version is a single clean version unit, managed media is database-owned (content-addressed in __blob_store), and stable row ids make external mirroring safe to rely on. One source of truth, no more scripts patching graph.manifest.json.
nanograph check has been replaced by nanograph lint, which combines strict per-query validation with whole-file coverage checks. The CLI, TypeScript SDK, and Swift SDK are all aligned to the new CDC contract.
1.2.0 is the canonical stable release for the new storage line. It supersedes v1.1.2.
What shipped
Migrating to NamespaceLineage
The old graph.manifest.json / _wal.jsonl mental model is legacy-only in 1.2. New graphs commit and replay from Lance-native state —__graph_snapshot, __graph_tx, and __graph_deletes. Scripts or tools that read or patch the old manifest and WAL need to stop for migrated graphs.
Unmigrated legacy databases no longer open for normal reads and writes in the 1.2 line. The CLI fails fast and prints the exact migration command. The supported upgrade path is:
nanograph storage migrate --db <db>.nano --target lineage-nativeMigration copies the currently visible graph state into a fresh NamespaceLineage database, swaps the root on success, and keeps the original as <db>.nano.v3-backup. It is intentionally not history-preserving — the migrated graph starts a fresh CDC epoch and graph_version restarts from 1. Managed imported media is rewritten into __blob_store and exposed as lanceblob://sha256/... URIs.
See the storage migration guide for pre-flight checks, verification, and rollback.
Upgrading
brew upgrade nanograph or grab the binary from the release. Rust crates, the npm package, and Swift packaging examples have all been bumped to 1.2.0.
Star the repo if you want to follow along.