First real app payment completed the full pipeline end-to-end (N-039552: Razorpay verify → Petpooja synced → kitchen). Codex's runtime supersedes the D1–D10 UI/native defects. Remaining before public launch: fill catalog data (nutrition/allergen/ingredient), map free rewards, deactivate ZZTEST50, one controlled payment per outlet, and on-device Wallet/Spotlight/push + Android signing checks (owner device).
| Check | Status | Evidence |
|---|---|---|
| End-to-end order | proven | N-039552 · GAL01 · dine_in · ₹57 · Razorpay payment_id+order_id+signature all set → Petpooja sync_status=synced → status food_ready. First real app payment, Jul-22 17:20. |
| Razorpay checkout | solid | Server recomputes canonical total & charges that (client amount informational only). Signature verify server-side. Native SDK = faster path. |
| Recovery | solid | verify-fail / dismiss / 409 → pollRecovery; pending order never deleted. (2 abandoned app attempts auto-handled.) |
| Reward redemption | solid | fn_redeem_reward: tier fail-closed, atomic balance, dedup, dual-ledger. |
| Coupon enforcement | solid | Per-account gated (live-probed): expiry by date ✓, eligibility/segment gating ✓. No open-code risk. |
| Pricing | clean | 131/131 priced+taxed, base always set. Watch gst_type MRP trap. |
menu_item_nutrition rows have zero calories AND zero macros. Macros panel blank for ~half the menu.free_item rewards; rewards table has no product_id/petpooja_item_id. Fulfilled by name→counter-coupon. Confirm each resolves to the right Petpooja item.is_active=true). Account-gated so not customer-exposed, but deactivate before launch.| ID | Was | Status |
|---|---|---|
| D1 | Menu search tab-scoped / no fuzzy | resolved search |
| D3 | Ingredient ✓ not showing | resolved ticks |
| D4/D8 | Sign-out placement / stuck session | resolved sign-out + account isolation |
| D5 | Tracking token# + actions | resolved tracking actions/token |
| D10 | OTP "couldn't send" | resolved OTP cleanup |
| D7 | Swipe back/forward | resolved swipe nav |
| D9 | Header/scroll restore | resolved sticky headers + scroll |
| D2/D6 | Home search inline / native login links | resolved |
app_config.delivery_enabled='0').