Adds the unmerged-offset difftest cases for the #1795 plate shell (the raw
offset equals C++ for y = 20 and for the top-open shell), an ignored probe,
and a WR-617 addendum recording the cause and why the fix is parked.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The offset_executive_p1/p2 runner tests pinned fixtures that #1962 moves
inside the C++ constructor limits. Each test now asserts the moved case is
compared and passes, and keeps the native-rejection assertions on a clone
with the old out-of-limit input, so the refusal path stays tested.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
With loops_go_on_round_the_vertex, next_round_the_vertex took its turn normal
from the rays at each vertex in list order, so its sign followed the order and
two unit squares touching at (1, 1) joined into one figure-eight loop in 12 of
32 orders. order_curves_into_loops now computes one normal for the whole list
before it walks (loops_turn_normal, the fork's area-vector sum about the
curves' centre, turned against the loops' area), as tangency-labs/smlib
b0ee3f9 does. Flag off is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
SolidCraft case #968: an 80 x 80 x 40 block, a 60 x 60 pocket 15 deep
whose walls lean out 10 degrees, R3 on its rim and corner edges, then
the floor cut 5 further down, (a) straight and (b) continuing the walls
and corner rounds. Both run on solidcore and pass: one lump (no void
under the old floor) and the volume removed equal to the issue's closed
forms (14928.928, 14451.766).
The runner gains the two things the issue asks for:
- `sweep_face`: SmApiCreateLinearSweep of the loops of a body's face
picked by a point (dropped on its surface and classified inside), its
edges' curves trimmed to the edges: the prism of the face.
- `expect.removed`: an earlier body's volume minus `result`'s, for a
result whose own volume has no closed form.
The pocket is built from boxes turned 10 degrees (SM_API has no drafted
extrude with corner edges at the pin), so no fix is needed; the cut (b)
is the drafted frustum z 20..25 of the same walls with its corner edges
rounded 3. Unit tests cover the step, the picker, scoring and validation;
the case-file test also accepts a fixing commit where there is no PR.
Fixes#968
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SmFilletCorner::MakeVariableRadiusFillet turns a four-sided corner with
a rail-rail interpolation edge into a variable-radius fillet between
the face and the opposite fillet, and its rail on the opposite fillet
replaces that fillet's end edge. At a drafted pocket's top corners the
rail runs past the end of the corner round (0.42 at R3, 10 degrees),
the edge's tolerance is raised to twice that and SMLib's check refuses
the body. Vertical walls are exact.
The opt-in Kernel::fixes.fillet_corner_variable_radius_rail_on_opposite_fillet
refuses the conversion when the rail leaves the opposite fillet's surface
(9 points dropped on its natural domain, ten times the corner's
tolerance), as a crossing rail-rail curve is refused; the corner is then
the patch on its exact edges. Every corner of the record's trigger is
exact and valid at 2, 10 and 20 degrees, R1 and R3; vertical walls are
unchanged. The root cause and the field are a WR-645 addendum.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix(offset): shell_edges_on_analytics_exact intersects the faces' surfaces with face context instead of hitting the cache guard (#1950; shell/566, shell/1525)
Preserve sphere implementation/tests and affected inputs verbatim. Earlier local checks remain attributed to ed6575a36e2527e469231abf27959813e9e09146; only formatting and record checks are newly executed here. Canonical CI must run the full new-head gate.
Co-Authored-By: GPT-6.1 Sol Fast <noreply@openai.com>
Drop the separate local_solve_nd_skips_failed_evaluations flag: the N-D
part of tangency-labs/smlib@d2757e1 now completes WR-253 under the same
opt-in flag as its 1-D part, as the fork has both. Flag off is unchanged.
Adds tdamsma's #1945 repro as a second regression test: SolidCraft's step-4
B-rep of fillets/1207 (tests/data/issue_1945_blend_1207_step4.smb) with
SolidCraft's flag set. With the flag: the fork's 11/25/16 body, V to 1e-9
relative of the fork's 49712.42808748303, check clean; without it, test #15.
Repro, flag set and root cause by tdamsma on #1945.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
Record native and Rust evidence and failed repair experiments. The bottle validity repair remains unresolved.
Co-Authored-By: Codex <noreply@openai.com>