{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://getzero.dev/contracts/zero.engine.native_dimension_readback.v1.schema.json",
  "title": "ZERO native Runtime dimension readback v1",
  "description": "Public read-only contract for app-owned Runtime dimension readbacks generated from public-safe live-Runtime-bus harvests.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "kind",
    "public",
    "generated_at",
    "venue",
    "endpoint",
    "contract_schema",
    "source",
    "source_schema_version",
    "upstream_dependency",
    "can_execute_orders",
    "can_mutate_runtime",
    "dimension_id",
    "label",
    "native_route_status",
    "retained_status",
    "sample_count",
    "required_min_samples",
    "samples",
    "redaction_policy",
    "operator_summary",
    "freshness_policy"
  ],
  "properties": {
    "schema_version": { "const": "zero.engine.native_dimension_readback.v1" },
    "kind": { "const": "engine_native_dimension_readback" },
    "public": { "const": true },
    "generated_at": { "type": "string", "format": "date-time" },
    "venue": { "const": "Hyperliquid perpetuals" },
    "endpoint": {
      "enum": [
        "https://getzero.dev/api/runtime?q=immune",
        "https://getzero.dev/api/runtime?q=circuit-breaker",
        "https://getzero.dev/api/runtime?q=rejections",
        "https://getzero.dev/api/runtime?q=near-misses",
        "https://getzero.dev/api/runtime?q=execution-quality"
      ]
    },
    "contract_schema": { "const": "https://getzero.dev/contracts/zero.engine.native_dimension_readback.v1.schema.json" },
    "source": { "const": "generated_public_harvest" },
    "source_schema_version": { "const": "zero.engine.retained_evidence.v1" },
    "upstream_dependency": { "const": false },
    "can_execute_orders": { "const": false },
    "can_mutate_runtime": { "const": false },
    "dimension_id": {
      "enum": [
        "immune_system",
        "circuit_breaker",
        "refusals",
        "near_misses",
        "execution_quality"
      ]
    },
    "label": { "type": "string", "minLength": 4 },
    "native_route_status": { "enum": ["ready", "samples_insufficient"] },
    "retained_status": { "enum": ["samples_ready", "producer_available_samples_insufficient"] },
    "sample_count": { "type": "integer", "minimum": 0 },
    "required_min_samples": { "const": 3 },
    "samples": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "id",
          "sampled_at",
          "source_artifacts",
          "public_refs",
          "summary",
          "redaction"
        ],
        "properties": {
          "id": { "type": "string", "minLength": 8 },
          "sampled_at": { "type": "string" },
          "source_artifacts": {
            "type": "array",
            "minItems": 1,
            "items": { "type": "string", "minLength": 8 }
          },
          "public_refs": {
            "type": "array",
            "minItems": 1,
            "items": { "type": "string", "pattern": "^https://getzero\\.dev/" }
          },
          "summary": { "type": "object" },
          "redaction": { "const": "public_safe_no_secrets" }
        }
      }
    },
    "redaction_policy": { "type": "string", "pattern": "private keys" },
    "operator_summary": { "type": "string", "minLength": 80 },
    "freshness_policy": {
      "type": "object",
      "additionalProperties": false,
      "required": ["retained_window_days", "enforced_by", "next_blocker"],
      "properties": {
        "retained_window_days": { "type": "integer", "minimum": 1, "maximum": 14 },
        "enforced_by": { "const": "https://getzero.dev/api/ops/engine-evidence-cadence" },
        "next_blocker": { "const": "recurring_public_decision_artifacts_missing" }
      }
    }
  },
  "allOf": [
    {
      "if": {
        "type": "object",
        "required": ["native_route_status"],
        "properties": {
          "native_route_status": { "const": "ready" }
        }
      },
      "then": {
        "properties": {
          "retained_status": { "const": "samples_ready" },
          "sample_count": { "type": "integer", "minimum": 3 },
          "samples": { "type": "array", "minItems": 3 }
        }
      }
    }
  ]
}
