{
  "prNumber": 44797,
  "prTitle": "release: 13.42.0",
  "generatedAt": "2026-07-30T17:20:36.412Z",
  "modelUsed": "gpt-5",
  "summary": {
    "totalFilesChanged": 1285,
    "totalCommitsInRelease": 141,
    "releaseRiskScore": "57/100",
    "highRiskScenarios": 7,
    "mediumRiskScenarios": 4
  },
  "testScenarios": {
    "cherryPickScenarios": [
      {
        "area": "Security: Deep Link Interstitial Protection",
        "riskLevel": "high",
        "testSteps": [
          "1. From an external link (e.g., metamask://add-network?chainId=0x89 or metamask.app.link deep link), trigger opening the extension to perform an action (add network or connect).",
          "2. Verify an interstitial confirmation screen appears before any action is executed; review details and proceed.",
          "3. Cancel the interstitial and confirm no side effects occurred (no network added, no connection established).",
          "4. Repeat with a different action type (e.g., add token) and confirm consistent protection."
        ],
        "whyThisMatters": "Cherry-pick #44830 fixes a regression that removed deep-link interstitial protection; without it, malicious links could silently perform actions."
      },
      {
        "area": "Deep Links: Cross-Chain Asset Links With Missing Account",
        "riskLevel": "high",
        "testSteps": [
          "1. With only an Ethereum account configured, open a deep link targeting an asset on a different chain (e.g., BSC token details).",
          "2. Verify the extension prompts to add/switch to the target network and to select or create an account if none exists for that chain.",
          "3. Complete the prompts and confirm the asset detail screen loads; cancel mid-flow and verify a clean rollback with no crashes or blank screens."
        ],
        "whyThisMatters": "Cherry-pick #44913 fixes crashes when handling cross-chain asset deep links without an existing account; users must be guided safely to create/select an account."
      },
      {
        "area": "Swaps: Stale Destination Exchange Rates",
        "riskLevel": "high",
        "testSteps": [
          "1. Open Swaps, select a pair (e.g., ETH → USDC) and note the 'You receive' amount and rate.",
          "2. Rapidly change the destination token and slippage; verify the displayed destination amount and rate update promptly without showing the previous token’s rate.",
          "3. Wait for auto-refresh and switch networks; confirm quotes refresh and no stale data persists into the confirmation screen.",
          "4. Proceed to confirmation and verify the quote in the confirm screen matches the latest displayed values."
        ],
        "whyThisMatters": "Cherry-pick #45011 fixes stale destination rate issues; incorrect rates can cause users to accept bad swaps or fail transactions."
      },
      {
        "area": "Accounts/Networks: Missing slip44 Entries Handling",
        "riskLevel": "medium",
        "testSteps": [
          "1. Add or switch to a supported EVM chain with a non-standard slip44 mapping (e.g., Celo) and create a new account.",
          "2. Verify account creation does not error and addresses remain consistent when switching networks.",
          "3. Import an external private key account and ensure it displays and functions correctly across these networks (balances/transactions visible)."
        ],
        "whyThisMatters": "Cherry-pick #45039 adds missing slip44 entries; without correct mappings, account creation or address derivation could fail or misbehave on some chains."
      }
    ],
    "initialScenarios": [
      {
        "area": "State Migration (Migration 219)",
        "riskLevel": "high",
        "testSteps": [
          "1. Start with 13.41.x profile: 2+ HD accounts, 1 imported account, custom networks (e.g., Polygon, BSC), custom tokens and 1 imported NFT; ensure dark mode enabled and fiat currency changed.",
          "2. Upgrade to 13.42.0 and unlock; wait for the app to fully load.",
          "3. Verify all accounts, balances, NFTs, connected sites, custom networks, and settings (theme, currency, token detection) persist.",
          "4. Open Activity and confirm historical transactions are visible and correct across networks; open a transaction details view and ensure no errors.",
          "5. Attempt a normal send on mainnet and a network switch to a custom RPC to confirm no blocked flows or crashes post-migration."
        ],
        "whyThisMatters": "New migrations can corrupt or drop user data; verifying persistence of accounts, networks, and assets prevents irreversible loss and broken core flows after upgrade."
      },
      {
        "area": "Token Management (Assets Controller 11.0.0 upgrade)",
        "riskLevel": "high",
        "testSteps": [
          "1. On Ethereum and a sidechain (e.g., Polygon), toggle Token Detection on/off and observe the token list change accordingly.",
          "2. Add a custom ERC-20 via Add Token (contract + decimals), then verify symbol, balance, and icon render correctly in both home and asset detail views.",
          "3. Hide and then unhide the custom token; switch networks and confirm visibility state is network-specific and consistent.",
          "4. Trigger a balance refresh by switching accounts and reopening the asset; confirm balance and fiat price update without stale values."
        ],
        "whyThisMatters": "A major Assets Controller bump can change detection, pricing, and caching behavior; regressions here break balances, token visibility, and user trust."
      },
      {
        "area": "NFTs (Detection/Import and Metadata Rendering)",
        "riskLevel": "high",
        "testSteps": [
          "1. On Ethereum, import an NFT manually (contract + token ID) and verify the image, name, and ID render in the NFT tab and details screen.",
          "2. Switch to dark mode and reopen the NFT details; confirm text and icons remain legible and no broken images occur.",
          "3. Switch networks and return to Ethereum; verify NFT persists only on the correct network and metadata remains intact.",
          "4. Remove the NFT and reimport it; confirm no duplicate entries or cache-related glitches."
        ],
        "whyThisMatters": "NFT handling depends on asset metadata pipelines; controller or UI changes can cause missing images, wrong metadata, or duplicate/vanishing NFTs."
      },
      {
        "area": "Bridge (Quotes, Approvals, and Confirmation)",
        "riskLevel": "high",
        "testSteps": [
          "1. Open Bridge, select Ethereum → Polygon and pick a common token (e.g., USDC); request a quote and confirm fees/ETA display.",
          "2. Change the amount and token quickly; verify quotes refresh appropriately without stale data or spinners stuck.",
          "3. Proceed to confirmation; verify approval steps (if required) and final summary (source/destination chains, token, amount, fees) are accurate.",
          "4. Cancel from confirmation; verify any prior approvals are not left pending and Bridge returns to a clean state."
        ],
        "whyThisMatters": "Bridge flows rely on controller logic for quotes and multi-step approvals; errors can lock users in pending states or cause incorrect cross-chain transfers."
      },
      {
        "area": "Transaction Sending and Error Handling (API Error Handler)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Configure a custom RPC that returns errors (e.g., invalid URL) and switch to it.",
          "2. Attempt to open the send flow or fetch account activity; verify an inline error banner/dialog appears with a clear message.",
          "3. Switch back to a working network and confirm the error state clears automatically and normal operations resume.",
          "4. From a dapp, try a transaction on the bad RPC; verify the confirm screen blocks appropriately with an actionable error."
        ],
        "whyThisMatters": "Improper API error handling can mislead users and enable broken transactions; clear, recoverable errors are essential for safety and usability."
      },
      {
        "area": "Permissions and Encryption (eth_getEncryptionPublicKey / eth_decrypt)",
        "riskLevel": "medium",
        "testSteps": [
          "1. From a test dapp, request eth_getEncryptionPublicKey; approve and verify a valid key is returned to the dapp.",
          "2. Have the dapp encrypt a message with that key and request eth_decrypt; verify the confirmation shows the correct account and message, then approve and confirm the dapp receives plaintext.",
          "3. Lock the wallet, repeat eth_decrypt; ensure unlock flow triggers, then continues the request seamlessly post-unlock.",
          "4. Reject the decrypt request; ensure the dapp receives a proper rejection error and no stale confirmation remains open."
        ],
        "whyThisMatters": "Even small changes to encryption/decryption flows can break dapp integrations or leak data; correct prompts and permission handling are security-critical."
      },
      {
        "area": "Alert System (Modals, Inline Alerts, Stacking)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Trigger a destructive action in Settings (e.g., attempt Reset Account) and verify the confirm-alert modal copies, colors, and buttons render correctly; cancel and confirm no unintended state changes.",
          "2. On Send flow, input an invalid address to show an inline alert; correct the address and ensure the alert dismisses immediately.",
          "3. While an alert is visible, trigger another (e.g., wrong password to view seed phrase); verify stacking or replacement behaves predictably without overlapping or orphaned alerts.",
          "4. Repeat in dark mode to ensure contrast and readability are appropriate."
        ],
        "whyThisMatters": "Refactors to the alert system can cause missing confirmations or stuck alerts that block critical user actions and lead to mistaken confirmations."
      }
    ]
  }
}