Appearance
Series grid stored-price reads no longer depend on the current scroll window. The app requests exact-market cached valuations for the loaded catalogue in twenty-market batches with the existing two-request concurrency limit. Later virtual pages can display a cached price without opening a detail screen first.
Live Cardmarket refreshes remain viewport-bounded, including the existing small prefetch window. Passive batch requests have no live flag and use the backend's existing cached valuation path; they do not schedule paid provider searches for off-screen cards. No new average-price fallback is introduced.
FlatList now explicitly includes quotes and loading state in its extraData, alongside image, ownership and rarity-selection state, so asynchronous price updates invalidate recycled tiles.
Regression evidence: a 45-card mocked HTTP catalogue initially failed to expose the price of card 45. It now loads three passive batches of at most twenty markets; switching to the later viewport reuses those stored prices without another passive HTTP request. Existing visible-only live hydration regressions remain green.
Read-only VPS inspection confirmed skns-redis-1 responds to INFO stats, with cache hits and no evictions at inspection time. No keys or user data were read, and no cache flush, service restart, deployment or database change was performed.
The seeded Maestro flow series-paginated-prices.yaml covers scrolling to a known cached card after the first twenty entries and returning from detail. It requires a matching test APK and controlled catalogue; native execution is not claimed.