← All tests

POS products render — LEFT JOIN fix STAGING

Staging-env fix. Verified on demo.staging 5/5 + staging smoke 5/5.

demo.staging's POS showed "No active products" despite a healthy catalog. Root cause: both POS product queries fetched product_tmpl_id via a correlated subquery ((SELECT product_tmpl_id FROM cafe.product_product WHERE id = cafe.products.id)), which fails under the Neon-backed staging Worker's Hyperdrive — the loader's unwrap() then swallowed the rejection into an empty list. Prod (Supabase) tolerated it, so get-coffee was unaffected. Fix: read the column via a LEFT JOIN on product_product.id = products.id (1:1) instead — equivalent and robust. Proven equivalent (JOIN value ≡ subquery value, 0 mismatches) on staging AND read-only against prod Supabase (get-coffee 121 rows, lumiere 25 rows). No schema/migration change.

Products now render

POS register grid rendering products
The register grid on demo.staging now shows the 6-product catalog (was an empty "No active products" card before the fix).

Full cart flow works (1366×768)

Full cart at 1366x768
Adding products builds the cart normally. This 1366×768 capture also unblocks the n11/n14 cart-layout review (previously impossible because the grid was empty).

Checks

Register renders products (was empty)pass
Add products → cart shows lines (full flow)pass
No client page errorspass
Equivalence (LEFT JOIN ≡ subquery): staging demo 6 / get-coffee 11 / lumiere 00 mismatch
Equivalence read-only on PROD: get-coffee 121 / lumiere 250 mismatch
Staging smoke5/5

nix-cafe staging 5752741 (Worker nix-cafe-staging 1a615a90). 1 file, no migration. On get-coffee's live prod POS path when promoted, but proven behavior-identical on prod data. Parked for the scheduled prod promote.