test_already_attempted_event_never_replayed_for_any_receipt_state (test_protocol_contact_recovery.ContactRecoveryTests.test_already_attempted_event_never_replayed_for_any_receipt_state) ... ok test_assistant_conversation_not_restored_as_auto_reply_target (test_protocol_contact_recovery.ContactRecoveryTests.test_assistant_conversation_not_restored_as_auto_reply_target) ... ok test_final_native_guard_can_recheck_its_own_inflight_journal (test_protocol_contact_recovery.ContactRecoveryTests.test_final_native_guard_can_recheck_its_own_inflight_journal) ... ok test_fresh_inbound_does_not_overwrite_manual_task_during_contact_recheck (test_protocol_contact_recovery.ContactRecoveryTests.test_fresh_inbound_does_not_overwrite_manual_task_during_contact_recheck) ... ok test_historical_contact_notice_cannot_erase_unknown_send_protection (test_protocol_contact_recovery.ContactRecoveryTests.test_historical_contact_notice_cannot_erase_unknown_send_protection) ... ok test_historical_notice_without_saved_block_does_not_hide_new_question (test_protocol_contact_recovery.ContactRecoveryTests.test_historical_notice_without_saved_block_does_not_hide_new_question) ... ok test_journal_read_failure_does_not_replay_seen_event (test_protocol_contact_recovery.ContactRecoveryTests.test_journal_read_failure_does_not_replay_seen_event) ... ok test_legacy_block_uses_exact_hash_and_account_not_name (test_protocol_contact_recovery.ContactRecoveryTests.test_legacy_block_uses_exact_hash_and_account_not_name) ... ok test_legacy_float_and_seen_swallow_are_recovered_without_restarting_customer (test_protocol_contact_recovery.ContactRecoveryTests.test_legacy_float_and_seen_swallow_are_recovered_without_restarting_customer) ... ok test_limit_two_backfills_and_five_second_throttle (test_protocol_contact_recovery.ContactRecoveryTests.test_limit_two_backfills_and_five_second_throttle) ... ok test_new_block_during_generation_invalidates_new_answer (test_protocol_contact_recovery.ContactRecoveryTests.test_new_block_during_generation_invalidates_new_answer) ... ok test_new_question_still_requires_fresh_review (test_protocol_contact_recovery.ContactRecoveryTests.test_new_question_still_requires_fresh_review) ... ok test_old_added_at_active_relation_rechecks_new_message_without_restore_notice (test_protocol_contact_recovery.ContactRecoveryTests.test_old_added_at_active_relation_rechecks_new_message_without_restore_notice) ... ok test_own_reply_after_block_prevents_unanswered_backfill (test_protocol_contact_recovery.ContactRecoveryTests.test_own_reply_after_block_prevents_unanswered_backfill) ... ok test_receiving_customer_text_alone_is_not_relationship_proof (test_protocol_contact_recovery.ContactRecoveryTests.test_receiving_customer_text_alone_is_not_relationship_proof) ... ok test_recovery_does_not_remove_existing_manual_or_uncertain_tasks (test_protocol_contact_recovery.ContactRecoveryTests.test_recovery_does_not_remove_existing_manual_or_uncertain_tasks) ... ok test_rejection_records_actual_source_and_later_new_question_can_recheck_once (test_protocol_contact_recovery.ContactRecoveryTests.test_rejection_records_actual_source_and_later_new_question_can_recheck_once) ... ok test_relation_change_during_generation_invalidates_reply (test_protocol_contact_recovery.ContactRecoveryTests.test_relation_change_during_generation_invalidates_reply) ... ok test_restart_keeps_failed_event_and_recovers_only_later_message (test_protocol_contact_recovery.ContactRecoveryTests.test_restart_keeps_failed_event_and_recovers_only_later_message) ... ok test_same_or_older_customer_anchor_is_not_new (test_protocol_contact_recovery.ContactRecoveryTests.test_same_or_older_customer_anchor_is_not_new) ... ok test_same_second_later_row_is_new_and_keeps_order (test_protocol_contact_recovery.ContactRecoveryTests.test_same_second_later_row_is_new_and_keeps_order) ... ok test_structured_blocked_seen_event_is_recovered_when_relation_becomes_active (test_protocol_contact_recovery.ContactRecoveryTests.test_structured_blocked_seen_event_is_recovered_when_relation_becomes_active) ... ok test_system_and_forged_direction_or_sender_are_not_new_customer_events (test_protocol_contact_recovery.ContactRecoveryTests.test_system_and_forged_direction_or_sender_are_not_new_customer_events) ... ok test_unknown_blocked_or_cross_identity_relation_does_not_enable_new_question (test_protocol_contact_recovery.ContactRecoveryTests.test_unknown_blocked_or_cross_identity_relation_does_not_enable_new_question) ... ok test_untranscribed_voice_waits_while_other_conversation_can_process (test_protocol_contact_recovery.ContactRecoveryTests.test_untranscribed_voice_waits_while_other_conversation_can_process) ... ok test_voice_new_question_is_transcribed_before_model_not_old_notice_manual (test_protocol_contact_recovery.ContactRecoveryTests.test_voice_new_question_is_transcribed_before_model_not_old_notice_manual) ... ok test_black_chat_quote_is_not_a_system_banner (test_contact_reply_guard.NoticeTests.test_black_chat_quote_is_not_a_system_banner) ... ok test_complete_notice_and_wrapped_ocr (test_contact_reply_guard.NoticeTests.test_complete_notice_and_wrapped_ocr) ... ok test_customer_quote_is_not_a_protocol_system_notice (test_contact_reply_guard.NoticeTests.test_customer_quote_is_not_a_protocol_system_notice) ... ok test_discussing_verification_or_single_failure_icon_is_not_evidence (test_contact_reply_guard.NoticeTests.test_discussing_verification_or_single_failure_icon_is_not_evidence) ... ok test_grey_centered_system_notice (test_contact_reply_guard.NoticeTests.test_grey_centered_system_notice) ... ok test_low_confidence_does_not_blacklist (test_contact_reply_guard.NoticeTests.test_low_confidence_does_not_blacklist) ... ok test_system_restoration_supersedes_old_restriction (test_contact_reply_guard.NoticeTests.test_system_restoration_supersedes_old_restriction) ... ok test_existing_system_notice_is_checked_before_generation (test_contact_reply_guard.ProtocolContactTests.test_existing_system_notice_is_checked_before_generation) ... [协议收信] 同名客户 · 已加入回复队列 [协议联系人核验] 同名客户 · 当前账号客户关系尚未核验为有效;继续监听,新的客户消息将重新核验 ok test_failed_notice_lookup_keeps_unknown_send_protected (test_contact_reply_guard.ProtocolContactTests.test_failed_notice_lookup_keeps_unknown_send_protected) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议处理] 同名客户 · 本会话发送结果待人工核对,其他会话继续监听;callback timeout ok test_notice_arriving_during_generation_cancels_draft (test_contact_reply_guard.ProtocolContactTests.test_notice_arriving_during_generation_cancels_draft) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议联系人核验] 同名客户 · 对方开启联系人验证,当前不是联系人,已跳过自动回复;继续监听,新的客户消息将重新核验 ok test_notice_blocks_one_chat_and_another_chat_still_sends (test_contact_reply_guard.ProtocolContactTests.test_notice_blocks_one_chat_and_another_chat_still_sends) ... [协议联系人核验] 同名客户 · 对方开启联系人验证,当前不是联系人,已跳过自动回复;继续监听,新的客户消息将重新核验 [协议联系人核验] 同名客户 · 当前账号客户关系尚未核验为有效 [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_other_send_failure_remains_protected (test_contact_reply_guard.ProtocolContactTests.test_other_send_failure_remains_protected) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议处理] 同名客户 · 客户端拒绝发送,需人工核对;network unavailable ok test_rejection_during_send_is_not_retried_after_restart (test_contact_reply_guard.ProtocolContactTests.test_rejection_during_send_is_not_retried_after_restart) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议联系人核验] 同名客户 · 该用户不是你的联系人;继续监听,新的客户消息将重新核验 [协议联系人核验] 同名客户 · 消息早于最近一次实际拒收,禁止重试旧问题 ok test_restore_notice_allows_later_message (test_contact_reply_guard.ProtocolContactTests.test_restore_notice_allows_later_message) ... [协议联系人核验] 同名客户 · 对方开启联系人验证,当前不是联系人,已跳过自动回复;继续监听,新的客户消息将重新核验 [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_unknown_receipt_with_contact_notice_isolated_without_resending (test_contact_reply_guard.ProtocolContactTests.test_unknown_receipt_with_contact_notice_isolated_without_resending) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议联系人核验] 同名客户 · 对方开启联系人验证,当前不是联系人,已跳过自动回复;继续监听,新的客户消息将重新核验 ok test_user_quoting_notice_does_not_disable_chat (test_contact_reply_guard.ProtocolContactTests.test_user_quoting_notice_does_not_disable_chat) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_failed_outgoing_bubble_is_never_archived_as_success (test_contact_reply_guard.VisualSkipTests.test_failed_outgoing_bubble_is_never_archived_as_success) ... [会话过滤] 对方开启联系人验证,当前不是联系人,已跳过自动回复;6 小时后重新检查会话状态。 ok test_ocr_error_keeps_customer_task (test_contact_reply_guard.VisualSkipTests.test_ocr_error_keeps_customer_task) ... ok test_skip_clears_pending_and_uncommitted_exchange_then_persists (test_contact_reply_guard.VisualSkipTests.test_skip_clears_pending_and_uncommitted_exchange_then_persists) ... [会话过滤] 对方开启联系人验证,当前不是联系人,已跳过自动回复;6 小时后重新检查会话状态。 ok test_uncertain_send_with_rejection_skips_without_receipt_or_retry (test_contact_reply_guard.VisualSkipTests.test_uncertain_send_with_rejection_skips_without_receipt_or_retry) ... [会话过滤] 对方开启联系人验证,当前不是联系人,已跳过自动回复;6 小时后重新检查会话状态。 ok test_cancel_during_generation_does_not_send (test_native_protocol_pipeline.EngineTests.test_cancel_during_generation_does_not_send) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 ok test_crash_in_sending_becomes_uncertain (test_native_protocol_pipeline.EngineTests.test_crash_in_sending_becomes_uncertain) ... [协议收信] 同名客户 · 已加入回复队列 ok test_database_read_failure_never_announces_healthy_listener (test_native_protocol_pipeline.EngineTests.test_database_read_failure_never_announces_healthy_listener) ... ok test_duplicate_event_only_sent_once (test_native_protocol_pipeline.EngineTests.test_duplicate_event_only_sent_once) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_manual_reply_during_generation_cancels_send (test_native_protocol_pipeline.EngineTests.test_manual_reply_during_generation_cancels_send) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 ok test_media_is_left_for_manual_handling (test_native_protocol_pipeline.EngineTests.test_media_is_left_for_manual_handling) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 当前消息需要人工处理;当前未回复消息包含图片、语音或其他非文本内容,协议版需人工处理 ok test_memory_setting_preserves_only_unanswered_batch_when_disabled (test_native_protocol_pipeline.EngineTests.test_memory_setting_preserves_only_unanswered_batch_when_disabled) ... ok test_model_control_tokens_are_not_sent (test_native_protocol_pipeline.EngineTests.test_model_control_tokens_are_not_sent) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 模型生成失败,可重试;模型未返回有效文本 ok test_model_error_can_retry_before_send (test_native_protocol_pipeline.EngineTests.test_model_error_can_retry_before_send) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 模型生成失败,可重试;offline [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_new_incoming_during_generation_discards_old_answer (test_native_protocol_pipeline.EngineTests.test_new_incoming_during_generation_discards_old_answer) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议收信] 同名客户 · 已加入回复队列 ok test_new_message_invalidates_approved_draft (test_native_protocol_pipeline.EngineTests.test_new_message_invalidates_approved_draft) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 人工审核 [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 人工审核 ok test_only_current_account_processed (test_native_protocol_pipeline.EngineTests.test_only_current_account_processed) ... ok test_pending_batch_window_is_honored (test_native_protocol_pipeline.EngineTests.test_pending_batch_window_is_honored) ... [协议收信] 同名客户 · 已加入回复队列 ok test_pending_review_and_errors_do_not_show_idle (test_native_protocol_pipeline.EngineTests.test_pending_review_and_errors_do_not_show_idle) ... ok test_progress_callback_failure_does_not_repeat_or_block_send (test_native_protocol_pipeline.EngineTests.test_progress_callback_failure_does_not_repeat_or_block_send) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_progress_follows_receive_generate_send_then_waiting (test_native_protocol_pipeline.EngineTests.test_progress_follows_receive_generate_send_then_waiting) ... ok test_ready_flag_alone_cannot_enable_transport (test_native_protocol_pipeline.EngineTests.test_ready_flag_alone_cannot_enable_transport) ... ok test_restart_after_confirmed_journal_clears_pending_without_send (test_native_protocol_pipeline.EngineTests.test_restart_after_confirmed_journal_clears_pending_without_send) ... [协议收信] 同名客户 · 已加入回复队列 ok test_review_requires_approval (test_native_protocol_pipeline.EngineTests.test_review_requires_approval) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 人工审核 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_runtime_uses_protocol_engine_without_visual_construction (test_native_protocol_pipeline.EngineTests.test_runtime_uses_protocol_engine_without_visual_construction) ... ok test_same_name_conversations_use_distinct_ids (test_native_protocol_pipeline.EngineTests.test_same_name_conversations_use_distinct_ids) ... [协议收信] 同名客户 · 已加入回复队列 [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_stop_during_generation_does_not_send (test_native_protocol_pipeline.EngineTests.test_stop_during_generation_does_not_send) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 ok test_text_pipeline_with_native_receipt_and_no_feedback (test_native_protocol_pipeline.EngineTests.test_text_pipeline_with_native_receipt_and_no_feedback) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_uncertain_send_is_persisted_and_not_retried (test_native_protocol_pipeline.EngineTests.test_uncertain_send_is_persisted_and_not_retried) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议处理] 同名客户 · 本会话发送结果待人工核对,其他会话继续监听;timeout ok test_unknown_receipt_isolated_with_healthy_poll_log (test_native_protocol_pipeline.EngineTests.test_unknown_receipt_isolated_with_healthy_poll_log) ... ok test_waiting_progress_and_periodic_read_confirmation_are_throttled (test_native_protocol_pipeline.EngineTests.test_waiting_progress_and_periodic_read_confirmation_are_throttled) ... ok test_cancelled_before_send_does_not_consume_id (test_native_protocol_pipeline.JournalTests.test_cancelled_before_send_does_not_consume_id) ... ok test_changed_payload_same_event_is_blocked (test_native_protocol_pipeline.JournalTests.test_changed_payload_same_event_is_blocked) ... ok test_failure_does_not_automatically_retry (test_native_protocol_pipeline.JournalTests.test_failure_does_not_automatically_retry) ... ok test_invalid_text_rejected (test_native_protocol_pipeline.JournalTests.test_invalid_text_rejected) ... ok test_missing_conversation_blocks_send (test_native_protocol_pipeline.JournalTests.test_missing_conversation_blocks_send) ... ok test_reopen_after_success_never_resends (test_native_protocol_pipeline.JournalTests.test_reopen_after_success_never_resends) ... ok test_success_receipt_and_repeat_returns_saved_result (test_native_protocol_pipeline.JournalTests.test_success_receipt_and_repeat_returns_saved_result) ... ok test_unknown_blocks_retry (test_native_protocol_pipeline.JournalTests.test_unknown_blocks_retry) ... ok test_wrong_account_rejected_before_journaling_or_send (test_native_protocol_pipeline.JournalTests.test_wrong_account_rejected_before_journaling_or_send) ... ok test_cache_change_keeps_independent_manual_block (test_protocol_voice.ProtocolVoiceTests.test_cache_change_keeps_independent_manual_block) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 ok test_changed_voice_revokes_approval_and_rechecks_review_on_new_answer (test_protocol_voice.ProtocolVoiceTests.test_changed_voice_revokes_approval_and_rechecks_review_on_new_answer) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 人工审核 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 人工审核 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_direct_judge_receives_entire_mixed_unanswered_batch (test_protocol_voice.ProtocolVoiceTests.test_direct_judge_receives_entire_mixed_unanswered_batch) ... [协议收信] 同名客户 · 已加入回复队列 [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 模型裁判评估为高风险 ok test_failed_transcription_enters_manual_and_never_calls_model (test_protocol_voice.ProtocolVoiceTests.test_failed_transcription_enters_manual_and_never_calls_model) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 当前消息需要人工处理;语音自动转文字失败(empty_audio),请人工核对 ok test_final_native_guard_rejects_changed_voice_before_send (test_protocol_voice.ProtocolVoiceTests.test_final_native_guard_rejects_changed_voice_before_send) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_human_reply_while_voice_pending_discards_old_question (test_protocol_voice.ProtocolVoiceTests.test_human_reply_while_voice_pending_discards_old_question) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 语音正在本机转文字 ok test_legacy_voice_draft_without_snapshot_regenerates_before_send (test_protocol_voice.ProtocolVoiceTests.test_legacy_voice_draft_without_snapshot_regenerates_before_send) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_missing_voice_times_out_without_global_stop_or_guess (test_protocol_voice.ProtocolVoiceTests.test_missing_voice_times_out_without_global_stop_or_guess) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 等待企业微信语音文件或转写缓存 [协议处理] 同名客户 · 当前消息需要人工处理;语音转文字等待超时,尚未取得可核验文字,请人工处理 ok test_mixed_voice_and_text_waits_and_preserves_both (test_protocol_voice.ProtocolVoiceTests.test_mixed_voice_and_text_waits_and_preserves_both) ... [协议收信] 同名客户 · 已加入回复队列 [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 语音正在本机转文字 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_new_media_after_voice_still_needs_manual (test_protocol_voice.ProtocolVoiceTests.test_new_media_after_voice_still_needs_manual) ... [协议收信] 同名客户 · 已加入回复队列 [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 当前消息需要人工处理;当前未回复消息包含图片、语音或其他非文本内容,协议版需人工处理 ok test_pending_voice_delays_only_its_conversation_then_resumes_on_cache_update (test_protocol_voice.ProtocolVoiceTests.test_pending_voice_delays_only_its_conversation_then_resumes_on_cache_update) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 语音正在本机转文字 [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_same_voice_cache_changes_during_generation_discard_then_regenerate (test_protocol_voice.ProtocolVoiceTests.test_same_voice_cache_changes_during_generation_discard_then_regenerate) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议发送成功] 同名客户 · 服务器消息 999 ok test_spoofed_or_cross_conversation_transcription_does_not_reach_model (test_protocol_voice.ProtocolVoiceTests.test_spoofed_or_cross_conversation_transcription_does_not_reach_model) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 等待企业微信语音文件或转写缓存 ok test_transcribed_voice_reaches_model_and_selective_review_as_text (test_protocol_voice.ProtocolVoiceTests.test_transcribed_voice_reaches_model_and_selective_review_as_text) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 合成审核规则 ok test_unknown_delivery_keeps_original_voice_draft_and_evidence (test_protocol_voice.ProtocolVoiceTests.test_unknown_delivery_keeps_original_voice_draft_and_evidence) ... [协议收信] 同名客户 · 已加入回复队列 [协议处理] 同名客户 · 根据当前会话生成回复 [协议处理] 同名客户 · 原账号单聊发送 [协议处理] 同名客户 · 本会话发送结果待人工核对,其他会话继续监听;合成未知回执 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_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_active_send_evidence_is_never_auto_completed (test_protocol_review_assistant.ProtocolReviewAssistantTests.test_active_send_evidence_is_never_auto_completed) ... ok 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_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_active_send_and_unresolved_receipt_phase_never_complete (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_active_send_and_unresolved_receipt_phase_never_complete) ... ok test_cancelled_manual_task_does_not_restore_global_auto_mode (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_cancelled_manual_task_does_not_restore_global_auto_mode) ... ok test_explicit_disabled_or_cancel_requested_tasks_are_not_resumed (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_explicit_disabled_or_cancel_requested_tasks_are_not_resumed) ... ok test_failed_send_can_finish_only_on_later_human_evidence (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_failed_send_can_finish_only_on_later_human_evidence) ... ok test_further_incoming_text_preserves_manual_episode_until_human_reply (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_further_incoming_text_preserves_manual_episode_until_human_reply) ... ok test_generation_error_is_notified_and_human_answer_resolves_it (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_generation_error_is_notified_and_human_answer_resolves_it) ... ok test_late_human_sync_keeps_question_sent_after_that_human_reply (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_late_human_sync_keeps_question_sent_after_that_human_reply) ... ok test_legacy_manual_task_with_exact_trigger_can_verify_reply_after_restart (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_legacy_manual_task_with_exact_trigger_can_verify_reply_after_restart) ... ok test_manual_customer_task_finishes_then_future_safe_message_resumes_auto (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_manual_customer_task_finishes_then_future_safe_message_resumes_auto) ... ok test_manual_media_registers_once_without_an_approvable_draft (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_manual_media_registers_once_without_an_approvable_draft) ... ok test_new_risk_after_manual_completion_creates_new_review_episode (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_new_risk_after_manual_completion_creates_new_review_episode) ... ok test_new_unknown_send_registers_manual_notification_then_only_human_finishes (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_new_unknown_send_registers_manual_notification_then_only_human_finishes) ... ok test_other_account_or_bot_outbound_does_not_finish_manual_task (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_other_account_or_bot_outbound_does_not_finish_manual_task) ... ok test_restart_preserves_manual_episode_and_completes_verified_reply (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_restart_preserves_manual_episode_and_completes_verified_reply) ... ok test_terminal_completion_queue_save_failure_restores_evidence_before_retry (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_terminal_completion_queue_save_failure_restores_evidence_before_retry) ... ok test_terminal_unknown_is_completed_by_new_human_reply_without_replaying_or_altering_journal (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_terminal_unknown_is_completed_by_new_human_reply_without_replaying_or_altering_journal) ... ok test_unconfirmed_ai_draft_echo_cannot_be_used_as_manual_completion (test_protocol_manual_assistant.ProtocolManualAssistantTests.test_unconfirmed_ai_draft_echo_cannot_be_used_as_manual_completion) ... 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 test_cancelled_context_history_only_keeps_unanswered (test_protocol_audit_boundaries.ProtocolAuditBoundaries.test_cancelled_context_history_only_keeps_unanswered) ... ok test_context_enabled_retains_both_roles_and_unanswered_batch (test_protocol_audit_boundaries.ProtocolAuditBoundaries.test_context_enabled_retains_both_roles_and_unanswered_batch) ... ok test_exactly_100_unanswered_messages_preserve_every_part (test_protocol_audit_boundaries.ProtocolAuditBoundaries.test_exactly_100_unanswered_messages_preserve_every_part) ... ok test_existing_approved_draft_with_media_is_not_sent (test_protocol_audit_boundaries.ProtocolAuditBoundaries.test_existing_approved_draft_with_media_is_not_sent) ... ok test_image_then_related_text_stays_manual (test_protocol_audit_boundaries.ProtocolAuditBoundaries.test_image_then_related_text_stays_manual) ... ok test_old_media_before_own_reply_does_not_block_new_text (test_protocol_audit_boundaries.ProtocolAuditBoundaries.test_old_media_before_own_reply_does_not_block_new_text) ... ok test_overflowing_unanswered_batch_cannot_answer_from_truncated_tail (test_protocol_audit_boundaries.ProtocolAuditBoundaries.test_overflowing_unanswered_batch_cannot_answer_from_truncated_tail) ... ok test_own_reply_within_long_history_makes_current_batch_complete (test_protocol_audit_boundaries.ProtocolAuditBoundaries.test_own_reply_within_long_history_makes_current_batch_complete) ... ok test_restart_preserves_uncertain_conversation_and_processes_others (test_protocol_audit_boundaries.ProtocolAuditBoundaries.test_restart_preserves_uncertain_conversation_and_processes_others) ... ok test_unanswered_batch_not_lost_with_short_context_limit (test_protocol_audit_boundaries.ProtocolAuditBoundaries.test_unanswered_batch_not_lost_with_short_context_limit) ... ok test_uncertain_receipt_for_other_account_does_not_pause_current (test_protocol_audit_boundaries.ProtocolAuditBoundaries.test_uncertain_receipt_for_other_account_does_not_pause_current) ... ok ---------------------------------------------------------------------- Ran 194 tests in 9.165s OK