{
  "prNumber": 44583,
  "prTitle": "release: 13.41.0",
  "generatedAt": "2026-07-24T21:03:54.522Z",
  "modelUsed": "gpt-5",
  "summary": {
    "totalFilesChanged": 703,
    "totalCommitsInRelease": 126,
    "releaseRiskScore": "55/100",
    "highRiskScenarios": 6,
    "mediumRiskScenarios": 6
  },
  "testScenarios": {
    "cherryPickScenarios": [
      {
        "area": "Token Management – Custom Token Import Decimal Validation",
        "riskLevel": "high",
        "testSteps": [
          "1. Open Import Tokens > Custom; enter a valid ERC-20 address and manually input decimals outside valid bounds (e.g., negative, non-integer, or excessively large like 256). Verify a validation error and the import button is disabled.",
          "2. Input valid integer decimals (e.g., 0, 18) and confirm the import succeeds; verify the token balance displays with correct precision.",
          "3. Attempt to modify decimals post-detection (if editable) and ensure invalid entries are blocked with clear messaging."
        ],
        "whyThisMatters": "Cherry-pick #44604 fixes unsafe decimal inputs that can corrupt balances/amounts; validating boundaries prevents users from importing broken tokens."
      },
      {
        "area": "Portfolio Totals – Include Tokens with Large Balances and Few Decimals",
        "riskLevel": "high",
        "testSteps": [
          "1. Ensure an account holds a token with few decimals (e.g., 0–2) and a large balance; open All Accounts view and note the portfolio total.",
          "2. Toggle the network filter to include/exclude the token’s network and verify the aggregated total updates to include the token correctly.",
          "3. Compare the UI total to a manual sum of included assets to confirm no rounding or exclusion errors."
        ],
        "whyThisMatters": "Cherry-pick #44808 fixes omission of high-value, low-decimal tokens from totals; inaccuracies here directly misrepresent user wealth."
      },
      {
        "area": "Activity – Sponsored Transactions Label ('Paid by MetaMask')",
        "riskLevel": "medium",
        "testSteps": [
          "1. Perform or import a sponsored transaction (gas paid by MetaMask or a sponsor) and open the Activity tab for that account.",
          "2. Verify the transaction row and details view display the 'Paid by MetaMask' label; confirm normal transactions do not show this label.",
          "3. Open the transaction details panel and ensure the label persists consistently across views."
        ],
        "whyThisMatters": "Cherry-pick #44843 restores critical labeling for sponsored txs; without it, users may misunderstand who paid fees."
      },
      {
        "area": "Convert – mUSD Dedicated Details",
        "riskLevel": "medium",
        "testSteps": [
          "1. Open the Convert flow and select mUSD as source or destination (where available); review the quote details.",
          "2. Verify token name/icon, rate, fees, and network are accurately shown and consistent across quote and review screens.",
          "3. Change amount and re-quote; confirm details update correctly and no generic/incorrect labels appear."
        ],
        "whyThisMatters": "Cherry-pick #44613 fixes token-specific details for mUSD in Convert; incorrect details can cause user confusion or mispricing."
      }
    ],
    "initialScenarios": [
      {
        "area": "State Migrations (217, 218)",
        "riskLevel": "high",
        "testSteps": [
          "1. Start from a 13.40 profile with: 3+ accounts (imported + hardware + watch-only), multiple custom networks (incl. testnets), and a diverse token list (custom and detected) with prior transaction history.",
          "2. Upgrade to 13.41.0 and open the extension to trigger migrations; wait until the UI is responsive.",
          "3. Verify all accounts, networks, and custom RPC settings persist; spot-check 3-5 tokens (incl. a custom token) for correct symbols/decimals/balances; confirm activity history remains.",
          "4. Lock and unlock the wallet; then add a new account and switch networks to ensure post-migration state behaves normally."
        ],
        "whyThisMatters": "Migrations can corrupt or drop user data (accounts, tokens, networks). Ensuring data integrity and normal operation post-upgrade is critical to avoid fund access issues."
      },
      {
        "area": "QR Sync (Pairing with Mobile) – Lifecycle",
        "riskLevel": "high",
        "testSteps": [
          "1. Go to Settings > Sync with Mobile and generate a QR; scan from MetaMask Mobile to pair and approve any prompts on both sides.",
          "2. After pairing, verify the expected accounts and network selection synchronize correctly (e.g., account names, selected account).",
          "3. Lock and unlock the extension; ensure the pairing remains active and account selection stays in sync.",
          "4. Disconnect/revoke pairing from the extension; confirm mobile shows the session as terminated and the extension no longer lists the paired device."
        ],
        "whyThisMatters": "Pairing touches account exposure and secure communication between devices; regressions could lead to broken sync, stale sessions, or privacy leaks."
      },
      {
        "area": "Dapp Network Management (wallet_addEthereumChain / wallet_switchEthereumChain)",
        "riskLevel": "high",
        "testSteps": [
          "1. From a test dapp, trigger wallet_addEthereumChain for a new chain (valid chainId, RPC URL, block explorer). Approve in the extension and confirm the network is added and becomes active.",
          "2. Trigger wallet_switchEthereumChain to an existing chain; approve and verify the active network changes and subsequent dapp calls use the new chain.",
          "3. Attempt adding a chain with mismatched chainId/RPC or an invalid RPC; reject and verify no partial/invalid network entry is created.",
          "4. Reject a valid add/switch request and confirm the previous network remains active and no stray confirmations persist."
        ],
        "whyThisMatters": "Recent controller and dependency changes can affect add/switch flows; misconfigurations may expose users to incorrect networks or failed dapp interactions."
      },
      {
        "area": "Assets List – Network Filter and Totals",
        "riskLevel": "high",
        "testSteps": [
          "1. On the Assets tab with multiple networks enabled (e.g., Mainnet, Arbitrum, Sepolia), open the network filter and select a subset of networks.",
          "2. Verify the token list updates to only show assets from selected networks and the total asset value reflects the filtered set.",
          "3. Use the search field to find a token, then change the network filter; confirm results remain consistent with the new filter.",
          "4. Clear filters and confirm the full list and totals return without duplicates or missing entries."
        ],
        "whyThisMatters": "Large UI changes to filtering increase the risk of incorrect balances, hidden tokens, or confusing totals that could mislead users about their holdings."
      },
      {
        "area": "Account Group Balance (All Accounts view) – Aggregation Accuracy",
        "riskLevel": "medium",
        "testSteps": [
          "1. Enable All Accounts view and ensure at least two accounts hold overlapping and unique tokens across different networks.",
          "2. Verify the aggregated balance matches the manual sum of the visible tokens from all accounts for the selected networks.",
          "3. Hide/unhide a token in one account and confirm the aggregated total updates accurately without impacting other accounts’ totals.",
          "4. Switch to a different set of networks in the filter and confirm the aggregated balance recalculates correctly."
        ],
        "whyThisMatters": "Incorrect aggregation can overstate or understate a user’s portfolio, leading to poor financial decisions."
      },
      {
        "area": "Asset Picker – Consistency Across Flows (Send/Swap/Bridge)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Initiate Send, then open the asset picker; verify listed tokens respect hidden-token settings and current network filter.",
          "2. Switch to Swap or Bridge flows and open the asset picker; confirm the same tokens and ordering/labels appear consistently.",
          "3. Search within the asset picker and select a token; ensure the selection propagates correctly to the flow and balances/decimals display as expected.",
          "4. Change networks and reopen the picker; verify it refreshes to the network’s token set without stale entries."
        ],
        "whyThisMatters": "Shared token selection UI can desync across flows after refactors, causing user confusion or wrong-asset selection."
      },
      {
        "area": "Bridge Quotes and Review (Bridge Controller patch)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Open Bridge, select a token and source/destination networks; request quotes and verify they load with expected providers and fee details.",
          "2. Select a quote to open the review screen; verify token amounts, slippage, and fees are accurate and the CTA is enabled/disabled appropriately.",
          "3. Trigger an error condition (e.g., unsupported route or insufficient liquidity) and verify meaningful error messaging and recovery (retry/change route).",
          "4. Cancel the review and confirm no partial approvals/transactions were created."
        ],
        "whyThisMatters": "Controller patching can break quoting or review logic; users rely on accurate routes and fees for safe cross-chain transfers."
      },
      {
        "area": "Unconnected Account Alert – Correct Visibility",
        "riskLevel": "medium",
        "testSteps": [
          "1. Connect a dapp to Account A; switch the extension to Account B and visit the connected dapp.",
          "2. Verify the Unconnected Account alert appears and provides a clear path to switch to Account A.",
          "3. Switch back to Account A and reload the dapp; confirm the alert no longer shows.",
          "4. Disconnect the site and confirm the alert does not show for either account."
        ],
        "whyThisMatters": "Incorrect alerts can cause missed transactions or confusion about which account is interacting with a site."
      }
    ]
  }
}