Skip to content

Epic: session adoption, one session model for every agent and a way to take over a running one - #534

Merged
barelyworkingcode merged 115 commits into
mainfrom
epic/525-session-adoption
Oct 21, 2026
Merged

barelyworkingcode merged 115 commits into
mainfrom
epic/525-session-adoption

Conversation

@barelyworkingcode

Copy link
Copy Markdown
Owner

Closes #532

Epic: relay#525. Children merge into epic/525-session-adoption; the close child, relay#532, closes the rest by hand.

🤖 Generated with Claude Code

barelyworkingcode and others added 30 commits October 20, 2026 09:01
…ne fields

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Answers the note's seven unverified items from Claude Code, pi, codex and
oh-my-pi documentation; marks what the docs leave open.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…tion-note

Session adoption design note (docs/session-adoption.md)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e-session-id

Outside sessions: claudeSessionId on ended rows (relay#524)
…nix hosts

The runner (runner.sh) replaces the in.jsonl runner: inbox/ and sent/ with
the move to sent/ as the receipt, events.jsonl event lines, runner.json.
hosts[].detach_sessions defaults to on; false and Windows use ssh -T. A legacy
in.jsonl run is stopped once at resume.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…uncher entry

The journey drops its detach_sessions edit, seeds the loopback host, project
and agent entry into settings.json, and starts the session by the entry. The
replay_unavailable text names the new default.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…token

The execute credential is refused on /ws; the project the journey seeds has
its own token.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ngs import has run

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The api phase holds only the execute credential, which /ws refuses. The
journey writes a short-lived proxy credential into the stack's settings.json
and removes it after.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…'s receipt

The running frame precedes the runner writing the message to the agent; a
drop in that window ends the send unknown.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…etached journey needs a stack model

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…er mawk

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… follows relay's own receipt

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#528: one file-channel runner for host headless sessions
…elay restart

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… events

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>
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>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
barelyworkingcode and others added 18 commits October 20, 2026 22:44
…re durable

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#529: one Chief of Staff start path; closing a drop-in terminal hands the session back
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>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…(red)

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>
relay#543: host sessions swap in a tmux pane
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>
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>
Codex and pi sessions run under the file-channel runner
barelyworkingcode and others added 2 commits October 21, 2026 03:39
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
relay#573: outside-session tests wait for a completed probe
@barelyworkingcode

Copy link
Copy Markdown
Owner Author

Verified: b6f530d · repo-suite: ok relaye2e/features 246.211s (go test -race -parallel 32) · devboxverify: SUMMARY pass=9 fail=0 blocked=0 notrun=2 (stack r525, --phase api, built with eve 1399a79) · log: devbox /tmp/r525-suite3.log, /tmp/r525-dbv.log

@barelyworkingcode

Copy link
Copy Markdown
Owner Author

Close evidence for the epic (relay#525; owner decision 2026-10-21: relay#530 and #531 moved to the follow-up epic #575).

Review: no blocking findings (each child reviewed; the review lines are on the child PRs; #574 Sonnet round 1 clean)
Journey: relay devboxverify --stack --phase api on b6f530d: pass=9 fail=0 blocked=0 notrun=2 (stack r525, built with eve 1399a79); eve's stack run on the same heads pass=44 fail=0
Harness weakening: none (judged child by child: #539 widened one not-run path, reported then; #547, #555, #570, #571, #572 add or extend journeys only)
Main harness vs head: main's harness (6606af4) against the epic head b6f530d on stack r525, --phase api: pass=5 fail=0 blocked=0 notrun=2
Break-and-restore: on the children (#539, #547, #555, #570, #571, #572)

@barelyworkingcode
barelyworkingcode marked this pull request as ready for review October 21, 2026 14:06
@barelyworkingcode
barelyworkingcode merged commit 11f7021 into main Oct 21, 2026
@barelyworkingcode
barelyworkingcode deleted the epic/525-session-adoption branch October 21, 2026 14:07
@barelyworkingcode

Copy link
Copy Markdown
Owner Author

merge-check: merged. approved, target, verified, contract, evidence
Report: 3. Secrets (cmd/relay/api_credential.go); 2. The gates themselves: criterion removed A codex thread is adopted by connecting to its daemon; no process is killed. (issue #525); 2. The gates themselves: criterion removed A pi session is adopted by ending its process and resuming its session id. (issue #525)

@barelyworkingcode

Copy link
Copy Markdown
Owner Author

Merged: approved, target, verified, contract, evidence PASS; ci NA; owner and weakening REPORT (logged in the run report).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Close child: session adoption (relay)

1 participant