Repository navigation
relay#541: fakerelay serves adoptable rows and the adopt door - #560
Merged
barelyworkingcode merged 4 commits intoOct 21, 2026
Merged
Conversation
Outside rows carry adoptable and adoptReason, live rows may carry claudeSessionId, and the adopt door answers relay's codes from the row's adopt fixture. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…elds 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>
Owner
Author
|
merge-check: merged. approved, target, contract, evidence, owner, weakening |
This was referenced Oct 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #541
fakerelay now serves the adopt fields on outside rows (
adoptable,adoptReason, a live row'sclaudeSessionId). It also answersPOST /api/sessions/adoptwith relay's success shape and every refusal code and message, word for word. A test chooses the outcome through the world'sadoptobject, and existing fixtures load unchanged: rows with no keys readadoptable:false, with the reason derived in relay's order.claude_session_idis lifted, because relay#527 now serves that id on live rows. Two assertions inoutside_test.gochanged. Bad values stay refused on live and ended rows.docs/FEATURES.mdrow moves.fakerelay/**ande2e/contract/**are in theno-testarea, and nothing a user reaches changed.untilon WebSocket revisions, and a followed log forsession.adopt. No sleeps.Tests:
fakerelay/prooftest/adopt_test.go(row fields, fixture rules, success, interrupt and recovery, all refusals, door class) ande2e/contract/s_adopt_test.go(the refusals both targets can stage; their transcripts match).Runs on dc0aaf8:
(cd fakerelay && go test -race -count=1 ./...): ok.TestAdoptContractRefusals: ok on both targets.e2e/contract: two older tests are red, and they are red on the epic base too (552a068). The cause is relay#559, filed: the epic's real relay answersproviderStateonPOST /api/sessions.mainis green.TestRefusedSecondMessageKeepsFirstReply, green three times alone. This PR does not touch relay itself.Fix attempts: one review fix round (message assertions and the ambiguous staging), then one line for
launch_failed. Tokens: about 0.75M across subagents.Minor, not fixed (theoretical): an adopted fake session records its conversation id just after it joins the list, and
launch_failedanswers even if a fixture replace already dropped the row.Review: no blocking findings (round 3, clean)
Journey: n/a: fakerelay is a test tool; no devbox journey reaches it
Break-and-restore: serving adoptable as false turned TestAdoptRowFieldsServed red; a changed launch_failed message turned TestAdoptRefusals red; both restored byte for byte
Weakening reviewed: outside_test.go live-row claude_session_id refusal lifted; relay#527 decision 2 serves the id on live rows; bad-value refusals kept
🤖 Generated with Claude Code