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::transactionwith commit/rollback on memory and Fjall; - call
sync,clear/clear_graph, and transactional bulk import; - inspect
StorageCapabilitiesand get explicitUnsupportedfor 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.jsonverified - ADR-006 accepted
- Public API snapshot updated
-
docs/reports/0.4.mdcomplete -
PARITY.md/ROADMAP.mdmark 0.4 complete - CI storage/fjall matrix green
-
0.4.0release checklist ready (docs/reports/0.4.0-release.md; tagging still open)