{
  "version": "1.0.0",
  "principles": {
    "missing": "null with reason code; never coerce to zero",
    "timestamp": "Use provider observed_at only when supplied; fetched_at is a separate clock",
    "series": "source, scope, basis, unit, day boundary or adapter changes require a new series and explicit break",
    "ranking": "Only one named cohort and one comparable product basis per rank",
    "raw": "Retain the exact response bytes, SHA-256, adapter version and immutable observation link"
  },
  "metrics": {
    "volume24h": {
      "unit": "USD notional", "window": "venue-defined rolling 24h", "aggregation": "sum eligible instrument notionals once",
      "day_boundary": "not a UTC calendar day", "scope_rule": "perpetual markets only; record spot, options, HIP-3 or interface exclusions",
      "source_priority": ["venue API", "reviewed provider"], "revision": "append new observation; never overwrite"
    },
    "volume30d": {
      "unit": "USD notional", "window": "30 complete UTC days", "aggregation": "sum compatible daily venue totals",
      "day_boundary": "00:00 UTC exclusive end", "scope_rule": "same product set and venue identity for all days",
      "source_priority": ["venue daily history", "reviewed provider daily history"], "revision": "source or scope change starts new series"
    },
    "oi": {
      "unit": "USD notional", "window": "point in time", "aggregation": "one open contract counted once",
      "day_boundary": "UTC observation or fetch sample", "scope_rule": "state whether native and builder markets, spot, options and interface routes are included",
      "source_priority": ["venue API", "reviewed provider"], "revision": "base-unit × mark-price conversion versioned"
    },
    "tvl": {
      "unit": "USD", "window": "point in time", "aggregation": "provider-reported collateral/locked assets",
      "day_boundary": "source day or observation timestamp", "scope_rule": "LP collateral, vaults and chain assets must be distinguished",
      "source_priority": ["venue reserves", "reviewed provider"], "revision": "provider methodology change starts a break"
    },
    "fees": {
      "unit": "USD", "window": "complete UTC day, 30d or 90d", "aggregation": "gross charges paid by users, excluding funding transfers",
      "day_boundary": "00:00 UTC exclusive end", "scope_rule": "specify perps/spot/options and maker rebates; parent and child never summed",
      "source_priority": ["venue ledger", "reviewed provider adapter"], "revision": "late provider corrections append revision"
    },
    "protocolRevenue": {
      "unit": "USD", "window": "complete UTC day, 30d or 90d", "aggregation": "retained receipts after supplier distributions under documented definition",
      "day_boundary": "00:00 UTC exclusive end", "scope_rule": "must identify product and recipient; cannot exceed fees without explained additional source",
      "source_priority": ["venue ledger", "reviewed provider adapter"], "revision": "definition change starts new series"
    },
    "holderFlow": {
      "unit": "USD", "window": "complete UTC day, 30d or 90d", "aggregation": "realized value directed through one documented token mechanism",
      "day_boundary": "00:00 UTC exclusive end", "scope_rule": "record eligible recipients, execution, settlement and covered addresses; buyback plus burn is one flow",
      "source_priority": ["onchain transactions", "venue execution register", "reviewed provider"], "revision": "correction appends observation and audit note"
    },
    "tokenPrice": {
      "unit": "USD/token", "window": "point in time", "aggregation": "market quote only",
      "day_boundary": "UTC source/fetch timestamp", "scope_rule": "verified live token and quote currency; never a fair-price estimate",
      "source_priority": ["venue spot market", "reviewed market provider"], "revision": "append quote"
    },
    "fdv": {
      "unit": "USD", "window": "point in time", "aggregation": "same-source market price × disclosed supply convention",
      "day_boundary": "UTC source/fetch timestamp", "scope_rule": "supply denominator and product identity shown; never mix official/API and provider conventions silently",
      "source_priority": ["same-source market provider"], "revision": "convention change starts new series"
    },
    "circulatingSupply": {
      "unit": "token units", "window": "point in time", "aggregation": "source-defined tradable circulation",
      "day_boundary": "UTC observation/fetch timestamp", "scope_rule": "issuer, API and market-provider conventions kept separate",
      "source_priority": ["issuer/onchain bridge", "venue token API", "market provider"], "revision": "append observed revisions, never substitute another convention"
    },
    "totalSupply": {
      "unit": "token units", "window": "point in time", "aggregation": "source-defined issued supply",
      "day_boundary": "UTC observation/fetch timestamp", "scope_rule": "distinguish burned, locked, treasury and future emissions",
      "source_priority": ["issuer/onchain bridge", "venue token API", "market provider"], "revision": "append observed revisions, never substitute another convention"
    }
  }
}
