Units / heal
heal.heal_data_p3 partial
- Layer
- 50
- Upstream lines
- 1,967
- Functions
- 9
- Rust module
heal::heal_data::p3
Source: crates/solidcore/src/heal/heal_data/p3.rs
Upstream: source/SMLib/src/SmHealData.cpp
Notes
9 fns; largest: SmHealData::HealTgts, SmHealData::Fix_SplitEdgesAtSeam, SmHealData::Fix_DegenFaces, SmHealData::UpdateTargetLists; unit-SCC #22 (220 units); 59 upstream test entry points reach this unit; PR #164: 474 difftest cases, 267 passed, 0 failed, 207 deferred (topology.brep_p1 50, topology.edgeuse_p3 74, topology.face_p2 61, topology.face_p3 20, topology.face_p4 2), max_rel_err=0, no absolute floors. Ports all 9 owned functions and wires HealBrep to HealTgts; target catch-up recursion bounded at 32. Topology mutations defer at their owning units; generic nonempty classification outputs require a typed resolver when those callees land. Maintainer review: restored seam-success flags, cross-face merge statuses/edge list, last-occurrence wire dedupe, null-face skips and ignored statuses; native incremental-voxel catch-up guard (UB-36), 20 review fixtures and 3 independent safe-FFI regression tests. FindEdgeObjects now calls p7 after merging PR #65; IsLiveTopologyMember co-port recorded under topology.brep_p1. Round 2: reject post-removal target/props drift for every kind before any nonempty add (UB-163), bound target-to-props lookups, and derive voxel checks from target counts/live adds. FindEdgeObjects resolver errors propagate. The p5 adapter retains completed merge outputs on failure; actual mutation remains deferred. Added 24 differential regressions and a 240-combination native safety matrix (5 FFI tests total).
Difftest
- Cases
- 474
- Passed
- 267
- Deferred
- 207
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
topology.edgeuse_p3 claimed | 74 |
topology.face_p2 partial | 61 |
topology.brep_p1 claimed | 50 |
topology.face_p3 claimed | 20 |
topology.face_p4 claimed | 2 |
Report JSON (per-case results)
Dependencies
Depends on: geom.context green heal.face_props partial heal.heal_data_p1 partial heal.heal_data_p2 partial topology.brep_p5 claimed topology.edge partial topology.face_p2 partial topology.loopuse partial topology.topology green
Soft dependencies: geom.object partial geom.tol green geom.vector3d green intersect.curve_class_p2 claimed intersect.curve_class_p5 partial intersect.curve_class_p7 partial surface.surface_p2 partial surface.surface_p3 green surface.surface_p7 partial topology.brep_p1 claimed topology.brep_p3 claimed topology.brep_p4 claimed topology.brep_p8 claimed topology.edgeuse_p1 partial topology.face_p1 partial topology.face_p4 claimed topology.shell claimed topology.vertex partial topology.vertexuse partial
Dependents: audit.recursion todo
Soft dependents: none
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmHealData::UpdateTargetLists | SmHealData.cpp:1011 | 44 | [HealData::update_target_lists] |
SmHealData::UpdateTargetLists | SmHealData.cpp:1067 | 245 | [HealData::update_target_lists] |
SmHealData::HealTgts | SmHealData.cpp:1716 | 617 | [HealData::heal_targets] |
SmHealData::Fix_CoinVertices | SmHealData.cpp:3269 | 99 | [HealData::fix_coin_vertices] |
SmHealData::Fix_DegenFaces | SmHealData.cpp:3448 | 252 | [HealData::fix_degen_faces] |
SmHealData::Fix_DegenEdges | SmHealData.cpp:3706 | 80 | [HealData::fix_degen_edges] |
SmHealData::Fix_MoveSeam | SmHealData.cpp:4239 | 198 | [HealData::fix_move_seam] |
SmHealData::Fix_SplitEdgesAtSeam | SmHealData.cpp:4443 | 281 | [HealData::fix_split_edges_at_seam] |
SmHealData::Fix_SplitFaceAtSeams | SmHealData.cpp:5320 | 151 | [HealData::fix_split_face_at_seams] |
Module file-header table (10 rows)
| Rust | Upstream |
|---|---|
[HealData::update_target_lists] | SmHealData::UpdateTargetLists(array overload) |
[HealData::update_tracked_targets] | SmHealData::UpdateTargetLists(tracker overload) |
[HealData::heal_targets] | SmHealData::HealTgts |
[HealData::fix_coin_vertices] | SmHealData::Fix_CoinVertices |
[HealData::fix_degen_faces] | SmHealData::Fix_DegenFaces |
[HealData::fix_degen_edges] | SmHealData::Fix_DegenEdges |
[HealData::fix_move_seam] | SmHealData::Fix_MoveSeam |
[HealData::fix_split_edges_at_seam] | SmHealData::Fix_SplitEdgesAtSeam |
[HealData::fix_split_face_at_seams] | SmHealData::Fix_SplitFaceAtSeams |
live (private co-port) | SmBrep::IsLiveTopologyMember |
Upstream tests reaching this unit
prog_test:my_test_closed_sphere_properties, prog_test:my_test_squeeze_edge_tracks_removal, prog_test:my_test_missing_poles_refreshes_all_faces, SM_API_test:TestSmHealBrep, SM_API_test:TestSmHeal, prog_test:my_test_MakeFace, pt_TestFiles/MakeFace/ApproximateSphere.smp