tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_same_config_same_signature tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_model_change_different_signature tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_same_token_prefix_different_full_token_changes_signature tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_provider_change_different_signature tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_toolset_change_different_signature tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_reasoning_not_in_signature tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_cache_keys_default_omitted_matches_empty tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_context_length_change_busts_cache tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_max_tokens_change_busts_cache tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_compression_threshold_change_busts_cache tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_compression_enabled_toggle_busts_cache tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_cache_keys_key_order_does_not_matter tests/gateway/test_agent_cache.py::TestAgentConfigSignature::test_tool_registry_generation_change_busts_cache tests/gateway/test_agent_cache.py::TestExtractCacheBustingConfig::test_reads_model_context_length tests/gateway/test_agent_cache.py::TestExtractCacheBustingConfig::test_reads_compression_subkeys tests/gateway/test_agent_cache.py::TestExtractCacheBustingConfig::test_missing_keys_yield_none tests/gateway/test_agent_cache.py::TestExtractCacheBustingConfig::test_non_dict_section_treated_as_missing tests/gateway/test_agent_cache.py::TestExtractCacheBustingConfig::test_none_config_is_safe tests/gateway/test_agent_cache.py::TestExtractCacheBustingConfig::test_extract_includes_live_tool_registry_generation tests/gateway/test_agent_cache.py::TestExtractCacheBustingConfig::test_skips_honcho_config_read_when_provider_is_not_honcho tests/gateway/test_agent_cache.py::TestExtractCacheBustingConfig::test_reads_honcho_config_only_when_provider_is_honcho tests/gateway/test_agent_cache.py::TestExtractCacheBustingConfig::test_memory_provider_change_busts_signature tests/gateway/test_agent_cache.py::TestExtractCacheBustingConfig::test_honcho_cache_busting_config_memoized_by_mtime tests/gateway/test_agent_cache.py::TestExtractCacheBustingConfig::test_full_round_trip_busts_cache_on_real_edit tests/gateway/test_agent_cache.py::TestAgentCacheLifecycle::test_cache_hit_returns_same_agent tests/gateway/test_agent_cache.py::TestAgentCacheLifecycle::test_cache_miss_on_model_change tests/gateway/test_agent_cache.py::TestAgentCacheLifecycle::test_evict_on_session_reset tests/gateway/test_agent_cache.py::TestAgentCacheLifecycle::test_evict_does_not_affect_other_sessions tests/gateway/test_agent_cache.py::TestAgentCacheLifecycle::test_reasoning_config_updates_in_place tests/gateway/test_agent_cache.py::TestAgentCacheLifecycle::test_system_prompt_frozen_across_cache_reuse tests/gateway/test_agent_cache.py::TestAgentCacheLifecycle::test_callbacks_update_without_cache_eviction tests/gateway/test_agent_cache.py::TestAgentCacheBoundedGrowth::test_cap_evicts_lru_when_exceeded tests/gateway/test_agent_cache.py::TestAgentCacheBoundedGrowth::test_cap_respects_move_to_end tests/gateway/test_agent_cache.py::TestAgentCacheBoundedGrowth::test_cap_triggers_cleanup_thread tests/gateway/test_agent_cache.py::TestAgentCacheBoundedGrowth::test_idle_ttl_sweep_evicts_stale_agents tests/gateway/test_agent_cache.py::TestAgentCacheBoundedGrowth::test_idle_sweep_skips_agents_without_activity_ts tests/gateway/test_agent_cache.py::TestAgentCacheBoundedGrowth::test_plain_dict_cache_is_tolerated tests/gateway/test_agent_cache.py::TestAgentCacheBoundedGrowth::test_main_lookup_updates_lru_order tests/gateway/test_agent_cache.py::TestAgentCacheActiveSafety::test_cap_skips_active_lru_entry tests/gateway/test_agent_cache.py::TestAgentCacheActiveSafety::test_cap_evicts_when_multiple_excess_and_some_inactive tests/gateway/test_agent_cache.py::TestAgentCacheActiveSafety::test_cap_leaves_cache_over_limit_if_all_active tests/gateway/test_agent_cache.py::TestAgentCacheActiveSafety::test_cap_pending_sentinel_does_not_block_eviction tests/gateway/test_agent_cache.py::TestAgentCacheActiveSafety::test_idle_sweep_skips_active_agent tests/gateway/test_agent_cache.py::TestAgentCacheActiveSafety::test_eviction_does_not_close_active_agent_client tests/gateway/test_agent_cache.py::TestAgentCacheSpilloverLive::test_fill_to_cap_then_spillover tests/gateway/test_agent_cache.py::TestAgentCacheSpilloverLive::test_spillover_all_active_keeps_cache_over_cap tests/gateway/test_agent_cache.py::TestAgentCacheSpilloverLive::test_evicted_session_next_turn_gets_fresh_agent tests/gateway/test_agent_cache.py::TestAgentCacheIdleResume::test_release_clients_does_not_touch_process_registry tests/gateway/test_agent_cache.py::TestAgentCacheIdleResume::test_release_clients_does_not_touch_terminal_or_browser tests/gateway/test_agent_cache.py::TestAgentCacheIdleResume::test_release_clients_closes_llm_client tests/gateway/test_agent_cache.py::TestAgentCacheIdleResume::test_close_vs_release_full_teardown_difference tests/gateway/test_agent_cache.py::TestAgentCacheIdleResume::test_idle_evicted_session_rebuild_inherits_task_id tests/gateway/test_agent_cache.py::TestCachedAgentInactivityReset::test_fresh_turn_resets_idle_clock tests/gateway/test_agent_cache.py::TestCachedAgentInactivityReset::test_fresh_turn_resets_desc tests/gateway/test_agent_cache.py::TestCachedAgentInactivityReset::test_interrupt_turn_preserves_idle_clock tests/gateway/test_agent_cache.py::TestCachedAgentInactivityReset::test_interrupt_turn_preserves_desc tests/gateway/test_agent_cache.py::TestCachedAgentInactivityReset::test_deep_interrupt_recursion_preserves_idle_clock tests/gateway/test_agent_cache.py::TestCachedAgentInactivityReset::test_fresh_turn_resets_flush_cursor tests/gateway/test_agent_cache.py::TestCachedAgentInactivityReset::test_interrupt_turn_preserves_flush_cursor tests/gateway/test_agent_cache.py::TestCachedAgentInactivityReset::test_api_call_count_reset_regardless_of_depth tests/gateway/test_agent_cache.py::TestCachedAgentInactivityReset::test_watchdog_accumulation_across_recursive_turns tests/gateway/test_agent_cache.py::TestAgentConfigSignatureUserId::test_signature_changes_with_user_id tests/gateway/test_agent_cache.py::TestAgentConfigSignatureUserId::test_signature_stable_with_same_user_id tests/gateway/test_agent_cache.py::TestAgentConfigSignatureUserId::test_signature_changes_with_user_id_alt tests/gateway/test_agent_cache.py::TestAgentConfigSignatureUserId::test_signature_omits_user_id_when_absent tests/gateway/test_agent_cache.py::TestAgentCacheMessageCountRebaseline::test_same_process_turns_preserve_cached_agent tests/gateway/test_agent_cache.py::TestAgentCacheMessageCountRebaseline::test_cross_process_write_still_invalidates tests/gateway/test_agent_cache.py::TestAgentCacheMessageCountRebaseline::test_rebaseline_is_fail_safe_and_skips_legacy_and_pending