b2c8a148e8
Closes the renderer half of #88769, found while live-verifying the profile-lifecycle fixes: - The secondary-socket reconnect loop now fail-stops when Electron's spawn guard rejects with "no longer exists" / "is being deleted" — a permanent condition for that scope, previously retried forever on the 15s-cap backoff (40+ guard hits observed in 3 minutes after clicking a stale badge). The entry is disposed, evicted, and the active key restored to the primary, mirroring the existing missing-connection fail-stop. - The Bot Mode SDK deleteProfile path now refreshes $profiles after a successful delete, so the profile rail drops the dead badge instead of keeping a clickable ghost. (The Desktop dialog path already refreshed via onDeleted; the SDK path was the gap.) Tests: two fail-stop regression tests (profile-gone + mid-delete guard rejections, sabotage-verified to fail without the fix) and a refresh assertion on the SDK delete ordering test.