{
  "prNumber": 43473,
  "prTitle": "release: 13.36.0",
  "generatedAt": "2026-06-14T05:00:09.060Z",
  "modelUsed": "gpt-5",
  "summary": {
    "totalFilesChanged": 1587,
    "totalCommitsInRelease": 112,
    "releaseRiskScore": "51/100",
    "highRiskScenarios": 5,
    "mediumRiskScenarios": 6
  },
  "testScenarios": {
    "cherryPickScenarios": [
      {
        "area": "Token Management – handling tokens with missing symbol",
        "riskLevel": "medium",
        "testSteps": [
          "1. On a test network, add or detect an ERC-20 whose contract returns an empty or null symbol (or uses a known test token without a symbol).",
          "2. Open the Assets and Activity tabs; verify the app does not crash and the token row shows a safe fallback label (e.g., contract address/placeholder).",
          "3. Initiate a send of the symbol-less token and confirm the confirmation screen and activity item render without errors.",
          "4. Hide/unhide the token and refresh; verify stable behavior and no re-render loops."
        ],
        "whyThisMatters": "Cherry-pick 43515 fixes a crash where tokens without a symbol could break the app; regression would cause app instability on portfolios holding such tokens."
      }
    ],
    "initialScenarios": [
      {
        "area": "State Migrations (212 & 213) – persisted wallet data",
        "riskLevel": "high",
        "testSteps": [
          "1. Start on 13.35.x with at least 2 accounts, tokens on Mainnet and a testnet (e.g., Goerli/Seploia), and at least one NFT; close the extension.",
          "2. Update to 13.36.0 and open the extension; wait for the home screen to load (let background complete migrations).",
          "3. Verify all accounts, tokens (including custom/hidden), NFTs, and connected sites persist; balances and fiat values load without errors.",
          "4. Switch networks (Mainnet -> testnet -> custom RPC) and confirm token/NFT lists and activity remain intact on each network."
        ],
        "whyThisMatters": "Migrations change stored data formats; any error can cause data loss, missing tokens/NFTs, or inability to load the wallet."
      },
      {
        "area": "State Migrations – locked state and edge data",
        "riskLevel": "high",
        "testSteps": [
          "1. On 13.35.x, lock the wallet with tokens/NFTs configured (including at least one custom token), then update to 13.36.0.",
          "2. Open the extension while locked; unlock and observe initial load.",
          "3. Confirm the app does not hang or show blank/loader screens; token lists render, activity populates, and no 'failed to migrate' or 'cannot load tokens' errors appear.",
          "4. Verify advanced settings > state log (if available) shows latest migration version applied and there are no repeating migration retries."
        ],
        "whyThisMatters": "Users often update while locked; migration must safely resume post-unlock and handle edge records without bricking the UI."
      },
      {
        "area": "Token Management – Assets Controller update (autodetection, metadata, pricing)",
        "riskLevel": "high",
        "testSteps": [
          "1. Enable token detection on Mainnet and one testnet; ensure multiple tokens (with/without logos) appear with balances and fiat values where applicable.",
          "2. Add a custom ERC-20 on Mainnet and the same address on a testnet; confirm tokens are correctly scoped to each network (no cross-network duplication).",
          "3. Hide a detected token, then refresh and switch networks; verify it stays hidden on that specific network and is not immediately re-added.",
          "4. Confirm tokens with missing metadata (logo/name) render safe fallbacks and do not break portfolio or activity views."
        ],
        "whyThisMatters": "Assets controller powers token lists and metadata; regressions can cause wrong balances, duplicates, or UI crashes."
      },
      {
        "area": "Transaction Flow – Transaction Pay Controller (gas estimation, EIP-1559 vs legacy)",
        "riskLevel": "high",
        "testSteps": [
          "1. On an EIP-1559 network (e.g., Mainnet), send native ETH; verify suggested maxFee and maxPriorityFee show and can be edited, then confirm.",
          "2. Speed up the pending transaction and then attempt to cancel it; verify correct replacement transactions are created and status updates correctly.",
          "3. On a legacy gas network (e.g., BSC or a legacy custom RPC), send the native token and confirm gas price fields (no EIP-1559) are shown and the transaction completes."
        ],
        "whyThisMatters": "Incorrect gas suggestions or replacement logic can cause failed or stuck transactions, directly impacting core wallet functionality."
      },
      {
        "area": "Privacy & Analytics – New analytics platform adapter and method/action mapping",
        "riskLevel": "high",
        "testSteps": [
          "1. Fresh install: decline metrics; connect to a test dapp, open/close popups, and send a small test transaction.",
          "2. In the background DevTools Network panel, verify no analytics/metrics requests are sent while opted out.",
          "3. Enable metrics in Settings > Security & Privacy; repeat key actions (connect, send); verify analytics requests now appear and do not include sensitive payloads (addresses/amounts redacted as per policy)."
        ],
        "whyThisMatters": "Analytics transport changes can violate privacy expectations or block critical user actions if events cause errors."
      },
      {
        "area": "Global Alerts & Modals – alert system changes (blocking errors and warnings)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Trigger an error alert by attempting to send more than the available balance; verify the alert modal renders fully and can be dismissed.",
          "2. Trigger a security/warning alert (e.g., connect to an unverified site or simulate a bad network switch) and confirm actions in the modal work and return you to a stable state.",
          "3. Ensure focus is trapped in the modal and keyboard navigation allows dismiss/confirm without freezing the UI."
        ],
        "whyThisMatters": "Global alerts block critical flows; regressions can trap users in modals or silently fail transactions."
      },
      {
        "area": "Activity Feed – avatars/icons for tokens and NFTs",
        "riskLevel": "medium",
        "testSteps": [
          "1. Perform a native send, an ERC-20 send, and an NFT (ERC-721 or ERC-1155) transfer; open Activity.",
          "2. Verify each activity item shows the correct avatar/icon or a safe fallback without broken images.",
          "3. Open the activity details view for each and confirm icons, titles, and amounts are consistent."
        ],
        "whyThisMatters": "Recent UI changes to avatars can cause broken images or crashes in the most-visited screen (activity)."
      },
      {
        "area": "Account Switching – account list item rendering and selection",
        "riskLevel": "medium",
        "testSteps": [
          "1. Create/import 6–10 accounts and connect at least one hardware account; open the account switcher.",
          "2. Scroll and select different accounts; verify the selected account address and balance update immediately on home.",
          "3. Rename an account and confirm the updated label appears correctly in the list and activity."
        ],
        "whyThisMatters": "Small UI changes to account list can break selection, labeling, or lead to user confusion when switching send-from accounts."
      },
      {
        "area": "Portfolio/Token Totals – cross-network asset aggregation and selectors",
        "riskLevel": "medium",
        "testSteps": [
          "1. With balances on Mainnet and a testnet, open Portfolio/Assets; confirm fiat totals and per-network subtotals are accurate.",
          "2. Hide one token and verify totals update immediately and remain correct after a refresh and network switch.",
          "3. Switch to an account with no assets; confirm totals drop to zero and no stale values remain."
        ],
        "whyThisMatters": "Selector logic changes can miscompute totals, leading to incorrect balances and user trust issues."
      },
      {
        "area": "NFTs – detection and display (metadata fallbacks)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Add at least one ERC-721 and one ERC-1155 NFT across two networks; open the NFTs tab.",
          "2. Verify images and names appear, or safe fallbacks are shown; no blank cards or crashes.",
          "3. Transfer an NFT and confirm the NFTs tab and Activity update consistently with the correct icon."
        ],
        "whyThisMatters": "Assets controller and UI updates can break NFT rendering or transfers, a common support pain point."
      }
    ]
  }
}