tests/gateway/test_session_hygiene.py::TestSessionHygieneThresholds::test_small_session_below_thresholds tests/gateway/test_session_hygiene.py::TestSessionHygieneThresholds::test_large_token_count_triggers tests/gateway/test_session_hygiene.py::TestSessionHygieneThresholds::test_under_threshold_no_trigger tests/gateway/test_session_hygiene.py::TestSessionHygieneThresholds::test_message_count_alone_does_not_trigger tests/gateway/test_session_hygiene.py::TestSessionHygieneThresholds::test_threshold_scales_with_model tests/gateway/test_session_hygiene.py::TestSessionHygieneThresholds::test_custom_threshold_percentage tests/gateway/test_session_hygiene.py::TestSessionHygieneThresholds::test_minimum_message_guard tests/gateway/test_session_hygiene.py::TestSessionHygieneWarnThreshold::test_warn_when_still_large tests/gateway/test_session_hygiene.py::TestSessionHygieneWarnThreshold::test_no_warn_when_under tests/gateway/test_session_hygiene.py::TestEstimatedTokenThreshold::test_threshold_below_context_for_200k_model tests/gateway/test_session_hygiene.py::TestEstimatedTokenThreshold::test_threshold_below_context_for_128k_model tests/gateway/test_session_hygiene.py::TestEstimatedTokenThreshold::test_no_multiplier_means_same_threshold_for_estimated_and_actual tests/gateway/test_session_hygiene.py::TestEstimatedTokenThreshold::test_warn_threshold_below_context tests/gateway/test_session_hygiene.py::TestEstimatedTokenThreshold::test_overestimate_fires_early_but_safely tests/gateway/test_session_hygiene.py::TestTokenEstimation::test_empty_history tests/gateway/test_session_hygiene.py::TestTokenEstimation::test_proportional_to_content tests/gateway/test_session_hygiene.py::TestTokenEstimation::test_proportional_to_count tests/gateway/test_session_hygiene.py::TestTokenEstimation::test_pathological_session_detected tests/gateway/test_session_hygiene.py::test_session_hygiene_messages_stay_in_originating_topic tests/gateway/test_session_hygiene.py::test_session_hygiene_warns_user_when_compression_aborts tests/gateway/test_session_hygiene.py::test_session_hygiene_informs_user_when_aux_model_fails_but_recovers tests/gateway/test_session_hygiene.py::test_session_hygiene_honors_configurable_hard_message_limit tests/gateway/test_session_hygiene.py::test_session_hygiene_default_hard_message_limit_does_not_fire_at_12_messages