{
 "profile": "tabular-data-package",
 "name": "billasaari-bitcoin-places",
 "title": "Billasaari Bitcoin Places Register",
 "version": "0.2.0",
 "created": "2026-10-01",
 "homepage": "https://billasaari.com/",
 "licenses": [
  {
   "name": "CC-BY-4.0",
   "path": "https://creativecommons.org/licenses/by/4.0/",
   "title": "Creative Commons Attribution 4.0 International"
  }
 ],
 "description": "Evidence-graded register of 26 Bitcoin places — towns, beaches, islands, districts and programmes trying to run on Bitcoin — with operator, funding model, dated status and a primary source for every record.",
 "resources": [
  {
   "name": "places",
   "path": "places.csv",
   "profile": "tabular-data-resource",
   "format": "csv",
   "mediatype": "text/csv",
   "encoding": "utf-8",
   "schema": {
    "fields": [
     {
      "name": "id",
      "type": "string",
      "description": "Permanent record identifier, lower-case, never reassigned."
     },
     {
      "name": "name",
      "type": "string",
      "description": "The place or programme’s current public name."
     },
     {
      "name": "scope",
      "type": "string",
      "description": "The geography the operator claims, in their terms. Not a merchant-coverage claim."
     },
     {
      "name": "locality",
      "type": "string",
      "description": "The town, district, island or country the record is mapped to."
     },
     {
      "name": "country_iso2",
      "type": "string",
      "description": "ISO 3166-1 alpha-2 country code; empty for multi-country programmes."
     },
     {
      "name": "country",
      "type": "string",
      "description": "Country name."
     },
     {
      "name": "region",
      "type": "string",
      "description": "Atlas region."
     },
     {
      "name": "kind",
      "type": "string",
      "description": "circular-economy · island-initiative · city-programme · district · programme-network."
     },
     {
      "name": "status",
      "type": "string",
      "description": "active · quiet · ceased · unverified — the rules are on this page."
     },
     {
      "name": "last_dated_activity",
      "type": "string",
      "description": "The most recent dated activity found (YYYY, YYYY-MM or YYYY-MM-DD); empty when none was found."
     },
     {
      "name": "grade_basis",
      "type": "string",
      "description": "One sentence on why the record has its status."
     },
     {
      "name": "summary",
      "type": "string",
      "description": "What the place does and for whom, paraphrased from the operator."
     },
     {
      "name": "operator",
      "type": "string",
      "description": "The organisation that runs it. No personal contact data."
     },
     {
      "name": "funding",
      "type": "string",
      "description": "How it is funded, as far as the operator discloses."
     },
     {
      "name": "adoption",
      "type": "string",
      "description": "Adoption figures exactly as the operator reports them; never audited by us."
     },
     {
      "name": "evidence_limit",
      "type": "string",
      "description": "What those figures do not show."
     },
     {
      "name": "evidence_grade",
      "type": "string",
      "description": "How sure we are that we read the source correctly, with its limits — not a rating of whether the claim is true."
     },
     {
      "name": "fact_as_of",
      "type": "string",
      "description": "The date the source gives for its facts, or “unknown” when the source is undated. Never inferred from the access date."
     },
     {
      "name": "evidence_url",
      "type": "string",
      "description": "The operator’s or programme’s own page the record rests on."
     },
     {
      "name": "source_locator",
      "type": "string",
      "description": "Where on that page the facts sit (heading or label)."
     },
     {
      "name": "accessed_date",
      "type": "date",
      "description": "The day we last checked the source."
     },
     {
      "name": "activity_url",
      "type": "string",
      "description": "A second first-party page, when the dated activity sits elsewhere."
     },
     {
      "name": "wikidata_qid",
      "type": "string",
      "description": "Wikidata item for the locality (CC0)."
     },
     {
      "name": "lat",
      "type": "number",
      "description": "Latitude of the locality, from Wikidata P625 (CC0). Not an address."
     },
     {
      "name": "lon",
      "type": "number",
      "description": "Longitude of the locality, from Wikidata P625 (CC0)."
     },
     {
      "name": "coord_level",
      "type": "string",
      "description": "locality · country · none."
     },
     {
      "name": "graded_on",
      "type": "date",
      "description": "The day the status grade was last assigned."
     },
     {
      "name": "record_url",
      "type": "string",
      "description": "This record’s page in the atlas."
     }
    ],
    "primaryKey": "id"
   }
  },
  {
   "name": "status-history",
   "path": "status-history.csv",
   "profile": "tabular-data-resource",
   "format": "csv",
   "mediatype": "text/csv",
   "encoding": "utf-8",
   "schema": {
    "fields": [
     {
      "name": "month",
      "type": "string",
      "description": "Snapshot month YYYY-MM"
     },
     {
      "name": "entity_id",
      "type": "string",
      "description": "Record id"
     },
     {
      "name": "status",
      "type": "string",
      "description": "Status in that month"
     },
     {
      "name": "last_dated_activity",
      "type": "string",
      "description": "As recorded that month"
     },
     {
      "name": "accessed_date",
      "type": "date",
      "description": "Last source check as of that month"
     },
     {
      "name": "probe_http",
      "type": "string",
      "description": "HTTP status of the source page on the snapshot day, or not-probed"
     },
     {
      "name": "prev_sha256",
      "type": "string",
      "description": "Hash of the previous row"
     },
     {
      "name": "row_sha256",
      "type": "string",
      "description": "sha256(prev_sha256|month|entity_id|status|last_dated_activity|accessed_date|probe_http)"
     }
    ]
   }
  }
 ]
}
