solidcore

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 unitDeferred cases
topology.edgeuse_p3 claimed74
topology.face_p2 partial61
topology.brep_p1 claimed50
topology.face_p3 claimed20
topology.face_p4 claimed2

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 functionDefined atLinesRust (from the file header)
SmHealData::UpdateTargetListsSmHealData.cpp:101144[HealData::update_target_lists]
SmHealData::UpdateTargetListsSmHealData.cpp:1067245[HealData::update_target_lists]
SmHealData::HealTgtsSmHealData.cpp:1716617[HealData::heal_targets]
SmHealData::Fix_CoinVerticesSmHealData.cpp:326999[HealData::fix_coin_vertices]
SmHealData::Fix_DegenFacesSmHealData.cpp:3448252[HealData::fix_degen_faces]
SmHealData::Fix_DegenEdgesSmHealData.cpp:370680[HealData::fix_degen_edges]
SmHealData::Fix_MoveSeamSmHealData.cpp:4239198[HealData::fix_move_seam]
SmHealData::Fix_SplitEdgesAtSeamSmHealData.cpp:4443281[HealData::fix_split_edges_at_seam]
SmHealData::Fix_SplitFaceAtSeamsSmHealData.cpp:5320151[HealData::fix_split_face_at_seams]
Module file-header table (10 rows)
RustUpstream
[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