[v1.0.45] - 2026-05-08
Added
- Broader hot-path coverage for
UNWIND MATCH SETupdates:- added a batched
UNWIND+MATCH+SEThot path so more update-heavy Cypher write workloads can stay on the optimized execution path.
- added a batched
Changed
Browser query-results grid behavior:
- updated the web UI to
@ornery/ui-grid-*1.0.5, bringing the latest resize and scroll tracking behavior from the new grid runtime. - query-results selection now relies on the grid's per-column opt-out behavior for the synthetic Select column, so hidden sort and group controls follow the legacy ui-grid behavior instead of rendering as disabled header buttons.
- updated the web UI to
Cypher write-path routing:
- tightened
MATCH ... SEThot-path routing so optimized update execution only applies when uniqueness guarantees are present, reducing incorrect fast-path routing for ambiguous match shapes.
- tightened
Maintenance and dependency refreshes:
- refreshed UI grid dependencies from the
1.0.4line to1.0.5and regenerated the UI lockfile to match the published package graph. - updated package metadata and peer-dependency wiring in the UI package so installs resolve cleanly against the latest grid release.
- folded in mainline merge-conflict cleanup that affected the release range.
- refreshed UI grid dependencies from the
Fixed
Embedding worker lifecycle stability:
- fixed overlapping embed-worker reset and close flows by serializing worker lifecycle transitions, preventing wait-group reuse panics during concurrent embedding workloads.
Grid column opt-out chrome:
- fixed the query-results Select column so column-level sorting and grouping opt-outs now hide header controls using the grid's native per-column behavior instead of relying on CSS workarounds.
Technical Details
- Range covered:
v1.0.44..HEAD - Commits in range: 9 (non-merge)
- Repository delta: 15 files changed, +1,322 / -582 lines
- Primary focus areas: query-results grid upgrades,
UNWIND MATCH SEThot-path expansion and safety, embedding-worker lifecycle stability, and targeted UI package maintenance.
[v1.0.44] Lithium - 2026-05-02
Added
Convenience defaults for vLLM-backed local generation:
- added vLLM-friendly defaults in the Heimdall/OpenAI-compatible generation path so local and self-hosted inference setups require less manual configuration.
Relationship-head recovery fallback for storage indexes:
- added an edge-between head-index fallback path so relationship lookups can recover more reliably when derived index state needs repair or reconstruction.
Named relationship-set support in batched merge flows:
- added support for named relationship sets in
UNWINDmerge batches, expanding the structured relationship-merge shapes that can stay on the optimized execution path.
- added support for named relationship sets in
Changed
Relationship merge and probe execution paths:
- optimized relationship probe planning and batched SQL relationship writes so more merge-heavy Cypher workloads avoid redundant work.
- shared node-lookup cache locking across executor and transaction clones to reduce duplicated lookup coordination during concurrent execution.
Transient error classification and retry signaling:
- refactored transient conflict handling into the shared
pkg/errorssurface and mapped Bolt transaction conflicts onto explicit transient error semantics. - improved server-side failure handling so retryable conflict conditions are surfaced more consistently to clients.
- refactored transient conflict handling into the shared
Storage relationship-index maintenance:
- hardened edge-between index repair, exact relationship lookups, and streamed edge index rebuild behavior to keep relationship indexes aligned with stored graph state.
Documentation and dependency maintenance:
- refreshed the README, retention-policy guide, and hot-path query cookbook to match the current relationship hot-path behavior and operator guidance.
- updated Go module dependencies and UI package dependencies as part of the release range.
Fixed
Relationship merge property-set correctness:
- fixed relationship merge property updates so property sets are applied correctly across merge execution paths.
Relationship hot-path edge cases:
- fixed edge-case handling in relationship hot paths, including exact edge lookup behavior and fallback coverage for edge-between index state.
Bolt transient failure behavior:
- fixed Bolt failure handling so conflict-driven transaction failures are decoded and classified more robustly for clients.
Tests
- Added and expanded coverage for:
- relationship merge property handling and named relationship-set merge batches
- relationship hot-path routing, SQL relationship writes, and probe optimization behavior
- Bolt transient error mapping and failure-chunk decoding
- storage edge-between index repair, streamed rebuild behavior, and exact relationship lookup regressions
- shared-state isolation in affected regression tests
Documentation
- Added and refreshed:
- retention policy operator guidance
- README release-facing behavior notes
- hot-path cookbook coverage for the current relationship query optimizations
Technical Details
- Range covered:
v1.0.43..HEAD - Commits in range: 23 (non-merge)
- Repository delta: 40 files changed, +2,494 / -255 lines
- Primary focus areas: relationship merge correctness, relationship hot-path and edge-index reliability, transient Bolt conflict handling, convenience inference defaults, and targeted documentation/dependency refreshes.
[v1.0.43] Clockwork - 2026-04-24
Added
Runtime retention and privacy control plane:
- added runtime retention sweep management in the database layer, including sweep budgeting, excluded-label handling, record collection, and immediate sweep triggering.
- added admin retention endpoints for policies, legal holds, erasure requests, manual sweeps, and retention status.
- added GDPR integration hooks so privacy and retention workflows can share the same server-side control surface.
Retention administration UI:
- added a dedicated Retention Admin page in the web UI with policy editing, legal hold management, erasure request processing, defaults loading, and sweep controls.
- wired new client API types and routes so operators can manage retention behavior from the browser instead of only through raw admin calls.
Constraint and planner regression coverage:
- added extensive deterministic tests for constraint contract parsing, schema validation, Bolt database-manager behavior, transaction wrapper reuse,
UNWINDmerge batches, and fabric helper types. - added regression coverage around database-scoped rollback handling and deterministic multidatabase enforcement behavior.
- added extensive deterministic tests for constraint contract parsing, schema validation, Bolt database-manager behavior, transaction wrapper reuse,
Knowledge-layer documentation and research material:
- added a full knowledge-layer persistence implementation plan, expanded design material, Kalman-focused planning docs, and a new research-paper draft on persistence semantics. v1.1.0
Changed
Retention configuration and operator surface:
- expanded runtime config, example YAML, and macOS/app UI surfaces for retention and memory-management controls.
- made chunk overlap configurable in the macOS app and web UI chunking flow.
Cypher MERGE and
UNWIND MATCHrouting:- routed more
UNWIND+MATCH/map-merge shapes through the hot path and tightened optional-match fallback behavior. - started using unique-constraint and unique-index information more aggressively for merge lookup and validation paths.
- routed more
Constraint contract parsing and validation internals:
- replaced older regex-heavy constraint-contract parsing with allocation-free keyword scanning helpers.
- normalized unique-constraint cache keys and extended contract matching to cover broader label combinations and namespace cases.
Documentation and release content:
- refreshed README, operations docs, compliance docs, user-guide indexes, and the hot-path cookbook to match the current runtime behavior.
- removed or folded obsolete planning material into the newer knowledge-layer and compliance documentation set.
Dependency maintenance:
- refreshed Go module dependencies and updated UI package dependencies as part of the release range.
Fixed
Database-scoped Bolt rollback correctness:
- fixed Bolt explicit transaction rollback so rollback is honored against the correct selected database instead of leaking across database scope boundaries.
- hardened transaction wrapper reuse paths and related rollback regressions in Bolt/Cypher integration tests.
Constraint validation correctness and safety:
- fixed unique lookup and validation paths to guard non-comparable values and avoid incorrect equality handling during unique checks.
- corrected constraint-validation plumbing so unique indexes and schema checks stay aligned across storage and Cypher surfaces.
Local LLM generation stability:
- fixed CGO generation-path issues in the local llama integration, including causal-attention setup and health checks for non-unified KV caches.
Deterministic multidatabase enforcement tests:
- fixed rate-limit and enforcement test behavior to avoid timing-driven flakes and keep multidatabase coverage deterministic.
Tests
- Added and expanded coverage for:
- retention manager behavior, retention admin handlers, and privacy/erasure workflows
- Bolt database-manager integration, database-scoped rollback, and transaction-wrapper reuse
UNWIND/MATCH/MERGEhot-path routing and fallback behavior- constraint contract parsing, validation, schema interactions, and unique lookup edge cases
- fabric helper coverage, plan-cache behavior, and multidatabase enforcement determinism
Documentation
- Added and refreshed:
- GDPR compliance guidance and retention-policy operator documentation
- knowledge-layer persistence plan and implementation details
- Kalman behavioral signal planning notes
- persistence-semantics research paper draft, evaluation plan, bibliography, and related-work notes
Technical Details
- Range covered:
v1.0.42-hotfix..HEAD - Commits in range: 47 (non-merge)
- Repository delta: 64 files changed, +11,730 / -1,528 lines
- Primary focus areas: retention/GDPR operator workflows, Bolt rollback correctness, unique-constraint driven planner and validation improvements, deterministic regression coverage, and major knowledge-layer documentation expansion.
[v1.0.42-hotfix] Anthem Pt. 2 - 2026-04-17
Added
Explicit Bolt host binding support:
- added a dedicated Bolt host field so the Bolt listener can bind to the resolved server address instead of always falling back to the wildcard socket.
Bind-address regression coverage:
- added CLI/config/environment precedence tests for server bind resolution.
- added Bolt listener tests to verify loopback binding and secure default host behavior.
Changed
Bind-address resolution precedence:
- centralized bind-address resolution for
servestartup so CLI flags, loaded config, and explicit protocol-specific environment variables are resolved consistently before HTTP and Bolt are started. - aligned startup endpoint display output with the resolved address, while still presenting
localhostfor wildcard binds in user-facing logs.
- centralized bind-address resolution for
Dependency maintenance:
- updated
github.com/hybridgroup/yzmatov1.12.0. - refreshed related Go module entries pulled in by the dependency update.
- updated UI dev dependencies:
postcssto8.5.10andtypescriptto6.0.3.
- updated
Fixed
- Bolt listener exposure:
- fixed the Bolt server so configured bind addresses now apply to the actual listener instead of only affecting user-facing startup messages.
- restored secure loopback binding as the default when no explicit override is provided.
Tests
- Added and expanded coverage for:
- CLI
--addressprecedence over config and environment sources - config-file and explicit environment bind-address overrides
- Bolt listener binding to the configured host instead of wildcard interfaces
- CLI
Technical Details
- Commit covered:
adce4f9a9fc7b6aada07c0bfa2d737cd7a6efaca - Commits in release: 1
- Repository delta: 8 files changed, +194 / -26 lines
- Primary focus areas: Bolt bind-address correctness, secure default listener behavior, regression coverage, and targeted Go/UI dependency maintenance.
[v1.0.42] Anthem - 2026-04-16
Added
Heimdall tool coverage and documentation:
- exposed local chat tool routing more consistently so the OpenAI compatible endpoint can surface the user's tools from an agent into injected actions in chat flows.
- added and refreshed Heimdall, knowledge-layer, and compliance documentation, including new guides for the Heimdall AI assistant and knowledge-layer persistence planning.
Regression coverage for transactional and constraint edge cases:
- added regression coverage for constraint handling in Bolt/Cypher paths.
- added targeted tests for async flush race conditions and complex
UNWIND/MERGEfallback behavior.
Changed
Heimdall local chat behavior:
- hardened action parsing, tool forwarding, and local chat prompt behavior so action envelopes are handled more predictably.
- simplified the watcher hello/search tool flow and aligned injected action naming with the current plugin surface.
Cypher hot paths and fallback routing:
- generalized hot-path execution to support broader n-ary and generic query shapes.
- refined
UNWIND+MERGEfallback routing so complex query shapes are handed off to the full executor more consistently. - preserved transaction-visible lookups in fallback execution paths to keep behavior aligned with in-transaction state.
Documentation and release content:
- folded older planning material into the current docs set and refreshed migration, AI-agent, and deployment-facing documentation.
Fixed
MERGE cache and transaction correctness:
- fixed stale
MERGEcache invalidation after implicit transaction aborts. - fixed async flush timing so MVCC heads do not advance while a transaction still depends on its visible state.
- fixed stale
Installer and model download reliability:
- updated installer/download locations and added validation so failed model downloads are not accepted as valid artifacts.
- improved macOS model download handling to verify downloaded files before treating them as usable GGUF models.
Heimdall local chat stability:
- fixed local chat template replay and unknown tool-call forwarding behavior.
- hardened Heimdall test races and related local chat execution edge cases.
Tests
- Added and expanded coverage for:
- async engine flush/count race handling
UNWIND/MERGEfallback and optional lookup regression paths- constraint regressions across Bolt and Cypher execution
- Heimdall local chat tool execution and race-sensitive paths
Technical Details
- Range covered:
v1.0.41..HEAD - Commits in range: 19 (non-merge)
- Repository delta: 48 files changed, +5,437 / -3,007 lines
- Primary focus areas: Cypher fallback correctness, transaction visibility and async flush safety, Heimdall local chat/tool handling, installer download validation, and documentation consolidation.
[v1.0.41] "Blue Orchid" - 2026-04-15
Added
Graph explorer UI:
- added a new graph explorer tab with neighborhood visualization and node-details integration.
- wired the browser page, node details panel, and client API helpers to support the new exploration flow.
MERGE and string-literal infrastructure:
- added shared string-literal decoding helpers so Cypher literal handling is consistent across execution paths.
- expanded merge-chain and relationship-shape support for the fallback and hot-path planner routes.
Changed
UNWIND and MERGE hot paths:
- generalized the staged compound
UNWINDmutation path and tightened the merge-chain hot path so parameter handling and optional lookups behave consistently. - memoized the merge-chain path where the executor can safely reuse the structured shape detection.
- generalized the staged compound
Cypher executor plumbing:
- updated executor, pattern parsing, property evaluation, and clause handling to align the new hot-path routing logic.
- refreshed the query-shape tests and regression coverage around compound
UNWIND, merge chains, and literal decoding.
Release and dependency maintenance:
- updated README/version metadata and release workflows for the new build.
- refreshed dependency pins across Go, UI, llama.cpp, Docker, and build scripts.
- updated the hot-path performance cookbook to document the new query-shape coverage.
Fixed
Fallback MERGE binding preservation:
- fixed fallback MERGE chain handling so bindings are preserved correctly when the structured hot path is not selected.
- restored parameter handling in the generalized
UNWINDmerge-chain route.
Linker and packaging stability:
- fixed the native linker path used by the CUDA build flow.
- cleaned up version bump artifacts so the packaged build reports
1.0.41consistently.
Tests
- Added and expanded coverage for:
- compound
UNWINDmutation staging and merge-chain hot-path routing - fallback MERGE chain bindings and optional lookup behavior
- string-literal decoding and property evaluation helpers
- graph explorer browser integration and node-details interactions
- executor trace coverage and query-shape regression cases
- compound
Technical Details
- Range covered:
v1.0.40..HEAD - Commits in range: 10 (non-merge)
- Repository delta: 50 files changed, +3,163 / -502 lines
- Primary focus areas: Cypher merge/UNWIND hot-path generalization, literal decoding cleanup, graph explorer UI delivery, dependency refreshes, and packaging/build fixes.
[v1.0.40] "Kiyote" by rumspringa - 2026-04-11
Added
Structured Cypher hot-path matchers:
- replaced several regex-based fast-path routers with scanner/helper-based matchers for compound queries,
UNWINDroutes, traversal shapes, shortest-path handling, and related query-shape detection. - added explicit hot-path trace coverage so the executor can report when the new structured matchers are used.
- replaced several regex-based fast-path routers with scanner/helper-based matchers for compound queries,
Parser comparison reporting:
- added an integrated Nornic-vs-ANTLR executor-flow comparison harness that prints per-query timing ratios and an overall summary.
- added dedicated parser-only validation and full-parse reports so parser timings are no longer conflated with executor work.
- stabilized the comparison output so users and maintainers can trust the speedup numbers instead of single-run noise.
Changed
Traversal and match planning:
- improved traversal planning for top-k seeded lookups so multi-key
ORDER BYshapes can still use the indexed path when possible. - compiled common binding-row
WHEREpredicates and made traversal execution honor the active temporal viewport consistently. - refined MERGE routing for composite-key patterns and hardened batch deduplication so key collisions are handled predictably.
- improved traversal planning for top-k seeded lookups so multi-key
Cypher execution cleanup:
- migrated hot-path query-shape parsing away from regex capture arrays and onto shared helpers.
- removed obsolete hot-path regex definitions after the structured matcher cutover.
- refreshed parser-mode and query-pattern plumbing so the same user-facing queries route more consistently across executor paths.
Documentation and release hygiene:
- refreshed README and deployment notes to reflect the current product direction.
- updated performance notes for hybrid Bolt queries.
- refreshed dependencies as part of the release cycle.
Fixed
Shortest-path parsing regression:
- fixed a panic in single-
MATCHshortest-path queries by correcting the clause boundary scan used to recover the precedingMATCHclause. - added regression coverage for the exact Bolt fallback query shape that exposed the issue.
- fixed a panic in single-
Query-shape stability:
- restored deterministic ordering and route selection for the query families that were being optimized in the hot path.
- tightened parser and traversal tests around the new helper-based implementations.
Tests
- Added and expanded coverage for:
- structured compound-query matcher behavior and reject reasons
- hot-path trace assertions for compound query routing and traversal seeding
- shortest-path parsing, execution, and regression handling
UNWINDcollect/distinct and batch merge helper paths- parser comparison output and performance reporting
Technical Details
- Range covered:
v1.0.39..HEAD - Commits in range: 13 (non-merge)
- Primary focus areas: Cypher hot-path matcher migration, traversal and merge routing, parser comparison tooling, shortest-path correctness, and release documentation updates.
[v1.0.39] "Punkrocker" - 2026-04-06
Added
- Block-style constraint contracts (
REQUIRE { ... }):- added grouped schema contracts so multiple rules can be declared together on a node or relationship target.
- block entries can mix primitive constraints already supported by the engine with runtime boolean validations.
- added
SHOW CONSTRAINT CONTRACTSto inspect stored contracts separately from the compiled primitive constraints they generate.
Example - node contract:
CREATE CONSTRAINT person_contract
FOR (n:Person)
REQUIRE {
n.id IS UNIQUE
n.name IS NOT NULL
n.status IN ['active', 'inactive']
(n.tenant, n.externalId) IS NODE KEY
COUNT { (n)-[:PRIMARY_EMPLOYER]->(:Company) } <= 1
}Example - relationship contract:
CREATE CONSTRAINT works_at_contract
FOR ()-[r:WORKS_AT]-()
REQUIRE {
r.id IS UNIQUE
r.startedAt IS NOT NULL
startNode(r) <> endNode(r)
startNode(r).tenant = endNode(r).tenant
r.hoursPerWeek > 0
}- Relationship cardinality and endpoint policy constraints (NornicDB extensions):
- added directional relationship cardinality limits using
REQUIRE MAX COUNT <n>. - added endpoint policy constraints so allowed start-label/end-label combinations can be enforced for a relationship type.
- added directional relationship cardinality limits using
Example - directional cardinality:
CREATE CONSTRAINT max_employers
FOR ()-[r:WORKS_AT]->()
REQUIRE MAX COUNT 3Changed
Cypher parser compatibility and DDL coverage:
- expanded ANTLR parser support for Neo4j 5-style
REQUIREforms, parenthesized property chains in key constraints, trailingOPTIONS, andWITH EMBEDDINGsyntax. - aligned parser-mode behavior so the same user-facing query shapes work consistently in both parser paths.
- expanded ANTLR parser support for Neo4j 5-style
Traversal planning and query execution:
- added a generic relationship
ORDER BY ... LIMITplanner that can seed traversal from the filtered end-node side using index top-k lookups. - added dedicated hot-path tracing for the new traversal planner and broadened routing/coverage for the translation-query family and adjacent query shapes.
- added a generic relationship
Release and dependency maintenance:
- refreshed Go, UI, and workflow dependencies.
- updated release/readme/docs content to reflect the current feature set and release flow.
Fixed
Explicit transaction final-state semantics:
- fixed explicit transaction handling so relationship constraints are validated against the final committed state rather than intermediate statement state.
- fixed transaction read-your-own-write behavior for relationship reads and relationship property updates in explicit transactions.
Large batch write amplification:
- fixed
UNWIND/bulk write paths that could fail with oversized transactions when a node was created and then updated again in the same transaction. - create-then-update mutations now collapse into a single pending create operation where possible.
- fixed
Relationship query ordering and stability:
- fixed
ORDER BYhandling for relationship query results when ordering by aliased return expressions or node properties. - fixed MATCH-clause
ORDER BYextraction so labels and relationship types such as:Orderand:ORDERSno longer interfere with sorting. - restored deterministic ordering for Northwind-style relationship aggregation fast paths.
- fixed
Tests
- Added and expanded regression coverage for:
- block-style constraint contracts and
SHOW CONSTRAINT CONTRACTS - relationship cardinality and endpoint policy constraints
- explicit transaction relationship final-state validation
- batch
UNWINDcreate/update collapse behavior - exact translation query-family parsing, routing, e2e behavior, and traversal hot-path assertions
- relationship aggregation ordering and
ORDER BYclause parsing aroundOrder/ORDERStokens
- block-style constraint contracts and
Technical Details
- Range covered:
v1.0.38..HEAD - Commits in range: 19 (non-merge)
- Repository delta: 85 files changed, +7,997 / -2,854 lines
- Primary focus areas: schema contracts and relationship policy constraints, parser compatibility, explicit transaction correctness, bulk-write stability, and generic relationship traversal/query hot paths.
[v1.0.38] "Phantom" - 2026-04-02
Added
- Neo4j relationship constraint parity:
- all constraint families now work on both nodes and relationships: uniqueness, existence (IS NOT NULL), property type (IS :: TYPE), and key constraints (IS RELATIONSHIP KEY).
- relationship constraints use the
FOR ()-[r:TYPE]-()target pattern, matching Neo4j 5.x syntax. - uniqueness and key constraints on relationships automatically create owned backing indexes that are dropped when the constraint is dropped.
Example — relationship uniqueness:
CREATE CONSTRAINT transfer_ref_unique IF NOT EXISTS
FOR ()-[r:TRANSFERRED]-()
REQUIRE r.reference_id IS UNIQUEExample — relationship existence:
CREATE CONSTRAINT transferred_amount_exists IF NOT EXISTS
FOR ()-[r:TRANSFERRED]-()
REQUIRE r.amount IS NOT NULLExample — relationship property type:
CREATE CONSTRAINT transferred_amount_type IF NOT EXISTS
FOR ()-[r:TRANSFERRED]-()
REQUIRE r.amount IS :: FLOATExample — relationship key (composite uniqueness + existence):
CREATE CONSTRAINT works_at_key IF NOT EXISTS
FOR ()-[r:WORKS_AT]-()
REQUIRE (r.employee_id, r.department) IS RELATIONSHIP KEY- Temporal no-overlap constraints on relationships (NornicDB extension):
- extends the existing node temporal no-overlap constraint to relationships.
- supports a composite endpoint-pair form where the last two properties are always the time range and any preceding properties form the grouping key.
Example — 3-property form (single grouping key):
CREATE CONSTRAINT employment_temporal IF NOT EXISTS
FOR ()-[r:WORKS_AT]-()
REQUIRE (r.employee_id, r.valid_from, r.valid_to) IS TEMPORAL NO OVERLAPExample — 4-property form (composite grouping key):
CREATE CONSTRAINT assignment_temporal IF NOT EXISTS
FOR ()-[r:ASSIGNED_TO]-()
REQUIRE (r.employee_id, r.project_id, r.valid_from, r.valid_to) IS TEMPORAL NO OVERLAP- Domain/enum constraints (NornicDB extension):
- new constraint type that restricts a property to a fixed set of allowed values.
- works on both nodes and relationships.
- domain constraints with different allowed-value sets on the same schema are treated as conflicting.
Example — node domain:
CREATE CONSTRAINT person_status_domain IF NOT EXISTS
FOR (n:Person)
REQUIRE n.status IN ['active', 'inactive', 'suspended']Example — relationship domain:
CREATE CONSTRAINT works_at_role_domain IF NOT EXISTS
FOR ()-[r:WORKS_AT]-()
REQUIRE r.role IN ['engineer', 'manager', 'director']CMEK/HSM-backed at-rest encryption:
- added customer-managed encryption key (CMEK) and HSM-backed at-rest encryption for the database engine.
macOS installer service lifecycle:
- added macOS packager workflow with automatic release upload.
- separated macOS packager from Docker CD pipeline.
Changed
IF NOT EXISTSsemantics forCREATE CONSTRAINT:- exact-duplicate
CREATE CONSTRAINTnow returns an error unlessIF NOT EXISTSis specified, matching Neo4j behavior. Previously, duplicates were silently idempotent.
- exact-duplicate
SHOW INDEXESandSHOW CONSTRAINTSrelationship awareness:SHOW INDEXESnow reportsentityType(NODE or RELATIONSHIP) andowningConstraintfor backing indexes created by relationship uniqueness/key constraints.SHOW CONSTRAINTSnow reportsentityTypeas RELATIONSHIP for relationship-scoped constraints.
Branding and documentation:
- abstracted Mimir-specific references to NornicDB-focused language across docs, source comments, test files, and configuration.
- updated system-design documentation with WITH EMBEDDING support and correct embedding defaults (8192 chunk size, bge-m3 model).
- updated user-facing documentation for all new constraint types with syntax examples.
Fixed
Embedding property namespace pollution:
- removed special-case routing that intercepted the
embeddingproperty name during SET/GET operations. Theembeddingproperty is now treated as a regular user property. Users can name their embedding fields anything and create vector indexes for them.
- removed special-case routing that intercepted the
ORDER BY on returned node properties:
- stabilized ORDER BY when sorting on properties of returned nodes (e.g.,
ORDER BY t.createdAtwhen onlytis returned). - fixed row-sorting to resolve
var.propagainst map-backed node values the same way expression evaluation does.
- stabilized ORDER BY when sorting on properties of returned nodes (e.g.,
Constraint enforcement namespace filtering:
- fixed empty-namespace prefix filtering that caused unnamespaced edge IDs to be skipped during constraint enforcement scans.
- fixed cross-namespace leak in transaction-level temporal constraint enforcement where pending edges from other namespaces could cause false violations.
Owned backing index metadata:
- fixed
SHOW INDEXESto carryentityTypeandowningConstraintthrough relationship-scoped backing indexes instead of hardcoding NODE and nil.
- fixed
macOS installer service lifecycle:
- fixed start/stop/restart controls to behave correctly for the macOS service.
Graph API hardening:
- hardened graph MVCC/diff handlers, aligned graph endpoint contracts, and improved validation and error mapping for the graph API.
Security
- Updated dependencies to resolve vulnerability scan findings.
- Updated example code to pass security scanning.
Tests
- Added and expanded regression coverage for:
- all relationship constraint families (uniqueness, existence, property type, key) with DDL, creation-time validation, and write-path enforcement tests
- relationship temporal no-overlap constraints (3-property and 4-property forms)
- domain/enum constraints on nodes and relationships with conflict detection
IF NOT EXISTSidempotency semantics for all constraint types- embedding property namespace pollution removal
- ORDER BY stability on returned node properties
- CMEK/HSM encryption compliance
- expanded unit test coverage across uncovered packages
Technical Details
- Range covered:
v1.0.37..HEAD - Commits in range: 30 (non-merge)
- Repository delta: 180 files changed, +15,077 / -2,619 lines
- Primary focus areas: Neo4j relationship constraint parity, NornicDB constraint extensions (temporal no-overlap, domain/enum), CMEK encryption, embedding property namespace cleanup, ORDER BY stability, and macOS packaging.
[v1.0.37] "The Walker" - 2026-04-01
Added
- Inline mutation-time embedding in Cypher (
WITH EMBEDDING):- added support for
WITH EMBEDDINGon write statements so node mutations and managed embedding writes happen in the same transaction. - supports common mutation shapes including
CREATE,MERGE ... SET,MATCH ... SET, andUNWINDwrite pipelines.
- added support for
Example usage:
CREATE (d:Doc {id: 'd1', content: 'hello world'})
WITH EMBEDDING
RETURN count(d) AS createdUNWIND $rows AS row
MERGE (d:Doc {id: row.id})
SET d.content = row.content
WITH EMBEDDING
RETURN count(d) AS upserted- Shared embedding utility package:
- added
pkg/embeddingutilto centralize canonical embedding text construction, metadata-key detection, invalidation, and managed embedding payload shaping.
- added
Changed
Cypher traversal and CALL-tail performance/coverage:
- generalized and hardened hot paths for benchmark-shaped
CALL ... YIELD+ traversal queries,UNWINDmerge pipelines, and variable-length traversal aggregation patterns. - expanded E2E and benchmark coverage for real query shapes used in traversal/vector workloads.
- generalized and hardened hot paths for benchmark-shaped
Async and eventual consistency behavior:
- expanded async engine eventual-create eligibility and completed additional read-your-own-write (RYOW) coverage.
- aligned async HTTP behavior and transport/docs guidance for consistency.
Documentation updates for user-facing query behavior:
- added/updated user docs for mutation-time embedding and vector search usage, including practical
WITH EMBEDDINGexamples and caveats.
- added/updated user docs for mutation-time embedding and vector search usage, including practical
Fixed
Cypher correctness across complex pipelines:
- fixed
WITH DISTINCTprojection behavior in pipeline routing. - fixed
CALLargument parsing for tail function expressions. - fixed
YIELD ... WHERE elementId(...)handling to preserve actual yielded entities. - fixed path aggregate semantics for variable-length
MATCHand related traversal aggregate edge cases.
- fixed
Storage/server stability under mixed write + background load:
- fixed scenarios where deleted nodes could reappear during index builds.
- improved MVCC head rebuild batching and prioritized transaction hot paths over embedding worker pressure.
- fixed auth-disabled mode write-gating behavior to avoid incorrect RBAC blocking when authentication is off.
Tests
- Added and expanded regression coverage for:
WITH EMBEDDINGmutation patterns (CREATE, multi-create,MERGE/SET,MATCH/SET,UNWIND, explicit transactions)- CALL-tail traversal fast paths and benchmark shape handling
- async engine RYOW/eventual-create behavior and MVCC conflict-sensitive paths
- embedding invalidation and shared utility behavior across Cypher/DB/worker paths
Technical Details
- Range covered:
v1.0.36..HEAD - Commits in range: 26 (non-merge)
- Repository delta: 59 files changed, +7,156 / -726 lines
- Primary focus areas: inline mutation-time embeddings, Cypher traversal/call hot paths, async consistency hardening, and operational stability fixes.
[v1.0.36] "Gold on the Cieling" - 2026-03-30
Added
- Deterministic token-aware text chunking infrastructure:
- added
pkg/textchunkas a reusable deterministic chunk splitter driven by caller-supplied token counters instead of heuristic token estimation. - added exact tokenizer-backed chunking support to the local GGUF/llama embedding path so local models can split oversized text using the real model vocabulary limits.
- added
Changed
Embedding and semantic-search query chunking architecture:
- widened embedding/query interfaces to require provider-owned
ChunkText(...)behavior so Cypher, HTTP search, MCP, Heimdall, gRPC, and DB-level query embedding all route chunking through the active embedder instead of a shared heuristic utility. - added DB query-chunk helper paths for global and per-database embedders so query chunking stays aligned with the same model configuration used for query embeddings.
- widened embedding/query interfaces to require provider-owned
Documentation, publishing, and quick-start guidance:
- refreshed docs navigation, README and deployment/search/transaction guidance, and updated quick-start instructions to better match current runtime behavior.
- enabled and aligned GitHub Pages publishing behavior and corrected documentation link/navigation issues discovered during the doc refresh.
Benchmarking and build maintenance:
- updated benchmark assets and related build assumptions used during performance comparison work.
- refreshed release/build housekeeping associated with the current toolchain and packaging flow.
Fixed
Tokenizer overflow handling for long embedding inputs:
- fixed long-query and long-document embedding paths to stop relying on approximate token counting, preventing deterministic tokenizer overflows and repeated retry loops for text that exceeded the true model token cap.
- removed the old heuristic chunker entirely and migrated affected call sites and tests to deterministic chunking behavior.
Bolt hot-path logging overhead:
- removed unconditional success-path logging from the Bolt query hot path so normal successful
RUNexecution no longer pays avoidable logging overhead. - preserved error-path timing/log visibility with regression coverage for the default-silent success behavior.
- removed unconditional success-path logging from the Bolt query hot path so normal successful
Background worker write-back observability:
- added auditing information for background workers that persist changes back to storage so asynchronous maintenance/update flows are easier to inspect operationally.
Tests
- Added and updated regression coverage for:
- deterministic chunk splitting limits, overlap behavior, and embedder-owned chunking across Cypher, DB, MCP, Heimdall, server, gRPC, Bolt, and embed-cache test doubles
- tokenizer-aware long-query and long-document embedding behavior, including dimension-mismatch and chunk-cap branch coverage
- Bolt hot-path logging behavior so successful executions remain silent by default while failures still log
Technical Details
- Range covered:
v1.0.35..HEAD - Commits in range: 14 (non-merge)
- Repository delta: 71 files changed, +2,889 / -2,472 lines
- Primary focus areas: deterministic token-aware embedding chunking, Bolt hot-path overhead reduction, documentation/publishing updates, and release/benchmark maintenance.
[v1.0.35] "Clean Up Before She Comes" - 2026-03-27
Changed
llama.cpp roll-forward and runtime alignment:
- upgraded the vendored llama.cpp integration and shipped local llama artifacts to
b8547. - synchronized version pins across build scripts, packaged libraries, and Docker builder images so local, CI, and container builds use the same llama baseline.
- upgraded the vendored llama.cpp integration and shipped local llama artifacts to
Container and CI dependency maintenance:
- rolled forward Docker build dependencies and CI image references used for CPU, CUDA, Vulkan, and Metal packaging.
- updated the bundled Heimdall and BGE image variants so embeddings are enabled by default in the batteries-included deployment paths.
UI and build-tool dependency refresh:
- updated frontend/package dependencies and related build configuration used by the shipped UI bundle.
- refreshed release/build assumptions tied to current toolchain behavior so maintenance packaging stays reproducible.
Fixed
Bolt autocommit database executor reuse:
- fixed the Bolt multi-database autocommit path to reuse cached database-scoped executors instead of rebuilding a fresh Cypher executor on each
RUN. - preserved auth-forwarded remote routing behavior by keeping auth-scoped database executor resolution uncached.
- fixed the Bolt multi-database autocommit path to reuse cached database-scoped executors instead of rebuilding a fresh Cypher executor on each
llama.cpp upgrade compatibility on macOS and Heimdall generation paths:
- fixed the local llama generation context initialization used by Heimdall after the llama.cpp upgrade, eliminating a macOS CGO crash during generation-model loading.
- added generation-context normalization so native model initialization stays within safe runtime bounds after dependency roll-forwards.
llama build portability and packaging behavior:
- fixed
scripts/build-llama.shto remain compatible with macOS Bash 3.2. - updated the ARM64 Metal Heimdall image to prefer locally available models before falling back to network downloads, improving reproducibility in restricted build environments.
- fixed
Tests
- Added and updated regression coverage for:
- Bolt database-scoped executor cache reuse for non-auth paths and cache bypass for auth-forwarded routing
- llama generation context resolution and safe initialization behavior after the llama.cpp upgrade
- Heimdall CGO generation-model loading on the upgraded llama runtime
Technical Details
- Range covered:
v1.0.34..HEAD - Commits in range: 5 (non-merge)
- Repository delta: 44 files changed, +1,635 / -1,984 lines
- Primary focus areas: dependency roll-forwards, llama.cpp packaging/runtime compatibility, and release engineering maintenance.
[v1.0.34] "Hello, Operator" - 2026-03-25
Added
Operator MVCC lifecycle control plane:
- added a full admin-facing MVCC lifecycle manager with reader tracking, safe-floor computation, debt planning, fenced prune apply, pressure bands, emergency behavior, and runtime cadence changes.
- added admin HTTP endpoints to inspect lifecycle state, pause or resume automatic work, trigger prune-now, change schedule intervals live, and inspect top debt keys.
End-to-end lifecycle admin UI:
- added a dedicated
MVCC Lifecyclepage underSecurityso operators can manage lifecycle behavior without direct API calls. - added confirmation-gated controls for pause, resume, prune-now, and schedule changes, plus views for pressure, debt, readers, per-namespace summaries, and short-window rollups.
- added a dedicated
Lifecycle architecture and operator documentation:
- added architecture documentation for MVCC lifecycle and background work behavior.
- added a user guide for lifecycle API and UI workflows, including interval tuning guidance for mixed, churn-heavy, and manual-only operating modes.
Changed
Storage engine lifecycle integration:
- propagated lifecycle support through Badger, async, WAL, namespaced, and multi-database wrappers so MVCC controls remain available across wrapped deployments.
- wired database runtime startup to initialize lifecycle management from config and expose status through DB admin methods and Heimdall metrics.
Runtime lifecycle configurability:
- added config support for enabling lifecycle management, setting the cycle interval, bounding snapshot lifetime, capping pathological chain growth, and debouncing write-triggered embedding work.
- lifecycle cadence can now be changed at runtime, including switching a database into manual-only mode with
0s.
Operator visibility and protection signals:
- transaction responses now surface MVCC pressure warnings so clients can see when pinned history is building.
- lifecycle metrics now expose pressure, debt, readers, rollups, and debt hotspots for easier diagnosis before maintenance pressure becomes an incident.
Fixed
Pressure-driven snapshot handling:
- fixed explicit transaction/session behavior so MVCC snapshot expiration is surfaced consistently as a retryable transient lifecycle error instead of leaking inconsistent terminal behavior.
- added audit logging for forced snapshot expiration so pressure-driven cancellations are visible in operator trails.
Background indexing and lifecycle coordination under write load:
- fixed mutation-triggered search indexing to debounce queued work instead of amplifying one background execution path per write burst.
- fixed search-service build completion signaling to avoid duplicate-close races during concurrent build and shutdown paths.
MVCC churn retention behavior:
- fixed lifecycle prune behavior to stay bounded under repeated update/delete/recreate churn while preserving current visible heads and retained-floor semantics.
Tests
- Added and expanded regression coverage for:
- lifecycle manager planning, pressure hysteresis, fairness scheduling, emergency behavior, and metrics rollups
- lifecycle delegation through storage wrappers and DB admin entry points
- transaction admission, graceful snapshot cancellation, and hard-expiration behavior under MVCC pressure
- server lifecycle handlers, pressure warnings, and audit logging for expired snapshots
- search-service debounce behavior and idempotent build completion signaling
- real-engine churn pruning bounds and tombstone compaction behavior
Technical Details
- Range covered:
5ae74b0..HEAD(from the commit that recorded the v1.0.33 changelog entry to currentmainhead) - Commits in range: 1 (non-merge)
- Repository delta: 57 files changed, +7,643 / -690 lines
- Primary focus areas: MVCC lifecycle control, operator visibility, runtime scheduling, pressure-aware snapshot handling, and safer background maintenance behavior.
[v1.0.33] - 2026-03-25
Added
- Live-data regression coverage for
MATCH ... LIMIThot paths:- added integration/benchmark coverage for cache-busted simple read shapes (varying
LIMIT) on real datasets. - added strict wrapper-delegation tests to ensure streaming and prefix-streaming capabilities are preserved across engine wrappers.
- added integration/benchmark coverage for cache-busted simple read shapes (varying
Changed
Simple
MATCH ... RETURN ... LIMITrouting:- added/expanded dedicated fast-path handling for simple node-return limit queries and alias variants.
- added explicit hot-path tracing hooks for these shapes to make routing behavior observable in tests.
Wrapper capability forwarding for performance-critical interfaces:
- propagated streaming interfaces through multi-database size-tracking wrappers so read paths can terminate early instead of materializing full scans.
- propagated prefix-stream and label-ID lookup interfaces through WAL wrappers to preserve optimized behavior in wrapped deployments.
Label-constrained
LIMITexecution strategy:- changed label-only
LIMITcollection to prefer label-ID iteration + targeted node fetch instead of full label materialization before applyingLIMIT. - this improves latency stability for both sparse-label and dense-label reads.
- changed label-only
Vector query concurrency behavior:
- reduced lock contention in vector query specification paths under high-concurrency workloads.
Fixed
MATCH (n) RETURN n LIMIT Klatency regression in multi-database stacks:- fixed a routing/capability loss where wrappers could drop optimized streaming behavior, causing full-scan-like latency even with low
LIMIT. - restored millisecond-range latency for cache-busted simple-limit query shapes after warm-up.
- fixed a routing/capability loss where wrappers could drop optimized streaming behavior, causing full-scan-like latency even with low
Tests
- Added/updated regression coverage for:
- simple
MATCH ... LIMITfast-path parsing/routing and trace visibility - label-limited node collection strategy (
label + LIMIT) - namespaced/prefix streaming delegation through async, WAL, and size-tracking wrappers
- real-data benchmark probes for cache-busted limit-shape latency.
- simple
Technical Details
- Range covered:
f7a92fc..HEAD(from latest changelog baseline to currentmainhead) - Commits in range: 2 (non-merge)
- Repository delta: 20 files changed, +1,377 / -24 lines
- Primary focus areas: Cypher read hot-path latency, storage-wrapper capability propagation, and high-concurrency contention reduction.
[v1.0.32] - 2026-03-24
Added
Cross-protocol access logging by default:
- added Bolt and gRPC request/access logging to match HTTP visibility behavior.
- improves operational parity and troubleshooting across all exposed protocols.
Hot-path query cookbook (user-facing performance guide):
- added a generic, domain-neutral cookbook of optimized graph query shapes and anti-pattern guidance.
- includes practical patterns for key lookups, relationship traversals, review/queue-style scans, batched deletes, and pagination.
PROFILE diagnostics for index planning decisions:
- expanded explain/profile metadata to show index usage status and rejection risk reasons.
- helps operators understand why a query used (or skipped) an index.
Changed
Cypher planner/executor hot paths:
- direct ID seek planning for parameterized predicates (
id(...) = $x,elementId(...) = $x) to avoid label scans. - improved OR/IN index planning (
a.p1 = $x OR a.p2 = $x,a.prop IN $keys) with branch-based index usage and deduplication. - null-normalized predicate handling for better index visibility (coalesce-style boolean filters).
- index-backed top-N execution for
ORDER BY ... LIMITwhen eligible, avoiding full materialization/sort. - traversal start-node pruning/index usage improved for relationship-match shapes.
- streaming/batched
DETACH DELETEexecution improved for bounded-memory cleanup and large delete sets.
- direct ID seek planning for parameterized predicates (
/tx/commitexecution overhead reduction:- optimized single-statement implicit transaction path to reduce per-request overhead in the common case.
- tightened cache-key determinism for parameterized query shapes to improve plan/cache reuse.
Embedding queue scheduling behavior:
- introduced debounce/throttling behavior on write-triggered embedding queue work to reduce write-path contention during active traffic.
- pending-index refresh scans now run with less interference against foreground writes.
Write-path lock contention reduction:
- narrowed lock scope in high-write code paths so longer operations perform less work while holding shared/global locks.
Fixed
- Neo4j-compatible conflict error semantics at API layer:
- transaction conflict/deadlock-style commit failures are now surfaced as Neo4j-compatible transient errors (retryable classification) instead of syntax errors.
- aligns client retry behavior with expected Neo4j semantics.
Tests
- Added/updated regression coverage for:
- parameterized ID seek planning and index-backed IN/OR-IN query shapes.
- migration-style exact query-shape execution paths and cleanup deletes.
- transaction error mapping for transient conflict/deadlock responses.
- delete-streaming and routing correctness.
Technical Details
- Range covered:
v1.0.31..HEAD - Commits in range: 10 (non-merge)
- Repository delta: 32 files changed, +3,906 / -269 lines
- Primary focus areas: Cypher hot-path execution, transaction semantics compatibility, write contention reduction, and operator observability.
[v1.0.31] - 2026-03-24
Fixed
- Safe Unicode Cypher syntax normalization:
- expanded Cypher ingress normalization beyond Unicode arrows to safely normalize syntax confusables including dash variants, fullwidth structural punctuation, unusual whitespace, and selected zero-width separators
- restricted normalization to query syntax only so string literals, comments, and backticked identifiers are preserved exactly as written
- improved pasted-query compatibility for Neo4j-style Cypher copied from chat apps, documents, and rich-text sources.
- Compound
MATCH ... OPTIONAL MATCH ... RETURNresult modifiers:- fixed the specialized joined-row execution path to apply
ORDER BY,SKIP, andLIMITinstead of returning storage/join order - restored deterministic aliased ordering for
OPTIONAL MATCHretrieval queries and aligned the executor with Neo4j-compatible result semantics.
- fixed the specialized joined-row execution path to apply
Tests
- Added exact regression coverage for:
- safe normalization of Unicode Cypher syntax confusables outside literals/comments/backticks
- normalized
MERGEandOPTIONAL MATCHexecution through the public executor path - deterministic ordered results for mirrored-graph
OPTIONAL MATCHretrieval queries - end-to-end parity for ASCII and Unicode-arrow mirrored
Sectionhierarchy queries.
[v1.0.30] - 2026-03-23
Fixed
- Unicode Arrow Parsing:
- fixed pasted Cypher relationship arrows using Unicode direction characters (
→/←) by normalizing them to standard Cypher->/<-tokens before routing and parsing
- fixed pasted Cypher relationship arrows using Unicode direction characters (
[v1.0.29] - 2026-03-23
Added
- Optimistic mutation metadata for async CREATE paths:
- added Cypher-side optimistic metadata tracking for created node/relationship IDs
- async CREATE fast-path now records created IDs up-front for client response usage.
Fixed
- Cypher mutation and grouped-query compatibility for multi-entity update flows:
- fixed chained
MATCH ... WHERE ... MATCH ... SET ... RETURNhandling for update queries that join source/target entity sets - fixed multi-MATCH WHERE extraction to use the correct terminal WHERE before RETURN, preventing false
expected multiple MATCH clauseserrors - fixed
SET ... RETURN count(...)aggregation semantics so update-count projections return deterministic values (count(t)now behaves correctly in mutation returns) - fixed chained MATCH normalization so queries containing
OPTIONAL MATCHare not rewritten into incompatible required-MATCH forms - fixed joined-row aggregation handling for
COLLECT(...)with non-aggregate return columns, preserving grouped-per-key result semantics - improved MATCH WHERE extraction boundaries in mixed clause pipelines so optional-tail clauses do not leak into WHERE parsing.
- fixed chained
- Correlated CALL/UNION correctness and performance:
- restored correct UNION subquery result behavior for correlated execution paths
- reduced fixed overhead in correlated query routing/execution to improve hot-path latency.
- Correlated CALL subquery write semantics (
WITH ... CREATE/MERGE/...):- fixed correlated
CALL { WITH ... }execution so imported node variables bind correctly acrossCREATE/MERGEwrite branches - fixed write-tail fallback rewriting to avoid dropping side effects for valid
MATCH ... CALL { WITH p MERGE ... }shapes - fixed
WITH-import boundary parsing so write clauses afterWITHare preserved and executed.
- fixed correlated
- Bolt parity for text-based vector queries:
- fixed Bolt database-scoped executor wiring so
db.index.vector.queryNodes(..., $text)works when an embedder is configured - aligned Bolt behavior with HTTP/GraphQL execution paths for string query input.
- fixed Bolt database-scoped executor wiring so
- Async transaction response metadata shape:
- surfaced optimistic metadata in transaction responses alongside receipt metadata when available.
- Mutation stats and deduplication correctness:
- fixed DELETE/DETACH DELETE mutation stats under repeated OPTIONAL MATCH row expansion by deduplicating per-entity deletes
- fixed branch regression where some SET/DELETE/CALL-IN-TRANSACTIONS paths returned nil projection values instead of expected results.
- Mirrored graph retrieval compatibility:
- verified Neo4j-style mirrored
Sectionsave/query flows includingMERGE ... WITH ... MERGEwrite shapes andMATCH ... OPTIONAL MATCH ... RETURN n, r, pretrieval.
- verified Neo4j-style mirrored
- Indexed OR-IN lookup path for key-list reads:
- added index-backed planning for predicates shaped like
propA IN $keys OR propB IN $keysacross alternate key fields - avoids full label scans for large key-list lookups and cleanup/read query patterns.
- added index-backed planning for predicates shaped like
Tests
- Added/updated regression and benchmark coverage for correlated UNION/call-subquery behavior and real-data execution profiles.
- Added regression coverage for:
- Bolt DB-scoped executor embedder inheritance and string vector query execution
- async CREATE fast-path optimistic ID metadata propagation.
- correlated subquery create-or-update shape (
OPTIONAL MATCH + CALL { WITH ... UNION ... }) - CALL subquery write-path regression cases (
WITH ... CREATE,WITH ... MERGE) - delete deduplication under OPTIONAL MATCH row multiplication
- parser/import handling for
WITH ... WHERE ...correlated subquery clauses - exact
UNWIND + OPTIONAL MATCH + collect(CASE...)key-lookup shape (per-key grouped rows and null-arm behavior) DETACH DELETEwithWHERE elementId(...)+OPTIONAL MATCHcleanup shape- OR-combined indexed
INpredicate planning without scan fallback - mirrored Neo4j
Sectionimport/query shapes including chainedMERGE ... WITH ... MERGEwrites and Unicode-arrowOPTIONAL MATCHretrieval - exact mutation query shapes:
MATCH ... WHERE ... OR (...) CREATE ... CREATE ... RETURN ...MATCH ... WHERE ... OR (...) MATCH ... SET ... RETURN ...MATCH ... WHERE elementId(...) SET ... RETURN count(...) AS updated
- fan-out and null-arm guard tests for OR-based creation filters.
Technical Details
- Range covered:
v1.0.28..HEAD - Commits in range: 1 (non-merge)
- Files changed in range: 8
- Primary focus areas: correlated UNION subquery correctness and hot-path performance.
- Additional staged delta (not including changelog edits): 9 files, +208 / -11
- Additional staged delta (not including changelog edits): 17 files, +952 / -56
[v1.0.28] - 2026-03-23
Added
- Vector query embedding cache for Cypher procedures:
- added executor-level embedding-result caching for
db.index.vector.queryNodes/ compatibility vector query paths when the query input is text - added in-flight de-duplication for concurrent identical embed requests so the same query text is embedded once and shared across waiters.
- what this means: repeated semantic/vector query calls spend less time in embedding and create fewer duplicate embedding workloads under concurrent traffic.
- added executor-level embedding-result caching for
Changed
- Correlated subquery execution optimizations:
- restored safe UNION fast paths in correlated
MATCH ... CALL { ... UNION ... } ...execution with strict guards for write-safety and variable-dependency correctness - improved correlated seed extraction and batched lookup handling in subquery execution hot paths.
- what this means: lower fixed-cost overhead for common correlated subquery/UNION shapes while preserving Neo4j-compatible semantics.
- restored safe UNION fast paths in correlated
- Query cache key normalization performance:
- replaced allocation-heavy whitespace normalization (
strings.Fieldsjoin) with a single-pass compaction strategy. - what this means: fewer cache-key allocations and reduced GC pressure on read-heavy workloads.
- replaced allocation-heavy whitespace normalization (
- Traversal optimization safety hardening:
- strengthened fallback start-node pruning behavior to fail open and preserve deterministic traversal semantics for chained/complex patterns.
- what this means: traversal optimizations remain active without sacrificing correctness on multi-segment graph patterns.
Fixed
- UNION/subquery fixed-cost overhead in hot Cypher paths:
- reduced allocation-heavy row dedupe and subquery processing overhead for CALL/UNION shapes.
- Correlated CALL + UNION semantics in mixed query shapes:
- fixed guarded fast-path routing to keep duplicate-row and chained-traversal result behavior consistent while optimized execution is enabled.
Tests
- Added/expanded benchmark and regression coverage for:
- correlated subquery + UNION fixed-cost cache-miss profiling
- real-data Cypher/fabric-style e2e benchmark harnesses
- traversal optional/WHERE pruning safety behavior
- vector procedure caching behavior and compatibility paths.
Technical Details
- Range covered:
v1.0.27..HEAD - Commits in range: 1 (non-merge)
- Repository delta: 13 files changed, +1,754 / -86 lines
- Non-test surface changed: 8 files
- Primary focus areas: Cypher hot-path latency, allocation/GC reduction, correlated subquery/UNION execution, and vector query embed caching.
[v1.0.27] - 2026-03-22
Added
- Indexed temporal
AS OFlookups and current-version tracking:- added storage-backed temporal indexes keyed by namespace, label, temporal key, and validity window so point-in-time lookups no longer depend on full label scans
- added current-pointer tracking for open/current temporal intervals and wired rebuild/prune maintenance through DB admin flows.
- what this means: temporal queries scale with ordered index lookups instead of broad scans, and restore/startup flows can rebuild temporal state deterministically.
- MVCC historical reads and retention controls:
- added committed node/edge version records, persisted MVCC head metadata, snapshot-visible reads, and wrapper delegation for namespaced, WAL, and async engines
- added retention policy controls, pruning, retained-floor anchoring, and historical-read maintenance APIs.
- what this means: NornicDB now supports explicit historical graph reads with predictable retention behavior instead of only current-state inspection.
- Closure-based transaction helper API:
- added
DB.Begin,DB.Update, andDB.Viewwrappers for closure-scoped transaction execution - exported
Transactionas the public closure-facing transaction type. - what this means: callers can use transaction-scoped closures without manually juggling rollback/commit boilerplate.
- added
Changed
- Storage transaction isolation model:
- transactions now anchor reads to a begin-time MVCC snapshot and keep point reads, label scans, and graph visibility checks pinned to that snapshot
- commit-time validation now checks node, edge, endpoint, and adjacency races against the transaction snapshot.
- what this means: storage transactions now provide standard Snapshot Isolation semantics rather than best-effort read-your-writes only behavior.
- Cypher and MCP write-path stability:
- compound
MATCH ... CREATEexecution now reuses the standard single-clause MATCH binding path for safe query shapes, while preserving special post-filter handling forNOT (a)-[:TYPE]->(b)modifiers - MCP relationship/task mutations now retry bounded snapshot-conflict failures instead of surfacing transient storage conflicts directly.
- what this means: common ID-targeted relationship creation queries are more reliable under load without regressing migration-style anti-relationship filters.
- compound
- Temporal/search interaction:
- search indexing and rebuild flows now treat historical temporal versions as non-searchable and keep indexes current-only by default
- temporal overlap validation now uses indexed predecessor/successor checks where supported.
- what this means: historical state no longer pollutes current search results, and temporal writes avoid increasingly expensive validation scans.
- Operations and configuration surface:
- added MVCC retention knobs to config, environment variables, and sample YAML
- macOS installer defaults and first-run wizard presets now keep search reranking disabled unless the user explicitly chooses the advanced AI setup
- clarified async-write consistency wording and documented retained-floor/MRS behavior.
- what this means: operators have explicit controls and clearer expectations for history depth, pruning, and eventual-consistency modes.
Fixed
- Historical lookup performance cliffs:
- fixed sparse post-prune historical lookups by persisting a retained-floor anchor in MVCC head metadata.
- Conflict normalization and retryability:
- fixed lower-level Badger conflict leakage by normalizing commit conflicts to
ErrConflictwith clearer concurrent-modification messages.
- fixed lower-level Badger conflict leakage by normalizing commit conflicts to
- Compound MATCH...CREATE query-shape regressions:
- fixed comma-separated
MATCH (a), (b) WHERE elementId(...) ... CREATE ...relationship creation so compound CREATE blocks reuse correct MATCH bindings - fixed the related regression where migration-style
AND NOT (o)-[:TRANSLATES_TO]->(t)filters were bypassed by the single-clause fast path.
- fixed comma-separated
- Graph-consistent concurrent delete behavior:
- fixed transaction validation so node deletes and adjacent edge changes cannot commit into a dangling-edge state across concurrent snapshots.
- MVCC endpoint validation fallback behavior:
- fixed transaction edge creation/commit validation to accept readable endpoint nodes even when MVCC head metadata is temporarily missing, instead of incorrectly rejecting valid edges as dangling
- fixed the associated transaction read fallback so missing-head recovery uses the transaction's anchored Badger snapshot rather than the live engine state, preserving Snapshot Isolation.
- Startup/restore maintenance reliability:
- fixed temporal rebuild/search maintenance ordering and added explicit MVCC head rebuild/bootstrap flows for current stores.
- Namespacing and shutdown hardening:
- fixed duplicate namespace prefixing in transaction and namespaced storage wrappers by making node/edge prefix helpers idempotent
- fixed Badger
DB Closedpanics to returnErrStorageClosedand suppressed benign shutdown-time search indexing errors after database close/cancel.
- HNSW runtime transition tombstone leakage:
- fixed HNSW result assembly to exclude tombstoned candidates that can survive in the search candidate heap after a delete during runtime strategy transition replay.
- Plugin test isolation:
- fixed Heimdall plugin loader tests by resetting the global subsystem manager between test cases so plugin registrations do not leak across subtests.
Tests
- Added/expanded regression and benchmark coverage for:
- indexed temporal
AS OFlookups, temporal overlap validation, rebuilds, and pruning - MVCC visibility, head rebuilds, pruning, retained-floor behavior, and search invariance smoke tests
- snapshot isolation semantics including read-your-writes, repeatable label scans, write-write conflicts, edge/node delete races, snapshot-consistent edge traversal, write skew, and contention aborts
- closure-based transaction retries and concurrent counter increments through
DB.Update() - compound
MATCH ... CREATEelementId relationship creation, migrationNOTrelationship filters, missing-MVCC-head edge creation fallback, snapshot-safe missing-head reads, shutdown hardening, namespaced prefix idempotence, plugin loader isolation, and deleted-entrypoint HNSW search filtering.
- indexed temporal
Documentation
- Added/updated documentation for:
- historical reads, MVCC retention, pruning guarantees, startup/recovery behavior, and retained-floor semantics
- storage transaction isolation guarantees and feature parity language
- temporal query usage, serialization expectations, and operational configuration examples.
Technical Details
- Range covered:
v1.0.26..HEAD - Commits in range: 4 (non-merge)
- Repository delta: 47 files changed, +6,819 / -362 lines
- Non-test surface changed: 35 files
- Primary focus areas: indexed temporal lookups, MVCC historical storage, Snapshot Isolation correctness, and retry-friendly transaction ergonomics.
[v1.0.26] - 2026-03-20
Changed
- Cypher mutation pipeline compatibility:
- generalized execution handling for complex mutation chains combining
UNWIND,MERGE,SET,OPTIONAL MATCH,WITH, andWHERE - improved clause sequencing reliability for multi-stage write statements with intermediate projections.
- generalized execution handling for complex mutation chains combining
- Proxy/base-path runtime behavior:
- restored and hardened proxied UI/base-path asset loading behavior for containerized deployments
- improved path normalization to reduce route/asset resolution drift behind reverse proxies.
- Managed vector/query execution safeguards:
- tightened vector/search-related persistence and serialization guardrails for large payload handling
- improved runtime safety defaults for high-volume decode/read paths.
Fixed
- Unique-key conflict handling in batched MERGE writes:
- fixed batched
UNWIND ... MERGEpaths to correctly reuse matching nodes during a statement, preventing false duplicate-create violations under unique constraints.
- fixed batched
- Mutation context propagation across chained clauses:
- fixed variable binding continuity so downstream relationship merges resolve correctly after intermediate
WITHprojections and optional matches.
- fixed variable binding continuity so downstream relationship merges resolve correctly after intermediate
- Aggregate alias continuity across chained MATCH stages:
- fixed alias preservation in chained query stages to prevent dropped/incorrect projected values.
- UI/path security hardening:
- fixed reflected path handling in UI routing flows to mitigate injection/open-redirect risk surfaces.
- Storage path-safety hardening:
- fixed segment/file access validation in WAL-related paths to reduce traversal-style file access risk.
- Dependency security updates:
- upgraded vulnerable transport/runtime dependencies to patched versions in security-sensitive protocol paths.
Tests
- Added/expanded regression coverage for:
- complex Cypher mutation shape permutations (
UNWIND+ chainedMERGE/OPTIONAL MATCH/WITH/WHERE) - unique-constraint behavior under batched merge writes
- UNWIND property substitution and merge-chain execution edge cases
- proxy/base-path UI routing behavior
- storage path validation and bounded message-pack decode limits.
- complex Cypher mutation shape permutations (
Documentation
- Added/updated policy and project documentation for patent/licensing posture clarity.
Technical Details
- Range covered:
v1.0.25..HEAD - Commits in range: 14 (non-merge)
- Repository delta: 35 files changed, +1,760 / -91 lines
- Non-test surface changed: 25 files
- Primary focus areas: Cypher write-path correctness, constraint-safe batched merges, security hardening, and proxy deployment reliability.
[v1.0.25] - 2026-03-20
Changed
- Correlated subquery execution reliability:
- generalized correlated
CALL { ... }execution handling for broader valid clause combinations, including mixedWITH,UNION, and procedure-yield pipelines - improved execution consistency for multi-stage query pipelines that combine procedural and graph pattern clauses.
- generalized correlated
- ID-based query execution path optimization:
- added direct ID-seek planning for simple
MATCH ... WHERE id(...) = ...andelementId(...) = ...query shapes - reduced unnecessary scan behavior for high-frequency point-lookup patterns.
- added direct ID-seek planning for simple
- Container build base-image sourcing:
- updated Docker build variants to use mirrored/public base-image registries for common runtime/build dependencies
- reduced susceptibility to upstream rate-limit failures during CI/CD image resolution.
- Keyword-aware clause parsing consistency:
- migrated remaining clause-routing keyword detection paths away from raw string index checks to shared keyword helpers
- improved robustness for mixed whitespace/newline formatting and reduced false keyword matches inside expression bodies.
Fixed
WITHidentifier substitution robustness:- fixed identifier replacement behavior to avoid accidental token corruption in downstream clauses.
- Empty-seed correlated subquery result shape:
- fixed no-seed correlated
CALLpaths to preserve projected column schemas rather than returning fallback/internal columns.
- fixed no-seed correlated
- Node import projection in correlated subqueries:
- fixed node-variable import binding so property projections from imported variables resolve correctly in subquery bodies.
- Canonical ID comparison normalization:
- fixed
id(...)/elementId(...)comparison handling by normalizing canonical element-ID inputs to internal IDs before evaluation.
- fixed
- MERGE resolution under stale lookup conditions:
- fixed merge-path behavior to recover correctly when fast lookup candidates are stale or conflict with already-existing rows.
- Cypher compatibility hardening:
- fixed edge-case compatibility issues in optional pattern matching and UNWIND map-property access paths.
- Nested UNWIND parsing correctness:
- fixed double-UNWIND
ASparsing offsets so nested list expansion queries return expected rows under complex clause chains.
- fixed double-UNWIND
- COLLECT subquery WHERE rewrite stability:
- fixed COLLECT-subquery rewriting when a
WHEREclause is already present, preventing malformed query text and empty result regressions.
- fixed COLLECT-subquery rewriting when a
Tests
- Added regression coverage for:
- correlated subquery execution variants (including
UNION+ procedure-yield + projection pipelines) - empty-seed correlated subquery schema behavior
- node-import property projection correctness in subqueries
- direct ID/elements-ID point-lookup planning paths
- merge conflict/stale-lookup recovery behavior.
- correlated subquery execution variants (including
- Restored full
pkg/cypherregression pass after parser/executor clause-detection updates, including complex nested UNWIND/list-expression cases and COLLECT-subquery branch coverage.
Technical Details
- Range covered:
v1.0.24..HEAD - Commits in range: 10 (non-merge)
- Repository delta: 23 files changed, +1,768 / -291 lines
- Non-test surface changed: 17 files
- Primary focus areas: correlated subquery correctness, point-lookup performance, Cypher compatibility hardening, merge-path resiliency, and CI/CD container base-image reliability.
[v1.0.24] - 2026-03-19
Changed
- CALL/YIELD pipeline execution:
- generalized post-
YIELDclause handling soMATCH,WITH,RETURN,ORDER BY,SKIP, andLIMITpipelines execute consistently after procedure calls - removed brittle fixed-shape assumptions and aligned handling with broader valid clause combinations.
- generalized post-
- Server test fixture reuse:
- refactored high-frequency server test paths to share fixtures through grouped subtests where isolation was not required
- reduced repeated full server/bootstrap setup in hot test paths.
- Test startup behavior:
- disabled external embedding initialization in shared server test setup to avoid unnecessary async retry work in generic tests.
Fixed
- CALL clause boundary parsing:
- fixed
YIELDparsing to respect CALL-clause boundaries instead of matching by raw string position - resolved cases where downstream clauses were incorrectly parsed or skipped in multi-clause statements.
- fixed
- N-column YIELD projection correctness:
- fixed projection behavior so
YIELDsupports variable-width output columns without shape-specific fallbacks - resolved incorrect/empty result sets in valid procedure-followed query pipelines.
- fixed projection behavior so
- Concurrent metadata snapshot race in multi-database management:
- made database metadata snapshots lock-safe when listing and fetching database info
- prevents race conditions between storage-size cache initialization and metadata reads under concurrent access.
Tests
- Added regression coverage for:
- procedure-call pipelines with trailing clause permutations
- boundary-aware
YIELDparsing in multi-clause statements - multi-column
YIELDprojection with downstreamMATCH/WITH/RETURNflows.
- Added a dedicated race regression test for concurrent storage-size initialization vs database metadata listing.
- Consolidated selected multi-database and server branch tests into shared-fixture suites while preserving isolated setup for lifecycle-sensitive cases.
Technical Details
- Range covered:
v1.0.23..HEAD - Commits in range: 3 (non-merge)
- Repository delta: 5 files changed, +806 / -108 lines
- Primary focus areas: procedure pipeline correctness, parser robustness, and generalized clause compatibility for Cypher execution.
[Earlier Releases Summary] - up to v1.0.23
This condensed section summarizes user-facing progress from all releases prior to the latest five entries.
Highlights
- Composite/Fabric capability matured significantly:
- introduced and hardened multi-database/composite execution across HTTP and Bolt
- improved
USE/subquery planning and execution behavior - strengthened remote constituent connectivity and auth-aware routing.
- Cypher compatibility and execution quality improved:
- expanded support for complex
CALL/YIELD/WITH/UNION/UNWINDquery pipelines - improved deterministic result-shape handling, aggregation behavior, and clause-boundary parsing
- hardened DDL/index/constraint handling and compatibility edge cases.
- expanded support for complex
- Hot-path and index-driven performance improved:
- added index-first routing for common query shapes (
IN,IS NOT NULL, top-K/ordered limits) - improved correlated apply/join paths and reduced allocation-heavy execution branches
- expanded plan/query cache usage where safe.
- added index-first routing for common query shapes (
- Search and vector behavior became more deterministic:
- improved BM25/index consistency and startup/rebuild behavior
- hardened dropped-database artifact cleanup
- improved rerank configuration application at per-database scope.
- Operations and UX advanced:
- added Browser multi-statement execution UX
- improved database metadata visibility in UI
- added/expanded environment-variable and topology/operator documentation
- added stdout/stderr lifecycle controls and other operational hardening.
- Reliability and coverage expanded across the stack:
- large increase in deterministic regression/integration/performance tests
- broad hardening across storage, server, cypher, and fabric execution paths.
Documentation
- Expanded the multi-database guide and added Fabric gap-analysis, delivery-plan, and performance-audit notes to document the new composite execution model and remaining follow-up items.
- Refreshed README badges/community links during the release range.
Technical Details
- Range covered:
v1.0.16..main - Commits in range: 21 (non-merge)
- Repository delta: 230 files changed, +25,221 / -5,323 lines
- Non-test surface changed: 67 files
- Primary focus areas: Fabric/composite execution, remote constituent routing, transaction/protocol parity, multidatabase stats/UI, planner/executor performance.
Historical Changes (from Mimir Project)
The following changes occurred while NornicDB was part of the Mimir project. Full commit history has been preserved in this repository.
Features Implemented (Pre-Split)
- Neo4j Bolt protocol compatibility
- Cypher query language support (MATCH, CREATE, MERGE, DELETE, WHERE, WITH, RETURN, etc.)
- BadgerDB storage backend
- In-memory storage engine for testing
- GPU-accelerated embeddings (Metal, CUDA)
- Vector search with semantic similarity
- Full-text search
- Query result caching
- Connection pooling
- Heimdall LLM integration
- Web UI (Bifrost)
- Docker images for multiple platforms
- Comprehensive test suite (90%+ coverage)
- Extensive documentation
Performance Achievements (Pre-Split)
- 3-52x faster than Neo4j across benchmarks
- 100-500 MB memory footprint vs 1-4 GB for Neo4j
- Sub-second cold start vs 10-30s for Neo4j
- GPU-accelerated embedding generation
Bug Fixes (Pre-Split)
- Fixed WHERE IS NOT NULL with aggregation
- Fixed relationship direction in MATCH patterns
- Fixed MERGE with ON CREATE/ON MATCH
- Fixed concurrent access issues
- Fixed memory leaks in query execution
- Fixed Bolt protocol edge cases
Version History
Release Tags
v1.0.0- First standalone release (December 6, 2024)v1.0.6- 2025-12-12
Pre-Split Versions
Prior to v1.0.0, NornicDB was versioned as part of the Mimir project. The commit history includes all previous development work.