← back to pin list

14c. The check list — what is fully automated, what needs a human

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.

A. Fully automated — file integrity

B. Fully automated — scale and machine limits

C. Fully automated — geometry health

D. Automated detection, human decision

E. Cannot be automated — intent

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.