- shim: fix the extrusion block read (it read an axis point that only
revolutions have); TRIMMED_CURVE/SURFACE_CURVE and implied-knot
B-spline surfaces as swept/face geometry in the importer
- verdicts split build differences (DIFF) from heal-only ones (HEAL-DIFF)
- heal::heal_data::p3: HasDeadTopologyPointObject resolves topology handles
to the healed B-rep (was Unported(topology.brep_p1) on every real body);
heal.* difftest unchanged (all PASS, 0 deferred)
- README section, dump_body example, plan/findings entry with the results
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QaDuBSC1mqS9DnQoEsr7LJ
- crates/step-import: ISO 10303-21 reader and AP203/AP214 B-rep mapper to a
neutral plain-data model (mm, resolved placements), written from the public
Part 21 syntax and Part 41/42 entity definitions; bounded entity count, list
nesting and reference depth; every reference checked; no allocation from
file counts. Flat f64 encoding (+ validating decoder) for the C++ side.
- harness/cpp/shim/step_import.cpp + solidcore-ffi binding: builds the SMLib
B-rep from the same encoded body (CreateCanonical geometry,
CreateFacesWithCurves, SmApiStitchIntoSolid, mass properties, SmApiHealBrep).
- difftest --step-corpus: the same recipe on the Rust port, each (body, kernel)
in a child process, stage-by-stage comparison at 1e-9 relative.
- scripts/fetch-steptools-corpus.sh: STEP Tools sample files into the gitignored
corpus/steptools/, SHA-256 pinned (never committed).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QaDuBSC1mqS9DnQoEsr7LJ