← back to pin list

Healing rules (dirty CAD → clean arcs)

kerfmaster pin list · The spec — what we build to

rulingmixedd11A decision by Aristide or Jordan. True because it was decided; it can be superseded, but it cannot be stale.

Content last changed 2026-08-06 — computed from the item itself, not typed.

Contract — Heal stage

This contract states a decision, not an implementation.

takes raw-geometry

makes healed-geometry

fails if A fit-induced jog anywhere; deviation over the tolerance gate measured against the TRUE source; a native bulge re-fitted; a rule that only works on one file.; a sub-tolerance smoothing pass keyed to feature size rather than to deviation; a smoothing allowance carried as a separate number from the measured end-to-end deviation; a corner rounded when the feature it sits on is NOT inside the operator's tolerance.; one tolerance applied to a whole file where the features have different functions; a default gate defended on a feature whose purpose does not need it.

Contract last changed 2026-08-06 — computed, not typed. Dated separately from the text above, so neither date can speak for the other.

⚠ Known defects

This item's subject has a known defect in the code. Recorded and deliberately NOT fixed — recording a defect is not a licence to fix it. Source: cadmaster/defects.jsoncadmaster/KNOWN_DEFECTS.md, not this page — the text below is generated from the register so the two can never disagree.

Customer ‘dirty’ files explode curves into hundreds of tiny straight LINE segments. Re-fit them into true arcs within tolerance.

Sub-tolerance detail may be smoothed away — Jordan, 2026-08-06 (Q27)

“If we fall within the tolerance then smoothing is acceptable and you can be less verbose about it.” Jordan's reason: on a part this size, detail below the tolerance is invisible to the customer, so reproducing it is not worth the kinks it produces.

Measured before asking, on the Brazen plate: all 261 remaining fit-induced kinks sit at a junction with a primitive under 0.005 in (184 under 0.001 in, median 0.0007), so at this floor the whole residue goes. Control: 45% of the 2372 clean junctions also carry a sub-5-thou primitive, so the pass touches about half the file's junctions, not only the 261 that are wrong — which is why the end-to-end measurement, not the count, is the check. Of 2633 healed primitives 1273 (48%) are shorter than the 0.007 kerf and carry 1.85 in of 62.46 in of path.

Not built yet. This records the ruling; the pass itself is the next piece of work.

Tolerance follows the feature's FUNCTION, not the file — Jordan, 2026-08-06

“Let's face it, it is supposed to be read, that's its function. So our eyes would never be able to detect the amount of detail you're trying to assign to it. This is what I'm trying to teach you. Business rule application logic.” Said of the Brazen plate: 5.5 in wide, brush-script type, seen from a foot away — at which nobody can tell 10 thou from 20.

What it cost to learn: a full exchange defending 2.06 thou against 2.40 thou, and a 93 degree tangent error living on a 0.0009 in whisker, on decorative type. Both measurements were right and neither mattered.

What the code does today — record, 2026-08-06

heal.smooth_fit_kinks() implements the Q27 ruling. It runs after the fit (and after merge_collinear_lines), on a budget of SMOOTH_SHARE × the operator's gate — gate, never the fit target.