{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Executor Output",
  "type": "object",
  "required": [
    "task_id",
    "plan_ref",
    "status",
    "changed_files",
    "guard_evidence",
    "commands",
    "quality_gate_results",
    "test_results",
    "open_items"
  ],
  "properties": {
    "task_id": { "type": "string", "minLength": 1 },
    "plan_ref": { "type": "string", "minLength": 1 },
    "status": { "type": "string", "enum": ["done", "blocked"] },
    "changed_files": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["path", "summary"],
        "properties": {
          "path": { "type": "string", "minLength": 1 },
          "summary": { "type": "string", "minLength": 1 }
        },
        "additionalProperties": false
      }
    },
    "guard_evidence": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": ["guard_id", "status", "evidence"],
        "properties": {
          "guard_id": {
            "type": "string",
            "pattern": "^GR-(CORE|TEST|UI|SEC)-[A-Z0-9]{3,}$"
          },
          "status": { "type": "string", "enum": ["pass", "fail", "n/a"] },
          "evidence": { "type": "string", "minLength": 1 }
        },
        "additionalProperties": false
      }
    },
    "commands": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["cmd", "result"],
        "properties": {
          "cmd": { "type": "string", "minLength": 1 },
          "result": { "type": "string", "enum": ["pass", "fail", "skipped"] }
        },
        "additionalProperties": false
      }
    },
    "quality_gate_results": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": ["gate_id", "result"],
        "properties": {
          "gate_id": {
            "type": "string",
            "pattern": "^QG-[0-9]{3}$"
          },
          "result": { "type": "string", "enum": ["pass", "fail", "skipped"] },
          "notes": { "type": "string" }
        },
        "additionalProperties": false
      }
    },
    "test_results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["name", "result"],
        "properties": {
          "name": { "type": "string", "minLength": 1 },
          "result": { "type": "string", "enum": ["pass", "fail", "skipped"] },
          "notes": { "type": "string" }
        },
        "additionalProperties": false
      }
    },
    "open_items": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "additionalProperties": false
}
