{
  "name": "Game families, Discord & Reddit · version 3",
  "description": "Game families, public Discord servers and researched subreddits in one versioned classification.",
  "version": "v3",
  "snapshotDate": "2026-10-18",
  "license": "CC0-1.0",
  "provenance": {
    "source": "data/core_books.csv",
    "sha256": "5876380a1bde6ad04b860c71414c9843bc8fc7e03cbcef2e65b92e76d3e69de3",
    "note": "Derived classification; the source research file is not a public download."
  },
  "namespace": "reference",
  "slug": "game-families-v3",
  "resources": [
    {
      "name": "v3",
      "path": "/downloads/classifications/game-families/v3.csv",
      "format": "csv",
      "title": "v3 Game family assignments",
      "bytes": 68974,
      "sha256": "902ccf6636aa73aa42f8ea875ff23f1ee7ef96f8e3d9d66570c402e29240ff4e",
      "recordCount": 305,
      "schema": {
        "fields": [
          {
            "name": "classification_version",
            "type": "string",
            "description": "Identifier of the immutable classification release.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "system_id",
            "type": "string",
            "description": "Stable identifier for a source system entry. Preserve it across later versions and name changes.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "system_name",
            "type": "string",
            "description": "Exact system name from the core snapshot.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "family_id",
            "type": "string",
            "description": "Stable family identifier; empty for standalone and unclassified rows."
          },
          {
            "name": "family_name",
            "type": "string",
            "description": "Display name of the assigned family; empty when no assignment is made."
          },
          {
            "name": "status",
            "type": "string",
            "description": "classified, standalone, or unclassified.",
            "constraints": {
              "required": true,
              "enum": [
                "classified",
                "standalone",
                "unclassified"
              ]
            }
          },
          {
            "name": "reason",
            "type": "string",
            "description": "Machine-readable reason for the assignment or gap."
          },
          {
            "name": "source_family_labels",
            "type": "string",
            "description": "JSON array of the original catalogue labels across the system's records.",
            "format": "json-array"
          },
          {
            "name": "source_record_count",
            "type": "integer",
            "description": "Number of source book/edition records represented by the row.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "notes",
            "type": "string",
            "description": "Explanation of the grouping or missing assignment."
          }
        ],
        "primaryKey": [
          "system_id"
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "v3",
      "path": "/downloads/classifications/game-families/v3.json",
      "format": "json",
      "title": "v3 Original release manifest",
      "bytes": 7069,
      "sha256": "68a8d8f2ba7223fa4fa36b829f77b7dea0b3c7eae7953aa124325a717f1d37ad"
    },
    {
      "name": "v3-rules",
      "path": "/downloads/classifications/game-families/v3-rules.json",
      "format": "json",
      "title": "v3 Frozen classification rules",
      "bytes": 9445,
      "sha256": "256248ca777cf2d492c161d49663efeab469e183bfc13a040e726137e2723c39"
    },
    {
      "name": "v3-discord-servers",
      "path": "/downloads/classifications/game-families/v3-discord-servers.csv",
      "format": "csv",
      "title": "v3 Discord servers",
      "bytes": 17399,
      "sha256": "aaf51453221a582c066d5db2559ac261032db45b387f98442cac1747666bdc64",
      "recordCount": 46,
      "schema": {
        "fields": [
          {
            "name": "classification_version",
            "type": "string",
            "description": "Identifier of the immutable classification release.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "server_id",
            "type": "string",
            "description": "Stable project identifier, discord- followed by the guild ID.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "discord_guild_id",
            "type": "string",
            "description": "Discord's server identifier, stored as text."
          },
          {
            "name": "server_name",
            "type": "string",
            "description": "Server name returned when the invite was checked."
          },
          {
            "name": "invite_url",
            "type": "string",
            "description": "Public invite; its token is not the server identity."
          },
          {
            "name": "member_count_url",
            "type": "string",
            "description": "Public invite lookup requesting approximate membership for a later check."
          },
          {
            "name": "source_url",
            "type": "string",
            "description": "Public page advertising the invite, or the server's public self-description."
          },
          {
            "name": "community_type",
            "type": "string",
            "description": "publisher, creator, or fan."
          },
          {
            "name": "audience_scope",
            "type": "string",
            "description": "game, family, publisher, or multi_game; describes the wider audience."
          },
          {
            "name": "checked_on",
            "type": "string",
            "description": "ISO date on which the invite identity and public evidence were checked."
          },
          {
            "name": "verification_status",
            "type": "string",
            "description": "invite_resolved; does not claim an internal-channel audit."
          },
          {
            "name": "notes",
            "type": "string",
            "description": "Scope, edition limits, and source qualifications."
          }
        ],
        "primaryKey": [
          "server_id"
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "v3-discord-mappings",
      "path": "/downloads/classifications/game-families/v3-discord-mappings.csv",
      "format": "csv",
      "title": "v3 Discord mappings",
      "bytes": 37822,
      "sha256": "ec3f395121b898ab57874bb5a27e38620fd34ae57c9c3358bed5be9547cc35ec",
      "recordCount": 148,
      "schema": {
        "fields": [
          {
            "name": "classification_version",
            "type": "string",
            "description": "Identifier of the immutable classification release.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "target_type",
            "type": "string",
            "description": "system or family; selects the ID namespace.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "target_id",
            "type": "string",
            "description": "A system or family ID from the same v2 release.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "server_id",
            "type": "string",
            "description": "Reference to one server registry record.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "scope",
            "type": "string",
            "description": "system for a direct system link; family_subset for its explicit family crosswalk; family for independently evidenced whole-family coverage."
          },
          {
            "name": "evidence_url",
            "type": "string",
            "description": "Evidence for the system's relevance. Family links use this evidence plus the bundled family CSV."
          },
          {
            "name": "checked_on",
            "type": "string",
            "description": "ISO date of the association review."
          },
          {
            "name": "notes",
            "type": "string",
            "description": "Scope explanation; family links list the member systems they cover."
          }
        ],
        "primaryKey": [
          "target_type",
          "target_id",
          "server_id"
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "v3-reddit-communities",
      "path": "/downloads/classifications/game-families/v3-reddit-communities.csv",
      "format": "csv",
      "title": "v3 Reddit communities",
      "bytes": 61925,
      "sha256": "1b04800a16a772c3b40f1cc8a5244a5163d2cd460a4e7dc1877caca9e9fb319c",
      "recordCount": 105,
      "schema": {
        "fields": [
          {
            "name": "classification_version",
            "type": "string",
            "description": "Identifier of the immutable classification release.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "community_id",
            "type": "string",
            "description": "Stable project ID: reddit- plus the lowercase subreddit name.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "reddit_fullname",
            "type": "string",
            "description": "Reddit's t5_… community identifier when retrieved; empty when unavailable."
          },
          {
            "name": "subreddit_name",
            "type": "string",
            "description": "Public handle without r/; compare names case-insensitively."
          },
          {
            "name": "community_title",
            "type": "string",
            "description": "Community title from reviewed public evidence."
          },
          {
            "name": "subreddit_url",
            "type": "string",
            "description": "Public https://www.reddit.com/r/<name>/ link."
          },
          {
            "name": "subscriber_count_url",
            "type": "string",
            "description": "Subreddit-about JSON endpoint for a later subscriber lookup."
          },
          {
            "name": "oauth_subscriber_count_url",
            "type": "string",
            "description": "Equivalent OAuth API resource; requires authorized access."
          },
          {
            "name": "subscriber_lookup_status",
            "type": "string",
            "description": "not_live_verified; no successful live subscriber lookup is claimed."
          },
          {
            "name": "source_url",
            "type": "string",
            "description": "Reviewed primary public evidence: community page, metadata or discussion."
          },
          {
            "name": "discovery_url",
            "type": "string",
            "description": "Discovery source, often the public r/rpg directory."
          },
          {
            "name": "audience_scope",
            "type": "string",
            "description": "game, family, multi_game or publisher; wider audiences remain shared."
          },
          {
            "name": "subreddit_type",
            "type": "string",
            "description": "public, publicly readable restricted, or not_recorded."
          },
          {
            "name": "checked_on",
            "type": "string",
            "description": "Evidence-review date, not a live count observation date."
          },
          {
            "name": "verification_status",
            "type": "string",
            "description": "public_page_reviewed or public_metadata_reviewed; cached evidence may be included."
          },
          {
            "name": "notes",
            "type": "string",
            "description": "Scope limits, edition details, evidence method and gaps."
          }
        ],
        "primaryKey": [
          "community_id"
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "v3-reddit-mappings",
      "path": "/downloads/classifications/game-families/v3-reddit-mappings.csv",
      "format": "csv",
      "title": "v3 Reddit mappings",
      "bytes": 58076,
      "sha256": "e0cf08d933180bcdbbef047fcebdd9ac82462558897ac4a9afd061e58851686f",
      "recordCount": 216,
      "schema": {
        "fields": [
          {
            "name": "classification_version",
            "type": "string",
            "description": "Identifier of the immutable classification release.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "target_type",
            "type": "string",
            "description": "system or family.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "target_id",
            "type": "string",
            "description": "A system or family ID in this same release.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "community_id",
            "type": "string",
            "description": "A registry ID in this same release.",
            "constraints": {
              "required": true
            }
          },
          {
            "name": "scope",
            "type": "string",
            "description": "system, family_subset through named systems, or independently evidenced whole family."
          },
          {
            "name": "evidence_url",
            "type": "string",
            "description": "Public source supporting the association."
          },
          {
            "name": "checked_on",
            "type": "string",
            "description": "Evidence-review date."
          },
          {
            "name": "notes",
            "type": "string",
            "description": "Scope limits or the systems supporting a subset association."
          }
        ],
        "primaryKey": [
          "target_type",
          "target_id",
          "community_id"
        ],
        "missingValues": [
          ""
        ]
      }
    }
  ],
  "methodology": "https://rpg-data-project.org/methodology/",
  "website": "https://rpg-data-project.org/classifications/game-families/v3/",
  "kind": "classification",
  "descriptor": "/downloads/catalogue/game-families-v3/datapackage.json"
}
