Commit Graph

492 Commits

Author SHA1 Message Date
lillith c19f168fb7 WIP: port shell child transfers with literal face-use sibling links
Compare raw native mutation state, partial wire lists and defined self-transfer behavior. All 234 transfer/query cases pass before the subsequent safe-cast getter audit correction; dedicated metadata-override cases and remaining owned operations are still pending. Preserve the draft/todo status.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-15 04:53:53 +02:00
lillith 4fe76c6293 Fix native topology snapshot closure and preserve global edge order
Register all B-rep edges and each vertices complete vertex-use list. The fixed upstream wire-network probe confirms all five edges and the native traversal order; full differential revalidation is running. Preserve setup failures as failures and keep the shell unit todo.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-15 03:22:34 +02:00
lillith 04aa047483 WIP: port ordered shell wire traversal and real vertex fixtures
Import native vertex-use list order and coport only the default edge/vertex query branches required by GetWireEdges. Initial query comparisons passed; expanded native comparisons are running. Keep topology.shell todo until all owned operations, backedges and final gates are verified.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-15 03:11:09 +02:00
lillith 3ffc5d7da9 Integrate topology dependency fixes before shell validation
Preserve the shell module alongside the dependency module. The dependency brings its own strict-lint fixes and native fixture extensions; no changes are written to its authors branch.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-15 02:52:46 +02:00
lillith 91e42abb1f WIP: compare shell queries on raw native topology fixtures
Preserve native integer void flags and extend the shared snapshot without invoking shell operations under test. Native query coverage is provisional; remaining shell bodies and complete validation are pending. Strict checks currently require the dependency PRs latest fixes.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-15 02:52:33 +02:00
bherbruck b0ad0e40c2 Merge remote-tracking branch 'origin/main' into unit/topology.proto_topology_p1 2026-10-14 20:07:50 -04:00
bherbruck 1583644dbf port: topology.proto_topology_p1 difftest runner, fixtures, shim fixes, unit tests
Runner interprets list/proto/transform scripts against the port with the
shim's run-time refusals; CopyBrepMap rejects the inputs upstream's release
asserts dereference (UB-98); zero-length Reparameterize refused (HANG-12);
RemoveCoincidentNoEdgeProtoVertex keeps upstream's SM_SUCCESS-as-TRUE (WR-73);
manager destructor keeps unlisted objects; edgeuse co-port wired.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 20:07:32 -04:00
lillith 628d84fa29 Share native topology fixture construction without duplicating kernel setup
Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-15 02:01:38 +02:00
lillith e62ce0e538 Build shell port on active owning-topology implementation from PR 67
Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-15 01:22:15 +02:00
bherbruck 582a353a75 Merge remote-tracking branch 'origin/main' into merge-surface.surface_point_solve_p2 2026-10-14 19:17:05 -04:00
bherbruck 01a7d3bdca Merge origin/main into unit/topology.proto_topology_p1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 18:42:25 -04:00
bherbruck c27ccca4d3 Merge origin/main into unit/intersect.surface_intersector_p4
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 18:42:20 -04:00
bherbruck cc2ad3b35a wip: topology.proto_topology_p1 clippy fixes, shim and ffi draft
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 18:42:16 -04:00
bherbruck 5d0e0e57e6 Merge origin/main into unit/query.loop
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 18:02:57 -04:00
bherbruck 3be99cbd74 Merge remote-tracking branch 'origin/main' into merge-topology.edgeuse_p1 2026-10-14 17:20:10 -04:00
bherbruck 085e3f346d Merge remote-tracking branch 'origin/main' into unit/intersect.surface_intersector_p4 2026-10-14 16:44:57 -04:00
bherbruck 53ababc07d intersect.surface_intersector_p4: shim, ffi, difftest runner, fixtures; partial
difftest: 1542 cases, 938 pass bit-identical, 604 deferred (surface.surface_p11 578,
surface.surface_p3 26); --perturb SENSITIVE 938/938.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 16:40:33 -04:00
bherbruck 438ae8df5b Merge remote-tracking branch 'origin/main' into merge-topology.edgeuse_p1 2026-10-14 16:33:23 -04:00
bherbruck 160437d821 Merge remote-tracking branch 'origin/main' into unit/surface.surface_point_solve_p2 2026-10-14 16:32:28 -04:00
bherbruck 07ea5e3d1d port: surface.surface_point_solve_p2 (partial)
Global solver (rough / polygon guesses, refinements, grids, seams, Solve) and
stepper (AdjustStep, norms, convergence, Step, line searches, boundary tests).
Solve keeps upstream's eStat reset by RefineGuessByGrid and maps a failed rough
guess to SM_ERR. The shim and runner also build real SmSurfOfRevolution surfaces
(240 rev_gen cases), validated against the domain the C++ reports.

