# PR #23539 proof audit pass 1 (head f77bfb4c8a51f1bdfda110eebba5e42defc60a64, base 8d3b061121)
Read-only, Claude Opus 5.5 via Claude Agent SDK in T3 Code.

| Row | Code at head | Author transcript | Capture needed |
|---|---|---|---|
| R1 checkout >10 s (smudge filter) | switchRef checkout `timeoutMs: null` (GitVcsDriverCore.ts:4388-4397); executeRaw skips Effect.timeoutOption when null. Base: 10 000 ms -> "Git command timed out.", half-updated tree. post-checkout hook would not reproduce the bug (runs after tree update). | Covered (author capture, not replayed) | independent rerun |
| R2 fast checkout | same path; null timeout also skips the gitProcesses permit (minor, harmless) | Not covered | yes |
| R3 conflicting local changes | GitCommandError, detail "git checkout failed", exitCode 1, stderr text not forwarded; web toast "Failed to switch ref." Unchanged by PR | Not covered | yes |
| R4 genuine hang | No server or client bound remains: ws.ts handler, GitWorkflowService.switchRef lease, client RPC have no timeout; 15 s ping only checks socket liveness. Only socket close interrupts (RpcServer interrupts fiber, Effect.scoped kills child). Holds the per-repo workspace lease while hung. | Not covered (body mentions it qualitatively) | yes |
| R5 server path | vcs.switchRef (contracts/rpc.ts:433) -> ws.ts:2867 -> GitWorkflowService.switchRef (lease) -> GitVcsDriverCore.switchRef; scope source-control:write. createRef+switchRef reuses it. `git worktree add` keeps WORKTREE_ADD_TIMEOUT_MS (out of scope). | Partial | via R1-R4 |
