Skip to content

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 01 Jul 15:10
ab7a0dd

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 @unique value 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 version prints the format
    version this binary serves, omnigraph snapshot reports a graph's on-disk
    version, and the server GET /healthz response 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,
    then init + load with v0.8.0. Data, vectors, and blobs are preserved;
    commit history and branches are not carried over. See the
    upgrade guide.