Ports the virtual SmSurface::AssertValid (sm_AssertTestSurface1/4/5/6) with the
SmBSplineSurface, SmPlane, SmCone, SmCylinder, SmSphere, SmTorus,
SmSurfOfRevolution and SmAxis2Placement checks and their helpers into
surface::surface::assert_valid, as the new unit surface.surface_assert_valid.
Adds AssertArray::find_report/remove_at and calculate_continuities_reached
(the minimum continuity reached when CalculateContinuities fails part-way).
Difftest against the real C++ surfaces: 1500 cases, 1428 pass, 72 rejected,
0 deferred. Regression tests for each valid kind and each corruption's exact
upstream test number and message. Finding recorded for iso curves at a knot
of multiplicity above the degree.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy