{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:awoooi:governance-event-v1",
  "title": "AWOOOI Governance Event (v1)",
  "type": "object",
  "required": [
    "status",
    "impact",
    "remediation",
    "actionable"
  ],
  "properties": {
    "status": {
      "type": "string",
      "enum": ["info", "warning", "critical", "violation"]
    },
    "impact": {
      "type": "object",
      "additionalProperties": true,
      "minProperties": 1
    },
    "remediation": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": { "type": "string" }
        },
        "next_action": {
          "type": "string",
          "minLength": 1
        },
        "hint": {
          "type": "string"
        }
      },
      "additionalProperties": true
    },
    "actionable": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": { "type": "string" }
        }
      },
      "additionalProperties": true
    },
    "drifted_count": { "type": "integer", "minimum": 0 },
    "total_playbooks": { "type": "integer", "minimum": 0 },
    "auto_deprecated_count": { "type": "integer", "minimum": 0 },
    "auto_deprecated_ids": {
      "type": "array",
      "items": { "type": "string" }
    },
    "playbook_ids": {
      "type": "array",
      "items": { "type": "string" }
    },
    "stale_count": { "type": "integer", "minimum": 0 },
    "total_count": { "type": "integer", "minimum": 0 },
    "stale_ratio": { "type": "number", "minimum": 0 },
    "stale_days": { "type": "integer", "minimum": 1 },
    "threshold": { "type": "number", "minimum": 0 },
    "failed_count": { "type": "integer", "minimum": 0 },
    "total_checked": { "type": "integer", "minimum": 0 },
    "total_executions": { "type": "integer", "minimum": 0 },
    "failure_rate": { "type": "number", "minimum": 0, "maximum": 1 },
    "hallucination_rate": { "type": "number", "minimum": 0, "maximum": 1 }
  },
  "additionalProperties": true
}
