Files
orca/tests
1751433b21 fix(runtime): keep a live host verdict when a status probe can't reach it (#19647)
A status.get dials its own fresh socket (sendRemoteRuntimeRequest), so on a
half-open link it hangs and fails with the client-minted `runtime_unavailable`
while established terminal/agent flows keep delivering. The status recheck ladder
and the refresh wrapper caught that failure and published `status: null` over a
recorded live verdict. That single write dropped the environment out of
getReachableRuntimeSessionMirrorTargets (mirror teardown #1), and the next
successful probe advanced the connection generation and rebuilt it (teardown #2)
— one transient probe failure, two full session-tabs mirror teardowns, and the
client demanding a reconnect while the agent kept working.

Treat that failure as unverifiable, per docs/reference/ssh-execution-boundary.md:
loss of contact is never evidence the host exited. A status.get that fails with
`runtime_unavailable` (client-minted, never on the wire — safe under
remote-wire-compatibility Rules 1 and 3) no longer overwrites a recorded live
verdict. The live status stays, the mirror is never retired, the connection
generation never bumps, and the recheck ladder keeps probing until a real answer.
First-contact failures (no prior live verdict) still record null so host coverage
completes.

Carries forward the reader-side fixes from #19163 (filed against #16516): the
recheck ladder re-asks a status: null host on its backoff and cancels on manual
disconnect, and NoticeHostGlyph / use-worktree-card-foundation use the shared
runtimeHostConnectionState derivation so a never-probed host is not painted the
destructive red of one a probe found unreachable.

Measured with a new paired-client e2e rig (stall-new TCP hop): baseline nulls the
status and bumps the generation 0->1 on a link flap; fixed keeps nullStatus=false
and the generation stable. Two adjacent defects found while measuring are filed
separately: #19871 (multiplexer socket dropped on last-stream close) and #19872
(un-park banner claims auto-retry while parkRetry arms no timer).

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
Co-authored-by: ASDFGHoney <86656987+ASDFGHoney@users.noreply.github.com>
2026-09-10 02:41:24 -07:00
..