v4.1.5
What's Changed
Breaking Changes
- feat(sparql): burn-down Wave 1 — validation passes, grammar tightening, authoritative diagnostics, reifier forms (−121 net registers) by @aaj3f in #1453
- fix(iceberg): fail closed on merge-on-read delete files (silent stale-row risk) by @aaj3f in #1520
Other Changes
- feat(sparql): burn-down Wave 2 — GRAPH conformance (D-2), multi-op UPDATE (#1438), BASE resolution, Turtle-star ingest (−31+ registers) by @aaj3f in #1454
- fix(query): cross-ledger GRAPH queries over indexed data (#1405 bugs 2+3) by @Jackamus29 in #1425
- feat(iceberg): virtual-dataset info APIs + decimal-FK detection + subject-key fallback + secret redaction by @aaj3f in #1450
- feat(sparql): burn-down Wave 3 — within-ledger FROM (D-3), UPDATE graph-management (D-5/6), equality/EBV/promotion (D-12, #1447), USING+GRAPH over-delete (#1441), triple-term syntax (−145 tests) by @aaj3f in #1462
- Fix duplicate triples from re-asserted facts in the V6 incremental indexer by @zonotope in #1508
- feat(cli): fluree model — governance tooling for access, entities, and class hierarchy by @bplatz in #1516
- fix: Cypher field-report round — reindex OOM, EXPLAIN, =~, IRI round-tripping, HTTP bulk import, arena sealing by @bplatz in #1518
- feat: multi-clause Cypher write composition (MERGE chains) via sequential staging by @bplatz in #1519
- fix: attribute ref-class stats when an endpoint gains its first type by @bplatz in #1488
- Rework history sidecars as transition logs by @zonotope in #1524
- release v4.1.3 by @bplatz in #1517
- fix: keep history entries in the same leaflet as their row by @bplatz in #1526
- feat: Enrich Cypher transaction commit result for write parity by @bplatz in #1527
- docs: Add scaling and resilience overview by @bplatz in #1530
- docs: Correct time-travel and history query documentation by @bplatz in #1533
- feat: Add auth token and model access disable CLI commands by @bplatz in #1535
- fix(proxy-storage): resolve advanced index kinds over a remote mount by @aaj3f in #1537
- chore: Release v4.1.4 by @bplatz in #1538
- Redact graph source config secrets by @zonotope in #1534
- Limit recursion depth on turtle imports by @zonotope in #1545
- Add regression coverage for sub-SELECT aggregate correlation joins by @zonotope in #1542
- Substitute property-position variables in datalog rules by @zonotope in #1541
- fix: gate WHERE-level early dedup on aggregate duplicate-insensitivity by @bplatz in #1546
- Round-trip generic xsd:duration through the binary index by @zonotope in #1544
- Limit recursion depth in the SPARQL and JSON-LD parsers by @zonotope in #1547
- perf(virtual): R2RML/Iceberg virtual-dataset performance program — corpus, pruning, fused aggregation, budget forwarding (consolidates #1475–#1507) by @aaj3f in #1507
- feat(virtual): serverless Lambda-usability + BYO-IAM — admission widenings, capacity guards, typed memory budget (consolidates #1505 + #1514) by @aaj3f in #1514
- perf(virtual): big-Iceberg-audit implementation — correctness/capacity guards, coverage widenings, harness re-bless, browse-parity, family-C (consolidates the audit program + #1525) by @aaj3f in #1528
- bench+test: query correctness guardrails — differential harness, baseline gating, and four fast-path fixes by @aaj3f in #1477
- perf: eliminate per-flake staging cost in bulk upserts by @bplatz in #1549
- perf: batched read lanes for Cypher relationship-property queries and large UNWINDs by @bplatz in #1553
- bench: baseline host/corpus identity, phase-share gating, and noise floors by @aaj3f in #1550
- fix: un-orphan build()'s #[cfg(native)] from with_secret_resolver by @bplatz in #1566
- feat(BM25): embedded BM25 full-text search over the standard query path + a bm25 CLI by @christophediprima in #1543
- Land #1528 (Iceberg audit + browse-parity + family-C) onto main by @aaj3f in #1554
- test: standalone it_minmax bin + aws-gate smoke_minio (vbench follow-ups) by @aaj3f in #1486
- feat(materialize): fluree materialize — native-twin builder from virtual R2RML/Iceberg datasets by @aaj3f in #1529
- Wave 4: resolve the eight deferred follow-ups from the #1462 review (#1467-#1474) by @aaj3f in #1483
- feat(graph-ir): fallible GraphSink protocol, quad capability, statement lifecycle + Turtle ParserOptions conformance by @aaj3f in #1552
- fix(api): materialize sink call sites — finish() → into_parts() (#1529 × #1552 merge skew) by @aaj3f in #1586
- BM25 index management over the server API by @zonotope in #1584
- fix(import): document-scoped blank node identity, and skolem ids SPARQL can write by @aaj3f in #1551
- fix(turtle): a redeclared prefix must change what later names mean by @aaj3f in #1565
- CLI agent-surface truth + the manifest rail by @aaj3f in #1571
- Import: survive low open-file limits — best-effort raise + FD-budgeted index build by @aaj3f in #1591
- chore(memory): memory-store baseline audit + checkpoint audit tooling by @aaj3f in #1572
- feat: materialize Iceberg/R2RML graph sources into native ledgers + tracking worker by @christophediprima in #1422
- fix: stop mapping one VMA per dictionary pack (ENOMEM with memory free) by @christophediprima in #1598
- perf(r2rml): vectorized fused-aggregate fold + late-rendered decode seam (Gap-4 P1) by @aaj3f in #1582
- fix: reject SPARQL-style and constant JSON-LD filter expressions (fail-open no-op) by @bplatz in #1593
- fix: stop hiding user f:-namespace data from variable-predicate scans by @bplatz in #1597
- fix(indexer): merge novelty into emptied-by-retract leaflets without failing by @bplatz in #1603
- feat: local-filesystem Iceberg tables (catalog-less Direct mode) by @bplatz in #1611
- fix(iceberg): warehouse-root resolution for pin resolution and materialize scans by @bplatz in #1613
- feat(storage): atomic write configuration for file storage by @bplatz in #1612
- Reclaim superseded and orphaned index artifacts by @zonotope in #1614
- feat: Forward dictionary pack compaction by @bplatz in #1617
- chore: Release v4.1.5 by @bplatz in #1621
Full Changelog: v4.1.2...v4.1.5