real dev verification: pingdotgg/t3code #23957 main: 32ecd71726 (github/main; separate /home/user/main worktree) pr: b4547bd775674aaaea6e3635ced00f37bf8c544d (exact contributor head) setup: vp i; one background vp run dev at a time; Playwright + /usr/bin/google-chrome. project and git repository created with Add project > New project. Codex fallback instance added through Settings > Providers. new-thread default: codex, gpt-6.1-sol, reasoningEffort=xhigh. primary disabled through Settings. gpt-6.1-sol registered as a custom model on disabled primary because disabling clears its discovered catalog. no mocks, fixtures, demo data, or source modifications. client WebSocket launchThread selections: {"text":"Reply with exactly FALLBACK_OK. Do not use tools or change files.","modelSelection":{"instanceId":"codex_fallback","model":"gpt-6.1-sol"}} {"text":"Reply with exactly FALLBACK_OK. Do not use tools or change files.","modelSelection":{"instanceId":"codex_fallback","model":"gpt-6.1-sol","options":[{"id":"reasoningEffort","value":"xhigh"},{"id":"serviceTier","value":"default"}]}} {"text":"Reply with exactly OWN_OPTIONS_OK. Do not use tools or change files.","modelSelection":{"instanceId":"codex_fallback","model":"gpt-6.1-sol","options":[{"id":"reasoningEffort","value":"high"},{"id":"serviceTier","value":"default"}]}} main: real Codex app-server protocol (selected fields only): {"direction":"outgoing","method":"turn/start","model":"gpt-6.1-sol","effort":"OMITTED","serviceTier":"OMITTED","prompt":"Reply with exactly FALLBACK_OK. Do not use tools or change files."} {"direction":"incoming","method":"item/completed","text":"FALLBACK_OK"} {"direction":"incoming","method":"turn/completed","status":"completed"} pr: real Codex app-server protocol (selected fields only): {"direction":"outgoing","method":"turn/start","model":"gpt-6.1-sol","effort":"xhigh","serviceTier":"default","prompt":"Reply with exactly FALLBACK_OK. Do not use tools or change files."} {"direction":"incoming","method":"item/completed","text":"FALLBACK_OK"} {"direction":"incoming","method":"turn/completed","status":"completed"} {"direction":"outgoing","method":"turn/start","model":"gpt-6.1-sol","effort":"high","serviceTier":"default","prompt":"Reply with exactly FOLLOWUP_OK. Do not use tools or change files."} {"direction":"incoming","method":"item/completed","text":"FOLLOWUP_OK"} {"direction":"incoming","method":"turn/completed","status":"completed"} {"direction":"outgoing","method":"turn/start","model":"gpt-6.1-sol","effort":"high","serviceTier":"default","prompt":"Reply with exactly OWN_OPTIONS_OK. Do not use tools or change files."} {"direction":"incoming","method":"item/completed","text":"OWN_OPTIONS_OK"} {"direction":"incoming","method":"turn/completed","status":"completed"} UI assertions on PR: - fallback picker selected Codex fallback; GPT-6.1-Sol; Extra High checked. - FALLBACK_OK visible and turn completed. - explicit High followup returned FOLLOWUP_OK; both messages and High survived reload. - draft held codex=xhigh and codex_fallback=high; disable codex; High won; returned OWN_OPTIONS_OK. blacksmith check: vp test run apps/web/src/modelSelection.test.ts apps/web/src/composerDraftStore.test.ts apps/web/src/components/ChatView.logic.test.ts result: 3 files passed; 145 tests passed. head CI: 26 success, 0 failing, 0 pending. not verified: native desktop/mobile, remote/relay/tunnel, real non-Codex providers, cross-driver live fallback. Existing focused tests cover different-model and cross-driver option rejection.