[INFO] fetching crate ironclad-channels 0.9.7... [INFO] testing ironclad-channels-0.9.7 against master#1f7f8ea0721a3b1eb73e6c6d25cccb371434b320 for pr-154065-1 [INFO] extracting crate ironclad-channels 0.9.7 into /workspace/builds/worker-0-tc1/source [INFO] started tweaking crates.io crate ironclad-channels 0.9.7 [INFO] finished tweaking crates.io crate ironclad-channels 0.9.7 [INFO] tweaked toml for crates.io crate ironclad-channels 0.9.7 written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate ironclad-channels 0.9.7 on toolchain 1f7f8ea0721a3b1eb73e6c6d25cccb371434b320 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate ironclad-channels 0.9.7 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" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded tokio-tungstenite v0.24.0 [INFO] [stderr] Downloaded wasm-bindgen v0.2.113 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.113 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.113 [INFO] [stderr] Downloaded tungstenite v0.24.0 [INFO] [stderr] Downloaded instant-distance v0.6.1 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.63 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.113 [INFO] [stderr] Downloaded imap-proto v0.16.6 [INFO] [stderr] Downloaded async-imap v0.10.4 [INFO] [stderr] Downloaded js-sys v0.3.90 [INFO] [stderr] Downloaded ironclad-core v0.9.7 [INFO] [stderr] Downloaded ironclad-db v0.9.7 [INFO] [stderr] Downloaded rusqlite v0.32.1 [INFO] [stderr] Downloaded web-sys v0.3.90 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] e62ef37f50fa08367a866243d50870b7905e8295e39827e9ffcde6bc0cc40227 [INFO] running `Command { std: "docker" "start" "-a" "e62ef37f50fa08367a866243d50870b7905e8295e39827e9ffcde6bc0cc40227", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "e62ef37f50fa08367a866243d50870b7905e8295e39827e9ffcde6bc0cc40227", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e62ef37f50fa08367a866243d50870b7905e8295e39827e9ffcde6bc0cc40227", kill_on_drop: false }` [INFO] [stdout] e62ef37f50fa08367a866243d50870b7905e8295e39827e9ffcde6bc0cc40227 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 26fa1fbd7a4a9db542f69d0b3b19029c72b68d4c62016ee3d8d33deb0dd1f29c [INFO] running `Command { std: "docker" "start" "-a" "26fa1fbd7a4a9db542f69d0b3b19029c72b68d4c62016ee3d8d33deb0dd1f29c", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling zerocopy v0.8.39 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling concurrent-queue v2.5.0 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling rustls v0.23.36 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling object v0.37.3 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling futures-lite v2.6.1 [INFO] [stderr] Compiling rayon-core v1.13.0 [INFO] [stderr] Compiling openssl-probe v0.2.1 [INFO] [stderr] Compiling getrandom v0.4.1 [INFO] [stderr] Compiling event-listener v5.4.1 [INFO] [stderr] Compiling base64ct v1.8.3 [INFO] [stderr] Compiling async-channel v1.9.0 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling ordered-float v3.9.2 [INFO] [stderr] Compiling imap-proto v0.16.6 [INFO] [stderr] Compiling stop-token v0.7.0 [INFO] [stderr] Compiling email-encoding v0.4.1 [INFO] [stderr] Compiling nom v8.0.0 [INFO] [stderr] Compiling event-listener-strategy v0.5.4 [INFO] [stderr] Compiling email_address v0.2.9 [INFO] [stderr] Compiling quoted_printable v0.5.1 [INFO] [stderr] Compiling async-lock v3.4.2 [INFO] [stderr] Compiling async-channel v2.5.0 [INFO] [stderr] Compiling self_cell v1.2.2 [INFO] [stderr] Compiling mail-parser v0.9.4 [INFO] [stderr] Compiling rayon v1.11.0 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling socket2 v0.6.2 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling num_cpus v1.17.0 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Compiling libsqlite3-sys v0.30.1 [INFO] [stderr] Compiling stacker v0.1.23 [INFO] [stderr] Compiling password-hash v0.5.0 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling universal-hash v0.5.1 [INFO] [stderr] Compiling cipher v0.4.4 [INFO] [stderr] Compiling polyval v0.6.2 [INFO] [stderr] Compiling blake2 v0.10.6 [INFO] [stderr] Compiling aes v0.8.4 [INFO] [stderr] Compiling ctr v0.9.2 [INFO] [stderr] Compiling ghash v0.5.1 [INFO] [stderr] Compiling aead v0.5.2 [INFO] [stderr] Compiling argon2 v0.5.3 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling hmac v0.12.1 [INFO] [stderr] Compiling uuid v1.21.0 [INFO] [stderr] Compiling hkdf v0.12.4 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling aes-gcm v0.10.3 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling ar_archive_writer v0.5.1 [INFO] [stderr] Compiling zeroize_derive v1.4.3 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling psm v0.1.30 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling webpki-roots v1.0.6 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling pin-project-internal v1.1.10 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Compiling webpki-roots v0.26.11 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling chumsky v0.9.3 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling pin-project v1.1.10 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling rustls-webpki v0.103.9 [INFO] [stderr] Compiling instant-distance v0.6.1 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling polling v3.11.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling async-io v2.6.0 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling x25519-dalek v2.0.1 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling async-signal v0.2.13 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling async-process v2.5.0 [INFO] [stderr] Compiling async-std v1.13.2 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling async-imap v0.10.4 [INFO] [stderr] Compiling async-native-tls v0.5.0 [INFO] [stderr] Compiling ironclad-core v0.9.7 [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 tungstenite v0.24.0 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling lettre v0.11.19 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling tokio-tungstenite v0.24.0 [INFO] [stderr] Compiling rusqlite v0.32.1 [INFO] [stderr] Compiling ironclad-db v0.9.7 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling ironclad-channels v0.9.7 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 47s [INFO] running `Command { std: "docker" "inspect" "26fa1fbd7a4a9db542f69d0b3b19029c72b68d4c62016ee3d8d33deb0dd1f29c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "26fa1fbd7a4a9db542f69d0b3b19029c72b68d4c62016ee3d8d33deb0dd1f29c", kill_on_drop: false }` [INFO] [stdout] 26fa1fbd7a4a9db542f69d0b3b19029c72b68d4c62016ee3d8d33deb0dd1f29c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 5bdaec3ecd64ddba32a659ea4d566b79956a6bdea704abfe6ed06b8148ec0ac7 [INFO] running `Command { std: "docker" "start" "-a" "5bdaec3ecd64ddba32a659ea4d566b79956a6bdea704abfe6ed06b8148ec0ac7", kill_on_drop: false }` [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling unarray v0.1.4 [INFO] [stderr] Compiling regex-syntax v0.8.9 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling rand_xorshift v0.4.0 [INFO] [stderr] Compiling polling v3.11.0 [INFO] [stderr] Compiling tempfile v3.25.0 [INFO] [stderr] Compiling rusty-fork v0.3.1 [INFO] [stderr] Compiling async-io v2.6.0 [INFO] [stderr] Compiling proptest v1.10.0 [INFO] [stderr] Compiling async-signal v0.2.13 [INFO] [stderr] Compiling async-process v2.5.0 [INFO] [stderr] Compiling async-std v1.13.2 [INFO] [stderr] Compiling async-imap v0.10.4 [INFO] [stderr] Compiling ironclad-channels v0.9.7 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 31.30s [INFO] running `Command { std: "docker" "inspect" "5bdaec3ecd64ddba32a659ea4d566b79956a6bdea704abfe6ed06b8148ec0ac7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5bdaec3ecd64ddba32a659ea4d566b79956a6bdea704abfe6ed06b8148ec0ac7", kill_on_drop: false }` [INFO] [stdout] 5bdaec3ecd64ddba32a659ea4d566b79956a6bdea704abfe6ed06b8148ec0ac7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 1c0a24e1926f6ad561842733afc9dba0b7ccdcc5df170ae2f675fc64263bca42 [INFO] running `Command { std: "docker" "start" "-a" "1c0a24e1926f6ad561842733afc9dba0b7ccdcc5df170ae2f675fc64263bca42", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.38s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ironclad_channels-3f10a50b707d3c21) [INFO] [stdout] [INFO] [stdout] running 513 tests [INFO] [stdout] test a2a::tests::aes256gcm_encrypt_decrypt_roundtrip ... ok [INFO] [stdout] test a2a::tests::encrypt_decrypt_empty_plaintext ... ok [INFO] [stdout] test a2a::tests::decrypt_ciphertext_too_short ... ok [INFO] [stdout] test a2a::tests::insert_and_get_session ... ok [INFO] [stdout] test a2a::tests::get_session_mut_updates ... ok [INFO] [stdout] test a2a::tests::generate_hello_has_timestamp ... ok [INFO] [stdout] test a2a::tests::message_size_validation ... ok [INFO] [stdout] test a2a::tests::nonce_accepted_after_manual_expiry ... ok [INFO] [stdout] test a2a::tests::nonce_replay_rejected ... ok [INFO] [stdout] test a2a::tests::rate_limit_allows_within_threshold ... ok [INFO] [stdout] test a2a::tests::nonce_eviction_bounds_memory ... ok [INFO] [stdout] test a2a::tests::key_agreement_produces_matching_session_keys ... ok [INFO] [stdout] test a2a::tests::rate_limit_per_peer_isolation ... ok [INFO] [stdout] test a2a::tests::session_is_established ... ok [INFO] [stdout] test a2a::tests::rate_limit_zero_means_unlimited ... ok [INFO] [stdout] test a2a::tests::remove_session ... ok [INFO] [stdout] test a2a::tests::remove_session_nonexistent ... ok [INFO] [stdout] test a2a::tests::session_count_empty ... ok [INFO] [stdout] test a2a::tests::timestamp_validation_fresh_and_stale ... ok [INFO] [stdout] test a2a::tests::tampered_ciphertext_fails_decryption ... ok [INFO] [stdout] test a2a::tests::rate_limit_blocks_excess ... ok [INFO] [stdout] test a2a::tests::timestamp_validation_at_boundary ... ok [INFO] [stdout] test a2a::tests::get_session_nonexistent ... ok [INFO] [stdout] test a2a::tests::verify_hello_missing_did ... ok [INFO] [stdout] test a2a::tests::verify_hello_missing_nonce ... ok [INFO] [stdout] test a2a::tests::verify_hello_wrong_type ... ok [INFO] [stdout] test delivery::tests::backoff_delay_high_attempt ... ok [INFO] [stdout] test a2a::tests::wrong_key_fails_decryption ... ok [INFO] [stdout] test delivery::tests::dead_letters_from_store_no_store ... ok [INFO] [stdout] test a2a::tests::validate_message_size_at_boundary ... ok [INFO] [stdout] test delivery::tests::backoff_delays ... ok [INFO] [stdout] test a2a::tests::verify_hello_missing_type ... ok [INFO] [stdout] test delivery::tests::delivery_item_clone_and_debug ... ok [INFO] [stdout] test delivery::tests::delivery_item_new ... ok [INFO] [stdout] test delivery::tests::dead_letter_after_max_attempts ... ok [INFO] [stdout] test delivery::tests::delivery_status_serde_roundtrip ... ok [INFO] [stdout] test delivery::tests::from_record_empty_idempotency_key_falls_back_to_id ... ok [INFO] [stdout] test delivery::tests::dead_letters_accessor ... ok [INFO] [stdout] test delivery::tests::empty_queue_returns_none ... ok [INFO] [stdout] test delivery::tests::from_store_status_mappings ... ok [INFO] [stdout] test delivery::tests::is_ready_checks_status_and_time ... ok [INFO] [stdout] test delivery::tests::mark_delivered ... ok [INFO] [stdout] test delivery::tests::mark_failed_permanent_dead_letters_immediately ... ok [INFO] [stdout] test delivery::tests::mark_failed_max_attempts_dead_letters ... ok [INFO] [stdout] test delivery::tests::mark_failed_transient_requeues ... ok [INFO] [stdout] test a2a::tests::validate_message_size_error_message ... ok [INFO] [stdout] test delivery::tests::enqueue_and_dequeue ... ok [INFO] [stdout] test delivery::tests::permanent_error_detected ... ok [INFO] [stdout] test a2a::tests::verify_hello_empty_did ... ok [INFO] [stdout] test delivery::tests::persist_item_without_store_is_noop ... ok [INFO] [stdout] test delivery::tests::mark_success_without_store ... ok [INFO] [stdout] test delivery::tests::permanent_error_dead_letters_on_first_requeue ... ok [INFO] [stdout] test a2a::tests::generate_hello_nonce_hex_encoding ... ok [INFO] [stdout] test delivery::tests::pending_count_filters_correctly ... ok [INFO] [stdout] test delivery::tests::replay_dead_letter_in_memory_nonexistent ... ok [INFO] [stdout] test delivery::tests::recover_from_store_without_store_is_noop ... ok [INFO] [stdout] test delivery::tests::replay_dead_letter_in_memory_success ... ok [INFO] [stdout] test a2a::tests::rate_limit_stale_entry_eviction ... ok [INFO] [stdout] test delivery::tests::replay_dead_letter_in_store_no_store ... ok [INFO] [stdout] test a2a::tests::insert_session_evicts_oldest_when_full ... ok [INFO] [stdout] test a2a::tests::session_not_established_without_key ... ok [INFO] [stdout] test a2a::tests::encrypt_decrypt_large_plaintext ... ok [INFO] [stdout] test delivery::tests::to_record_and_from_record_roundtrip ... ok [INFO] [stdout] test delivery::tests::transient_error_not_permanent ... ok [INFO] [stdout] test delivery::tests::to_store_status_mappings ... ok [INFO] [stdout] test delivery::tests::proptest_is_permanent_error_false_for_empty ... ok [INFO] [stdout] test a2a::tests::hello_generation_and_verification ... ok [INFO] [stdout] test delivery::tests::requeue_with_backoff ... ok [INFO] [stdout] test delivery::tests::delivery_queue_default ... ok [INFO] [stdout] test delivery::tests::proptest_backoff_delay_is_monotonic ... ok [INFO] [stdout] test discord::tests::chunk_message_empty ... ok [INFO] [stdout] test delivery::tests::proptest_backoff_delay_zero_is_zero ... ok [INFO] [stdout] test discord::tests::chunk_message_exact_boundary ... ok [INFO] [stdout] test discord::tests::chunk_message_no_whitespace_hard_split ... ok [INFO] [stdout] test discord::tests::chunk_message_prefers_newline ... ok [INFO] [stdout] test discord::tests::chunk_message_long ... ok [INFO] [stdout] test discord::tests::chunk_message_short ... ok [INFO] [stdout] test discord::tests::chunk_message_unicode_boundary ... ok [INFO] [stdout] test discord::tests::close_code_classification_exhaustive ... ok [INFO] [stdout] test delivery::tests::store_backed_next_ready_marks_in_flight ... ok [INFO] [stdout] test delivery::tests::proptest_is_permanent_error_false_for_transient ... ok [INFO] [stdout] test discord::tests::dispatch_sequence_tracking_increments ... ok [INFO] [stdout] test discord::tests::extract_heartbeat_interval_from_hello ... ok [INFO] [stdout] test discord::tests::extract_heartbeat_interval_missing ... ok [INFO] [stdout] test discord::tests::extract_heartbeat_interval_missing_d ... ok [INFO] [stdout] test discord::tests::fatal_close_codes ... ok [INFO] [stdout] test discord::tests::gateway_connection_clear_session_resets_all ... ok [INFO] [stdout] test discord::tests::gateway_connection_default ... ok [INFO] [stdout] test discord::tests::gateway_connection_heartbeat_acked_tracking ... ok [INFO] [stdout] test discord::tests::gateway_connection_heartbeat_interval_get_set ... ok [INFO] [stdout] test delivery::tests::store_backed_dead_letters_from_store ... ok [INFO] [stdout] test delivery::tests::store_backed_replay_dead_letter ... ok [INFO] [stdout] test delivery::tests::store_backed_mark_success ... ok [INFO] [stdout] test discord::tests::gateway_connection_resume_url_storage ... ok [INFO] [stdout] test discord::tests::gateway_connection_set_sequence_none ... ok [INFO] [stdout] test discord::tests::gateway_connection_state ... ok [INFO] [stdout] test discord::tests::gateway_opcode_extracts_op ... ok [INFO] [stdout] test discord::tests::gateway_opcode_missing ... ok [INFO] [stdout] test delivery::tests::store_backed_queue_recovers_items ... ok [INFO] [stdout] test discord::tests::build_identify_has_token_and_intents ... ok [INFO] [stdout] test discord::tests::build_heartbeat_null_sequence ... ok [INFO] [stdout] test discord::tests::invalid_session_non_resumable_clears_state ... ok [INFO] [stdout] test discord::tests::invalid_session_resumable_preserves_state ... ok [INFO] [stdout] test discord::tests::is_fatal_close_all_codes ... ok [INFO] [stdout] test discord::tests::is_resumable_close_all_codes ... ok [INFO] [stdout] test discord::tests::build_identify_properties ... ok [INFO] [stdout] test discord::tests::build_identify_intents_include_guild_messages ... ok [INFO] [stdout] test discord::tests::build_heartbeat_with_sequence ... ok [INFO] [stdout] test discord::tests::build_resume_payload ... ok [INFO] [stdout] test discord::tests::build_resume_includes_token ... ok [INFO] [stdout] test discord::tests::buffer_handle_returns_shared_buffer ... ok [INFO] [stdout] test discord::tests::dispatch_bot_message_filtered_in_pipeline ... ok [INFO] [stdout] test discord::tests::guild_allowed_filters_with_deny_on_empty ... ok [INFO] [stdout] test discord::tests::guild_allowed_filters ... ok [INFO] [stdout] test discord::tests::dispatch_message_create_full_pipeline ... ok [INFO] [stdout] test discord::tests::guild_allowed_empty_secure_denies_all ... ok [INFO] [stdout] test discord::tests::guild_allowed_empty_default_denies_all ... ok [INFO] [stdout] test discord::tests::dispatch_ready_extracts_session_and_resume_url ... ok [INFO] [stdout] test discord::tests::new_adapter_defaults ... ok [INFO] [stdout] test discord::tests::parse_dispatch_missing_t ... ok [INFO] [stdout] test discord::tests::identify_vs_resume_decision ... ok [INFO] [stdout] test discord::tests::parse_dispatch_extracts_event ... ok [INFO] [stdout] test discord::tests::parse_dispatch_missing_d ... ok [INFO] [stdout] test discord::tests::parse_message_create_empty_attachments_array ... ok [INFO] [stdout] test discord::tests::parse_message_create_extracts_attachments ... ok [INFO] [stdout] test discord::tests::parse_message_create_missing_author ... ok [INFO] [stdout] test discord::tests::parse_message_create_skips_bots ... ok [INFO] [stdout] test discord::tests::parse_message_create_no_attachments_no_key ... ok [INFO] [stdout] test discord::tests::parse_dispatch_without_sequence ... ok [INFO] [stdout] test discord::tests::get_gateway_url_network_error ... ok [INFO] [stdout] test discord::tests::parse_message_create_bot_false_passes ... ok [INFO] [stdout] test discord::tests::resumable_close_codes ... ok [INFO] [stdout] test discord::tests::parse_message_create_no_guild_id_passes_through ... ok [INFO] [stdout] test discord::tests::parse_message_create_missing_id_generates_uuid ... ok [INFO] [stdout] test discord::tests::parse_message_create_unknown_author_id ... ok [INFO] [stdout] test discord::tests::parse_message_create_allowed_guild ... ok [INFO] [stdout] test discord::tests::parse_message_create_missing_content_field ... ok [INFO] [stdout] test discord::tests::parse_message_create_no_bot_field ... ok [INFO] [stdout] test email::tests::buffer_handle_shared ... ok [INFO] [stdout] test email::tests::buffer_push_and_recv ... ok [INFO] [stdout] test discord::tests::parse_message_create_filters_guild ... ok [INFO] [stdout] test discord::tests::parse_message_create_metadata_has_channel_id ... ok [INFO] [stdout] test email::tests::format_reply_has_required_fields ... ok [INFO] [stdout] test email::tests::is_sender_allowed_case_insensitive ... ok [INFO] [stdout] test email::tests::is_sender_allowed_empty_default_denies_all ... ok [INFO] [stdout] test email::tests::is_sender_allowed_empty_secure_denies_all ... ok [INFO] [stdout] test email::tests::is_sender_allowed_filters ... ok [INFO] [stdout] test email::tests::is_sender_allowed_filters_with_deny_on_empty ... ok [INFO] [stdout] test email::tests::is_sender_allowed_static_cases ... ok [INFO] [stdout] test email::tests::parse_email_empty_body_with_subject ... ok [INFO] [stdout] test email::tests::parse_email_empty_both ... ok [INFO] [stdout] test email::tests::parse_email_large_body_at_boundary ... ok [INFO] [stdout] test email::tests::format_reply_without_in_reply_to ... ok [INFO] [stdout] test email::tests::parse_email_truncates_multibyte_body ... ok [INFO] [stdout] test email::tests::parse_email_truncates_large_body ... ok [INFO] [stdout] test email::tests::parse_email_with_message_id_and_in_reply_to ... ok [INFO] [stdout] test email::tests::parse_email_with_subject ... ok [INFO] [stdout] test email::tests::parse_email_without_subject ... ok [INFO] [stdout] test email::tests::platform_name_is_email ... ok [INFO] [stdout] test email::tests::recv_empty_buffer_returns_none ... ok [INFO] [stdout] test email::tests::recv_returns_buffered_message ... ok [INFO] [stdout] test email::tests::recv_returns_none_when_buffer_empty ... ok [INFO] [stdout] test email::tests::rfc5322_attachment_metadata ... ok [INFO] [stdout] test email::tests::builder_methods ... ok [INFO] [stdout] test email::tests::parse_email_without_message_id ... ok [INFO] [stdout] test email::tests::rfc5322_garbage_bytes_returns_none ... ok [INFO] [stdout] test email::tests::rfc5322_dkim_signature_detection ... ok [INFO] [stdout] test email::tests::rfc5322_body_truncation ... ok [INFO] [stdout] test email::tests::rfc5322_no_body_returns_empty_content ... ok [INFO] [stdout] test email::tests::rfc5322_html_body_fallback ... ok [INFO] [stdout] test email::tests::rfc5322_no_from_address_returns_none ... ok [INFO] [stdout] test email::tests::rfc5322_multipart_alternative_prefers_plain ... ok [INFO] [stdout] test email::tests::rfc5322_parse_plain_text ... ok [INFO] [stdout] test email::tests::rfc5322_sender_filtering_deny_on_empty ... ok [INFO] [stdout] test email::tests::rfc5322_thread_id_from_in_reply_to ... ok [INFO] [stdout] test email::tests::rfc5322_sender_filtering_allowed_list ... ok [INFO] [stdout] test email::tests::send_fails_with_smtp_error ... ok [INFO] [stdout] test email::tests::rfc5322_thread_id_from_message_id_only ... ok [INFO] [stdout] test email::tests::send_with_invalid_from_address ... ok [INFO] [stdout] test email::tests::send_with_in_reply_to ... ok [INFO] [stdout] test email::tests::thread_id_default ... ok [INFO] [stdout] test email::tests::strip_html_tags_basic ... ok [INFO] [stdout] test email::tests::thread_id_from_in_reply_to ... ok [INFO] [stdout] test email::tests::xoauth2_token_format ... ok [INFO] [stdout] test email::tests::send_with_invalid_to_address ... ok [INFO] [stdout] test filter::tests::conversation_filter_accepts_dm ... ok [INFO] [stdout] test filter::tests::conversation_filter_accepts_no_metadata ... ok [INFO] [stdout] test filter::tests::conversation_filter_name ... ok [INFO] [stdout] test filter::tests::conversation_filter_no_is_group_key ... ok [INFO] [stdout] test filter::tests::conversation_filter_rejects_group ... ok [INFO] [stdout] test filter::tests::default_chain_accepts_dm ... ok [INFO] [stdout] test filter::tests::default_chain_accepts_mention ... ok [INFO] [stdout] test filter::tests::default_chain_accepts_reply ... ok [INFO] [stdout] test filter::tests::default_chain_has_three_filters ... ok [INFO] [stdout] test filter::tests::default_chain_rejects_group_no_mention_no_reply ... ok [INFO] [stdout] test filter::tests::filter_chain_default_is_empty ... ok [INFO] [stdout] test filter::tests::filter_chain_empty_passes_all ... ok [INFO] [stdout] test filter::tests::filter_chain_filters_accessor ... ok [INFO] [stdout] test filter::tests::filter_chain_or_logic ... ok [INFO] [stdout] test filter::tests::filter_chain_rejects_when_none_match ... ok [INFO] [stdout] test filter::tests::is_group_message_false ... ok [INFO] [stdout] test filter::tests::is_group_message_no_is_group_key ... ok [INFO] [stdout] test filter::tests::is_group_message_no_metadata ... ok [INFO] [stdout] test filter::tests::is_group_message_true ... ok [INFO] [stdout] test filter::tests::mention_filter_case_insensitive ... ok [INFO] [stdout] test filter::tests::mention_filter_matches_name ... ok [INFO] [stdout] test filter::tests::mention_filter_name ... ok [INFO] [stdout] test filter::tests::mention_filter_partial_match ... ok [INFO] [stdout] test filter::tests::mention_filter_rejects_no_mention ... ok [INFO] [stdout] test filter::tests::reply_filter_matches_reply ... ok [INFO] [stdout] test filter::tests::reply_filter_name ... ok [INFO] [stdout] test filter::tests::reply_filter_no_metadata ... ok [INFO] [stdout] test filter::tests::reply_filter_no_reply_to_bot_key ... ok [INFO] [stdout] test filter::tests::reply_filter_rejects_non_reply ... ok [INFO] [stdout] test formatter::tests::collapse_blanks ... ok [INFO] [stdout] test formatter::tests::discord_preserves_markdown ... ok [INFO] [stdout] test formatter::tests::discord_strips_metadata ... ok [INFO] [stdout] test formatter::tests::email_preserves_markdown_strips_citations ... ok [INFO] [stdout] test formatter::tests::empty_input ... ok [INFO] [stdout] test formatter::tests::formatter_for_known_platforms ... ok [INFO] [stdout] test formatter::tests::formatter_for_unknown_falls_back_to_web ... ok [INFO] [stdout] test formatter::tests::parse_link_nested_parens ... ok [INFO] [stdout] test formatter::tests::signal_indents_code_blocks ... ok [INFO] [stdout] test formatter::tests::signal_links_become_bare_urls ... ok [INFO] [stdout] test formatter::tests::signal_strips_all_formatting ... ok [INFO] [stdout] test formatter::tests::strip_citations_removes_numeric_brackets ... ok [INFO] [stdout] test formatter::tests::strip_markdown_links_extracts_urls ... ok [INFO] [stdout] test formatter::tests::strip_markdown_links_preserves_non_links ... ok [INFO] [stdout] test formatter::tests::strip_metadata_removes_delegation_lines ... ok [INFO] [stdout] test email::tests::thread_id_from_message_id ... ok [INFO] [stdout] test formatter::tests::telegram_blockquote ... ok [INFO] [stdout] test email::tests::xoauth2_token_with_empty_inputs ... ok [INFO] [stdout] test formatter::tests::telegram_bold_conversion ... ok [INFO] [stdout] test formatter::tests::telegram_double_underscore_italic ... ok [INFO] [stdout] test formatter::tests::telegram_combined_formatting ... ok [INFO] [stdout] test formatter::tests::telegram_empty_blockquote ... ok [INFO] [stdout] test formatter::tests::telegram_escapes_special_chars ... ok [INFO] [stdout] test formatter::tests::telegram_inline_code ... ok [INFO] [stdout] test formatter::tests::telegram_mixed_formatting ... ok [INFO] [stdout] test formatter::tests::telegram_preserves_code_blocks ... ok [INFO] [stdout] test formatter::tests::telegram_single_tilde_strikethrough ... ok [INFO] [stdout] test formatter::tests::telegram_single_underscore_italic ... ok [INFO] [stdout] test formatter::tests::telegram_strikethrough_conversion ... ok [INFO] [stdout] test formatter::tests::telegram_strips_citations ... ok [INFO] [stdout] test formatter::tests::telegram_strips_metadata ... ok [INFO] [stdout] test formatter::tests::unclosed_code_fence ... ok [INFO] [stdout] test formatter::tests::web_preserves_everything ... ok [INFO] [stdout] test formatter::tests::web_strips_metadata_only ... ok [INFO] [stdout] test formatter::tests::whatsapp_bold_conversion ... ok [INFO] [stdout] test formatter::tests::telegram_link_conversion ... ok [INFO] [stdout] test formatter::tests::telegram_headers_become_bold ... ok [INFO] [stdout] test discord::tests::platform_name_is_discord ... ok [INFO] [stdout] test discord::tests::parse_message_create_skips_empty ... ok [INFO] [stdout] test formatter::tests::whatsapp_headers_become_bold ... ok [INFO] [stdout] test formatter::tests::whatsapp_inline_code_triple_backtick ... ok [INFO] [stdout] test formatter::tests::whatsapp_links_become_bare_urls ... ok [INFO] [stdout] test media::tests::media_attachment_serde_roundtrip ... ok [INFO] [stdout] test media::tests::media_attachment_skips_none_fields ... ok [INFO] [stdout] test media::tests::media_type_from_content_type_audio ... ok [INFO] [stdout] test media::tests::media_type_from_content_type_document ... ok [INFO] [stdout] test media::tests::media_type_from_content_type_image ... ok [INFO] [stdout] test media::tests::media_type_from_content_type_video ... ok [INFO] [stdout] test media::tests::sanitize_filename_empty_becomes_attachment ... ok [INFO] [stdout] test media::tests::sanitize_filename_preserves_normal_names ... ok [INFO] [stdout] test media::tests::sanitize_filename_removes_nulls_and_control ... ok [INFO] [stdout] test media::tests::sanitize_filename_truncates_long_names ... ok [INFO] [stdout] test media::tests::validate_remote_url_allows_public_https ... ok [INFO] [stdout] test media::tests::sanitize_filename_removes_path_separators ... ok [INFO] [stdout] test media::tests::validate_remote_url_rejects_local_targets ... ok [INFO] [stdout] test router::tests::channel_names ... ok [INFO] [stdout] test router::tests::channel_names_list ... ok [INFO] [stdout] test router::tests::channel_status_fields ... ok [INFO] [stdout] test router::tests::dead_letters_empty ... ok [INFO] [stdout] test router::tests::dead_letters_returns_from_memory ... ok [INFO] [stdout] test router::tests::default_router ... ok [INFO] [stdout] test router::tests::delivery_queue_accessor ... ok [INFO] [stdout] test router::tests::drain_retry_queue_empty_is_noop ... ok [INFO] [stdout] test router::tests::drain_retry_queue_successful_delivery ... ok [INFO] [stdout] test router::tests::drain_retry_queue_transient_failure ... ok [INFO] [stdout] test router::tests::drain_retry_queue_with_missing_channel_dead_letters ... ok [INFO] [stdout] test router::tests::is_registered_after_register ... ok [INFO] [stdout] test router::tests::poll_all_receives_messages ... ok [INFO] [stdout] test router::tests::channel_status_serde ... ok [INFO] [stdout] test router::tests::poll_all_records_recv_error ... ok [INFO] [stdout] test router::tests::poll_all_sanitizes_inbound_messages ... ok [INFO] [stdout] test router::tests::record_processing_error_nonexistent_channel_noop ... ok [INFO] [stdout] test router::tests::drain_retry_queue_permanent_failure_dead_letters ... ok [INFO] [stdout] test router::tests::poll_updates_status ... ok [INFO] [stdout] test router::tests::record_received_nonexistent_channel_noop ... ok [INFO] [stdout] test router::tests::record_received_updates_status ... ok [INFO] [stdout] test router::tests::record_processing_error_updates_status ... ok [INFO] [stdout] test router::tests::register_and_count ... ok [INFO] [stdout] test router::tests::replay_dead_letter_from_memory ... ok [INFO] [stdout] test router::tests::replay_dead_letter_nonexistent_returns_false ... ok [INFO] [stdout] test router::tests::send_reply_to_nonexistent_channel ... ok [INFO] [stdout] test router::tests::send_reply_convenience ... ok [INFO] [stdout] test router::tests::send_to_transient_error_enqueues_retry ... ok [INFO] [stdout] test router::tests::send_to_permanent_error_does_not_enqueue_retry ... ok [INFO] [stdout] test router::tests::send_to_transient_error_records_last_error ... ok [INFO] [stdout] test router::tests::send_to_unknown_channel_fails ... ok [INFO] [stdout] test router::tests::poll_all_clears_error_on_success ... ok [INFO] [stdout] test router::tests::send_to_known_channel ... ok [INFO] [stdout] test discord::tests::push_and_recv_message ... ok [INFO] [stdout] test signal::tests::parse_inbound_empty_message_returns_none ... ok [INFO] [stdout] test signal::tests::parse_inbound_id_format ... ok [INFO] [stdout] test signal::tests::parse_inbound_metadata_preserved ... ok [INFO] [stdout] test signal::tests::parse_inbound_no_data_message_returns_none ... ok [INFO] [stdout] test signal::tests::parse_inbound_no_message_field_defaults_empty ... ok [INFO] [stdout] test signal::tests::parse_inbound_no_timestamp_defaults_zero ... ok [INFO] [stdout] test signal::tests::parse_inbound_source_fallback ... ok [INFO] [stdout] test signal::tests::parse_inbound_unknown_sender ... ok [INFO] [stdout] test signal::tests::parse_inbound_valid_message ... ok [INFO] [stdout] test media::tests::media_service_max_size_for ... ok [INFO] [stdout] test router::tests::with_store_recovers_queue_state ... ok [INFO] [stdout] test discord::tests::parse_message_create_valid ... ok [INFO] [stdout] test signal::tests::new_adapter_defaults ... ok [INFO] [stdout] test discord::tests::recv_returns_buffered_message ... ok [INFO] [stdout] test signal::tests::platform_name_is_signal ... ok [INFO] [stdout] test discord::tests::recv_returns_none_when_buffer_empty ... ok [INFO] [stdout] test discord::tests::push_multiple_messages_fifo ... ok [INFO] [stdout] test discord::tests::with_config_sets_guilds ... ok [INFO] [stdout] test signal::tests::process_envelope_returns_none_for_no_data_message ... ok [INFO] [stdout] test discord::tests::send_typing_best_effort_no_panic ... ok [INFO] [stdout] test discord::tests::send_trait_impl_long_message_network_error ... ok [INFO] [stdout] test signal::tests::process_envelope_filters_disallowed ... ok [INFO] [stdout] test signal::tests::new_adapter_fields ... ok [INFO] [stdout] test discord::tests::send_message_network_error ... ok [INFO] [stdout] test signal::tests::process_envelope_returns_none_for_empty_message ... ok [INFO] [stdout] test signal::tests::rpc_url_returns_daemon_url ... ok [INFO] [stdout] test discord::tests::send_ephemeral_returns_none_on_failure ... ok [INFO] [stdout] test signal::tests::process_envelope_passes_allowed ... ok [INFO] [stdout] test discord::tests::send_trait_impl_network_error ... ok [INFO] [stdout] test signal::tests::with_config_multiple_allowed_numbers ... ok [INFO] [stdout] test signal::tests::sender_allowed_filters ... ok [INFO] [stdout] test signal::tests::with_config_sets_fields ... ok [INFO] [stdout] test telegram::tests::chunk_message_empty_string ... ok [INFO] [stdout] test telegram::tests::chunk_message_exact_boundary ... ok [INFO] [stdout] test telegram::tests::chunk_message_multiple_splits ... ok [INFO] [stdout] test telegram::tests::chunk_message_no_whitespace_forces_hard_split ... ok [INFO] [stdout] test telegram::tests::chunk_message_single_word_over_limit ... ok [INFO] [stdout] test telegram::tests::chunk_message_splits_on_word_boundary ... ok [INFO] [stdout] test telegram::tests::chunk_message_unicode ... ok [INFO] [stdout] test signal::tests::push_and_recv_message ... ok [INFO] [stdout] test signal::tests::json_rpc_network_error ... ok [INFO] [stdout] test telegram::tests::api_url_formats_correctly ... ok [INFO] [stdout] test signal::tests::sender_allowed_empty_secure_denies_all ... ok [INFO] [stdout] test telegram::tests::format_outbound_with_special_characters ... ok [INFO] [stdout] test telegram::tests::format_outbound_produces_valid_json ... ok [INFO] [stdout] test signal::tests::sender_allowed_empty_default_denies_all ... ok [INFO] [stdout] test signal::tests::push_multiple_messages_fifo ... ok [INFO] [stdout] test telegram::tests::parse_inbound_from_fixture ... ok [INFO] [stdout] test telegram::tests::parse_inbound_message_with_only_from_id ... ok [INFO] [stdout] test telegram::tests::parse_inbound_missing_from ... ok [INFO] [stdout] test telegram::tests::parse_inbound_missing_from_id ... ok [INFO] [stdout] test telegram::tests::parse_inbound_missing_message ... ok [INFO] [stdout] test telegram::tests::parse_inbound_no_message_id_generates_uuid ... ok [INFO] [stdout] test telegram::tests::parse_inbound_no_text_defaults_empty ... ok [INFO] [stdout] test telegram::tests::parse_inbound_preserves_metadata ... ok [INFO] [stdout] test telegram::tests::api_url_various_methods ... ok [INFO] [stdout] test telegram::tests::message_buffer_is_empty_initially ... ok [INFO] [stdout] test telegram::tests::chat_allowed_empty_default_denies_all ... ok [INFO] [stdout] test telegram::tests::chat_allowed_empty_secure_denies_all ... ok [INFO] [stdout] test signal::tests::send_text_network_error ... ok [INFO] [stdout] test signal::tests::send_ephemeral_returns_none_on_failure ... ok [INFO] [stdout] test telegram::tests::last_update_id_starts_at_zero ... ok [INFO] [stdout] test telegram::tests::platform_name_is_telegram ... ok [INFO] [stdout] test telegram::tests::chat_allowed_filters ... ok [INFO] [stdout] test telegram::tests::process_webhook_update_without_update_id ... ok [INFO] [stdout] test telegram::tests::process_webhook_update_advances_id_without_rewinding ... ok [INFO] [stdout] test telegram::tests::delete_message_best_effort_no_panic ... ok [INFO] [stdout] test telegram::tests::strip_mdv2_escapes_removes_backslashes ... ok [INFO] [stdout] test telegram::tests::new_adapter_defaults ... ok [INFO] [stdout] test telegram::tests::process_webhook_update_disallowed_chat ... ok [INFO] [stdout] test telegram::tests::process_webhook_update_no_message ... ok [INFO] [stdout] test tests::inbound_message_clone ... ok [INFO] [stdout] test tests::inbound_message_debug ... ok [INFO] [stdout] test tests::inbound_message_empty_content ... ok [INFO] [stdout] test tests::inbound_message_empty_platform_name_works ... ok [INFO] [stdout] test tests::inbound_message_oversized_100kb_handled_gracefully ... ok [INFO] [stdout] test tests::inbound_message_oversized_content ... ok [INFO] [stdout] test tests::inbound_message_roundtrip ... ok [INFO] [stdout] test tests::inbound_message_sanitize_long_platform ... ok [INFO] [stdout] test tests::inbound_message_sanitize_method ... ok [INFO] [stdout] test tests::inbound_message_special_chars_in_platform ... ok [INFO] [stdout] test tests::outbound_message_clone ... ok [INFO] [stdout] test tests::outbound_message_serialization ... ok [INFO] [stdout] test tests::outbound_message_with_metadata ... ok [INFO] [stdout] test tests::sanitize_platform_exact_max_len ... ok [INFO] [stdout] test tests::sanitize_platform_mixed_control_and_printable ... ok [INFO] [stdout] test tests::sanitize_platform_one_over_max_len ... ok [INFO] [stdout] test tests::sanitize_platform_only_control_chars ... ok [INFO] [stdout] test tests::sanitize_platform_passes_clean_input ... ok [INFO] [stdout] test tests::sanitize_platform_strips_control_chars ... ok [INFO] [stdout] test tests::sanitize_platform_truncates_long_input ... ok [INFO] [stdout] test voice::tests::audio_format_copy ... ok [INFO] [stdout] test voice::tests::audio_format_display ... ok [INFO] [stdout] test voice::tests::audio_format_equality ... ok [INFO] [stdout] test voice::tests::audio_format_serde ... ok [INFO] [stdout] test voice::tests::default_api_base_url_value ... ok [INFO] [stdout] test voice::tests::default_sample_rate_value ... ok [INFO] [stdout] test telegram::tests::process_webhook_update_allowed_chat_passes ... ok [INFO] [stdout] test telegram::tests::process_webhook_update_valid ... ok [INFO] [stdout] test telegram::tests::chat_allowed_filters_with_deny_on_empty ... ok [INFO] [stdout] test signal::tests::send_trait_impl_network_error ... ok [INFO] [stdout] test telegram::tests::delete_webhook_network_error ... ok [INFO] [stdout] test voice::tests::synthesis_result_clone ... ok [INFO] [stdout] test voice::tests::synthesis_result_fields ... ok [INFO] [stdout] test telegram::tests::with_config_inherits_client ... ok [INFO] [stdout] test telegram::tests::register_webhook_network_error ... ok [INFO] [stdout] test telegram::tests::recv_polls_and_handles_network_error ... ok [INFO] [stdout] test telegram::tests::recv_returns_buffered_message_first ... ok [INFO] [stdout] test voice::tests::pipeline_new_initializes_counters_to_zero ... ok [INFO] [stdout] test telegram::tests::with_config_sets_fields ... ok [INFO] [stdout] test signal::tests::send_typing_best_effort_no_panic ... ok [INFO] [stdout] test voice::tests::transcription_clone ... ok [INFO] [stdout] test voice::tests::pipeline_api_key_missing_error ... ok [INFO] [stdout] test voice::tests::transcription_struct_fields ... ok [INFO] [stdout] test voice::tests::voice_config_api_key_not_serialized ... ok [INFO] [stdout] test voice::tests::voice_config_clone ... ok [INFO] [stdout] test voice::tests::voice_config_custom_sample_rate ... ok [INFO] [stdout] test voice::tests::voice_config_debug_impl ... ok [INFO] [stdout] test voice::tests::voice_config_defaults ... ok [INFO] [stdout] test voice::tests::pipeline_api_key_present ... ok [INFO] [stdout] test voice::tests::voice_config_partial_json_applies_defaults ... ok [INFO] [stdout] test voice::tests::voice_config_serde ... ok [INFO] [stdout] test voice::tests::voice_config_with_api_key ... ok [INFO] [stdout] test voice::tests::voice_config_with_local_flags ... ok [INFO] [stdout] test voice::tests::whisper_response_deserialization ... ok [INFO] [stdout] test voice::tests::whisper_response_full_fields ... ok [INFO] [stdout] test voice::tests::pipeline_counters ... ok [INFO] [stdout] test web::tests::format_ws_message_with_metadata ... ok [INFO] [stdout] test voice::tests::transcription_serde_roundtrip ... ok [INFO] [stdout] test web::tests::format_and_parse_roundtrip ... ok [INFO] [stdout] test web::tests::parse_ws_message_empty_json_object ... ok [INFO] [stdout] test voice::tests::pipeline_config_accessor ... ok [INFO] [stdout] test web::tests::parse_ws_message_missing_sender_defaults_anonymous ... ok [INFO] [stdout] test web::tests::parse_ws_message_no_metadata ... ok [INFO] [stdout] test web::tests::parse_ws_message_rejects_invalid_json ... ok [INFO] [stdout] test web::tests::parse_ws_message_with_metadata ... ok [INFO] [stdout] test web::tests::platform_name_is_web ... ok [INFO] [stdout] test voice::tests::voice_config_empty_json_uses_all_defaults ... ok [INFO] [stdout] test web::tests::parse_ws_message_missing_id_generates_uuid ... ok [INFO] [stdout] test web::tests::websocket_adapter_send_recv_roundtrip ... ok [INFO] [stdout] test whatsapp::tests::format_media_outbound_video_with_caption ... ok [INFO] [stdout] test whatsapp::tests::format_media_outbound_with_caption ... ok [INFO] [stdout] test voice::tests::transcribe_fails_without_api_key ... ok [INFO] [stdout] test whatsapp::tests::format_outbound_produces_valid_json ... ok [INFO] [stdout] test voice::tests::synthesize_empty_text_network_error ... ok [INFO] [stdout] test whatsapp::tests::format_media_outbound_without_caption ... ok [INFO] [stdout] test whatsapp::tests::parse_audio_message ... ok [INFO] [stdout] test whatsapp::tests::parse_audio_message_has_structured_attachment ... ok [INFO] [stdout] test whatsapp::tests::parse_document_message ... ok [INFO] [stdout] test whatsapp::tests::parse_document_message_has_filename_and_attachment ... ok [INFO] [stdout] test whatsapp::tests::parse_image_message ... ok [INFO] [stdout] test whatsapp::tests::parse_image_message_has_structured_attachment ... ok [INFO] [stdout] test whatsapp::tests::parse_image_message_no_caption ... ok [INFO] [stdout] test whatsapp::tests::parse_inbound_empty_entry_array ... ok [INFO] [stdout] test whatsapp::tests::parse_inbound_from_webhook_fixture ... ok [INFO] [stdout] test whatsapp::tests::parse_inbound_metadata_preserved ... ok [INFO] [stdout] test whatsapp::tests::parse_inbound_missing_changes ... ok [INFO] [stdout] test whatsapp::tests::parse_inbound_missing_entry ... ok [INFO] [stdout] test whatsapp::tests::parse_inbound_missing_from_defaults_unknown ... ok [INFO] [stdout] test whatsapp::tests::parse_inbound_missing_id_generates_uuid ... ok [INFO] [stdout] test whatsapp::tests::parse_inbound_missing_messages ... ok [INFO] [stdout] test whatsapp::tests::parse_inbound_missing_value ... ok [INFO] [stdout] test whatsapp::tests::parse_inbound_text_missing_text_object ... ok [INFO] [stdout] test whatsapp::tests::parse_inbound_text_no_body_defaults_empty ... ok [INFO] [stdout] test whatsapp::tests::parse_media_message_no_media_id_defaults_unknown ... ok [INFO] [stdout] test whatsapp::tests::parse_text_message_no_attachments_key ... ok [INFO] [stdout] test whatsapp::tests::parse_unsupported_message_type ... ok [INFO] [stdout] test whatsapp::tests::format_media_outbound_document ... ok [INFO] [stdout] test whatsapp::tests::parse_video_message_has_structured_attachment ... ok [INFO] [stdout] test whatsapp::tests::parse_video_message ... ok [INFO] [stdout] test telegram::tests::with_config_webhook_secret ... ok [INFO] [stdout] test whatsapp::tests::new_adapter_defaults ... ok [INFO] [stdout] test web::tests::parse_ws_message_missing_content_defaults_empty ... ok [INFO] [stdout] test whatsapp::tests::api_url_formats_correctly ... ok [INFO] [stdout] test voice::tests::synthesize_fails_without_api_key ... ok [INFO] [stdout] test telegram::tests::send_ephemeral_returns_none_on_failure ... ok [INFO] [stdout] test telegram::tests::send_typing_best_effort_no_panic ... ok [INFO] [stdout] test voice::tests::synthesize_network_error ... ok [INFO] [stdout] test voice::tests::transcribe_network_error ... ok [INFO] [stdout] test whatsapp::tests::platform_name_is_whatsapp ... ok [INFO] [stdout] test whatsapp::tests::api_url_custom_endpoint ... ok [INFO] [stdout] test telegram::tests::send_fails_with_network_error ... ok [INFO] [stdout] test voice::tests::synthesize_long_text_network_error ... ok [INFO] [stdout] test whatsapp::tests::process_webhook_valid ... ok [INFO] [stdout] test whatsapp::tests::process_webhook_allowed_sender ... ok [INFO] [stdout] test whatsapp::tests::process_webhook_disallowed_sender ... ok [INFO] [stdout] test whatsapp::tests::process_webhook_no_entry ... ok [INFO] [stdout] test whatsapp::tests::sender_allowed_empty_secure_denies_all ... ok [INFO] [stdout] test whatsapp::tests::sender_allowed_filters ... ok [INFO] [stdout] test whatsapp::tests::sender_allowed_empty_default_denies_all ... ok [INFO] [stdout] test whatsapp::tests::verify_webhook_challenge_wrong_mode ... ok [INFO] [stdout] test whatsapp::tests::verify_webhook_challenge_success ... ok [INFO] [stdout] test whatsapp::tests::verify_webhook_signature_no_secret_rejects ... ok [INFO] [stdout] test whatsapp::tests::verify_webhook_signature_missing_header ... ok [INFO] [stdout] test whatsapp::tests::send_trait_impl_network_error ... ok [INFO] [stdout] test whatsapp::tests::verify_webhook_signature_invalid_hex ... ok [INFO] [stdout] test whatsapp::tests::send_typing_with_message_id_no_panic ... ok [INFO] [stdout] test whatsapp::tests::verify_webhook_signature_empty_secret_rejects ... ok [INFO] [stdout] test whatsapp::tests::verify_webhook_signature_missing_prefix ... ok [INFO] [stdout] test whatsapp::tests::with_config_sets_fields ... ok [INFO] [stdout] test whatsapp::tests::mark_as_read_network_error ... ok [INFO] [stdout] test whatsapp::tests::verify_webhook_challenge_wrong_token ... ok [INFO] [stdout] test whatsapp::tests::send_ephemeral_returns_none_on_failure ... ok [INFO] [stdout] test whatsapp::tests::recv_returns_none_for_webhook_adapter ... ok [INFO] [stdout] test whatsapp::tests::with_config_app_secret ... ok [INFO] [stdout] test whatsapp::tests::verify_webhook_signature_valid ... ok [INFO] [stdout] test whatsapp::tests::with_config_verify_token ... ok [INFO] [stdout] test whatsapp::tests::verify_webhook_signature_invalid ... ok [INFO] [stdout] test whatsapp::tests::send_typing_without_message_id_no_panic ... ok [INFO] [stdout] test voice::tests::transcribe_network_error_with_each_format ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 513 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.28s [INFO] [stdout] [INFO] [stderr] Doc-tests ironclad_channels [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test src/a2a.rs - a2a::A2aProtocol::encrypt_message (line 260) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stdout] all doctests ran in 2.02s; merged doctests compilation took 1.93s [INFO] running `Command { std: "docker" "inspect" "1c0a24e1926f6ad561842733afc9dba0b7ccdcc5df170ae2f675fc64263bca42", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1c0a24e1926f6ad561842733afc9dba0b7ccdcc5df170ae2f675fc64263bca42", kill_on_drop: false }` [INFO] [stdout] 1c0a24e1926f6ad561842733afc9dba0b7ccdcc5df170ae2f675fc64263bca42