<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="336" time="21.292" timestamp="2026-08-10T00:24:46.746222+00:00" hostname="cube-B850M-AORUS-ELITE-WIFI6E-ICE"><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_prepare_persists_only_sid_hash_and_private_digest_verified_ledger" time="0.011" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_store_rejects_symlink_state_components" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_unbound_expiry_and_single_live_customer_or_chat" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_lifecycle_generation_cas_topics_roles_and_exact_gates" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_callbacks_and_startgroup_links_are_strict_and_bounded" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_store_resolves_only_exact_callback_digest" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_customer_draft_validation" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_transport_bind_replay_stale_generation_and_constant_time_sid_lookup" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_transport_releases_terminal_pin_and_binds_a_second_session" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_transport_restart_reconcile_returns_only_missing_topics" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_claim_cards_survive_restart_and_gate_topic_message_generation_and_identity" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_cli_prepare_status_cancel_never_calls_telegram" time="0.254" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_cli_bad_input_is_actionable_without_traceback" time="0.088" /><testcase classname="tests.gateway.test_telegram_room_bootstrap" name="test_cli_profile_root_uses_gateway_bootstrap_ledger_path" time="0.092" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_registration" name="test_private_role_projection_registers_disabled_exact_dm_routes" time="0.012" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_registration" name="test_private_role_claims_bind_dm_authority_and_real_consent_transition" time="0.025" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_registration" name="test_customer_dm_delivery_omits_forum_topic_id" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_registration" name="test_private_role_projection_reconciles_after_registration_restart" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_registration" name="test_owner_approval_registers_once_disabled_and_exposes_exact_consent_route" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_registration" name="test_crash_after_register_reconciles_without_second_registration" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_registration" name="test_exact_owner_route_message_and_generation_are_required" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_registration" name="test_registering_existing_key_route_mismatch_is_conflict" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_registration" name="test_canonical_owner_change_is_rejected_under_profile_authority_lock" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_prepare_emits_distinct_customer_and_trainer_dm_links" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_unregistered_session_cannot_prepare_role_links" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_wrong_user_claim_is_rejected_without_mutation" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_malformed_role_link_is_rejected_without_mutation[]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_malformed_role_link_is_rejected_without_mutation[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_expired_role_link_is_rejected_without_claim" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_replayed_role_link_is_terminal" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_concurrent_role_link_claim_has_one_winner" time="0.009" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_revoked_role_link_is_terminal" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_customer_starts_onboarding_from_private_role_link" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_trainer_review_route_binds_private_role_link" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_canonical_projection_joins_private_roles_by_customer_key" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_role_invite_projection_rejects_partial_or_cross_customer_claims" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_invite" name="test_prepare_role_links_cli_prints_private_role_links" time="0.182" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_malformed_sid_never_resolves_or_binds[empty]" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_malformed_sid_never_resolves_or_binds[short]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_malformed_sid_never_resolves_or_binds[long]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_malformed_sid_never_resolves_or_binds[space]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_malformed_sid_never_resolves_or_binds[path]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_malformed_sid_never_resolves_or_binds[unicode]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_expired_sid_is_a_clean_rejection_not_an_uncaught_cas_error" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_bound_sid_exact_replay_is_idempotent_but_cross_route_replay_is_rejected" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_ledger_components_reject_symlinks[ledger.json]" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_ledger_components_reject_symlinks[ledger.lock]" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_ledger_rejects_group_readable_mode" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_ledger_rejects_hardlinked_component" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_onboarding_callback_hash_resolves_bootstrap_session" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_ledger_tamper_matrix_fails_closed[digest]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_ledger_tamper_matrix_fails_closed[truncated]" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_ledger_tamper_matrix_fails_closed[unknown-envelope]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_ledger_tamper_matrix_fails_closed[unknown-session]" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_ledger_tamper_matrix_fails_closed[draft-digest]" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_duplicate_role_records_in_validly_redigested_ledger_are_rejected" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_two_sessions_cannot_share_live_customer_or_chat" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_restart_preserves_every_nonterminal_phase[PREPARED]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_restart_preserves_every_nonterminal_phase[WAITING_ADMIN]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_restart_preserves_every_nonterminal_phase[PROVISIONING]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_restart_preserves_every_nonterminal_phase[CLAIMING]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_restart_preserves_every_nonterminal_phase[ROLE_REVIEW]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_restart_preserves_every_nonterminal_phase[REGISTERING]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_restart_preserves_every_nonterminal_phase[AWAITING_CONSENT]" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_restart_preserves_every_nonterminal_phase[AWAITING_ACTIVATION]" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_generation_race_has_exactly_one_winner_without_timing_luck[topic]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_generation_race_has_exactly_one_winner_without_timing_luck[role]" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_callback_rejects_owner_departed_anonymous_and_bot[owner]" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_callback_rejects_owner_departed_anonymous_and_bot[departed]" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_callback_rejects_owner_departed_anonymous_and_bot[anonymous]" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_callback_rejects_owner_departed_anonymous_and_bot[bot]" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_callback_is_bound_to_exact_chat_topic_and_message[copied-to-other-chat]" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_callback_is_bound_to_exact_chat_topic_and_message[forwarded-to-other-topic]" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_callback_is_bound_to_exact_chat_topic_and_message[copied-message-id]" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_duplicate_role_and_same_user_role_collision_fail_closed" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_stale_callback_after_role_claim_and_session_reset_is_rejected" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_first_topic_success_second_known_failure_restarts_only_missing_topic" time="0.033" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_unknown_topic_creation_outcome_is_not_blindly_retried" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_claim_card_unknown_outcome_blocks_restart_until_exact_acknowledgement" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_owner_card_receipt_persistence_failure_is_restart_safe" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_bot_without_live_admin_manage_topics_never_provisions[member-False-administrator-True]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_bot_without_live_admin_manage_topics_never_provisions[administrator-False-administrator-True]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_bot_without_live_admin_manage_topics_never_provisions[administrator-True-member-False]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_bot_without_live_admin_manage_topics_never_provisions[administrator-True-administrator-False]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_partial_claim_card_delivery_resumes_only_missing_card" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_set_topic_is_rejected_after_provisioning" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_consent_publication_restart_invalidates_unreceipted_attempt" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_nonbootstrap_callback_in_bootstrap_room_is_reserved_before_other_routing" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_role_claim_requires_positive_live_membership_proof" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_bootstrap_room_ingress_is_reserved_before_generic_agent" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_bootstrap_room_command_is_reserved_before_generic_agent" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_bootstrap_room_nontext_ingress_is_reserved_before_generic_agent[location]" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_bootstrap_room_nontext_ingress_is_reserved_before_generic_agent[photo]" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_passive_bootstrap_updates_are_reserved_before_adaptive_routing[_handle_contact_message]" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_passive_bootstrap_updates_are_reserved_before_adaptive_routing[_handle_edited_message]" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_passive_bootstrap_updates_are_reserved_before_adaptive_routing[_handle_channel_post]" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_passive_bootstrap_updates_are_reserved_before_adaptive_routing[_handle_edited_channel_post]" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_every_callback_action_stays_within_telegram_64_byte_limit" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_adversarial" name="test_cli_rejects_malformed_input_and_symlink_path_escape" time="0.170" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_room_bootstrap_link_uses_bot_username_and_startgroup_payload" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_bootstrap_topic_names_match_customer_checkin_and_trainer_recording" time="0.005" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_my_chat_member_handler_is_registered_before_text_ingress" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_exact_owner_start_binds_forum_supergroup" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_owner_start_releases_terminal_transport_pin_before_validation" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_startgroup_requires_configured_owner_to_be_group_creator" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_room_start_rejects_inexact_context_without_binding[message0-non-owner]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_room_start_rejects_inexact_context_without_binding[message1-basic group]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_room_start_rejects_inexact_context_without_binding[message2-anonymous sender]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_room_start_rejects_inexact_context_without_binding[message3-wrong chat]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_room_start_rejects_inexact_context_without_binding[message4-non-exact payload]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_admin_topic_reconciliation_creates_customer_then_trainer_once" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_membership_without_manage_topics_never_reconciles_or_creates" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_role_callback_requires_exact_topic_message_and_member" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_role_callback_rejects_inexact_authority[owner-cannot-take-role]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_role_callback_rejects_inexact_authority[wrong-topic]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_role_callback_rejects_inexact_authority[wrong-message]" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_role_callback_rejects_inexact_authority[wrong-member]" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_duplicate_role_is_rejected_without_editing_bootstrap_card" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_bootstrap_callbacks_route_before_generic_callback_branches" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_new_room_start_is_consumed_before_generic_command_ingress" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_real_store_installs_topics_and_claims_both_roles" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_role_review_prompt_recovers_after_restart" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_startup_recovery_reissues_only_the_missing_role_review_card" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_startup_recovery_routes_every_durable_waiting_state" time="0.004" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_owner_confirmation_sends_disabled_customer_consent_card" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_membership_reconciles_reserved_registration_without_duplicate" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_consent_card_unknown_send_requires_exact_receipt_reconciliation" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_changed_live_registration_authority_registers_and_sends_zero[owner-no-longer-creator-canonical_owner0-statuses0]" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_changed_live_registration_authority_registers_and_sends_zero[customer-departed-canonical_owner1-statuses1]" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_changed_live_registration_authority_registers_and_sends_zero[trainer-departed-canonical_owner2-statuses2]" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_changed_live_registration_authority_registers_and_sends_zero[canonical-owner-changed-canonical_owner3-statuses3]" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_unknown_live_registration_authority_fails_closed[outcome0]" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_unknown_live_registration_authority_fails_closed[outcome1]" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_granted_consent_advances_bootstrap_without_activation" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_consent_expired_ack_commits_reconciliation_and_starts_onboarding" time="0.009" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_consent_notice_edit_failure_commits_reconciliation_and_starts_onboarding" time="0.009" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_consent_response_edit_outer_cancellation_propagates" time="0.008" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_consent_ack_timeout_commits_reconciliation_and_starts_onboarding" time="0.018" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_consent_outer_cancellation_propagates_without_committing" time="0.007" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_pause_ack_timeout_still_projects_committed_controls" time="0.013" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_start_ack_timeout_still_opens_and_projects_checkin" time="0.014" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_transport" name="test_current_canonical_consent_reconciles_crash_and_retires_card" time="0.007" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_coach_v2_cloud_attempt_does_not_fall_through_to_second_provider" time="0.147" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_coach_v2_preflight_failure_does_not_read_uninitialized_attempt_state" time="0.005" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_adapter_contract_is_present" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_onboarding_authority_maps_general_owner_topic_to_zero" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_coach_v2_operator_card_shows_facts_deltas_warnings_and_controls" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_coach_v2_operator_edit_accepts_targets_and_customer_copy" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_production_service_requires_persisted_reconciliation" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_callback_is_opaque_bounded_and_round_trips" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_ready_publication_generation_follows_owner_review" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_ready_card_announces_activation_readiness_to_owner" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_consent_withdrawal_bypasses_onboarding_answer_capture" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_consent_withdrawal_text_short_circuits_handle_text_without_bootstrap_lookup" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[actor_user_id-999]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[chat_id--999]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[topic_id-999]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[message_id-999]" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[generation-8]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[action-approve]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[member_present-False]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_exact_evidence_can_mutate_and_never_falls_through" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_unknown_callback_is_consumed_without_mutation" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_provider_unknown_publication_is_not_retried" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_committed_publication_is_reused_after_restart" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_gateway_outbox_never_retries_an_unreceipted_delivery" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_legacy_unverified_ledger_is_quarantined_without_authorizing_delivery" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_forged_receipted_outbox_row_never_commits_the_profile" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_forged_emergency_receipt_never_promotes_the_primary_ledger" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_primary_receipt_failure_uses_emergency_evidence_before_commit" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_emergency_receipt_recovers_after_primary_and_commit_crashes" time="0.005" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_total_receipt_persistence_failure_marks_unknown_without_resend" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_recovery_rejects_current_store_payload_mismatch" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_receipt_recovery_requires_the_current_canonical_route" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_authority_less_provider_result_marks_publication_unknown" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_preexisting_prepared_publication_without_gateway_receipt_is_not_sent" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_gateway_outbox_recovers_provider_receipt_after_commit_crash" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_waiting_activation_republishes_the_current_durable_card" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_optional_question_force_reply_preserves_skip_affordance" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_required_question_never_offers_skip" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_summary_offers_confirm_and_revise_controls" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_stale_reconciliation_record_digest_triggers_fresh_publication" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_real_service_stale_reconciliation_publishes_fresh_summary" time="0.008" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_review_cards_offer_all_canonical_actions[trainer_review-labels0-actions0]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_review_cards_offer_all_canonical_actions[owner_review-labels1-actions1]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_review_callbacks_use_canonical_service_and_exact_role_route[tr_rev-trainer_review-review_as_trainer-revise-trainer-collecting-revision]" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_review_callbacks_use_canonical_service_and_exact_role_route[tr_hold-trainer_review-review_as_trainer-safety_hold-trainer-safety_hold-safety]" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_review_callbacks_use_canonical_service_and_exact_role_route[op_rev-owner_review-review_as_owner-revise-owner-collecting-revision]" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_review_callbacks_use_canonical_service_and_exact_role_route[op_rej-owner_review-review_as_owner-rejected-owner-rejected-rejection]" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_stale_review_callback_is_rejected_before_route_or_service_mutation" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_review_callback_rejects_wrong_user_before_service_mutation" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_handle_text_rejects_wrong_user_chat_or_topic_before_publish[999-10-0]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_handle_text_rejects_wrong_user_chat_or_topic_before_publish[10-999-0]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_handle_text_rejects_wrong_user_chat_or_topic_before_publish[10-10-1]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_optional_question_accepts_typed_skip_from_force_reply" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_rewind_invalidates_changed_question_and_all_dependents" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_continue_later_and_resume_keep_same_domain_session" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_resume_callback_reopens_paused_onboarding_card" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_non1_callback_routes_before_bootstrap_and_generic_branches" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_real_callback_replay_after_transition_republishes_once_and_receipts_once" time="0.010" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_real_text_replay_after_transition_republishes_once_and_receipts_once" time="0.007" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_direct_entry" name="test_collecting_accepts_authorized_direct_text_without_reply" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_direct_entry" name="test_stale_reply_emits_structured_rejection_reason" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_direct_entry" name="test_staff_surface_cannot_submit_customer_answer" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_direct_entry" name="test_customer_callback_checks_customer_dm_not_staff_forum" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_direct_entry" name="test_registry_routes_keep_customer_dm_separate_from_staff" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_callback_observability" name="test_owner_dm_evidence_normalizes_absent_thread_to_zero" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_callback_observability" name="test_attestation_callback_logs_and_advances" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_callback_observability" name="test_restart_callback_requires_the_signed_current_card_route" time="0.005" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_callback_observability" name="test_stale_attestation_callback_logs_rejection" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_callback_observability" name="test_text_ingress_records_ordered_stages_without_answer_text" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_callback_observability" name="test_text_ingress_rejection_has_update_keyed_reason_code" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_callback_observability" name="test_callback_authority_route_and_persistence_rejections_are_coded" time="0.005" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_callback_observability" name="test_callback_publication_failure_has_a_reason_code" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_callback_observability" name="test_expired_onboarding_ack_is_attempted_before_commit_and_publish" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_callback_observability" name="test_expired_callback_answer_still_publishes_owner_review" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_dm_normalizes_topic[absent]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_dm_normalizes_topic[null]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_dm_normalizes_topic[integer-zero]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_dm_normalizes_topic[persisted-zero]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_delivery_rejects_non_private_chat[group]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_delivery_rejects_non_private_chat[supergroup]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_delivery_rejects_non_private_chat[channel]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_delivery_rejects_nonzero_topic" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_staff_addresses_preserve_trusted_role[trainer-source0]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_staff_addresses_preserve_trusted_role[owner-source1]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_staff_addresses_preserve_trusted_role[operator-source2]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_parser_rejects_malformed_and_bool_ids[bad-user]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_parser_rejects_malformed_and_bool_ids[bad-chat]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_parser_rejects_malformed_and_bool_ids[bad-topic]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_parser_rejects_malformed_and_bool_ids[bool-user]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_parser_rejects_malformed_and_bool_ids[bool-chat]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_parser_rejects_malformed_and_bool_ids[bool-topic]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_staff_parser_rejects_bool_and_untrusted_role_metadata" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_legacy_shared_topic_error_names_required_migration" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_private_customer_dm_is_not_legacy_shared_topic" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_addresses" name="test_customer_membership_in_staff_group_blocks_readiness" time="0.003" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_generic_transition_cannot_release_activation_ingress" time="0.006" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_direct_completion_without_readiness_proof_never_reaches_active" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_direct_completion_revalidates_durable_authority_before_active" time="0.012" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_committed_activation_completes_after_restart_and_active_replay_is_idempotent" time="0.015" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_canonical_registry_mismatch_fails_closed_and_keeps_ingress_reserved[customer-key]" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_canonical_registry_mismatch_fails_closed_and_keeps_ingress_reserved[customer-user]" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_canonical_registry_mismatch_fails_closed_and_keeps_ingress_reserved[customer-chat]" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_canonical_registry_mismatch_fails_closed_and_keeps_ingress_reserved[customer-topic]" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_canonical_registry_mismatch_fails_closed_and_keeps_ingress_reserved[trainer-user]" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_canonical_registry_mismatch_fails_closed_and_keeps_ingress_reserved[trainer-chat]" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_canonical_registry_mismatch_fails_closed_and_keeps_ingress_reserved[trainer-topic]" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_canonical_registry_mismatch_fails_closed_and_keeps_ingress_reserved[disabled]" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_canonical_registry_mismatch_fails_closed_and_keeps_ingress_reserved[revoked-consent]" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_canonical_registry_mismatch_fails_closed_and_keeps_ingress_reserved[second-enabled-customer]" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_missing_or_mismatched_committed_receipt_fails_closed[missing-journal]" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_missing_or_mismatched_committed_receipt_fails_closed[mismatched-journal]" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_missing_or_mismatched_committed_receipt_fails_closed[missing-audit]" time="0.011" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_activation" name="test_stale_completion_generation_fails_closed" time="0.010" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_is_read_only_redacted_and_proves_delivery_disabled" time="0.016" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_provider_authentication_preflight_blocks_activation_without_mutation" time="0.015" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_execute_uses_canonical_cutover_then_completion_and_replay_is_idempotent" time="0.032" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_completed_replay_authentication_failure_is_strictly_non_mutating[selector]" time="0.031" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_completed_replay_authentication_failure_is_strictly_non_mutating[stale-generation]" time="0.031" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_completed_replay_with_matching_invalid_current_selectors_is_non_mutating" time="0.033" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_legacy_enabled_registry_without_canonical_authority_is_not_owned_rollback" time="0.014" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_completed_replay_with_invalid_readiness_receipt_disables_legacy_target[digest]" time="0.033" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_completed_replay_with_invalid_readiness_receipt_disables_legacy_target[provider-provenance]" time="0.034" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_completed_replay_with_invalid_readiness_receipt_disables_legacy_target[provider-payload]" time="0.033" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_completed_replay_with_invalid_readiness_receipt_disables_legacy_target[stale]" time="0.033" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_target_activated_rejects_preceding_wrong_readiness_generation" time="0.030" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_completed_replay_requires_immediately_preceding_readiness_generation" time="0.032" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_replay_recovers_after_current_disable" time="0.032" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_current_disabled_recovery_refreshes_expired_same_generation_authority" time="0.034" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_replay_without_durable_readiness_receipt_disables_activated_target" time="0.032" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_replay_recovers_after_activation_commit_without_duplicate_activation" time="0.033" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_mismatched_authority[_use_stale_generation-generation]" time="0.012" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_mismatched_authority[_use_wrong_customer-customer]" time="0.012" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_mismatched_authority[_use_wrong_current_customer-explicit disable confirmation]" time="0.011" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_mismatched_authority[_use_wrong_disable_confirmation-explicit disable confirmation]" time="0.011" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_mismatched_authority[_use_stale_kst_date-current KST]" time="0.011" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_mismatched_authority[_corrupt_customer_route-prerequisite]" time="0.013" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_unsafe_topology_is_rejected_before_activation_and_target_stays_disabled[legacy-shared-topic-LEGACY_SHARED_TOPIC]" time="0.014" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_unsafe_topology_is_rejected_before_activation_and_target_stays_disabled[customer-dm-mismatch-CUSTOMER_DM_MISMATCH]" time="0.014" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_unsafe_topology_is_rejected_before_activation_and_target_stays_disabled[customer-in-staff-CUSTOMER_IN_STAFF_GROUP]" time="0.014" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_true_delivery_or_activation_flags[delivery_enabled]" time="0.015" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_true_delivery_or_activation_flags[activation]" time="0.015" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_true_delivery_or_activation_flags[delivery]" time="0.015" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_stale_or_non_customer_specific_checklist" time="0.014" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_untrusted_canonical_registry[consent]" time="0.014" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_untrusted_canonical_registry[second-enabled]" time="0.012" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_untrusted_canonical_registry[malformed-registry]" time="0.012" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_non_awaiting_session_and_malformed_bootstrap_ledger" time="0.012" /><testcase classname="tests.gateway.test_telegram_room_bootstrap_cutover" name="test_preflight_refuses_symlinked_data_or_checklist_and_enabled_feature_epoch" time="0.018" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_non_forum_group_reply_thread_id_does_not_fork_session_key" time="0.004" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_forum_group_topic_message_preserves_thread_session_key" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_forum_general_topic_without_message_thread_id_keeps_thread_context" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_omits_general_topic_thread_id" time="0.004" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_typing_preserves_general_topic_thread_id" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_typing_does_not_fall_back_to_root_for_dm_topic" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_typing_attempts_api_call_for_dm_topic_reply_fallback" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_typing_falls_back_without_thread_on_bad_request" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_retries_without_thread_on_thread_not_found" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_retries_transient_thread_not_found_before_fallback" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_private_dm_topic_uses_direct_messages_topic_id" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_base_gateway_metadata_marks_telegram_dm_topics_as_reply_fallback" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_base_gateway_metadata_for_resumed_telegram_dm_topic_uses_direct_topic" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_base_gateway_replies_to_triggering_message_for_telegram_dm_topic" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_gateway_runner_busy_ack_replies_to_triggering_message_for_telegram_dm_topic" time="0.014" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_uses_reply_fallback_for_hermes_dm_topics" time="0.004" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_uses_reply_anchor_when_direct_topic_fallback_metadata_exists" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_created_private_topic_uses_message_thread_without_anchor" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_created_private_topic_thread_not_found_fails_without_root_fallback" time="0.004" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_uses_metadata_reply_fallback_for_streaming_dm_topics" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_reply_fallback_applies_to_every_chunk_for_dm_topics" time="0.003" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_model_picker_uses_metadata_reply_fallback_for_dm_topics" time="0.371" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_dm_topic_fallback_without_anchor_does_not_crash" time="0.007" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_dm_topic_reply_not_found_fails_closed" time="0.006" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_image_file-send_photo-image_path-photo.png-png-data]" time="0.005" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_document-send_document-file_path-report.txt-report-data]" time="0.005" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_video-send_video-video_path-clip.mp4-video-data]" time="0.005" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_voice-send_voice-audio_path-clip.ogg-ogg-data]" time="0.005" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_native_media_dm_topic_reply_not_found_retry_drops_thread_id[send_voice-send_audio-audio_path-clip.mp3-mp3-data]" time="0.005" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_animation_dm_topic_reply_not_found_retry_drops_thread_id" time="0.005" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_media_group_dm_topic_reply_not_found_retry_drops_thread_id" time="0.005" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_image_url_dm_topic_reply_not_found_retry_drops_thread_id" time="0.085" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_image_upload_dm_topic_reply_not_found_retry_drops_thread_id" time="0.006" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_slash_confirm_private_topic_callback_followup_sends_thread_and_reply" time="0.005" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_slash_confirm_forum_callback_followup_keeps_existing_thread_behavior" time="0.005" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_base_send_image_fallback_preserves_metadata" time="0.005" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_raises_on_other_bad_request" time="0.006" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_without_thread_id_unaffected" time="0.006" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_retries_network_errors_normally" time="3.009" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_does_not_retry_timeout" time="0.005" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_retries_wrapped_connect_timeout" time="3.007" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_marks_wrapped_connect_timeout_retryable_after_exhaustion" time="3.009" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_retries_pool_timeout" time="3.008" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_marks_pool_timeout_retryable_after_exhaustion" time="3.008" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_thread_fallback_only_fires_once" time="0.005" /><testcase classname="tests.gateway.test_telegram_thread_fallback" name="test_send_retries_retry_after_errors" time="2.007" /></testsuite></testsuites>