PR #23554 real environment verification, 2026-10-30 main: 6575ce32508bd7908444241f3719aa33aaf77f90 PR: 5fd12f4f227a244c3cf28224b939b6d9821f04b6 Linux, repository Playwright 1.60.0, /usr/bin/google-chrome, real Codex gpt-6.1-sol through the local proxy. Project /home/user/merge-back-scenario was created through Add project > Local folder. Parent and fork were created through the web UI. No database writes, fixtures, mocks, or replay provider. MAIN (server 16733, web 8693, isolated /home/user/main/.t3): 1. Parent real turn returned parent-ready. 2. Fork from this response; fork real turn returned fork-ready. 3. Parent ran timeout 150 bash -c 'sleep 100'. 4. Clicked Merge back while parent was running: accepted. 5. Ctrl-clicked send to queue an ordinary message: rejected. WebSocket error: Thread 508b62da-28e8-467a-8687-8324daa409a2 has a pending merge-back transfer; queued merge-back consumption is not implemented yet. Read-only SQLite: fork transfer consumed; merge_back transfer pending. Stopped the provider and main dev process group before starting PR. PR (server 13773, web 5733, isolated /home/user/t3code/.t3): 1. Recreated the same prompts and parent/fork through the UI using Codex gpt-6.1-sol. 2. Parent ran timeout 150 bash -c 'sleep 100'. 3. Clicked Merge back twice while parent was running: both rejected. WebSocket command thread.merge_back returned: Finish or stop the target thread's active work and clear its queue before merging back. Read-only SQLite after refusal: only the consumed fork transfer, no merge_back transfer. 4. Ctrl-clicked send: message.dispatch accepted with dispatchMode queue_after_active; UI showed 1 queued. 5. Parent completed with parent-finished; queued real turn completed with queue-ok. 6. Retried Merge back after both runs completed: accepted; UI navigated to parent. 7. Asked the parent for the codeword introduced only in the fork: real Codex returned MAPLE-23554. Read-only SQLite: fork transfer consumed; merge_back transfer consumed; all five real runs completed. PR command receipts (read-only SQLite): message.dispatch accepted message.dispatch accepted message.dispatch accepted thread.merge_back rejected thread.merge_back rejected message.dispatch accepted thread.merge_back accepted message.dispatch accepted Focused existing regression through Blacksmith: vp test run apps/server/src/orchestration-v2/runtimeLayer.test.ts -t 'refuses busy merge-back targets without blocking the queue' Test Files 1 passed (1) Tests 1 passed | 88 filtered out (89) The case covers preparing, starting, waiting, queued, running, unchanged transfers, queueing, cancellation, and idle retry. Limits: no native mobile or Electron shell, other providers, remote/tunnel connections, or deterministic real-provider timing checks for preparing/starting/waiting/queue-only states. Web observation: refusal returned the expected RPC error and stayed on the fork; no refusal text appeared in the fork UI.