design-squad: the copy kept on this computer said "Read-only copy kept on this
computer." while the cloud one said the agreed text; once asleep it is the agreed
text everywhere. Drops the now-unused locale key.
integration-keeper (44b4c2072d, nk-pc3b/4-started): after Start the Claude tab opened but the plain
Terminal stayed active. The agent create did ask for focus, but the held placeholder is closed right
after, and closing the active tab selects its neighbour. When the person started it, the agent's tab
now takes focus once the placeholder is gone; a Renew auto-start still never steals focus.
integration-keeper's smoke of Neil's cut (44b4c2072d): Restart on a turn-less pane ran
'claude --resume 53b983b5…', which printed 'No conversation found' and left a bare shell; the backstop
never relaunched fresh. The watch now keys off the pane's terminal handle (a relaunch may reuse the
host's PTY id), waits up to 25 s (Claude's start on a sandbox plus the pane's re-attach can exceed
10 s), strips ANSI before matching, falls back to the plain launch when the fresh command can't be
built from settings, and logs each step so a miss is diagnosable.
From design-squad's review of the #410 shot: a respawned terminal's saved tail
had each boot's prompt glued onto one row (with a horizontal scrollbar) above
~300px of never-written rows. The read-only copy now splits a line where a new
'user@host:' prompt starts right after a '$'/'#' prompt, and trims leading and
trailing blank rows. Ordinary output (addresses, $ amounts, blank lines inside)
is untouched. Fixture: CloudWorkspaceOfflineView:terminalAfterWakes.
Per design-squad: re-try only while the tab is visible and the sandbox is
awake (never while asleep, waking or going to sleep, so it can't wake it);
every 4 s for 2 minutes, then every 15 s, stopping at 10 minutes; re-armed
when the tab is shown again. The reload swaps the page in place.
Cloud sandboxes have allowlist-only egress, so a desktop-hosted cloud tab
pointed at an unlisted host showed 'Can't reach example.com ·
ERR_SOCKS_CONNECTION_FAILED'. For Orca Cloud pages failing with a SOCKS/proxy
code: 'The sandbox can't reach <host>' with design-squad's copy and 'Open in
your browser'; for localhost, 'Nothing is running on <host> in the sandbox.'
with no button and a quiet auto-retry so a server that starts later appears.
The raw error stays as a muted details line.
Each PTY's processes inherit ORCA_PTY_SESSION_ID=<pty id> at spawn. After terminal.stopExact's normal stop, orcad scans /proc (Linux, async) for anything still carrying that exact id, SIGKILLs it by process group (only groups led by a marked process), and fails the stop with terminal_exact_stop_failed (reason agent_survived) if anything survives a short grace, instead of reporting it verified. Sibling panes carry their own id and are never touched.
Seen on m4air: after two wake/sleep cycles the asleep read-only copy listed 3
terminals for a workspace with one tab. Each boot respawns the tab's terminal
under a new handle and the old handles' cached reads stayed. The copy now keeps
only the terminals the newest whole-workspace terminal.list names (plus any read
after it); a filtered listing never decides, and with no listing all are kept.
Orca Cloud counts as no screencast until a probe proves otherwise, so a
sleeping or unreachable sandbox cannot surface 'Cannot reach…' stream notices
(BR-2 closes with this). Non-http pages: 'Orca can't show the sandbox's
browser here yet.' + 'This page can only be viewed in the sandbox.' A failed
open says 'Couldn't open the page. Try again.' (polite live region).
Orca Cloud's orcad hosts agent/CLI pages in a headless browser it cannot
stream (no browser.screencast.v1), so the tab showed a 'Remote browser'
placeholder and a 'does not support remote browser streaming' toast. On
runtimes without screencast, the viewport shows design-squad's state instead;
'Open on this computer' opens a new focused desktop-hosted tab beside it
(loopback tunnels through the sandbox), keeping the sandbox tab. file:,
about:, chrome: pages get no button. Other stream notices are unchanged.
Seen on m4air: ~200ms after a wake went live the sidebar row read "Asleep",
because main's ready arrives before the status re-read and the last read still
said sleeping. A ready wake newer than the last status read now counts as
running; a read taken after it (or archived/failed) is the truth again.
Seen on m4air: Wake to continue pressed mid-suspend showed the Waking pill from
the press, but as the VM went down the pane's recovery notice briefly read
'Reconnecting to w2slot…' (~1.5s) because only the store's wake counted as
waking. The pending wake now counts too.
composer-redo (pc3b-390-394/4-started.png): Start opened the Claude tab in the background (a create's
first agent asks for activate:false), so the person stayed on the plain Terminal and never saw the
queued prompt run. A hold released by the person's Start now creates the agent with activate:true;
a Renew-driven auto-start (possibly on a background tab) keeps the original args and never steals
focus.
composer-redo (W-93/W-94): with #390's draft-startup gate the host got no startup, but the same
startup went to the pane (windowStartupAfterCreate → createNewTerminalForStartup → web-host terminal
create) and Claude still started into /login. Port #395's choke point: createWebRuntimeSessionTerminalResult
holds an Orca Cloud Claude/Codex launch (not set up or expired, no key) before creating anything, so
every caller (new tab, create's pane startup, post-wake relaunch) is held once; the per-caller wrappers
are gone. The guard asserts only the choke point (plus the pane spawn gate and local-runtime paths)
call the host create RPCs; an exactly-once test: one create with a queued prompt → one strip → one
agent create after Start.
While going to sleep with an earlier copy on screen, the header note now reads
"Saving a read-only copy of chats, terminals and changes…" (design-squad's
wording) instead of "Read-only copy kept on this computer.". The sidebar row
keeps "Going to sleep…" until the sleep ends, from the same flag as the view,
instead of flipping to Asleep when the record does; a failure still names itself.
Fixture: CloudWorkspaceOfflineView:goingToSleepWithEarlierCopy.
Left during the sleep, then clicked back: activation selects it, then (before its
panes mount) marks it asleep and holds the read-only view again, and records the
wake, so its panes wait for the wake instead of attaching to a VM going down.
"Wake to continue" pressed after main committed the suspend used to re-open the
workspace at once: about 4s of dead panes with no cover while the VM went down,
then the wake. Now activation records the wake (held typing included) and keeps
the read-only view; the surface shows the Waking cover from the press; once the
sleep ends the follower wakes it the ordinary way, and main's reports count from
the press. A failed sleep releases held typing; one the user left is not woken.
'Set up once in Settings → Agent accounts' / 'Renew in Settings → Agent accounts' become
'Set up once for Orca Cloud' / 'Renew once for Orca Cloud', matching the strip.
While a Restart runs the strip no longer promises 'Picking up where you left off.' (the recorded session
may have no conversation). When the backstop starts the agent fresh, the strip says 'Started a new
conversation.' for 3 s, then clears. An end-to-end test drives resume → 'No conversation found' → one
fresh relaunch → the line once; catalog synced (restartingResume removed).