v1.1.9 - Go
[v1.1.9] - Go - 6.24.2026 (for Ez, who never stops racing)
Full Graphiti support - special thanks to @joefrancia for all the testing and co-profiling with me. includes #227 and Added followup fixes an edge condition race on the cache and audit logging race.
Changed
- Cypher hot paths were tightened across execution, planning, and clause handling:
- structural expression evaluation now uses dedicated fast paths for common operators and property/literal forms;
- hot candidate paths compile
WHEREpredicates earlier; CALL-tail retrieval and composite subquery binding preservation were both corrected and optimized;- keyword scanning now caches results and narrows stale-index fallback behavior.
- Vector-search execution was made more selective and more passive during ingest:
- query-time vector index warmups are avoided on read paths;
- vector fast paths now use owned search-readiness gates instead of forcing full warmup semantics;
- Graphiti ingest keeps vector reads and writes passive where appropriate;
- exact file-store candidates are now included for property-vector node queries so dedup and ingest paths do not depend solely on HNSW recall.
- Storage fast paths were extended for vector-heavy workloads:
- node properties are projected for vector fast paths;
- current-head node body decodes are cached for MVCC reads;
- tokenized property decode overhead was reduced;
- async flush now blocks prefix counts while data is in flight to preserve correctness.
- Search write-path behavior was refined for live updates and shutdown safety:
- unchanged vector reindexing is skipped during HNSW live writes;
- write-side indexing now respects lazy warming;
- background vector work stops cleanly after shutdown;
- CPU brute-force vector search remains opt-in rather than being enabled implicitly.
- Bolt compatibility was extended for modern temporal values:
localDateTimePackStream encoding was added so typed temporal round-trips behave correctly with newer driver payloads.
- Documentation and release-facing notes were refreshed:
- README and vector-search docs were updated alongside the execution changes;
- configuration and environment-variable docs were aligned with the latest search and vector behavior.
Fixed
- Cypher vector and mutation correctness issues were resolved:
- relationship-bound
WITH ... CALLvector-property paths now execute side effects and bind relationship variables correctly; - node mutation indexing now updates properly;
- relationship batch match paths preserve indexed matches instead of dropping them;
- stale indexed MATCH buckets are verified before hot-path reuse;
- temporal values expanded from nested parameter maps now round-trip as typed Cypher literals instead of stringified timestamps.
- relationship-bound
- Graphiti compatibility and subquery binding behavior were hardened:
- correlated bindings now survive composite subqueries;
- vector reads stay passive during Graphiti ingest rather than forcing storage-scan fallbacks.
- Search lifecycle and readiness edge cases were corrected:
- write-side lazy warming is honored;
- live vector-query capability is separated from full ONLINE readiness;
- unchanged HNSW reindex work is skipped on live writes;
- file-backed property-vector queries now use the Cypher vector path consistently.
- Storage and async-engine regressions were addressed:
- prefix-count operations no longer race against async flush state;
- MVCC and node-body decode paths are stable under hot read/write workloads.
Tests
- Expanded regression coverage across Cypher, search, storage, Bolt, and Graphiti-specific scenarios, including:
- vector query shape coverage;
- subquery and clause-boundary regressions;
- property-vector file-store lookup behavior;
- MVCC and async flush correctness;
- temporal encoding round-trip verification.
Full Changelog: v1.1.7...v1.1.9
Full Changelog: v1.1.8...v1.1.9