{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://iarpg.com/country-context-composer-config.schema.json",
  "title": "IARPG Country Context Composer configuration",
  "type": "object",
  "required": [
    "$schema",
    "id",
    "release",
    "version",
    "status",
    "truth_boundary",
    "archival_source",
    "public_lenses",
    "required_sections",
    "source_types",
    "perspective_origins",
    "confidence_levels",
    "review_states",
    "countries",
    "counts"
  ],
  "properties": {
    "$schema": {
      "const": "https://iarpg.com/country-context-composer-config.schema.json"
    },
    "id": {
      "const": "https://iarpg.com/country-context-composer-config.json"
    },
    "release": {
      "const": "IARPG-OPS-2"
    },
    "version": {
      "const": "2.0.21-wip"
    },
    "status": {
      "const": "work-in-progress-country-context-authoring-config"
    },
    "updated_utc": {
      "type": "string",
      "format": "date-time"
    },
    "truth_boundary": {
      "type": "string",
      "minLength": 80
    },
    "archival_source": {
      "type": "object",
      "required": [
        "dataset",
        "index",
        "audit",
        "snapshot_year",
        "profile_count",
        "roadmap_country_count",
        "source_code_collision_count",
        "source_code_rule",
        "state_of_palestine_rule"
      ],
      "properties": {
        "dataset": {
          "const": "/world-context-2025.json"
        },
        "index": {
          "const": "/world-context-2025-index.json"
        },
        "audit": {
          "const": "/world-context-2025-audit.json"
        },
        "snapshot_year": {
          "const": 2025
        },
        "profile_count": {
          "const": 260
        },
        "roadmap_country_count": {
          "const": 195
        },
        "source_code_collision_count": {
          "const": 8
        },
        "source_code_rule": {
          "type": "string",
          "minLength": 20
        },
        "state_of_palestine_rule": {
          "type": "string",
          "minLength": 20
        }
      },
      "additionalProperties": false
    },
    "public_lenses": {
      "type": "array",
      "minItems": 6,
      "maxItems": 6,
      "items": {
        "type": "object",
        "required": [
          "id",
          "label",
          "description"
        ]
      }
    },
    "required_sections": {
      "type": "array",
      "minItems": 10,
      "items": {
        "type": "object",
        "required": [
          "id",
          "label"
        ]
      }
    },
    "source_types": {
      "type": "array",
      "minItems": 10,
      "items": {
        "type": "object",
        "required": [
          "id",
          "label",
          "authority_weight"
        ]
      }
    },
    "perspective_origins": {
      "type": "array",
      "minItems": 5,
      "items": {
        "type": "object",
        "required": [
          "id",
          "label"
        ]
      }
    },
    "confidence_levels": {
      "type": "array",
      "minItems": 5,
      "items": {
        "type": "object",
        "required": [
          "id",
          "label"
        ]
      }
    },
    "review_states": {
      "type": "array",
      "minItems": 5,
      "items": {
        "type": "object",
        "required": [
          "id",
          "label"
        ]
      }
    },
    "adjective_review_terms": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "threat_framing_terms": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "prohibited_inferences": {
      "type": "array",
      "minItems": 3,
      "items": {
        "type": "string"
      }
    },
    "publication_requirements": {
      "type": "array",
      "minItems": 8,
      "items": {
        "type": "string"
      }
    },
    "countries": {
      "type": "array",
      "minItems": 195,
      "maxItems": 195,
      "items": {
        "type": "object",
        "required": [
          "country",
          "region",
          "coverage_status",
          "archival_source_entities",
          "archival_entity_ids",
          "archival_profile_urls",
          "source_component_count",
          "composer_status"
        ],
        "properties": {
          "country": {
            "type": "string",
            "minLength": 1
          },
          "region": {
            "type": "string",
            "minLength": 1
          },
          "coverage_status": {
            "type": "string",
            "minLength": 1
          },
          "archival_source_entities": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string"
            }
          },
          "archival_entity_ids": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9-]+$"
            }
          },
          "archival_profile_urls": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string",
              "pattern": "^/world-context/entities/[a-z0-9-]+\\.json$"
            }
          },
          "source_component_count": {
            "type": "integer",
            "minimum": 1
          },
          "composer_status": {
            "const": "available-for-current-context-proposal"
          }
        },
        "additionalProperties": false
      }
    },
    "counts": {
      "type": "object",
      "required": [
        "roadmap_countries",
        "countries_with_archival_context",
        "state_of_palestine_components",
        "source_code_collision_groups",
        "required_sections"
      ],
      "properties": {
        "roadmap_countries": {
          "const": 195
        },
        "countries_with_archival_context": {
          "const": 195
        },
        "state_of_palestine_components": {
          "const": 2
        },
        "source_code_collision_groups": {
          "const": 8
        },
        "required_sections": {
          "const": 10
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
