{
  "name": "Game families & Discord · version 2",
  "description": "A combined release of the system-to-family mapping and researched public Discord server associations.",
  "version": "v2",
  "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-v2",
  "resources": [
    {
      "name": "v2",
      "path": "/downloads/classifications/game-families/v2.csv",
      "format": "csv",
      "title": "v2 Game family assignments",
      "bytes": 68974,
      "sha256": "1eff125118a1d4f5737f3eb3c4075168d118f1176a86a383ca9a2a2c6275b34b",
      "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": "v2",
      "path": "/downloads/classifications/game-families/v2.json",
      "format": "json",
      "title": "v2 Original release manifest",
      "bytes": 4726,
      "sha256": "869661504be1714c866a9b01f7b37c9805cb84156763982428148d79771f69fb"
    },
    {
      "name": "v2-rules",
      "path": "/downloads/classifications/game-families/v2-rules.json",
      "format": "json",
      "title": "v2 Frozen classification rules",
      "bytes": 6867,
      "sha256": "04823dcccf2c915c97f649b27955b64c486da4354a050fb7ce4f6302997f0dad"
    },
    {
      "name": "v2-discord-servers",
      "path": "/downloads/classifications/game-families/v2-discord-servers.csv",
      "format": "csv",
      "title": "v2 Discord servers",
      "bytes": 17399,
      "sha256": "7e1713e56f3f362cce6e12d156b6262ac3be0fa77b59526b1a0ebe4d1ccfe836",
      "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": "v2-discord-mappings",
      "path": "/downloads/classifications/game-families/v2-discord-mappings.csv",
      "format": "csv",
      "title": "v2 Discord mappings",
      "bytes": 37822,
      "sha256": "168c7d5db38e7029e82459627563e0114973667f8561979f58dfb31f54217bdf",
      "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": [
          ""
        ]
      }
    }
  ],
  "methodology": "https://rpg-data-project.org/methodology/",
  "website": "https://rpg-data-project.org/classifications/game-families/v2/",
  "kind": "classification",
  "descriptor": "/downloads/catalogue/game-families-v2/datapackage.json"
}
