PR #30078 real development verification, 2026-11-03 UTC main: cefb544af3c98224874419198c0359b652ca3c94 PR: a00d3030f30efeabc0d3bb2ad278e3cfe53bdf29 Setup $ git worktree add ../main github/main $ (cd ../main && vp i) $ T3CODE_DEV_SEED=0 setsid nohup timeout 7000 vp run dev > /tmp/main-dev.log 2>&1 & [dev-runner] serverPort=16733 webPort=8693 baseDir=/home/user/main/.t3 Created a local git project through the real web app: codex-fallback-verification. No database fixtures, provider shims, mocked models, or demo turns. Real Codex CLI 0.164.0 uses the local cliproxyapi provider. Actual model/list snapshot: gpt-6.1-sol, gpt-6-astra (default), gpt-6-sol, gpt-6-luna, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5. Baseline main Sent real conversation via web composer using gpt-6.1-sol. Prompt: Read the current repository path and list its tracked files. Do not modify any files. Reply briefly. Response listed README.md and assets/icon.svg. No files changed. Default title generation used gpt-6-luna and produced: List Tracked Repository Files. Catalog-miss setup through authenticated WebSocket API, server.updateSettings: {"patch":{"textGenerationModelSelection":{"instanceId":"codex","model":"gpt-5.4","options":[{"id":"reasoningEffort","value":"low"}]}}} This represents a stale model selection. It does NOT reproduce ChatGPT authentication. The real catalog omits gpt-5.4 and the real proxy rejects it. Clicked thread actions > Regenerate title. Observed exec: --model gpt-5.4 --config model_reasoning_effort="low" Server: Thread title generation failed ERROR: {"error":{"code":"model_not_found","message":"unknown provider for model gpt-5.4","param":"model","type":"invalid_request_error"}} PR Stopped main using captured PID 17750 and confirmed ports closed. $ git switch -c fix/codex-text-generation-model-fallback a00d3030f30efeabc0d3bb2ad278e3cfe53bdf29 $ vp i Copied isolated dev userdata with main stopped, preserving the same real project/thread and saved stale selection. $ T3CODE_DEV_SEED=0 setsid nohup timeout 6000 vp run dev --home-dir /home/user/t3code/.t3 > /tmp/dev.log 2>&1 & [dev-runner] serverPort=13773 webPort=5733 baseDir=/home/user/t3code/.t3 Clicked the same Regenerate title action. Observed exec: --model gpt-6-astra --config model_reasoning_effort="low" Result: list repository path and tracked files Regeneration completed and the UI title updated. Neighboring paths - Real gpt-6.1-sol turn created greet.mjs and executed node greet.mjs. Output: hello from codex fallback verification - Clicked Commit without supplying a message. The app generated the message with gpt-6-astra, then committed. git log: 002f65f feat: add fallback verification greeting script Working tree became clean in the client. - New gpt-6.1-sol thread: Read greet.mjs and explain its output in one sentence. Do not modify files. Response: it prints "hello from codex fallback verification" to the console. First-message automatic title used gpt-6-astra: explain greet.mjs output - Returned text-generation settings to gpt-6-luna via the same API and regenerated. Observed exec remained gpt-6-luna, with successful title Create and Verify Greeting Script. Observed real subprocess dispatches (no wrapper): 2026-11-03T11:50:43.301Z pid=22688 codex exec --model gpt-6-luna model_reasoning_effort="low" 2026-11-03T11:51:57.481Z pid=24127 codex exec --model gpt-5.4 model_reasoning_effort="low" 2026-11-03T11:54:09.543Z pid=27996 codex exec --model gpt-6-astra model_reasoning_effort="low" 2026-11-03T11:54:43.668Z pid=28942 codex exec --model gpt-6-astra model_reasoning_effort="low" 2026-11-03T11:55:41.505Z pid=30227 codex exec --model gpt-6-astra model_reasoning_effort="low" 2026-11-03T11:56:37.655Z pid=31555 codex exec --model gpt-6-astra model_reasoning_effort="low" 2026-11-03T11:57:08.217Z pid=32038 codex exec --model gpt-6-luna model_reasoning_effort="low" Checks via task-owned Blacksmith worker $ vp i && vp test run apps/server/src/textGeneration/CodexTextGeneration.test.ts 17 tests passed, 1 file passed. The snapshot needed its actual parent fetched for check:changed; no source changes were required. $ git fetch --depth=2 https://github.com/pingdotgg/t3code.git a00d3030f30efeabc0d3bb2ad278e3cfe53bdf29 $ vp run check:changed cefb544af3c98224874419198c0359b652ca3c94 check:changed summary pass format 0.2s pass lint 0.4s pass knip 1/2 5.9s pass knip 2/2 12.1s pass graphql (apps/server) 0.5s pass typecheck (3 packages) 8.3s pass test (2 files) 13.4s CI also runs: full test suites, build unused patch check skipped: no dependency files changed pass not cached: files changed during the run Limitations The proxy account advertises and runs gpt-6-luna, so the original ChatGPT-account restriction was not reproducible here. The live stale-selection scenario exercises the same catalog-miss fallback, through the running server and web client. Native desktop, iOS/Android, remote/tunnel connections, and a real Connect with ChatGPT account were not exercised. No PR code changes, branch pushes, merges, labels, or review-bot invocations.