-
Notifications
You must be signed in to change notification settings - Fork 0
Lossless Roundtrip Definition
This page gives the formal definition of "lossless roundtrip" as used by the v0.1 OSLC adapter (see Design Spec §9). It exists because the phrase "lossless roundtrip" is too vague to be testable on its own — different stakeholders mean different things by it — and because institutional adoption of flexo-rtm depends on a precise, demonstrable criterion. Locked decision D11 fixes the criterion as Layer A + Layer C: rigorous canonical-form equivalence for the OSLC-RM/QM core, opaque carry-through for everything vendor-specific.
"Lossless" is defined as the conjunction of two independent conditions on the parse → serialize roundtrip:
- Layer A — Core equivalence. Triples whose predicate is in the OSLC-RM 2.1 or OSLC-QM 2.1 core vocabulary roundtrip with RDFC-1.0 canonical-form byte-equality. This is the rigorous claim: the adapter understands these constructs and re-emits them identically up to the equivalence relation defined by W3C RDF Dataset Canonicalization 1.0.
- Layer C — Opaque carry-through. Triples whose predicate is outside the core vocabulary (Doors-X, Jama-Y, and any other vendor or custom predicate) are stored verbatim in a per-resource source named graph and re-emitted verbatim, with the per-resource triple count preserved across the roundtrip. The adapter does not claim to understand these triples — only that it does not drop, rename, or mutate them.
Layer A is what makes the adapter interoperable with the OSLC standard. Layer C is what makes it survive contact with real vendor exports, where 30–60% of the triples in a Doors or Jama export are vendor extensions that no standards body has blessed. Without Layer A, institutional users cannot trust the conformance claim; without Layer C, the adapter would either crash or silently corrupt real-world data on the first import.
The certification predicate (see Certification Predicate) does NOT certify content inside Layer C subgraphs — they are carried, not interpreted.
Let spec/oslc-roundtrip-acceptance.md (per Design Spec §9.A.2 O3). Let
The roundtrip is:
Layer A holds iff:
This is byte-equality of canonical-form output, not graph isomorphism by some other measure. RDFC-1.0 already handles blank-node relabeling, triple ordering, and namespace-prefix variation, so the test reduces to H(C(G_in_core)) == H(C(G_out_core)) where H is the active cryptographic suite's content-hash algorithm (SHA-256 by default per ADR-026 Cryptographic Agility via Algorithm Profiles; the algorithm rotates with the suite, not with code surgery). This is checked by tests/integration/oslc-roundtrip/test_layer_a_rm.py and test_layer_a_qm.py (per Design Spec §9.A.2 O1).
Let
Layer C holds iff both of the following:
-
Verbatim re-emission. For every triple
$(s, p, o) \in \text{nonCore}(G_\text{in})$ , exactly the same triple$(s, p, o)$ appears in$G_\text{out}$ . No predicate rewriting, no object normalization, no datatype inference. -
Structural count preservation. For every resource IRI
$r$ that is the subject of any non-core triple, $|\text{nonCore}(G_\text{in})|r = |\text{nonCore}(G\text{out})|_r$. This catches silent drops that would survive a sampled verbatim check.
Semantic checks on Layer C content are not performed: we do not validate, normalize, or interpret vendor predicates. This is enforced by tests/integration/oslc-roundtrip/test_layer_c_carrythrough.py (per Design Spec §9.A.2 O2).
The lossless criterion does not preserve, and is not required to preserve:
- Serialization-level choices. RDF/XML vs. Turtle vs. JSON-LD; namespace prefix abbreviations; whitespace; element ordering. These are properties of the byte stream, not the graph, and RDFC-1.0 explicitly equates graphs that differ only in such choices.
- Blank node labels. RDFC-1.0 canonicalizes blank node identifiers; two graphs that differ only in blank node naming are canonically equivalent. Round-tripped output may use different blank node labels than the input and still be lossless.
- Inferred triples. If internal processing adds entailments (e.g., RDFS subclass closure for validation), those derived triples are NOT written back. Only the explicitly-stored set roundtrips. This keeps Layer A honest: the adapter cannot "win" the equivalence test by inferring missing triples on the input side.
examples/oslc-fixtures/vendor-registry.yaml enumerates known vendors (Doors, Jama, Polarion, codeBeamer, …) and their known extension namespaces. The registry is informational — Layer C carry-through works for unknown vendors too; the registry exists to document known patterns, support targeted vendor-fixture testing, and surface which vendors have been validated against. Adding a new vendor requires only a registry entry, not a code change (per Design Spec §9.A.2 O7).
See Vendor Extension Carry-Through for the storage mechanics and OSLC RM Adapter Contract / OSLC QM Adapter Contract for the parse/serialize interface.
The criterion is validated by integration tests at four levels (per Design Spec §9.A.2):
-
O1 — Layer A core equivalence. Synthetic graphs constructed to exercise every core construct in
spec/oslc-roundtrip-acceptance.mdroundtrip with$C(G_\text{in} \cap \text{core}) = C(G_\text{out} \cap \text{core})$ . - O2 — Layer C carry-through. Synthetic graphs with vendor extensions roundtrip verbatim with structural counts preserved.
-
O4 — Canonical fixtures roundtrip. Every fixture in
examples/oslc-fixtures/canonical/(W3C and OASIS OSLC spec examples) passes Layer A. -
O5 — Vendor fixtures roundtrip. Sanitized Doors and Jama exports in
examples/oslc-fixtures/vendor/pass Layer A on core and Layer C on extensions.
A v0.1 release is gated on all four passing. See also RDFC-1.0 Canonicalization for the canonical-form mechanics.
The criterion is precise about what it covers, and equally precise about what it does not:
- Vendor-specific service catalog negotiation. OSLC service providers advertise capabilities via runtime OSLC Service Catalog and Resource Shape documents. v0.1 ships the adapter (parse, serialize, roundtrip against fixtures), not live connectors that negotiate with running Doors / Jama instances. Live connectors are v0.2 and plug into the v0.1 adapter without modification.
-
Vendor UI delegate URIs. Doors and Jama emit URIs that, when dereferenced by a user agent, return interactive UI for picking or creating linked resources. These URIs are preserved verbatim by Layer C — they roundtrip — but
flexo-rtmdoes not interpret them, render them, or follow them. A downstream tool that needs the UI delegate behavior must consume the carried-through triples directly.
Both of these are deliberate scope cuts, not gaps. The lossless criterion is about the data, not about reproducing every interactive surface of the source tool. Reproducing the data losslessly is what gate-keeps institutional adoption; reproducing the interactive surfaces is product surface area that belongs in v0.2+.
- Design Spec §9, §9.A.2 (O1–O7 acceptance criteria), locked decision D11
-
RDFC-1.0 Canonicalization — the canonical form
$C(\cdot)$ used in the Layer A definition - Vendor Extension Carry-Through — Layer C storage mechanics and named-graph layout
- OSLC RM Adapter Contract — parse/serialize contract for OSLC-RM 2.1
- OSLC QM Adapter Contract — parse/serialize contract for OSLC-QM 2.1
- Flexo Git Coexistence
- ADCS Prototype Lessons
- MVC Pattern from RIME TRL ANT
- Human-AI Accountability
- Multi-Agent Discourse Graph Precedent
- OSLC RM and QM Review
- INCOSE V2 Review
- OMG SysMLv2
- PROV EARL GSN P-PLAN
- Dragon Architecture and Mission Enterprise
- Traditional Forward and Backward Analysis
- Attestation Infrastructure in v0.1
- Identity Boundaries and Policy Projections
- External URI References
- Signed Envelopes and Established Standards
- Aspect Coverage with Adequacy and Sufficiency
- Federated Audit and Composition
- Certification Predicate
- Gap Taxonomy
- Quantitative Outcomes
- Engineering Lifecycle Stages (v0.2)
- Topological Framework Future Work (research phase)
- Vertices Edges Faces (research phase)
- Three-Layer Architecture
- Operational Layer UX Discipline
- Storage Layer Flexo Conventions
- Analysis Layer Scope Algebra
- OSLC Roundtrip Acceptance
- Identity Adapter Contract
- Flexo REST Binding
- SysMLv2 Ingestion Contract
- External URI Rules
- Signed Envelope Shapes
- Parsimony Manifest
- Lossless Roundtrip Definition
- Vendor Extension Carry-Through
- OSLC RM Adapter Contract
- OSLC QM Adapter Contract
- ADR Template
- ADR-001 Foundations First Approach
- ADR-002 SysMLv2 Anchoring
- ADR-003 Topological Framework Documented as Future Work
- ADR-003a v0.1 Ships Traditional Analysis Only
- ADR-004 Quantitative Certification Outcome
- ADR-005 Adequacy and Sufficiency as Guidance Subtypes
- ADR-006 Three-Layer Architecture
- ADR-007 Scope as First-Class RDF Resource
- ADR-008 Repo Name and Org Transfer Plan
- ADR-009 Two-Repo Strategy
- ADR-010 OSLC-RM and OSLC-QM in v0.1
- ADR-011 Lossless Criterion A plus C
- ADR-012 Direct RDF Properties over Reified Edges
- ADR-013 Simplicial Complex as Derived View When Built
- ADR-014 Parsimony Layer Build-Time Extraction
- ADR-015 GSN Adoption for Adequacy and Sufficiency
- ADR-016 Composable SHACL Profiles
- ADR-017 knowledgecomplex as Optional Extras
- ADR-018 V minus F Invariant Deferred with Topological Framework
- ADR-019 Derived Binary View from Quantitative Metrics
- ADR-020 Vocabulary Alignment with Zargham 2026
- ADR-021 Three Attestation Subclasses Ship in v0.1
- ADR-022 External URI References as Open-Source Foundation
- ADR-023 Cryptography by Composition of Battle-Tested Standards
- ADR-024 Identity by Thin Projection of External Sources
- ADR-025 Reproducibility is Structural and Local
- ADR-026 Cryptographic Agility via Algorithm Profiles
- ADR-027 Bit-Exactness vs Numerical Tolerances Are Both First-Class
- ADR-028 Scope-Level Adequacy and Sufficiency for Federated Audit
- ADR-029 Engineering Lifecycle Stages as Scope Metadata
- ADR-030 Polycentric ASOT Authority Model
- ADR-031 Attestation Status Pass Fail Deferred Deprecated
- ADR-032 Methodology Agnosticism as Foundational Axiom
- ADR-033 Generalized ASOT Principle for All Identified Things