{"as_of": "2026-11-14T12:48:45Z", "rubric": {"scale": "0-100 with letter A-F", "letters": {"A": "90-100", "B": "80-89", "C": "70-79", "D": "60-69", "F": "<60"}, "weights": {"freshness": 0.3, "completeness": 0.25, "coverage": 0.2, "uptime": 0.15, "validation": 0.1}, "formulas": {"freshness": "Standing feeds: 100 if age<=promised; linear to 0 at 2*promised; 40 if unmeasured. Live-fetch products: path-health from usage.db last success age (6h+ window) blended with success rate, and/or self-probe success/latency — request-time data, not feed age.", "completeness": "% of declared key_fields non-null (or company avg_completeness)", "coverage": "mean of measured/target ratios clipped to 100", "uptime": "usage.db success rate last 24h (2xx/3xx/402/404=up); else probe_ok 95 / fail 20 / unknown 60", "validation": "ecom: 100*(1-flagged_pct/20); company: avg_completeness; else 100"}, "recompute_every_minutes": 30, "sources_policy": "Public RPCs, redistributable public APIs, SEC EDGAR, Shopify products.json, public HTML/RSS. No Yahoo Finance, CoinGecko/GeckoTerminal, GoPlus, Blockscout, Arkham, Nansen, Whale Alert, Cielo, or Chainalysis."}, "product": {"product": "ecom-product", "title": "E-com product lookup", "family": "ecom", "path": "/v1/ecom/product", "grade": "A", "score": 99.2, "as_of": "2026-11-14T12:48:44Z", "freshness_seconds": 1, "refresh_promised_seconds": 86400, "coverage": "stores=518", "coverage_detail": {"stores": {"measured": 518.0, "target": 180, "ratio": 2.878}}, "sources": ["Public Shopify /products.json crawls (own Umbrel crawler to ecom.sqlite)"], "components": {"freshness": 100.0, "completeness": 100.0, "coverage": 100.0, "uptime": 100.0, "validation": 91.8}, "component_detail": {"freshness": {"age_seconds": 1, "promised_seconds": 86400}, "completeness": {"fields_checked": 1, "fields_present": 1, "fields": {"stores": true}}, "coverage": {"stores": {"measured": 518.0, "target": 180, "ratio": 2.878}}, "uptime": {"success_rate_24h": 1.0, "source": "usage.db"}, "validation": {"flagged_pct": 1.65, "rows_checked": 2787736}}, "probe": {"path": "/v1/free/ecom/stores", "http_status": 200}, "notes": "", "last_checked": "2026-11-14T12:48:45Z"}, "sample_checks": null, "data_as_of": {"timestamp_utc": "2026-11-14T12:48:45Z", "unix": 1794660525, "time_source": "as_of", "onchain": true, "block": {"chain": "base", "number": 57350731, "basis": "head_block_at_data_time"}, "blocks": {"base": {"number": 57350731, "basis": "head_block_at_data_time"}, "ethereum": {"number": 26413326, "basis": "head_block_at_data_time"}, "arbitrum": {"number": 524156685, "basis": "head_block_at_data_time"}, "polygon": {"number": 97303369, "basis": "head_block_at_data_time"}, "optimism": {"number": 159530872, "basis": "head_block_at_data_time"}, "bnb": {"number": 133546426, "basis": "head_block_at_data_time"}, "gnosis": {"number": 49275434, "basis": "head_block_at_data_time"}, "solana": {"number": 469333495, "basis": "head_block_at_data_time"}}}, "receipt": {"sha256": "28a19cba64ccefe1c5ab46326415db440db1c7cdc4c1299d7c125f01376bed1f", "hash_of": "UTF-8 JSON of this response with the 'receipt' key removed, keys sorted, separators (',', ':')", "as_of": "2026-11-14T12:48:45Z", "as_of_basis": "from the response", "block": {"chain": "base", "number": 57350731, "basis": "head_block_at_data_time"}, "issued_at": "2026-11-14T13:10:19Z", "route": "/v1/quality/ecom-product", "paid": true, "verify": "/v1/free/receipts/verify?sha256=28a19cba64ccefe1c5ab46326415db440db1c7cdc4c1299d7c125f01376bed1f"}}