23de433bdb
onPhotosReady built the draft photos from the raw captured JPEGs and dropped every PNG the session had already produced, so processedBlob was never set on the M2 path (only the legacy PhotoImport path set it). photoUpload then omitted the processed multipart field, slab_photos.processed_blob stayed NULL, and publish.py - which selects WHERE processed_blob IS NOT NULL - uploaded zero images to Woo. The verified SLAB-UAT-901 draft had images: 0. Attach results.inventoryPng to the calibration photo and each successful batchApply entry to its sibling, and add the dimension-overlay copy as its own photo adjacent to the calibration one (REVIEW-5).