← back to pin list

4f. 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.jsoncadmaster/KNOWN_DEFECTS.md, not this page — the text below is generated from the register so the two can never disagree.

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)

  1. Rapids only — cutting moves cannot be changed. So the only two things under our control are the order and the rapid legs between contours.
  2. 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.
  3. 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

  1. 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.
  2. 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.)
  3. 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:

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):

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.

7. The exchange rate — what they were willing to pay

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."

10. The plan when we resume, in order

  1. 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.
  2. 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.
  3. 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.
  4. Rapid routing — shortest path through the cost field. The only thing that fixes the 17" leg into the outer profile.
  5. 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 boardbuild_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

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.

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:

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.