{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Code Reviewer Output",
  "type": "object",
  "required": ["task_id", "verdict", "checked_guard_ids", "checked_quality_gate_ids", "findings"],
  "properties": {
    "task_id": { "type": "string", "minLength": 1 },
    "verdict": { "type": "string", "enum": ["pass", "fail"] },
    "checked_guard_ids": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "pattern": "^GR-(CORE|TEST|UI)-[A-Z0-9]{3,}$"
      }
    },
    "checked_quality_gate_ids": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "pattern": "^QG-[0-9]{3}$"
      }
    },
    "findings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["id", "severity", "rule_ref", "summary", "file"],
        "properties": {
          "id": { "type": "string", "minLength": 1 },
          "severity": { "type": "string", "enum": ["low", "medium", "high", "critical"] },
          "rule_ref": {
            "type": "string",
            "pattern": "^(GR-(CORE|TEST|UI)-[A-Z0-9]{3,}|QG-[0-9]{3})$"
          },
          "summary": { "type": "string", "minLength": 1 },
          "file": { "type": "string", "minLength": 1 },
          "fix_required": { "type": "string" }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
