Repository navigation
heal.stitch_p1: wire GlueEdgesGeneral to topology.brep_p7 (follow-up) - #317
Merged
bherbruck merged 6 commits intoOct 21, 2026
Merged
Conversation
Follow-up to tangency-labs#257: topology.brep_p7 is on main, so the stitch module's GlueEdgesGeneral wrapper now takes the kernel and calls topology::brep::p7::glue_edges_general with a call-local notification environment (as make_vertex_split_edge; shared local_key_of). All three call sites pass the kernel (DoSimpleFaceStitch, StitchEdgesOfVertices, and DoStitching's glue at a vertex in heal::stitch::p2). The routine stops at its first B-rep notify (topology.brep_p2) today; no difftest case reaches it, both stitch reports are unchanged, and a unit test pins the new path. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…dges-general # Conflicts: # crates/solidcore/src/heal/stitch/p1.rs # plan/modules.toml
… (brep_p2 wired) With topology.brep_p2's stubs wired on main, part 7's glue no longer stops at its first notify: a wire edge to delete now stops at SmBrep::DeleteEdge (topology.brep_p4). The unit test builds real wire edges (shell-owned edge uses) and pins that; header and modules.toml note updated. Both stitch reports stay byte-identical to main's. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This was referenced Oct 21, 2026
…text Codex pre-review of tangency-labs#317: the wrapper handed part 7 an empty record map, so its MergeInBrep notify failed as "not a topology object" (swallowed), and context: None kept the kernel's callbacks from firing. It now runs on a default record per arena object (brep_p2::ArenaNotifyState, as brep p5/p6) and the kernel's notification context (Context::with_notification_context). Two regressions with a recording callback: wire edges see PreEdit and then defer at SmBrep::DeleteEdge (topology.brep_p4) with the callback restored; face-bounded edges reach the MergeInBrep notify. The shared key-helper refactor is reverted. Note updated. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Merged
…e note rv-brep_p7's optional nits on tangency-labs#317: the face-bounded fixture is degenerate past the MergeInBrep notify (its loop use has no face use), so the test now pins that part 7 stops at that face lookup (InvalidInput), where upstream would dereference null; topology.brep_p7's note gets a dated line that heal.stitch_p1's GlueEdgesGeneral back-edge is wired. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
bluecmd
marked this pull request as ready for review
October 21, 2026 04:24
…dges-general # Conflicts: # crates/solidcore/src/heal/stitch/p1.rs # plan/modules.toml
tdamsma
added a commit
to tdamsma/solidcore
that referenced
this pull request
Oct 21, 2026
…angency-labs#317, ...) into stubs/fillet-solver-geom-glue Main threads &Kernel through surface/curve evaluation: kept, and added to this branch's wired call sites (FilletIntersector::new with FilletGeomId, offset_evaluate_2nd on rails, CurveBased set_extension_flags(k, b), custom solver LoadJacobian, ComputeSurfaceValues, the rail UV-curve evaluate). test_analytic_surface gains main's SurfaceKind::Cone arm. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H9QwJFBTKLZ9FFK3nVd1X4
denelson1-dot
added a commit
to denelson1-dot/solidcore
that referenced
this pull request
Oct 21, 2026
…dispatch, tangency-labs#317, tangency-labs#356, tangency-labs#361, tangency-labs#414) into unit/blend.fillet_solver_p3 Conflicts: tangency-labs#313 threads &Kernel through the Surface / Curve evaluations; this branch's side is kept where it carries tangency-labs#192's newer head (FilletGeomRef intersector tests, rail / rail_mut accessors, the wired VariableRadiusFs::set_extension_flags, the iso curve status read as TRUE), with main's kernel argument added (set_extension_flags now takes the kernel and the B-rep), main's new SurfaceKind::Cone arm, and main's constructor order in the intersector runner; findings keep both sides' sections, the blend.fillet_solver_p1 notes keep tangency-labs#192's newer text. Fallout in code main does not carry: blend.fillet_solver_p3 passes the kernel to its evaluations (offset_normal takes it), and the local solvers' function interfaces, which pass none, see FindClippedRadiusEfo / FilletSphereSolveEnfo through ClippedRadiusFn / SphereSolveFn adapters that hold it; tangency-labs#192's newer ConstantRadiusAssistedFs::load_jacobian, compute_surface_values call and RailUvCurveIntersectEnfo, and the p3 runner's harness solver, take the kernel too. --perturb on blend.fillet_solver_p3: 378/378 detected; difftest runner tests pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #257 (lesson: wire back-edges when the owner lands).
topology.brep_p7has been on main since #246, soheal::stitch::p1'sSmBrep::GlueEdgesGeneralwrapper (UNPORTED(topology.brep_p7)on main,heal/stitch/p1.rs:2013) now calls the real routine.What it does
glue_edges_general(the stitch module's wrapper) takes the kernel and callstopology::brep::p7::glue_edges_general(k, b, Some(keep), orientation, dist, do_region_nesting, Some(delete), inside_faceuses, &mut env). Upstream notifies the B-rep's ownSmTopologyobjects through its context; the heal path keeps no records, soenvis a default record per arena object (brep_p2::ArenaNotifyState::new(b), the same seeding brep p5/p6 use) over the kernel's notification context (Context::with_notification_context):SmTopology::Notify's propagation finds both edges, and callbacks installed on the kernel see the events (Reviewer A pre-review must-fixes 1 and 2; an empty record map made theMergeInBrepnotify fail silently, andcontext: Nonedropped the callbacks).k:DoSimpleFaceStitch(cpp:1005/1013, status propagated) andStitchEdgesOfVertices(cpp:4145, success tested) inheal::stitch::p1, andDoStitching's edge gluing at a vertex (cpp:2151/2183) inheal::stitch::p2, which imports the same wrapper. Arguments unchanged:pInsideFaceusesstaysNULL.UNPORTED(topology.brep_p4): SmBrep::DeleteEdge, and face-bounded edges run the glue up to part 7's own stubs. origin/main (e5f3e44, with port: topology.brep_p2 #149) is merged in; the merge conflicts were this module's header list and the modules.toml note.Coverage, plainly
heal.stitch_p1orheal.stitch_p2difftest case reaches the glue today: all call sites sit behind earlier deferrals (topology.face_p2SmFace::GetTolerance,topology.face_p4,query.brep,topology.brep_p1), so both reports are unchanged from main. The wiring is pinned by two unit tests with a recording notify callback on the kernel: two wire edges between the same vertices see the B-repPreEditand then returnUnported { upstream: "SmBrep::DeleteEdge", unit: "topology.brep_p4" }from inside the part 7 routine, with the callback restored on the kernel afterwards (the same edge twice is the upstream no-op); two face-bounded edges reach theMergeInBrepnotify, which the seeded records let run.Gate (sc-builder-0, on c338dbd)
cargo test -p solidcore1528 passed, wasm OK.heal.stitch_p1/heal.stitch_p2: both byte-identical to main's committed reports (post-port: topology.brep_p2 #149):--green: 234 units, failed=0.🤖 Generated with Claude Code
https://claude.ai/code/session_01BfiWnWawYvdkvRXZtfC7zK
Status (updated 2026-10-21 10:23 UTC)
5a3b9413(merge only). stitch_p1 300/234/0/66 and stitch_p2 556/332/0/224, identical to main's reports. Waiting on maintainer review.