{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://kiduna.ai/schemas/isometric/validation.schema.json",
  "title": "Kiduna Component Validation Record",
  "type": "object",
  "additionalProperties": false,
  "required": ["id", "componentId", "componentVersion", "testedAt", "validator", "hardGates", "scores", "total", "fixtures", "decision", "notes"],
  "properties": {
    "id": { "type": "string" }, "componentId": { "type": "string" }, "componentVersion": { "type": "string" }, "testedAt": { "type": "string", "format": "date-time" }, "validator": { "type": "string" },
    "hardGates": { "type": "object", "additionalProperties": false, "required": ["schema", "alpha", "projection", "anchors", "scale", "light", "rights", "accessibility"], "properties": { "schema": { "type": "boolean" }, "alpha": { "type": "boolean" }, "projection": { "type": "boolean" }, "anchors": { "type": "boolean" }, "scale": { "type": "boolean" }, "light": { "type": "boolean" }, "rights": { "type": "boolean" }, "accessibility": { "type": "boolean" } } },
    "scores": { "type": "object", "additionalProperties": false, "required": ["projectionAnchors", "scaleFootprint", "paletteMaterials", "worldLighting", "shadowContact", "detailEdge", "atmosphereOrnament", "alphaRuntime", "statesInteraction", "accessibility"], "properties": { "projectionAnchors": { "type": "number", "minimum": 0, "maximum": 20 }, "scaleFootprint": { "type": "number", "minimum": 0, "maximum": 10 }, "paletteMaterials": { "type": "number", "minimum": 0, "maximum": 15 }, "worldLighting": { "type": "number", "minimum": 0, "maximum": 15 }, "shadowContact": { "type": "number", "minimum": 0, "maximum": 10 }, "detailEdge": { "type": "number", "minimum": 0, "maximum": 10 }, "atmosphereOrnament": { "type": "number", "minimum": 0, "maximum": 8 }, "alphaRuntime": { "type": "number", "minimum": 0, "maximum": 7 }, "statesInteraction": { "type": "number", "minimum": 0, "maximum": 3 }, "accessibility": { "type": "number", "minimum": 0, "maximum": 2 } } },
    "total": { "type": "number", "minimum": 0, "maximum": 100 },
    "fixtures": { "type": "array", "minItems": 2, "items": { "type": "object", "additionalProperties": false, "required": ["sceneId", "result"], "properties": { "sceneId": { "type": "string" }, "result": { "enum": ["pass", "variance", "fail"] }, "note": { "type": "string" } } } },
    "decision": { "enum": ["accept", "accept-with-variance", "repair", "reject"] }, "notes": { "type": "string" }
  }
}
