{
  "prNumber": 44326,
  "prTitle": "release: 13.40.0",
  "generatedAt": "2026-07-15T02:31:45.662Z",
  "modelUsed": "gpt-5",
  "summary": {
    "totalFilesChanged": 1313,
    "totalCommitsInRelease": 187,
    "releaseRiskScore": "54/100",
    "highRiskScenarios": 5,
    "mediumRiskScenarios": 9
  },
  "testScenarios": {
    "cherryPickScenarios": [
      {
        "area": "Activity List – Duplicate Pending Rows",
        "riskLevel": "high",
        "testSteps": [
          "1. Send a transaction and keep it pending (e.g., set low gas); open the Activity tab and observe entries.",
          "2. Ensure only one pending row appears for the transaction; refresh the extension and confirm no duplicates.",
          "3. Speed up or cancel the transaction; verify the Activity view transitions cleanly (replaced/canceled) with no ghost or extra rows."
        ],
        "whyThisMatters": "Cherry-pick 44370 fixes duplicate pending rows from local state; duplicates mislead users about transaction status and can cause erroneous retries."
      },
      {
        "area": "Featured Networks – Robinhood Chain",
        "riskLevel": "medium",
        "testSteps": [
          "1. Open Add network > Featured and add Robinhood Chain; confirm the add and switch complete without errors.",
          "2. Verify network details: name, chain ID, currency symbol, RPC URL, and block explorer links (e.g., View account in explorer) are correct and responsive.",
          "3. Switch back and forth between Robinhood Chain and another network; confirm account/address display and Assets list load correctly."
        ],
        "whyThisMatters": "Cherry-pick 44346 adds Robinhood Chain as a featured network; misconfiguration (chainId/RPC/explorer) can break switching and confuse users."
      },
      {
        "area": "Token Management – Non-EVM Search Imports (Unified Assets)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Connect/enable a supported non-EVM network (e.g., Tron via its Snap), then open the Import tokens/coins flow for that network.",
          "2. Search for a common non-EVM asset (e.g., USDT on Tron) and confirm results appear with correct symbol and icon.",
          "3. Add the asset; verify it appears in the Assets list with correct decimals and balance fetches without error."
        ],
        "whyThisMatters": "Cherry-pick 44361 seeds unified assets for non-EVM search imports; without this, users may fail to find or add popular non-EVM assets."
      },
      {
        "area": "Balances – AggregatedBalanceSelector Stability",
        "riskLevel": "medium",
        "testSteps": [
          "1. With multiple accounts holding many assets, open the Assets/Portfolio view and observe total balances.",
          "2. Rapidly switch accounts and networks; confirm totals remain stable with no transient spikes or flicker.",
          "3. Leave the view open for 1–2 minutes; ensure no periodic jumps in displayed totals occur."
        ],
        "whyThisMatters": "Cherry-pick 44460 reduces tracing in AggregatedBalanceSelector to stop a transaction volume spike; it must not destabilize or misreport balances."
      }
    ],
    "initialScenarios": [
      {
        "area": "State Migrations (Migration 216)",
        "riskLevel": "high",
        "testSteps": [
          "1. Start with a 13.39.x profile containing: 2+ accounts (one imported SRP, one hardware), at least one custom network, and several imported tokens.",
          "2. Upgrade the same profile to 13.40.0 and open the extension; let it complete startup.",
          "3. Verify all accounts and custom networks are present; token lists and balances load without errors.",
          "4. Open Activity and Assets tabs for each account to confirm history and totals still display correctly.",
          "5. Send a small native transfer on a known network to confirm post-migration transactions work end-to-end."
        ],
        "whyThisMatters": "State migrations can corrupt or drop user data; verifying upgrade paths ensures accounts, networks, and assets remain intact after migration 216."
      },
      {
        "area": "Seedless Onboarding (Migration/Resume behavior)",
        "riskLevel": "high",
        "testSteps": [
          "1. On 13.39.x, begin seedless (passkey) onboarding and stop midway (e.g., after creating credentials but before final confirmation).",
          "2. Upgrade to 13.40.0 and reopen the extension; resume the onboarding flow.",
          "3. Complete onboarding and land on the wallet; verify the created account is usable (copy address, view QR).",
          "4. Lock and unlock; sign a test message to confirm the account functions normally post-resume."
        ],
        "whyThisMatters": "Changes to seedless onboarding migrations can strand users mid-flow or create unusable accounts; resuming and completing must be reliable."
      },
      {
        "area": "Transaction Flow (Send/Speed Up/Cancel)",
        "riskLevel": "high",
        "testSteps": [
          "1. On Ethereum Mainnet, send a small ETH transfer from Account 1 to Account 2 and confirm.",
          "2. While pending, use Speed Up with a higher gas setting and confirm the replacement; verify the status updates correctly.",
          "3. On an L2 (e.g., Base), send an ERC-20 transfer; open Advanced gas/options if available and confirm the transaction.",
          "4. Initiate another send, then Cancel it; verify the Activity list reflects a canceled entry without lingering or duplicate rows."
        ],
        "whyThisMatters": "Core controller and UI changes can subtly break confirmation flows, status transitions, or gas handling; ensuring send/speed up/cancel work prevents loss or confusion."
      },
      {
        "area": "MetaMetrics Consent and Privacy Controls",
        "riskLevel": "high",
        "testSteps": [
          "1. Fresh install: at the MetaMetrics prompt, choose to opt out; complete onboarding.",
          "2. Perform common actions (switch networks, open Settings, initiate a send) and confirm no additional telemetry prompts or nags reappear.",
          "3. In Settings > Security & privacy, toggle MetaMetrics on; reload the extension and confirm the preference persists.",
          "4. Toggle back off; perform a transaction and ensure no new prompts appear."
        ],
        "whyThisMatters": "Significant analytics controller changes can regress privacy guarantees; user consent must be honored and preferences must persist."
      },
      {
        "area": "Assets List Sorting and Control Bar",
        "riskLevel": "medium",
        "testSteps": [
          "1. Open Assets and change sorting to Highest value, then Name A–Z, then by Balance; toggle ascending/descending where available.",
          "2. Confirm the list reorders correctly for each option and sorting is applied consistently across accounts.",
          "3. Close and reopen the extension; ensure the last sorting preference persists.",
          "4. Use search/filter in the control bar, verify results update, then clear filters to restore the full list."
        ],
        "whyThisMatters": "Refactors to assets list and control bar can break ordering, persistence, or filtering, degrading discoverability and trust in balances."
      },
      {
        "area": "Asset Inactive Badge and Warnings",
        "riskLevel": "medium",
        "testSteps": [
          "1. Import a token that is flagged as inactive/delisted via the token import flow.",
          "2. Verify an Inactive badge appears in the asset row and detail view with appropriate warning text.",
          "3. Attempt to initiate a send from the inactive token; ensure warnings appear but the flow remains usable if allowed.",
          "4. Remove the token and confirm the asset list updates with no residual inactive indicators."
        ],
        "whyThisMatters": "New UI indicators for inactive assets must inform without blocking legitimate actions; incorrect badges erode user confidence."
      },
      {
        "area": "DeFi List Empty State and Protocol Cells",
        "riskLevel": "medium",
        "testSteps": [
          "1. With an account that has no DeFi positions, open the DeFi tab and confirm the empty state renders correctly.",
          "2. Switch networks and accounts; ensure the empty state and any protocol cells render without layout jumps or missing strings.",
          "3. If any protocol entries appear, open a protocol cell and verify details populate and navigation works."
        ],
        "whyThisMatters": "UI changes to DeFi cells and empty states can cause broken rendering or confusing states, impacting portfolio usability."
      },
      {
        "area": "Onboarding Variants (SRP, Create New, Hardware)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Fresh profile: complete Import using Secret Recovery Phrase; verify you land in the wallet with the expected address.",
          "2. Fresh profile: complete Create a new wallet; confirm SRP reveal works and the account is created.",
          "3. Connect a hardware wallet (Ledger/Trezor), add an account, and verify the address and balances display without errors."
        ],
        "whyThisMatters": "Onboarding method action type changes can break specific paths; ensuring each path completes avoids onboarding lockouts."
      },
      {
        "area": "Portfolio/Total Balance Aggregation",
        "riskLevel": "medium",
        "testSteps": [
          "1. Use 3+ accounts each holding several assets across at least two EVM networks; open the Assets/Portfolio view.",
          "2. Switch between accounts rapidly and scroll the list; verify totals update smoothly with no flicker or sudden spikes.",
          "3. Toggle any available options (e.g., hide small balances) and confirm totals recompute correctly."
        ],
        "whyThisMatters": "Controller changes around balance selection can cause incorrect totals or UI instability, leading to user mistrust of displayed balances."
      },
      {
        "area": "Localization Sanity (Amharic/Arabic)",
        "riskLevel": "medium",
        "testSteps": [
          "1. In Settings > General, switch language to Amharic and navigate Home, Send, and Settings screens.",
          "2. Repeat in Arabic; verify there are no missing keys (e.g., untranslated placeholders) or broken layouts.",
          "3. Switch back to English and confirm UI returns to expected text without residual formatting issues."
        ],
        "whyThisMatters": "Recent locale string changes can surface missing or broken translations on key screens, degrading usability for non-English users."
      }
    ]
  }
}