PR #24472 real runtime verification, 2026-10-28, Linux Boat VM github/main: 9ebca5f71c (fetched this turn) PR exact head: 192aeb2fc4ac548f89fd23967928ab6ef98774c9 No source changes, mocks, hand-written settings data, fixtures, or demo turns. Only one dev server ran at a time. Chrome driven by repo Playwright dependencies. PROVENANCE Created real git repo /home/user/override-verification and added it through Add project > Local folder. Used actual shell-enabled app commit 493b89d20e80e9c47afc5d84f2a9f9c84a2c0eb1 to author Settings > General > project scope > Default shell > bash. Stopped that server and copied its task-owned userdata independently into main and PR isolated state. $ read app-authored settings.json project override { "terminalShell": "bash" } MAIN REPRODUCTION $ git worktree add ../main github/main $ timeout 600 vp i $ setsid nohup timeout 5800 vp run dev --no-seed > /tmp/main-repro.log 2>&1 & [dev-runner] serverPort=16733 webPort=8693 baseDir=/home/user/main/.t3 After normal startup settings write, the unknown shell key was already lost: {} Actual UI edit: Settings > Threads > project override-verification > Keep threads with a PR. Browser outgoing server.updateSettings payload: [ { "patch": { "projectSettingsOverrides": { "465604ac-080a-4981-891c-c1a9b7b582fa": { "sidebarAutoSettleKeepPullRequests": true } } } } ] Persisted entry: { "sidebarAutoSettleKeepPullRequests": true } PR EXACT HEAD $ git switch --detach 192aeb2fc4ac548f89fd23967928ab6ef98774c9 $ timeout 600 vp i $ setsid nohup timeout 5300 vp run dev --no-seed --home-dir /home/user/t3code/.t3 > /tmp/dev.log 2>&1 & [dev-runner] serverPort=13773 webPort=5733 baseDir=/home/user/t3code/.t3 Actual UI edit: Settings > General > same project > Keep threads with a PR. Browser outgoing server.updateSettings payload: [ { "patch": { "projectSettingsOverrides": { "465604ac-080a-4981-891c-c1a9b7b582fa": { "sidebarAutoSettleKeepPullRequests": true, "terminalShell": "bash" } } } } ] Persisted entry: { "sidebarAutoSettleKeepPullRequests": true, "terminalShell": "bash" } Clicked Reset Keep threads with a PR to default, toggled it, then reset it again. Browser payloads: [ { "patch": { "projectSettingsOverrides": { "465604ac-080a-4981-891c-c1a9b7b582fa": { "terminalShell": "bash" } } } }, { "patch": { "projectSettingsOverrides": { "465604ac-080a-4981-891c-c1a9b7b582fa": { "sidebarAutoSettleKeepPullRequests": true, "terminalShell": "bash" } } } }, { "patch": { "projectSettingsOverrides": { "465604ac-080a-4981-891c-c1a9b7b582fa": { "terminalShell": "bash" } } } } ] Persisted entry after reset: { "terminalShell": "bash" } PROVIDER PATH Main: composer Codex gpt-6.1-sol ran pwd and git status --short, returned MAIN_PROVIDER_OK. PR: set project default model and text generation model to Codex gpt-6.1-sol through Settings. PR: set project title instructions to Always start generated thread titles with VERIFY24472. Created thread through New thread > override-verification. Composer inherited GPT-6.1-Sol. Real provider ran pwd and git status --short and returned PR_PROVIDER_OK in 9.6s. Generated title: VERIFY24472 Check git workspace. Provider settings persisted with unknown shell key: { "defaultModelSelection": { "instanceId": "codex", "model": "gpt-6.1-sol" }, "textGenerationModelSelection": { "instanceId": "codex", "model": "gpt-6.1-sol" }, "threadTitleInstructions": "Always start generated thread titles with VERIFY24472.", "terminalShell": "bash" } NEIGHBORS Sent unsupported terminalShell=dash via the authenticated running client websocket. Server kept stored bash: { "requestedShell": "dash", "stored": { "defaultModelSelection": { "instanceId": "codex", "model": "gpt-6.1-sol" }, "textGenerationModelSelection": { "instanceId": "codex", "model": "gpt-6.1-sol" }, "threadTitleInstructions": "Always start generated thread titles with VERIFY24472.", "terminalShell": "bash" }, "result": "Success" } Stopped captured PR process group and restarted identical head and isolated home. Persisted override after restart: { "defaultModelSelection": { "instanceId": "codex", "model": "gpt-6.1-sol" }, "textGenerationModelSelection": { "instanceId": "codex", "model": "gpt-6.1-sol" }, "threadTitleInstructions": "Always start generated thread titles with VERIFY24472.", "terminalShell": "bash" } Opened existing thread in web client and sent Reply PR_RESTART_OK. Real Codex gpt-6.1-sol returned PR_RESTART_OK. Whole-entry deletion via authenticated server.updateSettings(projectSettingsOverrides[projectId]=null): { "before": { "defaultModelSelection": { "instanceId": "codex", "model": "gpt-6.1-sol" }, "textGenerationModelSelection": { "instanceId": "codex", "model": "gpt-6.1-sol" }, "threadTitleInstructions": "Always start generated thread titles with VERIFY24472.", "terminalShell": "bash" }, "result": "Success", "entryPresent": false } EXISTING CHECKS $ blacksmith-check run --id "vp i" $ blacksmith-check run --id "vp test run packages/contracts/src/settings.test.ts packages/shared/src/serverSettings.test.ts apps/server/src/serverSettings.test.ts" 3 suites passed; 113 tests passed (25 contracts, 40 shared, 48 server). Current PR head has 27 successful CI contexts, 0 pending, 0 failing. LIMITATIONS AND ENVIRONMENT NOTES No native iOS/Android, Electron shell, Windows/macOS, relay/tunnel, or other providers exercised. Actual downgrade storage plus unknown-key client round-trip verified; no separately built newer server paired to an older fixed client. An initial PR launch used default ~/.t3 before it was stopped; excluded from verification. All PR proof uses explicit task home. Cold isolated startup took about 10 minutes and initial provider health checks timed out; refresh recovered Codex. Later dev environment reported 11-21 second event-loop stalls under CPU load. No performance claim is made. Uploaded MP4 inspected, played to completion and seeked successfully in T3 browser player.