{
  "auditedUTC": "2026-10-31T17:14:35.427907+00:00",
  "result": "PASS with publication/provenance recommendations; no calculation or signature defect found",
  "offlineReplay": {
    "networkAndChildProcessAuditHookEnabled": true,
    "blockedSocketPositiveControl": [
      "socket.__new__"
    ],
    "minimalFiles": [
      "verify_collector_first_swap.py",
      "public_crypto.py",
      "collector-first-swap-rpc-raw.json",
      "COLLECTOR-FIRST-SWAP-VERIFIED.json"
    ],
    "fullKyberSourceOrDocsRequired": false,
    "minimalReplayInputsUnchanged": true
  },
  "signedSwap": {
    "transaction": "0x3f28afc8c4b113596fb2fd0698c86d6ec356b8d25b4d9085edefc224f54d3594",
    "blockUTC": "2026-10-29T17:32:38+00:00",
    "recoveredSigner": "0x3f99139f1c5854bb628c2e576aaf638e99dffc18",
    "actualFeeUSDCe": "1.286761",
    "feeBps": 25,
    "actualOutputPOL": "5528.21872481141800848",
    "clientQuotePOL": "5528.226968873803448319",
    "quoteMinusActualPOL": "0.008244062385439839",
    "quoteIsNotReceiptAmount": true
  },
  "serviceSourceChecks": {
    "checkedFiles": [
      {
        "path": "evidence/attacker-origin-20261031T1500/rabby-fee-service/raw-local/rabby-mobile-current-paraswap-config.ts",
        "bytes": 1956,
        "sha256": "5de24c6f44aad942a809f822fbeab72208e09753c0630b1782ef7a825d00975c",
        "gitBlobSHA1": "e9e0213907e10ac2726cf247ce64f57fe26424ab",
        "URL": "https://github.com/RabbyHub/rabby-mobile/blob/19a3015a99baa9c8b39d4e65d5722a89da9a94b5/apps/mobile/src/screens/Lending/config/paraswap.ts"
      },
      {
        "path": "evidence/attacker-origin-20261031T1500/rabby-fee-service/raw-local/rabby-mobile-20251219-paraswap-config.ts",
        "bytes": 1956,
        "sha256": "5de24c6f44aad942a809f822fbeab72208e09753c0630b1782ef7a825d00975c",
        "gitBlobSHA1": "e9e0213907e10ac2726cf247ce64f57fe26424ab",
        "URL": "https://github.com/RabbyHub/rabby-mobile/blob/3ab29f9c83c5a2a681f90951410da81b82ff9d9a/apps/mobile/src/screens/Lending/config/paraswap.ts"
      },
      {
        "path": "evidence/attacker-origin-20261031T1500/rabby-fee-service/raw-local/rabby-mobile-debt-swap-usage.tsx",
        "bytes": 44831,
        "sha256": "5a713800539e6bfdf7dbb4e1f2a28878613d77b1853db2af5f7d13b45ff73c91",
        "gitBlobSHA1": "e219b2d63791e637e89e2b9e807ba1b7ed57909a",
        "URL": "https://github.com/RabbyHub/rabby-mobile/blob/19a3015a99baa9c8b39d4e65d5722a89da9a94b5/apps/mobile/src/screens/Lending/modals/DebtSwapModal/index.tsx"
      },
      {
        "path": "evidence/attacker-origin-20261031T1500/rabby-fee-service/raw-local/rabby-mobile-repay-collateral-usage.tsx",
        "bytes": 44686,
        "sha256": "f96539065c939b9d00761cae3f2789d376d7c832d7325ea4c76d56d54ed2323f",
        "gitBlobSHA1": "26917998c5be642476649b7902c83c8d03d37751",
        "URL": "https://github.com/RabbyHub/rabby-mobile/blob/19a3015a99baa9c8b39d4e65d5722a89da9a94b5/apps/mobile/src/screens/Lending/components/actions/RepayWithCollateralContent/index.tsx"
      }
    ],
    "exactTargetMatchesPolygonConfig": true,
    "historicalConfigByteIdentical": true,
    "operationalPartnerAddressAndDirectFeeTransferPresent": true,
    "scope": "Official Rabby-configured Lending/ParaSwap fee target, corroborating service association. It does not prove Kyber request origin, service customer, fee-address legal owner or attacker control."
  },
  "currentState": [
    {
      "chain": "Ethereum",
      "block": 26314100,
      "blockHash": "0xd3548b49a2cee7dccff3aae2600d6739bf6e514d35f789b14aa4827e0d923150",
      "blockUTC": "2026-10-31T17:00:47+00:00",
      "rawGettersVerified": 13,
      "changedVs1100": 0,
      "changedVs1412": 0,
      "pUSD": null
    },
    {
      "chain": "Polygon",
      "block": 96507065,
      "blockHash": "0x3044133d196fd2d5e429f01926a46b48e7d48e64d3cb9ed0c2f730034195951c",
      "blockUTC": "2026-10-31T17:00:54+00:00",
      "rawGettersVerified": 17,
      "changedVs1100": 1,
      "changedVs1412": 0,
      "pUSD": "4939.424699"
    }
  ],
  "frozenInputsUnchanged": 58,
  "recommendations": [
    {
      "severity": "publication",
      "action": "Exclude full local Kyber/Rabby source and full documentation bodies. The signed verifier runs with its derived canonical ABI constant and four-file financial replay package; no source dependency change is required."
    },
    {
      "severity": "provenance",
      "action": "LATEST-VS-1412.json omits hashes and paths of its14:12 comparison inputs. Publish the new LATEST-VS-1412-BASELINE-PROVENANCE.json appendix if that comparison is reported."
    },
    {
      "severity": "date-qualification",
      "action": "The historical configuration date is stated as GitHub committer metadata in the provenance. This audit verifies the retained file bytes/blob hashes but no full commit-metadata response is retained here; do not claim independently established publication by19December2025."
    },
    {
      "severity": "scope",
      "action": "Report endpoint states at17:00:47/17:00:54UTC, unchanged against the14:12 sample. Do not turn equal sampled getters into an assertion of no intervening movement or complete asset/history coverage."
    }
  ],
  "newFilesOnly": true
}
