{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:standards:schema:requirement-prefixes:v2",
  "title": "Requirement prefix and document layer registry",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema_version", "layers", "path_rules"],
  "properties": {
    "schema_version": {"const": 2},
    "layers": {
      "type": "object",
      "additionalProperties": false,
      "required": ["architecture", "infrastructure", "governance"],
      "properties": {
        "architecture": {"$ref": "#/$defs/layer"},
        "infrastructure": {"$ref": "#/$defs/layer"},
        "governance": {"$ref": "#/$defs/layer"}
      }
    },
    "path_rules": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "docs/architecture",
        "docs/infrastructure",
        "docs/governance/clarity.md",
        "docs/governance/standards-manifest.md",
        "docs/governance/deployment-targets.md",
        "docs/governance/layer-boundaries.md"
      ],
      "properties": {
        "docs/architecture": {"const": "architecture"},
        "docs/infrastructure": {"const": "infrastructure"},
        "docs/governance/clarity.md": {"const": "governance"},
        "docs/governance/standards-manifest.md": {
          "const": "architecture"
        },
        "docs/governance/deployment-targets.md": {
          "const": "infrastructure"
        },
        "docs/governance/layer-boundaries.md": {
          "const": "infrastructure"
        }
      }
    }
  },
  "$defs": {
    "layer": {
      "type": "object",
      "additionalProperties": false,
      "required": ["requirement_prefixes"],
      "properties": {
        "requirement_prefixes": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "type": "string",
            "pattern": "^[A-Z][A-Z0-9]*(?:-[A-Z][A-Z0-9]*)+$"
          }
        }
      }
    }
  }
}
