Repository navigation
relay#588: adopt an outside Claude session on an SSH host - #604
Conversation
The host adopt runs as one detached script on the host (check, ladder, start); relay writes the audit intents and a dormant record before the SSH command and reads only its result. A dropped link answers host_link_lost and keeps the record; Resume attaches the started agent or re-runs the script with no_signal. fakerelay serves an adoptable host row and the host_link_lost refusal. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
TestAdoptHostSuccess, Busy, Changed and LinkDrop; the host_unsupported case moves to detach_sessions: false (approved behaviour change); SSHLieStart. TestAdoptHostLinkDrop is red: the dormant record is not listed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A host adopt that ends in adopt_link_lost or adopt_launch_failed saves its session so it lists as dormant; the resume no longer takes that session's own hold on the conversation for another's. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…part A per-session adopt.lock keeps two scripts from running at once. A setup failure of the SSH command is its own outcome (nothing touched). A resume answered changed also deletes relay-sessions' saved copy. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… host Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…oves the record Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…atches the helper by its executable A real Claude writes request blobs and attachments of hundreds of KiB into a turn, so the first turn's prompt lies before the 256 KiB tail. The door then sent child_test "all", and the script read every MCP server, zombie and turn helper as busy. The door now reads the transcript backwards below the tail, 1 MiB per read and 8 MiB at most, until it holds the prompt. ps comm reads "caffeinate" for the turn helper Claude starts by name, so the script now matches the executable path (/proc/<pid>/exe, else lsof's first txt entry), as the local adopt does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
TestAdoptHostNoClaude; SSHNoClaude drops this machine's claude from the stub host's PATH so the probe finds none. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The seeded claude-code template stays; only the probe result makes the row host_unsupported. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
relay#589: adopt a terminal Claude on an SSH host
|
Evidence, restated from the one child PR #597 (relay#589) and the frozen-head verification on #590. Review: no blocking findings (#597: three rounds plus a confirm; default model for rounds 1–3) |
|
merge-check: merged. approved, target, verified, contract, evidence, owner |
Closes #590
Epic #588. Children: #589 (#597). Eve's half: barelyworkingcode/eve#626. Stays a draft until the joint close task (relay#588, step c).
🤖 Generated with Claude Code