Commit Graph

11176 Commits

Author SHA1 Message Date
Brett Lawson 1fe74f087b Merge remote-tracking branch 'origin/main' into fix/loops-turn-normal 2026-10-31 09:22:13 +01:00
bherbruck f560e69d23 Merge pull request #1937 from ChrisNourse/fix/bottle-sweep-validity
fix: opt in to regularizing degenerate translation sweep output
2026-10-31 04:17:31 -04:00
bherbruck bdd614891f Merge pull request #1961 from brett19/fix/face-tight-box-knot-division
fix: a face's tight box divides its cells at the surface's knots (opt-in, WR-645, fork 326de73)
2026-10-31 04:05:16 -04:00
bherbruck f547583116 Merge pull request #1993 from tangency-labs/docs/wr617-addendum-tangent-corner
docs: WR-617 addendum — the cause at the tangent corner, parked (#1795)
2026-10-31 03:55:37 -04:00
bherbruck 9659df5f78 Merge pull request #1939 from aapolipponen/fix/wr3
fix: surface.volume_p1 — opt-in: a segment is in the domain only if both endpoints are (WR-3)
2026-10-31 03:55:18 -04:00
Brett Lawson 390bec8248 Merge remote-tracking branch 'origin/main' into fix/face-tight-box-knot-division 2026-10-31 08:48:03 +01:00
Brett Lawson 968313dd59 Renumber the tight-box knot-division record to WR-651
WR-645 is taken on main by the drafted-pocket corner record, so
check_record_ids fails. Rename this PR's record and its references.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
2026-10-31 08:48:03 +01:00
bherbruck d0e2cd2bcb docs: WR-617 addendum: the cause at the tangent corner, parked (#1795)
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>
2026-10-31 03:47:19 -04:00
bherbruck 63ed7ad09c Merge pull request #1962 from tangency-labs/difftest/dead-case-b
difftest: move 14 dead fixtures inside the C++ constructor limits (dead-case B)
2026-10-31 03:46:38 -04:00
bherbruck 51385480c0 difftest: runner tests follow the moved dead-case B fixtures
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>
2026-10-31 03:37:50 -04:00
Brett Lawson 0ef240475b fix: opt-in loop ordering turns about one normal per list (WR-591, fork b0ee3f9; #1982)
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
2026-10-31 08:36:54 +01:00
bherbruck ef3a24ab1b Merge pull request #1927 from aapolipponen/fix/cov-1824
difftest: intersect.curve_class_p7 — endpoint conflicts and old faces on real faces (follow-up to #1824)
2026-10-31 03:31:30 -04:00
bherbruck a143bfb598 Merge pull request #1971 from khanahmad4527/difftest-968-solidcraft-floor-cut
difftest: #968 as SolidCraft cases, with a face-prism step and a removed-volume check
2026-10-31 03:19:29 -04:00
aapolipponen 35242b335c Merge remote-tracking branch 'origin/main' into HEAD 2026-10-31 09:17:10 +02:00
bherbruck 2fbbc9736d Merge pull request #1399 from tdamsma/claude/issue-396-part2-probation
fix: intersect.adv_surface_intersector — opt-in: low-angle SSI start points traced on probation (WR-79, #396 part 2)
2026-10-31 03:13:34 -04:00
bherbruck 9738be1dff Merge pull request #1958 from brett19/fix/analytics-exact-face-cache
test: shell exact edges on a face-owned surface, plate-with-hole case (#1950)
2026-10-31 03:11:22 -04:00
bherbruck 0e51386654 Merge pull request #1948 from brett19/fix/1945-rail-uv-trim
fix: N-D local solve takes no value from a failed evaluation (fork d2757e1, WR-253 flag; #1945)
2026-10-31 03:09:10 -04:00
bherbruck a9ca7bf2c9 Merge pull request #1938 from aapolipponen/fix/wr69
fix: intersect.adv_surface_intersector — opt-in: MakeDupin bottom hyperbola axis (WR-69)
2026-10-31 03:03:03 -04:00
bherbruck 1cd6380c08 Merge pull request #1943 from aapolipponen/fix/pb87
fix: offset.offset_executive_p2 — the temporary B-rep stores the tolerance magnitude, as upstream (nightly fuzz00087)
2026-10-31 03:02:54 -04:00
bherbruck 199baa8494 Merge pull request #1960 from brett19/fix/good-drop-tight-test
fix: GoodDropResult takes a foot only at the local solve's tight tolerance (opt-in, fork eaa998a; #1852)
2026-10-31 03:02:45 -04:00
bherbruck 96876bd343 Merge pull request #1966 from aapolipponen/fix/rn-grid
difftest: geom.grid — expand of an opaque surface label emits the shim sentinel (nightly fuzz00105)
2026-10-31 03:02:35 -04:00
bherbruck 5af4802c90 Merge pull request #1969 from khanahmad4527/fix-wr645-corner-rail-on-opposite-fillet
fix: WR-645, a drafted pocket's corner keeps its rounds' exact edges (opt-in)
2026-10-31 03:02:24 -04:00
Ahmad Khan 20184c38e1 difftest: #968 as SolidCraft cases, with a face-prism step and a removed-volume check
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>
2026-10-31 12:28:06 +05:30
chris f8f41514f6 Merge latest main for bottle sweep validation
Co-Authored-By: Codex <noreply@openai.com>
2026-10-30 23:53:23 -07:00
chris ed44462f42 fix: opt in to regularizing degenerate translation sweep output
Co-Authored-By: Codex <noreply@openai.com>
2026-10-30 23:53:23 -07:00
Brett Lawson 6c526ec46b Merge origin/main into fix/1945-rail-uv-trim
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
2026-10-31 07:52:07 +01:00
Brett Lawson 4230751043 test: #1945 regression tests pass clippy's test lints
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
2026-10-31 07:52:07 +01:00
bherbruck 1fcfee382a Merge pull request #1947 from brett19/fix/wr644-mitre-gap-patch
fix: opt in to filling the gap past a mitre whose rails meet the corner edge apart (WR-644)
2026-10-31 02:50:17 -04:00
aapolipponen 6d798ea514 fix: geom.extent3d — opt-in: segment containment needs both endpoints (WR-3) 2026-10-31 08:49:42 +02:00
Brett Lawson 2eeb90678a Merge origin/main into fix/face-tight-box-knot-division
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
2026-10-31 07:49:15 +01:00
Brett Lawson da95112a81 test: #1950 plate test credits #1963 for the fix
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
2026-10-31 07:48:58 +01:00
Brett Lawson 4c1530b44d Merge remote-tracking branch 'origin/main' into fix/good-drop-tight-test 2026-10-31 07:48:26 +01:00
Brett Lawson 1a90aa41ca Merge origin/main (#1963) into fix/analytics-exact-face-cache
#1963 made the same make_edges_on_analytics_exact change and added the shell/566 and
shell/1525 tests: take main's code and tests, keeping only the plate case here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
2026-10-31 07:45:51 +01:00
Brett Lawson 2bb951cd77 test: #1950 plate test builds the kernel with its fixes in the initializer (clippy)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
2026-10-31 07:44:54 +01:00
bherbruck 0ec04c9b16 Merge pull request #1931 from altvnk/fix/wr103-sphere-arcs-common-centre
fix: opt in to requiring a common centre for sphere arcs (WR-103)
2026-10-31 02:44:06 -04:00
bherbruck 7ce037cb86 Merge pull request #1949 from brett19/fix/960-wr643-run-on-far-end-only
fix: opt-in fillet run-on past a side edge's far end only (WR-643, fork 7224896; #960)
2026-10-31 02:43:58 -04:00
bherbruck 00c93cc19a Merge pull request #1967 from tdamsma/claude/fuzz-sweep-library
fix(difftest): fuzz sweep of 81 units with new seeds (97k cases): five runner-side aborts/timeouts refused on both sides; library clean
2026-10-31 02:43:48 -04:00
Ahmad Khan 67d8459e58 fix: WR-645, a drafted pocket's corner keeps its rounds' exact edges (opt-in)
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>
2026-10-31 12:10:03 +05:30
bherbruck 117a3b86dd Merge pull request #1925 from tdamsma/claude/copy-faces-merge-key-aliasing
fix(topology): copy_faces_from guards shared namings so merged copies no longer alias source attributes (#1953; no API change)
2026-10-31 02:31:48 -04:00
bherbruck 035bff0995 Merge pull request #1963 from tdamsma/claude/shell-analytic-edges-face-context
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)
2026-10-31 02:31:38 -04:00
Alex Lytvynenko 04e28184bc Merge authoritative upstream/main before sphere-centre publication
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>
2026-10-31 07:29:06 +01:00
Brett Lawson 04d9edf976 Merge origin/main into fix/1945-rail-uv-trim
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
2026-10-31 07:26:04 +01:00
Brett Lawson 6ddf09acb8 fix: d2757e1's N-D part under WR-253's oscillating_skips_failed_guesses
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
2026-10-31 07:26:04 +01:00
Brett Lawson 90bd834c5a Merge remote-tracking branch 'origin/main' into fix/wr644-mitre-gap-patch 2026-10-31 07:22:21 +01:00
aapolipponen bc1af4d1cc difftest: geom.grid — expand of an opaque surface label emits the shim sentinel (nightly fuzz00105) 2026-10-31 08:22:13 +02:00
Brett Lawson 00a19b33be fix: satisfy clippy in the WR-644 gap branch and its test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
2026-10-31 07:22:10 +01:00
bherbruck 4077e8ed78 Merge pull request #1918 from altvnk/fix/wr98-mirror-euclidean-control-points
fix: opt in to preserving rational curve geometry when mirroring (WR-98)
2026-10-31 02:20:47 -04:00
bherbruck 87fd069b18 Merge pull request #1920 from altvnk/fix/wr100-drop-v-domain-degeneracy
fix: opt in to checking DropCurve V-domain degeneracy (WR-100)
2026-10-31 02:20:40 -04:00
chris 1f85b355b0 test: reproduce bottle sweep validity failures after UB-170
Record native and Rust evidence and failed repair experiments. The bottle validity repair remains unresolved.

Co-Authored-By: Codex <noreply@openai.com>
2026-10-30 23:20:08 -07:00
bherbruck 8113af0680 Merge pull request #1956 from khanahmad4527/test-968-pocket-floor-cut
test: #968 drafted pocket's rounded floor cut straight down leaves no skin
2026-10-31 02:14:31 -04:00