{
  "prNumber": 45055,
  "prTitle": "release: 13.43.0",
  "generatedAt": "2026-08-10T18:27:52.032Z",
  "modelUsed": "gpt-5",
  "summary": {
    "totalFilesChanged": 1354,
    "totalCommitsInRelease": 166,
    "releaseRiskScore": "55/100",
    "highRiskScenarios": 6,
    "mediumRiskScenarios": 6
  },
  "testScenarios": {
    "cherryPickScenarios": [
      {
        "area": "Smart Transactions – Tx Sentinel routing for Robinhood",
        "riskLevel": "high",
        "testSteps": [
          "1. Enable Smart Transactions and send a small ETH transfer on a Robinhood-integrated network (or the environment configured to use the Robinhood sentinel).",
          "2. In the transaction details, verify timely status updates (Submitted → Confirmed) and no stuck pending due to sentinel routing.",
          "3. Disable Smart Transactions and send again to verify legacy flow remains unaffected.",
          "4. Briefly disrupt connectivity after submit; confirm clear error/retry messaging without infinite pending."
        ],
        "whyThisMatters": "Cherry-pick 45214 fixes Smart Transactions controller routing to the Robinhood tx-sentinel; incorrect routing would cause stuck or failed transactions for affected users."
      },
      {
        "area": "Perps – Order Book on Order Entry page",
        "riskLevel": "medium",
        "testSteps": [
          "1. Open the Perps trading UI and select a liquid market (e.g., ETH-PERP); verify the order book renders with bids/asks.",
          "2. Confirm the book updates in real time; click a price level to prefill the order form.",
          "3. Place a small limit order and verify it appears under open orders with correct price/size.",
          "4. Switch markets and verify the book reloads; check an illiquid/empty market displays a graceful empty state."
        ],
        "whyThisMatters": "Cherry-pick 45151 adds a new order book in the order entry flow; rendering, real-time updates, and order placement integration must work to avoid broken trading experiences."
      }
    ],
    "initialScenarios": [
      {
        "area": "State Migrations (220/221) – Full upgrade with rich user state",
        "riskLevel": "high",
        "testSteps": [
          "1. On 13.42.x, create 3+ accounts (incl. imported), add at least one custom network, connect to 2 dapps, add custom tokens/NFTs, install and enable a Snap, and opt OUT of MetaMetrics.",
          "2. Upgrade to 13.43.0 and unlock.",
          "3. Verify all accounts, balances, custom networks, connected sites/permissions, custom tokens/NFTs, and Snap enablement/permissions persist.",
          "4. Confirm MetaMetrics remains opted OUT and no telemetry is sent on navigation (inspect extension background DevTools -> Network).",
          "5. Perform basic actions (switch network, open activity, initiate a send and cancel before confirm) to ensure no migration-related crashes or warnings."
        ],
        "whyThisMatters": "Migrations can corrupt/lose critical user state; a bad migration can break permissions, networks, or privacy settings across all users."
      },
      {
        "area": "State Migrations (220/221) – Backfill/edge-case resilience",
        "riskLevel": "high",
        "testSteps": [
          "1. Prepare a pre-upgrade profile with intentionally missing or malformed optional fields (e.g., remove certain app-state/metametrics keys via state edit tool or QA fixture).",
          "2. Upgrade to 13.43.0 and unlock.",
          "3. Verify extension loads without white-screen or background errors; state keys are backfilled to safe defaults.",
          "4. Validate navigation through Home, Activity, and Settings works; no repeated migration prompts or loops.",
          "5. Export account state (if possible) and confirm schema alignment with new expected keys."
        ],
        "whyThisMatters": "Real users often have older or partially corrupted state; migrations must be robust to avoid lockouts and data loss."
      },
      {
        "area": "Transaction Flow – Smart Transactions on/off and fallback",
        "riskLevel": "high",
        "testSteps": [
          "1. Enable Smart Transactions in Settings -> Experimental (or equivalent), then send a small ETH transfer on Mainnet and confirm.",
          "2. In the activity/details view, verify Smart labeling, fee presentation, and timely status updates to confirmed.",
          "3. Disable Smart Transactions and repeat the send; verify legacy path works, with normal gas estimation and status.",
          "4. During a Smart Transaction submission, briefly disrupt network connectivity; verify user receives clear retry/failure messaging without stuck pending.",
          "5. Attempt Speed Up and Cancel on a pending Smart Transaction and verify correct behavior or informative limitations."
        ],
        "whyThisMatters": "Any regression in transaction submission, fee display, or status tracking can cause financial loss or user lockout."
      },
      {
        "area": "Network Management – Invalid Custom Network Alert",
        "riskLevel": "high",
        "testSteps": [
          "1. Add a custom network with a non-responsive or mismatched chainId RPC URL and switch to it.",
          "2. Verify the invalid custom network alert appears with actionable guidance.",
          "3. Attempt to initiate a swap or send; verify blocked or clearly warned flow, preventing accidental failures.",
          "4. Fix the RPC URL to a valid endpoint; confirm the alert disappears and transactions become available.",
          "5. Reload the extension to ensure alert state persists/clears correctly as the network validity changes."
        ],
        "whyThisMatters": "Incorrectly allowing actions on an invalid network can cause failed transactions and loss of user trust."
      },
      {
        "area": "Privacy & Telemetry – MetaMetrics Controller changes",
        "riskLevel": "high",
        "testSteps": [
          "1. In Settings, opt OUT of MetaMetrics, then switch networks, view activity, and open a token detail screen.",
          "2. Inspect extension background DevTools -> Network to verify no analytics endpoints are called.",
          "3. Opt IN to MetaMetrics and perform one send flow to confirmation; verify exactly expected analytics calls appear without PII leakage.",
          "4. Toggle opt-in/out again and reload; verify preference persists and behavior respects it.",
          "5. Confirm that consent prompts (if any) appear only once and do not regress across lock/unlock."
        ],
        "whyThisMatters": "Telemetry consent and event gating are critical for compliance and user trust; regressions can cause privacy violations."
      },
      {
        "area": "Dapp Connections – Unconnected Account Alert behavior",
        "riskLevel": "medium",
        "testSteps": [
          "1. Open a popular dapp (e.g., Uniswap) without connecting; verify the unconnected account alert appears in the extension when the site requests accounts.",
          "2. Connect one account to the site; verify the alert disappears.",
          "3. Switch to a different account that is not connected; verify the alert reappears and offers to connect.",
          "4. Disconnect the site from Settings -> Connected sites and reload the dapp; confirm the alert behavior is accurate."
        ],
        "whyThisMatters": "Incorrect alerts can confuse users or lead to accidental actions with the wrong account."
      },
      {
        "area": "Assets – Network filter and Control Bar behavior",
        "riskLevel": "medium",
        "testSteps": [
          "1. On the Tokens list, switch the control bar filter between All networks and Home network; verify token counts and balances update accordingly.",
          "2. Open the Home network filter modal and pick a different network; verify selection persists and the list updates.",
          "3. Combine filters (e.g., hide zero balances if available) and confirm the list remains accurate and performant.",
          "4. Navigate away and back; verify filters persist across sessions."
        ],
        "whyThisMatters": "Incorrect filtering can hide assets or mislead users about balances, causing support issues and loss of trust."
      },
      {
        "area": "Balances – Account group balance aggregation",
        "riskLevel": "medium",
        "testSteps": [
          "1. With multiple accounts across at least two networks, verify the account group balance equals the sum of visible account balances in the selected currency.",
          "2. Toggle currency conversion (e.g., USD) and confirm totals recalculate accurately with current rates.",
          "3. Toggle visibility filters (e.g., hide small balances) and verify the group total reflects only visible assets.",
          "4. Refresh the extension and ensure the aggregated balance remains consistent and without flicker."
        ],
        "whyThisMatters": "Incorrect totals or rounding lead to user confusion and perceived balance discrepancies."
      },
      {
        "area": "Perps – Streaming/bridge stability (market data updates)",
        "riskLevel": "medium",
        "testSteps": [
          "1. Open the Perps/trading page and select an active market; verify live data updates (prices/spreads) without UI freezes.",
          "2. Switch networks or lock/unlock while the page is open; ensure the stream resumes without errors.",
          "3. Simulate brief offline/online transitions; verify reconnection and no duplicate or stale data display.",
          "4. Confirm CPU/memory remain reasonable during sustained updates."
        ],
        "whyThisMatters": "Streaming regressions can degrade performance or show stale prices, risking user mistakes."
      },
      {
        "area": "App State – Lock/Unlock and UI state persistence",
        "riskLevel": "medium",
        "testSteps": [
          "1. Open the extension to a non-default view (e.g., a token detail or activity tab).",
          "2. Lock the wallet, then unlock.",
          "3. Verify return to a sensible state (no blank screens, no incorrect navigation loops).",
          "4. Reload the extension; verify last-used tab/view persistence works as expected."
        ],
        "whyThisMatters": "App state controller changes can cause navigation glitches that block access to core features."
      }
    ]
  }
}