{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://genesiscode.dev/schemas/genesisbench-observations-v0.1.json",
  "title": "GenesisBench complete observation matrix v0.1",
  "type": "object",
  "additionalProperties": false,
  "required": ["kind", "version", "analysisPlanIdentitySha256", "taskBenchmarkIdentitySha256", "publicationMode", "cohortIdentitySha256", "systems", "epochs", "observations", "contentIdentitySha256"],
  "properties": {
    "kind": {"const": "genesis/genesisbench-observations-v0.1"},
    "version": {"const": "0.1.0"},
    "analysisPlanIdentitySha256": {"$ref": "#/$defs/hash"},
    "taskBenchmarkIdentitySha256": {"$ref": "#/$defs/hash"},
    "publicationMode": {"enum": ["ranked", "unranked-reference-conformance", "unranked-research"]},
    "cohortIdentitySha256": {"$ref": "#/$defs/hash"},
    "systems": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/system"}},
    "epochs": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/id"}},
    "observations": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/observation"}},
    "contentIdentitySha256": {"$ref": "#/$defs/hash"}
  },
  "$defs": {
    "hash": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
    "id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"},
    "system": {"type": "object", "additionalProperties": false, "required": ["id", "modelFamilyId"], "properties": {"id": {"$ref": "#/$defs/id"}, "modelFamilyId": {"$ref": "#/$defs/id"}}},
    "observation": {"type": "object", "additionalProperties": false, "required": ["systemId", "epochId", "caseId", "lineageId", "lineageIdentitySha256", "conditionId", "conditionIdentitySha256", "outcome", "qualityScoreBasisPoints", "reasonCodes"], "properties": {"systemId": {"$ref": "#/$defs/id"}, "epochId": {"$ref": "#/$defs/id"}, "caseId": {"$ref": "#/$defs/id"}, "lineageId": {"$ref": "#/$defs/id"}, "lineageIdentitySha256": {"$ref": "#/$defs/hash"}, "conditionId": {"$ref": "#/$defs/id"}, "conditionIdentitySha256": {"$ref": "#/$defs/hash"}, "outcome": {"enum": ["abstained", "invalid", "missing", "solved", "unsolved"]}, "qualityScoreBasisPoints": {"oneOf": [{"type": "integer", "minimum": 0, "maximum": 10000}, {"type": "null"}]}, "reasonCodes": {"type": "array", "items": {"$ref": "#/$defs/id"}}}}
  }
}
