{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schemas.corva.ai/fe-ai-tools/interaction-observations/v1",
  "type": "object",
  "additionalProperties": false,
  "required": ["schemaVersion", "observations"],
  "properties": {
    "schemaVersion": { "const": 1 },
    "observations": {
      "type": "array",
      "items": {
        "type": "object", "additionalProperties": false,
        "required": ["repository", "report", "reportDigest", "turns", "toolCalls", "recoveries", "guessedParameters", "contextOnlyAnswers", "zeroToolFailures", "tokens", "defectClasses"],
        "properties": {
          "repository": { "type": "string", "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$" },
          "report": { "type": "string", "pattern": "^(?!/)(?!.*(?:^|/)\\.{1,2}(?:/|$))[A-Za-z0-9._@/-]+$" },
          "reportDigest": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
          "turns": { "type": "integer", "minimum": 0 }, "toolCalls": { "type": "integer", "minimum": 0 },
          "recoveries": { "type": "integer", "minimum": 0 }, "guessedParameters": { "type": "integer", "minimum": 0 },
          "contextOnlyAnswers": { "type": "integer", "minimum": 0 }, "zeroToolFailures": { "type": "integer", "minimum": 0 },
          "tokens": { "type": "integer", "minimum": 0 },
          "sendToFirstEventMsP50": { "type": "integer", "minimum": 0 },
          "defectClasses": { "type": "array", "uniqueItems": true, "items": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" } }
        }
      }
    }
  }
}
