5099a65a05
After sleep/wake the gateway reconnect path called resetTileRuntimeBindings() to force every tile to re-resume, but it only cleared the tile atoms' runtimeId. resumeTile()'s warm path then re-bound each tile from the wiring cache's stored->runtime map - the same dead pre-sleep runtime id, with a released (empty) cached transcript. Result: every split pane except the primary repainted as an empty pane with only its header, and prompts submitted to it recovered into the primary view instead. - resetTileRuntimeBindings() now also invalidates the delegate's wiring cache (new optional SessionTileDelegate.invalidateRuntimeBindings, backed by runtimeIdByStoredSessionIdRef.clear()) so post-reconnect resumes go cold and bind a live runtime id. - resumeTile()'s warm path now requires the cached state to carry a transcript (or be mid-turn): a released/stale empty state goes through to a real session.resume + transcript hydration instead of repainting an empty tile. Regression tests fail without the fix (verified via sabotage run) and pass with it; tsc + eslint clean.