Six engraved-coaster orders with three deliberate problems

Start with: examples/sif-batch/coaster-orders.csv (6 fictional orders: one with quantity 2, one name longer than 20 characters, one that starts like a spreadsheet formula, one with an empty name) and examples/sif-batch/coaster-mapping.json (Name required, max 20 characters; Date optional; Font required; Copy number).

1. Start SifBatch with node server.mjs and open http://127.0.0.1:8787/ in Chrome.
2. Under “Generic CSV / TSV”, choose coaster-orders.csv, then click “Continue to mapping →”.
3. Click “Import mapping…” and choose coaster-mapping.json, then click “Confirm mapping and validate →”.
4. Review the three BLOCKED rows, then click “Proof & export →”.
5. Click “LightBurn CSV only” and “Download batch package (.zip)”.

Expected result: Validate shows 6 records: 3 ready, 0 with warnings, 3 blocked, 4 LightBurn rows. Blocked reasons: “"Name" has 35 characters; the limit is 20.”, the formula rule for =1+1 (“"Name" starts with a spreadsheet formula character …”), and “"Name" is empty.” The CSV (SifBatch_Production-batch_lightburn-merge.csv) has 4 lines, the two-coaster order expanded to copies 1/2 and 2/2: “Hanna & Theo,21.06.2026,Great Vibes,1/2”. The batch ZIP contains lightburn/merge.csv, lightburn/COLUMNS.txt, proof/proof-sheet.html, reports/validation-report.csv and .json, mapping/sifbatch-mapping.json, originals/coaster-orders.csv, README.txt and manifest.json.

All examples are fictional or synthetic.
