Milestone 0.11 — Demonstrated Redland parity¶
Status: complete
Outcome: deliver reproducible full parity with the pinned Redland baseline, including safe workflow equivalence, C source compatibility, binary ABI interchange, and observable behavioral compatibility
Depends on: 0.10 (complete as a qualification scaffold)
Progress report: docs/reports/0.11.md
The 0.10 inventory, implementation, and qualification artifacts are useful inputs, but they are not accepted as proof for this milestone. In particular, an allowlisted symbol, a lifecycle smoke test, or a copied pass declaration for an unexecuted target does not verify Redland behavior.
Frozen scope¶
- Baseline: Redland
librdf1.0.17, manual 1.0.18, plus the exact Raptor and Rasqal versions and build options used by the reference artifacts. - Public denominator: installed Redland headers, exported functions and data,
public types, enums, constants, macros, ownership rules, callbacks, factory
behavior, error behavior, and
rdfprocworkflows. Independent Raptor/Rasqal APIs and third-party plug-ins absent from the frozen Redland build remain out of scope. - Targets: Linux x86-64, macOS Apple Silicon, and Windows x86-64. A target counts only when its evidence was produced on that target by the exact tested revision and artifact set.
- Build profiles: release default and release all-storage. The frozen profile manifest records compiler, linker, allocator, dependencies, features, and Redland configuration.
- Defined behavior: Oxiland need not reproduce Redland memory corruption or other undefined behavior. All valid-input behavior and all documented error, ownership, callback, and lifecycle behavior are mandatory.
Changing this denominator requires a reviewed compatibility-contract change; it cannot be narrowed to turn a failing result green.
Required proof¶
Native differential behavior¶
Every behavioral obligation is a stable fixture executed through both native Redland and Oxiland release artifacts. The harness captures return values, output bytes or normalized RDF, errors, logs, callbacks, ownership transitions, persistent state, and resource outcomes as applicable. A result passes only when both executions complete and the declared comparison is equal. Missing Redland, skips, timeouts, crashes, generated expectations, and unexecuted profiles are failures.
Each public inventory item links to one or more obligations covering its
positive, boundary, failure, and lifecycle behavior. Inventory state is
derived from passing raw results; generators may not assign verified or
differential_passed merely from symbol presence.
C source and binary compatibility¶
Source compatibility requires the frozen C corpus and selected downstream consumers to compile without source changes against both Redland and Oxiland headers under warnings-as-errors.
Binary ABI compatibility requires programs and shared objects built and linked against Redland to run against the Oxiland compatibility library without recompilation or relinking. Evidence covers library names and SONAME/install names, symbol names and versions, calling conventions, public layouts and constants, ownership, callbacks, loader behavior, and allocator boundaries on each supported target. Header or export-list similarity alone is insufficient.
Evidence provenance¶
Every raw result records and cryptographically binds:
- the exact source tree and commit, with a clean-worktree assertion;
- hashes of the inventory, fixtures, harnesses, headers, libraries, executables, packages, and Redland oracle artifacts;
- target, host, toolchain, dependency, feature, and environment metadata;
- command, exit status, timestamps, and complete machine-readable observations.
The 0.11 release checker recomputes results from raw artifacts, rejects stale or cross-revision evidence, rejects profile fan-out from a single execution, and fails closed when any required artifact or provenance field is absent.
Work packages¶
| ID | Package | Exit signal |
|---|---|---|
| WP-11-01 | Freeze complete baseline and denominator | Checksummed headers, exports, public declarations, build metadata, CLI surface, and behavior-obligation inventory |
| WP-11-02 | Build the two-sided oracle harness | The same data-driven fixtures execute native Redland and Oxiland and emit comparable raw observations |
| WP-11-03 | Replace asserted evidence | No generator can synthesize passes; inventory and reports derive only from raw executions |
| WP-11-04 | Close safe workflow gaps | Every applicable Redland workflow has a tested safe Rust equivalent; only ownership mechanics may be Rust N/A |
| WP-11-05 | Complete C source compatibility | Frozen corpus and selected consumers compile unchanged on every required profile |
| WP-11-06 | Complete binary ABI interchange | Redland-built binaries load and pass against Oxiland without rebuild on every supported target |
| WP-11-07 | Close behavioral gaps | Every obligation passes with zero skip, mismatch, deviation, quarantine, or capability substitute |
| WP-11-08 | Prove factories, storage, and callbacks | Registration, plug-in-facing contracts in the baseline, persistence, errors, logging, re-entry, and concurrency match |
| WP-11-09 | Requalify safety and standards | W3C, ASan/LSan, fuzz, crash, and downstream suites pass on the exact candidate artifacts |
| WP-11-10 | Rebuild signed cross-platform evidence | Each host produces its own revision-bound raw bundle; independent verification reproduces the report |
| WP-11-11 | Refresh performance and package proof | The exact parity-qualified artifacts retain the frozen performance wins and clean install/uninstall results |
| WP-11-12 | Release decision and soak | No blocker, evidence reset, ABI reset, or documentation contradiction remains |
Exit checklist¶
- The complete baseline and behavior-obligation denominator are frozen and checksummed.
- Every inventory row is traceable to raw implementation and differential evidence.
- Every required target/profile was actually executed; none was inferred or copied.
- Safe Rust mappings are verified, except genuine ownership mechanics marked N/A.
- The unchanged-source C corpus and selected downstream consumers pass.
- Redland-built binaries pass against Oxiland without rebuild or relink.
- Native differential behavior has zero skips, mismatches, deviations, quarantines, or capability substitutes.
- Factory, callback, logging, error, storage, and concurrency obligations pass.
- Sanitizer, fuzz, W3C, crash, packaging, and downstream evidence is bound to the candidate revision.
- The 0.11 checker rejects stale, synthetic, incomplete, or wrong-profile evidence and passes the final bundle.
- User-facing documentation makes no compatibility claim broader than the verified matrix.
- The parity-qualified artifacts retain the required performance and resource gates.
- An independent clean environment reproduces the report and the release-candidate soak completes without reset.
-
docs/reports/0.11.0-release.mdrecords the tip release preflight.
Milestone 0.11 is complete: every checkbox is backed by linked raw evidence under
compatibility/qualification/ and a green scripts/check-0.11-release.py run.