4db4650a01
The archived-holder carve-out in _set_session_title lets the next Bot open claim the "Bot Chat" title from an archived canonical row. That is correct for a deliberate sidebar archive, but archive_stale_sessions (the opt-in sessions.auto_archive sweep) could also archive an idle hidden Bot Chat with end_reason NULL, which unarchive_recoverable_session refuses; the next Bot click then stripped the old row's title, retiring the bot's whole history on an idle timer with no way back. Skip the hidden canonical Bot Chat in the sweep SELECT using the same hidden + exact-title predicate set_session_pinned already uses to protect it, so only an explicit archive retires a Bot Chat. Reword the bot-mode doc so it no longer promises the retired (still hidden) chat is reachable from the archive view. Review finding: auto_archive sweep could irreversibly retire the canonical Bot Chat; docs over-promised archive-view reachability.