[INFO] cloning repository https://github.com/Cassin01/multi_agent_control_tower
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Cassin01/multi_agent_control_tower" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCassin01%2Fmulti_agent_control_tower", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCassin01%2Fmulti_agent_control_tower'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1a102f3d66d772c6e412e2fcc8175f0ae4a0d49e
[INFO] testing Cassin01/multi_agent_control_tower against try#0abe69e6c16114311cc2700e972492e64d69c28f for pr-154065
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCassin01%2Fmulti_agent_control_tower" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Cassin01/multi_agent_control_tower
[INFO] finished tweaking git repo https://github.com/Cassin01/multi_agent_control_tower
[INFO] tweaked toml for git repo https://github.com/Cassin01/multi_agent_control_tower written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Cassin01/multi_agent_control_tower on toolchain 0abe69e6c16114311cc2700e972492e64d69c28f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Cassin01/multi_agent_control_tower 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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 29fc3bfc8d261fe74c4b7ea5d4625f3468d9302474a233f8119cd5a35e2afc19
[INFO] running `Command { std: "docker" "start" "-a" "29fc3bfc8d261fe74c4b7ea5d4625f3468d9302474a233f8119cd5a35e2afc19", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "29fc3bfc8d261fe74c4b7ea5d4625f3468d9302474a233f8119cd5a35e2afc19", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "29fc3bfc8d261fe74c4b7ea5d4625f3468d9302474a233f8119cd5a35e2afc19", kill_on_drop: false }`
[INFO] [stdout] 29fc3bfc8d261fe74c4b7ea5d4625f3468d9302474a233f8119cd5a35e2afc19
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 877289cba3d5efab1bcd9d60db0467345ae716b0b8bb654461f0bdfa3c897c59
[INFO] running `Command { std: "docker" "start" "-a" "877289cba3d5efab1bcd9d60db0467345ae716b0b8bb654461f0bdfa3c897c59", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling ryu v1.0.22
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling zmij v1.0.18
[INFO] [stderr]    Compiling futures-io v0.3.31
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling deranged v0.5.5
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling cassowary v0.3.0
[INFO] [stderr]    Compiling clap_lex v0.7.7
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling clap_builder v4.5.56
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling time v0.3.46
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling simdutf8 v0.1.5
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling ratatui v0.29.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling tracing-appender v0.2.4
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling minijinja v2.15.1
[INFO] [stderr]    Compiling clap v4.5.56
[INFO] [stderr]    Compiling xxhash-rust v0.8.15
[INFO] [stderr]    Compiling ansi-to-tui v7.0.0
[INFO] [stderr]    Compiling macot v0.1.10 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 17s
[INFO] running `Command { std: "docker" "inspect" "877289cba3d5efab1bcd9d60db0467345ae716b0b8bb654461f0bdfa3c897c59", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "877289cba3d5efab1bcd9d60db0467345ae716b0b8bb654461f0bdfa3c897c59", kill_on_drop: false }`
[INFO] [stdout] 877289cba3d5efab1bcd9d60db0467345ae716b0b8bb654461f0bdfa3c897c59
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 23e7bf71cd3e4599efb2804384bc424c8c55b5d8842b5ffbcff1b7fcfd81ac04
[INFO] running `Command { std: "docker" "start" "-a" "23e7bf71cd3e4599efb2804384bc424c8c55b5d8842b5ffbcff1b7fcfd81ac04", kill_on_drop: false }`
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling zerocopy v0.8.38
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling proptest v1.9.0
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling macot v0.1.10 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling tokio-test v0.4.5
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 51s
[INFO] running `Command { std: "docker" "inspect" "23e7bf71cd3e4599efb2804384bc424c8c55b5d8842b5ffbcff1b7fcfd81ac04", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "23e7bf71cd3e4599efb2804384bc424c8c55b5d8842b5ffbcff1b7fcfd81ac04", kill_on_drop: false }`
[INFO] [stdout] 23e7bf71cd3e4599efb2804384bc424c8c55b5d8842b5ffbcff1b7fcfd81ac04
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 43d9b64ef8fd0b0e57d6c23a049165f09322b575da0cf00007b32aa93674b068
[INFO] running `Command { std: "docker" "start" "-a" "43d9b64ef8fd0b0e57d6c23a049165f09322b575da0cf00007b32aa93674b068", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.27s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/macot-e2b036b6e360b85f)
[INFO] [stdout] 
[INFO] [stdout] running 813 tests
[INFO] [stdout] test config::loader::tests::config_default_has_four_experts ... ok
[INFO] [stdout] test config::loader::tests::config_expert_has_role_field ... ok
[INFO] [stdout] test config::loader::tests::config_expert_role_serde_with_role ... ok
[INFO] [stdout] test commands::common::tests::prepare_expert_files_with_role_uses_provided_role ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_by_name_case_insensitive ... ok
[INFO] [stdout] test commands::common::tests::prepare_expert_files_uses_role_not_name ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_name_valid ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_returns_correct_expert ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_name_fallback ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_role_valid ... ok
[INFO] [stdout] test config::loader::tests::config_load_returns_default_when_file_missing ... ok
[INFO] [stdout] test config::loader::tests::config_resolve_expert_id_by_name ... ok
[INFO] [stdout] test config::loader::tests::config_resolve_expert_id_by_number ... ok
[INFO] [stdout] test config::loader::tests::config_role_instructions_path_defaults_to_config_dir ... ok
[INFO] [stdout] test config::loader::tests::config_resolve_expert_id_invalid ... ok
[INFO] [stdout] test config::loader::tests::config_loads_from_yaml_file ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_returns_none_for_invalid_id ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_role_fallback ... ok
[INFO] [stdout] test config::loader::tests::config_scheduler_mode_defaults_to_dag ... ok
[INFO] [stdout] test config::loader::tests::config_expert_role_serde_without_role_defaults ... ok
[INFO] [stdout] test config::loader::tests::config_scheduler_mode_missing_from_yaml_defaults_to_dag ... ok
[INFO] [stdout] test config::loader::tests::config_scheduler_mode_sequential_from_yaml ... ok
[INFO] [stdout] test config::loader::tests::config_serializes_to_yaml ... ok
[INFO] [stdout] test config::loader::tests::config_session_hash_differs_for_different_paths ... ok
[INFO] [stdout] test config::loader::tests::config_session_hash_is_deterministic ... ok
[INFO] [stdout] test config::loader::tests::config_status_file_path_format ... ok
[INFO] [stdout] test config::loader::tests::config_session_name_format ... ok
[INFO] [stdout] test config::loader::tests::config_with_project_path_sets_derived_paths ... ok
[INFO] [stdout] test config::loader::tests::feature_execution_config_defaults ... ok
[INFO] [stdout] test config::loader::tests::config_with_num_experts_expands_list ... ok
[INFO] [stdout] test config::loader::tests::feature_execution_config_in_default_config ... ok
[INFO] [stdout] test config::loader::tests::feature_execution_config_partial_yaml_override ... ok
[INFO] [stdout] test context::expert::tests::expert_context_add_file_analysis_appends ... ok
[INFO] [stdout] test context::expert::tests::expert_context_clear_knowledge_resets ... ok
[INFO] [stdout] test context::expert::tests::expert_context_backward_compatible_deserialization_without_worktree ... ok
[INFO] [stdout] test context::expert::tests::expert_context_clear_worktree_resets_fields_to_none ... ok
[INFO] [stdout] test context::expert::tests::expert_context_deserializes_from_yaml ... ok
[INFO] [stdout] test context::expert::tests::expert_context_deserializes_worktree_fields_from_yaml ... ok
[INFO] [stdout] test context::expert::tests::expert_context_new_creates_with_defaults ... ok
[INFO] [stdout] test context::expert::tests::expert_context_new_has_no_worktree ... ok
[INFO] [stdout] test context::expert::tests::expert_context_serializes_to_yaml ... ok
[INFO] [stdout] test context::expert::tests::expert_context_set_worktree_stores_branch_and_path ... ok
[INFO] [stdout] test config::loader::tests::config_with_num_experts_adjusts_list ... ok
[INFO] [stdout] test context::expert::tests::expert_context_serializes_worktree_fields_to_yaml ... ok
[INFO] [stdout] test context::role::tests::available_roles_names ... ok
[INFO] [stdout] test context::role::tests::available_roles_core_excluded ... ok
[INFO] [stdout] test context::role::tests::role_info_display_name_title_case_with_separators ... ok
[INFO] [stdout] test context::role::tests::available_roles_custom_overrides_default ... ok
[INFO] [stdout] test context::role::tests::session_expert_roles_set_and_get_role ... ok
[INFO] [stdout] test context::expert::tests::expert_context_clear_worktree_calls_touch ... ok
[INFO] [stdout] test context::role::tests::session_expert_roles_new_creates_empty_assignments ... ok
[INFO] [stdout] test context::role::tests::session_expert_roles_update_existing_role ... ok
[INFO] [stdout] test context::role::tests::available_roles_from_empty_path_includes_defaults ... ok
[INFO] [stdout] test context::shared::tests::decision_with_affects_experts_sets_list ... ok
[INFO] [stdout] test context::role::tests::role_info_display_name_capitalized ... ok
[INFO] [stdout] test context::shared::tests::decision_new_creates_with_timestamp ... ok
[INFO] [stdout] test context::expert::tests::expert_context_set_session_id_updates_context ... ok
[INFO] [stdout] test context::expert::tests::expert_context_set_worktree_calls_touch ... ok
[INFO] [stdout] test context::shared::tests::shared_context_get_decisions_by_topic_filters_case_insensitive ... ok
[INFO] [stdout] test context::shared::tests::shared_context_serializes_to_yaml ... ok
[INFO] [stdout] test context::shared::tests::shared_context_get_decisions_for_expert_filters_correctly ... ok
[INFO] [stdout] test context::shared::tests::shared_context_add_decision_appends ... ok
[INFO] [stdout] test context::shared::tests::shared_context_deserializes_from_yaml ... ok
[INFO] [stdout] test context::store::tests::context_store_load_expert_context_returns_none_when_missing ... ok
[INFO] [stdout] test context::store::tests::context_store_init_session_creates_directories ... ok
[INFO] [stdout] test context::store::tests::context_store_save_and_load_session_roles ... ok
[INFO] [stdout] test context::store::tests::context_store_cleanup_session_removes_all ... ok
[INFO] [stdout] test context::store::tests::context_store_add_decision_persists ... ok
[INFO] [stdout] test context::store::tests::context_store_load_session_roles_returns_none_when_missing ... ok
[INFO] [stdout] test context::store::tests::context_store_session_exists_returns_correct_value ... ok
[INFO] [stdout] test context::store::tests::context_store_save_and_load_expert_context ... ok
[INFO] [stdout] test experts::registry::tests::find_by_role_returns_all_matching_experts ... ok
[INFO] [stdout] test experts::registry::tests::find_by_role_str_matches_role_strings ... ok
[INFO] [stdout] test experts::registry::tests::get_all_experts_returns_all_registered ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_by_role_filters_by_role_and_state ... ok
[INFO] [stdout] test context::store::tests::context_store_list_sessions_returns_all ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_by_role_str_filters_by_role_string_and_state ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_by_role_str_in_worktree_excludes_non_idle ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_by_role_str_in_worktree_none_returns_only_main_repo ... ok
[INFO] [stdout] test context::store::tests::context_store_clear_expert_context_removes_files ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_by_role_str_in_worktree_different_worktrees_isolated ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_filters_by_state ... ok
[INFO] [stdout] test experts::registry::tests::is_expert_idle_returns_correct_state ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_by_role_str_in_worktree_filters_by_worktree ... ok
[INFO] [stdout] test experts::registry::tests::register_expert_assigns_id_and_updates_lookups ... ok
[INFO] [stdout] test experts::registry::tests::register_expert_duplicate_name_fails ... ok
[INFO] [stdout] test experts::registry::tests::registry_default_creates_empty_registry ... ok
[INFO] [stdout] test experts::registry::tests::register_expert_with_existing_id ... ok
[INFO] [stdout] test experts::registry::tests::remove_expert_cleans_up_all_lookups ... ok
[INFO] [stdout] test experts::registry::tests::registry_new_creates_empty_registry ... ok
[INFO] [stdout] test experts::registry::tests::remove_nonexistent_expert_returns_none ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_role_nonexistent_expert_fails ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_role_preserves_other_experts_in_same_role ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_role_updates_expert_and_lookups ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_state_changes_state ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_state_nonexistent_expert_fails ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_worktree_clears_path ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_worktree_nonexistent_expert_fails ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_role_cleans_up_empty_old_role_entry ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_worktree_sets_path ... ok
[INFO] [stdout] test feature::executor::tests::build_prompt_includes_comma_separated_task_numbers ... ok
[INFO] [stdout] test feature::executor::tests::build_prompt_omits_design_file_when_absent ... ok
[INFO] [stdout] test feature::executor::tests::cancel_clears_batch_completion_wait ... ok
[INFO] [stdout] test feature::executor::tests::batch_completion_wait_tracking ... ok
[INFO] [stdout] test feature::executor::tests::cancel_resets_to_idle ... ok
[INFO] [stdout] test experts::registry::tests::find_by_name_case_insensitive ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_none_when_completed ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_none_when_idle ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_none_when_failed ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_resetting_during_relaunching_expert ... ok
[INFO] [stdout] test feature::executor::tests::build_prompt_includes_status_pending_instruction ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_resetting_during_exiting_expert ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_shows_feature_name_during_waiting_poll_delay ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_shows_feature_name_during_polling_status ... ok
[INFO] [stdout] test feature::executor::tests::is_previous_batch_completed_true_when_empty_batch ... ok
[INFO] [stdout] test feature::executor::tests::is_previous_batch_completed_true_when_all_done ... ok
[INFO] [stdout] test feature::executor::tests::build_prompt_includes_design_file_when_present ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_dag_mode_batch_size_limit ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_dag_mode_respects_deps ... ok
[INFO] [stdout] test feature::executor::tests::is_previous_batch_completed_false_when_some_incomplete ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_shows_feature_name_during_sending_batch ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_dag_mode_blocked_returns_error ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_returns_empty_when_all_completed ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_returns_first_batch_size_uncompleted ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_returns_fewer_when_fewer_remain ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_skips_completed_tasks ... ok
[INFO] [stdout] test feature::executor::tests::progress_counts_reflect_task_file_state ... ok
[INFO] [stdout] test feature::executor::tests::progress_message_format_during_execution ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_sequential_mode_unchanged ... ok
[INFO] [stdout] test feature::executor::tests::validate_fails_when_tasks_file_missing ... ok
[INFO] [stdout] test feature::executor::tests::validate_leaves_design_file_none_when_absent ... ok
[INFO] [stdout] test feature::executor::tests::parse_tasks_updates_progress_tracking ... ok
[INFO] [stdout] test feature::executor::tests::progress_message_format_during_reset ... ok
[INFO] [stdout] test feature::executor::tests::validate_succeeds_when_tasks_file_exists ... ok
[INFO] [stdout] test feature::executor::tests::validate_sets_design_file_when_exists ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_all_done ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_blocked_when_deps_incomplete ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_cycle_detected ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_cycle_reports_cycle_members ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_downstream_of_cycle_excluded_from_cycle_members ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_duplicate_deps_not_false_cycle ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_missing_dep_blocks_task ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_no_cycle_empty_cycle_members ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_no_deps_always_runnable ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_parallel_after_common_dep ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_simple_chain ... ok
[INFO] [stdout] test feature::scheduler::tests::sequential_all_done ... ok
[INFO] [stdout] test feature::executor::tests::record_batch_sent_stores_task_numbers ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_self_cycle_detected ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_three_node_cycle_reports_all_members ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_deps_whitespace_variants ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_deps_with_dot_notation ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_completed_tasks ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_deps_empty_bracket ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_incomplete_tasks ... ok
[INFO] [stdout] test feature::scheduler::tests::sequential_ignores_deps ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_ignores_non_task_lines ... ok
[INFO] [stdout] test feature::executor::tests::progress_counts_update_on_reparse ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_mixed_completed_and_incomplete ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_empty_content ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_mixed_deps_and_no_deps ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_multi_level_dot_notation ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_real_world_format ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_with_deps ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_without_deps ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_discovery_renders_manifest_path ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_discovery_absent_without_template ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_discovery_renders_status_dir ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_no_task_lines ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_discovery_renders_worktree_path ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_subtasks_with_dot_notation ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_renders_expert_id ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_includes_discovery_agent ... ok
[INFO] [stdout] test instructions::defaults::tests::embedded_instructions_are_not_empty ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_returns_none_when_no_template ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_returns_valid_json_with_template ... ok
[INFO] [stdout] test instructions::defaults::tests::get_default_returns_content_for_known_roles ... ok
[INFO] [stdout] test instructions::file_writer::tests::agents_file_path_different_expert_ids ... ok
[INFO] [stdout] test instructions::file_writer::tests::agents_file_path_returns_expected_path ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_title_preserved_with_deps ... ok
[INFO] [stdout] test instructions::defaults::tests::default_role_names_contains_all_defaults ... ok
[INFO] [stdout] test instructions::file_writer::tests::cleanup_instruction_file_noop_when_missing ... ok
[INFO] [stdout] test instructions::defaults::tests::get_default_returns_none_for_unknown_role ... ok
[INFO] [stdout] test instructions::file_writer::tests::cleanup_instruction_file_removes_existing ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_pending_command ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_status_path ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_pre_tool_use_hook ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_processing_command ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_stop_hook ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_user_prompt_submit ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_escapes_single_quote_in_status_path ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_pre_tool_use_has_write_edit_bash_matcher ... ok
[INFO] [stdout] test instructions::file_writer::tests::instruction_file_path_different_expert_ids ... ok
[INFO] [stdout] test instructions::file_writer::tests::instruction_file_path_returns_expected_path ... ok
[INFO] [stdout] test instructions::file_writer::tests::settings_file_path_different_expert_ids ... ok
[INFO] [stdout] test instructions::file_writer::tests::settings_file_path_returns_expected_path ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_pre_tool_use_blocks_queue_writes ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_pre_tool_use_suggests_outbox ... ok
[INFO] [stdout] test instructions::file_writer::tests::write_agents_file_creates_dir_and_file ... ok
[INFO] [stdout] test instructions::file_writer::tests::write_instruction_file_creates_dir_and_file ... ok
[INFO] [stdout] test instructions::file_writer::tests::write_instruction_file_overwrites_existing ... ok
[INFO] [stdout] test instructions::file_writer::tests::write_settings_file_creates_dir_and_file ... ok
[INFO] [stdout] test instructions::file_writer::tests::write_agents_file_overwrites_existing ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_expert_name_variable ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_expert_id_variable ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_status_dir_variable ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_manifest_path_variable ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_worktree_filter_instruction ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_is_read_only ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_empty_config ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_worktree_path_variable ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_includes_worktree_paths ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_is_valid_json ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_uses_config_roles_by_default ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_includes_all_experts ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_uses_session_roles ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_worktree_none_when_expert_not_in_registry ... ok
[INFO] [stdout] test instructions::manifest::tests::write_manifest_creates_file ... ok
[INFO] [stdout] test instructions::manifest::tests::write_manifest_overwrites_existing ... ok
[INFO] [stdout] test instructions::template::tests::instruction_result_agents_json_none_without_template ... ok
[INFO] [stdout] test instructions::template::tests::instruction_result_includes_agents_json ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_is_valid_json ... ok
[INFO] [stdout] test instructions::schema::tests::generated_schema_contains_severity_comment ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_falls_back_to_general ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_passes_manifest_path_to_agents ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_passes_worktree_path_to_agents ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_uses_embedded_default ... ok
[INFO] [stdout] test instructions::schema::tests::generated_schema_is_valid_yaml ... ok
[INFO] [stdout] test instructions::template::tests::render_core_produces_valid_markdown ... ok
[INFO] [stdout] test instructions::template::tests::render_template_preserves_surrounding_text ... ok
[INFO] [stdout] test instructions::template::tests::render_template_replaces_expert_identity ... ok
[INFO] [stdout] test instructions::template::tests::render_template_replaces_status_file_path ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_passes_status_dir_to_agents ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_uses_user_custom ... ok
[INFO] [stdout] test instructions::template::tests::render_template_replaces_yaml_schema ... ok
[INFO] [stdout] test models::expert::tests::expert_activity_update ... ok
[INFO] [stdout] test models::expert::tests::expert_deserializes_from_yaml ... ok
[INFO] [stdout] test models::expert::tests::expert_name_matching ... ok
[INFO] [stdout] test models::expert::tests::expert_role_matching ... ok
[INFO] [stdout] test models::expert::tests::expert_serializes_to_yaml ... ok
[INFO] [stdout] test models::expert::tests::expert_state_color_values ... ok
[INFO] [stdout] test models::expert::tests::expert_state_default_is_idle ... ok
[INFO] [stdout] test models::expert::tests::expert_state_description_values ... ok
[INFO] [stdout] test models::expert::tests::expert_state_symbols_are_unique ... ok
[INFO] [stdout] test models::expert::tests::expert_state_transitions ... ok
[INFO] [stdout] test models::expert::tests::role_display ... ok
[INFO] [stdout] test models::expert::tests::role_matching ... ok
[INFO] [stdout] test models::expert::tests::expert_state_symbol_values ... ok
[INFO] [stdout] test models::expert::tests::same_worktree_both_same_path ... ok
[INFO] [stdout] test models::expert::tests::same_worktree_different_paths ... ok
[INFO] [stdout] test models::expert::tests::expert_info_new_creates_with_defaults ... ok
[INFO] [stdout] test models::expert::tests::same_worktree_both_none ... ok
[INFO] [stdout] test models::expert::tests::same_worktree_is_symmetric ... ok
[INFO] [stdout] test models::expert::tests::same_worktree_none_vs_some ... ok
[INFO] [stdout] test models::expert::tests::set_worktree_path_updates_field ... ok
[INFO] [stdout] test models::expert::tests::worktree_path_backward_compat_deserialization ... ok
[INFO] [stdout] test models::expert::tests::worktree_path_none_omitted_in_serialization ... ok
[INFO] [stdout] test models::expert::tests::worktree_path_serialization_roundtrip ... ok
[INFO] [stdout] test models::expert::tests::worktree_path_defaults_to_none ... ok
[INFO] [stdout] test instructions::schema::tests::generated_schema_contains_status_comment ... ok
[INFO] [stdout] test experts::registry::property_tests::expert_state_delivery_decision_support ... ok
[INFO] [stdout] test models::message::tests::message_builder_methods ... ok
[INFO] [stdout] test models::message::tests::message_delivery_attempts ... ok
[INFO] [stdout] test models::message::tests::message_deserializes_from_yaml ... ok
[INFO] [stdout] test models::message::tests::message_expiration_logic ... ok
[INFO] [stdout] test models::message::tests::message_new_creates_with_defaults ... ok
[INFO] [stdout] test models::message::tests::message_priority_default_is_normal ... ok
[INFO] [stdout] test models::message::tests::message_priority_ordering ... ok
[INFO] [stdout] test models::message::tests::message_recipient_constructors ... ok
[INFO] [stdout] test models::message::tests::message_recipient_expert_id_yaml_deserializes ... ok
[INFO] [stdout] test models::message::tests::message_recipient_expert_name_yaml_is_rejected ... ok
[INFO] [stdout] test models::message::tests::message_recipient_role_yaml_deserializes ... ok
[INFO] [stdout] test models::message::tests::message_serializes_to_yaml ... ok
[INFO] [stdout] test models::message::tests::message_type_default_is_query ... ok
[INFO] [stdout] test models::queued_message::tests::message_status_default_is_pending ... ok
[INFO] [stdout] test models::queued_message::tests::queued_message_delivery_attempt_tracking ... ok
[INFO] [stdout] test models::queued_message::tests::queued_message_deserializes_from_yaml ... ok
[INFO] [stdout] test models::queued_message::tests::queued_message_new_creates_with_defaults ... ok
[INFO] [stdout] test models::queued_message::tests::queued_message_serializes_to_yaml ... ok
[INFO] [stdout] test models::queued_message::tests::queued_message_should_retry_logic ... ok
[INFO] [stdout] test models::queued_message::tests::queued_message_status_transitions ... ok
[INFO] [stdout] test models::report::tests::report_add_finding_appends_to_list ... ok
[INFO] [stdout] test models::report::tests::report_complete_sets_done_status ... ok
[INFO] [stdout] test models::report::tests::report_deserializes_from_yaml ... ok
[INFO] [stdout] test models::report::tests::report_duration_returns_none_when_not_completed ... ok
[INFO] [stdout] test models::report::tests::report_duration_returns_some_when_completed ... ok
[INFO] [stdout] test models::report::tests::report_fail_sets_failed_status ... ok
[INFO] [stdout] test models::report::tests::report_new_creates_in_progress ... ok
[INFO] [stdout] test models::report::tests::report_serializes_to_yaml ... ok
[INFO] [stdout] test models::report::tests::sample_yaml_schema_contains_required_fields ... ok
[INFO] [stdout] test models::report::tests::sample_yaml_schema_generates_valid_yaml ... ok
[INFO] [stdout] test models::report::tests::validate_accepts_all_valid_severities ... ok
[INFO] [stdout] test models::report::tests::validate_collects_multiple_errors ... ok
[INFO] [stdout] test models::report::tests::validate_fails_for_invalid_severity ... ok
[INFO] [stdout] test models::report::tests::validate_fails_for_multiline_recommendation ... ok
[INFO] [stdout] test models::report::tests::validate_passes_for_valid_report ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_includes_core ... ok
[INFO] [stdout] test models::message::property_tests::message_recipient_serialization_round_trip ... ok
[INFO] [stdout] test models::expert::tests::same_worktree_is_reflexive ... ok
[INFO] [stdout] test experts::registry::property_tests::expert_state_consistency_across_lookups ... ok
[INFO] [stdout] test experts::registry::property_tests::expert_state_tracking_accuracy ... ok
[INFO] [stdout] test models::message::property_tests::message_content_serialization_round_trip ... ok
[INFO] [stdout] test models::message::property_tests::message_persistence_round_trip ... ok
[INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_failure_reason ... ok
[INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_status_update ... ok
[INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_retry_logic ... ok
[INFO] [stdout] test queue::manager::property_tests::error_logging_invalid_yaml_parsing ... ok
[INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_increments_correctly ... ok
[INFO] [stdout] test queue::manager::property_tests::error_logging_delivery_lifecycle_events ... ok
[INFO] [stdout] test queue::manager::property_tests::error_logging_message_validation_failures ... ok
[INFO] [stdout] test queue::manager::property_tests::error_type_coverage ... ok
[INFO] [stdout] test queue::manager::property_tests::error_logging_file_system_isolation ... ok
[INFO] [stdout] test queue::manager::property_tests::message_dequeue_removes_correctly ... ok
[INFO] [stdout] test queue::manager::property_tests::error_logging_outbox_error_isolation ... ok
[INFO] [stdout] test queue::manager::property_tests::message_lifecycle_max_attempts_cleanup ... ok
[INFO] [stdout] test queue::manager::tests::detect_misplaced_message_identifies_raw_message ... ok
[INFO] [stdout] test queue::manager::tests::detect_misplaced_message_returns_none_for_empty_id ... ok
[INFO] [stdout] test queue::manager::tests::detect_misplaced_message_returns_none_for_garbage ... ok
[INFO] [stdout] test queue::manager::tests::detect_misplaced_message_returns_none_for_queued_message ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_cleanup_expired_messages ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_cleanup_removes_all ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_dequeue_removes_message ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_enqueue_and_read_message ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_get_pending_messages_filters_correctly ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_init_creates_directories ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_init_creates_message_directories ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_list_reports_returns_all ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_priority_ordering ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_process_outbox_invalid_message ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_process_outbox_valid_message ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_update_delivery_attempts ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_write_and_read_report ... ok
[INFO] [stdout] test queue::manager::tests::read_queue_skips_raw_message_in_queue_directory ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_complete_message_flow_outbox_to_queue ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_concurrent_messaging_multiple_experts ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_delivery_with_state_transitions ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_message_cleanup_end_to_end ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_message_persistence_across_restart ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_priority_ordering_in_concurrent_messages ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_role_based_routing ... ok
[INFO] [stdout] test queue::manager::property_tests::message_queue_accepts_valid_outbox_messages ... ok
[INFO] [stdout] test queue::router::property_tests::message_format_preserves_special_characters ... ok
[INFO] [stdout] test queue::router::property_tests::message_format_consistency_across_types ... ok
[INFO] [stdout] test queue::router::property_tests::message_format_standardization ... ok
[INFO] [stdout] test queue::manager::property_tests::message_lifecycle_ttl_expiration ... ok
[INFO] [stdout] test queue::manager::property_tests::message_validation_consistency ... ok
[INFO] [stdout] test queue::router::property_tests::non_blocking_delivery_state_transitions ... ok
[INFO] [stdout] test queue::manager::property_tests::error_logging_cleanup_events ... ok
[INFO] [stdout] test queue::manager::property_tests::message_priority_ordering_is_consistent ... ok
[INFO] [stdout] test queue::router::property_tests::recipient_targeting_consistency ... ok
[INFO] [stdout] test queue::router::tests::find_recipient_by_expert_id ... ok
[INFO] [stdout] test queue::router::tests::find_recipient_by_role_returns_idle_expert ... ok
[INFO] [stdout] test queue::router::tests::find_recipient_by_role_returns_none_when_no_idle_experts ... ok
[INFO] [stdout] test queue::router::tests::format_message_for_delivery_creates_standard_format ... ok
[INFO] [stdout] test queue::router::tests::get_queue_stats_returns_correct_counts ... ok
[INFO] [stdout] test queue::router::tests::is_expert_idle_returns_correct_status ... ok
[INFO] [stdout] test queue::router::tests::process_outbox_delegates_to_queue_manager ... ok
[INFO] [stdout] test queue::router::tests::process_queue_handles_empty_queue ... ok
[INFO] [stdout] test queue::router::tests::process_queue_increments_message_delivery_attempts ... ok
[INFO] [stdout] test queue::router::tests::process_queue_removes_message_after_max_delivery_attempts ... ok
[INFO] [stdout] test queue::router::tests::router_new_creates_with_dependencies ... ok
[INFO] [stdout] test queue::router::worktree_tests::attempt_delivery_same_worktree_finds_recipient ... ok
[INFO] [stdout] test queue::router::worktree_tests::attempt_delivery_worktree_mismatch_produces_failed_result ... ok
[INFO] [stdout] test queue::router::worktree_tests::find_recipient_by_id_worktree_mismatch_returns_none ... ok
[INFO] [stdout] test queue::router::worktree_tests::find_recipient_by_role_different_worktree_returns_none ... ok
[INFO] [stdout] test queue::router::worktree_tests::find_recipient_by_role_main_repo_only_finds_main_repo ... ok
[INFO] [stdout] test queue::router::worktree_tests::find_recipient_by_role_returns_only_same_worktree ... ok
[INFO] [stdout] test queue::router::worktree_tests::main_repo_experts_can_find_each_other_by_id ... ok
[INFO] [stdout] test queue::router::worktree_tests::process_queue_respects_worktree_isolation ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_different_worktrees ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_none_none ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_none_some ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_nonexistent_recipient ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_nonexistent_sender ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_some_none ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_some_same ... ok
[INFO] [stdout] test session::claude::tests::capture_full_history_delegates_to_sender ... ok
[INFO] [stdout] test session::claude::tests::claude_manager_creates_with_session_name ... ok
[INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_false_for_claude ... ok
[INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_false_for_node ... ok
[INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_false_for_ssh ... ok
[INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_false_when_none ... ok
[INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_true_for_bash ... ok
[INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_true_for_zsh ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_quotes_paths_for_shell_safety ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_with_agents_file ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_with_all_three_files ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_with_both ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_with_instruction_file ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_with_settings_file ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_without_instruction_file ... ok
[INFO] [stdout] test session::claude::tests::resize_all_fail_no_panic ... ok
[INFO] [stdout] test session::claude::tests::resize_all_panes_parallel_all_succeed ... ok
[INFO] [stdout] test session::claude::tests::resize_multiple_failures_do_not_block ... ok
[INFO] [stdout] test session::claude::tests::resize_one_failure_does_not_block_others ... ok
[INFO] [stdout] test session::claude::tests::resize_pane_delegates_to_sender ... ok
[INFO] [stdout] test session::claude::tests::send_clear_sends_clear_command ... ok
[INFO] [stdout] test session::claude::tests::send_exit_sends_exit_command ... ok
[INFO] [stdout] test session::claude::tests::send_instruction_chunks_and_sends_enter ... ok
[INFO] [stdout] test queue::router::property_tests::recipient_targeting_exclusivity ... ok
[INFO] [stdout] test session::claude::tests::send_keys_delegates_to_sender ... ok
[INFO] [stdout] test session::claude::tests::send_keys_with_enter_uses_default_trait_behavior ... ok
[INFO] [stdout] test session::claude::tests::send_instruction_splits_large_input ... ok
[INFO] [stdout] test session::claude::tests::wait_for_ready_returns_true_when_bypass_found ... ok
[INFO] [stdout] test session::detector::tests::detect_all_returns_states_for_all_ids ... ok
[INFO] [stdout] test session::detector::tests::ensure_status_dir_creates_directory ... ok
[INFO] [stdout] test session::detector::tests::missing_file_returns_busy ... ok
[INFO] [stdout] test session::detector::tests::pending_content_returns_idle ... ok
[INFO] [stdout] test session::detector::tests::processing_content_returns_busy ... ok
[INFO] [stdout] test session::detector::tests::set_marker_then_detect ... ok
[INFO] [stdout] test session::detector::tests::set_marker_writes_correctly ... ok
[INFO] [stdout] test session::detector::tests::unknown_content_returns_busy ... ok
[INFO] [stdout] test session::detector::tests::whitespace_trimming ... ok
[INFO] [stdout] test session::tmux::tests::capture_full_history_default_falls_back_to_capture_pane_with_escapes ... ok
[INFO] [stdout] test session::tmux::tests::capture_pane_with_escapes_default_falls_back ... ok
[INFO] [stdout] test session::tmux::tests::check_tmux_output_failure_returns_error_with_stderr ... ok
[INFO] [stdout] test session::tmux::tests::check_tmux_output_success_returns_stdout ... ok
[INFO] [stdout] test session::tmux::tests::check_tmux_status_failure_returns_error ... ok
[INFO] [stdout] test session::tmux::tests::check_tmux_status_success_returns_ok ... ok
[INFO] [stdout] test session::tmux::tests::check_tmux_status_with_empty_stderr_includes_context ... ok
[INFO] [stdout] test session::tmux::tests::check_tmux_status_with_nonzero_exit_returns_error ... ok
[INFO] [stdout] test session::tmux::tests::get_pane_current_command_default_returns_none ... ok
[INFO] [stdout] test session::tmux::tests::next_tmux_buffer_name_is_unique ... ok
[INFO] [stdout] test session::tmux::tests::parse_pane_paths_empty_input ... ok
[INFO] [stdout] test session::tmux::tests::parse_pane_paths_multiple_windows ... ok
[INFO] [stdout] test session::tmux::tests::parse_pane_paths_single_window ... ok
[INFO] [stdout] test session::tmux::tests::parse_pane_paths_skips_malformed_lines ... ok
[INFO] [stdout] test session::tmux::tests::resize_pane_default_is_noop ... ok
[INFO] [stdout] test session::tmux::tests::send_keys_with_enter_routes_text_through_send_text ... ok
[INFO] [stdout] test session::tmux::tests::send_text_default_falls_back_to_send_keys ... ok
[INFO] [stdout] test session::tmux::tests::tmux_manager_from_config_uses_config_session_name ... ok
[INFO] [stdout] test session::tmux::tests::tmux_manager_new_sets_session_name ... ok
[INFO] [stdout] test session::worktree::property_tests::worktree_path_always_under_macot ... ok
[INFO] [stdout] test queue::manager::property_tests::message_lifecycle_get_pending_filters_correctly ... ok
[INFO] [stdout] test session::worktree::resolve_tests::resolve_fails_for_non_git_directory ... ok
[INFO] [stdout] test session::worktree::resolve_tests::resolve_from_main_repo_returns_same_path ... ok
[INFO] [stdout] test session::worktree::resolve_tests::resolve_from_worktree_returns_main_repo_root ... ok
[INFO] [stdout] test session::worktree::property_tests::worktree_path_uniqueness ... ok
[INFO] [stdout] test session::worktree::tests::worktree_dir_returns_macot_worktrees_path ... ok
[INFO] [stdout] test session::worktree::tests::worktree_exists_returns_false_for_nonexistent ... ok
[INFO] [stdout] test session::worktree::tests::worktree_launch_state_default_is_idle ... ok
[INFO] [stdout] test session::worktree::tests::worktree_path_different_branches_produce_different_paths ... ok
[INFO] [stdout] test session::worktree::tests::worktree_path_returns_branch_subdirectory ... ok
[INFO] [stdout] test session::claude::tests::wait_for_ready_returns_false_on_timeout ... ok
[INFO] [stdout] test session::worktree::resolve_tests::resolve_idempotent_across_worktrees ... ok
[INFO] [stdout] test tower::app::property_tests::branch_name_format_matches_expected_pattern ... ok
[INFO] [stdout] test tower::app::property_tests::system_initialization_consistency ... ok
[INFO] [stdout] test tower::app::tests::clear_needs_redraw_resets_flag ... ok
[INFO] [stdout] test tower::app::tests::cursor_movement_keys_do_not_update_debounce_timer ... ok
[INFO] [stdout] test tower::app::tests::default_config_uses_dag_scheduler_mode ... ok
[INFO] [stdout] test tower::app::tests::editing_keys_update_debounce_timer ... ok
[INFO] [stdout] test tower::app::tests::event_poll_timeout_is_16ms ... ok
[INFO] [stdout] test tower::app::property_tests::system_initialization_expert_state_consistency ... ok
[INFO] [stdout] test tower::app::tests::feature_executor_starts_none ... ok
[INFO] [stdout] test tower::app::tests::expert_panel_focus_does_not_update_debounce_timer ... ok
[INFO] [stdout] test tower::app::property_tests::system_initialization_message_router_consistency ... ok
[INFO] [stdout] test tower::app::tests::focus_cycle_with_panel_includes_expert_panel ... ok
[INFO] [stdout] test tower::app::tests::focus_cycle_without_panel_stays_on_task_input ... ok
[INFO] [stdout] test tower::app::tests::handle_mouse_click_sets_focus_based_on_area ... ok
[INFO] [stdout] test tower::app::tests::handle_feature_execution_cancels_when_running ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_arrow_keys_do_not_move_cursor ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_a_moves_to_line_start ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_b_moves_cursor_left ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_e_moves_to_line_end ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_f_moves_cursor_right ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_d_deletes_forward ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_k_kill_line ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_n_moves_cursor_down ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_p_moves_cursor_up ... ok
[INFO] [stdout] test tower::app::tests::hiding_panel_while_focused_moves_to_task_input ... ok
[INFO] [stdout] test tower::app::tests::is_exclamation_at_input_start_returns_false_at_nonzero_pos ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_h_deletes_char ... ok
[INFO] [stdout] test tower::app::tests::is_exclamation_at_input_start_returns_false_for_other_char ... ok
[INFO] [stdout] test tower::app::tests::is_exclamation_at_input_start_returns_false_with_ctrl ... ok
[INFO] [stdout] test queue::router::property_tests::non_blocking_delivery_retry_scheduling ... ok
[INFO] [stdout] test tower::app::tests::is_exclamation_at_input_start_returns_false_with_alt ... ok
[INFO] [stdout] test tower::app::tests::is_exclamation_at_input_start_returns_true_at_pos_zero ... ok
[INFO] [stdout] test tower::app::tests::is_shift_tab_for_task_input_plain_tab_returns_false ... ok
[INFO] [stdout] test tower::app::tests::is_shift_tab_for_task_input_tab_with_shift_returns_true ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_arrows ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_backspace ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_u_unix_line_discard ... ok
[INFO] [stdout] test tower::app::tests::key_event_triggers_quit_synchronously ... ok
[INFO] [stdout] test tower::app::tests::is_shift_tab_for_task_input_backtab_returns_true ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_char ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_backtab_returns_btab ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_ctrl_char ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_enter ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_esc_returns_escape_string ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_page_down_returns_none ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_page_up_returns_none ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_tab_returns_tab_string ... ok
[INFO] [stdout] test tower::app::tests::last_resized_expert_id_starts_none ... ok
[INFO] [stdout] test tower::app::tests::launch_expert_in_worktree_rejects_empty_feature_name ... ok
[INFO] [stdout] test tower::app::tests::launch_expert_in_worktree_returns_early_when_in_progress ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_home_end_returns_none ... ok
[INFO] [stdout] test tower::app::tests::manifest_includes_all_experts_after_refresh ... ok
[INFO] [stdout] test tower::app::tests::manifest_refresh_reflects_worktree_assignment ... ok
[INFO] [stdout] test tower::app::tests::manifest_refresh_reflects_role_change ... ok
[INFO] [stdout] test tower::app::tests::manifest_refresh_updates_file ... ok
[INFO] [stdout] test tower::app::tests::mouse_click_does_not_match_zero_rect ... ok
[INFO] [stdout] test tower::app::tests::point_in_rect_detects_inside ... ok
[INFO] [stdout] test tower::app::tests::point_in_rect_detects_outside ... ok
[INFO] [stdout] test tower::app::tests::needs_redraw_initialized_to_true ... ok
[INFO] [stdout] test tower::app::tests::mouse_click_matches_expert_panel_when_visible ... ok
[INFO] [stdout] test tower::app::tests::manifest_generated_at_startup ... ok
[INFO] [stdout] test tower::app::tests::poll_messages_sets_needs_redraw ... ok
[INFO] [stdout] test tower::app::tests::poll_feature_executor_sending_batch_blocked_transitions_to_failed ... ok
[INFO] [stdout] test tower::app::tests::poll_status_skipped_during_debounce_no_redraw ... ok
[INFO] [stdout] test tower::app::tests::poll_status_sets_needs_redraw ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_claude_not_ready_message ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_idle_stays_idle ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_not_finished_stays_in_progress ... ok
[INFO] [stdout] test tower::app::tests::poll_reports_sets_needs_redraw ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_failure_transitions_to_idle ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_propagates_worktree_to_both_registries ... ok
[INFO] [stdout] test tower::app::tests::restore_worktree_paths_handles_no_context ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_sets_needs_redraw_on_completion ... ok
[INFO] [stdout] test tower::app::tests::poll_feature_executor_sending_batch_all_done_transitions_to_completed ... ok
[INFO] [stdout] test tower::app::tests::restore_worktree_paths_loads_persisted_context ... ok
[INFO] [stdout] test tower::app::tests::return_expert_no_expert_selected_shows_error ... ok
[INFO] [stdout] test tower::app::tests::return_expert_no_worktree_shows_error ... ok
[INFO] [stdout] test tower::app::tests::set_message_sets_needs_redraw ... ok
[INFO] [stdout] test tower::app::tests::start_feature_execution_rejects_empty_input ... ok
[INFO] [stdout] test tower::app::tests::restore_worktree_paths_skips_nonexistent_paths ... ok
[INFO] [stdout] test tower::app::tests::start_feature_execution_rejects_missing_task_file ... ok
[INFO] [stdout] test tower::app::tests::toggle_panel_visibility ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_success_transitions_to_idle ... ok
[INFO] [stdout] test tower::app::tests::tower_app_message_management ... ok
[INFO] [stdout] test tower::app::tests::tower_app_expert_registry_matches_config ... ok
[INFO] [stdout] test tower::app::tests::tower_app_quit_aborts_in_progress_expert_panel_update ... ok
[INFO] [stdout] test tower::app::tests::tower_app_quit_stops_running ... ok
[INFO] [stdout] test tower::app::tests::tower_app_set_focus_changes_focus ... ok
[INFO] [stdout] test tower::app::tests::update_focus_syncs_expert_panel_focus_state ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::ansi_parse_colored_text ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::ansi_parse_malformed_does_not_panic ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::ansi_parse_plain_text ... ok
[INFO] [stdout] test tower::app::tests::tower_app_starts_running ... ok
[INFO] [stdout] test tower::app::tests::tower_app_focus_stays_on_task_input_without_panel ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::auto_scroll_not_re_enabled_during_scroll_mode ... ok
[INFO] [stdout] test tower::app::tests::tower_app_initializes_messaging_system ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::enter_scroll_mode_disables_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::enter_scroll_mode_positions_at_bottom ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::enter_scroll_mode_sets_flag ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::enter_scroll_mode_loads_content ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::exit_scroll_mode_enables_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::exit_scroll_mode_resets_hash ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::last_render_size_starts_at_zero ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::panel_starts_not_scrolling ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::panel_starts_visible ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::preview_size_saturates_at_zero ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::preview_size_subtracts_margin_from_render_size ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::preview_size_with_narrow_terminal ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::render_idempotent_with_cache ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::render_no_scroll_indicator_when_auto_scrolling ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::exit_scroll_mode_clears_flag ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::auto_scroll_positions_at_visual_bottom_with_wrapping ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::render_shows_scroll_indicator_when_not_auto_scrolling ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_down_increments ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::render_updates_last_render_size ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_down_to_bottom_re_enables_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_state_preserved_after_cache_invalidation ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_to_bottom_enables_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_offset_above_bottom_does_not_re_enable_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_to_top_disables_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_to_top_sets_offset_to_zero ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_up_at_zero_stays_zero ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_up_disables_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_content_auto_scrolls_when_enabled ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_content_does_not_auto_scroll_when_disabled ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_expert_different_resets_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_expert_exits_scroll_mode ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_expert_resets_content_hash ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_expert_same_id_preserves_scroll_mode ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_expert_same_preserves_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_expert_tracks_id ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_focused_changes_state ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::show_and_hide ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_to_bottom_reaches_visual_bottom_after_render ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::starts_unfocused ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::toggle_hides_visible_panel ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::toggle_twice_returns_to_visible ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_noop_when_scrolling ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_respects_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_returns_false_on_same_content ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_returns_true_on_different_content ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_returns_true_on_new_content ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_skips_ansi_parsing_when_unchanged ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_updates_line_count ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::visual_line_count_cache_invalidated_on_content_change ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::visual_line_count_cache_invalidated_on_width_change ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::enter_scroll_mode_reaches_visual_bottom_after_render ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::visual_line_count_cache_reused_when_unchanged ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::xxh3_distinct_inputs_produce_distinct_hashes ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::xxh3_empty_content_handled_correctly ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::word_wrap_visual_line_count_matches_ratatui ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::xxh3_change_detection_matches_sha256_behavior ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::xxh3_identical_inputs_produce_identical_hashes ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_includes_worktree_shortcut ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_ctrl_g_for_feature_execution ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_ctrl_j_for_expert_panel ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_ctrl_t_for_panel_switch ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_editing_keybindings ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_exclamation_for_bash_mode ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_expert_panel_keybindings ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_f1_for_help ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_remote_scroll_section ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::modal_becomes_hidden_after_hide ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::modal_becomes_visible_after_show ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::modal_starts_hidden ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::toggle_switches_visibility ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::render_shows_history_indicator_when_scrolling ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_message_fields_accessible ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_navigation_consistency ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_recipient_formatting ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_type_and_priority_symbols ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_filter_by_priority ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_filter_by_type ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_focus_state ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_navigation ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_new_creates_empty ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_prev_navigation ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_priority_symbol_returns_correct_values ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_recipient_display_formats_correctly ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_set_messages_updates_and_filters ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_type_symbol_returns_correct_values ... ok
[INFO] [stdout] test tower::widgets::report_detail_modal::tests::modal_becomes_hidden_after_hide ... ok
[INFO] [stdout] test tower::widgets::report_detail_modal::tests::modal_becomes_visible_after_show ... ok
[INFO] [stdout] test tower::widgets::report_detail_modal::tests::modal_starts_hidden ... ok
[INFO] [stdout] test tower::widgets::report_detail_modal::tests::scroll_down_respects_max_lines ... ok
[INFO] [stdout] test tower::widgets::report_detail_modal::tests::scroll_offset_resets_on_show ... ok
[INFO] [stdout] test tower::widgets::report_detail_modal::tests::scroll_up_does_not_go_negative ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::open_detail_for_expert_opens_matching_report ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::open_detail_for_expert_returns_false_when_no_report ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_close_detail_switches_to_list_mode ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_empty_by_default ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_focus_state ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_navigation ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_filter_by_type ... ok
[INFO] [stdout] test queue::router::property_tests::non_blocking_delivery_enforcement ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_open_detail_switches_to_detail_mode ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_selected_report_returns_current ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_starts_in_list_mode ... ok
[INFO] [stdout] test tower::widgets::role_selector::tests::role_selector_hide_resets_state ... ok
[INFO] [stdout] test tower::widgets::role_selector::tests::role_selector_initially_hidden ... ok
[INFO] [stdout] test tower::widgets::role_selector::tests::role_selector_navigation ... ok
[INFO] [stdout] test tower::widgets::role_selector::tests::role_selector_prev_navigation ... ok
[INFO] [stdout] test tower::widgets::role_selector::tests::role_selector_show_makes_visible ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_open_detail_without_selection_stays_in_list ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_prev_navigation ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::execution_badge_absent_when_none ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::execution_badge_shows_feature_name_when_set ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::execution_badge_shows_resetting_when_set ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::expert_count_returns_correct_count ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::format_relative_path_empty_inputs ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::format_relative_path_same_dir ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::format_relative_path_subdirectory ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::execution_badge_cleared_when_set_to_none ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::format_relative_path_truncates_long_path ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::has_report_returns_correct_value ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::selected_returns_expert_entry ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::format_relative_path_unrelated ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::set_expert_reports_empty_set ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::set_expert_reports_stores_ids ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::status_display_empty_by_default ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::status_display_focus_state ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::status_display_navigation ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::status_display_prev_navigation ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::status_display_summary ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::cursor_line_col_empty_buffer ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::cursor_line_col_japanese_multiline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::cursor_line_col_multiline_end ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::cursor_line_col_single_line_end ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_clamps_overflow_after_deletion ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_clear_resets ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_compact_layout ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_expanded_layout ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_no_change_when_cursor_in_viewport ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_no_wrap_unchanged ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_scroll_follows_cursor_down ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_scroll_follows_cursor_up ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_wrapping_scrolls_correctly ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_zero_height_noop ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_continuation_blank ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_line_numbers_displayed ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_no_blank_row_when_cursor_at_start ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::cursor_line_col_trailing_newline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_width_4_for_100_lines ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_tilde_beyond_content ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_width_min_3_for_99_lines ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_width_5_for_1000_lines ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_width_min_3_for_single_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::kill_line_at_end_of_line_deletes_newline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::kill_line_deletes_to_end_of_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::kill_line_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::kill_line_from_start_clears_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::kill_line_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::line_count_empty_buffer ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::line_count_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::line_count_single_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::line_count_trailing_newline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::line_count_two_lines ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_down_column_clamp ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_down_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_down_from_first_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_down_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::kill_line_at_end_of_content_does_nothing ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_down_single_line_goes_to_end ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_down_three_lines ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_end_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_end_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_end_second_line_of_multiline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_end_single_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_start_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_start_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_start_middle_of_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_start_multiline_second_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_start_single_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_up_column_clamp ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_up_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_up_from_second_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_up_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_up_single_line_goes_to_start ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_up_three_lines ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_eob_inline_with_last_content_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_eob_inline_with_trailing_newline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_eob_present_in_output ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_eob_scrollable_with_cursor_at_last_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_eob_within_frame_cjk_wrapping ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_eob_within_frame_with_wrapping ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_scroll_offset_adjusted_after_render ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::scroll_offset_zero_after_clear ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::scroll_offset_zero_after_new ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_clear ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_cursor_movement ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_delete_at_start_does_nothing ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_delete_char ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_delete_forward_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_empty_by_default ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_focus_state ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_insert_char ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_end_first_line_of_multiline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_insert_in_middle ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_is_empty_with_whitespace ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_japanese_cursor_movement ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_japanese_insert ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_japanese_insert_in_middle ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_japanese_delete ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_newline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::unicode_scroll_integration_10_line_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::unix_line_discard_at_start_does_nothing ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::unix_line_discard_deletes_to_start_of_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::unix_line_discard_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::unix_line_discard_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::unix_line_discard_second_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_cursor_line_after_wrap ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_cursor_line_before_wrap ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_cursor_line_cjk_wrap ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_cursor_line_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_cursor_line_multiline_with_wrap ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_cursor_line_no_wrap ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_count_for_cjk ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_count_for_short_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::cursor_line_col_start_of_second_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_mixed_ascii_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_count_for_wrapping_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_cjk_wide_char_at_boundary ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_cjk_wrapping ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_exact_width ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_multiline_with_wrapping ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_short_line_no_wrap ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_wrap_once ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_wrap_twice ... ok
[INFO] [stdout] test tower::widgets::tests::select_next_empty_is_noop ... ok
[INFO] [stdout] test tower::widgets::tests::select_next_single_element_stays_at_zero ... ok
[INFO] [stdout] test tower::widgets::tests::select_next_wraps_around ... ok
[INFO] [stdout] test tower::widgets::tests::select_prev_empty_is_noop ... ok
[INFO] [stdout] test tower::widgets::tests::select_prev_single_element_stays_at_zero ... ok
[INFO] [stdout] test utils::tests::compute_path_hash_differs_for_different_paths ... ok
[INFO] [stdout] test tower::widgets::tests::select_prev_wraps_around ... ok
[INFO] [stdout] test utils::tests::path_to_str_non_utf8_returns_error ... ok
[INFO] [stdout] test utils::tests::path_to_str_valid_utf8 ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_consecutive_hyphens_collapsed ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_dots_preserved ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_empty_returns_unnamed ... ok
[INFO] [stdout] test utils::tests::compute_path_hash_is_8_chars ... ok
[INFO] [stdout] test utils::tests::compute_path_hash_is_deterministic ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_only_special_chars_returns_unnamed ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_simple ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_spaces_to_hyphens ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_special_chars_removed ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_truncates_long_input ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_underscores_preserved ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_uppercase_to_lowercase ... ok
[INFO] [stdout] test utils::tests::truncate_str_exact_length ... ok
[INFO] [stdout] test utils::tests::truncate_str_head_exact_length ... ok
[INFO] [stdout] test utils::tests::truncate_str_head_japanese_short ... ok
[INFO] [stdout] test utils::tests::truncate_str_head_long_string ... ok
[INFO] [stdout] test utils::tests::truncate_str_head_preserves_end ... ok
[INFO] [stdout] test utils::tests::truncate_str_head_short_string ... ok
[INFO] [stdout] test utils::tests::truncate_str_head_utf8_safe ... ok
[INFO] [stdout] test utils::tests::truncate_str_japanese_short ... ok
[INFO] [stdout] test utils::tests::truncate_str_long_string ... ok
[INFO] [stdout] test utils::tests::truncate_str_short_string ... ok
[INFO] [stdout] test utils::tests::truncate_str_specific_truncation ... ok
[INFO] [stdout] test utils::tests::truncate_str_utf8_safe ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_leading_trailing_hyphens_stripped ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_completeness ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_filter_by_priority ... ok
[INFO] [stdout] test queue::manager::property_tests::message_queue_operations_are_consistent ... ok
[INFO] [stdout] test queue::router::property_tests::priority_based_ordering ... ok
[INFO] [stdout] test queue::router::property_tests::recipient_targeting_accuracy ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 813 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 31.55s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/macot-349f705ece07b5ed)
[INFO] [stdout] 
[INFO] [stdout] running 813 tests
[INFO] [stdout] test config::loader::tests::config_expert_has_role_field ... ok
[INFO] [stdout] test config::loader::tests::config_default_has_four_experts ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_name_fallback ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_returns_correct_expert ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_by_name_case_insensitive ... ok
[INFO] [stdout] test config::loader::tests::config_expert_role_serde_with_role ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_returns_none_for_invalid_id ... ok
[INFO] [stdout] test config::loader::tests::config_expert_role_serde_without_role_defaults ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_name_valid ... ok
[INFO] [stdout] test commands::common::tests::prepare_expert_files_with_role_uses_provided_role ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_role_fallback ... ok
[INFO] [stdout] test config::loader::tests::config_get_expert_role_valid ... ok
[INFO] [stdout] test config::loader::tests::config_load_returns_default_when_file_missing ... ok
[INFO] [stdout] test commands::common::tests::prepare_expert_files_uses_role_not_name ... ok
[INFO] [stdout] test config::loader::tests::config_resolve_expert_id_by_name ... ok
[INFO] [stdout] test config::loader::tests::config_scheduler_mode_defaults_to_dag ... ok
[INFO] [stdout] test config::loader::tests::config_role_instructions_path_defaults_to_config_dir ... ok
[INFO] [stdout] test config::loader::tests::config_resolve_expert_id_by_number ... ok
[INFO] [stdout] test config::loader::tests::config_scheduler_mode_missing_from_yaml_defaults_to_dag ... ok
[INFO] [stdout] test config::loader::tests::config_scheduler_mode_sequential_from_yaml ... ok
[INFO] [stdout] test config::loader::tests::config_loads_from_yaml_file ... ok
[INFO] [stdout] test config::loader::tests::config_status_file_path_format ... ok
[INFO] [stdout] test config::loader::tests::config_with_project_path_sets_derived_paths ... ok
[INFO] [stdout] test config::loader::tests::config_with_num_experts_expands_list ... ok
[INFO] [stdout] test config::loader::tests::config_with_num_experts_adjusts_list ... ok
[INFO] [stdout] test config::loader::tests::config_serializes_to_yaml ... ok
[INFO] [stdout] test config::loader::tests::config_resolve_expert_id_invalid ... ok
[INFO] [stdout] test config::loader::tests::feature_execution_config_defaults ... ok
[INFO] [stdout] test config::loader::tests::feature_execution_config_in_default_config ... ok
[INFO] [stdout] test context::expert::tests::expert_context_add_file_analysis_appends ... ok
[INFO] [stdout] test config::loader::tests::feature_execution_config_partial_yaml_override ... ok
[INFO] [stdout] test context::expert::tests::expert_context_clear_knowledge_resets ... ok
[INFO] [stdout] test config::loader::tests::config_session_name_format ... ok
[INFO] [stdout] test config::loader::tests::config_session_hash_differs_for_different_paths ... ok
[INFO] [stdout] test context::expert::tests::expert_context_backward_compatible_deserialization_without_worktree ... ok
[INFO] [stdout] test context::expert::tests::expert_context_clear_worktree_resets_fields_to_none ... ok
[INFO] [stdout] test context::expert::tests::expert_context_new_creates_with_defaults ... ok
[INFO] [stdout] test context::expert::tests::expert_context_new_has_no_worktree ... ok
[INFO] [stdout] test context::expert::tests::expert_context_deserializes_worktree_fields_from_yaml ... ok
[INFO] [stdout] test config::loader::tests::config_session_hash_is_deterministic ... ok
[INFO] [stdout] test context::expert::tests::expert_context_deserializes_from_yaml ... ok
[INFO] [stdout] test context::expert::tests::expert_context_serializes_to_yaml ... ok
[INFO] [stdout] test context::expert::tests::expert_context_serializes_worktree_fields_to_yaml ... ok
[INFO] [stdout] test context::expert::tests::expert_context_set_worktree_stores_branch_and_path ... ok
[INFO] [stdout] test context::role::tests::role_info_display_name_capitalized ... ok
[INFO] [stdout] test context::role::tests::available_roles_core_excluded ... ok
[INFO] [stdout] test context::role::tests::available_roles_from_empty_path_includes_defaults ... ok
[INFO] [stdout] test context::role::tests::available_roles_names ... ok
[INFO] [stdout] test context::role::tests::available_roles_custom_overrides_default ... ok
[INFO] [stdout] test context::role::tests::role_info_display_name_title_case_with_separators ... ok
[INFO] [stdout] test context::role::tests::session_expert_roles_new_creates_empty_assignments ... ok
[INFO] [stdout] test context::role::tests::session_expert_roles_set_and_get_role ... ok
[INFO] [stdout] test context::role::tests::session_expert_roles_update_existing_role ... ok
[INFO] [stdout] test context::shared::tests::shared_context_add_decision_appends ... ok
[INFO] [stdout] test context::shared::tests::decision_with_affects_experts_sets_list ... ok
[INFO] [stdout] test context::shared::tests::shared_context_get_decisions_by_topic_filters_case_insensitive ... ok
[INFO] [stdout] test context::shared::tests::decision_new_creates_with_timestamp ... ok
[INFO] [stdout] test context::shared::tests::shared_context_deserializes_from_yaml ... ok
[INFO] [stdout] test context::shared::tests::shared_context_get_decisions_for_expert_filters_correctly ... ok
[INFO] [stdout] test context::shared::tests::shared_context_serializes_to_yaml ... ok
[INFO] [stdout] test context::expert::tests::expert_context_clear_worktree_calls_touch ... ok
[INFO] [stdout] test context::store::tests::context_store_init_session_creates_directories ... ok
[INFO] [stdout] test context::expert::tests::expert_context_set_worktree_calls_touch ... ok
[INFO] [stdout] test context::expert::tests::expert_context_set_session_id_updates_context ... ok
[INFO] [stdout] test context::store::tests::context_store_add_decision_persists ... ok
[INFO] [stdout] test context::store::tests::context_store_cleanup_session_removes_all ... ok
[INFO] [stdout] test context::store::tests::context_store_clear_expert_context_removes_files ... ok
[INFO] [stdout] test context::store::tests::context_store_load_expert_context_returns_none_when_missing ... ok
[INFO] [stdout] test context::store::tests::context_store_list_sessions_returns_all ... ok
[INFO] [stdout] test context::store::tests::context_store_session_exists_returns_correct_value ... ok
[INFO] [stdout] test context::store::tests::context_store_load_session_roles_returns_none_when_missing ... ok
[INFO] [stdout] test experts::registry::tests::find_by_name_case_insensitive ... ok
[INFO] [stdout] test experts::registry::tests::find_by_role_returns_all_matching_experts ... ok
[INFO] [stdout] test experts::registry::tests::get_all_experts_returns_all_registered ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_by_role_filters_by_role_and_state ... ok
[INFO] [stdout] test experts::registry::tests::find_by_role_str_matches_role_strings ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_by_role_str_in_worktree_different_worktrees_isolated ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_by_role_str_filters_by_role_string_and_state ... ok
[INFO] [stdout] test context::store::tests::context_store_save_and_load_expert_context ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_by_role_str_in_worktree_excludes_non_idle ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_by_role_str_in_worktree_filters_by_worktree ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_by_role_str_in_worktree_none_returns_only_main_repo ... ok
[INFO] [stdout] test experts::registry::tests::get_idle_experts_filters_by_state ... ok
[INFO] [stdout] test experts::registry::tests::is_expert_idle_returns_correct_state ... ok
[INFO] [stdout] test experts::registry::tests::register_expert_assigns_id_and_updates_lookups ... ok
[INFO] [stdout] test experts::registry::tests::register_expert_duplicate_name_fails ... ok
[INFO] [stdout] test experts::registry::tests::registry_new_creates_empty_registry ... ok
[INFO] [stdout] test experts::registry::tests::registry_default_creates_empty_registry ... ok
[INFO] [stdout] test experts::registry::tests::remove_expert_cleans_up_all_lookups ... ok
[INFO] [stdout] test experts::registry::tests::remove_nonexistent_expert_returns_none ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_role_preserves_other_experts_in_same_role ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_role_nonexistent_expert_fails ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_role_updates_expert_and_lookups ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_state_changes_state ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_state_nonexistent_expert_fails ... ok
[INFO] [stdout] test experts::registry::tests::register_expert_with_existing_id ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_role_cleans_up_empty_old_role_entry ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_worktree_clears_path ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_worktree_sets_path ... ok
[INFO] [stdout] test experts::registry::tests::update_expert_worktree_nonexistent_expert_fails ... ok
[INFO] [stdout] test context::store::tests::context_store_save_and_load_session_roles ... ok
[INFO] [stdout] test feature::executor::tests::build_prompt_includes_design_file_when_present ... ok
[INFO] [stdout] test feature::executor::tests::batch_completion_wait_tracking ... ok
[INFO] [stdout] test feature::executor::tests::cancel_resets_to_idle ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_none_when_completed ... ok
[INFO] [stdout] test feature::executor::tests::build_prompt_includes_status_pending_instruction ... ok
[INFO] [stdout] test feature::executor::tests::cancel_clears_batch_completion_wait ... ok
[INFO] [stdout] test feature::executor::tests::build_prompt_omits_design_file_when_absent ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_none_when_idle ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_none_when_failed ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_resetting_during_exiting_expert ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_resetting_during_relaunching_expert ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_shows_feature_name_during_sending_batch ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_shows_feature_name_during_waiting_poll_delay ... ok
[INFO] [stdout] test feature::executor::tests::execution_badge_shows_feature_name_during_polling_status ... ok
[INFO] [stdout] test feature::executor::tests::build_prompt_includes_comma_separated_task_numbers ... ok
[INFO] [stdout] test feature::executor::tests::is_previous_batch_completed_true_when_empty_batch ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_dag_mode_batch_size_limit ... ok
[INFO] [stdout] test feature::executor::tests::is_previous_batch_completed_false_when_some_incomplete ... ok
[INFO] [stdout] test feature::executor::tests::is_previous_batch_completed_true_when_all_done ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_dag_mode_respects_deps ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_returns_empty_when_all_completed ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_returns_first_batch_size_uncompleted ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_dag_mode_blocked_returns_error ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_skips_completed_tasks ... ok
[INFO] [stdout] test feature::executor::tests::parse_tasks_updates_progress_tracking ... ok
[INFO] [stdout] test feature::executor::tests::progress_message_format_during_execution ... ok
[INFO] [stdout] test feature::executor::tests::progress_message_format_during_reset ... ok
[INFO] [stdout] test feature::executor::tests::record_batch_sent_stores_task_numbers ... ok
[INFO] [stdout] test feature::executor::tests::validate_fails_when_tasks_file_missing ... ok
[INFO] [stdout] test feature::executor::tests::progress_counts_reflect_task_file_state ... ok
[INFO] [stdout] test feature::executor::tests::validate_leaves_design_file_none_when_absent ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_sequential_mode_unchanged ... ok
[INFO] [stdout] test feature::executor::tests::next_batch_returns_fewer_when_fewer_remain ... ok
[INFO] [stdout] test feature::executor::tests::validate_succeeds_when_tasks_file_exists ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_cycle_detected ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_all_done ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_cycle_reports_cycle_members ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_blocked_when_deps_incomplete ... ok
[INFO] [stdout] test feature::executor::tests::validate_sets_design_file_when_exists ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_no_cycle_empty_cycle_members ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_no_deps_always_runnable ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_duplicate_deps_not_false_cycle ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_missing_dep_blocks_task ... ok
[INFO] [stdout] test feature::executor::tests::progress_counts_update_on_reparse ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_self_cycle_detected ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_downstream_of_cycle_excluded_from_cycle_members ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_simple_chain ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_parallel_after_common_dep ... ok
[INFO] [stdout] test feature::scheduler::tests::dag_three_node_cycle_reports_all_members ... ok
[INFO] [stdout] test feature::scheduler::tests::sequential_all_done ... ok
[INFO] [stdout] test feature::scheduler::tests::sequential_ignores_deps ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_completed_tasks ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_deps_empty_bracket ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_deps_whitespace_variants ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_empty_content ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_deps_with_dot_notation ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_ignores_non_task_lines ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_mixed_completed_and_incomplete ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_incomplete_tasks ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_mixed_deps_and_no_deps ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_multi_level_dot_notation ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_no_task_lines ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_real_world_format ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_subtasks_with_dot_notation ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_discovery_absent_without_template ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_without_deps ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_discovery_renders_status_dir ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_includes_discovery_agent ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_discovery_renders_worktree_path ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_renders_expert_id ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_title_preserved_with_deps ... ok
[INFO] [stdout] test feature::task_parser::tests::parse_tasks_with_deps ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_discovery_renders_manifest_path ... ok
[INFO] [stdout] test instructions::defaults::tests::default_role_names_contains_all_defaults ... ok
[INFO] [stdout] test instructions::defaults::tests::get_default_returns_none_for_unknown_role ... ok
[INFO] [stdout] test instructions::file_writer::tests::agents_file_path_different_expert_ids ... ok
[INFO] [stdout] test instructions::file_writer::tests::agents_file_path_returns_expected_path ... ok
[INFO] [stdout] test instructions::file_writer::tests::cleanup_instruction_file_noop_when_missing ... ok
[INFO] [stdout] test instructions::file_writer::tests::cleanup_instruction_file_removes_existing ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_pending_command ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_pre_tool_use_hook ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_processing_command ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_status_path ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_stop_hook ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_user_prompt_submit ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_escapes_single_quote_in_status_path ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_is_valid_json ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_pre_tool_use_blocks_queue_writes ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_pre_tool_use_has_write_edit_bash_matcher ... ok
[INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_pre_tool_use_suggests_outbox ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_returns_none_when_no_template ... ok
[INFO] [stdout] test instructions::file_writer::tests::instruction_file_path_different_expert_ids ... ok
[INFO] [stdout] test instructions::agents::tests::render_agents_json_returns_valid_json_with_template ... ok
[INFO] [stdout] test instructions::defaults::tests::get_default_returns_content_for_known_roles ... ok
[INFO] [stdout] test instructions::file_writer::tests::write_agents_file_creates_dir_and_file ... ok
[INFO] [stdout] test instructions::defaults::tests::embedded_instructions_are_not_empty ... ok
[INFO] [stdout] test instructions::file_writer::tests::write_agents_file_overwrites_existing ... ok
[INFO] [stdout] test instructions::file_writer::tests::instruction_file_path_returns_expected_path ... ok
[INFO] [stdout] test instructions::file_writer::tests::write_instruction_file_creates_dir_and_file ... ok
[INFO] [stdout] test instructions::file_writer::tests::write_instruction_file_overwrites_existing ... ok
[INFO] [stdout] test instructions::file_writer::tests::settings_file_path_different_expert_ids ... ok
[INFO] [stdout] test instructions::file_writer::tests::settings_file_path_returns_expected_path ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_expert_name_variable ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_status_dir_variable ... ok
[INFO] [stdout] test instructions::file_writer::tests::write_settings_file_creates_dir_and_file ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_worktree_filter_instruction ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_expert_id_variable ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_worktree_path_variable ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_manifest_path_variable ... ok
[INFO] [stdout] test instructions::manifest::tests::discovery_template_is_read_only ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_empty_config ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_uses_session_roles ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_worktree_none_when_expert_not_in_registry ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_is_valid_json ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_includes_worktree_paths ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_includes_all_experts ... ok
[INFO] [stdout] test instructions::schema::tests::generated_schema_contains_severity_comment ... ok
[INFO] [stdout] test instructions::manifest::tests::write_manifest_creates_file ... ok
[INFO] [stdout] test instructions::schema::tests::generated_schema_is_valid_yaml ... ok
[INFO] [stdout] test instructions::schema::tests::generated_schema_contains_status_comment ... ok
[INFO] [stdout] test instructions::manifest::tests::generate_manifest_uses_config_roles_by_default ... ok
[INFO] [stdout] test instructions::template::tests::instruction_result_agents_json_none_without_template ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_includes_core ... ok
[INFO] [stdout] test experts::registry::property_tests::expert_state_delivery_decision_support ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_falls_back_to_general ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_passes_manifest_path_to_agents ... ok
[INFO] [stdout] test instructions::manifest::tests::write_manifest_overwrites_existing ... ok
[INFO] [stdout] test instructions::template::tests::instruction_result_includes_agents_json ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_uses_embedded_default ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_uses_user_custom ... ok
[INFO] [stdout] test instructions::template::tests::render_template_replaces_expert_identity ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_passes_status_dir_to_agents ... ok
[INFO] [stdout] test instructions::template::tests::render_core_produces_valid_markdown ... ok
[INFO] [stdout] test models::expert::tests::expert_deserializes_from_yaml ... ok
[INFO] [stdout] test instructions::template::tests::render_template_preserves_surrounding_text ... ok
[INFO] [stdout] test models::expert::tests::expert_info_new_creates_with_defaults ... ok
[INFO] [stdout] test models::expert::tests::expert_name_matching ... ok
[INFO] [stdout] test models::expert::tests::expert_activity_update ... ok
[INFO] [stdout] test models::expert::tests::expert_role_matching ... ok
[INFO] [stdout] test models::expert::tests::expert_state_color_values ... ok
[INFO] [stdout] test models::expert::tests::expert_state_default_is_idle ... ok
[INFO] [stdout] test models::expert::tests::expert_serializes_to_yaml ... ok
[INFO] [stdout] test models::expert::tests::expert_state_description_values ... ok
[INFO] [stdout] test models::expert::tests::expert_state_symbol_values ... ok
[INFO] [stdout] test models::expert::tests::expert_state_symbols_are_unique ... ok
[INFO] [stdout] test models::expert::tests::expert_state_transitions ... ok
[INFO] [stdout] test models::expert::tests::role_matching ... ok
[INFO] [stdout] test models::expert::tests::role_display ... ok
[INFO] [stdout] test models::expert::tests::same_worktree_both_same_path ... ok
[INFO] [stdout] test models::expert::tests::same_worktree_different_paths ... ok
[INFO] [stdout] test models::expert::tests::same_worktree_both_none ... ok
[INFO] [stdout] test models::expert::tests::same_worktree_is_symmetric ... ok
[INFO] [stdout] test models::expert::tests::same_worktree_none_vs_some ... ok
[INFO] [stdout] test models::expert::tests::set_worktree_path_updates_field ... ok
[INFO] [stdout] test models::expert::tests::worktree_path_backward_compat_deserialization ... ok
[INFO] [stdout] test models::expert::tests::worktree_path_none_omitted_in_serialization ... ok
[INFO] [stdout] test models::expert::tests::worktree_path_defaults_to_none ... ok
[INFO] [stdout] test instructions::template::tests::load_instruction_passes_worktree_path_to_agents ... ok
[INFO] [stdout] test models::expert::tests::worktree_path_serialization_roundtrip ... ok
[INFO] [stdout] test models::expert::tests::same_worktree_is_reflexive ... ok
[INFO] [stdout] test models::message::tests::message_builder_methods ... ok
[INFO] [stdout] test models::message::tests::message_delivery_attempts ... ok
[INFO] [stdout] test models::message::tests::message_deserializes_from_yaml ... ok
[INFO] [stdout] test models::message::tests::message_expiration_logic ... ok
[INFO] [stdout] test models::message::tests::message_new_creates_with_defaults ... ok
[INFO] [stdout] test models::message::tests::message_priority_default_is_normal ... ok
[INFO] [stdout] test models::message::tests::message_priority_ordering ... ok
[INFO] [stdout] test models::message::tests::message_recipient_constructors ... ok
[INFO] [stdout] test models::message::tests::message_recipient_expert_id_yaml_deserializes ... ok
[INFO] [stdout] test models::message::tests::message_recipient_expert_name_yaml_is_rejected ... ok
[INFO] [stdout] test instructions::template::tests::render_template_replaces_status_file_path ... ok
[INFO] [stdout] test instructions::template::tests::render_template_replaces_yaml_schema ... ok
[INFO] [stdout] test models::message::tests::message_recipient_role_yaml_deserializes ... ok
[INFO] [stdout] test models::message::tests::message_type_default_is_query ... ok
[INFO] [stdout] test models::message::tests::message_serializes_to_yaml ... ok
[INFO] [stdout] test models::queued_message::tests::message_status_default_is_pending ... ok
[INFO] [stdout] test models::queued_message::tests::queued_message_deserializes_from_yaml ... ok
[INFO] [stdout] test models::queued_message::tests::queued_message_serializes_to_yaml ... ok
[INFO] [stdout] test models::queued_message::tests::queued_message_delivery_attempt_tracking ... ok
[INFO] [stdout] test models::queued_message::tests::queued_message_new_creates_with_defaults ... ok
[INFO] [stdout] test models::queued_message::tests::queued_message_status_transitions ... ok
[INFO] [stdout] test models::report::tests::report_complete_sets_done_status ... ok
[INFO] [stdout] test models::report::tests::report_deserializes_from_yaml ... ok
[INFO] [stdout] test models::report::tests::report_duration_returns_none_when_not_completed ... ok
[INFO] [stdout] test models::queued_message::tests::queued_message_should_retry_logic ... ok
[INFO] [stdout] test models::report::tests::report_fail_sets_failed_status ... ok
[INFO] [stdout] test models::report::tests::report_duration_returns_some_when_completed ... ok
[INFO] [stdout] test models::report::tests::report_new_creates_in_progress ... ok
[INFO] [stdout] test models::report::tests::report_serializes_to_yaml ... ok
[INFO] [stdout] test models::report::tests::report_add_finding_appends_to_list ... ok
[INFO] [stdout] test models::report::tests::sample_yaml_schema_contains_required_fields ... ok
[INFO] [stdout] test models::report::tests::sample_yaml_schema_generates_valid_yaml ... ok
[INFO] [stdout] test models::report::tests::validate_accepts_all_valid_severities ... ok
[INFO] [stdout] test models::report::tests::validate_fails_for_invalid_severity ... ok
[INFO] [stdout] test models::report::tests::validate_collects_multiple_errors ... ok
[INFO] [stdout] test models::report::tests::validate_fails_for_multiline_recommendation ... ok
[INFO] [stdout] test models::report::tests::validate_passes_for_valid_report ... ok
[INFO] [stdout] test models::message::property_tests::message_recipient_serialization_round_trip ... ok
[INFO] [stdout] test experts::registry::property_tests::expert_state_consistency_across_lookups ... ok
[INFO] [stdout] test experts::registry::property_tests::expert_state_tracking_accuracy ... ok
[INFO] [stdout] test models::message::property_tests::message_content_serialization_round_trip ... ok
[INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_retry_logic ... ok
[INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_status_update ... ok
[INFO] [stdout] test models::message::property_tests::message_persistence_round_trip ... ok
[INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_failure_reason ... ok
[INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_increments_correctly ... ok
[INFO] [stdout] test queue::manager::property_tests::error_type_coverage ... ok
[INFO] [stdout] test queue::manager::property_tests::error_logging_message_validation_failures ... ok
[INFO] [stdout] test queue::manager::property_tests::error_logging_invalid_yaml_parsing ... ok
[INFO] [stdout] test queue::manager::property_tests::error_logging_delivery_lifecycle_events ... ok
[INFO] [stdout] test queue::manager::property_tests::error_logging_file_system_isolation ... ok
[INFO] [stdout] test queue::manager::property_tests::message_dequeue_removes_correctly ... ok
[INFO] [stdout] test queue::manager::property_tests::error_logging_outbox_error_isolation ... ok
[INFO] [stdout] test queue::manager::property_tests::message_queue_accepts_valid_outbox_messages ... ok
[INFO] [stdout] test queue::manager::tests::detect_misplaced_message_identifies_raw_message ... ok
[INFO] [stdout] test queue::manager::tests::detect_misplaced_message_returns_none_for_empty_id ... ok
[INFO] [stdout] test queue::manager::tests::detect_misplaced_message_returns_none_for_garbage ... ok
[INFO] [stdout] test queue::manager::tests::detect_misplaced_message_returns_none_for_queued_message ... ok
[INFO] [stdout] test queue::manager::property_tests::message_lifecycle_max_attempts_cleanup ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_cleanup_removes_all ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_dequeue_removes_message ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_cleanup_expired_messages ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_enqueue_and_read_message ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_init_creates_directories ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_init_creates_message_directories ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_list_reports_returns_all ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_priority_ordering ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_process_outbox_invalid_message ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_get_pending_messages_filters_correctly ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_process_outbox_valid_message ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_update_delivery_attempts ... ok
[INFO] [stdout] test queue::manager::tests::queue_manager_write_and_read_report ... ok
[INFO] [stdout] test queue::manager::tests::read_queue_skips_raw_message_in_queue_directory ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_complete_message_flow_outbox_to_queue ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_delivery_with_state_transitions ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_concurrent_messaging_multiple_experts ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_message_persistence_across_restart ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_message_cleanup_end_to_end ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_role_based_routing ... ok
[INFO] [stdout] test queue::router::integration_tests::integration_priority_ordering_in_concurrent_messages ... ok
[INFO] [stdout] test queue::router::property_tests::message_format_preserves_special_characters ... ok
[INFO] [stdout] test queue::router::property_tests::message_format_consistency_across_types ... ok
[INFO] [stdout] test queue::router::property_tests::message_format_standardization ... ok
[INFO] [stdout] test queue::manager::property_tests::message_validation_consistency ... ok
[INFO] [stdout] test queue::manager::property_tests::message_lifecycle_ttl_expiration ... ok
[INFO] [stdout] test queue::router::property_tests::non_blocking_delivery_state_transitions ... ok
[INFO] [stdout] test queue::manager::property_tests::error_logging_cleanup_events ... ok
[INFO] [stdout] test queue::manager::property_tests::message_priority_ordering_is_consistent ... ok
[INFO] [stdout] test queue::router::property_tests::recipient_targeting_consistency ... ok
[INFO] [stdout] test queue::router::tests::find_recipient_by_expert_id ... ok
[INFO] [stdout] test queue::router::tests::find_recipient_by_role_returns_idle_expert ... ok
[INFO] [stdout] test queue::router::tests::find_recipient_by_role_returns_none_when_no_idle_experts ... ok
[INFO] [stdout] test queue::router::tests::format_message_for_delivery_creates_standard_format ... ok
[INFO] [stdout] test queue::router::tests::get_queue_stats_returns_correct_counts ... ok
[INFO] [stdout] test queue::router::tests::is_expert_idle_returns_correct_status ... ok
[INFO] [stdout] test queue::router::tests::process_outbox_delegates_to_queue_manager ... ok
[INFO] [stdout] test queue::router::tests::process_queue_handles_empty_queue ... ok
[INFO] [stdout] test queue::router::tests::process_queue_increments_message_delivery_attempts ... ok
[INFO] [stdout] test queue::router::tests::process_queue_removes_message_after_max_delivery_attempts ... ok
[INFO] [stdout] test queue::router::tests::router_new_creates_with_dependencies ... ok
[INFO] [stdout] test queue::router::worktree_tests::attempt_delivery_same_worktree_finds_recipient ... ok
[INFO] [stdout] test queue::router::worktree_tests::attempt_delivery_worktree_mismatch_produces_failed_result ... ok
[INFO] [stdout] test queue::router::worktree_tests::find_recipient_by_id_worktree_mismatch_returns_none ... ok
[INFO] [stdout] test queue::router::worktree_tests::find_recipient_by_role_different_worktree_returns_none ... ok
[INFO] [stdout] test queue::router::worktree_tests::find_recipient_by_role_main_repo_only_finds_main_repo ... ok
[INFO] [stdout] test queue::router::worktree_tests::find_recipient_by_role_returns_only_same_worktree ... ok
[INFO] [stdout] test queue::router::worktree_tests::main_repo_experts_can_find_each_other_by_id ... ok
[INFO] [stdout] test queue::router::worktree_tests::process_queue_respects_worktree_isolation ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_different_worktrees ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_none_none ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_none_some ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_nonexistent_recipient ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_nonexistent_sender ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_some_none ... ok
[INFO] [stdout] test queue::router::worktree_tests::worktree_matches_some_same ... ok
[INFO] [stdout] test session::claude::tests::capture_full_history_delegates_to_sender ... ok
[INFO] [stdout] test session::claude::tests::claude_manager_creates_with_session_name ... ok
[INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_false_for_claude ... ok
[INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_false_for_node ... ok
[INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_false_for_ssh ... ok
[INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_false_when_none ... ok
[INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_true_for_bash ... ok
[INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_true_for_zsh ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_quotes_paths_for_shell_safety ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_with_agents_file ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_with_all_three_files ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_with_both ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_with_instruction_file ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_with_settings_file ... ok
[INFO] [stdout] test session::claude::tests::launch_claude_without_instruction_file ... ok
[INFO] [stdout] test session::claude::tests::resize_all_fail_no_panic ... ok
[INFO] [stdout] test session::claude::tests::resize_all_panes_parallel_all_succeed ... ok
[INFO] [stdout] test session::claude::tests::resize_multiple_failures_do_not_block ... ok
[INFO] [stdout] test session::claude::tests::resize_one_failure_does_not_block_others ... ok
[INFO] [stdout] test session::claude::tests::resize_pane_delegates_to_sender ... ok
[INFO] [stdout] test session::claude::tests::send_clear_sends_clear_command ... ok
[INFO] [stdout] test session::claude::tests::send_exit_sends_exit_command ... ok
[INFO] [stdout] test session::claude::tests::send_instruction_chunks_and_sends_enter ... ok
[INFO] [stdout] test queue::router::property_tests::recipient_targeting_exclusivity ... ok
[INFO] [stdout] test session::claude::tests::send_keys_delegates_to_sender ... ok
[INFO] [stdout] test session::claude::tests::send_keys_with_enter_uses_default_trait_behavior ... ok
[INFO] [stdout] test session::claude::tests::send_instruction_splits_large_input ... ok
[INFO] [stdout] test session::claude::tests::wait_for_ready_returns_true_when_bypass_found ... ok
[INFO] [stdout] test session::detector::tests::detect_all_returns_states_for_all_ids ... ok
[INFO] [stdout] test session::detector::tests::ensure_status_dir_creates_directory ... ok
[INFO] [stdout] test session::detector::tests::missing_file_returns_busy ... ok
[INFO] [stdout] test session::detector::tests::pending_content_returns_idle ... ok
[INFO] [stdout] test session::detector::tests::processing_content_returns_busy ... ok
[INFO] [stdout] test session::detector::tests::set_marker_then_detect ... ok
[INFO] [stdout] test session::detector::tests::set_marker_writes_correctly ... ok
[INFO] [stdout] test session::detector::tests::unknown_content_returns_busy ... ok
[INFO] [stdout] test session::detector::tests::whitespace_trimming ... ok
[INFO] [stdout] test session::tmux::tests::capture_full_history_default_falls_back_to_capture_pane_with_escapes ... ok
[INFO] [stdout] test session::tmux::tests::capture_pane_with_escapes_default_falls_back ... ok
[INFO] [stdout] test session::tmux::tests::check_tmux_output_failure_returns_error_with_stderr ... ok
[INFO] [stdout] test session::tmux::tests::check_tmux_output_success_returns_stdout ... ok
[INFO] [stdout] test session::tmux::tests::check_tmux_status_failure_returns_error ... ok
[INFO] [stdout] test session::tmux::tests::check_tmux_status_success_returns_ok ... ok
[INFO] [stdout] test session::tmux::tests::check_tmux_status_with_empty_stderr_includes_context ... ok
[INFO] [stdout] test session::tmux::tests::check_tmux_status_with_nonzero_exit_returns_error ... ok
[INFO] [stdout] test session::tmux::tests::get_pane_current_command_default_returns_none ... ok
[INFO] [stdout] test queue::router::property_tests::non_blocking_delivery_retry_scheduling ... ok
[INFO] [stdout] test session::tmux::tests::next_tmux_buffer_name_is_unique ... ok
[INFO] [stdout] test session::tmux::tests::parse_pane_paths_empty_input ... ok
[INFO] [stdout] test session::tmux::tests::parse_pane_paths_single_window ... ok
[INFO] [stdout] test session::tmux::tests::parse_pane_paths_skips_malformed_lines ... ok
[INFO] [stdout] test session::tmux::tests::parse_pane_paths_multiple_windows ... ok
[INFO] [stdout] test session::tmux::tests::resize_pane_default_is_noop ... ok
[INFO] [stdout] test session::tmux::tests::send_keys_with_enter_routes_text_through_send_text ... ok
[INFO] [stdout] test session::tmux::tests::tmux_manager_from_config_uses_config_session_name ... ok
[INFO] [stdout] test session::tmux::tests::send_text_default_falls_back_to_send_keys ... ok
[INFO] [stdout] test session::tmux::tests::tmux_manager_new_sets_session_name ... ok
[INFO] [stdout] test session::worktree::property_tests::worktree_path_always_under_macot ... ok
[INFO] [stdout] test session::worktree::resolve_tests::resolve_fails_for_non_git_directory ... ok
[INFO] [stdout] test session::worktree::resolve_tests::resolve_from_main_repo_returns_same_path ... ok
[INFO] [stdout] test session::worktree::property_tests::worktree_path_uniqueness ... ok
[INFO] [stdout] test session::worktree::resolve_tests::resolve_from_worktree_returns_main_repo_root ... ok
[INFO] [stdout] test session::worktree::tests::worktree_dir_returns_macot_worktrees_path ... ok
[INFO] [stdout] test session::worktree::tests::worktree_exists_returns_false_for_nonexistent ... ok
[INFO] [stdout] test session::worktree::tests::worktree_launch_state_default_is_idle ... ok
[INFO] [stdout] test session::worktree::tests::worktree_path_different_branches_produce_different_paths ... ok
[INFO] [stdout] test session::worktree::tests::worktree_path_returns_branch_subdirectory ... ok
[INFO] [stdout] test session::worktree::resolve_tests::resolve_idempotent_across_worktrees ... ok
[INFO] [stdout] test tower::app::property_tests::branch_name_format_matches_expected_pattern ... ok
[INFO] [stdout] test tower::app::property_tests::system_initialization_consistency ... ok
[INFO] [stdout] test tower::app::property_tests::system_initialization_message_router_consistency ... ok
[INFO] [stdout] test tower::app::tests::clear_needs_redraw_resets_flag ... ok
[INFO] [stdout] test tower::app::tests::cursor_movement_keys_do_not_update_debounce_timer ... ok
[INFO] [stdout] test tower::app::property_tests::system_initialization_expert_state_consistency ... ok
[INFO] [stdout] test tower::app::tests::default_config_uses_dag_scheduler_mode ... ok
[INFO] [stdout] test tower::app::tests::event_poll_timeout_is_16ms ... ok
[INFO] [stdout] test tower::app::tests::expert_panel_focus_does_not_update_debounce_timer ... ok
[INFO] [stdout] test tower::app::tests::feature_executor_starts_none ... ok
[INFO] [stdout] test tower::app::tests::focus_cycle_with_panel_includes_expert_panel ... ok
[INFO] [stdout] test tower::app::tests::focus_cycle_without_panel_stays_on_task_input ... ok
[INFO] [stdout] test tower::app::tests::handle_feature_execution_cancels_when_running ... ok
[INFO] [stdout] test tower::app::tests::editing_keys_update_debounce_timer ... ok
[INFO] [stdout] test tower::app::tests::handle_mouse_click_sets_focus_based_on_area ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_a_moves_to_line_start ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_b_moves_cursor_left ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_d_deletes_forward ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_arrow_keys_do_not_move_cursor ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_e_moves_to_line_end ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_h_deletes_char ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_k_kill_line ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_f_moves_cursor_right ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_n_moves_cursor_down ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_u_unix_line_discard ... ok
[INFO] [stdout] test tower::app::tests::hiding_panel_while_focused_moves_to_task_input ... ok
[INFO] [stdout] test tower::app::tests::is_exclamation_at_input_start_returns_false_at_nonzero_pos ... ok
[INFO] [stdout] test tower::app::tests::is_exclamation_at_input_start_returns_false_for_other_char ... ok
[INFO] [stdout] test tower::app::tests::is_exclamation_at_input_start_returns_false_with_alt ... ok
[INFO] [stdout] test tower::app::tests::is_exclamation_at_input_start_returns_false_with_ctrl ... ok
[INFO] [stdout] test tower::app::tests::is_exclamation_at_input_start_returns_true_at_pos_zero ... ok
[INFO] [stdout] test tower::app::tests::is_shift_tab_for_task_input_backtab_returns_true ... ok
[INFO] [stdout] test tower::app::tests::is_shift_tab_for_task_input_plain_tab_returns_false ... ok
[INFO] [stdout] test tower::app::tests::is_shift_tab_for_task_input_tab_with_shift_returns_true ... ok
[INFO] [stdout] test tower::app::tests::key_event_triggers_quit_synchronously ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_arrows ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_backspace ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_backtab_returns_btab ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_char ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_ctrl_char ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_enter ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_esc_returns_escape_string ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_home_end_returns_none ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_page_down_returns_none ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_page_up_returns_none ... ok
[INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_tab_returns_tab_string ... ok
[INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_p_moves_cursor_up ... ok
[INFO] [stdout] test tower::app::tests::last_resized_expert_id_starts_none ... ok
[INFO] [stdout] test tower::app::tests::launch_expert_in_worktree_rejects_empty_feature_name ... ok
[INFO] [stdout] test tower::app::tests::manifest_generated_at_startup ... ok
[INFO] [stdout] test tower::app::tests::launch_expert_in_worktree_returns_early_when_in_progress ... ok
[INFO] [stdout] test tower::app::tests::manifest_includes_all_experts_after_refresh ... ok
[INFO] [stdout] test tower::app::tests::manifest_refresh_reflects_role_change ... ok
[INFO] [stdout] test tower::app::tests::manifest_refresh_reflects_worktree_assignment ... ok
[INFO] [stdout] test tower::app::tests::mouse_click_does_not_match_zero_rect ... ok
[INFO] [stdout] test tower::app::tests::manifest_refresh_updates_file ... ok
[INFO] [stdout] test tower::app::tests::mouse_click_matches_expert_panel_when_visible ... ok
[INFO] [stdout] test tower::app::tests::point_in_rect_detects_inside ... ok
[INFO] [stdout] test tower::app::tests::point_in_rect_detects_outside ... ok
[INFO] [stdout] test tower::app::tests::needs_redraw_initialized_to_true ... ok
[INFO] [stdout] test tower::app::tests::poll_feature_executor_sending_batch_blocked_transitions_to_failed ... ok
[INFO] [stdout] test tower::app::tests::poll_messages_sets_needs_redraw ... ok
[INFO] [stdout] test tower::app::tests::poll_feature_executor_sending_batch_all_done_transitions_to_completed ... ok
[INFO] [stdout] test tower::app::tests::poll_status_sets_needs_redraw ... ok
[INFO] [stdout] test tower::app::tests::poll_status_skipped_during_debounce_no_redraw ... ok
[INFO] [stdout] test tower::app::tests::poll_reports_sets_needs_redraw ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_claude_not_ready_message ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_failure_transitions_to_idle ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_not_finished_stays_in_progress ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_idle_stays_idle ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_propagates_worktree_to_both_registries ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_sets_needs_redraw_on_completion ... ok
[INFO] [stdout] test tower::app::tests::restore_worktree_paths_handles_no_context ... ok
[INFO] [stdout] test tower::app::tests::poll_worktree_launch_success_transitions_to_idle ... ok
[INFO] [stdout] test tower::app::tests::restore_worktree_paths_skips_nonexistent_paths ... ok
[INFO] [stdout] test tower::app::tests::restore_worktree_paths_loads_persisted_context ... ok
[INFO] [stdout] test tower::app::tests::return_expert_no_worktree_shows_error ... ok
[INFO] [stdout] test tower::app::tests::return_expert_no_expert_selected_shows_error ... ok
[INFO] [stdout] test tower::app::tests::start_feature_execution_rejects_empty_input ... ok
[INFO] [stdout] test tower::app::tests::start_feature_execution_rejects_missing_task_file ... ok
[INFO] [stdout] test tower::app::tests::toggle_panel_visibility ... ok
[INFO] [stdout] test tower::app::tests::tower_app_expert_registry_matches_config ... ok
[INFO] [stdout] test tower::app::tests::set_message_sets_needs_redraw ... ok
[INFO] [stdout] test tower::app::tests::tower_app_focus_stays_on_task_input_without_panel ... ok
[INFO] [stdout] test tower::app::tests::tower_app_initializes_messaging_system ... ok
[INFO] [stdout] test tower::app::tests::tower_app_quit_aborts_in_progress_expert_panel_update ... ok
[INFO] [stdout] test tower::app::tests::tower_app_message_management ... ok
[INFO] [stdout] test tower::app::tests::tower_app_quit_stops_running ... ok
[INFO] [stdout] test session::claude::tests::wait_for_ready_returns_false_on_timeout ... ok
[INFO] [stdout] test tower::app::tests::tower_app_starts_running ... ok
[INFO] [stdout] test tower::app::tests::update_focus_syncs_expert_panel_focus_state ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::ansi_parse_malformed_does_not_panic ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::ansi_parse_plain_text ... ok
[INFO] [stdout] test tower::app::tests::tower_app_set_focus_changes_focus ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::ansi_parse_colored_text ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::enter_scroll_mode_disables_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::enter_scroll_mode_loads_content ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::enter_scroll_mode_positions_at_bottom ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::auto_scroll_positions_at_visual_bottom_with_wrapping ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::enter_scroll_mode_reaches_visual_bottom_after_render ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::enter_scroll_mode_sets_flag ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::auto_scroll_not_re_enabled_during_scroll_mode ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::exit_scroll_mode_enables_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::exit_scroll_mode_resets_hash ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::panel_starts_not_scrolling ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::panel_starts_visible ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::preview_size_saturates_at_zero ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::preview_size_subtracts_margin_from_render_size ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::preview_size_with_narrow_terminal ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::render_idempotent_with_cache ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::render_no_scroll_indicator_when_auto_scrolling ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::render_shows_history_indicator_when_scrolling ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::render_shows_scroll_indicator_when_not_auto_scrolling ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::render_updates_last_render_size ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_down_increments ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_down_to_bottom_re_enables_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_offset_above_bottom_does_not_re_enable_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_state_preserved_after_cache_invalidation ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_to_bottom_enables_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::exit_scroll_mode_clears_flag ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::last_render_size_starts_at_zero ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_to_top_disables_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_to_top_sets_offset_to_zero ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_up_at_zero_stays_zero ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_up_disables_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_content_does_not_auto_scroll_when_disabled ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_expert_different_resets_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_expert_exits_scroll_mode ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_expert_resets_content_hash ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_expert_same_id_preserves_scroll_mode ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_expert_same_preserves_scroll ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_expert_tracks_id ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_focused_changes_state ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::show_and_hide ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::scroll_to_bottom_reaches_visual_bottom_after_render ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::starts_unfocused ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::toggle_hides_visible_panel ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::toggle_twice_returns_to_visible ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_noop_when_scrolling ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_returns_false_on_same_content ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_returns_true_on_different_content ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_returns_true_on_new_content ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_skips_ansi_parsing_when_unchanged ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_updates_line_count ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::visual_line_count_cache_invalidated_on_content_change ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::visual_line_count_cache_invalidated_on_width_change ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::visual_line_count_cache_reused_when_unchanged ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::word_wrap_visual_line_count_matches_ratatui ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::xxh3_change_detection_matches_sha256_behavior ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::xxh3_distinct_inputs_produce_distinct_hashes ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::xxh3_empty_content_handled_correctly ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::xxh3_identical_inputs_produce_identical_hashes ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_includes_worktree_shortcut ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_ctrl_g_for_feature_execution ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_ctrl_j_for_expert_panel ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_ctrl_t_for_panel_switch ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_editing_keybindings ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_exclamation_for_bash_mode ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_expert_panel_keybindings ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::set_content_auto_scrolls_when_enabled ... ok
[INFO] [stdout] test tower::widgets::expert_panel_display::tests::try_set_content_respects_auto_scroll ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_remote_scroll_section ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::modal_becomes_visible_after_show ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::modal_starts_hidden ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::toggle_switches_visibility ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_f1_for_help ... ok
[INFO] [stdout] test tower::widgets::help_modal::tests::modal_becomes_hidden_after_hide ... ok
[INFO] [stdout] test queue::manager::property_tests::message_lifecycle_get_pending_filters_correctly ... ok
[INFO] [stdout] test queue::router::property_tests::non_blocking_delivery_enforcement ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_message_fields_accessible ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_recipient_formatting ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_type_and_priority_symbols ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_filter_by_priority ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_filter_by_type ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_focus_state ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_navigation ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_new_creates_empty ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_prev_navigation ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_priority_symbol_returns_correct_values ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_recipient_display_formats_correctly ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_set_messages_updates_and_filters ... ok
[INFO] [stdout] test tower::widgets::messaging_display::tests::messaging_display_type_symbol_returns_correct_values ... ok
[INFO] [stdout] test tower::widgets::report_detail_modal::tests::modal_becomes_hidden_after_hide ... ok
[INFO] [stdout] test tower::widgets::report_detail_modal::tests::modal_becomes_visible_after_show ... ok
[INFO] [stdout] test tower::widgets::report_detail_modal::tests::modal_starts_hidden ... ok
[INFO] [stdout] test tower::widgets::report_detail_modal::tests::scroll_down_respects_max_lines ... ok
[INFO] [stdout] test tower::widgets::report_detail_modal::tests::scroll_offset_resets_on_show ... ok
[INFO] [stdout] test tower::widgets::report_detail_modal::tests::scroll_up_does_not_go_negative ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::open_detail_for_expert_opens_matching_report ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::open_detail_for_expert_returns_false_when_no_report ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_close_detail_switches_to_list_mode ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_empty_by_default ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_focus_state ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_navigation ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_open_detail_switches_to_detail_mode ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_open_detail_without_selection_stays_in_list ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_prev_navigation ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_selected_report_returns_current ... ok
[INFO] [stdout] test tower::widgets::report_display::tests::report_display_starts_in_list_mode ... ok
[INFO] [stdout] test tower::widgets::role_selector::tests::role_selector_hide_resets_state ... ok
[INFO] [stdout] test tower::widgets::role_selector::tests::role_selector_initially_hidden ... ok
[INFO] [stdout] test tower::widgets::role_selector::tests::role_selector_navigation ... ok
[INFO] [stdout] test tower::widgets::role_selector::tests::role_selector_prev_navigation ... ok
[INFO] [stdout] test tower::widgets::role_selector::tests::role_selector_show_makes_visible ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::execution_badge_absent_when_none ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::execution_badge_cleared_when_set_to_none ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::execution_badge_shows_feature_name_when_set ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::execution_badge_shows_resetting_when_set ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::expert_count_returns_correct_count ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::format_relative_path_empty_inputs ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::format_relative_path_same_dir ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::format_relative_path_subdirectory ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::format_relative_path_truncates_long_path ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::format_relative_path_unrelated ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::has_report_returns_correct_value ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::selected_returns_expert_entry ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::set_expert_reports_empty_set ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::set_expert_reports_stores_ids ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::status_display_empty_by_default ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::status_display_focus_state ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::status_display_navigation ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::status_display_prev_navigation ... ok
[INFO] [stdout] test tower::widgets::status_display::tests::status_display_summary ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::cursor_line_col_empty_buffer ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::cursor_line_col_japanese_multiline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::cursor_line_col_multiline_end ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::cursor_line_col_single_line_end ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::cursor_line_col_start_of_second_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::cursor_line_col_trailing_newline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_clamps_overflow_after_deletion ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_clear_resets ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_compact_layout ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_expanded_layout ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_no_change_when_cursor_in_viewport ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_no_wrap_unchanged ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_scroll_follows_cursor_down ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_scroll_follows_cursor_up ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_wrapping_scrolls_correctly ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::ensure_cursor_visible_zero_height_noop ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_continuation_blank ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_line_numbers_displayed ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_no_blank_row_when_cursor_at_start ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_tilde_beyond_content ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_width_4_for_100_lines ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_width_5_for_1000_lines ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_width_min_3_for_99_lines ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::gutter_width_min_3_for_single_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::kill_line_at_end_of_content_does_nothing ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::kill_line_at_end_of_line_deletes_newline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::kill_line_deletes_to_end_of_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::kill_line_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::kill_line_from_start_clears_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::kill_line_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::line_count_empty_buffer ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::line_count_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::line_count_single_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::line_count_trailing_newline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::line_count_two_lines ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_down_column_clamp ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_down_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_down_from_first_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_down_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_down_single_line_goes_to_end ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_down_three_lines ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_end_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_end_first_line_of_multiline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_end_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_end_second_line_of_multiline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_end_single_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_start_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_start_japanese ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_filter_by_type ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_start_multiline_second_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_start_single_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_up_column_clamp ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_line_start_middle_of_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_up_from_second_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_up_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_up_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_up_three_lines ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_eob_inline_with_last_content_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_eob_inline_with_trailing_newline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::move_cursor_up_single_line_goes_to_start ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_eob_present_in_output ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_eob_scrollable_with_cursor_at_last_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_eob_within_frame_cjk_wrapping ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_scroll_offset_adjusted_after_render ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::scroll_offset_zero_after_clear ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::render_eob_within_frame_with_wrapping ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::scroll_offset_zero_after_new ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_clear ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_cursor_movement ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_delete_at_start_does_nothing ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_delete_char ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_delete_forward_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_empty_by_default ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_focus_state ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_insert_char ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_insert_in_middle ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_is_empty_with_whitespace ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_japanese_cursor_movement ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_japanese_delete ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_japanese_insert ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_japanese_insert_in_middle ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_mixed_ascii_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::task_input_newline ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::unicode_scroll_integration_10_line_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::unix_line_discard_at_start_does_nothing ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::unix_line_discard_deletes_to_start_of_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::unix_line_discard_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::unix_line_discard_japanese ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::unix_line_discard_second_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_cursor_line_after_wrap ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_cursor_line_before_wrap ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_cursor_line_cjk_wrap ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_cursor_line_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_cursor_line_multiline_with_wrap ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_cursor_line_no_wrap ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_count_for_cjk ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_count_for_short_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_count_for_wrapping_line ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_cjk_wide_char_at_boundary ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_cjk_wrapping ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_empty ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_exact_width ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_multiline_with_wrapping ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_short_line_no_wrap ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_wrap_once ... ok
[INFO] [stdout] test tower::widgets::task_input::tests::visual_line_metrics_wrap_twice ... ok
[INFO] [stdout] test tower::widgets::tests::select_next_empty_is_noop ... ok
[INFO] [stdout] test tower::widgets::tests::select_next_single_element_stays_at_zero ... ok
[INFO] [stdout] test tower::widgets::tests::select_next_wraps_around ... ok
[INFO] [stdout] test tower::widgets::tests::select_prev_empty_is_noop ... ok
[INFO] [stdout] test tower::widgets::tests::select_prev_single_element_stays_at_zero ... ok
[INFO] [stdout] test tower::widgets::tests::select_prev_wraps_around ... ok
[INFO] [stdout] test utils::tests::compute_path_hash_differs_for_different_paths ... ok
[INFO] [stdout] test utils::tests::compute_path_hash_is_8_chars ... ok
[INFO] [stdout] test utils::tests::compute_path_hash_is_deterministic ... ok
[INFO] [stdout] test utils::tests::path_to_str_non_utf8_returns_error ... ok
[INFO] [stdout] test utils::tests::path_to_str_valid_utf8 ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_consecutive_hyphens_collapsed ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_dots_preserved ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_empty_returns_unnamed ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_leading_trailing_hyphens_stripped ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_only_special_chars_returns_unnamed ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_simple ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_special_chars_removed ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_truncates_long_input ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_underscores_preserved ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_uppercase_to_lowercase ... ok
[INFO] [stdout] test utils::tests::truncate_str_exact_length ... ok
[INFO] [stdout] test utils::tests::truncate_str_head_exact_length ... ok
[INFO] [stdout] test utils::tests::sanitize_branch_name_spaces_to_hyphens ... ok
[INFO] [stdout] test utils::tests::truncate_str_head_japanese_short ... ok
[INFO] [stdout] test utils::tests::truncate_str_head_long_string ... ok
[INFO] [stdout] test utils::tests::truncate_str_head_preserves_end ... ok
[INFO] [stdout] test utils::tests::truncate_str_head_short_string ... ok
[INFO] [stdout] test utils::tests::truncate_str_head_utf8_safe ... ok
[INFO] [stdout] test utils::tests::truncate_str_japanese_short ... ok
[INFO] [stdout] test utils::tests::truncate_str_long_string ... ok
[INFO] [stdout] test utils::tests::truncate_str_short_string ... ok
[INFO] [stdout] test utils::tests::truncate_str_specific_truncation ... ok
[INFO] [stdout] test utils::tests::truncate_str_utf8_safe ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_completeness ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_navigation_consistency ... ok
[INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_filter_by_priority ... ok
[INFO] [stdout] test queue::manager::property_tests::message_queue_operations_are_consistent ... ok
[INFO] [stdout] test queue::router::property_tests::priority_based_ordering ... ok
[INFO] [stdout] test queue::router::property_tests::recipient_targeting_accuracy ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 813 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 29.92s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests macot
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "43d9b64ef8fd0b0e57d6c23a049165f09322b575da0cf00007b32aa93674b068", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "43d9b64ef8fd0b0e57d6c23a049165f09322b575da0cf00007b32aa93674b068", kill_on_drop: false }`
[INFO] [stdout] 43d9b64ef8fd0b0e57d6c23a049165f09322b575da0cf00007b32aa93674b068
