mirror of
https://github.com/stablyai/orca.git
synced 2026-10-24 16:03:45 +00:00
It had never executed once. The CI condition that enables Docker-SSH was gated on an unrelated spec, so this skipped and reported green — and running it for the first time found two bugs in the spec itself, both of which a typechecked tests/ would have caught instantly. startDockerSshRelayTarget returns a DockerSshRelayTarget, which has no targetId; the id comes from connectDockerSshRelayTarget's return value, which the spec discarded. So every reconnect call passed undefined and the relay answered 'SSH target "undefined" not found'. And openNewTerminalTabInActiveWorkspace takes the group to open into; called with no argument the new tab lands nowhere. The third problem was the fixture rather than the spec. The image ships Debian's /etc/bash.bashrc with the xterm title block commented out and an all-comments /root/.bashrc, so its shell never emits OSC 0 — which is what Orca derives a tab title from. The title assertion could not have passed for any shell, healthy or not, so it was proving nothing. enableDockerSshRelayTargetShellTitle opts a spec into the title-setting PS1 a real user's shell already has. IT STILL FAILS, and that is the point: it fails on a PRODUCT bug it was written to catch. An SSH reconnect destroys the terminal state behind a tab whose local creation has not yet reached the host. remote-workspace-session-merge.ts:86-89 spreads the host's tab list over the local one for that worktree, so a local tab missing from the host snapshot has no surviving branch; the upload that would have put it there is DROPPED rather than deferred inside the 1s suppression window after a snapshot apply. The tab bar still renders the tab, correctly titled, but the terminal slice holds one tab and no pane manager exists for the second — so the user clicks a tab that never paints, with no error and no recovery, while the process keeps running on the host. Pre-existing: none of remote-workspace-target-sync.ts, remote-workspace-session-merge.ts, use-app-session-persistence.ts or remote-workspace-snapshot-apply.ts is touched by this branch, and nothing in the merge range touches them either. Not worked around here. Waiting for the upload would hide it, and a user opening a tab right after a reconnect has no such signal to wait on. An earlier version of this message claimed the spec passes. It does not; I had seen five green runs out of six and generalised from them. Sustained runs are about three in eleven before the merge and zero in four after.