← back to pin list4f. The master cut path — calibration, and where we left off
kerfmaster pin list · Agreed & queued (build after fidelity)
recordmixedd5d9States what the code does today. Auditable against the code — this is the only type that can go stale.
Content last changed 2026-08-04 — computed from the item itself, not typed.
Contract — Cut order stage
This contract describes the code as it runs today.
takes cut-order
makes —
fails if Treating another shop's path as the target instead of as a control.
Contract last changed 2026-08-06 — computed, not typed. Dated separately from the text above, so neither date can speak for the other.
⚠ Known defects
This item's subject has known defects in the code. Recorded and deliberately NOT fixed — recording a defect is not a licence to fix it. 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.
- D5 — 52 tight pierces are measured on every post and reach nobody
emit collects stats["pierce_tight"] -- 52 of 91 boundaries on novi, one dict each carrying the boundary id and its actual clearance -- and stats["start_compromised"]. Neither is read by any other module: grepping both names across every .py in cadmaster/ returns emit.py alone. No board HTML, no CSV, no print. viewer/index.html contains the word "pierce" zero times.
Cost today: The shop gets no warning on 52 of 91 pierces. This is the one entry with a live cost to a cut.
Verified: 2026-08-03 at 36a55a3. Re-posted novi: len(pierce_tight) == 56, len(pierce_clear) == 91. grep -c pierce viewer/index.html == 0. MEASURED 2026-08-04 (pierce_headroom.py), answering Jordan's question of whether routing could eliminate the tight pierces. Of 90 non-outer boundaries: 43 meet the 0.150" rule exactly (0.150 is the ceiling the lead rule imposes, not just the target -- measured max on the part is 150.1 thou), 1 misses with room available (BND40, 130.9 achieved vs 235.1 possible), and 46 CANNOT reach it by any start point, lead direction or lead length, because the best clearance anywhere inside those slugs is 76.8-123.9 thou, median 97.2. So the answer to Jordan is no, and the reason the report matters is exactly that: the 46 are not fixable and the shop has to be told about them. Separately, on 13 of the 46 we take 10-25 thou less than the part offers, which CLAUDE.md's 'point furthest from any edge' rule would recover. HEAT-MARK CLAIM RETRACTED, 2026-08-05. I wrote that the 46 impossible pierces mean "expect a heat mark" and offered them as a customer-side note. Aristide: "we ran this test, and see no heat mark issues at all." Checked instead of argued: pierce_headroom on the shop's own master (1785523984_296697_65733.NC) -- the program that was actually cut -- gives the SAME 46 impossible boundaries, and it achieves as low as 53.1 thou where ours achieve 81-120 on the equivalent slugs. Their validated program runs TIGHTER than ours at these boundaries and produced no marks. So the 46 are not a defect, not a warning and not a customer note; they are normal for a part with slugs this narrow, and CLAUDE.md already anticipates them ("where the standoff cannot be met... take the point furthest from any edge"). The only thing that belongs in the report is the GAP between what we achieve and what the slug allows -- 1 boundary that could reach target and does not, plus 13 leaving 10-25 thou unused. Their master has 4 in the first category and none of ours is worse than theirs. Physically these sit in the letters: 11 of the 13 are letter counters in one row at y=16.7, 0.83-1.36" across. RULING, Aristide 2026-08-05: "Pierce standoff does outrank the tipping point." Standoff was tier 3 of the start-point score but quantised into 25-thou bands (PIERCE_BAND), and the tipping arm was tier 4; on three letter counters all 18 start candidates fell in ONE band, so tipping decided outright and cost 8.5 thou of standoff. PIERCE_BAND is retired -- tier 3 now compares clearance raw, still capped at the standoff target, so tipping goes on deciding everywhere the rule is already met. In the same change _pick_lead searches lead ANGLE AND LENGTH for maximum clear air instead of placing the pierce at half the ray's clear distance; its docstring had claimed the furthest-from-any-edge point since it was written and the code did not do it (the half-chord is exactly right on a round hole and arbitrary on an asymmetric slug). MEASURED, novi re-posted, boundaries matched physically by bbox centre because ids are cut-order dependent: pierce_tight 56 -> 52; BND40 130.9 -> 150.0 thou, so the one boundary that could reach target and did not now reaches it; boundaries taking >10 thou less than their own slug offers 13 -> 4; total unused clearance across the impossible set 268.4 -> 99.6 thou. slug_tabs 70, slug_omitted 20, start_compromised 0 and short_leads 0 all unchanged. THE PRICE, and it is Jordan's number: risk.analyse goes 36/117.2/32.3/176.3 -> 31/159.3/45.1/269.8. Rapid crossings improve (36 -> 31) but total tipping moment rises 53%, because the tab is no longer pulled toward the slug's centroid. This narrows Jordan's 2026-07-31 ruling that minimising the tipping hazard is worth paying for, and he has not seen the figure. ALSO EXPOSED, not caused: one boundary went 150.0 -> 140.0 thou, i.e. below target while emit scored it at target. emit measures clearance against contours flattened at seg=32, which sits inside a true arc by up to 0.0048*r -- about 10 thou at r=2in -- so its clearance is optimistic on large arcs. Pre-existing; newly visible because the tie-break changed. - D9 — Our cut order now costs more travel than the master AND more crossings
Measured at HEAD: our rapid travel is 295.7", the shop's master path 287.3", their older program 245.0" -- 91 boundaries in each. We spend 2.9% more travel than the master and still carry 36 crossings against their 4.
Cost today: Nothing to the cut itself. It removes the argument we would make to Jordan for our ordering.
Verified: 2026-08-03 at 36a55a3, using compare_nc.parse + compare_nc.travel -- the project's own measure -- on a fresh post: 295.7 / 287.3 / 245.0. CONTROL WORTH RECORDING: a rapid-travel parser written from scratch for this check returned 269.5 / 255.3 / 224.5, because it ignored modal moves. The hand-rolled number was the wrong one; the project's tool matched the earlier session exactly. The checker fails before the code does, again.
STATUS: PARKED 2026-08-01 at Aristide's request — "there is more coming, for now we have to put a pin on it." This item is the resume point. Nothing in the cut-order code has been touched; the last cut-path DXF on the board is unchanged so the review markup stays valid. The post format work that came out of the same exchange is finished and closed (see the bottom of this item).
Read end to end and re-verified 2026-08-03. This item carried the "reads as fact" flag because it was 15k characters nobody had checked through. Every measurable claim in it has now been re-derived from a fresh post and the master NC: sections 4, 5, 6, 7 (travel, total moment, the 12.6"/11.9" legs), 9 (all ten start-point distances and ids), 11 (56 vs 67, and the master's 64) and 12 (182 G40 / 1 G41, both commits) reproduce exactly. Three did not and are corrected in place: the section 8 order mapping, the tipping-arm pair in section 7, and a drifted line reference in section 10. Sections 1–3 are Jordan's and Aristide's own words, section 10 is a plan, section 11 is a question list — none of those claim the present.
1. The objective, as Jordan redefined it
Asked to restate it back to them, and corrected on the first attempt. The corrected version:
Not the "very next move" — any move that takes place after that item has been cut. There is high pressure assist gas blowing out of the nozzle of the laser head that will cause these already cut items to flip and crash the laser.
A piece is a hazard from the moment its boundary closes until the sheet comes off the bed — for the whole remainder of the program, not for one leg. The tab is deliberately sized to snap, so it cannot be relied on to resist the gas. Two exceptions stand: a slug under the 0.75" drop-through falls through the slats and is gone, and the outer profile is cut last so nothing follows it.
Stated as a single sentence: minimise total flip risk over the whole program, where risk is summed over every rapid leg, over every piece cut and still tabbed at that moment, weighted by that piece's leverage and by how close the nozzle comes to it. Travel is what gets spent to buy that down. It is a constraint on everything that follows, not an optimisation with a safety penalty bolted on.
2. Three questions answered (Jordan, 2026-08-01)
- Rapids only — cutting moves cannot be changed. So the only two things under our control are the order and the rapid legs between contours.
- Proximity is graded, not binary, and the radius is closer to 1 inch than to a half. Jordan: "Given certain designs, this is exactly the risk we are trying to minimize." At 1" the exclusion field around a cut piece is bigger than the gaps between pieces on a dense nest, so zero crossings is not achievable and a crossing count is the wrong scoreboard. It becomes a continuous field to minimise, plus a residual to report.
- Size matters — "If the piece is small enough and leverage is low enough you can cross over it when necessary." So the existing moment-weighting is right; flat no-fly is wrong.
New deliverable requested by Jordan in the same message: a preview in the final interface indicating possible risk passes, "so the operator can be made aware where he should be on standby to monitor the job." This is also the argument for a graded score over a hard radius: a radius gives an unordered list, a graded score gives a ranked one, so the operator watches the worst five instead of forty.
3. Three distinct failure mechanisms, from their review pass
- Exit side. The head leaves from the tab, so the tab decides whether the next move flies over the piece just cut. Two examples on different shapes: path 16 (Jordan, with markup image
incoming/1785520428_296697_rapid_logic_16.jpg) and path 21 crossing itself on the way to 22 (Aristide). Not modelled at all — the start point currently scores lead clearance, corner avoidance, pierce standoff and tipping arm, but not where the head is standing when the contour closes.
- Regional locality. 22 → 23 travels back over 16, 17, 18, 19 — leaving a region and returning through ground already cleared. A different animal from exit side; fixing one will not touch the other. Untested. (Correction on record: what was tested and reported worse was risk-banding — cut the tame pieces first — which is not the same idea.)
- Straight-line rapids. Even a good order flies through whatever is on the direct line. The 17" leg into boundary 91 crosses 5 slugs; 87 crosses 6 on a 9.2" line. Needs rapid routing, which the 1" field turns from a fiddly obstacle-dodge into a well-defined shortest-path-through-a-cost-field problem.
4. The master path — the single most valuable artifact we have
Aristide and Jordan hand-built an ideal cut path for the novi sign, applying all their own rules, and issued it as the reference:
incoming/1785523169_296697_65733.NC — first issue (comp words wrong: all G41).
incoming/1785523984_296697_65733.NC — THE MASTER. Corrected comp, G0G28Z0 restored. Order, start points and geometry are identical to the first issue, so measurements taken from either are valid.
Crucially it is built on our own healed geometry — 91 boundaries, matching ours to 0.068 thou median, 0.776 thou worst, 89 of 91 inside half a thou (re-measured 2026-08-02). So every difference between their file and ours is a decision, not a shape. Direct, like-for-like comparison.
5. Calibration result — the metric is fine, the search is not
All three files through risk.py unchanged (rapids that cross a held piece / summed tipping moment / worst single):
- Their master path — 4 crossings, risk 2.8, worst single 0.8
- Ours — 36 crossings, risk 117.2, worst single 32.3 — re-derived 2026-08-03, unchanged since
0ded91a. (The board build this section was written from scored 38 / 146.3 / 30.6: four fewer crossings and a lower total, but the worst single move got worse.)
- Their older production NC — 33 crossings, risk 955.9, worst single 228.2
The metric ranks their path best by a factor of fifty. The promised test was "if my scoring does not rank their path above mine, my metric is wrong and their path is right". It passed. So the objective function is roughly correct and the search is what is failing.
6. The crossing threshold, quantified
Every piece their path flies over, by tipping moment: 0.77, 0.60, 0.56, 0.44, 0.17, 0.13, 0.12, 0.01 — reproduces exactly, 2026-08-02. Nothing above 0.8. In the same job the moment distribution over the master’s 70 tabbed slugs is min 0.01, median 0.32, p90 10.74, max 77.09 (moment = area × the arm from the tab to the slug’s centre of area; p90 = 63rd of 70 sorted). The min and max reproduce; the pinned median 0.37 and p90 11.38 do not, under any subset tried — the file has not changed, so the measurement did.
- They cross only in the light half: their heaviest crossing, 0.77, sits at the 67th percentile of those 70 slugs, and the 1-unit working threshold below is the 70th.
- Our file flies over a 29.28 and a 29.13 (two pieces, once each, both 17.35" long and ~14.2 in²) and a 24.40. Across the whole program 36 rapid legs cross something, 61 piece-crossings over 50 distinct pieces.
- Working threshold to adopt: crossing permitted below about 1 moment unit; forbidden above it, pending confirmation on other jobs.
7. The exchange rate — what they were willing to pay
- Rapid travel: theirs 287.3" vs ours 295.7" at HEAD, re-measured 2026-08-02. The exchange rate has inverted — when this was written ours was 264.3" and they were paying 9% more travel to take crossings from 38 to 4; today we spend 2.9% more travel than they do and still carry 36 crossings against their 4. The safety argument survives; the price we quoted for it does not. Confirms Jordan's earlier ruling: "If it costs us a little bit more time travel wise, but we've minimised tipping hazards, for us that is a win."
- Tipping arm over the 70 tabbed slugs: their median 0.339" vs ours 0.199" — reproduces exactly, 2026-08-03. Over every boundary that gets a tab measurement the pair is 0.256" vs 0.172" across 90, not the 0.262" / 0.173" over "all 91" pinned until today:
tipping.analyse excludes the outer profile, so 91 was never the count, and the master figure is 6 thou off. Total moment theirs 300.2 vs ours 176.3, reproduces exactly. So when tipping and exit side conflict, they take the longer lever and refuse the overflight. That answers the trade-off question that was put to Jordan, with data instead of an opinion. Overflight dominates tipping arm in the objective.
- They also took two long legs, 12.6" and 11.9", and even on those clipped only the tiniest pieces. Not travel minimisation with safety bolted on — the other way round.
8. Their order, mapped onto our boundary numbering
(Their BND labels are re-sequenced 1..91, so the mapping is geometric, by centroid.) Their sequence, expressed in our numbers:
20 18 17 16 15 14 13 12 19 | 7 9 10 11 | 3 4 5 6 8 | 79 78 77 72 76 | 67 66 65 62 61 | 60 59 58 | 54 55 56 | 48 49 50 | 44 43 42 41 | 87 2 1 80 71 70 68 69 64 | 53 52 51 57 47 46 45 40 | 32 31 63 33 36 86 34 35 85 84 88 89 90 | 30 26 25 24 23 29 28 27 | 39 38 37 | 75 74 73 81 82 | 83 22 21 | 91
(Grouping added for reading.) Re-derived 2026-08-03 — the numbers above are NEW. The sequence pinned until today began 11 9 8 7 6 5; it was measured against an older post, and BND ids are assigned by our cut order, which has moved. Same failure as section 9, one section later and unnoticed when 9 was fixed. Any list of our BND numbers is only valid against the post it was measured from — re-derive before taking one to the machine. What does not move: long unbroken runs through one region before moving on, and they never leave a group and come back through it. That is regional locality demonstrated, not asserted, and it is a property of their path, not of our numbering.
9. Start points — where we already agree, and where we do not
Aristide's instruction: "Since we are human we may be a little bit off on the weight points that you had calculated. When one of our start points is relatively close to where you think it would be ideal, it should move to the ideal spot."
- Median difference between their pierce and ours: 0.175"
- 34 of 91 within 0.10" — 49 of 91 within 0.25". Those snap to the computed spot per the instruction above.
- 9 are more than 1" apart and must be worked individually, not averaged away — either they are seeing something the model does not carry, or our scoring is wrong there. Re-measured 2026-08-02: the distances are unchanged but the boundary numbers are not — BND ids are assigned by cut order, and the order moved, so the pinned list points at the wrong boundaries at the machine. Current ids: 83 (6.16"), 82 (3.27"), 39 (3.24"), 81 (3.06"), 89 (2.33"), 27 (1.24"), 24 (1.24"), 35 (1.16"), 23 (1.16"). And a tenth, new at HEAD: BND 91, the outer profile, now starts 20.95" from where theirs does — by far the largest disagreement in the file and not present when this was written.
10. The plan when we resume, in order
- Re-baseline the metric as a graded field: full risk directly overhead falling to zero by ~1" from the piece's edge, weighted by tipping moment, summed over all held pieces at that time. Then run the shop's own NC through the identical metric before believing any number — the standing control rule, which has caught about seven of our own bugs.
- Close the loop between start points and order. Today every start point is chosen before the order exists, which is precisely why exit side cannot be scored. But order depends on starts and starts depend on order — circular, so solve by iterating to a fixpoint: pick starts → build order → revisit starts knowing each piece's successor → rebuild, two or three passes until stable.
- Locality as a first-class term, tested rather than hoped for. It may fall out of the 1" field on its own, since leaving a region and returning is exactly what accumulates exposure.
- Rapid routing — shortest path through the cost field. The only thing that fixes the 17" leg into the outer profile.
- Operator risk preview — BUILT, and shipping on the vector board.
risk.detail() keeps the per-rapid measurement instead of summing it, and risk.write_risk_report() writes it as CSV ranked worst first (risk.py:47 and risk.py:113, commit 9418f93); build_vec_board.py:77-80 calls both and the board draws the stand-by list. It is not wired into the DXF board — build_board.py never imports risk, so the novi board has no stand-by list.
Validation targets: their numbered examples (16, 21, 22→23, 90→91) must each be shown in the metric before and after, number by number. And the rebuilt objective must land near their master path on this design and still behave on the next file — the master is a calibration target, not a template. Do not tune until it reproduces this one file.
11. Still open — needs their call
- The rest of the review-pass observations. More are coming.
- Whether the ~1 moment unit crossing threshold generalises or is specific to 1/8" steel.
- Whether the boundaries that cannot meet the 0.150" pierce standoff should be listed individually in the report or just counted. The count itself is disputed by our own two tools: the post’s
stats["pierce_tight"] says 56, while pierce_clear.measure, reading the posted program back, says 67 of 91 have under 0.150" of clear air (min 0.0763", median 0.1204"). For scale, the shop’s own master NC has 64 of 91 under 0.150" (min 0.0457") — so the standoff is not met by hand either, and what "cannot meet it" costs is the open question, not just how to print it.
- The 9 far-apart start points above — whose model is wrong.
12. Closed in the same exchange — post format (commit 77b7f0d, pushed)
The master file also settled the dialect. See item 4a; recorded here because it came from the same file.
- Comp needed no change — master is 182 G40 / 1 G41 (the G41 being the outer profile), identical to what we already emit. Their first draft's all-G41 was the error, not ours. The D7 word stays declared on the G40 lines, as we already did.
- G52X.2Y.2 — Aristide's mechanism: the operator squares the sheet, drives to the bottom-left corner, the program zeroes there with
G90G92X0Y0, and G52 walks it 200 thou in off the raw edge. "This is a good starting point, but may be set differently for different material types/thicknesses" — so it belongs in the material table. Two bugs fixed: our note said Y.95 (wrong), and the production dialect was emitting no G52 at all, so the margin was silently missing from every production file handed over.
- M99 removed — "an anomaly from our post in MetaCam." G0G28Z0 stays. M99 is kept only in
dialect="shop", which exists to reproduce their older program byte-for-byte as a control.
- #2007=.007(D07) as a real macro assignment replacing our dead (BEAM COMP) comment; comment zero-pads the D, the motion word does not. G90G92X0Y0 on one line. CRLF throughout.
- Verified: our post now diffs clean against the master across the entire header and footer, with the only remaining differences being the free-text part-name comments.
- Material string MSO7,0.125 is now CONFIRMED — they wrote it themselves in the master. It was previously flagged as a guess on the board.
Thread closed — Jordan, 2026-08-04
We're going to agree that we made mistakes in the files we gave you. No need to have a go/no-go ruling on it. It just proves the point that humans will make the errors that you can catch. Furthermore, these files were merely to educate you that not one single path is right or wrong, what is more important is that the rules about flying over items that have a tipping potential are either avoided or calculated risks.
So this item stops being a target to match. It was written as "their hand-built ideal path scores 4 crossings to our 36" — a calibration to chase. Three files later that framing is wrong: the second and third were deliberately reordered, one contained an error Jordan confirmed as an error, and the point of the exercise was never that their path is the answer.
What we keep from it, and it is not small:
- A metric that found a real error in a file a human pass had already approved — which is the entire justification for the metric existing.
- The measurement that the dominant hazard is the self-crossing, in their files as much as ours, which redirected the work from cut order to start/stop points.
- Three programs' worth of convention evidence — code census, tab counts, structure — that our post now matches word for word.
The comparison numbers stay on item 4e as evidence. Nobody should re-open this to close the gap to 4. The standard is Jordan's: a flyover over a piece with tipping potential is either avoided or a calculated risk — not that our number equals theirs.