kerfmaster pin list · Preflight — how files come in
intentmixedWhat we want to build. Never claimed the present, so it cannot be stale — and must never be read as a description of the code.
Content last changed 2026-08-21 — computed from the item itself, not typed.
Contract — Intake stage
This contract describes a stage we intend to build — it is NOT a description of the code.
takes customer-file
makes identified-file
fails if A question of intent answered by automation; a check listed as automated that a human actually does.
Contract last changed 2026-08-06 — computed, not typed. Dated separately from the text above, so neither date can speak for the other.
Split deliberately into what a machine can decide alone and what it can only flag. Anything in the second list that gets silently auto-decided is a future scrapped part.
⚑ Build state, 2026-08-03. This list is the DESIGN of the intake gate, not a description of one. It is typed intent and every "BLOCKING" below is a decision about what the gate should do, not a report of what it does. What exists today, with the code behind it: %PDF magic bytes and legacy-PostScript .ai rejection (vec_io.py:278-279), chained ASCII85+Flate decoding, fill-vs-stroke op counts and clip-path counts (vec_io.py:290-293), live-text detection (vec_io.py:284), open contours + duplicates (qc.analyze), sub-kerf specks (vec_pipeline.py:151), island nesting depth (emit._depths), the 80"×160" envelope (vec_pipeline.envelope_check) and the scale gate (ScaleUnknown, item 14b). Not built at all: self-intersection detection, minimum-feature-vs-kerf, encryption check, producing-application check, embedded-raster (Do) flag, flattened-export detection, and magic-byte sniffing for SVG or DXF. Nothing in the list BLOCKS except the scale gate and the envelope; everything else that runs is reported.
vec_io.read_pdf_paths requires %PDF and raises "not a PDF-backed file (legacy PostScript .ai?)" otherwise (vec_io.py:278-279). <svg and DXF section markers are not sniffed — intent.qc.analyze emits branch and dangling flags). Self-intersection detection does not exist: grep -rn intersect cadmaster/*.py returns nothing, so a self-crossing contour posts silently and the comp side is undefined on it. This line read "QC step 1, done" — the most dangerous claim in the list, and the reason this pass exists.vec_io.py:284, live_text = any(re.search(r"\bBT\b", s) for s in streams). Note the operator: it is the BT text BLOCK, not Tj/TJ as this line used to say. It is reported only (build_vec_board.py:339) — a file with live type posts today. BLOCKING is intent.f, f*, B vs S, s) — feeds the traced-raster test below.Do) — flag.W n) — ignored as artboard clipping, but reported as ignored.Design rule for the whole list: every automated check either passes, blocks with a plain-English question, or produces a note on the report. There is no fourth behaviour, and in particular there is no "quietly fix it".
⚑ Build state update, 2026-08-21 (supersedes the 2026-08-03 block above where they disagree): preflight.py wires the checks into the actual gate with the three 14-outcomes. Newly built: magic-byte sniff for DXF (text + binary sentinel), DWG (AC10xx), PDF/.ai, SVG, PNG/JPEG/GIF/BMP raster, plus extension-vs-content mismatch reporting; empty/undecodable-file blocking; contains-no-geometry blocking; stated-finished-dimension cross-check — BLOCKING on mismatch outside ±2% (assumed tolerance, provenance in the file), with the rotated-90° case caught and asked about rather than blocked; the 80×160 envelope BLOCKING in either orientation; flattened-export detection (14a — no native curves + 200-plus tiny lines → “do you still have the original?”); exactly-doubled-segment scan, O(n) by endpoint+centre hash (found 349 real doubled semicircles in TL-1016-82 that the sampled overlap scan under-reported as 1; the O(n²) partial-overlap scan measured 12 s on the novi lettering and deliberately stays a heal-stage QC job, the report says so); open contours / gaps / dangling / branches classified against the pin-9 auto-close thresholds; sub-kerf specks and under-standoff holes by loop longest-dimension (the report itself states this is a PROXY — true slot-width vs kerf is still not measured). Still not built: self-intersection, encryption check, embedded-raster (Do) flag, producing-application capture, and running .ai/PDF/SVG through this flow — vector art is recognised and BLOCKS with the scale question, routing note included, until the vector front-end is wired in.