Skip to content

Outside sessions: claudeSessionId on ended rows (relay#524) - #535

Merged
barelyworkingcode merged 2 commits into
epic/525-session-adoptionfrom
feat/524-outside-claude-session-id
Oct 20, 2026
Merged

barelyworkingcode merged 2 commits into
epic/525-session-adoptionfrom
feat/524-outside-claude-session-id

Conversation

@barelyworkingcode

Copy link
Copy Markdown
Owner

Closes #524

An ended outside-session row now carries claudeSessionId, its transcript file stem, on the list, the detail and the /ws/outside-sessions snapshot. Live rows never carry it. fakerelay serves the world key outside_sessions[].claude_session_id on ended rows only and refuses it on a live row or with a bad value. fakerelay's terminal session.launch line gains template_id, directory and extra_args (always an array); relay's real line does not change.

Part of epic #525. Unblocks barelyworkingcode/eve#593. No route, scope, grant or event changes in relay.

What I'd notice: nothing. Nothing user-visible, so no real-app check; the epic's close child runs the verification task.

Tests

  • e2e/features/g1_outside_claude_session_id_test.go: AC1 (console and host rows), AC2 (detail and WS), AC3 (live row; a resumed session shows once with no key).
  • fakerelay/prooftest: AC4 (served on list, detail, WS; refused on a live row and on bad values), AC5 (launch-line fields, extra_args: [] when absent).
  • Baseline at 6606af4: e2e features and fakerelay green.

Notes

  • Minor review finding, not fixed: the AC5 test compares directory only with the 201 body's directory, both from the fake. Removing the directory line still fails it.
  • An empty claude_session_id in a fakerelay world reads as absent (omitempty), so it is valid on an ended row.

Fix attempts: 0. Tokens: about 300k (subagents and coordinator).

Review: no blocking findings (default model; threat model 3a touched)
Journey: n/a: nothing user-visible; the epic close child runs devboxverify on the epic head
Break-and-restore: removed the ClaudeSessionID = o.ClaudeID assignment in replaceEndedLocked; TestOutsideEndedListCarriesClaudeSessionID went red (claudeSessionId = <nil>, want "acme-console-stem"); restored byte for byte

🤖 Generated with Claude Code

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

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

Copy link
Copy Markdown
Owner Author

Head eeaaed6: e2e features green (579s), fakerelay green (123s).

@barelyworkingcode
barelyworkingcode merged commit 121e6b8 into epic/525-session-adoption Oct 20, 2026
@barelyworkingcode

Copy link
Copy Markdown
Owner Author

merge-check: merged. approved, target, contract, evidence, owner, weakening

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.

1 participant