{
  "schema_version": "1.0.0",
  "data_schema_version": "hei_entity_event_evidence_v1",
  "project_id": "historical-exchange-index",
  "title": "Historical Exchange Index",
  "description": "Evidence-backed historical registry of crypto exchanges, active and gone.",
  "canonical_origin": "https://hei.badjoke-lab.com",
  "registry_family": "badjoke-lab-ledger-series",
  "registry_type": "historical_crypto_exchange_registry",
  "canonical_source_of_truth": {
    "entities": "data/entities.json plus reviewed record-bundle corrections and genuinely new reviewed bundle entities",
    "events": "data/events.json plus reviewed bundle events deduplicated by ID and normalized to canonical entity IDs",
    "evidence": "data/evidence.json plus reviewed bundle evidence deduplicated by ID and normalized to canonical entity IDs",
    "registry_updates": "data/registry-updates.json reviewed public update entries only"
  },
  "data_model": {
    "primary_record": "exchange_entity",
    "supporting_records": [
      "exchange_event",
      "exchange_evidence"
    ]
  },
  "public_files": {
    "version": "/version.json",
    "manifest": "/data/manifest.json",
    "entities": "/data/entities.json",
    "events": "/data/events.json",
    "evidence": "/data/evidence.json",
    "updates_json_feed": "/feeds/updates.json",
    "updates_rss_feed": "/feeds/updates.xml",
    "llms": "/llms.txt",
    "ai": "/ai.txt"
  },
  "main_routes": [
    "/",
    "/dead/",
    "/active/",
    "/exchange/{slug}/",
    "/explore/",
    "/compare/",
    "/stats/",
    "/quality/",
    "/updates/",
    "/incidents/",
    "/monthly/",
    "/methodology/",
    "/about/",
    "/donate/"
  ],
  "record_counts": {
    "primary_records": 1068,
    "events": 1097,
    "evidence": 4023
  },
  "record_count_breakdown": {
    "exchanges": 1068,
    "active_side": 837,
    "dead_side": 231,
    "status": {
      "dead": 190,
      "active": 703,
      "limited": 73,
      "inactive": 61,
      "acquired": 15,
      "rebranded": 25,
      "merged": 1
    },
    "type": {
      "cex": 541,
      "dex": 496,
      "hybrid": 31
    }
  },
  "records_last_reviewed_at": "2026-08-30",
  "data_safety": {
    "canonical_only": true,
    "includes_unreviewed_candidates": false,
    "includes_internal_monitoring": false,
    "includes_private_notes": false
  },
  "correction_links": {
    "form": "https://docs.google.com/forms/d/e/1FAIpQLSf6NGsKIaGUzeGWUAyphOsv0XN3eSBebsASj_0g-qtZtNamWw/viewform",
    "github": "https://github.com/badjoke-lab/historical-exchange-index/issues"
  },
  "repository": {
    "type": "github",
    "url": "https://github.com/badjoke-lab/historical-exchange-index"
  },
  "language": "en",
  "locales": [
    "en"
  ],
  "generated_at": "2026-08-31T15:33:14.732Z",
  "record_level": {
    "index": "/data/exchanges/index.json",
    "record_url_template": "/data/exchanges/{slug}.json",
    "record_count": 1068,
    "canonical_only": true
  },
  "stats": {
    "snapshot": "/stats.json",
    "history": "/stats-history.json",
    "canonical_only": true,
    "source": "reviewed_entity_event_evidence_aggregation"
  }
}
