[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 master#562dee4820c458d823175268e41601d4c060588a for pr-154210 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcloudbridgeuy%2Fralph" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-6-tc1/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-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/cloudbridgeuy/ralph on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/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" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded quote v1.0.43 [INFO] [stderr] Downloaded id-arena v2.3.0 [INFO] [stderr] Downloaded clap_lex v0.7.6 [INFO] [stderr] Downloaded anstream v1.0.0 [INFO] [stderr] Downloaded anstyle-parse v1.0.0 [INFO] [stderr] Downloaded clap_derive v4.5.49 [INFO] [stderr] Downloaded tracing-core v0.1.36 [INFO] [stderr] Downloaded bytes v1.11.0 [INFO] [stderr] Downloaded rand v0.10.0 [INFO] [stderr] Downloaded wasip3 v0.4.0+wasi-0.3.0-rc-2026-01-06 [INFO] [stderr] Downloaded wit-parser v0.244.0 [INFO] [stderr] Downloaded clap_builder v4.5.54 [INFO] [stderr] Downloaded coolor v1.1.0 [INFO] [stderr] Downloaded tracing-subscriber v0.3.22 [INFO] [stderr] Downloaded quick-xml v0.38.4 [INFO] [stderr] Downloaded wit-component v0.244.0 [INFO] [stderr] Downloaded serde_json v1.0.149 [INFO] [stderr] Downloaded gimli v0.32.3 [INFO] [stderr] Downloaded objc2 v0.6.3 [INFO] [stderr] Downloaded syn v2.0.113 [INFO] [stderr] Downloaded wasmparser v0.244.0 [INFO] [stderr] Downloaded winnow v0.7.14 [INFO] [stderr] Downloaded hashbrown v0.16.1 [INFO] [stderr] Downloaded mio v1.1.1 [INFO] [stderr] Downloaded fancy-regex v0.16.2 [INFO] [stderr] Downloaded rustix v1.1.3 [INFO] [stderr] Downloaded tracing v0.1.44 [INFO] [stderr] Downloaded termimad v0.34.1 [INFO] [stderr] Downloaded derive_more v2.1.1 [INFO] [stderr] Downloaded backtrace v0.3.76 [INFO] [stderr] Downloaded cc v1.2.51 [INFO] [stderr] Downloaded wasm-encoder v0.244.0 [INFO] [stderr] Downloaded derive_more-impl v2.1.1 [INFO] [stderr] Downloaded dispatch2 v0.3.0 [INFO] [stderr] Downloaded wit-bindgen v0.51.0 [INFO] [stderr] Downloaded similar v2.7.0 [INFO] [stderr] Downloaded plist v1.8.0 [INFO] [stderr] Downloaded yaml-rust v0.4.5 [INFO] [stderr] Downloaded indexmap v2.12.1 [INFO] [stderr] Downloaded libc v0.2.179 [INFO] [stderr] Downloaded bumpalo v3.19.1 [INFO] [stderr] Downloaded clap v4.5.54 [INFO] [stderr] Downloaded addr2line v0.25.1 [INFO] [stderr] Downloaded owo-colors v4.2.3 [INFO] [stderr] Downloaded redox_users v0.5.2 [INFO] [stderr] Downloaded r-efi v6.0.0 [INFO] [stderr] Downloaded wit-bindgen-rust v0.51.0 [INFO] [stderr] Downloaded getrandom v0.4.2 [INFO] [stderr] Downloaded signal-hook-registry v1.4.8 [INFO] [stderr] Downloaded crokey v1.3.0 [INFO] [stderr] Downloaded tokio v1.49.0 [INFO] [stderr] Downloaded syntect v5.3.0 [INFO] [stderr] Downloaded block2 v0.6.2 [INFO] [stderr] Downloaded objc2-encode v4.1.0 [INFO] [stderr] Downloaded find-msvc-tools v0.1.6 [INFO] [stderr] Downloaded chacha20 v0.10.0 [INFO] [stderr] Downloaded wit-bindgen-core v0.51.0 [INFO] [stderr] Downloaded wasm-metadata v0.244.0 [INFO] [stderr] Downloaded anyhow v1.0.102 [INFO] [stderr] Downloaded rand_core v0.10.0 [INFO] [stderr] Downloaded zmij v1.0.12 [INFO] [stderr] Downloaded tempfile v3.24.0 [INFO] [stderr] Downloaded litrs v1.0.0 [INFO] [stderr] Downloaded document-features v0.2.12 [INFO] [stderr] Downloaded minimad v0.14.0 [INFO] [stderr] Downloaded proc-macro2 v1.0.105 [INFO] [stderr] Downloaded anstyle-query v1.1.5 [INFO] [stderr] Downloaded anstyle-wincon v3.0.11 [INFO] [stderr] Downloaded ctrlc v3.5.1 [INFO] [stderr] Downloaded option-ext v0.2.0 [INFO] [stderr] Downloaded dirs v6.0.0 [INFO] [stderr] Downloaded leb128fmt v0.1.0 [INFO] [stderr] Downloaded simd-adler32 v0.3.8 [INFO] [stderr] Downloaded convert_case v0.10.0 [INFO] [stderr] Downloaded lazy-regex-proc_macros v3.5.1 [INFO] [stderr] Downloaded lazy-regex v3.5.1 [INFO] [stderr] Downloaded libredox v0.1.12 [INFO] [stderr] Downloaded dirs-sys v0.5.0 [INFO] [stderr] Downloaded cpufeatures v0.3.0 [INFO] [stderr] Downloaded itoa v1.0.17 [INFO] [stderr] Downloaded crokey-proc_macros v1.3.0 [INFO] [stderr] Downloaded strict v0.2.0 [INFO] [stderr] Downloaded toml v1.0.3+spec-1.1.0 [INFO] [stderr] Downloaded uuid v1.20.0 [INFO] [stderr] Downloaded wit-bindgen-rust-macro v0.51.0 [INFO] [stderr] Downloaded signal-hook-mio v0.2.5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 32b1936c837721eda22d47f56a9547fe357962455048ff6203fd36970bf73734 [INFO] running `Command { std: "docker" "start" "-a" "32b1936c837721eda22d47f56a9547fe357962455048ff6203fd36970bf73734", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "32b1936c837721eda22d47f56a9547fe357962455048ff6203fd36970bf73734", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "32b1936c837721eda22d47f56a9547fe357962455048ff6203fd36970bf73734", kill_on_drop: false }` [INFO] [stdout] 32b1936c837721eda22d47f56a9547fe357962455048ff6203fd36970bf73734 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f2cfa42fe4e2a78c9ef4028adae651fb42561ac79397d0193099e4b40c73bc4a [INFO] running `Command { std: "docker" "start" "-a" "f2cfa42fe4e2a78c9ef4028adae651fb42561ac79397d0193099e4b40c73bc4a", 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 unicode-ident v1.0.22 [INFO] [stderr] Compiling quote v1.0.43 [INFO] [stderr] Compiling memchr v2.7.6 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling smallvec v1.15.1 [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 regex-syntax v0.8.8 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling lock_api v0.4.14 [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 litrs v1.0.0 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling convert_case v0.10.0 [INFO] [stderr] Compiling itoa v1.0.17 [INFO] [stderr] Compiling autocfg v1.5.0 [INFO] [stderr] Compiling pin-project-lite v0.2.16 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling zmij v1.0.12 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling simd-adler32 v0.3.8 [INFO] [stderr] Compiling document-features v0.2.12 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling anstyle v1.0.13 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling colorchoice v1.0.4 [INFO] [stderr] Compiling adler2 v2.0.1 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling syn v2.0.113 [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 object v0.37.3 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling owo-colors v4.2.3 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Compiling powerfmt v0.2.0 [INFO] [stderr] Compiling rand_core v0.10.0 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling deranged v0.5.5 [INFO] [stderr] Compiling nix v0.30.1 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling num-conv v0.1.0 [INFO] [stderr] Compiling winnow v0.7.14 [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling clap_lex v0.7.6 [INFO] [stderr] Compiling strict v0.2.0 [INFO] [stderr] Compiling color-spantrace v0.3.0 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling time-core v0.1.6 [INFO] [stderr] Compiling eyre v0.6.12 [INFO] [stderr] Compiling iana-time-zone v0.1.64 [INFO] [stderr] Compiling cpufeatures v0.3.0 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling gimli v0.32.3 [INFO] [stderr] Compiling chacha20 v0.10.0 [INFO] [stderr] Compiling time v0.3.44 [INFO] [stderr] Compiling clap_builder v4.5.54 [INFO] [stderr] Compiling tracing-error v0.2.1 [INFO] [stderr] Compiling indexmap v2.12.1 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling crossbeam-deque v0.8.6 [INFO] [stderr] Compiling serde_spanned v1.0.4 [INFO] [stderr] Compiling toml_datetime v1.0.0+spec-1.1.0 [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 base64 v0.22.1 [INFO] [stderr] Compiling indenter v0.3.4 [INFO] [stderr] Compiling option-ext v0.2.0 [INFO] [stderr] Compiling toml_writer v1.0.6+spec-1.1.0 [INFO] [stderr] Compiling linked-hash-map v0.5.6 [INFO] [stderr] Compiling rustc-demangle v0.1.26 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Compiling yaml-rust v0.4.5 [INFO] [stderr] Compiling crossbeam v0.8.4 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling flate2 v1.1.5 [INFO] [stderr] Compiling toml_parser v1.0.9+spec-1.1.0 [INFO] [stderr] Compiling rand v0.10.0 [INFO] [stderr] Compiling socket2 v0.6.1 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling minimad v0.14.0 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling bytes v1.11.0 [INFO] [stderr] Compiling fnv v1.0.7 [INFO] [stderr] Compiling unicode-width v0.1.14 [INFO] [stderr] Compiling tempfile v3.24.0 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling dirs v6.0.0 [INFO] [stderr] Compiling uuid v1.20.0 [INFO] [stderr] Compiling similar v2.7.0 [INFO] [stderr] Compiling toml v1.0.3+spec-1.1.0 [INFO] [stderr] Compiling ctrlc v3.5.1 [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 clap_derive v4.5.49 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling regex v1.12.2 [INFO] [stderr] Compiling fancy-regex v0.16.2 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling derive_more v2.1.1 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling addr2line v0.25.1 [INFO] [stderr] Compiling lazy-regex-proc_macros v3.5.1 [INFO] [stderr] Compiling clap v4.5.54 [INFO] [stderr] Compiling crokey-proc_macros v1.3.0 [INFO] [stderr] Compiling coolor v1.1.0 [INFO] [stderr] Compiling lazy-regex v3.5.1 [INFO] [stderr] Compiling backtrace v0.3.76 [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 ralph v0.1.0 (/opt/rustwide/workdir/crates/ralph) [INFO] [stderr] Compiling xtask v0.1.0 (/opt/rustwide/workdir/xtask) [INFO] [stderr] Finished `dev` profile [unoptimized] target(s) in 1m 05s [INFO] running `Command { std: "docker" "inspect" "f2cfa42fe4e2a78c9ef4028adae651fb42561ac79397d0193099e4b40c73bc4a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f2cfa42fe4e2a78c9ef4028adae651fb42561ac79397d0193099e4b40c73bc4a", kill_on_drop: false }` [INFO] [stdout] f2cfa42fe4e2a78c9ef4028adae651fb42561ac79397d0193099e4b40c73bc4a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 02e104fcd210d9cd00b21ceae931af34be626238f568e71860d751d4d758c2dc [INFO] running `Command { std: "docker" "start" "-a" "02e104fcd210d9cd00b21ceae931af34be626238f568e71860d751d4d758c2dc", 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 11.92s [INFO] running `Command { std: "docker" "inspect" "02e104fcd210d9cd00b21ceae931af34be626238f568e71860d751d4d758c2dc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "02e104fcd210d9cd00b21ceae931af34be626238f568e71860d751d4d758c2dc", kill_on_drop: false }` [INFO] [stdout] 02e104fcd210d9cd00b21ceae931af34be626238f568e71860d751d4d758c2dc [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 49a64beeb8767dc6b9a38bbd069363f4a7519682a8a4cbca19d89b9b08f4bf02 [INFO] running `Command { std: "docker" "start" "-a" "49a64beeb8767dc6b9a38bbd069363f4a7519682a8a4cbca19d89b9b08f4bf02", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized] target(s) in 0.24s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ralph-04cfc187dee9274d) [INFO] [stdout] [INFO] [stdout] running 853 tests [INFO] [stdout] test ask::tests::test_resolve_permission_mode_cli_explicit_default ... ok [INFO] [stdout] test ask::tests::test_resolve_permission_mode_cli_explicit ... ok [INFO] [stdout] test ask::tests::test_resolve_permission_mode_none_returns_default ... ok [INFO] [stdout] test cli::tests::ask::test_ask_clone_with_continue ... ok [INFO] [stdout] test cli::tests::ask::test_ask_clone_with_all_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_history_with_continue_and_prompt ... ok [INFO] [stdout] test cli::tests::ask::test_ask_permission_mode_not_specified ... ok [INFO] [stdout] test cli::tests::ask::test_ask_history_with_session_and_continue ... ok [INFO] [stdout] test cli::tests::ask::test_ask_permission_mode_plan ... ok [INFO] [stdout] test cli::tests::ask::test_ask_clone_with_session_and_continue ... ok [INFO] [stdout] test cli::tests::ask::test_ask_session_before_prompt ... ok [INFO] [stdout] test cli::tests::ask::test_ask_theme_with_file_path ... ok [INFO] [stdout] test cli::tests::ask::test_ask_timeout_default ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_all_flags_combined ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_all_new_flags ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_clone_flag ... ok [INFO] [stdout] test cli::tests::ask::test_ask_help_available ... ok [INFO] [stdout] test cli::tests::ask::test_ask_permission_mode_accept_edits ... ok [INFO] [stdout] test cli::tests::ask::test_ask_history_with_continue ... 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_session_after_prompt ... ok [INFO] [stdout] test cli::tests::ask::test_ask_permission_mode_with_other_flags ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_multiword_prompt ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_no_prompt_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_session_short_flag ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_continue_flag ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_history_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_theme ... ok [INFO] [stdout] test cli::tests::ask::test_ask_without_clone_flag ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_timeout ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_no_background ... ok [INFO] [stdout] test cli::tests::ask::test_ask_without_prompt ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_verbose_tools_all ... 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_verbose_tools_specific ... ok [INFO] [stdout] test cli::tests::ask::test_ask_without_no_prompt_flag ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_theme_and_no_background ... ok [INFO] [stdout] test cli::tests::ask::test_ask_without_continue_flag ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_prompt ... ok [INFO] [stdout] test cli::tests::persona::test_persona_list_flag_parses ... ok [INFO] [stdout] test cli::tests::ask::test_ask_without_history_flag ... ok [INFO] [stdout] test cli::tests::strategy::test_strategy_execute_with_resume ... ok [INFO] [stdout] test cli::tests::persona::test_persona_with_name_parses ... ok [INFO] [stdout] test cli::tests::strategy::test_strategy_execute_with_max_iterations ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_theme_and_continue ... 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::strategy::test_strategy_execute_with_all_flags ... ok [INFO] [stdout] test cli::tests::ask::test_ask_without_verbose_tools ... ok [INFO] [stdout] test cli::tests::ask::test_cli_parses_ask_command ... ok [INFO] [stdout] test cli::tests::persona::test_into_action_no_name_no_list ... ok [INFO] [stdout] test cli::tests::strategy::test_strategy_list_parses ... ok [INFO] [stdout] test cli::tests::strategy::test_strategy_without_subcommand_fails ... ok [INFO] [stdout] test cli::tests::ask::test_ask_with_continue_and_session ... ok [INFO] [stdout] test cli::tests::persona::test_persona_list_conflicts_with_name ... ok [INFO] [stdout] test cli::tests::persona::test_into_action_list ... ok [INFO] [stdout] test cli::tests::strategy::test_strategy_sync_parses ... ok [INFO] [stdout] test cli::tests::strategy::test_strategy_execute_parses_name ... ok [INFO] [stdout] test cli::tests::test_cli_parses_sessions_command ... ok [INFO] [stdout] test cli::tests::test_iterations_with_all_filters ... ok [INFO] [stdout] test cli::tests::test_iterations_with_session_filter ... ok [INFO] [stdout] test cli::tests::test_iterations_with_outcome_filter ... ok [INFO] [stdout] test cli::tests::test_replay_with_slug ... ok [INFO] [stdout] test cli::tests::test_cli_parses_replay_command ... ok [INFO] [stdout] test cli::tests::test_iterations_without_args ... ok [INFO] [stdout] test cli::tests::test_replay_with_delay_integer ... ok [INFO] [stdout] test cli::tests::test_replay_with_delay ... ok [INFO] [stdout] test cli::tests::test_replay_with_delay_fractional ... ok [INFO] [stdout] test cli::tests::test_sessions_with_outcome_filter ... ok [INFO] [stdout] test cli::tests::test_sessions_with_interrupted_outcome ... ok [INFO] [stdout] test cli::tests::test_replay_requires_slug ... ok [INFO] [stdout] test cli::tests::test_cli_parses_iterations_command ... ok [INFO] [stdout] test cli::tests::test_sessions_with_both_filters ... ok [INFO] [stdout] test cli::tests::test_replay_without_delay ... ok [INFO] [stdout] test cli::tests::test_sessions_without_args ... ok [INFO] [stdout] test cli::tests::test_sessions_with_project_filter ... ok [INFO] [stdout] test config::tests::test_default_ask_section ... 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_config_path_contains_ralph ... ok [INFO] [stdout] test config::tests::test_load_empty_file ... ok [INFO] [stdout] test config::tests::test_load_full_ask_and_theme ... ok [INFO] [stdout] test config::tests::test_load_no_background ... ok [INFO] [stdout] test config::tests::test_load_nonexistent_returns_default ... ok [INFO] [stdout] test cli::tests::test_replay_with_iteration ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_context_line ... 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 cli::tests::test_replay_with_iteration_long_flag ... ok [INFO] [stdout] test config::tests::test_save_and_load ... ok [INFO] [stdout] test config::tests::test_load_theme_name ... ok [INFO] [stdout] test config::tests::test_serialize_omits_none ... ok [INFO] [stdout] test config::tests::test_load_theme_file_path ... ok [INFO] [stdout] test config::tests::test_unknown_fields_ignored ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_addition ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_empty_diff ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_file_headers ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_multiple_hunks ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_always_produces_ansi ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_no_changes ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_full_diff ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_index_line ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_special_characters ... ok [INFO] [stdout] test edit::tests::test_iterations_to_messages_basic ... ok [INFO] [stdout] test edit::tests::test_iterations_to_messages_empty ... ok [INFO] [stdout] test edit::tests::test_iterations_to_messages_handles_missing_response ... ok [INFO] [stdout] test edit::tests::test_iterations_to_messages_response_only ... ok [INFO] [stdout] test cli::tests::test_iterations_with_project_filter ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_hunk_header ... ok [INFO] [stdout] test edit::tests::test_iterations_to_messages_skips_neither ... ok [INFO] [stdout] test config::tests::test_parse_error ... ok [INFO] [stdout] test edit::tests::test_messages_to_edit_toml_escapes_triple_quotes ... ok [INFO] [stdout] test edit::tests::test_messages_to_edit_toml_includes_header ... ok [INFO] [stdout] test edit::tests::test_pair_messages_consecutive_users ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_preserves_content ... ok [INFO] [stdout] test config::tests::test_load_full_config ... ok [INFO] [stdout] test diff_highlight::tests::test_diff_highlighter_default ... ok [INFO] [stdout] test edit::tests::test_messages_to_edit_toml_basic ... ok [INFO] [stdout] test edit::tests::test_messages_to_edit_toml_empty ... ok [INFO] [stdout] test diff_highlight::tests::test_basic_colors_unicode ... ok [INFO] [stdout] test edit::tests::test_parse_edit_toml_empty_messages ... ok [INFO] [stdout] test edit::tests::test_parse_edit_toml_invalid_role ... ok [INFO] [stdout] test edit::tests::test_pair_messages_assistant_only ... ok [INFO] [stdout] test diff_highlight::tests::test_diff_highlighter_highlight_always ... ok [INFO] [stdout] test edit::tests::test_parse_edit_toml_invalid_syntax ... ok [INFO] [stdout] test edit::tests::test_parse_edit_toml_missing_role ... ok [INFO] [stdout] test edit::tests::test_parse_edit_toml_roundtrip ... ok [INFO] [stdout] test edit::tests::test_parse_edit_toml_missing_content ... ok [INFO] [stdout] test edit::tests::test_pair_messages_empty ... ok [INFO] [stdout] test edit::tests::test_pair_messages_multiple_pairs ... ok [INFO] [stdout] test diff_highlight::tests::test_is_delta_available_does_not_crash ... ok [INFO] [stdout] test diff_highlight::tests::test_diff_highlighter_new ... ok [INFO] [stdout] test edit::tests::test_pair_messages_user_only ... ok [INFO] [stdout] test edit::tests::test_parse_edit_toml_valid ... ok [INFO] [stdout] test formatting::tests::test_format_duration_milliseconds ... ok [INFO] [stdout] test edit::tests::test_toml_roundtrip_trailing_double_quote ... ok [INFO] [stdout] test edit::tests::test_plan_iteration_updates_create ... ok [INFO] [stdout] test edit::tests::test_parse_edit_toml_content_trimming ... ok [INFO] [stdout] test formatting::tests::test_format_token_count_millions ... ok [INFO] [stdout] test formatting::tests::test_format_duration_seconds ... ok [INFO] [stdout] test edit::tests::test_plan_iteration_updates_delete_and_create ... ok [INFO] [stdout] test edit::tests::test_pair_messages_user_assistant ... ok [INFO] [stdout] test edit::tests::test_toml_roundtrip_trailing_single_quote ... ok [INFO] [stdout] test edit::tests::test_plan_iteration_updates_mixed ... ok [INFO] [stdout] test edit::tests::test_plan_iteration_updates_no_changes ... 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 formatting::tests::test_format_duration_minutes ... ok [INFO] [stdout] test edit::tests::test_plan_iteration_updates_rewrite ... ok [INFO] [stdout] test formatting::tests::test_format_token_count_under_thousand ... ok [INFO] [stdout] test git::tests::test_git_diff_structure ... ok [INFO] [stdout] test git::tests::test_write_diff_file_overwrites_existing ... 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_thousands ... ok [INFO] [stdout] test git::tests::test_is_git_repository_in_non_git_dir ... ok [INFO] [stdout] test git::tests::test_capture_and_write_diff_in_non_git_dir ... ok [INFO] [stdout] test edit::tests::test_plan_iteration_updates_delete ... ok [INFO] [stdout] test git::tests::test_capture_git_diff_in_non_git_dir ... ok [INFO] [stdout] test highlight::tests::test_available_themes_not_empty ... ok [INFO] [stdout] test highlight::tests::test_highlight_unknown_language ... ok [INFO] [stdout] test highlight::tests::test_highlight_no_language ... ok [INFO] [stdout] test highlight::tests::test_highlight_empty_code ... ok [INFO] [stdout] test highlight::tests::test_is_language_supported_common_languages ... ok [INFO] [stdout] test highlight::tests::test_is_language_supported_javascript ... ok [INFO] [stdout] test highlight::tests::test_highlighter_with_config_invalid_theme ... ok [INFO] [stdout] test highlight::tests::test_highlighter_new ... ok [INFO] [stdout] test highlight::tests::test_highlighter_default ... ok [INFO] [stdout] test highlight::tests::test_highlight_code_no_language ... ok [INFO] [stdout] test highlight::tests::test_is_language_supported_python ... ok [INFO] [stdout] test highlight::tests::test_highlighter_with_config_valid_theme ... 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_preserves_theme_when_none ... ok [INFO] [stdout] test highlight::tests::test_theme_config_new ... 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_is_theme_file_with_path ... ok [INFO] [stdout] test highlight::tests::test_theme_config_with_theme ... ok [INFO] [stdout] test highlight::tests::test_theme_config_merge_cli_overrides_no_background ... 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 invoke::tests::build_command_escapes_single_quotes ... ok [INFO] [stdout] test invoke::tests::build_command_with_agent ... ok [INFO] [stdout] test init::tests::test_verify_prd_exists_when_present ... 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 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 highlight::tests::test_theme_config_is_theme_file_with_name ... ok [INFO] [stdout] test invoke::tests::format_conversation_history_empty ... ok [INFO] [stdout] test iteration::tests::log_tests::test_iteration_log_deserialization ... 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_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_serialization ... ok [INFO] [stdout] test iteration::tests::log_tests::test_iteration_log_with_metadata ... 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_prompt_and_response ... ok [INFO] [stdout] test iteration::tests::metadata_tests::test_log_metadata_deserialization ... 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_from_extracted ... ok [INFO] [stdout] test iteration::tests::metadata_tests::test_log_metadata_new ... ok [INFO] [stdout] test iteration::tests::metadata_tests::test_log_metadata_is_empty ... 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_without_language ... ok [INFO] [stdout] test invoke::tests::build_command_without_agent ... 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_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_chunk_from_parsed_chunk_code_with_language ... 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_iteration_log_with_typed_chunks_from_parsed ... 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_no_result ... 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::tool_call_tests::test_log_tool_call_from_interaction_error ... 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_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_log_tool_call_from_interactions ... ok [INFO] [stdout] test iteration::tests::tool_call_tests::test_log_tool_call_serialization_with_error ... ok [INFO] [stdout] test iteration::tests::writer_tests::test_count_iterations_empty_dir ... 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_conversation_message_new ... ok [INFO] [stdout] test iteration::tests::tool_call_tests::test_truncate_result_preserves_utf8 ... 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 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 iteration::tests::writer_tests::test_extract_conversation_messages_preserves_order ... ok [INFO] [stdout] test iteration::tests::writer_tests::test_write_iteration_log ... ok [INFO] [stdout] test iteration::tests::writer_tests::test_write_iteration_log_with_metadata ... ok [INFO] [stdout] test iteration::tests::writer_tests::test_write_multiple_iteration_logs ... ok [INFO] [stdout] test iteration::tests::writer_tests::test_count_iterations_ignores_other_files ... ok [INFO] [stdout] test iteration::tests::writer_tests::test_load_session_iterations_sorted_by_sequence ... ok [INFO] [stdout] test iterations::tests::test_error_display_invalid_outcome ... ok [INFO] [stdout] test iterations::tests::test_format_duration_minutes ... ok [INFO] [stdout] test iterations::tests::test_iterations_filter_default ... ok [INFO] [stdout] test iterations::tests::test_format_duration_ms ... ok [INFO] [stdout] test iterations::tests::test_invalid_outcome_filter ... ok [INFO] [stdout] test iterations::tests::test_format_duration_seconds ... ok [INFO] [stdout] test iterations::tests::test_iterations_result_fields ... ok [INFO] [stdout] test iterations::tests::test_valid_outcome_filter_completed ... ok [INFO] [stdout] test iterations::tests::test_load_iteration_log ... 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 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_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 iterations::tests::test_outcome_filter_case_insensitive ... ok [INFO] [stdout] test keyboard::tests::test_raw_mode_guard_default ... 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_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_header ... ok [INFO] [stdout] test markdown::tests::test_render_bulleted_list ... ok [INFO] [stdout] test markdown::tests::test_render_empty_string ... ok [INFO] [stdout] test markdown::tests::test_render_inline_code ... 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_special_characters ... ok [INFO] [stdout] test markdown::tests::test_render_preserves_whitespace ... ok [INFO] [stdout] test markdown::tests::test_renderer_default ... ok [INFO] [stdout] test orchestrator::conversation::tests::categorize_handovers_returns_done ... ok [INFO] [stdout] test markdown::tests::test_render_unicode ... ok [INFO] [stdout] test keyboard::tests::test_raw_mode_guard_tracks_enabled_state ... ok [INFO] [stdout] test highlight::tests::test_theme_config_with_no_background ... ok [INFO] [stdout] test markdown::tests::test_renderer_new ... ok [INFO] [stdout] test orchestrator::conversation::tests::categorize_mixed_asks_with_other_extracts_first_match ... 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::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::display::tests::format_directive_banner_has_separators ... ok [INFO] [stdout] test orchestrator::display::tests::format_directive_banner_contains_payload ... ok [INFO] [stdout] test orchestrator::conversation::tests::categorize_multiple_asks_none_targeting_other_returns_third_party ... 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_orchestration_summary_full_budget ... ok [INFO] [stdout] test orchestrator::display::tests::format_routing_status_ask ... ok [INFO] [stdout] test orchestrator::display::tests::format_persona_banner_contains_name ... ok [INFO] [stdout] test orchestrator::display::tests::format_persona_banner_contains_ansi_codes ... ok [INFO] [stdout] test orchestrator::display::tests::format_routing_status_contains_glyph ... ok [INFO] [stdout] test orchestrator::display::tests::format_persona_banner_contains_box_drawing ... ok [INFO] [stdout] test highlight::tests::test_is_language_supported_rust ... ok [INFO] [stdout] test orchestrator::display::tests::format_routing_status_handover ... 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::tests::budget_try_consume_decrements ... 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_no_response_text_returns_none ... ok [INFO] [stdout] test highlight::tests::test_supported_languages_includes_common ... ok [INFO] [stdout] test orchestrator::display::tests::format_routing_status_no_payload ... ok [INFO] [stdout] test persona::tests::test_discover_strategy_personas ... 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 persona::tests::test_discover_with_strategy_none_uses_directories ... 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_single ... 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_found ... ok [INFO] [stdout] test persona::tests::test_resolve_from_strategy_not_in_table ... ok [INFO] [stdout] test highlight::tests::test_is_language_supported_unknown ... ok [INFO] [stdout] test prompt_source::tests::test_classify_prompt_source_file ... ok [INFO] [stdout] test persona::tests::test_verify_with_strategy_none_falls_through ... ok [INFO] [stdout] test prompt_source::tests::test_classify_prompt_source_inline ... ok [INFO] [stdout] test prompt_source::tests::test_classify_prompt_source_stdin ... ok [INFO] [stdout] test prompt_source::tests::test_read_from_source_file ... ok [INFO] [stdout] test prompt_source::tests::test_read_from_source_inline ... ok [INFO] [stdout] test prompt_source::tests::test_read_from_source_none_with_default ... ok [INFO] [stdout] test prompt_source::tests::test_read_from_source_none_without_default ... 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_full ... ok [INFO] [stdout] test render::text::tests::test_enhance_tables_multiple_tables ... ok [INFO] [stdout] test prompt_source::tests::test_classify_prompt_source_none ... 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_no_separator ... 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_trailing_newline_preserved ... ok [INFO] [stdout] test orchestrator::tests::scan_finds_handover_directive ... ok [INFO] [stdout] test orchestrator::tests::scan_mixed_verbs_returns_none ... ok [INFO] [stdout] test orchestrator::tests::scan_well_formed_directive_skips_recovery ... ok [INFO] [stdout] test orchestrator::tests::scan_recovers_orphan_closing_tag_with_matching_persona ... ok [INFO] [stdout] test orchestrator::tests::scan_empty_response_returns_none ... ok [INFO] [stdout] test orchestrator::tests::scan_orphan_closing_tag_no_matching_persona_returns_none ... ok [INFO] [stdout] test render::text::tests::test_render_code_no_language ... ok [INFO] [stdout] test render::text::tests::test_render_code_plain ... ok [INFO] [stdout] test render::text::tests::test_render_directive_plain_returns_empty ... ok [INFO] [stdout] test render::text::tests::test_render_diff_plain ... 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_terminal ... 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_with_skin ... ok [INFO] [stdout] test render::text::tests::test_render_prose_terminal_without_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_glob_result_grouped ... ok [INFO] [stdout] test render::tool_renderers::tests::test_render_grep_invocation_full ... 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_c_cpp ... ok [INFO] [stdout] test render::utils::tests::test_extract_language_case_insensitive ... ok [INFO] [stdout] test render::utils::tests::test_extract_language_data_formats ... 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::utils::tests::test_extract_language_rust ... ok [INFO] [stdout] test render::utils::tests::test_extract_language_shell ... 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_line_number_non_numeric_prefix ... ok [INFO] [stdout] test render::tool_renderers::tests::test_render_todowrite_invocation ... ok [INFO] [stdout] test render::utils::tests::test_extract_line_number_with_tab ... ok [INFO] [stdout] test render::utils::tests::test_extract_line_number_with_arrow ... ok [INFO] [stdout] test render::utils::tests::test_group_files_empty_input ... ok [INFO] [stdout] test render::utils::tests::test_group_files_by_directory ... ok [INFO] [stdout] test render::utils::tests::test_highlight_grep_match_content_format ... ok [INFO] [stdout] test render::utils::tests::test_group_files_nested_directories ... 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_99_to_100 ... 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_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_empty_string ... 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_arrow_with_offset ... 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_single_digit ... ok [INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_preserves_content_with_tabs ... ok [INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_triple_digit ... ok [INFO] [stdout] test replay::tests::test_find_iteration_logs_empty_dir ... ok [INFO] [stdout] test render::tool_renderers::tests::test_render_todowrite_result_error ... ok [INFO] [stdout] test replay::tests::test_find_iteration_logs_sorts_by_sequence ... ok [INFO] [stdout] test replay::tests::test_find_iteration_logs_ignores_non_iteration_files ... ok [INFO] [stdout] test replay::tests::test_replay_error_display_iteration_not_found ... ok [INFO] [stdout] test replay::tests::test_replay_error_display_no_iterations ... ok [INFO] [stdout] test render::utils::tests::test_normalize_cat_n_format_with_offset ... 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_with_delay ... ok [INFO] [stdout] test replay::tests::test_replay_options_default ... 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_countdown_result_enum ... ok [INFO] [stdout] test replay_countdown::tests::test_apply_delay_with_countdown_zero ... 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 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_success ... ok [INFO] [stdout] test render::tool_renderers::tests::test_render_read_result_empty ... ok [INFO] [stdout] test render::tool_renderers::tests::test_render_grep_invocation_minimal ... ok [INFO] [stdout] test replay_renderer::tests::test_render_bash_invocation_plain ... ok [INFO] [stdout] test highlight::tests::test_highlight_special_characters ... 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_code_plain ... ok [INFO] [stdout] test replay_renderer::tests::test_render_default_invocation_plain ... ok [INFO] [stdout] test replay_renderer::tests::test_render_bash_result_success_plain ... ok [INFO] [stdout] test replay_renderer::tests::test_render_edit_before_after_plain ... ok [INFO] [stdout] test highlight::tests::test_highlight_code_convenience_function ... ok [INFO] [stdout] test highlight::tests::test_highlight_rust_code ... ok [INFO] [stdout] test highlight::tests::test_highlight_python_code ... ok [INFO] [stdout] test replay_renderer::tests::test_render_glob_result_grouped_by_directory ... ok [INFO] [stdout] test replay_renderer::tests::test_render_diff_plain ... ok [INFO] [stdout] test replay_renderer::tests::test_render_read_result_normalizes_cat_n ... 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 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 replay_renderer::tests::test_render_prose_plain ... 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 sessions_display::tests::test_format_cost ... ok [INFO] [stdout] test sessions_display::tests::test_aggregate_session_totals ... 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_aggregate_iteration_stats_with_data ... ok [INFO] [stdout] test sessions_display::tests::test_format_outcome_terminal_contains_color ... ok [INFO] [stdout] test sessions_display::tests::test_format_tokens_small ... ok [INFO] [stdout] test sessions_display::tests::test_format_tokens_thousands ... 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_project_match ... ok [INFO] [stdout] test sessions_display::tests::test_matches_filter_outcome_no_match ... ok [INFO] [stdout] test sessions_display::tests::test_truncate_left ... ok [INFO] [stdout] test sessions_display::tests::test_truncate_left_unicode ... ok [INFO] [stdout] test signal::tests::test_interrupted_flag_default_false ... ok [INFO] [stdout] test signal::tests::test_interrupt_context_clone ... ok [INFO] [stdout] test signal::tests::test_set_and_get_interrupt_context ... ok [INFO] [stdout] test sessions_display::tests::test_matches_filter_project_no_match ... ok [INFO] [stdout] test spinner::tests::test_format_key_hints_finishing ... 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 highlight::tests::test_highlighter_with_config_no_background ... 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_with_session ... ok [INFO] [stdout] test spinner::tests::test_format_spinner_time_iteration_only ... 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_spinner_chars_count ... ok [INFO] [stdout] ⠋ Waiting for response... 0s [s: stop | S: halt | p: pause]test replay_renderer::tests::test_render_grep_result_empty ... 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_key_hint_state_hint_text ... ok [INFO] [stdout] test spinner::tests::test_spinner_disabled_start_stop ... ok [INFO] [stdout] ⠋ Waiting for response... 0s [s: stop | S: halt | p: pause] ⠋ Waiting for response... 0s [s: stop | S: halt | p: pause]test replay_renderer::tests::test_render_read_result_empty ... ok [INFO] [stdout] test spinner::tests::test_format_spinner_time_small_difference ... ok [INFO] [stdout] test spinner::tests::test_spinner_context_changes_while_running ... ok [INFO] [stdout] test spinner::tests::test_spinner_get_context_default ... ok [INFO] [stdout] test spinner::tests::test_spinner_accumulate_iteration_time ... ok [INFO] [stdout] test spinner::tests::test_spinner_key_hint_state_default ... ok [INFO] [stdout] ⠋ Waiting for response... 0s [s: stop | S: halt | p: pause] ⠋ Waiting for response... 0s [s: stop | S: halt | p: pause]test highlight::tests::test_highlight_multiline_code ... ok [INFO] [stdout] test spinner::tests::test_spinner_new ... ok [INFO] [stdout] test spinner::tests::test_spinner_session_info_default ... ok [INFO] [stdout] test spinner::tests::test_spinner_session_info_has_info_persona_only ... 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_iteration_elapsed ... 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] ⠋ Thinking... 0s [s: stop | S: halt | p: pause]test replay_renderer::tests::test_render_without_highlighting_no_ansi ... ok [INFO] [stdout] test spinner::tests::test_spinner_with_enabled_false ... 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 spinner::tests::test_spinner_double_start ... 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 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_wider_than_minimum_but_fits_terminal ... ok [INFO] [stdout] test startup::tests::test_ask_summary_clone ... ok [INFO] [stdout] test spinner::tests::test_spinner_double_stop ... ok [INFO] [stdout] test startup::tests::test_ask_summary_failed ... ok [INFO] [stdout] test startup::tests::test_ask_summary_creation ... ok [INFO] [stdout] test startup::tests::test_ask_summary_large_values ... ok [INFO] [stdout] test startup::tests::test_ask_summary_with_none_values ... ok [INFO] [stdout] test startup::tests::test_ask_summary_zero_cost ... ok [INFO] [stdout] test startup::tests::test_attached_file_design_md_not_special_cased ... ok [INFO] [stdout] test startup::tests::test_attached_file_path_preserved ... ok [INFO] [stdout] test startup::formatters::tests::text_exceeds_terminal_width ... ok [INFO] [stdout] test startup::tests::test_attached_file_prd ... 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_attached_file_progress_txt_not_special_cased ... ok [INFO] [stdout] test startup::tests::test_attached_file_unknown ... ok [INFO] [stdout] test startup::tests::test_clean_blank_lines_preserves_content_lines ... 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_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_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_command ... ok [INFO] [stdout] test startup::tests::test_has_custom_config_completion_marker ... ok [INFO] [stdout] test startup::tests::test_has_custom_config_multiple ... ok [INFO] [stdout] test startup::tests::test_has_custom_config_none ... ok [INFO] [stdout] test startup::tests::test_has_custom_config_prd ... ok [INFO] [stdout] test startup::tests::test_format_duration_minutes ... ok [INFO] [stdout] test startup::tests::test_has_custom_config_prompt ... 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_singular_story ... 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_partial_tokens ... ok [INFO] [stdout] test startup::tests::test_iteration_summary_with_none_values ... ok [INFO] [stdout] test startup::tests::test_iterations_from_arg_flag ... ok [INFO] [stdout] test startup::tests::test_prompt_display_from_prompt_extracts_files ... 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_no_files ... ok [INFO] [stdout] test startup::tests::test_prompt_display_from_prompt_preserves_prompt ... 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 spinner::tests::test_spinner_key_hint_state_while_running ... 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 startup::tests::test_startup_info_creation ... ok [INFO] [stdout] test strategy::conversation_loop::tests::build_orchestration_config_sets_fields ... ok [INFO] [stdout] test strategy::conversation_loop::tests::extract_comments_no_comments ... 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 strategy::init::tests::test_bundled_agents_have_frontmatter ... ok [INFO] [stdout] test strategy::init::tests::test_bundled_assets_not_empty ... 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_bundled_strategy_assets_are_valid_toml ... 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_all_new ... ok [INFO] [stdout] test strategy::init::tests::test_plan_mixed ... ok [INFO] [stdout] test strategy::init::tests::test_plan_paths_include_filename ... ok [INFO] [stdout] test strategy::init::tests::test_plan_strategy_all_existing ... 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 spinner::tests::test_spinner_enabled_start_stop ... 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_invocation_config_fields ... ok [INFO] [stdout] test strategy::prd_loop::tests::test_build_invocation_result_for_orchestrator ... 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_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_find_strategy_by_name_not_found ... ok [INFO] [stdout] test strategy::tests::test_format_column_alignment ... ok [INFO] [stdout] test strategy::tests::test_format_empty ... ok [INFO] [stdout] test strategy::tests::test_format_multiple ... ok [INFO] [stdout] test strategy::tests::test_format_single ... ok [INFO] [stdout] test strategy::traits::tests::test_custom_between_iterations ... ok [INFO] [stdout] test strategy::prd_loop::tests::test_build_additional_prompt_single ... ok [INFO] [stdout] test strategy::traits::tests::test_strategy_between_iterations_default ... ok [INFO] [stdout] test strategy::traits::tests::test_run_strategy_delegates ... 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_todowrite_invocation_block ... ok [INFO] [stdout] test stream_processor::block_builders::tests::test_build_grep_invocation_block ... ok [INFO] [stdout] test stream_processor::output_block::tests::test_code_chunk_serialization ... 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_grep_builder_minimal ... ok [INFO] [stdout] test stream_processor::output_block::tests::test_grep_builder_serialization_roundtrip ... ok [INFO] [stdout] test stream_processor::output_block::tests::test_output_block_separator_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_bash_serialization ... ok [INFO] [stdout] test stream_processor::output_block::tests::test_tool_invocation_grep_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_invocation_todowrite_serialization ... 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_write_new_file_serialization ... ok [INFO] [stdout] test render::text::tests::test_render_code_terminal ... ok [INFO] [stdout] ⠋ Waiting for response... 0s [s: stop | S: halt | p: pause]test startup::tests::test_clean_blank_lines_only_blanks ... ok [INFO] [stdout] test startup::tests::test_iteration_summary_zero_cost ... ok [INFO] [stdout] test spinner::tests::test_spinner_total_session_elapsed ... ok [INFO] [stdout] test replay_renderer::tests::test_render_todowrite_invocation_plain ... ok [INFO] [stdout] test replay_renderer::tests::test_render_separator ... ok [INFO] [stdout] test spinner::tests::test_spinner_start_with_context ... ok [INFO] [stdout] test highlight::tests::test_highlight_preserves_content ... ok [INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_command_plain_text_format ... ok [INFO] [stdout] test spinner::tests::test_spinner_drop_stops ... ok [INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_tool_result_success_with_output ... 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_tool_result_truncates_long_output ... 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_multiline_command_in_code_block ... ok [INFO] [stdout] test replay_renderer::tests::test_render_write_new_file_plain ... ok [INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_single_line_inline_format ... ok [INFO] [stdout] test stream_processor::tests::core::test_empty_finish ... ok [INFO] [stdout] test stream_processor::tests::core::test_diff_block_detection ... ok [INFO] [stdout] test stream_processor::tests::core::test_multiple_messages ... ok [INFO] [stdout] test stream_processor::tests::core::test_finish_extracts_metadata ... ok [INFO] [stdout] test stream_processor::tests::core::test_code_block_detection ... ok [INFO] [stdout] test highlight::tests::test_highlight_javascript_code ... ok [INFO] [stdout] test stream_processor::tests::core::test_process_assistant_text_event ... ok [INFO] [stdout] test stream_processor::tests::core::test_process_result_event ... ok [INFO] [stdout] test stream_processor::tests::core::test_process_malformed_json ... ok [INFO] [stdout] test stream_processor::tests::core::test_process_empty_line ... ok [INFO] [stdout] test stream_processor::tests::core::test_process_system_event ... ok [INFO] [stdout] test stream_processor::tests::core::test_finish_returns_accumulated_text ... ok [INFO] [stdout] test stream_processor::tests::core::test_stream_processor_new ... 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_tool_interaction_correlation ... 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_error_not_treated_as_diff ... 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::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_highlighting_enabled ... ok [INFO] [stdout] test stream_processor::tests::edit_diff::test_edit_tool_result_without_diff_content ... 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_verbose_invocation_shows_pattern ... ok [INFO] [stdout] test render::tool_renderers::tests::test_render_bash_invocation_single_line_terminal ... ok [INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_result_empty ... 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_non_verbose_uses_compact_format ... 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_plain_text_format ... ok [INFO] [stdout] test stream_processor::tests::glob_verbose::test_glob_verbose_invocation_shows_path ... 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_result_groups_by_directory ... 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::grep_verbose::test_grep_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::grep_verbose::test_grep_verbose_content_mode_highlights_matches ... 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_single_file_grammar ... ok [INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_plain_text_format ... ok [INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_command_with_terminal_highlighting ... ok [INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_result_error ... ok [INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_invocation_shows_mode ... 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_edit ... 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::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::tool_display::test_extract_key_argument_write_is_path ... ok [INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_result_empty ... ok [INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_with_terminal_highlighting ... ok [INFO] [stdout] test stream_processor::tests::path_display::test_file_path_shown_in_full_for_read ... 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_filters ... ok [INFO] [stdout] test stream_processor::tests::path_display::test_task_prompt_is_truncated ... ok [INFO] [stdout] test stream_processor::tests::path_display::test_url_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::path_display::test_file_path_shown_in_full_for_write ... ok [INFO] [stdout] test stream_processor::tests::tool_display::test_truncate_string_short ... ok [INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_invocation_shows_pattern ... 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_all ... ok [INFO] [stdout] test stream_processor::tests::grep_verbose::test_grep_verbose_result_shows_match_count ... 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_multiple ... 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::tool_display::test_plain_text_tool_display ... ok [INFO] [stdout] test stream_processor::tests::verbose_config::test_verbose_tools_config_from_arg_none ... 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_new ... ok [INFO] [stdout] test stream_processor::tests::verbose_config::test_verbose_tools_config_from_arg_with_spaces ... ok [INFO] [stdout] test stream_processor::tests::tool_display::test_tool_invocation_displayed ... 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_grep_pattern_shown_in_full ... 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_with_verbose_tools ... ok [INFO] [stdout] test stream_processor::tests::tool_display::test_tool_invocation_not_displayed_when_disabled ... ok [INFO] [stdout] test stream_processor::tests::tool_display::test_tool_error_displayed_distinctly ... ok [INFO] [stdout] test stream_processor::tests::verbose_config::test_stream_processor_default_no_verbose_tools ... ok [INFO] [stdout] test stream_processor::tests::tool_display::test_tool_text_mixed_content ... ok [INFO] [stdout] test stream_processor::tests::tool_display::test_tool_result_displayed ... ok [INFO] [stdout] test stream_processor::tests::visual_separation::test_no_separator_for_same_message_id ... ok [INFO] [stdout] test replay_renderer::tests::test_render_with_highlighting_has_ansi ... ok [INFO] [stdout] test stream_processor::tests::visual_separation::test_multiple_responses_with_separators ... 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_response_count_increments_correctly ... ok [INFO] [stdout] test stream_processor::tests::visual_separation::test_separator_after_tool_use_cycle ... ok [INFO] [stdout] test stream_processor::tests::visual_separation::test_no_separator_if_no_output_yet ... ok [INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_across_multiple_events ... 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::visual_separation::test_visual_separation_between_responses ... ok [INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_code_block_content_preserved ... ok [INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_indentation_preserved_in_code ... ok [INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_blank_line_after_code_block ... ok [INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_plain_block_no_truncation ... 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 ... ok [INFO] [stdout] test stream_processor::tool_results::edit::tests::test_generate_unified_diff_addition ... 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_list_indentation_preserved ... ok [INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_trailing_newline_in_text ... ok [INFO] [stdout] test stream_processor::tool_results::edit::tests::test_generate_unified_diff_deletion ... ok [INFO] [stdout] test stream_processor::tool_results::edit::tests::test_format_diff_output_truncation ... ok [INFO] [stdout] test stream_processor::tests::tool_display::test_with_options_constructor ... 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::tests::whitespace::test_whitespace_blank_line_before_code_block ... 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_raw_text_matches_original ... 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_no_changes_message_plain ... ok [INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_multiple_blank_lines_preserved ... ok [INFO] [stdout] test stream_processor::tool_results::notebookedit::tests::test_format_diff_output_insert_mode ... 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::edit::tests::test_format_no_changes_message_highlighted ... 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::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 stream_processor::tool_results::notebookedit::tests::test_format_diff_output_code_cell ... 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::notebookedit::tests::test_format_diff_output_no_truncation ... ok [INFO] [stdout] test stream_processor::tests::whitespace::test_whitespace_leading_spaces_preserved ... ok [INFO] [stdout] test tests::test_resolve_ask_prompt_inline ... ok [INFO] [stdout] test stream_processor::tool_results::notebookedit::tests::test_format_diff_output_delete_mode ... ok [INFO] [stdout] test stream_processor::tool_results::notebookedit::tests::test_format_diff_output_truncation ... ok [INFO] [stdout] test stream_processor::tests::bash_rendering::test_bash_tool_result_error_shows_exit_code ... ok [INFO] [stdout] test stream_processor::tool_results::write::tests::test_format_new_file_highlighted_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::edit::tests::test_format_before_after_highlighted_has_ansi_codes ... 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::tool_results::write::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] [INFO] [stdout] test result: ok. 853 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.12s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ralph_core-5557cba81de32ed4) [INFO] [stdout] [INFO] [stdout] running 461 tests [INFO] [stdout] test chunk::tests::batch::test_chunk_type_deserialization ... ok [INFO] [stdout] test chunk::tests::batch::helpers::append_line_joins_with_newline ... 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_chunk_type_serialization ... ok [INFO] [stdout] test chunk::tests::batch::test_is_unfenced_diff_with_git_diff ... 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_chunks_with_heuristics_fenced ... ok [INFO] [stdout] test chunk::tests::batch::test_parse_chunks_with_heuristics_unfenced_diff ... ok [INFO] [stdout] test chunk::tests::batch::test_is_unfenced_diff_with_hunk_header ... ok [INFO] [stdout] test chunk::tests::batch::test_parse_code_block_with_language ... ok [INFO] [stdout] test chunk::tests::batch::helpers::flush_prose_preserves_content ... ok [INFO] [stdout] test chunk::tests::batch::helpers::emit_code_block_handles_diff ... ok [INFO] [stdout] test chunk::tests::batch::helpers::emit_code_block_handles_language ... ok [INFO] [stdout] test chunk::tests::batch::test_parse_diff_block ... ok [INFO] [stdout] test chunk::tests::batch::test_parse_empty_text ... ok [INFO] [stdout] test chunk::tests::batch::test_parse_code_block_without_language ... ok [INFO] [stdout] test chunk::tests::batch::test_parse_fence_with_extra_info ... ok [INFO] [stdout] test chunk::tests::batch::test_parse_indented_fence ... ok [INFO] [stdout] test chunk::tests::batch::test_parse_only_whitespace ... 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::batch::test_parsed_chunk_constructors ... ok [INFO] [stdout] test chunk::tests::batch::test_roundtrip_serialization ... ok [INFO] [stdout] test chunk::tests::fence::is_fence_close_empty_line ... ok [INFO] [stdout] test chunk::tests::fence::is_fence_close_fence_in_text ... ok [INFO] [stdout] test chunk::tests::fence::is_fence_close_not_a_close ... ok [INFO] [stdout] test chunk::tests::fence::is_fence_close_partial ... ok [INFO] [stdout] test chunk::tests::fence::is_fence_close_text_after_fence ... 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_bare_fence_with_trailing_whitespace ... ok [INFO] [stdout] test chunk::tests::fence::parse_fence_open_diff_language ... ok [INFO] [stdout] test chunk::tests::batch::test_parse_multiple_code_blocks ... ok [INFO] [stdout] test chunk::tests::fence::is_fence_close_simple ... 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_partial_fence ... ok [INFO] [stdout] test chunk::tests::fence::parse_fence_open_with_language ... ok [INFO] [stdout] test chunk::tests::fence::parse_fence_open_with_language_and_whitespace ... ok [INFO] [stdout] test chunk::tests::fence::parse_fence_open_not_a_fence ... 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_crlf ... ok [INFO] [stdout] test chunk::tests::split_lines::test_split_lines_empty_string ... 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_buffer_default ... ok [INFO] [stdout] test chunk::tests::streaming_core::test_streaming_buffered_content ... 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_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_core::test_streaming_finish_unterminated_code_block ... ok [INFO] [stdout] test chunk::tests::streaming_core::test_streaming_buffer_new ... 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_core::test_streaming_mixed_content ... ok [INFO] [stdout] test chunk::tests::streaming_core::test_streaming_multiline_code ... 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_prose_emits_immediately ... ok [INFO] [stdout] test chunk::tests::streaming_core::test_streaming_reset ... ok [INFO] [stdout] test chunk::tests::streaming_core::test_streaming_process_text ... ok [INFO] [stdout] test chunk::tests::streaming_core::test_streaming_whitespace_lines_emitted ... 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_diff_block_unchanged ... ok [INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_empty_lines_count_towards_threshold ... 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_prose_mode ... 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_finish ... ok [INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_mixed_content_integration ... 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_set_threshold ... 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_threshold_with_value ... ok [INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_blank_lines_before_code_block ... ok [INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_blank_lines_between_paragraphs ... ok [INFO] [stdout] test chunk::tests::streaming_core::test_streaming_multiple_code_blocks ... ok [INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_threshold_one_behaves_like_eager ... 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_whitespace::test_whitespace_code_block_indentation_preserved ... ok [INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_list_indentation ... ok [INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_multiple_blank_lines ... 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_multiple_trailing_newlines_in_process_text ... 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_marker_in_middle_of_text ... ok [INFO] [stdout] test completion::tests::test_completion_when_marker_found ... ok [INFO] [stdout] test completion::tests::test_custom_marker ... ok [INFO] [stdout] test completion::tests::test_completion_when_no_pending_stories ... ok [INFO] [stdout] test completion::tests::test_marker_with_surrounding_whitespace ... ok [INFO] [stdout] test completion::tests::test_no_completion_with_empty_output ... ok [INFO] [stdout] test completion::tests::test_marker_case_sensitive ... ok [INFO] [stdout] test completion::tests::test_no_completion_when_stories_remain_and_no_marker ... ok [INFO] [stdout] test completion::tests::test_partial_marker_not_matched ... ok [INFO] [stdout] test completion::tests::test_zero_pending_takes_priority_over_marker ... ok [INFO] [stdout] test context::tests::test_default_command_template_contains_permission_mode ... ok [INFO] [stdout] test completion::tests::test_soft_stop_variant_exists ... ok [INFO] [stdout] test context::tests::test_default_command_template_contains_prompt_placeholder ... ok [INFO] [stdout] test context::tests::test_default_command_template_does_not_contain_session_id ... ok [INFO] [stdout] test context::tests::test_default_command_template_contains_stream_json ... ok [INFO] [stdout] test context::tests::test_default_command_template_uses_claude ... ok [INFO] [stdout] test context::tests::test_default_completion_marker ... ok [INFO] [stdout] test context::tests::test_default_prompt_template_contains_completion_marker_placeholder ... ok [INFO] [stdout] test context::tests::test_default_prompt_template_contains_prd_placeholder ... ok [INFO] [stdout] test context::tests::test_default_prompt_template_does_not_contain_design_placeholder ... ok [INFO] [stdout] test context::tests::test_default_prompt_template_does_not_contain_progress_placeholder ... ok [INFO] [stdout] test context::tests::test_default_prompt_template_includes_git_log_instruction ... 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_default_prompt_template_uses_at_file_references ... ok [INFO] [stdout] test context::tests::test_resolve_prd_path_with_override ... ok [INFO] [stdout] test directive::tests::aggregate_empty_responses_vec ... ok [INFO] [stdout] test directive::tests::aggregate_empty_response_text ... ok [INFO] [stdout] test context::tests::test_substitute_all_placeholders ... ok [INFO] [stdout] test context::tests::test_substitute_additional_prompt ... ok [INFO] [stdout] test context::tests::test_default_prompt_template_includes_semantic_commit ... ok [INFO] [stdout] test context::tests::test_substitute_empty_additional_prompt ... ok [INFO] [stdout] test context::tests::test_resolve_prd_path_default ... ok [INFO] [stdout] test context::tests::test_substitute_empty_template ... ok [INFO] [stdout] test context::tests::test_substitute_with_special_characters_in_path ... ok [INFO] [stdout] test context::tests::test_substitute_multiple_prd_occurrences ... ok [INFO] [stdout] test context::tests::test_substitute_no_placeholders ... ok [INFO] [stdout] test context::tests::test_substitute_preserves_unknown_placeholders ... ok [INFO] [stdout] test directive::tests::aggregate_multiple_responses ... ok [INFO] [stdout] test directive::tests::aggregate_single_response ... ok [INFO] [stdout] test directive::tests::aggregate_three_responses_no_trailing_separator ... ok [INFO] [stdout] test directive::tests::extract_comments_partitions ... ok [INFO] [stdout] test directive::tests::normalize_verb_ask_synonyms ... ok [INFO] [stdout] test directive::tests::normalize_verb_canonical_ask ... ok [INFO] [stdout] test directive::tests::normalize_verb_canonical_handover ... ok [INFO] [stdout] test directive::tests::normalize_verb_handover_synonyms ... ok [INFO] [stdout] test directive::tests::normalize_verb_unknown_returns_none ... ok [INFO] [stdout] test context::tests::test_substitute_with_default_prompt_template ... ok [INFO] [stdout] test chunk::tests::streaming_whitespace::test_whitespace_trailing_spaces_in_prose ... ok [INFO] [stdout] test chunk::tests::streaming_threshold::test_prose_buffer_flushes_on_code_block_start ... ok [INFO] [stdout] test directive::tests::parse_single_ask ... ok [INFO] [stdout] test directive::tests::parse_empty_payload ... ok [INFO] [stdout] test directive::tests::parse_malformed_xml_skipped ... ok [INFO] [stdout] test directive::tests::parse_no_directives_returns_empty ... ok [INFO] [stdout] test directive::tests::parse_opening_without_closing_unknown_verb ... ok [INFO] [stdout] test directive::tests::parse_opening_at_end_empty_payload ... ok [INFO] [stdout] test directive::tests::parse_opening_without_closing_consumes_remaining ... ok [INFO] [stdout] test directive::tests::parse_unknown_verb_skipped ... ok [INFO] [stdout] test directive::tests::parse_multiple_asks ... ok [INFO] [stdout] test directive::tests::parse_nested_directive_with_own_closing_tag ... ok [INFO] [stdout] test directive::tests::parse_single_handover ... 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::parse_nested_content_preserved ... ok [INFO] [stdout] test directive::tests::parse_nested_directive_in_payload_treated_as_text ... ok [INFO] [stdout] test directive::tests::comment_verb_normalize_parse_split ... ok [INFO] [stdout] test directive::tests::split_empty_payload_directive ... ok [INFO] [stdout] test directive::tests::recover_orphan_closing_empty_known_personas ... 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::recover_orphan_closing_no_persona_in_text ... ok [INFO] [stdout] test directive::tests::parse_sequential_directives_still_work ... 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::recover_orphan_closing_earliest_persona_wins ... ok [INFO] [stdout] test directive::tests::recover_orphan_closing_with_persona ... ok [INFO] [stdout] test directive::tests::split_multiple_directives ... ok [INFO] [stdout] test directive::tests::parse_synonym_normalization ... ok [INFO] [stdout] test directive::tests::recover_orphan_closing_no_closing_tag ... ok [INFO] [stdout] test directive::tests::split_directive_at_start_of_text ... 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::validate_mixed_verbs_error ... ok [INFO] [stdout] test human::tests::classify_target_human ... ok [INFO] [stdout] test directive::tests::recover_orphan_closing_tag_at_start ... ok [INFO] [stdout] test human::tests::classify_target_persona ... ok [INFO] [stdout] test directive::tests::split_prose_before_opening_without_closing ... ok [INFO] [stdout] test human::tests::partition_all_human ... ok [INFO] [stdout] test paused::tests::test_paused_state_new ... ok [INFO] [stdout] test human::tests::classify_target_case_sensitive ... ok [INFO] [stdout] test directive::tests::split_directive_at_end_of_text ... ok [INFO] [stdout] test human::tests::classify_target_empty_string ... ok [INFO] [stdout] test directive::tests::split_single_inline_directive ... ok [INFO] [stdout] test directive::tests::split_unknown_verb_stays_as_prose ... ok [INFO] [stdout] test directive::tests::validate_all_handovers ... ok [INFO] [stdout] test human::tests::partition_mixed_targets ... ok [INFO] [stdout] test directive::tests::split_synonym_verbs_normalized ... ok [INFO] [stdout] test persona::tests::test_dedup_project_shadows_user ... ok [INFO] [stdout] test persona::tests::test_parse_name_and_description_only ... ok [INFO] [stdout] test human::tests::partition_empty ... ok [INFO] [stdout] test persona::tests::test_dedup_empty_project ... ok [INFO] [stdout] test persona::tests::test_parse_unclosed_frontmatter ... ok [INFO] [stdout] test persona::tests::test_parse_no_delimiters ... ok [INFO] [stdout] test paused::tests::test_paused_state_toml_roundtrip ... ok [INFO] [stdout] test persona::tests::test_dedup_no_overlap ... ok [INFO] [stdout] test persona::tests::test_parse_trims_whitespace ... ok [INFO] [stdout] test directive::tests::split_unknown_verb_without_closing_stays_prose ... ok [INFO] [stdout] test persona::tests::test_dedup_empty_user ... ok [INFO] [stdout] test persona::tests::test_dedup_mixed ... ok [INFO] [stdout] test human::tests::partition_no_human ... ok [INFO] [stdout] test persona::tests::test_parse_missing_description ... ok [INFO] [stdout] test persona::tests::test_dedup_both_empty ... ok [INFO] [stdout] test persona::tests::test_parse_empty_content ... ok [INFO] [stdout] test persona::tests::test_parse_missing_name ... ok [INFO] [stdout] test persona::tests::test_parse_valid_frontmatter ... ok [INFO] [stdout] test prd::tests::test_has_prd_changed_detects_content_change ... ok [INFO] [stdout] test prd::tests::test_count_pending_stories ... ok [INFO] [stdout] test prd::tests::test_has_prd_changed_empty_strings ... ok [INFO] [stdout] test prd::tests::test_has_prd_changed_newline_normalization ... ok [INFO] [stdout] test prd::tests::test_has_prd_changed_whitespace_change ... ok [INFO] [stdout] test prd::tests::test_has_prd_changed_identical_content ... ok [INFO] [stdout] test prd::tests::test_parse_prd_all_completed ... ok [INFO] [stdout] test prd::tests::test_parse_prd_ignores_extra_fields ... ok [INFO] [stdout] test prd::tests::test_parse_prd_malformed_toml ... ok [INFO] [stdout] test prd::tests::test_parse_prd_all_pending ... ok [INFO] [stdout] test prd::tests::test_parse_prd_supports_passed_alias ... ok [INFO] [stdout] test session::persona_tests::find_most_recent_for_persona_filters_by_persona ... ok [INFO] [stdout] test session::persona_tests::find_most_recent_for_persona_returns_most_recent ... ok [INFO] [stdout] test prd::tests::test_parse_prd_with_mixed_stories ... ok [INFO] [stdout] test session::persona_tests::session_entry_new_with_persona ... ok [INFO] [stdout] test session::persona_tests::session_metadata_from_entry_preserves_persona ... ok [INFO] [stdout] test session::persona_tests::session_entry_deserializes_without_persona_field ... ok [INFO] [stdout] test prd::tests::test_has_prd_changed_different_story_count ... 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::persona_tests::session_metadata_toml_roundtrip ... ok [INFO] [stdout] test session::persona_tests::sessions_index_find_by_slug_mut ... ok [INFO] [stdout] test session::persona_tests::find_most_recent_for_persona_ignores_other_projects ... ok [INFO] [stdout] test prd::tests::test_has_prd_changed_comment_change ... ok [INFO] [stdout] test session::persona_tests::session_entry_deserializes_with_persona_field ... ok [INFO] [stdout] test session::tests::from_toml_rejects_corrupt_input ... ok [INFO] [stdout] test session::tests::test_generate_unique_slug_avoids_existing ... ok [INFO] [stdout] test session::tests::test_generate_unique_slug_empty_existing ... ok [INFO] [stdout] test session::tests::test_all_adjectives_lowercase ... ok [INFO] [stdout] test session::tests::test_all_nouns_lowercase ... ok [INFO] [stdout] test session::tests::test_is_valid_slug_rejects_empty_parts ... 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_generated_slugs_are_valid ... ok [INFO] [stdout] test session::tests::test_is_valid_slug_accepts_valid ... ok [INFO] [stdout] test session::tests::test_generate_slug_format ... ok [INFO] [stdout] test session::tests::test_generate_unique_slug_returns_none_when_exhausted ... ok [INFO] [stdout] test prd::tests::test_parse_prd_default_passes_to_false ... ok [INFO] [stdout] test prd::tests::test_parse_prd_no_stories_error ... ok [INFO] [stdout] test session::tests::test_session_outcome_display ... ok [INFO] [stdout] test session::tests::test_session_outcome_serialization ... 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_sessions_index_empty ... ok [INFO] [stdout] test session::tests::test_sessions_index_toml_roundtrip ... ok [INFO] [stdout] test session::tests::test_sessions_index_existing_slugs ... ok [INFO] [stdout] test session::tests::test_total_slug_combinations ... ok [INFO] [stdout] test session::tests::test_is_valid_slug_rejects_wrong_hyphen_count ... ok [INFO] [stdout] test strategy::tests::test_iteration_decision_variants_distinct ... ok [INFO] [stdout] test strategy::tests::test_iteration_decision_stop ... ok [INFO] [stdout] test session::tests::test_sessions_index_add_and_find ... ok [INFO] [stdout] test session::tests::test_session_metadata_new ... ok [INFO] [stdout] test session::tests::test_session_outcome_default ... ok [INFO] [stdout] test session::tests::test_is_valid_slug_rejects_non_alpha ... ok [INFO] [stdout] test session::tests::test_is_valid_slug_rejects_uppercase ... ok [INFO] [stdout] test session::tests::test_session_entry_new ... ok [INFO] [stdout] test session::tests::test_word_list_minimums ... 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_all_fields ... ok [INFO] [stdout] test strategy::tests::test_parse_malformed_toml ... ok [INFO] [stdout] test strategy::tests::test_parse_missing_name ... ok [INFO] [stdout] test strategy::tests::test_parse_missing_primary_persona ... ok [INFO] [stdout] test strategy::tests::test_parse_team_strategy_empty_agents ... ok [INFO] [stdout] test strategy::tests::test_resolve_kind_empty ... ok [INFO] [stdout] test strategy::tests::test_resolve_kind_prd_loop ... ok [INFO] [stdout] test strategy::tests::test_parse_error_includes_path ... 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_parse_error_message_includes_field_name ... ok [INFO] [stdout] test strategy::tests::test_resolve_kind_conversation_loop ... ok [INFO] [stdout] test strategy::tests::test_validate_primary_persona_not_found ... ok [INFO] [stdout] test strategy::tests::test_parse_team_strategy_error_includes_path ... ok [INFO] [stdout] test strategy::tests::test_validate_prompt_aggregates_empty_entry ... ok [INFO] [stdout] test strategy::tests::test_parse_team_strategy_missing_agents_table ... ok [INFO] [stdout] test strategy::tests::test_parse_optional_fields_omitted ... ok [INFO] [stdout] test strategy::tests::test_parse_team_strategy_valid ... ok [INFO] [stdout] test strategy::tests::test_parse_team_strategy_malformed_toml ... 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_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_with_diff_block ... ok [INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_from_events_multiple_code_blocks ... ok [INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_from_events_non_assistant_events ... ok [INFO] [stdout] test strategy::tests::test_validate_prompt_aggregates_empty_list_is_valid ... ok [INFO] [stdout] test strategy::tests::test_parse_missing_description ... ok [INFO] [stdout] test strategy::tests::test_validate_prompt_aggregates_first_entry_empty ... ok [INFO] [stdout] test strategy::tests::test_parse_missing_kind ... ok [INFO] [stdout] test strategy::tests::test_resolve_kind_unknown ... ok [INFO] [stdout] test strategy::tests::test_validate_prompt_aggregates_omitted_is_valid ... 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_multiple_assistant_events ... 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::chunk_parsing_tests::test_parse_chunks_from_events_with_heuristics_unfenced_diff ... ok [INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_preserves_language_metadata ... 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_assistant_text_event ... 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_content_block_tool_use_round_trip ... ok [INFO] [stdout] test stream::tests::core_tests::test_empty_content_arrays ... ok [INFO] [stdout] test stream::tests::core_tests::test_assistant_tool_use_event ... ok [INFO] [stdout] test stream::tests::core_tests::test_usage_defaults ... 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_system_init_event ... ok [INFO] [stdout] test stream::tests::extraction_tests::test_assistant_message_extract_text_multi_content ... ok [INFO] [stdout] test stream::tests::core_tests::test_result_event_alternative_cost_field ... 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_tool_only ... ok [INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_chunks_matches_plain_text_parsing ... ok [INFO] [stdout] test stream::tests::core_tests::test_missing_optional_fields ... ok [INFO] [stdout] test stream::tests::chunk_parsing_tests::test_parse_text_into_chunks_code_block ... ok [INFO] [stdout] test stream::tests::extraction_tests::test_assistant_event_extract_text ... ok [INFO] [stdout] test stream::tests::extraction_tests::test_assistant_message_extract_text_empty_content ... ok [INFO] [stdout] test stream::tests::core_tests::test_content_block_text_round_trip ... ok [INFO] [stdout] test stream::tests::core_tests::test_user_tool_error_result ... ok [INFO] [stdout] test stream::tests::core_tests::test_user_tool_result_event ... ok [INFO] [stdout] test strategy::tests::test_resolve_kind_case_sensitive ... ok [INFO] [stdout] test stream::tests::extraction_tests::test_extract_metadata_from_events_empty_events ... 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_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_text_from_events_assistant_only ... 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_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_iteration_metadata_new ... ok [INFO] [stdout] test stream::tests::extraction_tests::test_iteration_metadata_is_empty ... ok [INFO] [stdout] test stream::tests::extraction_tests::test_extract_text_from_events_tool_only_assistant ... ok [INFO] [stdout] test stream::tests::extraction_tests::test_system_event_extract_metadata ... ok [INFO] [stdout] test stream::tests::extraction_tests::test_iteration_metadata_serialization ... 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::extraction_tests::test_iteration_metadata_serialization_empty_fields_skipped ... 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_text_from_events_empty ... ok [INFO] [stdout] test directive::tests::recover_orphan_closing_handover_becomes_ask ... ok [INFO] [stdout] test stream::tests::extraction_tests::test_system_event_extract_metadata_missing_fields ... 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_usage ... 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_result_event_extract_costs_empty ... 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_result_event_extract_costs_full ... 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_iteration_costs_serialization_round_trip ... 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_partial_json ... 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_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_malformed_json ... ok [INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_line_user_event ... ok [INFO] [stdout] test stream::tests::iteration_costs_tests::test_extract_costs_from_events_or_default_no_result ... 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_stream_line_with_whitespace ... 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_iteration_costs_new_is_empty ... ok [INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_line_unknown_type ... ok [INFO] [stdout] test stream::tests::iteration_costs_tests::test_extract_costs_from_events_with_result ... 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_output_empty ... 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_stream_parser_with_errors ... ok [INFO] [stdout] test stream::tests::text_accumulation_tests::test_accumulate_text_empty_events ... ok [INFO] [stdout] test stream::tests::ndjson_tests::test_stream_parser_iterator ... 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_finish ... 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_get_all_text ... 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_stream_parser_empty_iterator ... 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_function ... ok [INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_multiple_events_same_message_id ... ok [INFO] [stdout] test stream::tests::ndjson_tests::test_parse_stream_output_multiple_events ... 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_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_single_event ... ok [INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_with_none_message_ids ... 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_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_no_result ... 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_correlator_reset ... 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_tool_interaction_from_invocation_and_result ... ok [INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_correlator_basic ... ok [INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_interaction_from_invocation_and_error_result ... ok [INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_correlator_finish_with_pending ... 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_correlator_ignores_other_events ... ok [INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_interaction_from_invocation ... ok [INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_tool_only_events ... ok [INFO] [stdout] test stream::tests::tool_invocation_tests::test_assistant_event_extract_tool_invocations ... ok [INFO] [stdout] test stream::tests::iteration_costs_tests::test_extract_costs_from_events_multiple_results_takes_first ... ok [INFO] [stdout] test stream::tests::tool_correlation_tests::test_tool_interaction_serialization_round_trip ... 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_correlate_tool_interactions_multiple_calls ... 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_assistant_message_extract_tool_invocations_mixed_content ... ok [INFO] [stdout] test stream::tests::tool_invocation_tests::test_extract_tool_invocations_from_events_empty ... 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::text_accumulation_tests::test_accumulate_text_matches_extract_text_from_events ... ok [INFO] [stdout] test stream::tests::text_accumulation_tests::test_text_accumulator_finish_empty ... 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_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 transcript::tests::build_editor_content_empty_transcript ... ok [INFO] [stdout] test stream::tests::tool_invocation_tests::test_tool_invocation_serialization_round_trip ... 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 transcript::tests::build_persona_prompt_empty_transcript ... ok [INFO] [stdout] test transcript::tests::build_persona_prompt_multiple_turns ... ok [INFO] [stdout] test transcript::tests::build_persona_prompt_with_history ... ok [INFO] [stdout] test stream::tests::tool_invocation_tests::test_assistant_message_extract_tool_invocations_preserves_input ... 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_extract_tool_invocations_from_events_mixed_event_types ... ok [INFO] [stdout] test stream::tests::tool_invocation_tests::test_extract_tool_invocations_from_events_multiple_assistants ... ok [INFO] [stdout] test stream::tests::tool_invocation_tests::test_extract_tool_invocations_from_events_no_assistant ... ok [INFO] [stdout] test transcript::tests::check_exit_abort_exits ... ok [INFO] [stdout] test transcript::tests::parse_editor_response_content_below_separator ... ok [INFO] [stdout] test transcript::tests::parse_editor_response_empty_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_no_separator_empty ... ok [INFO] [stdout] test transcript::tests::parse_editor_response_whitespace_only_below_separator ... ok [INFO] [stdout] test transcript::tests::check_exit_content_continues ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 461 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/xtask-e91ac77f57573c2a) [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/streaming.rs - chunk::streaming::StreamingChunkBuffer::is_in_code_block (line 248) ... 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::process_line (line 287) ... 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/batch.rs - chunk::batch::parse_chunks (line 55) ... 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::process_text (line 425) ... ok [INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer::finish (line 453) ... 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 25) ... ok [INFO] [stdout] test crates/core/src/context.rs - context::substitute_template_placeholders (line 146) ... 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::reset (line 519) ... ok [INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer::is_empty (line 225) ... ok [INFO] [stdout] test crates/core/src/prd.rs - prd::has_prd_changed (line 140) ... ok [INFO] [stdout] test crates/core/src/chunk/mod.rs - chunk (line 38) ... ok [INFO] [stdout] test crates/core/src/completion.rs - completion::check_completion (line 35) ... ok [INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer (line 141) ... ok [INFO] [stdout] test crates/core/src/session.rs - session::generate_slug (line 277) ... ok [INFO] [stdout] test crates/core/src/chunk/streaming.rs - chunk::streaming::StreamingChunkBuffer::finish (line 473) ... ok [INFO] [stdout] test crates/core/src/prd.rs - prd::parse_prd (line 69) ... ok [INFO] [stdout] test crates/core/src/session.rs - session::is_valid_slug (line 358) ... 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/costs.rs - stream::costs::ResultEvent::extract_costs (line 87) ... 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/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/stream/extraction.rs - stream::extraction::AssistantEvent::extract_text (line 126) ... 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/stream/extraction.rs - stream::extraction::extract_tool_invocations_from_events (line 253) ... ok [INFO] [stdout] test crates/core/src/stream/accumulation.rs - stream::accumulation::accumulate_text (line 189) ... 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::AssistantMessage::extract_tool_invocations (line 81) ... ok [INFO] [stdout] test crates/core/src/stream/metadata.rs - stream::metadata::IterationMetadata (line 14) ... ok [INFO] [stdout] test crates/core/src/session.rs - session::generate_unique_slug (line 318) ... ok [INFO] [stdout] test crates/core/src/stream/parsing.rs - stream::parsing::StreamParser (line 121) ... 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/stream/metadata.rs - stream::metadata::SystemEvent::extract_metadata (line 80) ... 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/extraction.rs - stream::extraction::extract_text_from_events (line 196) ... 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::AssistantMessage::extract_text (line 37) ... 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/tools.rs - stream::tools::ToolInteraction (line 20) ... 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::ToolCorrelator (line 198) ... ok [INFO] [stdout] test crates/core/src/stream/parsing.rs - stream::parsing::parse_stream_line (line 33) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 49 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.06s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "49a64beeb8767dc6b9a38bbd069363f4a7519682a8a4cbca19d89b9b08f4bf02", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "49a64beeb8767dc6b9a38bbd069363f4a7519682a8a4cbca19d89b9b08f4bf02", kill_on_drop: false }` [INFO] [stdout] 49a64beeb8767dc6b9a38bbd069363f4a7519682a8a4cbca19d89b9b08f4bf02