Milestone 0.5 — Streams, utilities, and observability¶
Status: complete
Outcome: complete the non-query high-level Rust surface needed for Redland
workflow parity
Depends on: 0.1–0.4 model, I/O, SPARQL, and durable storage
Blocks: 0.6 safe-API accounting that assumes utility/logging mappings
Release evidence: docs/reports/0.5.md
This is the executable specification for 0.5. The roadmap defines the release outcome; this document defines the work packages and acceptance criteria. Design detail: 0.5-streams-utilities.md. Decisions: ADR-013–ADR-016.
User-visible result¶
At the end of 0.5, a Rust caller can:
- rely on documented fallible-iterator stream contracts for find, parse, and query (lazy; early-stop by dropping the iterator);
- use URI, file-URI, Unicode, digest, and vocabulary helpers under
oxiland::utility; - register logging callbacks on
Worldand optionally bridge totracing; - map Redland hashes/lists to standard Rust collections with documented migration examples;
- observe deterministic log callback ordering and non-panicking utility errors on malformed input.
Non-goals¶
- Full Redland symbol accounting /
rdfprocCLI (0.6) - C ABI stream handles (0.8)
- Lending iterators / Redland callback visitors as public APIs
- Unifying stream trait across find/parse/query
- Parse/load wall-clock timeout (cancel remains SPARQL-scoped, ADR-012)
- Expanding Rasqal SPARQL differential beyond existing smoke
- New durable storage engines
Work package sequence¶
| ID | Package | Depends on |
|---|---|---|
| WP-05-00 | Milestone plan + inventory skeleton | — |
| WP-05-01 | Accept ADR-013–ADR-016 | WP-05-00 |
| WP-05-02 | Stream policy polish + early-stop evidence | WP-05-01 |
| WP-05-03 | URI / file / Unicode helpers | WP-05-01 |
| WP-05-04 | Digests | WP-05-01 |
| WP-05-05 | Namespaces + vocabulary constants | WP-05-01 |
| WP-05-06 | World logging + optional tracing | WP-05-01 |
| WP-05-07 | Hash/list mappings + migration examples | WP-05-01 |
| WP-05-08 | Evidence + CI | WP-05-02–07 |
| WP-05-09 | Docs, parity, 0.5.0 release | all |
Evidence gates¶
- Stream APIs are lazy and covered by early-termination tests.
- Utility output is differentially tested against Redland where applicable.
- No compatibility utility panics on malformed external input.
- Logging levels/facilities and callback ordering are fixture-tested.
- Every curated hash/list/manual-memory symbol has a documented Rust mapping or non-applicable rationale.
Exit checklist¶
- Inventory
redland-1.0.17-oxiland-0.5.jsonverified - ADR-013–ADR-016 accepted
- Public API snapshot updated
-
docs/reports/0.5.mdcomplete -
PARITY.md/ROADMAP.mdmark 0.5 complete - CI green (Check + Fjall + MSRV + RDF I/O conformance)
-
0.5.0release checklist ready (docs/reports/0.5.0-release.md; tagging still open)