display:none only — element IDs, JS handlers and endpoints stay intact,
so re-enabling is dropping three inline styles. Default batch mode is
manual for the POC, so operators shouldn't see DO/OCR controls.
Both the static modal HTML and the confirmStartBatch() manual-branch
override now say 'Pastikan truk terparkir sempurna di posisi pemuatan
sebelum memulai batch.' Guidance only — manual mode still counts on
static geometry with no truck-presence check.
- canonical_plate (uppercase alnum, strips space/dot/hyphen) at all plate
write sites; pretty_plate for render (history, XLSX, operator tile) so
B 1234 XYZ and B1234XYZ are one plate everywhere
- group_dos_by_plate compares canonical plates -> no false mixed_plates
- warn-only (never blocking) plate format hint in operator + monitoring modals
- batch.default_mode: manual (auto merged truck loads when a sack sat in the
counting ROI); operator banner explains plate -> start -> stop
- docs + AGENTS known-limitation note; 85 tests pass