{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://wildflower.computer/schemas/sdk-live-benchmark-result.schema.json",
  "title": "Wildflower live provider SDK benchmark result",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schemaVersion",
    "benchmark",
    "description",
    "sourceCommit",
    "sourceDirty",
    "generatedAt",
    "outcome",
    "provider",
    "configuration",
    "methodology",
    "environment",
    "lifecycle",
    "results"
  ],
  "properties": {
    "schemaVersion": {
      "const": 1
    },
    "benchmark": {
      "const": "wildflower-sdk-live-provider"
    },
    "description": {
      "type": "string"
    },
    "sourceCommit": {
      "type": "string",
      "pattern": "^[0-9a-f]{40}$"
    },
    "sourceDirty": {
      "type": "boolean"
    },
    "generatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "outcome": {
      "enum": [
        "passed",
        "failed"
      ]
    },
    "failure": {
      "type": "string",
      "maxLength": 500
    },
    "provider": {
      "enum": [
        "blaxel",
        "box",
        "e2b",
        "novita",
        "daytona",
        "runloop",
        "smol",
        "sprites"
      ]
    },
    "configuration": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "warmupIterations",
        "iterations",
        "sandboxTimeoutSeconds",
        "languages"
      ],
      "properties": {
        "warmupIterations": {
          "type": "integer",
          "minimum": 0,
          "maximum": 20
        },
        "iterations": {
          "type": "integer",
          "minimum": 1,
          "maximum": 20
        },
        "sandboxTimeoutSeconds": {
          "type": "integer",
          "minimum": 60,
          "maximum": 900
        },
        "languages": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "$ref": "#/$defs/language"
          }
        }
      }
    },
    "methodology": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "targetOrigin",
        "lifecycle",
        "sdk",
        "safety"
      ],
      "properties": {
        "targetOrigin": {
          "type": "string",
          "format": "uri"
        },
        "lifecycle": {
          "type": "string"
        },
        "sdk": {
          "type": "string"
        },
        "safety": {
          "type": "string"
        }
      }
    },
    "environment": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "platform",
        "release",
        "architecture",
        "logicalCpuCount",
        "cpuModel"
      ],
      "properties": {
        "platform": {
          "type": "string"
        },
        "release": {
          "type": "string"
        },
        "architecture": {
          "type": "string"
        },
        "logicalCpuCount": {
          "type": "integer",
          "minimum": 1
        },
        "cpuModel": {
          "type": "string"
        }
      }
    },
    "lifecycle": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "cleanupRequired",
        "cleanupConfirmed",
        "measurements"
      ],
      "properties": {
        "cleanupRequired": {
          "type": "boolean"
        },
        "cleanupConfirmed": {
          "type": "boolean"
        },
        "measurements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/lifecycleMeasurement"
          }
        }
      }
    },
    "results": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/languageResult"
      }
    }
  },
  "$defs": {
    "language": {
      "enum": [
        "typescript",
        "python",
        "rust",
        "go",
        "zig"
      ]
    },
    "providerDuration": {
      "oneOf": [
        {
          "type": "number",
          "minimum": 0
        },
        {
          "type": "null"
        }
      ]
    },
    "serverTiming": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "wildflower",
        "app",
        "provider"
      ],
      "properties": {
        "wildflower": {
          "type": "number",
          "minimum": 0
        },
        "app": {
          "type": "number",
          "minimum": 0
        },
        "provider": {
          "$ref": "#/$defs/providerDuration"
        }
      }
    },
    "lifecycleMeasurement": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "operation",
        "status",
        "wallMicroseconds",
        "serverTimingMicroseconds"
      ],
      "properties": {
        "operation": {
          "enum": [
            "create",
            "get",
            "runCommand",
            "delete",
            "deleteConfirmation"
          ]
        },
        "status": {
          "type": "integer",
          "minimum": 100,
          "maximum": 599
        },
        "wallMicroseconds": {
          "type": "number",
          "minimum": 0
        },
        "serverTimingMicroseconds": {
          "$ref": "#/$defs/serverTiming"
        }
      }
    },
    "summary": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "min",
        "p50",
        "p95",
        "p99",
        "max",
        "mean"
      ],
      "properties": {
        "min": {
          "type": "number",
          "minimum": 0
        },
        "p50": {
          "type": "number",
          "minimum": 0
        },
        "p95": {
          "type": "number",
          "minimum": 0
        },
        "p99": {
          "type": "number",
          "minimum": 0
        },
        "max": {
          "type": "number",
          "minimum": 0
        },
        "mean": {
          "type": "number",
          "minimum": 0
        }
      }
    },
    "sdkMeasurement": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "operation",
        "phase",
        "samples",
        "wallMicroseconds"
      ],
      "properties": {
        "operation": {
          "enum": [
            "get",
            "runCommand"
          ]
        },
        "phase": {
          "const": "warm"
        },
        "samples": {
          "type": "integer",
          "minimum": 1,
          "maximum": 20
        },
        "wallMicroseconds": {
          "$ref": "#/$defs/summary"
        }
      }
    },
    "languageResult": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "language",
        "sdkVersion",
        "runtime",
        "measurements"
      ],
      "properties": {
        "language": {
          "$ref": "#/$defs/language"
        },
        "sdkVersion": {
          "type": "string"
        },
        "runtime": {
          "type": "string"
        },
        "measurements": {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "$ref": "#/$defs/sdkMeasurement"
          }
        }
      }
    }
  }
}
