REPRODUCIBLE TEACHING RESOURCE · V1 · 4 OCTOBER 2026

A Gerber package can draw and still disagree.

Compare an original export with a missing board outline and a misleading copper-layer filename. Download the files, repeat the checks and see what a successful preview leaves unconfirmed.

Download all three examples · 309 KiBOpen Gerber viewer

ZIP SHA-256: 78b4d377bb131dad50aa43f0a4e8f7e5295e8ea3efe26400dc50ccf3dc6e6764

Original synthetic teaching data. These are real KiCad 10.0.6 exports of a deliberately non-functional design. The six fictional components have no routed electrical circuit. The board has not been manufactured or physically tested, and the files are not a fabrication or assembly release.

Three controlled examples

The original export contains nine Gerber layers and one job file. The second example removes only the outline file. The third changes only a bottom-copper filename; every retained Gerber file keeps its original bytes. All three include a short explanation and reuse license.

Example ZIP inside the packChangeRecorded desktop 2D resultParser warnings
01-original-export.zipNo change to any of the 10 native export files.9 drawn layers; one parsed outline measuring 35 × 25 mm.81
02-missing-outline.zipRemove Edge_Cuts.gm1 from a copy.8 drawn layers. The viewer explicitly reports that board size is unconfirmed; graphics bounds are not board dimensions.74
03-filename-x2-conflict.zipRename the bottom-copper file to misleading-F_Cu.gtl; leave its X2 metadata unchanged.9 drawn layers after file selection. The renamed file is labelled top copper alongside the original top-copper file.81

The outline is a 35 × 25 mm centerline rectangle with a 0.05 mm stroke. The original and filename-conflict examples show approximate full graphics bounds of 35.050 × 25.050 mm and parsed outline bounds of 35.000 × 25.000 mm. Neither is a physical board measurement.

What the filename conflict demonstrates

The renamed file still contains %TF.FileFunction,Copper,L2,Bot*%: the data identifies bottom copper, while the .gtl extension suggests top copper. In the viewer version checked on 4 October 2026, layer classification uses the filename and extension; X2 FileFunction metadata does not participate in classification.

No automatic conflict detection. The viewer does not compare the name with the X2 declaration to flag this mismatch. Its top-copper label is a result to inspect, not confirmation that the underlying data is top copper. Compare names, file contents and export settings independently.

The 81 / 74 / 81 parser warnings are retained. They report ignored X2 attribute blocks such as TF, TA and TD, including FileFunction and FilePolarity. A drawn image therefore does not establish complete X2 support or copper/polarity fidelity.

Try the examples

  1. Download and unzip the complete pack. The three example ZIPs are in its downloads/ folder. Open the Gerber viewer and load one example at a time. Imported file contents are processed locally in the browser.
  2. Load 01-original-export.zip. Check the 9-layer result, top and bottom copper names, outline bounds and parsing notes. Read the warning details before interpreting the drawing.
  3. Load 02-missing-outline.zip. Notice that 8 layers still draw. Confirm the unconfirmed-board-size message rather than treating the remaining graphics bounds as a board outline.
  4. Load 03-filename-x2-conflict.zip. If prompted to select files, intentionally retain both .gtl files. Inspect the misleading-F_Cu.gtl label, then open that file in a text editor and compare it with its unchanged Copper,L2,Bot declaration.
  5. Compare each directory with its .gbrjob file. The job data was not edited: in the faulty examples it still refers to the removed or renamed file. This disagreement can coexist with a successful preview.

Source, evidence and reproduction

The complete pack includes the original KiCad project, schematic, board, local symbol and footprint; frozen native Gerber exports; the three example ZIPs; independently specified expected results; file hashes; parser results; desktop browser captures; and reproduction scripts. The newly authored teaching content is available under the included MIT license. It contains no customer PCB or copied stock footprint, and it does not imply KiCad endorsement.

From the unpacked folder, use Python 3 to rebuild the example ZIPs and verify their contents and saved evidence:

python3 scripts/build_pack.py
python3 scripts/validate_packages.py
python3 scripts/verify_browser_evidence.py

These commands verify the captured files and evidence; they do not perform a new live browser test. A separate optional replay fetches the recorded public parser and classifier only if their hashes match, then runs the Node-based static check. The download does not redistribute those production scripts. Exact instructions and the original KiCad export command are included.

The archive’s NOT_PUBLISHED fields describe the preparation and validation snapshot captured when it was packaged. They are retained unchanged for reproducibility; this page is the publication reference for this version.

What remains outside these checks

This exercise does not verify a functional circuit, approved footprints, physical dimensions, electrical clearance, net connectivity, mask polarity, assembly, or manufacturability. No drill files are expected for this fictional all-SMD geometry; that is not permission to omit required drill data from a real project.

The recorded browser evidence covers three desktop 2D loading outcomes and their reported layers, labels and dimensions. It is not a full viewer-control audit, 3D validation or real-device test. Read RIGHTS-AND-LIMITS.md, scenario-expectations.json and the recorded results before adapting the examples.

Related: KiCad BOM and placement export examples · Gerber viewer · All engineering tools