PR 22366, head a4843c9a952e8995ce534c5a543f44eeae324d03 Linux Boat VM, Chrome + Playwright, running Vite web client and real server. Project, repository, threads, and commits created through app + Codex gpt-6.1-sol. 24 differing tracked assets; real git smudge filter: sleep 1; cat. BEFORE: github/main ce9e016406 UI ref selector main -> feature Result: GitVcsDriver.switchRef.checkout: Git command timed out. $ git branch --show-current main $ git status --short 9 modified assets, 1 deleted asset. Checkout was killed partway. AFTER: exact PR head UI ref selector feature -> main 07:19:27.205 vcs.switchRef request sent 07:19:51.431 Success {refName:main} received (24.226 seconds) $ git branch --show-current main $ git status --porcelain (empty) Cancellation and cache refresh: 07:21:33.146 UI main -> feature 07:21:36.770 browser reload (request disconnected) 07:21:39.758 vcs.listRefs: main current=true, feature current=false 07:22:10.049 vcs.listRefs: feature current=true, main current=false $ git branch --show-current feature $ git status --porcelain (empty) $ git diff --exit-code feature -- assets (exit 0: all 24 assets match target) Post-checkout hook emitted 1,200,000 bytes to stderr and reached final log write. Neighbor: uncommitted edit to assets/part-01.txt. UI checkout refused; HEAD remained main and LOCAL EDIT MUST SURVIVE remained intact. Reverse switching completed cleanly. Real Codex turn on PR confirmed final contents. Blacksmith: vp test run src/vcs/GitVcsDriverCore.test.ts src/vcs/GitVcsDriver.test.ts src/git/GitManager.test.ts 3 files passed, 399 tests passed. No source changes.