Boxes that touch at -0.0/+0.0 now count as overlapping, so the pair cap cannot be skipped. try_boolean_n, try_unite_all and try_area report a refused input, and the Pathfinder shape-mode unite and the Blob Brush use them to show an error. When the planar map is over its budget, the fallback leaves out paths that fill nothing so a flood of cutting lines cannot take the filled shapes down with it.
CodeRabbit findings #6, #19, #53, #59, #62, #167:
- Before a sweep builds a planar map (Boolean, normalize, Pathfinder, Offset Path, Live
Paint, Shape Builder), the pairs of segments whose bounds overlap are counted exactly in
O(n log n); past 4M the operation fails as `PathOpsError::TooComplex` (a crossing can only
lie where two segments' bounds overlap).
- Live Paint's winding crossings are sparse: the sweep keeps one per edge, and a vector as
long as the input count made disjoint shapes quadratic in memory.
- Gap detection groups the segments near a loose end by track once.
- 3D: ring containment checks bounds first and walks at most 50M edges; Inflate's mixed-cell
booleans take at most 4M outline segments together.