From 1440dc01559821f13c8b30db6bdb926d991a970b Mon Sep 17 00:00:00 2001 From: Andy Aragon Date: Tue, 9 Jun 2026 12:11:48 -0700 Subject: [PATCH 1/3] test(boolean): un-ignore recovered boolean tests --- crates/operations/src/boolean/tests.rs | 7 ------- crates/operations/tests/boolean_edge_cases.rs | 2 -- crates/operations/tests/boolean_invariants.rs | 1 - crates/operations/tests/boolean_stress.rs | 2 -- crates/operations/tests/coincident_proptest.rs | 8 +------- 5 files changed, 1 insertion(+), 19 deletions(-) diff --git a/crates/operations/src/boolean/tests.rs b/crates/operations/src/boolean/tests.rs index 0f36dc44..8f6b5c22 100644 --- a/crates/operations/src/boolean/tests.rs +++ b/crates/operations/src/boolean/tests.rs @@ -1657,10 +1657,6 @@ fn compound_cut_matches_sequential_2x2_grid() { /// 3×3 grid (9 tools) exercises the compound path (threshold = 8). #[test] -#[ignore = "flaky — multi-tool compound/sequential cuts through the mesh-boolean \ - fallback are non-deterministic across processes (seed-dependent vertex \ - welding) and under-cut faceted re-input; the `< box*0.99` oracle passes \ - on garbage. Tracked in #747; revisit under the GFA rewrite."] fn compound_cut_matches_sequential_3x3_grid() { use brepkit_math::mat::Mat4; @@ -1781,7 +1777,6 @@ fn compound_cut_matches_sequential_4x4_grid() { /// This simulates the gridfinity honeycomb scenario where the target /// has cylindrical fillets (rounded corners) and the tools are hex prisms. #[test] -#[ignore = "flaky — vertex merge non-determinism for complex compound operations"] fn compound_cut_shelled_target_many_tools() { use brepkit_math::mat::Mat4; @@ -2541,7 +2536,6 @@ fn test_boolean_concave_face_chord_clip() { // does not break the common convex-face case. A large box minus a half- // overlapping smaller box: expected volume = 8.0 - 0.5 = 7.5. #[test] -#[ignore = "GFA pipeline limitation — old boolean pipeline removed"] fn test_boolean_convex_face_chord_clip_regression() { let mut topo = Topology::new(); @@ -2628,7 +2622,6 @@ fn boolean_fuse_overlapping_boxes_positive_volume() { /// Sequential compound cut with many tools should produce a valid solid /// with bounded face count (unify_faces prevents explosion). #[test] -#[ignore = "flaky — compound boolean non-determinism can produce zero-volume result on CI"] fn compound_cut_sequential_reduces_volume() { let mut topo = Topology::new(); let target = crate::primitives::make_box(&mut topo, 10.0, 10.0, 10.0).unwrap(); diff --git a/crates/operations/tests/boolean_edge_cases.rs b/crates/operations/tests/boolean_edge_cases.rs index b523d3b3..3fd729ad 100644 --- a/crates/operations/tests/boolean_edge_cases.rs +++ b/crates/operations/tests/boolean_edge_cases.rs @@ -273,7 +273,6 @@ fn test_sequential_cuts_volume() { } #[test] -#[ignore = "vertex drift 6.7% after 10 fuse+cut cycles on disjoint addons (threshold 5%)"] fn test_sequential_boolean_vertex_drift() { // Perform 10 fuse+cut cycles. Volume should return to original each time. let mut topo = Topology::new(); @@ -303,7 +302,6 @@ fn test_sequential_boolean_vertex_drift() { } #[test] -#[ignore = "GFA pipeline limitation"] fn test_alternating_union_cut() { // A|B - C pattern. // A: (0-2, 0-1, 0-1), B: (1-3, 0-1, 0-1), C: (1-2, 0-1, 0-1). diff --git a/crates/operations/tests/boolean_invariants.rs b/crates/operations/tests/boolean_invariants.rs index 752f4991..4c9a3742 100644 --- a/crates/operations/tests/boolean_invariants.rs +++ b/crates/operations/tests/boolean_invariants.rs @@ -619,7 +619,6 @@ fn fuse_thin_shell_with_containing_solid_preserves_larger_volume() { // -- Cut cylinder from box ------------------------------------------------ #[test] -#[ignore = "GFA pipeline limitation"] fn cut_cylinder_from_box_volume() { // Cylinder centered in box, protruding above and below. let mut topo = Topology::new(); diff --git a/crates/operations/tests/boolean_stress.rs b/crates/operations/tests/boolean_stress.rs index 8722e092..9f4d6950 100644 --- a/crates/operations/tests/boolean_stress.rs +++ b/crates/operations/tests/boolean_stress.rs @@ -193,7 +193,6 @@ fn near_miss_cut_barely_touching() { // =========================================================================== #[test] -#[ignore = "GFA pipeline limitation — old boolean pipeline removed"] fn thin_wall_cut() { // Cut a thin slice from a box — result has very thin geometry. let mut topo = Topology::new(); @@ -538,7 +537,6 @@ fn small_overlap_1_percent() { // =========================================================================== #[test] -#[ignore = "GFA pipeline limitation — old boolean pipeline removed"] fn fuse_asymmetric_boxes() { let mut topo = Topology::new(); let a = box_at(&mut topo, 0.0, 0.0, 0.0, 1.0, 2.0, 3.0); diff --git a/crates/operations/tests/coincident_proptest.rs b/crates/operations/tests/coincident_proptest.rs index 3a2b6193..0235b00e 100644 --- a/crates/operations/tests/coincident_proptest.rs +++ b/crates/operations/tests/coincident_proptest.rs @@ -53,14 +53,8 @@ proptest! { } // Rotation invariance: rotating both boxes of a face-stack by the - // same Z rotation should preserve volume. The boolean exhibits up - // to ~15% volume drift at certain non-axis-aligned angles, which - // is a known gap (see ignored cylinder/cone/torus SD tests for the - // related GFA-integration weakness on non-axis-aligned shapes). + // same Z rotation should preserve volume. #[test] - #[ignore = "Gap: face-stack fuse exhibits up to ~15% volume drift at certain \ - Z-rotation angles (e.g. 3.98 rad). Likely related to GFA face-splitting \ - producing an extra internal face at off-axis rotations."] fn prop_face_stack_z_rotation_invariant(angle in 0.0f64..std::f64::consts::TAU) { let mut topo = Topology::default(); let a = make_box(&mut topo, 1.0, 1.0, 1.0).unwrap(); From d93635f6d77c89a86b2e05c34334fafb40b98fbe Mon Sep 17 00:00:00 2001 From: Andy Aragon Date: Tue, 9 Jun 2026 13:16:46 -0700 Subject: [PATCH 2/3] test(boolean): re-ignore 3x3 grid test and correct its volume oracle The oracle compared against box_vol = 450 but the target is make_box(10, 10, 2) with volume 200, so the < box*0.99 threshold could never fail. With the constant corrected, the test fails in roughly 2 of 3 fresh-process runs because both the compound and sequential paths intermittently remove little or no material, so the ignore returns with an accurate reason until #747 is resolved. --- crates/operations/src/boolean/tests.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/operations/src/boolean/tests.rs b/crates/operations/src/boolean/tests.rs index 8f6b5c22..678a27b9 100644 --- a/crates/operations/src/boolean/tests.rs +++ b/crates/operations/src/boolean/tests.rs @@ -1657,6 +1657,11 @@ fn compound_cut_matches_sequential_2x2_grid() { /// 3×3 grid (9 tools) exercises the compound path (threshold = 8). #[test] +#[ignore = "flaky — multi-tool compound/sequential cuts through the mesh-boolean \ + fallback are non-deterministic across processes (seed-dependent vertex \ + welding); with the oracle's box volume corrected to the actual \ + make_box(10,10,2) = 200, both paths intermittently remove little or \ + nothing. Tracked in #747; revisit under the GFA rewrite."] fn compound_cut_matches_sequential_3x3_grid() { use brepkit_math::mat::Mat4; @@ -1700,7 +1705,7 @@ fn compound_cut_matches_sequential_3x3_grid() { // Both paths use mesh boolean fallback for cylinder-box cuts, which // can produce different volumes under different execution conditions. // Assert each path individually: volume must be less than the uncut box. - let box_vol = 15.0 * 15.0 * 2.0; + let box_vol = 10.0 * 10.0 * 2.0; assert!( compound_vol < box_vol * 0.99, "compound_cut should reduce volume: {compound_vol:.1} vs box {box_vol:.1}" From c6e7b78be6219519aeb4bc103972d207d0b0c13f Mon Sep 17 00:00:00 2001 From: Andy Aragon Date: Tue, 9 Jun 2026 13:36:46 -0700 Subject: [PATCH 3/3] test(boolean): correct tool description in shelled-target test --- crates/operations/src/boolean/tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/operations/src/boolean/tests.rs b/crates/operations/src/boolean/tests.rs index 678a27b9..f439ff89 100644 --- a/crates/operations/src/boolean/tests.rs +++ b/crates/operations/src/boolean/tests.rs @@ -1780,7 +1780,7 @@ fn compound_cut_matches_sequential_4x4_grid() { /// Test compound_cut with a shelled target + many box cutters. /// This simulates the gridfinity honeycomb scenario where the target -/// has cylindrical fillets (rounded corners) and the tools are hex prisms. +/// has cylindrical fillets (rounded corners) and the tools are boxes. #[test] fn compound_cut_shelled_target_many_tools() { use brepkit_math::mat::Mat4;