v1.0.15 - The Hardening
Unit tests at 90%!
[1.0.15] - 2026-03-10
Added
- Coverage/report generation tooling in-repo: Added
scripts/generate-coverage.shand expandedscripts/filter-generated-coverage.shso CI coverage reporting is reproducible locally and can consistently exclude generated and hardware-specific paths. - Developer hook automation: Added
.githooks/pre-commitplusscripts/install-git-hooks.shto enforce formatting checks in local workflows. - Llama CPU libs build path: Added dedicated CPU llama-libs image build assets (
docker/Dockerfile.llama-cpu,scripts/hydrate-llama-cpu-libs.sh) and corresponding workflow wiring.
Changed
- CI/CD workflow restructuring: Updated
.github/workflows/ci.yml,cd.yml,cd-llama-cpu.yml, andcd-llama-cuda.ymlto separate llama library publishing, use prebuilt runtime assets in CI, and centralize coverage/report logic. - UI asset embedding compatibility:
ui/embed.gonow embedsall:distto avoid empty-subdirectory embed failures.pkg/server/ui.goswitched UI assets fromembed.FStofs.FSand added explicit nil-asset validation.
- Search service event routing while index builds run (
pkg/nornicdb/search_services.go): Introduced deferred mutation queues for index/remove events during build windows and deterministic post-build flush behavior. - DB background-task lifecycle hardening (
pkg/nornicdb/db.go): Added tracked background-task startup helper, safer close sequencing, and cleaner goroutine ownership boundaries. - GraphQL edge/node ID normalization (
pkg/graphql/resolvers/helpers_namespaced.go): Consolidated repeated source/target ID coercion paths into a shared helper for namespaced result handling. - Ops/runtime guardrails:
pkg/config/config.go: perf gates moved to warn-level behavior.pkg/inference/cooldown.go: added default fallback lookup path for empty-label cooldown entries.pkg/storage/namespaced.go: bulk node/edge creation now rejects nil inputs withErrInvalidData.pkg/nornicdb/db_admin.go:FindSimilarnow validateslimit > 0.
Fixed
- Cypher parser strictness and AST correctness:
- Rejects invalid bare
OPTIONALforms and unterminated string literals (pkg/cypher/parser.go). - Parses map literals into structured AST map expressions instead of permissive fallback handling (
pkg/cypher/ast_builder.go).
- Rejects invalid bare
- Cypher fulltext compatibility (
pkg/cypher/call_fulltext.go): fulltext parameter extraction now supportsdb.index.fulltext.queryRelationships(...)alongside node queries. - Cypher traversal/query correctness:
- Relationship pattern matching now fails fast on malformed bracket/paren patterns (
pkg/cypher/merge.go). SUM(...)evaluation aligned with openCypher semantics, including arithmetic combinations and null-handling behavior (pkg/cypher/clauses.go).CALL ... IN TRANSACTIONSnow guards against non-progressing iterative batching for non-batchable write subqueries (pkg/cypher/executor_subqueries.go).MATCH ... CREATEzero-row behavior now short-circuits CREATE as expected when upstream MATCH yields no rows (pkg/cypher/create.go).
- Relationship pattern matching now fails fast on malformed bracket/paren patterns (
- Embedder creation race (
pkg/nornicdb/db.go): added a second registry check inside single-flight creation lock to prevent duplicate concurrent embedder initialization.
Technical Details
- Range covered:
v1.0.14..HEAD - Commits in range: 95 (non-merge)
- Non-test surface changed: 42 files, +1,257 / -490 lines
- Primary focus areas: CI/CD + coverage pipeline hardening, Cypher compatibility/correctness fixes, search/build concurrency stabilization, UI embedding reliability.