kerfmaster pin list · Big capabilities
recordclosed d13States what the code does today. Auditable against the code — this is the only type that can go stale.
Content last changed 2026-08-14 — computed from the item itself, not typed.
Contract — Post stage
This contract describes the code as it runs today.
takes cut-ordermachine-profile
makes gcode
fails if A condition var outside #102–#111/#121/#122; the G52 margin missing; a difference from the shop's dialect that is not written down.
Contract last changed 2026-08-06 — computed, not typed. Dated separately from the text above, so neither date can speak for the other.
2 open questions block this pin
⚠ Known defects
This item's subject has a known defect in the code. Source: cadmaster/defects.json → cadmaster/KNOWN_DEFECTS.md, not this page — the text below is generated from the register so the two can never disagree.
Jordan sent the shop's real production program for the novi sign on 2026-07-29. It is an answer key for the post, and it splits our output cleanly into two halves.
Measured with compare_nc.py against this file (the 2026-07-29 program, not the later master): 91 boundaries in both, worst deviation 0.777 thou, median 0.055 thou, 89 of 91 inside half a thou — re-measured 2026-08-02 at HEAD 0ded91a; the pinned 0.441/0.11/91-of-91 is from the July post and no longer reproduces. Against the master NC the same tool reports 0.776 worst, 0.068 median, 89 of 91. The two outliers are the same boundaries in both comparisons. The healer is producing the shop's geometry. (A whole-part offset of X-0.4461 Y-0.0122 is reported separately — it is exactly the source DXF's $EXTMIN, i.e. true part coords vs an origin-shifted program, not a fit error.)
.039); negative sub-1 values keep it (-0.7165); exact zero is bare (J0). Consistent across all 3298 values in their file. DONE — both our posts now match this exactly.G40 on the 90 interior boundaries and G41 on the outer profile. The first reading — "interiors get G40" — is wrong. Jordan, 2026-07-29: comp is dropped here because this job is art/text. Those features are non-critical, gain nothing from a .007 offset, and tiny lines and radii below the offset value throw interference alarms, so the offset is removed for the whole class.emit._comp_side() (emit.py:1044-1058), always toward the scrap. What cannot be measured is comp ON vs G40: cadmaster has to be told which geometry is cut-critical profile and which is non-critical art/text. That is the same classification input as items 6 (layering) and 8 (cut vs engrave), and it is the natural home for the .ai stroke-colour convention. OPEN: how does the operator mark it — layer, colour, or a pick in the UI?G90 and G92X0Y0 on separate lines, no G52, no #2007 line, O-number carries the part name, M100[MSO7,0.060]. Jordan: M100 material/condition table and the offset values come from the tables._healed.nc file carried M03/M05 around each contour as beam on/off. Those are milling spindle codes and have no business in a laser file; removed. That file is now labelled INSPECTION ONLY. DONE.Confirmed as table-defined, so these are no longer open questions — they are a data format we need to agree and then read: the #-variable values per material (#102–#111, and what #501=#107 selects), the M100 material/condition strings, the offset values (D-numbers and kerf), the pierce subprograms (P9011 and friends), the lead-in defaults, and the slug-retention tab widths by thickness. Same pattern as the bridge and tab tables: shipped defaults, overridable in Preferences, per laser and per location.
Three separate questions came back with the same answer, which is a design decision, not three of them:
All three are per-boundary overrides made by a human looking at the part. They are one feature, not three — see item 4b.
cadmaster/machine_codes.json and rendered by build_codes.py into cadmaster/MACHINE_CODES.md. It names every code this item was guessing at: M87 Beam off, M121 Process end, M101 cond data 1 select, M199 Height control off, M66 Emission on, M100 cond search, M98 Sub-program calling, M99 Sub-program return. A code census of the master, the 07-29 file and a fresh post confirms every word all three emit is in the documented vocabulary. It also answered the pairing question against us: neither M87 nor M121 is a compensation code, so keying the end-code on comp state (emit.py:1443) is very unlikely to be right — the master's single M121 sits four lines above M30. Logged as defect D13, not fixed, and Jordan should still confirm. Detail in the reminder item.Everything above was read off the shop's 2026-07-29 program. On 2026-07-31 Aristide and Jordan issued incoming/1785523984_296697_65733.NC, hand-built on our own healed geometry, and it answered the open questions in the opposite direction. Item 4f says "the master file also settled the dialect, see item 4a" — until now this item did not mention the master at all. Re-counted from both files, 2026-08-02:
| 2026-07-29 file | MASTER | our post at HEAD | |
|---|---|---|---|
| work shift | none | G52X.2Y.2 | G52X.2Y.2 |
| beam comp macro | none | #2007=.007(D07) | #2007=.007(D07) |
| material | M100[MSO7,0.060] | M100[MSO7,0.125] | M100[MSO7,0.125] |
| comp words | 182 G40 / 1 G41 | 182 G40 / 1 G41 | 182 G40 / 1 G41 |
| end codes | 90 M87 / 1 M121 | 90 M87 / 1 M121 | 90 M87 / 1 M121 |
| M99 | present | absent | absent |
| condition vars | #102–#111 + #121/#122, plus #107×92 and #501×91 (no #112–#120 in either file; both files carry exactly one #3002=0 (TIMER), and so does our post at emit.py:1497 — this item said until 2026-08-03 that the master did not, which a grep of both files disproves) | identical to the master | |
| D words | D7×91 | D7×91 + D07 once (in the #2007 comment) | D7×91 + D07 once |
| retract | G0G28Z0 | identical | |
Our post at HEAD is dialect-identical to the master on every one of those counts. A line-by-line diff of the two files leaves only the free-text part-name comments in the header and the outer profile's start point — which is a start-point disagreement, not a dialect one, and is tracked in 4f. The dialect half of this item is closed; what is still open below is about the shop's decisions, not its format.
Tool: cadmaster/compare_nc.py <reference.nc> <ours.nc> reports geometry deviation and the convention diff, and refuses to compare across post dialects.
Asked directly whether the 14 were a deliberate call: "Not sure, and don't want to spend time on going back. Moving forward on the next move. Hold for more files."
This retires the question rather than answering it, and the distinction matters. Our table cannot be derived from the novi file and now will not be; it gets derived from future NC + DXF pairs or not at all. Until then the round-up stands and those 14 pieces carry a wider tab than the shop would have cut — a known, accepted cost, not an open defect. Nobody should re-open this from the numbers alone.
Record — 2026-08-14, the D word is a REGISTER, not kerf-in-thou: 33215.NC (the shop's own 1/2" program for the O100 job) writes #2007=.020(D07) — register 7 loaded with a .020 value. The whole corpus runs D7 at every thickness (14ga .007, 1/8 .007, 1/4 no-assignment, 1/2 .020), so D7 is a machine constant (machine.json comp_register, read via tables.comp_register) and the kerf value rides in #(2000+register). Our post derived D from kerf — matched by luck at .007 and wrote D20/#2020 on the first 1/2" post; fixed same day, O100 re-posted. Same file measured MSO7,0.500 kerf .020 (replacing a failed .007 bracket — thick plate does not share the thin-plate offset, so the 0.990 row's bracketless .007 deserves re-measuring too).