Core only had a convex NFP, so Opus55 and Gpt6Astra each built concave NFPs from Clipper's Minkowski sum, and only Opus55 added the terms that cover one part lying inside or swallowing the other - Gpt6Astra instead filled every positive path and lost real interlocks. NoFitPolygon.Compute ports Opus55's construction (boundary sweep united with A + p0 and -B + a0; convex pairs use the linear edge merge). It works on filled perimeters only; hole-aware clearance stays with collision testing. Tests port Opus55's NFP tests and add a notch fit and a seeded property check against Collision.HasOverlap. Co-Authored-By: Codex <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>