#14340 / verification on the new orchestrator

Switching a thread between two Claude accounts that share ~/.claude/projects: handoff on main, the same session with #14340

Claude reads a file holding a code word and replies only DONE-READING. The file is deleted, the thread is switched to Claude Work, and Claude Work is asked for the code word without tools, so the word exists only in the Read tool result. On main the switch is a context handoff and the answer is “I don't know”. With #14340, Claude Work resumes the same Claude session and answers PAPAYA-42, also after a server restart stopped the session.

1

main: context handoff

Tool result lost

Base 2a45557 (main at the PR's last merge). The timeline shows a Context handoff row, and Claude Work answers “I don't know”: the handoff replays messages, not the Read result. Its query.open has no resume. The trailing timestamp line comes from that account's own CLAUDE.md.

base-live-switch.png · 2560×1600 · right-click to save

2

#14340: live session

Same session

Head 6b563ef. No handoff row. Claude Work opens with resume set to the Claude session id, its init reports that same session_id, and it answers PAPAYA-42.

pr-live-switch.png · 2560×1600 · right-click to save

3

#14340: stopped session

Same session

Same head. One turn on Claude, then the dev server is restarted so the session is stopped. After the switch Claude Work resumes the stopped session's id and answers PAPAYA-42. This is the case #11908 fixed on the old orchestrator; the new one carries the native thread across instances on its own.

pr-resume-switch.png · 2560×1600 · right-click to save

Build

  • Base 2a45557, PR head 6b563ef
  • Isolated vp run dev, web client, Chromium 2x; one dev state, a new thread per run
  • Platform: Linux 6.12 (Debian 13), Claude Code 2.1.288, Claude Sonnet 5

Instances

  • Claude: empty CLAUDE_CONFIG_DIR (~/.claude)
  • Claude Work: second config dir, own credentials, projects -> ~/.claude/projects
  • Two different subscriptions

Checks on the head

  • ClaudeHome.test.ts: 8/8
  • provider/Drivers, ProviderInstanceRegistryLive, ProviderSwitchService, ProviderSessionTransitionPolicy: 147/147
  • apps/server typecheck: clean
  • Not exercised: macOS, Windows, desktop and mobile clients, a real usage-limit switch