tests/gateway/test_session_race_guard.py::test_sentinel_placed_before_agent_setup tests/gateway/test_session_race_guard.py::test_sentinel_cleaned_up_after_handler_returns tests/gateway/test_session_race_guard.py::test_sentinel_cleaned_up_on_exception tests/gateway/test_session_race_guard.py::test_second_message_during_sentinel_queued_not_duplicate tests/gateway/test_session_race_guard.py::test_merge_pending_message_event_merges_text_and_photo_followups tests/gateway/test_session_race_guard.py::test_merge_pending_message_event_promotes_document_followups_over_text tests/gateway/test_session_race_guard.py::test_recent_telegram_text_followup_is_queued_without_interrupt tests/gateway/test_session_race_guard.py::test_recent_telegram_followups_append_in_pending_queue tests/gateway/test_session_race_guard.py::test_command_messages_do_not_leave_sentinel tests/gateway/test_session_race_guard.py::test_start_command_is_noop_and_does_not_show_help tests/gateway/test_session_race_guard.py::test_start_command_is_noop_during_active_session tests/gateway/test_session_race_guard.py::test_active_session_bypass_commands_dispatch_without_interrupt[/help-_handle_help_command-Help text] tests/gateway/test_session_race_guard.py::test_active_session_bypass_commands_dispatch_without_interrupt[/commands-_handle_commands_command-Commands text] tests/gateway/test_session_race_guard.py::test_active_session_bypass_commands_dispatch_without_interrupt[/update-_handle_update_command-Update text] tests/gateway/test_session_race_guard.py::test_active_session_bypass_commands_dispatch_without_interrupt[/profile-_handle_profile_command-Profile text] tests/gateway/test_session_race_guard.py::test_stop_during_sentinel_force_cleans_session tests/gateway/test_session_race_guard.py::test_stop_hard_kills_running_agent tests/gateway/test_session_race_guard.py::test_stop_clears_pending_messages tests/gateway/test_session_race_guard.py::test_shutdown_skips_sentinel