Skip to content

0001 — Split IFC semantics from Axiolid, the external geometry kernel

  • Status: Accepted
  • Date: 2026-08-18
  • Deciders: GeneralPawz, Hermes
  • Supersedes:

Context

IFC geometry is a source-adapter concern, not a property of a reusable geometry kernel. A kernel that knows IFC entities cannot serve other importers; an IFC codec that selects a backend forces every consumer to inherit that backend.

The project also rejects the common failure mode where an ordinary geometry dependency introduces a heavy native C++ toolchain. Axiolid must remain pure Rust and source-format neutral.

Decision

Axiolid is an independent geometry workspace. Source-format adapters translate their data into Axiolid values and neutral geometry graphs at the boundary.

  • Axiolid crates do not expose IFC, STEP, renderer, or GPU API vocabulary.
  • The kernel defines operation contracts separately from CPU, GPU, and third-party providers.
  • Adapters depend on data and contracts only; applications choose and compose concrete providers.

Swipe diagram horizontally

Diagram source
flowchart LR
  accTitle: Source-format adapter and geometry provider boundary
  accDescr: A source-specific adapter lowers records into format-neutral Axiolid values and graph nodes. A typed operation contract then reaches an application-selected scalar, CPU, or GPU provider.
  Adapter["Source-format adapter<br/>IFC / STEP / other"] --> Values["Axiolid values / graph<br/>format-neutral"]
  Values --> Contract["Typed operation contract<br/>stable seam"]
  Contract --> Provider["Application-selected provider<br/>scalar / CPU / GPU"]

Alternatives considered

OptionWhy not
Build geometry into the IFC layerMakes kernel concepts IFC-shaped and prevents reuse by other formats.
Depend on a single geometry facadeCouples the adapter to one implementation and obscures provider replacement.
Pick a provider with compile-time featuresProduces hardware-specific builds and prevents simultaneous differential testing.
Put a backend parameter on every IFC typeSpreads an execution choice through unrelated schema and codec APIs.

Consequences

Positive

  • Format adapters stay small and format-specific.
  • A mesh-only consumer does not pay for topology, GPU, or source-format machinery.
  • Scalar, optimized, and accelerator providers can be tested against the same neutral requests.

Negative / costs

  • The integration boundary must be designed and preserved deliberately.
  • Provider capabilities need explicit contracts rather than implicit assumptions.

Relation to existing code

  • crates/foundation/core owns neutral scalar values, transforms, bounds, and tolerance policy.
  • crates/representations/modeling/graph owns the immutable geometry graph.
  • crates/contracts/common owns operation contracts; providers are separate crates behind opt-in features.
  • The Nehirde IFC geometry adapter is a consumer of this boundary, not an Axiolid dependency.

Released under the Mozilla Public License 2.0.