{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://compo.kluchna24.ru/poster_engine/vision_bridge_qualification.schema.json",
  "title": "COMPO Vision Bridge Qualification",
  "type": "object",
  "additionalProperties": false,
  "required": ["qualification_id", "status", "backend", "input", "observation", "publication", "canon_mutation_allowed"],
  "properties": {
    "qualification_id": {"type": "string", "pattern": "^vision-bridge-[a-z0-9-]+$"},
    "status": {"type": "string", "enum": ["PASS", "PARTIAL", "FAIL"]},
    "backend": {"type": "string", "enum": ["ollama_vision", "local_fallback", "unknown"]},
    "input": {"type": "object", "additionalProperties": false, "required": ["asset_ref", "mime_type", "width", "height"], "properties": {"asset_ref": {"type": "string"}, "mime_type": {"type": "string"}, "width": {"type": "integer", "minimum": 1}, "height": {"type": "integer", "minimum": 1}}},
    "observation": {"type": "object", "additionalProperties": false, "required": ["description", "main_subject", "palette", "balance", "negative_space"], "properties": {"description": {"type": "string"}, "main_subject": {"type": "string"}, "palette": {"type": "array", "items": {"type": "string"}}, "balance": {"type": "string"}, "negative_space": {"type": "string"}}},
    "publication": {"const": "OWNER_PRIVATE"},
    "canon_mutation_allowed": {"const": false},
    "notes": {"type": "array", "items": {"type": "string"}}
  }
}
