# Pine Assembly Workshop: bill of lading, packing list, customs and proof-of-delivery documents

Everything a small shipper generates for one week of outbound freight: the shipment export, the bills of lading and the carton-level packing list, the rate sheet and the freight it produces, the carrier invoice, proof of delivery, the tracking event stream in three shapes, an EDI advance ship notice and a customs entry for the round that crosses a border.

All parties, amounts and identifiers are fictional. Fixed snapshot: 2026-09-08. Every record is derived from the shared operating model `inventory-manufacturing`, so identifiers join across this set and across the business-kit fixtures that use the same model.

## Reconciliation identities this set asserts

- gross_weight_kg equals parcels times 12.200 on every shipment, totalling 683.200 kg.
- The 4 bills of lading account for all 56 pieces, and the packing list describes exactly 56 cartons.
- Rating the shipments from rate-sheet.csv reproduces freight-charges.csv line for line and totals 861.19 across the 13 billable shipments.
- Goods 1360.00 plus freight 388.08 equals the 1748.08 customs value, on which duty and import tax come to 133.29.
- Parcels held on open exceptions (12) equals parcels shipped minus parcels delivered (56 - 44).

## Files

| File | Format | Validity | What it is |
| --- | --- | --- | --- |
| `shipments-export.csv` | csv | valid | Shipment export CSV |
| `shipments-export.json` | json | valid | Shipment export JSON |
| `shipments-export.xlsx` | xlsx | valid | Shipment export workbook |
| `bill-of-lading-register.csv` | csv | valid | Bill of lading register |
| `bill-of-lading-BOL-2026-0001.pdf` | pdf | valid | Bill of lading BOL-2026-0001 PDF |
| `bill-of-lading-BOL-2026-0004.pdf` | pdf | valid | Bill of lading BOL-2026-0004 PDF |
| `packing-list.csv` | csv | valid | Packing list by carton |
| `packing-list-piece-count-mismatch.csv` | csv | invalid | Packing list whose carton count is short of the bill of lading |
| `packing-list-BOL-2026-0003.pdf` | pdf | valid | Packing list PDF |
| `rate-sheet.csv` | csv | reference | Carrier rate sheet |
| `rate-sheet.json` | json | reference | Carrier rate sheet JSON |
| `freight-charges.csv` | csv | valid | Rated freight charges |
| `freight-charges.xlsx` | xlsx | valid | Freight rating workbook |
| `carrier-invoice-fuel-surcharge-basis.csv` | csv | invalid | Carrier invoice whose fuel surcharge uses the wrong basis on one line |
| `carrier-invoice-CARR-2026-08.pdf` | pdf | valid | Carrier freight invoice PDF |
| `proof-of-delivery.csv` | csv | valid | Proof of delivery register |
| `proof-of-delivery-SHIP-07.pdf` | pdf | valid | Proof of delivery PDF |
| `hs-code-table.csv` | csv | reference | HS tariff code reference |
| `commercial-invoice.csv` | csv | valid | Customs commercial invoice lines |
| `customs-declaration.xml` | xml | valid | Customs entry XML |
| `commercial-invoice-CI-2026-0004.pdf` | pdf | valid | Customs commercial invoice PDF |
| `tracking-events.csv` | csv | valid | Shipment tracking event export |
| `tracking-events.jsonl` | jsonl | valid | Shipment tracking events as newline-delimited JSON |
| `tracking-events-out-of-order.csv` | csv | recoverable | Tracking events out of order with a duplicated delivery scan |
| `advance-ship-notice-856.edi` | edi | valid | EDI X12 856 advance ship notice |
| `delivery-exceptions.csv` | csv | valid | Open delivery exceptions |
| `route-plan.csv` | csv | valid | Delivery route plan and capacity |
| `vehicle-utilisation.csv` | csv | valid | Vehicle utilisation report |
| `logistics-reconciliation.json` | json | reference | Logistics reconciliation assertions |

## Deliberate defects

These files are broken on purpose. Each one is a single named mutation of a correct file in the same directory, so a parser under test can be checked against both.

- **`packing-list-piece-count-mismatch.csv`** Three of the four bills reconcile. BOL-2026-0003 does not: the packing list yields 12 pieces against a declared 16, a shortfall of 4 cartons and 12 lines. A loader that trusts the register without counting the list ships a short container.
- **`carrier-invoice-fuel-surcharge-basis.csv`** The footer check passes: the 13 lines really do sum to 859.63. Re-rating from the rate sheet fails on SHIP-07 only, which is 1.56 short because the surcharge omitted the 24.00 base charge. An invoice audit that only checks that the lines add up accepts the whole document.

## Notes and limits

- Every parcel carries one DESK assembly kit. The kit is the two-level bill of materials of the same operating model exploded to its leaves: 4 LEG, 1 PANEL and 12 SCREW.
- The customs entry covers the BOL-2026-0004 round only. Nothing in the shipment export marks that round as crossing a border, which is why the entry, the commercial invoice and this README all name the bill of lading explicitly rather than leaving it to be inferred.
- advance-ship-notice-856.edi uses CRLF line endings and a tilde segment terminator because that is what X12 interchanges carry in practice. Every other text file in this set is LF.
- tracking-events.jsonl is newline-delimited JSON, so the file as a whole is not a valid JSON document. That is the format, not a defect.
- The tariff codes, duty rate and import tax rate on the customs entry are illustrative fixture values. They are not tariff advice and the entry is not a filing.
- Carrier, consignee and receiving contacts are fictional.
