{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "adjudication_run_id": {
      "pattern": "^adj_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
      "type": "string"
    },
    "decided_at": {
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      "type": "string"
    },
    "excerpt_evidence": {
      "anyOf": [
        {
          "properties": {
            "sha256": {
              "pattern": "^[0-9a-f]{64}$",
              "type": "string"
            },
            "size_bytes": {
              "maximum": 9007199254740991,
              "minimum": 0,
              "type": "integer"
            },
            "uri": {
              "minLength": 1,
              "type": "string"
            }
          },
          "required": [
            "uri",
            "sha256",
            "size_bytes"
          ],
          "type": "object"
        },
        {
          "type": "null"
        }
      ]
    },
    "finding_id": {
      "pattern": "^fnd_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
      "type": "string"
    },
    "output_evidence": {
      "anyOf": [
        {
          "properties": {
            "sha256": {
              "pattern": "^[0-9a-f]{64}$",
              "type": "string"
            },
            "size_bytes": {
              "maximum": 9007199254740991,
              "minimum": 0,
              "type": "integer"
            },
            "uri": {
              "minLength": 1,
              "type": "string"
            }
          },
          "required": [
            "uri",
            "sha256",
            "size_bytes"
          ],
          "type": "object"
        },
        {
          "type": "null"
        }
      ]
    },
    "pipeline_run_id": {
      "pattern": "^pipe_[0-7][0123456789abcdefghjkmnpqrstvwxyz]{25}$",
      "type": "string"
    },
    "prompt_hash": {
      "pattern": "^[0-9a-f]{64}$",
      "type": "string"
    },
    "reason": {
      "enum": [
        "sanitized_input",
        "test_fixture",
        "dead_code",
        "not_reachable",
        "sink_reachable",
        "no_sanitizer",
        "pattern_only",
        "model_error",
        "budget_exhausted",
        "excerpt_missing",
        "timeout"
      ],
      "type": "string"
    },
    "verdict": {
      "enum": [
        "false_positive",
        "confirmed",
        "inconclusive"
      ],
      "type": "string"
    }
  },
  "required": [
    "pipeline_run_id",
    "finding_id",
    "adjudication_run_id",
    "verdict",
    "reason",
    "prompt_hash",
    "excerpt_evidence",
    "output_evidence",
    "decided_at"
  ],
  "type": "object"
}
