* Action matrix regressions of #1255: knuckle rounds, thin holes, a 45° flange hole, an axis after an edit
- Curve blends: past the end of a curved edge the run of sections along the end
tangent wrapped round the ring of centres; it is shortened while it still
crosses the end face (the hinge knuckle's cap rounds at 0.728 mm).
- Boolean retry guard: each body's volume is measured finer than its smallest
radius, and a volume out of bounds is measured again ten times finer before
it refuses (a 0.133 mm drill measured -30272 mm³; a plastic part's coarse
mesh was off by more than the slack).
- Sheet metal: a drill cap's certificate allows the evaluation noise its fitted
tilt shows (a hole square to a 45° flange).
- Construction geometry on a named face uses the face found by name, not a
second pick at its nearest point (an axis through a corner round after a
parameter moved it).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* Retry guard: measure the target, tool and result at one tolerance
Measured at different tolerances, the chords' error on the faces they share
didn't cancel: a blind hole in a long D-profile bar measured 20 mm³ more than
the bar.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* Action matrix baseline from this branch's full run: 37 actions pass again, none fewer
Blessed with cargo xtask action-matrix --from DIR --bless from the 16 shards of
run 38673859774.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: Claude Opus 5.5 <[email protected]>
inputs_mut, inputs and expressions are now built on one exhaustive walk (walk_exprs / walk_exprs_mut) instead of two hand-written matches over FeatureKind. inputs() no longer clones the feature, plane chains are walked with the same nesting cap for inputs as for expressions, and a new variant without a walk arm does not compile. A golden record of every variant's expressions guards the walk.
A construction plane built from model geometry resolves each of its sides
through the document again. That hop restarted the recursion depth at 0, so a
plane that is its own side never exceeded depth 1 and the 32-level cap never
fired: a ~600-byte design file recursed until the stack overflowed and the
process aborted, which no panic guard can intercept.
Carry the depth on the construction context so the geometry arms continue the
caller's count instead of restarting it.
Fixes#143
Co-Authored-By: Claude Opus 5 <[email protected]>
(cherry picked from commit 4bca1d49f27dfe9ef0140132746e1c7415daba8e)