Y-intersection had a real I3 overlap at acute corners, caught by a new programmatic centroid-in-other-polygon test (y_intersection_no_overlaps). Fix: bisector-clip regular parcels adjacent to acute corners (interior < 60°). Obtuse corners keep their rectangle/parallelogram corner parcels and need no clip. Minimum-change deformation: when a road's *line* doesn't change — only its endpoints shift along the same line, e.g., the bottom road gets longer when its right endpoint moves outward — parcels whose frontage is still on the new segment are reported as Untouched and keep their absolute coordinates. Only parcels on a road that actually rotated get re-projected. Trade-off: vertex-exact inverse-restore is no longer guaranteed (centroid drift bounded by edit delta is the new contract). SplitSegment preserve: rebind frontage_road for parcels whose frontage is entirely on one side of the split point, or split into two parcels along a perpendicular through the split point for parcels that span. road_split_preserves test is now active and passing. acute_intersection_15deg/5deg also active. Test status: 24 unit + 20 integration + 1 doc passing; only cul_de_sac and curved_road_high_curv still ignored (need real curved roads). Journal §11 session 3 entry added with D14, D15, D16, two spec deviations, and the milestone-0.4 queue. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
321 KiB
321 KiB