Move exact UV geometry and resolved owner context into retained inputs, preserve child reimplantation order, and compare real native node marks and lists.
Co-Authored-By: OpenAI GPT-6.1 <noreply@openai.com>
Retain polygon-edge endpoints, tolerance and original surface for child implantation. Preserve native parent lists and child ordering, including handle remapping. Add 130 differential cases and regression coverage for geometry updates.
Co-Authored-By: OpenAI Codex <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
- SubdivideNode: split into SurfaceCache::subdivide_node_split plus the base class
ending; TrimSrfCache splits through its own subdivide_node, which re-implants a
boundary parent's edge uses into the children with TrimSrfCache::implant_edgeuse
(needs SmEdgeuse::GetUVTrimCurve: those cases defer on topology.edgeuse_p1; poly
edges on query.poly) instead of dropping them through the base ImplantEdgeuse.
- trim_srf_cache shim and runner: ImplantEu prints every node of the tree (the
children subdivisions make included); fixture implant_then_split_boundary_leaf.
- FFI accepts planes where it asked for a B-spline cache (an SmPlane is an
SmBSplineSurface); the generator uses them; the tolerance test reads a plane's
NURB through base_for_query (found by the new plane cases).
- DISPATCH GAP comments for GetTree's virtual BuildTree and SubdivideNode's GetTree;
the bare-tree patch data reads (geom.tree, geom.grid, surface_p2) are dispatch
gaps tagged with their owning units, not surface.surface_cache_p3.
- Stale docs and notes fixed; findings for the review points.
surface.surface_cache_p3: 445 pass, 0 fail, 155 deferred, --perturb 445/445.
surface.trim_srf_cache: 526 pass, 0 fail, 95 deferred, --perturb 526/526.
difftest --green: 117 units, 0 failed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RsMto2bEoBSCSCJku4nT4u