Files
solvecraft/harness/cpp
Pluto-XI ec9e30a9bd Merge origin/main (5b1b5498) into unit/surface.offset_surface
Conflicts resolved in favour of main where main superseded this branch's
code, combined where both added; main's new kernel argument threaded
through the offset point solves, the fillet solver's LocalPointSolve and
copy_and_add_analytics callers; OffsetSurface arms added to main's new
SurfaceKind matches (evaluation copy, drop curve, CrvOnSurf dispatch gap,
loop UV gap test).

With surface_point_solve_p3 landed, the 213 cases that deferred on
LocalPointSolve_1 now run, and 5 disagreed: Rust found a pole solution C++
rejects. Cause: upstream's owning offset does m_pSurface->SetOwner(this),
so LocalPointSolve_1 on the base takes GetZoneTol3d(GetOwner()) as its
loose tolerance instead of 0.01. Ported that ownership: an owning offset
gives its base the BASE_OWNER surface owner wherever upstream calls
SetOwner(this) (constructor, Copy, ReadFromDB), and hands down the face
its own owner chain reaches, so Surface::face of a base follows the chain
as GetFace does. This replaces the face_owned flag the box code passed
down (review item 2 keeps its Unported(topology.face_p2) result). The
approximation-tolerance and surface-cache zone checks that asked "any
owner" now ask GetFace(), as SmTol::GetZoneTol3d(const SmObject*) does.
The six cases (three generated, base owned and shared) are fixtures.

surface.offset_surface: 3072 cases, 3072 passed, 0 failed, 0 deferred.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 19:55:03 -06:00
..