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-08-31 — computed from the item itself, not typed.
record — built 2026-08-31, on Aristide's steer toward the interface. The 2026-08-24 ruling (right-click shows the current value) and the Add-Toolpath walkthrough's override set now have a data-model home: emit.write_gcode_macrob records every posted boundary in stats["contours"] — one entry per BND in cut order, each ruled field as the value that RAN plus its SOURCE (table:/rule:/operator) — and tooling_doc.py shapes that into a JSON document per posted part (phase rule kept: data in JSON, generator separate from presentation, no UI built).
Identity is a point on the feature, never an index: each contour is keyed by its centroid (at, part frame) — the operator's click/drag model — so an override survives any re-ordering. start_at gained the matching engine input: {"features": [{"near": (x,y), "start": (x,y)}]} binds by nearest centroid, generalising O33286's outer-only slot to ANY boundary (the drag-handle engine's first input). Every safety rule still applies to a forced start.
Honesty rules of the schema: override slots exist for the full ruled set (lead length/angle/radius, lead-out, tab, start, condition, comp, direction, sequence) but tooling_doc.CONSUMABLE names what the engine consumes today — exactly start — and grows only in the same commit as the engine input it names; unconsumed() reports any set override the engine would drop, so an operator edit is never dropped silently. Round trip proven in test_tooling_doc.py (12 controls: byte-identical NC with the record riding in stats; override moves the hole start to the requested point, source flips to operator, other contours untouched).
Not built, deliberately: consuming the other fields; wiring the doc into post_nest/deliveries; any dialog. Those are the next bricks.
record update, same day (Aristide: 'go ahead'): the promised next bricks landed in the same order stated. (1) lead_length is the SECOND consumable field — write_gcode_macrob(overrides={"features": [{"near", "start", "lead_length"}]}), the exact ruled operator move (Jordan 2026-08-27: shortening lead-ins is the operator's manual call). It resizes that feature's lead only and relaxes NO gate — the pierce standoff check still runs at the table value, so a shortened lead that pierces tight is flagged like any other. overrides_from(doc) supersedes start_at_from as the round-trip builder. (2) post_nest.run now writes <label>_tooling.json beside every posted NC and passes overrides= through — every delivery ships the document, and the nest↔tooling loop has its engine-side seam. Proven end-to-end on a control part (doc ships, edited doc re-posts, hole start moved to the requested point); test_tooling_doc.py now 15 controls incl. the lead_length round trip (posts at 0.08 vs table, source flips to operator, other leads untouched); NC byte-identity re-verified by hash; all suites pass.