{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://fingertrackid.dev/schemas/event-assessment.v1.schema.json",
  "title": "EventAssessmentV1",
  "description": "Assessment público, event-specific e já persistido. O FTID recomenda; o cliente decide e executa.",
  "$defs": {
    "uuidv7": {
      "type": "string",
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
    },
    "nullable_uuidv7": {
      "anyOf": [{ "$ref": "#/$defs/uuidv7" }, { "type": "null" }]
    },
    "instant": {
      "type": "string",
      "format": "date-time",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?(?:Z|[+-]\\d{2}:\\d{2})$"
    },
    "nullable_instant": {
      "anyOf": [{ "$ref": "#/$defs/instant" }, { "type": "null" }]
    },
    "public_version": {
      "type": "string",
      "minLength": 1,
      "pattern": "^(?=.*\\S).+$"
    },
    "nullable_public_version": {
      "anyOf": [{ "$ref": "#/$defs/public_version" }, { "type": "null" }]
    },
    "limitation_code": {
      "type": "string",
      "enum": [
        "NO_FIRST_PARTY_COOKIE",
        "INSTALLATION_COOKIE_REJECTED",
        "NO_EDGE_SIGNALS",
        "STALE_DEVICE_PROFILE",
        "PROVIDER_UNAVAILABLE",
        "PROVIDER_BUDGET_EXCEEDED",
        "COLLECTOR_NOT_LOADED",
        "UNSUPPORTED_RUNTIME",
        "REQUIRED_EVIDENCE_MISSING",
        "DETECTOR_TIMEOUT",
        "DETECTOR_ERROR",
        "NETWORK_TYPE_AMBIGUOUS",
        "CLIENT_CLOCK_SKEW",
        "POLICY_UNAVAILABLE"
      ]
    },
    "applicability_reason_code": {
      "type": "string",
      "enum": [
        "CHANNEL_MISMATCH",
        "BROWSER_ENGINE_MISMATCH",
        "PLATFORM_MISMATCH",
        "JOURNEY_MISMATCH"
      ]
    },
    "signal": {
      "type": "object",
      "properties": {
        "signal_code": {
          "type": "string",
          "enum": [
            "ANTI_FINGERPRINTING",
            "BOT_AUTOMATION",
            "BROWSER_SPOOFING",
            "EMULATED_ENVIRONMENT",
            "PRIVATE_BROWSING",
            "BROWSER_PRIVACY_BRAVE",
            "BROWSER_PRIVACY_SAFARI",
            "BROWSER_PRIVACY_SAMSUNG_INTERNET",
            "NETWORK_PROXY",
            "NETWORK_VPN",
            "NETWORK_HOSTING",
            "NETWORK_TOR",
            "DEVICE_MULTI_USER"
          ]
        },
        "channel": { "const": "WEB" },
        "signal_state": {
          "type": "string",
          "enum": ["DETECTED", "NOT_DETECTED", "NOT_EVALUATED"]
        },
        "applicability": {
          "type": "string",
          "enum": ["APPLICABLE", "NOT_APPLICABLE"]
        },
        "source": {
          "type": "string",
          "enum": ["EDGE", "SDK", "SERVER_CONTEXT", "PROVIDER", "DERIVED"]
        },
        "detector_version": { "$ref": "#/$defs/public_version" },
        "detector_confidence": {
          "anyOf": [{ "type": "number", "minimum": 0, "maximum": 1 }, { "type": "null" }]
        },
        "observed_at": { "$ref": "#/$defs/nullable_instant" },
        "evaluated_at": { "$ref": "#/$defs/instant" },
        "freshness_ms": {
          "anyOf": [
            { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
            { "type": "null" }
          ]
        },
        "not_evaluated_reason_code": {
          "anyOf": [{ "$ref": "#/$defs/limitation_code" }, { "type": "null" }]
        },
        "applicability_reason_code": {
          "anyOf": [{ "$ref": "#/$defs/applicability_reason_code" }, { "type": "null" }]
        }
      },
      "required": [
        "signal_code",
        "channel",
        "signal_state",
        "applicability",
        "source",
        "detector_version",
        "detector_confidence",
        "observed_at",
        "evaluated_at",
        "freshness_ms",
        "not_evaluated_reason_code",
        "applicability_reason_code"
      ],
      "additionalProperties": false,
      "allOf": [
        {
          "oneOf": [
            {
              "type": "object",
              "properties": {
                "signal_state": { "enum": ["DETECTED", "NOT_DETECTED"] },
                "applicability": { "const": "APPLICABLE" },
                "detector_confidence": { "type": "number", "minimum": 0, "maximum": 1 },
                "observed_at": { "$ref": "#/$defs/instant" },
                "freshness_ms": { "type": "integer", "minimum": 0 },
                "not_evaluated_reason_code": { "type": "null" },
                "applicability_reason_code": { "type": "null" }
              },
              "required": [
                "signal_state",
                "applicability",
                "detector_confidence",
                "observed_at",
                "freshness_ms",
                "not_evaluated_reason_code",
                "applicability_reason_code"
              ]
            },
            {
              "type": "object",
              "properties": {
                "signal_state": { "const": "NOT_EVALUATED" },
                "applicability": { "const": "APPLICABLE" },
                "detector_confidence": { "type": "null" },
                "observed_at": { "type": "null" },
                "freshness_ms": { "type": "null" },
                "not_evaluated_reason_code": { "$ref": "#/$defs/limitation_code" },
                "applicability_reason_code": { "type": "null" }
              },
              "required": [
                "signal_state",
                "applicability",
                "detector_confidence",
                "observed_at",
                "freshness_ms",
                "not_evaluated_reason_code",
                "applicability_reason_code"
              ]
            },
            {
              "type": "object",
              "properties": {
                "signal_state": { "const": "NOT_EVALUATED" },
                "applicability": { "const": "NOT_APPLICABLE" },
                "detector_confidence": { "type": "null" },
                "observed_at": { "type": "null" },
                "freshness_ms": { "type": "null" },
                "not_evaluated_reason_code": { "type": "null" },
                "applicability_reason_code": {
                  "$ref": "#/$defs/applicability_reason_code"
                }
              },
              "required": [
                "signal_state",
                "applicability",
                "detector_confidence",
                "observed_at",
                "freshness_ms",
                "not_evaluated_reason_code",
                "applicability_reason_code"
              ]
            }
          ]
        }
      ]
    }
  },
  "type": "object",
  "properties": {
    "schema_version": { "const": "event-assessment.v1" },
    "assessment_id": { "$ref": "#/$defs/uuidv7" },
    "assessment_version": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "supersedes_assessment_id": { "$ref": "#/$defs/nullable_uuidv7" },
    "business_event_id": { "$ref": "#/$defs/uuidv7" },
    "external_event_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
    },
    "journey": {
      "type": "string",
      "enum": ["LOGIN", "WITHDRAWAL", "TRADE"]
    },
    "assessment_status": {
      "type": "string",
      "enum": ["COMPLETED", "INCONCLUSIVE", "UNSCORABLE", "FAILED"]
    },
    "retryable": { "const": false },
    "trust_score": {
      "anyOf": [{ "type": "integer", "minimum": 0, "maximum": 100 }, { "type": "null" }]
    },
    "device_intelligence_snapshot_id": { "$ref": "#/$defs/nullable_uuidv7" },
    "device_intelligence_snapshot_version": {
      "anyOf": [
        { "type": "integer", "minimum": 1, "maximum": 9007199254740991 },
        { "type": "null" }
      ]
    },
    "device_id": {
      "anyOf": [{ "type": "string", "pattern": "^dev_[A-Za-z0-9_-]{20,}$" }, { "type": "null" }]
    },
    "device_match_confidence": {
      "anyOf": [{ "type": "number", "minimum": 0, "maximum": 1 }, { "type": "null" }]
    },
    "evidence_coverage": { "type": "integer", "minimum": 0, "maximum": 100 },
    "data_freshness": {
      "type": "object",
      "properties": {
        "evidence_cutoff_at": { "$ref": "#/$defs/instant" },
        "oldest_required_observed_at": { "$ref": "#/$defs/nullable_instant" },
        "maximum_required_age_ms": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        "all_required_fresh": { "type": "boolean" }
      },
      "required": [
        "evidence_cutoff_at",
        "oldest_required_observed_at",
        "maximum_required_age_ms",
        "all_required_fresh"
      ],
      "additionalProperties": false,
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "oldest_required_observed_at": { "$ref": "#/$defs/instant" },
            "all_required_fresh": { "type": "boolean" }
          },
          "required": ["oldest_required_observed_at", "all_required_fresh"]
        },
        {
          "type": "object",
          "properties": {
            "oldest_required_observed_at": { "type": "null" },
            "all_required_fresh": { "const": false }
          },
          "required": ["oldest_required_observed_at", "all_required_fresh"]
        }
      ]
    },
    "signals": {
      "type": "array",
      "minItems": 13,
      "maxItems": 13,
      "items": { "$ref": "#/$defs/signal" },
      "allOf": [
        {
          "contains": {
            "type": "object",
            "properties": { "signal_code": { "const": "ANTI_FINGERPRINTING" } },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "properties": { "signal_code": { "const": "BOT_AUTOMATION" } },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "properties": { "signal_code": { "const": "BROWSER_SPOOFING" } },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "properties": { "signal_code": { "const": "EMULATED_ENVIRONMENT" } },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "properties": { "signal_code": { "const": "PRIVATE_BROWSING" } },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "properties": { "signal_code": { "const": "BROWSER_PRIVACY_BRAVE" } },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "properties": { "signal_code": { "const": "BROWSER_PRIVACY_SAFARI" } },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "properties": {
              "signal_code": { "const": "BROWSER_PRIVACY_SAMSUNG_INTERNET" }
            },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "properties": { "signal_code": { "const": "NETWORK_PROXY" } },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "properties": { "signal_code": { "const": "NETWORK_VPN" } },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "properties": { "signal_code": { "const": "NETWORK_HOSTING" } },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "properties": { "signal_code": { "const": "NETWORK_TOR" } },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        },
        {
          "contains": {
            "type": "object",
            "properties": { "signal_code": { "const": "DEVICE_MULTI_USER" } },
            "required": ["signal_code"]
          },
          "minContains": 1,
          "maxContains": 1
        }
      ]
    },
    "limitation_codes": {
      "type": "array",
      "uniqueItems": true,
      "items": { "$ref": "#/$defs/limitation_code" }
    },
    "reason_codes": {
      "type": "array",
      "items": { "type": "string", "pattern": "^[A-Z][A-Z0-9_]{2,63}$" }
    },
    "recommended_action": {
      "type": "string",
      "enum": ["ALLOW", "MONITOR", "STEP_UP", "REVIEW", "BLOCK_RECOMMENDED"]
    },
    "recommendation_basis": {
      "type": "string",
      "enum": ["EVALUATION", "INSUFFICIENT_EVIDENCE", "OUT_OF_POLICY_SCOPE", "TECHNICAL_FAILURE"]
    },
    "policy_version": { "$ref": "#/$defs/nullable_public_version" },
    "fallback_policy_version": { "$ref": "#/$defs/public_version" },
    "ruleset_version": { "$ref": "#/$defs/public_version" },
    "signal_catalog_version": { "$ref": "#/$defs/public_version" },
    "feature_schema_version": { "$ref": "#/$defs/public_version" },
    "resolver_version": { "$ref": "#/$defs/public_version" },
    "sdk_version": { "$ref": "#/$defs/nullable_public_version" },
    "provider_versions": {
      "type": "array",
      "items": { "$ref": "#/$defs/public_version" }
    },
    "evidence_cutoff_at": { "$ref": "#/$defs/instant" },
    "evaluated_at": { "$ref": "#/$defs/instant" },
    "expires_at": { "$ref": "#/$defs/instant" },
    "correlation_id": { "type": "string", "minLength": 1, "maxLength": 128 }
  },
  "required": [
    "schema_version",
    "assessment_id",
    "assessment_version",
    "supersedes_assessment_id",
    "business_event_id",
    "external_event_id",
    "journey",
    "assessment_status",
    "retryable",
    "trust_score",
    "device_intelligence_snapshot_id",
    "device_intelligence_snapshot_version",
    "device_id",
    "device_match_confidence",
    "evidence_coverage",
    "data_freshness",
    "signals",
    "limitation_codes",
    "reason_codes",
    "recommended_action",
    "recommendation_basis",
    "policy_version",
    "fallback_policy_version",
    "ruleset_version",
    "signal_catalog_version",
    "feature_schema_version",
    "resolver_version",
    "sdk_version",
    "provider_versions",
    "evidence_cutoff_at",
    "evaluated_at",
    "expires_at",
    "correlation_id"
  ],
  "additionalProperties": false,
  "allOf": [
    {
      "if": {
        "properties": { "device_match_confidence": { "type": "number" } },
        "required": ["device_match_confidence"]
      },
      "then": {
        "properties": { "device_id": { "type": "string" } },
        "required": ["device_id"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "source": { "const": "SDK" },
                "signal_state": { "enum": ["DETECTED", "NOT_DETECTED"] }
              },
              "required": ["source", "signal_state"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "device_intelligence_snapshot_id": { "$ref": "#/$defs/uuidv7" },
          "device_intelligence_snapshot_version": { "type": "integer", "minimum": 1 },
          "sdk_version": { "$ref": "#/$defs/public_version" }
        },
        "required": [
          "device_intelligence_snapshot_id",
          "device_intelligence_snapshot_version",
          "sdk_version"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "assessment_status": {
            "enum": ["INCONCLUSIVE", "UNSCORABLE", "FAILED"]
          }
        },
        "required": ["assessment_status"]
      },
      "then": {
        "oneOf": [
          {
            "properties": {
              "journey": {
                "const": "LOGIN"
              },
              "recommended_action": {
                "enum": ["MONITOR", "STEP_UP"]
              }
            },
            "required": ["journey", "recommended_action"]
          },
          {
            "properties": {
              "journey": {
                "const": "WITHDRAWAL"
              },
              "recommended_action": {
                "enum": ["MONITOR", "REVIEW"]
              }
            },
            "required": ["journey", "recommended_action"]
          },
          {
            "properties": {
              "journey": {
                "const": "TRADE"
              },
              "recommended_action": {
                "const": "MONITOR"
              }
            },
            "required": ["journey", "recommended_action"]
          }
        ]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "NO_FIRST_PARTY_COOKIE"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "NO_FIRST_PARTY_COOKIE"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "INSTALLATION_COOKIE_REJECTED"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "INSTALLATION_COOKIE_REJECTED"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "NO_EDGE_SIGNALS"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "NO_EDGE_SIGNALS"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "STALE_DEVICE_PROFILE"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "STALE_DEVICE_PROFILE"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "PROVIDER_UNAVAILABLE"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "PROVIDER_UNAVAILABLE"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "PROVIDER_BUDGET_EXCEEDED"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "PROVIDER_BUDGET_EXCEEDED"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "COLLECTOR_NOT_LOADED"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "COLLECTOR_NOT_LOADED"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "UNSUPPORTED_RUNTIME"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "UNSUPPORTED_RUNTIME"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "REQUIRED_EVIDENCE_MISSING"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "REQUIRED_EVIDENCE_MISSING"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "DETECTOR_TIMEOUT"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "DETECTOR_TIMEOUT"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "DETECTOR_ERROR"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "DETECTOR_ERROR"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "NETWORK_TYPE_AMBIGUOUS"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "NETWORK_TYPE_AMBIGUOUS"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "CLIENT_CLOCK_SKEW"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "CLIENT_CLOCK_SKEW"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "if": {
        "properties": {
          "signals": {
            "type": "array",
            "contains": {
              "type": "object",
              "properties": {
                "not_evaluated_reason_code": {
                  "const": "POLICY_UNAVAILABLE"
                }
              },
              "required": ["not_evaluated_reason_code"]
            }
          }
        },
        "required": ["signals"]
      },
      "then": {
        "properties": {
          "limitation_codes": {
            "type": "array",
            "contains": {
              "const": "POLICY_UNAVAILABLE"
            }
          }
        },
        "required": ["limitation_codes"]
      }
    },
    {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "assessment_status": { "const": "COMPLETED" },
            "trust_score": { "type": "integer", "minimum": 0, "maximum": 100 },
            "recommendation_basis": { "const": "EVALUATION" },
            "policy_version": { "$ref": "#/$defs/public_version" },
            "device_intelligence_snapshot_id": { "$ref": "#/$defs/uuidv7" },
            "device_intelligence_snapshot_version": { "type": "integer", "minimum": 1 },
            "sdk_version": { "$ref": "#/$defs/public_version" },
            "data_freshness": {
              "type": "object",
              "properties": { "all_required_fresh": { "const": true } },
              "required": ["all_required_fresh"]
            },
            "reason_codes": { "type": "array", "minItems": 1 }
          },
          "required": [
            "assessment_status",
            "trust_score",
            "recommendation_basis",
            "policy_version",
            "device_intelligence_snapshot_id",
            "device_intelligence_snapshot_version",
            "sdk_version",
            "data_freshness",
            "reason_codes"
          ]
        },
        {
          "type": "object",
          "properties": {
            "assessment_status": { "const": "INCONCLUSIVE" },
            "trust_score": { "type": "null" },
            "recommendation_basis": { "const": "INSUFFICIENT_EVIDENCE" },
            "recommended_action": {
              "enum": ["MONITOR", "STEP_UP", "REVIEW", "BLOCK_RECOMMENDED"]
            },
            "policy_version": { "$ref": "#/$defs/public_version" }
          },
          "required": [
            "assessment_status",
            "trust_score",
            "recommendation_basis",
            "recommended_action",
            "policy_version"
          ]
        },
        {
          "type": "object",
          "properties": {
            "assessment_status": { "const": "UNSCORABLE" },
            "trust_score": { "type": "null" },
            "recommendation_basis": { "const": "OUT_OF_POLICY_SCOPE" },
            "recommended_action": {
              "enum": ["MONITOR", "STEP_UP", "REVIEW", "BLOCK_RECOMMENDED"]
            },
            "policy_version": { "$ref": "#/$defs/public_version" },
            "reason_codes": { "type": "array", "minItems": 1 }
          },
          "required": [
            "assessment_status",
            "trust_score",
            "recommendation_basis",
            "recommended_action",
            "policy_version",
            "reason_codes"
          ]
        },
        {
          "type": "object",
          "properties": {
            "assessment_status": { "const": "FAILED" },
            "trust_score": { "type": "null" },
            "recommendation_basis": { "const": "TECHNICAL_FAILURE" },
            "recommended_action": {
              "enum": ["MONITOR", "STEP_UP", "REVIEW", "BLOCK_RECOMMENDED"]
            }
          },
          "required": [
            "assessment_status",
            "trust_score",
            "recommendation_basis",
            "recommended_action"
          ]
        }
      ]
    },
    {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "device_intelligence_snapshot_id": { "$ref": "#/$defs/uuidv7" },
            "device_intelligence_snapshot_version": { "type": "integer", "minimum": 1 },
            "sdk_version": { "$ref": "#/$defs/public_version" }
          },
          "required": [
            "device_intelligence_snapshot_id",
            "device_intelligence_snapshot_version",
            "sdk_version"
          ]
        },
        {
          "type": "object",
          "properties": {
            "device_intelligence_snapshot_id": { "type": "null" },
            "device_intelligence_snapshot_version": { "type": "null" },
            "device_match_confidence": { "type": "null" },
            "sdk_version": { "type": "null" }
          },
          "required": [
            "device_intelligence_snapshot_id",
            "device_intelligence_snapshot_version",
            "device_match_confidence",
            "sdk_version"
          ]
        }
      ]
    },
    {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "assessment_version": { "const": 1 },
            "supersedes_assessment_id": { "type": "null" }
          },
          "required": ["assessment_version", "supersedes_assessment_id"]
        },
        {
          "type": "object",
          "properties": {
            "assessment_version": { "type": "integer", "minimum": 2 },
            "supersedes_assessment_id": { "$ref": "#/$defs/uuidv7" }
          },
          "required": ["assessment_version", "supersedes_assessment_id"]
        }
      ]
    },
    {
      "anyOf": [
        {
          "type": "object",
          "properties": { "reason_codes": { "type": "array", "minItems": 1 } },
          "required": ["reason_codes"]
        },
        {
          "type": "object",
          "properties": { "limitation_codes": { "type": "array", "minItems": 1 } },
          "required": ["limitation_codes"]
        }
      ]
    },
    {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "assessment_status": { "const": "FAILED" },
            "policy_version": { "type": "null" },
            "limitation_codes": {
              "type": "array",
              "contains": { "const": "POLICY_UNAVAILABLE" },
              "minContains": 1,
              "maxContains": 1
            }
          },
          "required": ["assessment_status", "policy_version", "limitation_codes"]
        },
        {
          "type": "object",
          "properties": {
            "policy_version": { "$ref": "#/$defs/public_version" },
            "limitation_codes": {
              "type": "array",
              "not": { "contains": { "const": "POLICY_UNAVAILABLE" } }
            }
          },
          "required": ["policy_version", "limitation_codes"]
        }
      ]
    }
  ],
  "x-ftid-runtime-invariants": [
    "freshness_ms equals signal.evaluated_at minus signal.observed_at",
    "data_freshness.oldest_required_observed_at is not after data_freshness.evidence_cutoff_at",
    "when all_required_fresh is true, oldest required evidence age does not exceed maximum_required_age_ms",
    "assessment evidence_cutoff_at equals data_freshness.evidence_cutoff_at",
    "assessment evidence_cutoff_at is not after evaluated_at and evaluated_at is before expires_at",
    "no signal observed_at is after assessment evidence_cutoff_at",
    "no signal evaluated_at is after assessment evaluated_at",
    "supersedes_assessment_id differs from assessment_id"
  ]
}
