{
  "prNumber": 44326,
  "prTitle": "release: 13.40.0",
  "generatedAt": "2026-07-15T16:49:57.082Z",
  "modelUsed": "gpt-5",
  "summary": {
    "totalFilesChanged": 1313,
    "totalCommitsInRelease": 188,
    "releaseRiskScore": "57/100",
    "highRiskScenarios": 6,
    "mediumRiskScenarios": 8
  },
  "testScenarios": {
    "cherryPickScenarios": [
      {
        "area": "Token Management – Non‑EVM Token Search/Import (Snaps)",
        "riskLevel": "high",
        "testSteps": [
          "1. Install and enable a non‑EVM Snap that supports token lists (e.g., Tron Wallet Snap) and create a corresponding account.",
          "2. Open the account’s Assets view and use Import/Search to find a well‑known token (e.g., USDT on that network).",
          "3. Import the token and verify it appears in the list with correct symbol/decimals and a 0 or expected balance.",
          "4. Restart the extension and confirm the imported token persists and actions (send/view details) work within that Snap’s account."
        ],
        "whyThisMatters": "Cherry-pick #44361 fixes seeding unified assets for non‑EVM search imports; without it, users can’t discover/import tokens on Snap-based networks, breaking basic asset management."
      },
      {
        "area": "Activity – Duplicate Pending Transaction Rows",
        "riskLevel": "high",
        "testSteps": [
          "1. On Ethereum, initiate a send and leave it pending; open Activity and verify only one pending row appears.",
          "2. Submit a second pending tx; confirm exactly two pending rows appear (no extras).",
          "3. Speed up or cancel one pending tx and confirm the list updates to remove or update the correct row.",
          "4. Lock and unlock the wallet; verify no extra pending rows reappear."
        ],
        "whyThisMatters": "Cherry-pick #44370 fixes extra pending rows from local state; duplicates confuse users, obscure the real status, and can cause mistaken actions."
      },
      {
        "area": "Networks – Add and Use Featured Robinhood Chain",
        "riskLevel": "medium",
        "testSteps": [
          "1. Open Networks > Add a network and locate Robinhood Chain under Featured.",
          "2. Add the network; verify name/icon load, RPC and chain ID populate, and switch succeeds.",
          "3. Open a token detail or explorer link from this network and confirm URLs and native currency symbol display correctly.",
          "4. Switch back to Mainnet and return; ensure the custom network persists and is selectable."
        ],
        "whyThisMatters": "Cherry-pick #44346 adds a new featured network; incorrect metadata or switching issues can lead to failed transactions or mispriced balances."
      },
      {
        "area": "Portfolio – Aggregated Balance Stability (Tracer change)",
        "riskLevel": "medium",
        "testSteps": [
          "1. With multiple accounts and histories, open Home and quickly switch between accounts 5–10 times.",
          "2. Observe that top-line balance updates smoothly without prolonged spinners or errors.",
          "3. Compare the top-line with a spot-check of asset values to ensure accuracy wasn’t affected.",
          "4. Leave the extension idle for 2–3 minutes and confirm no sudden spikes or recalculation loops occur."
        ],
        "whyThisMatters": "Cherry-pick #44460 removes a trace parameter in balance aggregation; while aimed at telemetry, it touches hot paths that could alter performance or accuracy."
      }
    ],
    "initialScenarios": [
      {
        "area": "State Migration (Migration 216) – Upgrade Safety",
        "riskLevel": "high",
        "testSteps": [
          "1. Start on 13.39.x with: at least 2 accounts (one imported), custom RPC network, several imported tokens/NFTs, and at least one connected dapp.",
          "2. Upgrade to 13.40.0 and unlock the wallet.",
          "3. Verify all accounts, balances, address book entries, tokens/NFTs, connected sites, and custom networks are intact.",
          "4. Perform a send on the custom network and confirm history displays correctly post-upgrade."
        ],
        "whyThisMatters": "New migration (216) can corrupt or drop user data if it mishandles persisted state; validating upgrade integrity prevents data loss and broken sessions."
      },
      {
        "area": "Seedless Onboarding – Migration and Resume",
        "riskLevel": "high",
        "testSteps": [
          "1. On 13.39.x, start seedless onboarding and stop mid-flow (e.g., after initial terms but before account creation).",
          "2. Upgrade to 13.40.0 and reopen the extension.",
          "3. Confirm you’re returned to the correct step with prior choices preserved, and you can complete onboarding without errors.",
          "4. After completion, verify the resulting account appears in the account list, settings reflect the chosen method, and dapp connections work."
        ],
        "whyThisMatters": "Seedless onboarding migrations changed; mid-flow users are susceptible to dead-ends or corrupted onboarding state after upgrade."
      },
      {
        "area": "Token Management – Asset List Control Bar and Sorting",
        "riskLevel": "high",
        "testSteps": [
          "1. With an account holding 8+ tokens of varying values, open the Assets tab.",
          "2. Use the control bar to sort by Value, Balance, and A–Z; confirm ordering updates correctly each time.",
          "3. Use search to filter by token symbol/name; clear the search and verify the full list returns with prior sort retained.",
          "4. Close and reopen the extension; confirm the previously selected sort persists."
        ],
        "whyThisMatters": "Large refactor to asset list/control bar/sort components risks broken sorting, persistence, and search behavior that directly affects discoverability of assets."
      },
      {
        "area": "Portfolio – Aggregated Balance Accuracy and Performance",
        "riskLevel": "high",
        "testSteps": [
          "1. Use a profile with multiple accounts and networks; open the Home screen and note the total portfolio value.",
          "2. Manually sum prominent token values from Assets across accounts to spot-check the total.",
          "3. Rapidly switch between accounts and networks; observe for freezes/spinners and verify the total remains accurate.",
          "4. Leave the extension open for 2–3 minutes and confirm the total updates without spikes or stale values."
        ],
        "whyThisMatters": "Changes around balance aggregation can cause misreported totals or performance regressions that erode trust in displayed balances."
      },
      {
        "area": "Token Management – Inactive Asset Badge",
        "riskLevel": "medium",
        "testSteps": [
          "1. In the token search/import UI, look for any token marked as Inactive (badge) and add/view it.",
          "2. Open the token details and verify the Inactive badge is visible and messaging is clear.",
          "3. Attempt actions like Swap/Bridge/Buy for the inactive token and confirm the UI either blocks or clearly warns.",
          "4. Remove the token and re-add it; confirm the badge state is consistent."
        ],
        "whyThisMatters": "New badge introduces compliance/safety cues; incorrect labeling or missing action-guards can lead users to interact with deprecated or unsafe assets."
      },
      {
        "area": "DeFi – Empty State and Protocol Cell Display",
        "riskLevel": "medium",
        "testSteps": [
          "1. On an account with no DeFi positions, open the DeFi section and confirm the empty state message appears with correct CTA (e.g., Learn or Discover).",
          "2. On an account with at least one DeFi position (if available), verify the protocol row shows name, network, and value.",
          "3. Click a DeFi protocol row and confirm navigation to details works without errors.",
          "4. Switch networks and ensure DeFi rows/empty state update appropriately."
        ],
        "whyThisMatters": "UI updates in DeFi cells/empty state can break discoverability and clarity of DeFi holdings, leading to confusion about portfolio composition."
      },
      {
        "area": "Assets/Activity Views – List Virtualization and Counts",
        "riskLevel": "medium",
        "testSteps": [
          "1. With 20+ assets and a long activity history, scroll to the end of both Assets and Activity lists.",
          "2. Verify no items disappear or duplicate when scrolling up/down quickly.",
          "3. Confirm counts (e.g., number of assets) remain stable after adding/removing a token.",
          "4. Switch accounts and return; verify the lists render correctly without stale or mixed content across accounts."
        ],
        "whyThisMatters": "List component changes can introduce virtualization and state bugs (missing items, duplicates) that degrade trust and usability."
      },
      {
        "area": "Analytics/MetaMetrics – Consent and Settings",
        "riskLevel": "medium",
        "testSteps": [
          "1. Fresh install: opt out of MetaMetrics during onboarding; confirm Settings > Security & privacy shows MetaMetrics disabled.",
          "2. Toggle MetaMetrics ON in settings; navigate through various screens (Home, Activity, Send) and confirm no prompts or errors.",
          "3. Toggle OFF again; restart the extension and ensure the choice persists.",
          "4. Confirm no UI regressions or blocked flows when toggling."
        ],
        "whyThisMatters": "Large analytics controller changes risk breaking privacy toggles or introducing UX regressions in consent handling."
      },
      {
        "area": "Network Switching – Asset List and Balance Refresh",
        "riskLevel": "medium",
        "testSteps": [
          "1. On Ethereum Mainnet, note the Assets order and values.",
          "2. Switch to a custom RPC network with different balances; confirm the Assets list refreshes correctly and previous network’s order/values do not bleed over.",
          "3. Switch back to Mainnet; verify the prior sort selection persists and values are correct.",
          "4. Use search on each network to confirm results are scoped properly."
        ],
        "whyThisMatters": "Asset list and sorting changes must remain correct across network boundaries to avoid misattribution of balances and tokens."
      },
      {
        "area": "Onboarding – Create vs Import Flow Reliability",
        "riskLevel": "medium",
        "testSteps": [
          "1. Fresh install and complete Create Wallet flow; ensure you land on Home with a new account and settings initialized.",
          "2. Reset extension; complete Import Wallet with a known seed phrase; confirm correct account address is restored.",
          "3. In both cases, visit Settings and Accounts views to verify expected defaults (currency, network, metrics setting) are present.",
          "4. Connect to a site and approve; verify connection state functions as expected post-onboarding."
        ],
        "whyThisMatters": "Changes around onboarding action types and analytics must not interfere with the critical create/import paths."
      }
    ]
  }
}