{
  "prNumber": 43473,
  "prTitle": "release: 13.36.0",
  "generatedAt": "2026-06-13T06:28:46.011Z",
  "modelUsed": "gpt-5",
  "summary": {
    "totalFilesChanged": 1587,
    "totalCommitsInRelease": 111,
    "releaseRiskScore": "57/100",
    "highRiskScenarios": 7,
    "mediumRiskScenarios": 4
  },
  "testScenarios": {
    "cherryPickScenarios": [
      {
        "area": "Token Management – Import/display tokens without symbols",
        "riskLevel": "high",
        "testSteps": [
          "1. On Mainnet, import a custom token that has an empty or missing symbol (manually input contract); confirm it adds successfully.",
          "2. Verify the asset list renders the token with a safe placeholder (e.g., contract address or generic label) without crashing.",
          "3. Attempt to send the token and confirm the send form, confirmation, and activity list all render without relying on the symbol.",
          "4. Remove and re-add the same token and confirm consistent behavior and no UI exceptions."
        ],
        "whyThisMatters": "Cherry-pick #43515 fixes crashes when a token lacks a symbol; regressions could break the assets view and core send/receive flows."
      }
    ],
    "initialScenarios": [
      {
        "area": "State Migrations (212/213) – Existing users with complex asset sets",
        "riskLevel": "high",
        "testSteps": [
          "1. Start with a 13.35 profile containing: Mainnet + at least one custom network (e.g., Polygon), 6+ custom ERC-20 tokens (some hidden), and 3+ NFTs.",
          "2. Upgrade to 13.36, open the extension, and wait for the home screen to fully load.",
          "3. Verify no duplicate tokens appear, previously hidden tokens remain hidden, and NFT collections/items are intact.",
          "4. Switch to the custom network and confirm custom RPC, watch tokens, and hidden/visible status are preserved per-network.",
          "5. Refresh the extension and confirm balances/fiat values update and persist correctly."
        ],
        "whyThisMatters": "New migrations can corrupt or drop asset/network state, causing missing assets, duplicates, or broken balances after upgrade."
      },
      {
        "area": "Assets Controller upgrade – Token detection/import and per-network integrity",
        "riskLevel": "high",
        "testSteps": [
          "1. On Mainnet, import multiple custom tokens with varied metadata (0 decimals, 18 decimals, very long symbol/name) and enable/disable token detection.",
          "2. Switch between Mainnet and another network (e.g., Arbitrum) and import a token with the same contract on both networks.",
          "3. Verify no cross-network bleed (tokens only appear on the network where added) and no unintended symbol/name overrides from detection.",
          "4. Remove and re-add a previously imported token and confirm historical activity remains intact and no duplicates appear.",
          "5. Confirm balances and fiat values update after a minute or after triggering a manual refresh."
        ],
        "whyThisMatters": "Assets Controller changes can break token management across networks, causing duplicates, incorrect labels, or missing balances."
      },
      {
        "area": "Transaction Send Flow – Gas estimation and fee editing (Transaction Pay Controller patch)",
        "riskLevel": "high",
        "testSteps": [
          "1. On Mainnet, send ETH to a new address; verify EIP-1559 estimates (Low/Market/Aggressive) populate correctly.",
          "2. Open Advanced gas settings, manually adjust max priority/fee and ensure the total updates correctly and confirmation is enabled.",
          "3. Repeat on an L2 (e.g., Optimism) and verify fee display units, confirmation, and final posted gas values in the activity detail.",
          "4. Attempt a low-gas scenario (set fees below suggested) and confirm validation prevents or warns appropriately.",
          "5. Complete the transactions and verify status and fees reported in activity match expectations."
        ],
        "whyThisMatters": "Small controller changes around fees can break send confirmations, misprice gas, or cause failed/broadcast-stuck transactions."
      },
      {
        "area": "Activity List Avatars – Swaps, approvals, contract interactions",
        "riskLevel": "high",
        "testSteps": [
          "1. Perform a token approval then a token transfer; check the activity list shows correct avatars/icons for each item.",
          "2. Execute a swap via the built-in Swaps; verify avatar shows swap-appropriate icon and counterparty visuals.",
          "3. Perform a generic contract interaction from a dapp; confirm fallback icon/identicon renders if no icon is available.",
          "4. Open each activity detail panel to ensure no broken images or layout jumps occur.",
          "5. Scroll through a long activity history and confirm avatars load progressively without flicker or errors."
        ],
        "whyThisMatters": "The avatar component change can produce broken/bad icons or crashes in the high-traffic activity view."
      },
      {
        "area": "NFT Activity and Avatar Fallbacks",
        "riskLevel": "high",
        "testSteps": [
          "1. Receive an NFT, then transfer it; verify the activity list uses the NFT image when available.",
          "2. For an NFT with a broken/404 image, confirm the avatar falls back to a placeholder/identicon without errors.",
          "3. Open NFT details from the asset tab and the activity item to validate consistent imagery and titles.",
          "4. Switch networks and confirm NFT avatars are scoped correctly per network (no cross-network images/data)."
        ],
        "whyThisMatters": "UI fallback paths for NFTs are prone to null/404 cases; regressions here can break activity rendering or mislead users."
      },
      {
        "area": "Network switching while transactions are pending",
        "riskLevel": "high",
        "testSteps": [
          "1. Start a pending transaction on Mainnet (simulate slow gas or use low gas).",
          "2. Switch to another network (e.g., Base) while the transaction is pending.",
          "3. Verify any alert/interstitial appears correctly, allows safe cancel/dismiss, and the switch succeeds or is blocked as expected.",
          "4. Return to Mainnet and ensure the pending transaction is still visible with correct status.",
          "5. Complete or speed up the transaction and confirm final state is consistent in activity."
        ],
        "whyThisMatters": "Controller/UI synchronization during network changes can orphan pending activity or confuse users about the state of their transactions."
      },
      {
        "area": "MetaMetrics – Onboarding opt-in/out and settings toggle",
        "riskLevel": "medium",
        "testSteps": [
          "1. Start a fresh profile and go through onboarding; choose to decline metrics.",
          "2. Confirm you reach the home screen without further prompts and the Metrics toggle is Off in Settings.",
          "3. Toggle MetaMetrics On in Settings and confirm the confirmation dialog flows correctly and state persists after reload.",
          "4. Toggle back Off and confirm prompt/confirmation behavior and persistence."
        ],
        "whyThisMatters": "New platform adapter code can break opt-in/out flows or the persistence of telemetry preferences."
      },
      {
        "area": "Alert Modal – Destructive and interstitial actions",
        "riskLevel": "medium",
        "testSteps": [
          "1. Trigger a known alert (e.g., Reset Account or Disconnect Site) and confirm modal copy, primary/secondary actions, and keyboard ESC/Enter behavior.",
          "2. Confirm clicking backdrop behaves as specified (closes or blocks) and focus is trapped within the modal for accessibility.",
          "3. Validate that choosing Cancel or X closes without side-effects, and Confirm applies the action and updates UI state immediately."
        ],
        "whyThisMatters": "Alert modal changes can cause users to inadvertently perform or fail to perform critical actions, impacting safety and trust."
      },
      {
        "area": "Account List Selection – Send screen and account switcher",
        "riskLevel": "medium",
        "testSteps": [
          "1. Add 8+ accounts (including a hardware account if available) and open the account switcher.",
          "2. Select different accounts rapidly and confirm the selected account updates in the header and home balance.",
          "3. Open the Send screen and switch accounts mid-flow; verify the form resets/retains values appropriately and no stale account state remains.",
          "4. Validate long names/emojis do not clip or overlap in the list."
        ],
        "whyThisMatters": "Small list rendering changes can cause selection bugs or misrouting of funds from the wrong account."
      },
      {
        "area": "Assets Migration UI gating (selectors/assets-migration)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Upgrade an existing profile and observe whether any migration banners/prompts appear on home or assets screens.",
          "2. Confirm banners appear only when criteria are met (e.g., legacy state needing conversion) and do not show for fresh installs.",
          "3. Dismiss the banner and verify it does not reappear unnecessarily after reload or network switch."
        ],
        "whyThisMatters": "Selector logic changes can cause incorrect or persistent migration prompts, confusing users post-upgrade."
      }
    ]
  }
}