{
  "name": "open-arcana",
  "title": "Open Arcana",
  "description": "An open, versioned, machine-readable dataset documenting secrecy in religious, spiritual and esoteric traditions: what is restricted, from whom, why, and when and how it became public.",
  "version": "0.3.0",
  "licenses": [
    {
      "name": "CC0-1.0",
      "path": "https://creativecommons.org/publicdomain/zero/1.0/",
      "title": "CC0 1.0 (applies to the dataset's own metadata, not to the third-party works it cites)"
    }
  ],
  "homepage": "https://github.com/openarcana/open-arcana",
  "resources": [
    {
      "name": "traditions",
      "path": "data/traditions.csv",
      "format": "csv",
      "schema": {
        "primaryKey": "id",
        "fields": [
          {
            "name": "id",
            "type": "string",
            "constraints": {
              "required": true,
              "pattern": "^TRAD-[0-9]{4}$"
            }
          },
          {
            "name": "name",
            "type": "string",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "tradition_type",
            "type": "string",
            "constraints": {
              "required": true,
              "enum": [
                "fraternal_order",
                "magical_order",
                "religion",
                "religious_branch",
                "new_religious_movement",
                "meditation_movement",
                "indigenous_tradition",
                "mystery_cult",
                "other"
              ]
            }
          },
          {
            "name": "founded",
            "type": "string",
            "description": "Year or approximate period, free text (e.g. '1888', 'c. 1717', '11th century')."
          },
          {
            "name": "region",
            "type": "string"
          },
          {
            "name": "status",
            "type": "string",
            "constraints": {
              "required": true,
              "enum": [
                "active",
                "dormant",
                "extinct",
                "unknown"
              ]
            }
          },
          {
            "name": "wikidata",
            "type": "string",
            "constraints": {
              "pattern": "^(Q[0-9]+)?$"
            }
          },
          {
            "name": "notes",
            "type": "string"
          }
        ]
      },
      "profile": "tabular-data-resource"
    },
    {
      "name": "restricted_items",
      "path": "data/restricted_items.csv",
      "format": "csv",
      "schema": {
        "primaryKey": "id",
        "foreignKeys": [
          {
            "fields": "tradition_id",
            "reference": {
              "resource": "traditions",
              "fields": "id"
            }
          }
        ],
        "fields": [
          {
            "name": "id",
            "type": "string",
            "constraints": {
              "required": true,
              "pattern": "^ITEM-[0-9]{4}$"
            }
          },
          {
            "name": "tradition_id",
            "type": "string",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "name",
            "type": "string",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "secrecy_type",
            "type": "string",
            "constraints": {
              "required": true,
              "enum": [
                "initiatory_rite",
                "graded_doctrine",
                "restricted_scripture",
                "transmitted_technique",
                "words_of_power",
                "closed_liturgy",
                "restricted_oral_knowledge",
                "hidden_cosmology",
                "internal_governance",
                "institutional"
              ]
            }
          },
          {
            "name": "restricted_to",
            "type": "string",
            "description": "Who is allowed to know it (a grade, clergy, a gender, a clan, paying students...)."
          },
          {
            "name": "restriction_mechanism",
            "type": "string",
            "description": "Semicolon-separated list. blackmail: threatening damaging disclosures or loss of pledged assets; violence_or_threat: physical violence or threats enforcing secrecy or participation. controlled_access: restricting entry, viewing, custodianship or transmission to specified people or roles; describe the rule in restricted_to and the cited claims.",
            "openarcana:enumList": [
              "oath",
              "vow",
              "nda",
              "fee",
              "oral_only",
              "grade_requirement",
              "copyright_claim",
              "social_sanction",
              "unknown",
              "blackmail",
              "violence_or_threat",
              "controlled_access"
            ]
          },
          {
            "name": "stated_reason",
            "type": "string",
            "description": "The tradition's own stated reason for secrecy, recorded without endorsement or judgement. A short summary; the sourced statement belongs in a claim of type stated_reason."
          },
          {
            "name": "current_status",
            "type": "string",
            "constraints": {
              "required": true,
              "enum": [
                "practiced",
                "modified",
                "discontinued",
                "unknown"
              ]
            },
            "description": "Recorded practice status. Provisional unless dated and linked to reviewed status claims; never infer present-day practice from an old disclosure alone."
          },
          {
            "name": "status_as_of",
            "type": "string",
            "description": "Date (YYYY-MM-DD) for which the linked status evidence applies; not a claim that the status remains current. Blank when not established.",
            "constraints": {
              "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
            }
          },
          {
            "name": "status_claim_ids",
            "type": "string",
            "description": "Semicolon-separated reviewed claim ids documenting the recorded status, for this item. Without these and status_as_of, current_status is provisional."
          },
          {
            "name": "description",
            "type": "string",
            "description": "Original summary written for this dataset. Never paste third-party text here."
          },
          {
            "name": "notes",
            "type": "string"
          }
        ],
        "openarcana:listForeignKeys": [
          {
            "fields": "status_claim_ids",
            "reference": {
              "resource": "claims",
              "fields": "id"
            }
          }
        ]
      },
      "profile": "tabular-data-resource"
    },
    {
      "name": "sources",
      "path": "data/sources.csv",
      "format": "csv",
      "schema": {
        "primaryKey": "id",
        "fields": [
          {
            "name": "id",
            "type": "string",
            "constraints": {
              "required": true,
              "pattern": "^SRC-[0-9]{4}$"
            }
          },
          {
            "name": "title",
            "type": "string",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "author",
            "type": "string"
          },
          {
            "name": "original_year",
            "type": "string",
            "description": "When the work was first published or the record created (e.g. '1730', '1909–1913'). Not the date of the linked copy."
          },
          {
            "name": "edition_year",
            "type": "string",
            "description": "Year of the edition, printing or copy that url, identifiers and content_hash point to, when it differs from original_year.",
            "constraints": {
              "pattern": "^([0-9]{3,4})?$"
            }
          },
          {
            "name": "source_type",
            "type": "string",
            "constraints": {
              "required": true,
              "enum": [
                "book",
                "periodical",
                "newspaper",
                "court_record",
                "legislation",
                "archive",
                "manuscript",
                "testimony",
                "website",
                "usenet",
                "academic",
                "video",
                "audio",
                "photograph",
                "film",
                "broadcast",
                "social_media",
                "report",
                "document",
                "collection"
              ]
            }
          },
          {
            "name": "url",
            "type": "string"
          },
          {
            "name": "identifiers",
            "type": "string",
            "description": "External identifiers as semicolon-separated prefix:value pairs. Prefixes: wikidata, ol (Open Library work), ia (Internet Archive item), oclc, isbn, doi, courtlistener.",
            "constraints": {
              "pattern": "^((wikidata|ol|ia|oclc|isbn|doi|courtlistener):[^;]+)(;(wikidata|ol|ia|oclc|isbn|doi|courtlistener):[^;]+)*$"
            }
          },
          {
            "name": "provenance",
            "type": "string",
            "description": "How the material came to light, as an ordered semicolon-separated chain, earliest step first (e.g. 'court_filing;anonymous_posting'). Informs, but does not by itself establish, source_authenticity; see SOURCE_POLICY.md.",
            "constraints": {
              "required": true
            },
            "openarcana:enumList": [
              "official_release",
              "member_publication",
              "published_exposure",
              "defector_account",
              "court_filing",
              "official_seizure",
              "insider_leak",
              "intrusion",
              "infiltration",
              "covert_recording",
              "anonymous_posting",
              "archival_collection",
              "academic_fieldwork",
              "scholarship",
              "reconstruction",
              "unknown",
              "investigative_reporting"
            ]
          },
          {
            "name": "source_authenticity",
            "type": "string",
            "description": "Whether the source's contents are what they claim to be (e.g. a genuine internal manual), separate from whether the source exists and from whether its claims are true. See SOURCE_POLICY.md.",
            "constraints": {
              "required": true,
              "enum": [
                "unassessed",
                "verified",
                "probable",
                "uncertain",
                "disputed",
                "disproven"
              ]
            }
          },
          {
            "name": "verification_notes",
            "type": "string",
            "description": "What the authenticity judgement rests on: chain of custody, checks against known facts, independent copies, response from the tradition."
          },
          {
            "name": "rights",
            "type": "string",
            "constraints": {
              "required": true,
              "enum": [
                "public_domain",
                "copyrighted",
                "open_license",
                "court_record",
                "unknown"
              ]
            }
          },
          {
            "name": "content_hash",
            "type": "string",
            "description": "IPFS CID or sha256 of an archived copy, when one exists. For audio, video and images, hash the file as first captured, before any re-encoding."
          },
          {
            "name": "notes",
            "type": "string"
          }
        ]
      },
      "profile": "tabular-data-resource"
    },
    {
      "name": "disclosures",
      "path": "data/disclosures.csv",
      "format": "csv",
      "schema": {
        "primaryKey": "id",
        "foreignKeys": [
          {
            "fields": "item_id",
            "reference": {
              "resource": "restricted_items",
              "fields": "id"
            }
          },
          {
            "fields": "source_id",
            "reference": {
              "resource": "sources",
              "fields": "id"
            }
          }
        ],
        "fields": [
          {
            "name": "id",
            "type": "string",
            "constraints": {
              "required": true,
              "pattern": "^DISC-[0-9]{4}$"
            }
          },
          {
            "name": "item_id",
            "type": "string",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "source_id",
            "type": "string",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "year",
            "type": "string",
            "constraints": {
              "pattern": "^([0-9]{3,4})?$"
            }
          },
          {
            "name": "date_precision",
            "type": "string",
            "constraints": {
              "enum": [
                "day",
                "month",
                "year",
                "decade",
                "circa",
                "unknown"
              ]
            }
          },
          {
            "name": "disclosure_method",
            "type": "string",
            "constraints": {
              "required": true,
              "enum": [
                "exposure_publication",
                "defector_testimony",
                "court_record",
                "leak",
                "journalism",
                "academic_research",
                "voluntary_release",
                "reconstruction",
                "investigative_report"
              ]
            }
          },
          {
            "name": "extent",
            "type": "string",
            "constraints": {
              "required": true,
              "enum": [
                "full",
                "partial",
                "summary",
                "reference"
              ]
            },
            "description": "How much of the item the source makes public: full (the whole item as practiced in the version described), partial (some identifiable parts), summary (a description in the source's own words), reference (mentions it exists). Say which parts in coverage."
          },
          {
            "name": "coverage",
            "type": "string",
            "description": "Which parts, degrees, versions or editions of the item the source covers, and which it leaves out."
          },
          {
            "name": "review_status",
            "type": "string",
            "description": "Whether a maintainer has checked the record against its sources. Independent of authenticity and claim support.",
            "constraints": {
              "required": true,
              "enum": [
                "unreviewed",
                "reviewed",
                "disputed"
              ]
            }
          },
          {
            "name": "notes",
            "type": "string"
          }
        ]
      },
      "description": "Each event in which a restricted item became public through a source. Records that the source contains the material; whether the source is authentic is in sources.source_authenticity, and whether specific assertions are true is in claims.",
      "profile": "tabular-data-resource"
    },
    {
      "name": "claims",
      "path": "data/claims.csv",
      "format": "csv",
      "description": "Specific assertions about a restricted item, each with the sources that support or contradict it. Separates what a source says from whether it is authentic and whether it is true.",
      "schema": {
        "primaryKey": "id",
        "fields": [
          {
            "name": "id",
            "type": "string",
            "constraints": {
              "required": true,
              "pattern": "^CLM-[0-9]{4}$"
            }
          },
          {
            "name": "item_id",
            "type": "string",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "claim_type",
            "type": "string",
            "description": "What kind of assertion this is. content: what the item contains; historical_practice: that it was actually practiced in a period; current_practice: that it is practiced today; change: that it was modified or discontinued; stated_reason: the reason the tradition itself gives for restricting it; suppression: that the item, or published knowledge of it, was withdrawn, restricted, suppressed or played down after it came out, with the method in suppression_method.",
            "constraints": {
              "required": true,
              "enum": [
                "content",
                "historical_practice",
                "current_practice",
                "change",
                "stated_reason",
                "suppression",
                "other"
              ]
            }
          },
          {
            "name": "suppression_method",
            "type": "string",
            "description": "Only for claims of type suppression, where it is required. How it was done, semicolon-separated: court_injunction (a court order stopped publication or distribution), publication_withdrawn (a publisher or author pulled the work), archive_restricted (an archive, museum or library closed access), scholarly_self_censorship (scholars withheld or blurred material they had), official_denial_later_admitted (the tradition denied something it later acknowledged), official_condemnation (a religious or state authority condemned the teaching as heresy or banned it, so that it survives mainly through its opponents), apologetic_reinterpretation (a literal practice recast as symbolic or allegorical), community_pressure (protests, threats or sanctions against publication).",
            "openarcana:enumList": [
              "court_injunction",
              "publication_withdrawn",
              "archive_restricted",
              "scholarly_self_censorship",
              "official_denial_later_admitted",
              "official_condemnation",
              "apologetic_reinterpretation",
              "community_pressure"
            ]
          },
          {
            "name": "statement",
            "type": "string",
            "description": "The assertion, in original wording written for this dataset.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "period",
            "type": "string",
            "description": "When the assertion applies, free text (e.g. '1730', 'before 1990', 'as of 2024')."
          },
          {
            "name": "claim_support",
            "type": "string",
            "description": "How well the assertion is supported. independently_corroborated needs two or more independent supporting sources; contradicted needs at least one contradicting source. See SOURCE_POLICY.md.",
            "constraints": {
              "required": true,
              "enum": [
                "independently_corroborated",
                "single_source",
                "insufficient",
                "contradicted"
              ]
            }
          },
          {
            "name": "supporting_source_ids",
            "type": "string",
            "description": "Semicolon-separated source ids."
          },
          {
            "name": "independent_source_ids",
            "type": "string",
            "description": "Semicolon-separated subset of supporting_source_ids counted as independent. Required for independently_corroborated; the independence assessment must be explained in verification_notes."
          },
          {
            "name": "contradicting_source_ids",
            "type": "string",
            "description": "Semicolon-separated source ids."
          },
          {
            "name": "locators",
            "type": "string",
            "description": "Where in each source the evidence is (page, section, exhibit, timestamp), e.g. 'SRC-0002: pp. 20–28'."
          },
          {
            "name": "review_status",
            "type": "string",
            "description": "Whether a maintainer has checked the record against its sources. Independent of authenticity and claim support.",
            "constraints": {
              "required": true,
              "enum": [
                "unreviewed",
                "reviewed",
                "disputed"
              ]
            }
          },
          {
            "name": "verification_notes",
            "type": "string",
            "description": "Why the claim_support level was given, including why supporting sources are or are not independent of each other."
          }
        ],
        "foreignKeys": [
          {
            "fields": "item_id",
            "reference": {
              "resource": "restricted_items",
              "fields": "id"
            }
          }
        ],
        "openarcana:listForeignKeys": [
          {
            "fields": "supporting_source_ids",
            "reference": {
              "resource": "sources",
              "fields": "id"
            }
          },
          {
            "fields": "contradicting_source_ids",
            "reference": {
              "resource": "sources",
              "fields": "id"
            }
          },
          {
            "fields": "independent_source_ids",
            "reference": {
              "resource": "sources",
              "fields": "id"
            }
          }
        ]
      },
      "profile": "tabular-data-resource"
    },
    {
      "name": "source_artifacts",
      "path": "data/source_artifacts.csv",
      "format": "csv",
      "profile": "tabular-data-resource",
      "schema": {
        "primaryKey": "id",
        "foreignKeys": [
          {
            "fields": "source_id",
            "reference": {
              "resource": "sources",
              "fields": "id"
            }
          }
        ],
        "fields": [
          {
            "name": "id",
            "type": "string",
            "description": "ARTF- identifier",
            "constraints": {
              "required": true,
              "pattern": "^ARTF-[0-9]{4}$"
            }
          },
          {
            "name": "source_id",
            "type": "string",
            "description": "The source work or collection represented by this file or stream.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "artifact_kind",
            "type": "string",
            "description": "The represented artifact, not its reputation or eligibility.",
            "constraints": {
              "required": true,
              "enum": [
                "document",
                "collection",
                "audio",
                "video",
                "image",
                "transcript",
                "torrent_metadata"
              ]
            }
          },
          {
            "name": "media_type",
            "type": "string",
            "description": "Recorded MIME type, when established."
          },
          {
            "name": "url",
            "type": "string",
            "description": "HTTP(S) file, player or catalogue URL; notes distinguish direct payloads from metadata."
          },
          {
            "name": "ipfs_cid",
            "type": "string",
            "description": "A CID reported for this artifact; content addressing alone does not establish authenticity.",
            "constraints": {
              "pattern": "^(Qm[1-9A-HJ-NP-Za-km-z]{44}|b[a-z2-7]{10,}|z[1-9A-HJ-NP-Za-km-z]{10,})$"
            }
          },
          {
            "name": "btih",
            "type": "string",
            "description": "BitTorrent v1 info-hash, lower-case hexadecimal. It identifies a torrent payload manifest, not the raw file SHA-256.",
            "constraints": {
              "pattern": "^[0-9a-f]{40}$"
            }
          },
          {
            "name": "member_path",
            "type": "string",
            "description": "Exact member path when the artifact is inside a bundle."
          },
          {
            "name": "sha256",
            "type": "string",
            "description": "SHA-256 computed from the exact captured artifact bytes. Do not copy an unverified publisher hash into this field.",
            "constraints": {
              "pattern": "^[0-9a-f]{64}$"
            }
          },
          {
            "name": "size_bytes",
            "type": "string",
            "description": "Exact captured byte count; blank when no complete file was captured.",
            "constraints": {
              "pattern": "^[0-9]+$"
            }
          },
          {
            "name": "inspection_status",
            "type": "string",
            "description": "How much of this artifact was inspected; independent of source authenticity or truth.",
            "constraints": {
              "required": true,
              "enum": [
                "metadata_only",
                "partial",
                "complete"
              ]
            }
          },
          {
            "name": "inspected_parts",
            "type": "string",
            "description": "Pages, time ranges, frames, files or metadata inspected. Complete metadata inspection does not mean the payload was inspected.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "accessed_on",
            "type": "string",
            "description": "Date of this inspection (YYYY-MM-DD).",
            "constraints": {
              "required": true,
              "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
            }
          },
          {
            "name": "notes",
            "type": "string",
            "description": "Origin, transformations, access limits, reported identifiers and reasons for the inspection status.",
            "constraints": {
              "required": true
            }
          }
        ]
      }
    }
  ],
  "profile": "tabular-data-package"
}
