kerfmaster pin list · Big capabilities
intentmixedWhat we want to build. Never claimed the present, so it cannot be stale — and must never be read as a description of the code.
Content last changed 2026-08-03 — computed from the item itself, not typed.
Contract — Starts & leads stage
This contract describes a stage we intend to build — it is NOT a description of the code.
takes —
makes operator-choices
fails if A per-boundary choice made silently by the tool where the record says the operator picks.
Contract last changed 2026-08-06 — computed, not typed. Dated separately from the text above, so neither date can speak for the other.
1 open question blocks this pin
On 2026-07-29 three separate open questions — which boundaries are cut-critical vs art/text (comp side), which get slug-retention tabs, and how leads are placed — all came back with the same answer from Jordan: the operator decides, case by case, in the UI.
That is a single feature. Each one is a property attached to a boundary, chosen by a human looking at the part. So cadmaster needs one pick surface, not three dialogs:
It was going to be a later UI item. Corrected 2026-08-02: we DO match. cut_critical="outer" reproduces the master's comp exactly — 182 G40 / 1 G41 / 0 G42 — and emit.py:1146 says in as many words that this parameter is the pick surface until the UI exists. So the pick surface is not a blocker on posting; it is a blocker on posting any part but this one, because the default guesses that the outer profile is cut-critical and everything inside it is art.
And the side is not the undecidable half. Which side the offset goes IS derivable and IS derived, in emit._comp_side() (emit.py:1044-1058): G41 iff (travelled CCW) != (outer profile). What cannot be inferred from geometry is comp ON vs G40 — whether a boundary is cut-critical profile or non-critical art/text (item 4a: 76–83 of their 90 comp-off boundaries had ample room and would never have alarmed, so comp-off was a call about the feature class, not the geometry). That is what the operator declares.
Jordan: classification stays case-by-case "until we have enough data to start seeing patterns". That data only exists if we keep it. So every pick should be logged against the geometry it was made on — feature size, closed/open, interior depth, arc vs line content, text-like or not — from the first job. Then the patterns are already in hand when we go looking, and the defaults get proposed from real decisions instead of invented. Needs Jordan's and Aristide's nod before building.