Skip to content

Manufacturing Evidence Adapters

Manufacturing evidence adapters turn generated fabrication files into proof-pack evidence. The directory adapter scans an output directory and records:

  • Gerber files;
  • Excellon drill files;
  • BOM CSV;
  • pick-and-place CSV;
  • manufacturing manifest JSON;
  • manufacturer-aware DFM readiness JSON;
  • ZIP bundles;
  • optional ODB++ and IPC-2581 attachments when present.

Each artifact record includes a relative path, kind, file size, and SHA-256 hash. Gerber and Excellon files receive smoke validation so CI can fail early when an exporter emits malformed or incomplete files.

Versioned fabrication and assembly profiles

A FabProfile is a versioned capability contract. Its deterministic SHA-256 identity covers the manufacturer, source/freshness metadata, board dimensions, trace and spacing limits, copper options, drill and via limits, annular ring, solder-mask and silkscreen limits, special fabrication capabilities, and assembly limits.

Assembly fields cover minimum component and BGA pitch, optional stencil aperture and component-height limits, double-sided assembly support, and through-hole assembly support. Built-in profiles declare published values and leave unpublished numeric limits null rather than inventing them. Profile metadata remains evidence captured from published capability information; it is not a live quotation or manufacturer approval.

DFM readiness report

generate_manufacturing_bundle(...) always writes <design>-dfm-readiness.json and includes it in the ZIP package. When a profile is selected, the report contains:

  • profile name, manufacturer, version, verification date, and profile SHA-256;
  • the classified DFM and assembly findings;
  • hashes of the pre-archive manufacturing artifacts;
  • explicit human-review reasons and approved skips;
  • a top-level readiness status and autonomous-release blocking flag;
  • non-claims that preserve the distinction between evidence and manufacturer approval.

The status vocabulary is intentionally small:

Status Meaning
hard-fail A profile or assembly limit is violated and autonomous release is blocked.
warning No blocking violation exists, but the finding remains visible to reviewers.
approved-skip No manufacturer profile was run; an authenticated external approval ID and rationale explicitly accepted the skip.
human-review-required A profile is missing, stale, or required geometry/assembly evidence is unavailable. Autonomous release is blocked until reviewed.
pass Modeled fabrication and assembly checks passed for the selected profile.

A profile-less export does not silently pass. It produces human-review-required unless both an approved skip rationale and approval identity are supplied.

Proof-pack integration

ManufacturingEvidenceBundle schema 2.1 preserves the profile version and digest, readiness status, readiness-report digest, validation results, and every collected artifact hash. ManufacturingProofEvidence.from_evidence_bundle(...) copies that identity into proof-pack metadata.

Synthesis proof generation remains backward compatible: manufacturing evidence is attached when a fabrication profile or approved profile skip is explicitly requested. The default proof path does not silently select a manufacturer. Profile-bound proof packs include the readiness report as a hashed manifest artifact.

CI exercises the same readiness gate with three generated board families: an ESP32 I2C sensor, an RP2040 USB HID peripheral, and an STM32 RS-485 node. These fixtures verify report generation and evidence shape; they do not claim physical validation or manufacturer acceptance.

Current limitations

  • Gerber/Excellon smoke validation checks basic syntax markers only.
  • Assembly checks depend on modeled footprint geometry, placement, side, height, and pad pitch. Missing inputs become human-review-required, not pass.
  • Silkscreen checks only evaluate modeled stroke widths; full text-to-pad and panelization analysis remains outside this adapter.
  • ODB++ and IPC-2581 records can be attached to proof packs, but full external parsers remain provider-specific.
  • The report is not manufacturer approval, a fabrication quotation, electrical-safety certification, or evidence that a board has been physically assembled successfully.

KiCad review exports

*-odb.zip is classified as odbpp before the generic ZIP/bundle rule, and .glb is classified as mechanical_review. This lets retained KiCad 10 review-export artifacts flow through the same manufacturing evidence inventory and proof metadata used by Review Studio.

The classification is intentionally conservative:

  • an attached ODB++ archive yields odbpp_status=attached; archive safety/structure is still established by the KiCad jobset oracle before retention;
  • an attached GLB yields mechanical_review_status=attached-degraded; attachment does not establish model resolution, enclosure fit, component height, or assembly clearance;
  • retained ODB++ and GLB SHA-256 values are run-bound integrity evidence; cross-run comparison uses the oracle structural inventory/shape digests and records byte_determinism=not-guaranteed;
  • missing model references and unverified model resolution remain visible limitations and cannot be converted into a complete mechanical-review claim.

The CI bundle is kicad-review-exports/. Its root and per-family index.html files link only to retained relative artifacts; review-index.json records the machine-readable evidence and limitations.