difftest: 1320 cases, 1230 pass, 90 deferred (surface_p4 63, surface_p5 27).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 16:32:27 -04:00
lillith 9dee369570 Merge official main with validated revolution port
Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-14 22:32:07 +02:00
lillith 1fb5f85b72 WIP: address topology solver review and extend subdivided fixtures
Correct empty auxiliary-list handling, direct callee ownership and the geom.tools back-edge. Add native empty-list regression and 1080 scale/subdivision cases; complete differential validation is pending.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-14 22:31:40 +02:00
bherbruck 59bc21e093 Merge origin/main (surface.surf_of_extrusion_p2) into unit/surface.surf_of_revolution_p2
Main now carries its own SurfOfRevolution arms (taken). surface.surf_of_extrusion_p2
took WR-66, so this unit's upstream issues become WR-67 (GetControlPolygon
weights) and WR-68 (IsNurbSurfaceSurfOfRevolution status as TRUE).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 16:14:16 -04:00
bherbruck b4a39bbff1 Merge remote-tracking branch 'origin/main' into unit/query.loop
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 16:11:45 -04:00
lillith bc0fa9e8f0 Merge official main and confirm the final topology reports
The shared revolution-dispatch fixes are now in main through PR #57. Preserve
its equivalent match arms and the upstream defect records from both branches.
All required local gates pass: 141 units, 88 green, 53 partial and zero failed;
the three topology reports match the full run byte for byte.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-14 22:11:07 +02:00
bherbruck 4d9829ca85 Merge remote-tracking branch 'origin/main' into unit/surface.surface_point_solve_p2
# Conflicts:
#	crates/solidcore/src/intersect/surface_intersector/p3.rs
#	crates/solidcore/src/surface/surface_point_solve/p1.rs
2026-10-14 16:03:24 -04:00
bherbruck c39c1fd388 wip: surface.surface_point_solve_p2 port, shim, ffi, runner
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 15:58:48 -04:00
bherbruck dfd4f180a7 Merge origin/main into unit/topology.edgeuse_p1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 15:58:25 -04:00
bherbruck 33bc326471 Merge origin/main (surface.plane_p2, surface_point_solve_p1, surface_intersector_p3, ...) into unit/surface.surf_of_revolution_p2
Surface::global_surface_intersect dispatches to both overrides (#40's SmPlane
arm and this unit's SmSurfOfRevolution arm), base_global_surface_intersect kept
once. SurfOfRevolution::intersect_with_plane now takes the kernel. Main does not
build (SurfOfRevolution arms missing in surface_point_solve_p1 and
surface_intersector_p3), so the fix from PR #68 is applied verbatim.
surf_of_revolution_p2: 1099 pass, 68 deferred.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 15:43:03 -04:00
bherbruck 5265c8b428 Merge origin/main into unit/surface.surf_of_extrusion_p2
Conflicts:
- surface::surface::p2 read_from_db: keep main's PLANE_TYPE reader and
  this PR's SURF_OF_EXTRUSION_TYPE dispatch-gap arm.
- plan/STATUS.md, plan/upstream-issues.md: keep both sides. This PR's
  issues renumbered past main's: UB-85..UB-89 -> UB-91..UB-95,
  WR-63 -> WR-66 (references in modules.toml and findings.md updated).

Wiring: surface.plane_p2 is partial on main, so the
UNPORTED(surface.plane_p2) SmPlane::TrimCurveToPlaneDomain stub in
SurfOfExtrusion::intersect_with_plane is now the real call. difftest
surface.surf_of_extrusion_p2: 1359 cases, 1048 pass (was 971), 0 failed,
311 deferred (plane_p2 133, adv_surface_intersector 97, curve_p9 81).

Main build fix: main did not compile (CI red since the
surface_intersector_p3 / surface_point_solve_p1 merges): four matches
lacked the SurfaceKind::SurfOfRevolution arm. Dispatched as upstream:
IsSingularity and IsOnSeam have no SmSurfOfRevolution/SmBSplineSurface
override (base SmSurface, unported arm); SmSurfacePointSolve's
SM_CAST_PTR(SmBSplineSurface) succeeds for a surface of revolution
(its base); DropToIsoCurve calls the SmSurfOfRevolution override of
CreateIsoParametricCurve.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 15:31:36 -04:00
lillith 626be3c01f Merge the latest official ports and documentation
Preserve both current main findings and the topology contribution's coverage
notes. Main's four missing revolution dispatch arms are addressed by the
maintainer's PR #68; integrate that existing fix before final validation.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-14 21:25:40 +02:00
lillith 81b7fe16fa Merge main and complete topology request and tolerance coverage
Compare 1304 of 1349 part-2 cases exactly, with 45 explicit foreign-callee
deferrals and no failures. Include all request modes, accepted/rejected operation
enums, zero/tiny tolerances and all five solution-node slots.

Resolve shape topology keys to edge curves and face surfaces, with a regression
distinguishing their handles. Document all owned functions and coverage limits;
keep the PR draft until latest-main integration and all final gates pass.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-14 21:13:19 +02:00
bherbruck 1c86306ff7 Merge pull request #40 from bherbruck/unit/surface.plane_p2
port: surface.plane_p2
2026-10-14 15:07:50 -04:00
bherbruck 4e66c14326 Merge pull request #56 from bherbruck/unit/intersect.surface_intersector_p3
port: intersect.surface_intersector_p3
2026-10-14 15:02:57 -04:00
bherbruck 659d217b15 Merge pull request #58 from bherbruck/unit/surface.surface_point_solve_p1
port: surface.surface_point_solve_p1
2026-10-14 15:02:02 -04:00
bherbruck 104233074a Merge origin/main (surface.surface_p9) into unit/surface.surf_of_revolution_p2
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 15:00:47 -04:00
bherbruck dd078a5909 Merge origin/main into unit/surface.plane_p2
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 14:48:29 -04:00
bherbruck 49e5549957 Merge remote-tracking branch 'origin/main' into unit/query.loop 2026-10-14 14:47:28 -04:00
bherbruck 05eefa010b query.loop: port SmLoop::ContainsUVPoint with shim, FFI, runner and fixtures
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 14:47:28 -04:00
bherbruck dff5704d4f Merge origin/main (intersect.adv_surface_intersector) into unit/surface.surf_of_revolution_p2
#41 ported the base SmSurface::GlobalSurfaceIntersect body inline; it now lives in
base_global_surface_intersect, which Surface::global_surface_intersect calls for
every kind except SurfOfRevolution (its override falls back to it). The 34
fall-back cases now defer on intersect.surface_intersector_p5.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 14:37:38 -04:00
bherbruck 123c7bb7d1 Merge origin/main into unit/intersect.curve_class_p1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 14:35:30 -04:00
bherbruck 9931d56386 Merge pull request #6 from 0xlillith/unit/surface.surface_p9
port: surface.surface_p9
2026-10-14 14:34:23 -04:00
lillith 0d6f12ebd6 Compare static topology entrypoints and face dispatch with C++
Add real shell-vertex B-rep fixtures for the five static entrypoints, plus face
membership and missing-callee cases using native face/wire-edge construction.
Part 2 compares 899 of 942 cases exactly, with zero failures and 43 explicit
deferrals. Workspace tests, native fixture preflights and strict C++ Clippy pass.

Guard the upstream EdgeVertex wrong-class operand without invoking its undefined
cast. A native runtime-type probe and a Rust class-guard regression cover it.
Keep the contribution draft pending final coverage, main integration and gates.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-14 20:31:40 +02:00
bherbruck d764141ad7 Merge origin/main into unit/intersect.curve_class_p1
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 14:27:45 -04:00
bherbruck 2475483f01 Merge origin/main into unit/intersect.curve_class_p1
Resolve conflicts in geom/tol.rs (keep surface.surface_p1's CO-PORTED note and
this unit's classification mappings) and plan/findings.md (keep both).
Handle the new SurfaceKind::SurfOfRevolution (SmBSplineSurface base flag) and
Step variants in out_of_bounds. Wire SmTol::GetZoneTol3d(SmSurface),
smsurf_GetSurfaceCache and SmSurface::ApproximateSize to surface.surface_p1:
2088 cases, 1908 pass, 0 fail, 180 deferred (52 moved to surface.surface_p6).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 14:27:16 -04:00
bherbruck 9a0f51c281 Merge origin/main into unit/surface.plane_p2
Run the SmAdvSurfaceIntersector from intersect.adv_surface_intersector (#41)
in base_global_surface_intersect, keeping the SmPlane override dispatch.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 14:24:24 -04:00
lillith 7842bfa043 Merge the volume port and verify the integrated workspace
All local gates pass against the updated main. Full differential validation
evaluates 134 units: 87 green, 47 partial and zero failed. The three part-9/cache
reports remain byte-identical to their focused and committed reports.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
2026-10-14 20:21:09 +02:00
bherbruck 7a8a023c18 Merge origin/main into unit/surface.surf_of_extrusion_p2
Conflicts: Surface::read_from_db now reads SmSurfOfRevolution records (main) and keeps
the SmSurfOfExtrusion record read as a DISPATCH GAP naming this unit (was a self-tagged
UNPORTED stub; review item); plan/findings.md keeps both sections.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 14:21:06 -04:00
bherbruck 33c50c7402 Merge origin/main (surface.volume_p2) into unit/surface.surf_of_revolution_p2
surface.volume_p2 took WR-65, so this unit's upstream issues are renumbered
WR-65 -> WR-66 (GetControlPolygon weights) and WR-66 -> WR-67
(IsNurbSurfaceSurfOfRevolution status as TRUE), with the findings reference.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 14:19:38 -04:00
bherbruck 8bc48a4271 Merge origin/main into unit/surface.plane_p2
Keep both sides' SurfaceKind arms (Plane overrides from this unit; the
SurfOfRevolution and Step kinds from main). Add the SmPlane::GlobalSurfaceIntersect
SurfOfRevolution case (orders and UV curves swapped, as upstream), which needs
&Kernel on Surface::global_surface_intersect / intersect_with_plane. Wire the
plane box zone tolerance to Surface::face (surface.surface_p1 is partial):
a plane with a face now defers on SmFace::GetTolerance (topology.face_p2).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-14 14:16:03 -04:00