[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 master#562dee4820c458d823175268e41601d4c060588a for pr-154210 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCassin01%2Fmulti_agent_control_tower" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/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-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Cassin01/multi_agent_control_tower on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "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" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded tracing-appender v0.2.4 [INFO] [stderr] Downloaded tokio-test v0.4.5 [INFO] [stderr] Downloaded socket2 v0.6.2 [INFO] [stderr] Downloaded bit-set v0.8.0 [INFO] [stderr] Downloaded crossterm_winapi v0.9.1 [INFO] [stderr] Downloaded clap_lex v0.7.7 [INFO] [stderr] Downloaded dirs v5.0.1 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.108 [INFO] [stderr] Downloaded unarray v0.1.4 [INFO] [stderr] Downloaded libredox v0.1.12 [INFO] [stderr] Downloaded bit-vec v0.8.0 [INFO] [stderr] Downloaded ansi-to-tui v7.0.0 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.108 [INFO] [stderr] Downloaded js-sys v0.3.85 [INFO] [stderr] Downloaded compact_str v0.8.1 [INFO] [stderr] Downloaded cc v1.2.55 [INFO] [stderr] Downloaded bumpalo v3.19.1 [INFO] [stderr] Downloaded zerocopy-derive v0.8.38 [INFO] [stderr] Downloaded crossterm v0.28.1 [INFO] [stderr] Downloaded itertools v0.13.0 [INFO] [stderr] Downloaded minijinja v2.15.1 [INFO] [stderr] Downloaded clap_builder v4.5.56 [INFO] [stderr] Downloaded proptest v1.9.0 [INFO] [stderr] Downloaded chrono v0.4.43 [INFO] [stderr] Downloaded unicode-width v0.2.0 [INFO] [stderr] Downloaded zerocopy v0.8.38 [INFO] [stderr] Downloaded time v0.3.46 [INFO] [stderr] Downloaded signal-hook v0.3.18 [INFO] [stderr] Downloaded serde_yaml v0.9.34+deprecated [INFO] [stderr] Downloaded clap v4.5.56 [INFO] [stderr] Downloaded rusty-fork v0.3.1 [INFO] [stderr] Downloaded strum_macros v0.26.4 [INFO] [stderr] Downloaded unsafe-libyaml v0.2.11 [INFO] [stderr] Downloaded tempfile v3.24.0 [INFO] [stderr] Downloaded wasm-bindgen v0.2.108 [INFO] [stderr] Downloaded rustix v1.1.3 [INFO] [stderr] Downloaded ratatui v0.29.0 [INFO] [stderr] Downloaded async-trait v0.1.89 [INFO] [stderr] Downloaded castaway v0.2.4 [INFO] [stderr] Downloaded zmij v1.0.18 [INFO] [stderr] Downloaded signal-hook-mio v0.2.5 [INFO] [stderr] Downloaded instability v0.3.11 [INFO] [stderr] Downloaded tokio-stream v0.1.18 [INFO] [stderr] Downloaded time-macros v0.2.26 [INFO] [stderr] Downloaded quote v1.0.44 [INFO] [stderr] Downloaded xxhash-rust v0.8.15 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.108 [INFO] [stderr] Downloaded rand_xorshift v0.4.0 [INFO] [stderr] Downloaded quick-error v1.2.3 [INFO] [stderr] Downloaded cassowary v0.3.0 [INFO] [stderr] Downloaded lru v0.12.5 [INFO] [stderr] Downloaded strum v0.26.3 [INFO] [stderr] Downloaded unicode-truncate v1.1.0 [INFO] [stderr] Downloaded libc v0.2.180 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 1eaae8bdbe529dbf20eb0c787c0ef7f0268bbe9b88b8ed577547e6d4e7cff4b7 [INFO] running `Command { std: "docker" "start" "-a" "1eaae8bdbe529dbf20eb0c787c0ef7f0268bbe9b88b8ed577547e6d4e7cff4b7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1eaae8bdbe529dbf20eb0c787c0ef7f0268bbe9b88b8ed577547e6d4e7cff4b7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1eaae8bdbe529dbf20eb0c787c0ef7f0268bbe9b88b8ed577547e6d4e7cff4b7", kill_on_drop: false }` [INFO] [stdout] 1eaae8bdbe529dbf20eb0c787c0ef7f0268bbe9b88b8ed577547e6d4e7cff4b7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0363062f59df329a57a5929f764f318e5113122ce3a82b265ca3b17674f66971 [INFO] running `Command { std: "docker" "start" "-a" "0363062f59df329a57a5929f764f318e5113122ce3a82b265ca3b17674f66971", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling unicode-ident v1.0.22 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling memchr v2.7.6 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling pin-project-lite v0.2.16 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling regex-syntax v0.8.8 [INFO] [stderr] Compiling futures-sink v0.3.31 [INFO] [stderr] Compiling instability v0.3.11 [INFO] [stderr] Compiling futures-core v0.3.31 [INFO] [stderr] Compiling foldhash v0.1.5 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling ryu v1.0.22 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling linux-raw-sys v0.4.15 [INFO] [stderr] Compiling paste v1.0.15 [INFO] [stderr] Compiling allocator-api2 v0.2.21 [INFO] [stderr] Compiling bitflags v2.10.0 [INFO] [stderr] Compiling anstyle-parse v0.2.7 [INFO] [stderr] Compiling futures-channel v0.3.31 [INFO] [stderr] Compiling castaway v0.2.4 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling powerfmt v0.2.0 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling futures-io v0.3.31 [INFO] [stderr] Compiling unicode-segmentation v1.12.0 [INFO] [stderr] Compiling anstyle v1.0.13 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling zmij v1.0.18 [INFO] [stderr] Compiling futures-task v0.3.31 [INFO] [stderr] Compiling colorchoice v1.0.4 [INFO] [stderr] Compiling deranged v0.5.5 [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Compiling compact_str v0.8.1 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling aho-corasick v1.1.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 minimal-lexical v0.2.1 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling cassowary v0.3.0 [INFO] [stderr] Compiling unicode-width v0.2.0 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Compiling lru v0.12.5 [INFO] [stderr] Compiling anyhow v1.0.100 [INFO] [stderr] Compiling clap_lex v0.7.7 [INFO] [stderr] Compiling time-core v0.1.8 [INFO] [stderr] Compiling num-conv v0.2.0 [INFO] [stderr] Compiling option-ext v0.2.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling clap_builder v4.5.56 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling crossbeam-channel v0.5.15 [INFO] [stderr] Compiling simdutf8 v0.1.5 [INFO] [stderr] Compiling unsafe-libyaml v0.2.11 [INFO] [stderr] Compiling bytes v1.11.0 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling dirs-sys v0.4.1 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling socket2 v0.6.2 [INFO] [stderr] Compiling dirs v5.0.1 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling crossterm v0.28.1 [INFO] [stderr] Compiling time v0.3.46 [INFO] [stderr] Compiling hex v0.4.3 [INFO] [stderr] Compiling xxhash-rust v0.8.15 [INFO] [stderr] Compiling unicode-truncate v1.1.0 [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling regex v1.12.2 [INFO] [stderr] Compiling clap v4.5.56 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling strum v0.26.3 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling tracing-appender v0.2.4 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling ratatui v0.29.0 [INFO] [stderr] Compiling futures v0.3.31 [INFO] [stderr] Compiling chrono v0.4.43 [INFO] [stderr] Compiling minijinja v2.15.1 [INFO] [stderr] Compiling serde_yaml v0.9.34+deprecated [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 58.11s [INFO] running `Command { std: "docker" "inspect" "0363062f59df329a57a5929f764f318e5113122ce3a82b265ca3b17674f66971", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0363062f59df329a57a5929f764f318e5113122ce3a82b265ca3b17674f66971", kill_on_drop: false }` [INFO] [stdout] 0363062f59df329a57a5929f764f318e5113122ce3a82b265ca3b17674f66971 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a4e1ae155b508e89db772a2e108228eaed03dbd75ffbee93dbc201452dc38989 [INFO] running `Command { std: "docker" "start" "-a" "a4e1ae155b508e89db772a2e108228eaed03dbd75ffbee93dbc201452dc38989", kill_on_drop: false }` [INFO] [stderr] Compiling futures-core v0.3.31 [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 linux-raw-sys v0.11.0 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling quick-error v1.2.3 [INFO] [stderr] Compiling unarray v0.1.4 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling futures-channel v0.3.31 [INFO] [stderr] Compiling rand_xorshift v0.4.0 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling futures-util v0.3.31 [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 tokio-stream v0.1.18 [INFO] [stderr] Compiling macot v0.1.10 (/opt/rustwide/workdir) [INFO] [stderr] Compiling proptest v1.9.0 [INFO] [stderr] Compiling tokio-test v0.4.5 [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 05s [INFO] running `Command { std: "docker" "inspect" "a4e1ae155b508e89db772a2e108228eaed03dbd75ffbee93dbc201452dc38989", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a4e1ae155b508e89db772a2e108228eaed03dbd75ffbee93dbc201452dc38989", kill_on_drop: false }` [INFO] [stdout] a4e1ae155b508e89db772a2e108228eaed03dbd75ffbee93dbc201452dc38989 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] b28dff9db10929229272d176140b0ca3a6ff26e6b66a1910b0aaf08e9221ada2 [INFO] running `Command { std: "docker" "start" "-a" "b28dff9db10929229272d176140b0ca3a6ff26e6b66a1910b0aaf08e9221ada2", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.34s [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_get_expert_name_fallback ... ok [INFO] [stdout] test config::loader::tests::config_expert_has_role_field ... 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_name_valid ... ok [INFO] [stdout] test config::loader::tests::config_get_expert_by_name_case_insensitive ... ok [INFO] [stdout] test config::loader::tests::config_get_expert_role_fallback ... ok [INFO] [stdout] test config::loader::tests::config_get_expert_returns_correct_expert ... 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_serializes_to_yaml ... 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_get_expert_role_valid ... ok [INFO] [stdout] test config::loader::tests::config_status_file_path_format ... 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::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 context::expert::tests::expert_context_backward_compatible_deserialization_without_worktree ... ok [INFO] [stdout] test context::expert::tests::expert_context_clear_knowledge_resets ... ok [INFO] [stdout] test config::loader::tests::config_default_has_four_experts ... ok [INFO] [stdout] test config::loader::tests::config_with_project_path_sets_derived_paths ... ok [INFO] [stdout] test context::expert::tests::expert_context_clear_worktree_calls_touch ... ok [INFO] [stdout] test context::expert::tests::expert_context_deserializes_worktree_fields_from_yaml ... ok [INFO] [stdout] test context::expert::tests::expert_context_deserializes_from_yaml ... 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_serializes_worktree_fields_to_yaml ... ok [INFO] [stdout] test context::expert::tests::expert_context_new_creates_with_defaults ... ok [INFO] [stdout] test config::loader::tests::config_load_returns_default_when_file_missing ... ok [INFO] [stdout] test commands::common::tests::prepare_expert_files_with_role_uses_provided_role ... ok [INFO] [stdout] test commands::common::tests::prepare_expert_files_uses_role_not_name ... ok [INFO] [stdout] test config::loader::tests::config_session_hash_is_deterministic ... ok [INFO] [stdout] test config::loader::tests::config_session_name_format ... ok [INFO] [stdout] test context::expert::tests::expert_context_set_worktree_stores_branch_and_path ... ok [INFO] [stdout] test config::loader::tests::config_expert_role_serde_without_role_defaults ... ok [INFO] [stdout] test context::role::tests::available_roles_custom_overrides_default ... ok [INFO] [stdout] test config::loader::tests::config_scheduler_mode_sequential_from_yaml ... ok [INFO] [stdout] test context::role::tests::available_roles_names ... ok [INFO] [stdout] test context::role::tests::session_expert_roles_new_creates_empty_assignments ... 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_set_and_get_role ... ok [INFO] [stdout] test context::shared::tests::decision_new_creates_with_timestamp ... ok [INFO] [stdout] test context::shared::tests::decision_with_affects_experts_sets_list ... ok [INFO] [stdout] test context::role::tests::available_roles_from_empty_path_includes_defaults ... 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_deserializes_from_yaml ... 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::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::store::tests::context_store_add_decision_persists ... ok [INFO] [stdout] test context::role::tests::role_info_display_name_capitalized ... 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 config::loader::tests::config_resolve_expert_id_invalid ... ok [INFO] [stdout] test context::store::tests::context_store_cleanup_session_removes_all ... ok [INFO] [stdout] test context::expert::tests::expert_context_set_session_id_updates_context ... ok [INFO] [stdout] test context::store::tests::context_store_save_and_load_session_roles ... ok [INFO] [stdout] test context::store::tests::context_store_save_and_load_expert_context ... ok [INFO] [stdout] test experts::registry::tests::find_by_name_case_insensitive ... 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_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 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_different_worktrees_isolated ... 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::register_expert_with_existing_id ... ok [INFO] [stdout] test experts::registry::tests::registry_default_creates_empty_registry ... ok [INFO] [stdout] test experts::registry::tests::registry_new_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_cleans_up_empty_old_role_entry ... 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_worktree_sets_path ... ok [INFO] [stdout] test context::store::tests::context_store_load_expert_context_returns_none_when_missing ... ok [INFO] [stdout] test config::loader::tests::config_expert_role_serde_with_role ... ok [INFO] [stdout] test config::loader::tests::feature_execution_config_partial_yaml_override ... ok [INFO] [stdout] test config::loader::tests::config_loads_from_yaml_file ... ok [INFO] [stdout] test config::loader::tests::config_session_hash_differs_for_different_paths ... ok [INFO] [stdout] test config::loader::tests::config_scheduler_mode_missing_from_yaml_defaults_to_dag ... ok [INFO] [stdout] test feature::executor::tests::batch_completion_wait_tracking ... ok [INFO] [stdout] test experts::registry::tests::find_by_role_returns_all_matching_experts ... ok [INFO] [stdout] test context::store::tests::context_store_session_exists_returns_correct_value ... ok [INFO] [stdout] test feature::executor::tests::cancel_clears_batch_completion_wait ... ok [INFO] [stdout] test feature::executor::tests::execution_badge_none_when_completed ... ok [INFO] [stdout] test feature::executor::tests::execution_badge_none_when_failed ... ok [INFO] [stdout] test feature::executor::tests::execution_badge_shows_feature_name_during_polling_status ... ok [INFO] [stdout] test feature::executor::tests::execution_badge_none_when_idle ... 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::build_prompt_includes_design_file_when_present ... ok [INFO] [stdout] test feature::executor::tests::cancel_resets_to_idle ... ok [INFO] [stdout] test feature::executor::tests::build_prompt_omits_design_file_when_absent ... ok [INFO] [stdout] test feature::executor::tests::is_previous_batch_completed_true_when_all_done ... ok [INFO] [stdout] test feature::executor::tests::is_previous_batch_completed_false_when_some_incomplete ... ok [INFO] [stdout] test feature::executor::tests::next_batch_returns_empty_when_all_completed ... ok [INFO] [stdout] test feature::executor::tests::build_prompt_includes_comma_separated_task_numbers ... ok [INFO] [stdout] test context::store::tests::context_store_list_sessions_returns_all ... ok [INFO] [stdout] test feature::executor::tests::next_batch_dag_mode_batch_size_limit ... ok [INFO] [stdout] test context::store::tests::context_store_clear_expert_context_removes_files ... ok [INFO] [stdout] test feature::executor::tests::next_batch_dag_mode_respects_deps ... ok [INFO] [stdout] test feature::executor::tests::next_batch_skips_completed_tasks ... ok [INFO] [stdout] test feature::executor::tests::next_batch_returns_fewer_when_fewer_remain ... ok [INFO] [stdout] test feature::executor::tests::build_prompt_includes_status_pending_instruction ... ok [INFO] [stdout] test feature::executor::tests::next_batch_dag_mode_blocked_returns_error ... ok [INFO] [stdout] test feature::executor::tests::next_batch_returns_first_batch_size_uncompleted ... ok [INFO] [stdout] test feature::executor::tests::parse_tasks_updates_progress_tracking ... ok [INFO] [stdout] test feature::executor::tests::validate_fails_when_tasks_file_missing ... ok [INFO] [stdout] test feature::executor::tests::is_previous_batch_completed_true_when_empty_batch ... ok [INFO] [stdout] test feature::executor::tests::validate_leaves_design_file_none_when_absent ... ok [INFO] [stdout] test feature::executor::tests::validate_sets_design_file_when_exists ... ok [INFO] [stdout] test feature::executor::tests::validate_succeeds_when_tasks_file_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_self_cycle_detected ... ok [INFO] [stdout] test feature::scheduler::tests::dag_simple_chain ... ok [INFO] [stdout] test feature::executor::tests::record_batch_sent_stores_task_numbers ... ok [INFO] [stdout] test feature::executor::tests::progress_message_format_during_reset ... 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_deps_with_dot_notation ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_completed_tasks ... ok [INFO] [stdout] test feature::executor::tests::progress_counts_reflect_task_file_state ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_deps_whitespace_variants ... 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::task_parser::tests::parse_tasks_deps_empty_bracket ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_empty_content ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_mixed_completed_and_incomplete ... 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_incomplete_tasks ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_with_deps ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_title_preserved_with_deps ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_without_deps ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_multi_level_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_ignores_non_task_lines ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_no_task_lines ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_subtasks_with_dot_notation ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_real_world_format ... ok [INFO] [stdout] test feature::executor::tests::progress_counts_update_on_reparse ... 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_renders_status_dir ... ok [INFO] [stdout] test instructions::agents::tests::render_agents_json_discovery_renders_worktree_path ... ok [INFO] [stdout] test context::expert::tests::expert_context_clear_worktree_resets_fields_to_none ... ok [INFO] [stdout] test feature::executor::tests::execution_badge_resetting_during_exiting_expert ... ok [INFO] [stdout] test instructions::defaults::tests::default_role_names_contains_all_defaults ... ok [INFO] [stdout] test instructions::defaults::tests::embedded_instructions_are_not_empty ... ok [INFO] [stdout] test instructions::defaults::tests::get_default_returns_content_for_known_roles ... ok [INFO] [stdout] test instructions::defaults::tests::get_default_returns_none_for_unknown_role ... ok [INFO] [stdout] test context::role::tests::available_roles_core_excluded ... ok [INFO] [stdout] test instructions::file_writer::tests::cleanup_instruction_file_noop_when_missing ... ok [INFO] [stdout] test feature::executor::tests::execution_badge_resetting_during_relaunching_expert ... ok [INFO] [stdout] test instructions::agents::tests::render_agents_json_renders_expert_id ... ok [INFO] [stdout] test instructions::agents::tests::render_agents_json_returns_none_when_no_template ... 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_user_prompt_submit ... 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_escapes_single_quote_in_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_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_pre_tool_use_blocks_queue_writes ... ok [INFO] [stdout] test instructions::agents::tests::render_agents_json_returns_valid_json_with_template ... ok [INFO] [stdout] test instructions::file_writer::tests::settings_file_path_returns_expected_path ... ok [INFO] [stdout] test instructions::file_writer::tests::agents_file_path_returns_expected_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::generate_hooks_settings_pre_tool_use_suggests_outbox ... ok [INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_is_valid_json ... ok [INFO] [stdout] test instructions::file_writer::tests::instruction_file_path_returns_expected_path ... ok [INFO] [stdout] test instructions::agents::tests::render_agents_json_includes_discovery_agent ... 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_agents_file_overwrites_existing ... ok [INFO] [stdout] test instructions::file_writer::tests::agents_file_path_different_expert_ids ... ok [INFO] [stdout] test instructions::file_writer::tests::settings_file_path_different_expert_ids ... ok [INFO] [stdout] test instructions::file_writer::tests::instruction_file_path_different_expert_ids ... 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_path_variable ... ok [INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_expert_name_variable ... ok [INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_worktree_filter_instruction ... ok [INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_manifest_path_variable ... ok [INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_status_dir_variable ... ok [INFO] [stdout] test instructions::file_writer::tests::write_instruction_file_overwrites_existing ... ok [INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_expert_id_variable ... ok [INFO] [stdout] test instructions::manifest::tests::generate_manifest_includes_worktree_paths ... ok [INFO] [stdout] test instructions::manifest::tests::generate_manifest_uses_config_roles_by_default ... ok [INFO] [stdout] test instructions::manifest::tests::generate_manifest_is_valid_json ... 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_empty_config ... ok [INFO] [stdout] test instructions::manifest::tests::write_manifest_creates_file ... ok [INFO] [stdout] test instructions::schema::tests::generated_schema_contains_status_comment ... ok [INFO] [stdout] test instructions::schema::tests::generated_schema_contains_severity_comment ... ok [INFO] [stdout] test instructions::schema::tests::generated_schema_is_valid_yaml ... ok [INFO] [stdout] test instructions::template::tests::load_instruction_includes_core ... ok [INFO] [stdout] test instructions::template::tests::instruction_result_agents_json_none_without_template ... ok [INFO] [stdout] test instructions::template::tests::load_instruction_passes_worktree_path_to_agents ... 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::load_instruction_uses_embedded_default ... ok [INFO] [stdout] test instructions::template::tests::instruction_result_includes_agents_json ... ok [INFO] [stdout] test instructions::manifest::tests::generate_manifest_includes_all_experts ... 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 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_manifest_path_to_agents ... ok [INFO] [stdout] test instructions::template::tests::load_instruction_passes_status_dir_to_agents ... ok [INFO] [stdout] test models::expert::tests::expert_deserializes_from_yaml ... 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_state_color_values ... ok [INFO] [stdout] test models::expert::tests::expert_state_description_values ... ok [INFO] [stdout] test models::expert::tests::expert_role_matching ... ok [INFO] [stdout] test models::expert::tests::expert_state_symbol_values ... ok [INFO] [stdout] test models::expert::tests::expert_activity_update ... ok [INFO] [stdout] test models::expert::tests::expert_state_default_is_idle ... 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::same_worktree_both_none ... ok [INFO] [stdout] test models::expert::tests::same_worktree_both_same_path ... ok [INFO] [stdout] test instructions::manifest::tests::write_manifest_overwrites_existing ... ok [INFO] [stdout] test models::expert::tests::same_worktree_different_paths ... ok [INFO] [stdout] test models::expert::tests::role_display ... ok [INFO] [stdout] test models::expert::tests::same_worktree_is_reflexive ... 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::role_matching ... ok [INFO] [stdout] test models::expert::tests::worktree_path_backward_compat_deserialization ... ok [INFO] [stdout] test models::expert::tests::worktree_path_defaults_to_none ... ok [INFO] [stdout] test models::expert::tests::worktree_path_serialization_roundtrip ... ok [INFO] [stdout] test models::expert::tests::worktree_path_none_omitted_in_serialization ... ok [INFO] [stdout] test models::expert::tests::expert_serializes_to_yaml ... ok [INFO] [stdout] test instructions::template::tests::load_instruction_falls_back_to_general ... ok [INFO] [stdout] test models::message::tests::message_delivery_attempts ... 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_expiration_logic ... ok [INFO] [stdout] test models::message::tests::message_deserializes_from_yaml ... ok [INFO] [stdout] test models::message::tests::message_recipient_constructors ... ok [INFO] [stdout] test models::message::tests::message_builder_methods ... ok [INFO] [stdout] test models::queued_message::tests::queued_message_new_creates_with_defaults ... 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::message::tests::message_recipient_expert_name_yaml_is_rejected ... 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_serializes_to_yaml ... ok [INFO] [stdout] test models::queued_message::tests::queued_message_status_transitions ... ok [INFO] [stdout] test models::message::tests::message_recipient_expert_id_yaml_deserializes ... ok [INFO] [stdout] test models::report::tests::report_duration_returns_none_when_not_completed ... ok [INFO] [stdout] test models::queued_message::tests::queued_message_deserializes_from_yaml ... ok [INFO] [stdout] test models::report::tests::report_duration_returns_some_when_completed ... ok [INFO] [stdout] test models::queued_message::tests::queued_message_should_retry_logic ... 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::validate_accepts_all_valid_severities ... ok [INFO] [stdout] test models::report::tests::report_new_creates_in_progress ... ok [INFO] [stdout] test models::report::tests::validate_fails_for_multiline_recommendation ... ok [INFO] [stdout] test models::report::tests::report_serializes_to_yaml ... ok [INFO] [stdout] test models::report::tests::validate_passes_for_valid_report ... 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::sample_yaml_schema_generates_valid_yaml ... ok [INFO] [stdout] test models::report::tests::report_deserializes_from_yaml ... ok [INFO] [stdout] test models::report::tests::report_fail_sets_failed_status ... ok [INFO] [stdout] test instructions::manifest::tests::discovery_template_is_read_only ... ok [INFO] [stdout] test models::report::tests::sample_yaml_schema_contains_required_fields ... ok [INFO] [stdout] test experts::registry::property_tests::expert_state_delivery_decision_support ... 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 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 models::message::property_tests::message_persistence_round_trip ... ok [INFO] [stdout] test models::message::property_tests::message_content_serialization_round_trip ... ok [INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_status_update ... 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::property_tests::error_logging_file_system_isolation ... 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_message_directories ... ok [INFO] [stdout] test queue::manager::tests::queue_manager_init_creates_directories ... ok [INFO] [stdout] test queue::manager::tests::queue_manager_list_reports_returns_all ... ok [INFO] [stdout] test queue::manager::tests::queue_manager_process_outbox_invalid_message ... ok [INFO] [stdout] test queue::manager::tests::queue_manager_priority_ordering ... ok [INFO] [stdout] test queue::manager::tests::queue_manager_process_outbox_valid_message ... ok [INFO] [stdout] test queue::manager::property_tests::message_dequeue_removes_correctly ... ok [INFO] [stdout] test queue::manager::tests::queue_manager_write_and_read_report ... ok [INFO] [stdout] test queue::manager::tests::queue_manager_update_delivery_attempts ... 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_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_priority_ordering_in_concurrent_messages ... ok [INFO] [stdout] test queue::router::integration_tests::integration_role_based_routing ... ok [INFO] [stdout] test queue::router::integration_tests::integration_concurrent_messaging_multiple_experts ... ok [INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_retry_logic ... ok [INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_increments_correctly ... ok [INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_failure_reason ... ok [INFO] [stdout] test queue::manager::property_tests::error_logging_outbox_error_isolation ... ok [INFO] [stdout] test queue::manager::property_tests::error_logging_delivery_lifecycle_events ... 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::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::property_tests::non_blocking_delivery_state_transitions ... 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::main_repo_experts_can_find_each_other_by_id ... 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 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 queue::router::worktree_tests::worktree_matches_some_same ... 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_instruction_file ... ok [INFO] [stdout] test session::claude::tests::launch_claude_with_both ... 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_multiple_failures_do_not_block ... ok [INFO] [stdout] test session::claude::tests::resize_all_panes_parallel_all_succeed ... 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 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 queue::manager::property_tests::message_lifecycle_max_attempts_cleanup ... 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::resolve_tests::resolve_from_worktree_returns_main_repo_root ... ok [INFO] [stdout] test queue::router::property_tests::recipient_targeting_consistency ... 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 tower::app::property_tests::branch_name_format_matches_expected_pattern ... ok [INFO] [stdout] test session::worktree::resolve_tests::resolve_idempotent_across_worktrees ... 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 queue::manager::property_tests::message_validation_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::handle_mouse_click_sets_focus_based_on_area ... 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_d_deletes_forward ... ok [INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_e_moves_to_line_end ... ok [INFO] [stdout] test queue::router::property_tests::recipient_targeting_exclusivity ... 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_h_deletes_char ... ok [INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_n_moves_cursor_down ... ok [INFO] [stdout] test tower::app::property_tests::system_initialization_expert_state_consistency ... 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_p_moves_cursor_up ... 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_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_true_at_pos_zero ... ok [INFO] [stdout] test tower::app::tests::is_exclamation_at_input_start_returns_false_with_ctrl ... 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_tab_with_shift_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::keycode_to_tmux_key_arrows ... ok [INFO] [stdout] test tower::app::tests::keycode_to_tmux_key_backspace ... ok [INFO] [stdout] test tower::app::tests::key_event_triggers_quit_synchronously ... ok [INFO] [stdout] test tower::app::tests::editing_keys_update_debounce_timer ... 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::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::is_exclamation_at_input_start_returns_false_at_nonzero_pos ... ok [INFO] [stdout] test tower::app::tests::manifest_generated_at_startup ... 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::needs_redraw_initialized_to_true ... 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::manifest_includes_all_experts_after_refresh ... 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_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::manifest_refresh_reflects_role_change ... 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_feature_executor_sending_batch_all_done_transitions_to_completed ... 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_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 session::worktree::property_tests::worktree_path_uniqueness ... ok [INFO] [stdout] test tower::app::tests::poll_worktree_launch_success_transitions_to_idle ... ok [INFO] [stdout] test tower::app::tests::return_expert_no_expert_selected_shows_error ... 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_loads_persisted_context ... ok [INFO] [stdout] test tower::app::tests::start_feature_execution_rejects_empty_input ... ok [INFO] [stdout] test tower::app::tests::return_expert_no_worktree_shows_error ... ok [INFO] [stdout] test tower::app::tests::start_feature_execution_rejects_missing_task_file ... ok [INFO] [stdout] test tower::app::tests::tower_app_expert_registry_matches_config ... ok [INFO] [stdout] test tower::app::tests::toggle_panel_visibility ... ok [INFO] [stdout] test tower::app::tests::tower_app_initializes_messaging_system ... 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_message_management ... ok [INFO] [stdout] test tower::app::tests::restore_worktree_paths_skips_nonexistent_paths ... 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_set_focus_changes_focus ... 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_quit_stops_running ... ok [INFO] [stdout] test tower::widgets::expert_panel_display::tests::ansi_parse_colored_text ... 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::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::auto_scroll_positions_at_visual_bottom_with_wrapping ... 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::exit_scroll_mode_clears_flag ... 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::enter_scroll_mode_reaches_visual_bottom_after_render ... 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::last_render_size_starts_at_zero ... 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::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::render_updates_last_render_size ... 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::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::scroll_to_bottom_reaches_visual_bottom_after_render ... 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_updates_line_count ... 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::visual_line_count_cache_reused_when_unchanged ... 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::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_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_includes_worktree_shortcut ... 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_ctrl_t_for_panel_switch ... ok [INFO] [stdout] test tower::widgets::help_modal::tests::help_text_shows_exclamation_for_bash_mode ... ok [INFO] [stdout] test tower::widgets::expert_panel_display::tests::visual_line_count_cache_invalidated_on_content_change ... 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::modal_becomes_hidden_after_hide ... 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::app::tests::set_message_sets_needs_redraw ... ok [INFO] [stdout] test tower::app::tests::poll_reports_sets_needs_redraw ... ok [INFO] [stdout] test queue::manager::property_tests::message_queue_accepts_valid_outbox_messages ... 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::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::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 session::claude::tests::wait_for_ready_returns_false_on_timeout ... ok [INFO] [stdout] test utils::tests::path_to_str_non_utf8_returns_error ... ok [INFO] [stdout] test utils::tests::compute_path_hash_is_deterministic ... 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::path_to_str_valid_utf8 ... 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_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_empty_returns_unnamed ... 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 queue::manager::property_tests::message_lifecycle_ttl_expiration ... ok [INFO] [stdout] test queue::router::property_tests::non_blocking_delivery_retry_scheduling ... 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 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 queue::manager::property_tests::message_priority_ordering_is_consistent ... ok [INFO] [stdout] test queue::manager::property_tests::message_lifecycle_get_pending_filters_correctly ... ok [INFO] [stdout] test queue::manager::property_tests::error_logging_cleanup_events ... ok [INFO] [stdout] test queue::router::property_tests::priority_based_ordering ... ok [INFO] [stdout] test queue::manager::property_tests::message_queue_operations_are_consistent ... 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 18.75s [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_role_fallback ... ok [INFO] [stdout] test config::loader::tests::config_load_returns_default_when_file_missing ... ok [INFO] [stdout] test config::loader::tests::config_get_expert_role_valid ... 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_name_fallback ... ok [INFO] [stdout] test config::loader::tests::config_get_expert_by_name_case_insensitive ... ok [INFO] [stdout] test config::loader::tests::config_get_expert_returns_correct_expert ... ok [INFO] [stdout] test config::loader::tests::config_get_expert_returns_none_for_invalid_id ... ok [INFO] [stdout] test config::loader::tests::config_loads_from_yaml_file ... ok [INFO] [stdout] test config::loader::tests::config_resolve_expert_id_by_number ... ok [INFO] [stdout] test config::loader::tests::config_resolve_expert_id_invalid ... ok [INFO] [stdout] test config::loader::tests::config_resolve_expert_id_by_name ... ok [INFO] [stdout] test config::loader::tests::config_role_instructions_path_defaults_to_config_dir ... ok [INFO] [stdout] test config::loader::tests::config_get_expert_name_valid ... ok [INFO] [stdout] test config::loader::tests::config_scheduler_mode_defaults_to_dag ... ok [INFO] [stdout] test commands::common::tests::prepare_expert_files_uses_role_not_name ... 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_serializes_to_yaml ... ok [INFO] [stdout] test config::loader::tests::config_scheduler_mode_sequential_from_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_session_name_format ... ok [INFO] [stdout] test config::loader::tests::config_status_file_path_format ... ok [INFO] [stdout] test config::loader::tests::config_with_num_experts_adjusts_list ... ok [INFO] [stdout] test config::loader::tests::config_with_num_experts_expands_list ... 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::feature_execution_config_in_default_config ... ok [INFO] [stdout] test context::expert::tests::expert_context_add_file_analysis_appends ... ok [INFO] [stdout] test context::expert::tests::expert_context_backward_compatible_deserialization_without_worktree ... ok [INFO] [stdout] test context::expert::tests::expert_context_clear_knowledge_resets ... ok [INFO] [stdout] test config::loader::tests::feature_execution_config_partial_yaml_override ... 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_has_no_worktree ... ok [INFO] [stdout] test context::expert::tests::expert_context_new_creates_with_defaults ... 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::available_roles_core_excluded ... ok [INFO] [stdout] test context::role::tests::session_expert_roles_new_creates_empty_assignments ... 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::role::tests::session_expert_roles_update_existing_role ... ok [INFO] [stdout] test context::shared::tests::decision_new_creates_with_timestamp ... ok [INFO] [stdout] test context::shared::tests::decision_with_affects_experts_sets_list ... ok [INFO] [stdout] test context::role::tests::role_info_display_name_title_case_with_separators ... 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::shared::tests::shared_context_get_decisions_by_topic_filters_case_insensitive ... ok [INFO] [stdout] test context::role::tests::available_roles_from_empty_path_includes_defaults ... 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::role::tests::available_roles_names ... 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 experts::registry::tests::find_by_name_case_insensitive ... ok [INFO] [stdout] test context::role::tests::role_info_display_name_capitalized ... 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_idle_experts_by_role_filters_by_role_and_state ... 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_filters_by_role_string_and_state ... ok [INFO] [stdout] test context::store::tests::context_store_init_session_creates_directories ... 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_different_worktrees_isolated ... 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 context::store::tests::context_store_load_expert_context_returns_none_when_missing ... 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_add_decision_persists ... ok [INFO] [stdout] test experts::registry::tests::get_all_experts_returns_all_registered ... 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_session_roles ... ok [INFO] [stdout] test context::store::tests::context_store_list_sessions_returns_all ... ok [INFO] [stdout] test experts::registry::tests::is_expert_idle_returns_correct_state ... ok [INFO] [stdout] test experts::registry::tests::get_idle_experts_filters_by_state ... ok [INFO] [stdout] test experts::registry::tests::register_expert_assigns_id_and_updates_lookups ... ok [INFO] [stdout] test experts::registry::tests::register_expert_with_existing_id ... ok [INFO] [stdout] test experts::registry::tests::remove_nonexistent_expert_returns_none ... 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::update_expert_state_nonexistent_expert_fails ... ok [INFO] [stdout] test experts::registry::tests::remove_expert_cleans_up_all_lookups ... 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_role_cleans_up_empty_old_role_entry ... ok [INFO] [stdout] test experts::registry::tests::update_expert_role_nonexistent_expert_fails ... ok [INFO] [stdout] test context::store::tests::context_store_save_and_load_expert_context ... 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_worktree_sets_path ... ok [INFO] [stdout] test feature::executor::tests::execution_badge_none_when_completed ... ok [INFO] [stdout] test feature::executor::tests::execution_badge_resetting_during_relaunching_expert ... ok [INFO] [stdout] test feature::executor::tests::execution_badge_none_when_failed ... ok [INFO] [stdout] test context::store::tests::context_store_cleanup_session_removes_all ... ok [INFO] [stdout] test feature::executor::tests::cancel_resets_to_idle ... 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::execution_badge_none_when_idle ... ok [INFO] [stdout] test feature::executor::tests::execution_badge_resetting_during_exiting_expert ... ok [INFO] [stdout] test feature::executor::tests::batch_completion_wait_tracking ... ok [INFO] [stdout] test feature::executor::tests::build_prompt_includes_comma_separated_task_numbers ... 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::build_prompt_includes_status_pending_instruction ... ok [INFO] [stdout] test feature::executor::tests::build_prompt_includes_design_file_when_present ... ok [INFO] [stdout] test feature::executor::tests::execution_badge_shows_feature_name_during_waiting_poll_delay ... ok [INFO] [stdout] test feature::executor::tests::is_previous_batch_completed_false_when_some_incomplete ... ok [INFO] [stdout] test feature::executor::tests::next_batch_returns_empty_when_all_completed ... ok [INFO] [stdout] test feature::executor::tests::is_previous_batch_completed_true_when_all_done ... 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_respects_deps ... 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::next_batch_dag_mode_batch_size_limit ... ok [INFO] [stdout] test feature::executor::tests::progress_message_format_during_execution ... ok [INFO] [stdout] test feature::executor::tests::next_batch_returns_first_batch_size_uncompleted ... ok [INFO] [stdout] test feature::executor::tests::progress_message_format_during_reset ... ok [INFO] [stdout] test feature::scheduler::tests::dag_all_done ... ok [INFO] [stdout] test feature::scheduler::tests::dag_cycle_detected ... ok [INFO] [stdout] test feature::executor::tests::next_batch_sequential_mode_unchanged ... ok [INFO] [stdout] test feature::executor::tests::progress_counts_reflect_task_file_state ... ok [INFO] [stdout] test feature::executor::tests::validate_sets_design_file_when_exists ... ok [INFO] [stdout] test feature::executor::tests::parse_tasks_updates_progress_tracking ... ok [INFO] [stdout] test feature::scheduler::tests::dag_cycle_reports_cycle_members ... ok [INFO] [stdout] test feature::scheduler::tests::dag_duplicate_deps_not_false_cycle ... ok [INFO] [stdout] test feature::executor::tests::record_batch_sent_stores_task_numbers ... ok [INFO] [stdout] test feature::executor::tests::validate_succeeds_when_tasks_file_exists ... ok [INFO] [stdout] test feature::scheduler::tests::dag_blocked_when_deps_incomplete ... ok [INFO] [stdout] test feature::scheduler::tests::dag_downstream_of_cycle_excluded_from_cycle_members ... 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_parallel_after_common_dep ... ok [INFO] [stdout] test feature::scheduler::tests::dag_simple_chain ... ok [INFO] [stdout] test feature::scheduler::tests::dag_self_cycle_detected ... ok [INFO] [stdout] test feature::scheduler::tests::sequential_all_done ... ok [INFO] [stdout] test feature::scheduler::tests::dag_no_cycle_empty_cycle_members ... ok [INFO] [stdout] test feature::scheduler::tests::dag_three_node_cycle_reports_all_members ... ok [INFO] [stdout] test feature::scheduler::tests::sequential_ignores_deps ... ok [INFO] [stdout] test feature::scheduler::tests::dag_no_deps_always_runnable ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_empty_content ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_completed_tasks ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_deps_with_dot_notation ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_deps_whitespace_variants ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_deps_empty_bracket ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_mixed_completed_and_incomplete ... ok [INFO] [stdout] test feature::executor::tests::next_batch_skips_completed_tasks ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_mixed_deps_and_no_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_worktree_path ... 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 feature::executor::tests::next_batch_returns_fewer_when_fewer_remain ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_subtasks_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_incomplete_tasks ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_real_world_format ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_title_preserved_with_deps ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_no_task_lines ... ok [INFO] [stdout] test instructions::agents::tests::render_agents_json_includes_discovery_agent ... ok [INFO] [stdout] test feature::executor::tests::next_batch_dag_mode_blocked_returns_error ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_with_deps ... ok [INFO] [stdout] test feature::task_parser::tests::parse_tasks_multi_level_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_returns_none_when_no_template ... ok [INFO] [stdout] test instructions::defaults::tests::get_default_returns_content_for_known_roles ... ok [INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_pre_tool_use_hook ... 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_processing_command ... ok [INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_status_path ... ok [INFO] [stdout] test instructions::agents::tests::render_agents_json_returns_valid_json_with_template ... ok [INFO] [stdout] test instructions::defaults::tests::default_role_names_contains_all_defaults ... ok [INFO] [stdout] test instructions::defaults::tests::embedded_instructions_are_not_empty ... 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_user_prompt_submit ... ok [INFO] [stdout] test instructions::defaults::tests::get_default_returns_none_for_unknown_role ... 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::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::instruction_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::write_agents_file_creates_dir_and_file ... 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_has_write_edit_bash_matcher ... ok [INFO] [stdout] test instructions::file_writer::tests::agents_file_path_different_expert_ids ... ok [INFO] [stdout] test instructions::file_writer::tests::write_instruction_file_creates_dir_and_file ... ok [INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_status_dir_variable ... ok [INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_worktree_filter_instruction ... ok [INFO] [stdout] test instructions::file_writer::tests::agents_file_path_returns_expected_path ... ok [INFO] [stdout] test instructions::file_writer::tests::generate_hooks_settings_contains_stop_hook ... ok [INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_worktree_path_variable ... ok [INFO] [stdout] test instructions::file_writer::tests::write_instruction_file_overwrites_existing ... ok [INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_expert_id_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_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::generate_manifest_is_valid_json ... ok [INFO] [stdout] test instructions::schema::tests::generated_schema_contains_severity_comment ... ok [INFO] [stdout] test instructions::manifest::tests::generate_manifest_uses_config_roles_by_default ... ok [INFO] [stdout] test instructions::manifest::tests::generate_manifest_includes_worktree_paths ... ok [INFO] [stdout] test instructions::manifest::tests::write_manifest_overwrites_existing ... ok [INFO] [stdout] test instructions::file_writer::tests::write_agents_file_overwrites_existing ... ok [INFO] [stdout] test instructions::schema::tests::generated_schema_contains_status_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::template::tests::load_instruction_falls_back_to_general ... ok [INFO] [stdout] test instructions::template::tests::instruction_result_includes_agents_json ... 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 instructions::manifest::tests::discovery_template_contains_manifest_path_variable ... ok [INFO] [stdout] test instructions::template::tests::load_instruction_passes_status_dir_to_agents ... ok [INFO] [stdout] test instructions::template::tests::load_instruction_passes_manifest_path_to_agents ... ok [INFO] [stdout] test instructions::template::tests::load_instruction_uses_embedded_default ... ok [INFO] [stdout] test models::expert::tests::expert_info_new_creates_with_defaults ... ok [INFO] [stdout] test instructions::template::tests::render_template_replaces_status_file_path ... ok [INFO] [stdout] test instructions::template::tests::render_template_preserves_surrounding_text ... ok [INFO] [stdout] test models::expert::tests::expert_name_matching ... ok [INFO] [stdout] test models::expert::tests::expert_role_matching ... ok [INFO] [stdout] test instructions::template::tests::render_core_produces_valid_markdown ... ok [INFO] [stdout] test instructions::template::tests::render_template_replaces_expert_identity ... ok [INFO] [stdout] test models::expert::tests::expert_deserializes_from_yaml ... ok [INFO] [stdout] test instructions::file_writer::tests::write_settings_file_creates_dir_and_file ... ok [INFO] [stdout] test instructions::template::tests::render_template_replaces_yaml_schema ... ok [INFO] [stdout] test instructions::manifest::tests::discovery_template_contains_expert_name_variable ... 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_symbol_values ... ok [INFO] [stdout] test models::expert::tests::expert_state_transitions ... ok [INFO] [stdout] test models::expert::tests::expert_activity_update ... ok [INFO] [stdout] test instructions::template::tests::load_instruction_uses_user_custom ... ok [INFO] [stdout] test models::expert::tests::role_display ... ok [INFO] [stdout] test models::expert::tests::same_worktree_both_none ... ok [INFO] [stdout] test models::expert::tests::same_worktree_both_same_path ... ok [INFO] [stdout] test models::expert::tests::same_worktree_is_reflexive ... 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::expert_state_description_values ... ok [INFO] [stdout] test models::expert::tests::set_worktree_path_updates_field ... ok [INFO] [stdout] test models::expert::tests::same_worktree_different_paths ... ok [INFO] [stdout] test models::expert::tests::expert_state_symbols_are_unique ... ok [INFO] [stdout] test models::expert::tests::worktree_path_backward_compat_deserialization ... ok [INFO] [stdout] test models::expert::tests::role_matching ... ok [INFO] [stdout] test models::expert::tests::worktree_path_defaults_to_none ... ok [INFO] [stdout] test models::message::tests::message_builder_methods ... ok [INFO] [stdout] test models::message::tests::message_expiration_logic ... ok [INFO] [stdout] test models::message::tests::message_delivery_attempts ... 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_role_yaml_deserializes ... 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::message::tests::message_deserializes_from_yaml ... ok [INFO] [stdout] test models::queued_message::tests::queued_message_delivery_attempt_tracking ... ok [INFO] [stdout] test models::expert::tests::expert_serializes_to_yaml ... ok [INFO] [stdout] test models::queued_message::tests::queued_message_new_creates_with_defaults ... ok [INFO] [stdout] test instructions::template::tests::load_instruction_passes_worktree_path_to_agents ... ok [INFO] [stdout] test models::queued_message::tests::queued_message_deserializes_from_yaml ... ok [INFO] [stdout] test models::message::tests::message_recipient_expert_name_yaml_is_rejected ... ok [INFO] [stdout] test models::expert::tests::worktree_path_serialization_roundtrip ... 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::queued_message::tests::queued_message_should_retry_logic ... ok [INFO] [stdout] test models::report::tests::report_complete_sets_done_status ... ok [INFO] [stdout] test models::queued_message::tests::queued_message_status_transitions ... ok [INFO] [stdout] test models::queued_message::tests::queued_message_serializes_to_yaml ... ok [INFO] [stdout] test models::expert::tests::worktree_path_none_omitted_in_serialization ... ok [INFO] [stdout] test models::message::tests::message_type_default_is_query ... ok [INFO] [stdout] test models::report::tests::report_add_finding_appends_to_list ... 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_new_creates_in_progress ... ok [INFO] [stdout] test models::report::tests::report_deserializes_from_yaml ... ok [INFO] [stdout] test models::report::tests::validate_fails_for_multiline_recommendation ... 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_fails_for_invalid_severity ... ok [INFO] [stdout] test models::report::tests::report_fail_sets_failed_status ... ok [INFO] [stdout] test models::report::tests::validate_collects_multiple_errors ... ok [INFO] [stdout] test models::report::tests::report_serializes_to_yaml ... ok [INFO] [stdout] test models::report::tests::validate_accepts_all_valid_severities ... ok [INFO] [stdout] test models::report::tests::validate_passes_for_valid_report ... ok [INFO] [stdout] test experts::registry::property_tests::expert_state_delivery_decision_support ... ok [INFO] [stdout] test experts::registry::property_tests::expert_state_consistency_across_lookups ... ok [INFO] [stdout] test models::message::property_tests::message_recipient_serialization_round_trip ... 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 experts::registry::property_tests::expert_state_tracking_accuracy ... ok [INFO] [stdout] test queue::manager::property_tests::error_logging_invalid_yaml_parsing ... 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::error_logging_file_system_isolation ... 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::property_tests::message_dequeue_removes_correctly ... 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_write_and_read_report ... ok [INFO] [stdout] test queue::manager::tests::queue_manager_update_delivery_attempts ... 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_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_concurrent_messaging_multiple_experts ... ok [INFO] [stdout] test queue::router::integration_tests::integration_role_based_routing ... ok [INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_increments_correctly ... ok [INFO] [stdout] test queue::manager::property_tests::delivery_attempt_tracking_retry_logic ... ok [INFO] [stdout] test queue::router::property_tests::message_format_preserves_special_characters ... 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::error_logging_delivery_lifecycle_events ... ok [INFO] [stdout] test queue::router::property_tests::message_format_consistency_across_types ... 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::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::property_tests::message_format_standardization ... ok [INFO] [stdout] test queue::router::worktree_tests::attempt_delivery_same_worktree_finds_recipient ... ok [INFO] [stdout] test queue::router::tests::router_new_creates_with_dependencies ... 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::attempt_delivery_worktree_mismatch_produces_failed_result ... ok [INFO] [stdout] test queue::router::worktree_tests::worktree_matches_different_worktrees ... ok [INFO] [stdout] test queue::router::worktree_tests::worktree_matches_none_some ... ok [INFO] [stdout] test queue::router::worktree_tests::worktree_matches_none_none ... ok [INFO] [stdout] test queue::router::worktree_tests::worktree_matches_nonexistent_recipient ... ok [INFO] [stdout] test queue::router::worktree_tests::worktree_matches_some_none ... ok [INFO] [stdout] test queue::router::worktree_tests::worktree_matches_nonexistent_sender ... 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 queue::router::worktree_tests::worktree_matches_some_same ... ok [INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_true_for_bash ... ok [INFO] [stdout] test session::claude::tests::launch_claude_quotes_paths_for_shell_safety ... ok [INFO] [stdout] test session::claude::tests::is_shell_foreground_returns_true_for_zsh ... 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_without_instruction_file ... ok [INFO] [stdout] test session::claude::tests::launch_claude_with_settings_file ... 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::resize_all_fail_no_panic ... 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 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 queue::router::property_tests::recipient_targeting_consistency ... ok [INFO] [stdout] test queue::router::property_tests::recipient_targeting_exclusivity ... ok [INFO] [stdout] test session::worktree::resolve_tests::resolve_fails_for_non_git_directory ... ok [INFO] [stdout] test session::worktree::property_tests::worktree_path_always_under_macot ... 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::tests::worktree_dir_returns_macot_worktrees_path ... ok [INFO] [stdout] test queue::router::property_tests::non_blocking_delivery_state_transitions ... 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::tests::worktree_exists_returns_false_for_nonexistent ... ok [INFO] [stdout] test session::worktree::resolve_tests::resolve_idempotent_across_worktrees ... ok [INFO] [stdout] test session::worktree::property_tests::worktree_path_uniqueness ... ok [INFO] [stdout] test tower::app::property_tests::branch_name_format_matches_expected_pattern ... ok [INFO] [stdout] test tower::app::tests::clear_needs_redraw_resets_flag ... ok [INFO] [stdout] test tower::app::property_tests::system_initialization_consistency ... 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::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::handle_mouse_click_sets_focus_based_on_area ... 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_d_deletes_forward ... 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_h_deletes_char ... ok [INFO] [stdout] test tower::app::tests::editing_keys_update_debounce_timer ... ok [INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_k_kill_line ... ok [INFO] [stdout] test tower::app::property_tests::system_initialization_expert_state_consistency ... 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::handle_task_input_keys_ctrl_n_moves_cursor_down ... ok [INFO] [stdout] test tower::app::property_tests::system_initialization_message_router_consistency ... ok [INFO] [stdout] test tower::app::tests::handle_task_input_keys_ctrl_p_moves_cursor_up ... 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_exclamation_at_input_start_returns_false_at_nonzero_pos ... 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::is_shift_tab_for_task_input_tab_with_shift_returns_true ... 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::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::manifest_generated_at_startup ... ok [INFO] [stdout] test tower::app::tests::manifest_refresh_reflects_role_change ... ok [INFO] [stdout] test tower::app::tests::mouse_click_does_not_match_zero_rect ... ok [INFO] [stdout] test tower::app::tests::mouse_click_matches_expert_panel_when_visible ... ok [INFO] [stdout] test tower::app::tests::manifest_includes_all_experts_after_refresh ... ok [INFO] [stdout] test tower::app::tests::manifest_refresh_updates_file ... ok [INFO] [stdout] test tower::app::tests::manifest_refresh_reflects_worktree_assignment ... ok [INFO] [stdout] test tower::app::tests::point_in_rect_detects_inside ... ok [INFO] [stdout] test tower::app::tests::needs_redraw_initialized_to_true ... ok [INFO] [stdout] test tower::app::tests::point_in_rect_detects_outside ... ok [INFO] [stdout] test tower::app::tests::poll_messages_sets_needs_redraw ... ok [INFO] [stdout] test tower::app::tests::poll_status_sets_needs_redraw ... ok [INFO] [stdout] test tower::app::tests::poll_reports_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_feature_executor_sending_batch_all_done_transitions_to_completed ... ok [INFO] [stdout] test tower::app::tests::poll_worktree_launch_claude_not_ready_message ... ok [INFO] [stdout] test tower::app::tests::poll_feature_executor_sending_batch_blocked_transitions_to_failed ... 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_worktree_launch_failure_transitions_to_idle ... ok [INFO] [stdout] test tower::app::tests::restore_worktree_paths_handles_no_context ... 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::return_expert_no_expert_selected_shows_error ... 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::poll_worktree_launch_success_transitions_to_idle ... 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::toggle_panel_visibility ... ok [INFO] [stdout] test tower::app::tests::tower_app_expert_registry_matches_config ... ok [INFO] [stdout] test tower::app::tests::tower_app_focus_stays_on_task_input_without_panel ... ok [INFO] [stdout] test tower::app::tests::start_feature_execution_rejects_missing_task_file ... ok [INFO] [stdout] test tower::app::tests::tower_app_message_management ... 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_starts_running ... ok [INFO] [stdout] test tower::app::tests::update_focus_syncs_expert_panel_focus_state ... 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::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::widgets::expert_panel_display::tests::auto_scroll_not_re_enabled_during_scroll_mode ... 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_disables_auto_scroll ... 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::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::render_shows_history_indicator_when_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::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_state_preserved_after_cache_invalidation ... 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_to_bottom_enables_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_to_bottom_reaches_visual_bottom_after_render ... 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_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::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::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_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_noop_when_scrolling ... ok [INFO] [stdout] test tower::widgets::expert_panel_display::tests::starts_unfocused ... 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_reused_when_unchanged ... 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::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::visual_line_count_cache_invalidated_on_width_change ... 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_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::help_modal::tests::help_text_shows_ctrl_g_for_feature_execution ... ok [INFO] [stdout] test queue::manager::property_tests::message_validation_consistency ... ok [INFO] [stdout] test tower::app::tests::tower_app_initializes_messaging_system ... ok [INFO] [stdout] test tower::widgets::expert_panel_display::tests::word_wrap_visual_line_count_matches_ratatui ... ok [INFO] [stdout] test queue::manager::property_tests::message_lifecycle_max_attempts_cleanup ... 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::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 session::claude::tests::wait_for_ready_returns_false_on_timeout ... ok [INFO] [stdout] test tower::widgets::task_input::tests::render_scroll_offset_adjusted_after_render ... 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_clear ... 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::scroll_offset_zero_after_new ... 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_cursor_line_no_wrap ... 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_prev_empty_is_noop ... ok [INFO] [stdout] test tower::widgets::tests::select_next_wraps_around ... 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_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_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::compute_path_hash_differs_for_different_paths ... ok [INFO] [stdout] test utils::tests::truncate_str_head_exact_length ... ok [INFO] [stdout] test utils::tests::truncate_str_exact_length ... ok [INFO] [stdout] test utils::tests::truncate_str_head_long_string ... ok [INFO] [stdout] test utils::tests::truncate_str_head_japanese_short ... 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_navigation_consistency ... ok [INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_message_fields_accessible ... ok [INFO] [stdout] test queue::router::property_tests::non_blocking_delivery_retry_scheduling ... 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_type ... ok [INFO] [stdout] test tower::widgets::messaging_display::property_tests::ui_display_filter_by_priority ... ok [INFO] [stdout] test queue::manager::property_tests::message_lifecycle_ttl_expiration ... ok [INFO] [stdout] test queue::router::property_tests::non_blocking_delivery_enforcement ... ok [INFO] [stdout] test queue::manager::property_tests::message_priority_ordering_is_consistent ... ok [INFO] [stdout] test queue::manager::property_tests::message_lifecycle_get_pending_filters_correctly ... ok [INFO] [stdout] test queue::manager::property_tests::error_logging_cleanup_events ... ok [INFO] [stdout] test queue::router::property_tests::priority_based_ordering ... ok [INFO] [stdout] test queue::manager::property_tests::message_queue_operations_are_consistent ... 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 16.71s [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" "b28dff9db10929229272d176140b0ca3a6ff26e6b66a1910b0aaf08e9221ada2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b28dff9db10929229272d176140b0ca3a6ff26e6b66a1910b0aaf08e9221ada2", kill_on_drop: false }` [INFO] [stdout] b28dff9db10929229272d176140b0ca3a6ff26e6b66a1910b0aaf08e9221ada2