PR https://git.cafe/pingdotgg/t3code/pulls/23664 GitHub https://github.com/pingdotgg/t3code/pull/23664 Verified 2026-10-30 on Linux x64, Node v24.22.1, /usr/bin/google-chrome, repository Playwright 1.60.0. Main: 32ecd71726fee16f335484c1f95cbce126d461f6, separate /home/user/main worktree. PR: 50653f367aa14421243e7e6787b5f44ef2990b48, exact head in /home/user/t3code. Only one dev server ran at a time. Fresh isolated T3 homes; no mocks or seeded/demo database. Projects added through Add project -> Local folder. Threads started through the composer with Codex gpt-6.1-sol. Main provider command: printf 'provider-main-ok\n' -> exit 0, response provider-main-ok. PR provider command: printf 'provider-pr-ok\n' -> exit 0, response provider-pr-ok. Native PTY retention reproduction: The ordinary 32 MiB terminal burst did not reproduce retained consumed output because the queue emptied between chunks. Then 4,096 real terminal.attach RPC subscriptions on the authenticated dev WebSocket intentionally omitted stream ACKs, representing slow consumers. Sent terminal.write to execute the same native-shell workload on each revision: node -e 'for(let i=0;i<64;i++)require("fs").writeSync(1,("LOAD:"+String(i).padStart(6,"0")+":"+"x".repeat(4080)+"\n"));console.log("LOAD-END:64")' An observational Node inspector conditional breakpoint measured the live session queue after dequeuing; it did not replace PTY, subscribers, drain implementation, or event data. Debugger overhead applies to both observations. This is retained-reference proof, not a throughput benchmark or an OOM test. Main: max consumed payload retained = 262029 bytes; max live listeners = 4099. Worst queue = {"slots":66,"index":65,"pending":48,"consumed":262029}. PR: max consumed payload retained = 0 bytes; max pending payload = 216995 bytes; max live listeners = 4099; observed 66 deliveries / 262254 output characters. The PR queue was genuinely busy, with up to 65 slots, while consumed entries held no payload. Neighbor checks through UI terminal and authenticated WebSocket observer: output sequence 17: "ORDER:00 α\r\nORDER:01 日本語\r\nORDER:02 🙂\r\nORDER-END\r\n" output sequence 20: "\r\n\u001b[?2004l\rFINAL-BEFORE-EXIT\r\nexit\r\n" exited sequence 21: exitCode=7, exitSignal=0 UI drawer close/reopen preserved the live terminal and accepted AFTER-REOPEN-OK. UI split terminal accepted SECOND-TERMINAL-OK while the first retained its output. Greek and Japanese text rendered. The emoji code point arrived intact in WebSocket output, but this VM's terminal font rendered a missing-glyph box. Checks on the unchanged PR head: blacksmith-check: vp test run apps/server/src/terminal/Manager.test.ts apps/server/src/terminal/OutputProtocol.test.ts -> 56 passed (43 manager, 13 protocol). blacksmith-check: vp run check:changed 60b35a1ee02d717009ff4a3de34de285db9e8a60 -> format, lint, knip, GraphQL generation check, affected typechecks, manager tests passed. One existing lint warning. The remote snapshot needed its parent fetched explicitly because Blacksmith snapshots initially have only HEAD history. Stored PR checks: 10 successful, 0 failed, 0 pending at head 50653f367aa14421243e7e6787b5f44ef2990b48. Not verified: Electron shell, native iOS/Android, macOS/Windows PTYs, relay/tunnel, forced OOM or a multi-hour memory soak. No source changes, commits, pushes, merges, labels, rebases, or force-pushes.