forked from 1b-agent/fieldcraft-upstream
The extrude/revolve cross-section took both ends of every B-rep edge as curve ends. A closed edge without a vertex on it (a hole's rim after geometry.faces.merge of its halves) starts wherever its chain was picked up, the old seam vertex, so that point stayed a curve end and a node column stayed on the merged boundary. Only open edges' ends (and the B-rep vertices) are curve ends now; the layout and interval assignment place the rim's nodes. The hex test runs on a square plate and asserts the seams carry exactly as many nodes as the same lines turned a quarter round the hole (10 and 10; before 5 and 10): the corner layout puts arc-midpoint nodes there by symmetry, so 0 is not the right target. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo