diff --git a/plan/units/blend.fillet_executive_p1.toml b/plan/units/blend.fillet_executive_p1.toml index b78149727f..6a6a895843 100644 --- a/plan/units/blend.fillet_executive_p1.toml +++ b/plan/units/blend.fillet_executive_p1.toml @@ -6,7 +6,7 @@ soft_depends_on = ["boolean.topology_intersector_p1", "curve.curve_cache", "geom est_lines = 2063 layer = 58 tests = ["prog_test:my_test_extent3d", "prog_test:my_test_vector2d", "prog_test:my_test_surface_closest_point", "prog_test:my_test_drop_point", "prog_test:my_test_matrix", "prog_test:my_test_reversed_line_join"] -status = "partial" +status = "green" claimed_by = "" claimed_at = "" -notes = "Integration PR #1127 (round 5, 2026-10-26): p1 155/155 pass; end-to-end coverage lives in blend.fillet_executive_p3 (579 cases: 573 pass, 1 deferred = upstream test 404 cyl_on_box1 e12 r=2 on the MakeFaceBrep cliff-surface transfer (blend.fillet_geom_p4), 3 known mismatches = round-4 sweep bottle e29 r=0.1, sphere_diff_3cylinders all-edges r=0.1, brepForFillet2 all-edges r=0.1 (plan/findings/blend.fillet_executive_p3--*), 2 rejected = native C++ crashes UB-209/UB-261 in the fork crash trap); 7 blend.fillet_executive_p1 UNPORTED sites remain, none reached by a fixture. 73 fns; largest: SmFilletExecutive::DoPiecewiseMerge, SmFilletExecutive::TestAndConvertBigRadFillet, SmFilletExecutive::SetFilletParameters, SmFilletExecutive::RemoveTopoEdges; entry points: SmApiChamferFillet, SmApiCircularFillet, SmApiFilletEdges, SmApiFilletEdgesPerEdge, SmApiSetBevelCorners, SmApiSurfaceSurfaceFillet, SmApiVariableRadiusFillet; cycle back-edges (call into later units; stub or co-port): blend.fillet_corner_p1(6), blend.fillet_executive_p2(3), blend.fillet_standard_solver_p2(3), blend.fillet_corner_p3(2), blend.fillet_corner_p2(1), blend.fillet_geom_p2(1), blend.fillet_geom_p5(1), blend.fillet_geom_p6(1); unit-SCC #22 (220 units); hazards: ptr-iter; 319 upstream test entry points reach this unit; CO-PORTED in blend.fillet_corner_p3 (PR #256): SmFilletExecutive::m_vEdgeuseSolverMap, GetFilletSolverOfEdgeuse -> blend::fillet_corner::p3::FilletExecutiveData; CO-PORTED in blend.fillet_standard_solver_p1 (PR #168): the SmFilletLaw / SmLinearFilletLaw / SmBSplineFilletLaw data the variable-radius solver reads (start/end radius, law curve, m_pExtended, IsLinearLaw, Get/SetExtendedEdgeCurve) -> solidcore::blend::fillet_standard_solver::p1::{FilletLaw, FilletLawKind}; FilletLaw::evaluate is UNPORTED(blend.fillet_executive_p1) SmFilletLaw::Evaluate; CO-PORTED in blend.fillet_executive_p3 (PR #244): SmFilletExecutive member data -> blend::fillet_executive::p3::FilletExecutive; SmFilletErrorInfo data and selective assignment -> ErrorInfo (extend these records, not duplicate types); CO-PORTED in blend.fillet_executive_p2 (PR #267): SmFilletExecutive::m_sLawSequenceEdgeList -> blend::fillet_executive::p3::FilletExecutive::law_sequence_edges; CO-PORTED in blend.fillet_corner_p1 (PR #266): SmFilletExecutive::m_bDoGlobalMerge, m_vTopoEdges, RemoveFromTopoEdges -> blend::fillet_corner::p3::FilletExecutiveData WIP (PR #260, laws slice): SmFilletLaw / SmLinearFilletLaw / SmBSplineFilletLaw (Evaluate incl. the cached C-infinity extension, IsLinearLaw, GetType, GetTypeString, IsKindOf, GetLawCurve, GetExtendedCurve) ported in blend::fillet_executive::p1 as behaviour of the FilletLaw type CO-PORTED by blend.fillet_standard_solver_p1 (PR #168), extended there with edge_map (m_vEdgeMap), edge_arc_length (m_dEdgeArcLength) and FilletLawKind::BSpline::extended_law (m_pExtendedLaw); Evaluate takes &mut self instead of upstream's const cast. Law difftest: 51 cases (35 fixture from smFilletTest.cpp laws plus boundary, extension, scale, zero-tangent apex, reversed map and interval, SM_EFF_ZERO edge-map and negative-radius cases; 16 generated) 51 pass bit-identical (max_rel_err 0, with_values 51), 500 seeds 535 pass, --perturb SENSITIVE 51/51, --fuzz 2000 FUZZ-PASS (895 ran, 0 differs, crashes, panics, timeouts). Not compared: degree-0 (step) law curves, which the shared FFI curve validator of blend.fillet_standard_solver_p1 rejects (interior knot multiplicity above the degree). The harness builds linear laws with blend.fillet_executive_p2's SmLinearFilletLaw constructor (FilletLaw::linear, PR #267); the SmBSplineFilletLaw(pCurve, crEdgeMap) constructor is not ported, so for B-spline laws it mirrors its zero-length-edge-map-means-[0,1] rule. Wired: the SmFilletLaw::Evaluate stub of blend.fillet_standard_solver_p1 (16 cases now compare); blend.fillet_executive_p2's law_evaluate (SmTemporaryRadiusChange::SetUp) now reaches the port. Still UNPORTED(blend.fillet_executive_p1) in intersect.surface_intersector_p1 (SmFilletLaw::Evaluate through the opaque law parameter of EvaluateLawPoint, and SmOffsetSurface::SetOffsetDistance through a shared surface): both wait for the executive's decision on how a fillet holds its offset surfaces. Error info and executive object slice (PR #260): the six SmFilletErrorInfo::NoteError overloads with the text rules of smos_sprintf (null printed as (null), cut to 1023 bytes), SmFilletExecutive::SmFilletExecutive (its pseudo B-rep, fillet-edges attribute and identity come from the adapter, ExecutiveObjects), AddFilletSurfaceGenerator, RemoveFromTopoEdges, SetDoGlobalMerge, SetDoTrimming, SetSelfIntersectionHandler, GetFilletCornerOfVertex, GetFilletSolverOfEdgeuse, GetFilletSolverOfEdge and the four NoteFilletError overloads, ported in blend::fillet_executive::p1 on the FilletExecutive / ErrorInfo CO-PORTED by blend.fillet_executive_p3, extended there with pseudo_brep, surface_generators, vertex_corner_map, edgeuse_solver_map and self_intersection_handler; ExecutiveAccess gains edge_edgeuses, fillet_edge_note and new_executive_objects. Difftest now: 61 cases (45 fixture, 16 generated: law cases plus scripts on the real SmFilletErrorInfo and SmFilletExecutive, covering every NoteError and NoteFilletError overload, the setters, the lists and the corner/solver lookups) 61 pass bit-identical, 500 seeds 545 pass, --perturb SENSITIVE 61/61, --fuzz 2000 FUZZ-PASS (919 ran, 0 differs, crashes, panics, timeouts). GetFilletSolverOfEdge (edge uses through the adapter, then the edge-use lookup) is not compared on its own: the shim's handles are not real edges. Fixed on the way: the ErrorInfo default edge type is SM_FE_UNKNOWN (14), not 0; the blend.fillet_executive_p2 runner's SmFilletSolverType table had codes 1, 2 and 4 permuted (hidden while NoteError deferred). Wired: blend.fillet_executive_p2's NoteError, NoteFilletError, AddFilletSurfaceGenerator, GetFilletSolverOfEdge and constructor stubs. Still UNPORTED(blend.fillet_executive_p1): the reads through a solver's, corner's or fillet geometry's own executive id in blend.fillet_solver_p1 (m_pSelfIntersectionHandler, GetFilletCornerOfVertex, GetPseudoBrep), blend.fillet_corner_p3 (NoteFilletError, TestAndConvertBigRadFillet) and blend.fillet_geom_p4 (GetTopologyIntersector, m_pAttributeE, UpdateTopologyChanges), which wait for the shared object model (PR #192); rest of the unit (LoadFilletSolver, CreateSmoothEdgeSequence, CreateFilletCorners, DoPiecewiseMerge, RemoveTopoEdges, TestAndConvertBigRadFillet, UpdateTopologyChanges, the destructor, SetBevelCorner, SmApi entry points) still to port. 73 fns; largest: SmFilletExecutive::DoPiecewiseMerge, SmFilletExecutive::TestAndConvertBigRadFillet, SmFilletExecutive::SetFilletParameters, SmFilletExecutive::RemoveTopoEdges; entry points: SmApiChamferFillet, SmApiCircularFillet, SmApiFilletEdges, SmApiFilletEdgesPerEdge, SmApiSetBevelCorners, SmApiSurfaceSurfaceFillet, SmApiVariableRadiusFillet; cycle back-edges (call into later units; stub or co-port): blend.fillet_corner_p1(6), blend.fillet_executive_p2(3), blend.fillet_standard_solver_p2(3), blend.fillet_corner_p3(2), blend.fillet_corner_p2(1), blend.fillet_geom_p2(1), blend.fillet_geom_p5(1), blend.fillet_geom_p6(1); unit-SCC #22 (220 units); hazards: ptr-iter; 319 upstream test entry points reach this unit; CO-PORTED in blend.fillet_corner_p3 (PR #256): SmFilletExecutive::m_vEdgeuseSolverMap, GetFilletSolverOfEdgeuse -> blend::fillet_corner::p3::FilletExecutiveData; CO-PORTED in blend.fillet_standard_solver_p1 (PR #168): the SmFilletLaw / SmLinearFilletLaw / SmBSplineFilletLaw data the variable-radius solver reads (start/end radius, law curve, m_pExtended, IsLinearLaw, Get/SetExtendedEdgeCurve) -> solidcore::blend::fillet_standard_solver::p1::{FilletLaw, FilletLawKind}; FilletLaw::evaluate is ported in blend::fillet_executive::p1 (PR #260); CO-PORTED in blend.fillet_executive_p3 (PR #244): SmFilletExecutive member data -> blend::fillet_executive::p3::FilletExecutive; SmFilletErrorInfo data and selective assignment -> ErrorInfo (extend these records, not duplicate types); CO-PORTED in blend.fillet_executive_p2 (PR #267): SmFilletExecutive::m_sLawSequenceEdgeList -> blend::fillet_executive::p3::FilletExecutive::law_sequence_edges PARTIAL (landed by batch/finish-2 from PR #260, H1D): laws, error info and the executive object slice (about 25 of 73 fns). difftest 61 cases, 61 passed, 0 failed, 0 deferred: the runner only reaches the ported slice, so the unit stays partial, not green. Not ported yet (UNPORTED(blend.fillet_executive_p1) sites remain): DoPiecewiseMerge, TestAndConvertBigRadFillet, SetFilletParameters, RemoveTopoEdges, CreateSmoothEdgeSequence, UpdateTopologyChanges, CreateFilletCorners, ~SmFilletExecutive and the SmApi*Fillet entry points. The GetFilletCornerOfVertex / NoteFilletError stubs in blend::fillet_solver::p2 and blend::fillet_geom::p3/p6 are not wired: they need FilletSolver's executive handle connected to FilletExecutive, which is the same open design question as the surface_intersector_p1 stubs. Reverified with it: blend.fillet_executive_p2 275/259 pass/16 deferred, blend.fillet_executive_p3 291/116/175, blend.fillet_standard_solver_p1 3839/3822/6 (11 rejected), 0 failed. UPDATE (LoadFilletSolver): one explicitly passed FilletExecutive context retains native solver order and the unit back-pointer flag; ordered filleted vertices and one VertexEntry map of pending edgeuses or completed corners preserve the native load order and partial-error state. Actual solver offset surfaces, edge curves and existing-or-created curve caches supply the native reads. 89 native cases pass exactly on the standalone loader branch (61 retained plus 28 direct loader cases); the main refresh also passes all 260 native units without adding PR #596; remains partial, including CreateFilletCorners and other missing executive methods. Legacy opaque solver getter contexts remain explicitly unresolved; no duplicate getter ports. PR #819: RemoveTopoEdges (p1::remove_topo_edges on the target B-rep; ExecutiveAccess::remove_topo_edges is now required) and SetBevelCorner (FilletExecutive::set_bevel_corner through the owner's corner closure) ported and compared (fixture B-reps through the topology.brep_p10 snapshot; real SmFilletConvexNxNCorner objects in the executive script). Still unported, waiting for the retained fillet session's corner, solver and fillet B-rep stores (tdamsma's #767 stack): TestAndConvertBigRadFillet (rebuilds two neighbouring corners and deletes a solver), DoPiecewiseMerge with sm_FindMarkForContext1 (only enabled through SetDoPiecewiseMerge; boolean.merge_p3's piecewise_merge exists), the destructor and the SmApi*Fillet entry points. Fix (edgeuse::p3::trim_other_uv_curves): pass an edge-tolerance Kernel when trimming sibling UV trim curves so SmBSplineCurve::Trim uses pEdge->GetTolerance() (SmTol::GetZoneTol3d(this)) for degenerate-span removal; remove_topo_edges_mouse_two_struts now passes bit-for-bit (155/155 pass, 0 failed, 0 deferred, 0 known_mismatch). CO-PORTED in blend.fillet_corner_p3 (PR #1011): SmFilletExecutive::TestAndConvertBigRadFillet -> blend::fillet_corner::p3::FilletExecutiveData::test_and_convert_big_rad_fillet. CO-PORTED in blend.fillet_executive_p2 (PR #1040): SmFilletExecutive::CreateSmoothEdgeSequence -> blend::fillet_executive::p1::FilletExecutive::create_smooth_edge_sequence." +notes = "Promoted to green 2026-10-26 after #1214 (cliff-surface transfer, upstream test 404): main CI run 40415456019 reports p1 155/155 pass, 0 deferred, 0 failed. Integration PR #1127 (round 5, 2026-10-26): p1 155/155 pass; end-to-end coverage lives in blend.fillet_executive_p3 (579 cases: 573 pass, 1 deferred = upstream test 404 cyl_on_box1 e12 r=2 on the MakeFaceBrep cliff-surface transfer (blend.fillet_geom_p4), 3 known mismatches = round-4 sweep bottle e29 r=0.1, sphere_diff_3cylinders all-edges r=0.1, brepForFillet2 all-edges r=0.1 (plan/findings/blend.fillet_executive_p3--*), 2 rejected = native C++ crashes UB-209/UB-261 in the fork crash trap); 7 blend.fillet_executive_p1 UNPORTED sites remain, none reached by a fixture. 73 fns; largest: SmFilletExecutive::DoPiecewiseMerge, SmFilletExecutive::TestAndConvertBigRadFillet, SmFilletExecutive::SetFilletParameters, SmFilletExecutive::RemoveTopoEdges; entry points: SmApiChamferFillet, SmApiCircularFillet, SmApiFilletEdges, SmApiFilletEdgesPerEdge, SmApiSetBevelCorners, SmApiSurfaceSurfaceFillet, SmApiVariableRadiusFillet; cycle back-edges (call into later units; stub or co-port): blend.fillet_corner_p1(6), blend.fillet_executive_p2(3), blend.fillet_standard_solver_p2(3), blend.fillet_corner_p3(2), blend.fillet_corner_p2(1), blend.fillet_geom_p2(1), blend.fillet_geom_p5(1), blend.fillet_geom_p6(1); unit-SCC #22 (220 units); hazards: ptr-iter; 319 upstream test entry points reach this unit; CO-PORTED in blend.fillet_corner_p3 (PR #256): SmFilletExecutive::m_vEdgeuseSolverMap, GetFilletSolverOfEdgeuse -> blend::fillet_corner::p3::FilletExecutiveData; CO-PORTED in blend.fillet_standard_solver_p1 (PR #168): the SmFilletLaw / SmLinearFilletLaw / SmBSplineFilletLaw data the variable-radius solver reads (start/end radius, law curve, m_pExtended, IsLinearLaw, Get/SetExtendedEdgeCurve) -> solidcore::blend::fillet_standard_solver::p1::{FilletLaw, FilletLawKind}; FilletLaw::evaluate is UNPORTED(blend.fillet_executive_p1) SmFilletLaw::Evaluate; CO-PORTED in blend.fillet_executive_p3 (PR #244): SmFilletExecutive member data -> blend::fillet_executive::p3::FilletExecutive; SmFilletErrorInfo data and selective assignment -> ErrorInfo (extend these records, not duplicate types); CO-PORTED in blend.fillet_executive_p2 (PR #267): SmFilletExecutive::m_sLawSequenceEdgeList -> blend::fillet_executive::p3::FilletExecutive::law_sequence_edges; CO-PORTED in blend.fillet_corner_p1 (PR #266): SmFilletExecutive::m_bDoGlobalMerge, m_vTopoEdges, RemoveFromTopoEdges -> blend::fillet_corner::p3::FilletExecutiveData WIP (PR #260, laws slice): SmFilletLaw / SmLinearFilletLaw / SmBSplineFilletLaw (Evaluate incl. the cached C-infinity extension, IsLinearLaw, GetType, GetTypeString, IsKindOf, GetLawCurve, GetExtendedCurve) ported in blend::fillet_executive::p1 as behaviour of the FilletLaw type CO-PORTED by blend.fillet_standard_solver_p1 (PR #168), extended there with edge_map (m_vEdgeMap), edge_arc_length (m_dEdgeArcLength) and FilletLawKind::BSpline::extended_law (m_pExtendedLaw); Evaluate takes &mut self instead of upstream's const cast. Law difftest: 51 cases (35 fixture from smFilletTest.cpp laws plus boundary, extension, scale, zero-tangent apex, reversed map and interval, SM_EFF_ZERO edge-map and negative-radius cases; 16 generated) 51 pass bit-identical (max_rel_err 0, with_values 51), 500 seeds 535 pass, --perturb SENSITIVE 51/51, --fuzz 2000 FUZZ-PASS (895 ran, 0 differs, crashes, panics, timeouts). Not compared: degree-0 (step) law curves, which the shared FFI curve validator of blend.fillet_standard_solver_p1 rejects (interior knot multiplicity above the degree). The harness builds linear laws with blend.fillet_executive_p2's SmLinearFilletLaw constructor (FilletLaw::linear, PR #267); the SmBSplineFilletLaw(pCurve, crEdgeMap) constructor is not ported, so for B-spline laws it mirrors its zero-length-edge-map-means-[0,1] rule. Wired: the SmFilletLaw::Evaluate stub of blend.fillet_standard_solver_p1 (16 cases now compare); blend.fillet_executive_p2's law_evaluate (SmTemporaryRadiusChange::SetUp) now reaches the port. Still UNPORTED(blend.fillet_executive_p1) in intersect.surface_intersector_p1 (SmFilletLaw::Evaluate through the opaque law parameter of EvaluateLawPoint, and SmOffsetSurface::SetOffsetDistance through a shared surface): both wait for the executive's decision on how a fillet holds its offset surfaces. Error info and executive object slice (PR #260): the six SmFilletErrorInfo::NoteError overloads with the text rules of smos_sprintf (null printed as (null), cut to 1023 bytes), SmFilletExecutive::SmFilletExecutive (its pseudo B-rep, fillet-edges attribute and identity come from the adapter, ExecutiveObjects), AddFilletSurfaceGenerator, RemoveFromTopoEdges, SetDoGlobalMerge, SetDoTrimming, SetSelfIntersectionHandler, GetFilletCornerOfVertex, GetFilletSolverOfEdgeuse, GetFilletSolverOfEdge and the four NoteFilletError overloads, ported in blend::fillet_executive::p1 on the FilletExecutive / ErrorInfo CO-PORTED by blend.fillet_executive_p3, extended there with pseudo_brep, surface_generators, vertex_corner_map, edgeuse_solver_map and self_intersection_handler; ExecutiveAccess gains edge_edgeuses, fillet_edge_note and new_executive_objects. Difftest now: 61 cases (45 fixture, 16 generated: law cases plus scripts on the real SmFilletErrorInfo and SmFilletExecutive, covering every NoteError and NoteFilletError overload, the setters, the lists and the corner/solver lookups) 61 pass bit-identical, 500 seeds 545 pass, --perturb SENSITIVE 61/61, --fuzz 2000 FUZZ-PASS (919 ran, 0 differs, crashes, panics, timeouts). GetFilletSolverOfEdge (edge uses through the adapter, then the edge-use lookup) is not compared on its own: the shim's handles are not real edges. Fixed on the way: the ErrorInfo default edge type is SM_FE_UNKNOWN (14), not 0; the blend.fillet_executive_p2 runner's SmFilletSolverType table had codes 1, 2 and 4 permuted (hidden while NoteError deferred). Wired: blend.fillet_executive_p2's NoteError, NoteFilletError, AddFilletSurfaceGenerator, GetFilletSolverOfEdge and constructor stubs. Still UNPORTED(blend.fillet_executive_p1): the reads through a solver's, corner's or fillet geometry's own executive id in blend.fillet_solver_p1 (m_pSelfIntersectionHandler, GetFilletCornerOfVertex, GetPseudoBrep), blend.fillet_corner_p3 (NoteFilletError, TestAndConvertBigRadFillet) and blend.fillet_geom_p4 (GetTopologyIntersector, m_pAttributeE, UpdateTopologyChanges), which wait for the shared object model (PR #192); rest of the unit (LoadFilletSolver, CreateSmoothEdgeSequence, CreateFilletCorners, DoPiecewiseMerge, RemoveTopoEdges, TestAndConvertBigRadFillet, UpdateTopologyChanges, the destructor, SetBevelCorner, SmApi entry points) still to port. 73 fns; largest: SmFilletExecutive::DoPiecewiseMerge, SmFilletExecutive::TestAndConvertBigRadFillet, SmFilletExecutive::SetFilletParameters, SmFilletExecutive::RemoveTopoEdges; entry points: SmApiChamferFillet, SmApiCircularFillet, SmApiFilletEdges, SmApiFilletEdgesPerEdge, SmApiSetBevelCorners, SmApiSurfaceSurfaceFillet, SmApiVariableRadiusFillet; cycle back-edges (call into later units; stub or co-port): blend.fillet_corner_p1(6), blend.fillet_executive_p2(3), blend.fillet_standard_solver_p2(3), blend.fillet_corner_p3(2), blend.fillet_corner_p2(1), blend.fillet_geom_p2(1), blend.fillet_geom_p5(1), blend.fillet_geom_p6(1); unit-SCC #22 (220 units); hazards: ptr-iter; 319 upstream test entry points reach this unit; CO-PORTED in blend.fillet_corner_p3 (PR #256): SmFilletExecutive::m_vEdgeuseSolverMap, GetFilletSolverOfEdgeuse -> blend::fillet_corner::p3::FilletExecutiveData; CO-PORTED in blend.fillet_standard_solver_p1 (PR #168): the SmFilletLaw / SmLinearFilletLaw / SmBSplineFilletLaw data the variable-radius solver reads (start/end radius, law curve, m_pExtended, IsLinearLaw, Get/SetExtendedEdgeCurve) -> solidcore::blend::fillet_standard_solver::p1::{FilletLaw, FilletLawKind}; FilletLaw::evaluate is ported in blend::fillet_executive::p1 (PR #260); CO-PORTED in blend.fillet_executive_p3 (PR #244): SmFilletExecutive member data -> blend::fillet_executive::p3::FilletExecutive; SmFilletErrorInfo data and selective assignment -> ErrorInfo (extend these records, not duplicate types); CO-PORTED in blend.fillet_executive_p2 (PR #267): SmFilletExecutive::m_sLawSequenceEdgeList -> blend::fillet_executive::p3::FilletExecutive::law_sequence_edges PARTIAL (landed by batch/finish-2 from PR #260, H1D): laws, error info and the executive object slice (about 25 of 73 fns). difftest 61 cases, 61 passed, 0 failed, 0 deferred: the runner only reaches the ported slice, so the unit stays partial, not green. Not ported yet (UNPORTED(blend.fillet_executive_p1) sites remain): DoPiecewiseMerge, TestAndConvertBigRadFillet, SetFilletParameters, RemoveTopoEdges, CreateSmoothEdgeSequence, UpdateTopologyChanges, CreateFilletCorners, ~SmFilletExecutive and the SmApi*Fillet entry points. The GetFilletCornerOfVertex / NoteFilletError stubs in blend::fillet_solver::p2 and blend::fillet_geom::p3/p6 are not wired: they need FilletSolver's executive handle connected to FilletExecutive, which is the same open design question as the surface_intersector_p1 stubs. Reverified with it: blend.fillet_executive_p2 275/259 pass/16 deferred, blend.fillet_executive_p3 291/116/175, blend.fillet_standard_solver_p1 3839/3822/6 (11 rejected), 0 failed. UPDATE (LoadFilletSolver): one explicitly passed FilletExecutive context retains native solver order and the unit back-pointer flag; ordered filleted vertices and one VertexEntry map of pending edgeuses or completed corners preserve the native load order and partial-error state. Actual solver offset surfaces, edge curves and existing-or-created curve caches supply the native reads. 89 native cases pass exactly on the standalone loader branch (61 retained plus 28 direct loader cases); the main refresh also passes all 260 native units without adding PR #596; remains partial, including CreateFilletCorners and other missing executive methods. Legacy opaque solver getter contexts remain explicitly unresolved; no duplicate getter ports. PR #819: RemoveTopoEdges (p1::remove_topo_edges on the target B-rep; ExecutiveAccess::remove_topo_edges is now required) and SetBevelCorner (FilletExecutive::set_bevel_corner through the owner's corner closure) ported and compared (fixture B-reps through the topology.brep_p10 snapshot; real SmFilletConvexNxNCorner objects in the executive script). Still unported, waiting for the retained fillet session's corner, solver and fillet B-rep stores (tdamsma's #767 stack): TestAndConvertBigRadFillet (rebuilds two neighbouring corners and deletes a solver), DoPiecewiseMerge with sm_FindMarkForContext1 (only enabled through SetDoPiecewiseMerge; boolean.merge_p3's piecewise_merge exists), the destructor and the SmApi*Fillet entry points. Fix (edgeuse::p3::trim_other_uv_curves): pass an edge-tolerance Kernel when trimming sibling UV trim curves so SmBSplineCurve::Trim uses pEdge->GetTolerance() (SmTol::GetZoneTol3d(this)) for degenerate-span removal; remove_topo_edges_mouse_two_struts now passes bit-for-bit (155/155 pass, 0 failed, 0 deferred, 0 known_mismatch). CO-PORTED in blend.fillet_corner_p3 (PR #1011): SmFilletExecutive::TestAndConvertBigRadFillet -> blend::fillet_corner::p3::FilletExecutiveData::test_and_convert_big_rad_fillet. CO-PORTED in blend.fillet_executive_p2 (PR #1040): SmFilletExecutive::CreateSmoothEdgeSequence -> blend::fillet_executive::p1::FilletExecutive::create_smooth_edge_sequence."