Downstream integration profiles
Generated by cargo run -q -p axiolid-contracts --example downstream_profiles. Do not edit by hand.
The v0.4 protocol supports three consumption profiles. These rows define boundary compatibility; they do not claim that every operation is available. A concrete build must return an IntegrationDescriptor, and an operation is advertised only after a provider implementing its operation trait is present and exercised. See ADR 0039.
| Profile | Transport | Discovery | Compatibility | API | ABI | MSRV | Ownership | Thread safety |
|---|---|---|---|---|---|---|---|---|
rust-leaf | Rust packages selected directly | selected operation traits plus Backend::descriptor | Cargo SemVer per selected leaf package | 0.4.0 | — | 1.88 | Rust-owned values | Send + Sync values |
rust-facade | feature-gated axiolid package | compiled IntegrationDescriptor plus operation traits | Cargo SemVer and additive feature names | 0.4.0 | — | 1.88 | Rust-owned values | Send + Sync values |
native-c | C ABI with opaque handles | ABI version and runtime IntegrationDescriptor query | ABI major match; additive minor and patch releases | 0.4.0 | 0.4.0 | — | opaque owned handles | context Send, not Sync |
Boundary invariants
All profiles use right-handed Cartesian f64 coordinates. Geometry is unitless: coordinates and every explicit tolerance use one caller-selected unit. Approximate or discretizing work requires a caller-visible tolerance. Exact requests either return exact analytic/topological results or typed refusal; they never silently return meshes. Rust values own their allocations. Native outputs are opaque handles released by their matching Axiolid destructor.
Versioned capability vocabulary
The protocol recognizes these stable identifiers. Presence here defines vocabulary, not runtime availability; only the descriptor returned by the current build may claim availability.
| Capability identifier |
|---|
org.axiolid.geometry.tessellate.v1 |
org.axiolid.geometry.mesh-boolean.v1 |
org.axiolid.geometry.mesh-section.v1 |
org.axiolid.geometry.mesh-validate.v1 |
org.axiolid.geometry.mesh-measure.v1 |
org.axiolid.geometry.ray-mesh.v1 |
org.axiolid.geometry.exact-extrude.v1 |
org.axiolid.geometry.graph-to-mesh.v1 |
org.axiolid.geometry.graph-to-exact-brep.v1 |
org.axiolid.geometry.curve-evaluate.v1 |
Typed handshake
Consumers submit a CapabilityRequirement containing a versioned capability ID, required output representation, and required fidelity. IntegrationDescriptor::require returns the matching descriptor or a typed RequirementRefusal (ApiVersion, CapabilityUnavailable, RepresentationUnavailable, or ExactnessUnavailable). This check performs no fallback. Provider selection remains explicit and operation traits remain the capability truth.
Verification
Run scripts/check-integration-contract.sh to regenerate this document in memory and compare it byte-for-byte. Run scripts/probe_integration_contract_gate.py to prove the gate detects a removed promised identifier and restores the source tree.