# 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](../user/operations/upgrade.md).