[INFO] cloning repository https://github.com/Artaeon/nerve
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Artaeon/nerve" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FArtaeon%2Fnerve", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FArtaeon%2Fnerve'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] b74fa438ab034eed1bba6cfee7243461d1172df1
[INFO] testing Artaeon/nerve against try#33835004928d3bf65db4d4712e1330766263b0bd for pr-155739
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FArtaeon%2Fnerve" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Artaeon/nerve
[INFO] finished tweaking git repo https://github.com/Artaeon/nerve
[INFO] tweaked toml for git repo https://github.com/Artaeon/nerve written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Artaeon/nerve on toolchain 33835004928d3bf65db4d4712e1330766263b0bd
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Artaeon/nerve 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" "+33835004928d3bf65db4d4712e1330766263b0bd" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] afe16d6d4c8a55e6133933780dd1b79cb1f5860c8bdaef12fbc7b1886efb5c7c
[INFO] running `Command { std: "docker" "start" "-a" "afe16d6d4c8a55e6133933780dd1b79cb1f5860c8bdaef12fbc7b1886efb5c7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "afe16d6d4c8a55e6133933780dd1b79cb1f5860c8bdaef12fbc7b1886efb5c7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "afe16d6d4c8a55e6133933780dd1b79cb1f5860c8bdaef12fbc7b1886efb5c7c", kill_on_drop: false }`
[INFO] [stdout] afe16d6d4c8a55e6133933780dd1b79cb1f5860c8bdaef12fbc7b1886efb5c7c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 35e98058ead5fb4a711ff9fa854ea81240c4cd9f242f31b5985a0588264ae877
[INFO] running `Command { std: "docker" "start" "-a" "35e98058ead5fb4a711ff9fa854ea81240c4cd9f242f31b5985a0588264ae877", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling cc v1.2.58
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling litemap v0.8.1
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling writeable v0.6.2
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling openssl v0.10.76
[INFO] [stderr]    Compiling foreign-types-shared v0.1.1
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling foreign-types v0.3.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling openssl-sys v0.9.112
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling onig_sys v69.9.1
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling pxfm v0.1.28
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling num-conv v0.2.1
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling quick-xml v0.38.4
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling iri-string v0.7.12
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling x11rb-protocol v0.13.2
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling byteorder-lite v0.1.0
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling linked-hash-map v0.5.6
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling yaml-rust v0.4.5
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling plist v1.8.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling onig v6.5.1
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling cassowary v0.3.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling syntect v5.3.0
[INFO] [stderr]    Compiling ratatui v0.29.0
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling clap_complete v4.6.0
[INFO] [stderr]    Compiling uuid v1.23.0
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling fuzzy-matcher v0.3.7
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling nerve v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 14m 05s
[INFO] running `Command { std: "docker" "inspect" "35e98058ead5fb4a711ff9fa854ea81240c4cd9f242f31b5985a0588264ae877", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "35e98058ead5fb4a711ff9fa854ea81240c4cd9f242f31b5985a0588264ae877", kill_on_drop: false }`
[INFO] [stdout] 35e98058ead5fb4a711ff9fa854ea81240c4cd9f242f31b5985a0588264ae877
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] bac0732b40b8c7f9849f807730cd3826bb795149f6c7bbf6d35d4b0a2b811d75
[INFO] running `Command { std: "docker" "start" "-a" "bac0732b40b8c7f9849f807730cd3826bb795149f6c7bbf6d35d4b0a2b811d75", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling nerve v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 48.46s
[INFO] running `Command { std: "docker" "inspect" "bac0732b40b8c7f9849f807730cd3826bb795149f6c7bbf6d35d4b0a2b811d75", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bac0732b40b8c7f9849f807730cd3826bb795149f6c7bbf6d35d4b0a2b811d75", kill_on_drop: false }`
[INFO] [stdout] bac0732b40b8c7f9849f807730cd3826bb795149f6c7bbf6d35d4b0a2b811d75
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] c92baa56437c37ada63378bc99b8b52283165afb958130f06aac72167c251cf7
[INFO] running `Command { std: "docker" "start" "-a" "c92baa56437c37ada63378bc99b8b52283165afb958130f06aac72167c251cf7", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.44s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/nerve-79423dab80e7cfd2)
[INFO] [stdout] 
[INFO] [stdout] running 1652 tests
[INFO] [stdout] test agent::auto_context::tests::extract_file_paths_explicit ... ok
[INFO] [stdout] test agent::auto_context::tests::format_context_single_file ... ok
[INFO] [stdout] test agent::auto_context::tests::extract_file_paths_ignores_urls ... ok
[INFO] [stdout] test agent::auto_context::tests::gather_context_no_file_references ... ok
[INFO] [stdout] test agent::auto_context::tests::gather_context_finds_real_file ... ok
[INFO] [stdout] test agent::auto_context::tests::gather_context_nonexistent_file ... ok
[INFO] [stdout] test agent::context::tests::compact_messages_empty ... ok
[INFO] [stdout] test agent::auto_context::tests::extract_file_paths_no_match ... ok
[INFO] [stdout] test agent::context::tests::compact_messages_exactly_at_limit ... ok
[INFO] [stdout] test agent::context::tests::compact_long_conversation_summarizes ... ok
[INFO] [stdout] test agent::auto_context::tests::gather_context_respects_max_files ... ok
[INFO] [stdout] test agent::context::tests::compact_messages_single_system ... ok
[INFO] [stdout] test agent::context::tests::compact_messages_under_budget_unchanged ... ok
[INFO] [stdout] test agent::context::tests::compact_messages_with_only_system ... ok
[INFO] [stdout] test agent::context::tests::compact_short_conversation_unchanged ... ok
[INFO] [stdout] test agent::context::tests::compact_preserves_system_messages ... ok
[INFO] [stdout] test agent::context::tests::compact_tool_results_old_system_context ... ok
[INFO] [stdout] test agent::context::tests::compact_tool_results_old_compacted ... ok
[INFO] [stdout] test agent::context::tests::compact_tool_results_preserves_non_tool_messages ... ok
[INFO] [stdout] test agent::context::tests::conversation_tokens_large_conversation ... ok
[INFO] [stdout] test agent::context::tests::compact_tool_results_many_tools ... ok
[INFO] [stdout] test agent::context::tests::effective_limit_ollama_override ... ok
[INFO] [stdout] test agent::context::tests::effective_limit_unknown_provider ... ok
[INFO] [stdout] test agent::auto_context::tests::format_context_empty_returns_none ... ok
[INFO] [stdout] test agent::context::tests::compact_tool_results_recent_preserved ... ok
[INFO] [stdout] test agent::context::tests::effective_limit_uses_override_when_set ... ok
[INFO] [stdout] test agent::context::tests::estimate_tokens_empty ... ok
[INFO] [stdout] test agent::context::tests::effective_limit_uses_default_when_no_override ... ok
[INFO] [stdout] test agent::context::tests::estimate_tokens_short ... ok
[INFO] [stdout] test agent::context::tests::estimate_tokens_long_text ... ok
[INFO] [stdout] test agent::context::tests::estimate_tokens_two_chars ... ok
[INFO] [stdout] test agent::context::tests::compact_very_large_conversation ... ok
[INFO] [stdout] test agent::context::tests::is_over_budget_true_when_over ... ok
[INFO] [stdout] test agent::context::tests::is_over_budget_false_when_under ... ok
[INFO] [stdout] test agent::context::tests::recommended_limit_unknown_provider ... ok
[INFO] [stdout] test agent::auto_context::tests::extract_file_paths_with_punctuation ... ok
[INFO] [stdout] test agent::context::tests::remaining_tokens_calculation ... ok
[INFO] [stdout] test agent::context::tests::effective_limit_ollama_default ... ok
[INFO] [stdout] test agent::context::tests::effective_limit_override_zero_is_literal ... ok
[INFO] [stdout] test agent::context::tests::estimate_tokens_cjk_multibyte ... ok
[INFO] [stdout] test agent::context::tests::estimate_tokens_empty_is_one ... ok
[INFO] [stdout] test agent::context::tests::smart_truncate_exactly_at_limit ... ok
[INFO] [stdout] test agent::context::tests::smart_truncate_one_over ... ok
[INFO] [stdout] test agent::context::tests::smart_truncate_no_spaces ... ok
[INFO] [stdout] test agent::context::tests::recommended_limit_values ... ok
[INFO] [stdout] test agent::context::tests::smart_truncate_short_text_unchanged ... ok
[INFO] [stdout] test agent::context::tests::summarize_empty_messages ... ok
[INFO] [stdout] test agent::intent::tests::add_feature ... ok
[INFO] [stdout] test agent::context::tests::summarize_messages_without_code ... ok
[INFO] [stdout] test agent::intent::tests::check_whats_in_file ... ok
[INFO] [stdout] test agent::context::tests::summarize_messages_with_code_blocks ... ok
[INFO] [stdout] test agent::context::tests::smart_truncate_at_sentence_boundary ... ok
[INFO] [stdout] test agent::intent::tests::bread_not_read ... ok
[INFO] [stdout] test agent::context::tests::smart_truncate_at_word_boundary ... ok
[INFO] [stdout] test agent::context::tests::smart_truncate_empty ... ok
[INFO] [stdout] test agent::intent::tests::contains_word_no_partial ... ok
[INFO] [stdout] test agent::intent::tests::compile_project ... ok
[INFO] [stdout] test agent::intent::tests::compare_languages ... ok
[INFO] [stdout] test agent::intent::tests::contains_word_punctuation_boundary ... ok
[INFO] [stdout] test agent::intent::tests::create_directory ... ok
[INFO] [stdout] test agent::intent::tests::creative_writing ... ok
[INFO] [stdout] test agent::intent::tests::contains_word_basic ... ok
[INFO] [stdout] test agent::intent::tests::debug_this ... ok
[INFO] [stdout] test agent::intent::tests::delete_file ... ok
[INFO] [stdout] test agent::intent::tests::empty_message ... ok
[INFO] [stdout] test agent::intent::tests::explain_concept ... ok
[INFO] [stdout] test agent::intent::tests::edit_the_config ... ok
[INFO] [stdout] test agent::intent::tests::execute_command ... ok
[INFO] [stdout] test agent::intent::tests::git_commit ... ok
[INFO] [stdout] test agent::intent::tests::greeting ... ok
[INFO] [stdout] test agent::intent::tests::explain_sorting ... ok
[INFO] [stdout] test agent::intent::tests::generate_a_module ... ok
[INFO] [stdout] test agent::intent::tests::fix_with_path ... ok
[INFO] [stdout] test agent::intent::tests::has_path_like_basic ... ok
[INFO] [stdout] test agent::intent::tests::has_path_like_no_match ... ok
[INFO] [stdout] test agent::intent::tests::list_differences ... ok
[INFO] [stdout] test agent::intent::tests::implement_feature ... ok
[INFO] [stdout] test agent::intent::tests::mixed_case ... ok
[INFO] [stdout] test agent::intent::tests::help_understand ... ok
[INFO] [stdout] test agent::intent::tests::modify_the_struct ... ok
[INFO] [stdout] test agent::intent::tests::npm_install ... ok
[INFO] [stdout] test agent::intent::tests::opinion_question ... ok
[INFO] [stdout] test agent::intent::tests::read_the_file ... ok
[INFO] [stdout] test agent::intent::tests::refactor_code ... ok
[INFO] [stdout] test agent::intent::tests::run_build ... ok
[INFO] [stdout] test agent::intent::tests::review_code ... ok
[INFO] [stdout] test agent::intent::tests::scaffold_project ... ok
[INFO] [stdout] test agent::intent::tests::save_to_file ... ok
[INFO] [stdout] test agent::intent::tests::run_cargo_test ... ok
[INFO] [stdout] test agent::intent::tests::show_me_file ... ok
[INFO] [stdout] test agent::intent::tests::translate_to_french ... ok
[INFO] [stdout] test agent::intent::tests::use_tools_explicit ... ok
[INFO] [stdout] test agent::intent::tests::summarize_text ... ok
[INFO] [stdout] test agent::intent::tests::suggest_approach ... ok
[INFO] [stdout] test agent::intent::tests::what_is_rust ... ok
[INFO] [stdout] test agent::intent::tests::write_a_function ... ok
[INFO] [stdout] test agent::intent::tests::update_the_code ... ok
[INFO] [stdout] test agent::intent::tests::whitespace_only ... ok
[INFO] [stdout] test agent::intent::tests::write_class ... ok
[INFO] [stdout] test agent::intent::tests::write_test ... ok
[INFO] [stdout] test agent::pipeline::tests::coder_and_reviewer_have_handoff_prompts ... ok
[INFO] [stdout] test agent::pipeline::tests::iterate_back_to_coding_increments_counter ... ok
[INFO] [stdout] test agent::pipeline::tests::pipeline_progression ... ok
[INFO] [stdout] test agent::pipeline::tests::pipeline_state_starts_with_zero_iterations ... ok
[INFO] [stdout] test agent::intent::tests::create_new_file ... ok
[INFO] [stdout] test agent::pipeline::tests::labels ... ok
[INFO] [stdout] test agent::intent::tests::fix_the_bug ... ok
[INFO] [stdout] test agent::pipeline::tests::role_per_step ... ok
[INFO] [stdout] test agent::pipeline::tests::reviewer_prompt_mentions_read_only_tools ... ok
[INFO] [stdout] test agent::pipeline::tests::should_iterate_is_case_insensitive ... ok
[INFO] [stdout] test agent::pipeline::tests::planner_has_no_tools ... ok
[INFO] [stdout] test agent::pipeline::tests::should_iterate_on_needs_fixes ... ok
[INFO] [stdout] test agent::pipeline::tests::should_not_iterate_on_approved ... ok
[INFO] [stdout] test agent::pipeline::tests::should_not_iterate_on_missing_verdict ... ok
[INFO] [stdout] test agent::pipeline::tests::should_not_iterate_on_rejected ... ok
[INFO] [stdout] test agent::pipeline::tests::should_not_iterate_when_at_iteration_cap ... ok
[INFO] [stdout] test agent::pipeline::tests::tool_policy_per_role ... ok
[INFO] [stdout] test agent::pipeline::tests::should_not_iterate_when_both_needs_fixes_and_rejected_appear ... ok
[INFO] [stdout] test agent::tools::tests::agent_blocks_edit_protected_path ... ok
[INFO] [stdout] test agent::tools::tests::agent_blocks_create_dir_in_protected_path ... ok
[INFO] [stdout] test agent::tools::tests::create_dir_in_usr_blocked ... ok
[INFO] [stdout] test agent::tools::tests::agent_blocks_dangerous_commands ... ok
[INFO] [stdout] test agent::tools::tests::create_dir_in_var_blocked ... ok
[INFO] [stdout] test agent::tools::tests::edit_file_protected_path_blocked ... ok
[INFO] [stdout] test agent::tools::tests::exactly_ten_tools ... ok
[INFO] [stdout] test agent::tools::tests::agent_blocks_reading_env_file ... ok
[INFO] [stdout] test agent::tools::tests::create_dir_in_boot_blocked ... ok
[INFO] [stdout] test agent::tools::tests::execute_create_and_write_file ... ok
[INFO] [stdout] test agent::tools::tests::execute_edit_file_text_not_found ... ok
[INFO] [stdout] test agent::tools::tests::execute_edit_file_success ... ok
[INFO] [stdout] test agent::tools::tests::agent_blocks_write_to_protected_path ... ok
[INFO] [stdout] test agent::tools::tests::agent_blocks_reading_sensitive_files ... ok
[INFO] [stdout] test agent::tools::tests::available_tools_not_empty ... ok
[INFO] [stdout] test agent::tools::tests::execute_list_files_current_dir ... ok
[INFO] [stdout] test agent::tools::tests::execute_read_lines_sensitive_blocked ... ok
[INFO] [stdout] test agent::tools::tests::execute_read_file_not_found ... ok
[INFO] [stdout] test agent::tools::tests::execute_edit_file_not_found ... ok
[INFO] [stdout] test agent::tools::tests::execute_read_lines_start_beyond_end ... ok
[INFO] [stdout] test agent::tools::tests::execute_unknown_tool ... ok
[INFO] [stdout] test agent::tools::tests::normalize_absolute_stays_absolute ... ok
[INFO] [stdout] test agent::tools::tests::normalize_resolves_dot ... ok
[INFO] [stdout] test agent::tools::tests::normalize_resolves_dotdot ... ok
[INFO] [stdout] test agent::tools::tests::parse_edit_file_with_multiline ... ok
[INFO] [stdout] test agent::tools::tests::normalize_relative ... ok
[INFO] [stdout] test agent::tools::tests::parse_indented_tool_call ... ok
[INFO] [stdout] test agent::tools::tests::parse_json_format ... ok
[INFO] [stdout] test agent::tools::tests::parse_json_fenced_in_markdown ... ok
[INFO] [stdout] test agent::tools::tests::parse_json_with_nested_braces ... ok
[INFO] [stdout] test agent::tools::tests::parse_multiple_json_tool_calls ... ok
[INFO] [stdout] test agent::tools::tests::parse_missing_closing_tag ... ok
[INFO] [stdout] test agent::tools::tests::parse_multiple_missing_closing_tags ... ok
[INFO] [stdout] test agent::tools::tests::parse_no_tool_calls ... ok
[INFO] [stdout] test agent::tools::tests::execute_find_files_in_src ... ok
[INFO] [stdout] test agent::tools::tests::parse_multiple_tool_calls ... ok
[INFO] [stdout] test agent::tools::tests::parse_no_tool_calls_in_regular_text ... ok
[INFO] [stdout] test agent::tools::tests::parse_single_tool_call_test ... ok
[INFO] [stdout] test agent::tools::tests::parse_standard_format ... ok
[INFO] [stdout] test agent::tools::tests::normalize_excessive_dotdot_clamps_at_root ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_call_with_multiword_args ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_calls_empty_input ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_calls_empty_tool_name ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_calls_json_format ... ok
[INFO] [stdout] test agent::tools::tests::execute_find_files_with_no_matches ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_calls_json_with_non_string_tool ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_calls_markdown_wrapped_xml ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_calls_multiline_content_arg ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_calls_plain_text_no_tools ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_calls_unclosed_xml_still_parses ... ok
[INFO] [stdout] test agent::tools::tests::parse_standard_takes_priority_over_json ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_call_with_multiline_content ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_variant_only_when_no_standard ... ok
[INFO] [stdout] test agent::tools::tests::parse_with_markdown_fences ... ok
[INFO] [stdout] test agent::tools::tests::read_aws_credentials_blocked ... ok
[INFO] [stdout] test agent::tools::tests::read_aws_credentials_path_blocked ... ok
[INFO] [stdout] test agent::tools::tests::read_env_production_file_blocked ... ok
[INFO] [stdout] test agent::tools::tests::read_sensitive_env_file_blocked ... ok
[INFO] [stdout] test agent::tools::tests::read_ssh_key_blocked ... ok
[INFO] [stdout] test agent::tools::tests::run_command_curl_pipe_bash_blocked ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_calls_multiple_in_sequence ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_calls_whitespace_only ... ok
[INFO] [stdout] test agent::tools::tests::parse_tool_variant_tag ... ok
[INFO] [stdout] test agent::tools::tests::read_env_production_blocked ... ok
[INFO] [stdout] test agent::tools::tests::run_command_fork_bomb_blocked ... ok
[INFO] [stdout] test agent::tools::tests::run_command_eval_blocked ... ok
[INFO] [stdout] test agent::tools::tests::run_command_rm_rf_root_blocked ... ok
[INFO] [stdout] test agent::tools::tests::run_command_wget_pipe_sh_blocked ... ok
[INFO] [stdout] test agent::tools::tests::search_code_with_double_quotes ... ok
[INFO] [stdout] test agent::tools::tests::search_code_with_quotes_in_pattern ... ok
[INFO] [stdout] test agent::tools::tests::search_code_with_dollar_expansion ... ok
[INFO] [stdout] test agent::tools::tests::tool_call_empty_args ... ok
[INFO] [stdout] test agent::tools::tests::tool_call_parse_incomplete_block ... ok
[INFO] [stdout] test agent::tools::tests::tool_call_parse_nested_tags ... ok
[INFO] [stdout] test agent::tools::tests::tool_execution_limit ... ok
[INFO] [stdout] test agent::tools::tests::tools_system_prompt_is_detailed ... ok
[INFO] [stdout] test agent::tools::tests::tools_system_prompt_mentions_all_tools ... ok
[INFO] [stdout] test agent::tools::tests::validate_write_path_blocks_direct_etc ... ok
[INFO] [stdout] test agent::tools::tests::validate_write_path_allows_safe_paths ... ok
[INFO] [stdout] test agent::tools::tests::search_code_with_backticks ... ok
[INFO] [stdout] test agent::tools::tests::validate_write_path_blocks_dotdot_to_etc ... ok
[INFO] [stdout] test agent::tools::tests::validate_write_path_blocks_dotdot_to_usr ... ok
[INFO] [stdout] test agent::tools::tests::execute_search_code_finds_pattern ... ok
[INFO] [stdout] test agent::tools::tests::validate_write_path_empty_string_returns_ok ... ok
[INFO] [stdout] test agent::tools::tests::validate_write_path_blocks_etc_passwd ... ok
[INFO] [stdout] test agent::tools::tests::verify_file_syntax_unknown_ext ... ok
[INFO] [stdout] test agent::tools::tests::validate_write_path_blocks_traversal ... ok
[INFO] [stdout] test agent::tools::tests::write_file_path_traversal_blocked ... ok
[INFO] [stdout] test agent::tools::tests::write_file_to_etc_blocked ... ok
[INFO] [stdout] test agent::tools::tests::write_file_creates_parent_dirs ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_basic_structure ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_json_does_not_add_stream_flags ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_no_session_adds_no_persistence ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_special_characters_in_prompt ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_stream_json_adds_verbose_and_partial ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_text_does_not_add_stream_flags ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_tools_disabled_adds_empty_allowed_tools ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_json_format ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_tools_enabled_adds_dangerous_flag ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_with_system_prompt ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_with_session_adds_resume ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_with_working_dir ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_without_system_prompt ... ok
[INFO] [stdout] test ai::claude_code::tests::build_args_without_working_dir ... ok
[INFO] [stdout] test agent::tools::tests::search_code_with_special_chars ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_empty_messages ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_assistant_message_format ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_multiple_system_messages_concatenated ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_multiple_user_messages ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_no_leading_newlines ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_only_system_messages ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_preserves_unicode ... ok
[INFO] [stdout] test agent::tools::tests::agent_allows_safe_commands ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_single_user_message ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_system_and_user ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_system_messages_scattered ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_system_user_assistant ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_unknown_role_ignored ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_user_assistant_user ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_with_backticks ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_with_semicolons_and_ampersands ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_with_dollar_expansion ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_with_shell_metacharacters ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_with_very_long_message ... ok
[INFO] [stdout] test ai::claude_code::tests::chat_stream_live_emits_tokens ... ignored, live call to claude CLI — requires auth + network
[INFO] [stdout] test ai::claude_code::tests::default_has_no_tools ... ok
[INFO] [stdout] test ai::claude_code::tests::name_returns_claude_code ... ok
[INFO] [stdout] test ai::claude_code::tests::new_provider_defaults ... ok
[INFO] [stdout] test ai::claude_code::tests::resolve_model_custom_default ... ok
[INFO] [stdout] test ai::claude_code::tests::resolve_model_empty_uses_default ... ok
[INFO] [stdout] test ai::claude_code::tests::is_available_returns_false_for_nonexistent_binary ... ok
[INFO] [stdout] test ai::claude_code::tests::resolve_model_non_empty_overrides_custom_default ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_preserves_newlines ... ok
[INFO] [stdout] test ai::claude_code::tests::with_tools_enables_flag ... ok
[INFO] [stdout] test ai::claude_code::tests::with_model_sets_model ... ok
[INFO] [stdout] test ai::claude_code::tests::resolve_model_uses_provided_model ... ok
[INFO] [stdout] test ai::claude_code::tests::build_prompt_preserves_tabs_and_whitespace ... ok
[INFO] [stdout] test ai::claude_code::tests::with_tools_enables_tools ... ok
[INFO] [stdout] test ai::claude_code::tests::with_working_dir_sets_dir ... ok
[INFO] [stdout] test ai::claude_code::tests::with_working_dir_chainable ... ok
[INFO] [stdout] test ai::copilot::tests::build_prompt_empty ... ok
[INFO] [stdout] test ai::copilot::tests::build_prompt_empty_messages ... ok
[INFO] [stdout] test ai::copilot::tests::build_prompt_ignores_unknown_roles ... ok
[INFO] [stdout] test ai::copilot::tests::build_prompt_includes_assistant_messages ... ok
[INFO] [stdout] test ai::copilot::tests::build_prompt_multiple_system_messages ... ok
[INFO] [stdout] test ai::copilot::tests::build_prompt_single_user_message ... ok
[INFO] [stdout] test ai::copilot::tests::build_prompt_preserves_newlines ... ok
[INFO] [stdout] test ai::copilot::tests::build_prompt_user_only ... ok
[INFO] [stdout] test ai::copilot::tests::build_prompt_with_shell_metacharacters ... ok
[INFO] [stdout] test ai::copilot::tests::build_prompt_very_long ... ok
[INFO] [stdout] test ai::copilot::tests::build_prompt_with_system_context ... ok
[INFO] [stdout] test ai::copilot::tests::build_prompt_system_and_user ... ok
[INFO] [stdout] test ai::copilot::tests::copilot_provider_creates_with_default_binary ... ok
[INFO] [stdout] test ai::copilot::tests::copilot_provider_name ... ok
[INFO] [stdout] test ai::openai::tests::api_error_long_body_truncated ... ok
[INFO] [stdout] test ai::openai::tests::api_error_structured_message_extracted ... ok
[INFO] [stdout] test ai::copilot::tests::list_models_returns_copilot ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_chat_chunk ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_chat_response_null_content ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_chat_response ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_choices_wrong_type ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_chunk_empty_choices ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_chunk_malformed_json ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_chunk_with_null_content ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_chunk_with_extra_fields ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_content_with_unicode ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_content_with_special_json_chars ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_empty_object ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_error_response ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_error_response_with_null_error ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_error_response_empty_object ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_model_entry_without_optional_fields ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_models_response ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_multiple_choices ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_multiple_model_entries ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_response_with_extra_fields_ignored ... ok
[INFO] [stdout] test ai::openai::tests::empty_choices_handled ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_malformed_json_missing_choices ... ok
[INFO] [stdout] test ai::openai::tests::serialized_request_includes_set_temperature ... ok
[INFO] [stdout] test ai::openai::tests::serialized_request_omits_none_temperature ... ok
[INFO] [stdout] test ai::openai::tests::sse_data_done_sentinel ... ok
[INFO] [stdout] test ai::openai::tests::sse_data_empty_value ... ok
[INFO] [stdout] test ai::openai::tests::sse_data_extra_spaces ... ok
[INFO] [stdout] test ai::openai::tests::sse_comment_not_data ... ok
[INFO] [stdout] test ai::openai::tests::sse_data_no_space_after_colon ... ok
[INFO] [stdout] test ai::openai::tests::deserialize_very_long_content ... ok
[INFO] [stdout] test ai::openai::tests::sse_data_standard_format ... ok
[INFO] [stdout] test ai::openai::tests::sse_empty_line_not_data ... ok
[INFO] [stdout] test ai::openai::tests::sse_id_field_ignored ... ok
[INFO] [stdout] test ai::openai::tests::sse_event_field_ignored ... ok
[INFO] [stdout] test agent::tools::tests::verify_file_syntax_invalid_json ... ok
[INFO] [stdout] test agent::tools::tests::verify_file_syntax_valid_json ... ok
[INFO] [stdout] test agent::tools::tests::run_command_sudo_blocked ... ok
[INFO] [stdout] test ai::openai::tests::temperature_clamps_above_two ... ok
[INFO] [stdout] test ai::openai::tests::temperature_clamps_below_zero ... ok
[INFO] [stdout] test ai::openai::tests::temperature_within_range_unchanged ... ok
[INFO] [stdout] test ai::provider::tests::assistant_message_empty ... ok
[INFO] [stdout] test ai::provider::tests::assistant_message_from_str ... ok
[INFO] [stdout] test ai::provider::tests::assistant_message_from_string ... ok
[INFO] [stdout] test ai::provider::tests::chat_message_deserializes_from_json ... ok
[INFO] [stdout] test ai::provider::tests::chat_message_is_cloneable ... ok
[INFO] [stdout] test ai::provider::tests::chat_message_serializes_to_json ... ok
[INFO] [stdout] test ai::provider::tests::message_from_cow_str ... ok
[INFO] [stdout] test ai::provider::tests::message_with_multiline_content ... ok
[INFO] [stdout] test ai::provider::tests::message_with_unicode_content ... ok
[INFO] [stdout] test ai::provider::tests::model_info_context_length_none ... ok
[INFO] [stdout] test ai::provider::tests::model_info_serialization_roundtrip ... ok
[INFO] [stdout] test ai::provider::tests::stream_event_done_variant ... ok
[INFO] [stdout] test ai::provider::tests::stream_event_error_variant ... ok
[INFO] [stdout] test ai::provider::tests::stream_event_token_is_cloneable ... ok
[INFO] [stdout] test ai::provider::tests::system_message_empty ... ok
[INFO] [stdout] test ai::provider::tests::system_message_from_str ... ok
[INFO] [stdout] test ai::provider::tests::system_message_from_string ... ok
[INFO] [stdout] test ai::provider::tests::user_message_empty ... ok
[INFO] [stdout] test ai::provider::tests::user_message_from_str ... ok
[INFO] [stdout] test ai::provider::tests::user_message_from_string ... ok
[INFO] [stdout] test ai::retry::tests::base_delay_attempt_0 ... ok
[INFO] [stdout] test ai::retry::tests::base_delay_attempt_1 ... ok
[INFO] [stdout] test ai::retry::tests::base_delay_attempt_2 ... ok
[INFO] [stdout] test ai::retry::tests::base_delay_attempt_3 ... ok
[INFO] [stdout] test ai::retry::tests::base_delay_clamped_to_max ... ok
[INFO] [stdout] test ai::retry::tests::base_delay_exponential_growth ... ok
[INFO] [stdout] test ai::openai::tests::defaults_have_no_temperature_or_top_p ... ok
[INFO] [stdout] test ai::retry::tests::default_backoff_factor ... ok
[INFO] [stdout] test ai::retry::tests::default_max_delay_ms ... ok
[INFO] [stdout] test ai::retry::tests::default_max_retries ... ok
[INFO] [stdout] test ai::retry::tests::default_initial_delay_ms ... ok
[INFO] [stdout] test ai::retry::tests::delay_with_jitter_at_least_base ... ok
[INFO] [stdout] test ai::retry::tests::delay_with_jitter_clamped_to_max ... ok
[INFO] [stdout] test ai::retry::tests::delay_with_jitter_never_exceeds_max_at_boundary ... ok
[INFO] [stdout] test ai::retry::tests::delay_with_jitter_at_most_125_percent_of_base ... ok
[INFO] [stdout] test ai::retry::tests::delay_with_jitter_zero_initial ... ok
[INFO] [stdout] test ai::retry::tests::non_retryable_auth_errors ... ok
[INFO] [stdout] test ai::retry::tests::non_retryable_not_found ... ok
[INFO] [stdout] test ai::retry::tests::non_retryable_wins_over_retryable_in_same_message ... ok
[INFO] [stdout] test ai::retry::tests::not_retryable_400 ... ok
[INFO] [stdout] test ai::retry::tests::not_retryable_401 ... ok
[INFO] [stdout] test ai::retry::tests::not_retryable_403 ... ok
[INFO] [stdout] test ai::retry::tests::not_retryable_404 ... ok
[INFO] [stdout] test ai::retry::tests::not_retryable_unknown_error ... ok
[INFO] [stdout] test ai::retry::tests::redact_authorization_header ... ok
[INFO] [stdout] test ai::retry::tests::redact_bearer_token ... ok
[INFO] [stdout] test ai::retry::tests::redact_does_not_loop_forever_on_bare_prefix ... ok
[INFO] [stdout] test ai::retry::tests::redact_empty_string ... ok
[INFO] [stdout] test ai::retry::tests::redact_handles_multibyte_chars_around_secret ... ok
[INFO] [stdout] test ai::retry::tests::redact_handles_multiple_secrets_in_one_message ... ok
[INFO] [stdout] test ai::retry::tests::redact_no_credentials_is_noop ... ok
[INFO] [stdout] test ai::retry::tests::redact_openai_style_sk_key ... ok
[INFO] [stdout] test ai::retry::tests::redact_query_string_api_key ... ok
[INFO] [stdout] test ai::retry::tests::redact_x_api_key_header ... ok
[INFO] [stdout] test ai::retry::tests::retry_config_deserializes_from_empty_toml ... ok
[INFO] [stdout] test ai::retry::tests::retry_config_partial_toml ... ok
[INFO] [stdout] test ai::retry::tests::retry_config_toml_roundtrip ... ok
[INFO] [stdout] test ai::retry::tests::retry_exhausts_all_attempts ... ok
[INFO] [stdout] test ai::retry::tests::retry_immediate_success ... ok
[INFO] [stdout] test ai::retry::tests::retry_stops_on_non_retryable_error ... ok
[INFO] [stdout] test ai::retry::tests::retry_succeeds_on_second_attempt ... ok
[INFO] [stdout] test ai::retry::tests::retry_zero_retries_means_single_attempt ... ok
[INFO] [stdout] test ai::retry::tests::retryable_408 ... ok
[INFO] [stdout] test ai::retry::tests::retryable_429 ... ok
[INFO] [stdout] test ai::retry::tests::retryable_500 ... ok
[INFO] [stdout] test ai::retry::tests::retryable_502 ... ok
[INFO] [stdout] test ai::retry::tests::retryable_503 ... ok
[INFO] [stdout] test ai::retry::tests::retryable_504 ... ok
[INFO] [stdout] test ai::retry::tests::retryable_connection_refused ... ok
[INFO] [stdout] test ai::retry::tests::retryable_connection_refused_case_insensitive ... ok
[INFO] [stdout] test ai::retry::tests::retryable_connection_reset ... ok
[INFO] [stdout] test ai::retry::tests::retryable_dns_error ... ok
[INFO] [stdout] test ai::retry::tests::retryable_found_when_no_non_retryable_present ... ok
[INFO] [stdout] test ai::retry::tests::retryable_status_code_format ... ok
[INFO] [stdout] test ai::retry::tests::retryable_timeout ... ok
[INFO] [stdout] test ai::retry::tests::retryable_timeout_variations ... ok
[INFO] [stdout] test ai::retry::tests::unknown_error_not_retryable ... ok
[INFO] [stdout] test agent::tools::tests::execute_read_lines_range ... FAILED
[INFO] [stdout] test ai::retry::tests::is_retryable_error_with_anyhow ... ok
[INFO] [stdout] test app::tests::active_conversation_bounds_after_delete ... ok
[INFO] [stdout] test app::tests::add_user_message_appends ... ok
[INFO] [stdout] test app::tests::adding_message_to_switched_conversation ... ok
[INFO] [stdout] test app::tests::all_non_standard_modes_have_prompts ... ok
[INFO] [stdout] test app::tests::app_new_has_correct_defaults_extended ... ok
[INFO] [stdout] test app::tests::app_set_status_timer ... ok
[INFO] [stdout] test app::tests::add_user_message_multiple ... ok
[INFO] [stdout] test app::tests::append_to_streaming_accumulates ... ok
[INFO] [stdout] test app::tests::append_to_streaming_empty_string ... ok
[INFO] [stdout] test app::tests::cancel_active_stream_aborts_running_task ... ok
[INFO] [stdout] test app::tests::cancel_active_stream_is_safe_when_idle ... ok
[INFO] [stdout] test app::tests::conversation_new_has_default_title ... ok
[INFO] [stdout] test app::tests::conversation_new_has_empty_messages ... ok
[INFO] [stdout] test app::tests::add_assistant_message_appends ... ok
[INFO] [stdout] test app::tests::conversation_new_has_recent_timestamp ... ok
[INFO] [stdout] test app::tests::conversation_new_has_uuid ... ok
[INFO] [stdout] test app::tests::append_to_streaming_concatenates ... ok
[INFO] [stdout] test app::tests::create_and_restore_branch ... ok
[INFO] [stdout] test app::tests::create_multiple_branches_independent ... ok
[INFO] [stdout] test app::tests::current_conversation_clamps_to_last_valid ... ok
[INFO] [stdout] test app::tests::current_conversation_tracks_active_index ... ok
[INFO] [stdout] test app::tests::cursor_at_every_position ... ok
[INFO] [stdout] test app::tests::cursor_handles_emoji_insert_delete ... ok
[INFO] [stdout] test app::tests::cursor_movement_across_emoji_boundary ... ok
[INFO] [stdout] test app::tests::cursor_movement_empty_input ... ok
[INFO] [stdout] test app::tests::cursor_out_of_bounds_clamped ... ok
[INFO] [stdout] test app::tests::cursor_position_never_exceeds_input_len ... ok
[INFO] [stdout] test app::tests::delete_accented_char ... ok
[INFO] [stdout] test app::tests::delete_all_chars_one_by_one ... ok
[INFO] [stdout] test app::tests::delete_branch ... ok
[INFO] [stdout] test app::tests::delete_branch_out_of_bounds_safe ... ok
[INFO] [stdout] test app::tests::delete_char_at_cursor_zero_with_content ... ok
[INFO] [stdout] test app::tests::delete_char_at_end ... ok
[INFO] [stdout] test app::tests::delete_char_at_position_zero ... ok
[INFO] [stdout] test app::tests::delete_char_at_start_noop ... ok
[INFO] [stdout] test app::tests::delete_char_empty_string ... ok
[INFO] [stdout] test app::tests::delete_char_in_middle ... ok
[INFO] [stdout] test app::tests::delete_multibyte_char ... ok
[INFO] [stdout] test app::tests::finish_streaming_clears_stream_rx ... ok
[INFO] [stdout] test app::tests::finish_streaming_empty_does_not_add_message ... ok
[INFO] [stdout] test app::tests::current_conversation_returns_first_by_default ... ok
[INFO] [stdout] test app::tests::finish_streaming_multiple_times ... ok
[INFO] [stdout] test app::tests::finish_streaming_preserves_existing_messages ... ok
[INFO] [stdout] test app::tests::create_branch_captures_correct_snapshot ... ok
[INFO] [stdout] test app::tests::finish_streaming_moves_content_to_conversation ... ok
[INFO] [stdout] test app::tests::finish_streaming_when_not_streaming ... ok
[INFO] [stdout] test app::tests::input_history_allows_non_consecutive_duplicates ... ok
[INFO] [stdout] test app::tests::input_history_empty_not_recorded ... ok
[INFO] [stdout] test app::tests::input_history_no_consecutive_duplicates ... ok
[INFO] [stdout] test app::tests::input_history_records_submissions ... ok
[INFO] [stdout] test app::tests::input_history_resets_index_on_submit ... ok
[INFO] [stdout] test app::tests::insert_char_at_end ... ok
[INFO] [stdout] test app::tests::insert_char_at_middle ... ok
[INFO] [stdout] test app::tests::insert_char_at_start ... ok
[INFO] [stdout] test app::tests::insert_accented_characters ... ok
[INFO] [stdout] test app::tests::insert_char_into_empty ... ok
[INFO] [stdout] test app::tests::insert_char_at_various_positions ... ok
[INFO] [stdout] test app::tests::insert_char_sequence ... ok
[INFO] [stdout] test app::tests::insert_char_with_invalid_cursor ... ok
[INFO] [stdout] test app::tests::insert_emoji_in_middle_of_text ... ok
[INFO] [stdout] test app::tests::insert_multibyte_char ... ok
[INFO] [stdout] test app::tests::messages_go_to_active_conversation_not_others ... ok
[INFO] [stdout] test app::tests::mixed_messages_preserve_order ... ok
[INFO] [stdout] test app::tests::move_cursor_left_at_zero_stays ... ok
[INFO] [stdout] test app::tests::massive_message_history ... ok
[INFO] [stdout] test app::tests::move_cursor_left_empty_string ... ok
[INFO] [stdout] test app::tests::move_cursor_left_from_end ... ok
[INFO] [stdout] test app::tests::many_branches ... ok
[INFO] [stdout] test app::tests::move_cursor_left_right_roundtrip ... ok
[INFO] [stdout] test app::tests::move_cursor_right_at_end_stays ... ok
[INFO] [stdout] test app::tests::move_cursor_right_empty_string ... ok
[INFO] [stdout] test app::tests::move_cursor_left_with_emoji ... ok
[INFO] [stdout] test app::tests::move_cursor_right_with_emoji ... ok
[INFO] [stdout] test app::tests::multiple_conversations_isolated ... ok
[INFO] [stdout] test app::tests::nerve_mode_agent_returns_some ... ok
[INFO] [stdout] test app::tests::nerve_mode_efficient_returns_some ... ok
[INFO] [stdout] test app::tests::nerve_mode_learning_returns_some ... ok
[INFO] [stdout] test app::tests::nerve_mode_standard_returns_none ... ok
[INFO] [stdout] test app::tests::nerve_mode_thorough_returns_some ... ok
[INFO] [stdout] test app::tests::new_app_defaults ... ok
[INFO] [stdout] test app::tests::new_app_has_empty_history_and_aliases ... ok
[INFO] [stdout] test app::tests::new_app_has_expected_models ... ok
[INFO] [stdout] test app::tests::new_app_has_expected_providers ... ok
[INFO] [stdout] test app::tests::new_app_has_no_context_limit_override ... ok
[INFO] [stdout] test app::tests::new_conversation_cancels_in_flight_stream ... ok
[INFO] [stdout] test app::tests::new_conversation_increases_count ... ok
[INFO] [stdout] test app::tests::new_conversation_resets_state ... ok
[INFO] [stdout] test app::tests::new_conversation_resets_streaming ... ok
[INFO] [stdout] test app::tests::new_conversation_switches_active ... ok
[INFO] [stdout] test app::tests::rapid_conversation_switching ... ok
[INFO] [stdout] test app::tests::restore_invalid_branch ... ok
[INFO] [stdout] test app::tests::move_cursor_left_multibyte ... ok
[INFO] [stdout] test app::tests::move_cursor_right_from_start ... ok
[INFO] [stdout] test app::tests::scroll_down_at_zero_stays ... ok
[INFO] [stdout] test app::tests::scroll_down_decrements_by_three ... ok
[INFO] [stdout] test app::tests::scroll_down_from_zero_repeated ... ok
[INFO] [stdout] test app::tests::scroll_down_saturates_at_zero ... ok
[INFO] [stdout] test app::tests::scroll_offset_large_values ... ok
[INFO] [stdout] test app::tests::scroll_to_bottom_resets_offset ... ok
[INFO] [stdout] test app::tests::scroll_up_increments_by_three ... ok
[INFO] [stdout] test app::tests::scroll_to_top_sets_large_offset ... ok
[INFO] [stdout] test app::tests::scroll_up_near_max_u16 ... ok
[INFO] [stdout] test app::tests::set_status_updates_both_fields ... ok
[INFO] [stdout] test app::tests::set_status_replaces_previous ... ok
[INFO] [stdout] test app::tests::submit_empty_returns_none ... ok
[INFO] [stdout] test app::tests::submit_completely_empty_returns_none ... ok
[INFO] [stdout] test app::tests::submit_input_clears_cursor ... ok
[INFO] [stdout] test app::tests::submit_input_clears_state ... ok
[INFO] [stdout] test app::tests::submit_input_preserves_internal_newlines ... ok
[INFO] [stdout] test app::tests::submit_input_with_only_newlines ... ok
[INFO] [stdout] test app::tests::submit_input_returns_trimmed_text ... ok
[INFO] [stdout] test app::tests::scroll_up_then_to_bottom ... ok
[INFO] [stdout] test app::tests::submit_preserves_inner_whitespace ... ok
[INFO] [stdout] test app::tests::switch_between_three_conversations ... ok
[INFO] [stdout] test app::tests::switching_conversations_preserves_messages ... ok
[INFO] [stdout] test app::tests::two_conversations_have_different_ids ... ok
[INFO] [stdout] test automation::tests::all_automations_includes_builtins ... ok
[INFO] [stdout] test app::tests::submit_input_with_unicode ... ok
[INFO] [stdout] test automation::tests::all_builtin_automations_have_required_fields ... ok
[INFO] [stdout] test app::tests::very_long_input_handling ... ok
[INFO] [stdout] test automation::tests::all_automations_includes_custom_after_save ... ok
[INFO] [stdout] test automation::tests::all_builtin_steps_have_input_or_prev_output_placeholder ... ok
[INFO] [stdout] test automation::tests::automation_new_has_correct_fields ... ok
[INFO] [stdout] test automation::tests::automation_serialization_roundtrip ... ok
[INFO] [stdout] test automation::tests::automation_toml_roundtrip ... ok
[INFO] [stdout] test automation::tests::builtin_automation_names_are_unique ... ok
[INFO] [stdout] test automation::tests::builtin_automations_all_have_steps ... ok
[INFO] [stdout] test automation::tests::builtin_automations_returns_five ... ok
[INFO] [stdout] test automation::tests::builtin_steps_have_templates ... ok
[INFO] [stdout] test automation::tests::delete_automation_removes_file ... ok
[INFO] [stdout] test automation::tests::delete_missing_automation_returns_error ... ok
[INFO] [stdout] test automation::tests::builtin_automation_step_count ... ok
[INFO] [stdout] test automation::tests::exactly_five_builtin_automations ... ok
[INFO] [stdout] test automation::tests::find_automation_case_insensitive_lookup ... ok
[INFO] [stdout] test automation::tests::find_automation_finds_builtin_case_insensitive ... ok
[INFO] [stdout] test automation::tests::find_automation_missing_returns_error ... ok
[INFO] [stdout] test automation::tests::sanitize_filename_preserves_alphanumeric_and_dashes ... ok
[INFO] [stdout] test automation::tests::save_and_load_automation_roundtrip ... ok
[INFO] [stdout] test automation::tests::automation_add_step_appends ... ok
[INFO] [stdout] test automation::tests::sanitize_filename_basic ... ok
[INFO] [stdout] test clipboard_manager::tests::add_generates_preview_replacing_newlines ... ok
[INFO] [stdout] test clipboard_manager::tests::add_creates_entry_with_correct_fields ... ok
[INFO] [stdout] test clipboard_manager::tests::add_generates_preview_with_truncation ... ok
[INFO] [stdout] test clipboard_manager::tests::add_generates_correct_preview ... ok
[INFO] [stdout] test clipboard_manager::tests::clear_removes_all_entries ... ok
[INFO] [stdout] test clipboard_manager::tests::clipboard_save_load_roundtrip ... ok
[INFO] [stdout] test clipboard_manager::tests::clipboard_source_badge_display ... ok
[INFO] [stdout] test clipboard_manager::tests::entries_returns_newest_first ... ok
[INFO] [stdout] test clipboard_manager::tests::get_returns_entry_at_index ... ok
[INFO] [stdout] test clipboard_manager::tests::make_preview_replaces_newlines_with_spaces ... ok
[INFO] [stdout] test clipboard_manager::tests::make_preview_truncates_at_100_chars ... ok
[INFO] [stdout] test clipboard_manager::tests::new_clipboard_manager_is_empty ... ok
[INFO] [stdout] test clipboard_manager::tests::remove_by_index_shifts_entries ... ok
[INFO] [stdout] test clipboard_manager::tests::remove_out_of_bounds_is_noop ... ok
[INFO] [stdout] test clipboard_manager::tests::remove_removes_correct_entry ... ok
[INFO] [stdout] test clipboard_manager::tests::add_respects_max_entries_limit ... ok
[INFO] [stdout] test clipboard_manager::tests::clipboard_entry_serialization_roundtrip ... ok
[INFO] [stdout] test clipboard_manager::tests::search_empty_query_returns_all ... ok
[INFO] [stdout] test clipboard_manager::tests::search_finds_matching_entries ... ok
[INFO] [stdout] test clipboard_manager::tests::search_returns_empty_for_no_matches ... ok
[INFO] [stdout] test commands::ai::tests::agent_bare_shows_info ... ok
[INFO] [stdout] test commands::ai::tests::agent_off_is_handled ... ok
[INFO] [stdout] test clipboard_manager::tests::search_with_fuzzy_match ... ok
[INFO] [stdout] test commands::ai::tests::agent_status_is_handled ... ok
[INFO] [stdout] test commands::ai::tests::cd_bare_shows_cwd ... ok
[INFO] [stdout] test commands::ai::tests::cd_tmp_is_handled ... ok
[INFO] [stdout] test ai::openai::tests::top_p_clamps_below_zero ... ok
[INFO] [stdout] test ai::openai::tests::top_p_clamps_above_one ... ok
[INFO] [stdout] test commands::ai::tests::code_off_is_handled ... ok
[INFO] [stdout] test commands::ai::tests::code_on_rejected_for_non_claude ... ok
[INFO] [stdout] test commands::ai::tests::code_on_requires_claude_provider ... ok
[INFO] [stdout] test commands::ai::tests::mode_code_is_handled ... ok
[INFO] [stdout] test commands::ai::tests::mode_bare_shows_list ... ok
[INFO] [stdout] test commands::ai::tests::mode_efficient_is_handled ... ok
[INFO] [stdout] test commands::ai::tests::mode_standard_resets ... ok
[INFO] [stdout] test commands::ai::tests::mode_review_is_handled ... ok
[INFO] [stdout] test commands::ai::tests::model_prefix_match ... ok
[INFO] [stdout] test commands::ai::tests::model_bare_is_not_handled ... ok
[INFO] [stdout] test commands::ai::tests::mode_thorough_is_handled ... ok
[INFO] [stdout] test commands::ai::tests::model_with_name_is_handled ... ok
[INFO] [stdout] test commands::ai::tests::model_unknown_shows_error ... ok
[INFO] [stdout] test commands::ai::tests::models_does_not_match_model_space ... ok
[INFO] [stdout] test commands::ai::tests::ac_shorthand_is_handled ... ok
[INFO] [stdout] test commands::ai::tests::autocontext_is_handled ... ok
[INFO] [stdout] test commands::ai::tests::models_is_handled ... ok
[INFO] [stdout] test commands::ai::tests::provider_bare_shows_current ... ok
[INFO] [stdout] test commands::ai::tests::provider_switch_ollama ... ok
[INFO] [stdout] test commands::ai::tests::providers_lists_all ... ok
[INFO] [stdout] test commands::chat::tests::br_shorthand_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::branch_list_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::branch_restore_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::branch_save_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::clearall_does_not_match_clear ... ok
[INFO] [stdout] test commands::chat::tests::clear_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::copy_code_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::copy_last_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::copy_all_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::delete_all_clears_conversations ... ok
[INFO] [stdout] test commands::chat::tests::export_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::new_conversation_clears_pipeline ... ok
[INFO] [stdout] test commands::chat::tests::rename_extracts_new_title ... ok
[INFO] [stdout] test commands::chat::tests::repeat_alias_works ... ok
[INFO] [stdout] test commands::chat::tests::repeat_no_history ... ok
[INFO] [stdout] test commands::chat::tests::repeat_with_history ... ok
[INFO] [stdout] test commands::chat::tests::new_creates_conversation ... ok
[INFO] [stdout] test commands::chat::tests::rename_bare_shows_usage ... ok
[INFO] [stdout] test commands::chat::tests::session_bare_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::session_list_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::session_restore_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::system_clear_removes_prompt ... ok
[INFO] [stdout] test commands::chat::tests::system_bare_shows_current ... ok
[INFO] [stdout] test commands::ai::tests::unrecognised_returns_false ... ok
[INFO] [stdout] test commands::chat::tests::workflow_bare_shows_usage ... ok
[INFO] [stdout] test commands::chat::tests::workflow_refuses_when_already_streaming ... ok
[INFO] [stdout] test commands::chat::tests::copy_bare_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::workflow_refuses_when_pipeline_already_active ... ok
[INFO] [stdout] test commands::chat::tests::session_save_is_handled ... ok
[INFO] [stdout] test commands::chat::tests::workflow_with_task_starts_pipeline_at_planning ... ok
[INFO] [stdout] test commands::chat::tests::system_set_extracts_prompt ... ok
[INFO] [stdout] test commands::chat::tests::unrecognised_returns_false ... ok
[INFO] [stdout] test commands::files::tests::file_bare_shows_usage ... ok
[INFO] [stdout] test commands::files::tests::file_does_not_match_files ... ok
[INFO] [stdout] test commands::files::tests::file_with_line_range_is_handled ... ok
[INFO] [stdout] test commands::files::tests::files_bare_shows_usage ... ok
[INFO] [stdout] test commands::files::tests::scaffold_bare_shows_usage ... ok
[INFO] [stdout] test commands::files::tests::files_with_multiple_paths_is_handled ... ok
[INFO] [stdout] test commands::files::tests::template_bare_lists_templates ... ok
[INFO] [stdout] test ai::openai::tests::temperature_at_boundaries ... ok
[INFO] [stdout] test commands::files::tests::template_list_lists_templates ... ok
[INFO] [stdout] test commands::files::tests::template_unknown_name ... ok
[INFO] [stdout] test commands::files::tests::unrecognised_returns_false ... ok
[INFO] [stdout] test commands::files::tests::workspace_is_handled ... ok
[INFO] [stdout] test commands::files::tests::file_with_path_is_handled ... ok
[INFO] [stdout] test commands::git::tests::branch_checkout_alias ... ok
[INFO] [stdout] test commands::git::tests::branch_create ... ok
[INFO] [stdout] test commands::files::tests::ws_shorthand_is_handled ... ok
[INFO] [stdout] test commands::git::tests::branch_del_alias ... ok
[INFO] [stdout] test commands::git::tests::branch_delete ... ok
[INFO] [stdout] test commands::git::tests::branch_delete_no_name ... ok
[INFO] [stdout] test commands::git::tests::branch_list_default ... ok
[INFO] [stdout] test ai::openai::tests::top_p_within_range_unchanged ... ok
[INFO] [stdout] test commands::git::tests::branch_empty_after_whitespace ... ok
[INFO] [stdout] test commands::git::tests::branch_name_at_brace ... ok
[INFO] [stdout] test commands::git::tests::branch_name_backslash ... ok
[INFO] [stdout] test commands::git::tests::branch_name_double_dot ... ok
[INFO] [stdout] test commands::git::tests::branch_name_double_dot_in_middle ... ok
[INFO] [stdout] test commands::git::tests::branch_name_ends_with_dot ... ok
[INFO] [stdout] test commands::git::tests::branch_name_ends_with_slash ... ok
[INFO] [stdout] test commands::git::tests::branch_name_lock_suffix ... ok
[INFO] [stdout] test commands::git::tests::branch_name_empty ... ok
[INFO] [stdout] test commands::files::tests::map_is_handled ... ok
[INFO] [stdout] test commands::git::tests::branch_name_ends_with_lock ... ok
[INFO] [stdout] test commands::git::tests::branch_name_only_dots ... ok
[INFO] [stdout] test commands::git::tests::branch_name_rejects_at_brace ... ok
[INFO] [stdout] test commands::git::tests::branch_name_rejects_backslash ... ok
[INFO] [stdout] test commands::git::tests::branch_name_rejects_bracket ... ok
[INFO] [stdout] test commands::git::tests::branch_name_rejects_asterisk ... ok
[INFO] [stdout] test commands::files::tests::map_with_depth_is_handled ... ok
[INFO] [stdout] test commands::git::tests::branch_name_rejects_colon ... ok
[INFO] [stdout] test commands::git::tests::branch_name_rejects_space ... ok
[INFO] [stdout] test commands::git::tests::branch_name_rejects_caret ... ok
[INFO] [stdout] test commands::git::tests::branch_name_rejects_tilde ... ok
[INFO] [stdout] test commands::git::tests::branch_name_single_char ... ok
[INFO] [stdout] test commands::git::tests::branch_name_starts_with_dash ... ok
[INFO] [stdout] test commands::git::tests::branch_name_rejects_question ... ok
[INFO] [stdout] test commands::git::tests::branch_name_starts_with_dot ... ok
[INFO] [stdout] test commands::git::tests::branch_name_unicode_letters ... ok
[INFO] [stdout] test commands::git::tests::branch_name_valid ... ok
[INFO] [stdout] test commands::git::tests::branch_name_with_numbers ... ok
[INFO] [stdout] test commands::git::tests::branch_switch ... ok
[INFO] [stdout] test commands::git::tests::branch_with_extra_whitespace ... ok
[INFO] [stdout] test commands::git::tests::commit_message_multiline_not_supported ... ok
[INFO] [stdout] test commands::git::tests::branch_name_with_slashes ... ok
[INFO] [stdout] test commands::git::tests::commit_message_parsing ... ok
[INFO] [stdout] test commands::git::tests::commit_message_preserves_full_text ... ok
[INFO] [stdout] test commands::git::tests::commit_message_with_special_chars ... ok
[INFO] [stdout] test commands::git::tests::commit_message_with_unicode ... ok
[INFO] [stdout] test commands::git::tests::commit_empty_after_trim ... ok
[INFO] [stdout] test commands::git::tests::branch_rm_alias ... ok
[INFO] [stdout] test commands::git::tests::empty_quoted_string ... ok
[INFO] [stdout] test commands::git::tests::git_author_flag_both_empty ... ok
[INFO] [stdout] test commands::git::tests::git_author_flag_empty_name ... ok
[INFO] [stdout] test commands::git::tests::git_author_flag_escapes_quotes ... ok
[INFO] [stdout] test commands::git::tests::gitbranch_three_args ... ok
[INFO] [stdout] test commands::git::tests::invalid_branch_names ... ok
[INFO] [stdout] test commands::git::tests::git_author_flag_both_set ... ok
[INFO] [stdout] test commands::git::tests::git_author_flag_empty_email ... ok
[INFO] [stdout] test commands::git::tests::log_float_value ... ok
[INFO] [stdout] test commands::git::tests::log_negative_values ... ok
[INFO] [stdout] test commands::git::tests::log_with_whitespace ... ok
[INFO] [stdout] test commands::git::tests::log_very_large_clamped ... ok
[INFO] [stdout] test commands::git::tests::log_count_parsing ... ok
[INFO] [stdout] test commands::git::tests::log_zero_clamped ... ok
[INFO] [stdout] test commands::git::tests::no_quotes_to_strip ... ok
[INFO] [stdout] test commands::git::tests::stash_apply_with_ref ... ok
[INFO] [stdout] test commands::git::tests::stash_drop_with_ref ... ok
[INFO] [stdout] test commands::git::tests::stash_empty_space ... ok
[INFO] [stdout] test commands::git::tests::stash_show_with_ref ... ok
[INFO] [stdout] test commands::git::tests::stash_subcommand_parsing ... ok
[INFO] [stdout] test commands::git::tests::stash_with_multiword_message ... ok
[INFO] [stdout] test commands::git::tests::mismatched_quotes_not_stripped ... ok
[INFO] [stdout] test commands::git::tests::stash_unknown_becomes_message ... ok
[INFO] [stdout] test commands::git::tests::strip_backticks ... ok
[INFO] [stdout] test commands::git::tests::strip_double_quotes ... ok
[INFO] [stdout] test commands::git::tests::strip_single_quotes ... ok
[INFO] [stdout] test commands::git::tests::commit_dispatch_guard_prevents_prefix_match ... ok
[INFO] [stdout] test commands::git::tests::whitespace_with_quotes ... ok
[INFO] [stdout] test commands::git::tests::truncation_char_safe ... ok
[INFO] [stdout] test commands::git::tests::valid_branch_names ... ok
[INFO] [stdout] test commands::info::tests::context_is_handled ... ok
[INFO] [stdout] test commands::info::tests::compact_is_handled ... ok
[INFO] [stdout] test commands::info::tests::help_added_as_assistant_message ... ok
[INFO] [stdout] test commands::git::tests::truncation_ascii_unchanged ... ok
[INFO] [stdout] test commands::info::tests::context_shows_messages ... ok
[INFO] [stdout] test commands::files::tests::tree_with_depth_is_handled ... ok
[INFO] [stdout] test commands::info::tests::help_is_handled ... ok
[INFO] [stdout] test commands::info::tests::help_contains_key_commands ... ok
[INFO] [stdout] test commands::info::tests::suggest_bare_shows_usage ... ok
[INFO] [stdout] test commands::info::tests::status_is_handled ... ok
[INFO] [stdout] test commands::info::tests::status_shows_provider_and_model ... ok
[INFO] [stdout] test commands::info::tests::status_contains_system_info ... ok
[INFO] [stdout] test commands::info::tests::summary_is_handled ... ok
[INFO] [stdout] test commands::git::tests::is_git_repo_in_project ... ok
[INFO] [stdout] test commands::info::tests::summary_empty_conversation ... ok
[INFO] [stdout] test commands::info::tests::tokens_is_handled ... ok
[INFO] [stdout] test commands::info::tests::summary_with_messages ... ok
[INFO] [stdout] test commands::info::tests::unrecognised_returns_false ... ok
[INFO] [stdout] test commands::info::tests::tokens_shows_breakdown ... ok
[INFO] [stdout] test commands::knowledge::tests::auto_delete_no_arg_falls_through ... ok
[INFO] [stdout] test commands::knowledge::tests::auto_bare_lists_automations ... ok
[INFO] [stdout] test commands::knowledge::tests::auto_create_is_handled ... ok
[INFO] [stdout] test commands::knowledge::tests::auto_unknown_subcommand ... ok
[INFO] [stdout] test commands::knowledge::tests::auto_list_is_handled ... ok
[INFO] [stdout] test commands::knowledge::tests::auto_run_no_arg_falls_through ... ok
[INFO] [stdout] test commands::knowledge::tests::auto_info_no_arg_falls_through ... ok
[INFO] [stdout] test commands::knowledge::tests::kb_add_no_arg_is_unknown ... ok
[INFO] [stdout] test commands::knowledge::tests::kb_clear_is_handled ... ok
[INFO] [stdout] test commands::knowledge::tests::kb_list_is_handled ... ok
[INFO] [stdout] test commands::knowledge::tests::kb_bare_is_handled ... ok
[INFO] [stdout] test commands::knowledge::tests::kb_add_extracts_path ... ok
[INFO] [stdout] test commands::knowledge::tests::kb_search_extracts_query ... ok
[INFO] [stdout] test commands::knowledge::tests::kb_search_no_arg_is_unknown ... ok
[INFO] [stdout] test commands::knowledge::tests::kb_status_is_handled ... ok
[INFO] [stdout] test commands::knowledge::tests::kb_unknown_subcommand ... ok
[INFO] [stdout] test commands::knowledge::tests::unrecognised_returns_false ... ok
[INFO] [stdout] test commands::knowledge::tests::url_empty_arg_shows_usage ... ok
[INFO] [stdout] test commands::knowledge::tests::url_bare_is_not_handled ... ok
[INFO] [stdout] test commands::settings::tests::alias_bare_shows_list ... ok
[INFO] [stdout] test commands::settings::tests::alias_create_and_lookup ... ok
[INFO] [stdout] test commands::settings::tests::alias_creates_mapping ... ok
[INFO] [stdout] test commands::settings::tests::alias_list_after_creation ... ok
[INFO] [stdout] test commands::settings::tests::alias_name_equals_value_parse ... ok
[INFO] [stdout] test commands::settings::tests::alias_no_args_shows_list ... ok
[INFO] [stdout] test commands::settings::tests::alias_without_command_shows_usage ... ok
[INFO] [stdout] test commands::settings::tests::limit_off_disables_from_enabled ... ok
[INFO] [stdout] test commands::settings::tests::limit_on_enables ... ok
[INFO] [stdout] test commands::settings::tests::limit_on_enables_from_disabled ... ok
[INFO] [stdout] test commands::settings::tests::limit_set_extracts_amount ... ok
[INFO] [stdout] test commands::settings::tests::limit_set_invalid_shows_usage ... ok
[INFO] [stdout] test commands::settings::tests::limit_set_negative_rejected ... ok
[INFO] [stdout] test commands::settings::tests::limit_set_non_numeric_shows_usage ... ok
[INFO] [stdout] test commands::settings::tests::limit_set_valid_amount ... ok
[INFO] [stdout] test commands::settings::tests::limit_bare_shows_info ... ok
[INFO] [stdout] test commands::settings::tests::limit_off_disables ... ok
[INFO] [stdout] test commands::settings::tests::cost_alias_is_handled ... ok
[INFO] [stdout] test commands::settings::tests::limit_set_zero_rejected ... ok
[INFO] [stdout] test commands::settings::tests::plugin_init_is_handled ... ok
[INFO] [stdout] test commands::settings::tests::plugin_list_is_handled ... ok
[INFO] [stdout] test commands::info::tests::suggest_with_nonsense_query_reports_no_match ... ok
[INFO] [stdout] test commands::settings::tests::plugin_bare_defaults_to_list ... ok
[INFO] [stdout] test commands::info::tests::suggest_with_query_lists_matches ... ok
[INFO] [stdout] test commands::files::tests::tree_is_handled ... ok
[INFO] [stdout] test commands::settings::tests::plugin_reload_is_handled ... ok
[INFO] [stdout] test commands::settings::tests::theme_by_number_is_handled ... ok
[INFO] [stdout] test commands::settings::tests::theme_not_found ... ok
[INFO] [stdout] test commands::settings::tests::plugin_unknown_subcommand ... ok
[INFO] [stdout] test commands::settings::tests::theme_list_lists_themes ... ok
[INFO] [stdout] test commands::settings::tests::theme_zero_not_valid ... ok
[INFO] [stdout] test commands::settings::tests::unrecognised_returns_false ... ok
[INFO] [stdout] test commands::settings::tests::usage_is_handled ... ok
[INFO] [stdout] test commands::settings::tests::theme_out_of_bounds_number ... ok
[INFO] [stdout] test commands::settings::tests::plugins_plural_is_handled ... ok
[INFO] [stdout] test commands::settings::tests::theme_bare_lists_themes ... ok
[INFO] [stdout] test commands::settings::tests::theme_list_is_recognized ... ok
[INFO] [stdout] test commands::shell::tests::diff_command_recognized ... ok
[INFO] [stdout] test commands::shell::tests::git_dangerous_command_blocked ... ok
[INFO] [stdout] test commands::shell::tests::git_command_recognized ... ok
[INFO] [stdout] test ai::openai::tests::top_p_at_boundaries ... ok
[INFO] [stdout] test commands::shell::tests::pipe_dangerous_command_blocked ... ok
[INFO] [stdout] test commands::shell::tests::pipe_empty_shows_usage ... ok
[INFO] [stdout] test commands::shell::tests::git_log_with_count ... ok
[INFO] [stdout] test commands::shell::tests::git_defaults_to_status ... ok
[INFO] [stdout] test commands::shell::tests::run_dangerous_command_blocked ... ok
[INFO] [stdout] test commands::shell::tests::run_empty_shows_usage ... ok
[INFO] [stdout] test commands::shell::tests::search_empty_shows_usage ... ok
[INFO] [stdout] test commands::shell::tests::pipe_command_recognized ... ok
[INFO] [stdout] test commands::shell::tests::run_bang_shorthand ... ok
[INFO] [stdout] test commands::shell::tests::unrecognized_command_returns_false ... ok
[INFO] [stdout] test commands::shell::tests::web_empty_shows_usage ... ok
[INFO] [stdout] test commands::tests::alias_expansion_works ... ok
[INFO] [stdout] test commands::tests::alias_with_args_appended ... ok
[INFO] [stdout] test commands::tests::dispatches_to_ai_handler ... ok
[INFO] [stdout] test commands::tests::dispatches_to_chat_handler ... ok
[INFO] [stdout] test commands::shell::tests::run_command_recognized ... ok
[INFO] [stdout] test commands::tests::dispatches_to_info_handler ... ok
[INFO] [stdout] test commands::tests::dispatches_to_settings_handler ... ok
[INFO] [stdout] test commands::shell::tests::search_with_pattern_recognized ... ok
[INFO] [stdout] test commands::tests::empty_input_returns_false ... ok
[INFO] [stdout] test commands::tests::plain_text_returns_false ... ok
[INFO] [stdout] test commands::tests::unrecognized_command_returns_false ... ok
[INFO] [stdout] test commands::tests::whitespace_trimmed ... ok
[INFO] [stdout] test config::tests::commented_toml_is_valid_toml_after_stripping_comments ... ok
[INFO] [stdout] test config::tests::config_commented_toml_valid_after_stripping_comments ... ok
[INFO] [stdout] test config::tests::config_default_command_timeout ... ok
[INFO] [stdout] test config::tests::config_default_git_fields_none ... ok
[INFO] [stdout] test config::tests::config_default_has_keybinds ... ok
[INFO] [stdout] test config::tests::config_default_has_providers ... ok
[INFO] [stdout] test config::tests::config_default_has_retry ... ok
[INFO] [stdout] test config::tests::config_default_has_theme ... ok
[INFO] [stdout] test config::tests::config_default_model ... ok
[INFO] [stdout] test config::tests::config_default_new_fields_are_none ... ok
[INFO] [stdout] test config::tests::config_default_provider ... ok
[INFO] [stdout] test commands::tests::dispatches_to_git_handler ... ok
[INFO] [stdout] test config::tests::config_dir_creates_on_save ... ok
[INFO] [stdout] test config::tests::config_dir_ends_with_nerve ... ok
[INFO] [stdout] test config::tests::config_dir_is_not_empty ... ok
[INFO] [stdout] test config::tests::config_load_missing_new_fields_defaults_to_none ... ok
[INFO] [stdout] test config::tests::config_load_with_completely_invalid_toml ... ok
[INFO] [stdout] test config::tests::config_load_with_empty_string ... ok
[INFO] [stdout] test commands::tests::dispatches_to_shell_handler ... ok
[INFO] [stdout] test config::tests::config_missing_timeout_gets_default ... ok
[INFO] [stdout] test config::tests::config_load_with_missing_fields_uses_defaults ... ok
[INFO] [stdout] test config::tests::config_parse_custom_timeout ... ok
[INFO] [stdout] test config::tests::config_parse_timeout_zero ... ok
[INFO] [stdout] test config::tests::config_parse_with_git_fields ... ok
[INFO] [stdout] test config::tests::config_roundtrip_context_limit ... ok
[INFO] [stdout] test config::tests::config_roundtrip_git_fields_none ... ok
[INFO] [stdout] test config::tests::config_parse_without_git_fields ... ok
[INFO] [stdout] test config::tests::config_roundtrip_preserves_providers ... ok
[INFO] [stdout] test config::tests::config_roundtrip_top_p ... ok
[INFO] [stdout] test config::tests::config_roundtrip_temperature ... ok
[INFO] [stdout] test config::tests::config_roundtrip_with_custom_provider ... ok
[INFO] [stdout] test config::tests::config_roundtrip_with_custom_values ... ok
[INFO] [stdout] test config::tests::config_roundtrip_with_git_fields ... ok
[INFO] [stdout] test config::tests::config_timeout_roundtrip ... ok
[INFO] [stdout] test config::tests::custom_provider_config_roundtrip ... ok
[INFO] [stdout] test config::tests::config_toml_roundtrip ... ok
[INFO] [stdout] test config::tests::config_toml_pretty_roundtrip ... ok
[INFO] [stdout] test config::tests::deserialize_minimal_toml ... ok
[INFO] [stdout] test config::tests::exactly_ten_theme_presets ... ok
[INFO] [stdout] test config::tests::keybinds_copy_last ... ok
[INFO] [stdout] test config::tests::keybinds_command_bar ... ok
[INFO] [stdout] test config::tests::keybinds_help ... ok
[INFO] [stdout] test config::tests::keybinds_model_select ... ok
[INFO] [stdout] test config::tests::keybinds_new_conversation ... ok
[INFO] [stdout] test config::tests::keybinds_prompt_picker ... ok
[INFO] [stdout] test config::tests::keybinds_quit ... ok
[INFO] [stdout] test config::tests::keybinds_roundtrip ... ok
[INFO] [stdout] test config::tests::providers_custom_empty_by_default ... ok
[INFO] [stdout] test config::tests::providers_ollama_enabled_by_default ... ok
[INFO] [stdout] test config::tests::providers_openai_disabled_by_default ... ok
[INFO] [stdout] test config::tests::providers_openrouter_disabled_by_default ... ok
[INFO] [stdout] test config::tests::theme_colors_are_valid_hex ... ok
[INFO] [stdout] test config::tests::theme_default_accent_color ... ok
[INFO] [stdout] test config::tests::theme_default_assistant_color ... ok
[INFO] [stdout] test config::tests::theme_default_border_color ... ok
[INFO] [stdout] test config::tests::theme_default_user_color ... ok
[INFO] [stdout] test config::tests::providers_claude_code_enabled ... ok
[INFO] [stdout] test config::tests::theme_presets_all_different ... ok
[INFO] [stdout] test config::tests::theme_presets_not_empty ... ok
[INFO] [stdout] test config::tests::theme_presets_all_have_names ... ok
[INFO] [stdout] test config::tests::theme_presets_unique_names ... ok
[INFO] [stdout] test config::tests::theme_presets_colors_are_hex ... ok
[INFO] [stdout] test config::tests::to_commented_toml_contains_config_values ... ok
[INFO] [stdout] test config::tests::theme_roundtrip ... ok
[INFO] [stdout] test config::tests::to_commented_toml_contains_header ... ok
[INFO] [stdout] test config::tests::to_commented_toml_contains_documentation_sections ... ok
[INFO] [stdout] test config::tests::to_commented_toml_contains_section_headers ... ok
[INFO] [stdout] test config::tests::to_commented_toml_starts_with_comment ... ok
[INFO] [stdout] test config::tests::to_commented_toml_mentions_paths ... ok
[INFO] [stdout] test daemon::tests::is_daemon_running_false_when_no_socket ... ok
[INFO] [stdout] test daemon::tests::socket_path_has_sock_extension ... ok
[INFO] [stdout] test daemon::tests::socket_path_is_absolute ... ok
[INFO] [stdout] test daemon::tests::socket_path_is_in_tmp ... ok
[INFO] [stdout] test daemon::tests::socket_path_is_in_tmp_directory ... ok
[INFO] [stdout] test daemon::tests::stop_daemon_no_panic_when_not_running ... ok
[INFO] [stdout] test files::tests::detect_language_comprehensive ... ok
[INFO] [stdout] test files::tests::detect_language_config_files ... ok
[INFO] [stdout] test files::tests::detect_language_cpp_variants ... ok
[INFO] [stdout] test files::tests::detect_language_dockerfile ... ok
[INFO] [stdout] test files::tests::detect_language_python ... ok
[INFO] [stdout] test files::tests::detect_language_rust ... ok
[INFO] [stdout] test files::tests::detect_language_typescript ... ok
[INFO] [stdout] test files::tests::detect_language_unknown ... ok
[INFO] [stdout] test files::tests::detect_language_shell ... ok
[INFO] [stdout] test files::tests::expand_file_references_at_sign_not_a_path ... ok
[INFO] [stdout] test files::tests::detect_language_various ... ok
[INFO] [stdout] test files::tests::expand_file_references_multiple_files ... ok
[INFO] [stdout] test files::tests::expand_file_references_multiple_real ... ok
[INFO] [stdout] test files::tests::expand_file_references_no_references ... ok
[INFO] [stdout] test files::tests::expand_file_references_preserves_nonfile_at ... ok
[INFO] [stdout] test files::tests::expand_file_references_nonexistent_file ... ok
[INFO] [stdout] test files::tests::format_file_context_code_stress ... ok
[INFO] [stdout] test files::tests::format_file_for_context_directory ... ok
[INFO] [stdout] test files::tests::format_size_boundaries ... ok
[INFO] [stdout] test files::tests::format_size_bytes ... ok
[INFO] [stdout] test files::tests::format_size_kilobytes ... ok
[INFO] [stdout] test files::tests::format_size_megabytes ... ok
[INFO] [stdout] test files::tests::read_dev_null_blocked ... ok
[INFO] [stdout] test files::tests::read_dev_random_blocked ... ok
[INFO] [stdout] test files::tests::read_dev_zero_blocked ... ok
[INFO] [stdout] test files::tests::read_file_context_cargo_toml ... ok
[INFO] [stdout] test files::tests::read_file_context_directory ... ok
[INFO] [stdout] test files::tests::read_file_context_hidden_files_excluded_from_directory ... ok
[INFO] [stdout] test files::tests::read_file_context_not_found ... ok
[INFO] [stdout] test files::tests::read_file_context_success ... ok
[INFO] [stdout] test files::tests::read_file_context_symlink ... ok
[INFO] [stdout] test files::tests::expand_file_references_with_existing_file ... ok
[INFO] [stdout] test files::tests::format_file_for_context_code ... ok
[INFO] [stdout] test files::tests::read_file_range_beyond_end ... ok
[INFO] [stdout] test files::tests::read_file_range_beyond_file ... ok
[INFO] [stdout] test files::tests::read_file_range_single_line ... ok
[INFO] [stdout] test files::tests::read_file_range_single_line_cargo ... ok
[INFO] [stdout] test files::tests::read_file_context_with_spaces_in_path ... ok
[INFO] [stdout] test files::tests::read_file_context_too_large ... ok
[INFO] [stdout] test files::tests::read_file_range_specific_lines ... ok
[INFO] [stdout] test files::tests::read_file_range_start_zero_treated_as_one ... ok
[INFO] [stdout] test files::tests::read_file_with_unicode ... ok
[INFO] [stdout] test files::tests::read_files_context_real_mixed ... ok
[INFO] [stdout] test files::tests::read_files_context_mixed ... ok
[INFO] [stdout] test files::tests::read_nonexistent_file_errors ... ok
[INFO] [stdout] test files::tests::resolve_path_absolute ... ok
[INFO] [stdout] test files::tests::resolve_path_dot_current_dir ... ok
[INFO] [stdout] test files::tests::resolve_path_empty_string ... ok
[INFO] [stdout] test files::tests::read_files_context_with_errors ... ok
[INFO] [stdout] test files::tests::resolve_path_parent_directory ... ok
[INFO] [stdout] test files::tests::resolve_path_with_spaces ... ok
[INFO] [stdout] test files::tests::resolve_path_tilde ... ok
[INFO] [stdout] test history::tests::conversation_path_all_special_chars ... ok
[INFO] [stdout] test history::tests::conversation_path_empty_id_handled ... ok
[INFO] [stdout] test history::tests::conversation_path_normal_id ... ok
[INFO] [stdout] test history::tests::conversation_path_strips_dots ... ok
[INFO] [stdout] test files::tests::resolve_path_relative_becomes_absolute ... ok
[INFO] [stdout] test history::tests::conversation_path_uses_id_directly ... ok
[INFO] [stdout] test history::tests::conversation_path_strips_slashes ... ok
[INFO] [stdout] test history::tests::conversation_path_uuid_preserved ... ok
[INFO] [stdout] test history::tests::conversation_record_preserves_timestamps ... ok
[INFO] [stdout] test history::tests::conversation_record_with_empty_messages ... ok
[INFO] [stdout] test history::tests::conversation_record_provider_defaults_to_empty ... ok
[INFO] [stdout] test history::tests::conversation_record_serialization_roundtrip ... ok
[INFO] [stdout] test history::tests::conversation_record_with_many_messages ... ok
[INFO] [stdout] test history::tests::delete_conversation_removes_file_from_disk ... ok
[INFO] [stdout] test history::tests::corrupted_json_skipped_in_list_conversations ... ok
[INFO] [stdout] test history::tests::delete_conversation_removes_file ... ok
[INFO] [stdout] test history::tests::delete_idempotent ... ok
[INFO] [stdout] test history::tests::delete_missing_conversation_is_ok ... ok
[INFO] [stdout] test history::tests::empty_history_dir_returns_empty_vec ... ok
[INFO] [stdout] test history::tests::history_record_with_unicode_title_and_content ... ok
[INFO] [stdout] test history::tests::list_conversations_ignores_non_json_files ... ok
[INFO] [stdout] test history::tests::load_missing_conversation_returns_error ... ok
[INFO] [stdout] test history::tests::list_conversations_includes_saved ... ok
[INFO] [stdout] test history::tests::message_record_roles ... ok
[INFO] [stdout] test history::tests::list_conversations_sorted_by_date_descending ... ok
[INFO] [stdout] test history::tests::load_nonexistent_fails ... ok
[INFO] [stdout] test history::tests::save_and_list_multiple ... ok
[INFO] [stdout] test history::tests::save_load_roundtrip ... ok
[INFO] [stdout] test history::tests::save_load_roundtrip_preserves_all_fields ... ok
[INFO] [stdout] test history::tests::save_multiple_then_list_returns_all ... ok
[INFO] [stdout] test keybinds::tests::case_insensitive ... ok
[INFO] [stdout] test keybinds::tests::empty_string_returns_none ... ok
[INFO] [stdout] test keybinds::tests::nonsense_returns_none ... ok
[INFO] [stdout] test history::tests::message_record_serialization_roundtrip ... ok
[INFO] [stdout] test keybinds::tests::parse_alt_enter ... ok
[INFO] [stdout] test keybinds::tests::parse_ctrl_k ... ok
[INFO] [stdout] test history::tests::save_overwrites_existing_conversation ... ok
[INFO] [stdout] test keybinds::tests::parse_ctrl_shift_p ... ok
[INFO] [stdout] test keybinds::tests::parse_enter ... ok
[INFO] [stdout] test keybinds::tests::parse_esc ... ok
[INFO] [stdout] test keybinds::tests::parse_f1 ... ok
[INFO] [stdout] test keybinds::tests::parse_f12 ... ok
[INFO] [stdout] test keybinds::tests::parse_tab ... ok
[INFO] [stdout] test keybinds::tests::simple_char_key ... ok
[INFO] [stdout] test knowledge::ingest::tests::chunk_empty_text ... ok
[INFO] [stdout] test keybinds::tests::parse_pagedown ... ok
[INFO] [stdout] test keybinds::tests::parse_space ... ok
[INFO] [stdout] test knowledge::ingest::tests::chunk_long_text_multiple_chunks ... ok
[INFO] [stdout] test knowledge::ingest::tests::chunk_overlap_is_correct ... ok
[INFO] [stdout] test knowledge::ingest::tests::chunk_short_text_single_chunk ... ok
[INFO] [stdout] test knowledge::ingest::tests::chunk_single_word ... ok
[INFO] [stdout] test knowledge::ingest::tests::chunk_preserves_all_words ... ok
[INFO] [stdout] test knowledge::ingest::tests::chunk_text_exactly_at_chunk_size_no_overlap ... ok
[INFO] [stdout] test knowledge::ingest::tests::empty_file_skipped ... ok
[INFO] [stdout] test knowledge::ingest::tests::ingest_directory_skips_hidden ... ok
[INFO] [stdout] test knowledge::ingest::tests::ingest_file_word_count_matches ... ok
[INFO] [stdout] test knowledge::ingest::tests::chunk_whitespace_only ... ok
[INFO] [stdout] test knowledge::ingest::tests::supported_extension_accepted ... ok
[INFO] [stdout] test knowledge::search::tests::exact_match_scores_positive ... ok
[INFO] [stdout] test knowledge::search::tests::no_match_scores_zero_or_near_zero ... ok
[INFO] [stdout] test knowledge::search::tests::score_empty_chunk_does_not_panic ... ok
[INFO] [stdout] test knowledge::ingest::tests::unsupported_extension_skipped ... ok
[INFO] [stdout] test knowledge::search::tests::search_empty_kb_returns_empty ... ok
[INFO] [stdout] test knowledge::search::tests::search_empty_query_returns_empty ... ok
[INFO] [stdout] test knowledge::search::tests::search_exact_match_scores_higher_than_fuzzy ... ok
[INFO] [stdout] test knowledge::search::tests::search_finds_matching_chunks ... ok
[INFO] [stdout] test knowledge::search::tests::score_whitespace_only_chunk_does_not_panic ... ok
[INFO] [stdout] test knowledge::search::tests::search_includes_document_title ... ok
[INFO] [stdout] test knowledge::search::tests::search_is_case_insensitive ... ok
[INFO] [stdout] test knowledge::search::tests::search_no_matches_returns_empty ... ok
[INFO] [stdout] test knowledge::search::tests::search_respects_max_results ... ok
[INFO] [stdout] test knowledge::search::tests::search_results_sorted_by_score_descending ... ok
[INFO] [stdout] test knowledge::search::tests::search_single_char_query ... ok
[INFO] [stdout] test knowledge::search::tests::search_with_multiple_query_words ... ok
[INFO] [stdout] test knowledge::search::tests::search_with_punctuation_only_query ... ok
[INFO] [stdout] test knowledge::search::tests::search_with_special_characters ... ok
[INFO] [stdout] test knowledge::search::tests::shorter_focused_chunk_scores_higher ... ok
[INFO] [stdout] test knowledge::store::tests::add_document_increases_counts ... ok
[INFO] [stdout] test knowledge::store::tests::add_document_updates_timestamp ... ok
[INFO] [stdout] test knowledge::store::tests::add_multiple_documents ... ok
[INFO] [stdout] test knowledge::ingest::tests::chunk_very_long_text ... ok
[INFO] [stdout] test knowledge::store::tests::chunk_fields_preserved ... ok
[INFO] [stdout] test knowledge::store::tests::document_fields_preserved ... ok
[INFO] [stdout] test knowledge::store::tests::list_all_empty_directory ... ok
[INFO] [stdout] test knowledge::store::tests::list_all_finds_saved_kbs ... ok
[INFO] [stdout] test knowledge::store::tests::load_corrupt_json_returns_error ... ok
[INFO] [stdout] test knowledge::store::tests::list_all_ignores_non_json_files ... ok
[INFO] [stdout] test knowledge::store::tests::load_nonexistent_returns_error ... ok
[INFO] [stdout] test knowledge::store::tests::new_kb_has_timestamps ... ok
[INFO] [stdout] test knowledge::store::tests::new_kb_is_empty ... ok
[INFO] [stdout] test knowledge::store::tests::remove_document_clears_chunks ... ok
[INFO] [stdout] test knowledge::store::tests::remove_nonexistent_document_is_noop ... ok
[INFO] [stdout] test knowledge::store::tests::remove_nonexistent_document_is_safe ... ok
[INFO] [stdout] test knowledge::store::tests::save_and_load_empty_kb ... ok
[INFO] [stdout] test knowledge::store::tests::save_and_load_preserves_timestamps ... ok
[INFO] [stdout] test knowledge::search::tests::search_large_knowledge_base ... ok
[INFO] [stdout] test knowledge::store::tests::save_and_load_roundtrip ... ok
[INFO] [stdout] test knowledge::store::tests::serialization_roundtrip ... ok
[INFO] [stdout] test knowledge::store::tests::total_words_sums_across_documents ... ok
[INFO] [stdout] test knowledge::store::tests::total_words_with_no_documents ... ok
[INFO] [stdout] test plugins::tests::create_example_plugin_works ... ok
[INFO] [stdout] test knowledge::store::tests::save_overwrites_existing ... ok
[INFO] [stdout] test plugins::tests::example_plugin_manifest_is_valid ... ok
[INFO] [stdout] test plugins::tests::load_from_empty_dir_returns_empty ... ok
[INFO] [stdout] test plugins::tests::list_all_plugins_includes_example ... ok
[INFO] [stdout] test plugins::tests::manifest_missing_required_field_fails ... ok
[INFO] [stdout] test plugins::tests::manifest_without_author ... ok
[INFO] [stdout] test plugins::tests::manifest_with_author ... ok
[INFO] [stdout] test plugins::tests::parse_manifest_disabled ... ok
[INFO] [stdout] test plugins::tests::parse_manifest ... ok
[INFO] [stdout] test plugins::tests::plugins_dir_ends_with_plugins ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_256_color ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_bare_escape_at_eof ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_empty_input ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_incomplete_osc_at_eof ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_incomplete_csi_at_eof ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_mixed_sequences ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_osc_title_bel ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_osc_title_st ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_plain_text_unchanged ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_preserves_newlines_and_tabs ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_removes_color_codes ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_removes_bold_underline ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_removes_cursor_movement ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_removes_control_chars ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_ss2_ss3_sequences ... ok
[INFO] [stdout] test plugins::tests::strip_ansi_truecolor ... ok
[INFO] [stdout] test prompts::builtin::tests::builtin_prompts_not_empty ... ok
[INFO] [stdout] test prompts::builtin::tests::each_category_has_minimum_prompts ... ok
[INFO] [stdout] test prompts::builtin::tests::expected_categories_exist ... ok
[INFO] [stdout] test prompts::builtin::tests::all_prompts_have_required_fields ... ok
[INFO] [stdout] test prompts::custom::tests::prompt_filename_collapses_whitespace ... ok
[INFO] [stdout] test prompts::custom::tests::prompt_filename_empty_name ... ok
[INFO] [stdout] test prompts::custom::tests::prompt_filename_lowercases ... ok
[INFO] [stdout] test prompts::custom::tests::prompt_filename_preserves_hyphens ... ok
[INFO] [stdout] test prompts::builtin::tests::no_duplicate_names ... ok
[INFO] [stdout] test prompts::custom::tests::prompt_filename_sanitizes ... ok
[INFO] [stdout] test prompts::custom::tests::prompt_filename_special_chars_only ... ok
[INFO] [stdout] test prompts::custom::tests::prompt_filename_strips_special_chars ... ok
[INFO] [stdout] test prompts::custom::tests::smartprompt_empty_tags_roundtrip ... ok
[INFO] [stdout] test prompts::custom::tests::smartprompt_toml_roundtrip ... ok
[INFO] [stdout] test prompts::custom::tests::smartprompt_with_multiline_template ... ok
[INFO] [stdout] test knowledge::store::tests::total_chunks_sums_correctly ... ok
[INFO] [stdout] test prompts::search::tests::suggest_no_match_returns_empty ... ok
[INFO] [stdout] test prompts::search::tests::suggest_category_boost_via_description ... ok
[INFO] [stdout] test prompts::search::tests::suggest_returns_empty_for_empty_query ... ok
[INFO] [stdout] test prompts::search::tests::suggest_respects_top_k ... ok
[INFO] [stdout] test prompts::search::tests::tokenize_drops_single_chars_and_punctuation ... ok
[INFO] [stdout] test prompts::search::tests::tokenize_lowercases ... ok
[INFO] [stdout] test prompts::tests::all_prompts_includes_at_least_builtins ... ok
[INFO] [stdout] test prompts::tests::categories_has_no_duplicates ... ok
[INFO] [stdout] test prompts::tests::categories_includes_all_expected ... ok
[INFO] [stdout] test prompts::tests::categories_returns_sorted_unique ... ok
[INFO] [stdout] test scaffold::tests::all_templates_have_entry_point ... ok
[INFO] [stdout] test prompts::search::tests::suggest_scores_are_descending ... ok
[INFO] [stdout] test scaffold::tests::all_templates_have_project_file ... ok
[INFO] [stdout] test scaffold::tests::all_templates_have_readme ... ok
[INFO] [stdout] test scaffold::tests::all_templates_have_required_fields ... ok
[INFO] [stdout] test scaffold::tests::all_templates_have_gitignore ... ok
[INFO] [stdout] test scaffold::tests::builtin_templates_not_empty ... ok
[INFO] [stdout] test scaffold::tests::exactly_eight_templates ... ok
[INFO] [stdout] test scaffold::tests::go_api_template_has_go_mod ... ok
[INFO] [stdout] test scaffold::tests::list_templates_returns_info ... ok
[INFO] [stdout] test scaffold::tests::node_api_template_has_express ... ok
[INFO] [stdout] test scaffold::tests::node_react_template_has_vite_config ... ok
[INFO] [stdout] test scaffold::tests::get_template_by_name ... ok
[INFO] [stdout] test scaffold::tests::python_api_template_has_fastapi ... ok
[INFO] [stdout] test scaffold::tests::rust_cli_template_has_clap ... ok
[INFO] [stdout] test scaffold::tests::python_cli_template_has_pyproject ... ok
[INFO] [stdout] test scaffold::tests::rust_lib_template_has_lib_rs ... ok
[INFO] [stdout] test scaffold::tests::rust_web_template_has_axum ... ok
[INFO] [stdout] test scaffold::tests::templates_no_duplicate_files ... ok
[INFO] [stdout] test scaffold::tests::templates_have_placeholder ... ok
[INFO] [stdout] test scaffold::tests::write_template_creates_files ... ok
[INFO] [stdout] test scaffold::tests::write_template_replaces_placeholders ... ok
[INFO] [stdout] test scraper::search::tests::format_with_results ... ok
[INFO] [stdout] test scraper::search::tests::format_empty_results ... ok
[INFO] [stdout] test scraper::search::tests::split_title_with_dash ... ok
[INFO] [stdout] test scraper::search::tests::split_title_no_dash ... ok
[INFO] [stdout] test scraper::search::tests::truncate_long ... ok
[INFO] [stdout] test scraper::search::tests::truncate_short ... ok
[INFO] [stdout] test scraper::web::tests::allows_public_172_outside_private ... ok
[INFO] [stdout] test scraper::web::tests::allows_public_ipv6 ... ok
[INFO] [stdout] test scraper::web::tests::allows_public_url ... ok
[INFO] [stdout] test scraper::web::tests::allows_regular_domain ... ok
[INFO] [stdout] test scraper::web::tests::blocks_cgn_range ... ok
[INFO] [stdout] test scraper::web::tests::blocks_data_scheme ... ok
[INFO] [stdout] test scraper::web::tests::blocks_dot_internal_domain ... ok
[INFO] [stdout] test scraper::web::tests::blocks_dot_local_domain ... ok
[INFO] [stdout] test scraper::web::tests::blocks_dot_localhost_domain ... ok
[INFO] [stdout] test scraper::web::tests::blocks_file_scheme ... ok
[INFO] [stdout] test scraper::web::tests::blocks_ftp_scheme ... ok
[INFO] [stdout] test scraper::web::tests::blocks_invalid_url ... ok
[INFO] [stdout] test scraper::web::tests::blocks_ipv4_compatible_ipv6_loopback ... ok
[INFO] [stdout] test prompts::search::tests::suggest_prefers_exact_name_match ... ok
[INFO] [stdout] test scraper::web::tests::blocks_ipv4_compatible_ipv6_private ... ok
[INFO] [stdout] test scraper::web::tests::allows_public_ip ... ok
[INFO] [stdout] test scraper::web::tests::blocks_ipv4_mapped_ipv6_loopback ... ok
[INFO] [stdout] test scraper::web::tests::blocks_ipv4_mapped_ipv6_private_192 ... ok
[INFO] [stdout] test scraper::web::tests::blocks_ipv6_link_local ... ok
[INFO] [stdout] test scraper::web::tests::blocks_ipv4_mapped_ipv6_private ... ok
[INFO] [stdout] test scraper::web::tests::blocks_ipv6_loopback ... ok
[INFO] [stdout] test scraper::web::tests::blocks_ipv6_multicast ... ok
[INFO] [stdout] test scraper::web::tests::blocks_ipv6_loopback_with_port ... ok
[INFO] [stdout] test scraper::web::tests::blocks_ipv6_ula ... ok
[INFO] [stdout] test scraper::web::tests::blocks_ipv6_unspecified ... ok
[INFO] [stdout] test scraper::web::tests::blocks_link_local_169 ... ok
[INFO] [stdout] test scraper::web::tests::blocks_localhost ... ok
[INFO] [stdout] test scraper::web::tests::blocks_loopback_ip ... ok
[INFO] [stdout] test scraper::web::tests::blocks_no_scheme ... ok
[INFO] [stdout] test scraper::web::tests::blocks_private_192 ... ok
[INFO] [stdout] test scraper::web::tests::blocks_private_10 ... ok
[INFO] [stdout] test scraper::web::tests::blocks_private_172 ... ok
[INFO] [stdout] test scraper::web::tests::blocks_private_range_boundaries ... ok
[INFO] [stdout] test scraper::web::tests::blocks_zero_ip ... ok
[INFO] [stdout] test scraper::web::tests::extract_title_basic ... ok
[INFO] [stdout] test scraper::web::tests::extract_title_case_insensitive ... ok
[INFO] [stdout] test scraper::web::tests::extract_title_empty ... ok
[INFO] [stdout] test scraper::web::tests::extract_title_no_title_tag ... ok
[INFO] [stdout] test scraper::web::tests::extract_title_whitespace_only ... ok
[INFO] [stdout] test scraper::web::tests::extract_title_with_attributes ... ok
[INFO] [stdout] test scraper::web::tests::extract_title_with_cjk_before_title ... ok
[INFO] [stdout] test scraper::web::tests::extract_title_with_emoji_before_title ... ok
[INFO] [stdout] test scraper::web::tests::extract_title_with_html_entities ... ok
[INFO] [stdout] test scraper::web::tests::extract_title_with_non_ascii_before_title ... ok
[INFO] [stdout] test scraper::web::tests::skip_to_closing_tag_malformed_no_gt ... ok
[INFO] [stdout] test scraper::web::tests::strip_html_nested_tags ... ok
[INFO] [stdout] test scraper::web::tests::strip_html_empty_input ... ok
[INFO] [stdout] test scraper::web::tests::strip_html_plain_text ... ok
[INFO] [stdout] test scraper::web::tests::strip_html_removes_script_blocks ... ok
[INFO] [stdout] test scraper::web::tests::strip_html_removes_style_blocks ... ok
[INFO] [stdout] test scraper::web::tests::strip_html_self_closing_tag ... ok
[INFO] [stdout] test scraper::web::tests::strip_html_unclosed_script_tag ... ok
[INFO] [stdout] test scraper::web::tests::test_collapse_whitespace_multiple_newlines ... ok
[INFO] [stdout] test scraper::web::tests::test_decode_entities ... ok
[INFO] [stdout] test scraper::web::tests::test_empty_input ... ok
[INFO] [stdout] test scraper::web::tests::test_extract_title ... ok
[INFO] [stdout] test scraper::web::tests::test_extract_title_none ... ok
[INFO] [stdout] test scraper::web::tests::test_extract_title_with_entities ... ok
[INFO] [stdout] test scraper::web::tests::test_mixed_content_and_entities ... ok
[INFO] [stdout] test scraper::web::tests::test_nbsp_decoded ... ok
[INFO] [stdout] test scraper::web::tests::test_nested_tags ... ok
[INFO] [stdout] test scraper::web::tests::test_only_tags_no_text ... ok
[INFO] [stdout] test scraper::web::tests::test_collapse_whitespace_multiple_spaces ... ok
[INFO] [stdout] test scraper::web::tests::test_self_closing_tags ... ok
[INFO] [stdout] test scraper::web::tests::test_strip_html_basic ... ok
[INFO] [stdout] test scraper::web::tests::test_strip_script_blocks ... ok
[INFO] [stdout] test scraper::web::tests::test_style_block_stripped ... ok
[INFO] [stdout] test scraper::web::tests::test_truncate_words ... ok
[INFO] [stdout] test scraper::web::tests::test_truncate_words_exact_boundary ... ok
[INFO] [stdout] test scraper::web::tests::truncate_words_at_limit ... ok
[INFO] [stdout] test scraper::web::tests::truncate_words_under_limit ... ok
[INFO] [stdout] test session::tests::delete_session_removes_named_copy ... ok
[INFO] [stdout] test session::tests::list_sessions_doesnt_panic ... ok
[INFO] [stdout] test session::tests::list_sessions_skips_last_session_file ... ok
[INFO] [stdout] test scraper::web::tests::truncate_words_empty ... ok
[INFO] [stdout] test session::tests::load_corrupted_json_returns_err ... ok
[INFO] [stdout] test session::tests::load_missing_file_returns_err ... ok
[INFO] [stdout] test session::tests::restore_clamps_active_conversation ... ok
[INFO] [stdout] test session::tests::restore_empty_session_creates_default_conversation ... ok
[INFO] [stdout] test session::tests::restore_overwrites_existing_conversations ... ok
[INFO] [stdout] test session::tests::load_partial_json_returns_err ... ok
[INFO] [stdout] test session::tests::restore_session_preserves_agent_and_code_mode ... ok
[INFO] [stdout] test session::tests::restore_session_to_app_works ... ok
[INFO] [stdout] test session::tests::restore_session_resets_scroll_offset ... ok
[INFO] [stdout] test session::tests::save_load_roundtrip_all_fields ... ok
[INFO] [stdout] test session::tests::save_and_load_session ... ok
[INFO] [stdout] test session::tests::session_conversation_preserves_created_at ... ok
[INFO] [stdout] test session::tests::session_from_app_captures_all_state ... ok
[INFO] [stdout] test session::tests::save_session_creates_both_files ... ok
[INFO] [stdout] test session::tests::session_from_app_captures_conversation_ids ... ok
[INFO] [stdout] test session::tests::session_from_app_generates_unique_ids ... ok
[INFO] [stdout] test session::tests::session_serialization_roundtrip ... ok
[INFO] [stdout] test session::tests::session_with_empty_messages ... ok
[INFO] [stdout] test session::tests::session_with_multiple_conversations ... ok
[INFO] [stdout] test session::tests::session_save_load_preserves_messages ... ok
[INFO] [stdout] test shell::tests::allows_safe_commands ... ok
[INFO] [stdout] test shell::tests::blocks_chpasswd ... ok
[INFO] [stdout] test shell::tests::blocks_curl_pipe_python ... ok
[INFO] [stdout] test shell::tests::blocks_curl_pipe_ruby ... ok
[INFO] [stdout] test session::tests::session_with_unicode_content ... ok
[INFO] [stdout] test shell::tests::blocks_curl_pipe_zsh ... ok
[INFO] [stdout] test shell::tests::blocks_halt ... ok
[INFO] [stdout] test shell::tests::blocks_poweroff ... ok
[INFO] [stdout] test shell::tests::blocks_shred ... ok
[INFO] [stdout] test shell::tests::blocks_systemctl_poweroff ... ok
[INFO] [stdout] test shell::tests::blocks_systemctl_reboot ... ok
[INFO] [stdout] test shell::tests::blocks_wget_pipe_perl ... ok
[INFO] [stdout] test shell::tests::dangerous_chmod_recursive ... ok
[INFO] [stdout] test shell::tests::dangerous_command_case_insensitive ... ok
[INFO] [stdout] test shell::tests::dangerous_commands_blocked ... ok
[INFO] [stdout] test shell::tests::dangerous_curl_dash_pipe ... ok
[INFO] [stdout] test shell::tests::dangerous_curl_perl_pipe ... ok
[INFO] [stdout] test shell::tests::dangerous_curl_ksh_pipe ... ok
[INFO] [stdout] test shell::tests::dangerous_curl_pipe_sh ... ok
[INFO] [stdout] test shell::tests::dangerous_dd_dev ... ok
[INFO] [stdout] test shell::tests::dangerous_device_redirect ... ok
[INFO] [stdout] test shell::tests::dangerous_eval ... ok
[INFO] [stdout] test shell::tests::dangerous_fork_bomb ... ok
[INFO] [stdout] test shell::tests::dangerous_init_6 ... ok
[INFO] [stdout] test shell::tests::dangerous_mkfs ... ok
[INFO] [stdout] test shell::tests::dangerous_rm_rf_root ... ok
[INFO] [stdout] test shell::tests::dangerous_wget_pipe ... ok
[INFO] [stdout] test shell::tests::dangerous_wget_pipe_bash ... ok
[INFO] [stdout] test shell::tests::dangerous_wget_python_pipe ... ok
[INFO] [stdout] test shell::tests::dangerous_wget_zsh_pipe ... ok
[INFO] [stdout] test shell::tests::dangerous_wipe_command ... ok
[INFO] [stdout] test shell::tests::dangerous_write_to_etc ... ok
[INFO] [stdout] test shell::tests::detect_build_command_for_rust ... ok
[INFO] [stdout] test shell::tests::detect_format_in_rust_project ... ok
[INFO] [stdout] test shell::tests::detect_lint_in_rust_project ... ok
[INFO] [stdout] test shell::tests::detect_test_command_for_rust ... ok
[INFO] [stdout] test shell::tests::detect_test_command_stress ... ok
[INFO] [stdout] test shell::tests::escape_ampersand ... ok
[INFO] [stdout] test shell::tests::escape_backslash ... ok
[INFO] [stdout] test shell::tests::escape_carriage_return ... ok
[INFO] [stdout] test shell::tests::escape_mixed_special_characters ... ok
[INFO] [stdout] test shell::tests::escape_pipe ... ok
[INFO] [stdout] test shell::tests::escape_semicolon ... ok
[INFO] [stdout] test shell::tests::escape_tab_character ... ok
[INFO] [stdout] test shell::tests::format_command_output_shows_stderr ... ok
[INFO] [stdout] test shell::tests::format_context_shows_status ... ok
[INFO] [stdout] test shell::tests::format_context_wraps_in_code_block ... ok
[INFO] [stdout] test shell::tests::format_output_includes_command ... ok
[INFO] [stdout] test shell::tests::mask_api_key_various_lengths ... ok
[INFO] [stdout] test shell::tests::mask_api_key_works ... ok
[INFO] [stdout] test shell::tests::matches_command_different ... ok
[INFO] [stdout] test shell::tests::matches_command_empty_input ... ok
[INFO] [stdout] test shell::tests::matches_command_exact ... ok
[INFO] [stdout] test shell::tests::matches_command_just_slash ... ok
[INFO] [stdout] test shell::tests::matches_command_multiple_spaces ... ok
[INFO] [stdout] test shell::tests::matches_command_prefix_no_space ... ok
[INFO] [stdout] test shell::tests::matches_command_with_args ... ok
[INFO] [stdout] test shell::tests::non_sensitive_files_allowed ... ok
[INFO] [stdout] test shell::tests::not_protected_home ... ok
[INFO] [stdout] test shell::tests::not_protected_home_dir ... ok
[INFO] [stdout] test shell::tests::not_protected_tmp ... ok
[INFO] [stdout] test shell::tests::not_protected_tmp_dir ... ok
[INFO] [stdout] test shell::tests::not_sensitive_readme ... ok
[INFO] [stdout] test shell::tests::not_sensitive_regular_files ... ok
[INFO] [stdout] test shell::tests::not_sensitive_source_file ... ok
[INFO] [stdout] test shell::tests::protected_dev ... ok
[INFO] [stdout] test shell::tests::protected_etc ... ok
[INFO] [stdout] test shell::tests::protected_path_bare_etc ... ok
[INFO] [stdout] test shell::tests::protected_path_bare_usr ... ok
[INFO] [stdout] test shell::tests::protected_path_dev ... ok
[INFO] [stdout] test shell::tests::protected_path_etc_with_trailing_slash ... ok
[INFO] [stdout] test shell::tests::protected_path_proc ... ok
[INFO] [stdout] test shell::tests::protected_path_proc_sys ... ok
[INFO] [stdout] test shell::tests::protected_path_root ... ok
[INFO] [stdout] test shell::tests::protected_path_sys ... ok
[INFO] [stdout] test shell::tests::protected_path_usr_bin ... ok
[INFO] [stdout] test shell::tests::protected_path_with_backslash ... ok
[INFO] [stdout] test shell::tests::protected_paths_blocked ... ok
[INFO] [stdout] test shell::tests::protected_usr ... ok
[INFO] [stdout] test shell::tests::relative_path_not_protected ... ok
[INFO] [stdout] test shell::tests::root_path_not_protected ... ok
[INFO] [stdout] test shell::tests::long_output_is_truncated ... ok
[INFO] [stdout] test shell::tests::run_command_captures_stderr ... ok
[INFO] [stdout] test shell::tests::run_command_exit_code ... ok
[INFO] [stdout] test commands::shell::tests::format_command_recognized ... ok
[INFO] [stdout] test shell::tests::run_command_populates_elapsed ... ok
[INFO] [stdout] test shell::tests::run_command_with_unicode ... ok
[INFO] [stdout] test shell::tests::run_empty_command ... ok
[INFO] [stdout] test shell::tests::run_failing_command ... ok
[INFO] [stdout] test shell::tests::safe_cargo_build ... ok
[INFO] [stdout] test shell::tests::safe_commands_not_blocked ... ok
[INFO] [stdout] test shell::tests::safe_common_dev_commands ... ok
[INFO] [stdout] test shell::tests::safe_echo_not_dangerous ... ok
[INFO] [stdout] test shell::tests::safe_ls_not_dangerous ... ok
[INFO] [stdout] test shell::tests::safe_paths ... ok
[INFO] [stdout] test shell::tests::sensitive_aws_creds ... ok
[INFO] [stdout] test shell::tests::run_echo ... ok
[INFO] [stdout] test shell::tests::sensitive_env_development ... ok
[INFO] [stdout] test shell::tests::sensitive_env_local ... ok
[INFO] [stdout] test shell::tests::sensitive_env_staging ... ok
[INFO] [stdout] test shell::tests::sensitive_files_blocked ... ok
[INFO] [stdout] test shell::tests::sensitive_dotenv ... ok
[INFO] [stdout] test shell::tests::sensitive_netrc ... ok
[INFO] [stdout] test shell::tests::sensitive_gnupg_directory ... ok
[INFO] [stdout] test shell::tests::sensitive_pgpass ... ok
[INFO] [stdout] test shell::tests::sensitive_ssh_directory ... ok
[INFO] [stdout] test shell::tests::sensitive_ssh_key ... ok
[INFO] [stdout] test shell::tests::shell_escape_backtick ... ok
[INFO] [stdout] test shell::tests::shell_escape_control_chars ... ok
[INFO] [stdout] test shell::tests::shell_escape_dollar ... ok
[INFO] [stdout] test shell::tests::shell_escape_dollar_backtick ... ok
[INFO] [stdout] test shell::tests::shell_escape_empty ... ok
[INFO] [stdout] test shell::tests::shell_escape_newline ... ok
[INFO] [stdout] test shell::tests::run_command_with_pipe ... ok
[INFO] [stdout] test shell::tests::shell_escape_plain ... ok
[INFO] [stdout] test shell::tests::shell_escape_spaces ... ok
[INFO] [stdout] test shell::tests::shell_escape_newlines ... ok
[INFO] [stdout] test shell::tests::shell_escape_unicode_emoji ... ok
[INFO] [stdout] test shell::tests::shell_escape_with_quotes ... ok
[INFO] [stdout] test shell::tests::shell_escape_multiple_quotes ... ok
[INFO] [stdout] test shell::tests::short_output_not_truncated ... ok
[INFO] [stdout] test shell::tests::timeout_format_output_shows_timeout ... ok
[INFO] [stdout] test scraper::web::tests::test_very_long_input ... ok
[INFO] [stdout] test shell::tests::timeout_captures_stderr ... ok
[INFO] [stdout] test commands::shell::tests::lint_command_recognized ... ok
[INFO] [stdout] test shell::tests::timeout_large_value ... ok
[INFO] [stdout] test commands::shell::tests::fmt_alias_recognized ... ok
[INFO] [stdout] test shell::tests::timeout_normal_completion ... ok
[INFO] [stdout] test shell::tests::truncate_empty_string ... ok
[INFO] [stdout] test shell::tests::truncate_output_exact_boundary ... ok
[INFO] [stdout] test shell::tests::timeout_result_has_elapsed ... ok
[INFO] [stdout] test shell::tests::truncate_single_line_no_newline ... ok
[INFO] [stdout] test shell::tests::truncate_single_newline ... ok
[INFO] [stdout] test shell::tests::unprotected_paths_allowed ... ok
[INFO] [stdout] test tests::accept_autocomplete_directory_keeps_browsing ... ok
[INFO] [stdout] test tests::accept_autocomplete_file_adds_space ... ok
[INFO] [stdout] test tests::advance_pipeline_is_noop_when_no_pipeline ... ok
[INFO] [stdout] test tests::advance_pipeline_moves_planning_to_coding_and_kicks_stream ... ok
[INFO] [stdout] test shell::tests::timeout_zero_means_no_timeout ... ok
[INFO] [stdout] test tests::app_with_workspace_context ... ok
[INFO] [stdout] test shell::tests::truncate_long_output ... ok
[INFO] [stdout] test tests::autocomplete_file_paths_includes_descriptions ... ok
[INFO] [stdout] test tests::autocomplete_file_paths_directories_sorted_first ... ok
[INFO] [stdout] test tests::autocomplete_file_paths_max_10 ... ok
[INFO] [stdout] test tests::autocomplete_file_paths_src_dir ... ok
[INFO] [stdout] test tests::branch_and_restore_preserves_conversation ... ok
[INFO] [stdout] test tests::autocomplete_file_paths_empty_returns_cwd_files ... ok
[INFO] [stdout] test tests::builtin_prompts_cached_is_fast ... ok
[INFO] [stdout] test tests::automation_templates_valid ... ok
[INFO] [stdout] test tests::complete_file_path_directory ... ok
[INFO] [stdout] test tests::complete_file_path_exact_file ... ok
[INFO] [stdout] test tests::complete_file_path_nonexistent ... ok
[INFO] [stdout] test tests::complete_file_path_nonexistent_dir ... ok
[INFO] [stdout] test tests::complete_file_path_finds_cargo ... ok
[INFO] [stdout] test tests::complete_file_path_hidden_files_excluded ... ok
[INFO] [stdout] test tests::complete_file_path_src_directory ... ok
[INFO] [stdout] test shell::tests::truncate_output_one_over_boundary ... ok
[INFO] [stdout] test tests::cycle_conversation_back_single_does_nothing ... ok
[INFO] [stdout] test tests::context_manager_with_real_conversation ... ok
[INFO] [stdout] test tests::cycle_conversation_single_does_nothing ... ok
[INFO] [stdout] test tests::cycle_conversation_wraps ... ok
[INFO] [stdout] test tests::cycle_conversation_back_wraps_from_zero ... ok
[INFO] [stdout] test tests::dangerous_dd ... ok
[INFO] [stdout] test tests::cycle_conversation_back_wraps ... ok
[INFO] [stdout] test tests::dangerous_rm_rf_root ... ok
[INFO] [stdout] test tests::delete_last_exchange_preserves_earlier_messages ... ok
[INFO] [stdout] test tests::delete_last_exchange_only_user_message ... ok
[INFO] [stdout] test tests::dangerous_mkfs ... ok
[INFO] [stdout] test tests::delete_last_exchange_single_message ... ok
[INFO] [stdout] test tests::delete_last_exchange_removes_pair ... ok
[INFO] [stdout] test tests::delete_last_exchange_empty_conversation ... ok
[INFO] [stdout] test tests::edit_last_message_loads_input ... ok
[INFO] [stdout] test tests::expand_file_references_preserves_nonfile_at ... ok
[INFO] [stdout] test tests::find_common_prefix_identical ... ok
[INFO] [stdout] test tests::find_common_prefix_partial ... ok
[INFO] [stdout] test tests::edit_last_message_with_only_system_messages ... ok
[INFO] [stdout] test tests::file_context_added_to_conversation ... ok
[INFO] [stdout] test tests::edit_last_message_no_messages ... ok
[INFO] [stdout] test tests::find_common_prefix_strings_empty ... ok
[INFO] [stdout] test tests::find_common_prefix_strings_basic ... ok
[INFO] [stdout] test tests::generate_title_agent_command ... ok
[INFO] [stdout] test tests::generate_title_build_command ... ok
[INFO] [stdout] test tests::generate_title_handles_all_slash_commands ... ok
[INFO] [stdout] test tests::generate_title_multiline_message ... ok
[INFO] [stdout] test tests::generate_title_question ... ok
[INFO] [stdout] test tests::generate_title_scaffold_command ... ok
[INFO] [stdout] test tests::generate_title_short_message ... ok
[INFO] [stdout] test tests::generate_title_slash_command ... ok
[INFO] [stdout] test tests::generate_title_template_command ... ok
[INFO] [stdout] test tests::generate_title_url_command ... ok
[INFO] [stdout] test tests::generate_title_file_with_path ... ok
[INFO] [stdout] test tests::generate_title_with_emoji_does_not_panic ... ok
[INFO] [stdout] test tests::generate_title_long_message ... ok
[INFO] [stdout] test tests::generate_title_empty ... ok
[INFO] [stdout] test tests::generate_title_with_period_at_end ... ok
[INFO] [stdout] test tests::knowledge_base_search_integration ... ok
[INFO] [stdout] test tests::pipeline_caps_iterations_at_max ... ok
[INFO] [stdout] test tests::pipeline_completes_on_rejected_verdict ... ok
[INFO] [stdout] test tests::pipeline_injects_role_specific_system_prompts ... ok
[INFO] [stdout] test tests::generate_title_with_question_mark ... ok
[INFO] [stdout] test tests::pipeline_advances_through_all_three_roles_and_completes ... ok
[INFO] [stdout] test tests::pipeline_completes_on_approved_verdict ... ok
[INFO] [stdout] test tests::provider_help_all_providers ... ok
[INFO] [stdout] test tests::provider_help_claude_mentions_cli ... ok
[INFO] [stdout] test tests::provider_help_copilot_mentions_gh ... ok
[INFO] [stdout] test tests::provider_help_message_known ... ok
[INFO] [stdout] test tests::pipeline_loops_back_to_coding_on_needs_fixes ... ok
[INFO] [stdout] test tests::provider_help_openai_mentions_env_var ... ok
[INFO] [stdout] test tests::regenerate_with_no_assistant_message ... ok
[INFO] [stdout] test tests::pipeline_resets_agent_iterations_between_roles ... ok
[INFO] [stdout] test tests::run_agent_tools_bails_if_receiver_dropped ... ok
[INFO] [stdout] test tests::provider_help_message_unknown ... ok
[INFO] [stdout] test shell::tests::timeout_failing_command ... ok
[INFO] [stdout] test tests::provider_help_ollama_mentions_serve ... ok
[INFO] [stdout] test tests::run_agent_tools_emits_start_done_and_complete_in_order ... ok
[INFO] [stdout] test tests::scaffold_template_files_are_valid ... ok
[INFO] [stdout] test tests::search_no_results_for_nonexistent ... ok
[INFO] [stdout] test tests::safe_commands_pass ... ok
[INFO] [stdout] test tests::search_results_update_on_new_query ... ok
[INFO] [stdout] test tests::set_status_populates_both_fields ... ok
[INFO] [stdout] test tests::session_roundtrip_preserves_everything ... ok
[INFO] [stdout] test tests::test_common_prefix_empty ... ok
[INFO] [stdout] test tests::test_common_prefix_multiple ... ok
[INFO] [stdout] test tests::strip_autocomplete_description_strips_suffix ... ok
[INFO] [stdout] test tests::run_agent_tools_read_only_permits_read_tools ... ok
[INFO] [stdout] test tests::test_common_prefix_none ... ok
[INFO] [stdout] test tests::run_agent_tools_read_only_blocks_write_tools ... ok
[INFO] [stdout] test tests::test_common_prefix_single ... ok
[INFO] [stdout] test tests::test_is_dangerous_command_dangerous ... ok
[INFO] [stdout] test tests::test_is_dangerous_command_dd ... ok
[INFO] [stdout] test tests::test_is_dangerous_curl_pipe_bash ... ok
[INFO] [stdout] test tests::test_is_dangerous_command_chmod_root ... ok
[INFO] [stdout] test tests::test_is_dangerous_command_safe_commands ... ok
[INFO] [stdout] test tests::test_is_dangerous_eval ... ok
[INFO] [stdout] test tests::test_is_dangerous_fork_bomb ... ok
[INFO] [stdout] test tests::test_is_dangerous_system_commands ... ok
[INFO] [stdout] test tests::test_is_dangerous_redirect_to_dev ... ok
[INFO] [stdout] test tests::test_is_dangerous_write_to_etc ... ok
[INFO] [stdout] test tests::test_is_dangerous_sudo_commands ... ok
[INFO] [stdout] test tests::update_search_results_case_insensitive ... ok
[INFO] [stdout] test tests::update_search_results_finds_matches ... ok
[INFO] [stdout] test tests::usage_tracking_with_free_provider ... ok
[INFO] [stdout] test tests::usage_tracking_with_paid_provider ... ok
[INFO] [stdout] test tests::update_search_results_empty_query ... ok
[INFO] [stdout] test ui::chat::tests::format_markdown_line_bullet ... ok
[INFO] [stdout] test ui::chat::tests::format_markdown_line_blockquote ... ok
[INFO] [stdout] test ui::chat::tests::format_markdown_line_header ... ok
[INFO] [stdout] test ui::chat::tests::format_markdown_line_horizontal_rule ... ok
[INFO] [stdout] test ui::chat::tests::format_markdown_line_ordered_list ... ok
[INFO] [stdout] test ui::chat::tests::format_time_ago_just_now ... ok
[INFO] [stdout] test ui::chat::tests::format_time_ago_first_message_in_multi ... ok
[INFO] [stdout] test ui::chat::tests::format_time_ago_last_message_in_multi ... ok
[INFO] [stdout] test ui::chat::tests::format_time_ago_minutes ... ok
[INFO] [stdout] test ui::chat::tests::format_markdown_line_plain_text ... ok
[INFO] [stdout] test ui::chat::tests::highlight_code_unknown_language ... ok
[INFO] [stdout] test ui::chat::tests::parse_assistant_content_plain_text ... ok
[INFO] [stdout] test ui::chat::tests::highlight_code_empty ... ok
[INFO] [stdout] test ui::chat::tests::parse_inline_spans_bold ... ok
[INFO] [stdout] test ui::chat::tests::parse_assistant_content_code_block ... ok
[INFO] [stdout] test ui::chat::tests::highlight_code_detects_rust ... ok
[INFO] [stdout] test ui::chat::tests::parse_inline_spans_inline_code ... ok
[INFO] [stdout] test ui::chat::tests::highlight_code_multiline ... ok
[INFO] [stdout] test ui::chat::tests::parse_assistant_content_unclosed_code_block ... ok
[INFO] [stdout] test ui::chat::tests::parse_inline_spans_plain ... ok
[INFO] [stdout] test ui::chat::tests::parse_inline_spans_unmatched_bold ... ok
[INFO] [stdout] test ui::chat::tests::try_strip_header_h1 ... ok
[INFO] [stdout] test ui::chat::tests::try_strip_header_h6 ... ok
[INFO] [stdout] test ui::chat::tests::try_strip_header_no_space ... ok
[INFO] [stdout] test ui::chat::tests::try_strip_header_not_a_header ... ok
[INFO] [stdout] test ui::chat::tests::try_strip_header_too_many_hashes ... ok
[INFO] [stdout] test ui::chat::tests::parse_inline_spans_empty ... ok
[INFO] [stdout] test ui::clipboard_manager::tests::matched_entry_count_empty_clipboard ... ok
[INFO] [stdout] test ui::chat::tests::parse_inline_spans_link ... ok
[INFO] [stdout] test ui::chat::tests::try_strip_header_h2 ... ok
[INFO] [stdout] test ui::chat::tests::parse_inline_spans_italic ... ok
[INFO] [stdout] test ui::clipboard_manager::tests::matched_entry_count_with_entries ... ok
[INFO] [stdout] test ui::clipboard_manager::tests::matched_entry_count_no_match ... ok
[INFO] [stdout] test ui::clipboard_manager::tests::matched_entry_count_with_filter ... ok
[INFO] [stdout] test ui::command_bar::tests::category_tabs_starts_with_all ... ok
[INFO] [stdout] test ui::command_bar::tests::command_category_tabs_present ... ok
[INFO] [stdout] test ui::command_bar::tests::filtered_prompts_all_category ... ok
[INFO] [stdout] test ui::command_bar::tests::filtered_prompts_no_match ... ok
[INFO] [stdout] test ui::command_bar::tests::matched_prompt_count_empty_query ... ok
[INFO] [stdout] test ui::command_bar::tests::filtered_prompts_specific_category ... ok
[INFO] [stdout] test ui::command_bar::tests::quick_action_prompts_have_action_prefix ... ok
[INFO] [stdout] test ui::command_bar::tests::quick_action_prompts_all_quick_actions_category ... ok
[INFO] [stdout] test ui::command_bar::tests::quick_action_template_detection ... ok
[INFO] [stdout] test ui::command_bar::tests::quick_actions_category_tab_present ... ok
[INFO] [stdout] test ui::command_bar::tests::quick_actions_filter_by_category ... ok
[INFO] [stdout] test ui::command_bar::tests::command_prompts_included_in_results ... ok
[INFO] [stdout] test ui::command_bar::tests::selected_prompt_first_item ... ok
[INFO] [stdout] test ui::command_bar::tests::search_matches_template_content ... ok
[INFO] [stdout] test ui::history_browser::tests::delete_pending_initializes_false ... ok
[INFO] [stdout] test ui::history_browser::tests::filtered_entries_empty_history ... ok
[INFO] [stdout] test ui::history_browser::tests::filtered_entries_filters_by_message_content ... ok
[INFO] [stdout] test ui::history_browser::tests::filtered_entries_filters_by_title ... ok
[INFO] [stdout] test ui::history_browser::tests::filtered_entries_returns_all_when_no_query ... ok
[INFO] [stdout] test ui::command_bar::tests::selected_prompt_out_of_bounds ... ok
[INFO] [stdout] test ui::history_browser::tests::filtered_history_count_matches_filtered_entries ... ok
[INFO] [stdout] test ui::history_browser::tests::format_relative_time_days ... ok
[INFO] [stdout] test ui::history_browser::tests::format_relative_time_hours ... ok
[INFO] [stdout] test ui::history_browser::tests::format_relative_time_just_now ... ok
[INFO] [stdout] test ui::history_browser::tests::format_relative_time_months ... ok
[INFO] [stdout] test ui::history_browser::tests::group_label_1d_ago_is_yesterday ... ok
[INFO] [stdout] test ui::history_browser::tests::group_label_30d_is_older ... ok
[INFO] [stdout] test ui::history_browser::tests::group_label_3d_is_this_week ... ok
[INFO] [stdout] test ui::history_browser::tests::group_label_7d_boundary_is_this_week ... ok
[INFO] [stdout] test ui::history_browser::tests::group_label_8d_boundary_is_older ... ok
[INFO] [stdout] test ui::history_browser::tests::group_label_now_is_today ... ok
[INFO] [stdout] test ui::command_bar::tests::filtered_prompts_search_narrows_results ... ok
[INFO] [stdout] test ui::history_browser::tests::group_label_older ... ok
[INFO] [stdout] test ui::history_browser::tests::group_label_this_week ... ok
[INFO] [stdout] test ui::history_browser::tests::group_label_today ... ok
[INFO] [stdout] test ui::command_bar::tests::quick_action_settings_in_filtered_results ... ok
[INFO] [stdout] test ui::history_browser::tests::highlight_search_matches_empty_query ... ok
[INFO] [stdout] test ui::history_browser::tests::format_relative_time_minutes ... ok
[INFO] [stdout] test ui::history_browser::tests::highlight_search_matches_no_match ... ok
[INFO] [stdout] test ui::history_browser::tests::highlight_search_matches_single_match ... ok
[INFO] [stdout] test ui::history_browser::tests::group_label_yesterday ... ok
[INFO] [stdout] test ui::history_browser::tests::highlight_search_matches_case_insensitive ... ok
[INFO] [stdout] test ui::history_browser::tests::highlight_search_matches_multiple_occurrences ... ok
[INFO] [stdout] test ui::history_browser::tests::relative_time_5min ... ok
[INFO] [stdout] test ui::history_browser::tests::relative_time_60d_is_2_months ... ok
[INFO] [stdout] test ui::history_browser::tests::relative_time_future_date_graceful ... ok
[INFO] [stdout] test ui::history_browser::tests::relative_time_now_is_just_now ... ok
[INFO] [stdout] test ui::history_browser::tests::relative_time_3h ... ok
[INFO] [stdout] test ui::history_browser::tests::relative_time_7d ... ok
[INFO] [stdout] test ui::history_browser::tests::relative_time_30s_is_just_now ... ok
[INFO] [stdout] test ui::history_browser::tests::sort_mode_initializes_zero ... ok
[INFO] [stdout] test ui::prompt_picker::tests::visible_prompt_count_default_is_nonzero ... ok
[INFO] [stdout] test ui::prompt_picker::tests::visible_prompt_count_with_narrow_filter ... ok
[INFO] [stdout] test ui::settings::tests::general_item_count_is_positive ... ok
[INFO] [stdout] test ui::prompt_picker::tests::visible_prompt_count_empty_filter_shows_all_in_category ... ok
[INFO] [stdout] test ui::settings::tests::git_item_count_is_positive ... ok
[INFO] [stdout] test ui::settings::tests::keybinds_item_count_is_positive ... ok
[INFO] [stdout] test ui::settings::tests::providers_item_count_is_positive ... ok
[INFO] [stdout] test ui::settings::tests::theme_item_count_is_positive ... ok
[INFO] [stdout] test ui::tests::format_elapsed_exact_minute ... ok
[INFO] [stdout] test ui::tests::format_elapsed_large ... ok
[INFO] [stdout] test ui::tests::format_elapsed_minutes ... ok
[INFO] [stdout] test ui::tests::format_elapsed_one_second ... ok
[INFO] [stdout] test ui::tests::format_elapsed_sub_second ... ok
[INFO] [stdout] test ui::tests::format_number_exactly_1000 ... ok
[INFO] [stdout] test ui::tests::format_number_exactly_million ... ok
[INFO] [stdout] test ui::tests::format_elapsed_seconds ... ok
[INFO] [stdout] test ui::tests::format_number_hundred_thousands ... ok
[INFO] [stdout] test ui::tests::format_number_millions ... ok
[INFO] [stdout] test ui::tests::format_number_thousands ... ok
[INFO] [stdout] test ui::tests::format_elapsed_zero ... ok
[INFO] [stdout] test ui::tests::format_number_small ... ok
[INFO] [stdout] test ui::tests::format_number_zero ... ok
[INFO] [stdout] test ui::tests::hex_to_color_empty_string ... ok
[INFO] [stdout] test ui::tests::hex_to_color_invalid_length ... ok
[INFO] [stdout] test ui::tests::hex_to_color_valid_black ... ok
[INFO] [stdout] test ui::tests::hex_to_color_uppercase ... ok
[INFO] [stdout] test ui::command_bar::tests::matched_prompt_count_with_query ... ok
[INFO] [stdout] test ui::tests::hex_to_color_valid_white ... ok
[INFO] [stdout] test ui::tests::hex_to_color_invalid_chars ... ok
[INFO] [stdout] test ui::tests::hex_to_color_valid_red ... ok
[INFO] [stdout] test ui::tests::hex_to_color_without_hash ... ok
[INFO] [stdout] test ui::tests::model_info_unknown_model ... ok
[INFO] [stdout] test ui::tests::provider_descriptions ... ok
[INFO] [stdout] test ui::utils::tests::centered_rect_fixed_basic ... ok
[INFO] [stdout] test ui::utils::tests::centered_rect_fixed_zero_area ... ok
[INFO] [stdout] test ui::utils::tests::display_width_ascii ... ok
[INFO] [stdout] test ui::utils::tests::display_width_cjk ... ok
[INFO] [stdout] test ui::tests::model_info_known_models ... ok
[INFO] [stdout] test ui::utils::tests::display_width_empty ... ok
[INFO] [stdout] test ui::utils::tests::display_width_mixed ... ok
[INFO] [stdout] test ui::utils::tests::truncate_adds_ellipsis ... ok
[INFO] [stdout] test ui::utils::tests::truncate_empty_string ... ok
[INFO] [stdout] test ui::utils::tests::truncate_exact_fit ... ok
[INFO] [stdout] test ui::utils::tests::truncate_short_string_unchanged ... ok
[INFO] [stdout] test ui::utils::tests::truncate_very_small_width ... ok
[INFO] [stdout] test ui::utils::tests::truncate_wide_chars ... ok
[INFO] [stdout] test ui::tests::provider_display_names ... ok
[INFO] [stdout] test ui::tests::resolved_theme_separator_returns_border ... ok
[INFO] [stdout] test ui::utils::tests::centered_rect_fixed_clamps_to_area ... ok
[INFO] [stdout] test ui::utils::tests::truncate_zero_width ... ok
[INFO] [stdout] test usage::tests::cost_openrouter_claude_model ... ok
[INFO] [stdout] test usage::tests::cost_paid_providers ... ok
[INFO] [stdout] test usage::tests::cost_openrouter_llama_model ... ok
[INFO] [stdout] test usage::tests::format_cost_normal ... ok
[INFO] [stdout] test usage::tests::format_cost_free ... ok
[INFO] [stdout] test usage::tests::cost_unknown_provider_is_zero ... ok
[INFO] [stdout] test usage::tests::format_cost_small ... ok
[INFO] [stdout] test usage::tests::record_request_updates_stats ... ok
[INFO] [stdout] test usage::tests::record_multiple_requests_accumulates ... ok
[INFO] [stdout] test usage::tests::record_request_free_provider_zero_cost ... ok
[INFO] [stdout] test usage::tests::cost_free_providers ... ok
[INFO] [stdout] test usage::tests::spending_limit_default_is_disabled ... ok
[INFO] [stdout] test usage::tests::spending_limit_blocks_when_exceeded ... ok
[INFO] [stdout] test usage::tests::spending_limit_disabled_allows_all ... ok
[INFO] [stdout] test usage::tests::spending_limit_exactly_at_boundary ... ok
[INFO] [stdout] test usage::tests::spending_limit_token_count ... ok
[INFO] [stdout] test usage::tests::spending_limit_request_count ... ok
[INFO] [stdout] test usage::tests::usage_stats_new_has_session_start ... ok
[INFO] [stdout] test usage::tests::format_cost_precision ... ok
[INFO] [stdout] test workspace::tests::detect_go_project ... ok
[INFO] [stdout] test workspace::tests::collect_source_files_respects_depth ... ok
[INFO] [stdout] test workspace::tests::build_tree_excludes_hidden ... ok
[INFO] [stdout] test workspace::tests::detect_elixir_project ... ok
[INFO] [stdout] test workspace::tests::detect_java_maven_project ... ok
[INFO] [stdout] test workspace::tests::detect_node_project ... ok
[INFO] [stdout] test workspace::tests::detect_go_project_parses_module ... ok
[INFO] [stdout] test workspace::tests::detect_node_with_frameworks ... ok
[INFO] [stdout] test workspace::tests::detect_python_project ... ok
[INFO] [stdout] test workspace::tests::detect_rust_project ... ok
[INFO] [stdout] test workspace::tests::detect_rust_with_dependencies ... ok
[INFO] [stdout] test workspace::tests::extract_go_func ... ok
[INFO] [stdout] test workspace::tests::extract_go_type_struct ... ok
[INFO] [stdout] test workspace::tests::extract_js_long_line_truncated_at_80 ... ok
[INFO] [stdout] test workspace::tests::extract_js_symbols ... ok
[INFO] [stdout] test workspace::tests::extract_python_async_def ... ok
[INFO] [stdout] test workspace::tests::extract_python_class ... ok
[INFO] [stdout] test workspace::tests::extract_python_symbols ... ok
[INFO] [stdout] test workspace::tests::extract_rust_async_fn ... ok
[INFO] [stdout] test workspace::tests::extract_rust_const_fn ... ok
[INFO] [stdout] test workspace::tests::extract_rust_pub_crate_fn ... ok
[INFO] [stdout] test workspace::tests::extract_rust_enum_variants ... ok
[INFO] [stdout] test workspace::tests::extract_rust_symbols ... ok
[INFO] [stdout] test workspace::tests::extract_rust_trait_with_body ... ok
[INFO] [stdout] test workspace::tests::extract_symbols_empty_content ... ok
[INFO] [stdout] test workspace::tests::detect_python_with_django ... ok
[INFO] [stdout] test workspace::tests::extract_symbols_unknown_extension_empty ... ok
[INFO] [stdout] test workspace::tests::extract_ts_export_const ... ok
[INFO] [stdout] test workspace::tests::extract_ts_export_default_function ... ok
[INFO] [stdout] test workspace::tests::malformed_cargo_toml_still_detects ... ok
[INFO] [stdout] test workspace::tests::malformed_package_json_still_detects ... ok
[INFO] [stdout] test workspace::tests::extract_ts_export_class ... ok
[INFO] [stdout] test workspace::tests::detect_ruby_project ... ok
[INFO] [stdout] test workspace::tests::node_detects_typescript ... ok
[INFO] [stdout] test workspace::tests::no_project_detected ... ok
[INFO] [stdout] test workspace::tests::symbols_truncated_at_15 ... ok
[INFO] [stdout] test workspace::tests::rust_wins_over_node_in_mixed_project ... ok
[INFO] [stdout] test workspace::tests::system_prompt_contains_tech_stack ... ok
[INFO] [stdout] test workspace::tests::system_prompt_includes_project_info ... ok
[INFO] [stdout] test workspace::tests::system_prompt_omits_empty_description ... ok
[INFO] [stdout] test workspace::tests::workspace_key_files_detected ... ok
[INFO] [stdout] test workspace::tests::extract_go_symbols ... ok
[INFO] [stdout] test workspace::tests::project_map_includes_key_definitions ... ok
[INFO] [stdout] test workspace::tests::generate_project_map_current_dir ... ok
[INFO] [stdout] test commands::shell::tests::build_command_recognized ... ok
[INFO] [stdout] test shell::tests::timeout_triggers_on_slow_command ... ok
[INFO] [stderr] error: test failed, to rerun pass `--bin nerve`
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/target/debug/deps/nerve-79423dab80e7cfd2` (signal: 9, SIGKILL: kill)
[INFO] running `Command { std: "docker" "inspect" "c92baa56437c37ada63378bc99b8b52283165afb958130f06aac72167c251cf7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c92baa56437c37ada63378bc99b8b52283165afb958130f06aac72167c251cf7", kill_on_drop: false }`
[INFO] [stdout] c92baa56437c37ada63378bc99b8b52283165afb958130f06aac72167c251cf7
