[INFO] cloning repository https://github.com/kusold/otto
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kusold/otto" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkusold%2Fotto", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkusold%2Fotto'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] cd50cbe8738c8192fca833c44fc4e64d5a4f17b6
[INFO] testing kusold/otto against 1.95.0 for beta-1.96-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkusold%2Fotto" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/kusold/otto
[INFO] finished tweaking git repo https://github.com/kusold/otto
[INFO] tweaked toml for git repo https://github.com/kusold/otto written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/kusold/otto on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/kusold/otto 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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded clap v4.5.55
[INFO] [stderr]   Downloaded find-msvc-tools v0.1.8
[INFO] [stderr]   Downloaded zmij v1.0.17
[INFO] [stderr]   Downloaded cc v1.2.54
[INFO] [stderr]   Downloaded petname v2.0.2
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.34
[INFO] [stderr]   Downloaded clap_builder v4.5.55
[INFO] [stderr]   Downloaded zerocopy v0.8.34
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] dc57bc0caa2a7c58cf8798632cd82542e8013961912be94c35d21905408e0f5f
[INFO] running `Command { std: "docker" "start" "-a" "dc57bc0caa2a7c58cf8798632cd82542e8013961912be94c35d21905408e0f5f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "dc57bc0caa2a7c58cf8798632cd82542e8013961912be94c35d21905408e0f5f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dc57bc0caa2a7c58cf8798632cd82542e8013961912be94c35d21905408e0f5f", kill_on_drop: false }`
[INFO] [stdout] dc57bc0caa2a7c58cf8798632cd82542e8013961912be94c35d21905408e0f5f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cb36c3200a4379e950c1b251f25a42732fbc0fe4ae593ffe02476c8d9c1e01dc
[INFO] running `Command { std: "docker" "start" "-a" "cb36c3200a4379e950c1b251f25a42732fbc0fe4ae593ffe02476c8d9c1e01dc", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling zerocopy v0.8.34
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling zmij v1.0.17
[INFO] [stderr]    Compiling termcolor v1.4.1
[INFO] [stderr]    Compiling otto-agent-claude v0.1.2 (/opt/rustwide/workdir/crates/otto-agent-claude)
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling otto-beads v0.1.2 (/opt/rustwide/workdir/crates/otto-beads)
[INFO] [stderr]    Compiling clap_builder v4.5.55
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling otto-log v0.1.2 (/opt/rustwide/workdir/crates/otto-log)
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling petname v2.0.2
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling clap v4.5.55
[INFO] [stderr]    Compiling otto-tmux v0.1.2 (/opt/rustwide/workdir/crates/otto-tmux)
[INFO] [stderr]    Compiling otto-core v0.1.2 (/opt/rustwide/workdir/crates/otto-core)
[INFO] [stderr]    Compiling otto v0.1.2 (/opt/rustwide/workdir/crates/otto)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 24.05s
[INFO] running `Command { std: "docker" "inspect" "cb36c3200a4379e950c1b251f25a42732fbc0fe4ae593ffe02476c8d9c1e01dc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cb36c3200a4379e950c1b251f25a42732fbc0fe4ae593ffe02476c8d9c1e01dc", kill_on_drop: false }`
[INFO] [stdout] cb36c3200a4379e950c1b251f25a42732fbc0fe4ae593ffe02476c8d9c1e01dc
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5ae98fc7edefe5d18c5b4dd7e5e8215a03a3f3da02ecc7d23a88f5b0801e27e7
[INFO] running `Command { std: "docker" "start" "-a" "5ae98fc7edefe5d18c5b4dd7e5e8215a03a3f3da02ecc7d23a88f5b0801e27e7", kill_on_drop: false }`
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling otto-agent-claude v0.1.2 (/opt/rustwide/workdir/crates/otto-agent-claude)
[INFO] [stderr]    Compiling otto-log v0.1.2 (/opt/rustwide/workdir/crates/otto-log)
[INFO] [stderr]    Compiling otto-beads v0.1.2 (/opt/rustwide/workdir/crates/otto-beads)
[INFO] [stderr]    Compiling otto-tmux v0.1.2 (/opt/rustwide/workdir/crates/otto-tmux)
[INFO] [stderr]    Compiling otto-core v0.1.2 (/opt/rustwide/workdir/crates/otto-core)
[INFO] [stdout] warning: unused import: `kill_claude`
[INFO] [stdout]   --> crates/otto-agent-claude/tests/integration_tests.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     kill_claude, wait_for_claude_exit, wait_for_claude_exit_with_progress, ClaudeError,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling otto v0.1.2 (/opt/rustwide/workdir/crates/otto)
[INFO] [stdout] warning: unused variable: `status`
[INFO] [stdout]    --> crates/otto/src/main.rs:984:41
[INFO] [stdout]     |
[INFO] [stdout] 984 |             Some(Commands::Done { mode, status, .. }) => {
[INFO] [stdout]     |                                         ^^^^^^ help: try ignoring the field: `status: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 4.28s
[INFO] running `Command { std: "docker" "inspect" "5ae98fc7edefe5d18c5b4dd7e5e8215a03a3f3da02ecc7d23a88f5b0801e27e7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5ae98fc7edefe5d18c5b4dd7e5e8215a03a3f3da02ecc7d23a88f5b0801e27e7", kill_on_drop: false }`
[INFO] [stdout] 5ae98fc7edefe5d18c5b4dd7e5e8215a03a3f3da02ecc7d23a88f5b0801e27e7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] aa2ef1c010bcc3681f887b1ee89c0adae151e929f70ac8326dcf9dd0cfddf874
[INFO] running `Command { std: "docker" "start" "-a" "aa2ef1c010bcc3681f887b1ee89c0adae151e929f70ac8326dcf9dd0cfddf874", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `kill_claude`
[INFO] [stderr]   --> crates/otto-agent-claude/tests/integration_tests.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 |     kill_claude, wait_for_claude_exit, wait_for_claude_exit_with_progress, ClaudeError,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `otto-agent-claude` (test "integration_tests") generated 1 warning (run `cargo fix --test "integration_tests" -p otto-agent-claude` to apply 1 suggestion)
[INFO] [stderr] warning: unused variable: `status`
[INFO] [stderr]    --> crates/otto/src/main.rs:984:41
[INFO] [stderr]     |
[INFO] [stderr] 984 |             Some(Commands::Done { mode, status, .. }) => {
[INFO] [stderr]     |                                         ^^^^^^ help: try ignoring the field: `status: _`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `otto` (bin "otto" test) generated 1 warning (run `cargo fix --bin "otto" -p otto --tests` to apply 1 suggestion)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.16s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/otto-1beecb824b646ac2)
[INFO] [stdout] 
[INFO] [stdout] running 54 tests
[INFO] [stdout] test tests::test_args_parsing_attach_command ... ok
[INFO] [stdout] test tests::test_args_parsing_attach_with_window ... ok
[INFO] [stdout] test tests::test_args_parsing_done_command_completed ... ok
[INFO] [stdout] test tests::test_args_parsing_done_command_dry_run ... ok
[INFO] [stdout] test tests::test_args_parsing_done_command_escalated ... ok
[INFO] [stdout] test tests::test_args_parsing_done_command_nuke ... ok
[INFO] [stdout] test tests::test_args_parsing_done_command_with_status ... ok
[INFO] [stdout] test tests::test_args_parsing_spawn_command ... ok
[INFO] [stdout] test tests::test_args_parsing_start_command ... ok
[INFO] [stdout] test tests::test_args_parsing_spawn_no_workspace ... ok
[INFO] [stdout] test tests::test_args_parsing_attach_full_spec ... ok
[INFO] [stdout] test tests::test_args_parsing_workspace_remove ... ok
[INFO] [stdout] test tests::test_args_parsing_workspace_list ... ok
[INFO] [stdout] test tests::test_args_parsing_ralph_command ... ok
[INFO] [stdout] test tests::test_args_parsing_no_command ... ok
[INFO] [stdout] test tests::test_args_parsing_workspace_show ... ok
[INFO] [stdout] test tests::test_args_parsing_spawn_with_workspace ... ok
[INFO] [stdout] test tests::test_format_duration_hours_minutes_seconds ... ok
[INFO] [stdout] test tests::test_args_parsing_workspace_remove_force ... ok
[INFO] [stdout] test tests::test_args_parsing_done_command_with_issue ... ok
[INFO] [stdout] test tests::test_detect_ralph_prompt_in_current_repo ... ok
[INFO] [stdout] test tests::test_args_parsing_pre_flight_check ... ok
[INFO] [stdout] test tests::test_args_parsing_ralph_with_prompt ... ok
[INFO] [stdout] test tests::test_format_duration_minutes_and_seconds ... ok
[INFO] [stdout] test tests::test_format_duration_large_hours ... ok
[INFO] [stdout] test tests::test_format_duration_seconds_only ... ok
[INFO] [stdout] test tests::test_format_duration_zero ... ok
[INFO] [stdout] test tests::test_issue_validation_error_messages ... ok
[INFO] [stdout] test tests::test_args_parsing_workspace_clean_force ... ok
[INFO] [stdout] test tests::test_args_parsing_workspace_clean ... ok
[INFO] [stdout] test tests::test_format_duration_only_hours ... ok
[INFO] [stdout] test tests::test_format_duration_only_minutes ... ok
[INFO] [stdout] test tests::test_process_exists_always_running_pid ... ok
[INFO] [stdout] test tests::test_process_exists_zero_pid ... ok
[INFO] [stdout] test tests::test_process_exists_boundary_values ... ok
[INFO] [stdout] test tests::test_shutdown_count ... ok
[INFO] [stdout] test tests::test_waiting_animation_frame_consistent_length ... ok
[INFO] [stdout] test tests::test_waiting_animation_frame_dots_cycle ... ok
[INFO] [stdout] test tests::test_waiting_animation_frame_no_newlines ... ok
[INFO] [stdout] test tests::test_cleanup_workspace ... ok
[INFO] [stdout] test tests::test_copy_dir_recursive_nonexistent_source ... ok
[INFO] [stdout] test tests::test_process_exists_current_process ... ok
[INFO] [stdout] test tests::test_waiting_animation_frame_trailing_spaces_clear_longer_frames ... ok
[INFO] [stdout] test tests::test_workspace_info_content_format ... ok
[INFO] [stdout] test tests::test_workspace_branch_name_format ... ok
[INFO] [stdout] test tests::test_waiting_animation_frame_starts_with_carriage_return ... ok
[INFO] [stdout] test tests::test_workspace_default_path_format ... ok
[INFO] [stdout] test tests::test_copy_dir_recursive_with_files ... ok
[INFO] [stdout] test tests::test_copy_dir_recursive_creates_destination ... ok
[INFO] [stdout] test tests::test_signal_handler_setup ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/otto_agent_claude-f0ce930e9c644136)
[INFO] [stdout] test tests::test_copy_dir_recursive_empty ... ok
[INFO] [stdout] test tests::test_copy_dir_recursive_nested ... ok
[INFO] [stdout] test tests::test_process_exists_nonexistent_pid ... ok
[INFO] [stdout] test tests::test_shutdown_signaling ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 54 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 108 tests
[INFO] [stdout] test tests::test_build_agent_prompt_does_not_panic ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_empty ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_backtick ... ok
[INFO] [stdout] test tests::test_build_agent_prompt ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_all_printable_ascii ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_ampersand ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_very_long ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_carriage_return ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_multiple_special_chars ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_pipe ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_quotes ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_wildcard ... ok
[INFO] [stdout] test tests::test_claude_error_debug_formats ... ok
[INFO] [stdout] test tests::test_claude_error_debug_not_available ... ok
[INFO] [stdout] test tests::test_claude_error_debug_timeout ... ok
[INFO] [stdout] test tests::test_claude_error_display_all_variants ... ok
[INFO] [stdout] test tests::test_claude_error_display_empty_messages ... ok
[INFO] [stdout] test tests::test_claude_error_display_execution_failed ... ok
[INFO] [stdout] test tests::test_claude_error_display_long_messages ... ok
[INFO] [stdout] test tests::test_claude_error_display_not_available ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_newline_sequence ... ok
[INFO] [stdout] test tests::test_claude_error_display_messages ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_newlines ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_brackets ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_parenthesis ... ok
[INFO] [stdout] test tests::test_claude_error_display_start_failed ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_leading_trailing_spaces ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_comma ... ok
[INFO] [stdout] test tests::test_claude_error_source_none ... ok
[INFO] [stdout] test tests::test_claude_error_display_timeout ... ok
[INFO] [stdout] test tests::test_claude_error_timeout_source_none ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_dotdot ... ok
[INFO] [stdout] test tests::test_claude_error_display_unicode_messages ... ok
[INFO] [stdout] test tests::test_claude_error_display_with_colon ... ok
[INFO] [stdout] test tests::test_claude_error_implements_error ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_question_mark ... ok
[INFO] [stdout] test tests::test_claude_error_display_version_error ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_empty ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_empty_and_whitespace ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_colon ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_tabs ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_semicolon ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_multiple_quotes_in_row ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_multiple_single_quotes ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_preserves_content ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_period ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_semicolon ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_simple ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_slash ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_all_special_chars ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_at ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_backslash ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_equals ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_exclamation ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_hash ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_multiple_quotes ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_percent ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_unicode ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_spaces ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_special_chars ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_underscore ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_single_quote ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_tilde ... ok
[INFO] [stdout] test tests::test_get_prompt_default ... ok
[INFO] [stdout] test tests::test_get_prompt_does_not_panic ... ok
[INFO] [stdout] test tests::test_get_prompt_file_not_found ... ok
[INFO] [stdout] test tests::test_get_prompt_empty_file ... ok
[INFO] [stdout] test tests::test_get_prompt_file_with_various_encodings ... ok
[INFO] [stdout] test tests::test_get_claude_version_error_handling ... ok
[INFO] [stdout] test tests::test_get_claude_version_returns_result ... ok
[INFO] [stdout] test tests::test_get_prompt_from_file_preserves_internal_spaces ... ok
[INFO] [stdout] test tests::test_get_prompt_from_file_with_crlf ... ok
[INFO] [stdout] test tests::test_is_claude_available_returns_boolean ... ok
[INFO] [stdout] test tests::test_is_claude_process_one ... ok
[INFO] [stdout] test tests::test_get_prompt_from_file ... ok
[INFO] [stdout] test tests::test_is_claude_process_with_max_pid ... ok
[INFO] [stdout] test tests::test_get_prompt_from_file_with_only_bom ... ok
[INFO] [stdout] test tests::test_get_prompt_from_file_with_only_newlines ... ok
[INFO] [stdout] test tests::test_get_prompt_from_file_with_utf8_content ... ok
[INFO] [stdout] test tests::test_get_prompt_from_file_with_whitespace ... ok
[INFO] [stdout] test tests::test_get_prompt_from_file_with_bom ... ok
[INFO] [stdout] test tests::test_get_prompt_from_file_with_mixed_line_endings ... ok
[INFO] [stdout] test tests::test_is_claude_process_nonexistent ... ok
[INFO] [stdout] test tests::test_is_claude_process_zero ... ok
[INFO] [stdout] test tests::test_is_claude_available_false_for_nonexistent_command ... ok
[INFO] [stdout] test tests::test_is_claude_process_with_current_pid ... ok
[INFO] [stdout] test tests::test_otto_agent_prompt_structure ... ok
[INFO] [stdout] test tests::test_otto_agent_prompt_constant ... ok
[INFO] [stdout] test tests::test_is_claude_process_with_special_pids ... ok
[INFO] [stdout] test tests::test_is_claude_available_with_version_check ... ok
[INFO] [stdout] test tests::test_wait_for_claude_exit_with_progress_abort_does_not_kill ... ok
[INFO] [stdout] test tests::test_is_claude_process_with_large_number ... ok
[INFO] [stdout] test tests::test_wait_for_claude_exit_zero_timeout ... ok
[INFO] [stdout] test tests::test_wait_for_claude_exit_with_progress_zero_timeout_with_callbacks ... ok
[INFO] [stdout] test tests::test_wait_for_claude_exit_with_progress_progress_callback_called ... ok
[INFO] [stdout] test tests::test_build_agent_prompt_with_null ... ok
[INFO] [stdout] test tests::test_claude_error_source_for_variants_with_messages ... ok
[INFO] [stdout] test tests::test_escape_shell_arg_with_plus ... ok
[INFO] [stdout] test tests::test_wait_for_claude_exit_immediate_when_not_running ... ok
[INFO] [stdout] test tests::test_is_claude_running_returns_boolean ... ok
[INFO] [stdout] test tests::test_wait_for_claude_exit_with_progress_only_abort_callback ... ok
[INFO] [stdout] test tests::test_wait_for_claude_exit_short_timeout ... ok
[INFO] [stdout] test tests::test_wait_for_claude_exit_with_progress_only_progress_callback ... ok
[INFO] [stdout] test tests::test_wait_for_claude_exit_with_progress_none_callbacks ... ok
[INFO] [stdout] test tests::test_wait_for_claude_exit_with_progress_both_callbacks ... ok
[INFO] [stdout] test tests::test_is_claude_running_false_when_no_processes ... ok
[INFO] [stdout] test tests::test_wait_for_claude_exit_with_progress_timeout_path ... ok
[INFO] [stdout] test tests::test_is_claude_running_consistency ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 108 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.25s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_tests.rs (/opt/rustwide/target/debug/deps/integration_tests-84bfda59086c67b2)
[INFO] [stdout] 
[INFO] [stdout] running 27 tests
[INFO] [stdout] test test_build_agent_prompt_integration ... ok
[INFO] [stdout] test test_build_agent_prompt_with_emoji ... ok
[INFO] [stdout] test test_claude_error_display_with_empty_messages ... ok
[INFO] [stdout] test test_claude_error_debug ... ok
[INFO] [stdout] test test_claude_execution_failed ... ok
[INFO] [stdout] test test_escape_shell_arg_with_backticks ... ok
[INFO] [stdout] test test_escape_shell_arg_with_newlines_in_middle ... ok
[INFO] [stdout] test test_build_agent_prompt_with_unicode ... ok
[INFO] [stdout] test test_escape_shell_arg_with_pipes ... ok
[INFO] [stdout] test test_claude_error_display ... ok
[INFO] [stdout] test test_get_prompt_with_file_containing_only_whitespace ... ok
[INFO] [stdout] test test_claude_error_error_trait ... ok
[INFO] [stdout] test test_get_prompt_from_file_with_special_chars ... ok
[INFO] [stdout] test test_is_claude_available ... ok
[INFO] [stdout] test test_get_prompt_from_temp_file ... ok
[INFO] [stdout] test test_get_claude_version ... ok
[INFO] [stdout] test test_is_claude_process_with_fake_cmdline ... ok
[INFO] [stdout] test test_claude_error_start_failed ... ok
[INFO] [stdout] test test_wait_for_claude_exit_short_timeout ... ok
[INFO] [stdout] test test_wait_for_claude_exit_with_immediate_abort ... ok
[INFO] [stdout] test test_wait_for_claude_exit_immediate ... ok
[INFO] [stdout] test test_wait_for_claude_exit_with_progress_and_no_abort ... ok
[INFO] [stdout] test test_is_claude_running ... ok
[INFO] [stdout] test test_wait_for_claude_exit_with_progress_callback ... ok
[INFO] [stdout] test test_wait_for_claude_exit_with_progress_no_callback ... ok
[INFO] [stdout] test test_wait_for_claude_exit_with_abort_callback ... ok
[INFO] [stdout] test test_wait_for_claude_exit_with_both_callbacks ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 27 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/otto_beads-2ab631554f173d4c)
[INFO] [stdout] 
[INFO] [stdout] running 23 tests
[INFO] [stdout] test tests::test_beads_error_display ... ok
[INFO] [stdout] test tests::test_beads_error_downcasting ... ok
[INFO] [stdout] test tests::test_beads_result_type_exists ... ok
[INFO] [stdout] test tests::test_beads_result_with_ok ... ok
[INFO] [stdout] test tests::test_error_equality ... ok
[INFO] [stdout] test tests::test_beads_error_impls ... ok
[INFO] [stdout] test tests::test_error_message_formatting ... ok
[INFO] [stdout] test tests::test_error_variants_are_exhaustive ... ok
[INFO] [stdout] test tests::test_beads_error_source ... ok
[INFO] [stdout] test tests::test_beads_not_available_error_code ... ok
[INFO] [stdout] test tests::test_beads_result_map_and_or_else ... ok
[INFO] [stdout] test tests::test_beads_result_variants ... ok
[INFO] [stdout] test tests::test_beads_result_with_err ... ok
[INFO] [stdout] test tests::test_error_matching ... ok
[INFO] [stdout] test tests::test_has_ready_tasks_detects_initialized_error ... ok
[INFO] [stdout] test tests::test_has_ready_tasks_function_exists ... ok
[INFO] [stdout] test tests::test_has_ready_tasks_parses_output_correctly ... ok
[INFO] [stdout] test tests::test_has_ready_tasks_return_variants ... ok
[INFO] [stdout] test tests::test_not_initialized_error_code ... ok
[INFO] [stdout] test tests::test_execution_failed_error_code ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/otto_core-bb7e919774b93e40)
[INFO] [stdout] test tests::test_has_ready_tasks_returns_result ... ok
[INFO] [stdout] test tests::test_has_ready_tasks_returns_bool_when_ok ... ok
[INFO] [stdout] test tests::test_has_ready_tasks_checks_beads_availability ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 43 tests
[INFO] [stdout] test tests::test_agent_error_display_agent_start_failed ... ok
[INFO] [stdout] test tests::test_agent_error_display_agent_timeout ... ok
[INFO] [stdout] test tests::test_agent_error_display_prompt_file_error ... ok
[INFO] [stdout] test tests::test_agent_error_display_claude_not_available ... ok
[INFO] [stdout] test tests::test_agent_error_display_tmux_error ... ok
[INFO] [stdout] test tests::test_agent_error_source ... ok
[INFO] [stdout] test tests::test_agent_error_variants_exhaustive ... ok
[INFO] [stdout] test tests::test_agent_result_type_alias ... ok
[INFO] [stdout] test tests::test_cleanup_stuck_windows_with_empty_states ... ok
[INFO] [stdout] test tests::test_cleanup_stuck_windows_with_existing_states ... ok
[INFO] [stdout] test tests::test_cleanup_stuck_windows_preserves_states ... ok
[INFO] [stdout] test tests::test_format_duration_hours_and_minutes ... ok
[INFO] [stdout] test tests::test_format_duration_hours_and_seconds ... ok
[INFO] [stdout] test tests::test_format_duration_hours_minutes_seconds ... ok
[INFO] [stdout] test tests::test_format_duration_edge_cases ... ok
[INFO] [stdout] test tests::test_default_timeout ... ok
[INFO] [stdout] test tests::test_format_duration_hours_only ... ok
[INFO] [stdout] test tests::test_format_duration_minutes_and_seconds ... ok
[INFO] [stdout] test tests::test_format_duration_only_minutes ... ok
[INFO] [stdout] test tests::test_format_duration_seconds_only ... ok
[INFO] [stdout] test tests::test_format_duration_zero ... ok
[INFO] [stdout] test tests::test_from_claude_error_not_available ... ok
[INFO] [stdout] test tests::test_from_claude_error_timeout ... ok
[INFO] [stdout] test tests::test_from_claude_error_start_failed ... ok
[INFO] [stdout] test tests::test_from_claude_error_version_error ... ok
[INFO] [stdout] test tests::test_from_tmux_error ... ok
[INFO] [stdout] test tests::test_launch_agent_default_wrapper ... ok
[INFO] [stdout] test tests::test_is_claude_active_in_pane_with_custom_pane ... ok
[INFO] [stdout] test tests::test_window_state_defaults ... ok
[INFO] [stdout] test tests::test_from_claude_error_execution_failed ... ok
[INFO] [stdout] test tests::test_is_claude_active_in_pane_with_default_pane ... ok
[INFO] [stdout] test tests::test_window_state_hash_updates ... ok
[INFO] [stdout] test tests::test_window_state_with_hash ... ok
[INFO] [stdout] test tests::test_wait_with_progress_with_progress_callback ... ok
[INFO] [stdout] test tests::test_wait_for_claude_in_pane_immediate_timeout ... ok
[INFO] [stdout] test tests::test_wait_for_claude_in_pane_timeout_duration ... ok
[INFO] [stdout] test tests::test_is_claude_active_in_pane_with_valid_pane ... ok
[INFO] [stdout] test tests::test_wait_with_progress_with_both_callbacks ... ok
[INFO] [stdout] test tests::test_wait_with_progress_without_callbacks ... ok
[INFO] [stdout] test tests::test_wait_with_progress_with_abort_callback ... ok
[INFO] [stdout] test tests::test_log_watchdog_timestamp_format ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/otto_log-fe0f56a4fd6832b1)
[INFO] [stdout] test tests::test_log_watchdog_creates_file ... ok
[INFO] [stdout] test tests::test_log_watchdog_multiple_messages ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 43 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 27 tests
[INFO] [stderr] ✗ Error: 
[INFO] [stderr] ✗ Error: Error with special chars: 	
[INFO] [stderr] 
"'\
[INFO] [stderr] ✗ Error: Test error message
[INFO] [stderr] ✗ Error: error
[INFO] [stderr] ⚠ Warning: warning
[INFO] [stderr] ℹ Info: info
[INFO] [stderr] → progress✗ Error: This is a very long error message that spans multiple lines and contains lots of information about what went wrong. This is a very long error message that spans multiple lines and contains lots of information about what went wrong. This is a very long error message that spans multiple lines and contains lots of information about what went wrong. This is a very long error message that spans multiple lines and contains lots of information about what went wrong. This is a very long error message that spans multiple lines and contains lots of information about what went wrong. This is a very long error message that spans multiple lines and contains lots of information about what went wrong. This is a very long error message that spans multiple lines and contains lots of information about what went wrong. This is a very long error message that spans multiple lines and contains lots of information about what went wrong. This is a very long error message that spans multiple lines and contains lots of information about what went wrong. This is a very long error message that spans multiple lines and contains lots of information about what went wrong. 
[INFO] [stderr] ✗ Error: Error with unicode: 🚨 💥 ⚠️ℹ Info: 
[INFO] [stderr] ✗ Error: Error
[INFO] [stderr] with
[INFO] [stderr] newlines
[INFO] [stderr] ⚠ Warning: Warning
[INFO] [stderr] with
[INFO] [stderr] newlines
[INFO] [stderr] Test info messageℹ Info: 
[INFO] [stderr] Info
[INFO] [stderr] with
[INFO] [stderr] newlines
[INFO] [stderr] ℹ Info: 
[INFO] [stdout] test color::tests::test_print_error_function_exists ... ok
[INFO] [stderr] ℹ Info: This is a very long info message that spans multiple lines and contains lots of information about what is happening. This is a very long info message that spans multiple lines and contains lots of information about what is happening. This is a very long info message that spans multiple lines and contains lots of information about what is happening. This is a very long info message that spans multiple lines and contains lots of information about what is happening. This is a very long info message that spans multiple lines and contains lots of information about what is happening. This is a very long info message that spans multiple lines and contains lots of information about what is happening. This is a very long info message that spans multiple lines and contains lots of information about what is happening. This is a very long info message that spans multiple lines and contains lots of information about what is happening. This is a very long info message that spans multiple lines and contains lots of information about what is happening. This is a very long info message that spans multiple lines and contains lots of information about what is happening. 
[INFO] [stdout] test color::tests::test_print_error_with_empty_message ... ok
[INFO] [stderr] ℹ Info: Info with special chars: 	
[INFO] [stdout] test color::tests::test_print_error_with_special_chars ... ok
[INFO] [stderr] 
"'\
[INFO] [stdout] test color::tests::test_print_error_doesnt_crash ... ok
[INFO] [stderr] ℹ Info: Info with unicode: ℹ️ 💡 📝
[INFO] [stdout] test color::tests::test_all_print_functions_are_callable ... ok
[INFO] [stderr] → ✗ Error: First error
[INFO] [stdout] test color::tests::test_print_error_with_long_message ... ok
[INFO] [stderr] ⚠ Warning: Second warning
[INFO] [stdout] test color::tests::test_print_error_with_unicode ... ok
[INFO] [stderr] → ℹ Info: Third info
[INFO] [stdout] test color::tests::test_print_info_doesnt_crash ... ok
[INFO] [stderr] → Fourth progress→ Progress with special chars: 	
[INFO] [stdout] test color::tests::test_print_functions_with_newlines ... ok
[INFO] [stderr] 
"'\This is a very long progress message that shows the current status of the operation. This is a very long progress message that shows the current status of the operation. This is a very long progress message that shows the current status of the operation. This is a very long progress message that shows the current status of the operation. This is a very long progress message that shows the current status of the operation. This is a very long progress message that shows the current status of the operation. This is a very long progress message that shows the current status of the operation. This is a very long progress message that shows the current status of the operation. This is a very long progress message that shows the current status of the operation. This is a very long progress message that shows the current status of the operation. ⚠ Warning: 
[INFO] [stdout] test color::tests::test_print_info_function_exists ... ok
[INFO] [stderr] → Test progress message⚠ Warning: Test warning message
[INFO] [stdout] test color::tests::test_print_info_with_empty_message ... ok
[INFO] [stderr] ⚠ Warning: This is a very long warning message that spans multiple lines and contains lots of information about what might go wrong. This is a very long warning message that spans multiple lines and contains lots of information about what might go wrong. This is a very long warning message that spans multiple lines and contains lots of information about what might go wrong. This is a very long warning message that spans multiple lines and contains lots of information about what might go wrong. This is a very long warning message that spans multiple lines and contains lots of information about what might go wrong. This is a very long warning message that spans multiple lines and contains lots of information about what might go wrong. This is a very long warning message that spans multiple lines and contains lots of information about what might go wrong. This is a very long warning message that spans multiple lines and contains lots of information about what might go wrong. This is a very long warning message that spans multiple lines and contains lots of information about what might go wrong. This is a very long warning message that spans multiple lines and contains lots of information about what might go wrong. 
[INFO] [stdout] test color::tests::test_print_info_with_long_message ... ok
[INFO] [stderr] → Progress with unicode: ⏳ 🚀 📊⚠ Warning: Warning with special chars: 	
[INFO] [stdout] test color::tests::test_print_info_with_special_chars ... ok
[INFO] [stderr] 
"'\
[INFO] [stdout] test color::tests::test_print_progress_function_exists ... ok
[INFO] [stderr] ⚠ Warning: Warning with unicode: ⚠️ 🚸 🔔
[INFO] [stdout] test color::tests::test_print_info_with_unicode ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/otto_tmux-15dc90ef806c76cf)
[INFO] [stdout] test color::tests::test_print_progress_with_empty_message ... ok
[INFO] [stdout] test color::tests::test_multiple_prints_in_sequence ... ok
[INFO] [stdout] test color::tests::test_print_progress_with_special_chars ... ok
[INFO] [stdout] test color::tests::test_print_progress_with_long_message ... ok
[INFO] [stdout] test color::tests::test_print_warning_with_empty_message ... ok
[INFO] [stdout] test color::tests::test_print_progress_doesnt_crash ... ok
[INFO] [stdout] test color::tests::test_print_warning_doesnt_crash ... ok
[INFO] [stdout] test color::tests::test_print_warning_function_exists ... ok
[INFO] [stdout] test color::tests::test_print_warning_with_long_message ... ok
[INFO] [stdout] test color::tests::test_print_progress_with_unicode ... ok
[INFO] [stdout] test color::tests::test_print_warning_with_special_chars ... ok
[INFO] [stdout] test color::tests::test_print_warning_with_unicode ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 27 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 43 tests
[INFO] [stdout] test tests::test_attach_to_window_function_exists ... ok
[INFO] [stdout] test tests::test_capture_pane_function_exists ... ok
[INFO] [stdout] test tests::test_create_agent_window_function_exists ... ok
[INFO] [stdout] test tests::test_all_error_variants_exist ... ok
[INFO] [stdout] test tests::test_agent_window_prefix_constant ... ok
[INFO] [stdout] test tests::test_create_named_window_function_exists ... ok
[INFO] [stdout] test tests::test_create_session_function_exists ... ok
[INFO] [stdout] test tests::test_constants_are_correct ... ok
[INFO] [stdout] test tests::test_error_matching ... ok
[INFO] [stdout] test tests::test_error_messages_are_descriptive ... ok
[INFO] [stdout] test tests::test_generate_agent_window_name_format ... ok
[INFO] [stdout] test tests::test_ensure_otto_session_function_exists ... ok
[INFO] [stdout] test tests::test_get_or_create_agent_window_function_exists ... ok
[INFO] [stdout] test tests::test_ensure_session_function_exists ... ok
[INFO] [stdout] test tests::test_get_pane_command_function_exists ... ok
[INFO] [stdout] test tests::test_generate_agent_window_names_unique ... ok
[INFO] [stdout] test tests::test_find_idle_agent_window_function_exists ... ok
[INFO] [stdout] test tests::test_get_pane_pid_function_exists ... ok
[INFO] [stdout] test tests::test_send_command_function_exists ... ok
[INFO] [stdout] test tests::test_is_tmux_available_returns_bool ... ok
[INFO] [stdout] test tests::test_list_windows_by_pattern_function_exists ... ok
[INFO] [stdout] test tests::test_list_windows_by_pattern_starts_with_not_contains ... ok
[INFO] [stdout] test tests::test_list_windows_function_exists ... ok
[INFO] [stdout] test tests::test_multiple_error_variants_match ... ok
[INFO] [stdout] test tests::test_send_command_to_window_function_exists ... ok
[INFO] [stdout] test tests::test_process_name_check_function_exists ... ok
[INFO] [stdout] test tests::test_send_otto_command_function_exists ... ok
[INFO] [stdout] test tests::test_kill_window_function_exists ... ok
[INFO] [stdout] test tests::test_pane_spec_edge_cases ... ok
[INFO] [stdout] test tests::test_tmux_result_type_exists ... ok
[INFO] [stdout] test tests::test_tmux_result_with_err ... ok
[INFO] [stdout] test tests::test_pane_spec_format_validation ... ok
[INFO] [stdout] test tests::test_session_exists_function_exists ... ok
[INFO] [stdout] test tests::test_session_name_constant ... ok
[INFO] [stdout] test tests::test_tmux_result_with_ok ... ok
[INFO] [stdout] test tests::test_tmux_error_impls ... ok
[INFO] [stdout] test tests::test_get_pane_spec_format ... ok
[INFO] [stdout] test tests::test_tmux_result_map_and_or_else ... ok
[INFO] [stdout] test tests::test_tmux_error_display ... ok
[INFO] [stdout] test tests::test_tmux_result_operations ... ok
[INFO] [stdout] test tests::test_window_exists_function_exists ... ok
[INFO] [stdout] test tests::test_window_name_generation_consistency ... ok
[INFO] [stdout] test tests::test_invalid_pane_spec_rejected ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_invalid_pane_spec_rejected stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::test_invalid_pane_spec_rejected' (370) panicked at crates/otto-tmux/src/lib.rs:876:9:
[INFO] [stdout] assertion failed: matches!(result, Err(TmuxError::InvalidPaneSpec(_)))
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5bd853cb004a - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5bd853cb004a - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::trace_unsynchronized::<std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5bd853cb004a - std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5bd853cb004a - <<std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c1f1a4ba060b9bfa]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5bd853cc445a - <core[c1f1a4ba060b9bfa]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5bd853cc445a - core[c1f1a4ba060b9bfa]::fmt::write
[INFO] [stdout]    6:     0x5bd853cb48d2 - std[e28293b1aa0f68bd]::io::default_write_fmt::<alloc[fdfd2bd8633a6659]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5bd853cb48d2 - <alloc[fdfd2bd8633a6659]::vec::Vec<u8> as std[e28293b1aa0f68bd]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5bd853c8f17f - <std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5bd853c8f17f - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5bd853ca85b9 - std[e28293b1aa0f68bd]::panicking::default_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5bd853c098ec - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x5bd853c098ec - test[273d7611820c9051]::test_main_with_exit_callback::<test[273d7611820c9051]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5bd853ca8772 - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x5bd853ca8772 - std[e28293b1aa0f68bd]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5bd853c8f26a - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x5bd853c86bd9 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace::<std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5bd853c8ff4d - __rustc[b7974e8690430dd9]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5bd853cc4d0c - core[c1f1a4ba060b9bfa]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5bd853cc4cd2 - core[c1f1a4ba060b9bfa]::panicking::panic
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x5bd853beec0a - otto_tmux::tests::test_invalid_pane_spec_rejected::hafe36278de9b23a5
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/otto-tmux/src/lib.rs:876:9
[INFO] [stdout]   21:     0x5bd853beed07 - otto_tmux::tests::test_invalid_pane_spec_rejected::{{closure}}::hf028b6baaa84cc72
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/otto-tmux/src/lib.rs:873:41
[INFO] [stdout]   22:     0x5bd853bfa8a6 - core::ops::function::FnOnce::call_once::h44ae90697803a54d
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x5bd853bfd9cb - <fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5bd853bfd9cb - test[273d7611820c9051]::__rust_begin_short_backtrace::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:663:18
[INFO] [stdout]   25:     0x5bd853c0a3bb - test[273d7611820c9051]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:74
[INFO] [stdout]   26:     0x5bd853c0a3bb - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   27:     0x5bd853c0a3bb - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x5bd853c0a3bb - std[e28293b1aa0f68bd]::panicking::catch_unwind::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x5bd853c0a3bb - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x5bd853c0a3bb - test[273d7611820c9051]::run_test_in_process
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:27
[INFO] [stdout]   31:     0x5bd853c0a3bb - test[273d7611820c9051]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:607:43
[INFO] [stdout]   32:     0x5bd853c05ad4 - test[273d7611820c9051]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:637:41
[INFO] [stdout]   33:     0x5bd853c05ad4 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_begin_short_backtrace::<test[273d7611820c9051]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x5bd853c0cfc2 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   35:     0x5bd853c0cfc2 - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   36:     0x5bd853c0cfc2 - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x5bd853c0cfc2 - std[e28293b1aa0f68bd]::panicking::catch_unwind::<(), core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x5bd853c0cfc2 - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x5bd853c0cfc2 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   40:     0x5bd853c0cfc2 - <std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1} as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x5bd853caf95f - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn core[c1f1a4ba060b9bfa]::ops::function::FnOnce<(), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   42:     0x5bd853caf95f - <std[e28293b1aa0f68bd]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   43:     0x7bdf34117aa4 - <unknown>
[INFO] [stdout]   44:     0x7bdf341a4a64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tests::test_invalid_pane_spec_rejected
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 42 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `-p otto-tmux --lib`
[INFO] running `Command { std: "docker" "inspect" "aa2ef1c010bcc3681f887b1ee89c0adae151e929f70ac8326dcf9dd0cfddf874", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aa2ef1c010bcc3681f887b1ee89c0adae151e929f70ac8326dcf9dd0cfddf874", kill_on_drop: false }`
[INFO] [stdout] aa2ef1c010bcc3681f887b1ee89c0adae151e929f70ac8326dcf9dd0cfddf874
