[INFO] fetching crate sshub 0.17.3...
[INFO] testing sshub-0.17.3 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate sshub 0.17.3 into /workspace/builds/worker-0-tc2/source
[INFO] started tweaking crates.io crate sshub 0.17.3
[INFO] removed 0 missing examples
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate sshub 0.17.3
[INFO] tweaked toml for crates.io crate sshub 0.17.3 written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate sshub 0.17.3 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate sshub 0.17.3 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb
[INFO] running `Command { std: "docker" "start" "9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling cc v1.2.62
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling critical-section v1.2.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling compact_str v0.9.1
[INFO] [stderr]    Compiling libdbus-sys v0.2.7
[INFO] [stderr]    Compiling lru v0.18.0
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling time-core v0.1.9
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling line-clipping v0.3.7
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling openssl-src v300.6.1+3.6.3
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling block-padding v0.3.3
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling openssl-sys v0.9.117
[INFO] [stderr]    Compiling libz-sys v1.1.29
[INFO] [stderr]    Compiling libssh2-sys v0.3.2
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling cbc v0.1.2
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling dbus v0.9.11
[INFO] [stderr]    Compiling vte v0.15.0
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling num v0.4.3
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling instant v0.1.13
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling time v0.3.53
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling inotify v0.10.2
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling notify-types v1.0.1
[INFO] [stderr]    Compiling vt100 v0.16.2
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling serial2 v0.2.37
[INFO] [stderr]    Compiling filetime v0.2.29
[INFO] [stderr]    Compiling nucleo-matcher v0.3.1
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling shell-words v1.1.1
[INFO] [stderr]    Compiling downcast-rs v1.2.1
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling notify v7.0.0
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling dbus-secret-service v4.1.0
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling nucleo v0.3.0
[INFO] [stderr]    Compiling keyring v3.6.3
[INFO] [stderr]    Compiling filedescriptor v0.8.3
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling portable-pty v0.9.0
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling ratatui-core v0.1.2
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling ratatui-widgets v0.3.2
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.2
[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 ratatui-macros v0.7.2
[INFO] [stderr]    Compiling tui-term v0.3.4
[INFO] [stderr]    Compiling ratatui v0.30.2
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling rusqlite v0.32.1
[INFO] [stderr]    Compiling ssh2 v0.9.6
[INFO] [stderr]    Compiling sshub v0.17.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<u64>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/theme/model.rs:466:14
[INFO] [stdout]     |
[INFO] [stdout] 466 |             .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |current| {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 466 -             .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |current| {
[INFO] [stdout] 466 +             .try_update(Ordering::Relaxed, Ordering::Relaxed, |current| {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 48s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.28.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] running `Command { std: "docker" "inspect" "9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<u64>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/theme/model.rs:466:14
[INFO] [stdout]     |
[INFO] [stdout] 466 |             .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |current| {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 466 -             .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |current| {
[INFO] [stdout] 466 +             .try_update(Ordering::Relaxed, Ordering::Relaxed, |current| {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling sshub v0.17.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<u64>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/theme/model.rs:466:14
[INFO] [stdout]     |
[INFO] [stdout] 466 |             .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |current| {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 466 -             .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |current| {
[INFO] [stdout] 466 +             .try_update(Ordering::Relaxed, Ordering::Relaxed, |current| {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 31.59s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.28.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] running `Command { std: "docker" "inspect" "9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: use of deprecated method `std::sync::atomic::Atomic::<u64>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stderr]    --> src/theme/model.rs:466:14
[INFO] [stderr]     |
[INFO] [stderr] 466 |             .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |current| {
[INFO] [stderr]     |              ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] help: replace the use of the deprecated method
[INFO] [stderr]     |
[INFO] [stderr] 466 -             .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |current| {
[INFO] [stderr] 466 +             .try_update(Ordering::Relaxed, Ordering::Relaxed, |current| {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: `sshub` (lib) generated 1 warning (run `cargo fix --lib -p sshub` to apply 1 suggestion)
[INFO] [stderr] warning: `sshub` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.53s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.28.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/sshub/cdd552ae56b0b7e5/out/sshub-cdd552ae56b0b7e5)
[INFO] [stdout] 
[INFO] [stdout] running 1418 tests
[INFO] [stdout] test app::adhoc::tests::parses_host_port ... ok
[INFO] [stdout] test app::adhoc::tests::parses_user_host_port ... ok
[INFO] [stdout] test app::adhoc::tests::build_argv_includes_port_flag_only_with_port ... ok
[INFO] [stdout] test app::adhoc::tests::rejects_empty_and_control ... ok
[INFO] [stdout] test app::adhoc::tests::rejects_bad_port ... ok
[INFO] [stdout] test app::adhoc::tests::rejects_leading_dash_user ... ok
[INFO] [stdout] test app::adhoc::tests::parses_bracketed_ipv6_no_port ... ok
[INFO] [stdout] test app::adhoc::tests::rejects_leading_dash_host ... ok
[INFO] [stdout] test app::adhoc::tests::build_argv_ipv6_destination_has_no_brackets ... ok
[INFO] [stdout] test app::adhoc::tests::parses_user_at_host ... ok
[INFO] [stdout] test app::adhoc::tests::parses_bracketed_ipv6_with_user ... ok
[INFO] [stdout] test app::adhoc::tests::parses_bracketed_ipv6_with_port ... ok
[INFO] [stdout] test app::adhoc::tests::rejects_empty_user_and_empty_host ... ok
[INFO] [stdout] test app::adhoc::tests::rejects_whitespace ... ok
[INFO] [stdout] test app::adhoc::tests::parses_bare_host ... ok
[INFO] [stdout] test app::local_shell::tests::passes_through_non_empty_shell ... ok
[INFO] [stdout] test app::local_shell::tests::empty_string_falls_back_to_bin_sh ... ok
[INFO] [stdout] test app::adhoc::tests::bare_unbracketed_ipv6_is_host_not_host_port ... ok
[INFO] [stdout] test app::snippets::tests::matches_name ... ok
[INFO] [stdout] test app::local_shell::tests::none_falls_back_to_bin_sh ... ok
[INFO] [stdout] test app::session_picker::tests::endpoint_label_omits_every_unknown_part ... ok
[INFO] [stdout] test app::snippets::tests::empty_query_keeps_store_order ... ok
[INFO] [stdout] test app::snippets::tests::no_match_is_empty ... ok
[INFO] [stdout] test app::snippets::tests::matches_tag_and_description ... ok
[INFO] [stdout] test app::snippets::tests::matches_command_body ... ok
[INFO] [stdout] test app::adhoc::tests::rejects_double_at ... ok
[INFO] [stdout] test app::adhoc::tests::build_argv_places_double_dash_before_destination ... ok
[INFO] [stdout] test app::tests::broadcast::wizard_pick_esc_closes ... ok
[INFO] [stdout] test app::audit::tests::audit_tab_lists_launched_event_after_tab_switch ... ok
[INFO] [stdout] test app::tests::broadcast::open_broadcast_refuses_while_run_in_progress ... ok
[INFO] [stdout] test app::tests::broadcast::wizard_group_target_flow_pick_command_preview ... ok
[INFO] [stdout] test app::tests::broadcast::cancel_broadcast_sets_the_shared_flag ... ok
[INFO] [stdout] test app::tests::broadcast::the_broadcast_panel_renders_through_the_active_theme ... ok
[INFO] [stdout] test app::tests::broadcast::wizard_preview_esc_closes ... ok
[INFO] [stdout] test app::tests::broadcast::tick_broadcast_folds_events_settles_and_audits_once ... ok
[INFO] [stdout] test app::auth::tests::cancellation_closes_helper_then_child_and_fails_open_screen ... ok
[INFO] [stdout] test app::tests::broadcast::wizard_tag_target_resolves_only_tagged_hosts ... ok
[INFO] [stdout] test app::auth::tests::host_key_modal_answer_is_never_a_credential ... ok
[INFO] [stdout] test app::auth::tests::restore_finds_remembered_password_without_row_flag ... ok
[INFO] [stdout] test app::auth::tests::failed_remember_save_leaves_one_audit_error_row ... ok
[INFO] [stdout] test app::auth::tests::channel_modal_masks_paste_reopens_and_caps_attempts ... ok
[INFO] [stdout] test app::tests::cert_agent::agent_add_passes_cert_alongside_key ... ok
[INFO] [stdout] test app::tests::ghost::ctrl_f_accepts_like_tab ... ok
[INFO] [stdout] test app::tests::ghost::ghost_accepts_mixed_case_exact_prefix ... ok
[INFO] [stdout] test app::tests::ghost::fully_typed_line_has_no_ghost_and_tab_forwards ... ok
[INFO] [stdout] test app::auth::tests::concurrent_auth_requests_serialize_in_session_order ... ok
[INFO] [stdout] test app::auth::tests::changed_key_repair_requires_uppercase_and_reconnects_adhoc_config ... ok
[INFO] [stdout] test app::tests::ghost::ghost_accept_writes_suffix_only ... ok
[INFO] [stdout] test app::tests::ghost::fuzzy_tier_matches_are_suppressed_but_prefix_match_shows ... ok
[INFO] [stdout] test app::tests::ghost::ghost_hides_on_alternate_screen_short_prefix_and_cursor_move ... ok
[INFO] [stdout] test app::tests::cert_agent::agent_add_warns_when_cert_does_not_match_key ... ok
[INFO] [stdout] test app::tests::ghost::ghost_hides_case_only_prefix_match ... ok
[INFO] [stdout] test app::tests::host_crud::duplicate_legacy_preserves_session_logging_override ... ok
[INFO] [stdout] test app::tests::ghost::ghost_host_cache_reloads_on_limit_change ... ok
[INFO] [stdout] test app::tests::ghost::ghost_shows_first_line_suffix_in_dim_cells ... ok
[INFO] [stdout] test app::tests::ghost::ghost_ranks_snippets_with_history_as_one_list ... ok
[INFO] [stdout] test app::tests::host_detail::e_enters_host_detail_with_edit_buffers ... ok
[INFO] [stdout] test app::tests::host_detail::favourite_toggle_updates_metadata ... ok
[INFO] [stdout] test app::tests::host_detail::host_detail_esc_discards_unsaved_edits ... ok
[INFO] [stdout] test app::tests::host_detail::favourite_toggle_works_in_host_detail ... ok
[INFO] [stdout] test app::tests::ghost::manual_password_before_latch_still_records_first_post_auth_command ... ok
[INFO] [stdout] test app::tests::ghost::tab_without_ghost_forwards_to_shell ... ok
[INFO] [stdout] test app::tests::host_detail::host_detail_save_persists_metadata ... ok
[INFO] [stdout] test app::tests::host_detail::host_detail_managed_save_persists_session_logging ... ok
[INFO] [stdout] test app::tests::host_detail::host_detail_save_preserves_session_logging_override ... ok
[INFO] [stdout] test app::tests::ghost::remote_password_session_ghosts_second_prefix_after_first_command ... ok
[INFO] [stdout] test app::tests::host_detail::reload_hosts_builds_entries_with_metadata_defaults ... ok
[INFO] [stdout] test app::tests::ghost::render_performs_zero_pty_writes ... ok
[INFO] [stdout] test app::tests::host_form::ctrl_u_and_ctrl_w_clear_the_focused_form_field ... ok
[INFO] [stdout] test app::tests::host_detail::host_detail_session_logging_cycle_and_save ... ok
[INFO] [stdout] test app::tests::host_form::an_unreadable_store_says_so_instead_of_showing_an_empty_field ... ok
[INFO] [stdout] test app::tests::ghost::esc_dismisses_without_forwarding_and_stays_hidden_until_input_changes ... ok
[INFO] [stdout] test app::tests::host_form::identity_form_prefills_the_stored_passphrase ... ok
[INFO] [stdout] ]52;c;czNjcmV0]52;c;czNjcmV0test app::tests::host_form::reveal_and_copy_binds_differ_and_never_echo_the_secret ... ok
[INFO] [stdout] test app::tests::host_form::ctrl_u_on_a_non_text_row_leaves_the_address_alone ... ok
[INFO] [stdout] test app::tests::host_form::clearing_the_passphrase_removes_it_from_the_store ... ok
[INFO] [stdout] ]52;c;czNjcmV0LXB3test app::tests::host_form::host_form_picker_at_boundary_moves_to_adjacent_field ... ok
[INFO] [stdout] test app::tests::host_form::secret_field_hints_name_the_binds_and_follow_rebinds ... ok
[INFO] [stdout] test app::tests::host_form::the_password_row_shows_the_reveal_bind_at_80x24 ... ok
[INFO] [stdout] test app::tests::host_form::multiline_paste_into_form_stays_in_field ... ok
[INFO] [stdout] test app::tests::host_form::host_form_up_down_navigate_fields_in_both_directions ... ok
[INFO] [stdout] test app::tests::host_form::reveal_bind_is_ignored_away_from_the_secret_field ... ok
[INFO] [stdout] test app::tests::host_form::saving_an_untouched_form_keeps_the_stored_passphrase ... ok
[INFO] [stdout] test app::tests::identity_group::keychain_create_edit_delete_flow ... ok
[INFO] [stdout] test app::tests::identity_group::identity_grid_navigation_moves_by_row_and_column ... ok
[INFO] [stdout] test app::tests::identity_group::agent_snapshot_refreshes_when_stale_without_waiting_for_the_keys_tab ... ok
[INFO] [stdout] test app::tests::identity_group::missing_stored_secret_yields_an_explicit_will_prompt_diagnostic ... ok
[INFO] [stdout] test app::tests::keybind::parse_keyspec_handles_common_forms ... ok
[INFO] [stdout] test app::tests::identity_group::keyless_identity_secret_is_a_login_password ... ok
[INFO] [stdout] test app::tests::identity_group::key_passphrase_outranks_a_remembered_host_password ... ok
[INFO] [stdout] test app::tests::ghost::ghost_completes_from_opt_in_host_history ... ok
[INFO] [stdout] test app::tests::keybind::ctrl_c_confirms_then_forces ... ok
[INFO] [stdout] test app::tests::keybind::keybind_editor_esc_clears_query_then_closes ... ok
[INFO] [stdout] test app::tests::ghost::remote_interactive_bash_ghosts_second_prefix_after_first_command ... ok
[INFO] [stdout] test app::tests::keybind::quit_asks_for_confirmation_by_default ... ok
[INFO] [stdout] test app::tests::keybind::is_save_key_respects_config ... ok
[INFO] [stdout] test app::tests::keybind::help_filter_matches_and_esc_clears ... ok
[INFO] [stdout] test app::tests::keybind::q_and_ctrl_c_quit ... ok
[INFO] [stdout] test app::tests::log_browser::blank_bookmark_name_falls_back_to_line_number ... ok
[INFO] [stdout] test app::tests::keybind::quit_confirmation_can_be_disabled ... ok
[INFO] [stdout] test app::tests::keybind::keybind_editor_selection_resets_on_keystroke ... ok
[INFO] [stdout] test app::tests::ghost::unsafe_commands_never_ghost ... ok
[INFO] [stdout] test app::tests::keybind::keybind_editor_captures_and_persists ... ok
[INFO] [stdout] test app::tests::log_browser::bookmark_a_line_and_jump_back ... ok
[INFO] [stdout] test app::tests::keybind::rebinding_add_host_action_takes_effect ... ok
[INFO] [stdout] test app::tests::log_browser::browse_hosts_segments_and_open_viewer ... ok
[INFO] [stdout] test app::tests::log_browser::delete_bookmark_from_the_list ... ok
[INFO] [stdout] test app::tests::log_browser::capital_n_steps_backwards_through_matches ... ok
[INFO] [stdout] test app::tests::misc::base64_encode_known_vectors ... ok
[INFO] [stdout] test app::tests::log_browser::bookmark_jump_loads_another_segment_of_the_same_host ... ok
[INFO] [stdout] test app::tests::log_browser::esc_walks_back_out_of_the_browser ... ok
[INFO] [stdout] test app::tests::log_browser::empty_logs_root_opens_with_no_hosts ... ok
[INFO] [stdout] test app::tests::log_browser::esc_cancels_search_and_clears_state ... ok
[INFO] [stdout] test app::tests::misc::a_tunnel_deleted_elsewhere_leaves_this_windows_list_on_the_next_sync ... ok
[INFO] [stdout] test app::tests::misc::clear_ssh_log_keeps_command_line ... ok
[INFO] [stdout] test app::tests::misc::backspace_discards_pasted_key_blob ... ok
[INFO] [stdout] test app::tests::misc::bare_char_does_not_open_palette ... ok
[INFO] [stdout] test app::tests::keybind::keybind_editor_clamps_selection_after_bind_leaves_filter ... ok
[INFO] [stdout] test app::tests::misc::a_paste_reaches_the_tunnel_form_port_field ... ok
[INFO] [stdout] test app::tests::misc::keyevent_to_spec_roundtrips ... ok
[INFO] [stdout] test app::tests::misc::header_stats_count_toward_their_target ... ok
[INFO] [stdout] test app::tests::log_browser::search_jumps_to_match ... ok
[INFO] [stdout] test app::tests::misc::fold_replays_the_subtree_while_nav_rows_collapse_at_once ... ok
[INFO] [stdout] test app::tests::misc::alt_p_creates_second_profile_from_single_profile ... ok
[INFO] [stdout] test app::tests::misc::fresh_ping_sample_grows_into_the_sparkline ... ok
[INFO] [stdout] test app::tests::misc::host_scroll_chases_its_target_over_several_frames ... ok
[INFO] [stdout] test app::tests::misc::nested_groups_build_tree_and_collapse_subtree ... ok
[INFO] [stdout] test app::tests::misc::help_scroll_stops_at_render_ceiling ... ok
[INFO] [stdout] test app::tests::misc::j_k_type_into_search_query ... ok
[INFO] [stdout] test app::tests::misc::palette_types_nav_letters ... ok
[INFO] [stdout] test app::tests::misc::navigation_wraps_around ... ok
[INFO] [stdout] test app::tests::misc::ping_class_change_flashes_the_status_dot ... ok
[INFO] [stdout] test app::tests::misc::paste_in_normal_mode_is_ignored ... ok
[INFO] [stdout] test app::tests::misc::ping_flash_is_off_under_reduced_motion ... ok
[INFO] [stdout] test app::tests::misc::ping_flash_peaks_on_the_text_bright_role_not_the_semantic_token ... ok
[INFO] [stdout] test app::tests::misc::push_key_from_hosts_opens_picker_without_visiting_keys_tab ... ok
[INFO] [stdout] test app::tests::misc::reload_hosts_skips_unresolved_and_preserves_selection ... ok
[INFO] [stdout] test app::tests::misc::slash_opens_palette_mode ... ok
[INFO] [stdout] test app::tests::misc::sort_mode_label_orders_by_display_name ... ok
[INFO] [stdout] test app::tests::misc::shift_arrow_jumps_between_group_headers ... ok
[INFO] [stdout] test app::tests::misc::pasted_key_material_is_written_to_a_file_on_save ... ok
[INFO] [stdout] test app::tests::misc::host_scroll_snaps_under_reduced_motion ... ok
[INFO] [stdout] test app::tests::keybind::keybind_editor_filter_rebinds_filtered_action ... ok
[INFO] [stdout] test app::tests::misc::the_tunnel_selection_follows_its_row_across_a_sync ... ok
[INFO] [stdout] test app::tests::profile_manager::compatibility_mode_explains_unavailable_management_without_state_writes ... ok
[INFO] [stdout] test app::tests::keybind::keybind_editor_letters_go_to_query_not_row_actions ... ok
[INFO] [stdout] test app::tests::profile_manager::connecting_sftp_and_waiting_tunnel_reject_profile_switch ... ok
[INFO] [stdout] test app::tests::profile_manager::initial_create_escape_returns_directly_to_dashboard ... ok
[INFO] [stdout] test app::tests::profile_manager::exhausted_tunnel_reconnect_allows_profile_switch ... ok
[INFO] [stdout] test app::tests::profile_manager::finished_unaudited_broadcast_blocks_profile_switch ... ok
[INFO] [stdout] test app::auth::tests::remember_only_eligible_targets_and_only_after_connected ... ok
[INFO] [stdout] test app::tests::profile_manager::detached_local_session_blocks_switch_until_closed ... ok
[INFO] [stdout] test app::tests::profile_manager::pending_profile_rechecks_resources_before_loading ... ok
[INFO] [stdout] test app::tests::profile_manager::manager_queues_other_profile_without_mutating_active_or_last_used ... ok
[INFO] [stdout] test app::tests::session::a_session_under_the_picker_is_still_visible ... ok
[INFO] [stdout] test app::tests::keybind::upgrade_strips_help_shift_h_so_known_hosts_opens ... ok
[INFO] [stdout] test app::tests::profile_manager::pending_profile_load_failure_keeps_workspace_and_last_used ... ok
[INFO] [stdout] test app::tests::profile_manager::selecting_current_profile_closes_without_rebuild_even_while_busy ... ok
[INFO] [stdout] test app::tests::session::a_background_sessions_write_is_not_replayed_when_it_comes_to_the_front ... ok
[INFO] [stdout] test app::tests::profile_manager::profile_create_paste_inserts_at_cursor_without_submitting ... ok
[INFO] [stdout] test app::tests::profile_manager::remapped_profile_action_roundtrips_and_opens_manager ... ok
[INFO] [stdout] test app::tests::profile_manager::profile_list_and_delete_confirmation_ignore_pasted_commands ... ok
[INFO] [stdout] test app::tests::profile_manager::profile_rename_paste_waits_for_explicit_submit ... ok
[INFO] [stdout] test app::tests::session::a_wheel_that_cannot_scroll_leaves_the_selection_where_it_is ... ok
[INFO] [stdout] test app::tests::profile_manager::settings_profile_action_creates_and_esc_returns_to_settings ... ok
[INFO] [stdout] test app::tests::profile_manager::pending_profile_success_replaces_workspace_and_records_last_used ... ok
[INFO] [stdout] test app::tests::session::enter_starts_embedded_session ... ok
[INFO] [stdout] test app::tests::session::ctrl_t_opens_host_picker ... ok
[INFO] [stdout] test app::tests::session::a_wheel_on_the_alternate_screen_names_the_tmux_switch_once ... ok
[INFO] [stdout] test app::tests::profile_manager::pending_profile_database_failure_keeps_old_store_usable ... ok
[INFO] [stdout] test app::tests::session::only_the_visible_session_relays_its_clipboard_write ... ok
[INFO] [stdout] test app::tests::session::session_picker_opener_refuses_to_replace_an_open_picker ... ok
[INFO] [stdout] test app::tests::session::session_picker_paste_lands_in_the_query ... ok
[INFO] [stdout] test app::tests::session::sftp_left_pane_picker_filters_and_dispatches ... ok
[INFO] [stdout] test app::tests::session::session_strip_cycle_and_sftp_from_non_hosts_tab ... ok
[INFO] [stdout] test app::tests::session::sftp_o_still_opens_left_pane_picker_with_background_session ... ok
[INFO] [stdout] test app::tests::session::tab_toggles_detail_focus ... ok
[INFO] [stdout] test app::tests::session::shutdown_all_kills_detached_sessions ... ok
[INFO] [stdout] test app::tests::session::session_switcher_hotkey_from_dashboard_and_session ... ok
[INFO] [stdout] test app::tests::session::session_switcher_enter_derives_mode_from_target_phase ... ok
[INFO] [stdout] test app::tests::session::session_switcher_phase_change_while_open ... ok
[INFO] [stdout] test app::tests::sftp::dot_types_into_the_filter_instead_of_toggling ... ok
[INFO] [stdout] test app::tests::sftp::failed_relay_leg_stops_and_keeps_the_item ... ok
[INFO] [stdout] test app::tests::sftp::failed_relay_is_not_restarted_by_the_trailing_completion ... ok
[INFO] [stdout] test app::tests::sftp::sftp_directory_change_stamps_its_direction ... ok
[INFO] [stdout] test app::tests::session::closing_the_picker_always_lands_in_a_live_mode ... ok
[INFO] [stdout] test app::tests::session::the_config_opt_out_drops_every_relay ... ok
[INFO] [stdout] test app::tests::sftp::sftp_progress_bar_chases_the_reported_figure ... ok
[INFO] [stdout] test app::tests::sftp::failed_run_does_not_dispatch_another_pass ... ok
[INFO] [stdout] test app::tests::sftp::sftp_picker_search_connects_to_filtered_host ... ok
[INFO] [stdout] test app::tests::session::the_dashboard_relays_nothing_and_keeps_nothing ... ok
[INFO] [stdout] test app::tests::session::the_sftp_browser_relays_nothing ... ok
[INFO] [stdout] test app::tests::snippets::delete_marks_the_form_dirty ... ok
[INFO] [stdout] test app::tests::session::session_tabs_switch_detach_and_focus ... ok
[INFO] [stdout] test app::tests::sftp::hidden_setting_round_trips_through_the_store ... ok
[INFO] [stdout] test app::tests::sftp::server_to_server_transfer_relays_in_two_legs ... ok
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test app::tests::sftp::the_sftp_tab_renders_through_the_active_theme ... ok
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test app::tests::snippets::paste_reaches_the_snippet_form ... ok
[INFO] [stdout] test app::tests::snippets::injecting_with_no_session_reports_a_notice ... ok
[INFO] [stdout] test app::tests::snippets::enter_runs_snippet_and_returns_to_session ... ok
[INFO] [stdout] test app::tests::snippets::ctrl_n_is_inert_over_a_connecting_session ... ok
[INFO] [stdout] test app::tests::snippets::esc_cancels_picker_back_to_session ... ok
[INFO] [stdout] test app::tests::session::session_switcher_matching_and_navigation ... ok
[INFO] [stdout] test app::tests::snippets::session_snippets_key_opens_picker_over_session ... ok
[INFO] [stdout] test app::tests::snippets::tab_inserts_snippet_without_running ... ok
[INFO] [stdout] test app::tests::suggestions::failed_local_shell_creation_over_remote_leaves_prior_session_untouched ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 1417 filtered out; finished in 0.32s
[INFO] [stdout] 
[INFO] [stdout] test app::tests::suggestions::failed_local_shell_creation_over_remote_leaves_prior_session_untouched ... ok
[INFO] [stdout] test app::tests::suggestions::failed_local_shell_launch_preserves_prior_session_classification ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 1417 filtered out; finished in 0.27s
[INFO] [stdout] 
[INFO] [stdout] test app::tests::suggestions::failed_local_shell_launch_preserves_prior_session_classification ... ok
[INFO] [stdout] test app::tests::snippets::picker_fuzzy_filters_by_typing ... ok
[INFO] [stdout] test app::tests::suggestions::legacy_multiline_snippet_keeps_bytes_but_is_not_a_history_suggestion ... ok
[INFO] [stdout] test app::tests::suggestions::multiline_paste_forwarding_is_unchanged_and_never_indexed ... ok
[INFO] [stdout] test app::tests::suggestions::remote_session_latches_connected_and_records_typed_commands ... ok
[INFO] [stdout] test app::tests::tags::parse_tags_splits_and_trims ... ok
[INFO] [stdout] test app::tests::suggestions::snippet_insert_allowed_on_running_without_connected_evidence ... ok
[INFO] [stdout] test app::tests::tags::esc_exits_search_and_clears_query_and_tag_filter ... ok
[INFO] [stdout] test app::tests::session::session_strip_binds_work_on_every_dashboard_tab ... ok
[INFO] [stdout] test app::tests::tags::hash_enters_tag_filter_and_enter_applies ... ok
[INFO] [stdout] test app::tests::suggestions::suggestions_and_snippets_send_exact_bracketed_paste_then_enter ... ok
[INFO] [stdout] test app::tests::suggestions::suggestions_require_running_session_not_connecting ... ok
[INFO] [stdout] test app::tests::tags::tag_filter_narrows_candidates_before_search ... ok
[INFO] [stdout] test app::tests::tags::tag_filter_picker_arrow_selects_and_applies_tag ... ok
[INFO] [stdout] test app::tests::tags::tag_filter_picker_enter_after_multiselect_keeps_all_tags ... ok
[INFO] [stdout] test app::tests::tags::tag_filter_picker_all_row_clears_filter ... ok
[INFO] [stdout] test app::tests::suggestions::persistence_is_opt_in_managed_only_and_disabling_keeps_rows ... ok
[INFO] [stdout] test app::tests::tags::tag_filter_picker_esc_keeps_active_filter ... ok
[INFO] [stdout] test app::tests::tags::tag_filter_picker_space_toggles_multiple_tags_and_ands_them ... ok
[INFO] [stdout] test app::tests::tags::tag_filter_picker_space_toggles_tag_off ... ok
[INFO] [stdout] test app::tests::theme_picker::a_missing_active_theme_falls_back_without_rewriting_config ... ok
[INFO] [stdout] test app::tests::suggestions::suggestion_query_cancel_and_remote_output_stay_local ... ok
[INFO] [stdout] test app::tests::theme_picker::a_builtins_manager_can_be_installed_without_any_path ... ok
[INFO] [stdout] test app::tests::theme_picker::a_diagnostic_outranks_the_description ... ok
[INFO] [stdout] test app::tests::theme_picker::a_failed_reload_keeps_the_active_theme_and_explains_itself ... ok
[INFO] [stdout] test app::tests::theme_picker::a_picker_error_outranks_both_the_diagnostics_and_the_description ... ok
[INFO] [stdout] test app::tests::theme_picker::a_directory_level_warning_reaches_the_notice_even_with_a_working_theme ... ok
[INFO] [stdout] test app::tests::theme_picker::a_failed_theme_directory_is_still_the_reload_target ... ok
[INFO] [stdout] test app::tests::theme_picker::a_reload_that_changes_nothing_still_leaves_a_usable_preview ... ok
[INFO] [stdout] test app::tests::theme_picker::a_successful_commit_writes_exactly_once_and_closes_the_picker ... ok
[INFO] [stdout] test app::tests::suggestions::suggestion_query_and_configured_history_limits_are_bounded ... ok
[INFO] [stdout] test app::tests::theme_picker::arrow_keys_wrap_and_home_end_jump_to_the_edges ... ok
[INFO] [stdout] test app::tests::theme_picker::a_user_file_squatting_a_reserved_id_is_listed_as_invalid ... ok
[INFO] [stdout] test app::tests::suggestions::settings_clear_selected_host_session_and_all_scopes_independently ... ok
[INFO] [stdout] test app::tests::theme_picker::an_invalid_active_theme_falls_back_and_is_explained ... ok
[INFO] [stdout] test app::tests::theme_picker::an_unreadable_themes_directory_still_yields_a_working_app ... ok
[INFO] [stdout] test app::tests::theme_picker::a_theme_startup_notice_preserves_an_existing_credential_fallback_notice ... ok
[INFO] [stdout] test app::tests::theme_picker::built_ins_are_listed_first_in_their_frozen_order_then_user_themes ... ok
[INFO] [stdout] test app::tests::theme_picker::a_user_theme_from_the_themes_directory_becomes_active ... ok
[INFO] [stdout] test app::tests::theme_picker::enter_on_theme_setting_opens_the_picker ... ok
[INFO] [stdout] test app::tests::theme_picker::enter_on_an_invalid_theme_writes_nothing_and_keeps_the_picker_open ... ok
[INFO] [stdout] test app::tests::theme_picker::escape_restores_the_captured_rc_when_original_file_disappears ... ok
[INFO] [stdout] test app::tests::theme_picker::failed_save_keeps_preview_active_and_saved_id_unchanged ... ok
[INFO] [stdout] test app::tests::theme_picker::new_with_deps_starts_on_the_built_ins_without_touching_the_filesystem ... ok
[INFO] [stdout] test app::tests::theme_picker::escape_closes_the_picker_back_to_settings_and_restores_the_theme ... ok
[INFO] [stdout] test app::tests::theme_picker::moving_the_selection_puts_the_diagnostics_footer_back_at_the_top ... ok
[INFO] [stdout] test app::tests::theme_picker::deleting_a_squatter_tombstones_the_user_slot_not_the_built_in ... ok
[INFO] [stdout] test app::tests::theme_picker::navigation_previews_valid_and_warning_themes_but_never_invalid_ones ... ok
[INFO] [stdout] test app::tests::theme_picker::opening_the_picker_captures_the_active_theme_without_activating_anything ... ok
[INFO] [stdout] test app::tests::theme_picker::loading_themes_twice_replaces_the_manager_wholesale ... ok
[INFO] [stdout] test app::tests::theme_picker::reload_keeps_the_selection_on_a_reserved_id_squatter ... ok
[INFO] [stdout] test app::tests::theme_picker::reload_after_deleting_the_preview_keeps_the_theme_and_leaves_a_tombstone ... ok
[INFO] [stdout] test app::tests::theme_picker::open_navigation_reload_and_escape_never_write ... ok
[INFO] [stdout] test app::tests::theme_picker::reload_readopts_the_preview_from_the_new_registry_while_an_invalid_row_is_selected ... ok
[INFO] [stdout] test app::tests::theme_picker::every_path_that_changes_the_painted_theme_invalidates_it ... ok
[INFO] [stdout] test app::tests::theme_picker::reload_adopts_a_repaired_theme_file ... ok
[INFO] [stdout] test app::tests::theme_picker::reload_without_a_themes_directory_is_a_no_op ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::help_screen_lists_profile_transfer_key ... ok
[INFO] [stdout] test app::tests::suggestions::indexing_rejects_prompt_context_unauthenticated_and_multiline_input ... ok
[INFO] [stdout] test app::tests::theme_picker::theme_row_is_an_action_and_space_does_not_toggle_it ... ok
[INFO] [stdout] test app::tests::theme_picker::shift_arrows_are_wired_to_the_diagnostics_scroll ... ok
[INFO] [stdout] test app::tests::theme_picker::typed_settings_preserve_every_existing_toggle ... ok
[INFO] [stdout] test app::tests::theme_picker::the_theme_accessors_report_what_the_manager_holds ... ok
[INFO] [stdout] test app::tests::theme_picker::the_footer_shows_the_description_when_nothing_is_wrong ... ok
[INFO] [stdout] test app::tests::theme_picker::the_diagnostics_footer_scrolls_to_every_ignored_role ... ok
[INFO] [stdout] test app::tests::theme_picker::theme_returns_the_managers_active_theme ... ok
[INFO] [stdout] test app::tests::theme_picker::theme_activation_settles_the_popup_open_slide ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_dest_ranking_is_fuzzy_not_substring ... ok
[INFO] [stdout] test app::tests::theme_picker::theme_activation_clears_every_old_theme_snapshot_and_slide ... ok
[INFO] [stdout] test app::tests::theme_picker::the_reload_key_is_wired_to_the_picker ... ok
[INFO] [stdout] test app::tests::session::session_switcher_hotkey_works_from_every_dashboard_tab ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::profile_manager_footer_advertises_transfer_key ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_tui_group_only_vs_with_hosts_prompt ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_tui_plan_confirm_dialog ... ok
[INFO] [stdout] test app::tests::transport::connect_argv_uses_group_inherited_values ... ok
[INFO] [stdout] test app::tests::transport::legacy_host_mosh_uses_alias_argv ... ok
[INFO] [stdout] test app::tests::transport::mosh_alias_accept_new_when_stored_secret ... ok
[INFO] [stdout] test app::tests::transport::mosh_managed_accept_new_when_stored_secret ... ok
[INFO] [stdout] test app::tests::transport::mosh_skips_accept_new_without_stored_secret ... ok
[INFO] [stdout] test app::tests::transport::session_argv_stays_ssh_by_default ... ok
[INFO] [stdout] test app::tests::transport::session_argv_uses_mosh_when_transport_set ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_arm_accepts_lowercase_t_from_list ... ok
[INFO] [stdout] test app::types::known_hosts_state_tests::filtered_indices_matches_host_and_fingerprint ... ok
[INFO] [stdout] test app::types::panel_id_tests::default_focus_is_hosts ... ok
[INFO] [stdout] test app::types::panel_id_tests::neighbor_moves_across_the_bento_grid ... ok
[INFO] [stdout] test app::types::panel_id_tests::neighbor_returns_none_at_edges ... ok
[INFO] [stdout] test app::tests::transport::ssh_config_managed_mosh_uses_alias ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_arm_ignores_t_typed_as_profile_name ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_confirm_on_empty_plan_refuses_with_notice ... ok
[INFO] [stdout] test app::util::sftp_ssh_host_tests::imported_host_fills_credentials_from_ssh_config ... ok
[INFO] [stdout] test app::util::tests::contract_prefix_collapses_only_paths_under_that_home ... ok
[INFO] [stdout] test broadcast::tests::all_terminal_and_done_count ... ok
[INFO] [stdout] test broadcast::tests::apply_event_does_not_resurrect_terminal_row ... ok
[INFO] [stdout] test broadcast::tests::apply_event_ignores_unknown_host_id ... ok
[INFO] [stdout] test app::util::sftp_ssh_host_tests::legacy_entries_pass_through_and_resolution_failure_degrades_gracefully ... ok
[INFO] [stdout] test broadcast::tests::apply_event_transitions_the_right_row_in_place ... ok
[INFO] [stdout] test broadcast::tests::cancel_before_start_marks_all_terminal ... ok
[INFO] [stdout] test broadcast::tests::cancel_reflected_across_all_rows_via_reducer ... ok
[INFO] [stdout] test broadcast::tests::empty_tasks_yields_no_events ... ok
[INFO] [stdout] test app::util::sftp_ssh_host_tests::launcher_hosts_never_consult_the_resolver ... ok
[INFO] [stdout] test broadcast::tests::failure_count_includes_nonzero_exits ... ok
[INFO] [stdout] test app::util::sftp_ssh_host_tests::managed_username_wins_over_ssh_config ... ok
[INFO] [stdout] test broadcast::tests::failures_first_orders_by_rank_stably ... ok
[INFO] [stdout] test broadcast::tests::is_terminal_classifies_states ... ok
[INFO] [stdout] test broadcast::tests::failures_reported_not_panicked ... ok
[INFO] [stdout] test broadcast::tests::real_runner_reports_spawn_failure ... ok
[INFO] [stdout] test broadcast::tests::real_runner_short_circuits_on_precancel ... ok
[INFO] [stdout] test broadcast::tests::secret_is_threaded_per_task_to_the_runner ... ok
[INFO] [stdout] test broadcast::tests::seed_results_one_pending_per_task_in_order ... ok
[INFO] [stdout] test cli::audit::tests::status_values_are_validated ... ok
[INFO] [stdout] test cli::audit::tests::via_values_are_validated ... ok
[INFO] [stdout] test cli::completions::tests::bash_script_contains_top_level ... ok
[INFO] [stdout] test broadcast::tests::concurrency_clamped_to_task_count ... ok
[INFO] [stdout] test cli::completions::tests::every_shell_completes_the_theme_subcommands ... ok
[INFO] [stdout] test cli::completions::tests::host_names_are_shell_escaped ... ok
[INFO] [stdout] test cli::completions::tests::cache_roundtrip ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_dest_picker_enter_chooses_the_highlighted_profile ... ok
[INFO] [stdout] test cli::exec::tests::a_quoted_shell_operator_reaches_ssh_as_one_word ... ok
[INFO] [stdout] test cli::exec::tests::exec_argv_ad_hoc_command_replaces_a_stored_remote_command ... ok
[INFO] [stdout] test cli::exec::tests::exec_argv_appends_the_command_after_the_target ... ok
[INFO] [stdout] test cli::exec::tests::exec_argv_keeps_a_trailing_word_that_only_looks_like_a_stored_command ... ok
[INFO] [stdout] test cli::exec::tests::exec_argv_tty_flag_forces_a_pty ... ok
[INFO] [stdout] test cli::exec::tests::exec_argv_without_a_staged_secret_runs_in_batch_mode ... ok
[INFO] [stdout] test cli::exec::tests::help_scan_ignores_flags_meant_for_the_remote_command ... ok
[INFO] [stdout] test cli::exec::tests::split_at_dashes_takes_everything_after_the_separator_as_the_command ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_dialog_esc_cancels_at_every_stage ... ok
[INFO] [stdout] test cli::exec::tests::split_at_dashes_without_a_separator_leaves_the_command_to_the_positionals ... ok
[INFO] [stdout] test broadcast::tests::exactly_one_terminal_event_per_task ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_dest_picker_truncates_overlong_query_inside_its_rect ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_dialog_lines_cover_every_stage ... ok
[INFO] [stdout] test cli::filter::tests::sort_label_is_case_insensitive_alphabetical ... ok
[INFO] [stdout] test cli::filter::tests::group_filter_unknown_name_returns_empty ... ok
[INFO] [stdout] test cli::filter::tests::tag_and_filter ... ok
[INFO] [stdout] test cli::filter::tests::tag_filter_empty_returns_all ... ok
[INFO] [stdout] test cli::filter::tests::tag_filter_requires_all_tags_not_any ... ok
[INFO] [stdout] test cli::filter::tests::tag_filter_single_matches_every_host_with_that_tag ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_dialog_stays_inside_a_narrow_frame ... ok
[INFO] [stdout] test cli::host::tests::clear_username_only_edit_routes_through_full_path ... ok
[INFO] [stdout] test cli::host::tests::os_icon_only_edit_routes_through_full_path ... ok
[INFO] [stdout] test cli::host::tests::tags_only_edit_stays_metadata_only ... ok
[INFO] [stdout] test cli::host::tests::username_only_edit_routes_through_full_path ... ok
[INFO] [stdout] test cli::identity::tests::identity_record_serializes ... ok
[INFO] [stdout] test cli::inventory::tests::csv_import_report_format ... ok
[INFO] [stdout] test cli::inventory::tests::dry_run_preview_format ... ok
[INFO] [stdout] test cli::inventory::tests::host_import_report_format ... ok
[INFO] [stdout] test cli::inventory::tests::import_report_format ... ok
[INFO] [stdout] test cli::theme::tests::a_rendered_diagnostic_escapes_control_characters ... ok
[INFO] [stdout] test cli::filter::tests::group_filter_is_exact_membership_not_subtree ... ok
[INFO] [stdout] test cli::theme::tests::a_resolved_export_names_its_gradients_the_way_the_author_did ... ok
[INFO] [stdout] test broadcast::tests::pool_bounds_concurrency ... ok
[INFO] [stdout] test cli::filter::tests::group_name_filter ... ok
[INFO] [stdout] test cli::theme::tests::line_column_counts_from_one ... ok
[INFO] [stdout] test cli::filter::tests::sort_group_uses_primary_group_order_not_label ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_flow_renders_a_centered_dialog_not_inline_picker_text ... ok
[INFO] [stdout] test command_safety::tests::accepts_ordinary_single_line_commands ... ok
[INFO] [stdout] test cli::theme::tests::toml_key_segments_are_bare_only_when_they_may_be ... ok
[INFO] [stdout] test cli::group::tests::list_hides_favorites_by_default ... ok
[INFO] [stdout] test command_safety::tests::drops_entire_credential_commands ... ok
[INFO] [stdout] test cli::filter::tests::sort_manual_puts_legacy_hosts_at_tail ... ok
[INFO] [stdout] test command_safety::tests::rejects_ambiguous_shell_syntax_and_controls ... ok
[INFO] [stdout] test config::tests::a_lookalike_key_or_comment_never_triggers_a_migration ... ok
[INFO] [stdout] test cli::theme::tests::a_resolved_export_keeps_the_author ... ok
[INFO] [stdout] test command_safety::tests::enforces_byte_limit_and_nonempty_input ... ok
[INFO] [stdout] test config::tests::an_empty_clipboard_section_keeps_the_default ... ok
[INFO] [stdout] test config::tests::clipboard_relay_can_be_switched_off ... ok
[INFO] [stdout] test config::tests::a_symlinked_legacy_root_aborts_the_migration ... ok
[INFO] [stdout] test config::tests::clipboard_relay_defaults_to_on_for_configs_without_the_section ... ok
[INFO] [stdout] test config::tests::config_dir_path_honours_both_env_overrides_in_order ... ok
[INFO] [stdout] test config::tests::config_dir_path_resolves_without_touching_the_filesystem ... ok
[INFO] [stdout] test config::tests::copy_regular_file_rejects_a_replaced_symlink_source ... ok
[INFO] [stdout] test config::tests::a_symlinked_legacy_entry_aborts_the_migration_untouched ... ok
[INFO] [stdout] test config::tests::copy_regular_file_rejects_an_existing_destination_without_changing_it ... ok
[INFO] [stdout] test config::tests::copy_regular_file_rejects_a_symlink_destination_without_touching_its_target ... ok
[INFO] [stdout] test config::tests::migration_preserves_restrictive_file_permissions ... ok
[INFO] [stdout] test config::tests::active_theme_roundtrips_without_removing_unknown_config ... ok
[INFO] [stdout] test config::tests::parse_config_applies_overrides ... ok
[INFO] [stdout] test config::tests::parse_config_fixture_toml ... ok
[INFO] [stdout] test config::tests::migration_copies_nested_regular_files ... ok
[INFO] [stdout] test config::tests::parse_config_theme_defaults_to_default ... ok
[INFO] [stdout] test config::tests::parse_config_tunnel_reconnect_defaults ... ok
[INFO] [stdout] test config::tests::parse_config_session_logging_defaults ... ok
[INFO] [stdout] test config::tests::parse_config_uses_defaults_for_empty_toml ... ok
[INFO] [stdout] test config::tests::parse_config_rejects_invalid_toml ... ok
[INFO] [stdout] test config::tests::tunnel_backoff_jitter_bounded ... ok
[INFO] [stdout] test config::tests::tunnel_failure_attempt_counts_flaps_and_resets_after_stable ... ok
[INFO] [stdout] test config::tests::tunnel_reconnect_adjust_keeps_delay_order ... ok
[INFO] [stdout] test config::tests::tunnel_backoff_grows_and_caps ... ok
[INFO] [stdout] test credentials::tests::probe_reports_unwritable_store_as_unavailable ... ok
[INFO] [stdout] test config::tests::tunnel_reconnect_display_uses_seconds_for_delays ... ok
[INFO] [stdout] test config::tests::default_config_toml_roundtrips ... ok
[INFO] [stdout] test credentials::tests::probe_reports_working_store_as_available ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_dest_picker_lists_every_non_active_profile ... ok
[INFO] [stdout] test import::mremoteng::tests::parse_conf_cons_handles_self_closing_and_nested_containers ... ok
[INFO] [stdout] test import::mremoteng::tests::decode_entities_handles_named_and_numeric ... ok
[INFO] [stdout] test import::mremoteng::tests::parse_conf_cons_ignores_gt_inside_attribute ... ok
[INFO] [stdout] test import::mremoteng::tests::parse_conf_cons_multibyte_protocol_does_not_panic ... ok
[INFO] [stdout] test import::mremoteng::tests::parse_conf_cons_reads_container_and_top_level ... ok
[INFO] [stdout] test import::mremoteng::tests::parse_conf_cons_skips_empty_name_or_hostname ... ok
[INFO] [stdout] test import::putty::tests::decode_reg_bytes_strips_utf8_bom ... ok
[INFO] [stdout] test import::putty::tests::decode_reg_bytes_utf16be_and_edge_cases ... ok
[INFO] [stdout] test import::putty::tests::decode_reg_bytes_utf16le_with_bom ... ok
[INFO] [stdout] test import::putty::tests::parse_reg_defaults_protocol_absent_to_ssh ... ok
[INFO] [stdout] test import::putty::tests::parse_reg_filters_and_decodes ... ok
[INFO] [stdout] test import::putty::tests::parse_reg_ignores_non_session_keys ... ok
[INFO] [stdout] test import::putty::tests::parse_reg_trims_padded_hostname ... ok
[INFO] [stdout] test import::putty::tests::parse_sessions_dir_missing_is_empty ... ok
[INFO] [stdout] test import::putty::tests::parse_sessions_dir_reads_files ... ok
[INFO] [stdout] test import::putty::tests::reg_value_dword_port_ranges ... ok
[INFO] [stdout] test import::putty::tests::unescape_reg_handles_backslashes_and_quotes ... ok
[INFO] [stdout] test import::termius_csv::tests::discover_keys_reads_pem_and_passphrase ... ok
[INFO] [stdout] test cli::theme::tests::near_identical_gradient_stops_survive_validation_runtime_and_export ... ok
[INFO] [stdout] test cli::exec::tests::a_config_remote_command_does_not_defeat_the_ad_hoc_command ... ok
[INFO] [stdout] test cli::theme::tests::a_resolved_export_round_trips_a_quoted_gradient_key ... ok
[INFO] [stdout] test cli::exec::tests::argv_is_understood_by_real_ssh ... ok
[INFO] [stdout] test import::termius_csv::tests::os_icon_for_maps_known_oses ... ok
[INFO] [stdout] test import::termius_csv::tests::parse_csv_handles_bom_and_quotes ... ok
[INFO] [stdout] test import::termius_csv::tests::parse_loot_csv_defaults_bad_port_to_22 ... ok
[INFO] [stdout] test import::termius_csv::tests::parse_loot_csv_skips_header_and_empty_rows ... ok
[INFO] [stdout] test import::termius_csv::tests::resolve_key_hint_ignores_placeholders ... ok
[INFO] [stdout] test import::termius_csv::tests::split_fingerprint_extracts_trailing_hex ... ok
[INFO] [stdout] test keybinds::tests::alt_s_spec_matches_the_measured_event ... ok
[INFO] [stdout] test keybinds::tests::an_empty_table_loads_every_default ... ok
[INFO] [stdout] test keybinds::tests::migrate_help_is_noop_when_known_hosts_present ... ok
[INFO] [stdout] test keybinds::tests::migrate_help_strips_shift_h_on_upgrade ... ok
[INFO] [stdout] test keybinds::tests::migrate_pre_sftp_is_noop_for_new_configs ... ok
[INFO] [stdout] test keybinds::tests::migrate_pre_sftp_is_noop_without_tab_overrides ... ok
[INFO] [stdout] test keybinds::tests::migrate_pre_sftp_shifts_tab_digits ... ok
[INFO] [stdout] test keybinds::tests::session_footer_hints_lead_with_resume ... ok
[INFO] [stdout] test keybinds::tests::session_header_hints_multi_tab_pair ... ok
[INFO] [stdout] test app::tests::session::session_switcher_open_guard_matrix ... ok
[INFO] [stdout] test keybinds::tests::ghost_accept_defaults_and_roundtrips ... ok
[INFO] [stdout] test keybinds::tests::session_header_hints_use_configured_binds ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_dest_picker_typing_narrows_to_the_fuzzy_match ... ok
[INFO] [stdout] test known_hosts::tests::delete_hashed_host_is_refused_by_caller ... ok
[INFO] [stdout] test keybinds::tests::session_switcher_defaults_and_roundtrips ... ok
[INFO] [stdout] test known_hosts::tests::deletion_block_reason_table ... ok
[INFO] [stdout] test known_hosts::tests::fingerprint_from_log_extracts_sha256 ... ok
[INFO] [stdout] test known_hosts::tests::fingerprint_from_log_rejects_spoofed_ident_line ... ok
[INFO] [stdout] test keybinds::tests::switcher_hotkey_appears_in_both_hint_rows ... ok
[INFO] [stdout] test known_hosts::tests::fingerprint_from_log_returns_none_when_absent ... ok
[INFO] [stdout] test credentials::tests::test_file_password_store ... ok
[INFO] [stdout] test import::termius_csv::tests::import_csv_export_errors_without_loot_csv ... ok
[INFO] [stdout] test known_hosts::tests::parse_cert_authority_entry ... ok
[INFO] [stdout] test known_hosts::tests::normalize_key_type_strips_prefixes ... ok
[INFO] [stdout] test app::tests::transfer_plan_confirm::transfer_dest_picker_arrows_move_the_highlight ... ok
[INFO] [stdout] test known_hosts::tests::parse_hashed_entry ... ok
[INFO] [stdout] test known_hosts::tests::parse_plain_entry ... ok
[INFO] [stdout] test import::putty::tests::import_putty_inserts_then_dedups ... ok
[INFO] [stdout] test known_hosts::tests::parse_port_qualified_entry ... ok
[INFO] [stdout] test known_hosts::tests::parse_revoked_entry ... ok
[INFO] [stdout] test known_hosts::tests::parse_skips_comments_and_blanks ... ok
[INFO] [stdout] test known_hosts::tests::parse_skips_malformed_lines ... ok
[INFO] [stdout] test log_browser::tests::parse_started_secs_reads_prefix ... ok
[INFO] [stdout] test known_hosts::tests::remove_host_refuses_symlinked_file ... ok
[INFO] [stdout] test log_browser::tests::read_and_search_segment ... ok
[INFO] [stdout] test log_browser::tests::safe_segment_name_rejects_path_escapes ... ok
[INFO] [stdout] test log_browser::tests::read_missing_segment_is_none ... ok
[INFO] [stdout] test log_browser::tests::lists_hosts_and_segments_newest_first ... ok
[INFO] [stdout] test config::tests::a_retired_key_is_dropped_on_the_next_save ... ok
[INFO] [stdout] test log_browser::tests::read_marks_truncation_past_the_cap ... ok
[INFO] [stdout] test log_browser::tests::strip_ansi_drops_dcs_payload ... ok
[INFO] [stdout] test import::mremoteng::tests::import_mremoteng_imports_and_dedups ... ok
[INFO] [stdout] test log_browser::tests::strip_ansi_removes_escapes_and_controls ... ok
[INFO] [stdout] test import::termius_csv::tests::import_csv_export_imports_hosts ... ok
[INFO] [stdout] test metadata::db::tests::get_missing_returns_none ... ok
[INFO] [stdout] test metadata::db::tests::get_all_returns_sorted_rows ... ok
[INFO] [stdout] test metadata::db::tests::tags_json_roundtrip ... ok
[INFO] [stdout] test metadata::db::tests::upsert_and_get_roundtrip ... ok
[INFO] [stdout] test osc52::tests::b64_payload_is_framed_with_the_c_selector ... ok
[INFO] [stdout] test osc52::tests::base64_encode_pads ... ok
[INFO] [stdout] test metadata::db::tests::set_last_connected_inserts_missing_host ... ok
[INFO] [stdout] test metadata::db::tests::set_last_connected_updates_existing ... ok
[INFO] [stdout] test osc52::tests::both_entry_points_share_one_framing_path ... ok
[INFO] [stdout] test metadata::db::tests::toggle_favorite_inserts_missing_host ... ok
[INFO] [stdout] test metadata::db::tests::toggle_favorite_flips_existing ... ok
[INFO] [stdout] test metadata::db::tests::ensure_defaults_inserts_only_missing ... ok
[INFO] [stdout] test osc52::tests::plain_text_is_encoded_then_framed ... ok
[INFO] [stdout] test osinfo::detect::tests::probe_failure_emits_no_event ... ok
[INFO] [stdout] test osinfo::detect::tests::detects_os_from_canned_release ... ok
[INFO] [stdout] test osinfo::detect::tests::unrecognised_output_emits_no_event ... ok
[INFO] [stdout] test osinfo::logos::tests::every_canonical_id_resolves_non_empty ... ok
[INFO] [stdout] test osinfo::logos::tests::max_width_is_positive ... ok
[INFO] [stdout] test osinfo::logos::tests::parse_output_ids_resolve_to_logos ... ok
[INFO] [stdout] test osinfo::parse::tests::almalinux_keeps_own_id ... ok
[INFO] [stdout] test osinfo::logos::tests::unknown_and_logoless_ids_return_none ... ok
[INFO] [stdout] test osinfo::parse::tests::opensuse_leap_collapses ... ok
[INFO] [stdout] test osinfo::parse::tests::opensuse_tumbleweed_collapses ... ok
[INFO] [stdout] test osinfo::parse::tests::linuxmint_stays ... ok
[INFO] [stdout] test osinfo::parse::tests::parses_ubuntu_quoted ... ok
[INFO] [stdout] test osinfo::logos::tests::trailing_empty_lines_are_trimmed ... ok
[INFO] [stdout] test osinfo::parse::tests::pop_maps_to_popos ... ok
[INFO] [stdout] test osinfo::parse::tests::os_release_wins_over_uname ... ok
[INFO] [stdout] test osinfo::parse::tests::parses_arch ... ok
[INFO] [stdout] test osinfo::logos::tests::every_canonical_id_has_a_large_logo ... ok
[INFO] [stdout] test osinfo::parse::tests::rhel_family_keeps_own_id ... ok
[INFO] [stdout] test osinfo::parse::tests::strips_double_quotes ... ok
[INFO] [stdout] test osinfo::parse::tests::strips_single_quotes ... ok
[INFO] [stdout] test osinfo::parse::tests::uname_darwin ... ok
[INFO] [stdout] test osinfo::parse::tests::uname_freebsd ... ok
[INFO] [stdout] test osinfo::parse::tests::uname_linux ... ok
[INFO] [stdout] test osinfo::parse::tests::unknown_id_falls_back_to_id_like ... ok
[INFO] [stdout] test osinfo::parse::tests::unknown_id_like_linux_family ... ok
[INFO] [stdout] test osinfo::parse::tests::unknown_returns_none ... ok
[INFO] [stdout] test osinfo::widget::tests::a_tint_leaves_blank_runs_alone ... ok
[INFO] [stdout] test osinfo::widget::tests::dimensions_report_width_and_height ... ok
[INFO] [stdout] test osinfo::widget::tests::clamps_to_undersized_rect_without_overflow ... ok
[INFO] [stdout] test osinfo::widget::tests::both_render_paths_apply_the_same_tint ... ok
[INFO] [stdout] test osinfo::widget::tests::logo_to_lines_preserves_spans ... ok
[INFO] [stdout] test osinfo::widget::tests::renders_in_exact_rect_without_panic ... ok
[INFO] [stdout] test ping::tests::classify_ping_buckets ... ok
[INFO] [stdout] test ping::tests::parse_no_match ... ok
[INFO] [stdout] test ping::tests::parse_linux_ping ... ok
[INFO] [stdout] test ping::tests::parse_macos_ping ... ok
[INFO] [stdout] test ping::tests::parse_multiline_output ... ok
[INFO] [stdout] test osinfo::widget::tests::native_logo_preserves_source_colors_and_tint_recolors_visible_cells ... ok
[INFO] [stdout] test osinfo::widget::tests::the_default_theme_leaves_logos_native ... ok
[INFO] [stdout] test import::termius_csv::tests::import_csv_export_skips_duplicates ... ok
[INFO] [stdout] test known_hosts::tests::fingerprint_joins_lines_with_inline_comments ... ok
[INFO] [stdout] test known_hosts::tests::fingerprint_join_skips_marker_entries ... ok
[INFO] [stdout] test config::tests::save_config_preserves_comments_and_unknown_keys ... ok
[INFO] [stdout] test known_hosts::tests::delete_refuses_when_wildcard_would_be_collateral ... ok
[INFO] [stdout] test profile::picker::tests::escape_quits ... ok
[INFO] [stdout] test profile::picker::tests::in_app_direct_create_cancel_writes_nothing ... ok
[INFO] [stdout] test profile::migrate::tests::live_old_lock_is_not_stale ... ok
[INFO] [stdout] test profile::migrate::tests::recursive_copy_rejects_symlinks ... ok
[INFO] [stdout] test profile::picker::tests::number_keys_select_profile ... ok
[INFO] [stdout] test profile::picker::tests::cursor_starts_on_last_used_profile ... ok
[INFO] [stdout] test profile::picker::tests::startup_picker_paste_preserves_unicode_and_editor_cursor ... ok
[INFO] [stdout] test profile::tests::compatibility_mode_rejects_profile_selection ... ok
[INFO] [stdout] test profile::picker::tests::deleting_last_profile_is_refused ... ok
[INFO] [stdout] test profile::picker::tests::enter_launches_selected_profile ... ok
[INFO] [stdout] test profile::picker::tests::picker_renders_smoke ... ok
[INFO] [stdout] test profile::picker::tests::picker_renders_on_tiny_terminals ... ok
[INFO] [stdout] test profile::picker::tests::long_list_keeps_selected_profile_visible ... ok
[INFO] [stdout] test profile::tests::profile_names_reject_path_components ... ok
[INFO] [stdout] test profile::tests::startup_flags_support_separate_and_equals_forms ... ok
[INFO] [stdout] test profile::tests::state_load_rejects_traversal_profile_names ... ok
[INFO] [stdout] test profile::picker::tests::in_app_render_shows_active_switch_close_and_error ... ok
[INFO] [stdout] test app::tests::session::session_switcher_hotkey_preserves_context_boundaries ... ok
[INFO] [stdout] test search::tests::display_match_indices_are_empty_without_a_match ... ok
[INFO] [stdout] test search::tests::empty_query_returns_all_indices_in_order ... ok
[INFO] [stdout] test profile::tests::fresh_layout_creates_default_profile ... ok
[INFO] [stdout] test search::tests::display_match_indices_point_at_the_matched_characters ... ok
[INFO] [stdout] test profile::tests::legacy_layout_migrates_without_removing_source_files ... ok
[INFO] [stdout] test search::tests::matches_description ... ok
[INFO] [stdout] test search::tests::matches_environment ... ok
[INFO] [stdout] test search::tests::matches_host_name ... ok
[INFO] [stdout] test search::tests::matches_joined_tags ... ok
[INFO] [stdout] test search::tests::multi_token_query_requires_all_tokens ... ok
[INFO] [stdout] test search::tests::no_matches_returns_empty ... ok
[INFO] [stdout] test search::tests::ranks_better_name_matches_first ... ok
[INFO] [stdout] test search::tests::matches_hostname ... ok
[INFO] [stdout] test search::tests::smart_case_matching_respects_uppercase_queries ... ok
[INFO] [stdout] test search::tests::smart_case_matching_ignores_case_for_lowercase_queries ... ok
[INFO] [stdout] test search::tests::stable_order_for_equal_scores ... ok
[INFO] [stdout] test session::askpass::exe_tests::helper_exe_is_the_running_binary ... ok
[INFO] [stdout] test session::askpass::tests::askpass_mode_off_without_env ... ok
[INFO] [stdout] test session::askpass::exe_tests::a_path_without_the_marker_is_not_rewritten ... ok
[INFO] [stdout] test secure_fs::tests::restrict_dir_and_file_set_owner_only_modes ... ok
[INFO] [stdout] test session::askpass::exe_tests::a_replaced_binary_resolves_to_whatever_took_its_place ... ok
[INFO] [stdout] test session::askpass::tests::stages_secret_in_owner_only_file_and_cleans_up ... ok
[INFO] [stdout] test session::askpass_channel::tests::auth_helper_process_entry ... ok
[INFO] [stdout] test session::askpass_channel::tests::bad_token_and_missing_token_never_reach_ui ... ok
[INFO] [stdout] test known_hosts::tests::delete_removes_target_and_keeps_others ... ok
[INFO] [stdout] test session::askpass_channel::tests::replies_are_bound_to_their_request_and_queue_does_not_answer_early ... ok
[INFO] [stdout] test session::askpass_channel::tests::auth_cross_session_token_and_queued_deadline_fail_closed ... ok
[INFO] [stdout] test session::auth_prompt::tests::every_existing_needle_maps_to_its_prompt_class ... ok
[INFO] [stdout] test session::auth_prompt::tests::host_key_reprompt_never_receives_a_credential ... ok
[INFO] [stdout] test session::auth_prompt::tests::stored_credentials_only_answer_their_own_class ... ok
[INFO] [stdout] test session::auth_prompt::tests::measured_host_key_prompt_preserves_fingerprint ... ok
[INFO] [stdout] test session::diagnostic_filter_tests::connected_keeps_only_session_and_auth_failures ... ok
[INFO] [stdout] test session::autoscroll_tests::edge_direction_by_pointer_row ... ok
[INFO] [stdout] test session::diagnostic_filter_tests::everything_survives_before_connect ... ok
[INFO] [stdout] test session::history::tests::tracker_edits_and_records_only_complete_safe_lines ... ok
[INFO] [stdout] test session::history::tests::prompt_multiline_control_and_cursor_uncertainty_drop_whole_line ... ok
[INFO] [stdout] test session::interactive_auth::tests::connected_finish_closes_channel_but_keeps_remembered_secrets ... ok
[INFO] [stdout] test session::history::tests::history_deduplicates_updates_recency_and_is_bounded ... ok
[INFO] [stdout] test session::interactive_auth::tests::generic_and_unmanaged_prompts_have_no_persistence_destination ... ok
[INFO] [stdout] test session::interactive_auth::tests::persistence_waits_for_success_and_dies_with_failed_session ... ok
[INFO] [stdout] test session::keys::tests::a_full_screen_app_that_asked_for_the_mouse_gets_it ... ok
[INFO] [stdout] test session::keys::tests::a_shell_prompt_selects_locally_even_with_mouse_reporting_left_on ... ok
[INFO] [stdout] test session::keys::tests::alt_a_is_esc_a ... ok
[INFO] [stdout] test session::keys::tests::alternate_scroll_sends_three_arrows_per_notch ... ok
[INFO] [stdout] test session::keys::tests::arrows_unmodified ... ok
[INFO] [stdout] test session::keys::tests::backspace_is_del ... ok
[INFO] [stdout] test session::keys::tests::ctrl_arrow_uses_modifier_param ... ok
[INFO] [stdout] test session::keys::tests::ctrl_c_is_etx ... ok
[INFO] [stdout] test session::keys::tests::ctrl_a_is_soh ... ok
[INFO] [stdout] test session::keys::tests::ctrl_d_is_eot ... ok
[INFO] [stdout] test session::keys::tests::enter_is_cr ... ok
[INFO] [stdout] test session::keys::tests::decckm_switches_cursor_keys_to_ss3 ... ok
[INFO] [stdout] test session::keys::tests::esc ... ok
[INFO] [stdout] test session::keys::tests::f1_f4_use_ss3 ... ok
[INFO] [stdout] test session::keys::tests::f5_plus_use_csi_tilde ... ok
[INFO] [stdout] test session::keys::tests::motion_dropped_when_remote_only_wants_buttons ... ok
[INFO] [stdout] test session::keys::tests::mouse_none_mode_returns_none ... ok
[INFO] [stdout] test session::keys::tests::plain_chars_pass_through ... ok
[INFO] [stdout] test session::keys::tests::press_only_mode_drops_release ... ok
[INFO] [stdout] test session::keys::tests::sgr_left_press_encodes_correctly ... ok
[INFO] [stdout] test session::keys::tests::sgr_left_release_uses_lowercase_m ... ok
[INFO] [stdout] test session::keys::tests::pgup_pgdn ... ok
[INFO] [stdout] test session::keys::tests::sgr_scroll_wheel_up_uses_button_64 ... ok
[INFO] [stdout] test session::keys::tests::shift_forwards_to_an_inline_app_that_kept_the_primary_screen ... ok
[INFO] [stdout] test session::keys::tests::shift_tab_is_csi_z ... ok
[INFO] [stdout] test session::keys::tests::utf8_chars ... ok
[INFO] [stdout] test session::parser::tests::cursor_position_report_answers_the_grid_cursor ... ok
[INFO] [stdout] test session::parser::tests::cursor_position_report_follows_the_cursor ... ok
[INFO] [stdout] test session::interactive_auth::tests::auth_stored_answer_does_not_consume_queued_generic_request ... ok
[INFO] [stdout] test session::parser::tests::decoded_len_handles_unpadded_input ... ok
[INFO] [stdout] test session::parser::tests::decoded_len_matches_real_decode ... ok
[INFO] [stdout] test session::parser::tests::device_attributes_are_answered_with_and_without_a_param ... ok
[INFO] [stdout] test session::parser::tests::cursor_position_report_is_clamped_at_the_right_margin ... ok
[INFO] [stdout] test session::parser::tests::invalid_base64_is_ignored ... ok
[INFO] [stdout] test session::parser::tests::device_status_report_answers_ok ... ok
[INFO] [stdout] test session::parser::tests::empty_payload_is_ignored_entirely ... ok
[INFO] [stdout] test session::parser::tests::osc52_copy_is_queued_for_relay ... ok
[INFO] [stdout] test session::parser::tests::osc52_does_not_reach_the_grid ... ok
[INFO] [stdout] test session::parser::tests::padded_base64_is_relayed ... ok
[INFO] [stdout] test session::parser::tests::paste_query_is_not_answered ... ok
[INFO] [stdout] test session::parser::tests::primary_selection_is_relayed_as_clipboard ... ok
[INFO] [stdout] test session::parser::tests::private_queries_stay_unanswered ... ok
[INFO] [stdout] test session::parser::tests::queries_do_not_reach_the_grid ... ok
[INFO] [stdout] test session::parser::tests::queue_is_capped ... ok
[INFO] [stdout] test session::parser::tests::reply_queue_is_capped ... ok
[INFO] [stdout] test session::parser::tests::oversize_and_queue_full_are_counted_separately ... ok
[INFO] [stdout] test session::parser::tests::snap_returns_to_zero_offset ... ok
[INFO] [stdout] test session::parser::tests::take_clipboard_writes_drains ... ok
[INFO] [stdout] test session::parser::tests::scrollback_beyond_screen_height_does_not_panic ... ok
[INFO] [stdout] test session::parser::tests::take_replies_drains ... ok
[INFO] [stdout] test session::parser::tests::unknown_dsr_parameters_are_not_answered ... ok
[INFO] [stdout] test session::paste_tests::wraps_only_when_bracketed_paste_enabled ... ok
[INFO] [stdout] test session::parser::tests::oversized_clipboard_write_is_dropped ... ok
[INFO] [stdout] test session::parser::tests::taking_drops_resets_the_counters ... ok
[INFO] [stdout] test session::askpass_channel::tests::auth_helper_process_cancellation_timeout_and_closed_socket_exit_nonzero ... ok
[INFO] [stdout] test profile::tests::picker_animation_reads_last_used_profile_preference ... ok
[INFO] [stdout] test session::askpass_channel::tests::cancellation_timeout_and_channel_drop_fail_closed ... ok
[INFO] [stdout] test cli::theme::tests::a_resolved_export_reparses_to_the_same_theme ... ok
[INFO] [stdout] test profile::tests::state_roundtrip_preserves_last_used_id ... ok
[INFO] [stdout] test profile::picker::tests::in_app_active_profile_cannot_be_renamed_or_deleted ... ok
[INFO] [stdout] test profile::tests::profile_paths_isolate_owned_resources_and_preserve_id_across_rename ... ok
[INFO] [stdout] test session::prompt_tests::detects_passphrase_prompt ... ok
[INFO] [stdout] test profile::picker::tests::in_app_single_profile_creates_second_then_lists ... ok
[INFO] [stdout] test session::prompt_tests::detects_password_prompt ... ok
[INFO] [stdout] test profile::tests::profile_selection_resolves_before_database_open ... ok
[INFO] [stdout] test session::prompt_tests::a_mixed_batch_names_the_copy_and_the_drops ... ok
[INFO] [stdout] test session::prompt_tests::an_empty_payload_produces_no_notice_at_all ... ok
[INFO] [stdout] test session::prompt_tests::auth_changed_key_parser_requires_unambiguous_exact_target ... ok
[INFO] [stdout] test session::prompt_tests::a_relay_failure_survives_the_connected_session_filter ... ok
[INFO] [stdout] test session::prompt_tests::host_key_verification_prompt_is_detected ... ok
[INFO] [stdout] test session::prompt_tests::draining_the_pty_does_not_relay_by_itself ... ok
[INFO] [stdout] test profile::picker::tests::create_rename_delete_roundtrip ... ok
[INFO] [stdout] test session::prompt_tests::clipboard_queue_is_emptied_by_relaying ... ok
[INFO] [stdout] test session::prompt_tests::motd_mentioning_password_does_not_trigger_autotype ... ok
[INFO] [stdout] test session::prompt_tests::clipboard_writes_from_the_pty_are_relayed_and_announced ... ok
[INFO] [stdout] test session::prompt_tests::passphrase_prompt_matches_at_cursor_line ... ok
[INFO] [stdout] test session::prompt_tests::auth_input_guard_preserves_terminal_protocol_replies ... ok
[INFO] [stdout] test session::prompt_tests::reveal_policy_hides_auth_handshake_for_armed_sessions ... ok
[INFO] [stdout] test session::prompt_tests::screen_tail_finds_prompt_at_top_of_tall_screen ... ok
[INFO] [stdout] test session::prompt_tests::real_ssh_master_latches_connected_through_drain ... ok
[INFO] [stdout] test session::prompt_tests::connected_session_tears_down_askpass_channel_without_cancelling ... ok
[INFO] [stdout] test session::prompt_tests::failed_connect_surfaces_reason_in_debug_log ... ok
[INFO] [stdout] test profile::picker::tests::in_app_non_active_crud_preserves_active_profile ... ok
[INFO] [stdout] test session::prompt_tests::stderr_is_siphoned_off_the_pty ... ok
[INFO] [stdout] test session::prompt_tests::stored_password_is_typed_at_a_live_prompt_when_askpass_is_off ... ok
[INFO] [stdout] test session::prompt_tests::discarding_also_clears_drop_counters ... ok
[INFO] [stdout] test session::prompt_tests::discarding_clipboard_writes_keeps_the_query_answers ... ok
[INFO] [stdout] test session::prompt_tests::discarded_clipboard_writes_are_never_resent ... ok
[INFO] [stdout] test session::prompt_tests::drops_alone_are_still_announced ... ok
[INFO] [stdout] test session::render::tests::the_protected_rect_is_the_rect_the_pty_widget_gets ... ok
[INFO] [stdout] test session::selection_tests::anchor_scrolled_above_the_window_still_selects_visible_rows ... ok
[INFO] [stdout] test session::selection_tests::contains_is_reading_order_and_direction_agnostic ... ok
[INFO] [stdout] test session::selection_tests::single_row_selection_bounds ... ok
[INFO] [stdout] test session_log::tests::concurrent_opens_get_distinct_files_same_second ... ok
[INFO] [stdout] test session_log::tests::effective_enabled_respects_override ... ok
[INFO] [stdout] test session_log::tests::host_log_dir_name_distinct_for_colliding_sanitized_names ... ok
[INFO] [stdout] test session_log::tests::managed_hosts_with_colliding_names_use_distinct_dirs ... ok
[INFO] [stdout] test session_log::tests::override_db_roundtrip ... ok
[INFO] [stdout] test session_log::tests::rotate_on_size_limit ... ok
[INFO] [stdout] test session_log::tests::sanitize_host_dir_replaces_unsafe_chars ... ok
[INFO] [stdout] test session::prompt_tests::failing_clipboard_relay_is_reported_not_swallowed ... ok
[INFO] [stdout] test session_transport::tests::roundtrip_db ... ok
[INFO] [stdout] test sftp::model::tests::a_search_starting_with_a_dot_finds_hidden_entries ... ok
[INFO] [stdout] test sftp::model::tests::browsing_locally_never_queues_the_remote_cursor ... ok
[INFO] [stdout] test sftp::model::tests::dotfiles_are_hidden_until_toggled ... ok
[INFO] [stdout] test sftp::model::tests::enter_dir_only_for_directories ... ok
[INFO] [stdout] test sftp::model::tests::enter_dir_respects_focus ... ok
[INFO] [stdout] test sftp::model::tests::filter_limits_visible_and_selection ... ok
[INFO] [stdout] test sftp::model::tests::finishing_a_run_keeps_what_was_staged_meanwhile ... ok
[INFO] [stdout] test sftp::model::tests::focused_side_tracks_focus ... ok
[INFO] [stdout] test sftp::model::tests::hidden_len_counts_what_the_filter_holds_back ... ok
[INFO] [stdout] test session_log::tests::writer_appends_and_prunes_old_logs ... ok
[INFO] [stdout] test sftp::model::tests::hiding_the_selected_entry_lands_the_cursor_in_range ... ok
[INFO] [stdout] test sftp::model::tests::move_selection_clamps ... ok
[INFO] [stdout] test sftp::model::tests::move_selection_clamps_to_visible ... ok
[INFO] [stdout] test sftp::model::tests::move_selection_empty_pane ... ok
[INFO] [stdout] test sftp::model::tests::move_selection_uses_focused_pane ... ok
[INFO] [stdout] test sftp::model::tests::new_defaults ... ok
[INFO] [stdout] test sftp::model::tests::parent_dir_math ... ok
[INFO] [stdout] test sftp::model::tests::parent_of_climbs_relative_paths ... ok
[INFO] [stdout] test sftp::model::tests::parent_row_absent_at_the_root ... ok
[INFO] [stdout] test sftp::model::tests::parent_row_leads_the_listing_and_walks_up ... ok
[INFO] [stdout] test sftp::model::tests::parent_row_steps_aside_while_filtering ... ok
[INFO] [stdout] test sftp::model::tests::parent_row_survives_the_dotfile_filter ... ok
[INFO] [stdout] test sftp::model::tests::set_entries_clamps_selection ... ok
[INFO] [stdout] test sftp::model::tests::set_entries_clears_filter ... ok
[INFO] [stdout] test sftp::model::tests::stage_download_file ... ok
[INFO] [stdout] test sftp::model::tests::stage_download_directory_is_queued_recursively ... ok
[INFO] [stdout] test sftp::model::tests::stage_download_nothing_selected ... ok
[INFO] [stdout] test sftp::model::tests::stage_download_uses_local_cwd_as_dst_regardless_of_local_focus ... ok
[INFO] [stdout] test sftp::model::tests::stage_toward_takes_the_source_from_the_focused_pane ... ok
[INFO] [stdout] test sftp::model::tests::stage_upload_directory_is_queued_recursively ... ok
[INFO] [stdout] test sftp::model::tests::stage_upload_file ... ok
[INFO] [stdout] test sftp::model::tests::stage_upload_nothing_selected ... ok
[INFO] [stdout] test sftp::model::tests::staging_same_file_twice_is_deduped ... ok
[INFO] [stdout] test sftp::model::tests::text_filter_still_respects_hidden ... ok
[INFO] [stdout] test sftp::model::tests::toggle_focus_flips ... ok
[INFO] [stdout] test sftp::model::tests::toggling_hidden_keeps_the_cursor_in_range ... ok
[INFO] [stdout] test sftp::model::tests::toggling_hidden_keeps_the_cursor_on_its_entry ... ok
[INFO] [stdout] test sftp::model::tests::unstage_removes ... ok
[INFO] [stdout] test sftp::worker::tests::drain_cancel_detects_pending_cancel ... ok
[INFO] [stdout] test sftp::worker::tests::list_dir_error_is_recoverable ... ok
[INFO] [stdout] test sftp::worker::tests::list_dir_local_is_ignored ... ok
[INFO] [stdout] test sftp::worker::tests::list_dir_remote_emits_listing ... ok
[INFO] [stdout] test sftp::worker::tests::recursive_download_classifies_symlinks_via_stat ... ok
[INFO] [stdout] test sftp::worker::tests::recursive_download_transfers_whole_tree ... ok
[INFO] [stdout] test sftp::worker::tests::remote_ops_emit_opdone_and_record ... ok
[INFO] [stdout] test sftp::worker::tests::run_queue_emits_progress_done_and_queuedone ... ok
[INFO] [stdout] test sftp::worker::tests::run_queue_honours_cancel_between_transfers ... ok
[INFO] [stdout] test sftp::worker::tests::run_queue_multiple_transfers_indexed ... ok
[INFO] [stdout] test sftp::worker::tests::run_queue_stops_when_ui_gone ... ok
[INFO] [stdout] test session::prompt_tests::mosh_running_alone_does_not_latch_connected ... ok
[INFO] [stdout] test sftp::worker::tests::run_queue_transfer_error_is_reported_and_queue_continues ... ok
[INFO] [stdout] test ssh::agent::tests::agent_add_argv_lists_key_before_cert ... ok
[INFO] [stdout] test ssh::cert::tests::badge_texts_cover_all_states ... ok
[INFO] [stdout] test ssh::agent::tests::add_key_with_cert_passes_both_paths_to_ssh_add ... ok
[INFO] [stdout] test session::prompt_tests::mosh_running_without_post_auth_evidence_rejects_history_capture ... ok
[INFO] [stdout] test ssh::cert::tests::hand_built_windows_classify_validity ... ok
[INFO] [stdout] test sftp::transport::tests::entries_are_readable_by_ssh_keygen ... ok
[INFO] [stdout] test session::prompt_tests::mux_slave_latches_connected_on_master_session_marker ... ok
[INFO] [stdout] test ssh::cert::tests::malformed_keygen_output_yields_none ... ok
[INFO] [stdout] test session::render::tests::ghost_paints_dim_suffix_and_leaves_backgrounds_alone ... ok
[INFO] [stdout] test ssh::cert::tests::missing_path_reports_missing ... ok
[INFO] [stdout] test session::render::tests::only_a_revealed_shell_counts_as_remote_output ... ok
[INFO] [stdout] test ssh::export::tests::export_skips_ssh_config_rows ... ok
[INFO] [stdout] test ssh::cert::tests::crossed_pair_reports_mismatch ... ok
[INFO] [stdout] test session::prompt_tests::local_shell_with_merged_stderr_reveals_on_its_prompt ... ok
[INFO] [stdout] test ssh::export::tests::render_includes_certificate_file ... ok
[INFO] [stdout] test ssh::host::tests::alias_and_mosh_argv_guard_the_target_too ... ok
[INFO] [stdout] test ssh::export::tests::render_includes_identity_and_connection_fields ... ok
[INFO] [stdout] test ssh::host::tests::build_mosh_alias_argv_uses_host_name ... ok
[INFO] [stdout] test ssh::host::tests::build_mosh_argv_passes_remote_command ... ok
[INFO] [stdout] test ssh::host::tests::build_mosh_argv_wraps_ssh_options ... ok
[INFO] [stdout] test ssh::host::tests::build_ssh_alias_argv_uses_host_name ... ok
[INFO] [stdout] test ssh::host::tests::build_ssh_argv_appends_remote_command_after_target ... ok
[INFO] [stdout] test ssh::host::tests::build_ssh_argv_includes_certificate_file ... ok
[INFO] [stdout] test ssh::host::tests::build_ssh_argv_includes_identity_port_jump_and_agent ... ok
[INFO] [stdout] test ssh::host::tests::build_ssh_argv_omits_default_port_and_false_agent ... ok
[INFO] [stdout] test ssh::host::tests::safe_ssh_target_leaves_ordinary_targets_alone ... ok
[INFO] [stdout] test ssh::import::tests::compute_ssh_config_hash_changes_with_forward_agent_and_remote_command ... ok
[INFO] [stdout] test ssh::export::tests::render_includes_remote_command ... ok
[INFO] [stdout] test session::render::tests::the_connecting_screen_binds_background_title_border_and_connecting ... ok
[INFO] [stdout] test session::render::tests::the_expanded_debug_screen_still_binds_the_session_background ... ok
[INFO] [stdout] test ssh::export::tests::atomic_write_creates_backup ... ok
[INFO] [stdout] test session::render::tests::the_failure_screen_binds_background_title_and_border ... ok
[INFO] [stdout] test ssh::host::tests::an_option_like_address_is_not_read_as_an_ssh_option ... ok
[INFO] [stdout] test ssh::keyfile::tests::detects_key_material_vs_path ... ok
[INFO] [stdout] test ssh::import::tests::import_inserts_ssh_config_hosts ... ok
[INFO] [stdout] test ssh::keyfile::tests::read_public_key_supports_dots_in_filename ... ok
[INFO] [stdout] test ssh::cert::tests::expired_cert_from_real_keygen_classifies_expired ... ok
[INFO] [stdout] test ssh::import::tests::import_merges_metadata_overlay ... ok
[INFO] [stdout] test ssh::resolver::tests::list_hosts_follows_include_directives_and_globs ... ok
[INFO] [stdout] test ssh::resolver::tests::list_hosts_missing_config_returns_empty ... ok
[INFO] [stdout] test ssh::import::tests::sync_updates_connection_fields_preserves_db_metadata ... ok
[INFO] [stdout] test ssh::resolver::tests::parse_host_aliases_reads_fixture ... ok
[INFO] [stdout] test ssh::resolver::tests::parse_host_aliases_skips_wildcards_and_negation ... ok
[INFO] [stdout] test ssh::import::tests::import_skips_launcher_name_collision ... ok
[INFO] [stdout] test ssh::resolver::tests::parse_ssh_g_output_extracts_forwardagent_and_remotecommand ... ok
[INFO] [stdout] test ssh::resolver::tests::parse_ssh_g_output_extracts_proxyjump_and_identityfile ... ok
[INFO] [stdout] test ssh::resolver::tests::parse_ssh_g_output_forwardagent_no_sets_false ... ok
[INFO] [stdout] test ssh::resolver::tests::parse_ssh_g_output_remotecommand_none_leaves_none ... ok
[INFO] [stdout] test ssh::resolver::tests::ssh_config_path_honors_env_override ... ok
[INFO] [stdout] test ssh::import::tests::sync_skips_when_hash_unchanged ... ok
[INFO] [stdout] test ssh::resolver::tests::parse_ssh_g_output_reads_fixture ... ok
[INFO] [stdout] test store::command_history::tests::recently_reused_command_survives_same_second_pruning ... ok
[INFO] [stdout] test store::command_history::tests::migrated_history_is_bounded_isolated_and_cascades ... ok
[INFO] [stdout] test ssh::cert::tests::inspect_real_cert_reports_id_principals_and_window ... ok
[INFO] [stdout] test ssh::cert::tests::keygen_absent_is_unreadable_not_panic ... ok
[INFO] [stdout] test app::tests::session::session_switcher_arms_the_tab_slide ... ok
[INFO] [stdout] test store::group_defaults::tests::ancestor_chain_is_nearest_first_and_resists_cycles ... ok
[INFO] [stdout] test store::group_defaults::tests::clearing_host_field_restores_inheritance ... ok
[INFO] [stdout] test store::group_defaults::tests::explicit_host_values_win_over_group ... ok
[INFO] [stdout] test ssh::resolver::tests::listed_aliases_round_trip_through_real_ssh ... ok
[INFO] [stdout] test store::group_defaults::tests::group_identity_resolves_for_auth_fallback ... ok
[INFO] [stdout] test store::group_defaults::tests::join_flow_materializes_most_specific_identity ... ok
[INFO] [stdout] test store::group_defaults::tests::multi_group_conflict_resolves_to_deeper_group ... ok
[INFO] [stdout] test store::group_defaults::tests::multi_group_distance_beats_depth ... ok
[INFO] [stdout] test session::render::tests::ghost_wraps_at_pending_wrap_clips_at_edge_and_stops_at_newline ... ok
[INFO] [stdout] test store::group_defaults::tests::nested_child_overrides_parent_per_field ... ok
[INFO] [stdout] test store::hosts::tests::auth_event_log_dir_note_format ... ok
[INFO] [stdout] test ssh::cert::tests::matching_pair_reports_match ... ok
[INFO] [stdout] test ssh::keyfile::tests::writes_key_with_owner_only_perms_and_dedups ... ok
[INFO] [stdout] test ssh::resolver::tests::expand_tilde_replaces_home_prefix ... ok
[INFO] [stdout] test profile::migrate::tests::rekey_keeps_legacy_key_for_retry ... ok
[INFO] [stdout] test store::group_defaults::tests::no_group_falls_back_to_global_defaults ... ok
[INFO] [stdout] test store::group_defaults::tests::unset_host_fields_inherit_group ... ok
[INFO] [stdout] test store::hosts::tests::auth_stats_count_launched_as_success ... ok
[INFO] [stdout] test store::hosts::tests::create_host_with_duplicate_name_errors_without_guard ... ok
[INFO] [stdout] test store::hosts::tests::auth_event_log_path_roundtrip ... ok
[INFO] [stdout] test store::hosts::tests::delete_group_reassigns_hosts_to_null ... ok
[INFO] [stdout] test store::hosts::tests::group_default_identity_round_trips ... ok
[INFO] [stdout] test store::hosts::tests::list_groups_returns_tree_order ... ok
[INFO] [stdout] test store::hosts::tests::favorites_membership_sets_favorite_flag ... ok
[INFO] [stdout] test store::hosts::tests::group_crud_roundtrip ... ok
[INFO] [stdout] test store::hosts::tests::host_loads_all_group_memberships ... ok
[INFO] [stdout] test store::hosts::tests::favouriting_does_not_materialize_identity ... ok
[INFO] [stdout] test store::hosts::tests::option_like_fields_are_refused_on_write ... ok
[INFO] [stdout] test store::hosts::tests::reserved_group_cannot_be_deleted_or_renamed ... ok
[INFO] [stdout] test store::hosts::tests::set_host_groups_materializes_inherited_identity ... ok
[INFO] [stdout] test store::hosts::tests::ssh_config_update_rejects_connection_fields ... ok
[INFO] [stdout] test store::hosts::tests::ssh_config_reimport_preserves_user_metadata ... ok
[INFO] [stdout] test store::hosts::tests::set_host_groups_replaces_memberships ... ok
[INFO] [stdout] test store::hosts::tests::set_host_groups_preserves_favorites_membership ... ok
[INFO] [stdout] test store::hosts::tests::swap_host_sort_orders_exchanges_values ... ok
[INFO] [stdout] test session::prompt_tests::the_pty_child_receives_a_cursor_position_report ... ok
[INFO] [stdout] test session::prompt_tests::the_report_the_child_receives_is_clamped_at_the_right_margin ... ok
[INFO] [stdout] test store::hosts::tests::unique_host_name_suffixes_on_collision ... ok
[INFO] [stdout] test store::log_bookmarks::tests::bookmarks_are_newest_first ... ok
[INFO] [stdout] test store::log_bookmarks::tests::log_bookmark_crud ... ok
[INFO] [stdout] test ssh::keyfile::tests::generates_key_pairs_correctly ... ok
[INFO] [stdout] test ssh::keyfile::tests::detects_encrypted_vs_plain_keys ... ok
[INFO] [stdout] test store::command_history::tests::history_database_remains_owner_only ... ok
[INFO] [stdout] test store::migrate::tests::migration_creates_v2_tables ... ok
[INFO] [stdout] test store::migrate::tests::migration_creates_favorites_group_and_membership_table ... ok
[INFO] [stdout] test store::migrate::tests::migration_is_idempotent ... ok
[INFO] [stdout] test store::migrate::tests::migration_skips_legacy_when_metadata_missing ... ok
[INFO] [stdout] test store::hosts::tests::open_restricts_db_and_dir_to_owner_only ... ok
[INFO] [stdout] test store::identities::tests::default_identity_exists_after_open ... ok
[INFO] [stdout] test store::snippets::tests::list_is_sorted_case_insensitively_by_name ... ok
[INFO] [stdout] test store::snippets::tests::snippet_crud_roundtrip ... ok
[INFO] [stdout] test store::snippets::tests::tags_default_to_empty_when_absent ... ok
[INFO] [stdout] test store::snippets::tests::update_missing_snippet_returns_none ... ok
[INFO] [stdout] test store::migrate::tests::migration_imports_legacy_metadata_rows ... ok
[INFO] [stdout] test store::tunnels::tests::auto_connect_roundtrip ... ok
[INFO] [stdout] test store::tunnels::tests::tunnel_crud ... ok
[INFO] [stdout] test suggestions::tests::provider_ranks_deduplicates_and_rejects_sensitive_sources ... ok
[INFO] [stdout] test test_alloc::tests::the_counter_sees_a_deliberate_allocation ... ok
[INFO] [stdout] test store::migrate::tests::migration_imports_legacy_environment_and_tolerates_bad_tags ... ok
[INFO] [stdout] test tests::host_entry_pairs_host_and_metadata ... ok
[INFO] [stdout] test tests::shared_contracts_compile ... ok
[INFO] [stdout] test text_input::tests::backspace_at_zero_is_noop ... ok
[INFO] [stdout] test text_input::tests::backspace_handles_multibyte_at_start_middle_and_end ... ok
[INFO] [stdout] test text_input::tests::clear_before_cursor_is_multibyte_safe_and_clamps ... ok
[INFO] [stdout] test text_input::tests::clear_before_cursor_keeps_the_tail ... ok
[INFO] [stdout] test text_input::tests::clear_before_cursor_wipes_the_whole_field_from_the_end ... ok
[INFO] [stdout] test text_input::tests::delete_at_removes_char_at_cursor ... ok
[INFO] [stdout] test text_input::tests::delete_word_before_eats_one_word_plus_trailing_space ... ok
[INFO] [stdout] test text_input::tests::delete_word_before_stops_at_start_and_handles_empty_gap ... ok
[INFO] [stdout] test text_input::tests::insert_handles_multibyte_at_start_middle_and_end ... ok
[INFO] [stdout] test text_input::tests::move_left_right_clamp ... ok
[INFO] [stdout] test text_input::tests::with_cursor_splits_on_char_boundary ... ok
[INFO] [stdout] test theme::builtins::tests::all_builtins_pass_the_public_strict_pipeline ... ok
[INFO] [stdout] test theme::builtins::tests::default_matches_every_frozen_legacy_fallback ... ok
[INFO] [stdout] test theme::builtins::tests::each_builtin_demonstrates_the_features_it_documents ... ok
[INFO] [stdout] test theme::builtins::tests::every_builtin_describes_itself_the_right_way_round ... ok
[INFO] [stdout] test theme::builtins::tests::every_published_role_has_an_inventoried_renderer ... ok
[INFO] [stdout] test theme::builtins::tests::the_inventory_covers_every_role_each_migrated_renderer_reads ... ok
[INFO] [stdout] test theme::catalog::tests::a_duplicated_frozen_row_cannot_hide_a_removal ... ok
[INFO] [stdout] test theme::catalog::tests::an_unchanged_matrix_reports_no_differences ... ok
[INFO] [stdout] test theme::catalog::tests::every_diagnostic_class_is_reported ... ok
[INFO] [stdout] test theme::catalog::tests::every_guide_example_passes_the_real_strict_pipeline ... ok
[INFO] [stdout] test theme::catalog::tests::only_closed_frames_may_use_perimeter_gradients ... ok
[INFO] [stdout] test theme::catalog::tests::print_role_catalog_markdown ... ignored, prints the generated role table for docs/theme-system.md
[INFO] [stdout] test theme::catalog::tests::role_counts_cover_every_spec ... ok
[INFO] [stdout] test theme::catalog::tests::semantic_specs_are_indexed_by_their_slot ... ok
[INFO] [stdout] test theme::catalog::tests::the_generated_fallback_prose_names_slots_and_modifiers ... ok
[INFO] [stdout] test theme::catalog::tests::the_guide_lists_every_published_role ... ok
[INFO] [stdout] test theme::catalog::tests::the_guide_role_table_matches_the_generated_catalogue ... ok
[INFO] [stdout] test theme::catalog::tests::the_guide_states_the_role_counts_the_catalogue_has ... ok
[INFO] [stdout] test theme::catalog::tests::the_role_to_fallback_matrix_matches_its_frozen_snapshot ... ok
[INFO] [stdout] test theme::catalog::tests::the_substantial_guide_example_demonstrates_what_it_promises ... ok
[INFO] [stdout] test theme::catalog::tests::v1_catalog_is_complete_unique_and_typed ... ok
[INFO] [stdout] test theme::gradient::tests::area_painter_can_limit_writes_to_reset_backgrounds_and_exclude_pty ... ok
[INFO] [stdout] test theme::gradient::tests::area_painter_honours_multiple_and_partly_overlapping_exclusions ... ok
[INFO] [stdout] test theme::gradient::tests::area_painter_samples_relative_to_the_area_not_the_clipped_region ... ok
[INFO] [stdout] test theme::gradient::tests::degenerate_diagonals_use_the_complete_color_range ... ok
[INFO] [stdout] test theme::gradient::tests::degenerate_rects_never_divide_by_zero ... ok
[INFO] [stdout] test theme::gradient::tests::diagonals_average_both_axes_on_a_two_dimensional_rect ... ok
[INFO] [stdout] test theme::gradient::tests::horizontal_and_vertical_positions_are_relative_to_the_component_rect ... ok
[INFO] [stdout] test theme::gradient::tests::line_painter_can_restrict_itself_to_one_solid_color ... ok
[INFO] [stdout] test theme::gradient::tests::line_painter_writes_the_requested_channel_only ... ok
[INFO] [stdout] test theme::gradient::tests::painters_ignore_empty_and_out_of_bounds_areas ... ok
[INFO] [stdout] test theme::gradient::tests::perimeter_closes_without_a_visible_seam ... ok
[INFO] [stdout] test theme::gradient::tests::perimeter_interior_cells_are_not_on_the_ring ... ok
[INFO] [stdout] test theme::gradient::tests::perimeter_walks_clockwise_and_counts_each_corner_once ... ok
[INFO] [stdout] test theme::gradient::tests::positions_outside_the_rect_have_no_sample_position ... ok
[INFO] [stdout] test theme::gradient::tests::ring_painter_recolors_only_the_outer_ring_and_keeps_glyphs ... ok
[INFO] [stdout] test theme::gradient::tests::ring_painter_restricts_geometrically_and_keeps_the_gradients_direction ... ok
[INFO] [stdout] test theme::gradient::tests::ring_painter_treats_flat_rects_as_a_single_line ... ok
[INFO] [stdout] test theme::gradient::tests::sampler_clamps_positions_outside_the_unit_range ... ok
[INFO] [stdout] test theme::gradient::tests::sampler_interpolates_multiple_stops_with_v1_rounding ... ok
[INFO] [stdout] test theme::gradient::tests::sampler_rounds_half_way_channels_like_the_resolver ... ok
[INFO] [stdout] test theme::gradient::tests::sampling_and_painting_allocate_nothing_per_cell ... ok
[INFO] [stdout] test theme::gradient::tests::single_row_and_single_column_rects_span_their_natural_axis ... ok
[INFO] [stdout] test theme::manager::tests::a_degraded_manager_remembers_the_directory_that_failed ... ok
[INFO] [stdout] test theme::manager::tests::a_missing_theme_falls_back_and_keeps_the_configured_id ... ok
[INFO] [stdout] test theme::manager::tests::a_theme_id_that_is_not_even_a_valid_id_falls_back ... ok
[INFO] [stdout] test theme::manager::tests::a_valid_saved_theme_stays_active ... ok
[INFO] [stdout] test theme::manager::tests::activate_switches_the_theme_and_leaves_the_saved_id_alone ... ok
[INFO] [stdout] test theme::manager::tests::an_active_theme_with_warnings_stays_active_and_reports_them ... ok
[INFO] [stdout] test theme::manager::tests::builtins_only_manager_touches_no_directory ... ok
[INFO] [stdout] test theme::manager::tests::directory_warnings_are_surfaced_not_filtered_to_errors ... ok
[INFO] [stdout] test theme::manager::tests::failed_activation_keeps_the_previous_rc ... ok
[INFO] [stdout] test theme::manager::tests::invalid_saved_theme_falls_back_without_rewriting_config ... ok
[INFO] [stdout] test theme::manager::tests::replace_registry_keeps_the_active_theme ... ok
[INFO] [stdout] test theme::manager::tests::restore_snapshot_puts_back_the_exact_rc ... ok
[INFO] [stdout] test theme::manager::tests::the_active_id_always_names_the_active_theme ... ok
[INFO] [stdout] test theme::model::tests::a_gradient_index_that_points_nowhere_trips_a_debug_assertion - should panic ... ok
[INFO] [stdout] test theme::model::tests::a_resolved_theme_is_fully_readable_through_public_accessors ... ok
[INFO] [stdout] test theme::model::tests::paint_color_at_anchors_perimeter_interiors_at_the_seam ... ok
[INFO] [stdout] test theme::model::tests::paint_color_at_clamps_coordinates_outside_the_component_rect ... ok
[INFO] [stdout] test theme::model::tests::paint_color_at_returns_the_documented_colors_for_a_real_perimeter_theme ... ok
[INFO] [stdout] test theme::model::tests::paint_color_at_survives_a_rect_whose_edge_saturates ... ok
[INFO] [stdout] test theme::model::tests::paint_color_at_survives_an_empty_rect ... ok
[INFO] [stdout] test theme::model::tests::theme_id_accepts_only_v1_filename_characters ... ok
[INFO] [stdout] test theme::parse::tests::a_gradient_reference_needs_the_prefix_and_a_nonempty_name ... ok
[INFO] [stdout] test theme::parse::tests::a_quoted_gradient_key_can_be_referenced_verbatim ... ok
[INFO] [stdout] test theme::parse::tests::collects_unknown_fields_and_multiple_shape_errors ... ok
[INFO] [stdout] test theme::parse::tests::diagnostics_sort_by_source_position ... ok
[INFO] [stdout] test theme::parse::tests::gradient_and_colour_base_on_a_paint_role_conflict ... ok
[INFO] [stdout] test theme::parse::tests::gradient_on_a_non_paint_role_names_the_real_problem ... ok
[INFO] [stdout] test theme::parse::tests::keeps_unknown_component_roles_without_deciding_severity ... ok
[INFO] [stdout] test theme::parse::tests::missing_required_metadata_is_reported ... ok
[INFO] [stdout] test theme::parse::tests::parses_all_metadata_fields_with_spans ... ok
[INFO] [stdout] test theme::parse::tests::parses_brightness_opacity_and_over_transforms ... ok
[INFO] [stdout] test theme::parse::tests::parses_color_paint_and_tint_slots ... ok
[INFO] [stdout] test theme::parse::tests::parses_hex_rgb_reference_and_terminal_colors ... ok
[INFO] [stdout] test theme::parse::tests::parses_minimal_theme_and_retains_source_spans ... ok
[INFO] [stdout] test theme::parse::tests::parses_partial_styles_and_modifiers ... ok
[INFO] [stdout] test theme::parse::tests::parses_whole_style_reset ... ok
[INFO] [stdout] test theme::parse::tests::rejects_malformed_color_shapes_and_keeps_going ... ok
[INFO] [stdout] test theme::parse::tests::reports_gradient_shape_errors_per_stop ... ok
[INFO] [stdout] test theme::parse::tests::reports_malformed_toml_with_its_source_position ... ok
[INFO] [stdout] test theme::parse::tests::reports_unknown_sections_and_semantic_keys_without_dropping_the_rest ... ok
[INFO] [stdout] test theme::parse::tests::reports_wrong_toml_types_for_known_sections ... ok
[INFO] [stdout] test theme::parse::tests::scalar_under_a_known_section_is_a_shape_error ... ok
[INFO] [stdout] test theme::parse::tests::spans_survive_crlf_line_endings ... ok
[INFO] [stdout] test theme::parse::tests::spans_survive_non_ascii_content ... ok
[INFO] [stdout] test theme::registry::tests::a_broken_sibling_does_not_invalidate_the_check_target ... ok
[INFO] [stdout] test store::tests::open_default_uses_data_dir ... ok
[INFO] [stdout] test theme::registry::tests::a_check_target_extending_a_builtin_is_not_reported_as_a_sibling ... ok
[INFO] [stdout] test theme::registry::tests::a_check_target_inside_its_own_directory_is_read_exactly_once ... ok
[INFO] [stdout] test theme::registry::tests::a_check_target_may_carry_a_reserved_id_but_is_warned_about_it ... ok
[INFO] [stdout] test theme::registry::tests::a_check_target_outside_the_themes_directory_is_validated_against_the_builtins ... ok
[INFO] [stdout] test theme::registry::tests::a_check_target_resolves_a_sibling_parent_and_warns_about_installing_it ... ok
[INFO] [stdout] test theme::registry::tests::a_check_target_whose_directory_cannot_be_listed_is_an_io_error ... ok
[INFO] [stdout] test theme::registry::tests::a_check_target_with_a_reserved_id_may_still_parent_a_sibling_check ... ok
[INFO] [stdout] test theme::registry::tests::a_child_distinguishes_an_invalid_installed_parent_from_a_missing_one ... ok
[INFO] [stdout] test theme::registry::tests::a_child_distinguishes_an_oversized_installed_parent_from_a_missing_one ... ok
[INFO] [stdout] test theme::registry::tests::a_child_recognises_an_installed_parent_beyond_the_file_limit ... ok
[INFO] [stdout] test theme::registry::tests::a_filename_that_is_not_a_valid_theme_id_is_reported_and_skipped ... ok
[INFO] [stdout] test theme::registry::tests::a_missing_themes_directory_leaves_only_the_builtins ... ok
[INFO] [stdout] test store::identities::tests::delete_identity_rejects_when_referenced_by_host ... ok
[INFO] [stdout] test theme::registry::tests::a_sibling_of_the_check_target_cannot_shadow_a_builtin ... ok
[INFO] [stdout] test theme::registry::tests::a_theme_file_above_one_mebibyte_is_skipped_with_a_diagnostic ... ok
[INFO] [stdout] test theme::registry::tests::a_theme_that_cannot_resolve_is_isolated_from_its_siblings ... ok
[INFO] [stdout] test theme::registry::tests::a_toml_path_that_is_not_a_readable_file_is_reported ... ok
[INFO] [stdout] test store::migrate::tests::migration_v13_transport_defaults_ssh ... ok
[INFO] [stdout] test theme::registry::tests::a_user_theme_can_extend_a_sibling_user_theme ... ok
[INFO] [stdout] test theme::registry::tests::an_invalid_user_theme_does_not_invalidate_its_siblings ... ok
[INFO] [stdout] test theme::registry::tests::a_theme_file_of_exactly_one_mebibyte_is_accepted ... ok
[INFO] [stdout] test theme::registry::tests::bounded_handle_read_stops_after_the_limit_plus_one_byte ... ok
[INFO] [stdout] test theme::registry::tests::a_check_target_accepts_one_mebibyte_and_rejects_the_next_byte ... ok
[INFO] [stdout] test theme::registry::tests::file_limit_selects_the_lexicographic_prefix_from_shuffled_input ... ok
[INFO] [stdout] test theme::registry::tests::installing_over_a_reserved_id_suggests_a_concrete_new_id ... ok
[INFO] [stdout] test theme::registry::tests::every_record_keeps_the_original_toml_source ... ok
[INFO] [stdout] test theme::registry::tests::reserved_user_collision_is_listed_but_cannot_replace_builtin ... ok
[INFO] [stdout] test theme::registry::tests::theme_check_rejects_a_fifo_without_waiting_for_a_writer ... ok
[INFO] [stdout] test store::identities::tests::list_identities_sorted_by_sort_order_then_name ... ok
[INFO] [stdout] test theme::resolve::tests::a_child_may_opt_its_pty_ground_back_out_to_the_emulator ... ok
[INFO] [stdout] test theme::resolve::tests::a_child_may_reference_names_defined_only_in_the_parent ... ok
[INFO] [stdout] test theme::resolve::tests::a_child_perimeter_redefinition_names_gradient_and_paint_origins ... ok
[INFO] [stdout] test theme::resolve::tests::a_colour_reference_cycle_is_reported ... ok
[INFO] [stdout] test theme::resolve::tests::a_dangling_reference_in_an_unreferenced_palette_entry_is_still_reported ... ok
[INFO] [stdout] test theme::resolve::tests::a_direct_inheritance_cycle_is_reported ... ok
[INFO] [stdout] test theme::resolve::tests::a_gradient_stop_that_resolves_to_terminal_is_rejected ... ok
[INFO] [stdout] test theme::registry::tests::user_themes_are_discovered_lexicographically_and_only_at_the_top_level ... ok
[INFO] [stdout] test theme::resolve::tests::a_missing_colour_reference_is_reported ... ok
[INFO] [stdout] test theme::resolve::tests::a_missing_parent_is_reported ... ok
[INFO] [stdout] test theme::resolve::tests::a_missing_gradient_reference_is_reported ... ok
[INFO] [stdout] test theme::resolve::tests::a_missing_theme_is_reported ... ok
[INFO] [stdout] test theme::resolve::tests::a_perimeter_gradient_needs_identical_resolved_endpoints ... ok
[INFO] [stdout] test theme::resolve::tests::a_perimeter_gradient_whose_endpoints_agree_after_resolution_is_accepted ... ok
[INFO] [stdout] test theme::resolve::tests::a_runaway_reference_chain_is_reported_once_for_all_its_consumers ... ok
[INFO] [stdout] test theme::resolve::tests::a_semantic_slot_may_reference_another_slot_of_the_same_core ... ok
[INFO] [stdout] test theme::resolve::tests::a_semantic_slot_missing_from_the_whole_chain_is_reported ... ok
[INFO] [stdout] test theme::resolve::tests::a_theme_without_extends_inherits_default_implicitly ... ok
[INFO] [stdout] test theme::resolve::tests::a_tint_role_resolves_native_and_auto ... ok
[INFO] [stdout] test theme::resolve::tests::a_transform_on_a_colour_that_resolves_to_terminal_is_rejected ... ok
[INFO] [stdout] test theme::resolve::tests::an_ancestor_that_defines_both_halves_still_fails_the_child ... ok
[INFO] [stdout] test theme::resolve::tests::an_indirect_inheritance_cycle_is_reported ... ok
[INFO] [stdout] test theme::resolve::tests::an_empty_modifier_list_clears_inherited_modifiers ... ok
[INFO] [stdout] test theme::resolve::tests::an_opacity_ground_that_resolves_to_terminal_names_its_origin ... ok
[INFO] [stdout] test theme::resolve::tests::an_inherited_perimeter_gradient_is_rejected_on_an_open_role ... ok
[INFO] [stdout] test theme::resolve::tests::auto_true_next_to_concrete_style_fields_resets_first ... ok
[INFO] [stdout] test theme::registry::tests::invalid_early_file_names_still_consume_the_deterministic_file_limit ... ok
[INFO] [stdout] test theme::resolve::tests::auto_resets_whole_roles_and_individual_style_fields_to_catalog_fallbacks ... ok
[INFO] [stdout] test theme::resolve::tests::brightness_is_applied_before_opacity ... ok
[INFO] [stdout] test theme::resolve::tests::colour_maths_round_and_clamp_at_the_endpoints ... ok
[INFO] [stdout] test theme::resolve::tests::diagnostics_come_back_in_presentation_order ... ok
[INFO] [stdout] test theme::resolve::tests::every_role_without_an_override_carries_its_catalogue_fallback ... ok
[INFO] [stdout] test theme::resolve::tests::colour_reference_depth_is_capped_at_sixteen ... ok
[INFO] [stdout] test theme::resolve::tests::modifiers_auto_restores_the_catalogue_fallback ... ok
[INFO] [stdout] test theme::resolve::tests::references_are_resolved_after_the_definition_merge ... ok
[INFO] [stdout] test theme::resolve::tests::terminal_stays_a_legal_style_colour ... ok
[INFO] [stdout] test theme::resolve::tests::the_implicit_ground_reports_its_own_origin_when_it_is_terminal ... ok
[INFO] [stdout] test theme::resolve::tests::the_inheritance_chain_runs_from_the_child_to_the_root ... ok
[INFO] [stdout] test theme::resolve::tests::the_implicit_mixing_ground_is_the_merged_semantic_background ... ok
[INFO] [stdout] test theme::resolve::tests::inheritance_depth_is_capped_at_sixteen ... ok
[INFO] [stdout] test theme::resolve::tests::two_semantic_slots_referencing_each_other_are_reported_as_a_cycle ... ok
[INFO] [stdout] test theme::validate::tests::a_role_section_reported_as_an_unknown_role_stays_fatal ... ok
[INFO] [stdout] test theme::validate::tests::a_style_reset_written_as_false_is_rejected_in_both_modes ... ok
[INFO] [stdout] test theme::validate::tests::a_style_reset_written_as_true_stays_valid_next_to_concrete_fields ... ok
[INFO] [stdout] test theme::validate::tests::an_empty_display_name_is_rejected ... ok
[INFO] [stdout] test theme::validate::tests::auto_and_native_typos_suggest_their_sentinels ... ok
[INFO] [stdout] test theme::validate::tests::auto_is_only_a_component_sentinel ... ok
[INFO] [stdout] test theme::validate::tests::brightness_and_opacity_stay_inside_their_ranges ... ok
[INFO] [stdout] test theme::validate::tests::diagnostics_are_sorted_by_source_position ... ok
[INFO] [stdout] test theme::validate::tests::compatible_only_downgrades_unknown_component_roles ... ok
[INFO] [stdout] test theme::validate::tests::gradient_directions_are_spell_checked ... ok
[INFO] [stdout] test theme::validate::tests::a_genuinely_new_role_gets_no_suggestion ... ok
[INFO] [stdout] test theme::validate::tests::gradient_stops_reject_non_rgb_colours ... ok
[INFO] [stdout] test theme::validate::tests::modifier_names_are_checked_and_spell_checked ... ok
[INFO] [stdout] test theme::validate::tests::native_is_only_valid_on_tint_roles ... ok
[INFO] [stdout] test theme::validate::tests::gradient_stops_must_be_complete_ordered_and_bounded ... ok
[INFO] [stdout] test theme::validate::tests::over_requires_opacity_and_an_opaque_ground ... ok
[INFO] [stdout] test theme::validate::tests::rgb_channels_must_be_bytes ... ok
[INFO] [stdout] test theme::validate::tests::perimeter_is_rejected_on_roles_without_a_closed_frame ... ok
[INFO] [stdout] test theme::validate::tests::schema_version_must_be_exactly_one ... ok
[INFO] [stdout] test theme::validate::tests::sentinel_typo_gets_a_specific_suggestion ... ok
[INFO] [stdout] test theme::validate::tests::semantic_background_must_not_use_opacity ... ok
[INFO] [stdout] test theme::validate::tests::terminal_rejects_every_transform ... ok
[INFO] [stdout] test theme::validate::tests::the_color_key_only_takes_a_reference ... ok
[INFO] [stdout] test theme::validate::tests::the_role_type_matrix_stays_fatal_in_compatible_mode ... ok
[INFO] [stdout] test theme::validate::tests::the_sentinel_pass_only_touches_colour_string_diagnostics ... ok
[INFO] [stdout] test theme::validate::tests::theme_ids_in_extends_are_checked ... ok
[INFO] [stdout] test theme::validate::tests::unknown_gradient_and_stop_keys_are_reported_with_their_path ... ok
[INFO] [stdout] test theme::validate::tests::unknown_roles_suggest_the_closest_catalogue_path ... ok
[INFO] [stdout] test theme::validate::tests::unknown_top_level_semantic_and_style_fields_are_fatal_in_both_modes ... ok
[INFO] [stdout] test tui::animation::tests::animation_not_complete_immediately ... ok
[INFO] [stdout] test theme::validate::tests::every_catalogue_role_accepts_its_own_sentinel ... ok
[INFO] [stdout] test tui::animation::tests::animation_uses_runtime_wordmark_and_halo_roles ... ok
[INFO] [stdout] test tui::animation::tests::render_does_not_panic_on_small_terminal ... ok
[INFO] [stdout] test tui::animation::tests::render_does_not_panic_on_test_backend ... ok
[INFO] [stdout] test tui::animation::tests::every_animation_cell_wears_its_own_role ... ok
[INFO] [stdout] test tui::animation::tests::the_compact_animation_wears_the_wordmark_and_prompt_roles ... ok
[INFO] [stdout] test theme::registry::tests::exactly_the_file_limit_of_themes_loads_untruncated ... ok
[INFO] [stdout] test tui::animation::tests::the_animation_reproduces_its_legacy_cells_under_default ... ok
[INFO] [stdout] test tui::blit::tests::blit_moves_cells_horizontally_and_clips_both_edges ... ok
[INFO] [stdout] test tui::blit::tests::blit_moves_cells_vertically ... ok
[INFO] [stdout] test tui::blit::tests::blit_past_the_clip_writes_nothing ... ok
[INFO] [stdout] test tui::blit::tests::blit_with_no_offset_is_a_plain_copy ... ok
[INFO] [stdout] test tui::blit::tests::a_fade_leaves_its_exclusions_alone ... ok
[INFO] [stdout] test tui::blit::tests::a_faded_slice_samples_the_same_ground_as_the_whole_frame ... ok
[INFO] [stdout] test theme::validate::tests::size_and_count_limits_are_enforced ... ok
[INFO] [stdout] test tui::blit::tests::fade_at_rest_leaves_the_cells_alone ... ok
[INFO] [stdout] test theme::registry::tests::at_most_the_file_limit_of_themes_is_loaded ... ok
[INFO] [stdout] test tui::blit::tests::fade_pulls_colours_toward_the_background ... ok
[INFO] [stdout] test tui::blit::tests::snapshot_copies_the_area_verbatim ... ok
[INFO] [stdout] test tui::blit::tests::the_details_fade_blends_towards_the_details_gradient_not_the_app_one ... ok
[INFO] [stdout] test tui::blit::tests::fade_towards_a_gradient_samples_per_cell ... ok
[INFO] [stdout] test tui::dashboard_layout::tests::canonical_132x38 ... ok
[INFO] [stdout] test tui::dashboard_layout::tests::narrow_80x24 ... ok
[INFO] [stdout] test tui::dashboard_layout::tests::tiny_terminal ... ok
[INFO] [stdout] test tui::dashboard_layout::tests::zoom_keeps_side_columns_usable ... ok
[INFO] [stdout] test tui::dashboard_layout::tests::zoom_widens_left_column_and_shrinks_others ... ok
[INFO] [stdout] test tui::screens::audit::tests::audit_note_appends_log_dir_to_session_started ... ok
[INFO] [stdout] test tui::screens::audit::tests::audit_note_note_only_without_log_path ... ok
[INFO] [stdout] test tui::screens::audit::tests::audit_note_uses_path_when_note_empty ... ok
[INFO] [stdout] test tui::blit::tests::paint_border_leaves_a_solid_role_alone ... ok
[INFO] [stdout] test tui::blit::tests::paint_border_gradients_the_frame_without_touching_the_title ... ok
[INFO] [stdout] test tui::blit::tests::the_fade_ground_follows_the_role_it_is_given ... ok
[INFO] [stdout] test tui::blit::tests::fill_paint_lays_down_a_solid_role_and_samples_a_gradient_one ... ok
[INFO] [stdout] test tui::screens::audit::tests::audit_rows_wear_their_row_roles_in_both_states ... ok
[INFO] [stdout] test tui::screens::audit::tests::the_audit_filter_strip_wears_its_two_chip_roles ... ok
[INFO] [stdout] test tui::screens::audit::tests::the_audit_note_line_reads_its_own_role ... ok
[INFO] [stdout] test tui::screens::audit::tests::the_audit_table_chrome_wears_its_roles ... ok
[INFO] [stdout] test tests::headless_auto_quit_q_sets_should_quit ... ok
[INFO] [stdout] test tui::screens::audit::tests::the_audit_tab_reproduces_its_legacy_cells_under_default ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::a_broadcast_toast_wears_the_error_state_colour ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::a_silent_host_reports_no_output_in_the_detail_role ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::docked_rect_stays_inside_tiny_dashboard_bodies ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::broadcast_stdout_and_stderr_never_share_a_role ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::docked_broadcast_renderer_clips_right_and_bottom_overhangs ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::every_broadcast_state_wears_its_own_colour ... ok
[INFO] [stdout] test tui::screens::audit::tests::every_audit_status_wears_its_own_colour ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::the_countdown_gauge_wears_its_two_roles ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::broadcast_panels_crop_without_reflowing_their_original_layout ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::the_broadcast_wizard_popups_wear_the_overlay_roles ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::the_docked_broadcast_panel_wears_its_roles_in_both_focus_states ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::the_broadcast_wizard_popups_survive_a_tiny_terminal ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::the_zoomed_broadcast_view_wears_the_same_bundle ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::the_zoomed_broadcast_view_wears_its_output_roles ... ok
[INFO] [stdout] test tui::screens::help::tests::empty_query_keeps_full_item_list ... ok
[INFO] [stdout] test tui::screens::help::tests::empty_query_lines_match_pre_filter_shape ... ok
[INFO] [stdout] test tui::screens::help::tests::profile_help_filters_and_renders_current_binding ... ok
[INFO] [stdout] test tui::screens::help::tests::query_matches_key_spec_and_description ... ok
[INFO] [stdout] test tui::screens::help::tests::stranded_section_headers_are_omitted ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::zoomed_broadcast_renderer_clips_right_and_bottom_overhangs ... ok
[INFO] [stdout] test tui::screens::host_form::tests::cleared_fields_show_inherited_placeholders ... ok
[INFO] [stdout] test tui::screens::host_form::tests::explicit_values_hide_their_placeholders ... ok
[INFO] [stdout] test tui::screens::keychain::tests::form_shows_cert_detail_line ... ok
[INFO] [stdout] test tui::screens::group_manage::tests::group_notice_is_painted_in_the_manager_popup ... ok
[INFO] [stdout] test tui::screens::keychain::tests::form_without_cert_status_shows_no_detail_line ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::the_broadcast_surfaces_reproduce_their_legacy_cells_under_default ... ok
[INFO] [stdout] test tui::screens::keychain::tests::long_cert_detail_line_fits_the_form_width ... ok
[INFO] [stdout] test tui::screens::keygen::tests::the_default_theme_keeps_the_focused_row_emphasis ... ok
[INFO] [stdout] test tui::screens::keygen::tests::the_keygen_form_wears_its_six_roles ... ok
[INFO] [stdout] test tui::screens::keys::tests::cert_badge_shows_expired_state ... ok
[INFO] [stdout] test tui::screens::keys::tests::cert_badge_shows_mismatch_state ... ok
[INFO] [stdout] test tui::screens::keys::tests::cert_badge_shows_missing_state ... ok
[INFO] [stdout] test tui::screens::keys::tests::cert_badge_shows_valid_with_principal_and_expiry ... ok
[INFO] [stdout] test tui::screens::keys::tests::key_card_status_row_does_not_overlap ... ok
[INFO] [stdout] test tui::screens::keychain::tests::long_path_rows_fit_the_form_width ... ok
[INFO] [stdout] test tui::screens::keys::tests::regular_key_type_labels_unchanged ... ok
[INFO] [stdout] test tui::screens::keys::tests::resolve_columns_auto_and_manual ... ok
[INFO] [stdout] test tui::screens::keys::tests::keyless_card_shows_password_credential ... ok
[INFO] [stdout] test tui::screens::keys::tests::sk_card_renders_security_key_badge ... ok
[INFO] [stdout] test tui::screens::keys::tests::unknown_key_types_degrade_to_generic_key ... ok
[INFO] [stdout] test tui::screens::keys::tests::sk_key_paths_labelled_as_security_keys ... ok
[INFO] [stdout] test tui::screens::keybind_editor::tests::selected_row_controls_keep_their_foreground_over_the_selection_background ... ok
[INFO] [stdout] test tui::screens::auth::tests::narrow_terminal_max_scroll_keeps_final_prompt_line_visible ... ok
[INFO] [stdout] test tui::screens::session_picker::tests::body_never_exceeds_the_row ... ok
[INFO] [stdout] test tui::screens::session_picker::tests::current_is_all_or_nothing_and_takes_priority_over_the_body ... ok
[INFO] [stdout] test tui::screens::session_picker::tests::prefix_is_all_or_nothing ... ok
[INFO] [stdout] test tui::screens::keys::tests::identity_cards_gradient_the_border_role_their_selection_state_names ... ok
[INFO] [stdout] test tui::screens::known_hosts::tests::known_hosts_uses_runtime_theme_roles_and_survives_tiny_terminals ... ok
[INFO] [stdout] test tui::screens::palette::tests::a_gradient_separator_sweeps_the_palette_rule ... ok
[INFO] [stdout] test tui::screens::settings::tests::settings_hints_fit_the_popup_without_ellipsizing ... ok
[INFO] [stdout] test tui::screens::settings::tests::a_gradient_popup_border_reaches_the_frame_without_recolouring_the_title ... ok
[INFO] [stdout] test tui::screens::settings::tests::a_toggle_row_still_renders_its_checkbox ... ok
[INFO] [stdout] test tui::screens::sftp::tests::a_notice_that_fits_exactly_is_not_ellipsised ... ok
[INFO] [stdout] test tui::screens::sftp::tests::a_wide_glyph_queue_notice_stays_inside_the_strip ... ok
[INFO] [stdout] test tui::screens::sftp::tests::blit_panes_at_rest_reproduces_the_source ... ok
[INFO] [stdout] test tui::screens::sftp::tests::blit_panes_fully_pushed_leaves_nothing_behind ... ok
[INFO] [stdout] test tui::screens::sftp::tests::blit_panes_halves_move_in_opposite_directions ... ok
[INFO] [stdout] test tui::screens::sftp::tests::both_panes_show_a_cursor_and_they_are_not_the_same_role ... ok
[INFO] [stdout] test tui::screens::sftp::tests::both_sftp_panes_wear_the_panel_roles_in_both_focus_states ... ok
[INFO] [stdout] test tui::screens::sftp::tests::each_pane_colours_its_directories_with_its_own_role ... ok
[INFO] [stdout] test tui::screens::sftp::tests::the_sftp_browser_reproduces_its_legacy_cells_under_default ... ok
[INFO] [stdout] test tui::screens::sftp::tests::the_sftp_notice_is_its_own_role_in_both_queue_states ... ok
[INFO] [stdout] test tui::screens::settings::tests::the_theme_row_shows_the_active_theme_instead_of_a_checkbox ... ok
[INFO] [stdout] test tui::screens::sftp::tests::the_sftp_progress_line_wears_its_three_roles ... ok
[INFO] [stdout] test tui::screens::push_key_pickers::tests::pickers_survive_a_tiny_terminal ... ok
[INFO] [stdout] test tui::screens::sftp::tests::the_sftp_queue_wears_its_own_roles ... ok
[INFO] [stdout] test tui::screens::sftp::tests::the_sftp_search_bar_wears_its_inverse_role ... ok
[INFO] [stdout] test tui::screens::sftp::tests::the_unfocused_pane_cursor_is_visible_under_default ... ok
[INFO] [stdout] test tui::screens::settings::tests::the_legend_matches_the_selected_row_kind ... ok
[INFO] [stdout] test tui::screens::settings::tests::selected_row_controls_keep_their_foreground_over_the_selection_background ... ok
[INFO] [stdout] test tui::screens::sftp::tests::the_sftp_picker_hint_switches_role_while_searching ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::a_footer_that_fits_gets_no_scroll_hint ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::common_terminal_sizes_get_the_mode_they_should ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::narrow_layout_stacks_the_preview_under_the_list ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::a_picker_error_is_shown_first_and_in_red ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::a_solid_theme_paints_a_flat_frame ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::stacking_never_costs_more_height_than_side_by_side ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_default_eighty_by_twentyfour_terminal_gets_a_preview ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::a_gradient_background_is_sampled_per_cell_not_flattened ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::preview_contains_two_boxes_gradient_and_semantic_statuses ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::all_three_modes_share_the_selected_row_and_diagnostics ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::renders_at_one_by_one ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_list_scrolls_only_as_far_as_the_last_page ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_footer_shows_the_legend_and_the_theme_path ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_footer_shows_the_selected_themes_description ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_hidden_preview_is_explained_on_its_own_row ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_page_step_follows_the_shrunken_list ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_list_starts_with_the_built_ins_in_order ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_diagnostics_footer_scrolls_through_every_ignored_role ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_preview_never_overlaps_the_footer_rows ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_named_degenerate_sizes_draw_without_writing_outside ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_preview_draws_a_divider_under_the_text_sampler ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_picker_chrome_wears_its_own_roles ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_preview_shows_a_selected_and_a_plain_host_row ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_preview_paints_background_fill_and_padding ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_preview_shows_the_footer_key_label_contrast ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_preview_shows_active_and_inactive_session_tabs ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::tiny_layout_keeps_the_list_and_hides_preview ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_preview_follows_the_selection ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_preview_shows_the_four_text_roles ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::wide_layout_places_list_left_and_preview_right ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_selected_row_carries_the_selection_background ... ok
[INFO] [stdout] test store::identities::tests::identity_crud_roundtrip ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::the_two_boxes_use_the_focused_and_the_inactive_frame ... ok
[INFO] [stdout] test tui::screens::tunnels::tests::every_tunnel_state_wears_its_own_status_colour ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::tiny_terminals_keep_the_layout_inside_the_area ... ok
[INFO] [stdout] test tui::screens::tunnel_reconnect::tests::selected_row_controls_keep_their_foreground_over_the_selection_background ... ok
[INFO] [stdout] test store::migrate::tests::migration_backfills_memberships_from_group_id_and_favorite ... ok
[INFO] [stdout] test tui::screens::tunnels::tests::an_unselected_host_picker_row_reads_the_row_role ... ok
[INFO] [stdout] test tui::screens::theme_picker::tests::warning_theme_is_selectable_and_displays_ignored_roles ... ok
[INFO] [stdout] test tui::screens::tunnels::tests::a_gradient_separator_sweeps_the_tunnel_host_picker_rule ... ok
[INFO] [stdout] test tui::screens::tunnels::tests::the_error_line_separates_retrying_from_given_up ... ok
[INFO] [stdout] test tui::screens::tunnels::tests::tunnel_row_columns_wear_the_tunnels_roles ... ok
[INFO] [stdout] test tui::screens::tunnels::tests::the_tunnel_host_picker_wears_the_picker_roles ... ok
[INFO] [stdout] test tui::screens::tunnels::tests::the_tunnel_tab_chrome_wears_the_tunnels_roles ... ok
[INFO] [stdout] test tui::screens::tunnels::tests::the_tunnel_tab_notice_is_the_notice_role ... ok
[INFO] [stdout] test tui::tests::a_dashboard_tab_switch_does_not_expand_an_exit_slides_protected_band ... ok
[INFO] [stdout] test tui::screens::tunnels::tests::the_tunnel_tab_reproduces_its_legacy_cells_under_default ... ok
[INFO] [stdout] test tui::screens::tunnels::tests::the_tunnel_form_wears_its_own_role_family ... ok
[INFO] [stdout] test tui::screens::broadcast::tests::the_docked_panel_survives_a_tiny_terminal ... ok
[INFO] [stdout] test tui::tests::a_finished_exit_slide_leaves_no_protected_band_behind ... ok
[INFO] [stdout] test tui::screens::tunnels::tests::the_tunnel_form_reproduces_its_legacy_cells_under_default ... ok
[INFO] [stdout] test tui::tests::a_generic_popup_wears_the_popup_background_not_the_app_background ... ok
[INFO] [stdout] test tui::tests::a_selection_sharing_the_surface_colour_survives_the_release ... ok
[INFO] [stdout] test tui::tests::a_gradient_background_never_reaches_the_remote_pty ... ok
[INFO] [stdout] test tui::tests::a_painted_pty_ground_never_leaves_the_foreground_to_the_emulator ... ok
[INFO] [stdout] test tui::tests::a_pty_theme_opt_out_falls_back_to_the_canvas_not_to_the_emulator ... ok
[INFO] [stdout] test tui::tests::a_reversed_remote_cell_gets_both_channels_or_it_swaps_against_nothing ... ok
[INFO] [stdout] test tui::tests::a_session_in_the_background_protects_nothing_on_the_dashboard ... ok
[INFO] [stdout] test tui::tests::a_finished_session_tab_slide_neither_blits_nor_protects_a_remote_band ... ok
[INFO] [stdout] test tui::tests::a_slide_that_cannot_play_protects_the_resting_viewport ... ok
[INFO] [stdout] test tui::tests::a_solid_pty_ground_with_a_terminal_foreground_still_gets_a_foreground ... ok
[INFO] [stdout] test tui::tests::an_exit_snapshot_from_a_shorter_terminal_protects_only_what_it_covers ... ok
[INFO] [stdout] test tui::tests::agent_panel_does_not_overprint_a_half_scrolled_card_row ... ok
[INFO] [stdout] test tui::tests::a_running_to_connecting_tab_slide_protects_the_blitted_remote_cell ... ok
[INFO] [stdout] test tui::tests::a_theme_that_leaves_every_foreground_to_the_emulator_writes_no_ground_at_all ... ok
[INFO] [stdout] test tui::tests::a_theme_with_its_own_ground_backs_the_remote_pty ... ok
[INFO] [stdout] test tui::tests::an_unloaded_key_card_wears_the_missing_colour ... ok
[INFO] [stdout] test tui::tests::a_themed_pty_ground_keeps_the_colours_the_remote_chose ... ok
[INFO] [stdout] test tui::tests::an_exit_snapshot_from_a_taller_terminal_is_protected_where_it_lands ... ok
[INFO] [stdout] test tui::tests::confirm_error_and_warning_use_popup_semantic_roles ... ok
[INFO] [stdout] test tui::tests::a_gradient_picker_border_reaches_the_session_picker_frame ... ok
[INFO] [stdout] test tui::tests::a_session_slide_without_a_fresh_dashboard_snapshot_draws_nothing ... ok
[INFO] [stdout] test tui::tests::dashboard_footer_shows_keybinds ... ok
[INFO] [stdout] test tui::tests::default_dashboard_matches_frozen_legacy_buffer ... ok
[INFO] [stdout] test tui::tests::every_role_seated_on_a_ground_slot_is_actually_released ... ok
[INFO] [stdout] test tui::tests::connecting_screen_shows_spinner_overlay ... ok
[INFO] [stdout] test tui::tests::failed_connect_shows_x_and_reason ... ok
[INFO] [stdout] test tui::tests::dashboard_shows_open_session_strip ... ok
[INFO] [stdout] test tui::tests::golden_signature_failure_distinguishes_crlf_from_lf ... ok
[INFO] [stdout] test tui::tests::golden_signature_failure_reports_a_missing_final_line_feed ... ok
[INFO] [stdout] test tui::tests::golden_signature_failure_reports_a_missing_or_extra_cell ... ok
[INFO] [stdout] test tui::tests::golden_signature_failure_reports_only_the_first_different_cell ... ok
[INFO] [stdout] test tui::tests::form_labels_and_focus_indicator_are_independently_themed ... ok
[INFO] [stdout] test store::hosts::tests::insert_and_list_host_roundtrip ... ok
[INFO] [stdout] test tui::tests::group_manage_renders_as_themed_popup ... ok
[INFO] [stdout] test tui::tests::header_stats_count_unreachable_hosts ... ok
[INFO] [stdout] test tui::tests::keybind_and_tunnels_selections_stay_distinct ... ok
[INFO] [stdout] test tui::tests::help_overlay_shows_query_and_filters ... ok
[INFO] [stdout] test tui::tests::hosts_panel_scrolls_to_keep_selection_visible ... ok
[INFO] [stdout] test tui::tests::keybind_editor_shows_query_and_filters ... ok
[INFO] [stdout] test tui::tests::connecting_exit_slide_paints_the_outgoing_chrome ... ok
[INFO] [stdout] test tui::tests::nested_group_renders_indented ... ok
[INFO] [stdout] test tui::tests::cycling_tabs_from_the_dashboard_stays_on_the_dashboard ... ok
[INFO] [stdout] test tui::tests::connecting_to_running_tab_slide_paints_the_outgoing_chrome ... ok
[INFO] [stdout] test tui::tests::overlay_selected_rows_use_their_own_row_roles ... ok
[INFO] [stdout] test tui::tests::popup_titles_stay_bold_under_default ... ok
[INFO] [stdout] test tui::tests::palette_popup_interior_filled_with_theme_bg ... ok
[INFO] [stdout] test tui::tests::entering_a_session_from_the_dashboard_slides_it_in ... ok
[INFO] [stdout] test tui::tests::dashboard_strip_highlight_travels_instead_of_teleporting ... ok
[INFO] [stdout] test store::migrate::tests::migration_does_not_hijack_a_user_group_named_favorites ... ok
[INFO] [stdout] test tui::tests::profile_footer_does_not_advertise_unavailable_management ... ok
[INFO] [stdout] test tui::tests::releasing_sshub_keeps_the_colours_that_are_not_ground ... ok
[INFO] [stdout] test tui::tests::keys_tab_scrolls_to_keep_selection_visible ... ok
[INFO] [stdout] test tui::tests::releasing_sshub_reaches_the_panel_bodies_a_theme_paints_itself ... ok
[INFO] [stdout] test tui::tests::profile_footer_and_settings_show_current_workspace_and_remapped_key ... ok
[INFO] [stdout] test tui::tests::render_dashboard_shows_header_stats ... ok
[INFO] [stdout] test tui::tests::render_hides_detail_panel_when_disabled ... ok
[INFO] [stdout] test tui::tests::failed_exit_slide_paints_the_outgoing_chrome ... ok
[INFO] [stdout] test tui::tests::render_host_list_shows_favorite_star ... ok
[INFO] [stdout] test tui::tests::profile_picker_overlay_renders_on_tiny_terminals ... ok
[INFO] [stdout] test tui::tests::render_includes_host_name_in_list ... ok
[INFO] [stdout] test tui::tests::render_palette_mode_shows_query ... ok
[INFO] [stdout] test tui::tests::render_shows_host_card_and_version ... ok
[INFO] [stdout] test tui::tests::selected_identity_card_uses_identity_selection_not_table_highlight ... ok
[INFO] [stdout] test tui::tests::releasing_sshubs_surfaces_leaves_a_themed_grid_untouched ... ok
[INFO] [stdout] test tui::tests::releasing_sshubs_surfaces_leaves_the_grid_opaque ... ok
[INFO] [stdout] test tui::tests::releasing_the_grid_leaves_the_canvas_fill_its_own_work ... ok
[INFO] [stdout] test tui::tests::narrow_footer_keeps_help_and_quit_and_marks_the_gap ... ok
[INFO] [stdout] test tui::tests::profile_footer_keeps_connect_resume_help_quit_at_eighty_columns ... ok
[INFO] [stdout] test tui::tests::sftp_footer_points_back_to_local_once_the_left_pane_is_remote ... ok
[INFO] [stdout] test tui::tests::sshub_is_opaque_by_default_and_transparent_on_request ... ok
[INFO] [stdout] test tui::tests::running_to_connecting_tab_slide_paints_the_incoming_chrome ... ok
[INFO] [stdout] test tui::tests::tab_bar_long_profile_preserves_scope_and_version ... ok
[INFO] [stdout] test store::migrate::tests::migration_v13_to_v14_creates_snippets ... ok
[INFO] [stdout] test tui::tests::sshub_surfaces_are_opaque_out_of_the_box_under_every_theme ... ok
[INFO] [stdout] test store::migrate::tests::migration_from_v13_creates_both_snippets_and_log_bookmarks ... ok
[INFO] [stdout] test tui::tests::the_canvas_backs_a_theme_that_claims_no_ground ... ok
[INFO] [stdout] test tui::tests::the_canvas_fill_cannot_override_an_explicit_surface ... ok
[INFO] [stdout] test tui::tests::session_picker_draws_dashboard_or_session_behind_it ... ok
[INFO] [stdout] test tui::tests::tab_bar_profile_label_bounds_cjk_and_combining_names ... ok
[INFO] [stdout] test tui::tests::session_picker_renders_each_lifecycle_with_word_colour_and_ordinal ... ok
[INFO] [stdout] test tui::tests::the_app_surface_never_reaches_the_remote_pty ... ok
[INFO] [stdout] test tui::tests::tab_bar_profile_label_tracks_selected_workspace ... ok
[INFO] [stdout] test tui::tests::session_picker_selection_highlights_without_eating_the_badge ... ok
[INFO] [stdout] test tui::tests::the_canvas_pair_backs_a_grid_no_theme_claims ... ok
[INFO] [stdout] test tui::tests::the_empty_identities_tab_wears_its_own_roles ... ok
[INFO] [stdout] test tui::tests::the_group_form_wears_its_own_focus_roles ... ok
[INFO] [stdout] test store::migrate::tests::migration_snapshots_the_database_first_and_keeps_three ... ok
[INFO] [stdout] test tui::tests::the_forms_uncoloured_cells_keep_their_documented_roles ... ok
[INFO] [stdout] test tui::tests::the_enter_slide_protects_only_the_columns_the_remote_actually_occupies ... ok
[INFO] [stdout] test tui::tests::the_group_popup_wears_both_table_roles ... ok
[INFO] [stdout] test tui::tests::the_help_sheet_wears_its_own_three_roles ... ok
[INFO] [stdout] test tui::tests::the_exit_slide_is_protected_across_its_last_half_column_step ... ok
[INFO] [stdout] test tui::tests::the_identity_cards_wear_every_identities_role ... ok
[INFO] [stdout] test tui::tests::the_palette_wears_its_row_and_chrome_roles ... ok
[INFO] [stdout] test tui::tests::the_host_form_wears_every_form_role ... ok
[INFO] [stdout] test tui::tests::the_prompt_popups_wear_the_plain_input_role ... ok
[INFO] [stdout] test tui::tests::the_keybind_editor_wears_every_keybind_role ... ok
[INFO] [stdout] test tui::tests::the_settings_and_tag_popups_wear_the_picker_roles ... ok
[INFO] [stdout] test tui::tests::the_splash_fade_and_the_exit_slide_agree_on_the_same_frame ... ok
[INFO] [stdout] test tui::tests::the_tunnel_reconnect_popup_wears_the_settings_roles ... ok
[INFO] [stdout] test tui::tests::the_field_markers_reproduce_their_legacy_cells_under_default ... ok
[INFO] [stdout] test tui::tests::the_session_exit_slide_never_repaints_the_remote_pty ... ok
[INFO] [stdout] test tui::tests::the_session_slides_in_over_the_dashboard_not_over_black ... ok
[INFO] [stdout] test tui::tests::the_zoom_toast_wears_its_own_role ... ok
[INFO] [stdout] test tui::tests::the_exit_slide_protects_the_columns_it_actually_blitted ... ok
[INFO] [stdout] test tui::tests::theme_background_explicit_solid_paints_the_whole_dashboard ... ok
[INFO] [stdout] test tui::tests::theme_background_explicit_gradient_is_sampled_per_cell ... ok
[INFO] [stdout] test tui::tests::theme_gradient_release_benchmark ... ignored, local release measurement; prints timings, asserts none
[INFO] [stdout] test tui::tests::theme_background_terminal_leaves_the_canvas_transparent ... ok
[INFO] [stdout] test tui::text::tests::ellipsize_is_char_safe ... ok
[INFO] [stdout] test tui::text::tests::pad_ellipsize_pads_by_chars ... ok
[INFO] [stdout] test tui::theme::tests::the_surviving_mappings_still_band_values_exactly_as_the_palette_did ... ok
[INFO] [stdout] test tui::tween::tests::color_lerp_blends_rgb_channels ... ok
[INFO] [stdout] test tui::tween::tests::color_lerp_switches_non_rgb_at_the_midpoint ... ok
[INFO] [stdout] test tui::tween::tests::ease_in_out_endpoints_and_symmetry ... ok
[INFO] [stdout] test tui::tween::tests::ease_out_clamps_out_of_range ... ok
[INFO] [stdout] test tui::tween::tests::ease_out_endpoints ... ok
[INFO] [stdout] test tui::tween::tests::ease_out_is_ahead_of_linear ... ok
[INFO] [stdout] test tui::tween::tests::ease_out_monotonic ... ok
[INFO] [stdout] test tui::tween::tests::in_out_slide_reaches_endpoints ... ok
[INFO] [stdout] test tui::tween::tests::is_done_transitions ... ok
[INFO] [stdout] test tui::tween::tests::progress_clamps_and_endpoints ... ok
[INFO] [stdout] test tui::tween::tests::pulse_stays_in_range ... ok
[INFO] [stdout] test tui::tween::tests::rect_at_between_endpoints ... ok
[INFO] [stdout] test tui::tween::tests::rect_at_endpoints ... ok
[INFO] [stdout] test tui::tween::tests::rect_at_zero_duration_is_target ... ok
[INFO] [stdout] test tui::tween::tests::rect_lerp_clamps_t ... ok
[INFO] [stdout] test tui::tween::tests::rect_lerp_endpoints ... ok
[INFO] [stdout] test tui::tween::tests::rect_lerp_midpoint ... ok
[INFO] [stdout] test tui::tween::tests::spinner_frame_advances_and_wraps ... ok
[INFO] [stdout] test tui::tween::tests::spinner_frame_now_is_one_of_the_frames ... ok
[INFO] [stdout] test tui::widgets::header::tests::an_inactive_session_chip_takes_the_session_inactive_role ... ok
[INFO] [stdout] test tui::tests::the_user_can_hand_the_grid_back_to_the_terminal_whatever_the_theme_paints ... ok
[INFO] [stdout] test tui::tests::the_user_can_make_sshubs_own_surfaces_transparent_whatever_the_theme_paints ... ok
[INFO] [stdout] test store::migrate::tests::migration_v15_to_v16_adds_group_defaults_and_nulls_sentinels ... ok
[INFO] [stdout] test tui::widgets::hosts_panel::tests::highlight_at_zero_clears_the_row ... ok
[INFO] [stdout] test tui::tests::the_two_transparency_switches_are_independent ... ok
[INFO] [stdout] test tui::widgets::hosts_panel::tests::highlight_at_rest_keeps_the_whole_bar ... ok
[INFO] [stdout] test tui::widgets::hosts_panel::tests::highlight_fills_from_the_left ... ok
[INFO] [stdout] test tui::widgets::hosts_panel::tests::a_group_label_takes_the_group_role ... ok
[INFO] [stdout] test tui::widgets::hosts_panel::tests::an_unselected_host_name_takes_the_host_role ... ok
[INFO] [stdout] test tui::widgets::middle_stack::tests::hard_splits_overlong_words ... ok
[INFO] [stdout] test tui::widgets::middle_stack::tests::never_empty_and_short_fits ... ok
[INFO] [stdout] test tui::widgets::hosts_panel::tests::the_wipe_restores_the_panel_background_role ... ok
[INFO] [stdout] test tui::widgets::hosts_panel::tests::the_hosts_panel_wears_its_own_five_roles_in_both_focus_states ... ok
[INFO] [stdout] test tui::widgets::hosts_panel::tests::the_searched_characters_take_the_match_role ... ok
[INFO] [stdout] test tui::widgets::hosts_panel::tests::the_selected_host_name_takes_the_host_selected_role ... ok
[INFO] [stdout] test store::migrate::tests::migration_v16_rebuild_keeps_memberships_and_tunnels ... ok
[INFO] [stdout] test tui::widgets::middle_stack::tests::wraps_on_word_boundaries ... ok
[INFO] [stdout] test tui::widgets::panel_box::tests::a_badge_carrying_family_draws_its_badge_from_its_own_role ... ok
[INFO] [stdout] test tui::widgets::middle_stack::tests::the_agent_panel_renders_the_apps_agent_snapshot ... ok
[INFO] [stdout] test tui::widgets::panel_box::tests::a_focused_panel_takes_the_focused_border_role ... ok
[INFO] [stdout] test tui::widgets::middle_stack::tests::the_details_card_separates_value_label_and_metadata ... ok
[INFO] [stdout] test tui::widgets::panel_box::tests::a_frames_badge_always_uses_its_own_familys_count_role ... ok
[INFO] [stdout] test tui::widgets::middle_stack::tests::the_latency_bars_take_the_three_metrics_sparkline_colours ... ok
[INFO] [stdout] test tui::widgets::panel_box::tests::perimeter_gradient_recolors_only_the_ring_not_title_or_count ... ok
[INFO] [stdout] test tui::widgets::panel_box::tests::the_panel_title_count_and_background_take_their_own_marker_roles ... ok
[INFO] [stdout] test tui::widgets::panel_box::tests::solid_panel_roles_preserve_title_count_and_border_styles ... ok
[INFO] [stdout] test tui::widgets::middle_stack::tests::the_middle_panels_wear_their_own_roles_in_both_focus_states ... ok
[INFO] [stdout] test tui::widgets::middle_stack::tests::the_ssh_log_and_agent_panels_take_their_text_roles ... ok
[INFO] [stdout] test tui::widgets::tab_bar::tests::install_channel_resolution ... ok
[INFO] [stdout] test tui::widgets::tab_bar::tests::version_label_gains_channel_suffix ... ok
[INFO] [stdout] test tui::widgets::tab_bar::tests::version_label_resolution ... ok
[INFO] [stdout] test tunnel::spawn::tests::pid_file_roundtrip ... ok
[INFO] [stdout] test tunnel::spawn::tests::splice_tunnel_ssh_options_allows_askpass_with_secret ... ok
[INFO] [stdout] test tunnel::spawn::tests::splice_tunnel_ssh_options_forces_batchmode_without_secret ... ok
[INFO] [stdout] test tui::widgets::panel_box::tests::a_badge_less_family_renders_exactly_as_if_no_badge_was_passed ... ok
[INFO] [stdout] test tunnel::tests::active_work_excludes_exhausted_reconnects ... ok
[INFO] [stdout] test tunnel::tests::mark_user_stopped_clears_reconnect_state ... ok
[INFO] [stdout] test tunnel::tests::on_auto_start_failed_gives_up_at_max_attempts ... ok
[INFO] [stdout] test tunnel::tests::owned_child_blocks_even_with_exhausted_reconnect ... ok
[INFO] [stdout] test tunnel::tests::resume_clears_user_stopped_and_gave_up ... ok
[INFO] [stdout] test tunnel::tests::status_reports_reconnecting_and_gave_up ... ok
[INFO] [stdout] test watcher::tests::debounce_access_inside_window_does_not_extend_it ... ok
[INFO] [stdout] test watcher::tests::debounce_burst_collapses_to_one_event ... ok
[INFO] [stdout] test watcher::tests::debounce_chained_writes_spanning_two_windows_emit_twice ... ok
[INFO] [stdout] test tui::widgets::right_stack::tests::the_auth_panel_takes_its_status_roles ... ok
[INFO] [stdout] test watcher::tests::debounce_create_and_remove_kinds_trigger_config_change ... ok
[INFO] [stdout] test watcher::tests::debounce_ignores_access_kind ... ok
[INFO] [stdout] test watcher::tests::debounce_ignores_other_files ... ok
[INFO] [stdout] test watcher::tests::debounce_mixed_files_only_config_counted ... ok
[INFO] [stdout] test watcher::tests::debounce_notify_error_is_nonfatal ... ok
[INFO] [stdout] test watcher::tests::debounce_write_after_window_opens_new_event ... ok
[INFO] [stdout] test watcher::tests::debounce_write_at_exact_deadline_opens_new_event ... ok
[INFO] [stdout] test tunnel::spawn::tests::tunnel_argv_carries_group_inherited_connection_values ... ok
[INFO] [stdout] test tui::widgets::right_stack::tests::the_ping_sparkline_takes_the_info_role ... ok
[INFO] [stdout] test watcher::tests::spawn_config_watcher_missing_path_errors ... ok
[INFO] [stdout] test tui::tests::the_enter_slide_owns_the_right_columns_at_every_point_of_its_travel ... ok
[INFO] [stdout] test watcher::tests::dropping_idle_watcher_stops_worker_without_file_event ... ok
[INFO] [stdout] test tui::widgets::right_stack::tests::the_recent_panel_takes_its_text_and_status_roles ... ok
[INFO] [stdout] test tui::tests::the_overlays_reproduce_their_legacy_cells_under_default ... ok
[INFO] [stdout] test tui::widgets::right_stack::tests::the_right_panels_wear_their_own_roles_in_both_focus_states ... ok
[INFO] [stdout] test tui::tests::session_picker_keeps_the_dashboard_footer ... ok
[INFO] [stdout] test tui::tests::session_picker_purposes_keep_their_chrome_under_a_theme ... ok
[INFO] [stdout] test tui::tests::session_picker_renders_title_and_empty_state_per_purpose ... ok
[INFO] [stdout] test watcher::tests::spawn_config_watcher_emits_after_write ... ok
[INFO] [stdout] test tui::tests::the_splash_fade_never_blends_the_remote_pty ... ok
[INFO] [stdout] test store::migrate::tests::migration_v17_reseeds_memberships_wiped_by_v16 ... ok
[INFO] [stdout] test tui::tests::tiny_terminals_clip_every_overlay ... ok
[INFO] [stdout] test watcher::tests::debounce_coalesces_rapid_writes ... ok
[INFO] [stdout] test tui::tests::overlays_do_not_panic_on_a_tiny_terminal ... ok
[INFO] [stdout] test tui::tests::session_picker_survives_narrow_and_wide_glyphs ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1416 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 39.81s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/sshub/234ec2b894f6248e/out/sshub-234ec2b894f6248e)
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smoke/config_load.rs (/opt/rustwide/target/debug/build/sshub/3639e039f3ac67f3/out/config_load-3639e039f3ac67f3)
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test load_config_creates_default_file_in_config_dir ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/e2e/mod.rs (/opt/rustwide/target/debug/build/sshub/a030c5192dafbf5d/out/e2e-a030c5192dafbf5d)
[INFO] [stdout] 
[INFO] [stdout] running 93 tests
[INFO] [stdout] test adhoc_connect::adhoc_target_offered_when_no_saved_host_matches ... ok
[INFO] [stdout] test adhoc_connect::adhoc_target_suppressed_for_unparseable_query ... ok
[INFO] [stdout] test adhoc_connect::adhoc_target_suppressed_when_query_matches_saved_host ... ok
[INFO] [stdout] test broadcast::broadcast_wizard_pick_command_preview_then_esc ... ok
[INFO] [stdout] test config_reload::manual_reload_after_write_updates_host_list ... ok
[INFO] [stdout] test adhoc_connect::enter_on_adhoc_row_leaves_palette ... ok
[INFO] [stdout] test config_reload::config_file_change_triggers_reload ... ok
[INFO] [stdout] test host_crud::delete_ssh_config_host_shows_notice ... ok
[INFO] [stdout] test first_run::subsequent_run_empty_stays_normal ... ok
[INFO] [stdout] test first_run::first_run_empty_shows_help ... ok
[INFO] [stdout] test host_crud::enter_on_last_field_saves_the_form ... ok
[INFO] [stdout] test host_crud::esc_after_committed_field_edit_prompts_for_discard ... ok
[INFO] [stdout] test group_crud::group_manage_edit_renames_group ... ok
[INFO] [stdout] test connect_managed::connect_ssh_config_host_uses_alias_mode ... ok
[INFO] [stdout] test group_crud::group_manage_navigation ... ok
[INFO] [stdout] test host_crud::esc_reverted_field_edit_leaves_form_clean ... ok
[INFO] [stdout] test connect_managed::connect_managed_host_builds_ssh_argv_and_updates_last_connected ... ok
[INFO] [stdout] test host_crud::form_refuses_an_option_like_address_without_unwinding ... ok
[INFO] [stdout] test host_crud::adding_host_with_duplicate_name_renames_instead_of_crashing ... ok
[INFO] [stdout] test group_crud::e_on_group_header_edits_group_and_picks_identity_via_dropdown ... ok
[INFO] [stdout] test group_crud::create_group_assign_host_visible_in_tree ... ok
[INFO] [stdout] test group_crud::collapsing_a_group_hides_its_hosts_and_persists ... ok
[INFO] [stdout] test group_crud::delete_group_cancel_confirm_and_notice ... ok
[INFO] [stdout] test group_crud::host_form_group_dropdown_creates_group_inline ... ok
[INFO] [stdout] test host_detail::editing_ssh_config_alias_materializes_and_persists_tags ... ok
[INFO] [stdout] test group_crud::host_form_multi_select_assigns_two_groups ... ok
[INFO] [stdout] test host_crud::host_duplicate_creates_copy ... ok
[INFO] [stdout] test group_crud::rename_and_delete_group_via_shortcuts ... ok
[INFO] [stdout] test host_detail::editing_alias_preserves_existing_metadata_on_materialize ... ok
[INFO] [stdout] test host_sort::sidebar_keys_switch_hosts_and_keychain ... ok
[INFO] [stdout] test group_crud::tag_filter_hides_groups_with_no_matches ... ok
[INFO] [stdout] test host_crud::host_create_edit_delete_roundtrip ... ok
[INFO] [stdout] test host_detail::favorite_toggle_in_normal_and_host_detail ... ok
[INFO] [stdout] test hybrid_compat::duplicate_legacy_ssh_config_host_creates_launcher_copy ... ok
[INFO] [stdout] test hybrid_compat::duplicate_imported_ssh_config_host_creates_launcher_copy ... ok
[INFO] [stdout] test import_export::export_launcher_hosts_roundtrip_with_backup ... ok
[INFO] [stdout] test keychain::keychain_keygen_form_flow ... ok
[INFO] [stdout] test hybrid_compat::reload_merges_launcher_imported_ssh_config_and_resolver_without_duplicates ... ok
[INFO] [stdout] test import_export::import_ssh_config_upserts_fixture_hosts ... ok
[INFO] [stdout] test keychain::keychain_delete_in_use_identity_shows_notice ... ok
[INFO] [stdout] test import_export::import_does_not_overwrite_launcher_host_with_same_name ... ok
[INFO] [stdout] test keychain::keychain_identity_certificate_round_trip ... ok
[INFO] [stdout] test local_shell::closing_last_local_shell_returns_to_dashboard ... ok
[INFO] [stdout] test import_export::import_then_reload_shows_db_ssh_config_hosts ... ok
[INFO] [stdout] test local_shell::detach_local_shell_keeps_session_alive ... ok
[INFO] [stdout] test local_shell::ctrl_shift_t_opens_local_shell_tab ... ok
[INFO] [stdout] test local_shell::closing_one_of_two_local_shells_keeps_a_tab ... ok
[INFO] [stdout] test quick_connect::reveal_host_expands_collapsed_group ... ok
[INFO] [stdout] test search_and_navigate::esc_clears_palette_mode ... ok
[INFO] [stdout] test quick_connect::reveal_host_selects_correct_host_across_groups ... ok
[INFO] [stdout] test search_and_navigate::fixture_resolver_loads_ssh_config_hosts ... ok
[INFO] [stdout] test search_and_navigate::j_k_navigation_then_quit ... ok
[INFO] [stdout] test hybrid_compat::editing_unimported_ssh_config_alias_allows_group_assignment ... ok
[INFO] [stdout] test local_shell::ctrl_shift_t_opens_additional_local_shell_from_session ... ok
[INFO] [stdout] test search_and_navigate::palette_search_and_connect ... ok
[INFO] [stdout] test keychain::keychain_create_edit_delete_unused_identity ... ok
[INFO] [stdout] test session_switcher::alt_s_filters_open_sessions_and_renders_the_selected_tab ... ok
[INFO] [stdout] test keychain::keychain_keygen_successful_generation ... ok
[INFO] [stdout] test hybrid_compat::edit_ssh_config_managed_host_opens_metadata_only_form ... ok
[INFO] [stdout] test host_sort::sort_mode_cycles_and_reorders_hosts ... ok
[INFO] [stdout] test snippet_crud::empty_name_or_command_is_rejected ... ok
[INFO] [stdout] test metadata_persist::upsert_persists_across_reopen ... ok
[INFO] [stdout] test keychain::push_key_host_picker_flow ... ok
[INFO] [stdout] test termius_import::esc_cancels_import_prompt ... ok
[INFO] [stdout] test termius_import::import_accepts_path_to_loot_csv_directly ... ok
[INFO] [stdout] test termius_import::import_prompt_bad_path_keeps_prompt_open_with_notice ... ok
[INFO] [stdout] test termius_import::imported_host_password_is_resolved_at_connect_time ... ok
[INFO] [stdout] test termius_import::shift_t_opens_prompt_and_imports_csv_export ... ok
[INFO] [stdout] test theme_picker::a_warning_theme_previews_saves_and_names_the_ignored_role ... ok
[INFO] [stdout] test theme_picker::an_invalid_theme_is_listed_but_never_previewed_or_saved ... ok
[INFO] [stdout] test ssh_config_sync::reload_updates_ssh_config_address_without_wiping_tags ... ok
[INFO] [stdout] test theme_picker::browsing_the_picker_never_touches_the_disk ... ok
[INFO] [stdout] test theme_picker::reload_after_deleting_the_preview_keeps_the_theme ... ok
[INFO] [stdout] test snippet_crud::create_snippet_via_manager_persists ... ok
[INFO] [stdout] test theme_picker::the_picker_survives_a_tiny_terminal ... ok
[INFO] [stdout] test keychain::push_key_identity_picker_flow ... ok
[INFO] [stdout] test host_sort::manual_sort_ctrl_arrows_swap_launcher_hosts ... ok
[INFO] [stdout] test theme_picker::committing_a_theme_writes_the_profile_config_startup_reads ... ok
[INFO] [stdout] test theme_picker::theme_picker_previews_rolls_back_and_persists ... ok
[INFO] [stdout] test theme_picker::reload_after_repair_adopts_the_fixed_file ... ok
[INFO] [stdout] test theme_picker::the_fingerprint_notices_a_same_length_overwrite ... ok
[INFO] [stdout] test host_sort::group_sections_include_ungrouped_virtual_group ... ok
[INFO] [stdout] test snippet_crud::esc_with_edits_prompts_discard_then_can_save_or_drop ... ok
[INFO] [stdout] test snippet_crud::enter_advances_fields_and_saves_on_last ... ok
[INFO] [stdout] test snippet_crud::delete_sets_a_visible_notice ... ok
[INFO] [stdout] test snippet_crud::edit_snippet_updates_command ... ok
[INFO] [stdout] test snippet_crud::delete_snippet_confirm_and_cancel ... ok
[INFO] [stdout] test import_export::reimport_preserves_user_edited_tags_on_ssh_config_hosts ... ok
[INFO] [stdout] test metadata_persist::ensure_defaults_and_mutations_persist ... ok
[INFO] [stdout] test keychain::push_key_on_group_header_explains_itself ... ok
[INFO] [stdout] test snippet_crud::manager_navigation_clamps ... ok
[INFO] [stdout] test tunnel_form::tunnel_host_picker_filters_and_selects ... ok
[INFO] [stdout] test tunnel_form::tunnel_host_picker_esc_keeps_previous_selection ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 93 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 12.42s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smoke/binary_starts.rs (/opt/rustwide/target/debug/build/sshub/77d0967b6d57adae/out/smoke-77d0967b6d57adae)
[INFO] [stdout] 
[INFO] [stdout] running 79 tests
[INFO] [stdout] test cli_commands::exec_without_a_command_exits_two ... ok
[INFO] [stdout] test cli_commands::exec_rejects_a_command_flag_that_is_not_behind_the_separator ... ok
[INFO] [stdout] test cli_commands::audit_help_shows_per_command_help_not_global ... ok
[INFO] [stdout] test cli_commands::exec_without_a_host_exits_two ... ok
[INFO] [stdout] test cli_commands::audit_list_bogus_status_exits_two ... ok
[INFO] [stdout] test cli_commands::exec_does_not_let_the_profile_parser_eat_the_remote_commands_flags ... ok
[INFO] [stdout] test cli_commands::audit_stats_exits_zero_and_reports_ok ... ok
[INFO] [stdout] test cli_commands::global_help_lists_the_exec_command ... ok
[INFO] [stdout] test cli_commands::audit_list_empty_exits_zero ... ok
[INFO] [stdout] test cli_commands::audit_stats_include_retry_reports_retry ... ok
[INFO] [stdout] test cli_commands::exec_on_an_unknown_host_fails_before_spawning ... ok
[INFO] [stdout] test cli_commands::exec_help_lists_the_flags_and_exits_zero ... ok
[INFO] [stdout] test cli_commands::global_help_lists_the_theme_command ... ok
[INFO] [stdout] test cli_commands::exec_refuses_a_mosh_host ... ok
[INFO] [stdout] test cli_commands::completions_bash_prints_non_empty ... ok
[INFO] [stdout] test cli_commands::exec_timeout_without_a_value_is_a_usage_error ... ok
[INFO] [stdout] test cli_commands::completions_fish_prints_non_empty ... ok
[INFO] [stdout] test cli_commands::completions_zsh_prints_non_empty ... ok
[INFO] [stdout] test cli_commands::export_stdout_exits_zero ... ok
[INFO] [stdout] test cli_commands::host_delete_without_yes_exits_one ... ok
[INFO] [stdout] test cli_commands::host_help_shows_per_command_help ... ok
[INFO] [stdout] test cli_commands::group_list_exits_zero ... ok
[INFO] [stdout] test cli_commands::import_help_lists_new_sources ... ok
[INFO] [stdout] test cli_commands::identity_list_exits_zero ... ok
[INFO] [stdout] test cli_commands::import_mremoteng_without_path_exits_one ... ok
[INFO] [stdout] test cli_commands::host_add_refuses_an_option_like_address ... ok
[INFO] [stdout] test cli_commands::groups_exits_zero ... ok
[INFO] [stdout] test cli_commands::theme_check_rejects_the_toml_format ... ok
[INFO] [stdout] test cli_commands::host_list_exits_zero ... ok
[INFO] [stdout] test cli_commands::theme_check_unlistable_directory_exits_one ... ok
[INFO] [stdout] test cli_commands::theme_check_malformed_file_exits_one_with_a_position ... ok
[INFO] [stdout] test cli_commands::theme_help_is_theme_specific_and_needs_no_context ... ok
[INFO] [stdout] test cli_commands::groups_all_forwards_flag_and_exits_zero ... ok
[INFO] [stdout] test cli_commands::theme_list_does_not_bootstrap_databases ... ok
[INFO] [stdout] test cli_commands::import_mremoteng_dry_run_previews_without_writing ... ok
[INFO] [stdout] test cli_commands::theme_check_warns_about_a_sibling_parent_without_failing ... ok
[INFO] [stdout] test cli_commands::theme_list_registry_io_error_exits_one ... ok
[INFO] [stdout] test cli_commands::import_ssh_dry_run_is_rejected ... ok
[INFO] [stdout] test cli_commands::identity_delete_without_yes_exits_one ... ok
[INFO] [stdout] test cli_commands::theme_list_rejects_the_toml_format ... ok
[INFO] [stdout] test cli_commands::import_from_fixture_exits_zero ... ok
[INFO] [stdout] test cli_commands::theme_list_reports_invalid_entries_and_still_exits_zero ... ok
[INFO] [stdout] test cli_commands::import_unknown_source_exits_two ... ok
[INFO] [stdout] test cli_commands::theme_show_rejects_the_plain_format ... ok
[INFO] [stdout] test cli_commands::theme_list_succeeds_in_both_formats ... ok
[INFO] [stdout] test cli_commands::theme_list_reports_a_user_file_squatting_a_builtin_id ... ok
[INFO] [stdout] test cli_commands::theme_show_never_prints_an_invalid_user_themes_source ... ok
[INFO] [stdout] test cli_commands::unknown_command_exits_two ... ok
[INFO] [stdout] test cli_commands::theme_show_unknown_id_exits_one ... ok
[INFO] [stdout] test cli_commands::theme_list_plain_escapes_control_characters_in_a_theme_name ... ok
[INFO] [stdout] test db_purge_with_no_db_is_a_clean_noop ... ok
[INFO] [stdout] test cli_commands::sftp_without_subcommand_exits_two ... ok
[INFO] [stdout] test db_purge_with_flag_removes_db_and_sidecars ... ok
[INFO] [stdout] test db_purge_without_flag_refuses_and_keeps_db ... ok
[INFO] [stdout] test help_exits_zero ... ok
[INFO] [stdout] test resolver::list_hosts_reads_fixture_via_config_path ... ok
[INFO] [stdout] test resolver::list_hosts_reads_fixture_via_ssh_launcher_ssh_config_env ... ok
[INFO] [stdout] test dry_run_exits_zero ... ok
[INFO] [stdout] test cli_commands::theme_misuse_exits_two ... ok
[INFO] [stdout] test cli_commands::profile_flag_is_rejected_in_compatibility_mode ... ok
[INFO] [stdout] test theme_public_api::a_gradient_id_is_rejected_by_a_theme_from_another_resolve_run ... ok
[INFO] [stdout] test cli_commands::tags_exits_zero ... ok
[INFO] [stdout] test theme_public_api::a_resolved_theme_is_fully_readable_through_the_public_api ... ok
[INFO] [stdout] test cli_commands::sync_exits_zero ... ok
[INFO] [stdout] test unknown_db_subcommand_exits_two ... ok
[INFO] [stdout] test cli_commands::theme_read_commands_never_create_the_config_directory ... ok
[INFO] [stdout] test version_exits_zero ... ok
[INFO] [stdout] test cli_commands::theme_check_valid_file_succeeds_in_both_formats ... ok
[INFO] [stdout] test cli_commands::sftp_ls_without_host_exits_two ... ok
[INFO] [stdout] test theme_public_api::registry_records_are_readable_from_outside_the_crate ... ok
[INFO] [stdout] test cli_commands::import_putty_reg_file_imports_host ... ok
[INFO] [stdout] test cli_commands::tunnel_list_exits_zero ... ok
[INFO] [stdout] test cli_commands::theme_show_resolved_output_passes_check ... ok
[INFO] [stdout] test cli_commands::theme_show_succeeds_in_toml_and_json ... ok
[INFO] [stdout] test cli_commands::import_refuses_an_option_like_address_and_keeps_the_rest ... ok
[INFO] [stdout] test profile_flag_selects_named_workspace_before_database_open ... ok
[INFO] [stdout] test run_app_quit::run_app_quit_with_q_exits_zero ... ok
[INFO] [stdout] test run_app_quit::run_app_auto_quit_exits_zero ... ok
[INFO] [stdout] test default_run_without_tty_fails_with_helpful_message ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 79 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.34s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/transfer_cli.rs (/opt/rustwide/target/debug/build/sshub/b52439b5c4c41b06/out/transfer_cli-b52439b5c4c41b06)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test transfer_cli_plan_render_marks_renames_and_blocks ... ok
[INFO] [stdout] test transfer_cli_group_with_hosts_flag ... ok
[INFO] [stdout] test transfer_cli_plan_confirm_requires_explicit_yes ... ok
[INFO] [stdout] test tunnel_transfer_arm_returns_inner_exit_code ... ok
[INFO] [stderr]      Running tests/transfer_engine.rs (/opt/rustwide/target/debug/build/sshub/1e24d7117be914b3/out/transfer_engine-1e24d7117be914b3)
[INFO] [stdout] test tunnel_transfer_accepts_canonical_unlabeled_tokens ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.72s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 14 tests
[INFO] [stdout] test transfer_tunnel_carry ... ok
[INFO] [stdout] test transfer_unknown_selection_plans_nothing ... ok
[INFO] [stdout] test transfer_active_block ... ok
[INFO] [stdout] test transfer_blocked_host_identity_not_carried ... ok
[INFO] [stdout] test transfer_unlabeled_tunnel_by_id ... ok
[INFO] [stdout] test transfer_unlabeled_tunnel_by_port_token ... ok
[INFO] [stdout] test transfer_copy_host_with_identity ... ok
[INFO] [stdout] test transfer_group_with_members ... ok
[INFO] [stdout] test transfer_auto_rename ... ok
[INFO] [stdout] test transfer_move_host_with_identity ... ok
[INFO] [stdout] test transfer_failing_identity_blocks_host ... ok
[INFO] [stdout] test transfer_move_delete_skipped_on_failure ... ok
[INFO] [stdout] test transfer_group_only_vs_with_hosts ... ok
[INFO] [stderr]    Doc-tests sshub
[INFO] [stdout] test transfer_failure_rolls_back_clean_items ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.29s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb", kill_on_drop: false }`
[INFO] [stdout] 9120a47ee06c2b246117d9fa85c35b3f7fbd55d764c8a83df35eb384b30cc0bb
