{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "rule-v1",
  "type": "object",
  "additionalProperties": false,
  "required": ["id", "status", "strength", "applicability", "override", "enforcement", "aliases"],
  "properties": {
    "id": { "type": "string", "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9-]*)+$" },
    "status": { "enum": ["active", "deprecated", "retired"] },
    "strength": { "enum": ["required", "recommended"] },
    "applicability": { "type": "object", "additionalProperties": true },
    "override": { "enum": ["forbidden", "project-overlay", "explicit-task", "project-overlay-or-explicit-task"] },
    "enforcement": { "enum": ["prompt", "mechanical", "hybrid", "documentation"] },
    "aliases": { "type": "array", "items": { "type": "string", "pattern": "^[A-Z][A-Z0-9_]*$" }, "uniqueItems": true },
    "title": { "type": "string" },
    "exceptions": { "type": "string" },
    "examples": { "type": "string" },
    "verification": { "type": "string" },
    "extensions": {
      "type": "object",
      "additionalProperties": false,
      "patternProperties": {
        "^v[1-9][0-9]*$": { "type": "object", "additionalProperties": true }
      }
    }
  }
}
