#140's head c70653a63 merged with main ea10fd3e2. Resolutions:
- surface_cache/p1.rs: #140's iso curves through the surface's own
dispatch (main's Surface::create_iso_parametric_curve covers Cone too),
stored as Curve; approximate_length takes main's kernel.
- surface_intersector/p2.rs, p4.rs, adv_surface_intersector.rs: #140's
`advanced` flag and tests with main's kernel argument; p4 keeps main's
stricter find_interior_curves test.
- intersect_surface_drop_lib_p1 runner and FFI: both sides kept (#140's
Trim curve types and NULL entries, #438's file inputs and optional
domain/interval); #140's generators wrap Trim domain/interval in Some.
- Kernel arguments added to #140's new evaluate/evaluate_point/
SurfaceDropCurve::new calls (main threaded the kernel through).
- plan/modules.toml: both notes kept for surface.plane_p2 and
surface_intersector_p3/p4. Reports regenerated on the merged tree.
--green: 247 units, 128 passed, 119 partial, 0 failed
PARTIAL surface.surface_p2 cases=16688 passed=16672 failed=0 deferred=16
(all 56 my_test_ssi_adv pairs: the eight re-added files pass)
cargo test -p solidcore 1768 passed; clippy, fmt, wasm32 clean
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replicates the five DropAndTrimCurve calls of upstream prog_test
my_test_drop_curve on Drop/PS10_drp_Crv1..5 / Srf1..5 (natural domain
and interval, tol 1e-2, the header defaults). Curves and surfaces can now
be upstream files: C++ reads them with SmBSplineCurve/SmBSplineSurface
::ReadFromFile, Rust repeats its steps (database version 30, then
read_from_db). Trim's domain and interval become optional (natural when
absent).
The five cases are deferred: Rust stops at the drop_curve_trace back-edge
UNPORTED(intersect.surface_drop_curve) although that unit is now partial;
wiring it turns them into compared cases.
PARTIAL intersect.surface_drop_lib_p1 cases=1867 passed=1847 failed=0 deferred=20
--perturb: SENSITIVE; --fuzz 300: FUZZ-PASS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Generator back to main's buckets (88..=98 iso, 99 plane line) so every
generated case keeps its inputs; the wider trim generator runs as 400
fixed-seed cases trim0000..trim0399 appended after the 1500.
- Wire the surface cache iso curves of planes and surfaces of revolution
(SmPlane / SmSurfOfRevolution::CreateIsoParametricCurve), taking PR #270's
surface_cache/p1.rs and caller changes unchanged, plus the plane branch of
GetIsoBoundaryCurves (gen0072 of surface_intersector_p5 passes here thanks
to the ComputeSingularityPoint dispatch fix).
- Trim record carries each UV curve's GetType(); the shim writes a
NULL_CURVE sentinel for a NULL entry.
- surface.plane_p2 and surface.surface_cache_p3 promoted to green; notes,
findings and reports updated.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pfe7dodPG5rpuN9B8QcnuX
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
- difftest runner: fix the clippy errors under --features difftest/cpp
(collapsible if in span_undefined, unchecked indexing in
gen_bspline_surface and gen_seam); rng draw order unchanged.
- Correct the "uninitialised" wording: after an ignored failed evaluation
upstream goes on with SM_UNDEF_DOUBLE defaults or partial writes (defined);
the port does not model that path and the shim rejects it (never fires).
- Add 328 review fixtures on poles (cone apex, spheres r=1/1e3, both swaps)
and a collapsed-edge B-spline: all pass bit-identical or defer.
- difftest: 1862 cases, 1683 passed, 0 failed, 179 deferred; perturb
1683/1683.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm