[INFO] cloning repository https://github.com/yoyoyeti/multitrunk-herdr-plugin
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/yoyoyeti/multitrunk-herdr-plugin" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyoyoyeti%2Fmultitrunk-herdr-plugin", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyoyoyeti%2Fmultitrunk-herdr-plugin'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ebe1b012badedb9fe44a535cbdaf353e722bfba8
[INFO] testing yoyoyeti/multitrunk-herdr-plugin against 1.100.0-beta.1 for beta-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyoyoyeti%2Fmultitrunk-herdr-plugin" "/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/yoyoyeti/multitrunk-herdr-plugin
[INFO] finished tweaking git repo https://github.com/yoyoyeti/multitrunk-herdr-plugin
[INFO] tweaked toml for git repo https://github.com/yoyoyeti/multitrunk-herdr-plugin written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/yoyoyeti/multitrunk-herdr-plugin 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 git repo https://github.com/yoyoyeti/multitrunk-herdr-plugin 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-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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034
[INFO] running `Command { std: "docker" "start" "ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034", 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" "ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034" "/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" "ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034", 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" "ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]    Compiling indexmap v2.14.1
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling syn v3.0.4
[INFO] [stderr]    Compiling clap_builder v4.6.6
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]    Compiling clap v4.6.6
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling multitrunk-herdr-plugin v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.11s
[INFO] running `Command { std: "docker" "inspect" "ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034", 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" "ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034" "/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 once_cell v1.21.4
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling multitrunk-herdr-plugin v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 9.58s
[INFO] running `Command { std: "docker" "inspect" "ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034", 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" "ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.13s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/multitrunk-herdr-plugin/ad03ad0153f18d15/out/mt_herdr-ad03ad0153f18d15)
[INFO] [stdout] 
[INFO] [stdout] running 327 tests
[INFO] [stdout] test attach_prompt::tests::a_hyphen_filters_the_branch_picker_and_ctrl_d_clears_the_assignment ... ok
[INFO] [stdout] test attach_prompt::tests::arrows_still_move_the_shared_cursor_and_esc_still_cancels ... ok
[INFO] [stdout] test attach_prompt::tests::ctrl_d_in_the_picker_clears_the_assignment ... ok
[INFO] [stdout] test attach_prompt::tests::backspacing_the_task_field_empty_reenables_auto_derivation ... ok
[INFO] [stdout] test attach_prompt::tests::attach_session_draws_before_initial_index_arrives ... ok
[INFO] [stdout] test attach_prompt::tests::colour_adds_only_escape_sequences_to_every_attach_screen ... ok
[INFO] [stdout] test attach_prompt::tests::draw_custom_picker_cursor_row_shifts_with_repo_count ... ok
[INFO] [stdout] test attach_prompt::tests::draw_custom_scrolls_long_repo_list_when_picker_closed ... ok
[INFO] [stdout] test attach_prompt::tests::b_types_into_a_nonempty_task_name_rather_than_leaving_the_custom_screen ... ok
[INFO] [stdout] test attach_prompt::tests::draw_custom_task_cursor_origin_is_absolute_not_just_relative ... ok
[INFO] [stdout] test attach_prompt::tests::draw_custom_picker_scrolls_long_branch_list ... ok
[INFO] [stdout] test attach_prompt::tests::draw_custom_picker_truncates_long_branch_names_to_one_row ... ok
[INFO] [stdout] test attach_prompt::tests::draw_shared_and_draw_custom_report_the_focused_cursor ... ok
[INFO] [stdout] test attach_prompt::tests::draw_custom_picker_paints_fewer_lines_than_forced_rows ... ok
[INFO] [stdout] test attach_prompt::tests::draw_shared_cursor_origin_is_absolute_not_just_relative ... ok
[INFO] [stdout] test attach_prompt::tests::backspace_on_a_repo_row_clears_its_assignment_without_touching_the_task_text ... ok
[INFO] [stdout] test attach_prompt::tests::custom_rejects_malformed_assignment ... ok
[INFO] [stdout] test attach_prompt::tests::interactive_shared_esc_cancels ... ok
[INFO] [stdout] test attach_prompt::tests::draw_shared_scrolls_long_branch_list ... ok
[INFO] [stdout] test attach_prompt::tests::interactive_custom_b_returns_to_shared ... ok
[INFO] [stdout] test attach_prompt::tests::custom_progress_labels_use_spec_repos ... ok
[INFO] [stdout] test attach_prompt::tests::interactive_shared_enter_selects_first_match ... ok
[INFO] [stdout] test attach_prompt::tests::narrowing_the_filter_clamps_a_cursor_that_was_on_a_later_row ... ok
[INFO] [stdout] test attach_prompt::tests::interactive_shared_down_arrow_moves_cursor ... ok
[INFO] [stdout] test attach_prompt::tests::interactive_custom_confirm_without_assignment_shows_error_then_recovers ... ok
[INFO] [stdout] test attach_prompt::tests::draw_shared_paints_fewer_lines_than_forced_rows ... ok
[INFO] [stdout] test attach_prompt::tests::custom_rejects_empty_repos ... ok
[INFO] [stdout] test attach_prompt::tests::line_mode_custom_builds_specs_and_defaults_task ... ok
[INFO] [stdout] test attach_prompt::tests::line_mode_custom_uses_explicit_task_name ... ok
[INFO] [stdout] test attach_prompt::tests::line_mode_shared_selects_branch ... ok
[INFO] [stdout] test attach_prompt::tests::option_backspace_edits_the_shared_filter_instead_of_cancelling ... ok
[INFO] [stdout] test attach_prompt::tests::probe_h_motion_freezes_an_autoderived_name_against_a_later_reassignment ... ok
[INFO] [stdout] test attach_prompt::tests::interactive_custom_explicit_task_name_survives_assignment ... ok
[INFO] [stdout] test attach_prompt::tests::interactive_shared_filter_narrows_then_selects ... ok
[INFO] [stdout] test attach_prompt::tests::refresh_replaces_stale_repo_branches ... ok
[INFO] [stdout] test attach_prompt::tests::refresh_that_narrows_the_shared_list_clamps_a_cursor_on_a_later_row ... ok
[INFO] [stdout] test attach_prompt::tests::option_motions_edit_the_custom_task_name_instead_of_cancelling ... ok
[INFO] [stdout] test attach_prompt::tests::run_attach_edit_loop_hides_the_cursor_once_focus_leaves_the_task_field ... ok
[INFO] [stdout] test attach_prompt::tests::shared_repo_lists_share_one_column_regardless_of_branch_length ... ok
[INFO] [stdout] test attach_prompt::tests::picker_footer_and_empty_hint_name_ctrl_d_not_the_old_dash_binding ... ok
[INFO] [stdout] test attach_prompt::tests::picker_shows_confirmed_empty_hint_once_the_repo_has_reported_with_no_branches ... ok
[INFO] [stdout] test attach_prompt::tests::shared_screen_clears_loading_hint_once_every_repo_has_reported_even_with_no_branches ... ok
[INFO] [stdout] test attach_prompt::tests::probe_k_motion_in_picker_filter_resets_the_list_cursor ... ok
[INFO] [stdout] test attach_prompt::tests::refresh_merge_updates_shared_list ... ok
[INFO] [stdout] test attach_prompt::tests::unknown_key_is_inert_on_both_shared_and_custom_screens ... ok
[INFO] [stdout] test attach_prompt::tests::refresh_reaches_the_custom_screen_too ... ok
[INFO] [stdout] test attach_prompt::tests::shared_progress_labels_fall_back_to_catalog_for_an_unknown_branch ... ok
[INFO] [stdout] test attach_prompt::tests::shared_progress_labels_pull_repos_from_index ... ok
[INFO] [stdout] test attach_prompt::tests::interactive_custom_assign_and_confirm_defaults_task ... ok
[INFO] [stdout] test attach_prompt::tests::shared_empty_state_renders_hint ... ok
[INFO] [stdout] test attach_prompt::tests::refresh_repaints_while_no_key_is_pressed ... ok
[INFO] [stdout] test attach_prompt::tests::picker_shows_loading_hint_for_a_repo_that_has_not_reported_yet ... ok
[INFO] [stdout] test attach_prompt::tests::shared_screen_keeps_loading_hint_while_a_catalog_repo_has_not_reported ... ok
[INFO] [stdout] test attach_prompt::tests::shared_screen_shows_loading_hint_while_index_is_empty ... ok
[INFO] [stdout] test bench::tests::a_second_flush_appends_instead_of_overwriting_the_first ... ok
[INFO] [stdout] test bench::tests::from_env_disabled_when_unset_or_zero ... ok
[INFO] [stdout] test bench::tests::generates_run_id_when_env_missing ... ok
[INFO] [stdout] test attach_prompt::tests::shift_tab_retreats_custom_focus ... ok
[INFO] [stdout] test bench::tests::flush_is_noop_when_disabled ... ok
[INFO] [stdout] test events::tests::repo_checked_carries_probe_error_and_defaults_absent_paths ... ok
[INFO] [stdout] test branches::tests::merge_repo_branches_marks_reported_even_for_an_empty_list ... ok
[INFO] [stdout] test events::tests::rejects_invalid_lines ... ok
[INFO] [stdout] test branches::tests::shared_branches_requires_at_least_two_repos ... ok
[INFO] [stdout] test events::tests::ignores_unknown_event_names ... ok
[INFO] [stdout] test events::tests::ignores_unknown_fields ... ok
[INFO] [stdout] test bench::tests::mark_and_flush_writes_ordered_phases_with_correlation_fields ... ok
[INFO] [stdout] test herdr::tests::agent_attach_retry_is_no_slower_than_shell_prompt_poll ... ok
[INFO] [stdout] test events::tests::parses_all_event_shapes ... ok
[INFO] [stdout] test herdr::tests::agent_pane_command_is_rejected_instead_of_discarded ... ok
[INFO] [stdout] test herdr::tests::agent_start_argv_passes_native_args_after_a_double_dash ... ok
[INFO] [stdout] test events::tests::parses_check_events ... ok
[INFO] [stdout] test herdr::tests::agent_name_is_slugified_to_herdr_constraints ... ok
[INFO] [stdout] test events::tests::parses_repo_done_and_result_flatten ... ok
[INFO] [stdout] test herdr::tests::agent_kind_is_the_file_stem_of_a_path_or_the_bare_value ... ok
[INFO] [stdout] test herdr::tests::default_root_metadata_uses_task_values_and_parses_target_ids ... ok
[INFO] [stdout] test herdr::tests::left_agent_starts_right_then_swaps_with_root_pane ... ok
[INFO] [stdout] test herdr::tests::notification_and_workspace_focus_use_exact_herdr_argv ... ok
[INFO] [stdout] test herdr::tests::explicit_root_label_never_changes_workspace_identity ... ok
[INFO] [stdout] test herdr::tests::open_plugin_pane_with_env_passes_env_flags ... ok
[INFO] [stdout] test herdr::tests::labeled_agent_renames_returned_agent_pane ... ok
[INFO] [stdout] test events::tests::parses_hook_events ... ok
[INFO] [stdout] test herdr::tests::open_plugin_pane_without_env_is_unchanged ... ok
[INFO] [stdout] test herdr::tests::pane_is_at_shell_prompt_only_when_login_shell_is_sole_foreground ... ok
[INFO] [stdout] test herdr::tests::parses_workspace_id ... ok
[INFO] [stdout] test herdr::tests::popup_agent_opens_generic_plugin_pane_with_absolute_agent_argv ... ok
[INFO] [stdout] test herdr::tests::position_on_non_agent_pane_is_rejected ... ok
[INFO] [stdout] test herdr::tests::root_command_runs_in_workspace_root_pane ... ok
[INFO] [stdout] test herdr::tests::omitted_foreground_processes_is_not_at_prompt_rather_than_an_error ... ok
[INFO] [stdout] test herdr::tests::popup_agent_argv_appends_the_configured_agent_args ... ok
[INFO] [stdout] test attach_prompt::tests::run_attach_edit_loop_emits_the_cursor_position_the_loop_reads_from_draw_shared ... ok
[INFO] [stdout] test herdr::tests::agent_start_argv_uses_the_slugified_name ... ok
[INFO] [stdout] test herdr::tests::root_non_tab_placement_errors_before_runner_call ... ok
[INFO] [stdout] test herdr::tests::an_attach_failure_that_is_not_a_busy_pane_is_not_retried ... ok
[INFO] [stdout] test herdr::tests::per_repo_pane_becomes_exact_plugin_tab_argv ... ok
[INFO] [stdout] test herdr::tests::popup_must_be_the_only_final_layout_operation ... ok
[INFO] [stdout] test herdr::tests::bad_relative_agent_path_is_an_error ... ok
[INFO] [stdout] test herdr::tests::split_command_opens_generic_plugin_pane_with_exact_argv ... ok
[INFO] [stdout] test herdr::tests::overlay_and_zoomed_commands_target_the_expected_context ... ok
[INFO] [stdout] test herdr::tests::tab_agent_creates_tab_then_attaches_kind_and_renames_tab ... ok
[INFO] [stdout] test herdr::tests::tab_command_opens_plugin_pane_then_renames_dynamic_tab ... ok
[INFO] [stdout] test herdr::tests::split_agent_attach_carries_the_configured_agent_args ... ok
[INFO] [stdout] test herdr::tests::unknown_pane_role_errors_before_runner_call ... ok
[INFO] [stdout] test herdr::tests::split_agent_pane_splits_root_then_attaches_kind ... ok
[INFO] [stdout] test herdr::tests::unsupported_agent_position_errors_before_runner_call ... ok
[INFO] [stdout] test herdr::tests::workspace_create_argv_shape ... ok
[INFO] [stdout] test herdr::tests::runner_records_calls ... ok
[INFO] [stdout] test herdr::tests::task_from_context_reports_invalid_or_incomplete_json ... ok
[INFO] [stdout] test herdr::tests::workspace_creation_focuses_when_placement_requires_active_context ... ok
[INFO] [stdout] test keys::tests::an_unknown_alt_letter_is_unknown_not_a_char ... ok
[INFO] [stdout] test keys::tests::alt_modifier_parses_padded_subparam_and_trailing_forms ... ok
[INFO] [stdout] test keys::tests::a_truncated_sequence_is_unknown_not_an_error ... ok
[INFO] [stdout] test keys::tests::closed_input_decodes_to_none ... ok
[INFO] [stdout] test keys::tests::control_bytes_map_to_their_keys ... ok
[INFO] [stdout] test keys::tests::esc_esc_bracket_d_decodes_as_left_with_no_residue ... ok
[INFO] [stdout] test keys::tests::esc_esc_with_nothing_following_is_a_single_esc ... ok
[INFO] [stdout] test keys::tests::esc_esc_with_word_motion_modifier_decodes_as_word_left ... ok
[INFO] [stdout] test keys::tests::home_end_and_delete_have_several_encodings ... ok
[INFO] [stdout] test keys::tests::option_arrows_are_word_motions_not_esc ... ok
[INFO] [stdout] test keys::tests::option_backspace_is_delete_word_not_esc ... ok
[INFO] [stdout] test keys::tests::printable_bytes_are_chars ... ok
[INFO] [stdout] test keys::tests::a_csi_with_an_intermediate_byte_is_consumed_whole ... ok
[INFO] [stdout] test keys::tests::a_lone_esc_with_nothing_following_is_esc ... ok
[INFO] [stdout] test keys::tests::read_line_returns_a_final_unterminated_line ... ok
[INFO] [stdout] test bench::tests::pane_env_for_child_is_empty_when_disabled ... ok
[INFO] [stdout] test herdr::tests::unresolved_bare_agent_name_is_an_error ... ok
[INFO] [stdout] test herdr::tests::resolves_agent_from_path_without_interpreting_shell_text ... ok
[INFO] [stdout] test layout::tests::agent_args_parse_from_the_kebab_key ... ok
[INFO] [stdout] test keys::tests::read_line_stops_at_the_newline_and_leaves_the_rest ... ok
[INFO] [stdout] test keys::tests::sequences_decode_one_byte_at_a_time ... ok
[INFO] [stdout] test layout::tests::agent_args_default_to_none ... ok
[INFO] [stdout] test bench::tests::pane_env_for_child_passes_run_id_when_enabled ... ok
[INFO] [stdout] test layout::tests::unknown_template_expressions_are_preserved_byte_for_byte ... ok
[INFO] [stdout] test herdr::tests::task_from_context_requires_canonical_task_identity ... ok
[INFO] [stdout] test layout::tests::loads_layout_from_file ... ok
[INFO] [stdout] test layout::tests::per_repo_fans_out_and_expands ... ok
[INFO] [stdout] test line_edit::tests::clear_empties_the_field_and_resets_the_cursor ... ok
[INFO] [stdout] test layout::tests::default_agent_when_unset ... ok
[INFO] [stdout] test layout::tests::agent_pane_keeps_position_and_default_cwd ... ok
[INFO] [stdout] test layout::tests::load_or_default_falls_back_when_file_absent ... ok
[INFO] [stdout] test line_edit::tests::apply_key_routes_each_editing_key_to_its_operation ... ok
[INFO] [stdout] test line_edit::tests::backspace_removes_the_char_before_the_cursor ... ok
[INFO] [stdout] test line_edit::tests::delete_word_left_peels_a_branch_name_one_segment_at_a_time ... ok
[INFO] [stdout] test layout::tests::load_or_default_still_errors_on_invalid_toml ... ok
[INFO] [stdout] test keys::tests::an_unknown_csi_is_consumed_whole_and_leaves_no_residue ... ok
[INFO] [stdout] test keys::tests::csi_and_ss3_arrows_both_decode ... ok
[INFO] [stdout] test line_edit::tests::kills_remove_one_side_and_leave_the_cursor_consistent ... ok
[INFO] [stdout] test line_edit::tests::apply_key_reports_non_editing_keys_as_unhandled ... ok
[INFO] [stdout] test line_edit::tests::delete_word_left_from_mid_string_keeps_the_tail ... ok
[INFO] [stdout] test line_edit::tests::insert_puts_the_char_at_the_cursor_and_advances_it ... ok
[INFO] [stdout] test line_edit::tests::insert_rejects_non_printable_and_non_ascii ... ok
[INFO] [stdout] test line_edit::tests::home_and_end_jump_to_the_extremes ... ok
[INFO] [stdout] test line_edit::tests::from_str_puts_the_cursor_at_the_end ... ok
[INFO] [stdout] test line_edit::tests::left_and_right_move_one_char ... ok
[INFO] [stdout] test line_edit::tests::ops_at_the_boundaries_are_no_ops ... ok
[INFO] [stdout] test line_edit::tests::word_left_and_word_right_walk_the_same_boundaries ... ok
[INFO] [stdout] test mt::tests::mt_bin_failure_mentions_how_to_install_mt ... ok
[INFO] [stdout] test mt::tests::includes_homebrew_prefix_bin_when_herdr_uses_opt_path ... ok
[INFO] [stdout] test mt::tests::attach_events_args_bare_task_has_no_specs ... ok
[INFO] [stdout] test line_edit::tests::delete_removes_the_char_under_the_cursor_and_stays_put ... ok
[INFO] [stdout] test mt::tests::includes_herdr_bin_directory_for_mt_runtime_dependencies ... ok
[INFO] [stdout] test mt::tests::parses_new_contract ... ok
[INFO] [stdout] test mt::tests::prepends_resolved_mt_directory_to_child_path ... ok
[INFO] [stdout] test mt::tests::parses_new_with_empty_env ... ok
[INFO] [stdout] test mt::tests::rejects_contract_values_with_wrong_types ... ok
[INFO] [stdout] test mt::tests::attach_events_args_include_specs_and_flag ... ok
[INFO] [stdout] test mt::tests::resolve_failure_mentions_how_to_install_mt ... ok
[INFO] [stdout] test mt::tests::resolves_mt_from_standard_user_bin_when_path_is_restricted ... ok
[INFO] [stdout] test mt::tests::rm_events_args_include_yes_and_optional_force ... ok
[INFO] [stderr] Error: no such file: multitrunk.toml
[INFO] [stdout] test mt::tests::a_forced_rm_failure_names_force_in_its_error ... ok
[INFO] [stdout] test mt::tests::animated_nonzero_exit_without_result_event_reports_mt_stderr ... ok
[INFO] [stderr] warning: cache cold
[INFO] [stderr] Error: wt switch failed
[INFO] [stderr] 
[INFO] [stdout] test mt::tests::reported_stderr_is_the_last_line_and_stays_on_the_headline ... ok
[INFO] [stderr] noise on stderr
[INFO] [stdout] test mt::tests::failed_event_still_wins_over_stderr ... ok
[INFO] [stderr] Error: unknown repo `aehter`
[INFO] [stdout] test mt::tests::nonzero_exit_without_result_event_reports_mt_stderr ... ok
[INFO] [stdout] test mt::tests::run_new_events_animated_returns_on_result_without_waiting_for_lingering_stdout ... ok
[INFO] [stdout] test herdr::tests::split_agent_waits_out_shell_init_before_attaching_kind ... ok
[INFO] [stdout] test herdr::tests::split_agent_tolerates_an_omitted_foreground_list_then_attaches ... ok
[INFO] [stdout] test herdr::tests::task_from_context_falls_back_to_workspace_cwd_when_process_cwd_has_no_config ... ok
[INFO] [stdout] test herdr::tests::a_busy_pane_verdict_is_retried_until_the_agent_attaches ... ok
[INFO] [stdout] Initialized empty Git repository in /tmp/.tmpCILHf4/.git/
[INFO] [stdout] Initialized empty Git repository in /tmp/.tmpwAUwWL/.git/
[INFO] [stdout] [main (root-commit) b64f80c] init
[INFO] [stdout]  1 file changed, 1 insertion(+)
[INFO] [stdout]  create mode 100644 README
[INFO] [stdout] [main (root-commit) b64f80c] init
[INFO] [stdout]  1 file changed, 1 insertion(+)
[INFO] [stdout]  create mode 100644 README
[INFO] [stdout] test branches::tests::list_remote_branches_strips_origin_prefix ... ok
[INFO] [stdout] test mt::tests::run_new_events_animated_kills_child_on_tick_error ... ok
[INFO] [stdout] test mt::tests::run_new_events_animated_without_a_cwd_inherits_ours ... ok
[INFO] [stdout] test mt::tests::run_new_events_animated_runs_mt_in_the_requested_cwd ... ok
[INFO] [stdout] Initialized empty Git repository in /tmp/.tmpybpq7i/.git/
[INFO] [stdout] [main (root-commit) b64f80c] init
[INFO] [stdout]  1 file changed, 1 insertion(+)
[INFO] [stdout]  create mode 100644 README
[INFO] [stdout] test branches::tests::build_index_merges_multiple_repos_synchronously ... ok
[INFO] [stdout] test mt::tests::run_new_events_animated_ticks_while_mt_is_quiet_then_returns_result ... ok
[INFO] [stdout] test mt::tests::run_new_events_kills_child_on_callback_error ... ok
[INFO] [stdout] test mt::tests::run_new_events_kills_child_on_parse_error ... ok
[INFO] [stdout] test prompt::tests::a_lone_esc_still_cancels ... ok
[INFO] [stdout] test mt::tests::run_new_events_prefers_failed_error_over_exit_code ... ok
[INFO] [stdout] test prompt::tests::an_unknown_sequence_leaves_the_name_untouched ... ok
[INFO] [stdout] test mt::tests::run_new_events_returns_on_result_without_waiting_for_lingering_stdout ... ok
[INFO] [stdout] test prompt::tests::arrows_home_end_and_delete_edit_at_the_cursor ... ok
[INFO] [stdout] test mt::tests::run_new_events_streams_lines_and_returns_result ... ok
[INFO] [stderr] Error: no such task `nope`
[INFO] [stdout] test mt::tests::run_rm_check_carries_blocked_true_for_a_probe_error_with_zero_counts ... ok
[INFO] [stdout] test mt::tests::run_rm_check_errors_when_mt_dies_after_emitting_a_check_result ... ok
[INFO] [stdout] test prompt::tests::colour_adds_only_escape_sequences_to_every_create_screen ... ok
[INFO] [stdout] test prompt::tests::colour_adds_only_escape_sequences_to_every_edit_screen ... ok
[INFO] [stdout] test mt::tests::run_rm_check_errors_without_a_check_result ... ok
[INFO] [stdout] test prompt::tests::create_mode_animates_in_progress_repo_and_freezes_done_repo ... ok
[INFO] [stdout] test prompt::tests::create_mode_footer_tracks_hooks_phase_then_repo_failure ... ok
[INFO] [stdout] test prompt::tests::create_mode_hides_unchecked_repos_and_checkboxes ... ok
[INFO] [stdout] test prompt::tests::create_status_glyphs_share_one_column_across_repos_and_hooks ... ok
[INFO] [stdout] test prompt::tests::draw_edit_paints_fewer_lines_than_forced_rows ... ok
[INFO] [stdout] test prompt::tests::ctrl_u_and_ctrl_k_clear_one_side_of_the_cursor ... ok
[INFO] [stdout] test prompt::tests::draw_create_scrolls_and_follows_in_progress ... ok
[INFO] [stdout] test prompt::tests::draw_edit_cursor_origin_is_absolute_not_just_relative ... ok
[INFO] [stdout] test prompt::tests::draw_edit_reports_no_cursor_when_a_repo_row_is_focused ... ok
[INFO] [stdout] test prompt::tests::draw_edit_scrolls_long_repo_checklist ... ok
[INFO] [stdout] test prompt::tests::ellipsis_frame_cycles_left_aligned ... ok
[INFO] [stdout] test prompt::tests::hook_done_updates_existing_row_in_place_without_duplicating ... ok
[INFO] [stdout] test prompt::tests::draw_create_shows_hook_rows_below_repos_with_label_and_ellipsis ... ok
[INFO] [stdout] test prompt::tests::hook_start_without_repo_uses_bare_hook_name ... ok
[INFO] [stdout] test prompt::tests::hook_start_adds_row_with_repo_qualified_label_and_sets_hooks_footer ... ok
[INFO] [stdout] test prompt::tests::ignored_event_leaves_state_untouched ... ok
[INFO] [stdout] test prompt::tests::interactive_backspace_edits_name ... ok
[INFO] [stdout] test prompt::tests::interactive_draw_includes_task_name_and_first_repo_and_alt_screen ... ok
[INFO] [stdout] test prompt::tests::draw_edit_reports_the_cursor_column_at_the_cursor_not_the_end ... ok
[INFO] [stdout] test prompt::tests::interactive_enter_from_name_with_defaults_selects_prechecked_repos ... ok
[INFO] [stdout] test prompt::tests::interactive_down_arrow_from_name_focuses_first_repo ... ok
[INFO] [stdout] test prompt::tests::interactive_check_all_and_none_shortcuts ... ok
[INFO] [stdout] test prompt::tests::interactive_ctrl_c_cancels_editing ... ok
[INFO] [stdout] test prompt::tests::interactive_esc_cancels_editing ... ok
[INFO] [stdout] test prompt::tests::hook_failed_sets_first_line_error_like_repo_failure ... ok
[INFO] [stdout] test prompt::tests::interactive_jk_moves_among_repo_rows_but_not_from_name ... ok
[INFO] [stdout] test prompt::tests::interactive_enter_with_no_repos_checked_shows_error_and_stays_in_edit_mode ... ok
[INFO] [stdout] test prompt::tests::interactive_up_arrow_from_first_repo_returns_to_name ... ok
[INFO] [stdout] test prompt::tests::line_mode_prompt_accepts_defaults_with_empty_line ... ok
[INFO] [stdout] test prompt::tests::line_mode_prompt_honors_explicit_subset ... ok
[INFO] [stdout] test prompt::tests::option_motions_edit_the_name_instead_of_cancelling ... ok
[INFO] [stdout] test prompt::tests::run_edit_loop_emits_the_cursor_position_the_loop_reads_from_draw_edit ... ok
[INFO] [stdout] test prompt::tests::interactive_letters_a_and_n_type_normally_while_name_is_focused ... ok
[INFO] [stdout] test prompt::tests::interactive_space_toggles_and_enter_from_repo_row ... ok
[INFO] [stdout] test prompt::tests::interactive_shift_tab_retreats_focus_to_name ... ok
[INFO] [stdout] test prompt::tests::place_cursor_shows_it_at_a_position_and_hides_it_otherwise ... ok
[INFO] [stdout] test prompt::tests::run_prompt_session_finish_failure_shows_error_before_leaving_alt_screen ... ok
[INFO] [stdout] test prompt::tests::wait_for_dismiss_ignores_edit_keys_and_returns_only_on_enter ... ok
[INFO] [stdout] test prompt::tests::run_edit_loop_hides_the_cursor_once_focus_leaves_the_name_field ... ok
[INFO] [stdout] test prompt::tests::run_prompt_session_with_load_paints_before_load_returns ... ok
[INFO] [stdout] test prompt::tests::interactive_stdin_closed_mid_edit_is_an_error ... ok
[INFO] [stdout] test prompt::tests::space_inserts_into_the_name_and_toggles_only_on_a_repo_row ... ok
[INFO] [stdout] test prompt::tests::interactive_tab_wraps_focus_back_to_name_with_single_repo ... ok
[INFO] [stdout] test repos::tests::defaults_all_default_true_at_workspace_root ... ok
[INFO] [stdout] test repos::tests::line_mode_names_override_defaults ... ok
[INFO] [stdout] test rm_prompt::tests::abbreviate_switches_format_at_thousand_boundaries ... ok
[INFO] [stdout] test prompt::tests::wait_for_dismiss_returns_on_a_closed_stream_rather_than_spinning ... ok
[INFO] [stdout] test repos::tests::context_prefers_focused_pane_cwd ... ok
[INFO] [stdout] test repos::tests::line_mode_empty_keeps_defaults ... ok
[INFO] [stdout] test repos::tests::defaults_follow_parent_task_repos ... ok
[INFO] [stdout] test rm_prompt::tests::arrow_keys_are_inert_on_every_screen_rather_than_cancelling ... ok
[INFO] [stdout] test repos::tests::defaults_precheck_follows_default_flag ... ok
[INFO] [stdout] test rm_prompt::tests::blocked_confirm_advances_to_escalate_without_removing ... ok
[INFO] [stdout] test rm_prompt::tests::blocked_confirm_shows_abbreviated_counts_then_paths_on_tab ... ok
[INFO] [stdout] test rm_prompt::tests::check_failure_is_rendered_and_dismissed_without_removing ... ok
[INFO] [stdout] test rm_prompt::tests::blocked_tree_y_alone_removes_nothing ... ok
[INFO] [stdout] test rm_prompt::tests::check_failure_does_not_offer_force_retry ... ok
[INFO] [stdout] test rm_prompt::tests::blocked_tree_needs_y_then_f_and_forces ... ok
[INFO] [stdout] test rm_prompt::tests::check_failure_returns_immediately_when_input_ended ... ok
[INFO] [stdout] test rm_prompt::tests::cancel_removes_nothing_and_does_not_close_the_workspace ... ok
[INFO] [stdout] test rm_prompt::tests::cancel_works_from_every_pre_removing_screen ... ok
[INFO] [stdout] test rm_prompt::tests::check_failure_waits_for_a_key_before_returning ... ok
[INFO] [stdout] test rm_prompt::tests::clean_tree_confirms_then_removes_and_finishes ... ok
[INFO] [stdout] test rm_prompt::tests::check_result_advances_to_confirm ... ok
[INFO] [stdout] test rm_prompt::tests::clean_confirm_removes_without_force_on_y ... ok
[INFO] [stdout] test rm_prompt::tests::colour_adds_only_escape_sequences_to_every_screen ... ok
[INFO] [stdout] test rm_prompt::tests::check_is_not_invoked_when_load_fails ... ok
[INFO] [stdout] test rm_prompt::tests::confirm_and_removing_paint_fewer_lines_than_forced_rows ... ok
[INFO] [stdout] test rm_prompt::tests::describe_repo_names_unpushed_commits ... ok
[INFO] [stdout] test rm_prompt::tests::describe_repo_reads_clean_or_lists_counts ... ok
[INFO] [stdout] test rm_prompt::tests::esc_still_cancels_and_y_still_confirms ... ok
[INFO] [stdout] test rm_prompt::tests::escalate_forces_removal_on_f ... ok
[INFO] [stdout] test rm_prompt::tests::confirm_screen_distinguishes_unpushed_from_dirty ... ok
[INFO] [stdout] test rm_prompt::tests::failed_escalated_retry_renders_its_own_error_and_stays_open ... ok
[INFO] [stdout] test rm_prompt::tests::failed_forced_removal_leaves_the_workspace_open ... ok
[INFO] [stdout] test rm_prompt::tests::dismissed_failure_still_reports_the_error ... ok
[INFO] [stdout] test rm_prompt::tests::failed_forced_run_offers_only_dismissal ... ok
[INFO] [stdout] test rm_prompt::tests::failed_screen_dismisses_on_n_and_esc ... ok
[INFO] [stdout] test rm_prompt::tests::failed_removal_leaves_the_workspace_open ... ok
[INFO] [stdout] test rm_prompt::tests::check_progress_is_painted_while_the_check_runs ... ok
[INFO] [stdout] test rm_prompt::tests::failed_unforced_removal_can_be_escalated_to_force ... ok
[INFO] [stdout] test rm_prompt::tests::removal_progress_is_painted_while_the_removal_runs ... ok
[INFO] [stdout] test rm_prompt::tests::removal_progress_glyphs_share_one_column ... ok
[INFO] [stdout] test rm_prompt::tests::force_key_is_inert_on_the_clean_confirm_screen ... ok
[INFO] [stdout] test rm_prompt::tests::removing_progress_scrolls_and_follows_in_progress ... ok
[INFO] [stdout] test rm_prompt::tests::escalate_screen_states_branch_deletion_for_unpushed_commits ... ok
[INFO] [stdout] test rm_prompt::tests::removing_screen_ignores_input ... ok
[INFO] [stdout] test rm_prompt::tests::force_key_is_inert_on_the_confirm_screen ... ok
[INFO] [stdout] test rm_prompt::tests::key_chips_are_lowercase_on_every_screen ... ok
[INFO] [stdout] test rm_prompt::tests::repo_descriptions_share_one_column_regardless_of_name_length ... ok
[INFO] [stdout] test rm_prompt::tests::repo_rows_scroll_when_many_repos ... ok
[INFO] [stdout] test rm_prompt::tests::repo_progress_events_are_recorded_during_removal ... ok
[INFO] [stdout] test rm_prompt::tests::run_rm_prompt_session_with_load_paints_before_load_runs_and_check_waits_for_it ... ok
[INFO] [stdout] test rm_prompt::tests::failed_unforced_run_offers_force ... ok
[INFO] [stdout] test rm_prompt::tests::starts_on_the_checking_screen ... ok
[INFO] [stdout] test rm_prompt::tests::tab_toggles_path_display_on_blocked_screens ... ok
[INFO] [stdout] test rm_prompt::tests::stray_key_on_the_failed_screen_is_inert_and_force_still_works ... ok
[INFO] [stdout] test rm_prompt::tests::the_session_enters_and_leaves_the_alternate_screen_around_every_frame ... ok
[INFO] [stdout] test rm_prompt::tests::unreadable_repo_forces_blocked_even_with_zero_counts ... ok
[INFO] [stdout] test rm_prompt::tests::the_tab_chip_names_the_state_it_toggles_to ... ok
[INFO] [stdout] test rm_prompt::tests::unreadable_repo_still_gets_prose_on_both_screens ... ok
[INFO] [stdout] test style::tests::color_differs_from_plain_only_by_escape_sequences ... ok
[INFO] [stdout] test style::tests::color_wraps_each_span_and_resets_it ... ok
[INFO] [stdout] test style::tests::fit_line_leaves_short_text_alone_and_ellipsis_clips_long ... ok
[INFO] [stdout] test style::tests::plain_is_pass_through_so_uncolored_callers_see_the_bare_text ... ok
[INFO] [stdout] test tests::attach_invocation_shared_passes_repo_branch_specs_for_progress_repos ... ok
[INFO] [stdout] test tests::dynamic_pane_command_preserves_argv_boundaries ... ok
[INFO] [stdout] test tests::dynamic_pane_command_rejects_invalid_json_and_nul ... ok
[INFO] [stdout] test viewport::tests::force_cols_overrides_terminal_cols ... ok
[INFO] [stdout] test tests::layout_new_task_records_nothing_when_bench_disabled ... ok
[INFO] [stdout] test viewport::tests::force_rows_overrides_terminal_rows ... ok
[INFO] [stdout] test tests::layout_new_task_records_bench_marks_when_enabled ... ok
[INFO] [stdout] test viewport::tests::scroll_window_capacity_zero_still_shows_one_when_nonempty ... ok
[INFO] [stdout] test tests::layout_new_task_records_per_pane_bench_marks ... ok
[INFO] [stdout] test viewport::tests::scroll_window_keeps_focus_visible_and_centers ... ok
[INFO] [stdout] test viewport::tests::with_clip_hints_appends_only_on_edges ... ok
[INFO] [stdout] test viewport::tests::scroll_window_clamps_focus_past_end ... ok
[INFO] [stdout] test viewport::tests::scroll_window_empty_and_short ... ok
[INFO] [stdout] test worker::tests::spawn_failure_is_synchronous_and_removes_reserved_log ... ok
[INFO] [stdout] test mt::tests::run_rm_check_kills_child_on_tick_error ... ok
[INFO] [stdout] test mt::tests::run_rm_check_returns_on_check_result_without_waiting_for_lingering_stdout ... ok
[INFO] [stdout] test mt::tests::run_rm_check_returns_the_check_result_body ... ok
[INFO] [stdout] test mt::tests::run_rm_check_streams_every_event_and_ticks_while_mt_is_quiet ... ok
[INFO] [stdout] test mt::tests::run_rm_events_animated_forwards_force_into_the_spawned_argv ... ok
[INFO] [stdout] test mt::tests::run_rm_events_returns_on_result_without_waiting_for_lingering_stdout ... ok
[INFO] [stdout] test mt::tests::run_rm_events_surfaces_a_failed_event_as_an_error ... ok
[INFO] [stderr] Error: config parse failed
[INFO] [stdout] test mt::tests::stderr_report_does_not_block_on_a_grandchild_holding_the_pipe ... ok
[INFO] [stdout] test mt::tests::silent_nonzero_exit_reports_exit_code_without_empty_stderr_suffix ... ok
[INFO] [stdout] test tests::attach_create_with_bench_records_marks_around_the_mt_subprocess ... ok
[INFO] [stderr]      Running tests/attach_task_flows.rs (/opt/rustwide/target/debug/build/multitrunk-herdr-plugin/870e844001271584/out/attach_task_flows-870e844001271584)
[INFO] [stdout] test tests::new_create_with_bench_records_marks_around_the_mt_subprocess ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 327 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.47s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] Initialized empty Git repository in /tmp/.tmpTBsr4H/api/.git/
[INFO] [stdout] Initialized empty Git repository in /tmp/.tmpWtotTr/api/.git/
[INFO] [stdout] Initialized empty Git repository in /tmp/.tmpGn2TML/api/.git/
[INFO] [stdout] [main (root-commit) d1414aa] init
[INFO] [stdout]  1 file changed, 1 insertion(+)
[INFO] [stdout]  create mode 100644 README
[INFO] [stdout] [main (root-commit) d1414aa] init
[INFO] [stdout]  1 file changed, 1 insertion(+)
[INFO] [stdout]  create mode 100644 README
[INFO] [stdout] [main (root-commit) d1414aa] init
[INFO] [stdout]  1 file changed, 1 insertion(+)
[INFO] [stdout]  create mode 100644 README
[INFO] [stdout] Initialized empty Git repository in /tmp/.tmprrf6mH/api/.git/
[INFO] [stdout] [main (root-commit) d1414aa] init
[INFO] [stdout]  1 file changed, 1 insertion(+)
[INFO] [stdout]  create mode 100644 README
[INFO] [stdout] Initialized empty Git repository in /tmp/.tmpTBsr4H/web/.git/
[INFO] [stdout] Initialized empty Git repository in /tmp/.tmpGn2TML/web/.git/
[INFO] [stdout] [main (root-commit) d1414aa] init
[INFO] [stdout]  1 file changed, 1 insertion(+)
[INFO] [stdout]  create mode 100644 README
[INFO] [stdout] Initialized empty Git repository in /tmp/.tmpWtotTr/web/.git/
[INFO] [stdout] [main (root-commit) d1414aa] init
[INFO] [stdout]  1 file changed, 1 insertion(+)
[INFO] [stdout]  create mode 100644 README
[INFO] [stdout] Initialized empty Git repository in /tmp/.tmprrf6mH/web/.git/
[INFO] [stdout] [main (root-commit) d1414aa] init
[INFO] [stdout]  1 file changed, 1 insertion(+)
[INFO] [stdout]  create mode 100644 README
[INFO] [stdout] test prompt_custom_invokes_mt_attach_with_repo_equals_branch ... ok
[INFO] [stdout] [main (root-commit) d1414aa] init
[INFO] [stdout]  1 file changed, 1 insertion(+)
[INFO] [stdout]  create mode 100644 README
[INFO] [stdout] test prompt_custom_defaults_task_to_first_branch ... ok
[INFO] [stdout] test prompt_shared_invokes_mt_attach_events_with_repo_specs ... ok
[INFO] [stdout] test cancel_does_not_spawn_mt ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/detached_new_task.rs (/opt/rustwide/target/debug/build/multitrunk-herdr-plugin/63d853cf4b4b011d/out/detached_new_task-63d853cf4b4b011d)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test new_task_worker_notifies_focuses_and_removes_log ... ok
[INFO] [stdout] test prompt_rejects_leading_current_component_before_spawning_worker ... ok
[INFO] [stdout] test prompt_rejects_parent_path_before_spawning_worker ... ok
[INFO] [stdout] test new_task_worker_failure_preserves_log_and_notifies_with_first_error_line_and_path ... ok
[INFO] [stdout] test prompt_creates_workspace_in_process_without_detached_worker ... ok
[INFO] [stdout] test prompt_accepts_single_component_branch_style_name ... ok
[INFO] [stdout] test prompt_rejects_nested_path_before_spawning_worker ... ok
[INFO] [stdout] test prompt_rejects_trailing_separator_before_spawning_worker ... ok
[INFO] [stdout] test successful_creation_with_log_cleanup_failure_notifies_accurately ... ok
[INFO] [stdout] test prompt_rejects_trailing_current_component_before_spawning_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.34s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/detached_rm_task.rs (/opt/rustwide/target/debug/build/multitrunk-herdr-plugin/84cdd6816982417b/out/detached_rm_task-84cdd6816982417b)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test failed_rm_worker_preserves_log_and_notifies ... ok
[INFO] [stdout] test successful_rm_worker_removes_before_close_and_removes_log ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/herdr_keys_example.rs (/opt/rustwide/target/debug/build/multitrunk-herdr-plugin/3e4537464fc56c0e/out/herdr_keys_example-3e4537464fc56c0e)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test new_and_attach_keys_use_direct_pane_open ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/prompt_progress.rs (/opt/rustwide/target/debug/build/multitrunk-herdr-plugin/1a549470cb2611d9/out/prompt_progress-1a549470cb2611d9)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test prompt_runs_mt_events_then_herdr_without_detached_worker ... ok
[INFO] [stdout] test prompt_toasts_on_early_config_failure ... ok
[INFO] [stdout] test prompt_reports_repo_failure_without_opening_a_workspace ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/rm_task_popup.rs (/opt/rustwide/target/debug/build/multitrunk-herdr-plugin/51eab281e517e412/out/rm_task_popup-51eab281e517e412)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test the_popup_relocates_to_the_multitrunk_root_before_running_mt ... ok
[INFO] [stdout] test cancel_removes_nothing ... ok
[INFO] [stdout] test blocked_tree_forces_on_y_then_f ... ok
[INFO] [stdout] test clean_tree_removes_on_y_then_closes_the_workspace ... ok
[INFO] [stdout] test the_popup_requires_the_task_env_and_refuses_to_infer_it ... ok
[INFO] [stdout] test unpushed_only_tree_shows_commits_as_the_blocker_and_removes_nothing_on_y ... ok
[INFO] [stdout] test blocked_tree_shows_blockers_and_removes_nothing_on_y_alone ... ok
[INFO] [stdout] test failed_removal_leaves_the_workspace_open ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/task_5_against_stub.rs (/opt/rustwide/target/debug/build/multitrunk-herdr-plugin/8d4b6c75fa40f00d/out/task_5_against_stub-8d4b6c75fa40f00d)
[INFO] [stdout] 
[INFO] [stdout] running 29 tests
[INFO] [stdout] test manifest_uses_relative_action_paths_and_safe_pane_launchers ... ok
[INFO] [stdout] test mismatched_workspace_id_is_rejected_without_side_effects ... ok
[INFO] [stdout] test new_task_passes_layout_agent_args_to_agent_start ... ok
[INFO] [stdout] test direct_final_popup_is_created_after_focused_workspace ... ok
[INFO] [stdout] test open_new_task_uses_herdr_bin_path_to_open_manifest_popup ... ok
[INFO] [stdout] test agent_free_layout_does_not_resolve_configured_agent ... ok
[INFO] [stdout] test invalid_resolved_layout_removes_task_before_any_herdr_mutation ... ok
[INFO] [stdout] test pane_launchers_resolve_binary_from_plugin_root_not_pane_cwd ... ok
[INFO] [stdout] test removal_is_declared_only_as_an_action ... ok
[INFO] [stdout] test prompt_new_task_passes_explicit_repo_subset_to_mt ... ok
[INFO] [stdout] test failed_mt_rm_keeps_log_and_workspace_open ... ok
[INFO] [stdout] test rm_task_worker_removes_before_closing_workspace ... ok
[INFO] [stdout] test rm_task_worker_accepts_explicit_task_and_workspace_id ... ok
[INFO] [stdout] test custom_root_label_keeps_task_workspace_identity_for_contextual_rm ... ok
[INFO] [stdout] test failed_rollback_removal_reports_both_errors_and_keeps_workspace_open ... ok
[INFO] [stdout] test valid_rm_task_opens_the_confirmation_popup_with_task_and_workspace_id ... ok
[INFO] [stdout] test new_task_applies_layout_dynamic_ids_agent_path_and_env ... ok
[INFO] [stdout] test new_task_requires_herdr_bin_path ... ok
[INFO] [stdout] test self_consistent_context_from_another_multitrunk_root_is_rejected ... ok
[INFO] [stdout] test prompt_new_task_creates_workspace_in_process_and_focuses ... ok
[INFO] [stdout] test mt_process_failure_has_command_and_stderr ... ok
[INFO] [stdout] test renamed_workspace_context_is_rejected_without_side_effects ... ok
[INFO] [stdout] test prompt_new_task_rejects_empty_input_before_running_mt ... ok
[INFO] [stdout] test direct_popup_layout_rejects_later_operations_before_workspace_creation ... ok
[INFO] [stdout] test forged_unrelated_workspace_context_is_rejected_without_side_effects ... ok
[INFO] [stdout] test post_workspace_failure_removes_task_then_closes_workspace ... ok
[INFO] [stdout] test prompt_new_task_rejects_final_popup_pane_while_its_own_popup_is_active ... ok
[INFO] [stdout] test unresolved_agent_fails_before_herdr_mutation ... ok
[INFO] [stdout] test empty_dynamic_pane_command_starts_login_shell ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.32s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034", kill_on_drop: false }`
[INFO] [stdout] ab809119b7e1b4bd164469f2dcd7aa7e76974165555156705f85c076a48d2034
