kerfmaster pin list · Input formats
recordStates what the code does today. Auditable against the code — this is the only type that can go stale.
Content last changed 2026-08-31 — computed from the item itself, not typed.
Vocabulary — definition stage
What exists (record, 2026-08-22): step_sheet.py parses STEP text (planes/cylinders, thickness from parallel-plane histogram, bend = tangency cylinder pair with a coaxial mate at ±t; wall fillets self-exclude because their tangency edges are exactly t long). unfold() develops one side surface across the bend graph; BA = α(r_inner + K·t).
K is solved by PERIMETER MATCH, never ICP (solve_unfold.py): developed perimeter is linear in K and needs no alignment. ICP (KD-tree, mirror-aware) reports fit quality only — rms was flat across K, so it cannot solve K. A pair whose geometry does not reconcile throws K* far outside [0,1] and self-excludes with the residual recorded (out/unfold_calibration.json).
Result: K=0.214 from 78655 alone (perimeter residual solved to zero, ICP rms 0.0091", max 0.0176", t=0.0752" 14 ga). Excluded honestly: 78836/78840 flat (no K signal); 78656 missing a flange (second bend unrecognized, bbox 0.7" short); 78842/78846 one formed corner zone the developer does not model (SolidWorks wrote spline edges there); 76282 multi-feature panel, 14/247 faces walked. Single-pair calibration = provisional.
BNM78880 applied: 9 bends, 10 panels, 0 warnings, flat 4.856×7.541", perim 32.1848". Board viewer/builds/036-78880-unfold/ + MetaCam-safe flat DXF (census POLYLINE/VERTEX/SEQEND/CIRCLE only, PASS). Known defect: small open spans at bend-zone panel joins in the flat outline, flagged in out/78880_unfold_summary.txt. Nothing cut until Jordan approves flat + K (ruling, standing).
'K-factor will have to be a variable on the table since it will vary by material and possibly by customer.' So: a per-row column in materials.json (provenance-carrying, like every table value), seeding the bend calculation; per-customer override rides the normal override slot. unfold.py's K=0.33 stated assumption and the provisional solved 0.214 both become mere candidate values for that column — a missing K raises like any incomplete row, never a silent fallback.