Tested the handover against live PB on 2026-10-27. The read path works as
written; four defects fixed:
- The filter only caught item_status = 'assigned'. The collection_pool
tab group is [collection_pool, assigned, ready_delivery] and
order_items.confirm_collected accepts collection_pool or assigned, so
a line stuck in either was invisible to the sweep.
- Stock POs were not covered at all. Stock lines live in
stock_purchase_items and their photos on the parent
stock_purchases.additional_attachments.
- The write path hand-rolled order_items.update + update_status, which
skips the eligibility check, the over-collect guard, drv_collected_at
and the actor-stamped audit note. Now uses
order_items.confirm_collected / stock_purchase_items.mark_collected.
- No de-duplication: the NSS M24 line is still 'assigned' with a photo,
so every run would re-report it. Added a 'Waiting on a person' list.
Also noted that no cron runs this yet, that order_items_attachements is
multi-file (read every filename), and added a supplier check.