Guard common and handwritten entrypoints through native cleanup and callback restoration. Add exclusion, recursive forwarding and exception-unwind probes; p2 adds its concurrent cross-wrapper regression with the port.
Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
125 shims carried private copies of the same small helpers (put_vec, st,
nl_status, Rd, dump_crv, read_nurb, ...). Move the most common, byte-identical
form of each into three headers grouped by the upstream API they need, and have
those shims pull them in with `using sc::<name>;`. Shims with a different
variant keep their own copy; files touched by open PRs are left alone.
`the_context()` stays per shim (its function-local SmContext must not be shared).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FBLgPenT24P1dunqnZR1Dj
Drop the shim's is_rejected_flush and the runner's flush_rejected: the C++
does not misbehave on non-increasing knots (N_IgesValidate inside
CreateCanonical returns SM_ERR for decreasing knots, accepts equal ones), so
every Flush now runs and the sm_FlushCrv error path is compared. Add 105
review adversarial fixtures, drop the stale EvaluateNormal deferral note, and
record the classify-guard width, the unreachable Tangent/Coincident
classifications and the step-7 deferrals in plan/findings.md.
difftest: 1660 cases, 1508 pass, 0 fail, 152 deferred, max_rel_err 0.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
Finish the SmSurfaceIntersector part 2 port: the shim, ffi and runner now
also build SmCurveBoundedSurface (over a plane or B-spline basis), the
generator wraps surfaces in it, and planar-section fixtures come from
prog_test my_test_planar_section on shovel.srf. Difftest: 1517 cases,
1314 pass, 203 deferred (surface.surface_p3/p5/p7, blend.fillet_executive_p1).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNGVDsEXPdxtFSUKma3wKs