{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://kaldenframelabs.com/schemas/temporal-boundary-audit-report-v1.schema.json",
  "title": "KaldenFrame Temporal Boundary Audit Report v1",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema", "tool", "audit_id", "status", "contract_sha256", "input_policy", "inputs", "joins", "findings", "limitations"],
  "properties": {
    "schema": { "const": "kaldenframe.temporal-boundary-audit-report.v1" },
    "tool": {
      "type": "object",
      "additionalProperties": false,
      "required": ["name", "version"],
      "properties": {
        "name": { "const": "KaldenFrame Temporal Boundary Auditor" },
        "version": { "type": "string" }
      }
    },
    "audit_id": { "type": "string" },
    "status": { "enum": ["PASS", "WARN", "FAIL"] },
    "contract_sha256": { "type": "string", "pattern": "^[A-F0-9]{64}$" },
    "input_policy": { "type": "object" },
    "inputs": { "type": "array", "minItems": 2, "items": { "type": "object" } },
    "joins": { "type": "array", "minItems": 1, "items": { "type": "object" } },
    "findings": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["rule_id", "severity", "dataset_id", "count", "description"],
        "properties": {
          "rule_id": { "type": "string" },
          "severity": { "enum": ["ERROR", "WARN"] },
          "dataset_id": { "type": "string" },
          "count": { "type": "integer", "minimum": 1 },
          "description": { "type": "string" }
        }
      }
    },
    "limitations": { "type": "array", "minItems": 3, "items": { "type": "string" } }
  }
}
