4f64807f5d
A respawned backend re-mints runtime ids, so a pre-reconnect busy state never receives its terminal busy:false publish and its session stayed in $workingSessionIds forever - the sidebar running arc and agents-panel 'running' chrome lied for hours after the turn ended (the stale-flag half of #53902/#73082; the CSS cost half landed in #91383). reconcileBusyStatesOnReconnect() downgrades busy/awaitingResponse states through publishSessionState (watchdogs disarm, stall hints drop, settle/ unread bookkeeping stays consistent), scoped by event-source: the primary reconnect touches only scope-less runtimes, a secondary (registry) reconnect touches only its own connection's. needsInput survives - a blocking prompt is the user's to answer. A genuinely live turn re-asserts busy on its next post-reconnect event, so the worst case is one arc blink. Regression tests proven by sabotage run (neutered reconcile -> 5/6 fail).