PR #32853 real dev verification, Linux, 2026-11-10 Main: 633438d54f17b99f73f1a09466ecbe4a6aa0d545 (github/main) PR: 19beebfabb4a5b803d5204ac28d0439e728d4b4b (exact head) Setup: Separate main worktree, vp i in both checkouts, one background vp run dev at a time. Isolated app state. Real git repository on a disposable 16 MiB tmpfs. Project added through the app. Real Codex gpt-6.1-sol turns created/restored report.txt, run.sh, tasks.md and an internal relative symlink. Playwright from repo dependencies, /usr/bin/google-chrome. No mocked filesystem, provider, server, or RPC handler. Original failure, actual Files panel editor autosave: Original: 4096 O bytes, sha256 957269f144778a4554482f666a89cbe723252ac16cf79c02fd0d5de9dd91dfa6 Fill the temporary filesystem, then free exactly 8192 bytes. Click editor, Control+A, keyboard.insertText(65536 N characters). Main: save reports ProjectWriteFileError; disk contains 12288 N bytes, 0 O bytes. Main: original preserved = false. Same actual Files panel editor autosave on PR: Same original bytes and sha256, same 8192 bytes free, same 65536-byte replacement. PR: save reports ProjectWriteFileError; disk contains 4096 O bytes, 0 N bytes. PR: original preserved = true; .t3-save-* directories = []. The editor retains the unsaved replacement draft, so disk inspection is the proof. Authenticated projects.writeFile WebSocket RPC, running PR server: Failed new-file save returned ProjectWriteFileError -> WorkspaceFileSystemOperationError -> ENOSPC: no space left on device, write. PASS: failed creation leaves no destination and no .t3-save-* directories. After removing the filler: PASS: successful new-file save writes exact contents. PASS: successful executable overwrite writes exact contents and retains 0750. PASS: internal symlink remains a relative symlink and updates resolved target. PASS: .git/config write rejected; original config unchanged. PASS: external symlink write rejected; outside sentinel unchanged. Actual web UI neighboring behavior: PASS: run.sh editor autosave writes #!/bin/sh\necho ui_verified\n and retains 0750. PASS: rendered tasks.md checkbox check persists - [x] verify save to disk. PASS: checkbox uncheck persists - [ ] verify save to disk. Checks: blacksmith-check run --id 'vp test run apps/server/src/workspace/WorkspaceFileSystem.test.ts' 33 tests passed, 1 test file passed. Existing head CI: 31 successful, 0 failing, 0 pending. No source changes or pushes needed. Not verified: Native Electron, iOS/Android clients; macOS/Windows filesystems; network filesystems; quota-specific failures; process crash/power-loss durability; injected cleanup failure in the running app (covered by the existing focused test instead). No fsync durability claim.