mirror of
https://github.com/ajisaacs/OpenNest.git
synced 2026-10-14 00:01:55 -04:00
Capture and preparation agree that a nominal contour may close within NominalContourClosure.Tolerance inclusively, which converted drawings rely on: the sampled production corpus carries vertex gaps up to 1e-6. Replay verification still compared those rings at the exact geometry epsilon, so the one joint a rotated tool path legitimately bridges refused the whole plate after the search had already spent its budget. Census of 91 plates from 60 stored nests: every searched plate containing such a seam refused with contour-accounting (4 plates, 76.5s of wasted search, worst 71.7s for one 11-part plate), and none of the 42 ready plates had one. Replay now carries that same admitted endpoint gap as positional and length slack for the affected ring only. Direction sign, coverage order, retrace detection, ring counting and selected-emission binding keep the exact epsilon, and capture's closure admission is unchanged. With the fix the census yields 45 ready plates instead of 42, no plate changed any other way, and expansion counts are identical wherever status matched. P260805-01's 16-part plate plans in 0.76s rather than refusing after 4,129 expansions. Tests: SeamClosureReplayTests covers seams of 0, 5e-7 and 1e-6 plus four accounting faults (missing edge, reversed edge, interior shift beyond the admitted seam, second circuit) that must still refuse, and the beyond-tolerance capture refusal. OpenNest.Tests 3751, OpenNest.Engine.Tests 690 and OpenNest.IO.Tests 79 pass; Windows-only projects cannot build on Linux.