[INFO] cloning repository https://github.com/science/process-tab-manager
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/science/process-tab-manager" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fscience%2Fprocess-tab-manager", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fscience%2Fprocess-tab-manager'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7a8bf87ce3b729b0b47c992dc5aab006b521ff88
[INFO] testing science/process-tab-manager against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fscience%2Fprocess-tab-manager" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/science/process-tab-manager
[INFO] finished tweaking git repo https://github.com/science/process-tab-manager
[INFO] tweaked toml for git repo https://github.com/science/process-tab-manager written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/science/process-tab-manager on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/science/process-tab-manager 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.98.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-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0
[INFO] running `Command { std: "docker" "start" "7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0", 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" "7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0", 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" "7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling x11rb-protocol v0.13.2
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling process-tab-manager v2.0.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.11s
[INFO] running `Command { std: "docker" "inspect" "7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0", 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" "7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling process-tab-manager v2.0.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 16.85s
[INFO] running `Command { std: "docker" "inspect" "7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0", 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" "7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.06s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ptm-b4a1934011ac2981)
[INFO] [stdout] 
[INFO] [stdout] running 496 tests
[INFO] [stdout] test tests::app_starts_not_dirty ... ok
[INFO] [stdout] test tests::add_to_group_moves_window ... ok
[INFO] [stdout] test tests::banner_height_nonzero_when_degraded_or_broken ... ok
[INFO] [stdout] test tests::add_to_group_marks_dirty ... ok
[INFO] [stdout] test tests::banner_visible_suppressed_by_dismissal_flag ... ok
[INFO] [stdout] test tests::bind_sessions_carry_still_fires_without_stamp ... ok
[INFO] [stdout] test tests::binary_on_path_resolved_returns_none_for_missing ... ok
[INFO] [stdout] test tests::bind_sessions_claim_bare_terminal_in_group_snaps_keeps_no_session ... ok
[INFO] [stdout] test tests::bind_sessions_claim_carries_target_group_id_when_attach_has_session ... ok
[INFO] [stdout] test tests::bind_sessions_claim_precedence_over_rebind ... ok
[INFO] [stdout] test tests::bind_sessions_claim_takes_precedence_over_walk ... ok
[INFO] [stdout] test tests::bind_sessions_expired_attach_is_pruned ... ok
[INFO] [stdout] test tests::bind_sessions_claim_fifo_preserved_across_mixed_intents ... ok
[INFO] [stdout] test tests::bind_sessions_rebind_beats_carry_on_name_reuse ... ok
[INFO] [stdout] test tests::bind_sessions_rebind_ignores_stale_uuid ... ok
[INFO] [stdout] test tests::bind_sessions_rebind_recovers_after_wm_restart_flap ... ok
[INFO] [stdout] test tests::bind_sessions_returns_empty_when_only_walk_fires ... ok
[INFO] [stdout] test tests::bind_sessions_rebind_recovers_new_name_after_rename ... ok
[INFO] [stdout] test tests::bind_sessions_uses_claim_when_walk_collides ... ok
[INFO] [stdout] test tests::bind_sessions_walk_precedence_over_rebind ... ok
[INFO] [stdout] test tests::build_display_rows_collapsed_system_group_hides_sessions ... ok
[INFO] [stdout] test tests::bind_sessions_walk_succeeds_for_xterm ... ok
[INFO] [stdout] test tests::build_display_rows_renders_system_group_as_session_rows ... ok
[INFO] [stdout] test tests::cancel_tab_rename_preserves_prefix ... ok
[INFO] [stdout] test tests::banner_height_zero_when_healthy ... ok
[INFO] [stdout] test tests::bind_sessions_drops_carryover_when_session_killed ... ok
[INFO] [stdout] test tests::build_recipe_report_uses_sidebar_order_and_resolves_groups ... ok
[INFO] [stdout] test tests::classify_drop_above_first_row_inserts_at_zero ... ok
[INFO] [stdout] test tests::cancel_rename_does_not_mark_dirty ... ok
[INFO] [stdout] test tests::cancel_session_rename_preserves_display_order ... ok
[INFO] [stdout] test tests::classify_drop_collapsed_group_header_still_joins ... ok
[INFO] [stdout] test tests::classify_drop_clearly_outside_group_extracts ... ok
[INFO] [stdout] test tests::classify_drop_in_spacing_below_last_member_joins_at_end ... ok
[INFO] [stdout] test tests::classify_drop_into_group_body_top_half_joins_at_member_pos ... ok
[INFO] [stdout] test tests::classify_drop_into_group_body_bottom_half_joins_at_next_pos ... ok
[INFO] [stdout] test tests::classify_drop_invalid_source_row_is_noop ... ok
[INFO] [stdout] test tests::classify_drop_on_member_from_outside_joins_at_pos ... ok
[INFO] [stdout] test tests::classify_drop_past_last_row_is_insert_at_end ... ok
[INFO] [stdout] test tests::bind_sessions_carries_over_when_walk_returns_none ... ok
[INFO] [stdout] test tests::classify_drop_session_source_is_noop ... ok
[INFO] [stdout] test tests::classify_drop_window_into_system_group_body_is_noop ... ok
[INFO] [stdout] test tests::classify_drop_on_group_header_joins_at_zero ... ok
[INFO] [stdout] test tests::classify_drop_system_group_header_as_source_reorders_normally ... ok
[INFO] [stdout] test tests::classify_drop_within_same_group_reorders ... ok
[INFO] [stdout] test tests::classify_drop_window_into_system_group_header_is_noop ... ok
[INFO] [stdout] test tests::classify_property_ignores_unknown_root_atom ... ok
[INFO] [stdout] test tests::check_startup_terminal_availability_breaks_on_missing_binary ... ok
[INFO] [stdout] test tests::classify_property_ignores_unknown_window_atom ... ok
[INFO] [stdout] test tests::classify_property_root_active_window ... ok
[INFO] [stdout] test tests::classify_property_root_client_list ... ok
[INFO] [stdout] test tests::classify_property_window_net_wm_name ... ok
[INFO] [stdout] test tests::check_startup_terminal_availability_skips_absolute_path ... ok
[INFO] [stdout] test tests::classify_property_window_legacy_wm_name ... ok
[INFO] [stdout] test tests::clear_dirty_resets_both_timestamps ... ok
[INFO] [stdout] test tests::click_close_band_on_ungrouped_session_returns_no_request ... ok
[INFO] [stdout] test tests::click_session_body_returns_no_request ... ok
[INFO] [stdout] test tests::collapsed_group_hides_members ... ok
[INFO] [stdout] test tests::classify_property_wm_name_on_root_is_ignored ... ok
[INFO] [stdout] test tests::click_close_band_on_grouped_session_returns_kill_request ... ok
[INFO] [stdout] test tests::collapsed_tmux_system_group_count_equals_session_count ... ok
[INFO] [stdout] test tests::commit_tab_rename_empty_clears_prefix ... ok
[INFO] [stdout] test tests::commit_rename_with_change_marks_dirty ... ok
[INFO] [stdout] test tests::commit_tab_rename_sets_prefix ... ok
[INFO] [stdout] test tests::confirm_popup_with_no_returns_none_without_consuming ... ok
[INFO] [stdout] test tests::create_group_replaces_window_slot ... ok
[INFO] [stdout] test tests::create_group_via_menu_immediately_starts_rename_with_text_preselected ... ok
[INFO] [stdout] test tests::data_dir_under_profile_default ... ok
[INFO] [stdout] test tests::decide_notify_debounces_same_state_within_window ... ok
[INFO] [stdout] test tests::decide_notify_fires_after_debounce_window_elapses ... ok
[INFO] [stdout] test tests::decide_notify_fires_on_first_failure_transition ... ok
[INFO] [stdout] test tests::decide_notify_fires_on_state_change_even_within_window ... ok
[INFO] [stdout] test tests::decide_notify_suppresses_healthy_transition ... ok
[INFO] [stdout] test tests::delete_group_marks_dirty ... ok
[INFO] [stdout] test tests::delete_group_restores_members ... ok
[INFO] [stdout] test tests::derive_recipe_ambiguous_shells_resolved_by_title ... ok
[INFO] [stdout] test tests::derive_recipe_ambiguous_shells_with_idle_title_stays_unreachable ... ok
[INFO] [stdout] test tests::derive_recipe_ambiguous_shells_without_title_marks_unreachable ... ok
[INFO] [stdout] test tests::derive_recipe_no_window_pid_yields_empty_layer1 ... ok
[INFO] [stdout] test tests::derive_recipe_layer1_only_no_shell_descendants ... ok
[INFO] [stdout] test tests::derive_recipe_non_tmux_idle_shell ... ok
[INFO] [stdout] test tests::derive_recipe_non_tmux_with_foreground_claude ... ok
[INFO] [stdout] test tests::derive_recipe_session_but_no_pane_info ... ok
[INFO] [stdout] test tests::derive_recipe_tmux_uses_pane_pid_not_window_descendants ... ok
[INFO] [stdout] test tests::derive_recipe_tmux_with_idle_shell ... ok
[INFO] [stdout] test tests::detect_ignores_young_children ... ok
[INFO] [stdout] test tests::detect_oldest_age_when_multiple_wedged ... ok
[INFO] [stdout] test tests::detect_prunes_dead_pids ... ok
[INFO] [stdout] test tests::detect_prunes_child_when_class_count_grew ... ok
[INFO] [stdout] test tests::detect_returns_age_for_old_alive_child_with_no_growth ... ok
[INFO] [stdout] test tests::detect_terminal_empty_env_falls_through ... ok
[INFO] [stdout] test tests::detect_terminal_empty_override_falls_through_to_ptm_terminal_cmd ... ok
[INFO] [stdout] test tests::detect_terminal_empty_ptm_cmd_falls_through_to_env_terminal ... ok
[INFO] [stdout] test tests::detect_terminal_env_terminal_splits_whitespace ... ok
[INFO] [stdout] test tests::detect_terminal_falls_back_to_xdg_terminal_exec ... ok
[INFO] [stdout] test tests::detect_terminal_falls_back_to_xterm ... ok
[INFO] [stdout] test tests::detect_terminal_overrides_toml_beats_both_env_vars ... ok
[INFO] [stdout] test tests::detect_terminal_prefers_env_terminal ... ok
[INFO] [stdout] test tests::detect_terminal_prefers_ptm_terminal_cmd_over_env_terminal ... ok
[INFO] [stdout] test tests::detect_terminal_prefers_x_terminal_emulator_over_xdg ... ok
[INFO] [stdout] test tests::detect_terminal_uses_x_terminal_emulator_when_env_unset ... ok
[INFO] [stdout] test tests::diagnose_gnome_terminal_wedge_yields_two_fixes ... ok
[INFO] [stdout] test tests::diagnose_no_events_still_returns_some_body ... ok
[INFO] [stdout] test tests::diagnose_terminal_unavailable_yields_xterm_fix ... ok
[INFO] [stdout] test tests::diagnose_unknown_terminal_wedge_falls_back_to_diagnose_action ... ok
[INFO] [stdout] test tests::disambiguate_returns_none_when_multiple_candidates_match ... ok
[INFO] [stdout] test tests::disambiguate_case_insensitive_match ... ok
[INFO] [stdout] test tests::disambiguate_returns_none_when_no_candidate_matches ... ok
[INFO] [stdout] test tests::disambiguate_returns_none_without_title ... ok
[INFO] [stdout] test tests::disambiguate_returns_unique_match_on_foreground_comm ... ok
[INFO] [stdout] test tests::disambiguate_skips_idle_shells ... ok
[INFO] [stdout] test tests::dispatch_confirm_does_not_consume_popup ... ok
[INFO] [stdout] test tests::diagnose_report_includes_all_seven_sections ... ok
[INFO] [stdout] test tests::diagnose_x_terminal_emulator_wedge_recognised_as_gnome ... ok
[INFO] [stdout] test tests::confirm_popup_with_yes_returns_action ... ok
[INFO] [stdout] test tests::create_group_marks_dirty ... ok
[INFO] [stdout] test tests::display_count_for_normal_group_equals_live_count ... ok
[INFO] [stdout] test tests::display_label_with_prefix ... ok
[INFO] [stdout] test tests::display_label_without_prefix ... ok
[INFO] [stdout] test tests::drag_window_onto_group_header_adds_to_group ... ok
[INFO] [stdout] test tests::ensure_tmux_system_group_appends_to_display_order ... ok
[INFO] [stdout] test tests::ensure_tmux_system_group_creates_when_absent ... ok
[INFO] [stdout] test tests::drop_index_at_top_is_zero ... ok
[INFO] [stdout] test tests::drop_index_past_end ... ok
[INFO] [stdout] test tests::ensure_tmux_system_group_does_not_mark_dirty ... ok
[INFO] [stdout] test tests::ensure_tmux_system_group_idempotent ... ok
[INFO] [stdout] test tests::execute_confirm_kill_optimistically_removes_session_member ... ok
[INFO] [stdout] test tests::empty_state_produces_no_rows ... ok
[INFO] [stdout] test tests::expand_collapsed_group_shows_members ... ok
[INFO] [stdout] test tests::extract_saved_state_from_app ... ok
[INFO] [stdout] test tests::extract_saved_state_ghost_preserves_member_recipe ... ok
[INFO] [stdout] test tests::extract_saved_state_live_uses_fresh_recipe_from_map ... ok
[INFO] [stdout] test tests::extract_saved_state_serializes_ghost_members ... ok
[INFO] [stdout] test tests::find_foreground_pid_idle ... ok
[INFO] [stdout] test tests::find_foreground_pid_no_controlling_tty ... ok
[INFO] [stdout] test tests::find_foreground_pid_shell_missing_from_tree ... ok
[INFO] [stdout] test tests::find_foreground_pid_tpgid_points_to_unknown_process ... ok
[INFO] [stdout] test tests::find_foreground_pid_with_job ... ok
[INFO] [stdout] test tests::find_item_by_wid ... ok
[INFO] [stdout] test tests::find_window_shell_grandchild ... ok
[INFO] [stdout] test tests::find_window_shell_multiple_shells_returns_all ... ok
[INFO] [stdout] test tests::find_window_shell_no_shell_in_subtree ... ok
[INFO] [stdout] test tests::find_window_shell_single_direct_chain ... ok
[INFO] [stdout] test tests::find_window_shell_window_pid_missing_from_tree ... ok
[INFO] [stdout] test tests::format_recipes_markdown_blocks_separated_by_hr ... ok
[INFO] [stdout] test tests::format_recipes_markdown_empty_report ... ok
[INFO] [stdout] test tests::format_recipes_markdown_handles_missing_pid ... ok
[INFO] [stdout] test tests::format_recipes_markdown_renders_idle_block ... ok
[INFO] [stdout] test tests::format_recipes_markdown_renders_layer1_only_block ... ok
[INFO] [stdout] test tests::format_recipes_markdown_renders_tmux_job_block ... ok
[INFO] [stdout] test tests::format_recipes_markdown_summary_counts ... ok
[INFO] [stdout] test tests::dispatch_confirm_with_no_popup_returns_none ... ok
[INFO] [stdout] test tests::format_session_row_label_unrenamed ... ok
[INFO] [stdout] test tests::drag_grouped_window_outside_ungroups ... ok
[INFO] [stdout] test tests::format_session_row_label_renamed ... ok
[INFO] [stdout] test tests::geometry_missing_file_returns_none ... ok
[INFO] [stdout] test tests::expected_wm_class_known_terminals ... ok
[INFO] [stdout] test tests::geometry_malformed_file_returns_none ... ok
[INFO] [stdout] test tests::geometry_negative_coords ... ok
[INFO] [stdout] test tests::diagnose_tmux_probe_uses_pid_qualified_socket ... ok
[INFO] [stdout] test tests::geometry_round_trip ... ok
[INFO] [stdout] test tests::group_live_wids_skips_ghosts ... ok
[INFO] [stdout] test tests::group_default_kind_is_normal ... ok
[INFO] [stdout] test tests::group_produces_header_plus_members ... ok
[INFO] [stdout] test tests::groups_load_missing_file_returns_none ... ok
[INFO] [stdout] test tests::handle_drop_does_not_set_highlight_on_noop ... ok
[INFO] [stdout] test tests::handle_drop_g4_regression_no_op_does_not_mutate ... ok
[INFO] [stdout] test tests::handle_drop_g2_regression_small_overshoot_still_in_group ... ok
[INFO] [stdout] test tests::handle_drop_sets_last_drop_highlight_on_success ... ok
[INFO] [stdout] test tests::header_button_hit_test_below_header_is_false ... ok
[INFO] [stdout] test tests::header_button_hit_test_negative_is_false ... ok
[INFO] [stdout] test tests::health_board_parse_garbage_returns_none ... ok
[INFO] [stdout] test tests::health_board_parse_unknown_line_is_ignored ... ok
[INFO] [stdout] test tests::health_board_parse_unknown_version_returns_none ... ok
[INFO] [stdout] test tests::header_button_hit_test_top_region ... ok
[INFO] [stdout] test tests::health_board_round_trips_with_no_optional_fields ... ok
[INFO] [stdout] test tests::health_board_round_trips_with_tabs_in_reason ... ok
[INFO] [stdout] test tests::health_board_round_trips_through_persistence_format ... ok
[INFO] [stdout] test tests::health_board_serialize_starts_with_version_header ... ok
[INFO] [stdout] test tests::health_popup_layout_returns_rects_in_bounds ... ok
[INFO] [stdout] test tests::health_popup_layout_grows_when_a_fix_is_expanded ... ok
[INFO] [stdout] test tests::hit_test_header_button_offsets_for_banner ... ok
[INFO] [stdout] test tests::hit_test_health_banner_always_false_when_healthy ... ok
[INFO] [stdout] test tests::hit_test_health_banner_outside_when_below_or_above ... ok
[INFO] [stdout] test tests::hit_test_returns_correct_row ... ok
[INFO] [stdout] test tests::hit_test_session_close_button_at_left_edge ... ok
[INFO] [stdout] test tests::hit_test_session_close_button_inside_band ... ok
[INFO] [stdout] test tests::groups_load_malformed_returns_none ... ok
[INFO] [stdout] test tests::groups_save_load_round_trip ... ok
[INFO] [stdout] test tests::hit_test_session_close_button_outside_band ... ok
[INFO] [stdout] test tests::hit_test_session_close_button_past_right_edge ... ok
[INFO] [stdout] test tests::hit_test_top_buttons_in_gap_returns_none ... ok
[INFO] [stdout] test tests::hit_test_top_buttons_outside_row_returns_none ... ok
[INFO] [stdout] test tests::hit_test_top_buttons_routes_left_to_new_terminal ... ok
[INFO] [stdout] test tests::hit_test_top_buttons_routes_right_to_new_tmux ... ok
[INFO] [stdout] test tests::hit_test_top_buttons_unavailable_falls_back_to_full_width ... ok
[INFO] [stdout] test tests::execute_health_fix_run_shell_marks_healthy_after_success ... ok
[INFO] [stdout] test tests::is_session_attached_returns_false_for_orphan ... ok
[INFO] [stdout] test tests::is_session_attached_returns_true_for_attached_item ... ok
[INFO] [stdout] test tests::is_gap_in_group_true_between_members ... ok
[INFO] [stdout] test tests::is_shell_argv0_empty_is_not_shell ... ok
[INFO] [stdout] test tests::is_shell_argv0_recognizes_basename_form ... ok
[INFO] [stdout] test tests::is_shell_argv0_recognizes_common_shells ... ok
[INFO] [stdout] test tests::is_shell_argv0_recognizes_login_dash_prefix ... ok
[INFO] [stdout] test tests::is_shell_argv0_rejects_non_shells ... ok
[INFO] [stdout] test tests::item_width_adapts_to_window_width ... ok
[INFO] [stdout] test tests::is_target_system_group_returns_false_for_normal ... ok
[INFO] [stdout] test tests::is_target_system_group_returns_false_for_unknown_gid ... ok
[INFO] [stdout] test tests::is_target_system_group_returns_true_for_system ... ok
[INFO] [stdout] test tests::kill_session_from_window_dispatch_returns_confirm_request ... ok
[INFO] [stdout] test tests::legacy_data_dir_is_one_level_up ... ok
[INFO] [stdout] test tests::load_groups_3_field_group_line_treated_as_normal ... ok
[INFO] [stdout] test tests::load_groups_4_field_group_line_with_normal_kind ... ok
[INFO] [stdout] test tests::load_groups_4_field_group_line_with_tmux_system_kind ... ok
[INFO] [stdout] test tests::load_groups_4_field_with_unknown_kind_rejects ... ok
[INFO] [stdout] test tests::kill_session_from_orphan_session_dispatch_returns_no_confirm ... ok
[INFO] [stdout] test tests::hit_test_health_banner_inside_when_visible ... ok
[INFO] [stdout] test tests::hit_test_returns_none_in_gap ... ok
[INFO] [stdout] test tests::load_groups_5_field_rejects ... ok
[INFO] [stdout] test tests::load_groups_v1_with_layer_line_rejects ... ok
[INFO] [stdout] test tests::load_groups_v2_loads_layer1_only ... ok
[INFO] [stdout] test tests::execute_health_fix_use_xterm_writes_file_and_marks_healthy ... ok
[INFO] [stdout] test tests::load_groups_v2_layer1_argc_mismatch_rejects ... ok
[INFO] [stdout] test tests::load_groups_v2_layer1_before_any_member_rejects ... ok
[INFO] [stdout] test tests::load_groups_v2_decodes_tab_in_cmdline_arg ... ok
[INFO] [stdout] test tests::load_groups_v2_loads_with_no_layer_lines ... ok
[INFO] [stdout] test tests::load_groups_v2_unknown_line_type_skipped ... ok
[INFO] [stdout] test tests::load_groups_v2_loads_layer2_unreachable ... ok
[INFO] [stdout] test tests::load_groups_v2_loads_tmux_binding ... ok
[INFO] [stdout] test tests::load_groups_v2_two_layer1_under_one_member_rejects ... ok
[INFO] [stdout] test tests::load_health_board_recovers_to_healthy_on_malformed_file ... ok
[INFO] [stdout] test tests::load_groups_v2_loads_tmux_empty_session_id_is_none ... ok
[INFO] [stdout] test tests::load_health_board_returns_healthy_when_file_missing ... ok
[INFO] [stdout] test tests::load_groups_v2_loads_layer2_job ... ok
[INFO] [stdout] test tests::load_v1_member_has_none_id ... ok
[INFO] [stdout] test tests::load_groups_v2_loads_layer2_idle ... ok
[INFO] [stdout] test tests::match_legacy_member_never_grabs_id_bearing_window ... ok
[INFO] [stdout] test tests::load_v1_with_ptmid_rejects ... ok
[INFO] [stdout] test tests::load_v2_duplicate_ptmid_rejects ... ok
[INFO] [stdout] test tests::mark_dirty_sets_first_and_last_timestamps ... ok
[INFO] [stdout] test tests::marker_glyph_truncates_origin_to_two_chars ... ok
[INFO] [stdout] test tests::load_v2_skips_unknown_future_line ... ok
[INFO] [stdout] test tests::match_tier0_id_never_falls_through ... ok
[INFO] [stdout] test tests::menu_for_attached_terminal_includes_kill_session ... ok
[INFO] [stdout] test tests::menu_for_group_header_has_spawn_rename_and_delete ... ok
[INFO] [stdout] test tests::menu_for_grouped_attached_terminal_includes_kill_session ... ok
[INFO] [stdout] test tests::menu_for_session_has_attach_rename_kill ... ok
[INFO] [stdout] test tests::menu_for_grouped_window_has_remove ... ok
[INFO] [stdout] test tests::menu_for_grouped_window_has_rename_tab ... ok
[INFO] [stdout] test tests::menu_for_normal_group_header_includes_delete_group ... ok
[INFO] [stdout] test tests::menu_for_system_group_header_excludes_delete_and_spawn_into_group ... ok
[INFO] [stdout] test tests::menu_for_ungrouped_window_has_rename_tab ... ok
[INFO] [stdout] test tests::menu_for_unattached_terminal_excludes_kill_session ... ok
[INFO] [stdout] test tests::match_tier0_id_exclusive_hit ... ok
[INFO] [stdout] test tests::mark_dirty_twice_preserves_first_updates_last ... ok
[INFO] [stdout] test tests::menu_for_ungrouped_window_has_new_group ... ok
[INFO] [stdout] test tests::menu_for_ungrouped_shows_existing_groups ... ok
[INFO] [stdout] test tests::next_state_after_event_never_downgrades ... ok
[INFO] [stdout] test tests::migrate_with_nothing_to_do_is_noop ... ok
[INFO] [stdout] test tests::next_state_after_event_promotes_healthy_to_degraded_on_slow ... ok
[INFO] [stdout] test tests::next_state_after_event_promotes_to_broken_on_wedge ... ok
[INFO] [stdout] test tests::next_state_after_event_terminal_unavailable_breaks ... ok
[INFO] [stdout] test tests::next_state_after_event_two_slows_outside_window_stays_degraded ... ok
[INFO] [stdout] test tests::migrate_does_not_clobber_existing_new_file ... ok
[INFO] [stdout] test tests::migrate_is_idempotent ... ok
[INFO] [stdout] test tests::parse_cli_args_diagnose_with_output ... ok
[INFO] [stdout] test tests::parse_cli_args_diagnose_without_output ... ok
[INFO] [stdout] test tests::note_successful_spawn_no_op_when_already_healthy ... ok
[INFO] [stdout] test tests::parse_cli_args_help_flag ... ok
[INFO] [stdout] test tests::parse_cli_args_no_args_returns_normal ... ok
[INFO] [stdout] test tests::parse_cli_args_print_terminal_command ... ok
[INFO] [stdout] test tests::parse_cli_args_unknown_args_returns_unknown_with_payload ... ok
[INFO] [stdout] test tests::parse_cli_args_version_flag ... ok
[INFO] [stdout] test tests::parse_proc_cmdline_basic ... ok
[INFO] [stdout] test tests::parse_proc_cmdline_empty_is_empty_vec ... ok
[INFO] [stdout] test tests::next_state_after_event_two_slows_within_window_break ... ok
[INFO] [stdout] test tests::parse_proc_cmdline_only_nulls_is_empty_vec ... ok
[INFO] [stdout] test tests::note_successful_spawn_lowers_broken_to_healthy ... ok
[INFO] [stdout] test tests::parse_proc_cmdline_no_trailing_null ... ok
[INFO] [stdout] test tests::parse_proc_cmdline_single_arg ... ok
[INFO] [stdout] test tests::parse_proc_stat_fields_returns_none_on_no_closing_paren ... ok
[INFO] [stdout] test tests::parse_proc_stat_fields_basic ... ok
[INFO] [stdout] test tests::parse_proc_stat_fields_returns_none_on_too_few_fields ... ok
[INFO] [stdout] test tests::parse_proc_stat_fields_with_parens_in_comm ... ok
[INFO] [stdout] test tests::parse_proc_stat_starttime_anchors_on_close_paren ... ok
[INFO] [stdout] test tests::parse_proc_stat_fields_with_space_in_comm ... ok
[INFO] [stdout] test tests::migrate_moves_legacy_files_to_new_dir ... ok
[INFO] [stdout] test tests::parse_proc_status_ppid_malformed ... ok
[INFO] [stdout] test tests::parse_proc_status_ppid_basic ... ok
[INFO] [stdout] test tests::parse_proc_status_ppid_missing ... ok
[INFO] [stdout] test tests::parse_terminal_override_toml_allows_unquoted ... ok
[INFO] [stdout] test tests::parse_proc_stat_starttime_rejects_no_paren ... ok
[INFO] [stdout] test tests::parse_proc_uptime_extracts_first_field ... ok
[INFO] [stdout] test tests::parse_terminal_override_toml_ignores_comments_and_blanks ... ok
[INFO] [stdout] test tests::parse_terminal_override_toml_ignores_other_sections ... ok
[INFO] [stdout] test tests::parse_terminal_override_toml_returns_none_for_empty_command ... ok
[INFO] [stdout] test tests::parse_terminal_override_toml_ignores_command_outside_terminal_section ... ok
[INFO] [stdout] test tests::parse_terminal_override_toml_minimal_well_formed ... ok
[INFO] [stdout] test tests::parse_terminal_override_toml_returns_none_for_garbage ... ok
[INFO] [stdout] test tests::parse_terminal_override_toml_returns_none_for_missing_command ... ok
[INFO] [stdout] test tests::parse_tmux_list_clients_skips_blank_lines ... ok
[INFO] [stdout] test tests::parse_terminal_override_toml_with_args_in_quotes ... ok
[INFO] [stdout] test tests::parse_tmux_list_clients_basic ... ok
[INFO] [stdout] test tests::parse_tmux_list_clients_empty ... ok
[INFO] [stdout] test tests::parse_tmux_list_clients_session_with_spaces ... ok
[INFO] [stdout] test tests::parse_tmux_list_clients_skips_malformed ... ok
[INFO] [stdout] test tests::parse_tmux_list_sessions_mixed ... ok
[INFO] [stdout] test tests::parse_tmux_list_sessions_parses_id_name_attached ... ok
[INFO] [stdout] test tests::parse_tmux_list_sessions_empty ... ok
[INFO] [stdout] test tests::parse_tmux_list_sessions_preserves_spaces_in_name ... ok
[INFO] [stdout] test tests::parse_tmux_list_sessions_single_attached ... ok
[INFO] [stdout] test tests::parse_tmux_list_sessions_single_orphan ... ok
[INFO] [stdout] test tests::parse_tmux_list_sessions_skips_malformed ... ok
[INFO] [stdout] test tests::parse_tmux_list_sessions_skips_blank_lines ... ok
[INFO] [stdout] test tests::parse_tmux_pane_query_basic ... ok
[INFO] [stdout] test tests::parse_tmux_list_sessions_skips_malformed_session_id ... ok
[INFO] [stdout] test tests::parse_tmux_pane_query_no_trailing_newline ... ok
[INFO] [stdout] test tests::parse_tmux_pane_query_rejects_garbage ... ok
[INFO] [stdout] test tests::parse_tmux_session_uuids_basic ... ok
[INFO] [stdout] test tests::percent_decode_rejects_malformed ... ok
[INFO] [stdout] test tests::percent_encode_round_trip_basic ... ok
[INFO] [stdout] test tests::parse_tmux_session_uuids_name_with_spaces_and_tabs ... ok
[INFO] [stdout] test tests::parse_tmux_session_uuids_skips_malformed ... ok
[INFO] [stdout] test tests::percent_encode_round_trip_special_chars ... ok
[INFO] [stdout] test tests::parse_tmux_session_uuids_skips_untagged ... ok
[INFO] [stdout] test tests::note_successful_spawn_clears_broken_to_healthy ... ok
[INFO] [stdout] test tests::plan_session_stamps_ignores_unbound_items ... ok
[INFO] [stdout] test tests::plan_session_stamps_requests_mint_for_untagged_session ... ok
[INFO] [stdout] test tests::plan_session_stamps_restamps_on_session_change ... ok
[INFO] [stdout] test tests::read_terminal_override_returns_none_when_file_missing ... ok
[INFO] [stdout] test tests::plan_session_stamps_stamps_newly_bound_window ... ok
[INFO] [stdout] test tests::plan_session_stamps_skips_unchanged_stamp ... ok
[INFO] [stdout] test tests::remove_from_group_inserts_after_group ... ok
[INFO] [stdout] test tests::remove_from_group_marks_dirty ... ok
[INFO] [stdout] test tests::rename_anchor_if_none_preserves_existing_anchor ... ok
[INFO] [stdout] test tests::rename_anchor_if_none_sets_anchor_to_cursor_when_unset ... ok
[INFO] [stdout] test tests::rename_clear_selection_unsets_anchor ... ok
[INFO] [stdout] test tests::rename_delete_back_char_at_zero_is_noop_when_no_selection ... ok
[INFO] [stdout] test tests::rename_delete_back_char_with_selection_only_deletes_selection ... ok
[INFO] [stdout] test tests::rename_delete_back_char_without_selection_deletes_char_before ... ok
[INFO] [stdout] test tests::rename_delete_forward_char_at_end_is_noop_when_no_selection ... ok
[INFO] [stdout] test tests::rename_delete_forward_char_with_selection_only_deletes_selection ... ok
[INFO] [stdout] test tests::record_health_failure_transitions_and_persists ... ok
[INFO] [stdout] test tests::rename_delete_word_left_removes_only_whitespace_when_in_whitespace_run ... ok
[INFO] [stdout] test tests::rename_delete_forward_char_without_selection_deletes_char_after ... ok
[INFO] [stdout] test tests::rename_delete_word_left_at_start_is_noop ... ok
[INFO] [stdout] test tests::rename_delete_word_left_with_selection_only_deletes_selection ... ok
[INFO] [stdout] test tests::rename_delete_word_right_at_end_is_noop ... ok
[INFO] [stdout] test tests::rename_delete_word_left_removes_prev_word ... ok
[INFO] [stdout] test tests::rename_delete_word_right_with_selection_only_deletes_selection ... ok
[INFO] [stdout] test tests::rename_group_inline ... ok
[INFO] [stdout] test tests::rename_delete_word_right_removes_next_word ... ok
[INFO] [stdout] test tests::rename_empty_string_preserves_old_name ... ok
[INFO] [stdout] test tests::rename_insert_char_no_selection_inserts_at_cursor ... ok
[INFO] [stdout] test tests::rename_insert_char_replaces_selection ... ok
[INFO] [stdout] test tests::rename_insert_char_replaces_selection_with_reversed_anchor ... ok
[INFO] [stdout] test tests::rename_cancel_preserves_old_name ... ok
[INFO] [stdout] test tests::rename_insert_multibyte_char_advances_cursor_correctly ... ok
[INFO] [stdout] test tests::rename_motion_is_char_aware_for_multibyte ... ok
[INFO] [stdout] test tests::rename_move_end_clears_selection_when_no_shift ... ok
[INFO] [stdout] test tests::rename_move_home_clears_selection_when_no_shift ... ok
[INFO] [stdout] test tests::rename_move_left_char_no_shift_with_selection_collapses_to_start ... ok
[INFO] [stdout] test tests::rename_move_left_at_zero_is_clamped ... ok
[INFO] [stdout] test tests::rename_move_left_word_no_shift_jumps_word ... ok
[INFO] [stdout] test tests::rename_move_right_word_no_shift_jumps_word ... ok
[INFO] [stdout] test tests::rename_move_right_at_end_is_clamped ... ok
[INFO] [stdout] test tests::rename_move_right_char_no_shift_with_selection_collapses_to_end ... ok
[INFO] [stdout] test tests::rename_move_left_char_no_shift_no_selection_moves_one ... ok
[INFO] [stdout] test tests::rename_next_word_boundary_basic_word ... ok
[INFO] [stdout] test tests::rename_next_word_boundary_punctuation_treated_as_non_alnum ... ok
[INFO] [stdout] test tests::rename_next_word_boundary_skips_run_of_non_alnum ... ok
[INFO] [stdout] test tests::rename_no_shift_ctrl_right_with_selection_clears_anchor ... ok
[INFO] [stdout] test tests::rename_prev_word_boundary_basic_word ... ok
[INFO] [stdout] test tests::rename_prev_word_boundary_skips_run_of_non_alnum ... ok
[INFO] [stdout] test tests::rename_select_all_anchors_zero_cursor_len ... ok
[INFO] [stdout] test tests::rename_select_all_on_empty_text_is_no_op_collapse ... ok
[INFO] [stdout] test tests::rename_selection_range_none_when_anchor_equals_cursor ... ok
[INFO] [stdout] test tests::rename_selection_range_none_when_anchor_unset ... ok
[INFO] [stdout] test tests::rename_selection_range_normalized_when_anchor_after_cursor ... ok
[INFO] [stdout] test tests::rename_selection_range_normalized_when_anchor_before_cursor ... ok
[INFO] [stdout] test tests::rename_shift_ctrl_left_extends_selection_by_word ... ok
[INFO] [stdout] test tests::rename_shift_ctrl_right_extends_selection_by_word ... ok
[INFO] [stdout] test tests::rename_shift_end_anchors_and_jumps_to_len ... ok
[INFO] [stdout] test tests::rename_shift_home_anchors_and_jumps_to_zero ... ok
[INFO] [stdout] test tests::rename_shift_left_collapses_selection_when_cursor_meets_anchor ... ok
[INFO] [stdout] test tests::rename_shift_left_shrinks_selection_when_cursor_past_anchor ... ok
[INFO] [stdout] test tests::rename_shift_right_extends_existing_selection ... ok
[INFO] [stdout] test tests::rename_shift_right_from_no_selection_anchors_then_moves ... ok
[INFO] [stdout] test tests::rename_word_boundaries_are_unicode_safe ... ok
[INFO] [stdout] test tests::reorder_ungrouped_windows ... ok
[INFO] [stdout] test tests::restore_groups_basic ... ok
[INFO] [stdout] test tests::restore_groups_class_fallback_claims_other_terminal_when_one_member_gone ... ok
[INFO] [stdout] test tests::restore_groups_custom_prefix ... ok
[INFO] [stdout] test tests::restore_groups_does_not_leave_app_dirty ... ok
[INFO] [stdout] test tests::restore_groups_does_not_overwrite_existing_item_session ... ok
[INFO] [stdout] test tests::restore_groups_does_not_re_claim_already_displayed_window ... ok
[INFO] [stdout] test tests::restore_groups_does_not_write_session_when_session_dead ... ok
[INFO] [stdout] test tests::restore_groups_duplicate_titles_different_class ... ok
[INFO] [stdout] test tests::restore_groups_no_match_keeps_group_as_ghost ... ok
[INFO] [stdout] test tests::restore_groups_partial_match ... ok
[INFO] [stdout] test tests::restore_groups_partial_match_keeps_unmatched_as_ghost ... ok
[INFO] [stdout] test tests::restore_groups_tier0_id_keeps_same_wmclass_windows_in_their_own_groups ... ok
[INFO] [stdout] test tests::restore_groups_tier_0a_claims_blocks_lower_tiers_from_same_wid ... ok
[INFO] [stdout] test tests::restore_groups_three_ghosts_sharing_pid_first_matches_rest_fall_through ... ok
[INFO] [stdout] test tests::restore_groups_tier0_id_ghosts_when_window_absent ... ok
[INFO] [stdout] test tests::restore_groups_tier_0a_preferred_over_tier_0b_when_both_apply ... ok
[INFO] [stdout] test tests::restore_groups_tier_0a_tmux_session_match ... ok
[INFO] [stdout] test tests::restore_groups_tier_0b_pid_alone_without_corroborator_does_not_match ... ok
[INFO] [stdout] test tests::restore_groups_tier_0b_pid_plus_label_corroborator ... ok
[INFO] [stdout] test tests::restore_groups_tier_0b_pid_plus_wm_class_corroborator ... ok
[INFO] [stdout] test tests::restore_groups_tmux_system_kind_skips_recipe_tiers ... ok
[INFO] [stdout] test tests::restore_groups_wm_class_fallback_does_not_match_different_class ... ok
[INFO] [stdout] test tests::restore_groups_two_saved_members_same_session_only_one_matches ... ok
[INFO] [stdout] test tests::restore_groups_v1_member_with_no_recipe_falls_back_to_legacy_cascade ... ok
[INFO] [stdout] test tests::restore_groups_wm_class_only_fallback_when_label_drifted ... ok
[INFO] [stdout] test tests::restore_groups_writes_session_back_via_legacy_tier_match ... ok
[INFO] [stdout] test tests::restore_groups_writes_session_back_via_tier_0b_match ... ok
[INFO] [stdout] test tests::row_y_is_sequential ... ok
[INFO] [stdout] test tests::row_y_shifts_down_by_banner_height_when_banner_visible ... ok
[INFO] [stdout] test tests::binary_on_path_resolved_finds_known_binary ... FAILED
[INFO] [stdout] test tests::save_groups_to_uses_atomic_write ... ok
[INFO] [stdout] test tests::save_load_preserves_pid_sentinel_when_no_pid_recorded ... ok
[INFO] [stdout] test tests::save_load_preserves_ptm_id ... ok
[INFO] [stdout] test tests::select_keysym_empty_row_returns_zero ... ok
[INFO] [stdout] test tests::select_keysym_no_shift_returns_col_zero ... ok
[INFO] [stdout] test tests::save_load_health_board_round_trip_on_disk ... ok
[INFO] [stdout] test tests::select_keysym_shift_falls_back_to_col_zero_when_col_one_is_no_symbol ... ok
[INFO] [stdout] test tests::select_keysym_shift_falls_back_when_only_one_column ... ok
[INFO] [stdout] test tests::select_keysym_shift_returns_col_one_when_distinct ... ok
[INFO] [stdout] test tests::session_origin_for_name_returns_current_when_unmapped ... ok
[INFO] [stdout] test tests::session_origin_dropped_when_session_disappears ... ok
[INFO] [stdout] test tests::session_origin_preserved_across_rename ... ok
[INFO] [stdout] test tests::should_save_now_false_within_debounce_window ... ok
[INFO] [stdout] test tests::session_origin_recorded_on_first_sighting ... ok
[INFO] [stdout] test tests::should_save_now_returns_false_when_clean ... ok
[INFO] [stdout] test tests::should_save_now_true_after_debounce_idle ... ok
[INFO] [stdout] test tests::should_save_now_true_via_backstop_even_when_still_mutating ... ok
[INFO] [stdout] test tests::slot_position_maps_correctly ... ok
[INFO] [stdout] test tests::start_rename_preselects_existing_name ... ok
[INFO] [stdout] test tests::start_session_rename_initializes_with_current_name ... ok
[INFO] [stdout] test tests::start_session_rename_preselects ... ok
[INFO] [stdout] test tests::start_tab_rename_empty_prefix ... ok
[INFO] [stdout] test tests::start_tab_rename_with_empty_prefix_no_selection ... ok
[INFO] [stdout] test tests::start_tab_rename_initializes_with_prefix ... ok
[INFO] [stdout] test tests::save_load_roundtrip_preserves_system_group_collapse_state ... ok
[INFO] [stdout] test tests::save_load_roundtrip_preserves_system_group_kind ... ok
[INFO] [stdout] test tests::start_tab_rename_with_existing_prefix_preselects ... ok
[INFO] [stdout] test tests::sync_system_group_appends_new_sessions ... ok
[INFO] [stdout] test tests::sync_system_group_drops_vanished_sessions ... ok
[INFO] [stdout] test tests::sync_system_group_preserves_order_when_appending ... ok
[INFO] [stdout] test tests::terminal_argv_for_attach_debian_wrapper_uses_dash_e ... ok
[INFO] [stdout] test tests::terminal_argv_for_attach_empty_term_returns_empty ... ok
[INFO] [stdout] test tests::terminal_argv_for_attach_gnome_terminal_uses_double_dash ... ok
[INFO] [stdout] test tests::terminal_argv_for_attach_preserves_leading_args ... ok
[INFO] [stdout] test tests::terminal_argv_for_attach_dangling_symlink_falls_back_safely ... ok
[INFO] [stdout] test tests::terminal_argv_for_attach_unknown_falls_back_to_dash_e ... ok
[INFO] [stdout] test tests::terminal_argv_for_attach_uses_basename_for_match ... ok
[INFO] [stdout] test tests::terminal_argv_for_attach_xterm_uses_dash_e ... ok
[INFO] [stdout] test tests::terminal_argv_for_attach_ptyxis_uses_double_dash ... ok
[INFO] [stdout] test tests::terminal_basename_preserves_unrelated_names ... ok
[INFO] [stdout] test tests::terminal_basename_strips_real_suffix ... ok
[INFO] [stdout] test tests::terminal_basename_strips_wrapper_suffix ... ok
[INFO] [stdout] test tests::title_command_prefix_basic ... ok
[INFO] [stdout] test tests::title_command_prefix_empty_or_whitespace ... ok
[INFO] [stdout] test tests::toggle_collapse_marks_dirty ... ok
[INFO] [stdout] test tests::top_buttons_layout_offsets_by_banner_height ... ok
[INFO] [stdout] test tests::top_buttons_layout_one_button_when_tmux_unavailable ... ok
[INFO] [stdout] test tests::top_buttons_layout_two_buttons_when_tmux_available ... ok
[INFO] [stdout] test tests::terminal_argv_for_attach_resolves_symlink_chain ... ok
[INFO] [stdout] test tests::ungrouped_windows_produce_flat_rows ... ok
[INFO] [stdout] test tests::typing_after_preselect_replaces_text ... ok
[INFO] [stdout] test tests::walk_to_window_owner_collision_does_not_fall_through_to_ancestor ... ok
[INFO] [stdout] test tests::walk_to_window_owner_process_disappears ... ok
[INFO] [stdout] test tests::walk_to_window_owner_empty_window_set ... ok
[INFO] [stdout] test tests::walk_to_window_owner_respects_depth_limit ... ok
[INFO] [stdout] test tests::save_load_save_round_trip_with_full_recipe ... ok
[INFO] [stdout] test tests::walk_to_window_owner_reaches_init_without_match ... ok
[INFO] [stdout] test tests::walk_to_window_owner_returns_none_on_collision ... ok
[INFO] [stdout] test tests::walk_to_window_owner_start_pid_is_window ... ok
[INFO] [stdout] test tests::walk_to_window_owner_stops_at_closest_match ... ok
[INFO] [stdout] test tests::walk_to_window_owner_walks_up_chain ... ok
[INFO] [stdout] test tests::wrap_text_handles_empty_input ... ok
[INFO] [stdout] test tests::wrap_text_no_split_mid_word ... ok
[INFO] [stdout] test tests::wrap_text_respects_hard_newlines ... ok
[INFO] [stdout] test tests::write_atomic_real_file_intact_after_simulated_partial_write ... ok
[INFO] [stdout] test tests::write_atomic_overwrites_existing_file ... ok
[INFO] [stdout] test tests::write_atomic_creates_file_with_content ... ok
[INFO] [stdout] test tests::write_atomic_overwrites_stale_tmp_file ... ok
[INFO] [stdout] test tests::writer_emits_layer1_when_recipe_has_layer1_data ... ok
[INFO] [stdout] test tests::writer_emits_v2_4_field_group_line ... ok
[INFO] [stdout] test tests::writer_encodes_tmux_pane_id_percent ... ok
[INFO] [stdout] test tests::writer_omits_tmux_line_when_no_binding ... ok
[INFO] [stdout] test tests::record_health_failure_caps_recent_events ... ok
[INFO] [stdout] test tests::record_health_failure_updates_notify_marker ... ok
[INFO] [stdout] test tests::terminal_argv_for_attach_resolves_path_then_canonicalizes_for_x_term_emu ... ok
[INFO] [stdout] test tests::write_terminal_override_round_trips_via_parser ... ok
[INFO] [stderr] error: test failed, to rerun pass `--bin ptm`
[INFO] [stdout] test tests::record_health_failure_on_wedge_flips_to_broken ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tests::binary_on_path_resolved_finds_known_binary stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::binary_on_path_resolved_finds_known_binary' (502) panicked at src/main.rs:17404:9:
[INFO] [stdout] expected to find ls on PATH
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x561970938831 - std[73adb7dc35730857]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x561970938831 - std[73adb7dc35730857]::backtrace_rs::backtrace::trace_unsynchronized::<std[73adb7dc35730857]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x561970938831 - std[73adb7dc35730857]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x561970938831 - <<std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[6883ba1bc0fe4ed1]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x56197094eeda - <core[6883ba1bc0fe4ed1]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x56197094eeda - core[6883ba1bc0fe4ed1]::fmt::write
[INFO] [stdout]    6:     0x56197093d2cc - std[73adb7dc35730857]::io::default_write_fmt::<alloc[55a36b64bcbf2c0d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:626:11
[INFO] [stdout]    7:     0x56197093d2cc - <alloc[55a36b64bcbf2c0d]::vec::Vec<u8> as std[73adb7dc35730857]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:1730:13
[INFO] [stdout]    8:     0x561970913e56 - <std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x561970913e56 - std[73adb7dc35730857]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x56197092f219 - std[73adb7dc35730857]::panicking::default_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5619708b9c80 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   12:     0x5619708b9c80 - test[980ffaebd391d06d]::test_main_inner::<test[980ffaebd391d06d]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x56197092f3d2 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   14:     0x56197092f3d2 - std[73adb7dc35730857]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x561970913f34 - std[73adb7dc35730857]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:681:13
[INFO] [stdout]   16:     0x56197090b2c9 - std[73adb7dc35730857]::sys::backtrace::__rust_end_short_backtrace::<std[73adb7dc35730857]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x561970914efd - __rustc[a7b7b02e776dd976]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x56197094f6ac - core[6883ba1bc0fe4ed1]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5619707987a6 - ptm[3bbd7eac3602c64f]::tests::binary_on_path_resolved_finds_known_binary
[INFO] [stdout]                                at /opt/rustwide/workdir/src/main.rs:17404:9
[INFO] [stdout]   20:     0x5619707645e7 - ptm[3bbd7eac3602c64f]::tests::binary_on_path_resolved_finds_known_binary::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/main.rs:17400:52
[INFO] [stdout]   21:     0x561970868f86 - <ptm[3bbd7eac3602c64f]::tests::binary_on_path_resolved_finds_known_binary::{closure#0} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x5619708acfbb - <fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x5619708acfbb - test[980ffaebd391d06d]::__rust_begin_short_backtrace::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:724:18
[INFO] [stdout]   24:     0x5619708ba605 - test[980ffaebd391d06d]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:74
[INFO] [stdout]   25:     0x5619708ba605 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   26:     0x5619708ba605 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   27:     0x5619708ba605 - std[73adb7dc35730857]::panicking::catch_unwind::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x5619708ba605 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x5619708ba605 - test[980ffaebd391d06d]::run_test_in_process
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:27
[INFO] [stdout]   30:     0x5619708ba605 - test[980ffaebd391d06d]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:668:43
[INFO] [stdout]   31:     0x5619708b50b4 - test[980ffaebd391d06d]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:698:41
[INFO] [stdout]   32:     0x5619708b50b4 - std[73adb7dc35730857]::sys::backtrace::__rust_begin_short_backtrace::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x5619708bd752 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   34:     0x5619708bd752 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   35:     0x5619708bd752 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   36:     0x5619708bd752 - std[73adb7dc35730857]::panicking::catch_unwind::<(), core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x5619708bd752 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x5619708bd752 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   39:     0x5619708bd752 - <std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x56197093781f - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn core[6883ba1bc0fe4ed1]::ops::function::FnOnce<(), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2319:9
[INFO] [stdout]   41:     0x56197093781f - <std[73adb7dc35730857]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   42:     0x764aad19eaa4 - <unknown>
[INFO] [stdout]   43:     0x764aad22ba64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tests::binary_on_path_resolved_finds_known_binary
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 495 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0", kill_on_drop: false }`
[INFO] [stdout] 7522337b278660c148eee36c343786e087d64bb1e3f6ce87761e59c7efadb0b0
