0fe05b682a
The #487 fix relies on `save_offline_queue_state` correctly stamping the session id so the load path's mismatch check has something to compare against. The existing `test_offline_queue_round_trip_and_clear` covers serialization + clear but doesn't pin the session_id stamping behavior. Adds `test_offline_queue_stamps_session_id_on_save` which exercises three cases: * `save(state, Some("session-A"))` → loaded session_id is `Some("session-A")`. The stamp made it to disk. * `save(state, Some("session-B"))` → re-saving replaces the stamp; loaded session_id is `Some("session-B")`. No stale ID lingers. * `save(state, None)` → loaded session_id is `None`. The UI's load path treats this as legacy-unscoped and refuses to restore (fail-closed), which is what protects users from pre-#487 queues leaking into new chats. Pure additive coverage. The 2 existing offline-queue tests pass unchanged.