The fold of a base flange + edge flange is (plate ∪ flange) ∪ bend-sector. In both the relieved and un-relieved variants of crates/vcad-eval/tests/loon_sheet_metal.rs::bend_relief_cuts_notches_at_the_bend_ends the result mesh has 64 unpaired edges at the bend lip and reads ≈ 3.41 mm³ above the analytic slab + sector − lip total (83 307.99 mm³). The excess is identical in both variants, so the relief delta is exact (162.0000), but the lip seam itself is unconformed. validate.rs already cites "a sound sheet-fold union 64" as a known-good open-edge count; this issue is to make it actually closed.
Found while getting the rana-60-cnc stator to solve (#890). Helpers ring(), post(), fillet_block(side) live in crates/vcad-kernel-booleans/tests/coplanar_cap_union.rs; assert volume against a closed form in any new test — every failure in this family was a plausible mesh of the wrong solid.
🤖 Filed by Claude Code
The fold of a base flange + edge flange is
(plate ∪ flange) ∪ bend-sector. In both the relieved and un-relieved variants ofcrates/vcad-eval/tests/loon_sheet_metal.rs::bend_relief_cuts_notches_at_the_bend_endsthe result mesh has 64 unpaired edges at the bend lip and reads ≈ 3.41 mm³ above the analytic slab + sector − lip total (83 307.99 mm³). The excess is identical in both variants, so the relief delta is exact (162.0000), but the lip seam itself is unconformed.validate.rsalready cites "a sound sheet-fold union 64" as a known-good open-edge count; this issue is to make it actually closed.Found while getting the rana-60-cnc stator to solve (#890). Helpers
ring(),post(),fillet_block(side)live incrates/vcad-kernel-booleans/tests/coplanar_cap_union.rs; assert volume against a closed form in any new test — every failure in this family was a plausible mesh of the wrong solid.🤖 Filed by Claude Code