kerfmaster pin list · UI / workflow decisions
recordStates what the code does today. Auditable against the code — this is the only type that can go stale.
Content last changed 2026-09-01 — computed from the item itself, not typed.
record — built 2026-09-01, the 3c refactor Jordan ordered 2026-08-31 (“same rule functions as nc_audit”, on the warning intent: a risky operator choice warns at the moment of the click, and the posted-NC re-read stays the final gate). rules.py now holds the rule decisions; nc_audit.audit() and the future live check call the SAME functions, and each finding carries ONE message string used by both surfaces — the two cannot drift.
Boundary contract: a boundary is a plain dict — supplied: id, poly, pierce, lead_end; derived by rules.annotate(): tab_gap, bbox, size, ccw, outer (outer = even geometric nesting depth, the −67 bnd-154 lesson kept). The audit feeds it pierce_clear.parse_nc output; a live caller builds the same dicts from a planned sequence and calls rules.check_plan(bnds, comp_words=...) — no NC file anywhere. Pierce clear-air measures off the plan via pierce_clear.measure(None, bnds=...).
One NEW check, both surfaces: check_outer_last — nothing is cut after the outer that geometrically contains it (the exact manual-re-sequence hazard Jordan named 2026-08-28). The audit never checked this explicitly; it does now. Proof of faithfulness: audits of novi-sign_post, ex11_post and O33286 (1140 expanded boundaries) are byte-identical pre/post refactor; ex2_post — an old pre-rules fixture — gains one TRUE new finding (bnds 16/17/19/20 cut after their severed containing outers 9/11/12, verified geometrically).
Severity is a PROPOSAL, not a ruling: the yellow/red table is ours to propose (pin gcode-warning-callouts) and Jordan has not ratified it. Proposed: RED = comp on the wrong side; untabbed over-drop slug that later rapids cross; anything cut after the severed outer that contains it. YELLOW = right-side G42 (norm deviation); needless tab; pierce under standoff (the sanctioned centre-pierce fallback lands here — reported, never blocking). Warn, never block, either colour.
Division of labour: NC-text checks stay in nc_audit — M-code structure, Rev2 tooling words, micro blocks vs beam comp, geometry-vs-source — they judge the FILE, not a plan. Controls: test_rules.py, 11 PASS (every check exercised on hand-built plans; audit-parity control proves the live strings equal the audit's findings on a posted NC). Existing suites (risk_detail, tooling_doc, emit_extents, boards) pass.