omnigraph/docs/releases/v0.7.1.md
Andrew Altshuler b38b36e48f
release: v0.7.1 (#290)
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>
2026-06-19 23:12:44 +03:00

67 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 with `No 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 `@index` equality 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 apply` no 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-booting
`omnigraph-server --cluster` into an unescapable crash loop. Neither input is
an engine bug — the engine rejects both cleanly and before moving any graph
state — but `cluster apply` wrote 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 through `stage_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 list` surfaces 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 `--json` output,
matching what `GET /queries` already 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,
held `Dataset` handles + one shared Lance `Session` per 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.