bulk-add-by-name fails: source=shopping violates DB CHECK constraint
OCR approval fails: receipt_ocr not valid for inventory_items.source constraint
Inventory status filter broken: frontend sends status= but API expects item_status=
recipe_browser_fts: only 1.2K of 3.2M corpus recipes have category/keywords — browser returns sparse results
nginx strips port from 307 redirect Location header on no-trailing-slash requests
Recipe browser shows confusing zero-count categories with no explanation
kiwi_guest_id cookie set with Secure flag on HTTP direct access — session lost on every request
Edit item modal: purchase_date change is silently discarded
Inventory status filter broken: frontend sends status= but API expects item_status=
BLOCKING: recipe corpus not seeded in cloud per-user DBs — all recipe features return 0 results
OCR approval fails: receipt_ocr not valid for inventory_items.source constraint
bulk-add-by-name fails: source=shopping violates DB CHECK constraint
add_inventory_item returns null product_name in create response
feat: anonymous guest mode — grocery list without account (affiliate revenue)
Partial complete (2026-04-18): Per-session guest DB isolation is now live in cloud.
- Anonymous visitors get a
kiwi_guest_idUUID cookie (90-day, HttpOnly, Secure) - Each visitor gets an…
MEDIUM: POST /recipes/saved/collections returns 500 — missing member_count in INSERT RETURNING
MEDIUM: GET /recipes/saved/collections missing tier gate — free users can list paid feature
MEDIUM: community/posts response shape inconsistent — total field missing in normal path
MEDIUM: Build Your Own recipe templates render as blank cards in cloud UI
MEDIUM: Frontend JS errors on load — e.value.filter/find/map is not a function
HIGH: _auth_label() reports anonymous guest sessions as "authed"