[INFO] cloning repository https://github.com/bercly0b/rtg
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bercly0b/rtg" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbercly0b%2Frtg", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbercly0b%2Frtg'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4e813d86649e71357ca29127699b81aa1cd0eaa4
[INFO] testing bercly0b/rtg against beta-2026-03-05 for beta-1.95-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbercly0b%2Frtg" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/bercly0b/rtg
[INFO] finished tweaking git repo https://github.com/bercly0b/rtg
[INFO] tweaked toml for git repo https://github.com/bercly0b/rtg written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/bercly0b/rtg on toolchain beta-2026-03-05
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-03-05" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/bercly0b/rtg 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" "+beta-2026-03-05" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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" "+beta-2026-03-05" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 218f0e984298f1aeb61301f2bb6e1a15427355972531a1b045ededa15572a05a
[INFO] running `Command { std: "docker" "start" "-a" "218f0e984298f1aeb61301f2bb6e1a15427355972531a1b045ededa15572a05a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "218f0e984298f1aeb61301f2bb6e1a15427355972531a1b045ededa15572a05a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "218f0e984298f1aeb61301f2bb6e1a15427355972531a1b045ededa15572a05a", kill_on_drop: false }`
[INFO] [stdout] 218f0e984298f1aeb61301f2bb6e1a15427355972531a1b045ededa15572a05a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-03-05" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 20df5c32008ecd4260e5c729bd3e0155a8cdf7e21c586ee712694000a50ac473
[INFO] running `Command { std: "docker" "start" "-a" "20df5c32008ecd4260e5c729bd3e0155a8cdf7e21c586ee712694000a50ac473", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling rand_core v0.10.0
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling grammers-tl-parser v1.2.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling regex-syntax v0.8.9
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling grammers-tl-gen v0.7.0
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling grammers-tl-types v0.7.0
[INFO] [stderr]    Compiling grammers-session v0.7.0
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling syn v2.0.116
[INFO] [stderr]    Compiling deranged v0.5.6
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling pbkdf2 v0.12.2
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling num-conv v0.2.0
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling glass_pumpkin v1.10.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling grammers-crypto v0.7.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling anyhow v1.0.101
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling os_info v3.14.0
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling clap_builder v4.5.58
[INFO] [stderr]    Compiling rtoolbox v0.0.3
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling locate-locale v0.2.0
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling md5 v0.7.0
[INFO] [stderr]    Compiling cassowary v0.3.0
[INFO] [stderr]    Compiling rpassword v7.4.0
[INFO] [stderr]    Compiling fs2 v0.4.3
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling clap v4.5.58
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling ratatui v0.29.0
[INFO] [stderr]    Compiling tracing-appender v0.2.4
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling grammers-mtproto v0.7.0
[INFO] [stderr]    Compiling grammers-mtsender v0.7.0
[INFO] [stderr]    Compiling grammers-client v0.7.0
[INFO] [stderr]    Compiling rtg v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 18s
[INFO] running `Command { std: "docker" "inspect" "20df5c32008ecd4260e5c729bd3e0155a8cdf7e21c586ee712694000a50ac473", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "20df5c32008ecd4260e5c729bd3e0155a8cdf7e21c586ee712694000a50ac473", kill_on_drop: false }`
[INFO] [stdout] 20df5c32008ecd4260e5c729bd3e0155a8cdf7e21c586ee712694000a50ac473
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-03-05" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fc27422769020384178abee66e05bc80bcf2445b1ace89f55427a8ad550eb2f2
[INFO] running `Command { std: "docker" "start" "-a" "fc27422769020384178abee66e05bc80bcf2445b1ace89f55427a8ad550eb2f2", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling rtg v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: field `result_tx` is never read
[INFO] [stdout]    --> src/usecases/background.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 221 |     pub struct StubTaskDispatcher {
[INFO] [stdout]     |                ------------------ field in this struct
[INFO] [stdout] 222 |         result_tx: Sender<BackgroundTaskResult>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `inject_result` is never used
[INFO] [stdout]    --> src/usecases/background.rs:232:16
[INFO] [stdout]     |
[INFO] [stdout] 225 |     impl StubTaskDispatcher {
[INFO] [stdout]     |     ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 232 |         pub fn inject_result(&self, result: BackgroundTaskResult) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 15.62s
[INFO] running `Command { std: "docker" "inspect" "fc27422769020384178abee66e05bc80bcf2445b1ace89f55427a8ad550eb2f2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fc27422769020384178abee66e05bc80bcf2445b1ace89f55427a8ad550eb2f2", kill_on_drop: false }`
[INFO] [stdout] fc27422769020384178abee66e05bc80bcf2445b1ace89f55427a8ad550eb2f2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-03-05" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] c8828ec21d6a45ab38897b876c58995a43973d4a1d8e7a893fe5c58ba7a75e98
[INFO] running `Command { std: "docker" "start" "-a" "c8828ec21d6a45ab38897b876c58995a43973d4a1d8e7a893fe5c58ba7a75e98", kill_on_drop: false }`
[INFO] [stderr] warning: field `result_tx` is never read
[INFO] [stderr]    --> src/usecases/background.rs:222:9
[INFO] [stderr]     |
[INFO] [stderr] 221 |     pub struct StubTaskDispatcher {
[INFO] [stderr]     |                ------------------ field in this struct
[INFO] [stderr] 222 |         result_tx: Sender<BackgroundTaskResult>,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `inject_result` is never used
[INFO] [stderr]    --> src/usecases/background.rs:232:16
[INFO] [stderr]     |
[INFO] [stderr] 225 |     impl StubTaskDispatcher {
[INFO] [stderr]     |     ----------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 232 |         pub fn inject_result(&self, result: BackgroundTaskResult) {
[INFO] [stderr]     |                ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rtg` (bin "rtg" test) generated 2 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.36s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rtg-d82df95f94c16e2a)
[INFO] [stdout] 
[INFO] [stdout] running 294 tests
[INFO] [stdout] test app::tests::post_auth_fallback_lines_include_non_secret_error_code_and_guidance ... ok
[INFO] [stdout] test cli::tests::defaults_to_run_when_command_is_missing ... ok
[INFO] [stdout] test cli::tests::parses_explicit_run_command ... ok
[INFO] [stdout] test domain::chat_list_state::tests::set_ready_preserves_selection_by_chat_id ... ok
[INFO] [stdout] test domain::chat_list_state::tests::set_ready_with_selection_hint_preserves_selection_across_reload ... ok
[INFO] [stdout] test domain::chat_list_state::tests::set_ready_with_data_sets_ready_and_selects_first_item ... ok
[INFO] [stdout] test domain::chat_list_state::tests::set_ready_falls_back_to_first_when_previous_selection_disappears ... ok
[INFO] [stdout] test domain::chat_list_state::tests::selection_moves_within_bounds ... ok
[INFO] [stdout] test cli::tests::parses_logout_command ... ok
[INFO] [stdout] test app::tests::logout_succeeds_when_telegram_bootstrap_fails ... ok
[INFO] [stdout] test domain::message::tests::display_content_handles_all_media_types ... ok
[INFO] [stdout] test domain::chat_list_state::tests::set_loading_clears_items_and_selection ... ok
[INFO] [stdout] test domain::chat_list_state::tests::set_ready_with_empty_list_transitions_to_empty_state ... ok
[INFO] [stdout] test domain::message::tests::display_label_returns_none_for_no_media ... ok
[INFO] [stdout] test domain::message::tests::display_label_returns_photo_indicator ... ok
[INFO] [stdout] test domain::message::tests::display_label_returns_sticker_indicator ... ok
[INFO] [stdout] test domain::message::tests::display_label_returns_voice_indicator ... ok
[INFO] [stdout] test domain::message::tests::display_label_returns_video_note_indicator ... ok
[INFO] [stdout] test domain::message_input_state::tests::clear_resets_state ... ok
[INFO] [stdout] test domain::message_input_state::tests::delete_char_at_end_does_nothing ... ok
[INFO] [stdout] test domain::message_input_state::tests::delete_char_at_middle_removes_correct_char ... ok
[INFO] [stdout] test domain::message_input_state::tests::delete_char_at_removes_current_char ... ok
[INFO] [stdout] test domain::message_input_state::tests::delete_char_before_at_start_does_nothing ... ok
[INFO] [stdout] test domain::message::tests::display_content_returns_media_label_only_when_text_empty ... ok
[INFO] [stdout] test domain::chat_list_state::tests::default_state_is_loading_without_selection ... ok
[INFO] [stdout] test domain::message_input_state::tests::handles_emoji ... ok
[INFO] [stdout] test domain::message_input_state::tests::handles_unicode_characters ... ok
[INFO] [stdout] test domain::message_input_state::tests::home_and_end_movement ... ok
[INFO] [stdout] test domain::message_input_state::tests::insert_char_appends_and_moves_cursor ... ok
[INFO] [stdout] test domain::message_input_state::tests::insert_char_at_middle_position ... ok
[INFO] [stdout] test domain::open_chat_state::tests::clear_resets_to_empty ... ok
[INFO] [stdout] test domain::open_chat_state::tests::default_state_is_empty ... ok
[INFO] [stdout] test domain::open_chat_state::tests::scroll_margin_constant_is_five ... ok
[INFO] [stdout] test domain::message_input_state::tests::new_state_is_empty ... ok
[INFO] [stdout] test domain::message_input_state::tests::cursor_movement_left_right ... ok
[INFO] [stdout] test domain::message_input_state::tests::delete_char_before_removes_previous_char ... ok
[INFO] [stdout] test domain::open_chat_state::tests::scroll_offset_resets_on_set_loading ... ok
[INFO] [stdout] test domain::message::tests::display_content_combines_media_label_and_text ... ok
[INFO] [stdout] test domain::chat_list_state::tests::set_error_clears_items_and_selection ... ok
[INFO] [stdout] test domain::open_chat_state::tests::scroll_offset_starts_at_zero ... ok
[INFO] [stdout] test domain::open_chat_state::tests::select_next_initializes_to_first_when_no_selection ... ok
[INFO] [stdout] test domain::open_chat_state::tests::select_next_moves_down_in_message_list ... ok
[INFO] [stdout] test domain::open_chat_state::tests::select_next_on_empty_messages_does_nothing ... ok
[INFO] [stdout] test domain::open_chat_state::tests::select_previous_initializes_to_last_when_no_selection ... ok
[INFO] [stdout] test domain::open_chat_state::tests::select_previous_moves_up_in_message_list ... ok
[INFO] [stdout] test domain::open_chat_state::tests::select_previous_on_empty_messages_does_nothing ... ok
[INFO] [stdout] test domain::open_chat_state::tests::set_error_transitions_to_error ... ok
[INFO] [stdout] test domain::open_chat_state::tests::set_loading_transitions_correctly ... ok
[INFO] [stdout] test domain::open_chat_state::tests::set_ready_initializes_scroll_offset_to_max ... ok
[INFO] [stdout] test domain::open_chat_state::tests::set_ready_with_empty_messages_has_no_selection ... ok
[INFO] [stdout] test domain::open_chat_state::tests::set_scroll_offset_persists_value ... ok
[INFO] [stdout] test infra::stubs::tests::stub_config_returns_defaults ... ok
[INFO] [stdout] test domain::open_chat_state::tests::set_ready_stores_messages_and_selects_last ... ok
[INFO] [stdout] test infra::logging::tests::build_env_filter_limits_dependencies ... ok
[INFO] [stdout] test telegram::auth::tests::detects_expired_code_message_as_recoverable_code_error ... ok
[INFO] [stdout] test telegram::auth::tests::keeps_all_dialog_scope_when_only_default_filter_exists ... ok
[INFO] [stdout] test infra::config::loader::tests::env_overrides_file_telegram_credentials ... ok
[INFO] [stdout] test telegram::auth::tests::maps_invalid_phone_from_message ... ok
[INFO] [stdout] test infra::config::loader::tests::returns_defaults_when_file_is_missing ... ok
[INFO] [stdout] test infra::config::loader::tests::fails_when_env_api_id_is_invalid ... ok
[INFO] [stdout] test telegram::auth::tests::maps_session_load_error ... ok
[INFO] [stdout] test infra::secrets::tests::redact_text_scrubs_sensitive_fragments ... ok
[INFO] [stdout] test infra::secrets::tests::sanitize_error_code_rejects_untrusted_text ... ok
[INFO] [stdout] test infra::logging::tests::cleanup_old_logs_does_nothing_when_under_limit ... ok
[INFO] [stdout] test infra::config::loader::tests::merges_file_values_over_defaults ... ok
[INFO] [stdout] test telegram::auth::tests::maps_list_chats_auth_errors_to_unauthorized ... ok
[INFO] [stdout] test infra::storage_layout::tests::session_and_cache_are_under_config_dir ... ok
[INFO] [stdout] test telegram::auth::tests::normalize_preview_text_trims_and_drops_empty_values ... ok
[INFO] [stdout] test telegram::auth::tests::start_login_state_transition_is_deterministic_from_disconnected ... ok
[INFO] [stdout] test telegram::auth::tests::start_login_repeated_call_is_rejected_with_typed_error ... ok
[INFO] [stdout] test telegram::auth::tests::maps_sign_in_invalid_code_as_recoverable_error ... ok
[INFO] [stdout] test telegram::auth::tests::extracts_flood_wait_seconds ... ok
[INFO] [stdout] test telegram::auth::tests::password_verification_error_keeps_password_token_for_retry ... ok
[INFO] [stdout] test telegram::auth::tests::password_verification_success_clears_password_token ... ok
[INFO] [stdout] test telegram::auth::tests::verify_password_path_keeps_token_after_failure_and_allows_retry ... ok
[INFO] [stdout] test telegram::auth::tests::verify_password_path_rejects_missing_password_challenge ... ok
[INFO] [stdout] test domain::message::tests::display_content_returns_text_only_when_no_media ... ok
[INFO] [stdout] test telegram::auth::tests::selects_main_folder_scope_when_custom_filters_exist ... ok
[INFO] [stdout] test telegram::status_tracker::tests::emits_initial_snapshot_on_subscribe ... ok
[INFO] [stdout] test telegram::status_tracker::tests::successful_auth_clears_last_error ... ok
[INFO] [stdout] test telegram::status_tracker::tests::logout_reset_forces_disconnected_clean_state ... ok
[INFO] [stdout] test telegram::status_tracker::tests::maps_connectivity_statuses_to_canonical_health ... ok
[INFO] [stdout] test telegram::status_tracker::tests::transitions_auth_and_error_contract ... ok
[INFO] [stdout] test telegram::tests::disconnect_and_reset_sets_disconnected_snapshot ... ok
[INFO] [stdout] test telegram::tests::list_chats_returns_unavailable_when_backend_is_not_configured ... ok
[INFO] [stdout] test telegram::tests::list_messages_returns_unavailable_when_backend_is_not_configured ... ok
[INFO] [stdout] test telegram::tests::send_message_returns_unauthorized_when_backend_is_not_configured ... ok
[INFO] [stdout] test telegram::tests::status_stream_emits_initial_payload_contract ... ok
[INFO] [stdout] test telegram::tests::uses_stub_backend_when_config_is_not_set ... ok
[INFO] [stdout] test telegram::tests::status_stream_tracks_auth_error_and_connectivity_transition ... ok
[INFO] [stdout] test ui::event_source::tests::channel_chat_updates_source_drains_burst_into_single_refresh ... ok
[INFO] [stdout] test ui::event_source::tests::crossterm_event_source_deduplicates_same_connectivity_status ... ok
[INFO] [stdout] test ui::event_source::tests::crossterm_event_source_emits_chat_list_refresh_event ... ok
[INFO] [stdout] test ui::event_source::tests::crossterm_event_source_emits_refresh_per_chat_update_signal ... ok
[INFO] [stdout] test ui::event_source::tests::crossterm_event_source_prioritizes_ready_input_over_connectivity_burst ... ok
[INFO] [stdout] test ui::event_source::tests::crossterm_event_source_does_not_starve_input_under_bursty_connectivity ... ok
[INFO] [stdout] test ui::event_source::tests::mock_event_source_keeps_tick_input_path_when_no_connectivity_event_available ... ok
[INFO] [stdout] test ui::event_source::tests::mock_event_source_returns_none_when_queue_is_exhausted ... ok
[INFO] [stdout] test ui::event_source::tests::crossterm_event_source_does_not_starve_tick_under_bursty_connectivity ... ok
[INFO] [stdout] test ui::message_input::tests::build_input_line_shows_placeholder_when_empty_and_unfocused ... ok
[INFO] [stdout] test ui::message_input::tests::build_input_line_shows_empty_prompt_when_focused_and_empty ... ok
[INFO] [stdout] test ui::event_source::tests::crossterm_event_source_keeps_non_connectivity_progress_with_channel_source ... ok
[INFO] [stdout] test ui::message_input::tests::build_input_line_shows_text_when_has_content ... ok
[INFO] [stdout] test ui::event_source::tests::channel_connectivity_source_returns_latest_status_in_burst ... ok
[INFO] [stdout] test ui::event_source::tests::crossterm_event_source_keeps_tick_progress_with_frequent_connectivity_events ... ok
[INFO] [stdout] test ui::event_source::tests::crossterm_event_source_prioritizes_bursty_chat_updates ... ok
[INFO] [stdout] test ui::event_source::tests::crossterm_event_source_maps_enter_to_open_chat_intent_key ... ok
[INFO] [stdout] test ui::event_source::tests::channel_connectivity_source_is_non_blocking_when_channel_is_empty ... ok
[INFO] [stdout] test ui::message_rendering::tests::format_time_produces_hh_mm ... ok
[INFO] [stdout] test ui::message_rendering::tests::builds_date_separator_for_first_message ... ok
[INFO] [stdout] test ui::message_rendering::tests::hides_duplicate_time_for_same_sender_same_minute ... ok
[INFO] [stdout] test ui::message_rendering::tests::media_message_shows_indicator ... ok
[INFO] [stdout] test ui::message_rendering::tests::inserts_date_separator_on_date_change ... ok
[INFO] [stdout] test ui::message_rendering::tests::message_index_to_element_index_accounts_for_date_separators ... ok
[INFO] [stdout] test ui::message_rendering::tests::format_date_produces_correct_format ... ok
[INFO] [stdout] test ui::message_rendering::tests::message_index_to_element_index_returns_none_for_out_of_range ... ok
[INFO] [stdout] test ui::message_rendering::tests::first_message_always_shows_time ... ok
[INFO] [stdout] test ui::message_rendering::tests::resets_time_grouping_on_date_change ... ok
[INFO] [stdout] test ui::message_rendering::tests::shows_sender_when_sender_changes ... ok
[INFO] [stdout] test ui::message_rendering::tests::resets_sender_grouping_on_date_change ... ok
[INFO] [stdout] test ui::message_rendering::tests::shows_time_when_minute_changes_within_same_sender_group ... ok
[INFO] [stdout] test ui::message_rendering::tests::media_message_with_text_shows_both ... ok
[INFO] [stdout] test ui::message_rendering::tests::shows_time_when_sender_changes_even_if_same_minute ... ok
[INFO] [stdout] test ui::message_rendering::tests::three_messages_same_sender_same_minute_only_first_shows_time ... ok
[INFO] [stdout] test ui::message_rendering::tests::message_index_to_element_index_returns_none_for_empty_elements ... ok
[INFO] [stdout] test ui::message_rendering::tests::uses_you_for_outgoing_messages ... ok
[INFO] [stdout] test ui::message_rendering::tests::message_index_to_element_index_handles_multiple_messages_same_day ... ok
[INFO] [stdout] test ui::shell::tests::mock_source_produces_quit_event ... ok
[INFO] [stdout] test ui::styles::tests::active_title_style_is_green_bold ... ok
[INFO] [stdout] test ui::styles::tests::chat_name_style_is_bold_white ... ok
[INFO] [stdout] test ui::shell::tests::orchestrator_stops_on_quit_from_source ... ok
[INFO] [stdout] test ui::message_rendering::tests::message_index_to_element_index_maps_first_message ... ok
[INFO] [stdout] test ui::styles::tests::group_sender_style_is_cyan ... ok
[INFO] [stdout] test ui::styles::tests::date_separator_style_is_dark_gray ... ok
[INFO] [stdout] test ui::styles::tests::input_placeholder_style_is_dark_gray ... ok
[INFO] [stdout] test ui::styles::tests::status_bar_style_uses_ansi_black_bg ... ok
[INFO] [stdout] test ui::styles::tests::input_prompt_style_is_green ... ok
[INFO] [stdout] test ui::styles::tests::inactive_title_style_is_dark_gray_bold ... ok
[INFO] [stdout] test ui::styles::tests::message_media_style_is_cyan ... ok
[INFO] [stdout] test ui::styles::tests::message_sender_style_is_bold_white ... ok
[INFO] [stdout] test ui::styles::tests::online_indicator_style_is_green ... ok
[INFO] [stdout] test ui::styles::tests::outgoing_read_style_is_green ... ok
[INFO] [stdout] test ui::styles::tests::outgoing_unread_style_is_dark_gray ... ok
[INFO] [stdout] test ui::styles::tests::panel_separator_style_is_dark_gray ... ok
[INFO] [stdout] test ui::styles::tests::unread_count_style_is_green ... ok
[INFO] [stdout] test ui::styles::tests::input_text_style_is_white ... ok
[INFO] [stdout] test ui::terminal::tests::rollback_writes_leave_alt_and_show_when_alt_screen_was_entered ... ok
[INFO] [stdout] test ui::view::tests::bottom_aligned_offset_empty_items_returns_zero ... ok
[INFO] [stdout] test ui::view::tests::bottom_aligned_offset_exact_fit_returns_zero ... ok
[INFO] [stdout] test ui::terminal::tests::rollback_skips_alt_screen_commands_when_not_entered ... ok
[INFO] [stdout] test ui::view::tests::bottom_aligned_offset_all_items_fit_returns_zero ... ok
[INFO] [stdout] test ui::view::tests::bottom_aligned_offset_single_oversized_item ... ok
[INFO] [stdout] test ui::view::tests::bottom_aligned_offset_skips_overflowing_items ... ok
[INFO] [stdout] test ui::view::tests::build_chat_list_items_creates_all_chats_section_for_regular_chats ... ok
[INFO] [stdout] test ui::view::tests::channel_outgoing_shows_read_indicator ... ok
[INFO] [stdout] test ui::view::tests::build_chat_list_items_shows_all_chats_header_when_all_pinned ... ok
[INFO] [stdout] test ui::view::tests::channel_outgoing_unread_shows_bullet ... ok
[INFO] [stdout] test ui::view::tests::bottom_aligned_offset_handles_multi_line_items ... ok
[INFO] [stdout] test ui::view::tests::build_chat_list_items_creates_both_sections_when_pinned_exists ... ok
[INFO] [stdout] test ui::view::tests::chat_list_item_includes_title_and_preview ... ok
[INFO] [stdout] test ui::view::tests::chat_list_item_includes_unread_counter ... ok
[INFO] [stdout] test ui::view::tests::chat_list_item_falls_back_to_placeholder_preview ... ok
[INFO] [stdout] test ui::view::tests::chat_list_item_omits_counter_when_zero ... ok
[INFO] [stdout] test ui::view::tests::chat_list_item_normalizes_whitespace ... ok
[INFO] [stdout] test ui::view::tests::bottom_aligned_offset_zero_viewport_returns_last ... ok
[INFO] [stdout] test ui::view::tests::chat_with_unread_and_online_shows_both ... ok
[INFO] [stdout] test ui::view::tests::compute_visual_index_accounts_for_headers ... ok
[INFO] [stdout] test ui::view::tests::compute_visual_index_with_all_pinned ... ok
[INFO] [stdout] test ui::view::tests::compute_visual_index_with_no_pinned ... ok
[INFO] [stdout] test ui::view::tests::format_chat_timestamp_handles_extreme_negative_timestamp ... ok
[INFO] [stdout] test ui::view::tests::format_chat_timestamp_handles_negative_timestamp_gracefully ... ok
[INFO] [stdout] test ui::view::tests::format_chat_timestamp_shows_date_for_past ... ok
[INFO] [stdout] test ui::view::tests::format_chat_timestamp_shows_time_for_today ... ok
[INFO] [stdout] test ui::view::tests::group_chat_outgoing_read_shows_sender_then_checkmark ... ok
[INFO] [stdout] test ui::view::tests::group_chat_outgoing_unread_shows_sender_then_bullet ... ok
[INFO] [stdout] test ui::view::tests::open_chat_title_empty_when_no_chat_selected ... ok
[INFO] [stdout] test ui::view::tests::group_chat_shows_sender_name_before_preview ... ok
[INFO] [stdout] test ui::view::tests::open_chat_title_includes_chat_name_when_open ... ok
[INFO] [stdout] test ui::view::tests::private_chat_incoming_message_no_indicator ... ok
[INFO] [stdout] test ui::view::tests::private_chat_outgoing_read_shows_checkmark ... ok
[INFO] [stdout] test ui::view::tests::private_chat_offline_no_dot ... ok
[INFO] [stdout] test ui::view::tests::private_chat_outgoing_unread_shows_bullet ... ok
[INFO] [stdout] test ui::view::tests::group_chat_without_sender_shows_plain_preview ... ok
[INFO] [stdout] test ui::view::tests::status_line_renders_connected_label ... ok
[INFO] [stdout] test usecases::bootstrap::tests::build_context_uses_stub_when_telegram_is_unconfigured ... ok
[INFO] [stdout] test ui::view::tests::private_chat_online_shows_green_dot ... ok
[INFO] [stdout] test ui::view::tests::status_line_renders_disconnected_label ... ok
[INFO] [stdout] test usecases::bootstrap::tests::builds_context_via_config_contract ... ok
[INFO] [stdout] test usecases::bootstrap::tests::builds_context_with_default_config_when_file_is_missing ... ok
[INFO] [stdout] test usecases::bootstrap::tests::compose_shell_falls_back_when_telegram_monitor_start_fails ... ok
[INFO] [stdout] test usecases::bootstrap::tests::composes_shell_dependencies_in_bootstrap_layer ... ok
[INFO] [stdout] test usecases::bootstrap::tests::rejects_partially_configured_telegram_config ... ok
[INFO] [stdout] test usecases::bootstrap::tests::compose_shell_injects_channel_backed_source_when_telegram_monitor_starts ... ok
[INFO] [stdout] test usecases::bootstrap::tests::maps_transient_bootstrap_error_to_safe_validation_error ... ok
[INFO] [stdout] test usecases::guided_auth::tests::backend_unavailable_fails_fast_with_actionable_message_and_without_leaks ... ok
[INFO] [stdout] test usecases::bootstrap::tests::compose_shell_keeps_chat_updates_when_only_connectivity_monitor_fails ... ok
[INFO] [stdout] test usecases::guided_auth::tests::flood_wait_exits_immediately ... ok
[INFO] [stdout] test usecases::guided_auth::tests::invalid_phone_from_backend_retries_then_exits ... ok
[INFO] [stdout] test usecases::bootstrap::tests::maps_non_transient_bootstrap_errors_to_stable_codes ... ok
[INFO] [stdout] test usecases::guided_auth::tests::eof_cancels_flow_cleanly ... ok
[INFO] [stdout] test usecases::guided_auth::tests::e2e_wrong_password_exhausts_retries_and_exits_with_guidance ... ok
[INFO] [stdout] test usecases::guided_auth::tests::persist_failure_exits_with_guidance ... ok
[INFO] [stdout] test usecases::list_chats::tests::keeps_source_payload_without_mutation ... ok
[INFO] [stdout] test usecases::list_chats::tests::caps_limit_to_maximum_boundary ... ok
[INFO] [stdout] test usecases::list_chats::tests::maps_invalid_data_error_to_contract_violation ... ok
[INFO] [stdout] test usecases::list_chats::tests::maps_unauthorized_error ... ok
[INFO] [stdout] test usecases::list_chats::tests::maps_unavailable_error_to_temporarily_unavailable ... ok
[INFO] [stdout] test usecases::list_chats::tests::uses_default_limit_when_query_limit_is_zero ... ok
[INFO] [stdout] test usecases::load_messages::tests::caps_limit_to_maximum_boundary ... ok
[INFO] [stdout] test usecases::list_chats::tests::maps_unknown_error_to_temporarily_unavailable ... ok
[INFO] [stdout] test usecases::load_messages::tests::keeps_source_payload_without_mutation ... ok
[INFO] [stdout] test usecases::load_messages::tests::maps_unauthorized_error ... ok
[INFO] [stdout] test usecases::load_messages::tests::maps_chat_not_found_error ... ok
[INFO] [stdout] test usecases::load_messages::tests::passes_chat_id_to_source ... ok
[INFO] [stdout] test usecases::load_messages::tests::uses_default_limit_when_query_limit_is_zero ... ok
[INFO] [stdout] test usecases::send_message::tests::maps_chat_not_found_error ... ok
[INFO] [stdout] test usecases::send_message::tests::maps_unauthorized_error ... ok
[INFO] [stdout] test usecases::send_message::tests::maps_unavailable_error ... ok
[INFO] [stdout] test usecases::send_message::tests::passes_chat_id_to_sender ... ok
[INFO] [stdout] test usecases::send_message::tests::rejects_empty_message_text ... ok
[INFO] [stdout] test usecases::send_message::tests::rejects_whitespace_only_message ... ok
[INFO] [stdout] test usecases::send_message::tests::returns_ok_on_successful_send ... ok
[INFO] [stdout] test usecases::send_message::tests::trims_whitespace_before_sending ... ok
[INFO] [stdout] test usecases::shell::tests::backspace_deletes_character_in_message_input_mode ... ok
[INFO] [stdout] test usecases::shell::tests::chat_list_loaded_error_sets_error_state ... ok
[INFO] [stdout] test usecases::shell::tests::chat_list_loaded_preserves_selection_by_preferred_chat_id ... ok
[INFO] [stdout] test usecases::shell::tests::chat_list_loaded_result_sets_ready_state ... ok
[INFO] [stdout] test usecases::shell::tests::chat_list_update_event_dispatches_refresh ... ok
[INFO] [stdout] test usecases::shell::tests::chat_list_update_event_keeps_data_visible ... ok
[INFO] [stdout] test usecases::shell::tests::cursor_navigation_in_message_input_mode ... ok
[INFO] [stdout] test usecases::shell::tests::duplicate_chat_list_dispatch_is_guarded ... ok
[INFO] [stdout] test usecases::shell::tests::enter_key_dispatches_load_messages_and_switches_pane ... ok
[INFO] [stdout] test usecases::shell::tests::enter_key_dispatches_send_message_and_clears_input ... ok
[INFO] [stdout] test usecases::shell::tests::enter_key_with_empty_input_does_nothing ... ok
[INFO] [stdout] test usecases::shell::tests::enter_key_with_whitespace_only_does_nothing ... ok
[INFO] [stdout] test usecases::shell::tests::esc_key_switches_focus_back_to_chat_list ... ok
[INFO] [stdout] test usecases::shell::tests::esc_key_switches_from_message_input_to_messages_pane ... ok
[INFO] [stdout] test usecases::shell::tests::h_key_switches_focus_back_to_chat_list ... ok
[INFO] [stdout] test usecases::shell::tests::i_key_does_nothing_when_no_chat_is_open ... ok
[INFO] [stdout] test usecases::shell::tests::i_key_switches_to_message_input_mode_when_chat_is_open ... ok
[INFO] [stdout] test usecases::shell::tests::in_flight_guard_resets_after_result ... ok
[INFO] [stdout] test usecases::shell::tests::integration_smoke_fallback_error_then_empty_list ... ok
[INFO] [stdout] test usecases::shell::tests::integration_smoke_happy_path_startup_load_navigate_and_open_chat ... ok
[INFO] [stdout] test usecases::shell::tests::jk_keys_navigate_messages_when_in_messages_pane ... ok
[INFO] [stdout] test usecases::shell::tests::keeps_running_on_regular_key ... ok
[INFO] [stdout] test usecases::shell::tests::key_contract_navigates_chat_list_with_vim_keys ... ok
[INFO] [stdout] test usecases::shell::tests::l_key_does_nothing_when_no_chat_selected ... ok
[INFO] [stdout] test usecases::shell::tests::l_key_opens_chat_and_switches_focus ... ok
[INFO] [stdout] test usecases::shell::tests::message_input_state_preserved_when_switching_panes ... ok
[INFO] [stdout] test usecases::shell::tests::message_sent_error_restores_text_in_input ... ok
[INFO] [stdout] test usecases::shell::tests::message_sent_refresh_updates_messages ... ok
[INFO] [stdout] test usecases::shell::tests::message_sent_success_keeps_input_cleared ... ok
[INFO] [stdout] test usecases::shell::tests::messages_loaded_error_sets_error_state ... ok
[INFO] [stdout] test usecases::shell::tests::messages_loaded_result_sets_ready_state ... ok
[INFO] [stdout] test usecases::shell::tests::q_key_types_q_in_message_input_mode_instead_of_quitting ... ok
[INFO] [stdout] test usecases::shell::tests::rapid_pane_switching_maintains_consistent_state ... ok
[INFO] [stdout] test usecases::shell::tests::refresh_from_empty_shows_loader ... ok
[INFO] [stdout] test usecases::shell::tests::refresh_from_error_shows_loader ... ok
[INFO] [stdout] test usecases::shell::tests::refresh_from_ready_keeps_data_visible ... ok
[INFO] [stdout] test usecases::shell::tests::refresh_key_dispatches_chat_list ... ok
[INFO] [stdout] test usecases::shell::tests::stale_messages_result_is_discarded ... ok
[INFO] [stdout] test usecases::shell::tests::stops_on_quit_event ... ok
[INFO] [stdout] test usecases::shell::tests::text_input_in_message_input_mode ... ok
[INFO] [stdout] test usecases::shell::tests::tick_dispatches_chat_list_when_loading ... ok
[INFO] [stdout] test usecases::shell::tests::tick_does_not_dispatch_when_chat_list_is_ready ... ok
[INFO] [stdout] test usecases::shell::tests::updates_connectivity_status_on_connectivity_event ... ok
[INFO] [stdout] test ui::message_rendering::tests::groups_consecutive_messages_from_same_sender ... ok
[INFO] [stdout] test telegram::auth::tests::auth_runtime_enables_io_driver_for_tcp ... ok
[INFO] [stdout] test usecases::logout::tests::logout_is_idempotent_when_no_files_exist ... ok
[INFO] [stdout] test usecases::guided_auth::tests::e2e_happy_path_without_2fa_authenticates_and_persists_session ... ok
[INFO] [stdout] test usecases::startup::tests::broken_session_goes_to_guided_auth ... ok
[INFO] [stdout] test usecases::logout::tests::logout_removes_session_and_policy_marker ... ok
[INFO] [stdout] test usecases::startup::tests::held_lock_blocks_second_acquisition ... ok
[INFO] [stdout] test usecases::startup::tests::legacy_marker_session_is_treated_as_broken_and_forces_reauth ... ok
[INFO] [stdout] test infra::logging::tests::cleanup_old_logs_ignores_unrelated_files ... ok
[INFO] [stdout] test usecases::startup::tests::missing_session_goes_to_guided_auth ... ok
[INFO] [stdout] test usecases::guided_auth::tests::e2e_2fa_required_authenticates_after_password_step ... ok
[INFO] [stdout] test usecases::guided_auth::tests::persist_session_marker_creates_parent_dir_and_replaces_existing_file ... ok
[INFO] [stdout] test usecases::guided_auth::tests::status_snapshot_is_printed_for_ui_actions_when_available ... ok
[INFO] [stdout] test usecases::guided_auth::tests::e2e_2fa_password_preserves_boundary_spaces_for_verification ... ok
[INFO] [stdout] test usecases::guided_auth::tests::successful_auth_clears_policy_invalid_marker ... ok
[INFO] [stdout] test usecases::startup::tests::policy_invalid_marker_short_circuits_to_guided_auth_without_probe ... ok
[INFO] [stdout] test usecases::guided_auth::tests::timeout_then_successful_retry ... ok
[INFO] [stdout] test usecases::guided_auth::tests::e2e_wrong_code_retries_then_succeeds ... ok
[INFO] [stdout] test usecases::startup::tests::stale_lock_file_on_disk_does_not_block_startup ... ok
[INFO] [stdout] test usecases::startup::tests::e2e_restart_reconnect_reuses_persisted_session ... ok
[INFO] [stdout] test usecases::startup::tests::logout_reset_results_in_disconnected_state_and_clean_relogin_path ... ok
[INFO] [stdout] test usecases::startup::tests::revoked_protocol_session_goes_to_guided_auth_and_marks_policy_invalid ... ok
[INFO] [stdout] test usecases::startup::tests::valid_session_and_probe_launch_tui ... ok
[INFO] [stdout] test usecases::startup::tests::probe_timeout_falls_back_to_launch_tui_with_warning ... ok
[INFO] [stdout] test usecases::startup::tests::probe_network_error_falls_back_to_launch_tui_with_warning ... ok
[INFO] [stdout] test infra::logging::tests::cleanup_old_logs_removes_excess_files ... ok
[INFO] [stdout] test usecases::startup::tests::revoked_then_successful_guided_auth_clears_policy_marker_and_next_startup_launches_tui ... ok
[INFO] [stdout] test domain::message_input_state::tests::insert_char_respects_max_length_limit ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 294 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.41s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "c8828ec21d6a45ab38897b876c58995a43973d4a1d8e7a893fe5c58ba7a75e98", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c8828ec21d6a45ab38897b876c58995a43973d4a1d8e7a893fe5c58ba7a75e98", kill_on_drop: false }`
[INFO] [stdout] c8828ec21d6a45ab38897b876c58995a43973d4a1d8e7a893fe5c58ba7a75e98
