Patch release over v0.7.0: three correctness fixes (#283 camelCase filters, #284 cluster-apply crash-loop, #277 branch-merge OOM on embedding tables), the #280 queries-list catalog-metadata improvement, and the #268 warm-read perf fix. No breaking changes, no on-disk format change, no migration. Version coherence: all 7 crate manifests + path-dep constraints, Cargo.lock, openapi.json, and AGENTS.md surveyed version bumped 0.7.0 -> 0.7.1. Full workspace gate green (1472 tests). Claude-Session: https://claude.ai/code/session_01FQ1Hf4eXLsJmeLUkTYBEw7 Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.8 KiB
Omnigraph v0.7.1
A patch release on top of v0.7.0: three correctness fixes (camelCase filters, cluster-apply crash loops, branch-merge OOM on embedding tables), one CLI catalog-metadata improvement, and a warm-read performance fix. No breaking changes, no on-disk format change, and no migration — drop-in over v0.7.0.
Fixes
-
camelCase property filters now execute (#283). A query — or a chained mutation — that filtered on a camelCase schema field (e.g.
repoName) linted and planned cleanly but failed at run time withNo field named reponame. Column names are case sensitive.The identifier's case was destroyed at two engine→Lance boundaries: the read-filter pushdown built the column with a case-normalizing constructor, and the pending-batch mutation scan re-parsed the predicate through a normalizing SQL context. Both now preserve case (the read path uses a case-preserving column reference; the pending scan disables SQL identifier normalization), so camelCase fields work consistently in read and write predicates and a camelCase@indexequality still routes to the scalar index. The fix is correct-by-construction rather than a per-query guard; a regression test pins index routing so a silent full-scan fallback can't slip back in. -
cluster applyno longer crash-loops a booting server (#284). Applying a schema change while a graph had non-main (agent/review) branches, or a migration that needed a backfill, could throw a freshly-bootingomnigraph-server --clusterinto an unescapable crash loop. Neither input is an engine bug — the engine rejects both cleanly and before moving any graph state — butcluster applywrote a recovery sidecar before calling the engine and left it in place on the clean rejection, and the server refuses to boot while a sidecar is pending. The asymmetric-cleanup path is fixed so a pre-movement rejection leaves no stale sidecar, breaking the loop. -
Branch-merge fast-forward no longer OOMs on embedding tables (#277). A branch→main fast-forward merge of a forked, embedding-bearing table re-derived the whole branch through a single Lance
merge_insert— a full-outer hash join over the entire delta — which exhausted the DataFusion memory pool on high-dimensional embeddings (e.g. 8k rows × 3072-dim) and hung or failed the merge. New rows now stream throughstage_append(no hash join), only genuinely-changed rows are upserted, embeddings are no longer stringified to diff them, and index coverage defers to the reconciler, so a fast-forward merge completes in bounded work. The three-way merge path is unchanged.
Improvements
-
omnigraph queries listsurfaces stored-query@description/@instruction(#280). The CLI now shows a stored query's catalog metadata — what it does and how to invoke it — in both human and--jsonoutput, matching whatGET /queriesalready returned. Previously both fields were silently dropped on the CLI side. -
Warm reads no longer pay an O(history) metadata tax (#268). Warm reads used to re-derive per-query metadata (coordinator re-open,
__manifest+ commit-graph re-scans, per-table re-open, double schema validation) on a cost that scaled with commit history and never warmed up. A warm same-branch read now does one cheap version probe, one schema read, and zero table opens on a warm repeat (warm coordinator reuse, open-by-location+version, validate-once, heldDatasethandles + one shared LanceSessionper graph). This also closes a commit-DAG fork where a same-branch write after an external commit could append off a stale cached head.
Upgrade notes
Drop-in over v0.7.0 — no configuration, schema, or data changes. Upgrade the server and CLI together as usual. Graphs created on v0.7.0 read and write identically on v0.7.1.