tests/gateway/test_run_progress_topics.py::test_run_agent_progress_stays_in_originating_topic tests/gateway/test_run_progress_topics.py::test_run_agent_progress_edits_keep_originating_topic_metadata tests/gateway/test_run_progress_topics.py::test_run_agent_progress_does_not_use_event_message_id_for_telegram_dm tests/gateway/test_run_progress_topics.py::test_run_agent_progress_uses_event_message_id_for_slack_dm tests/gateway/test_run_progress_topics.py::test_run_agent_feishu_progress_replies_inside_existing_thread tests/gateway/test_run_progress_topics.py::test_all_mode_default_truncation_40_chars tests/gateway/test_run_progress_topics.py::test_all_mode_respects_custom_preview_length tests/gateway/test_run_progress_topics.py::test_all_mode_no_truncation_when_preview_fits tests/gateway/test_run_progress_topics.py::test_run_agent_rolls_progress_bubble_before_platform_limit tests/gateway/test_run_progress_topics.py::test_run_agent_surfaces_real_interim_commentary tests/gateway/test_run_progress_topics.py::test_run_agent_surfaces_interim_commentary_by_default tests/gateway/test_run_progress_topics.py::test_run_agent_suppresses_interim_commentary_when_disabled tests/gateway/test_run_progress_topics.py::test_run_agent_tool_progress_does_not_control_interim_commentary tests/gateway/test_run_progress_topics.py::test_run_agent_streaming_does_not_enable_completed_interim_commentary tests/gateway/test_run_progress_topics.py::test_display_streaming_does_not_enable_gateway_streaming tests/gateway/test_run_progress_topics.py::test_run_agent_interim_commentary_works_with_tool_progress_off tests/gateway/test_run_progress_topics.py::test_run_agent_bluebubbles_uses_commentary_send_path_for_quick_replies tests/gateway/test_run_progress_topics.py::test_run_agent_previewed_final_marks_already_sent tests/gateway/test_run_progress_topics.py::test_run_agent_matrix_streaming_omits_cursor tests/gateway/test_run_progress_topics.py::test_transformed_response_edits_streamed_message_in_place tests/gateway/test_run_progress_topics.py::test_run_agent_queued_message_does_not_treat_commentary_as_final tests/gateway/test_run_progress_topics.py::test_run_agent_defers_background_review_notification_until_release tests/gateway/test_run_progress_topics.py::test_base_processing_releases_post_delivery_callback_after_main_send tests/gateway/test_run_progress_topics.py::test_base_processing_stops_typing_before_hung_post_delivery_callback tests/gateway/test_run_progress_topics.py::test_run_agent_drops_tool_progress_after_generation_invalidation tests/gateway/test_run_progress_topics.py::test_run_agent_drops_interim_commentary_after_generation_invalidation tests/gateway/test_run_progress_topics.py::test_keep_typing_stops_immediately_when_interrupt_event_is_set tests/gateway/test_run_progress_topics.py::test_verbose_mode_does_not_truncate_args_by_default tests/gateway/test_run_progress_topics.py::test_verbose_mode_respects_explicit_tool_preview_length tests/gateway/test_run_progress_topics.py::test_terminal_progress_renders_fenced_code_block tests/gateway/test_run_progress_topics.py::test_terminal_progress_verbose_shows_full_command tests/gateway/test_run_progress_topics.py::test_terminal_progress_no_bash_block_in_verbose_mode tests/gateway/test_run_progress_topics.py::test_consecutive_terminal_progress_collapses_headers