Re-audit: NOT built and NOT superseded by the OCR/scan-modes work. Inline reassurance (cert ID + green check + status badge) partly covers the intent, but the tap-to-modal artifact doesn't exist.…
Shipped — closing. On-device OCR is implemented and wired into the live scan flow.
Native module modules/card-ocr/ios/CardOcrModule.swift (Apple Vision VNRecognizeTextRequest .accurate +…
Re-audit (native OCR #98 now shipped): UNBLOCKED. Both levers are live on feature/josh — the server classifier prompt was hardened AND #207 AUTO/SLAB adds deterministic cert->graded routing…
Re-audit: the native-OCR / #172 blocker is cleared in code — the deterministic cert->graded path is live on feature/josh. Recognition plumbing shipped via #207. VALUE-accuracy belongs to…
Re-audit: UNBLOCKED (native OCR shipped). Cert read + PSA GetByCertNumber plumbing is done. Small pure-mobile-UI remainder: (1) render the already-plumbed verification_url as a tappable 'View on…
Fix landed on feature/josh (5b15052).
Root cause: the manual-search overlay used settings.defaultGame, which defaults to "auto" — and the backend /external/scan-search treats "auto" as "search…
Fix landed on feature/josh (24e9310).
One Piece now reads the name from the bottom banner. When the card is detected as One Piece (OP/ST/EB/PRB set code, via parseGame), parseName anchors on the…
Fixed: 8s live poll re-rendered the open card-detail modal every tick. Memoized CardPricingDetail (comparator on rendered fields), TradeHistoryPanel, SaleHistory + hoisted EMPTY_DRAFTS/inline…
Fixed: typing re-rendered the whole screen incl image rows. inventory/[id].tsx: QTY/LOC moved to a local memoized HeroMetaInput committing to refs so a keystroke re-renders only that input.…
Built + live-tested (6h TTL): call 1 source=live (1 fetch), call 2 source=cache (0 extra fetch), identical prices from the persisted snapshot (fetched_at+expires_at set). Dominant leak (multi-condi…
Un-parked with a SMART design (founder-aligned): cache the live fallback with a 6h freshness window (TTL), not persist-forever. Persist the live-fetched per-condition prices into TcgLatestSalesSnap…
Parked (founder pref): founders prefer live / most-recent prices whenever possible, so persisting the /pricing/condition-prices live fallback into a snapshot would serve a cached number when a…
Clean full re-run done (fix 6559b30): 6,525 sealed rows, games-only, 37 categories priced, 0 groups dropped, 0x 429/503, 9.4min. Games-only filter cut request volume ~6x (24k->4.2k groups) so its…
Built + committed (ca04e0a). Live-tested: Magic Hobbit Play Booster Box $184.48 + Dragon Ball Awakened Pulse Box $346.51 via TCGCSV (Scrydex carries no sealed for those); Pokemon 151 ETB $615.44…
Scope locked (founder): sync ALL TCGCSV games, SEALED products only, daily-refreshed cache. Resolver order = Scrydex sealed PREFERRED -> TCGCSV cache -> card_cache (Scrydex stays primary; TCGCSV…