test_automated_outbound_does_not_complete_pending_review (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_automated_outbound_does_not_complete_pending_review) ... ok test_busy_send_lock_yields_without_error_then_sends_next_round (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_busy_send_lock_yields_without_error_then_sends_next_round) ... ok test_close_stops_coordinator (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_close_stops_coordinator) ... ok test_completion_save_failure_rolls_back_queue_and_can_retry (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_completion_save_failure_rolls_back_queue_and_can_retry) ... ok test_coordination_read_error_cannot_clear_a_registered_review (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_coordination_read_error_cannot_clear_a_registered_review) ... ok test_disabled_coordinator_cannot_override_global_review (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_disabled_coordinator_cannot_override_global_review) ... ok test_human_reply_completes_review_discards_draft_and_keeps_seen (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_human_reply_completes_review_discards_draft_and_keeps_seen) ... ok test_late_phone_sync_does_not_swallow_newer_already_queued_question (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_late_phone_sync_does_not_swallow_newer_already_queued_question) ... ok test_new_inbound_while_old_review_is_pending_keeps_review_and_new_draft (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_new_inbound_while_old_review_is_pending_keeps_review_and_new_draft) ... ok test_new_model_risk_still_requires_a_new_review_after_resumption (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_new_model_risk_still_requires_a_new_review_after_resumption) ... ok test_next_message_resumes_automatic_reply_despite_global_review_mode (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_next_message_resumes_automatic_reply_despite_global_review_mode) ... ok test_old_synced_outbound_and_missing_server_receipt_do_not_complete (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_old_synced_outbound_and_missing_server_receipt_do_not_complete) ... ok test_private_assistant_chat_is_never_auto_replied_to (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_private_assistant_chat_is_never_auto_replied_to) ... ok test_registers_one_review_with_persisted_id_and_trigger (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_registers_one_review_with_persisted_id_and_trigger) ... ok test_restart_reconciles_human_reply_then_keeps_subsequent_customer_message (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_restart_reconciles_human_reply_then_keeps_subsequent_customer_message) ... ok test_selective_review_always_precedes_resumed_global_mode (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_selective_review_always_precedes_resumed_global_mode) ... ok test_sending_unknown_and_failed_evidence_are_never_auto_completed (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_sending_unknown_and_failed_evidence_are_never_auto_completed) ... ok test_uncertain_send_releases_shared_lock_and_preserves_receipt_check (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_uncertain_send_releases_shared_lock_and_preserves_receipt_check) ... ok test_actual_store_late_phone_sync_preserves_newer_question (test_protocol_review_assistant.ProtocolSharedCoordinatorTests.test_actual_store_late_phone_sync_preserves_newer_question) ... ok test_cancel_queue_save_failure_does_not_cancel_existing_review (test_protocol_review_assistant.ProtocolSharedCoordinatorTests.test_cancel_queue_save_failure_does_not_cancel_existing_review) ... ok test_cancel_store_failure_retries_after_restart_before_new_question (test_protocol_review_assistant.ProtocolSharedCoordinatorTests.test_cancel_store_failure_retries_after_restart_before_new_question) ... ok test_cancel_works_after_configuration_is_disabled (test_protocol_review_assistant.ProtocolSharedCoordinatorTests.test_cancel_works_after_configuration_is_disabled) ... ok test_durable_completion_survives_protocol_save_failure_without_new_episode (test_protocol_review_assistant.ProtocolSharedCoordinatorTests.test_durable_completion_survives_protocol_save_failure_without_new_episode) ... ok test_durable_manual_resolution_and_new_risk_get_distinct_episode (test_protocol_review_assistant.ProtocolSharedCoordinatorTests.test_durable_manual_resolution_and_new_risk_get_distinct_episode) ... ok test_explicit_cancel_closes_old_reminder_without_auto_resume (test_protocol_review_assistant.ProtocolSharedCoordinatorTests.test_explicit_cancel_closes_old_reminder_without_auto_resume) ... ok test_explicit_handoff_closes_reminder_and_preserves_evidence (test_protocol_review_assistant.ProtocolSharedCoordinatorTests.test_explicit_handoff_closes_reminder_and_preserves_evidence) ... ok test_local_approval_closes_pending_without_future_global_review_bypass (test_protocol_review_assistant.ProtocolSharedCoordinatorTests.test_local_approval_closes_pending_without_future_global_review_bypass) ... ok test_real_store_bot_receipt_is_not_a_manual_approval (test_protocol_review_assistant.ProtocolSharedCoordinatorTests.test_real_store_bot_receipt_is_not_a_manual_approval) ... ok test_recovered_confirmed_local_approval_closes_old_reminder (test_protocol_review_assistant.ProtocolSharedCoordinatorTests.test_recovered_confirmed_local_approval_closes_old_reminder) ... ok test_explicit_cancel_closes_shared_episode_without_native_io (test_visual_review_assistant.SharedVisualAssistantTests.test_explicit_cancel_closes_shared_episode_without_native_io) ... ok test_explicit_handoff_closes_shared_episode_without_approval (test_visual_review_assistant.SharedVisualAssistantTests.test_explicit_handoff_closes_shared_episode_without_approval) ... ok test_failed_queue_cancel_keeps_shared_episode (test_visual_review_assistant.SharedVisualAssistantTests.test_failed_queue_cancel_keeps_shared_episode) ... ok test_failed_reminder_cancel_is_reported_without_claiming_success (test_visual_review_assistant.SharedVisualAssistantTests.test_failed_reminder_cancel_is_reported_without_claiming_success) ... ok test_real_shared_automated_attempt_is_not_human_reply (test_visual_review_assistant.SharedVisualAssistantTests.test_real_shared_automated_attempt_is_not_human_reply) ... ok test_real_shared_completion_retries_original_episode_after_disk_failure (test_visual_review_assistant.SharedVisualAssistantTests.test_real_shared_completion_retries_original_episode_after_disk_failure) ... ok test_real_shared_human_completion_then_new_risk (test_visual_review_assistant.SharedVisualAssistantTests.test_real_shared_human_completion_then_new_risk) ... ok test_real_shared_local_approval_closes_reminder_without_resuming (test_visual_review_assistant.SharedVisualAssistantTests.test_real_shared_local_approval_closes_reminder_without_resuming) ... ok test_stopped_client_cancel_closes_reminder_in_queue_data_directory (test_visual_review_assistant.SharedVisualAssistantTests.test_stopped_client_cancel_closes_reminder_in_queue_data_directory) ... ok test_assistant_contact_is_filtered_by_exact_conversation (test_visual_review_assistant.VisualAssistantTests.test_assistant_contact_is_filtered_by_exact_conversation) ... ok test_completed_review_does_not_erase_a_concurrent_replacement (test_visual_review_assistant.VisualAssistantTests.test_completed_review_does_not_erase_a_concurrent_replacement) ... ok test_disabled_config_never_imports_native_or_starts_coordinator (test_visual_review_assistant.VisualAssistantTests.test_disabled_config_never_imports_native_or_starts_coordinator) ... ok test_discarded_draft_marker_is_consumed_once (test_visual_review_assistant.VisualAssistantTests.test_discarded_draft_marker_is_consumed_once) ... ok test_draft_marker_retirement_failure_retains_protection (test_visual_review_assistant.VisualAssistantTests.test_draft_marker_retirement_failure_retains_protection) ... ok test_late_mobile_sync_does_not_hide_new_customer_message (test_visual_review_assistant.VisualAssistantTests.test_late_mobile_sync_does_not_hide_new_customer_message) ... ok test_missing_database_and_cross_account_context_cannot_complete (test_visual_review_assistant.VisualAssistantTests.test_missing_database_and_cross_account_context_cannot_complete) ... ok test_new_customer_message_after_human_reply_starts_fresh_task (test_visual_review_assistant.VisualAssistantTests.test_new_customer_message_after_human_reply_starts_fresh_task) ... ok test_new_database_event_arriving_during_read_is_retained (test_visual_review_assistant.VisualAssistantTests.test_new_database_event_arriving_during_read_is_retained) ... ok test_no_evidence_preserves_review_and_persists_review_id (test_visual_review_assistant.VisualAssistantTests.test_no_evidence_preserves_review_and_persists_review_id) ... ok test_notification_registration_requires_durable_state (test_visual_review_assistant.VisualAssistantTests.test_notification_registration_requires_durable_state) ... ok test_pending_review_is_not_bypassed_by_new_safe_message (test_visual_review_assistant.VisualAssistantTests.test_pending_review_is_not_bypassed_by_new_safe_message) ... ok test_persistence_failure_restores_review_and_old_exchange (test_visual_review_assistant.VisualAssistantTests.test_persistence_failure_restores_review_and_old_exchange) ... ok test_proven_human_reply_discards_old_task_without_approving_or_sending (test_visual_review_assistant.VisualAssistantTests.test_proven_human_reply_discards_old_task_without_approving_or_sending) ... ok test_resumed_skips_blanket_only_and_new_risk_still_requires_review (test_visual_review_assistant.VisualAssistantTests.test_resumed_skips_blanket_only_and_new_risk_still_requires_review) ... ok test_retired_draft_and_review_binding_survive_restart (test_visual_review_assistant.VisualAssistantTests.test_retired_draft_and_review_binding_survive_restart) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。 [待回复恢复] 已从磁盘恢复 1 个未完成任务。 ok test_retired_draft_only_matches_exact_original_and_verified_identity (test_visual_review_assistant.VisualAssistantTests.test_retired_draft_only_matches_exact_original_and_verified_identity) ... ok test_send_attempt_failure_prevents_dispatch_and_local_completion_keeps_approval (test_visual_review_assistant.VisualAssistantTests.test_send_attempt_failure_prevents_dispatch_and_local_completion_keeps_approval) ... [助理审核] 自动发送留痕失败(OSError),暂缓本次发送;保留人工审核,不猜测人工回复。 ok test_stop_suppresses_read_and_notification (test_visual_review_assistant.VisualAssistantTests.test_stop_suppresses_read_and_notification) ... ok test_unknown_failed_or_sending_are_never_auto_completed (test_visual_review_assistant.VisualAssistantTests.test_unknown_failed_or_sending_are_never_auto_completed) ... ok test_wrong_account_or_conversation_or_review_evidence_cannot_clear_task (test_visual_review_assistant.VisualAssistantTests.test_wrong_account_or_conversation_or_review_evidence_cannot_clear_task) ... ok test_account_mismatch_never_reads_the_old_accounts_database (test_review_assistant_ui.ReminderContactTest.test_account_mismatch_never_reads_the_old_accounts_database) ... ok test_account_switch_during_validation_rejects_selection (test_review_assistant_ui.ReminderContactTest.test_account_switch_during_validation_rejects_selection) ... ok test_duplicate_names_remain_separate_and_identifiable (test_review_assistant_ui.ReminderContactTest.test_duplicate_names_remain_separate_and_identifiable) ... ok test_group_internal_or_unknown_recipient_cannot_be_saved (test_review_assistant_ui.ReminderContactTest.test_group_internal_or_unknown_recipient_cannot_be_saved) ... ok test_lists_exact_private_wechat_contacts_without_message_content (test_review_assistant_ui.ReminderContactTest.test_lists_exact_private_wechat_contacts_without_message_content) ... ok test_missing_account_does_not_fall_back_to_another_account (test_review_assistant_ui.ReminderContactTest.test_missing_account_does_not_fall_back_to_another_account) ... ok test_preview_is_static_and_does_not_load_real_customer_data (test_review_assistant_ui.ReminderContactTest.test_preview_is_static_and_does_not_load_real_customer_data) ... ok test_queries_are_read_only_and_do_not_initialize_or_modify_databases (test_review_assistant_ui.ReminderContactTest.test_queries_are_read_only_and_do_not_initialize_or_modify_databases) ... ok test_recipient_validation_uses_id_and_rechecks_identity (test_review_assistant_ui.ReminderContactTest.test_recipient_validation_uses_id_and_rechecks_identity) ... ok test_search_and_pagination_are_independent_of_message_preview (test_review_assistant_ui.ReminderContactTest.test_search_and_pagination_are_independent_of_message_preview) ... ok test_active_identity_only_uses_native_readonly_scope (test_review_assistant_ui.ReminderIdentityTest.test_active_identity_only_uses_native_readonly_scope) ... ok test_native_unavailable_is_clear_and_does_not_use_another_account (test_review_assistant_ui.ReminderIdentityTest.test_native_unavailable_is_clear_and_does_not_use_another_account) ... ok test_same_name_rows_keep_exact_identity_and_validate_selected_one (test_review_assistant_ui.ReminderPickerTest.test_same_name_rows_keep_exact_identity_and_validate_selected_one) ... ok test_stale_list_and_late_validation_after_cancel_are_ignored (test_review_assistant_ui.ReminderPickerTest.test_stale_list_and_late_validation_after_cancel_are_ignored) ... ok test_wrong_account_cannot_load_or_accept_and_retry_stays_available (test_review_assistant_ui.ReminderPickerTest.test_wrong_account_cannot_load_or_accept_and_retry_stays_available) ... ok test_only_explicit_refresh_reads_notification_summary (test_review_assistant_ui.ReminderRefreshTest.test_only_explicit_refresh_reads_notification_summary) ... ok test_default_disabled_and_cannot_enable_without_recipient (test_review_assistant_ui.ReminderSettingsTest.test_default_disabled_and_cannot_enable_without_recipient) ... ok test_enable_revalidates_target_and_does_not_change_other_accounts (test_review_assistant_ui.ReminderSettingsTest.test_enable_revalidates_target_and_does_not_change_other_accounts) ... ok test_expected_account_mismatch_or_validation_failure_never_saves (test_review_assistant_ui.ReminderSettingsTest.test_expected_account_mismatch_or_validation_failure_never_saves) ... ok test_explicit_disable_only_needs_current_account_not_deleted_contact (test_review_assistant_ui.ReminderSettingsTest.test_explicit_disable_only_needs_current_account_not_deleted_contact) ... ok test_persist_failure_does_not_claim_config_is_enabled (test_review_assistant_ui.ReminderSettingsTest.test_persist_failure_does_not_claim_config_is_enabled) ... ok test_replacing_an_enabled_contact_requires_explicit_reenable (test_review_assistant_ui.ReminderSettingsTest.test_replacing_an_enabled_contact_requires_explicit_reenable) ... ok test_runtime_save_preserves_other_account_mapping_and_rolls_back_failure (test_review_assistant_ui.ReminderSettingsTest.test_runtime_save_preserves_other_account_mapping_and_rolls_back_failure) ... ok test_selection_persists_exact_verified_recipient_and_stays_off (test_review_assistant_ui.ReminderSettingsTest.test_selection_persists_exact_verified_recipient_and_stays_off) ... ok test_snapshot_does_not_probe_scan_or_query_databases (test_review_assistant_ui.ReminderSettingsTest.test_snapshot_does_not_probe_scan_or_query_databases) ... ok test_stale_async_reply_and_shutdown_do_not_save (test_review_assistant_ui.ReminderSettingsTest.test_stale_async_reply_and_shutdown_do_not_save) ... ok test_setting_panel_disables_until_verified_and_uses_exact_account_for_toggle (test_review_assistant_ui.ReminderWebTest.test_setting_panel_disables_until_verified_and_uses_exact_account_for_toggle) ... ok test_a_foreign_thread_cannot_release_someone_elses_lock (test_send_lock.FallbackLockTest.test_a_foreign_thread_cannot_release_someone_elses_lock) ... ok test_a_second_thread_is_turned_away_without_blocking (test_send_lock.FallbackLockTest.test_a_second_thread_is_turned_away_without_blocking) ... ok test_context_manager_releases_on_exception (test_send_lock.FallbackLockTest.test_context_manager_releases_on_exception) ... ok test_default_zero_timeout_acquires_instead_of_raising (test_send_lock.FallbackLockTest.test_default_zero_timeout_acquires_instead_of_raising) ... ok test_positive_timeout_waits_and_still_succeeds (test_send_lock.FallbackLockTest.test_positive_timeout_waits_and_still_succeeds) ... ok test_release_makes_the_lock_available_again (test_send_lock.FallbackLockTest.test_release_makes_the_lock_available_again) ... ok test_same_thread_can_never_nest_a_send (test_send_lock.FallbackLockTest.test_same_thread_can_never_nest_a_send) ... ok test_abandoned_wait_is_treated_as_ownership (test_send_lock.WaitCodeTest.test_abandoned_wait_is_treated_as_ownership) ... ok test_concurrent_initialization_publishes_only_finished_backend (test_send_lock_initialization.SendLockInitializationTests.test_concurrent_initialization_publishes_only_finished_backend) ... ok test_unowned_release_cannot_release_mutex (test_send_lock_initialization.SendLockInitializationTests.test_unowned_release_cannot_release_mutex) ... ok test_programming_error_is_visible_and_does_not_terminate_visual_listener (test_listener_continuity.ListenerContinuityTests.test_programming_error_is_visible_and_does_not_terminate_visual_listener) ... ok test_recovery_backoff_is_bounded_and_repeated_errors_do_not_flood_logs (test_listener_continuity.ListenerContinuityTests.test_recovery_backoff_is_bounded_and_repeated_errors_do_not_flood_logs) ... ok test_user_stop_interrupts_connection_backoff_without_polling (test_listener_continuity.ListenerContinuityTests.test_user_stop_interrupts_connection_backoff_without_polling) ... ok test_verification_capture_failure_keeps_guard_and_no_further_polls (test_listener_continuity.ListenerContinuityTests.test_verification_capture_failure_keeps_guard_and_no_further_polls) ... ok test_verification_requires_consecutive_clean_captures (test_listener_continuity.ListenerContinuityTests.test_verification_requires_consecutive_clean_captures) ... ok test_verification_resumes_only_after_two_clean_workspace_captures (test_listener_continuity.ListenerContinuityTests.test_verification_resumes_only_after_two_clean_workspace_captures) ... ok test_visual_initial_connection_waits_then_recovers (test_listener_continuity.ListenerContinuityTests.test_visual_initial_connection_waits_then_recovers) ... ok test_visual_temporary_poll_failure_recovers_same_bot_and_preserves_protected_state (test_listener_continuity.ListenerContinuityTests.test_visual_temporary_poll_failure_recovers_same_bot_and_preserves_protected_state) ... ok test_attention_does_not_stop_listener_or_clear_review_and_delivery_protection (test_listener_continuity.ProtocolListenerContinuityTests.test_attention_does_not_stop_listener_or_clear_review_and_delivery_protection) ... ok test_protocol_database_errors_retry_same_account_bot_without_reconstruction (test_listener_continuity.ProtocolListenerContinuityTests.test_protocol_database_errors_retry_same_account_bot_without_reconstruction) ... ok test_protocol_startup_unavailable_waits_without_polling_then_recovers (test_listener_continuity.ProtocolListenerContinuityTests.test_protocol_startup_unavailable_waits_without_polling_then_recovers) ... ok test_stop_during_protocol_backoff_closes_resources_and_never_repolls (test_listener_continuity.ProtocolListenerContinuityTests.test_stop_during_protocol_backoff_closes_resources_and_never_repolls) ... ok test_stop_during_unsupported_build_wait_never_constructs_bot (test_listener_continuity.ProtocolListenerContinuityTests.test_stop_during_unsupported_build_wait_never_constructs_bot) ... ok test_unsupported_build_waits_and_never_constructs_sender_until_preflight_passes (test_listener_continuity.ProtocolListenerContinuityTests.test_unsupported_build_waits_and_never_constructs_sender_until_preflight_passes) ... ok test_capsule_preserves_verification_progress (test_listener_ui_continuity.ListenerUIContinuityTests.test_capsule_preserves_verification_progress) ... ok test_explicit_stop_still_finishes_worker (test_listener_ui_continuity.ListenerUIContinuityTests.test_explicit_stop_still_finishes_worker) ... ok test_protocol_task_attention_does_not_disconnect_healthy_listener (test_listener_ui_continuity.ListenerUIContinuityTests.test_protocol_task_attention_does_not_disconnect_healthy_listener) ... ok test_recoverable_wait_does_not_mark_queue_as_stopped (test_listener_ui_continuity.ListenerUIContinuityTests.test_recoverable_wait_does_not_mark_queue_as_stopped) ... ok test_sidebar_waiting_keeps_stop_button_active (test_listener_ui_continuity.ListenerUIContinuityTests.test_sidebar_waiting_keeps_stop_button_active) ... ok test_waiting_states_keep_running_and_stop_control_available (test_listener_ui_continuity.ListenerUIContinuityTests.test_waiting_states_keep_running_and_stop_control_available) ... ok test_web_labels_distinguish_waiting_from_stopped (test_listener_ui_continuity.ListenerUIContinuityTests.test_web_labels_distinguish_waiting_from_stopped) ... ok test_database_poll_failure_recovers_without_recreating_pending_tasks (test_listener_continuity_integration.ListenerContinuityIntegrationTests.test_database_poll_failure_recovers_without_recreating_pending_tasks) ... ok test_receipt_unknown_and_review_do_not_stop_other_conversations (test_listener_continuity_integration.ListenerContinuityIntegrationTests.test_receipt_unknown_and_review_do_not_stop_other_conversations) ... ok test_database_wide_failure_propagates_without_healthy_claim_or_send (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_database_wide_failure_propagates_without_healthy_claim_or_send) ... ok test_explicit_pre_send_unavailable_stays_error_and_peers_continue (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_explicit_pre_send_unavailable_stays_error_and_peers_continue) ... ok test_foreign_account_task_cannot_send_while_current_account_continues (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_foreign_account_task_cannot_send_while_current_account_continues) ... ok test_generation_error_does_not_stop_another_conversation (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_generation_error_does_not_stop_another_conversation) ... ok test_malformed_message_row_does_not_drop_valid_rows (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_malformed_message_row_does_not_drop_valid_rows) ... ok test_malformed_task_timing_does_not_block_peers (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_malformed_task_timing_does_not_block_peers) ... ok test_media_manual_handling_only_blocks_its_own_conversation (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_media_manual_handling_only_blocks_its_own_conversation) ... ok test_new_messages_and_contact_notices_cannot_replace_unknown_send (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_new_messages_and_contact_notices_cannot_replace_unknown_send) ... ok test_pending_review_only_blocks_its_own_conversation (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_pending_review_only_blocks_its_own_conversation) ... ok test_restart_keeps_unknown_and_failed_tasks_isolated (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_restart_keeps_unknown_and_failed_tasks_isolated) ... ok test_sending_persistence_error_preserves_no_replay_and_peer_processing (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_sending_persistence_error_preserves_no_replay_and_peer_processing) ... ok test_task_context_read_error_is_recorded_without_stopping_peers (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_task_context_read_error_is_recorded_without_stopping_peers) ... ok test_unexpected_sender_exception_is_unknown_not_automatic_retry (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_unexpected_sender_exception_is_unknown_not_automatic_retry) ... ok test_unknown_receipt_does_not_stop_same_poll_or_future_peer_tasks (test_protocol_listener_continuity.ProtocolListenerContinuityTests.test_unknown_receipt_does_not_stop_same_poll_or_future_peer_tasks) ... ok test_activation_before_primary_acquires_is_not_lost (test_desktop_instance.DesktopInstanceTests.test_activation_before_primary_acquires_is_not_lost) ... ok test_activation_survives_sender_exit_and_waits_for_ui (test_desktop_instance.DesktopInstanceTests.test_activation_survives_sender_exit_and_waits_for_ui) ... ok test_clean_exit_allows_existing_contender_to_take_over (test_desktop_instance.DesktopInstanceTests.test_clean_exit_allows_existing_contender_to_take_over) ... ok test_close_on_wrong_thread_preserves_live_primary (test_desktop_instance.DesktopInstanceTests.test_close_on_wrong_thread_preserves_live_primary) ... ok test_closed_guard_is_idempotent_but_cannot_reopen (test_desktop_instance.DesktopInstanceTests.test_closed_guard_is_idempotent_but_cannot_reopen) ... ok test_closing_secondary_keeps_owner_exclusive (test_desktop_instance.DesktopInstanceTests.test_closing_secondary_keeps_owner_exclusive) ... ok test_different_test_namespaces_do_not_interfere (test_desktop_instance.DesktopInstanceTests.test_different_test_namespaces_do_not_interfere) ... ok test_killed_owner_releases_mutex_even_with_secondary_handle_open (test_desktop_instance.DesktopInstanceTests.test_killed_owner_releases_mutex_even_with_secondary_handle_open) ... ok test_multiple_clicks_coalesce_and_secondary_cannot_steal_event (test_desktop_instance.DesktopInstanceTests.test_multiple_clicks_coalesce_and_secondary_cannot_steal_event) ... ok test_mutex_creation_failure_is_not_treated_as_primary (test_desktop_instance.DesktopInstanceTests.test_mutex_creation_failure_is_not_treated_as_primary) ... ok test_other_working_directory_uses_same_identity (test_desktop_instance.DesktopInstanceTests.test_other_working_directory_uses_same_identity) ... ok test_same_thread_second_guard_cannot_recursively_become_primary (test_desktop_instance.DesktopInstanceTests.test_same_thread_second_guard_cannot_recursively_become_primary) ... ok test_six_concurrent_processes_elect_exactly_one_primary (test_desktop_instance.DesktopInstanceTests.test_six_concurrent_processes_elect_exactly_one_primary) ... ok test_windows_handle_signatures_are_pointer_sized (test_desktop_instance.DesktopInstanceTests.test_windows_handle_signatures_are_pointer_sized) ... ok test_activation_is_polled_on_tk_ui_thread (test_classic_instance.ClassicInstanceTests.test_activation_is_polled_on_tk_ui_thread) ... ok test_guard_constructor_failure_is_visible_and_does_not_launch (test_classic_instance.ClassicInstanceTests.test_guard_constructor_failure_is_visible_and_does_not_launch) ... ok test_primary_holds_guard_until_session_returns (test_classic_instance.ClassicInstanceTests.test_primary_holds_guard_until_session_returns) ... ok test_rejected_update_does_not_create_main_window (test_classic_instance.ClassicInstanceTests.test_rejected_update_does_not_create_main_window) ... ok test_secondary_only_activates_existing_instance (test_classic_instance.ClassicInstanceTests.test_secondary_only_activates_existing_instance) ... ok test_startup_failure_still_releases_guard (test_classic_instance.ClassicInstanceTests.test_startup_failure_still_releases_guard) ... ok test_activation_waits_until_ui_exists (test_qt_tray_lifecycle.InstanceActivationTest.test_activation_waits_until_ui_exists) ... ok test_guard_constructor_failure_is_reported_without_login (test_qt_tray_lifecycle.InstanceActivationTest.test_guard_constructor_failure_is_reported_without_login) ... ok test_guard_failure_never_starts_unguarded_client (test_qt_tray_lifecycle.InstanceActivationTest.test_guard_failure_never_starts_unguarded_client) ... ok test_login_modal_activated_before_main_window (test_qt_tray_lifecycle.InstanceActivationTest.test_login_modal_activated_before_main_window) ... ok test_no_signal_does_not_change_window (test_qt_tray_lifecycle.InstanceActivationTest.test_no_signal_does_not_change_window) ... ok test_packaging_selfcheck_does_not_contact_real_instance (test_qt_tray_lifecycle.InstanceActivationTest.test_packaging_selfcheck_does_not_contact_real_instance) ... ok test_primary_enters_session_and_releases_guard (test_qt_tray_lifecycle.InstanceActivationTest.test_primary_enters_session_and_releases_guard) ... ok test_secondary_does_not_enter_login_or_construct_main_window (test_qt_tray_lifecycle.InstanceActivationTest.test_secondary_does_not_enter_login_or_construct_main_window) ... ok test_session_exception_releases_guard (test_qt_tray_lifecycle.InstanceActivationTest.test_session_exception_releases_guard) ... ok test_smoke_test_does_not_contact_real_instance (test_qt_tray_lifecycle.InstanceActivationTest.test_smoke_test_does_not_contact_real_instance) ... ok test_about_to_quit_is_wired_to_cleanup (test_qt_tray_lifecycle.TrayLifecycleTest.test_about_to_quit_is_wired_to_cleanup) ... ok test_application_quit_marks_window_for_real_close (test_qt_tray_lifecycle.TrayLifecycleTest.test_application_quit_marks_window_for_real_close) ... ok test_capsule_closes_to_tray_and_restores_original_geometry (test_qt_tray_lifecycle.TrayLifecycleTest.test_capsule_closes_to_tray_and_restores_original_geometry) ... ok test_cleanup_stops_listener_and_backup_once (test_qt_tray_lifecycle.TrayLifecycleTest.test_cleanup_stops_listener_and_backup_once) ... ok test_console_interrupt_uses_real_exit_not_window_close (test_qt_tray_lifecycle.TrayLifecycleTest.test_console_interrupt_uses_real_exit_not_window_close) ... ok test_exit_menu_bypasses_close_to_tray (test_qt_tray_lifecycle.TrayLifecycleTest.test_exit_menu_bypasses_close_to_tray) ... ok test_explicit_disable_close_to_tray_quits (test_qt_tray_lifecycle.TrayLifecycleTest.test_explicit_disable_close_to_tray_quits) ... ok test_forced_relogin_restores_tray_hidden_web_surface (test_qt_tray_lifecycle.TrayLifecycleTest.test_forced_relogin_restores_tray_hidden_web_surface) ... ok test_no_tray_fallback_restores_capsule_hidden_surfaces (test_qt_tray_lifecycle.TrayLifecycleTest.test_no_tray_fallback_restores_capsule_hidden_surfaces) ... ok test_no_tray_falls_back_to_taskbar_even_when_running (test_qt_tray_lifecycle.TrayLifecycleTest.test_no_tray_falls_back_to_taskbar_even_when_running) ... ok test_repeated_activation_keeps_current_visible_geometry (test_qt_tray_lifecycle.TrayLifecycleTest.test_repeated_activation_keeps_current_visible_geometry) ... ok test_running_status_does_not_reopen_capsule_after_tray_close (test_qt_tray_lifecycle.TrayLifecycleTest.test_running_status_does_not_reopen_capsule_after_tray_close) ... ok test_running_window_closes_to_tray_without_capsule_or_stop (test_qt_tray_lifecycle.TrayLifecycleTest.test_running_window_closes_to_tray_without_capsule_or_stop) ... ok test_save_failure_does_not_prevent_worker_shutdown (test_qt_tray_lifecycle.TrayLifecycleTest.test_save_failure_does_not_prevent_worker_shutdown) ... ok test_single_and_double_click_restore_but_context_menu_does_not (test_qt_tray_lifecycle.TrayLifecycleTest.test_single_and_double_click_restore_but_context_menu_does_not) ... ok test_stopped_window_closes_to_tray_without_stopping_worker (test_qt_tray_lifecycle.TrayLifecycleTest.test_stopped_window_closes_to_tray_without_stopping_worker) ... ok test_system_logoff_does_not_close_to_tray (test_qt_tray_lifecycle.TrayLifecycleTest.test_system_logoff_does_not_close_to_tray) ... ok test_taskbar_native_restore_clears_fallback_mode (test_qt_tray_lifecycle.TrayLifecycleTest.test_taskbar_native_restore_clears_fallback_mode) ... ok test_tray_menu_has_explicit_open_and_exit_actions (test_qt_tray_lifecycle.TrayLifecycleTest.test_tray_menu_has_explicit_open_and_exit_actions) ... ok test_tray_restore_preserves_maximized_window (test_qt_tray_lifecycle.TrayLifecycleTest.test_tray_restore_preserves_maximized_window) ... ok test_tray_restore_reopens_without_restarting_listener (test_qt_tray_lifecycle.TrayLifecycleTest.test_tray_restore_reopens_without_restarting_listener) ... ok test_tray_setting_outweighs_legacy_keep_background_false (test_qt_tray_lifecycle.TrayLifecycleTest.test_tray_setting_outweighs_legacy_keep_background_false) ... ok test_a_long_nickname_is_shortened_instead_of_overflowing (test_qt_capsule.CapsuleWindowTest.test_a_long_nickname_is_shortened_instead_of_overflowing) ... ok test_compact_layout_has_no_horizontal_overlap (test_qt_capsule.CapsuleWindowTest.test_compact_layout_has_no_horizontal_overlap) ... ok test_running_keeps_the_progress_line_alone (test_qt_capsule.CapsuleWindowTest.test_running_keeps_the_progress_line_alone) ... ok test_running_replaces_stale_connection_or_window_waiting_progress (test_qt_capsule.CapsuleWindowTest.test_running_replaces_stale_connection_or_window_waiting_progress) ... ok test_running_without_a_task_still_shows_a_real_process (test_qt_capsule.CapsuleWindowTest.test_running_without_a_task_still_shows_a_real_process) ... ok test_status_copy_and_actions_remain_connected (test_qt_capsule.CapsuleWindowTest.test_status_copy_and_actions_remain_connected) ... ok test_stopping_clears_a_stale_progress_line (test_qt_capsule.CapsuleWindowTest.test_stopping_clears_a_stale_progress_line) ... ok test_the_progress_line_says_who_is_being_answered (test_qt_capsule.CapsuleWindowTest.test_the_progress_line_says_who_is_being_answered) ... ok test_the_timer_sits_above_the_full_width_progress_line (test_qt_capsule.CapsuleWindowTest.test_the_timer_sits_above_the_full_width_progress_line) ... ok test_timer_and_longest_copy_fit_their_widgets (test_qt_capsule.CapsuleWindowTest.test_timer_and_longest_copy_fit_their_widgets) ... ok test_window_flags_and_position_keep_capsule_non_intrusive (test_qt_capsule.CapsuleWindowTest.test_window_flags_and_position_keep_capsule_non_intrusive) ... ok test_entering_capsule_twice_is_harmless (test_qt_capsule.MainWindowMinimizeTest.test_entering_capsule_twice_is_harmless) ... ok test_minimize_from_maximized_restores_maximized_console (test_qt_capsule.MainWindowMinimizeTest.test_minimize_from_maximized_restores_maximized_console) ... ok test_minimize_while_running_switches_to_capsule_and_can_expand (test_qt_capsule.MainWindowMinimizeTest.test_minimize_while_running_switches_to_capsule_and_can_expand) ... ok test_minimize_while_stopped_keeps_normal_taskbar_behavior (test_qt_capsule.MainWindowMinimizeTest.test_minimize_while_stopped_keeps_normal_taskbar_behavior) ... ok test_starting_the_listener_switches_to_capsule_by_itself (test_qt_capsule.MainWindowMinimizeTest.test_starting_the_listener_switches_to_capsule_by_itself) 开始监听就收进胶囊:控制台不该挡在企业微信前面。 ... ok test_delete_action_emits_the_full_untruncated_task_key (test_qt_capsule.QueuePageDeleteTest.test_delete_action_emits_the_full_untruncated_task_key) ... ok test_retry_action_emits_only_a_real_retry_wait_task (test_qt_capsule.QueuePageDeleteTest.test_retry_action_emits_only_a_real_retry_wait_task) ... ok test_builtin_risk_categories_are_read_only_and_rule_management_emits (test_qt_capsule.SettingsSendModeTest.test_builtin_risk_categories_are_read_only_and_rule_management_emits) ... ok test_mode_buttons_are_exclusive_reflect_settings_and_emit_values (test_qt_capsule.SettingsSendModeTest.test_mode_buttons_are_exclusive_reflect_settings_and_emit_values) ... ok test_rule_management_navigation_targets_ai_security_policy (test_qt_capsule.SettingsSendModeTest.test_rule_management_navigation_targets_ai_security_policy) ... ok test_window_redetection_reports_the_real_detected_handle (test_qt_capsule.SettingsSendModeTest.test_window_redetection_reports_the_real_detected_handle) ... ok test_clicking_the_orb_toggles_the_same_way (test_qt_capsule.SidebarMonitorToggleTest.test_clicking_the_orb_toggles_the_same_way) ... ok test_clicking_the_status_text_starts_the_listener (test_qt_capsule.SidebarMonitorToggleTest.test_clicking_the_status_text_starts_the_listener) ... ok test_clicking_the_status_text_while_running_pauses (test_qt_capsule.SidebarMonitorToggleTest.test_clicking_the_status_text_while_running_pauses) ... ok test_intermediate_states_count_as_running (test_qt_capsule.SidebarMonitorToggleTest.test_intermediate_states_count_as_running) ... ok test_one_click_never_fires_both_signals (test_qt_capsule.SidebarMonitorToggleTest.test_one_click_never_fires_both_signals) 旧实现每次都 disconnect 再 connect;少断一次就会自相抵消。 ... ok test_the_tooltip_says_what_the_click_will_do (test_qt_capsule.SidebarMonitorToggleTest.test_the_tooltip_says_what_the_click_will_do) ... ok test_customer_parentheses_and_personal_wechat_title_are_not_groups (test_reply_session_policy.SessionPolicyTests.test_customer_parentheses_and_personal_wechat_title_are_not_groups) ... ok test_exact_application_titles_include_spacing_variants (test_reply_session_policy.SessionPolicyTests.test_exact_application_titles_include_spacing_variants) ... ok test_explicit_member_units_identify_group_header (test_reply_session_policy.SessionPolicyTests.test_explicit_member_units_identify_group_header) ... ok test_explicit_metadata_and_nested_db_event_are_supported (test_reply_session_policy.SessionPolicyTests.test_explicit_metadata_and_nested_db_event_are_supported) ... ok test_false_string_and_single_chat_types_do_not_block_customers (test_reply_session_policy.SessionPolicyTests.test_false_string_and_single_chat_types_do_not_block_customers) ... ok test_list_unread_count_or_word_group_is_insufficient (test_reply_session_policy.SessionPolicyTests.test_list_unread_count_or_word_group_is_insufficient) ... ok test_message_text_and_other_people_names_are_not_filters (test_reply_session_policy.SessionPolicyTests.test_message_text_and_other_people_names_are_not_filters) ... ok test_opened_title_has_additional_member_count (test_reply_session_policy.SessionPolicyTests.test_opened_title_has_additional_member_count) ... ok test_structured_group_ids_are_skipped (test_reply_session_policy.SessionPolicyTests.test_structured_group_ids_are_skipped) ... ok test_context_reloaded_for_generation_can_exclude_group (test_protocol_session_exclusions.ProtocolSessionExclusions.test_context_reloaded_for_generation_can_exclude_group) ... ok test_database_existing_direct_filter_rejects_group_before_content_read (test_protocol_session_exclusions.ProtocolSessionExclusions.test_database_existing_direct_filter_rejects_group_before_content_read) ... ok test_duplicate_excluded_event_does_not_rewrite_queue_or_repeat_log (test_protocol_session_exclusions.ProtocolSessionExclusions.test_duplicate_excluded_event_does_not_rewrite_queue_or_repeat_log) ... ok test_excluded_legacy_manual_or_error_tasks_are_removed_before_review (test_protocol_session_exclusions.ProtocolSessionExclusions.test_excluded_legacy_manual_or_error_tasks_are_removed_before_review) ... ok test_excluded_sessions_do_not_block_other_personal_session (test_protocol_session_exclusions.ProtocolSessionExclusions.test_excluded_sessions_do_not_block_other_personal_session) ... ok test_final_native_guard_cancels_then_clears_only_unsent_draft (test_protocol_session_exclusions.ProtocolSessionExclusions.test_final_native_guard_cancels_then_clears_only_unsent_draft) ... ok test_foreign_account_draft_is_never_cleared_by_current_account_policy (test_protocol_session_exclusions.ProtocolSessionExclusions.test_foreign_account_draft_is_never_cleared_by_current_account_policy) ... ok test_group_ids_and_structured_kinds_never_generate (test_protocol_session_exclusions.ProtocolSessionExclusions.test_group_ids_and_structured_kinds_never_generate) ... ok test_identity_changed_during_generation_drops_draft_before_review_or_send (test_protocol_session_exclusions.ProtocolSessionExclusions.test_identity_changed_during_generation_drops_draft_before_review_or_send) ... ok test_latest_context_identity_is_checked_before_generation (test_protocol_session_exclusions.ProtocolSessionExclusions.test_latest_context_identity_is_checked_before_generation) ... ok test_latest_last_message_metadata_is_checked_even_without_context_kind (test_protocol_session_exclusions.ProtocolSessionExclusions.test_latest_last_message_metadata_is_checked_even_without_context_kind) ... ok test_named_system_sessions_never_generate_or_enter_review (test_protocol_session_exclusions.ProtocolSessionExclusions.test_named_system_sessions_never_generate_or_enter_review) ... ok test_new_excluded_message_cannot_replace_unknown_send (test_protocol_session_exclusions.ProtocolSessionExclusions.test_new_excluded_message_cannot_replace_unknown_send) ... ok test_personal_message_mentions_of_groups_or_application_are_not_filtered (test_protocol_session_exclusions.ProtocolSessionExclusions.test_personal_message_mentions_of_groups_or_application_are_not_filtered) ... ok test_personal_name_containing_group_word_is_not_group_identity (test_protocol_session_exclusions.ProtocolSessionExclusions.test_personal_name_containing_group_word_is_not_group_identity) ... ok test_restart_discards_old_drafts_and_reviews_preserving_dedup (test_protocol_session_exclusions.ProtocolSessionExclusions.test_restart_discards_old_drafts_and_reviews_preserving_dedup) ... ok test_restart_keeps_attempted_delivery_evidence (test_protocol_session_exclusions.ProtocolSessionExclusions.test_restart_keeps_attempted_delivery_evidence) ... ok test_unknown_delivery_after_excluded_guard_preserves_evidence (test_protocol_session_exclusions.ProtocolSessionExclusions.test_unknown_delivery_after_excluded_guard_preserves_evidence) ... ok test_application_exact_name_rejects_queue_before_model_or_window_read (test_visual_session_exclusions.VisualSessionExclusionTests.test_application_exact_name_rejects_queue_before_model_or_window_read) ... [会话过滤] 企小码系统会话不参与自动回复,已跳过 ok test_excluded_application_stops_send_before_any_input (test_visual_session_exclusions.VisualSessionExclusionTests.test_excluded_application_stops_send_before_any_input) ... [会话过滤] 企小码系统会话不参与自动回复,已跳过 ok test_expired_group_cache_is_rechecked_instead_of_permanent_blacklist (test_visual_session_exclusions.VisualSessionExclusionTests.test_expired_group_cache_is_rechecked_instead_of_permanent_blacklist) ... ok test_external_group_identity_cannot_enqueue (test_visual_session_exclusions.VisualSessionExclusionTests.test_external_group_identity_cannot_enqueue) ... [会话过滤] 群聊不参与自动回复,已跳过 ok test_group_metadata_stops_model_wrapper_without_generating (test_visual_session_exclusions.VisualSessionExclusionTests.test_group_metadata_stops_model_wrapper_without_generating) ... [会话过滤] 群聊不参与自动回复,已跳过 ok test_header_identity_change_between_frames_is_not_group_proof (test_visual_session_exclusions.VisualSessionExclusionTests.test_header_identity_change_between_frames_is_not_group_proof) ... ok test_known_personal_database_id_does_not_use_title_heuristics_or_old_group_cache (test_visual_session_exclusions.VisualSessionExclusionTests.test_known_personal_database_id_does_not_use_title_heuristics_or_old_group_cache) ... ok test_member_like_personal_nickname_is_not_excluded (test_visual_session_exclusions.VisualSessionExclusionTests.test_member_like_personal_nickname_is_not_excluded) ... ok test_mixed_unread_list_skips_application_and_group_then_selects_next_customer (test_visual_session_exclusions.VisualSessionExclusionTests.test_mixed_unread_list_skips_application_and_group_then_selects_next_customer) ... [视觉队列] 已跳过系统入口:企小码会话管理 [会话过滤] 群聊不参与自动回复,已跳过 ok test_no_group_inference_from_body_or_customer_name_containing_group_word (test_visual_session_exclusions.VisualSessionExclusionTests.test_no_group_inference_from_body_or_customer_name_containing_group_word) ... ok test_ocr_failure_is_not_a_reason_to_drop_customer (test_visual_session_exclusions.VisualSessionExclusionTests.test_ocr_failure_is_not_a_reason_to_drop_customer) ... ok test_partial_legacy_fingerprint_does_not_prove_unrelated_current_title (test_visual_session_exclusions.VisualSessionExclusionTests.test_partial_legacy_fingerprint_does_not_prove_unrelated_current_title) ... ok test_post_click_exclusion_continues_current_round_to_next_customer (test_visual_session_exclusions.VisualSessionExclusionTests.test_post_click_exclusion_continues_current_round_to_next_customer) ... [新消息] 正在处理 row0(坐标: 0, 20) [新消息] 正在处理 row0(坐标: 0, 20) [完成] 回复完成,红点已消失 → row0 ok test_post_click_queue_exclusion_continues_current_round_to_next_customer (test_visual_session_exclusions.VisualSessionExclusionTests.test_post_click_queue_exclusion_continues_current_round_to_next_customer) ... [新消息] 正在处理 row0(坐标: 0, 20) [会话过滤] 群聊不参与自动回复,已跳过 [新消息] 正在处理 row0(坐标: 0, 20) [完成] 回复完成,红点已消失 → row0 ok test_protected_delivery_evidence_is_preserved_for_every_exclusion (test_visual_session_exclusions.VisualSessionExclusionTests.test_protected_delivery_evidence_is_preserved_for_every_exclusion) ... [会话过滤] 企小码系统会话不参与自动回复,已跳过 ok test_selected_identity_mismatch_does_not_remove_previous_task (test_visual_session_exclusions.VisualSessionExclusionTests.test_selected_identity_mismatch_does_not_remove_previous_task) ... ok test_stable_group_title_requires_two_headers_then_skips_without_reopening (test_visual_session_exclusions.VisualSessionExclusionTests.test_stable_group_title_requires_two_headers_then_skips_without_reopening) ... [会话过滤] 群聊不参与自动回复,已跳过 ok test_startup_system_purge_keeps_uncertain_transaction (test_visual_session_exclusions.VisualSessionExclusionTests.test_startup_system_purge_keeps_uncertain_transaction) ... ok test_task_replacement_during_header_confirmation_is_not_removed_or_cached (test_visual_session_exclusions.VisualSessionExclusionTests.test_task_replacement_during_header_confirmation_is_not_removed_or_cached) ... ok test_title_change_between_frames_does_not_remove_previous_task (test_visual_session_exclusions.VisualSessionExclusionTests.test_title_change_between_frames_does_not_remove_previous_task) ... ok test_unknown_task_name_reads_list_before_explicit_member_suffix (test_visual_session_exclusions.VisualSessionExclusionTests.test_unknown_task_name_reads_list_before_explicit_member_suffix) ... ok test_vanished_selection_rebinds_second_header_before_excluding (test_visual_session_exclusions.VisualSessionExclusionTests.test_vanished_selection_rebinds_second_header_before_excluding) ... ok test_vanished_selection_with_other_application_header_keeps_customer (test_visual_session_exclusions.VisualSessionExclusionTests.test_vanished_selection_with_other_application_header_keeps_customer) ... ok test_vanished_selection_with_other_group_member_header_keeps_customer (test_visual_session_exclusions.VisualSessionExclusionTests.test_vanished_selection_with_other_group_member_header_keeps_customer) ... ok test_vanished_unread_row_requires_separate_list_name_and_stable_header (test_visual_session_exclusions.VisualSessionExclusionTests.test_vanished_unread_row_requires_separate_list_name_and_stable_header) ... [会话过滤] 群聊不参与自动回复,已跳过 ok test_wechat_label_does_not_count_as_group_even_with_member_suffix (test_visual_session_exclusions.VisualSessionExclusionTests.test_wechat_label_does_not_count_as_group_even_with_member_suffix) ... ok test_counts_are_disjoint_and_count_conversations_not_messages (test_review_badges.AttentionBadgeTests.test_counts_are_disjoint_and_count_conversations_not_messages) ... ok test_hidden_queue_refreshes_counts_without_rebuilding_widgets (test_review_badges.AttentionBadgeTests.test_hidden_queue_refreshes_counts_without_rebuilding_widgets) ... ok test_native_badge_scales_and_preserves_exact_accessible_count (test_review_badges.AttentionBadgeTests.test_native_badge_scales_and_preserves_exact_accessible_count) ... ok test_queue_refresh_updates_both_native_entrances_under_unrelated_filter (test_review_badges.AttentionBadgeTests.test_queue_refresh_updates_both_native_entrances_under_unrelated_filter) ... ok test_web_badges_update_while_editing_and_hide_when_resolved (test_review_badges.AttentionBadgeTests.test_web_badges_update_while_editing_and_hide_when_resolved) ... ok test_current_shadow_plan_releases_legacy_high_risk_once (test_review_policy_integration.ProtocolPolicyIntegration.test_current_shadow_plan_releases_legacy_high_risk_once) ... ok test_gateway_shadow_verdict_is_recorded_and_sent_without_approval (test_review_policy_integration.ProtocolPolicyIntegration.test_gateway_shadow_verdict_is_recorded_and_sent_without_approval) ... ok test_gateway_strict_verdict_overrides_stale_shadow_cache (test_review_policy_integration.ProtocolPolicyIntegration.test_gateway_strict_verdict_overrides_stale_shadow_cache) ... ok test_score_only_high_risk_still_requires_approval (test_review_policy_integration.ProtocolPolicyIntegration.test_score_only_high_risk_still_requires_approval) ... ok test_disabling_keyword_rule_releases_existing_draft (test_review_policy_integration.VisualPolicyIntegration.test_disabling_keyword_rule_releases_existing_draft) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。 ok test_new_strict_verdict_overrides_old_shadow_config (test_review_policy_integration.VisualPolicyIntegration.test_new_strict_verdict_overrides_old_shadow_config) ... ok test_old_judge_callback_cannot_modify_new_turn (test_review_policy_integration.VisualPolicyIntegration.test_old_judge_callback_cannot_modify_new_turn) ... ok test_shadow_mode_survives_restart_and_releases_obsolete_review (test_review_policy_integration.VisualPolicyIntegration.test_shadow_mode_survives_restart_and_releases_obsolete_review) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。 ok test_shadow_never_clears_unknown_receipt (test_review_policy_integration.VisualPolicyIntegration.test_shadow_never_clears_unknown_receipt) ... ok test_explicit_approval_survives_restart_but_is_consumed_on_next_turn (test_visual_review_visibility.VisualReviewVisibilityTest.test_explicit_approval_survives_restart_but_is_consumed_on_next_turn) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。 ok test_failed_approval_save_keeps_review_visible_and_unapproved (test_visual_review_visibility.VisualReviewVisibilityTest.test_failed_approval_save_keeps_review_visible_and_unapproved) ... ok test_known_global_review_still_honors_explicit_mode_change (test_visual_review_visibility.VisualReviewVisibilityTest.test_known_global_review_still_honors_explicit_mode_change) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。 ok test_legacy_manual_review_stage_without_boolean_is_restored (test_visual_review_visibility.VisualReviewVisibilityTest.test_legacy_manual_review_stage_without_boolean_is_restored) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。 ok test_legacy_review_recovers_rule_reason_from_stage_detail (test_visual_review_visibility.VisualReviewVisibilityTest.test_legacy_review_recovers_rule_reason_from_stage_detail) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。 ok test_legacy_review_with_lost_reason_stays_actionable (test_visual_review_visibility.VisualReviewVisibilityTest.test_legacy_review_with_lost_reason_stays_actionable) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。 ok test_next_customer_turn_does_not_inherit_previous_judge_risk (test_visual_review_visibility.VisualReviewVisibilityTest.test_next_customer_turn_does_not_inherit_previous_judge_risk) ... ok test_review_outcome_preserves_specific_reason_for_desktop_and_log (test_visual_review_visibility.VisualReviewVisibilityTest.test_review_outcome_preserves_specific_reason_for_desktop_and_log) ... ok test_review_without_unread_badge_does_not_expire_during_downtime (test_visual_review_visibility.VisualReviewVisibilityTest.test_review_without_unread_badge_does_not_expire_during_downtime) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。 ok test_rule_reason_and_judge_survive_restart_and_auto_mode (test_visual_review_visibility.VisualReviewVisibilityTest.test_rule_reason_and_judge_survive_restart_and_auto_mode) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。 ok test_user_can_cancel_restored_review_without_sending (test_visual_review_visibility.VisualReviewVisibilityTest.test_user_can_cancel_restored_review_without_sending) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。 ok test_foreign_account_task_cannot_be_approved_deleted_or_retried (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_foreign_account_task_cannot_be_approved_deleted_or_retried) ... ok test_high_risk_reason_available_in_automatic_mode (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_high_risk_reason_available_in_automatic_mode) ... ok test_media_batch_is_visible_manual_work_without_approvable_draft (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_media_batch_is_visible_manual_work_without_approvable_draft) ... ok test_next_valid_batch_discards_old_manual_requirement (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_next_valid_batch_discards_old_manual_requirement) ... ok test_old_saved_review_and_manual_tasks_restore_metadata_only (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_old_saved_review_and_manual_tasks_restore_metadata_only) ... ok test_overlong_batch_cannot_be_approved_as_a_draft (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_overlong_batch_cannot_be_approved_as_a_draft) ... ok test_retry_clears_old_metadata_then_rechecks_media_without_sending (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_retry_clears_old_metadata_then_rechecks_media_without_sending) ... ok test_review_draft_reason_persists_then_explicit_approval_sends_once (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_review_draft_reason_persists_then_explicit_approval_sends_once) ... ok test_unknown_receipt_cannot_be_approved_or_retried (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_unknown_receipt_cannot_be_approved_or_retried) ... ok ---------------------------------------------------------------------- Ran 300 tests in 15.236s OK