tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_managed_install_returns_package_manager_guidance tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_no_git_directory tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_no_hermes_binary tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_fallback_to_sys_executable tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_resolve_hermes_bin_prefers_which tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_resolve_hermes_bin_fallback tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_resolve_hermes_bin_returns_none_when_both_fail tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_writes_pending_marker tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_writes_pending_marker_with_thread_id tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_spawns_setsid tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_fallback_when_no_setsid tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_popen_failure_cleans_up tests/gateway/test_update_command.py::TestHandleUpdateCommand::test_returns_user_friendly_message tests/gateway/test_update_command.py::TestUpdateCommandPlatformGate::test_blocks_programmatic_interface tests/gateway/test_update_command.py::TestUpdateCommandPlatformGate::test_blocks_api_server_platform tests/gateway/test_update_command.py::TestUpdateCommandPlatformGate::test_allows_plugin_platform_via_registry_fallback tests/gateway/test_update_command.py::TestUpdateCommandPlatformGate::test_allows_mattermost_via_registry_fallback tests/gateway/test_update_command.py::TestUpdateCommandPlatformGate::test_allows_homeassistant_via_registry_fallback tests/gateway/test_update_command.py::TestUpdateCommandPlatformGate::test_allows_builtin_platform_in_allowlist tests/gateway/test_update_command.py::TestSendUpdateNotification::test_no_pending_file_is_noop tests/gateway/test_update_command.py::TestSendUpdateNotification::test_defers_notification_while_update_still_running tests/gateway/test_update_command.py::TestSendUpdateNotification::test_recovers_from_claimed_pending_file tests/gateway/test_update_command.py::TestSendUpdateNotification::test_sends_notification_with_output tests/gateway/test_update_command.py::TestSendUpdateNotification::test_sends_notification_with_thread_metadata tests/gateway/test_update_command.py::TestSendUpdateNotification::test_strips_ansi_codes tests/gateway/test_update_command.py::TestSendUpdateNotification::test_truncates_long_output tests/gateway/test_update_command.py::TestSendUpdateNotification::test_sends_failure_message_when_update_fails tests/gateway/test_update_command.py::TestSendUpdateNotification::test_sends_generic_message_when_no_output tests/gateway/test_update_command.py::TestSendUpdateNotification::test_cleans_up_files_after_notification tests/gateway/test_update_command.py::TestSendUpdateNotification::test_cleans_up_on_error tests/gateway/test_update_command.py::TestSendUpdateNotification::test_handles_corrupt_pending_file tests/gateway/test_update_command.py::TestSendUpdateNotification::test_no_adapter_for_platform_preserves_markers tests/gateway/test_update_command.py::TestSendUpdateNotification::test_deferred_notification_delivers_after_reconnect tests/gateway/test_update_command.py::TestUpdateInHelp::test_update_in_help_output tests/gateway/test_update_command.py::TestUpdateInHelp::test_update_is_known_command