Skip to content

Architecture decisions ​

These records capture durable choices that preserve Axiolid’s format-neutral, pure-Rust, feature-tiered design. A decision record explains its context, boundary, alternatives, consequences, and follow-up risks; it is not a changelog.

Package names and paths in older accepted records describe the tree at the time of the decision. Status and amendment notes govern conflicts; ADR 0035 and the implemented crate map are authoritative for current ownership.

ADRDecision
0001IFC split and kernel contract
0002Hardware abstraction and backend selection
0003Pure-Rust mesh Boolean direction
0004Package layout and backend features
0009Layered geometry DAG and operation providers
0011Native accelerator backends out of tree
0012Scalar reference ownership
0013Deferred performance techniques
0014Adopt Boolmesh as mesh Boolean provider
0015Adopt Earcut for polygon triangulation
0016Predicate ownership and adopted implementations
0017Solid boolean semantics defined before implementation
0018Curve evaluation belongs to the scalar reference
0019Validate and refine NURBS on the scalar read path
0020Exact B-rep is the kernel model; tessellation is an output
0021Capability seams live in axiolid-kernel; retire axiolid-sweep — superseded by 0023
0022General NURBS algorithms are a kernel capability
0023Solid generation is an L2 crate, not part of the compiler
0024Exact B-rep results own analytic supports and trims
0025Certified NURBS queries use outward-rounded subdivision
0026Planar NURBS roots require interval existence proofs
0027Curve/surface roots require bounded transverse existence proofs
0028Affine surface/surface traces compose exact identities and certified boundary roots
0029Certified finite traces become split faces plus embedded curves
0030Surface closest-point certificates require bounded global branch-and-bound
0031Periodic curve behavior is an opt-in verified view
0032Periodic B-spline surfaces use an explicit cyclic schema
0033Mesh plane sections are an explicit approximation tier
0034Authored open profiles are graph declarations, not areas
0035Physical layout follows ownership; contracts remain provider-neutral
0036Minimal dependency closures are packages and machine-checked promises
0037Mapped 3D certificates require an independent verification oracle
0038Constructed intersection curves carry certified topology
0039Downstream profiles share a versioned, typed capability handshake
0040Native consumers use a versioned, allocation-neutral C ABI
0041CMake consumers share one target across immutable source and native archives
0042Downstream compatibility is an executable black-box gate
0043Release version/changelog rollover is a checked, reviewed script
0044Pointcloud representation and reconstruction extend the discrete-family DAG
0045Boolean construction arithmetic is f64; predicates verify, they do not construct
0046Exact boolean path for interpenetrating solids
0047Absorb the mesh boolean into the provider crate
0048Coplanar seam merging across chained booleans
0065Ownership replaces read-only/mutable type pairs
0066Domain interpretations stay downstream of the kernel
0067Crates version independently
0068Exact numbers: num-bigint integers under an owned filtered layer
0069Arc booleans: keep cavalier_contours, scaled; exact path later
0070Exact arc booleans replace cavalier_contours
0071Sinusoid pcurves for plane cuts across cylinders
0072Column solids over one planar arrangement
0073Exact mass properties over curved faces by Green's theorem
0074Certified boundary distance by branch and bound
0075General B-rep boolean: our own general-fuse pipeline
0076Ruled quadric sections: exact quartic intersection curves
0077Implicit section curves: certified tracing of analytic sections
0078Context lives beside the code; open work lives in issues
0079Least-squares fitting lives in axiolid-nurbs and depends on axiolid-numeric
0080The exact compiler cuts placed openings with the general boolean
0081Banked curves name their cant convention
0082Stations measure in their basis curve's convention

Released under the Mozilla Public License 2.0.