[INFO] fetching crate ryu-gw-channels 0.1.14...
[INFO] testing ryu-gw-channels-0.1.14 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate ryu-gw-channels 0.1.14 into /workspace/builds/worker-5-tc1/source
[INFO] started tweaking crates.io crate ryu-gw-channels 0.1.14
[INFO] finished tweaking crates.io crate ryu-gw-channels 0.1.14
[INFO] tweaked toml for crates.io crate ryu-gw-channels 0.1.14 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate ryu-gw-channels 0.1.14 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate ryu-gw-channels 0.1.14 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded axum-macros v0.4.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756
[INFO] running `Command { std: "docker" "start" "0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling mio v1.2.2
[INFO] [stderr]    Compiling rustls-pki-types v1.15.0
[INFO] [stderr]    Compiling zerocopy v0.8.54
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling cc v1.2.67
[INFO] [stderr]    Compiling openssl v0.10.81
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling rustls v0.23.42
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling webpki-roots v1.0.8
[INFO] [stderr]    Compiling data-encoding v2.11.0
[INFO] [stderr]    Compiling utf-8 v0.7.6
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling matchit v0.7.3
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling http-body v1.1.0
[INFO] [stderr]    Compiling http-body-util v0.1.4
[INFO] [stderr]    Compiling openssl-sys v0.9.117
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling sha1 v0.10.7
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling rand v0.8.7
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling axum-macros v0.4.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tungstenite v0.24.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling h2 v0.4.15
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling ryu-gw-channels v0.1.14 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 03s
[INFO] running `Command { std: "docker" "inspect" "0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling ryu-gw-channels v0.1.14 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 10.66s
[INFO] running `Command { std: "docker" "inspect" "0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.20s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ryu_gw_channels-2b061e0ae2b75ac0)
[INFO] [stdout] 
[INFO] [stdout] running 173 tests
[INFO] [stdout] test bluebubbles::tests::local_command_reply_lists_only_help_and_commands ... ok
[INFO] [stdout] test bluebubbles::tests::envelope_errors_are_surfaced ... ok
[INFO] [stdout] test bluebubbles::tests::send_text_payload_picks_the_send_method ... ok
[INFO] [stdout] test bluebubbles::tests::parse_inbound_drops_a_message_with_no_content ... ok
[INFO] [stdout] test bluebubbles::tests::parse_inbound_ignores_other_event_types_without_panicking ... ok
[INFO] [stdout] test bluebubbles::tests::routable_binds_are_flagged_and_lan_binds_are_not ... ok
[INFO] [stdout] test bluebubbles::tests::webhook_path_is_normalised_for_routing ... ok
[INFO] [stdout] test bluebubbles::tests::temp_guid_is_deterministic_shaped_and_clock_sensitive ... ok
[INFO] [stdout] test bluebubbles::tests::parse_inbound_skips_our_own_messages ... ok
[INFO] [stdout] test commands::tests::normalize_description_flattens_and_clips ... ok
[INFO] [stdout] test bluebubbles::tests::tapbacks_cover_the_six_and_refuse_the_rest ... ok
[INFO] [stdout] test bluebubbles::tests::token_check_rejects_everything_but_the_exact_token ... ok
[INFO] [stdout] test bluebubbles::tests::webhook_secret_is_stable_and_scoped ... ok
[INFO] [stdout] test commands::tests::normalize_dedupes_and_caps ... ok
[INFO] [stdout] test bluebubbles::tests::group_reply_mode_approximates_mentions ... ok
[INFO] [stdout] test commands::tests::parse_command_handles_args_and_bot_suffix ... ok
[INFO] [stdout] test bluebubbles::tests::parse_inbound_reads_a_direct_message ... ok
[INFO] [stdout] test bluebubbles::tests::parse_inbound_reads_attachments_and_strips_the_placeholder_glyph ... ok
[INFO] [stdout] test commands::tests::normalize_maps_separators_and_rejects_illegal_names ... ok
[INFO] [stdout] test discord::tests::ignores_bot_authored_messages ... ok
[INFO] [stdout] test discord::tests::media_only_message_is_routed_with_empty_text ... ok
[INFO] [stdout] test discord::tests::long_replies_split_on_line_boundaries ... ok
[INFO] [stdout] test discord::tests::all_mode_replies_to_every_message ... ok
[INFO] [stdout] test discord::tests::emoji_encoding_keeps_the_custom_emoji_separator ... ok
[INFO] [stdout] test bluebubbles::tests::parse_inbound_detects_group_style ... ok
[INFO] [stdout] test discord::tests::conversation_key_resolves_to_the_thread ... ok
[INFO] [stdout] test discord::tests::empty_bot_id_disables_mention_detection ... ok
[INFO] [stdout] test discord::tests::mentions_mode_detects_nickname_mention_form ... ok
[INFO] [stdout] test discord::tests::mentions_mode_replies_when_mentioned_and_strips_mention ... ok
[INFO] [stdout] test discord::tests::parses_attachments_into_kernel_shape ... ok
[INFO] [stdout] test discord::tests::voice_payload_maps_the_file_part_to_an_attachment ... ok
[INFO] [stdout] test commands::tests::normalize_strips_slash_and_lowercases ... ok
[INFO] [stdout] test discord::tests::parses_messages_response ... ok
[INFO] [stdout] test discord::tests::mentions_mode_ignores_unaddressed_message ... ok
[INFO] [stdout] test media::tests::kind_falls_back_to_mime ... ok
[INFO] [stdout] test media::tests::safe_filename_strips_path_traversal ... ok
[INFO] [stdout] test discord::tests::thread_names_are_sanitised_and_clipped ... ok
[INFO] [stdout] test media::tests::annotate_notes_non_speech_media_only ... ok
[INFO] [stdout] test media::tests::speech_kinds_are_transcribed ... ok
[INFO] [stdout] test media::tests::voice_reply_mode_mirrors_the_user ... ok
[INFO] [stdout] test media::tests::wav_delivery_reflects_platform_limits ... ok
[INFO] [stdout] test pairing::tests::generated_code_uses_unambiguous_alphabet ... ok
[INFO] [stdout] test pairing::tests::group_policies_gate_as_documented ... ok
[INFO] [stdout] test pairing::tests::unknown_sender_is_challenged_then_paired ... ok
[INFO] [stdout] test slack::tests::a_message_the_bot_wrote_is_never_answered ... ok
[INFO] [stdout] test pairing::tests::store_round_trips_through_a_file ... ok
[INFO] [stdout] test pairing::tests::approve_code_rejects_unknown_and_expired_codes ... ok
[INFO] [stdout] test slack::tests::all_mode_answers_every_channel_message ... ok
[INFO] [stdout] test pairing::tests::blocked_sender_never_gets_a_new_code ... ok
[INFO] [stdout] test pairing::tests::dm_policies_gate_as_documented ... ok
[INFO] [stdout] test slack::tests::backoff_grows_exponentially_and_is_capped ... ok
[INFO] [stdout] test slack::tests::dms_always_answer_regardless_of_mode ... ok
[INFO] [stdout] test slack::tests::mention_only_message_is_dropped ... ok
[INFO] [stdout] test slack::tests::backoff_is_never_shorter_than_the_base_and_jitter_stays_bounded ... ok
[INFO] [stdout] test slack::tests::chat_id_round_trips_channel_and_thread ... ok
[INFO] [stdout] test slack::tests::conversation_key_packs_channel_and_thread ... ok
[INFO] [stdout] test slack::tests::mentions_mode_ignores_a_mention_of_another_user ... ok
[INFO] [stdout] test slack::tests::mentions_mode_answers_when_mentioned_and_strips_the_mention ... ok
[INFO] [stdout] test slack::tests::mention_with_media_and_no_text_is_routed ... ok
[INFO] [stdout] test slack::tests::mentions_mode_continues_an_active_thread_without_a_mention ... ok
[INFO] [stdout] test slack::tests::mentions_mode_ignores_unaddressed_channel_message ... ok
[INFO] [stdout] test slack::tests::mrkdwn_converts_bold_without_re_reading_its_own_output ... ok
[INFO] [stdout] test slack::tests::mrkdwn_leaves_a_channel_reference_alone ... ok
[INFO] [stdout] test slack::tests::mrkdwn_passes_code_through_untouched ... ok
[INFO] [stdout] test slack::tests::mrkdwn_leaves_unmatched_emphasis_alone ... ok
[INFO] [stdout] test slack::tests::mrkdwn_maps_block_constructs_slack_lacks ... ok
[INFO] [stdout] test slack::tests::mrkdwn_preserves_line_structure ... ok
[INFO] [stdout] test slack::tests::mrkdwn_rewrites_links_and_escapes_around_them ... ok
[INFO] [stdout] test slack::tests::mrkdwn_survives_pathological_emphasis ... ok
[INFO] [stdout] test slack::tests::new_rejects_empty_app_token ... ok
[INFO] [stdout] test slack::tests::parse_envelope_id_reads_field ... ok
[INFO] [stdout] test slack::tests::parse_inbound_accepts_a_caption_less_file_share ... ok
[INFO] [stdout] test slack::tests::new_rejects_empty_bot_token ... ok
[INFO] [stdout] test slack::tests::new_stores_agent_id_and_core_url ... ok
[INFO] [stdout] test slack::tests::parse_inbound_different_threads_get_different_chat_ids ... ok
[INFO] [stdout] test discord::tests::new_rejects_empty_token ... ok
[INFO] [stdout] test slack::tests::parse_inbound_chat_id_stable_per_thread ... ok
[INFO] [stdout] test slack::tests::parse_inbound_drops_an_empty_message_with_no_media ... ok
[INFO] [stdout] test slack::tests::parse_inbound_extracts_message ... ok
[INFO] [stdout] test slack::tests::parse_inbound_flags_a_dm_via_channel_type ... ok
[INFO] [stdout] test slack::tests::parse_inbound_ignores_bot_messages ... ok
[INFO] [stdout] test slack::tests::parse_inbound_marks_a_voice_memo_as_speech ... ok
[INFO] [stdout] test slack::tests::parse_inbound_treats_an_unlabelled_channel_as_a_group ... ok
[INFO] [stdout] test slack::tests::parse_inbound_prefers_existing_thread ... ok
[INFO] [stdout] test slack::tests::reconnect_budget_is_bounded ... ok
[INFO] [stdout] test slack::tests::split_chat_id_without_thread ... ok
[INFO] [stdout] test slack::tests::caps_declare_what_slack_can_do ... ok
[INFO] [stdout] test slack::tests::thread_anchor_prefers_the_parent ... ok
[INFO] [stdout] test slack::tests::unknown_bot_id_fails_open_in_mentions_mode ... ok
[INFO] [stdout] test telegram::tests::a_media_only_group_message_is_still_a_turn ... ok
[INFO] [stdout] test telegram::tests::a_plain_transport_error_is_not_token_rejected ... ok
[INFO] [stdout] test telegram::tests::a_rejected_call_is_visible_despite_http_200 ... ok
[INFO] [stdout] test slack::tests::strip_mentions_collapses_whitespace_and_keeps_stray_text ... ok
[INFO] [stdout] test telegram::tests::an_audio_document_is_still_transcribed ... ok
[INFO] [stdout] test telegram::tests::an_unrecognised_thread_tag_degrades_to_the_room ... ok
[INFO] [stdout] test telegram::tests::attachment_parsing_reads_every_media_field ... ok
[INFO] [stdout] test bluebubbles::tests::api_and_attachment_urls_are_built_safely ... ok
[INFO] [stdout] test telegram::tests::a_threadless_chat_round_trips_unchanged ... ok
[INFO] [stdout] test telegram::tests::commands_payload_is_a_bot_command_array ... ok
[INFO] [stdout] test telegram::tests::empty_identity_disables_mention_detection_but_allows_commands ... ok
[INFO] [stdout] test telegram::tests::direct_messages_topic_maps_to_its_own_parameter ... ok
[INFO] [stdout] test slack::tests::parse_inbound_ignores_subtype_messages ... ok
[INFO] [stdout] test telegram::tests::draft_payload_uses_the_plain_placeholder_when_empty ... ok
[INFO] [stdout] test slack::tests::parse_inbound_ignores_non_events_frames ... ok
[INFO] [stdout] test telegram::tests::get_updates_response_without_an_error_code_still_parses ... ok
[INFO] [stdout] test telegram::tests::getme_exposes_the_bot_level_feature_flags ... ok
[INFO] [stdout] test telegram::tests::group_all_mode_replies_to_every_message ... ok
[INFO] [stdout] test telegram::tests::envelope_error_code_401_is_unauthorized ... ok
[INFO] [stdout] test telegram::tests::group_command_detection_accepts_the_bot_suffixed_form ... ok
[INFO] [stdout] test telegram::tests::get_updates_response_reads_the_error_code ... ok
[INFO] [stdout] test telegram::tests::group_mentions_mode_ignores_unaddressed_message ... ok
[INFO] [stdout] test discord::tests::builds_auth_header_and_metadata ... ok
[INFO] [stdout] test discord::tests::caps_declare_only_what_the_poll_transport_can_do ... ok
[INFO] [stdout] test telegram::tests::group_mentions_mode_replies_when_mentioned_and_strips_mention ... ok
[INFO] [stdout] test telegram::tests::guest_reply_payload_is_an_inline_article ... ok
[INFO] [stdout] test telegram::tests::message_payload_carries_the_topic ... ok
[INFO] [stdout] test telegram::tests::group_mentions_mode_replies_to_a_reply_to_the_bot ... ok
[INFO] [stdout] test telegram::tests::guest_turns_are_keyed_on_the_query_id_not_the_chat ... ok
[INFO] [stdout] test telegram::tests::other_failures_are_not_unauthorized ... ok
[INFO] [stdout] test telegram::tests::group_mentions_mode_replies_to_command ... ok
[INFO] [stdout] test telegram::tests::private_chat_always_replies_with_raw_text ... ok
[INFO] [stdout] test telegram::tests::thread_is_packed_off_a_message_and_unpacked_for_the_api ... ok
[INFO] [stdout] test telegram::tests::rich_payload_sends_markdown_and_nothing_else ... ok
[INFO] [stdout] test telegram::tests::token_rejected_survives_a_context_wrap ... ok
[INFO] [stdout] test telegram::tests::token_rejected_never_names_the_token ... ok
[INFO] [stdout] test telegram::tests::http_401_is_unauthorized ... ok
[INFO] [stdout] test slack::tests::new_accepts_valid_tokens ... ok
[INFO] [stdout] test telegram::tests::parses_getupdates_response ... ok
[INFO] [stdout] test tests::bot_profile_clips_to_platform_limits ... ok
[INFO] [stdout] test tests::allow_all_only_accepts_explicit_enable_tokens ... ok
[INFO] [stdout] test tests::build_request_body_includes_user_message ... ok
[INFO] [stdout] test tests::channel_allowlist_reads_env ... ok
[INFO] [stdout] test tests::env_policy_maps_the_three_legacy_states ... ok
[INFO] [stdout] test tests::extract_reply_none_when_missing ... ok
[INFO] [stdout] test tests::extract_reply_reads_first_choice ... ok
[INFO] [stdout] test tests::inbound_identity_prefers_the_sender_id ... ok
[INFO] [stdout] test tests::build_request_body_prepends_system_prompt ... ok
[INFO] [stdout] test tests::unpack_thread_splits_on_the_last_separator ... ok
[INFO] [stdout] test tests::thread_packing_round_trips ... ok
[INFO] [stdout] test discord::tests::watched_channels_are_admitted_by_the_group_gate ... ok
[INFO] [stdout] test whatsapp::tests::contact_name_matches_on_wa_id_only ... ok
[INFO] [stdout] test whatsapp::tests::format_command_help_lists_every_command ... ok
[INFO] [stdout] test whatsapp::tests::format_command_help_says_so_when_there_are_none ... ok
[INFO] [stdout] test whatsapp::tests::help_is_recognised_only_as_a_command ... ok
[INFO] [stdout] test telegram::tests::new_stores_the_core_route ... ok
[INFO] [stdout] test discord::tests::new_stores_agent_id_and_core_url ... ok
[INFO] [stdout] test bluebubbles::tests::caps_track_the_private_api_helper ... ok
[INFO] [stdout] test bluebubbles::tests::webhook_url_hint_is_pasteable ... ok
[INFO] [stdout] test whatsapp::tests::parse_inbound_drops_messages_with_nothing_to_route ... ok
[INFO] [stdout] test whatsapp::tests::parse_inbound_ignores_status_callbacks ... ok
[INFO] [stdout] test whatsapp::tests::parse_inbound_keeps_a_document_filename ... ok
[INFO] [stdout] test discord::tests::new_rejects_missing_channels ... ok
[INFO] [stdout] test whatsapp::tests::parse_inbound_reads_a_voice_note ... ok
[INFO] [stdout] test bluebubbles::tests::new_rejects_missing_transport_secrets ... ok
[INFO] [stdout] test whatsapp::tests::parse_inbound_reads_text_message ... ok
[INFO] [stdout] test whatsapp::tests::parse_inbound_turns_an_image_into_an_attachment ... ok
[INFO] [stdout] test whatsapp::tests::verifies_valid_signature_and_rejects_tampering ... ok
[INFO] [stdout] test whatsapp::tests::builds_graph_urls ... ok
[INFO] [stdout] test whatsapp::tests::text_and_reaction_payloads_target_the_right_ids ... ok
[INFO] [stdout] test whatsapp::tests::read_status_payload_adds_typing_only_when_asked ... ok
[INFO] [stdout] test whatsapp::tests::verify_webhook_rejects_bad_verify_token ... ok
[INFO] [stdout] test whatsapp::tests::caps_match_what_the_cloud_api_can_do ... ok
[INFO] [stdout] test whatsapp::tests::latest_inbound_is_remembered_per_chat_and_bounded ... ok
[INFO] [stdout] test telegram::tests::new_builds_api_and_file_bases_from_token ... ok
[INFO] [stdout] test whatsapp::tests::new_rejects_empty_access_token ... ok
[INFO] [stdout] test telegram::tests::caps_declare_the_full_telegram_surface ... ok
[INFO] [stdout] test tests::already_admitted_uses_the_group_rules_for_group_messages ... ok
[INFO] [stdout] test tests::already_admitted_does_not_mint_a_code ... ok
[INFO] [stdout] test whatsapp::tests::new_rejects_empty_app_secret ... ok
[INFO] [stdout] test telegram::tests::new_rejects_empty_token ... ok
[INFO] [stdout] test bluebubbles::tests::new_rejects_a_webhook_path_that_would_panic_the_router ... ok
[INFO] [stdout] test whatsapp::tests::new_reads_the_common_config ... ok
[INFO] [stdout] test tests::already_admitted_matches_the_policy_for_each_dm_mode ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 173 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests ryu_gw_channels
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756", kill_on_drop: false }`
[INFO] [stdout] 0372995cf540753fb9a3d2cf6cb5c7a6adfbd089bad4a9eb183296959b58a756
