kerfmaster pin list · Big capabilities
recordmixedStates what the code does today. Auditable against the code — this is the only type that can go stale.
Content last changed 2026-08-31 — computed from the item itself, not typed.
Record (2026-08-25). Jordan's test: 'Testing our ability to create a dxf from a pdf', with 8ARCHBASSTL0006.pdf — a SolidWorks-era B-size drawing (title block, dim strings, leaders, border, side view, logo), NOT clean vector art. Two pieces built:
1. vec_io object streams: PDF 1.5+ /ObjStm unpacking in _objects (+ /Contents array support). CAD exporters pack the page tree into object streams, so the raw obj scan found zero paths. Illustrator regressions (test_bezfit, test_vec_board) pass unchanged.
2. drawing_extract.py — selection rules, in order: clips+fills dropped (arrowheads/logos); a stroked loop duplicating a fill's bbox is the arrowhead's stroke twin, dropped with it; stroked paths stitched end-to-end and only CLOSED chains survive (dimension/extension/leader lines dangle by construction — one gate removes them all); a loop spanning ~the page is the border; part = largest remaining loop + loops inside it, others dropped as other views. Every drop is counted in meta. Junction micro-gaps (up to 8 thou where edge lines meet corner arcs) snap closed on the LINE side — dragging a Bezier endpoint warps its curvature and the slot ends shattered into 6-7 scattered arcs before that rule.
Scale is measured, never guessed (14b stands): the drawing says NTS, and the caller passes scale after proving it. Here 24 pt/in was verified against 12 printed dims — and the proof caught the trap: the outline is drawn 16.000" while the largest printed dim reads 14.500. The dims are SLOT CENTERS 1.500 off each edge; a naive scale-to-extents would have built the part 10% small. Every printed dim measured back out of the delivered DXF lands within the drawing's own .XXX +/-.005 block (worst 5.1 thou — the source's scatter; outline drawn 7.5 thou out of square; our fit adds 0.27 thou, kinks 1e-9 deg). dimension_check.csv ships with the build.
Gaps, recorded: scale auto-derivation from the dim text (live text is readable in these PDFs) is unbuilt — operator states it after proof; view selection is largest-loop (a detail view LARGER than the main view would fool it); AUTO-snap-to-nominal is unbuilt — but for THIS part Jordan ruled 2026-08-25 ('we need to go to the called out dimensions. Go') after re-measuring build 133 in CAD (1.504 vs the 1.500 callout — the source PDF's own drawn scatter, inside its +/-.005 block): build 134 (archvac_nominal.py) reconstructs the part from the printed callouts, every dim exact by construction, 16/16 measured back at 0.0 from the delivered DXF; build 133 stays as the as-drawn record; hidden/center lines dashed as short stroke runs are dropped as strays (correct here, unproven elsewhere).
Second dialect, NX (12729704-BLANK, Jordan 2026-08-25) — RESOLVED, build 135 delivered. Metric 1:1 B-size from NX V9. Traps, all measured: page dict + MediaBox live in object streams (media_box falls back to unpacked objects); stroke widths come via ExtGState /LW + gs, not inline w; NX gaps the part edge under every crossing annotation AND lets pieces overshoot/fold, so the closed-chain gate finds no outline. drawing_extract.bridge_fragments closes it: ends paired by ANGULAR ORDER around the fragment centroid (endpoint tangents lie under folds), joins trimmed to closest approach (_trim_tail_to). 12 fragments -> one loop. The 'two unresolved holes' resolved as ONE OBROUND SLOT: the mid-left fragment's four arcs share one radius (D10.50) on TWO centers 2.00mm apart — slot 10.50 wide x 12.50 long, datum C; its width (10.45-10.60) and length (12.45-12.60) callouts carry NO diameter symbol, while the two round-hole callouts at the bottom do. The 2 unmatched crosshair detections were the letter X glyphs beside the D9 holes (an X is two strokes crossing at their midpoints — exactly the detector's gate); slot center marks are drawn tilted with the rotated dims and fail the length gate, correctly. Scale PROVED, not assumed: every one of the 14 printed dims is a hole-to-datum-B span (x or y — none dimension the outline; trim edges carry a 2mm profile tol to the digital model); least squares over all 14 gives 0.4703725 mm/pt, every span then inside its printed tolerance (worst resid 0.0055mm vs the 0.025 two-place block) and every drawn diameter within 0.0001mm of nominal. NEW drawing_extract.drop_seam_spurs: fragment ends carry stitched-on annotation crumbs that survive join-trimming as out-and-back zigzag excursions and back-tracking stubs (max 2.5mm) — their signature is a TANGENT REVERSAL (>120deg) into a short prim, which no real feature has (the part's real notch corner and the straight gap-bridges pass untouched); removal reconnects by closest-approach trim, and sub-0.2mm seam-closure jogs are absorbed by the adjacent LINE (the _snap_chain rule: lines absorb, arcs never). 22 spurs removed; remaining outline junctions: seam tangent breaks <=2.5deg inside bridged annotation gaps (no source ink exists there) plus the drawing's own 10.4deg corner. Build 135 (blank12729704_nominal.py + deliver_blank135.py): holes/slot snapped to printed callouts off datum B (2-place exact, 1-place = drawn 2-place value, per printed-dims-authoritative), outline as-drawn at the proved scale; 23/23 callouts (14 spans + 7 diameters + slot WxL) measure back from the DELIVERED DXF at delta 0.0000; DXF IS IN MILLIMETERS (flagged to Jordan — MetaCam import must not assume inches). Gaps, recorded: dxf_io.parse skips CIRCLE entities in the metacam R12 profile (deliver script scans them directly — needs a look); hole selection still keys on crosshair coincidence + the census assertions in blank12729704_nominal.py are part-specific; general auto-snap from dim text remains unbuilt.
Third dialect + first NESTED production job from this class (build 156, EXM275FG-0625, 2026-08-31). Exotic Automation rev-A drawing, inch 1:1 on B-size: exporter writes ZERO beziers — every curve chorded (worst sag 0.003in), so the page vectors are a check, never the geometry. Scale proved 1/72 in/pt against the o2.73 hole; the ambiguous 4.50 callout (overall vs bolt spacing — the two readings differ by a whole inch) resolved by measuring the dimension's OWN arrowhead positions in the vectors: 324.0 pt apart = 4.500 exactly, AT the bolt-hole centers — bolt spacing, part 5.50x3.64 overall. Part built nominal from callouts (exm275_nominal.py: R1.82 body arcs + common tangent lines to R.50 end rounds; all dims 2-place +/-.030 symmetric so mid-band = nominal), every sampled page vector within 0.0030 of the model. Nested 81 on one 48x36 sheet — first COPPER job (Rev2 C1100 0.125 row complete: min_gap 0.2 drives gap+margin, lead 0.15); min-area rotation tilts the lens shape (4.641 bbox vs 5.50 flat — print silent on grain, rotation free), meshed y-first packer 81 vs a bbox grid's 72, gap audited 0.2054 on true outlines, util 61.3%. No NC (Rev2 multi-register post wiring still queued). Fourth dialect (Navistar/LGPAF, 3683209C2 rev E, 2026-08-31): every outline fragment is an out-and-back DOUBLED run — each seg drawn twice, once per direction — so the closed-chain gate sees degenerate loops and the largest-loop view pick lands on a text box. Handler (nav209_part.py): drop reverse-duplicate segs, restitch on exact shared endpoints, one closed outline emerges. This exporter writes TRUE BEZIERS (no chording) — the outline heals through bezfit at 0.0044mm dev, 0.001-deg kinks. Scale proven 1:1 by Kasa fit on the drawn hole beziers (o10/o9 exact) + grip width 32.00; callout binding MEASURED: the 103/131/162.2 stack runs from hole 1's centerline (162.2 exact). Two phantom-measurement traps recorded: the raw chain bbox includes bezier CONTROL points (0.29mm fake left overhang, 200.45 fake height vs true 198.21), so extents and datums come from fitted geometry only; and drawn-vs-callout conflicts (holes 3/4 sit 0.48/0.26mm below the callout stack but concentric with their scallops) resolve to the internally consistent drawn geometry, reported, operator overridable. Delivered as build 159: 190 pcs on one 60x120 3/8 mild-steel sheet (qty-limited fill-Y-first tooled nest via split_parts, Rev2 row: gap 0.3 + derived margin, lead 0.375, clear measured 0.38, slug-tab limits 0/0 = never tab, rotation free — no grain callout; remnant slab 71.4in). O33286 reserved; NC gated on the Rev2 multi-register wiring. 3683175C1 (WIP, 2026-08-31): harder variant — drawn 2:1 (proven: side view 5.0mm/58.0mm exact; '20'/'4' dims measure 20.00/4.00), fragments doubled at DIFFERENT lengths (collinear-overlap merge added) and gapped ~4.5pt at annotation crossings. Seeded tangent-continuity growth closes the outer loop; heals at 0.0034mm dev, 0.04-deg kink; radius census R2/R10/R20/R5/R13/R5/R50/R2 all exactly on callouts. NOT yet a pass: the R12.5 upper-body cutout is unbound (interior loop vs top notch), extents measure 39.08 x 59.82 vs the 40/58 callouts (datum question), R3.1 slot loop not integrated. nav175_part.py is the assembly; native-CAD ask went to Jordan (3A76 ratified lesson). 3683148C1 (WIP, 2026-08-31): same doubled+gapped 2:1 dialect but the outline is sparse CHORDED LINES (third flavor: chords like EXM275, gaps like 175 — 8-14pt at annotation crossings, arrowhead crumbs inside the bridge radius). Seeded growth strands; needs an annotation-classifier pass first (drop dashed centerline families, long axis-aligned dim furniture, len<3 crumbs) before chaining. nav148_part.py holds the assembly state. Print facts recorded: SYMMETRICAL ABOUT CL (free independent audit once assembled), o7 +0.2/-0 uneven -> mid-band o7.1 per tolerance-center-default, radius targets R53.9/3X R15/R10/2X R3/R12.5, thickness callout 6mm on 1/4in stock.