{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://click-dog.com/schemas/analysis-baseline-v1.schema.json",
  "title": "Click-Dog Query Analysis Baseline",
  "description": "Privacy-minimized exact-hash snapshot used for deterministic query-analysis comparison.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "baseline_id",
    "created_at",
    "window",
    "compatibility",
    "groups"
  ],
  "properties": {
    "schema_version": { "const": "analysis.baseline.v1" },
    "baseline_id": { "type": "string", "pattern": "^bl_[0-9a-f]{16}$" },
    "created_at": { "type": "string", "format": "date-time" },
    "window": { "$ref": "#/$defs/window" },
    "compatibility": { "$ref": "#/$defs/compatibility" },
    "groups": {
      "type": "array",
      "minItems": 1,
      "items": { "$ref": "#/$defs/exact_group" }
    }
  },
  "$defs": {
    "window": {
      "type": "object",
      "additionalProperties": false,
      "required": ["start", "end"],
      "properties": {
        "start": { "type": "string", "format": "date-time" },
        "end": { "type": "string", "format": "date-time" }
      }
    },
    "compatibility": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "family_algorithm_version",
        "similarity_threshold",
        "filter_fingerprint",
        "min_executions",
        "family_limit",
        "query_preview_length",
        "normalized_query_supported",
        "query_family_rollups_supported"
      ],
      "properties": {
        "family_algorithm_version": { "type": "string", "minLength": 1 },
        "similarity_threshold": { "type": "number", "exclusiveMinimum": 0, "maximum": 1 },
        "filter_fingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
        "min_executions": { "type": "integer", "minimum": 1 },
        "family_limit": { "type": "integer", "minimum": 1 },
        "query_preview_length": { "type": "integer", "minimum": 1 },
        "normalized_query_supported": { "const": true },
        "query_family_rollups_supported": { "const": true }
      }
    },
    "exact_group": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "normalized_query_hash",
        "family_id",
        "execution_count",
        "successful_count",
        "failed_count",
        "failure_rate",
        "p95_duration_ms",
        "p99_duration_ms",
        "top_exceptions"
      ],
      "properties": {
        "normalized_query_hash": { "type": "string", "pattern": "^[1-9][0-9]*$" },
        "family_id": { "type": "string", "minLength": 1 },
        "execution_count": { "type": "integer", "minimum": 0 },
        "successful_count": { "type": "integer", "minimum": 0 },
        "failed_count": { "type": "integer", "minimum": 0 },
        "failure_rate": { "type": "number", "minimum": 0, "maximum": 1 },
        "p95_duration_ms": { "type": "number", "minimum": 0 },
        "p99_duration_ms": { "type": "number", "minimum": 0 },
        "top_exceptions": {
          "type": "array",
          "maxItems": 5,
          "items": { "$ref": "#/$defs/exception_count" }
        }
      }
    },
    "exception_count": {
      "type": "object",
      "additionalProperties": false,
      "required": ["code", "count"],
      "properties": {
        "code": { "type": "integer" },
        "count": { "type": "integer", "minimum": 1 }
      }
    }
  }
}
