Skip to content

Milestone 0.4 — Storage and transactions

Status: complete
Outcome: durable Fjall models under a supported, versioned storage contract with transactions, sync/clear/bulk-load, capability reporting, and archival import/export
Depends on: 0.1–0.3 model, I/O, and SPARQL Update tooling
Blocks: 0.5 utilities that assume durable sync/clear; 0.7 design against the storage contract
Release evidence: docs/reports/0.4.md

This is the executable specification for 0.4. The roadmap defines the release outcome; this document defines the work packages and acceptance criteria. Design detail: 0.4-storage-api.md. Decision: ADR-006.

User-visible result

At the end of 0.4, a Rust caller can:

  • open memory and Fjall models with typed OpenOptions;
  • rely on Oxiland format v1 on-disk metadata (ADR-006);
  • migrate pre-0.4 experimental Fjall directories via Model::migrate_legacy_store;
  • run Model::transaction with commit/rollback on memory and Fjall;
  • call sync, clear / clear_graph, and transactional bulk import;
  • inspect StorageCapabilities and get explicit Unsupported for legacy Redland storage plug-in names;
  • open read-only Fjall models;
  • archive via N-Quads import/export helpers;
  • observe documented concurrent reader/writer locking.

Non-goals

  • Native Redland binary store importers
  • Additional durable engines (RocksDB/redb) beyond explicit Unsupported
  • C ABI / Python storage bindings (0.7/0.8+)
  • Multi-tenant hardened database security claims
  • Rasqal SPARQL differential expansion (tracked separately)

Work package sequence

ID Package Depends on
WP-04-00 Milestone plan + inventory skeleton
WP-04-01 Accept ADR-006 + format v1 WP-04-00
WP-04-02 Storage constructors and options WP-04-01
WP-04-03 Capability matrix + legacy disposition WP-04-02
WP-04-04 Transactions WP-04-02
WP-04-05 Sync, clear, bulk / transactional load WP-04-04
WP-04-06 Concurrency + read-only WP-04-04
WP-04-07 Archival import/export + backup guidance WP-04-05
WP-04-08 Evidence + CI WP-04-05–07
WP-04-09 Docs, parity, 0.4.0 release all

Evidence gates

  • Crash-safe persistence and reopen tests pass (format v1).
  • Transaction commit and rollback tests pass (memory + Fjall).
  • Unsupported legacy backends return explicit capability errors.
  • Storage compatibility decisions are recorded in the parity ledger.
  • Concurrent reader/writer behavior is tested and documented.
  • Pre-0.4 experimental stores migrate or fail with guidance.
  • Transactional bulk import leaves disk unchanged on mid-parse failure.
  • fjall remains the durable backend; default build stays free of native C++ deps.

Exit checklist

  • Inventory redland-1.0.17-oxiland-0.4.json verified
  • ADR-006 accepted
  • Public API snapshot updated
  • docs/reports/0.4.md complete
  • PARITY.md / ROADMAP.md mark 0.4 complete
  • CI storage/fjall matrix green
  • 0.4.0 release checklist ready (docs/reports/0.4.0-release.md; tagging still open)