# ADR 0002 — Data honesty rules enforced in code Date: 2026-09-07 · Status: accepted - No fabricated data, ever (§192). Seeds contain taxonomy and index *definitions* only. Sales, listings, prices, populations and market caps come from connectors with provenance (`source_url`, `raw_record_id`, `parser_version`, `connector_version`). - Price-guide values (Scryfall/TCG APIs, guide pages) are stored as `price_observations`, shown as "guide" numbers and weighted below transactions in RIV. They never populate `sales`. - A valuation is published only with `sample_size`, `confidence`, `low/high` and `computed_at`. Below the evidence threshold the UI renders "Data unavailable" (``). - Indices publish nothing until `minConstituents` priced constituents exist; coverage is stored per day. - Outliers are flagged (`status='flagged'|'excluded'`, `flags[]`, `audit_log`) — never deleted. - Crawl time ≠ sale time: connectors must parse the source's own date; the fixture suite checks it. - Historical FX is applied at the sale date; the display currency is a view-time conversion.