[INFO] cloning repository https://github.com/cloudbridgeuy/ralph
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/cloudbridgeuy/ralph" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcloudbridgeuy%2Fralph", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcloudbridgeuy%2Fralph'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c2771558378b106923d79fe414174b1455ad30c0
[INFO] testing cloudbridgeuy/ralph against beta-2026-04-21 for beta-1.96-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcloudbridgeuy%2Fralph" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc2/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/cloudbridgeuy/ralph
[INFO] finished tweaking git repo https://github.com/cloudbridgeuy/ralph
[INFO] tweaked toml for git repo https://github.com/cloudbridgeuy/ralph written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/cloudbridgeuy/ralph on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/cloudbridgeuy/ralph 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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a3ef8712b735031005c6823adcb62fd15d4f8d89e2059c0f1f3ab9c11109939f
[INFO] running `Command { std: "docker" "start" "-a" "a3ef8712b735031005c6823adcb62fd15d4f8d89e2059c0f1f3ab9c11109939f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a3ef8712b735031005c6823adcb62fd15d4f8d89e2059c0f1f3ab9c11109939f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a3ef8712b735031005c6823adcb62fd15d4f8d89e2059c0f1f3ab9c11109939f", kill_on_drop: false }`
[INFO] [stdout] a3ef8712b735031005c6823adcb62fd15d4f8d89e2059c0f1f3ab9c11109939f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0d6b7504e1c89e9ea04e3dc9fa29684651daf3e57dfe59013680f4ef15d201de
[INFO] running `Command { std: "docker" "start" "-a" "0d6b7504e1c89e9ea04e3dc9fa29684651daf3e57dfe59013680f4ef15d201de", kill_on_drop: false }`
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling libc v0.2.179
[INFO] [stderr]    Compiling proc-macro2 v1.0.105
[INFO] [stderr]    Compiling quote v1.0.43
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling zmij v1.0.12
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling colorchoice v1.0.4
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling syn v2.0.113
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling anstyle-parse v0.2.7
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling rand_core v0.10.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling owo-colors v4.2.3
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling deranged v0.5.5
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling num-conv v0.1.0
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling eyre v0.6.12
[INFO] [stderr]    Compiling gimli v0.32.3
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling clap_lex v0.7.6
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]    Compiling color-spantrace v0.3.0
[INFO] [stderr]    Compiling strict v0.2.0
[INFO] [stderr]    Compiling clap_builder v4.5.54
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling indexmap v2.12.1
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling tracing-error v0.2.1
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling quick-xml v0.38.4
[INFO] [stderr]    Compiling rustc-demangle v0.1.26
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling indenter v0.3.4
[INFO] [stderr]    Compiling time v0.3.44
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling toml_writer v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling toml_datetime v1.0.0+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.0.4
[INFO] [stderr]    Compiling toml_parser v1.0.9+spec-1.1.0
[INFO] [stderr]    Compiling linked-hash-map v0.5.6
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling crossbeam v0.8.4
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling flate2 v1.1.5
[INFO] [stderr]    Compiling yaml-rust v0.4.5
[INFO] [stderr]    Compiling rand v0.10.0
[INFO] [stderr]    Compiling addr2line v0.25.1
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling toml v1.0.3+spec-1.1.0
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling minimad v0.14.0
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling bytes v1.11.0
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling ctrlc v3.5.1
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling uuid v1.20.0
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling fancy-regex v0.16.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling lazy-regex-proc_macros v3.5.1
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling lazy-regex v3.5.1
[INFO] [stderr]    Compiling clap v4.5.54
[INFO] [stderr]    Compiling coolor v1.1.0
[INFO] [stderr]    Compiling backtrace v0.3.76
[INFO] [stderr]    Compiling crokey-proc_macros v1.3.0
[INFO] [stderr]    Compiling color-eyre v0.6.5
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling plist v1.8.0
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling crokey v1.3.0
[INFO] [stderr]    Compiling termimad v0.34.1
[INFO] [stderr]    Compiling syntect v5.3.0
[INFO] [stderr]    Compiling ralph_core v0.0.0 (/opt/rustwide/workdir/crates/core)
[INFO] [stderr]    Compiling xtask v0.1.0 (/opt/rustwide/workdir/xtask)
[INFO] [stderr]    Compiling ralph v0.1.0 (/opt/rustwide/workdir/crates/ralph)
[INFO] [stderr]     Finished `dev` profile [unoptimized] target(s) in 1m 19s
[INFO] running `Command { std: "docker" "inspect" "0d6b7504e1c89e9ea04e3dc9fa29684651daf3e57dfe59013680f4ef15d201de", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0d6b7504e1c89e9ea04e3dc9fa29684651daf3e57dfe59013680f4ef15d201de", kill_on_drop: false }`
[INFO] [stdout] 0d6b7504e1c89e9ea04e3dc9fa29684651daf3e57dfe59013680f4ef15d201de
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 99c2c112e6245e8be0312661eaa37922cb40982f99c1aab0dd0409f211702498
[INFO] running `Command { std: "docker" "start" "-a" "99c2c112e6245e8be0312661eaa37922cb40982f99c1aab0dd0409f211702498", kill_on_drop: false }`
[INFO] [stderr]    Compiling ralph_core v0.0.0 (/opt/rustwide/workdir/crates/core)
[INFO] [stderr]    Compiling xtask v0.1.0 (/opt/rustwide/workdir/xtask)
[INFO] [stderr]    Compiling ralph v0.1.0 (/opt/rustwide/workdir/crates/ralph)
[INFO] [stderr]     Finished `test` profile [unoptimized] target(s) in 12.85s
[INFO] running `Command { std: "docker" "inspect" "99c2c112e6245e8be0312661eaa37922cb40982f99c1aab0dd0409f211702498", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "99c2c112e6245e8be0312661eaa37922cb40982f99c1aab0dd0409f211702498", kill_on_drop: false }`
[INFO] [stdout] 99c2c112e6245e8be0312661eaa37922cb40982f99c1aab0dd0409f211702498
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 319b666af18dfbee9f71acc667fa9f45b56f75569c2943845a7c99dbc6aae87f
[INFO] running `Command { std: "docker" "start" "-a" "319b666af18dfbee9f71acc667fa9f45b56f75569c2943845a7c99dbc6aae87f", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized] target(s) in 0.37s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ralph-e83621b3b8e1d9ae)
[INFO] [stdout] 
[INFO] [stdout] running 853 tests
[INFO] [stdout] test ask::tests::test_resolve_permission_mode_cli_explicit ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_clone_with_continue ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_help_available ... ok
[INFO] [stdout] test ask::tests::test_resolve_permission_mode_none_returns_default ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_history_with_session_and_continue ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_clone_with_session_and_continue ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_history_with_continue ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_history_with_continue_and_prompt ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_permission_mode_with_other_flags ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_permission_mode_bypass ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_permission_mode_default_mode ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_permission_mode_not_specified ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_permission_mode_plan ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_permission_mode_accept_edits ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_clone_with_all_flags ... ok
[INFO] [stdout] test ask::tests::test_resolve_permission_mode_cli_explicit_default ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_history_with_all_flags ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_continue_short_flag ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_continue_flag ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_no_prompt_flag ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_continue_session_short_flags ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_session_short_flag ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_prompt ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_timeout_default ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_all_new_flags ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_theme_with_file_path ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_theme_and_no_background ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_theme_and_continue ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_verbose_tools_all ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_theme ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_continue_and_session ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_session_after_prompt ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_clone_flag ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_stdin_indicator ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_session ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_verbose_tools_specific ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_session_before_prompt ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_without_continue_flag ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_history_flag ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_without_no_prompt_flag ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_multiword_prompt ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_no_background ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_without_history_flag ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_without_prompt ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_without_clone_flag ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_without_theme_flags ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_without_session ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_all_flags_combined ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_without_verbose_tools ... ok
[INFO] [stdout] test cli::tests::persona::test_persona_list_flag_parses ... ok
[INFO] [stdout] test cli::tests::strategy::test_strategy_execute_parses_name ... ok
[INFO] [stdout] test cli::tests::ask::test_cli_parses_ask_command ... ok
[INFO] [stdout] test cli::tests::persona::test_into_action_invoke ... ok
[INFO] [stdout] test cli::tests::strategy::test_strategy_execute_requires_name ... ok
[INFO] [stdout] test cli::tests::persona::test_into_action_no_name_no_list ... ok
[INFO] [stdout] test cli::tests::strategy::test_strategy_execute_with_all_flags ... ok
[INFO] [stdout] test cli::tests::persona::test_persona_list_conflicts_with_name ... ok
[INFO] [stdout] test cli::tests::strategy::test_strategy_execute_with_max_iterations ... ok
[INFO] [stdout] test cli::tests::persona::test_into_action_list ... ok
[INFO] [stdout] test cli::tests::persona::test_persona_with_name_parses ... ok
[INFO] [stdout] test cli::tests::strategy::test_strategy_list_parses ... ok
[INFO] [stdout] test cli::tests::strategy::test_strategy_sync_parses ... ok
[INFO] [stdout] test cli::tests::strategy::test_strategy_execute_with_resume ... ok
[INFO] [stdout] test cli::tests::strategy::test_strategy_without_subcommand_fails ... ok
[INFO] [stdout] test cli::tests::test_cli_parses_iterations_command ... ok
[INFO] [stdout] test cli::tests::test_cli_parses_sessions_command ... ok
[INFO] [stdout] test cli::tests::test_iterations_with_project_filter ... ok
[INFO] [stdout] test cli::tests::test_iterations_with_all_filters ... ok
[INFO] [stdout] test cli::tests::test_cli_parses_replay_command ... ok
[INFO] [stdout] test cli::tests::test_iterations_with_session_filter ... ok
[INFO] [stdout] test cli::tests::test_replay_with_delay_fractional ... ok
[INFO] [stdout] test cli::tests::test_replay_with_iteration_long_flag ... ok
[INFO] [stdout] test cli::tests::test_replay_requires_slug ... ok
[INFO] [stdout] test cli::tests::test_replay_with_delay_integer ... ok
[INFO] [stdout] test cli::tests::test_replay_without_delay ... ok
[INFO] [stdout] test cli::tests::test_replay_with_iteration ... ok
[INFO] [stdout] test cli::tests::test_iterations_with_outcome_filter ... ok
[INFO] [stdout] test cli::tests::test_sessions_with_interrupted_outcome ... ok
[INFO] [stdout] test cli::tests::test_iterations_without_args ... ok
[INFO] [stdout] test cli::tests::test_sessions_with_outcome_filter ... ok
[INFO] [stdout] test cli::tests::test_replay_with_delay ... ok
[INFO] [stdout] test cli::tests::ask::test_ask_with_timeout ... ok
[INFO] [stdout] test cli::tests::test_sessions_with_project_filter ... ok
[INFO] [stdout] test config::tests::test_config_path_contains_ralph ... ok
[INFO] [stdout] test config::tests::test_default_ask_section ... ok
[INFO] [stdout] test cli::tests::test_sessions_with_both_filters ... ok
[INFO] [stdout] test config::tests::test_load_nonexistent_returns_default ... ok
[INFO] [stdout] test cli::tests::test_sessions_without_args ... ok
[INFO] [stdout] test config::tests::test_load_no_background ... ok
[INFO] [stdout] test config::tests::test_load_full_ask_and_theme ... ok
[INFO] [stdout] test config::tests::test_load_ask_permission_mode ... ok
[INFO] [stdout] test config::tests::test_default_config ... ok
[INFO] [stdout] test config::tests::test_load_theme_file_path ... ok
[INFO] [stdout] test config::tests::test_load_theme_name ... ok
[INFO] [stdout] test config::tests::test_load_empty_file ... ok
[INFO] [stdout] test config::tests::test_serialize_omits_none ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_addition ... ok
[INFO] [stdout] test config::tests::test_parse_error ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_full_diff ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_file_headers ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_hunk_header ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_multiple_hunks ... ok
[INFO] [stdout] test config::tests::test_unknown_fields_ignored ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_index_line ... ok
[INFO] [stdout] test cli::tests::test_replay_with_slug ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_no_changes ... ok
[INFO] [stdout] test config::tests::test_save_and_load ... ok
[INFO] [stdout] test config::tests::test_load_full_config ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_deletion ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_diff_header ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_special_characters ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_unicode ... ok
[INFO] [stdout] test edit::tests::test_iterations_to_messages_empty ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_preserves_content ... ok
[INFO] [stdout] test edit::tests::test_iterations_to_messages_handles_missing_response ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_always_produces_ansi ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_empty_diff ... ok
[INFO] [stdout] test edit::tests::test_messages_to_edit_toml_basic ... ok
[INFO] [stdout] test diff_highlight::tests::test_basic_colors_context_line ... ok
[INFO] [stdout] test edit::tests::test_pair_messages_consecutive_users ... ok
[INFO] [stdout] test edit::tests::test_iterations_to_messages_skips_neither ... ok
[INFO] [stdout] test edit::tests::test_pair_messages_empty ... ok
[INFO] [stdout] test edit::tests::test_pair_messages_assistant_only ... ok
[INFO] [stdout] test edit::tests::test_pair_messages_multiple_pairs ... ok
[INFO] [stdout] test edit::tests::test_pair_messages_user_assistant ... ok
[INFO] [stdout] test edit::tests::test_pair_messages_user_only ... ok
[INFO] [stdout] test edit::tests::test_messages_to_edit_toml_empty ... ok
[INFO] [stdout] test edit::tests::test_parse_edit_toml_empty_messages ... ok
[INFO] [stdout] test edit::tests::test_parse_edit_toml_content_trimming ... ok
[INFO] [stdout] test edit::tests::test_iterations_to_messages_basic ... ok
[INFO] [stdout] test edit::tests::test_iterations_to_messages_response_only ... ok
[INFO] [stdout] test edit::tests::test_messages_to_edit_toml_escapes_triple_quotes ... ok
[INFO] [stdout] test diff_highlight::tests::test_diff_highlighter_new ... ok
[INFO] [stdout] test diff_highlight::tests::test_diff_highlighter_default ... ok
[INFO] [stdout] test diff_highlight::tests::test_diff_highlighter_highlight_always ... ok
[INFO] [stdout] test diff_highlight::tests::test_is_delta_available_does_not_crash ... ok
[INFO] [stdout] test edit::tests::test_messages_to_edit_toml_includes_header ... ok
[INFO] [stdout] test edit::tests::test_parse_edit_toml_invalid_role ... ok
[INFO] [stdout] test edit::tests::test_parse_edit_toml_missing_content ... ok
[INFO] [stdout] test edit::tests::test_parse_edit_toml_roundtrip ... ok
[INFO] [stdout] test edit::tests::test_parse_edit_toml_valid ... ok
[INFO] [stdout] test edit::tests::test_plan_iteration_updates_create ... ok
[INFO] [stdout] test edit::tests::test_plan_iteration_updates_no_changes ... ok
[INFO] [stdout] test edit::tests::test_plan_iteration_updates_delete ... ok
[INFO] [stdout] test edit::tests::test_plan_iteration_updates_mixed ... ok
[INFO] [stdout] test formatting::tests::test_format_duration_milliseconds ... ok
[INFO] [stdout] test edit::tests::test_parse_edit_toml_missing_role ... ok
[INFO] [stdout] test edit::tests::test_toml_roundtrip_five_consecutive_quotes ... ok
[INFO] [stdout] test edit::tests::test_toml_roundtrip_four_consecutive_quotes ... ok
[INFO] [stdout] test edit::tests::test_parse_edit_toml_invalid_syntax ... ok
[INFO] [stdout] test edit::tests::test_plan_iteration_updates_delete_and_create ... ok
[INFO] [stdout] test edit::tests::test_toml_roundtrip_trailing_double_quote ... ok
[INFO] [stdout] test edit::tests::test_plan_iteration_updates_rewrite ... ok
[INFO] [stdout] test formatting::tests::test_format_token_count_millions ... ok
[INFO] [stdout] test git::tests::test_git_diff_structure ... ok
[INFO] [stdout] test formatting::tests::test_format_duration_seconds ... ok
[INFO] [stdout] test formatting::tests::test_format_token_count_thousands ... ok
[INFO] [stdout] test git::tests::test_write_diff_file_empty_content ... ok
[INFO] [stdout] test git::tests::test_write_diff_file_creates_parent_dirs ... ok
[INFO] [stdout] test formatting::tests::test_format_token_count_under_thousand ... ok
[INFO] [stdout] test git::tests::test_write_diff_file_overwrites_existing ... ok
[INFO] [stdout] test edit::tests::test_toml_roundtrip_trailing_single_quote ... ok
[INFO] [stdout] test formatting::tests::test_format_duration_minutes ... ok
[INFO] [stdout] test git::tests::test_capture_git_diff_in_non_git_dir ... ok
[INFO] [stdout] test git::tests::test_capture_and_write_diff_in_non_git_dir ... ok
[INFO] [stdout] test git::tests::test_is_git_repository_in_non_git_dir ... ok
[INFO] [stdout] test highlight::tests::test_available_themes_not_empty ... ok
[INFO] [stdout] test highlight::tests::test_highlight_no_language ... ok
[INFO] [stdout] test highlight::tests::test_highlighter_default ... ok
[INFO] [stdout] test highlight::tests::test_highlight_unknown_language ... ok
[INFO] [stdout] test highlight::tests::test_highlight_empty_code ... ok
[INFO] [stdout] test highlight::tests::test_highlight_code_no_language ... ok
[INFO] [stdout] test highlight::tests::test_highlighter_with_config_valid_theme ... ok
[INFO] [stdout] test highlight::tests::test_highlighter_new ... ok
[INFO] [stdout] test highlight::tests::test_highlighter_with_config_invalid_theme ... ok
[INFO] [stdout] test highlight::tests::test_theme_config_is_theme_file_with_name ... ok
[INFO] [stdout] test highlight::tests::test_theme_config_is_theme_file_with_path ... ok
[INFO] [stdout] test highlight::tests::test_theme_config_is_theme_file_with_tmtheme_extension ... ok
[INFO] [stdout] test highlight::tests::test_theme_config_merge_cli_overrides_theme ... ok
[INFO] [stdout] test highlight::tests::test_theme_config_merge_cli_overrides_no_background ... ok
[INFO] [stdout] test highlight::tests::test_theme_config_merge_cli_preserves_no_background_when_false ... ok
[INFO] [stdout] test highlight::tests::test_theme_config_merge_cli_preserves_theme_when_none ... ok
[INFO] [stdout] test highlight::tests::test_theme_config_with_no_background ... ok
[INFO] [stdout] test highlight::tests::test_theme_config_new ... ok
[INFO] [stdout] test init::tests::test_verify_prd_exists_error_contains_path ... ok
[INFO] [stdout] test init::tests::test_verify_prd_exists_when_missing ... ok
[INFO] [stdout] test highlight::tests::test_theme_config_with_theme ... ok
[INFO] [stdout] test init::tests::test_verify_prd_exists_when_present ... ok
[INFO] [stdout] test invoke::tests::build_command_with_agent ... ok
[INFO] [stdout] test invoke::tests::build_command_escapes_single_quotes ... ok
[INFO] [stdout] test invoke::tests::format_conversation_history_empty ... ok
[INFO] [stdout] test invoke::tests::format_conversation_history_with_messages ... ok
[INFO] [stdout] test invoke::tests::persona_suffix_has_no_single_quotes ... ok
[INFO] [stdout] test invoke::tests::build_command_without_agent ... ok
[INFO] [stdout] test iteration::tests::chunk_tests::test_chunk_code ... ok
[INFO] [stdout] test iteration::tests::chunk_tests::test_chunk_code_without_language ... ok
[INFO] [stdout] test iteration::tests::chunk_tests::test_chunk_diff ... ok
[INFO] [stdout] test iteration::tests::chunk_tests::test_chunk_prose ... ok
[INFO] [stdout] test iteration::tests::chunk_tests::test_chunk_serialization_omits_none_language ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_extract_response_text_empty ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_extract_response_text_ignores_non_text_blocks ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_extract_response_text_multiple_text_blocks ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_extract_response_text_single_text_block ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_iteration_log_backward_compatible_without_metadata ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_iteration_log_backward_compatible_without_prompt_response ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_iteration_log_deserialization ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_iteration_log_deserialization_with_metadata ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_iteration_log_empty_chunks ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_iteration_log_with_code_chunk ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_iteration_log_with_metadata ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_iteration_log_serialization ... ok
[INFO] [stdout] test iteration::tests::metadata_tests::test_log_metadata_deserialization ... ok
[INFO] [stdout] test iteration::tests::log_tests::test_iteration_log_with_prompt_and_response ... ok
[INFO] [stdout] test iteration::tests::metadata_tests::test_log_metadata_empty_fields_skipped ... ok
[INFO] [stdout] test iteration::tests::metadata_tests::test_log_metadata_is_empty ... ok
[INFO] [stdout] test iteration::tests::metadata_tests::test_log_metadata_new ... ok
[INFO] [stdout] test iteration::tests::metadata_tests::test_log_metadata_serialization ... ok
[INFO] [stdout] test iteration::tests::parsed_chunk_tests::test_chunk_equality ... ok
[INFO] [stdout] test iteration::tests::parsed_chunk_tests::test_chunk_from_parsed_chunk_code_with_language ... ok
[INFO] [stdout] test iteration::tests::parsed_chunk_tests::test_chunk_from_parsed_chunk_code_without_language ... ok
[INFO] [stdout] test iteration::tests::parsed_chunk_tests::test_chunk_from_parsed_chunk_diff ... ok
[INFO] [stdout] test iteration::tests::parsed_chunk_tests::test_chunk_from_parsed_chunk_prose ... ok
[INFO] [stdout] test iteration::tests::parsed_chunk_tests::test_chunk_from_parsed_chunks_diff_serialization ... ok
[INFO] [stdout] test iteration::tests::parsed_chunk_tests::test_chunk_from_parsed_chunks_empty ... ok
[INFO] [stdout] test iteration::tests::parsed_chunk_tests::test_chunk_from_parsed_chunks_preserves_order ... ok
[INFO] [stdout] test iteration::tests::parsed_chunk_tests::test_chunk_from_parsed_chunks_serializes_to_toml ... ok
[INFO] [stdout] test iteration::tests::parsed_chunk_tests::test_iteration_log_with_typed_chunks_from_parsed ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_iteration_log_deserialization_with_tool_calls ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_iteration_log_with_tool_calls ... ok
[INFO] [stdout] test iteration::tests::metadata_tests::test_log_metadata_from_extracted ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_log_tool_call_deserialization ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_log_tool_call_from_interaction ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_log_tool_call_from_interaction_error ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_log_tool_call_from_interactions ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_log_tool_call_from_interaction_no_result ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_log_tool_call_no_truncation_for_small_result ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_log_tool_call_serialization ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_log_tool_call_serialization_with_error ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_log_tool_call_serialization_with_truncated ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_log_tool_call_truncation ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_truncate_result_preserves_utf8 ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_conversation_message_new ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_count_iterations_empty_dir ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_count_iterations_ignores_other_files ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_count_iterations_with_iterations ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_extract_conversation_messages_empty ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_extract_conversation_messages_handles_missing_response ... ok
[INFO] [stdout] test highlight::tests::test_is_language_supported_common_languages ... ok
[INFO] [stdout] test iteration::tests::tool_call_tests::test_write_iteration_log_with_tool_calls ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_extract_conversation_messages_preserves_order ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_extract_conversation_messages_skips_logs_without_prompt ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_load_session_iterations_empty ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_load_session_iterations_ignores_non_iteration_files ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_load_session_iterations_parse_error ... ok
[INFO] [stdout] test highlight::tests::test_is_language_supported_javascript ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_write_iteration_log_with_metadata ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_write_iteration_log ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_write_multiple_iteration_logs ... ok
[INFO] [stdout] test iterations::tests::test_error_display_invalid_outcome ... ok
[INFO] [stdout] test iterations::tests::test_format_duration_ms ... ok
[INFO] [stdout] test iterations::tests::test_format_duration_seconds ... ok
[INFO] [stdout] test iteration::tests::writer_tests::test_load_session_iterations_sorted_by_sequence ... ok
[INFO] [stdout] test iterations::tests::test_invalid_outcome_filter ... ok
[INFO] [stdout] test iterations::tests::test_iterations_filter_default ... ok
[INFO] [stdout] test iterations::tests::test_iterations_result_fields ... ok
[INFO] [stdout] test iterations::tests::test_format_duration_minutes ... ok
[INFO] [stdout] test iterations::tests::test_outcome_filter_case_insensitive ... ok
[INFO] [stdout] test iterations::tests::test_valid_outcome_filter_completed ... ok
[INFO] [stdout] test iterations::tests::test_valid_outcome_filter_failed ... ok
[INFO] [stdout] test keyboard::tests::test_classify_countdown_key_n_with_modifier_ignored ... ok
[INFO] [stdout] test keyboard::tests::test_classify_countdown_key_pause ... ok
[INFO] [stdout] test keyboard::tests::test_classify_countdown_key_skip_ctrl_c ... ok
[INFO] [stdout] test iterations::tests::test_load_iteration_log ... ok
[INFO] [stdout] test keyboard::tests::test_classify_countdown_key_skip_n ... ok
[INFO] [stdout] test keyboard::tests::test_classify_countdown_key_skip_n_uppercase ... ok
[INFO] [stdout] test keyboard::tests::test_classify_countdown_key_skip_space ... ok
[INFO] [stdout] test keyboard::tests::test_classify_countdown_key_unknown ... ok
[INFO] [stdout] test keyboard::tests::test_classify_run_key_c_without_modifier ... ok
[INFO] [stdout] test keyboard::tests::test_classify_run_key_ctrl_c_interrupt ... ok
[INFO] [stdout] test keyboard::tests::test_classify_run_key_hard_stop ... ok
[INFO] [stdout] test keyboard::tests::test_classify_run_key_pause_lowercase ... ok
[INFO] [stdout] test keyboard::tests::test_classify_run_key_pause_uppercase ... ok
[INFO] [stdout] test keyboard::tests::test_classify_run_key_release_ignored ... ok
[INFO] [stdout] test keyboard::tests::test_classify_run_key_s_with_modifier_ignored ... ok
[INFO] [stdout] test keyboard::tests::test_classify_run_key_soft_stop ... ok
[INFO] [stdout] test keyboard::tests::test_classify_run_key_unknown ... ok
[INFO] [stdout] test keyboard::tests::test_countdown_key_action_enum_variants ... ok
[INFO] [stdout] test keyboard::tests::test_raw_mode_guard_default ... ok
[INFO] [stdout] test keyboard::tests::test_raw_mode_guard_tracks_enabled_state ... ok
[INFO] [stdout] test keyboard::tests::test_run_key_action_enum_variants ... ok
[INFO] [stdout] test markdown::tests::test_create_markdown_skin_returns_configured_skin ... ok
[INFO] [stdout] test markdown::tests::test_render_bold_text ... ok
[INFO] [stdout] test markdown::tests::test_render_bulleted_list ... ok
[INFO] [stdout] test markdown::tests::test_render_italic_text ... ok
[INFO] [stdout] test markdown::tests::test_render_multiline ... ok
[INFO] [stdout] test markdown::tests::test_render_nested_formatting ... ok
[INFO] [stdout] test markdown::tests::test_render_numbered_list ... ok
[INFO] [stdout] test markdown::tests::test_render_plain_text ... ok
[INFO] [stdout] test markdown::tests::test_render_preserves_whitespace ... ok
[INFO] [stdout] test markdown::tests::test_render_special_characters ... ok
[INFO] [stdout] test markdown::tests::test_render_unicode ... ok
[INFO] [stdout] test markdown::tests::test_renderer_default ... ok
[INFO] [stdout] test markdown::tests::test_renderer_new ... ok
[INFO] [stdout] test orchestrator::conversation::tests::categorize_handovers_returns_done ... ok
[INFO] [stdout] test orchestrator::conversation::tests::categorize_mixed_asks_with_other_extracts_first_match ... ok
[INFO] [stdout] test orchestrator::conversation::tests::categorize_multiple_asks_none_targeting_other_returns_third_party ... ok
[INFO] [stdout] test orchestrator::conversation::tests::categorize_multiple_asks_one_targeting_other_returns_ask_other ... ok
[INFO] [stdout] test orchestrator::conversation::tests::categorize_none_returns_done ... ok
[INFO] [stdout] test orchestrator::conversation::tests::categorize_single_ask_targeting_other_returns_ask_other ... ok
[INFO] [stdout] test orchestrator::conversation::tests::categorize_single_ask_targeting_third_party_returns_third_party ... ok
[INFO] [stdout] test orchestrator::display::tests::format_directive_banner_contains_payload ... ok
[INFO] [stdout] test orchestrator::display::tests::format_directive_banner_has_separators ... ok
[INFO] [stdout] test markdown::tests::test_render_empty_string ... ok
[INFO] [stdout] test markdown::tests::test_render_header ... ok
[INFO] [stdout] test markdown::tests::test_render_inline_code ... ok
[INFO] [stdout] test orchestrator::display::tests::format_directive_banner_separator_width_matches_minimum ... ok
[INFO] [stdout] test orchestrator::display::tests::format_orchestration_summary_shows_budget ... ok
[INFO] [stdout] test orchestrator::display::tests::format_persona_banner_contains_ansi_codes ... ok
[INFO] [stdout] test highlight::tests::test_is_language_supported_rust ... ok
[INFO] [stdout] test orchestrator::display::tests::format_persona_banner_contains_name ... ok
[INFO] [stdout] test orchestrator::display::tests::format_routing_status_handover ... ok
[INFO] [stdout] test orchestrator::display::tests::format_routing_status_ask ... ok
[INFO] [stdout] test orchestrator::display::tests::format_routing_status_contains_glyph ... ok
[INFO] [stdout] test orchestrator::display::tests::format_routing_status_no_payload ... ok
[INFO] [stdout] test orchestrator::tests::budget_clone_shares_state ... ok
[INFO] [stdout] test orchestrator::tests::budget_new_sets_remaining_and_limit ... ok
[INFO] [stdout] test orchestrator::display::tests::format_orchestration_summary_full_budget ... ok
[INFO] [stdout] test highlight::tests::test_is_language_supported_unknown ... ok
[INFO] [stdout] test orchestrator::tests::budget_try_consume_decrements ... ok
[INFO] [stdout] test orchestrator::display::tests::format_persona_banner_contains_box_drawing ... ok
[INFO] [stdout] test orchestrator::tests::budget_try_consume_returns_false_when_exhausted ... ok
[INFO] [stdout] test orchestrator::tests::budget_zero_limit ... ok
[INFO] [stdout] test orchestrator::tests::scan_finds_handover_directive ... ok
[INFO] [stdout] test orchestrator::tests::scan_no_response_text_returns_none ... ok
[INFO] [stdout] test orchestrator::tests::scan_mixed_verbs_returns_none ... ok
[INFO] [stdout] test highlight::tests::test_supported_languages_includes_common ... ok
[INFO] [stdout] test persona::tests::test_discover_strategy_personas_missing_file ... ok
[INFO] [stdout] test persona::tests::test_discover_strategy_uses_key_as_name ... ok
[INFO] [stdout] test orchestrator::tests::scan_well_formed_directive_skips_recovery ... ok
[INFO] [stdout] test persona::tests::test_discover_strategy_personas ... ok
[INFO] [stdout] test persona::tests::test_format_empty ... ok
[INFO] [stdout] test persona::tests::test_format_multiple ... ok
[INFO] [stdout] test persona::tests::test_format_source_indicator ... ok
[INFO] [stdout] test persona::tests::test_resolve_from_strategy_file_missing ... ok
[INFO] [stdout] test persona::tests::test_resolve_from_strategy_not_in_table ... ok
[INFO] [stdout] test persona::tests::test_resolve_from_strategy_found ... ok
[INFO] [stdout] test persona::tests::test_format_single ... ok
[INFO] [stdout] test prompt_source::tests::test_classify_prompt_source_inline ... ok
[INFO] [stdout] test prompt_source::tests::test_classify_prompt_source_none ... ok
[INFO] [stdout] test persona::tests::test_verify_with_strategy_none_falls_through ... ok
[INFO] [stdout] test prompt_source::tests::test_read_from_source_file ... ok
[INFO] [stdout] test prompt_source::tests::test_classify_prompt_source_file ... ok
[INFO] [stdout] test prompt_source::tests::test_read_from_source_none_with_default ... ok
[INFO] [stdout] test prompt_source::tests::test_classify_prompt_source_stdin ... ok
[INFO] [stdout] test prompt_source::tests::test_read_from_source_inline ... ok
[INFO] [stdout] test render::text::tests::test_derive_bottom_border ... ok
[INFO] [stdout] test render::text::tests::test_derive_top_border ... ok
[INFO] [stdout] test render::text::tests::test_enhance_tables_multiple_tables ... ok
[INFO] [stdout] test render::text::tests::test_enhance_tables_no_separator ... ok
[INFO] [stdout] test render::text::tests::test_enhance_tables_no_table ... ok
[INFO] [stdout] test render::text::tests::test_enhance_tables_preserves_surrounding_text ... ok
[INFO] [stdout] test render::text::tests::test_enhance_tables_trailing_newline_preserved ... ok
[INFO] [stdout] test render::text::tests::test_is_separator_line ... ok
[INFO] [stdout] test render::text::tests::test_is_table_line ... ok
[INFO] [stdout] test render::text::tests::test_enhance_tables_full ... ok
[INFO] [stdout] test persona::tests::test_discover_with_strategy_none_uses_directories ... ok
[INFO] [stdout] test prompt_source::tests::test_read_from_source_none_without_default ... ok
[INFO] [stdout] test orchestrator::tests::scan_empty_response_returns_none ... ok
[INFO] [stdout] test orchestrator::tests::scan_recovers_orphan_closing_tag_with_matching_persona ... ok
[INFO] [stdout] test orchestrator::tests::scan_orphan_closing_tag_no_matching_persona_returns_none ... ok
[INFO] [stdout] test highlight::tests::test_is_language_supported_python ... ok
[INFO] [stdout] test render::text::tests::test_render_directive_via_render_text_block_returns_empty ... ok
[INFO] [stdout] test render::text::tests::test_render_diff_plain ... ok
[INFO] [stdout] test render::text::tests::test_render_code_no_language ... ok
[INFO] [stdout] test render::text::tests::test_render_diff_terminal ... ok
[INFO] [stdout] test render::text::tests::test_render_directive_plain_returns_empty ... ok
[INFO] [stdout] test render::text::tests::test_render_directive_returns_empty ... ok
[INFO] [stdout] test render::text::tests::test_render_prose_plain ... ok
[INFO] [stdout] test render::text::tests::test_render_prose_terminal_without_skin ... ok
[INFO] [stdout] test render::text::tests::test_render_code_plain ... ok
[INFO] [stdout] test render::text::tests::test_render_prose_terminal_with_skin ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_bash_invocation_multiline ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_bash_invocation_single_line_plain ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_glob_result_empty ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_edit_before_after_plain ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_grep_invocation_minimal ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_grep_invocation_full ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_glob_result_grouped ... ok
[INFO] [stdout] test render::utils::tests::test_extract_language_c_cpp ... ok
[INFO] [stdout] test render::utils::tests::test_extract_language_case_insensitive ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_read_result_empty ... ok
[INFO] [stdout] test render::utils::tests::test_extract_language_javascript_typescript ... ok
[INFO] [stdout] test render::utils::tests::test_extract_language_python ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_read_result_normalizes_cat_n ... ok
[INFO] [stdout] test render::utils::tests::test_extract_language_data_formats ... ok
[INFO] [stdout] test render::utils::tests::test_extract_language_unknown ... ok
[INFO] [stdout] test render::utils::tests::test_extract_line_number_no_separator ... ok
[INFO] [stdout] test render::utils::tests::test_extract_language_shell ... ok
[INFO] [stdout] test render::utils::tests::test_extract_line_number_with_arrow ... ok
[INFO] [stdout] test render::utils::tests::test_extract_line_number_non_numeric_prefix ... ok
[INFO] [stdout] test render::utils::tests::test_group_files_by_directory ... ok
[INFO] [stdout] test render::utils::tests::test_group_files_empty_input ... ok
[INFO] [stdout] test render::utils::tests::test_group_files_nested_directories ... ok
[INFO] [stdout] test render::utils::tests::test_highlight_grep_match_content_format ... ok
[INFO] [stdout] test render::utils::tests::test_extract_line_number_with_tab ... ok
[INFO] [stdout] test render::utils::tests::test_highlight_grep_match_no_line_number ... ok
[INFO] [stdout] test render::utils::tests::test_highlight_grep_match_simple_path ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_alignment_9_to_10 ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_alignment_mixed_widths ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_arrow_double_digit ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_arrow_multiple_lines ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_arrow_single_digit ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_alignment_99_to_100 ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_arrow_with_offset ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_double_digit ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_empty_content ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_mixed_lines ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_multiple_lines ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_pass_through_no_tab ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_pass_through_non_numeric_prefix ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_preserves_content_with_tabs ... ok
[INFO] [stdout] test render::utils::tests::test_extract_language_rust ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_triple_digit ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_single_digit ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_with_offset ... ok
[INFO] [stdout] test replay::tests::test_find_iteration_logs_empty_dir ... ok
[INFO] [stdout] test replay::tests::test_find_iteration_logs_ignores_non_iteration_files ... ok
[INFO] [stdout] test replay::tests::test_find_iteration_logs_sorts_by_sequence ... ok
[INFO] [stdout] test replay::tests::test_replay_error_display_no_iterations ... ok
[INFO] [stdout] test replay::tests::test_replay_error_display_session_not_found ... ok
[INFO] [stdout] test replay::tests::test_replay_options_builder_chain ... ok
[INFO] [stdout] test replay::tests::test_replay_options_default ... ok
[INFO] [stdout] test replay::tests::test_replay_options_with_delay ... ok
[INFO] [stdout] test replay::tests::test_replay_options_with_delay_none ... ok
[INFO] [stdout] test replay::tests::test_sessions_index_lookup ... ok
[INFO] [stdout] test replay_countdown::tests::test_apply_delay_with_countdown_none ... ok
[INFO] [stdout] test replay_countdown::tests::test_apply_delay_with_countdown_zero ... ok
[INFO] [stdout] test replay_countdown::tests::test_countdown_result_enum ... ok
[INFO] [stdout] test replay_countdown::tests::test_countdown_state_new ... ok
[INFO] [stdout] test replay_countdown::tests::test_spinner_chars_available ... ok
[INFO] [stdout] test replay_countdown::tests::test_wait_with_countdown_negative_delay ... ok
[INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_empty_string ... ok
[INFO] [stdout] test replay::tests::test_replay_error_display_iteration_not_found ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_todowrite_invocation ... ok
[INFO] [stdout] test replay_countdown::tests::test_wait_with_countdown_zero_delay ... ok
[INFO] [stdout] test replay_countdown::tests::test_wait_with_countdown_non_terminal ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_todowrite_result_error ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_todowrite_result_success ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_bash_invocation_multiline_plain ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_bash_result_error_plain ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_bash_result_success_plain ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_bash_invocation_plain ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_default_invocation_plain ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_code_plain ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_diff_plain ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_edit_before_after_plain ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_grep_result_empty ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_glob_result_grouped_by_directory ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_glob_result_empty ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_grep_result_files_mode ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_prose_plain ... ok
[INFO] [stdout] test highlight::tests::test_highlight_preserves_content ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_read_result_empty ... ok
[INFO] [stdout] test session::tests::test_initialize_session_directory_creates_structure ... ok
[INFO] [stdout] test session::tests::test_load_sessions_index_creates_empty_when_missing ... ok
[INFO] [stdout] test session::tests::test_save_and_load_sessions_index ... ok
[INFO] [stdout] test session::tests::test_session_dir_path_structure ... ok
[INFO] [stdout] test session::tests::test_session_not_found_error_message ... ok
[INFO] [stdout] test session::tests::test_sessions_index_path_structure ... ok
[INFO] [stdout] test sessions_display::tests::test_aggregate_iteration_stats_empty ... ok
[INFO] [stdout] test sessions_display::tests::test_aggregate_iteration_stats_partial_data ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_read_result_normalizes_cat_n ... ok
[INFO] [stdout] test sessions_display::tests::test_aggregate_iteration_stats_with_data ... ok
[INFO] [stdout] test sessions_display::tests::test_aggregate_session_totals ... ok
[INFO] [stdout] test sessions_display::tests::test_format_cost ... ok
[INFO] [stdout] test sessions_display::tests::test_format_duration_milliseconds ... ok
[INFO] [stdout] test sessions_display::tests::test_format_duration_minutes ... ok
[INFO] [stdout] test sessions_display::tests::test_format_duration_seconds ... ok
[INFO] [stdout] test sessions_display::tests::test_format_outcome_plain ... ok
[INFO] [stdout] test sessions_display::tests::test_format_outcome_terminal_contains_color ... ok
[INFO] [stdout] test sessions_display::tests::test_format_tokens_thousands ... ok
[INFO] [stdout] test sessions_display::tests::test_format_tokens_small ... ok
[INFO] [stdout] test sessions_display::tests::test_matches_filter_no_filter ... ok
[INFO] [stdout] test sessions_display::tests::test_matches_filter_outcome_match ... ok
[INFO] [stdout] test sessions_display::tests::test_matches_filter_outcome_no_match ... ok
[INFO] [stdout] test sessions_display::tests::test_matches_filter_project_match ... ok
[INFO] [stdout] test sessions_display::tests::test_truncate_left ... ok
[INFO] [stdout] test sessions_display::tests::test_matches_filter_project_no_match ... ok
[INFO] [stdout] test sessions_display::tests::test_truncate_left_unicode ... ok
[INFO] [stdout] test highlight::tests::test_highlight_python_code ... ok
[INFO] [stdout] test signal::tests::test_set_and_get_interrupt_context ... ok
[INFO] [stdout] test signal::tests::test_interrupt_context_clone ... ok
[INFO] [stdout] test signal::tests::test_interrupted_flag_default_false ... ok
[INFO] [stdout] test spinner::tests::test_format_key_hints_paused ... ok
[INFO] [stdout] test spinner::tests::test_format_key_hints_running ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_empty ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_full ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_iteration_only ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_on_behalf_of_without_persona ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_persona_on_behalf_of ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_persona_on_behalf_of_no_slug ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_persona_only ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_persona_with_full_session ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_persona_with_iteration_no_max ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_persona_with_iteration_only ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_persona_with_slug_only ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_persona_with_unknown_max ... ok
[INFO] [stdout] test spinner::tests::test_format_session_info_slug_only ... ok
[INFO] [stdout] test spinner::tests::test_format_spinner_time_iteration_only ... ok
[INFO] [stdout] test spinner::tests::test_format_key_hints_finishing ... ok
[INFO] [stdout] test spinner::tests::test_format_spinner_time_small_difference ... ok
[INFO] [stdout] test spinner::tests::test_format_spinner_time_with_session ... ok
[INFO] [stdout] test spinner::tests::test_format_time_short_minutes ... ok
[INFO] [stdout] test spinner::tests::test_format_time_short_seconds ... ok
[INFO] [stdout] test spinner::tests::test_key_hint_state_default ... ok
[INFO] [stdout] test spinner::tests::test_key_hint_state_hint_text ... ok
[INFO] [stdout] 
[K[36m⠋[0m Waiting for response... 0s [2m[s: stop | S: halt | p: pause][0mtest spinner::tests::test_spinner_chars_count ... ok
[INFO] [stdout] test spinner::tests::test_spinner_context_default ... ok
[INFO] [stdout] test spinner::tests::test_spinner_context_messages ... ok
[INFO] [stdout] test spinner::tests::test_spinner_default ... ok
[INFO] [stdout] test spinner::tests::test_spinner_disabled_start_stop ... ok
[INFO] [stdout] 
[Ktest replay_renderer::tests::test_render_todowrite_invocation_plain ... ok
[INFO] [stdout] test spinner::tests::test_spinner_double_start ... ok
[INFO] [stdout] 
[K[36m⠋[0m Waiting for response... 0s [2m[s: stop | S: halt | p: pause][0m
[K[36m⠋[0m Waiting for response... 0s [2m[s: stop | S: halt | p: pause][0mtest highlight::tests::test_highlighter_with_config_no_background ... ok
[INFO] [stdout] 
[K[36m⠋[0m Waiting for response... 0s [2m[s: stop | S: halt | p: pause][0mtest replay_renderer::tests::test_render_without_highlighting_no_ansi ... ok
[INFO] [stdout] test spinner::tests::test_spinner_get_context_default ... ok
[INFO] [stdout] 
[Ktest spinner::tests::test_spinner_context_changes_while_running ... ok
[INFO] [stdout] test spinner::tests::test_spinner_key_hint_state_default ... ok
[INFO] [stdout] test highlight::tests::test_highlight_special_characters ... ok
[INFO] [stdout] test spinner::tests::test_spinner_new ... ok
[INFO] [stdout] 
[K[36m⠋[0m Waiting for response... 0s [2m[s: stop | S: halt | p: pause][0m
[K
[Ktest spinner::tests::test_spinner_session_info_default ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_write_new_file_plain ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_separator ... ok
[INFO] [stdout] test spinner::tests::test_spinner_double_stop ... ok
[INFO] [stdout] test spinner::tests::test_spinner_session_info_new ... ok
[INFO] [stdout] test spinner::tests::test_spinner_session_info_partial ... ok
[INFO] [stdout] test spinner::tests::test_spinner_set_context ... ok
[INFO] [stdout] test spinner::tests::test_spinner_set_key_hint_state ... ok
[INFO] [stdout] 
[K[36m⠋[0m Thinking... 0s [2m[s: stop | S: halt | p: pause][0mtest spinner::tests::test_spinner_accumulate_iteration_time ... ok
[INFO] [stdout] test spinner::tests::test_spinner_with_enabled_true ... ok
[INFO] [stdout] test spinner::tests::test_spinner_with_session_context ... ok
[INFO] [stdout] test spinner::tests::test_spinner_with_session_elapsed ... ok
[INFO] [stdout] test startup::formatters::tests::empty_text_returns_minimum ... ok
[INFO] [stdout] test startup::formatters::tests::multiline_uses_longest_line ... ok
[INFO] [stdout] test startup::formatters::tests::short_text_returns_minimum ... ok
[INFO] [stdout] test spinner::tests::test_spinner_session_info_has_info_persona_only ... ok
[INFO] [stdout] test spinner::tests::test_spinner_with_enabled_false ... ok
[INFO] [stdout] test startup::formatters::tests::terminal_narrower_than_minimum ... ok
[INFO] [stdout] test startup::formatters::tests::text_exactly_minimum_width ... ok
[INFO] [stdout] test startup::formatters::tests::text_exceeds_terminal_width ... ok
[INFO] [stdout] test startup::formatters::tests::text_wider_than_minimum_but_fits_terminal ... ok
[INFO] [stdout] test startup::tests::test_ask_summary_clone ... ok
[INFO] [stdout] test startup::tests::test_ask_summary_large_values ... ok
[INFO] [stdout] test startup::tests::test_ask_summary_creation ... ok
[INFO] [stdout] test startup::tests::test_ask_summary_failed ... ok
[INFO] [stdout] test startup::tests::test_ask_summary_zero_cost ... ok
[INFO] [stdout] test startup::tests::test_attached_file_path_preserved ... ok
[INFO] [stdout] 
[Ktest spinner::tests::test_spinner_enabled_start_stop ... ok
[INFO] [stdout] test startup::tests::test_attached_file_prd ... ok
[INFO] [stdout] test startup::tests::test_attached_file_unknown ... ok
[INFO] [stdout] test startup::tests::test_clean_blank_lines_collapses_multiple ... ok
[INFO] [stdout] test startup::tests::test_clean_blank_lines_empty_input ... ok
[INFO] [stdout] test startup::tests::test_ask_summary_with_none_values ... ok
[INFO] [stdout] test startup::tests::test_clean_blank_lines_preserves_content_lines ... ok
[INFO] [stdout] test startup::tests::test_clean_blank_lines_only_blanks ... ok
[INFO] [stdout] test startup::tests::test_clean_blank_lines_preserves_single ... ok
[INFO] [stdout] test startup::tests::test_format_duration_hours_as_minutes ... ok
[INFO] [stdout] test startup::tests::test_attached_file_design_md_not_special_cased ... ok
[INFO] [stdout] test startup::tests::test_attached_file_progress_txt_not_special_cased ... ok
[INFO] [stdout] test startup::tests::test_format_duration_milliseconds ... ok
[INFO] [stdout] test startup::tests::test_format_duration_seconds ... ok
[INFO] [stdout] test startup::tests::test_format_token_count_millions ... ok
[INFO] [stdout] test startup::tests::test_format_token_count_small ... ok
[INFO] [stdout] test startup::tests::test_format_duration_minutes ... ok
[INFO] [stdout] test spinner::tests::test_spinner_iteration_elapsed ... ok
[INFO] [stdout] test startup::tests::test_format_token_count_thousands ... ok
[INFO] [stdout] test startup::tests::test_has_custom_config_additional_prompt ... ok
[INFO] [stdout] test startup::tests::test_has_custom_config_completion_marker ... ok
[INFO] [stdout] test startup::tests::test_has_custom_config_command ... ok
[INFO] [stdout] test startup::tests::test_has_custom_config_multiple ... ok
[INFO] [stdout] test startup::tests::test_has_custom_config_prompt ... ok
[INFO] [stdout] test startup::tests::test_has_custom_config_none ... ok
[INFO] [stdout] test startup::tests::test_iteration_header_creation ... ok
[INFO] [stdout] test startup::tests::test_iteration_header_large_numbers ... ok
[INFO] [stdout] test startup::tests::test_iteration_header_without_max ... ok
[INFO] [stdout] test startup::tests::test_iteration_header_zero_stories ... ok
[INFO] [stdout] test startup::tests::test_iteration_summary_creation ... ok
[INFO] [stdout] test startup::tests::test_iteration_summary_large_values ... ok
[INFO] [stdout] test startup::tests::test_iteration_summary_with_none_values ... ok
[INFO] [stdout] test startup::tests::test_iteration_summary_zero_cost ... ok
[INFO] [stdout] test startup::tests::test_has_custom_config_prd ... ok
[INFO] [stdout] test startup::tests::test_iteration_header_singular_story ... ok
[INFO] [stdout] test startup::tests::test_iterations_from_arg_flag ... ok
[INFO] [stdout] test startup::tests::test_prompt_display_from_prompt_handles_at_symbol_in_text ... ok
[INFO] [stdout] test startup::tests::test_prompt_display_from_prompt_extracts_files ... ok
[INFO] [stdout] test startup::tests::test_prompt_display_from_prompt_no_files ... ok
[INFO] [stdout] test startup::tests::test_prompt_display_from_prompt_relative_path ... ok
[INFO] [stdout] test startup::tests::test_prompt_display_stripped_prompt_preserves_content ... ok
[INFO] [stdout] test startup::tests::test_prompt_display_stripped_prompt_removes_references ... ok
[INFO] [stdout] test startup::tests::test_run_summary_clone ... ok
[INFO] [stdout] test startup::tests::test_run_summary_creation ... ok
[INFO] [stdout] test startup::tests::test_run_summary_large_values ... ok
[INFO] [stdout] test startup::tests::test_run_summary_partial_completion ... ok
[INFO] [stdout] test startup::tests::test_run_summary_single_iteration ... ok
[INFO] [stdout] test startup::tests::test_run_summary_with_none_values ... ok
[INFO] [stdout] test startup::tests::test_run_summary_zero_cost ... ok
[INFO] [stdout] test strategy::conversation_loop::tests::build_orchestration_config_sets_fields ... ok
[INFO] [stdout] test strategy::conversation_loop::tests::extract_comments_separates_comment_directives ... ok
[INFO] [stdout] test strategy::init::tests::test_agent_assets_count ... ok
[INFO] [stdout] test startup::tests::test_iteration_summary_partial_tokens ... ok
[INFO] [stdout] test strategy::init::tests::test_bundled_assets_not_empty ... ok
[INFO] [stdout] test strategy::init::tests::test_bundled_agents_have_frontmatter ... ok
[INFO] [stdout] test strategy::init::tests::test_bundled_strategy_assets_are_valid_toml ... ok
[INFO] [stdout] test strategy::init::tests::test_bundled_strategy_assets_not_empty ... ok
[INFO] [stdout] test strategy::init::tests::test_bundled_strategy_toml_has_agents_table ... ok
[INFO] [stdout] test strategy::init::tests::test_format_overwritten_action ... ok
[INFO] [stdout] test strategy::init::tests::test_format_summary_all_created ... ok
[INFO] [stdout] test strategy::init::tests::test_format_summary_includes_strategy_actions ... ok
[INFO] [stdout] test strategy::init::tests::test_format_summary_strategy_skipped ... ok
[INFO] [stdout] test strategy::init::tests::test_format_summary_with_overwritten_strategy_toml ... ok
[INFO] [stdout] test strategy::init::tests::test_format_summary_with_skipped ... ok
[INFO] [stdout] test strategy::init::tests::test_plan_all_existing ... ok
[INFO] [stdout] test strategy::init::tests::test_plan_mixed ... ok
[INFO] [stdout] test strategy::init::tests::test_plan_all_new ... ok
[INFO] [stdout] test strategy::init::tests::test_plan_strategy_all_existing ... ok
[INFO] [stdout] test strategy::init::tests::test_plan_paths_include_filename ... ok
[INFO] [stdout] test strategy::init::tests::test_plan_strategy_all_new ... ok
[INFO] [stdout] test strategy::init::tests::test_plan_strategy_paths_include_filename ... ok
[INFO] [stdout] test strategy::init::tests::test_plan_strategy_toml_existing ... ok
[INFO] [stdout] test strategy::init::tests::test_plan_strategy_toml_new ... ok
[INFO] [stdout] test strategy::init::tests::test_strategy_assets_count ... ok
[INFO] [stdout] test strategy::prd_loop::tests::filter_empty_available_removes_all ... ok
[INFO] [stdout] test strategy::prd_loop::tests::filter_keeps_allowed_personas ... ok
[INFO] [stdout] test strategy::prd_loop::tests::filter_removes_unlisted_persona ... ok
[INFO] [stdout] test strategy::prd_loop::tests::filter_returns_none_when_all_unlisted ... ok
[INFO] [stdout] test strategy::prd_loop::tests::filter_works_for_handovers ... ok
[INFO] [stdout] test strategy::prd_loop::tests::test_build_additional_prompt_empty ... ok
[INFO] [stdout] test strategy::prd_loop::tests::test_build_additional_prompt_multiple ... ok
[INFO] [stdout] test strategy::prd_loop::tests::test_build_additional_prompt_single ... ok
[INFO] [stdout] test strategy::prd_loop::tests::test_build_invocation_config_fields ... ok
[INFO] [stdout] test strategy::prd_loop::tests::test_build_iteration_log_sets_strategy_and_persona ... ok
[INFO] [stdout] test strategy::prd_loop::tests::test_build_invocation_result_for_orchestrator ... ok
[INFO] [stdout] test spinner::tests::test_spinner_drop_stops ... ok
[INFO] [stdout] test strategy::prd_loop::tests::test_build_loop_config_command_uses_persona_agent ... ok
[INFO] [stdout] test strategy::prd_loop::tests::test_build_loop_config_no_aggregates ... ok
[INFO] [stdout] test strategy::prd_loop::tests::test_build_loop_config_sets_fields ... ok
[INFO] [stdout] test strategy::tests::test_find_strategy_by_name_empty_list ... ok
[INFO] [stdout] test strategy::tests::test_find_strategy_by_name_found ... ok
[INFO] [stdout] test strategy::tests::test_format_empty ... ok
[INFO] [stdout] test strategy::tests::test_find_strategy_by_name_not_found ... ok
[INFO] [stdout] test strategy::tests::test_format_multiple ... ok
[INFO] [stdout] test strategy::tests::test_format_column_alignment ... ok
[INFO] [stdout] test strategy::traits::tests::test_custom_between_iterations ... ok
[INFO] [stdout] test strategy::traits::tests::test_run_strategy_delegates ... ok
[INFO] [stdout] test strategy::traits::tests::test_strategy_between_iterations_default ... ok
[INFO] [stdout] test strategy::traits::tests::test_strategy_execute_returns_result ... ok
[INFO] [stdout] test strategy::traits::tests::test_strategy_key_action_propagated ... ok
[INFO] [stdout] test stream_processor::block_builders::tests::test_build_bash_invocation_block ... ok
[INFO] [stdout] test stream_processor::block_builders::tests::test_build_default_invocation_block ... ok
[INFO] [stdout] test stream_processor::block_builders::tests::test_build_grep_invocation_block ... ok
[INFO] [stdout] test stream_processor::block_builders::tests::test_build_todowrite_invocation_block ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_diff_chunk_serialization ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_grep_builder_all_options ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_code_chunk_serialization ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_grep_builder_minimal ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_output_block_separator_serialization ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_grep_builder_serialization_roundtrip ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_tool_invocation_bash_serialization ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_output_block_text_serialization ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_tool_invocation_todowrite_serialization ... ok
[INFO] [stdout] test spinner::tests::test_spinner_total_session_elapsed ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_tool_result_bash_serialization ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_tool_result_edit_before_after_serialization ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_tool_result_write_new_file_serialization ... ok
[INFO] [stdout] 
[K
[Ktest startup::tests::test_prompt_display_from_prompt_preserves_prompt ... ok
[INFO] [stdout] test startup::tests::test_startup_info_creation ... ok
[INFO] [stdout] test strategy::conversation_loop::tests::extract_comments_no_comments ... ok
[INFO] [stdout] test strategy::tests::test_format_single ... ok
[INFO] [stdout] test stream_processor::output_block::tests::test_tool_invocation_grep_serialization ... ok
[INFO] [stdout] test spinner::tests::test_spinner_key_hint_state_while_running ... ok
[INFO] [stdout] test spinner::tests::test_spinner_start_with_context ... ok
[INFO] [stdout] test highlight::tests::test_highlight_code_convenience_function ... ok
[INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_command_shown_in_full_without_truncation ... ok
[INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_command_plain_text_format ... ok
[INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_single_line_inline_format ... ok
[INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_tool_result_empty_output ... ok
[INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_tool_result_truncates_long_output ... ok
[INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_tool_result_success_with_output ... ok
[INFO] [stdout] test render::text::tests::test_render_code_terminal ... ok
[INFO] [stdout] test stream_processor::tests::core::test_finish_extracts_metadata ... ok
[INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_multiline_command_in_code_block ... ok
[INFO] [stdout] test highlight::tests::test_highlight_multiline_code ... ok
[INFO] [stdout] test stream_processor::tests::core::test_empty_finish ... ok
[INFO] [stdout] test stream_processor::tests::core::test_process_assistant_text_event ... ok
[INFO] [stdout] test stream_processor::tests::core::test_code_block_detection ... ok
[INFO] [stdout] test stream_processor::tests::core::test_process_empty_line ... ok
[INFO] [stdout] test stream_processor::tests::core::test_finish_returns_accumulated_text ... ok
[INFO] [stdout] test stream_processor::tests::core::test_diff_block_detection ... ok
[INFO] [stdout] test stream_processor::tests::core::test_process_malformed_json ... ok
[INFO] [stdout] test stream_processor::tests::core::test_process_result_event ... ok
[INFO] [stdout] test stream_processor::tests::core::test_stream_processor_new ... ok
[INFO] [stdout] test highlight::tests::test_highlight_javascript_code ... ok
[INFO] [stdout] test stream_processor::tests::core::test_tool_interaction_correlation ... ok
[INFO] [stdout] test stream_processor::tests::core::test_process_system_event ... ok
[INFO] [stdout] test stream_processor::tests::edit_diff::test_edit_tool_result_truncates_large_diff ... ok
[INFO] [stdout] test stream_processor::tests::core::test_multiple_messages ... ok
[INFO] [stdout] test stream_processor::tests::edit_diff::test_edit_tool_result_error_not_treated_as_diff ... ok
[INFO] [stdout] test stream_processor::tests::edit_diff::test_edit_tool_result_pending_invocation_tracking ... ok
[INFO] [stdout] test stream_processor::tests::edit_diff::test_edit_tool_result_with_diff_highlighting_enabled ... ok
[INFO] [stdout] test stream_processor::tests::edit_diff::test_edit_tool_result_with_diff_shows_diff_fence ... ok
[INFO] [stdout] test stream_processor::tests::edit_diff::test_edit_tool_result_with_diff_shows_file_header ... ok
[INFO] [stdout] test stream_processor::tests::core::test_stream_processor_with_highlighting ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_invocation_shows_path ... ok
[INFO] [stdout] test stream_processor::tests::edit_diff::test_edit_tool_result_without_diff_content ... ok
[INFO] [stdout] test highlight::tests::test_highlight_rust_code ... ok
[INFO] [stdout] test stream_processor::tests::edit_diff::test_non_edit_tool_result_not_treated_as_diff ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_invocation_shows_pattern ... ok
[INFO] [stdout] test stream_processor::tests::edit_diff::test_edit_tool_result_with_unified_diff_format ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_invocation_default_path ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_non_verbose_uses_compact_format ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_result_with_nested_directories ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_result_single_file_grammar ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_result_truncates_large_output ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_result_error ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_plain_text_format ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_result_empty ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_result_shows_match_count ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_with_terminal_highlighting ... ok
[INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_result_groups_by_directory ... ok
[INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_content_mode_highlights_matches ... ok
[INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_non_verbose_uses_compact_format ... ok
[INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_invocation_shows_filters ... ok
[INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_result_empty ... ok
[INFO] [stdout] test stream_processor::tests::path_display::test_file_path_shown_in_full_for_edit ... ok
[INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_with_terminal_highlighting ... ok
[INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_invocation_shows_pattern ... ok
[INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_result_single_match_grammar ... ok
[INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_invocation_shows_mode ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_extract_key_argument_bash ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_extract_key_argument_edit_is_path ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_extract_key_argument_glob ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_extract_key_argument_grep_is_path ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_extract_key_argument_read ... ok
[INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_result_error ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_extract_key_argument_task_is_not_path ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_extract_key_argument_unknown_tool ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_extract_key_argument_web_fetch_is_path ... ok
[INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_result_shows_match_count ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_extract_key_argument_write_is_path ... ok
[INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_plain_text_format ... ok
[INFO] [stdout] test stream_processor::tests::path_display::test_glob_pattern_shown_in_full ... ok
[INFO] [stdout] test stream_processor::tests::path_display::test_file_path_shown_in_full_for_write ... ok
[INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_result_truncates_large_output ... ok
[INFO] [stdout] test stream_processor::tests::path_display::test_file_path_shown_in_full_for_read ... ok
[INFO] [stdout] test stream_processor::tests::path_display::test_grep_pattern_shown_in_full ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_truncate_string_long ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_truncate_string_newlines ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_truncate_string_short ... ok
[INFO] [stdout] test stream_processor::tests::path_display::test_task_prompt_is_truncated ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_tool_invocation_displayed ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_tool_error_displayed_distinctly ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_tool_invocation_not_displayed_when_disabled ... ok
[INFO] [stdout] test stream_processor::tests::verbose_config::test_verbose_tools_config_all ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_multiple_concurrent_tools ... ok
[INFO] [stdout] test stream_processor::tests::verbose_config::test_verbose_tools_config_from_arg_empty_entries ... ok
[INFO] [stdout] test stream_processor::tests::verbose_config::test_verbose_tools_config_from_arg_mixed_known_unknown ... ok
[INFO] [stdout] test stream_processor::tests::verbose_config::test_verbose_tools_config_from_arg_multiple ... ok
[INFO] [stdout] test stream_processor::tests::verbose_config::test_verbose_tools_config_from_arg_single ... ok
[INFO] [stdout] test stream_processor::tests::verbose_config::test_verbose_tools_config_from_arg_star ... ok
[INFO] [stdout] test stream_processor::tests::verbose_config::test_verbose_tools_config_from_arg_unknown_tool ... ok
[INFO] [stdout] test stream_processor::tests::verbose_config::test_verbose_tools_config_from_arg_with_spaces ... ok
[INFO] [stdout] test stream_processor::tests::verbose_config::test_verbose_tools_config_new ... ok
[INFO] [stdout] test stream_processor::tests::verbose_config::test_verbose_tools_config_from_arg_none ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_plain_text_tool_display ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_tool_result_displayed ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_tool_text_mixed_content ... ok
[INFO] [stdout] test stream_processor::tests::path_display::test_url_shown_in_full ... ok
[INFO] [stdout] test stream_processor::tests::visual_separation::test_no_separator_if_no_output_yet ... ok
[INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_tool_result_with_terminal_dimmed_styling ... ok
[INFO] [stdout] test stream_processor::tests::verbose_config::test_stream_processor_default_no_verbose_tools ... ok
[INFO] [stdout] test stream_processor::tests::visual_separation::test_no_separator_for_first_response ... ok
[INFO] [stdout] test stream_processor::tests::visual_separation::test_visual_separation_between_responses ... ok
[INFO] [stdout] test stream_processor::tests::visual_separation::test_response_count_increments_correctly ... ok
[INFO] [stdout] test stream_processor::tests::visual_separation::test_no_separator_for_same_message_id ... ok
[INFO] [stdout] test stream_processor::tests::visual_separation::test_multiple_responses_with_separators ... ok
[INFO] [stdout] test stream_processor::tests::tool_display::test_with_options_constructor ... ok
[INFO] [stdout] test stream_processor::tests::verbose_config::test_stream_processor_with_verbose_tools ... ok
[INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_blank_lines_preserved_between_paragraphs ... ok
[INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_indentation_preserved_in_code ... ok
[INFO] [stdout] test stream_processor::tests::visual_separation::test_separator_after_tool_use_cycle ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_before_after_plain ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_before_after_plain_empty_new ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_before_after_plain_empty_old ... ok
[INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_blank_line_after_code_block ... ok
[INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_blank_line_before_code_block ... ok
[INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_list_indentation_preserved ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_before_after_display_prefers_old_new_strings ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_plain_block_no_truncation ... ok
[INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_leading_spaces_preserved ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_generate_unified_diff ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_plain_block_truncation ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_generate_unified_diff_addition ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_generate_unified_diff_deletion ... ok
[INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_code_block_content_preserved ... ok
[INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_trailing_newline_in_text ... ok
[INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_multiple_blank_lines_preserved ... ok
[INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_raw_text_matches_original ... ok
[INFO] [stdout] test stream_processor::tool_results::notebookedit::tests::test_generate_unified_diff ... ok
[INFO] [stdout] test stream_processor::tool_results::notebookedit::tests::test_generate_unified_diff_new_cell ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_diff_output_no_truncation ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_diff_output_truncation ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_before_after_plain ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_before_after_plain_empty_after ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_before_after_plain_empty_before ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_before_after_plain_has_separator ... ok
[INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_across_multiple_events ... ok
[INFO] [stdout] test stream_processor::tool_results::notebookedit::tests::test_format_diff_output_insert_mode ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_no_changes_message_highlighted ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_no_changes_message_plain ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_new_file_plain_has_indicator ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_new_file_plain_has_line_numbers ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_new_file_plain_no_diff_markers ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_new_file_plain_truncation ... ok
[INFO] [stdout] test stream_processor::tool_results::notebookedit::tests::test_format_diff_output_no_truncation ... ok
[INFO] [stdout] test stream_processor::tool_results::notebookedit::tests::test_format_diff_output_code_cell ... ok
[INFO] [stdout] test stream_processor::tool_results::notebookedit::tests::test_format_diff_output_delete_mode ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_plain_block_no_truncation ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_plain_block_truncation ... ok
[INFO] [stdout] test stream_processor::types::grep_params_tests::test_grep_params_empty_input ... ok
[INFO] [stdout] test stream_processor::types::grep_params_tests::test_grep_params_full ... ok
[INFO] [stdout] test stream_processor::types::grep_params_tests::test_grep_params_minimal ... ok
[INFO] [stdout] test tests::test_resolve_ask_prompt_empty_string_error ... ok
[INFO] [stdout] test tests::test_resolve_ask_prompt_from_file ... ok
[INFO] [stdout] test tests::test_resolve_ask_prompt_inline ... ok
[INFO] [stdout] test tests::test_resolve_ask_prompt_inline_with_whitespace ... ok
[INFO] [stdout] test tests::test_resolve_ask_prompt_whitespace_only_error ... ok
[INFO] [stdout] test warn::tests::test_warn_if_err_with_err_does_not_panic ... ok
[INFO] [stdout] test warn::tests::test_warn_if_err_with_ok_does_not_panic ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_plain_block_has_line_numbers ... ok
[INFO] [stdout] test stream_processor::tool_results::notebookedit::tests::test_format_diff_output_truncation ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_new_file_highlighted_no_diff_markers ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_no_changes_message_new_file ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_no_changes_message_overwrite ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_new_file_highlighted_truncation ... ok
[INFO] [stdout] test render::tool_renderers::tests::test_render_bash_invocation_single_line_terminal ... ok
[INFO] [stdout] test replay_renderer::tests::test_render_with_highlighting_has_ansi ... ok
[INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_command_with_terminal_highlighting ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_before_after_highlighted_has_ansi_codes ... ok
[INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_before_after_highlighted_has_ansi_codes ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_new_file_highlighted_has_green_background ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_before_after_highlighted_has_separator ... ok
[INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_new_file_highlighted_has_indicator ... ok
[INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_tool_result_error_shows_exit_code ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 853 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.92s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ralph_core-7eada7b0a46f2667)
[INFO] [stdout] 
[INFO] [stdout] running 461 tests
[INFO] [stdout] test chunk::tests::batch::helpers::emit_code_block_handles_diff ... ok
[INFO] [stdout] test chunk::tests::batch::helpers::append_line_joins_with_newline ... ok
[INFO] [stdout] test chunk::tests::batch::helpers::emit_code_block_handles_language ... ok
[INFO] [stdout] test chunk::tests::batch::helpers::flush_prose_preserves_content ... ok
[INFO] [stdout] test chunk::tests::batch::test_adjacent_code_blocks_no_prose ... ok
[INFO] [stdout] test chunk::tests::batch::test_is_unfenced_diff_regular_text ... ok
[INFO] [stdout] test chunk::tests::batch::test_is_unfenced_diff_with_git_diff ... ok
[INFO] [stdout] test chunk::tests::batch::test_chunk_type_serialization ... ok
[INFO] [stdout] test chunk::tests::batch::test_is_unfenced_diff_with_hunk_header ... ok
[INFO] [stdout] test chunk::tests::batch::test_is_unfenced_diff_with_plus_minus_lines ... ok
[INFO] [stdout] test chunk::tests::batch::test_multiline_code_block ... ok
[INFO] [stdout] test chunk::tests::batch::test_parse_code_block_with_language ... ok
[INFO] [stdout] test chunk::tests::batch::test_parse_code_block_without_language ... ok
[INFO] [stdout] test chunk::tests::batch::test_parse_diff_block ... ok
[INFO] [stdout] test chunk::tests::batch::test_parse_fence_with_extra_info ... ok
[INFO] [stdout] test chunk::tests::batch::test_parse_multiple_code_blocks ... ok
[INFO] [stdout] test chunk::tests::batch::test_parse_empty_text ... ok
[INFO] [stdout] test chunk::tests::batch::test_parse_only_whitespace ... ok
[INFO] [stdout] test chunk::tests::batch::test_parsed_chunk_constructors ... ok
[INFO] [stdout] test chunk::tests::fence::is_fence_close_not_a_close ... ok
[INFO] [stdout] test chunk::tests::batch::test_roundtrip_serialization ... ok
[INFO] [stdout] test chunk::tests::fence::is_fence_close_simple ... ok
[INFO] [stdout] test chunk::tests::batch::test_parse_chunks_with_heuristics_fenced ... ok
[INFO] [stdout] test chunk::tests::batch::test_parse_chunks_with_heuristics_unfenced_diff ... ok
[INFO] [stdout] test chunk::tests::fence::is_fence_close_text_after_fence ... ok
[INFO] [stdout] test chunk::tests::fence::parse_fence_open_bare_fence_with_trailing_whitespace ... ok
[INFO] [stdout] test chunk::tests::fence::parse_fence_open_fence_in_text ... ok
[INFO] [stdout] test chunk::tests::fence::parse_fence_open_language_with_extra_words ... ok
[INFO] [stdout] test chunk::tests::fence::parse_fence_open_not_a_fence ... ok
[INFO] [stdout] test chunk::tests::fence::is_fence_close_empty_line ... ok
[INFO] [stdout] test chunk::tests::fence::is_fence_close_partial ... ok
[INFO] [stdout] test chunk::tests::fence::is_fence_close_with_surrounding_whitespace ... ok
[INFO] [stdout] test chunk::tests::fence::parse_fence_open_bare_fence ... ok
[INFO] [stdout] test chunk::tests::fence::parse_fence_open_with_language_and_whitespace ... ok
[INFO] [stdout] test chunk::tests::batch::test_chunk_type_deserialization ... ok
[INFO] [stdout] test chunk::tests::fence::parse_fence_open_diff_language ... ok
[INFO] [stdout] test chunk::tests::batch::test_parse_indented_fence ... ok
[INFO] [stdout] test chunk::tests::fence::parse_fence_open_with_language ... ok
[INFO] [stdout] test chunk::tests::fence::parse_fence_open_partial_fence ... ok
[INFO] [stdout] test chunk::tests::batch::test_parse_simple_prose ... ok
[INFO] [stdout] test chunk::tests::batch::test_parse_unterminated_code_block ... ok
[INFO] [stdout] test chunk::tests::fence::is_fence_close_fence_in_text ... ok
[INFO] [stdout] test chunk::tests::fence::parse_fence_open_with_leading_whitespace ... ok
[INFO] [stdout] test chunk::tests::split_lines::test_split_lines_basic ... ok
[INFO] [stdout] test chunk::tests::split_lines::test_split_lines_blank_lines_middle ... ok
[INFO] [stdout] test chunk::tests::split_lines::test_split_lines_empty_string ... ok
[INFO] [stdout] test chunk::tests::split_lines::test_split_lines_crlf ... ok
[INFO] [stdout] test chunk::tests::split_lines::test_split_lines_mixed_endings ... ok
[INFO] [stdout] test chunk::tests::split_lines::test_split_lines_multiple_trailing_newlines ... ok
[INFO] [stdout] test chunk::tests::split_lines::test_split_lines_no_newline ... ok
[INFO] [stdout] test chunk::tests::split_lines::test_split_lines_single_newline ... ok
[INFO] [stdout] test chunk::tests::split_lines::test_split_lines_trailing_newline ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_finish_unterminated_code_block ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_buffer_default ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_mixed_content ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_multiple_code_blocks ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_buffer_new ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_buffered_content ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_process_text_with_code_block ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_code_block_buffers ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_code_block_without_language ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_process_text ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_diff_block_buffers ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_emitted_count_tracking ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_empty_code_block ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_empty_lines_emitted_for_whitespace_preservation ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_finish_empty_code_block ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_buffered_mode_accumulates ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_code_block_unchanged ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_eager_mode_emits_immediately ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_finish_unterminated_diff_block ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_indented_fence ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_multiple_flushes ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_flushes_on_code_block_start ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_reset_clears_buffered_lines ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_threshold_default_is_zero ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_set_threshold ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_threshold_one_behaves_like_eager ... ok
[INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_blank_lines_between_paragraphs ... ok
[INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_blank_lines_after_code_block ... ok
[INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_code_block_indentation_preserved ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_threshold_with_value ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_whitespace_preservation ... ok
[INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_empty_lines_in_code_block ... ok
[INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_leading_spaces_in_prose ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_prose_emits_immediately ... ok
[INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_list_indentation ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_whitespace_lines_emitted ... ok
[INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_multiple_blank_lines ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_diff_block_unchanged ... ok
[INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_multiple_trailing_newlines_in_process_text ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_flushes_on_finish ... ok
[INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_blank_lines_before_code_block ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_mixed_content_integration ... ok
[INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_process_text_preserves_blank_lines ... ok
[INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_trailing_newline_in_process_text ... ok
[INFO] [stdout] test completion::tests::test_completion_when_no_pending_stories ... ok
[INFO] [stdout] test completion::tests::test_custom_marker ... ok
[INFO] [stdout] test completion::tests::test_completion_marker_in_middle_of_text ... ok
[INFO] [stdout] test completion::tests::test_no_completion_when_stories_remain_and_no_marker ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_finish_prose_mode ... ok
[INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_trailing_spaces_in_prose ... ok
[INFO] [stdout] test completion::tests::test_partial_marker_not_matched ... ok
[INFO] [stdout] test completion::tests::test_completion_when_marker_found ... ok
[INFO] [stdout] test completion::tests::test_soft_stop_variant_exists ... ok
[INFO] [stdout] test completion::tests::test_zero_pending_takes_priority_over_marker ... ok
[INFO] [stdout] test completion::tests::test_marker_case_sensitive ... ok
[INFO] [stdout] test completion::tests::test_no_completion_with_empty_output ... ok
[INFO] [stdout] test context::tests::test_default_command_template_does_not_contain_session_id ... ok
[INFO] [stdout] test context::tests::test_default_completion_marker ... ok
[INFO] [stdout] test context::tests::test_default_prompt_template_contains_prd_placeholder ... ok
[INFO] [stdout] test completion::tests::test_marker_with_surrounding_whitespace ... ok
[INFO] [stdout] test context::tests::test_default_prompt_template_does_not_contain_design_placeholder ... ok
[INFO] [stdout] test context::tests::test_default_command_template_contains_stream_json ... ok
[INFO] [stdout] test context::tests::test_default_command_template_contains_permission_mode ... ok
[INFO] [stdout] test context::tests::test_default_command_template_uses_claude ... ok
[INFO] [stdout] test context::tests::test_default_prompt_template_contains_completion_marker_placeholder ... ok
[INFO] [stdout] test context::tests::test_default_prompt_template_does_not_contain_progress_placeholder ... ok
[INFO] [stdout] test context::tests::test_default_command_template_contains_prompt_placeholder ... ok
[INFO] [stdout] test context::tests::test_default_prompt_template_includes_key_instructions ... ok
[INFO] [stdout] test context::tests::test_default_prompt_template_has_phase_separation ... ok
[INFO] [stdout] test context::tests::test_default_prompt_template_includes_progressive_disclosure ... ok
[INFO] [stdout] test context::tests::test_resolve_prd_path_default ... ok
[INFO] [stdout] test context::tests::test_default_prompt_template_uses_at_file_references ... ok
[INFO] [stdout] test context::tests::test_substitute_additional_prompt ... ok
[INFO] [stdout] test context::tests::test_substitute_empty_additional_prompt ... ok
[INFO] [stdout] test context::tests::test_substitute_empty_template ... ok
[INFO] [stdout] test context::tests::test_substitute_multiple_prd_occurrences ... ok
[INFO] [stdout] test context::tests::test_default_prompt_template_includes_semantic_commit ... ok
[INFO] [stdout] test context::tests::test_substitute_no_placeholders ... ok
[INFO] [stdout] test context::tests::test_resolve_prd_path_with_override ... ok
[INFO] [stdout] test context::tests::test_substitute_preserves_unknown_placeholders ... ok
[INFO] [stdout] test context::tests::test_substitute_all_placeholders ... ok
[INFO] [stdout] test context::tests::test_default_prompt_template_includes_git_log_instruction ... ok
[INFO] [stdout] test context::tests::test_substitute_with_special_characters_in_path ... ok
[INFO] [stdout] test directive::tests::normalize_verb_ask_synonyms ... ok
[INFO] [stdout] test directive::tests::normalize_verb_canonical_ask ... ok
[INFO] [stdout] test context::tests::test_substitute_with_default_prompt_template ... ok
[INFO] [stdout] test directive::tests::normalize_verb_handover_synonyms ... ok
[INFO] [stdout] test directive::tests::aggregate_empty_response_text ... ok
[INFO] [stdout] test directive::tests::aggregate_empty_responses_vec ... ok
[INFO] [stdout] test directive::tests::aggregate_multiple_responses ... ok
[INFO] [stdout] test directive::tests::aggregate_single_response ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_reset ... ok
[INFO] [stdout] test directive::tests::extract_comments_partitions ... ok
[INFO] [stdout] test directive::tests::aggregate_three_responses_no_trailing_separator ... ok
[INFO] [stdout] test directive::tests::normalize_verb_canonical_handover ... ok
[INFO] [stdout] test directive::tests::normalize_verb_unknown_returns_none ... ok
[INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_empty_lines_count_towards_threshold ... ok
[INFO] [stdout] test chunk::tests::streaming_core::test_streaming_multiline_code ... ok
[INFO] [stdout] test directive::tests::parse_no_directives_returns_empty ... ok
[INFO] [stdout] test directive::tests::parse_empty_payload ... ok
[INFO] [stdout] test directive::tests::parse_single_ask ... ok
[INFO] [stdout] test directive::tests::parse_sequential_directives_still_work ... ok
[INFO] [stdout] test directive::tests::parse_single_handover ... ok
[INFO] [stdout] test directive::tests::parse_nested_directive_with_own_closing_tag ... ok
[INFO] [stdout] test directive::tests::parse_unknown_verb_skipped ... ok
[INFO] [stdout] test directive::tests::parse_nested_content_preserved ... ok
[INFO] [stdout] test directive::tests::parse_opening_without_closing_consumes_remaining ... ok
[INFO] [stdout] test directive::tests::parse_opening_without_closing_unknown_verb ... ok
[INFO] [stdout] test directive::tests::parse_synonym_normalization ... ok
[INFO] [stdout] test directive::tests::parse_opening_at_end_empty_payload ... ok
[INFO] [stdout] test directive::tests::comment_verb_normalize_parse_split ... ok
[INFO] [stdout] test directive::tests::split_directive_at_end_of_text ... ok
[INFO] [stdout] test directive::tests::parse_complete_then_opening_without_closing ... ok
[INFO] [stdout] test directive::tests::parse_directive_after_nested_is_found ... ok
[INFO] [stdout] test directive::tests::split_directive_at_start_of_text ... ok
[INFO] [stdout] test directive::tests::split_empty_payload_directive ... ok
[INFO] [stdout] test directive::tests::split_multiple_directives ... ok
[INFO] [stdout] test directive::tests::split_no_directives_returns_single_prose ... ok
[INFO] [stdout] test directive::tests::split_multiline_payload_preserved ... ok
[INFO] [stdout] test directive::tests::split_opening_without_closing_becomes_directive ... ok
[INFO] [stdout] test directive::tests::split_synonym_verbs_normalized ... ok
[INFO] [stdout] test directive::tests::recover_orphan_closing_no_persona_in_text ... ok
[INFO] [stdout] test directive::tests::recover_orphan_closing_persona_only_after_tag ... ok
[INFO] [stdout] test directive::tests::recover_orphan_closing_unknown_verb ... ok
[INFO] [stdout] test directive::tests::split_unknown_verb_stays_as_prose ... ok
[INFO] [stdout] test directive::tests::recover_orphan_closing_no_closing_tag ... ok
[INFO] [stdout] test directive::tests::split_prose_before_opening_without_closing ... ok
[INFO] [stdout] test directive::tests::recover_orphan_closing_empty_known_personas ... ok
[INFO] [stdout] test directive::tests::recover_orphan_closing_earliest_persona_wins ... ok
[INFO] [stdout] test directive::tests::validate_mixed_verbs_error ... ok
[INFO] [stdout] test directive::tests::validate_all_asks ... ok
[INFO] [stdout] test directive::tests::validate_empty_set_error ... ok
[INFO] [stdout] test directive::tests::recover_orphan_closing_tag_at_start ... ok
[INFO] [stdout] test directive::tests::recover_orphan_closing_handover_becomes_ask ... ok
[INFO] [stdout] test directive::tests::split_unknown_verb_without_closing_stays_prose ... ok
[INFO] [stdout] test directive::tests::recover_orphan_closing_with_persona ... ok
[INFO] [stdout] test human::tests::classify_target_case_sensitive ... ok
[INFO] [stdout] test directive::tests::validate_all_handovers ... ok
[INFO] [stdout] test human::tests::classify_target_empty_string ... ok
[INFO] [stdout] test human::tests::classify_target_human ... ok
[INFO] [stdout] test human::tests::classify_target_persona ... ok
[INFO] [stdout] test human::tests::partition_all_human ... ok
[INFO] [stdout] test human::tests::partition_empty ... ok
[INFO] [stdout] test human::tests::partition_no_human ... ok
[INFO] [stdout] test paused::tests::test_paused_state_new ... ok
[INFO] [stdout] test persona::tests::test_dedup_empty_user ... ok
[INFO] [stdout] test paused::tests::test_paused_state_toml_roundtrip ... ok
[INFO] [stdout] test persona::tests::test_dedup_both_empty ... ok
[INFO] [stdout] test persona::tests::test_dedup_empty_project ... ok
[INFO] [stdout] test persona::tests::test_dedup_mixed ... ok
[INFO] [stdout] test human::tests::partition_mixed_targets ... ok
[INFO] [stdout] test persona::tests::test_dedup_no_overlap ... ok
[INFO] [stdout] test persona::tests::test_dedup_project_shadows_user ... ok
[INFO] [stdout] test persona::tests::test_parse_empty_content ... ok
[INFO] [stdout] test persona::tests::test_parse_missing_description ... ok
[INFO] [stdout] test directive::tests::split_single_inline_directive ... ok
[INFO] [stdout] test persona::tests::test_parse_missing_name ... ok
[INFO] [stdout] test persona::tests::test_parse_name_and_description_only ... ok
[INFO] [stdout] test persona::tests::test_parse_no_delimiters ... ok
[INFO] [stdout] test persona::tests::test_parse_trims_whitespace ... ok
[INFO] [stdout] test persona::tests::test_parse_unclosed_frontmatter ... ok
[INFO] [stdout] test prd::tests::test_has_prd_changed_detects_content_change ... ok
[INFO] [stdout] test persona::tests::test_parse_valid_frontmatter ... ok
[INFO] [stdout] test prd::tests::test_has_prd_changed_different_story_count ... ok
[INFO] [stdout] test prd::tests::test_count_pending_stories ... ok
[INFO] [stdout] test prd::tests::test_has_prd_changed_newline_normalization ... ok
[INFO] [stdout] test prd::tests::test_has_prd_changed_identical_content ... ok
[INFO] [stdout] test prd::tests::test_has_prd_changed_comment_change ... ok
[INFO] [stdout] test prd::tests::test_has_prd_changed_whitespace_change ... ok
[INFO] [stdout] test prd::tests::test_parse_prd_default_passes_to_false ... ok
[INFO] [stdout] test prd::tests::test_parse_prd_malformed_toml ... ok
[INFO] [stdout] test prd::tests::test_parse_prd_no_stories_error ... ok
[INFO] [stdout] test prd::tests::test_parse_prd_supports_passed_alias ... ok
[INFO] [stdout] test prd::tests::test_parse_prd_with_mixed_stories ... ok
[INFO] [stdout] test prd::tests::test_parse_prd_ignores_extra_fields ... ok
[INFO] [stdout] test directive::tests::parse_multiple_asks ... ok
[INFO] [stdout] test directive::tests::parse_malformed_xml_skipped ... ok
[INFO] [stdout] test prd::tests::test_parse_prd_all_pending ... ok
[INFO] [stdout] test prd::tests::test_parse_prd_all_completed ... ok
[INFO] [stdout] test prd::tests::test_has_prd_changed_empty_strings ... ok
[INFO] [stdout] test session::persona_tests::find_most_recent_for_persona_filters_by_persona ... ok
[INFO] [stdout] test session::persona_tests::session_entry_new_with_persona ... ok
[INFO] [stdout] test session::persona_tests::session_entry_deserializes_with_persona_field ... ok
[INFO] [stdout] test session::persona_tests::session_entry_deserializes_without_persona_field ... ok
[INFO] [stdout] test session::persona_tests::session_metadata_round_trip_with_persona ... ok
[INFO] [stdout] test session::persona_tests::session_metadata_from_entry ... ok
[INFO] [stdout] test session::tests::test_all_adjectives_lowercase ... ok
[INFO] [stdout] test session::persona_tests::session_metadata_toml_roundtrip ... ok
[INFO] [stdout] test session::tests::test_all_nouns_lowercase ... ok
[INFO] [stdout] test session::persona_tests::sessions_index_find_by_slug_mut ... ok
[INFO] [stdout] test session::tests::test_generate_slug_format ... ok
[INFO] [stdout] test session::tests::test_generate_unique_slug_avoids_existing ... ok
[INFO] [stdout] test session::tests::test_generate_unique_slug_returns_none_when_exhausted ... ok
[INFO] [stdout] test session::tests::test_generate_unique_slug_empty_existing ... ok
[INFO] [stdout] test session::tests::test_generate_slug_variety ... ok
[INFO] [stdout] test session::tests::test_generate_slug_deterministic_with_seed ... ok
[INFO] [stdout] test session::tests::test_is_valid_slug_rejects_empty_parts ... ok
[INFO] [stdout] test session::tests::test_generated_slugs_are_valid ... ok
[INFO] [stdout] test session::tests::test_is_valid_slug_rejects_non_alpha ... ok
[INFO] [stdout] test session::tests::test_is_valid_slug_accepts_valid ... ok
[INFO] [stdout] test session::tests::test_session_entry_new ... ok
[INFO] [stdout] test session::tests::test_session_outcome_default ... ok
[INFO] [stdout] test session::tests::test_sessions_index_add_and_find ... ok
[INFO] [stdout] test session::tests::test_session_outcome_serialization ... ok
[INFO] [stdout] test session::tests::test_sessions_index_empty ... ok
[INFO] [stdout] test session::tests::test_session_metadata_new ... ok
[INFO] [stdout] test session::tests::test_sessions_index_existing_slugs ... ok
[INFO] [stdout] test session::tests::test_word_list_minimums ... ok
[INFO] [stdout] test strategy::tests::test_iteration_decision_continue ... ok
[INFO] [stdout] test strategy::tests::test_iteration_decision_orchestrate ... ok
[INFO] [stdout] test session::tests::test_total_slug_combinations ... ok
[INFO] [stdout] test session::tests::test_session_outcome_display ... ok
[INFO] [stdout] test strategy::tests::test_iteration_decision_variants_distinct ... ok
[INFO] [stdout] test strategy::tests::test_key_action_clone ... ok
[INFO] [stdout] test strategy::tests::test_key_action_variants_distinct ... ok
[INFO] [stdout] test strategy::tests::test_parse_error_includes_path ... ok
[INFO] [stdout] test strategy::tests::test_parse_all_fields ... ok
[INFO] [stdout] test strategy::tests::test_parse_error_message_includes_field_name ... ok
[INFO] [stdout] test strategy::tests::test_parse_malformed_toml ... ok
[INFO] [stdout] test strategy::tests::test_parse_missing_primary_persona ... ok
[INFO] [stdout] test strategy::tests::test_parse_optional_fields_omitted ... ok
[INFO] [stdout] test strategy::tests::test_parse_missing_name ... ok
[INFO] [stdout] test strategy::tests::test_parse_team_strategy_empty_agents ... ok
[INFO] [stdout] test strategy::tests::test_iteration_decision_stop ... ok
[INFO] [stdout] test strategy::tests::test_parse_team_strategy_malformed_toml ... ok
[INFO] [stdout] test strategy::tests::test_parse_team_strategy_error_includes_path ... ok
[INFO] [stdout] test strategy::tests::test_parse_missing_description ... ok
[INFO] [stdout] test strategy::tests::test_parse_missing_kind ... ok
[INFO] [stdout] test strategy::tests::test_parse_team_strategy_missing_agents_table ... ok
[INFO] [stdout] test strategy::tests::test_resolve_kind_conversation_loop ... ok
[INFO] [stdout] test strategy::tests::test_resolve_kind_empty ... ok
[INFO] [stdout] test strategy::tests::test_resolve_kind_case_sensitive ... ok
[INFO] [stdout] test strategy::tests::test_resolve_kind_unknown ... ok
[INFO] [stdout] test strategy::tests::test_validate_available_persona_not_found ... ok
[INFO] [stdout] test strategy::tests::test_validate_personas_all_exist ... ok
[INFO] [stdout] test strategy::tests::test_validate_personas_no_available ... ok
[INFO] [stdout] test strategy::tests::test_validate_primary_persona_not_found ... ok
[INFO] [stdout] test strategy::tests::test_validate_prompt_aggregates_empty_list_is_valid ... ok
[INFO] [stdout] test strategy::tests::test_validate_prompt_aggregates_empty_entry ... ok
[INFO] [stdout] test strategy::tests::test_validate_prompt_aggregates_omitted_is_valid ... ok
[INFO] [stdout] test strategy::tests::test_parse_team_strategy_valid ... ok
[INFO] [stdout] test strategy::tests::test_validate_prompt_aggregates_first_entry_empty ... ok
[INFO] [stdout] test session::tests::test_is_valid_slug_rejects_uppercase ... ok
[INFO] [stdout] test strategy::tests::test_resolve_kind_prd_loop ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_from_events_empty ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_from_events_prose_only ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_from_events_multiple_code_blocks ... ok
[INFO] [stdout] test session::tests::test_sessions_index_toml_roundtrip ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_from_events_with_heuristics_unfenced_diff ... ok
[INFO] [stdout] test session::tests::test_is_valid_slug_rejects_wrong_hyphen_count ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_from_events_with_code_block ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_from_events_with_diff_block ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_text_into_chunks_code_block ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_text_into_chunks_with_heuristics ... ok
[INFO] [stdout] test stream::tests::core_tests::test_assistant_text_event ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_preserves_language_metadata ... ok
[INFO] [stdout] test stream::tests::core_tests::test_content_block_tool_use_round_trip ... ok
[INFO] [stdout] test stream::tests::core_tests::test_content_block_text_round_trip ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_prose_between_code_blocks_preserved ... ok
[INFO] [stdout] test stream::tests::core_tests::test_empty_content_arrays ... ok
[INFO] [stdout] test stream::tests::core_tests::test_missing_optional_fields ... ok
[INFO] [stdout] test stream::tests::core_tests::test_result_event_alternative_cost_field ... ok
[INFO] [stdout] test stream::tests::core_tests::test_result_event ... ok
[INFO] [stdout] test stream::tests::core_tests::test_round_trip_serialization ... ok
[INFO] [stdout] test stream::tests::core_tests::test_usage_defaults ... ok
[INFO] [stdout] test stream::tests::core_tests::test_system_init_event ... ok
[INFO] [stdout] test stream::tests::core_tests::test_user_tool_result_event ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_assistant_event_extract_text ... ok
[INFO] [stdout] test stream::tests::core_tests::test_user_tool_error_result ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_assistant_message_extract_text_empty_content ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_assistant_message_extract_text_preserves_ordering ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_assistant_message_extract_text_single_content ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_assistant_message_extract_text_multi_content ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_metadata_from_events_empty_events ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_assistant_message_extract_text_tool_only ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_metadata_from_events_first_init_wins ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_metadata_from_events_init_present ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_metadata_from_events_no_system_event ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_metadata_from_events_non_init_system_event ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_metadata_from_events_or_default_no_init ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_metadata_from_events_or_default_with_init ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_metadata_init_at_end ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_metadata_partial_fields ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_text_from_events_assistant_only ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_text_from_events_empty ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_text_from_events_mixed ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_text_from_events_no_assistant ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_extract_text_from_events_tool_only_assistant ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_matches_plain_text_parsing ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_iteration_metadata_is_empty ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_from_events_with_heuristics_fenced_code_preserved ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_iteration_metadata_new ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_iteration_metadata_serialization ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_system_event_extract_metadata ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_system_event_extract_metadata_missing_fields ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_system_event_is_init ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_extract_costs_from_events_empty_slice ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_extract_costs_from_events_no_result ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_extract_costs_from_events_multiple_results_takes_first ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_extract_costs_from_events_or_default_with_result ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_extract_costs_from_events_with_result ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_extract_costs_result_at_end ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_iteration_costs_empty_fields_skip_serialization ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_iteration_costs_is_empty_with_cost ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_iteration_costs_is_empty_with_duration ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_iteration_costs_new_is_empty ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_iteration_costs_is_empty_with_usage ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_iteration_costs_serialization_round_trip ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_result_event_extract_costs_empty ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_result_event_extract_costs_prefers_total_cost_usd ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_result_event_extract_costs_full ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_result_event_extract_costs_uses_alternative_cost_field ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_real_claude_output_simulation ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_line_assistant_event ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_line_empty ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_line_system_event ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_line_result_event ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_line_unknown_type ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_output_empty ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_line_user_event ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_line_with_whitespace ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_output_handles_incomplete_line_at_end ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_output_multiple_events ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_output_only_empty_lines ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_output_preserves_order ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_output_with_empty_lines ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_output_with_errors ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_stream_parser_empty_iterator ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_stream_parser_with_errors ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_stream_parser_iterator ... ok
[INFO] [stdout] test stream::tests::extraction_tests::test_iteration_metadata_serialization_empty_fields_skipped ... ok
[INFO] [stdout] test stream::tests::iteration_costs_tests::test_extract_costs_from_events_or_default_no_result ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_accumulate_text_function ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_completed_messages ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_accumulate_text_matches_extract_text_from_events ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_finish ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_get_all_text ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_accumulate_text_multiple_messages ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_ignores_non_assistant_events ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_multiple_events_same_message_id ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_new ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_finish_empty ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_realistic_streaming_scenario ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_none_to_some_message_id ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_reset ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_tool_only_events ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_single_event ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_with_none_message_ids ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_correlate_tool_interactions_empty_events ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_correlate_tool_interactions_multiple_calls ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_correlate_tool_interactions_no_result ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_correlate_tool_interactions_no_tool_calls ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_correlate_tool_interactions_order_preserved ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_correlate_tool_interactions_single_call ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_correlator_basic ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_correlator_ignores_other_events ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_correlator_finish_with_pending ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_new_message_id_completes_previous ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_correlate_realistic_stream ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_correlator_reset ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_correlator_multiple_concurrent_calls ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_interaction_from_invocation ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_interaction_from_invocation_and_result ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_interaction_serialization_no_result ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_interaction_serialization_round_trip ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_assistant_event_extract_tool_invocations ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_assistant_message_extract_tool_invocations_mixed_content ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_assistant_message_extract_tool_invocations_empty_content ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_assistant_message_extract_tool_invocations_multiple ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_assistant_message_extract_tool_invocations_single ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_assistant_message_extract_tool_invocations_preserves_input ... ok
[INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_interaction_from_invocation_and_error_result ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_assistant_message_extract_tool_invocations_text_only ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_extract_tool_invocations_from_events_empty ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_extract_tool_invocations_from_events_no_assistant ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_extract_tool_invocations_from_events_single_assistant ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_extract_tool_invocations_from_events_text_only_assistants ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_extract_tool_invocations_preserves_order ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_tool_invocation_serialization_round_trip ... ok
[INFO] [stdout] test transcript::tests::build_editor_content_empty_transcript ... ok
[INFO] [stdout] test transcript::tests::build_editor_content_mixed_speakers ... ok
[INFO] [stdout] test transcript::tests::build_editor_content_multiple_entries ... ok
[INFO] [stdout] test transcript::tests::build_editor_content_single_human_entry ... ok
[INFO] [stdout] test transcript::tests::build_editor_content_single_persona_entry ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_extract_tool_invocations_from_events_mixed_event_types ... ok
[INFO] [stdout] test transcript::tests::build_persona_prompt_multiple_turns ... ok
[INFO] [stdout] test transcript::tests::build_persona_prompt_empty_transcript ... ok
[INFO] [stdout] test transcript::tests::build_persona_prompt_with_history ... ok
[INFO] [stdout] test transcript::tests::check_exit_abort_exits ... ok
[INFO] [stdout] test stream::tests::tool_invocation_tests::test_extract_tool_invocations_from_events_multiple_assistants ... ok
[INFO] [stdout] test transcript::tests::check_exit_content_continues ... ok
[INFO] [stdout] test transcript::tests::parse_editor_response_content_below_separator ... ok
[INFO] [stdout] test transcript::tests::parse_editor_response_multiline_below_separator ... ok
[INFO] [stdout] test transcript::tests::parse_editor_response_no_separator ... ok
[INFO] [stdout] test transcript::tests::parse_editor_response_empty_below_separator ... ok
[INFO] [stdout] test transcript::tests::parse_editor_response_no_separator_empty ... ok
[INFO] [stdout] test transcript::tests::parse_editor_response_whitespace_only_below_separator ... ok
[INFO] [stdout] test session::persona_tests::find_most_recent_for_persona_ignores_other_projects ... ok
[INFO] [stdout] test session::persona_tests::find_most_recent_for_persona_returns_most_recent ... ok
[INFO] [stdout] test session::persona_tests::session_metadata_from_entry_preserves_persona ... ok
[INFO] [stdout] test session::tests::from_toml_rejects_corrupt_input ... ok
[INFO] [stdout] test strategy::tests::test_validate_prompt_aggregates_valid ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_from_events_multiple_assistant_events ... ok
[INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_from_events_non_assistant_events ... ok
[INFO] [stdout] test stream::tests::core_tests::test_assistant_tool_use_event ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_line_malformed_json ... ok
[INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_line_partial_json ... ok
[INFO] [stdout] test stream::tests::text_accumulation_tests::test_accumulate_text_empty_events ... ok
[INFO] [stdout] test directive::tests::parse_nested_directive_in_payload_treated_as_text ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 461 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/xtask-217a74d267bdffcc)
[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] [stderr]    Doc-tests ralph_core
[INFO] [stdout] 
[INFO] [stdout] running 49 tests
[INFO] [stdout] test crates/core/src/chunk/batch.rs - chunk::batch::parse_chunks (line 55) ... ok
[INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer::new (line 182) ... ok
[INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer::process_text (line 425) ... ok
[INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer::with_prose_threshold (line 202) ... ok
[INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer::is_empty (line 225) ... ok
[INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer::process_line (line 287) ... ok
[INFO] [stdout] test crates/core/src/chunk/mod.rs - chunk (line 25) ... ok
[INFO] [stdout] test crates/core/src/chunk/heuristics.rs - chunk::heuristics::parse_chunks_with_heuristics (line 86) ... ok
[INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer::is_in_code_block (line 248) ... ok
[INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer (line 141) ... ok
[INFO] [stdout] test crates/core/src/chunk/heuristics.rs - chunk::heuristics::is_unfenced_diff (line 27) ... ok
[INFO] [stdout] test crates/core/src/chunk/mod.rs - chunk (line 38) ... ok
[INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer::finish (line 473) ... ok
[INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer (line 120) ... ok
[INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer::reset (line 519) ... ok
[INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer::finish (line 453) ... ok
[INFO] [stdout] test crates/core/src/prd.rs - prd::has_prd_changed (line 140) ... ok
[INFO] [stdout] test crates/core/src/stream/accumulation.rs - stream::accumulation::TextAccumulator (line 13) ... ok
[INFO] [stdout] test crates/core/src/strategy.rs - strategy::resolve_kind (line 155) ... ok
[INFO] [stdout] test crates/core/src/stream/chunks.rs - stream::chunks::parse_chunks_from_events (line 26) ... ok
[INFO] [stdout] test crates/core/src/context.rs - context::substitute_template_placeholders (line 146) ... ok
[INFO] [stdout] test crates/core/src/session.rs - session::generate_slug (line 277) ... ok
[INFO] [stdout] test crates/core/src/stream/chunks.rs - stream::chunks::parse_chunks_from_events_with_heuristics (line 74) ... ok
[INFO] [stdout] test crates/core/src/session.rs - session::generate_unique_slug (line 318) ... ok
[INFO] [stdout] test crates/core/src/prd.rs - prd::parse_prd (line 69) ... ok
[INFO] [stdout] test crates/core/src/completion.rs - completion::check_completion (line 35) ... ok
[INFO] [stdout] test crates/core/src/stream/accumulation.rs - stream::accumulation::accumulate_text (line 189) ... ok
[INFO] [stdout] test crates/core/src/stream/costs.rs - stream::costs::extract_costs_from_events_or_default (line 203) ... ok
[INFO] [stdout] test crates/core/src/stream/costs.rs - stream::costs::IterationCosts (line 14) ... ok
[INFO] [stdout] test crates/core/src/session.rs - session::is_valid_slug (line 358) ... ok
[INFO] [stdout] test crates/core/src/stream/extraction.rs - stream::extraction::AssistantMessage::extract_text (line 37) ... ok
[INFO] [stdout] test crates/core/src/stream/costs.rs - stream::costs::ResultEvent::extract_costs (line 87) ... ok
[INFO] [stdout] test crates/core/src/stream/costs.rs - stream::costs::extract_costs_from_events (line 139) ... ok
[INFO] [stdout] test crates/core/src/stream/extraction.rs - stream::extraction::AssistantEvent::extract_tool_invocations (line 152) ... ok
[INFO] [stdout] test crates/core/src/stream/extraction.rs - stream::extraction::extract_text_from_events (line 196) ... ok
[INFO] [stdout] test crates/core/src/stream/extraction.rs - stream::extraction::AssistantMessage::extract_tool_invocations (line 81) ... ok
[INFO] [stdout] test crates/core/src/stream/parsing.rs - stream::parsing::StreamParser (line 121) ... ok
[INFO] [stdout] test crates/core/src/stream/metadata.rs - stream::metadata::extract_metadata_from_events (line 119) ... ok
[INFO] [stdout] test crates/core/src/stream/parsing.rs - stream::parsing::parse_stream_output (line 83) ... ok
[INFO] [stdout] test crates/core/src/stream/parsing.rs - stream::parsing::parse_stream_line (line 33) ... ok
[INFO] [stdout] test crates/core/src/stream/metadata.rs - stream::metadata::IterationMetadata (line 14) ... ok
[INFO] [stdout] test crates/core/src/stream/mod.rs - stream (line 16) ... ok
[INFO] [stdout] test crates/core/src/stream/tools.rs - stream::tools::correlate_tool_interactions (line 121) ... ok
[INFO] [stdout] test crates/core/src/stream/extraction.rs - stream::extraction::AssistantEvent::extract_text (line 126) ... ok
[INFO] [stdout] test crates/core/src/stream/metadata.rs - stream::metadata::extract_metadata_from_events_or_default (line 181) ... ok
[INFO] [stdout] test crates/core/src/stream/tools.rs - stream::tools::ToolInteraction (line 20) ... ok
[INFO] [stdout] test crates/core/src/stream/tools.rs - stream::tools::ToolCorrelator (line 198) ... ok
[INFO] [stdout] test crates/core/src/stream/metadata.rs - stream::metadata::SystemEvent::extract_metadata (line 80) ... ok
[INFO] [stdout] test crates/core/src/stream/extraction.rs - stream::extraction::extract_tool_invocations_from_events (line 253) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 49 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.22s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "319b666af18dfbee9f71acc667fa9f45b56f75569c2943845a7c99dbc6aae87f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "319b666af18dfbee9f71acc667fa9f45b56f75569c2943845a7c99dbc6aae87f", kill_on_drop: false }`
[INFO] [stdout] 319b666af18dfbee9f71acc667fa9f45b56f75569c2943845a7c99dbc6aae87f
