cadmaster v1 — paper walkthrough (2026-08-17)
Method. Three real jobs walked through the eight screens of the paper design, saying at each screen what the app would show — with the actual numbers measured from the files today — and what the operator would do. Verdict per screen: HOLDS (design covers it) or FINDING (design needs a fix). Findings are numbered W1–W5 and the fixes are folded into the paper design in the same commit, marked with their W-number, so sign-off covers them.
Scope (Aristide, 2026-08-17): the .ai leg is left out — "we still need some work on those before that leg is done." The dirty-.ai walkthrough runs later, when that leg is ready. Walked today: the TL-1016-61 nest, the novi sign, 33215.
Job 1 — TL-1016-61 (dirty customer nest DXF, with their 33199.NC beside it)
Measured from the file today: 819 polylines + 230 SPLINE entities; header says `$INSUNITS = 0` (unitless) and `$MEASUREMENT = 0` (English) — but the coordinates are plainly millimetres; header extents claim ~123.6" × 95.8" while the actual geometry measures 72.2" × 40.2". The header lies twice.
- Intake — HOLDS, and earns its keep. This is exactly why the screen states WHAT was detected and WHY: the app shows "header claims unitless/English; coordinate magnitude and part sanity say mm; using mm" and the operator confirms. The envelope check passes because it measures the geometry (72.2 × 40.2 fits 80 × 160) — a check that trusted the header's extents would wrongly reject the file. Refinement folded into the paper (§3.1): every gate judges measured geometry, never header claims.
- Intake — FINDING W1: the file IS a nest. The paper's spine assumes parts in, nest built later. The -61 arrived as a finished 48-part sheet layout. The app must ask (and propose an answer to) "what is this file: one part, several parts, or a finished nest?" A finished nest can be cut as-drawn (nest screen becomes verify-only: envelope, spacing, yield shown) or exploded into parts and re-nested. Fix: §3.1 + §3.5.
- Intake — FINDING W2: incomplete material row surfaces too late. -61 is 14 ga, and our 14 ga row carries no beam comp — under the paper as written the job sails to §3.7 and only THEN hits MaterialIncomplete. The operator deserves that news at intake: "row exists but cannot post — missing beam comp (assumed/measured values needed)." Prep may proceed; the missing number is a banner on the job from minute one. Fix: §3.1.
- Heal — HOLDS. 230 splines and faceted polylines refit to true arcs; regular-parts class (mechanical), not artwork; fidelity stated per part.
- QC — HOLDS. No islands on mechanical parts — the bridge automation correctly has nothing to do. Topology flags as usual.
- Nest — HOLDS (with W1's cut-as-drawn path). Sales can open the same sheet as a quote nest and read yield/material usage for the order.
- Cut plan — HOLDS, and validates tabbing-last. The traffic rule was MEASURED on this very job: their 33199.NC leaves the three big slugs (0.98–1.51") untabbed and its part-by-part order never returns to them (nearest other contour 0.849"); our order crossed them 3×, so our tabs were right for our order. Tab decision and cut order are coupled — which is only decidable AFTER placement, in the sheet frame. The screen shows crossings counted, and changing the order recomputes which slugs need tabs. The order ruling survives its first real test.
- Post — HOLDS via W2. Today the job cannot post (no 14 ga beam comp) — correct and deliberate; W2 just moves the warning to the front. Their 0.030" flat part-outer tabs (measured, all 48 outers) sit in the table as the first nest-tab numbers, still awaiting Jordan's go to wire in.
- Deliver — HOLDS. MetaCam-safe DXF, slug report numbered for feedback.
Job 2 — the novi sign (art, 41.1" × 47.5", 91 polylines)
- Intake — HOLDS. Inches, sane magnitude, fits the bed. Classified artwork (lettering), which drives everything downstream.
- Heal — HOLDS. The sign's history is the design's evidence: the jogs we found and killed, the gap in the text caught by autoclose, and the function-based tolerance — lettering read from feet away does not get hole tolerance. Feature classes shown as colour, operator reassigns at will.
- QC — HOLDS (new bridges path). Letter counters ('o', 'a') are floating islands: auto-bridged per Q2, every bridge flagged, operator moves or deletes; an island left unheld demands a waiver.
- Cut plan — FINDING W3: comp declaration has no home. The shop's rule is G41 as the norm and G40 on text/art, declared per job, never inferred — but no screen in the paper carries that declaration. Fix: cut plan gets a comp control per contour class (default: shop norm G41; art/text may be declared G40), recorded to the audit trail. The novi sign is the file that needs it.
- Cut plan — HOLDS on the pierce lesson this sign taught. The letter G took a full 0.150" lead yet put the crater 0.025" from finished metal — because clearance was scored along the lead, not around the pierce. The paper already scores clear air in every direction, and the under-0.300" hole fallback (centre of scrap, listed on the shop sheet) is walked and holds.
- Post + deliver — HOLDS. 1/8" MSO7 carries beam comp .007 (the one measured row) — posts clean, micro-segment cleanup keyed to it.
Job 3 — 33215 (their own 1/2" program, read as an audit target)
Measured from the NC today: O33215, MSO7,0.500, 44 pierces (M98), 44 G41 blocks, `#2007=.020(D07)`.
- This job enters the app backwards — not to reproduce it, but as the third-party audit path the paper already promises (§3.7: point nc_audit at any NC for the same job). It is also the file that proved two machine constants: D7 is the comp REGISTER at every thickness (the kerf VALUE rides in #2007), and the 4:30 start clock (its circle tabs sit at -41°). Both live in the machine profile, both editable, both provenance "measured".
- Post — FINDING W4: ASSUMED values must be confirmed at release. Our 1/2" beam comp of .020 was READ from this program — provenance ASSUMED, never confirmed by Jordan or Aristide. The paper says every table value carries provenance; the walkthrough shows where that must bite: the release screen lists every ASSUMED value the post consumed and asks the owner to confirm it (one click promotes it to "decided") or accept it for this job only. The live example is exactly this .020 — flagged since build O100 and still unconfirmed. Fix: §3.7.
- O-numbers — HOLDS. n+1 proposes the next free number per the machine's scheme; an operator typing 33215-style house numbers is the override the rule already allows, audited and collision-checked.
The eight edge cases
- DXF with no units header — walked for real on -61 (INSUNITS=0): magnitude + sanity decide, reason stated. HOLDS.
- Part bigger than the envelope — gate on measured geometry (the -61 header would have false-alarmed); oversize flags at intake AND at nest. HOLDS with the §3.1 refinement.
- Material row missing beam comp — blocks post by name; W2 surfaces it at intake. HOLDS after W2.
- Floating island — auto-bridge, flag, edit; deleting the last bridge re-flags; unheld needs a waiver, audited. HOLDS.
- Hole under 0.300" — start point moved, then furthest-from-edge scrap point, listed on the shop sheet. HOLDS.
- Sales login tries to post — the button isn't there for the role; the quote nest is saved; nothing silent. HOLDS.
- Two operators, one job — one open-for-edit at a time in the shared shop store; the second sees read-only plus who holds it. HOLDS.
- Machine swap after nesting — FINDING W5: the paper picks a machine at intake and never says what a change costs. Fix: heal/QC are per-part and survive; nest re-validates against the new envelope; cut plan re-runs (drop-through, start clock, tab tables may differ); post re-runs (dialect, comp register). The app shows what changed and why before anything re-posts. Fix: §5 machine profiles.
Verdict
The spine held: no stage was missing, no stage was in the wrong order, and the tabbing-last order passed its hardest real test (the -61 traffic rule). Five findings, all fixable on paper, all folded into the design this same commit: W1 nest-as-input path, W2 incomplete-row warning at intake, W3 comp declaration control, W4 ASSUMED-value confirmation at release, W5 machine-swap invalidation rule. Nothing found that requires a new stage or a new role. Remaining before sign-off: the partners read the findings (W1 and W4 especially — W4's live case is the unconfirmed 1/2" beam comp .020), and the .ai walkthrough runs when that leg is ready.