{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Agent Reliability Lab sequential native run bundle, edition 1",
  "description": "Format reference. engine.mjs additionally enforces unique IDs, sequential timing, evidence consistency, finite values and bundle limits. This is not OTLP.",
  "type": "object",
  "required": ["schemaVersion", "runs"],
  "properties": {
    "schemaVersion": {"const": 1},
    "runs": {"type": "array", "minItems": 1, "maxItems": 200, "items": {"$ref": "#/$defs/run"}}
  },
  "$defs": {
    "run": {
      "type": "object",
      "required": ["schemaVersion", "caseId", "policy", "mode", "request", "contract", "durationMs", "steps", "output"],
      "properties": {
        "schemaVersion": {"const": 1},
        "caseId": {"type": "string", "minLength": 1, "maxLength": 160},
        "policy": {"type": "string", "minLength": 1, "maxLength": 100},
        "mode": {"enum": ["fixture", "recorded"]},
        "durationMs": {"type": "number", "minimum": 0, "maximum": 86400000},
        "request": {
          "type": "object", "required": ["tool", "operation", "args"],
          "properties": {"tool": {"type": "string"}, "operation": {"enum": ["read", "write"]}, "args": {"type": "object", "required": ["metric", "window"], "properties": {"metric": {"type": "string"}, "window": {"type": "string"}}}}
        },
        "contract": {
          "type": "object", "required": ["disposition", "maxCalls"],
          "properties": {"disposition": {"enum": ["answer", "abstain", "escalate"]}, "maxCalls": {"type": "integer", "minimum": 1, "maximum": 100}, "expectedValue": {"type": "number"}}
        },
        "steps": {"type": "array", "maxItems": 100, "items": {"$ref": "#/$defs/step"}},
        "output": {"type": "object", "required": ["disposition", "evidenceIds"], "properties": {"disposition": {"enum": ["answer", "abstain", "escalate"]}, "value": {"type": "number"}, "evidenceIds": {"type": "array", "uniqueItems": true, "items": {"type": "string"}}}}
      }
    },
    "step": {
      "type": "object", "required": ["id", "kind", "status", "startedMs", "endedMs"],
      "properties": {"id": {"type": "string", "minLength": 1}, "kind": {"enum": ["tool", "decision"]}, "tool": {"type": "string"}, "operation": {"enum": ["read", "write"]}, "args": {"type": "object"}, "status": {"enum": ["ok", "timeout", "error", "blocked"]}, "startedMs": {"type": "number", "minimum": 0}, "endedMs": {"type": "number", "minimum": 0}, "result": {"type": "object", "properties": {"value": {"type": ["number", "null"]}, "rows": {"type": "integer"}, "metric": {"type": "string"}, "window": {"type": "string"}, "source": {"type": "string"}}}}
    }
  }
}
