714930f256
The roster click's fronted-tab shortcut trusted the persisted session-tile bucket (Local Storage 'hermes.desktop.sessionTiles.v2') unconditionally: a persisted 'Bot Chat' tile naming a session the canonical registry no longer resolves to — a superseded row from the retired ui_meta pointer design, a re-minted canonical chat, a stale finished (often hidden) session — was fronted on every click and remembered as the zone's active pane, so the row's click target stuck to that stale session forever while its preview/age described the live one, and clearing Local Storage only healed until the next click re-persisted the same tile. Per the Desktop guide the backend is authoritative for session state and the renderer copy is a cache that must reconcile. focusWorkspaceOwnerSessionTile now takes an optional staleness probe: tiles the probe rejects are discarded (same no-undo rationale as discardSessionTile — resurrecting one would just front the stale session again) and never fronted. The roster click supplies the probe: a canonical-titled tile whose stored id matches neither the server-resolved canonical_session registry row nor its compression-lineage tip is stale, so the click falls through to the authoritative name-registry open. Side-chat tabs carry no registry identity and are never judged; older gateways without canonical_session (and shells without the probe) keep the previous behavior unchanged.