PR 30726 real-environment verification main: 8b44f42b14c8e273156474a924ccf29680dd7857 PR: b7ad186e86f3afb62b3abeacf5c6055e077d9018 Linux; Playwright 1.60.0; /usr/bin/google-chrome Started main with vp run dev --no-seed in /home/user/main. Stopped its captured process group before starting PR with vp run dev --home-dir /home/user/t3code/.t3 --no-seed. Created project /home/user/t3code through Add project > Local folder. Used Codex gpt-6.1-sol through the web composer on both revisions. Main provider turn: git rev-parse --show-toplevel and git status --short; completed, working tree clean. PR provider turn: git rev-parse HEAD and git status --short; completed, exact PR SHA, working tree clean. Reproduction: touch useTheme.ts without changing contents to trigger normal Vite HMR (?t= URL). Fill the browser origin localStorage to its real quota, then click Settings > Appearance > Dark. No mocked APIs, substituted Error objects, or edited application code. Both revisions show the real save-failure toast and keep the previous appearance. MAIN console.error attributes: { "operation": "write", "storageKey": "t3code:theme-appearance-mode", "errorType": "error", "errorName": "ThemeStorageError", "errorTag": "ThemeStorageError", "stack": " at writeAppearanceModePreference (http://localhost:8693/src/hooks/useTheme.ts)\n at setAppearanceMode (http://localhost:8693/src/hooks/useTheme.ts)\n at t13 (http://localhost:8693/src/components/settings/ThemeSettings.tsx:997:10)\n at onClick (http://localhost:8693/src/components/settings/ThemeSettings.tsx:1062:22)\n at executeDispatch (http://localhost:8693/node_modules/.vite/deps/client-CQQMupom.js)\n at runWithFiberInDEV (http://localhost:8693/node_modules/.vite/deps/client-CQQMupom.js)\n at processDispatchQueue (http://localhost:8693/node_modules/.vite/deps/client-CQQMupom.js)\n at http://localhost:8693/node_modules/.vite/deps/client-CQQMupom.js\n at batchedUpdates$1 (http://localhost:8693/node_modules/.vite/deps/client-CQQMupom.js)\n at dispatchEventForPluginEventSystem (http://localhost:8693/node_modules/.vite/deps/client-CQQMupom.js)" } PR console.error attributes: { "operation": "write", "storageKey": "t3code:theme-appearance-mode", "errorType": "error", "errorName": "ThemeStorageError", "errorTag": "ThemeStorageError", "stack": " at writeAppearanceModePreference (http://localhost:5733/src/hooks/useTheme.ts:113:9)\n at setAppearanceMode (http://localhost:5733/src/hooks/useTheme.ts:418:3)\n at t13 (http://localhost:5733/src/components/settings/ThemeSettings.tsx:997:10)\n at onClick (http://localhost:5733/src/components/settings/ThemeSettings.tsx:1062:22)\n at executeDispatch (http://localhost:5733/node_modules/.vite/deps/client-CQQMupom.js:9659:5)\n at runWithFiberInDEV (http://localhost:5733/node_modules/.vite/deps/client-CQQMupom.js:697:66)\n at processDispatchQueue (http://localhost:5733/node_modules/.vite/deps/client-CQQMupom.js:9685:27)\n at http://localhost:5733/node_modules/.vite/deps/client-CQQMupom.js:9954:5\n at batchedUpdates$1 (http://localhost:5733/node_modules/.vite/deps/client-CQQMupom.js:1898:12)\n at dispatchEventForPluginEventSystem (http://localhost:5733/node_modules/.vite/deps/client-CQQMupom.js:9758:4)" } Neighbor checks: - Query-free ThemeSettings.tsx frames keep the same :997:10 and :1062:22 positions on both revisions. - Query strings remain removed on PR. - Remove only the quota-fill keys, click Dark again: localStorage appearance mode = dark, document class = dark. - Reload: appearance mode and document class still dark. Existing focused tests through blacksmith-check: vp test run packages/client-runtime/src/errors/safeLog.test.ts 1 file passed; 2 tests passed. Includes credential/query/message redaction assertions. CI: 31 successful, 0 failing, 0 pending at inspected head. Unverified: native iOS/Android Metro frames; Firefox engine; Electron shell; remote/tunnel topology. No source changes or pushes.