Manufacturing files and sheets complete and consistent – 4 codes.
FILES.sheet polarity sheet
error
Every board gets a polarity sheet drawn from the Gerber data: each polarised part with copper, silkscreen, pad numbers, pin roles and nets, and the signs GEO.mark pairs with it, also beyond the footprint.
- Why
- Polarity at the footprint is what neither the graph nor the DRC can see: a library footprint once printed '+' next to the cathode pad. The sheet is what the second datasheet check (M-1) compares with the datasheet drawings, and what is compared with JLCPCB's assembly preview (M-2).
- What to do
- Read the sheet against the datasheets. A wrong pad is fixed in the graph by swapping the nets and roles, not in the footprint.
- Sources
- edakit handbook 4.4 and 8.1
Replaces P-2
FILES.manifest files of one run
error
The upload files of every maker of [cart] makers – JLCPCB's Gerber ZIP, BOM and pick-and-place file without [cart] – come from the same gate run, with their SHA-256 in fab/manifest.json; a file the planned maker takes missing fails, one only another maker takes is a warning named with that maker, and edakit cart prepare stops for it.
- the upload files of every maker of
[cart] makers from the same run – JLCPCB's Gerber ZIP, BOM and pick and place without [cart], bom_<b>_mpn.csv, cpl_<b>_<maker>.csv and odb_<b>.zip for the makers that take them; fab/manifest.json with SHA-256 per file, the state hashes and the fab hash (8.2); a missing file of a maker other than the planned one a warning
- Why
- Files from different states fit together only on paper; the manifest is the record of what was ordered.
- What to do
- Run the gate again and upload only from its folder.
- Sources
- edakit handbook 8.3
Replaces F-4
With [order] (of the board file or of edakit.toml) or [cart]: per maker of [cart] makers – a finding fails for [cart] maker, JLCPCB without [cart], and warns for every other maker – every field's value is one the maker's form offers (its profile edakit/makers/<maker>.toml; a list the profile marks as read only in part leaves another value unchecked), no combination the profile excludes; the remark fits the form (JLCPCB: at most 200 characters, all ASCII); the board's thickness_mm is a thickness of the form (JLCPCB, FR-4, 2 layers: 0.4, 0.6, 0.8, 1.0, 1.2, 1.6, 2.0 mm); the silkscreen colour is the one the maker prints on the solder mask colour (JLCPCB: black on a white mask, white on every other); mark = "specify" has the maker's placeholder (PCBWay: WayWayWay) on a silkscreen layer, at least its least height in [[silk.texts]] (a height not given there is a warning) – at a maker whose form offers no order number at its place (JLCPCB since May 2026: "Remove Mark" or a 2D barcode) mark = "specify" is a value the form does not offer; a placeholder with another mark is a warning; while the maker's profile reports its order number gone (rules.placeholder_gone), its placeholder on the board or mark = "specify" is a warning; another maker's placeholder on the silkscreen is a finding – PCBWay's WayWayWay at any other maker: the maker prints the letters; a former placeholder (rules.former_placeholder: JLCPCB's JLCJLCJLCJLC, its order number gone since May 2026, seen on its form by ordering step 0 on 2026-10-31) is a warning at every maker, JLCPCB too: the letters are printed as text; an assembly class with fewer tooling holes than the profile names is a warning (JLCPCB: Economic, 2); [order] customs, the shipment's customs category with its HS code, is an entry of the maker's form (JLCPCB's "Product Description") – not set where the form asks it, it is named as information: the owner chooses it at the cart. Independent of the maker: [order] layers and size_mm, where set, are those of the Gerber files; delivery = panel_by_customer fails (the run is one board); pcba_quantity is at most quantity, and another number than [project] quantity is a warning; no copper of either side lies within tab_copper_mm (1.0 mm) of a declared tab zone of the outline, measured on the Gerber files; a finish with lead (HASL that is not lead-free) fails for purpose.use sale or without a purpose, warns for gift and is a note for private (grade lead, as ORDER.finish grades it at the cart). The outline stretches free of copper are listed, a provisional profile is named, and fab/<board>/order.md holds every field of the planned maker's form with its value and where it comes from. Without [order] and [cart] no order.md is written: a board with [tooling] holes and assembled parts, on a class the planned maker asks tooling holes for (JLCPCB: Economic), is a warning (grade tooling) – no file tells the maker that the holes are the customer's.
- with
[order] (board file or edakit.toml) or [cart] (8.4), per maker of [cart] makers – a finding fails for the planned maker and warns for every other one (grade other_maker): every field a value the maker's form offers (its profile), no combination it excludes; the remark at most 200 characters, ASCII (JLCPCB); thickness_mm a thickness of the form – JLCPCB 0.4, 0.6, 0.8, 1.0, 1.2, 1.6 or 2.0 mm; the silkscreen colour the one the maker prints on the mask colour – JLCPCB black on white, white on every other; mark = "specify" with the maker's placeholder (PCBWay: WayWayWay) on a silkscreen layer of pcb.json, at least its least height in [[silk.texts]] (no height there: warning) – JLCPCB offers no order number at a place since May 2026, so mark = "specify" is not a value of its form; the placeholder with another mark (warning); while the profile reports the maker's order number gone, its placeholder or mark = "specify" (warning); another maker's placeholder – PCBWay's WayWayWay – on the silkscreen; JLCPCB's former placeholder JLCJLCJLCJLC at every maker (warning: printed as text); fewer tooling holes than the class needs (warning: JLCPCB drills its own); customs an entry of the maker's form – JLCPCB's "Product Description", category and HS code –, not set where the form asks it (information: the owner chooses it at the cart). For every maker: layers and size_mm where set = the Gerber files; panel_by_customer (fail); pcba_quantity at most quantity, another number than [project] quantity (warning); no copper of either side within tab_copper_mm of a declared tab zone, measured on the Gerber copper against the Gerber outline (fail, with the distance and the position); a finish with lead, HASL that is not lead-free – fail for sale or no purpose (RoHS), warning for gift (REACH Art. 33), information for private (grade lead, as ORDER.finish at the cart; support, not legal advice); the outline stretches free of copper and a provisional profile (information). Without [order] and [cart]: [tooling] holes on an assembled board of a class the planned maker asks tooling holes for – JLCPCB Economic – warn (grade tooling): no order.md tells the maker they are the customer's
- Why
- The order form fields that depend on the board are filled in by hand while ordering: a cart with 'Remove Mark' prints the placeholder as text, a remark of 202 characters does not fit the field, a remark that allows tabs where a track runs 0.45 mm from the edge lets the tab cut it, and an Economic order without own tooling holes gets JLCPCB's, possibly on a visible edge – as does one with its own holes when the form is left at "Added by JLCPCB": in the walkthrough of handbook 17 no file said that the round board's holes were the customer's until its [order] got a remark. Each was found late in pytree, the tooling holes only in the quote. Thickness and colours stood in no file: the form's defaults (1.6 mm, green, white print) went into the cart unless someone remembered otherwise, while the mechanical model took the board file's thickness_mm. A thickness the form does not have (1.57 mm, the 62 mil of US fabs) cannot be ordered as drawn, and the print colour follows the mask: in pytree a white mask was an open question for one board whose silkscreen artwork was drawn for white print – JLCPCB prints black on a white mask. With several makers to choose from, a release must describe one board whichever maker builds it: edakit's defaults are the same for every maker, the profile only translates, and a value a maker does not offer, or a placeholder printed as text, is found at the release – for the maker the board is planned for as a failure, for a second maker as a warning, so that a setting only the second one lacks does not block the first. A leaded finish was found only at the cart (ORDER.finish), after the sign-offs and the published release; the finish is in the fab hash, so the board as released holds the lead, and the release says so.
- What to do
- Correct [order] – a value the maker's form offers (edakit cart fields lists the fields and the maker's words), a shorter ASCII remark, mark = "specify" with the placeholder (or another mark; at JLCPCB mark = "remove" or a barcode), the silkscreen colour the maker prints on the mask (or another mask), tab zones only on stretches order.md lists as free, or the copper moved back from the edge – or add [tooling] holes; set thickness_mm to a thickness of the form (the mechanical model takes the same value). A placeholder at a maker without one: take the maker out of [cart] makers, or the placeholder off the board. JLCPCB's former JLCJLCJLCJLC: take it off the silkscreen (mark = "remove", or barcode = "qr" or "datamatrix" for traceability). Tooling holes without [order] or [cart]: add [order] to the board file – a remark such as "2 tooling holes added by customer" – so that order.md says "Added by Customer". A finish with lead: finish = "LeadFree HASL" or "ENIG" in [order]. A warning the owner wants (JLCPCB's tooling holes, a hand-placed placeholder, a second maker's lack, a gift with lead and the statement at hand) is accepted in the sign-off file.
- Sources
- edakit handbook 8.4
- edakit handbook 15.1 and 15.2 (RoHS, REACH Art. 33, graded by purpose); Directive 2011/65/EU (RoHS 2) Annex II: lead 0.1 % by weight in homogeneous materials
- The review at the order of 2026-10-30 (implementation plan 5.5): the agent regulatory-reviewer graded leaded HASL block at the cart and named lead at the release a check candidate; the owner's decision of 2026-11-01: at the release, graded as at the cart (grade lead)
- edakit handbook 17.11: the walkthrough's M-5, note 3 – without [order] no file said that the tooling holes are the customer's (grade tooling)
- JLCPCB order form (Mark on PCB, Remark, PCBA Type, Tooling holes); pytree's order of 2026-10-25
- JLCPCB PCB Manufacturing Capabilities (read 2026-10-28): solder mask colours Green, Purple, Red, Yellow, Blue, White, Black; FR-4 thicknesses 0.4/0.6/0.8/1.0/1.2/1.6/2.0 mm, 2.5 mm and above for 12+ layers only – https://jlcpcb.com/capabilities/pcb-capabilities
- JLCPCB online quote (read 2026-10-28), PCB Color and Silkscreen: 'For most colors, the silkscreen is printed white. Only for white solder mask, the silkscreen is printed black.' – https://cart.jlcpcb.com/quote
- pytree: the cart of 2026-10-24 with PCB Thickness 1.6mm, PCB Color Green, Silkscreen White (the form's defaults), and its silkscreen concept: with a white mask (an open question for the snow tree) JLCPCB prints black, so the artwork had to look right in black too
- JLCPCB Quote & Order, "Product Description" (ordering step 0, 2026-10-31: a required cascader of category and entry with its HS code – tests/fixtures/makers/jlcpcb/step0_2026-10-31.md); the owner's decision of 2026-11-01: a key of [order], outside the fab hash
- Ordering at the manufacturer (docs/concepts/done/ordering.md, decided 2026-10-30): every field of the form as a key with edakit's default, the maker's profile, checks per maker; edakit/makers/jlcpcb.toml, recorded by ordering step 0 on 2026-10-31
- JLCPCB, "How to remove order number from your PCB" (last updated 2026-05-22; read in search summaries on 2026-10-30): the order number not available since May 2026, JLCJLCJLCJLC not to be added, a 2D barcode or a serial number instead – https://jlcpcb.com/help/article/how-to-mark-on-pcb; the owner's decision of 2026-10-30: FILES.order warns until ordering step 0 has seen the form
- JLCPCB's quote page as read by ordering step 0 on 2026-10-31, signed in (tests/fixtures/makers/jlcpcb/): Mark on PCB offers "Remove Mark" (preselected) and "2D barcode (Serial Number)" only, with 1 and with 2 layers – the order number is gone; JLCJLCJLCJLC becomes rules.former_placeholder
Replaces F-6