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-20 — computed from the item itself, not typed.
RULED AND BUILT same day (Jordan: 'a. Yes. b. Sounds good. c. Perfect. Go.'). (a) THE PACK HANDS ITS PLAN TO THE PART'S OWN JOB: run_review's finisher extracted into server._finish_review (tooling doc + source-frame review payload + stage record + derived-stage drops -- ONE finisher, the two doors cannot drift); the pack door's _pl_build(persist=) calls it per referenced part with the 0-deg plan, so opening a packed part shows EXACTLY the tooling the list packed with (material x machine from the LIST, the part's own overrides consumed and round-tripped). review.packed_from records provenance {list job, name, when}; the detail drawer states it and says an edit here flags the list. skip-if-same guard: an unchanged part is left untouched -- a plain re-pack never churns the children (substance compared: material/machine/plan/contours/findings). (b) STALE-FLAG + ONE-CLICK RE-PACK: the pack records tooling_fp per referenced part -- sha1 over the part's CONSUMABLE overrides (tooling_doc.overrides_from, floats at the 4-decimal ruled floor), exactly what rides into the plan, so exactly the stale signal; every partnest GET computes stale_parts LIVE (server._pl_stale_parts); the Nest drawer shows the flagged banner naming the parts with Pack again right on it (same honesty as the deliver tab's stale notice); plpost's plans_match refusal unchanged as the final gate. Old packs with no fingerprint honestly report nothing. (c) TRUE CUT PATH IN THE NEST PREVIEW: _pl_build's plan rows now carry segs -- the as-cut true-arc path (emit's plan_samples segs, TAB GAPS INCLUDED) rotated back to the part's base frame per orientation (server._rot_segs: points via _rot_pts, arc angles shifted, sweep direction untouched), so the placement transform that places the geometry places the toolpath; app.js plToolPath builds one Path2D per ref x orientation, stroked in the --toolpath role per placement, geometry line THINNED under it (0.7px vs 1.3) so a tab gap reads as a break; dashed leads + pierce dots ride on top; old packs without segs fall back to leads-only, stated in the drawer. plans_match stays on pierce/lead_end so pre-segs packs still post. VERIFIED: test_pl_sync.py 23 controls (handover, provenance, no-churn re-pack, segs per orientation, live stale flag, honest post refusal, re-pack consumes the edit, old-pack compatibility both ways); pl_post/pl_deliver/pl_spread/pl_seq/plhand/pl_subcall/partrotate/plan_display/dragcheck/start_defaults/warns/split_door suites green; live on dev: packed list -> child opens planned with packed_from note, child lead edit -> banner 'TOOLING CHANGED SINCE THIS PACK' on the list, zoomed canvas shows the 0.030 tab gap as a break at the lead landing. The undo cross-job scope question (pin global-undo) is STILL OPEN -- not answered by this go. IN-PLACE ENVELOPE REFRESH BUILT 2026-09-18 (Jordan: 'I did exactly as you asked and it undid my overrides from the Nest tab. Does this seem like a good workflow?' -- the one-click Pack-again-and-post destroyed his hand-tuned layout; Aristide: 'I see the issue, and it is a real one. But it is a logic issue, and you can resolve it. You understand the desired outcome. if you don't have questions, go ahead and fix.'): the stale gate's remedy no longer costs the operator's layout. NEW POST /api/jobs/