Feature. Multi-start threads (threadedShaft(starts: N), N > 1) now build via the smooth, boolean-free direct path instead of falling to the faceted boolean cut (which produced disconnected notches, #254).
The single-start cam-slice loft (#213) is generalised to N teeth tiling the turn at lead = N·pitch, giving a continuous interleaved multi-helix — a low-face-count, BRepCheck-valid solid with the crest exactly at the nominal major radius. Partial-length multi-start (thread + plain shank) closes via per-start shoulder faces.
| starts | faces | mesh crest (nominal 5.0) |
|---|---|---|
| 1 | 7 | 5.000 |
| 2 | 12 | 5.000 |
| 3 | 17 | 5.000 |
Scope: piecewise-linear forms (ISO/Unified, trapezoidal/ACME, square, buttress). Rounded (knuckle / rounded Whitworth), tapered (NPT/BSPT), and non-cylinder targets still use the cut path. Single-start behaviour unchanged.
Key detail: the loft samples per pitch, not per lead — sampling per turn under-samples each tooth at N > 1 and the ruled:false loft balloons the crest radially past nominal.
Swift-only — no xcframework rebuild. Full thread suite (54 tests) green. Closes #257.