v0.8.0
Omnigraph v0.8.0
The first release with an on-disk format change since v0.4.0. Graph commit
lineage now lives in __manifest, the two legacy commit-graph datasets are
gone, constraint validation is unified (and stricter in a few cases), and the
storage-format version is now visible to operators. Storage is
strict-single-version: a graph from an older release is rebuilt via
export/import, not migrated in place. Read the upgrade notes before rolling out.
Highlights
-
Graph lineage moved into
__manifest(internal schema v4). The commit DAG
(commits, parents, branch heads, actor) is now written in the same atomic
commit as a graph's table-version rows, closing the crash window where a
manifest version could exist without its lineage. The two legacy datasets
(_graph_commits.lance,_graph_commit_actors.lance) are no longer created or
read — one fewer moving part and two fewer directory listings per open. -
Stricter, unified constraint validation. The loader, mutation, and
branch-merge paths now share one validator, so they can no longer drift. All
changes are stricter (none relax an existing check): enum constraints are
enforced on merge, a@uniquevalue that collides with an already-committed
different row is rejected, duplicate-key semantics are precise (a key repeated
within one input batch is rejected; the same id across batches coalesces), and
overwrite loads validate per touched table. A pipeline that unknowingly relied
on one of these gaps will now fail loudly at write time. -
Storage-format version is visible.
omnigraph versionprints the format
version this binary serves,omnigraph snapshotreports a graph's on-disk
version, and the serverGET /healthzresponse includes it. -
Prebuilt linux-arm64 (aarch64) binaries now ship alongside Linux x86_64,
macOS arm64, and Windows x86_64, with a matching Homebrew bottle.
Upgrade
- Upgrade every binary that touches a graph to v0.8.0 together. Older-format
graphs are refused on open in both directions: a newer binary refuses an
old-format graph, and an old binary refuses this one. - Any pre-v0.8.0 graph is rebuilt, not migrated: export it with the old binary,
theninit+loadwith v0.8.0. Data, vectors, and blobs are preserved;
commit history and branches are not carried over. See the
upgrade guide.