{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://getzero.dev/contracts/zero.engine.evidence_depth.v1.schema.json",
  "title": "ZERO engine evidence depth v1",
  "description": "Public contract for retained live-engine evidence depth and the exact sample gaps that block launch-grade confidence.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "kind",
    "public",
    "generated_at",
    "venue",
    "contract_url",
    "contract_schema",
    "proof_url",
    "product_url",
    "status",
    "purpose",
    "score_gate",
    "retention_policy",
    "retained_evidence",
    "evidence_dimensions"
  ],
  "properties": {
    "schema_version": { "const": "zero.engine.evidence_depth.v1" },
    "kind": { "const": "engine_evidence_depth_contract" },
    "public": { "const": true },
    "generated_at": { "type": "string", "format": "date-time" },
    "venue": { "const": "Hyperliquid perpetuals" },
    "contract_url": { "const": "https://getzero.dev/api/engine?q=evidence-depth" },
    "contract_schema": { "const": "https://getzero.dev/contracts/zero.engine.evidence_depth.v1.schema.json" },
    "proof_url": { "const": "https://getzero.dev/api/engine?q=proof" },
    "product_url": { "const": "https://getzero.dev/api/engine?q=product" },
    "status": { "enum": ["insufficient_retained_samples", "ready_for_public_proof_smoke", "retained_samples_ready"] },
    "purpose": { "type": "string", "minLength": 60 },
    "score_gate": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "previous_blocker",
        "current_blocker",
        "public_proof_score_movement",
        "reason",
        "promotion_evidence"
      ],
      "properties": {
        "previous_blocker": { "const": "live_engine_evidence_depth" },
        "current_blocker": {
          "enum": [
            "retained_live_evidence_samples_missing",
            "retained_live_evidence_production_smoke_pending",
            "retained_live_evidence_freshness_cadence_missing",
            "retained_live_evidence_cadence_history_accumulating"
          ]
        },
        "public_proof_score_movement": {
          "enum": [
            "none",
            "pending_production_smoke",
            "partial"
          ]
        },
        "reason": { "type": "string", "minLength": 40 },
        "promotion_evidence": {
          "type": "array",
          "minItems": 5,
          "items": { "type": "string", "minLength": 20 }
        }
      }
    },
    "retention_policy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "minimum_retained_samples_per_dimension",
        "maximum_sample_age_days",
        "sample_redaction",
        "live_mode_boundary"
      ],
      "properties": {
        "minimum_retained_samples_per_dimension": { "const": 3 },
        "maximum_sample_age_days": { "type": "integer", "minimum": 1, "maximum": 30 },
        "sample_redaction": { "type": "string", "pattern": "private keys" },
        "live_mode_boundary": { "type": "string", "pattern": "operator lease" }
      }
    },
    "evidence_dimensions": {
      "type": "array",
      "minItems": 6,
      "maxItems": 6,
      "items": { "$ref": "#/$defs/evidence_dimension" },
      "allOf": [
        { "contains": { "type": "object", "required": ["id"], "properties": { "id": { "const": "live_canary" } } } },
        { "contains": { "type": "object", "required": ["id"], "properties": { "id": { "const": "immune_system" } } } },
        { "contains": { "type": "object", "required": ["id"], "properties": { "id": { "const": "circuit_breaker" } } } },
        { "contains": { "type": "object", "required": ["id"], "properties": { "id": { "const": "refusals" } } } },
        { "contains": { "type": "object", "required": ["id"], "properties": { "id": { "const": "near_misses" } } } },
        { "contains": { "type": "object", "required": ["id"], "properties": { "id": { "const": "execution_quality" } } } }
      ]
    },
    "retained_evidence": {
      "type": "object",
      "additionalProperties": true,
      "required": [
        "schema_version",
        "kind",
        "public",
        "generated_at",
        "venue",
        "status",
        "retention_window_days",
        "minimum_retained_samples_per_dimension",
        "redaction_policy",
        "dimensions"
      ],
      "properties": {
        "schema_version": { "const": "zero.engine.retained_evidence.v1" },
        "kind": { "const": "engine_retained_evidence" },
        "public": { "const": true },
        "generated_at": { "type": "string", "format": "date-time" },
        "venue": { "const": "Hyperliquid perpetuals" },
        "status": { "const": "samples_ready" },
        "retention_window_days": { "type": "integer", "minimum": 1, "maximum": 14 },
        "minimum_retained_samples_per_dimension": { "const": 3 },
        "redaction_policy": { "type": "string", "pattern": "private keys" },
        "dimensions": {
          "type": "array",
          "minItems": 6,
          "maxItems": 6,
          "items": {
            "type": "object",
            "additionalProperties": true,
            "required": ["id", "status", "retained_samples"],
            "properties": {
              "id": {
                "enum": [
                  "live_canary",
                  "immune_system",
                  "circuit_breaker",
                  "refusals",
                  "near_misses",
                  "execution_quality"
                ]
              },
              "status": { "const": "samples_ready" },
              "retained_samples": {
                "type": "array",
                "minItems": 3,
                "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" }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "$defs": {
    "evidence_dimension": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id",
        "label",
        "status",
        "required_min_samples",
        "current_public_samples",
        "required_sample_shape",
        "current_public_read_paths",
        "engine_artifacts",
        "next_action"
      ],
      "properties": {
        "id": {
          "enum": [
            "live_canary",
            "immune_system",
            "circuit_breaker",
            "refusals",
            "near_misses",
            "execution_quality"
          ]
        },
        "label": { "type": "string", "minLength": 4 },
        "status": { "enum": ["producer_available_samples_insufficient", "samples_ready"] },
        "required_min_samples": { "const": 3 },
        "current_public_samples": { "type": "integer", "minimum": 0 },
        "required_sample_shape": {
          "type": "array",
          "minItems": 5,
          "items": { "type": "string", "minLength": 8 }
        },
        "current_public_read_paths": {
          "type": "array",
          "minItems": 1,
          "items": { "type": "string", "pattern": "^https://getzero\\.dev/" }
        },
        "engine_artifacts": {
          "type": "array",
          "minItems": 1,
          "items": { "type": "string", "minLength": 8 }
        },
        "next_action": { "type": "string", "minLength": 24 }
      }
    }
  }
}
