{
  "baseline": {
    "error_code_fields_roots": [
      "element",
      "error",
      "errorMessages",
      "headers",
      "order",
      "parts",
      "response"
    ]
  },
  "findings": [
    {
      "exchange": "binanceus",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.borrowIsolatedMargin has a resolvable literal entry but borrowIsolatedMargin is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.borrowIsolatedMargin"
    },
    {
      "exchange": "binanceus",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchFundingHistory has a resolvable literal entry but fetchFundingHistory is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchFundingHistory"
    },
    {
      "exchange": "binanceus",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.repayIsolatedMargin has a resolvable literal entry but repayIsolatedMargin is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.repayIsolatedMargin"
    },
    {
      "exchange": "bitfinex",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares createOrders but runtime.describe.has.createOrders = \"__undefined\"",
      "path": "structure.unified_endpoints.createOrders"
    },
    {
      "exchange": "bybit",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchOptionMarkets has a resolvable literal entry but fetchOptionMarkets is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchOptionMarkets"
    },
    {
      "exchange": "bybit",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchSpotMarkets has a resolvable literal entry but fetchSpotMarkets is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchSpotMarkets"
    },
    {
      "exchange": "derive",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchOptionMarkets has a resolvable literal entry but fetchOptionMarkets is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchOptionMarkets"
    },
    {
      "exchange": "derive",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchSpotMarkets has a resolvable literal entry but fetchSpotMarkets is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchSpotMarkets"
    },
    {
      "exchange": "derive",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchSwapMarkets has a resolvable literal entry but fetchSwapMarkets is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchSwapMarkets"
    },
    {
      "exchange": "gate",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares closePosition but runtime.describe.has.closePosition = \"__undefined\"",
      "path": "structure.unified_endpoints.closePosition"
    },
    {
      "exchange": "gate",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares fetchOrderTrades but runtime.describe.has.fetchOrderTrades = \"__undefined\"",
      "path": "structure.unified_endpoints.fetchOrderTrades"
    },
    {
      "exchange": "gate",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares fetchOrdersByStatus but runtime.describe.has.fetchOrdersByStatus = \"__undefined\"",
      "path": "structure.unified_endpoints.fetchOrdersByStatus"
    },
    {
      "exchange": "gateio",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares closePosition but runtime.describe.has.closePosition = \"__undefined\"",
      "path": "structure.unified_endpoints.closePosition"
    },
    {
      "exchange": "gateio",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares fetchOrderTrades but runtime.describe.has.fetchOrderTrades = \"__undefined\"",
      "path": "structure.unified_endpoints.fetchOrderTrades"
    },
    {
      "exchange": "gateio",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares fetchOrdersByStatus but runtime.describe.has.fetchOrdersByStatus = \"__undefined\"",
      "path": "structure.unified_endpoints.fetchOrdersByStatus"
    },
    {
      "exchange": "htx",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchContractOrders has a resolvable literal entry but fetchContractOrders is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchContractOrders"
    },
    {
      "exchange": "huobi",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchContractOrders has a resolvable literal entry but fetchContractOrders is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchContractOrders"
    },
    {
      "exchange": "hyperliquid",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.approveBuilderFee has a resolvable literal entry but approveBuilderFee is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.approveBuilderFee"
    },
    {
      "exchange": "hyperliquid",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.enableUserDexAbstraction has a resolvable literal entry but enableUserDexAbstraction is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.enableUserDexAbstraction"
    },
    {
      "exchange": "hyperliquid",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchSpotMarkets has a resolvable literal entry but fetchSpotMarkets is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchSpotMarkets"
    },
    {
      "exchange": "hyperliquid",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchSwapMarkets has a resolvable literal entry but fetchSwapMarkets is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchSwapMarkets"
    },
    {
      "exchange": "hyperliquid",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.setUserAbstraction has a resolvable literal entry but setUserAbstraction is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.setUserAbstraction"
    },
    {
      "exchange": "kraken",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchOrdersByIds has a resolvable literal entry but fetchOrdersByIds is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchOrdersByIds"
    },
    {
      "exchange": "kucoin",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.cancelAllUtaOrders has a resolvable literal entry but cancelAllUtaOrders is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.cancelAllUtaOrders"
    },
    {
      "exchange": "kucoin",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchLeverageTiers has a resolvable literal entry but fetchLeverageTiers is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchLeverageTiers"
    },
    {
      "exchange": "kucoinfutures",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.cancelAllUtaOrders has a resolvable literal entry but cancelAllUtaOrders is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.cancelAllUtaOrders"
    },
    {
      "exchange": "kucoinfutures",
      "invariant": "request_defaults_resolvable_reachable_from_unified",
      "message": "request_defaults.fetchLeverageTiers has a resolvable literal entry but fetchLeverageTiers is not reachable from unified_endpoints (neither a key nor a value)",
      "path": "structure.request_defaults.fetchLeverageTiers"
    },
    {
      "exchange": "myokx",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares borrowCrossMargin but runtime.describe.has.borrowCrossMargin = \"__undefined\"",
      "path": "structure.unified_endpoints.borrowCrossMargin"
    },
    {
      "exchange": "myokx",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares fetchPositionMode but runtime.describe.has.fetchPositionMode = \"__undefined\"",
      "path": "structure.unified_endpoints.fetchPositionMode"
    },
    {
      "exchange": "okx",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares borrowCrossMargin but runtime.describe.has.borrowCrossMargin = \"__undefined\"",
      "path": "structure.unified_endpoints.borrowCrossMargin"
    },
    {
      "exchange": "okx",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares fetchPositionMode but runtime.describe.has.fetchPositionMode = \"__undefined\"",
      "path": "structure.unified_endpoints.fetchPositionMode"
    },
    {
      "exchange": "okxus",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares borrowCrossMargin but runtime.describe.has.borrowCrossMargin = \"__undefined\"",
      "path": "structure.unified_endpoints.borrowCrossMargin"
    },
    {
      "exchange": "okxus",
      "invariant": "unified_endpoints_claimed_in_has",
      "message": "unified_endpoints declares fetchPositionMode but runtime.describe.has.fetchPositionMode = \"__undefined\"",
      "path": "structure.unified_endpoints.fetchPositionMode"
    }
  ],
  "summary": {
    "exchanges_checked": 23,
    "findings_by_invariant": {
      "authenticated_sections_reachable_in_api": 0,
      "error_code_fields_root_in_observed_set": 0,
      "override_paths_present_in_output": 0,
      "override_registry_valid": 0,
      "provenance_covers_schema": 0,
      "request_defaults_resolvable_reachable_from_unified": 20,
      "sign_recipe_keys_match_auth_sections": 0,
      "sign_recipe_shape_valid": 0,
      "testnet_urls_shape_valid": 0,
      "unified_endpoints_claimed_in_has": 13
    },
    "invariants_run": 11,
    "total_findings": 33
  },
  "tier_scope": [
    "tier1",
    "tier2",
    "dex"
  ]
}