[INFO] cloning repository https://github.com/hakula139/oxide-code
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hakula139/oxide-code" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhakula139%2Foxide-code", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhakula139%2Foxide-code'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 26fdba160033315dcc40952cf05237c45d90da6f
[INFO] testing hakula139/oxide-code against master#ec6f9a5b4413f74386267ef8efc93712c2ce6db6 for pr-155739
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhakula139%2Foxide-code" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/hakula139/oxide-code
[INFO] finished tweaking git repo https://github.com/hakula139/oxide-code
[INFO] tweaked toml for git repo https://github.com/hakula139/oxide-code written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hakula139/oxide-code on toolchain ec6f9a5b4413f74386267ef8efc93712c2ce6db6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hakula139/oxide-code 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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.118
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.118
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.118
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.118
[INFO] [stderr]   Downloaded line-clipping v0.3.7
[INFO] [stderr]   Downloaded castaway v0.2.4
[INFO] [stderr]   Downloaded atomic v0.6.1
[INFO] [stderr]   Downloaded wasm-bindgen-futures v0.4.68
[INFO] [stderr]   Downloaded temp-env v0.3.6
[INFO] [stderr]   Downloaded mac_address v1.1.8
[INFO] [stderr]   Downloaded memmem v0.1.1
[INFO] [stderr]   Downloaded wezterm-dynamic v0.2.1
[INFO] [stderr]   Downloaded vtparse v0.6.2
[INFO] [stderr]   Downloaded unicode-truncate v2.0.1
[INFO] [stderr]   Downloaded kasuari v0.4.12
[INFO] [stderr]   Downloaded wezterm-dynamic-derive v0.1.1
[INFO] [stderr]   Downloaded lab v0.11.0
[INFO] [stderr]   Downloaded wezterm-blob-leases v0.1.1
[INFO] [stderr]   Downloaded instability v0.3.12
[INFO] [stderr]   Downloaded signal-hook-mio v0.2.5
[INFO] [stderr]   Downloaded wezterm-color-types v0.3.0
[INFO] [stderr]   Downloaded ratatui-macros v0.7.0
[INFO] [stderr]   Downloaded onig v6.5.1
[INFO] [stderr]   Downloaded hyper-rustls v0.27.8
[INFO] [stderr]   Downloaded ratatui-termwiz v0.1.0
[INFO] [stderr]   Downloaded csscolorparser v0.6.2
[INFO] [stderr]   Downloaded ratatui-crossterm v0.1.0
[INFO] [stderr]   Downloaded wezterm-input-types v0.1.0
[INFO] [stderr]   Downloaded console v0.16.3
[INFO] [stderr]   Downloaded plist v1.8.0
[INFO] [stderr]   Downloaded platform-info v2.1.0
[INFO] [stderr]   Downloaded terminfo v0.9.0
[INFO] [stderr]   Downloaded clap_derive v4.6.0
[INFO] [stderr]   Downloaded ratatui-textarea v0.9.0
[INFO] [stderr]   Downloaded compact_str v0.9.0
[INFO] [stderr]   Downloaded ignore v0.4.25
[INFO] [stderr]   Downloaded finl_unicode v1.4.0
[INFO] [stderr]   Downloaded similar v2.7.0
[INFO] [stderr]   Downloaded clap v4.6.0
[INFO] [stderr]   Downloaded cc v1.2.60
[INFO] [stderr]   Downloaded wezterm-bidi v0.2.3
[INFO] [stderr]   Downloaded fancy-regex v0.11.0
[INFO] [stderr]   Downloaded js-sys v0.3.95
[INFO] [stderr]   Downloaded fancy-regex v0.16.2
[INFO] [stderr]   Downloaded ratatui v0.30.0
[INFO] [stderr]   Downloaded insta v1.47.2
[INFO] [stderr]   Downloaded ratatui-core v0.1.0
[INFO] [stderr]   Downloaded ratatui-widgets v0.3.0
[INFO] [stderr]   Downloaded termwiz v0.23.3
[INFO] [stderr]   Downloaded onig_sys v69.9.1
[INFO] [stderr]   Downloaded web-sys v0.3.95
[INFO] [stderr]   Downloaded tokio v1.51.1
[INFO] [stderr]   Downloaded syntect v5.3.0
[INFO] [stderr]   Downloaded deltae v0.3.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c900023845a241069c023a8d0b9d32726fdb17bc3069081b06ecb4b3994b2806
[INFO] running `Command { std: "docker" "start" "-a" "c900023845a241069c023a8d0b9d32726fdb17bc3069081b06ecb4b3994b2806", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c900023845a241069c023a8d0b9d32726fdb17bc3069081b06ecb4b3994b2806", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c900023845a241069c023a8d0b9d32726fdb17bc3069081b06ecb4b3994b2806", kill_on_drop: false }`
[INFO] [stdout] c900023845a241069c023a8d0b9d32726fdb17bc3069081b06ecb4b3994b2806
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 933c9dfad7852d15885f7381354a4749287dd01ca9a0bcc2a0300e01e5532c1f
[INFO] running `Command { std: "docker" "start" "-a" "933c9dfad7852d15885f7381354a4749287dd01ca9a0bcc2a0300e01e5532c1f", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling num-conv v0.2.1
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling time-macros v0.2.27
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling indoc v2.0.7
[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 socket2 v0.6.3
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling lru v0.16.4
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling rustls v0.23.38
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling onig_sys v69.9.1
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling line-clipping v0.3.7
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling tokio v1.51.1
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling webpki-roots v1.0.6
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling quick-xml v0.38.4
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling linked-hash-map v0.5.6
[INFO] [stderr]    Compiling pulldown-cmark v0.13.3
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling plist v1.8.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling yaml-rust v0.4.5
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling hyper-rustls v0.27.8
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling onig v6.5.1
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling fancy-regex v0.16.2
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling getopts v0.2.24
[INFO] [stderr]    Compiling symlink v0.1.0
[INFO] [stderr]    Compiling pulldown-cmark-escape v0.11.0
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling syntect v5.3.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling tracing-appender v0.2.5
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling uuid v1.23.0
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling ignore v0.4.25
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling ratatui-textarea v0.9.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling platform-info v2.1.0
[INFO] [stderr]    Compiling xxhash-rust v0.8.15
[INFO] [stderr]    Compiling oxide-code v0.1.0-alpha.1 (/opt/rustwide/workdir/crates/oxide-code)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 09s
[INFO] running `Command { std: "docker" "inspect" "933c9dfad7852d15885f7381354a4749287dd01ca9a0bcc2a0300e01e5532c1f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "933c9dfad7852d15885f7381354a4749287dd01ca9a0bcc2a0300e01e5532c1f", kill_on_drop: false }`
[INFO] [stdout] 933c9dfad7852d15885f7381354a4749287dd01ca9a0bcc2a0300e01e5532c1f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 19f253d63c85e4b447a843e5788ddf387a86efdd8d60bf363c79d29b4a4d560a
[INFO] running `Command { std: "docker" "start" "-a" "19f253d63c85e4b447a843e5788ddf387a86efdd8d60bf363c79d29b4a4d560a", kill_on_drop: false }`
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling deadpool-runtime v0.1.4
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling deadpool v0.12.3
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling insta v1.47.2
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling temp-env v0.3.6
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling ratatui-textarea v0.9.0
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.8
[INFO] [stderr]    Compiling wiremock v0.6.5
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling oxide-code v0.1.0-alpha.1 (/opt/rustwide/workdir/crates/oxide-code)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 21s
[INFO] running `Command { std: "docker" "inspect" "19f253d63c85e4b447a843e5788ddf387a86efdd8d60bf363c79d29b4a4d560a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "19f253d63c85e4b447a843e5788ddf387a86efdd8d60bf363c79d29b4a4d560a", kill_on_drop: false }`
[INFO] [stdout] 19f253d63c85e4b447a843e5788ddf387a86efdd8d60bf363c79d29b4a4d560a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 5f18c7c39b0309613a546dffd850963b3416d98b67a344530bf51fcbbb01ad5a
[INFO] running `Command { std: "docker" "start" "-a" "5f18c7c39b0309613a546dffd850963b3416d98b67a344530bf51fcbbb01ad5a", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.61s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ox-68cdc53895d755d3)
[INFO] [stdout] 
[INFO] [stdout] running 1913 tests
[INFO] [stdout] test agent::compaction::tests::build_user_message_without_instructions_is_just_the_rubric ... ok
[INFO] [stdout] test agent::compaction::tests::build_user_message_with_instructions_appends_them_under_an_anchor ... ok
[INFO] [stdout] test agent::compaction::tests::build_user_message_treats_whitespace_only_instructions_as_absent ... ok
[INFO] [stdout] test agent::compaction::tests::strip_to_conversation_drops_thinking_blocks ... ok
[INFO] [stdout] test agent::compaction::tests::strip_to_conversation_drops_tool_use_and_tool_result_blocks ... ok
[INFO] [stdout] test agent::compaction::tests::synthesize_post_compact_prepends_summary_prefix ... ok
[INFO] [stdout] test agent::event::tests::render_cancelled_writes_marker_to_stderr_and_blank_to_stdout ... ok
[INFO] [stdout] test agent::event::tests::render_error_prefixes_with_error_label ... ok
[INFO] [stdout] test agent::event::tests::render_stream_token_writes_text_verbatim_to_stdout ... ok
[INFO] [stdout] test agent::event::tests::render_thinking_token_swallowed_when_disabled ... ok
[INFO] [stdout] test agent::event::tests::render_thinking_token_wraps_in_dim_when_enabled ... ok
[INFO] [stdout] test agent::event::tests::render_tool_call_end_with_title_writes_title_then_content ... ok
[INFO] [stdout] test agent::event::tests::render_tool_call_end_without_title_skips_header_and_whitespace_content ... ok
[INFO] [stdout] test agent::event::tests::render_tool_call_start_writes_icon_label_to_stderr ... ok
[INFO] [stdout] test agent::event::tests::render_tui_only_events_emit_nothing_on_either_stream ... ok
[INFO] [stdout] test agent::event::tests::render_turn_complete_writes_trailing_newline_to_stdout ... ok
[INFO] [stdout] test agent::compaction::tests::compact_session_refuses_when_stripped_transcript_is_too_short ... ok
[INFO] [stdout] test agent::compaction::tests::compact_session_too_short_transcript_errors_before_request ... ok
[INFO] [stdout] test agent::compaction::tests::compact_session_returns_trimmed_summary_on_happy_path ... ok
[INFO] [stdout] test agent::compaction::tests::compact_session_surfaces_stream_error_event ... ok
[INFO] [stdout] test agent::tests::agent_turn_cancel_during_tool_round_is_cancelled_outcome ... ok
[INFO] [stdout] test agent::compaction::tests::compact_session_propagates_http_error ... ok
[INFO] [stdout] test agent::tests::agent_turn_cancel_during_stream_is_cancelled_abort ... ok
[INFO] [stdout] test agent::tests::agent_turn_dead_session_surfaces_write_failure_on_first_call ... ok
[INFO] [stdout] test agent::tests::agent_turn_drains_mid_round_submit_into_messages_at_round_boundary ... ok
[INFO] [stdout] test agent::tests::agent_turn_initial_text_block_streams_without_delta ... ok
[INFO] [stdout] test agent::tests::agent_turn_drains_multiple_mid_round_submits_in_order ... ok
[INFO] [stdout] test agent::tests::agent_turn_malformed_tool_input_short_circuits_to_parse_error_result ... ok
[INFO] [stdout] test agent::compaction::tests::compact_session_request_strips_non_text_blocks_and_sends_no_tools ... ok
[INFO] [stdout] test agent::tests::agent_turn_metadata_batch_failure_after_healthy_messages_surfaces_error ... ok
[INFO] [stdout] test agent::tests::agent_turn_mid_stream_error_event_surfaces_as_bail ... ok
[INFO] [stdout] test agent::tests::agent_turn_quit_during_stream_is_quit_abort ... ok
[INFO] [stdout] test agent::tests::agent_turn_sender_drop_during_turn_collapses_to_quit_abort ... ok
[INFO] [stdout] test agent::tests::agent_turn_absorbs_stragglers_without_killing_turn ... ok
[INFO] [stdout] test agent::compaction::tests::compact_session_empty_summary_errors ... ok
[INFO] [stdout] test agent::tests::agent_turn_single_tool_call_dispatches_and_completes_on_follow_up ... ok
[INFO] [stdout] test agent::tests::apply_delta_mismatched_pair_is_a_noop ... ok
[INFO] [stdout] test agent::tests::apply_delta_server_tool_use_appends_to_json_buf ... ok
[INFO] [stdout] test agent::tests::apply_delta_signature_updates_signature_field ... ok
[INFO] [stdout] test agent::tests::apply_delta_text_appends_and_emits_stream_token ... ok
[INFO] [stdout] test agent::tests::agent_turn_strips_trailing_thinking_before_next_round ... ok
[INFO] [stdout] test agent::tests::apply_delta_tool_use_appends_to_json_buf ... ok
[INFO] [stdout] test agent::tests::init_accumulator_server_tool_use_starts_with_empty_buf ... ok
[INFO] [stdout] test agent::tests::init_accumulator_redacted_thinking_preserves_data ... ok
[INFO] [stdout] test agent::tests::apply_delta_thinking_appends_and_emits_thinking_token ... ok
[INFO] [stdout] test agent::tests::agent_turn_text_only_response_records_and_completes ... ok
[INFO] [stdout] test agent::tests::init_accumulator_text_starts_with_initial_text ... ok
[INFO] [stdout] test agent::tests::init_accumulator_thinking_preserves_fields ... ok
[INFO] [stdout] test agent::tests::init_accumulator_tool_use_starts_with_empty_buf ... ok
[INFO] [stdout] test agent::tests::init_accumulator_unknown_yields_skipped ... ok
[INFO] [stdout] test agent::tests::into_content_block_redacted_thinking_preserves_data ... ok
[INFO] [stdout] test agent::tests::into_content_block_server_tool_use_malformed_json_surfaces_parse_error ... ok
[INFO] [stdout] test agent::tests::into_content_block_server_tool_use_yields_server_tool_use_block ... ok
[INFO] [stdout] test agent::tests::into_content_block_skipped_yields_none ... ok
[INFO] [stdout] test agent::tests::agent_turn_max_tool_rounds_bails_with_safety_cap_message ... ok
[INFO] [stdout] test agent::tests::into_content_block_text_yields_text_block ... ok
[INFO] [stdout] test agent::tests::agent_turn_unknown_tool_name_emits_error_result_and_retries ... ok
[INFO] [stdout] test agent::tests::into_content_block_thinking_preserves_signature ... ok
[INFO] [stdout] test agent::tests::into_content_block_tool_use_malformed_json_surfaces_parse_error ... ok
[INFO] [stdout] test agent::tests::into_content_block_tool_use_yields_tool_use_block ... ok
[INFO] [stdout] test agent::tests::parse_tool_json_malformed_produces_empty_object_and_error ... ok
[INFO] [stdout] test agent::tests::parse_tool_json_valid_object ... ok
[INFO] [stdout] test agent::tests::turn_abort_display_alternate_propagates_anyhow_cause_chain ... ok
[INFO] [stdout] test client::anthropic::betas::tests::compute_betas_haiku_4_5_agentic_omits_1m_effort_and_thinking ... ok
[INFO] [stdout] test client::anthropic::betas::tests::compute_betas_haiku_4_5_with_1m_tag_silently_drops_1m ... ok
[INFO] [stdout] test agent::tests::turn_abort_display_cancelled_and_quit_use_static_labels ... ok
[INFO] [stdout] test client::anthropic::betas::tests::api_model_id_strips_1m_tag_case_insensitively ... ok
[INFO] [stdout] test client::anthropic::betas::tests::compute_betas_agentic_opus_4_6_plain_carries_full_set_except_1m ... ok
[INFO] [stdout] test client::anthropic::betas::tests::compute_betas_haiku_non_agentic_minimal ... ok
[INFO] [stdout] test client::anthropic::betas::tests::compute_betas_oauth_adds_oauth_header ... ok
[INFO] [stdout] test client::anthropic::betas::tests::compute_betas_opus_4_6_with_1m_tag_adds_context_1m ... ok
[INFO] [stdout] test client::anthropic::betas::tests::compute_betas_opus_4_7_matches_opus_4_6_family ... ok
[INFO] [stdout] test client::anthropic::betas::tests::compute_betas_non_haiku_non_agentic_keeps_claude_code_tag ... ok
[INFO] [stdout] test agent::tests::agent_turn_drives_real_client_over_wiremock ... ok
[INFO] [stdout] test client::anthropic::betas::tests::compute_betas_sonnet_4_5_has_thinking_but_not_effort ... ok
[INFO] [stdout] test client::anthropic::betas::tests::compute_betas_structured_outputs_gated_by_model_capability ... ok
[INFO] [stdout] test client::anthropic::betas::tests::is_first_party_base_url_accepts_official_hosts ... ok
[INFO] [stdout] test client::anthropic::betas::tests::has_1m_tag_is_case_insensitive ... ok
[INFO] [stdout] test client::anthropic::betas::tests::is_first_party_base_url_rejects_proxies_and_malformed_urls ... ok
[INFO] [stdout] test client::anthropic::betas::tests::static_prefix_cache_control_emits_global_scope_on_first_party_only ... ok
[INFO] [stdout] test client::anthropic::billing::tests::build_billing_header_format ... ok
[INFO] [stdout] test client::anthropic::betas::tests::static_prefix_cache_control_ttl_matches_config ... ok
[INFO] [stdout] test client::anthropic::billing::tests::compute_fingerprint_partial_bounds ... ok
[INFO] [stdout] test client::anthropic::billing::tests::compute_fingerprint_known_vector ... ok
[INFO] [stdout] test client::anthropic::billing::tests::compute_fingerprint_short_message_pads_with_zero ... ok
[INFO] [stdout] test client::anthropic::betas::tests::supports_structured_outputs_reflects_capability_table ... ok
[INFO] [stdout] test client::anthropic::billing::tests::inject_cch_errors_when_placeholder_missing ... ok
[INFO] [stdout] test client::anthropic::billing::tests::compute_fingerprint_varies_with_version ... ok
[INFO] [stdout] test client::anthropic::billing::tests::inject_cch_replaces_only_first_occurrence ... ok
[INFO] [stdout] test client::anthropic::billing::tests::inject_cch_deterministic ... ok
[INFO] [stdout] test client::anthropic::billing::tests::inject_cch_produces_five_hex_chars ... ok
[INFO] [stdout] test client::anthropic::billing::tests::inject_cch_replaces_placeholder ... ok
[INFO] [stdout] test client::anthropic::completion::tests::build_completion_body_empty_system_keeps_identity_prefix_alone ... ok
[INFO] [stdout] test client::anthropic::completion::tests::build_completion_body_routes_device_and_session_ids_into_metadata ... ok
[INFO] [stdout] test client::anthropic::completion::tests::build_completion_body_omits_tools_thinking_and_output_config_by_default ... ok
[INFO] [stdout] test client::anthropic::completion::tests::build_completion_body_with_output_format_emits_output_config ... ok
[INFO] [stdout] test client::anthropic::completion::tests::build_completion_body_system_blocks_match_auth_mode ... ok
[INFO] [stdout] test client::anthropic::completion::tests::complete_does_not_emit_context_management_edits ... ok
[INFO] [stdout] test client::anthropic::completion::tests::complete_malformed_response_body_errors_with_parse_context ... ok
[INFO] [stdout] test client::anthropic::completion::tests::join_text_blocks_concatenates_text_and_drops_non_text_blocks ... ok
[INFO] [stdout] test client::anthropic::completion::tests::join_text_blocks_is_empty_for_tool_only_response ... ok
[INFO] [stdout] test client::anthropic::completion::tests::complete_structured_output_gated_by_model_capability ... ok
[INFO] [stdout] test client::anthropic::completion::tests::complete_http_error_propagates_status_and_body ... ok
[INFO] [stdout] test client::anthropic::completion::tests::complete_429_surfaces_retry_after_header_in_error ... ok
[INFO] [stdout] test client::anthropic::completion::tests::complete_happy_path_produces_assistant_text ... ok
[INFO] [stdout] test client::anthropic::completion::tests::complete_oauth_haiku_carries_billing_block_but_not_gateway_tag ... ok
[INFO] [stdout] test client::anthropic::identity::tests::fallback_to_ephemeral_mints_fresh_id_on_err ... ok
[INFO] [stdout] test client::anthropic::identity::tests::fallback_to_ephemeral_uses_persisted_id_on_ok ... ok
[INFO] [stdout] test client::anthropic::identity::tests::generate_produces_unique_64_char_lowercase_hex ... ok
[INFO] [stdout] test client::anthropic::identity::tests::is_valid_id_accepts_only_64_lowercase_hex_chars ... ok
[INFO] [stdout] test client::anthropic::identity::tests::load_or_create_device_id_produces_valid_id_under_normal_env ... ok
[INFO] [stdout] test client::anthropic::identity::tests::read_existing_treats_non_utf8_content_as_absent ... ok
[INFO] [stdout] test client::anthropic::identity::tests::read_existing_propagates_io_error_other_than_not_found ... ok
[INFO] [stdout] test client::anthropic::identity::tests::try_load_or_create_at_errors_on_path_without_parent ... ok
[INFO] [stdout] test client::anthropic::identity::tests::try_load_or_create_at_propagates_unwritable_parent_as_error ... ok
[INFO] [stdout] test client::anthropic::completion::tests::complete_sends_x_claude_code_session_id_header ... ok
[INFO] [stdout] test client::anthropic::sse::tests::format_api_error_401_names_both_auth_paths ... ok
[INFO] [stdout] test client::anthropic::sse::tests::format_api_error_529_flags_overload_as_transient ... ok
[INFO] [stdout] test client::anthropic::sse::tests::format_api_error_429_mentions_retry_after_when_present ... ok
[INFO] [stdout] test client::anthropic::sse::tests::format_api_error_other_falls_back_to_generic_shape ... ok
[INFO] [stdout] test client::anthropic::sse::tests::parse_sse_frame_concatenates_multiple_data_lines_with_newline ... ok
[INFO] [stdout] test client::anthropic::sse::tests::format_api_error_5xx_uses_generic_server_branch ... ok
[INFO] [stdout] test client::anthropic::sse::tests::parse_sse_frame_accepts_data_prefix_without_space ... ok
[INFO] [stdout] test client::anthropic::sse::tests::parse_sse_frame_error_event ... ok
[INFO] [stdout] test client::anthropic::sse::tests::parse_sse_frame_invalid_json_errors ... ok
[INFO] [stdout] test client::anthropic::sse::tests::parse_sse_frame_message_start ... ok
[INFO] [stdout] test client::anthropic::sse::tests::parse_sse_frame_text_delta ... ok
[INFO] [stdout] test client::anthropic::sse::tests::parse_sse_frame_without_data_line_yields_none ... ok
[INFO] [stdout] test client::anthropic::sse::tests::parse_sse_frame_unknown_event_type ... ok
[INFO] [stdout] test client::anthropic::sse::tests::parse_sse_frame_ping ... ok
[INFO] [stdout] test client::anthropic::sse::tests::stream_sse_succeeds_when_receiver_drops_before_send ... ok
[INFO] [stdout] test client::anthropic::tests::build_metadata_wraps_ids_in_stringified_json_with_canonical_field_order ... ok
[INFO] [stdout] test client::anthropic::sse::tests::stream_sse_buffer_overflow_bails_when_frame_lacks_terminator ... ok
[INFO] [stdout] test client::anthropic::sse::tests::stream_sse_handles_data_less_frames_without_emitting_event ... ok
[INFO] [stdout] test client::anthropic::sse::tests::stream_sse_skips_invalid_utf8_frame_then_keeps_streaming ... ok
[INFO] [stdout] test client::anthropic::tests::build_system_blocks_drops_empty_extras_and_omits_billing_when_absent ... ok
[INFO] [stdout] test client::anthropic::tests::first_user_text_extracts_from_first_user_message ... ok
[INFO] [stdout] test client::anthropic::tests::build_system_blocks_orders_billing_then_identity_then_extras ... ok
[INFO] [stdout] test client::anthropic::tests::first_user_text_is_empty_when_absent ... ok
[INFO] [stdout] test client::anthropic::tests::new_with_oauth_token_exposes_model ... ok
[INFO] [stdout] test client::anthropic::identity::tests::try_load_or_create_at_persists_across_calls ... ok
[INFO] [stdout] test client::anthropic::tests::new_none_session_id_generates_uuid_v4 ... ok
[INFO] [stdout] test client::anthropic::tests::new_rejects_auth_values_containing_invalid_header_bytes ... ok
[INFO] [stdout] test client::anthropic::identity::tests::try_load_or_create_at_writes_id_to_path ... ok
[INFO] [stdout] test client::anthropic::tests::new_with_api_key_exposes_model ... ok
[INFO] [stdout] test client::anthropic::tests::normalize_arch_maps_known_and_falls_back_to_unknown ... ok
[INFO] [stdout] test client::anthropic::tests::normalize_platform_maps_known_and_falls_back_to_unknown ... ok
[INFO] [stdout] test client::anthropic::tests::new_preserves_explicit_session_id ... ok
[INFO] [stdout] test client::anthropic::tests::split_at_boundary_separates_static_and_dynamic ... ok
[INFO] [stdout] test client::anthropic::tests::set_model_preserves_1m_tag_round_trip ... ok
[INFO] [stdout] test client::anthropic::tests::split_at_boundary_without_marker_treats_all_as_static ... ok
[INFO] [stdout] test client::anthropic::tests::set_effort_resolves_pick_against_active_model_caps ... ok
[INFO] [stdout] test client::anthropic::tests::split_at_boundary_at_extremes_yields_empty_side ... ok
[INFO] [stdout] test client::anthropic::tests::split_at_boundary_filters_empty_sections ... ok
[INFO] [stdout] test client::anthropic::tests::set_model_resolves_effort_and_persists_full_state ... ok
[INFO] [stdout] test client::anthropic::identity::tests::try_load_or_create_at_replaces_invalid_persisted_value ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_happy_text_emits_start_delta_stop_in_order ... ok
[INFO] [stdout] test client::anthropic::tests::set_session_id_propagates_to_header_and_metadata_user_id ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_429_threads_retry_after_header_into_error ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_api_key_sends_x_api_key_and_session_id ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_context_management_absent_on_unknown_model ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_malformed_frame_is_skipped_without_poisoning_stream ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_mid_stream_error_event_is_delivered_with_api_payload ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_oauth_sends_bearer_plus_oauth_and_gateway_beta_tags ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_billing_block_ships_under_both_auth_modes ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_opus_4_7_emits_output_config_effort_xhigh ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_http_error_propagates_status_and_body ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_context_management_body_present_on_4_6_plus ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_prepends_user_context_as_synthetic_user_message ... ok
[INFO] [stdout] test client::anthropic::wire::tests::content_block_info_redacted_thinking ... ok
[INFO] [stdout] test client::anthropic::wire::tests::content_block_info_server_tool_use ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_omits_output_config_when_effort_is_none ... ok
[INFO] [stdout] test client::anthropic::wire::tests::content_block_info_text ... ok
[INFO] [stdout] test client::anthropic::wire::tests::content_block_info_thinking ... ok
[INFO] [stdout] test client::anthropic::wire::tests::content_block_info_tool_use ... ok
[INFO] [stdout] test client::anthropic::wire::tests::content_block_info_unknown_type ... ok
[INFO] [stdout] test client::anthropic::wire::tests::context_management_clear_thinking_keep_all_serializes_tagged_shape ... ok
[INFO] [stdout] test client::anthropic::wire::tests::delta_input_json ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_preserves_multibyte_codepoints_in_deltas ... ok
[INFO] [stdout] test client::anthropic::wire::tests::delta_signature ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_show_thinking_emits_display_summarized ... ok
[INFO] [stdout] test client::anthropic::wire::tests::output_format_json_schema_serializes_with_type_and_schema ... ok
[INFO] [stdout] test client::anthropic::wire::tests::delta_thinking ... ok
[INFO] [stdout] test client::anthropic::wire::tests::delta_unknown_type ... ok
[INFO] [stdout] test client::anthropic::wire::tests::stream_event_content_block_start_text ... ok
[INFO] [stdout] test client::anthropic::wire::tests::delta_text ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_show_thinking_false_omits_display_field ... ok
[INFO] [stdout] test client::anthropic::wire::tests::stream_event_content_block_stop ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_third_party_base_url_drops_global_scope_keeps_its_beta ... ok
[INFO] [stdout] test client::anthropic::wire::tests::stream_event_message_delta_with_usage ... ok
[INFO] [stdout] test client::anthropic::wire::tests::stream_event_message_stop ... ok
[INFO] [stdout] test config::file::tests::find_project_config_from_in_start_dir ... ok
[INFO] [stdout] test config::file::tests::find_project_config_from_walks_upward ... ok
[INFO] [stdout] test config::file::tests::load_file_missing_is_absent ... ok
[INFO] [stdout] test config::file::tests::load_file_rejects_misplaced_field ... ok
[INFO] [stdout] test config::file::tests::load_file_empty_toml_uses_defaults ... ok
[INFO] [stdout] test config::file::tests::load_file_all_fields ... ok
[INFO] [stdout] test config::file::tests::merge_both_empty_produces_empty ... ok
[INFO] [stdout] test config::file::tests::merge_cross_section_fills_gaps ... ok
[INFO] [stdout] test config::file::tests::merge_falls_back_to_base_when_other_is_none ... ok
[INFO] [stdout] test config::file::tests::load_file_unreadable_path_propagates_io_error ... ok
[INFO] [stdout] test config::file::tests::merge_other_wins_when_both_set ... ok
[INFO] [stdout] test config::file::tests::theme_merge_other_base_wins_over_self ... ok
[INFO] [stdout] test config::file::tests::load_file_single_section ... ok
[INFO] [stdout] test config::file::tests::load_file_rejects_invalid_toml ... ok
[INFO] [stdout] test config::file::tests::theme_merge_other_override_wins_on_slot_collision ... ok
[INFO] [stdout] test config::file::tests::theme_merge_overrides_extend_when_both_set ... ok
[INFO] [stdout] test config::file::tests::theme_merge_overrides_pass_through_when_one_side_is_none ... ok
[INFO] [stdout] test config::file::tests::load_file_rejects_unknown_top_level_key ... ok
[INFO] [stdout] test config::file::tests::find_project_config_from_is_absent_when_not_found ... ok
[INFO] [stdout] test config::oauth::tests::acquire_lock_creates_and_drop_removes ... ok
[INFO] [stdout] test config::oauth::tests::is_near_expiry_far_future ... ok
[INFO] [stdout] test config::oauth::tests::is_expired_zero ... ok
[INFO] [stdout] test config::oauth::tests::expires_at_ms_positive_value ... ok
[INFO] [stdout] test config::oauth::tests::expires_at_ms_negative_clamps_to_zero ... ok
[INFO] [stdout] test config::oauth::tests::is_expired_far_future ... ok
[INFO] [stdout] test config::oauth::tests::is_near_expiry_zero_is_expired ... ok
[INFO] [stdout] test config::oauth::tests::load_token_from_without_refresh_token_bails_when_expired ... ok
[INFO] [stdout] test config::oauth::tests::load_token_from_keeps_existing_when_far_from_expiry ... ok
[INFO] [stdout] test config::oauth::tests::load_token_resolves_credentials_relative_to_home ... ok
[INFO] [stdout] test config::oauth::tests::load_token_from_without_refresh_token_keeps_nonexpired_as_is ... ok
[INFO] [stdout] test config::oauth::tests::read_credentials_invalid_json ... ok
[INFO] [stdout] test config::oauth::tests::read_credentials_missing_refresh_token_field ... ok
[INFO] [stdout] test config::oauth::tests::read_credentials_missing_file ... ok
[INFO] [stdout] test config::oauth::tests::load_token_from_refresh_endpoint_down_bails_if_expired ... ok
[INFO] [stdout] test config::oauth::tests::read_credentials_missing_oauth_key ... ok
[INFO] [stdout] test config::oauth::tests::read_credentials_valid_with_refresh_token ... ok
[INFO] [stdout] test config::oauth::tests::load_token_from_refreshes_near_expiry_and_writes_back ... ok
[INFO] [stdout] test config::oauth::tests::load_token_from_refresh_endpoint_down_keeps_existing_token_if_unexpired ... ok
[INFO] [stdout] test config::tests::default_max_tokens_scales_with_effort ... ok
[INFO] [stdout] test config::tests::display_bool_names_the_two_flag_states ... ok
[INFO] [stdout] test config::tests::display_effort_names_effective_tier_or_no_tier ... ok
[INFO] [stdout] test config::tests::effort_rejects_unknown_tokens_with_actionable_error ... ok
[INFO] [stdout] test config::tests::effort_round_trips_through_serde_and_fromstr ... ok
[INFO] [stdout] test config::oauth::tests::refresh_oauth_token_sends_grant_and_client_id_and_produces_parsed_response ... ok
[INFO] [stdout] test config::oauth::tests::write_refreshed_credentials_tolerates_whitespace_in_scope_field ... ok
[INFO] [stdout] test config::tests::effort_round_trips_through_toml_deserialize ... ok
[INFO] [stdout] test config::oauth::tests::refresh_oauth_token_propagates_http_error_with_status_and_body ... ok
[INFO] [stdout] test config::tests::label_distinguishes_api_key_from_oauth ... ok
[INFO] [stdout] test config::oauth::tests::write_refreshed_credentials_skips_scopes_when_absent ... ok
[INFO] [stdout] test config::oauth::tests::write_refreshed_credentials_preserves_unknown_fields ... ok
[INFO] [stdout] test config::oauth::tests::refresh_oauth_token_malformed_json_errors_with_context ... ok
[INFO] [stdout] test config::tests::load_adaptive_thinking_is_always_enabled ... ok
[INFO] [stdout] test config::tests::load_defaults_apply_when_no_config_and_no_env ... ok
[INFO] [stdout] test config::tests::load_effort_clamps_to_none_on_non_effort_capable_model ... ok
[INFO] [stdout] test config::tests::load_effort_clamps_xhigh_down_to_high_on_sonnet_4_6 ... ok
[INFO] [stdout] test config::tests::load_effort_env_beats_file ... ok
[INFO] [stdout] test config::tests::load_effort_env_overrides_per_model_default ... ok
[INFO] [stdout] test config::tests::load_effort_invalid_env_surfaces_parse_error ... ok
[INFO] [stdout] test config::tests::load_effort_file_picks_up_when_env_unset ... ok
[INFO] [stdout] test config::tests::load_env_api_key_beats_file_api_key ... ok
[INFO] [stdout] test config::tests::load_env_beats_config_file_field_by_field ... ok
[INFO] [stdout] test config::tests::load_env_overrides_every_client_field ... ok
[INFO] [stdout] test config::tests::load_file_api_key_used_when_env_is_empty ... ok
[INFO] [stdout] test config::tests::load_invalid_max_tokens_env_falls_through_to_file ... ok
[INFO] [stdout] test config::tests::load_prompt_cache_ttl_env_beats_file ... ok
[INFO] [stdout] test config::tests::load_prompt_cache_ttl_env_overrides_default ... ok
[INFO] [stdout] test config::tests::load_prompt_cache_ttl_file_picks_up_when_env_unset ... ok
[INFO] [stdout] test config::tests::load_prompt_cache_ttl_invalid_env_surfaces_parse_error ... ok
[INFO] [stdout] test config::tests::load_propagates_theme_resolution_error ... ok
[INFO] [stdout] test config::tests::load_propagates_invalid_config_file ... ok
[INFO] [stdout] test config::tests::load_theme_name_reflects_user_picked_base ... ok
[INFO] [stdout] test config::tests::load_user_config_supplies_values_without_env_overrides ... ok
[INFO] [stdout] test config::tests::prompt_cache_ttl_wire_shape ... ok
[INFO] [stdout] test config::tests::snapshot_copies_every_user_facing_field_and_drops_secret ... ok
[INFO] [stdout] test config::tests::thinking_config_adaptive_without_display_serializes_bare ... ok
[INFO] [stdout] test config::tests::thinking_config_adaptive_with_summarized_display_serializes ... ok
[INFO] [stdout] test file_tracker::tests::check_stat_full_match_passes ... ok
[INFO] [stdout] test config::tests::prompt_cache_ttl_rejects_unknown_tokens_with_actionable_error ... ok
[INFO] [stdout] test file_tracker::tests::check_stat_mtime_drift_produces_stored_hash ... ok
[INFO] [stdout] test config::tests::load_effort_default_follows_model_ceiling ... ok
[INFO] [stdout] test config::tests::prompt_cache_ttl_round_trips_through_serde_and_fromstr ... ok
[INFO] [stdout] test file_tracker::tests::check_stat_no_entry_carries_write_purpose_for_write_gate ... ok
[INFO] [stdout] test file_tracker::tests::clear_drops_recorded_reads_so_subsequent_snapshot_is_empty ... ok
[INFO] [stdout] test file_tracker::tests::check_stat_no_entry_errors_never_read ... ok
[INFO] [stdout] test file_tracker::tests::check_stat_size_drift_produces_stored_hash ... ok
[INFO] [stdout] test file_tracker::tests::check_stat_partial_view_errors_partial_read ... ok
[INFO] [stdout] test file_tracker::tests::gate_error_never_read_renders_with_path_and_edit_verb ... ok
[INFO] [stdout] test file_tracker::tests::file_snapshot_round_trips_through_json ... ok
[INFO] [stdout] test file_tracker::tests::gate_error_content_drifted_renders_with_path_and_modified_externally ... ok
[INFO] [stdout] test file_tracker::tests::gate_error_never_read_renders_with_write_verb ... ok
[INFO] [stdout] test file_tracker::tests::gate_error_partial_read_renders_with_path_and_full_read_required ... ok
[INFO] [stdout] test file_tracker::tests::last_view_partial_round_trips_through_json ... ok
[INFO] [stdout] test file_tracker::tests::record_modify_promotes_partial_view_to_full ... ok
[INFO] [stdout] test file_tracker::tests::record_modify_updates_existing_entry_with_new_hash ... ok
[INFO] [stdout] test file_tracker::tests::record_read_cache_hit_preserves_recorded_at_refreshes_mtime ... ok
[INFO] [stdout] test file_tracker::tests::record_read_changed_content_inserts_not_cache_hit ... ok
[INFO] [stdout] test file_tracker::tests::last_view_full_serializes_kind_only ... ok
[INFO] [stdout] test file_tracker::tests::record_read_partial_view_does_not_cache_hit ... ok
[INFO] [stdout] test file_tracker::tests::record_read_redundant_full_read_is_cache_hit ... ok
[INFO] [stdout] test file_tracker::tests::restore_verified_keeps_newer_recorded_at_on_duplicate_path ... ok
[INFO] [stdout] test file_tracker::tests::restore_verified_matching_stat_repopulates_entry ... ok
[INFO] [stdout] test file_tracker::tests::restore_verified_missing_file_drops_snapshot ... ok
[INFO] [stdout] test file_tracker::tests::restore_verified_mtime_drift_drops_snapshot ... ok
[INFO] [stdout] test file_tracker::tests::restore_verified_returns_paths_of_dropped_snapshots ... ok
[INFO] [stdout] test file_tracker::tests::record_modify_after_write_swallows_stat_failure_silently ... ok
[INFO] [stdout] test file_tracker::tests::restore_verified_size_drift_drops_snapshot ... ok
[INFO] [stdout] test file_tracker::tests::snapshot_all_empty_tracker_is_empty ... ok
[INFO] [stdout] test file_tracker::tests::snapshot_all_collects_every_tracked_file ... ok
[INFO] [stdout] test file_tracker::tests::verify_drift_bytes_divergent_rejects_content_drifted ... ok
[INFO] [stdout] test file_tracker::tests::record_read_first_full_read_inserts ... ok
[INFO] [stdout] test file_tracker::tests::record_modify_after_write_records_disk_state ... ok
[INFO] [stdout] test file_tracker::tests::record_read_full_after_partial_does_not_cache_hit ... ok
[INFO] [stdout] test file_tracker::tests::verify_drift_bytes_phantom_drift_passes ... ok
[INFO] [stdout] test message::tests::strip_trailing_thinking_inserts_placeholder_for_thinking_only ... ok
[INFO] [stdout] test message::tests::server_tool_use_round_trips_through_json ... ok
[INFO] [stdout] test message::tests::redacted_thinking_round_trips_through_json ... ok
[INFO] [stdout] test message::tests::strip_trailing_thinking_preserves_non_trailing ... ok
[INFO] [stdout] test file_tracker::tests::concurrent_record_read_does_not_corrupt_map ... ok
[INFO] [stdout] test message::tests::strip_trailing_thinking_removes_multiple_consecutive ... ok
[INFO] [stdout] test message::tests::strip_trailing_thinking_removes_thinking_at_end ... ok
[INFO] [stdout] test message::tests::thinking_round_trips_through_json ... ok
[INFO] [stdout] test message::tests::strip_trailing_thinking_skips_user_messages ... ok
[INFO] [stdout] test message::tests::tool_result_omits_is_error_when_false ... ok
[INFO] [stdout] test message::tests::strip_trailing_thinking_targets_only_last_assistant ... ok
[INFO] [stdout] test message::tests::tool_result_deserializes_missing_is_error_as_false ... ok
[INFO] [stdout] test message::tests::assistant_creates_assistant_role_with_text ... ok
[INFO] [stdout] test message::tests::tool_result_serializes_is_error_when_true ... ok
[INFO] [stdout] test model::tests::capability_flags_match_upstream_substring_predicates ... ok
[INFO] [stdout] test model::tests::default_effort_picks_highest_supported_tier_when_user_has_no_pick ... ok
[INFO] [stdout] test model::tests::display_name_appends_1m_context_suffix_on_1m_id ... ok
[INFO] [stdout] test message::tests::user_creates_user_role_with_text ... ok
[INFO] [stdout] test model::tests::display_name_known_plain_id_renders_row_label ... ok
[INFO] [stdout] test model::tests::display_name_unknown_id_falls_through_to_raw ... ok
[INFO] [stdout] test model::tests::effort_max_is_opus_only ... ok
[INFO] [stdout] test model::tests::lookup_ignores_1m_suffix_tag_for_matching ... ok
[INFO] [stdout] test model::tests::accepts_effort_matches_per_tier_capability_flag ... ok
[INFO] [stdout] test model::tests::lookup_picks_first_matching_substring_row ... ok
[INFO] [stdout] test model::tests::clamp_effort_picks_highest_supported_at_or_below_user_pick ... ok
[INFO] [stdout] test model::tests::display_name_dated_suffix_falls_through_to_substring_row ... ok
[INFO] [stdout] test model::tests::lookup_unknown_or_retired_model_family_is_absent ... ok
[INFO] [stdout] test model::tests::opus_4_7_uniquely_supports_xhigh ... ok
[INFO] [stdout] test model::tests::resolve_effort_clamps_pick_against_model_ceiling ... ok
[INFO] [stdout] test model::tests::resolve_effort_falls_back_to_model_default_when_pick_is_none ... ok
[INFO] [stdout] test model::tests::resolve_effort_is_none_on_no_tier_model ... ok
[INFO] [stdout] test model::tests::resolve_effort_passes_pick_through_when_model_accepts_it ... ok
[INFO] [stdout] test model::tests::resolved_model_id_into_inner_returns_wrapped_string ... ok
[INFO] [stdout] test model::tests::structured_outputs_flag_tracks_upstream_allowlist ... ok
[INFO] [stdout] test model::tests::supported_efforts_is_ascending_for_every_models_row ... ok
[INFO] [stdout] test prompt::environment::tests::current_date_matches_iso_format ... ok
[INFO] [stdout] test prompt::environment::tests::detect_shell_produces_basename ... ok
[INFO] [stdout] test prompt::environment::tests::detect_inside_repo_sets_is_git_true ... ok
[INFO] [stdout] test prompt::environment::tests::detect_os_version_contains_platform_and_version ... ok
[INFO] [stdout] test prompt::environment::tests::date_produces_formatted_string ... ok
[INFO] [stdout] test prompt::environment::tests::knowledge_cutoff_known_models ... ok
[INFO] [stdout] test prompt::environment::tests::detect_without_cwd_uses_unknown_and_skips_git ... ok
[INFO] [stdout] test prompt::environment::tests::knowledge_cutoff_unknown_model ... ok
[INFO] [stdout] test prompt::environment::tests::normalize_node_platform_known_values ... ok
[INFO] [stdout] test prompt::environment::tests::normalize_node_platform_unknown_value ... ok
[INFO] [stdout] test prompt::environment::tests::render_unknown_model_uses_fallback_description ... ok
[INFO] [stdout] test prompt::environment::tests::render_with_known_model_shows_all_fields ... ok
[INFO] [stdout] test prompt::environment::tests::detect_with_cwd_but_no_git_root_sets_is_git_false ... ok
[INFO] [stdout] test prompt::instructions::tests::candidate_slots_cwd_equals_root ... ok
[INFO] [stdout] test prompt::instructions::tests::candidate_slots_walks_root_to_cwd ... ok
[INFO] [stdout] test prompt::instructions::tests::candidate_slots_without_project_root_still_includes_global ... ok
[INFO] [stdout] test prompt::environment::tests::render_without_git_shows_false ... ok
[INFO] [stdout] test prompt::instructions::tests::load_files_absent_yields_empty ... ok
[INFO] [stdout] test prompt::instructions::tests::load_files_prefers_first_candidate ... ok
[INFO] [stdout] test prompt::instructions::tests::render_formats_files_with_header_and_preserves_order ... ok
[INFO] [stdout] test prompt::instructions::tests::load_files_collects_one_file_per_slot ... ok
[INFO] [stdout] test prompt::instructions::tests::load_files_skips_whitespace_only_files ... ok
[INFO] [stdout] test prompt::instructions::tests::load_discovers_claude_dir_instructions ... ok
[INFO] [stdout] test prompt::instructions::tests::load_uses_cwd_as_fallback_root_when_git_root_is_none ... ok
[INFO] [stdout] test prompt::instructions::tests::render_single_file ... ok
[INFO] [stdout] test prompt::instructions::tests::walk_root_to_cwd_outside_root_yields_root_only ... ok
[INFO] [stdout] test prompt::instructions::tests::walk_root_to_cwd_nested ... ok
[INFO] [stdout] test prompt::instructions::tests::walk_root_to_cwd_none_yields_root_only ... ok
[INFO] [stdout] test prompt::instructions::tests::walk_root_to_cwd_same_directory ... ok
[INFO] [stdout] test prompt::instructions::tests::load_files_falls_back_to_second_candidate ... ok
[INFO] [stdout] test prompt::tests::build_prompt_system_does_not_contain_user_instructions ... ok
[INFO] [stdout] test prompt::tests::build_prompt_system_contains_all_static_sections ... ok
[INFO] [stdout] test prompt::tests::build_prompt_sections_joined_with_double_newline ... ok
[INFO] [stdout] test prompt::tests::build_user_context_empty_claude_md_is_absent ... ok
[INFO] [stdout] test prompt::tests::build_user_context_with_claude_md ... ok
[INFO] [stdout] test prompt::tests::build_prompt_system_starts_with_intro ... ok
[INFO] [stdout] test prompt::tests::build_prompt_system_includes_model_name ... ok
[INFO] [stdout] test prompt::tests::prompt_constants_have_no_leading_whitespace ... ok
[INFO] [stdout] test session::actor::tests::run_appends_ai_title_after_record ... ok
[INFO] [stdout] test session::actor::tests::run_compact_acks_with_pre_compact_message_count ... ok
[INFO] [stdout] test prompt::tests::find_git_root_outside_repo ... ok
[INFO] [stdout] test prompt::tests::assemble_walks_root_to_cwd_for_instruction_discovery ... ok
[INFO] [stdout] test session::actor::tests::run_drains_burst_into_single_batch ... ok
[INFO] [stdout] test session::actor::tests::run_finish_idempotent_writes_one_summary ... ok
[INFO] [stdout] test session::actor::tests::run_first_record_seeds_ai_title_and_subsequent_does_not ... ok
[INFO] [stdout] test prompt::tests::assemble_in_git_repo_has_system_and_user_context ... ok
[INFO] [stdout] test prompt::tests::assemble_without_project_claude_md_keeps_system_clean ... ok
[INFO] [stdout] test session::actor::tests::run_record_then_finish_writes_header_message_summary_in_order ... ok
[INFO] [stdout] test session::actor::tests::run_set_manual_title_after_record_blocks_ai_title ... ok
[INFO] [stdout] test session::actor::tests::run_set_manual_title_alone_leaves_no_file_on_disk ... ok
[INFO] [stdout] test session::actor::tests::run_set_manual_title_then_record_replaces_first_prompt_title ... ok
[INFO] [stdout] test session::actor::tests::run_shutdown_exits_loop_even_with_live_sender_clones ... ok
[INFO] [stdout] test prompt::tests::find_git_root_inside_repo ... ok
[INFO] [stdout] test session::actor::tests::run_tool_metadata_with_default_short_circuits_without_writing ... ok
[INFO] [stdout] test session::actor::tests::run_compact_writes_boundary_and_synthetic_message_to_disk ... ok
[INFO] [stdout] test session::actor::tests::run_shutdown_flushes_preceding_record_in_same_batch ... ok
[INFO] [stdout] test session::actor::tests::surface_failure_no_failure_is_none ... ok
[INFO] [stdout] test session::chain::tests::resolve_cycle_truncates_chain_without_looping ... ok
[INFO] [stdout] test session::chain::tests::resolve_duplicate_uuid_keeps_latest_insertion ... ok
[INFO] [stdout] test session::actor::tests::surface_failure_first_call_after_record_produces_message_then_silences ... ok
[INFO] [stdout] test session::actor::tests::run_two_set_manual_titles_keep_only_the_last ... ok
[INFO] [stdout] test session::chain::tests::resolve_empty_builder_yields_no_chain ... ok
[INFO] [stdout] test session::chain::tests::resolve_linear_chain_preserves_root_to_tip_order ... ok
[INFO] [stdout] test session::chain::tests::resolve_orphan_parent_terminates_chain_at_dangling_node ... ok
[INFO] [stdout] test session::chain::tests::resolve_self_loop_breaks_at_repeat_visit ... ok
[INFO] [stdout] test session::chain::tests::resolve_fork_breaks_timestamp_tie_by_uuid_order ... ok
[INFO] [stdout] test session::chain::tests::resolve_fork_picks_newest_leaf ... ok
[INFO] [stdout] test session::chain::tests::resolve_single_message_is_self_as_tip ... ok
[INFO] [stdout] test session::chain::tests::resolve_walk_breaks_when_leaf_chain_re_enters_cycle ... ok
[INFO] [stdout] test session::display::tests::display_title_uses_title_when_present_else_untitled_marker ... ok
[INFO] [stdout] test session::display::tests::format_metadata_line_includes_msg_count_branch_and_project_when_supplied ... ok
[INFO] [stdout] test session::display::tests::format_metadata_line_omits_msg_count_branch_and_project_when_absent ... ok
[INFO] [stdout] test session::display::tests::format_metadata_line_singular_msg_unit_at_count_one ... ok
[INFO] [stdout] test session::display::tests::format_relative_time_pluralizes_units_and_falls_back_to_iso_date_past_30_days ... ok
[INFO] [stdout] test session::entry::tests::compact_missing_instructions_defaults_to_none ... ok
[INFO] [stdout] test session::display::tests::id_prefix_returns_first_eight_bytes_or_full_id_when_shorter ... ok
[INFO] [stdout] test client::anthropic::tests::stream_message_receiver_dropped_mid_stream_does_not_deadlock ... ok
[INFO] [stdout] test session::entry::tests::compact_omits_instructions_when_none ... ok
[INFO] [stdout] test session::entry::tests::compact_round_trips_with_instructions ... ok
[INFO] [stdout] test session::entry::tests::entries_parse_from_jsonl_lines ... ok
[INFO] [stdout] test session::entry::tests::file_snapshot_round_trips_with_inlined_payload_fields ... ok
[INFO] [stdout] test session::entry::tests::file_snapshot_unknown_field_is_ignored_for_forward_compat ... ok
[INFO] [stdout] test session::entry::tests::header_missing_version_defaults_to_current ... ok
[INFO] [stdout] test session::entry::tests::header_round_trips_with_correct_discriminator_and_version ... ok
[INFO] [stdout] test session::entry::tests::message_omits_parent_uuid_when_none ... ok
[INFO] [stdout] test session::entry::tests::message_missing_parent_uuid_defaults_to_none ... ok
[INFO] [stdout] test session::entry::tests::summary_round_trips_without_title_field ... ok
[INFO] [stdout] test session::entry::tests::message_round_trips_with_uuid_and_parent_uuid ... ok
[INFO] [stdout] test session::entry::tests::title_round_trips_with_source ... ok
[INFO] [stdout] test session::entry::tests::tool_result_metadata_round_trips_with_title_and_replacements ... ok
[INFO] [stdout] test session::entry::tests::tool_result_metadata_parses_with_unknown_metadata_fields ... ok
[INFO] [stdout] test session::entry::tests::unknown_discriminator_parses_as_unknown_variant ... ok
[INFO] [stdout] test session::handle::tests::append_ai_title_actor_gone_surfaces_failure_once_then_silences ... ok
[INFO] [stdout] test session::handle::tests::compact_actor_drops_ack_surfaces_actor_gone_failure ... ok
[INFO] [stdout] test session::handle::tests::compact_actor_ack_path_returns_clean_outcome ... ok
[INFO] [stdout] test session::handle::tests::compact_actor_gone_surfaces_failure_with_zero_pre_count ... ok
[INFO] [stdout] test session::handle::tests::append_ai_title_writes_title_entry_and_supersedes_first_prompt_on_list ... ok
[INFO] [stdout] test session::handle::tests::finalize_fails_when_actor_dead ... ok
[INFO] [stdout] test session::handle::tests::finalize_writes_summary_then_succeeds ... ok
[INFO] [stdout] test session::handle::tests::finish_actor_gone_surfaces_failure_once_then_silences ... ok
[INFO] [stdout] test session::handle::tests::compact_writes_boundary_and_acks_with_pre_count ... ok
[INFO] [stdout] test session::handle::tests::finish_empty_session_leaves_no_file ... ok
[INFO] [stdout] test session::entry::tests::compact_unknown_field_is_ignored_for_forward_compat ... ok
[INFO] [stdout] test session::handle::tests::finish_writes_summary_with_count ... ok
[INFO] [stdout] test session::handle::tests::finish_persists_one_file_snapshot_per_tracked_file ... ok
[INFO] [stdout] test session::handle::tests::finish_skips_summary_on_empty_resume ... ok
[INFO] [stdout] test session::handle::tests::record_message_actor_gone_carries_underlying_flush_error ... ok
[INFO] [stdout] test session::handle::tests::record_message_actor_gone_surfaces_after_prior_flush_failure_was_surfaced ... ok
[INFO] [stdout] test session::handle::tests::record_message_actor_gone_surfaces_failure_once_then_silences ... ok
[INFO] [stdout] test session::handle::tests::record_message_seeds_ai_title_only_for_first_user_text ... ok
[INFO] [stdout] test session::handle::tests::record_message_writes_title_before_first_user_message ... ok
[INFO] [stdout] test session::handle::tests::record_tool_metadata_batch_actor_drops_ack_surfaces_actor_gone_failure ... ok
[INFO] [stdout] test session::handle::tests::record_tool_metadata_batch_actor_gone_surfaces_failure_once_then_silences ... ok
[INFO] [stdout] test session::handle::tests::record_message_resumed_session_does_not_seed_ai_title ... ok
[INFO] [stdout] test session::handle::tests::record_tool_metadata_batch_all_default_acks_without_writing ... ok
[INFO] [stdout] test session::handle::tests::record_tool_metadata_batch_writes_all_non_default_in_one_cmd ... ok
[INFO] [stdout] test session::handle::tests::resume_drops_snapshots_for_missing_files ... ok
[INFO] [stdout] test session::handle::tests::resume_drops_assistant_message_with_only_unresolved_tool_use ... ok
[INFO] [stdout] test session::handle::tests::resume_drops_drifted_snapshots ... ok
[INFO] [stdout] test session::handle::tests::resume_preserves_parent_chain_on_next_record ... ok
[INFO] [stdout] test session::handle::tests::resume_loads_messages_and_keeps_session_id ... ok
[INFO] [stdout] test session::handle::tests::resume_restores_unchanged_snapshots ... ok
[INFO] [stdout] test session::handle::tests::resume_works_on_unfinished_session ... ok
[INFO] [stdout] test session::handle::tests::resume_title_only_session_keeps_title_on_next_message ... ok
[INFO] [stdout] test session::handle::tests::roll_into_swaps_to_target_and_finalizes_old ... ok
[INFO] [stdout] test session::handle::tests::roll_into_swaps_tracker_snapshots_between_sessions ... ok
[INFO] [stdout] test session::actor::tests::run_full_turn_produces_byte_compatible_jsonl ... ok
[INFO] [stdout] test session::handle::tests::roll_persists_tracker_snapshots_into_old_session_then_clears_tracker ... ok
[INFO] [stdout] test session::handle::tests::roll_swaps_session_in_place_and_finalizes_old_with_summary ... ok
[INFO] [stdout] test session::handle::tests::set_manual_title_actor_gone_surfaces_failure_but_still_latches_flag ... ok
[INFO] [stdout] test session::handle::tests::set_manual_title_writes_user_provided_title_and_latches_shared_flag ... ok
[INFO] [stdout] test session::actor::tests::run_compact_flush_error_surfaces_in_ack ... ok
[INFO] [stdout] test file_tracker::tests::lock_recovers_from_poisoned_mutex ... ok
[INFO] [stdout] test session::handle::tests::shared_state_record_flush_failure_recovers_from_poisoned_mutex ... ok
[INFO] [stdout] test session::handle::tests::shutdown_is_safe_to_call_after_dead_handle ... ok
[INFO] [stdout] test session::handle::tests::shutdown_after_record_completes_after_actor_exits ... ok
[INFO] [stdout] test session::handle::tests::resume_empty_session_errors ... ok
[INFO] [stdout] test session::handle::tests::roll_into_rejects_resuming_into_live_session_id ... ok
[INFO] [stdout] test session::handle::tests::resume_all_messages_sanitized_errors ... ok
[INFO] [stdout] test session::handle::tests::roll_into_target_load_failure_keeps_live_session_intact ... ok
[INFO] [stdout] test session::actor::tests::run_flush_error_records_failure_in_ack ... ok
[INFO] [stdout] test session::handle::tests::shared_state_last_flush_failure_recovers_from_poisoned_mutex ... ok
[INFO] [stdout] test session::history::tests::walk_transcript_drops_whitespace_only_text ... ok
[INFO] [stdout] test session::history::tests::walk_transcript_emits_server_tool_use_as_tool_call ... ok
[INFO] [stdout] test session::history::tests::walk_transcript_drops_whitespace_only_thinking ... ok
[INFO] [stdout] test session::handle::tests::shutdown_logs_cancellation_when_actor_task_aborted ... ok
[INFO] [stdout] test session::history::tests::walk_transcript_emits_thinking_and_drops_redacted ... ok
[INFO] [stdout] test session::handle::tests::start_does_not_materialize_file_until_first_record ... ok
[INFO] [stdout] test session::history::tests::walk_transcript_emits_user_and_assistant_text ... ok
[INFO] [stdout] test session::history::tests::walk_transcript_empty_yields_no_interactions ... ok
[INFO] [stdout] test session::history::tests::walk_transcript_joins_adjacent_text_blocks_with_newline ... ok
[INFO] [stdout] test session::history::tests::walk_transcript_flushes_text_before_tool_call ... ok
[INFO] [stdout] test session::history::tests::walk_transcript_orphan_result_in_user_only_message ... ok
[INFO] [stdout] test session::history::tests::walk_transcript_pairs_tool_call_and_result_inline ... ok
[INFO] [stdout] test session::history::tests::walk_transcript_pairs_multiple_calls_in_order_even_across_batched_results ... ok
[INFO] [stdout] test session::history::tests::walk_transcript_preserves_orphan_tool_result_at_original_position ... ok
[INFO] [stdout] test session::list_view::tests::render_sessions_empty_all_scope_omits_project_qualifier ... ok
[INFO] [stdout] test session::list_view::tests::render_sessions_empty_project_scope_mentions_project ... ok
[INFO] [stdout] test session::list_view::tests::render_sessions_leaves_title_untruncated_without_term_width ... ok
[INFO] [stdout] test session::list_view::tests::render_list_appends_more_footer_when_capped ... ok
[INFO] [stdout] test session::list_view::tests::render_list_empty_store_shows_no_sessions_notice ... ok
[INFO] [stdout] test session::list_view::tests::render_sessions_populated_row_has_header_prefix_and_title_defaults ... ok
[INFO] [stdout] test session::list_view::tests::render_list_omits_more_footer_when_total_equals_rendered ... ok
[INFO] [stdout] test session::list_view::tests::render_sessions_all_mode_inserts_project_column_aligned_to_widest_cwd ... ok
[INFO] [stdout] test session::list_view::tests::render_sessions_skips_truncation_when_title_budget_below_minimum ... ok
[INFO] [stdout] test session::list_view::tests::render_sessions_truncates_title_when_term_width_too_narrow ... ok
[INFO] [stdout] test session::path::tests::sanitize_cwd_distinguishes_non_utf8_paths_with_same_lossy_form ... ok
[INFO] [stdout] test session::path::tests::sanitize_cwd_is_deterministic ... ok
[INFO] [stdout] test session::list_view::tests::render_sessions_project_col_width_respects_maximum ... ok
[INFO] [stdout] test session::path::tests::sanitize_cwd_preserves_dots_underscores_and_dashes ... ok
[INFO] [stdout] test session::path::tests::sanitize_cwd_replaces_other_reserved_chars_with_dash ... ok
[INFO] [stdout] test session::path::tests::sanitize_cwd_replaces_slashes_and_trims_leading ... ok
[INFO] [stdout] test session::path::tests::sanitize_cwd_is_unknown_for_empty_result ... ok
[INFO] [stdout] test session::path::tests::sanitize_cwd_replaces_backslash_and_drive_letter ... ok
[INFO] [stdout] test session::resolver::tests::format_session_id_preview_caps_at_five_and_appends_ellipsis ... ok
[INFO] [stdout] test session::path::tests::sanitize_cwd_truncation_distinguishes_similar_long_paths ... ok
[INFO] [stdout] test session::resolver::tests::format_session_id_preview_truncates_ids_to_eight_chars ... ok
[INFO] [stdout] test session::resolver::tests::normalize_resume_arg_classifies_path_arguments ... ok
[INFO] [stdout] test session::resolver::tests::normalize_resume_arg_keeps_uuid_shaped_prefix_as_prefix ... ok
[INFO] [stdout] test session::resolver::tests::normalize_resume_arg_maps_none_to_fresh ... ok
[INFO] [stdout] test session::resolver::tests::format_session_id_preview_no_ellipsis_at_limit ... ok
[INFO] [stdout] test session::resolver::tests::normalize_resume_arg_trims_valid_prefix ... ok
[INFO] [stdout] test session::path::tests::sanitize_cwd_truncates_long_paths_with_stable_hash_suffix ... ok
[INFO] [stdout] test session::resolver::tests::normalize_resume_arg_maps_bare_flag_to_latest ... ok
[INFO] [stdout] test session::resolver::tests::resolve_prefix_to_info_ambiguous_lists_short_ids ... ok
[INFO] [stdout] test session::list_view::tests::render_sessions_shows_message_count_and_title_when_available ... ok
[INFO] [stdout] test session::resolver::tests::resolve_prefix_to_info_no_match_returns_ok_none ... ok
[INFO] [stdout] test session::resolver::tests::resolve_prefix_to_info_filters_live_id_so_caller_layers_its_own_message ... ok
[INFO] [stdout] test session::resolver::tests::resolve_prefix_to_info_widens_to_other_projects_when_current_misses ... ok
[INFO] [stdout] test session::handle::tests::shutdown_logs_actor_panic_instead_of_silently_discarding ... ok
[INFO] [stdout] test session::handle::tests::shutdown_surfaces_panic_from_stand_in_actor ... ok
[INFO] [stdout] test session::resolver::tests::normalize_resume_arg_rejects_empty_and_whitespace_prefix ... ok
[INFO] [stdout] test session::resolver::tests::resolve_session_all_widens_scope_to_list_all ... ok
[INFO] [stdout] test session::resolver::tests::resolve_session_prefix_errors_on_no_match ... ok
[INFO] [stdout] test session::resolver::tests::resolve_session_bare_continue_errors_without_sessions ... ok
[INFO] [stdout] test session::resolver::tests::resolve_session_path_errors_on_missing_file ... ok
[INFO] [stdout] test session::resolver::tests::resolve_session_starts_fresh_when_no_continue_flag ... ok
[INFO] [stdout] test session::resolver::tests::resolve_session_prefix_resumes_single_match ... ok
[INFO] [stdout] test session::resolver::tests::resolve_session_resumes_from_external_path ... ok
[INFO] [stdout] test session::sanitize::tests::collapse_consecutive_roles_merges_runs_and_preserves_alternation ... ok
[INFO] [stdout] test session::sanitize::tests::drop_orphan_tool_results_keeps_results_paired_to_server_tool_use ... ok
[INFO] [stdout] test session::sanitize::tests::drop_orphan_tool_results_removes_user_block_without_matching_call ... ok
[INFO] [stdout] test session::sanitize::tests::drop_unresolved_tool_uses_keeps_resolved_calls_and_ignores_user_role ... ok
[INFO] [stdout] test session::sanitize::tests::collapse_consecutive_roles_noop_on_alternating_transcript ... ok
[INFO] [stdout] test session::sanitize::tests::insert_resume_sentinels_appends_assistant_after_tool_result_only_user ... ok
[INFO] [stdout] test session::sanitize::tests::drop_orphan_tool_results_drops_emptied_messages ... ok
[INFO] [stdout] test session::handle::tests::shutdown_recovers_from_poisoned_actor_join_mutex ... ok
[INFO] [stdout] test session::sanitize::tests::drop_unresolved_tool_uses_removes_assistant_block_without_matching_result ... ok
[INFO] [stdout] test session::sanitize::tests::drop_unresolved_tool_uses_treats_server_tool_use_like_tool_use ... ok
[INFO] [stdout] test session::sanitize::tests::insert_resume_sentinels_prepends_user_when_leading_assistant ... ok
[INFO] [stdout] test session::sanitize::tests::insert_resume_sentinels_skips_append_when_trailing_user_has_text ... ok
[INFO] [stdout] test session::sanitize::tests::sanitize_collapses_adjacent_assistants_after_orphan_user_drop ... ok
[INFO] [stdout] test session::sanitize::tests::sanitize_drops_orphan_when_assistant_tool_use_was_dropped ... ok
[INFO] [stdout] test session::sanitize::tests::insert_resume_sentinels_noop_on_empty_input ... ok
[INFO] [stdout] test session::sanitize::tests::sanitize_pairs_tool_use_with_result_and_appends_continuation_sentinel ... ok
[INFO] [stdout] test session::sanitize::tests::sanitize_noop_for_clean_transcript ... ok
[INFO] [stdout] test session::state::tests::commit_compact_clears_resume_anchor_so_finish_writes_summary ... ok
[INFO] [stdout] test session::sanitize::tests::sanitize_prepends_head_sentinel_when_leading_user_is_dropped ... ok
[INFO] [stdout] test session::state::tests::commit_compact_marks_first_user_prompt_seen_so_post_compact_record_skips_title ... ok
[INFO] [stdout] test session::state::tests::commit_compact_resets_chain_and_message_count ... ok
[INFO] [stdout] test session::state::tests::compact_entries_writes_boundary_and_synthetic_message_without_committing ... ok
[INFO] [stdout] test session::state::tests::extract_user_text_returns_first_non_empty_text_from_user_role_only ... ok
[INFO] [stdout] test session::state::tests::compact_entries_omits_instructions_when_none ... ok
[INFO] [stdout] test session::sanitize::tests::sanitize_collapses_adjacent_users_after_empty_assistant_drop ... ok
[INFO] [stdout] test session::sanitize::tests::sanitize_drops_orphan_tool_result_block_and_keeps_siblings ... ok
[INFO] [stdout] test session::sanitize::tests::sanitize_drops_user_message_with_only_orphan_tool_result ... ok
[INFO] [stdout] test session::state::tests::finish_entries_after_record_produces_summary_with_count ... ok
[INFO] [stdout] test session::state::tests::finish_entries_pending_writer_is_empty_and_marks_finished ... ok
[INFO] [stdout] test session::state::tests::flush_entries_active_writer_flush_failure_transitions_to_broken ... ok
[INFO] [stdout] test session::state::tests::finish_entries_skips_summary_on_empty_resume ... ok
[INFO] [stdout] test session::state::tests::finish_entries_emits_one_file_snapshot_per_tracked_file ... ok
[INFO] [stdout] test session::state::tests::format_current_dir_err_falls_back_to_unknown ... ok
[INFO] [stdout] test session::state::tests::parse_git_branch_keeps_branch_names_and_drops_everything_else ... ok
[INFO] [stdout] test session::state::tests::queue_message_entries_assistant_message_skips_title ... ok
[INFO] [stdout] test session::state::tests::flush_entries_broken_writer_reopens_file_and_appends ... ok
[INFO] [stdout] test session::state::tests::queue_message_entries_seeds_ai_title_on_first_user_text ... ok
[INFO] [stdout] test session::state::tests::queue_message_entries_subsequent_user_message_skips_title_and_chains_uuid ... ok
[INFO] [stdout] test session::state::tests::format_current_dir_ok_renders_path ... ok
[INFO] [stdout] test session::state::tests::finish_entries_is_idempotent ... ok
[INFO] [stdout] test session::state::tests::truncate_title_multibyte_respects_character_count ... ok
[INFO] [stdout] test session::state::tests::queue_message_entries_tool_result_only_user_does_not_seed_title ... ok
[INFO] [stdout] test session::state::tests::truncate_title_returns_at_most_max_len_chars_after_first_line_trim ... ok
[INFO] [stdout] test session::state::tests::try_defer_title_pending_accepts_and_overwrites_previous_value ... ok
[INFO] [stdout] test session::state::tests::flush_entries_pending_create_failure_preserves_deferred_title ... ok
[INFO] [stdout] test session::state::tests::current_git_branch_outside_a_repo_returns_none ... ok
[INFO] [stdout] test session::store::tests::append_writes_multiple_entries ... ok
[INFO] [stdout] test session::state::tests::try_defer_title_active_rejects_with_title ... ok
[INFO] [stdout] test session::state::tests::try_defer_title_broken_rejects_with_title ... ok
[INFO] [stdout] test session::store::tests::create_rejects_non_header_entry ... ok
[INFO] [stdout] test session::store::tests::create_fails_when_file_already_exists ... ok
[INFO] [stdout] test session::store::tests::delete_refuses_when_id_matches_live_session ... ok
[INFO] [stdout] test session::store::tests::delete_rejects_invalid_session_ids ... ok
[INFO] [stdout] test session::store::tests::delete_falls_through_to_other_project_subdirectories ... ok
[INFO] [stdout] test session::store::tests::create_sets_user_only_file_permissions_on_unix ... ok
[INFO] [stdout] test session::store::tests::delete_removes_the_session_file_from_disk ... ok
[INFO] [stdout] test session::store::tests::find_session_path_errors_for_unknown_session ... ok
[INFO] [stdout] test session::store::tests::create_writes_header_to_new_file ... ok
[INFO] [stdout] test session::store::tests::find_session_path_falls_back_to_other_projects ... ok
[INFO] [stdout] test session::store::tests::list_all_spans_every_project_subdirectory ... ok
[INFO] [stdout] test session::store::tests::list_absent_title_and_exit_fields_are_none ... ok
[INFO] [stdout] test session::store::tests::list_orders_sessions_by_mtime_newest_first ... ok
[INFO] [stdout] test session::store::tests::list_paged_unbounded_returns_total_equal_to_len ... ok
[INFO] [stdout] test session::store::tests::list_paged_caps_at_limit_keeping_most_recent ... ok
[INFO] [stdout] test session::store::tests::list_paged_zero_limit_yields_no_rows_but_full_total ... ok
[INFO] [stdout] test session::store::tests::list_picks_latest_title_when_re_appended ... ok
[INFO] [stdout] test session::store::tests::list_skips_non_session_files_and_malformed_jsonl ... ok
[INFO] [stdout] test session::store::tests::load_session_data_breaks_chain_walk_on_cycle ... ok
[INFO] [stdout] test session::store::tests::load_session_data_nonexistent_session_errors ... ok
[INFO] [stdout] test session::store::tests::list_mtime_overrides_header_created_at_order ... ok
[INFO] [stdout] test session::store::tests::list_is_scoped_to_current_project ... ok
[INFO] [stdout] test session::resolver::tests::resolve_session_prefix_reports_ambiguous_matches ... ok
[INFO] [stdout] test session::store::tests::load_session_data_includes_only_messages_with_last_uuid ... ok
[INFO] [stdout] test session::store::tests::load_session_data_prefers_later_duplicate_uuid ... ok
[INFO] [stdout] test session::store::tests::delete_errors_when_session_file_is_missing ... ok
[INFO] [stdout] test session::store::tests::load_session_data_picks_newest_leaf_on_fork ... ok
[INFO] [stdout] test session::store::tests::load_session_data_recovers_from_missing_trailing_newline ... ok
[INFO] [stdout] test session::store::tests::load_session_data_rejects_malicious_session_ids ... ok
[INFO] [stdout] test session::store::tests::load_session_data_terminates_at_orphan_parent_reference ... ok
[INFO] [stdout] test session::store::tests::load_session_data_rejects_future_format_version ... ok
[INFO] [stdout] test session::store::tests::load_session_data_skips_corrupt_empty_and_unknown_lines ... ok
[INFO] [stdout] test session::store::tests::open_append_fails_for_nonexistent_session ... ok
[INFO] [stdout] test session::store::tests::load_session_data_recovers_from_truncated_utf8_at_eof ... ok
[INFO] [stdout] test session::store::tests::open_append_allows_concurrent_resumes_without_blocking ... ok
[INFO] [stdout] test session::store::tests::open_append_writes_to_existing_file ... ok
[INFO] [stdout] test session::store::tests::read_session_id_from_path_errors_when_file_missing ... ok
[INFO] [stdout] test session::store::tests::read_session_id_from_path_rejects_non_header_first_line ... ok
[INFO] [stdout] test session::store::tests::read_session_id_from_path_rejects_unparsable_first_line ... ok
[INFO] [stdout] test session::store::tests::list_finds_ai_title_buried_between_head_and_tail ... ok
[INFO] [stdout] test session::store::tests::open_creates_private_dirs_with_mode_0o700_on_unix ... ok
[INFO] [stdout] test session::title_generator::tests::generate_and_record_alive_session_writer_failure_surfaces_as_error ... ok
[INFO] [stdout] test session::title_generator::tests::generate_and_record_conversational_reply_bails_without_updating_title ... ok
[INFO] [stdout] test session::title_generator::tests::generate_and_record_http_error_bails_with_context ... ok
[INFO] [stdout] test session::title_generator::tests::generate_and_record_post_finalize_actor_gone_is_silent ... ok
[INFO] [stdout] test session::store::tests::open_uses_xdg_data_home_when_set ... ok
[INFO] [stdout] test session::store::tests::read_session_id_from_path_produces_header_session_id ... ok
[INFO] [stdout] test session::store::tests::load_session_data_resets_sidecars_at_compact_boundary ... ok
[INFO] [stdout] test session::store::tests::open_falls_back_to_home_local_share_when_xdg_unset ... ok
[INFO] [stdout] test session::title_generator::tests::parse_title_errors_on_empty_title_field ... ok
[INFO] [stdout] test session::title_generator::tests::parse_title_trims_whitespace_inside_json_envelope ... ok
[INFO] [stdout] test session::title_generator::tests::parse_title_errors_on_empty_response ... ok
[INFO] [stdout] test session::title_generator::tests::parse_title_unwraps_bare_code_fence ... ok
[INFO] [stdout] test session::title_generator::tests::parse_title_unwraps_json_code_fence ... ok
[INFO] [stdout] test session::title_generator::tests::parse_title_extracts_json_title_field ... ok
[INFO] [stdout] test session::title_generator::tests::parse_title_errors_on_plain_text_response ... ok
[INFO] [stdout] test session::title_generator::tests::generate_and_record_happy_path_appends_title_and_notifies_sink ... ok
[INFO] [stdout] test session::title_generator::tests::generate_and_record_skips_emit_when_manual_title_was_set_during_haiku_call ... ok
[INFO] [stdout] test session::title_generator::tests::strip_code_fence_handles_language_tag ... ok
[INFO] [stdout] test session::title_generator::tests::generate_and_record_unwraps_code_fenced_json_envelope ... ok
[INFO] [stdout] test session::title_generator::tests::strip_code_fence_handles_no_opening_newline ... ok
[INFO] [stdout] test session::title_generator::tests::strip_code_fence_leaves_unwrapped_text_alone ... ok
[INFO] [stdout] test session::title_generator::tests::truncate_prompt_keeps_the_tail_of_long_text ... ok
[INFO] [stdout] test session::title_generator::tests::truncate_for_log_passes_short_strings_through ... ok
[INFO] [stdout] test session::title_generator::tests::truncate_prompt_passes_short_text_through ... ok
[INFO] [stdout] test session::title_generator::tests::truncate_for_log_caps_long_strings_with_ellipsis ... ok
[INFO] [stdout] test session::title_generator::tests::title_output_format_matches_title_envelope_shape ... ok
[INFO] [stdout] test session::title_generator::tests::spawn_success_notifies_sink_with_session_title_event ... ok
[INFO] [stdout] test session::title_generator::tests::truncate_prompt_respects_char_boundaries_for_multibyte ... ok
[INFO] [stdout] test slash::clear::tests::classify_is_mutating ... ok
[INFO] [stdout] test slash::clear::tests::execute_produces_clear_action_without_local_side_effects ... ok
[INFO] [stdout] test slash::clear::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::compact::tests::classify_is_always_mutating ... ok
[INFO] [stdout] test slash::compact::tests::execute_bare_forwards_compact_action_with_no_instructions ... ok
[INFO] [stdout] test slash::compact::tests::execute_whitespace_only_args_treated_as_bare ... ok
[INFO] [stdout] test slash::compact::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::config::tests::display_path_existing_file_is_tildified_value_only ... ok
[INFO] [stdout] test slash::config::tests::build_modal_height_accounts_for_both_sections ... ok
[INFO] [stdout] test slash::config::tests::display_path_missing_file_marks_not_found_after_path ... ok
[INFO] [stdout] test slash::config::tests::display_path_none_renders_not_configured ... ok
[INFO] [stdout] test slash::config::tests::execute_opens_a_modal_via_ctx_and_pushes_no_chat_block ... ok
[INFO] [stdout] test slash::config::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::compact::tests::execute_with_args_forwards_trimmed_instructions ... ok
[INFO] [stdout] test slash::confirm::tests::render_paints_title_identity_metadata_and_footer ... ok
[INFO] [stdout] test slash::confirm::tests::render_does_not_panic_at_minimum_widths ... ok
[INFO] [stdout] test slash::confirm::tests::render_appends_error_row_when_previous_attempt_failed ... ok
[INFO] [stdout] test slash::confirm::tests::enter_press_is_an_alias_for_y_and_runs_delete ... ok
[INFO] [stdout] test slash::confirm::tests::n_press_cancels_without_running_delete ... ok
[INFO] [stdout] test slash::delete::tests::classify_is_always_mutating ... ok
[INFO] [stdout] test slash::confirm::tests::uppercase_y_also_confirms ... ok
[INFO] [stdout] test slash::confirm::tests::confirm_failure_latches_error_until_a_deliberate_y_or_n_choice ... ok
[INFO] [stdout] test slash::delete::tests::execute_typed_arg_unique_match_pushes_confirm_modal ... ok
[INFO] [stdout] test slash::delete::tests::echoes_input_suppressed_on_bare_form_and_active_on_typed_arg ... ok
[INFO] [stdout] test slash::confirm::tests::unrecognized_keys_consume_silently_without_running_delete ... ok
[INFO] [stdout] test slash::confirm::tests::y_press_runs_delete_and_submits_with_chat_confirmation ... ok
[INFO] [stdout] test slash::delete::tests::execute_bare_returns_friendly_error_about_missing_id ... ok
[INFO] [stdout] test slash::delete::tests::execute_ambiguous_prefix_lists_short_ids_in_error ... ok
[INFO] [stdout] test slash::delete::tests::metadata_line_omits_project_when_cwd_is_empty ... ok
[INFO] [stdout] test slash::delete::tests::metadata_line_includes_tildified_project_when_cwd_is_non_empty ... ok
[INFO] [stdout] test slash::delete::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::delete::tests::execute_widens_to_other_projects_when_current_project_misses ... ok
[INFO] [stdout] test slash::delete::tests::execute_with_live_id_prefix_returns_distinct_live_session_error ... ok
[INFO] [stdout] test slash::diff::tests::collect_diff_in_errors_outside_a_repo ... ok
[INFO] [stdout] test slash::delete::tests::execute_with_live_id_prefix_returns_other_match_when_one_exists ... ok
[INFO] [stdout] test slash::delete::tests::execute_with_unknown_prefix_returns_friendly_error ... ok
[INFO] [stdout] test session::state::tests::current_git_branch_in_a_real_repo_returns_the_branch_name ... ok
[INFO] [stdout] test slash::diff::tests::execute_in_outside_a_repo_errors ... ok
[INFO] [stdout] test slash::diff::tests::format_diff_both_empty_yields_empty_string ... ok
[INFO] [stdout] test slash::diff::tests::format_diff_combined_separates_with_blank_line ... ok
[INFO] [stdout] test slash::diff::tests::format_diff_keeps_trailing_whitespace_on_diff_lines ... ok
[INFO] [stdout] test slash::diff::tests::format_diff_tracked_only_renders_verbatim ... ok
[INFO] [stdout] test slash::diff::tests::format_diff_untracked_only_lists_files_under_heading ... ok
[INFO] [stdout] test slash::diff::tests::format_size_picks_unit_and_truncates_to_one_decimal ... ok
[INFO] [stdout] test slash::diff::tests::git_failure_message_falls_back_to_synthetic_when_stderr_blank ... ok
[INFO] [stdout] test slash::diff::tests::git_failure_message_passes_through_trimmed_stderr ... ok
[INFO] [stdout] test slash::diff::tests::collect_diff_in_fresh_repo_lists_untracked_files ... ok
[INFO] [stdout] test slash::diff::tests::collect_diff_in_fresh_repo_is_empty_when_nothing_staged ... ok
[INFO] [stdout] test slash::diff::tests::inside_git_repo_is_false_outside_a_repo ... ok
[INFO] [stdout] test slash::diff::tests::execute_in_clean_repo_pushes_no_changes_marker ... ok
[INFO] [stdout] test slash::diff::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::diff::tests::has_head_is_false_in_fresh_repo_with_no_commits ... ok
[INFO] [stdout] test session::title_generator::tests::spawn_error_does_not_emit_session_title_event ... ok
[INFO] [stdout] test slash::diff::tests::collect_diff_in_separates_tracked_changes_from_untracked_list ... ok
[INFO] [stdout] test slash::diff::tests::collect_diff_in_after_commit_shows_unstaged_changes ... ok
[INFO] [stdout] test slash::effort::tests::classify_splits_on_args ... ok
[INFO] [stdout] test slash::diff::tests::truncate_under_or_at_cap_is_unchanged ... ok
[INFO] [stdout] test slash::effort::tests::complete_arg_empty_prefix_lists_full_ladder_in_intensity_order ... ok
[INFO] [stdout] test slash::effort::tests::complete_arg_is_case_insensitive ... ok
[INFO] [stdout] test slash::effort::tests::complete_arg_prefix_match_pulls_xhigh_above_max_substring ... ok
[INFO] [stdout] test slash::effort::tests::complete_arg_substring_match_lands_after_prefix_tier ... ok
[INFO] [stdout] test slash::effort::tests::execute_auto_is_unknown ... ok
[INFO] [stdout] test slash::diff::tests::execute_in_dirty_repo_pushes_diff_text ... ok
[INFO] [stdout] test slash::diff::tests::run_git_in_propagates_stderr_on_failure ... ok
[INFO] [stdout] test slash::effort::tests::execute_no_args_on_no_tier_model_errors_with_recovery_hint ... ok
[INFO] [stdout] test slash::effort::tests::execute_no_args_opens_slider_via_ctx_and_pushes_no_chat_block ... ok
[INFO] [stdout] test slash::effort::tests::execute_unknown_level_errors_listing_valid_options ... ok
[INFO] [stdout] test slash::effort::tests::execute_with_level_forwards_swap_config_with_effort_only ... ok
[INFO] [stdout] test slash::effort::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::effort::tests::parse_effort_arg_is_case_insensitive ... ok
[INFO] [stdout] test slash::effort_slider::tests::enter_after_change_emits_swap_config_with_effort_only ... ok
[INFO] [stdout] test slash::effort_slider::tests::enter_with_no_change_returns_cancelled ... ok
[INFO] [stdout] test slash::effort_slider::tests::left_arrow_retreats_selected_until_low ... ok
[INFO] [stdout] test slash::effort_slider::tests::new_falls_back_to_model_default_when_effort_unset ... ok
[INFO] [stdout] test slash::effort_slider::tests::new_is_absent_for_no_effort_model ... ok
[INFO] [stdout] test slash::effort_slider::tests::new_lists_only_supported_tiers_low_to_high ... ok
[INFO] [stdout] test slash::effort_slider::tests::new_seeds_selected_to_active_effort ... ok
[INFO] [stdout] test slash::effort_slider::tests::right_arrow_advances_selected_within_supported ... ok
[INFO] [stdout] test slash::effort_slider::tests::render_active_glyph_column_tracks_selected_tier ... ok
[INFO] [stdout] test slash::effort_slider::tests::unhandled_key_is_consumed_without_state_change ... ok
[INFO] [stdout] test slash::effort_slider::tests::vim_keys_mirror_arrow_navigation ... ok
[INFO] [stdout] test slash::help::tests::build_modal_renders_one_row_per_built_in ... ok
[INFO] [stdout] test slash::help::tests::display_label_combines_name_aliases_and_usage ... ok
[INFO] [stdout] test slash::help::tests::execute_opens_a_modal_via_ctx_and_pushes_no_chat_block ... ok
[INFO] [stdout] test slash::help::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::init::tests::classify_is_mutating ... ok
[INFO] [stdout] test slash::init::tests::execute_forwards_authoring_prompt_without_chat_writes ... ok
[INFO] [stdout] test slash::init::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::matcher::tests::best_match_is_none_when_neither_name_nor_alias_match ... ok
[INFO] [stdout] test slash::matcher::tests::best_match_prefers_name_prefix_over_any_alias_branch ... ok
[INFO] [stdout] test slash::matcher::tests::fake_execute_is_a_no_op_ok ... ok
[INFO] [stdout] test slash::matcher::tests::filter_and_rank_alias_match_surfaces_only_typed_alias ... ok
[INFO] [stdout] test slash::matcher::tests::filter_and_rank_alias_prefix_beats_name_substring ... ok
[INFO] [stdout] test slash::matcher::tests::filter_and_rank_alias_substring_lands_below_other_tiers ... ok
[INFO] [stdout] test slash::matcher::tests::filter_and_rank_empty_query_is_full_registry_in_declared_order ... ok
[INFO] [stdout] test slash::matcher::tests::filter_and_rank_name_prefix_beats_substring_within_other_command ... ok
[INFO] [stdout] test slash::matcher::tests::filter_and_rank_query_is_case_insensitive ... ok
[INFO] [stdout] test slash::matcher::tests::filter_and_rank_unmatched_query_is_empty ... ok
[INFO] [stdout] test slash::matcher::tests::filter_and_rank_within_tier_sorts_alphabetically_on_canonical_name ... ok
[INFO] [stdout] test slash::matcher::tests::rank_by_prefix_empty_query_yields_full_roster_in_declared_order ... ok
[INFO] [stdout] test slash::matcher::tests::rank_by_prefix_is_case_insensitive ... ok
[INFO] [stdout] test slash::matcher::tests::rank_by_prefix_promotes_prefix_above_substring ... ok
[INFO] [stdout] test slash::effort_slider::tests::render_emits_title_at_typical_widths ... ok
[INFO] [stdout] test slash::matcher::tests::rank_by_prefix_unmatched_query_is_empty ... ok
[INFO] [stdout] test slash::model::tests::classify_splits_on_args ... ok
[INFO] [stdout] test slash::model::tests::complete_arg_appends_1m_context_suffix_only_for_1m_variants ... ok
[INFO] [stdout] test slash::model::tests::complete_arg_empty_prefix_lists_curated_roster_in_picker_order ... ok
[INFO] [stdout] test slash::effort_slider::tests::right_arrow_at_top_clamps_without_panicking ... ok
[INFO] [stdout] test slash::model::tests::complete_arg_prefix_filter_narrows_to_matching_ids ... ok
[INFO] [stdout] test slash::model::tests::execute_1m_on_incompatible_model_is_rejected_with_display_name ... ok
[INFO] [stdout] test slash::diff::tests::has_head_is_true_after_first_commit ... ok
[INFO] [stdout] test slash::model::tests::execute_ambiguous_substring_filters_curated_listing_by_arg ... ok
[INFO] [stdout] test slash::model::tests::execute_ambiguous_listing_falls_back_to_full_curated_set_when_filter_empty ... ok
[INFO] [stdout] test slash::model::tests::complete_arg_is_case_insensitive ... ok
[INFO] [stdout] test slash::effort::tests::execute_explicit_level_on_no_tier_model_errors_with_recovery_hint ... ok
[INFO] [stdout] test slash::model::tests::execute_canonical_id_round_trips_for_bare_and_1m_variants ... ok
[INFO] [stdout] test slash::model::tests::execute_haiku_4_resolves_to_only_extant_descendant ... ok
[INFO] [stdout] test slash::model::tests::execute_no_args_opens_picker_via_ctx_and_pushes_no_chat_block ... ok
[INFO] [stdout] test slash::diff::tests::truncate_oversized_input_appends_footer_with_human_size ... ok
[INFO] [stdout] test slash::model::tests::execute_unique_substring_resolves_after_suffix_tier_misses ... ok
[INFO] [stdout] test slash::model::tests::execute_unknown_arg_errors_with_curated_listing ... ok
[INFO] [stdout] test slash::model::tests::execute_short_id_resolves_via_suffix_tier ... ok
[INFO] [stdout] test slash::model::tests::execute_trims_whitespace_around_arg ... ok
[INFO] [stdout] test slash::model::tests::format_supported_models_empty_input_renders_empty_string ... ok
[INFO] [stdout] test slash::model::tests::listed_models_matching_falls_back_to_full_roster_when_filter_empty ... ok
[INFO] [stdout] test slash::model::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::model::tests::listed_models_matching_filters_curated_roster_by_arg ... ok
[INFO] [stdout] test slash::model::tests::listed_models_matching_surfaces_1m_variants_alongside_base ... ok
[INFO] [stdout] test slash::model::tests::execute_retired_or_legacy_id_falls_through_to_ambiguity ... ok
[INFO] [stdout] test slash::diff::tests::inside_git_repo_is_true_for_real_repo ... ok
[INFO] [stdout] test slash::diff::tests::truncate_cuts_on_utf8_boundary_and_never_exceeds_max_bytes ... ok
[INFO] [stdout] test slash::model::tests::resolve_model_arg_bare_1m_tag_errors_without_listing_models ... ok
[INFO] [stdout] test slash::model::tests::resolve_model_arg_lowercases_arg_before_matching ... ok
[INFO] [stdout] test slash::model::tests::execute_with_alias_resolves_to_canonical_id ... ok
[INFO] [stdout] test slash::model::tests::resolve_model_arg_alias_substitution_runs_before_substring_match ... ok
[INFO] [stdout] test slash::model::tests::format_supported_models_renders_bullets_with_1m_suffix_for_1m_ids ... ok
[INFO] [stdout] test slash::model::tests::resolve_model_arg_passes_through_dated_id_via_lookup ... ok
[INFO] [stdout] test slash::model::tests::resolve_model_arg_rejects_malformed_ids_that_only_contain_known_rows ... ok
[INFO] [stdout] test slash::model::tests::resolve_model_arg_round_trips_every_models_row ... ok
[INFO] [stdout] test slash::parser::tests::parse_slash_accepts_plugin_namespace_in_name ... ok
[INFO] [stdout] test slash::parser::tests::parse_slash_bare_name_has_empty_args ... ok
[INFO] [stdout] test slash::parser::tests::parse_slash_collapses_inner_whitespace_into_args ... ok
[INFO] [stdout] test slash::parser::tests::parse_slash_double_slash_is_not_a_command ... ok
[INFO] [stdout] test slash::parser::tests::parse_slash_bare_slash_is_not_a_command ... ok
[INFO] [stdout] test slash::parser::tests::parse_slash_name_with_args_keeps_remainder_trimmed ... ok
[INFO] [stdout] test slash::parser::tests::parse_slash_plain_prompt_is_not_a_command ... ok
[INFO] [stdout] test slash::parser::tests::parse_slash_rejects_non_ascii_or_special_chars_in_name ... ok
[INFO] [stdout] test slash::parser::tests::parse_slash_trailing_whitespace_in_args_is_trimmed ... ok
[INFO] [stdout] test slash::parser::tests::popup_state_bare_slash_is_empty_name ... ok
[INFO] [stdout] test slash::parser::tests::parse_slash_tolerates_leading_whitespace ... ok
[INFO] [stdout] test slash::parser::tests::popup_state_double_slash_escape_is_not_a_command ... ok
[INFO] [stdout] test slash::parser::tests::popup_state_empty_name_rejects_buffer ... ok
[INFO] [stdout] test slash::parser::tests::popup_state_inner_whitespace_in_args_is_kept_for_free_form_commands ... ok
[INFO] [stdout] test slash::parser::tests::popup_state_partial_name_carries_typed_chars ... ok
[INFO] [stdout] test slash::parser::tests::popup_state_plain_prompts_are_not_a_command ... ok
[INFO] [stdout] test slash::parser::tests::popup_state_invalid_name_chars_reject_the_buffer ... ok
[INFO] [stdout] test slash::parser::tests::popup_state_tolerates_leading_whitespace_before_slash ... ok
[INFO] [stdout] test slash::parser::tests::popup_state_trailing_space_after_name_switches_to_empty_arg ... ok
[INFO] [stdout] test slash::parser::tests::popup_state_typed_arg_carries_prefix_trimmed_of_leading_whitespace ... ok
[INFO] [stdout] test slash::picker::tests::enter_after_model_change_emits_swap_with_model_only ... ok
[INFO] [stdout] test slash::picker::tests::down_arrow_advances_cursor_and_refreshes_effort ... ok
[INFO] [stdout] test slash::picker::tests::enter_after_effort_change_emits_swap_with_effort_only ... ok
[INFO] [stdout] test slash::picker::tests::enter_with_no_changes_returns_cancelled ... ok
[INFO] [stdout] test slash::picker::tests::height_drops_when_highlighted_model_lacks_effort_tier ... ok
[INFO] [stdout] test slash::picker::tests::navigating_from_no_tier_back_to_tier_model_restores_effort ... ok
[INFO] [stdout] test slash::picker::tests::new_opens_with_clean_effort_axis ... ok
[INFO] [stdout] test slash::picker::tests::left_arrow_walks_effort_backward_with_wrap ... ok
[INFO] [stdout] test slash::picker::tests::new_positions_cursor_on_active_model ... ok
[INFO] [stdout] test slash::picker::tests::numeric_jump_routes_cursor_to_matching_row ... ok
[INFO] [stdout] test slash::registry::tests::alias_collisions_finds_a_synthetic_overlap ... ok
[INFO] [stdout] test slash::registry::tests::aliased_cmd_fixture_satisfies_trait_contract ... ok
[INFO] [stdout] test slash::picker::tests::right_arrow_cycles_effort_within_supported_levels ... ok
[INFO] [stdout] test slash::registry::tests::built_ins_have_non_empty_name_and_description ... ok
[INFO] [stdout] test slash::registry::tests::built_ins_have_unique_canonical_names ... ok
[INFO] [stdout] test slash::registry::tests::lookup_in_resolves_canonical_name ... ok
[INFO] [stdout] test slash::registry::tests::empty_metadata_offenders_flags_a_synthetic_violator ... ok
[INFO] [stdout] test slash::registry::tests::lookup_in_resolves_each_alias_to_canonical_impl ... ok
[INFO] [stdout] test slash::registry::tests::lookup_in_unknown_name_is_absent ... ok
[INFO] [stdout] test slash::registry::tests::built_ins_aliases_do_not_collide_with_any_canonical_name ... ok
[INFO] [stdout] test slash::picker::tests::right_arrow_on_no_tier_model_is_a_noop ... ok
[INFO] [stdout] test slash::rename::tests::classify_is_always_mutating ... ok
[INFO] [stdout] test slash::rename::tests::echoes_input_only_for_typed_arg_form ... ok
[INFO] [stdout] test slash::rename::tests::execute_bare_form_opens_modal_pre_filled_with_current_title ... ok
[INFO] [stdout] test slash::rename::tests::execute_bare_form_with_no_current_title_opens_empty_modal ... ok
[INFO] [stdout] test slash::rename::tests::handle_key_backspace_removes_last_char_when_buffer_non_empty ... ok
[INFO] [stdout] test slash::rename::tests::handle_key_blank_only_buffer_does_not_submit ... ok
[INFO] [stdout] test slash::rename::tests::handle_key_unhandled_codes_are_silently_consumed_without_buffer_change ... ok
[INFO] [stdout] test slash::rename::tests::height_sums_to_five_rows ... ok
[INFO] [stdout] test slash::rename::tests::execute_typed_arg_forwards_rename_action_with_trimmed_title ... ok
[INFO] [stdout] test slash::rename::tests::handle_key_backspace_on_empty_buffer_is_a_silent_noop ... ok
[INFO] [stdout] test slash::rename::tests::handle_key_char_at_max_length_drops_extra_input ... ok
[INFO] [stdout] test slash::rename::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::rename::tests::handle_key_typing_appends_to_buffer_and_enter_submits_trimmed_title ... ok
[INFO] [stdout] test slash::rename::tests::render_lays_out_title_prompt_and_footer_in_order ... ok
[INFO] [stdout] test slash::rename::tests::render_places_cursor_after_visible_buffer_text ... ok
[INFO] [stdout] test slash::rename::tests::render_truncates_buffer_wider_than_input_row_budget ... ok
[INFO] [stdout] test slash::resume::tests::classify_is_always_mutating ... ok
[INFO] [stdout] test slash::resume::tests::ctrl_d_with_no_rows_consumes_silently_instead_of_pushing ... ok
[INFO] [stdout] test slash::resume::tests::backspace_pops_one_char_from_query ... ok
[INFO] [stdout] test slash::resume::tests::echoes_input_only_when_arg_present ... ok
[INFO] [stdout] test slash::resume::tests::ctrl_d_then_y_through_modal_stack_unlinks_the_session ... ok
[INFO] [stdout] test slash::rename::tests::render_skips_cursor_when_area_too_short_for_input_row ... ok
[INFO] [stdout] test slash::resume::tests::ctrl_u_clears_query ... ok
[INFO] [stdout] test slash::resume::tests::enter_with_selection_emits_resume_action ... ok
[INFO] [stdout] test slash::resume::tests::execute_bare_opens_picker_with_no_chat_writes ... ok
[INFO] [stdout] test slash::resume::tests::enter_with_no_rows_keeps_picker_open ... ok
[INFO] [stdout] test slash::resume::tests::execute_typed_arg_unique_match_emits_forward_with_resolved_id ... ok
[INFO] [stdout] test slash::resume::tests::execute_with_unknown_prefix_returns_friendly_error ... ok
[INFO] [stdout] test slash::rename::tests::render_clamps_cursor_when_buffer_overflows_visible_row ... ok
[INFO] [stdout] test slash::resume::tests::footer_text_shows_filtered_over_total_when_query_active ... ok
[INFO] [stdout] test slash::resume::tests::footer_text_singular_plural_and_scope_label ... ok
[INFO] [stdout] test slash::resume::tests::ctrl_d_pushes_confirm_modal_for_cursor_row ... ok
[INFO] [stdout] test slash::resume::tests::from_info_handles_title_present_and_absent ... ok
[INFO] [stdout] test slash::resume::tests::from_info_in_scoped_mode_omits_project_from_haystack_and_metadata ... ok
[INFO] [stdout] test slash::resume::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::resume::tests::navigation_keys_move_cursor_within_visible_set ... ok
[INFO] [stdout] test slash::resume::tests::on_focus_regained_falls_back_to_top_when_previously_selected_row_was_deleted ... ok
[INFO] [stdout] test slash::resume::tests::new_loads_current_project_rows_into_searchable_list ... ok
[INFO] [stdout] test slash::resume::tests::new_filters_out_live_session_to_block_self_resume ... ok
[INFO] [stdout] test slash::resume::tests::on_focus_regained_preserves_cursor_when_row_is_still_present ... ok
[INFO] [stdout] test slash::resume::tests::render_metadata_includes_msg_count_and_git_branch_when_present ... ok
[INFO] [stdout] test slash::resume::tests::render_paints_title_then_metadata_with_id_prefix_and_relative_time ... ok
[INFO] [stdout] test slash::resume::tests::render_metadata_omits_msg_count_when_session_never_finalized ... ok
[INFO] [stdout] test slash::resume::tests::render_uses_two_distinct_foregrounds_with_bold_marking_the_cursor_row ... ok
[INFO] [stdout] test slash::resume::tests::reload_sets_load_error_and_clears_rows_when_list_paged_fails ... ok
[INFO] [stdout] test slash::resume::tests::resolve_prefix_excludes_live_session_id ... ok
[INFO] [stdout] test slash::resume::tests::render_skips_footer_when_area_too_short_for_two_rows_below_list ... ok
[INFO] [stdout] test slash::resume::tests::resolve_prefix_ambiguous_lists_short_ids_in_error ... ok
[INFO] [stdout] test slash::resume::tests::on_focus_regained_reloads_rows_so_an_externally_deleted_session_disappears ... ok
[INFO] [stdout] test slash::resume::tests::render_surfaces_load_error_in_footer ... ok
[INFO] [stdout] test slash::resume::tests::resolve_prefix_full_id_match_is_unique ... ok
[INFO] [stdout] test slash::picker::tests::render_runs_at_typical_widths_without_panicking ... ok
[INFO] [stdout] test slash::resume::tests::resolve_prefix_unique_match_returns_session_id ... ok
[INFO] [stdout] test slash::resume::tests::unrecognized_keys_are_consumed_without_side_effects ... ok
[INFO] [stdout] test slash::status::tests::build_modal_renders_one_row_per_session_descriptor ... ok
[INFO] [stdout] test slash::status::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::tests::classify_built_in_state_mutating_command_is_mutating ... ok
[INFO] [stdout] test slash::tests::classify_unknown_command_is_unknown ... ok
[INFO] [stdout] test slash::tests::dispatch_known_command_runs_and_does_not_push_error ... ok
[INFO] [stdout] test slash::tests::classify_built_in_read_only_command_is_read_only ... ok
[INFO] [stdout] test slash::tests::dispatch_prompt_submit_command_produces_synthesized_body ... ok
[INFO] [stdout] test slash::tests::dispatch_unknown_command_message_lists_available_and_escape_hint ... ok
[INFO] [stdout] test slash::resume::tests::typing_filters_rows_via_searchable_list ... ok
[INFO] [stdout] test slash::tests::dispatch_unknown_command_pushes_error_block ... ok
[INFO] [stdout] test slash::tests::dispatch_with_alias_routes_to_canonical_impl ... ok
[INFO] [stdout] test slash::tests::echoes_input_modal_only_commands_suppress_their_typed_line ... ok
[INFO] [stdout] test slash::tests::echoes_input_picker_or_typed_commands_split_on_args ... ok
[INFO] [stdout] test slash::tests::failing_fixture_metadata_matches_what_dispatcher_tests_assume ... ok
[INFO] [stdout] test slash::theme::tests::classify_splits_on_args ... ok
[INFO] [stdout] test slash::theme::tests::complete_arg_empty_prefix_lists_full_roster_in_curated_order ... ok
[INFO] [stdout] test slash::resume::tests::tab_widens_scope_to_other_project_sessions_and_preserves_query ... ok
[INFO] [stdout] test slash::theme::tests::complete_arg_is_case_insensitive ... ok
[INFO] [stdout] test slash::resume::tests::resolve_prefix_widens_to_other_projects_when_current_project_misses ... ok
[INFO] [stdout] test slash::status::tests::execute_opens_a_modal_via_ctx_and_pushes_no_chat_block ... ok
[INFO] [stdout] test slash::resume::tests::tab_toggles_scope_and_reloads_rows ... ok
[INFO] [stdout] test slash::theme::tests::complete_arg_prefix_filter_narrows_to_matching_themes ... ok
[INFO] [stdout] test slash::theme::tests::enter_on_unchanged_cursor_returns_cancelled ... ok
[INFO] [stdout] test slash::theme::tests::execute_is_case_insensitive ... ok
[INFO] [stdout] test slash::theme::tests::enter_after_cursor_move_emits_swap_for_new_theme ... ok
[INFO] [stdout] test slash::theme::tests::execute_no_args_opens_picker_and_pushes_no_chat_block ... ok
[INFO] [stdout] test slash::theme::tests::execute_with_known_name_forwards_swap_theme ... ok
[INFO] [stdout] test slash::theme::tests::execute_unknown_name_errors_listing_valid_options ... ok
[INFO] [stdout] test slash::theme::tests::metadata_matches_built_ins_contract ... ok
[INFO] [stdout] test slash::theme::tests::new_positions_cursor_on_active_theme ... ok
[INFO] [stdout] test slash::theme::tests::new_with_unknown_active_keeps_cursor_on_first_row ... ok
[INFO] [stdout] test slash::theme::tests::numeric_hint_covers_first_nine_rows_then_returns_none ... ok
[INFO] [stdout] test slash::theme::tests::numeric_jump_emits_preview_for_target_row ... ok
[INFO] [stdout] test slash::theme::tests::other_keys_are_consumed_and_modal_stays_open ... ok
[INFO] [stdout] test slash::theme::tests::numeric_jump_past_roster_is_a_consumed_noop ... ok
[INFO] [stdout] test slash::tests::dispatch_with_command_failure_renders_error_block_prefixed_with_name ... ok
[INFO] [stdout] test slash::tests::echoes_input_unknown_command_echoes_so_error_block_has_context ... ok
[INFO] [stdout] test slash::theme::tests::up_and_k_emit_preview_for_prev_row_without_popping ... ok
[INFO] [stdout] test slash::theme::tests::theme_row_picker_item_methods_return_curated_values ... ok
[INFO] [stdout] test tool::bash::tests::execute_combined_stdout_and_stderr ... ok
[INFO] [stdout] test slash::theme::tests::render_runs_at_typical_widths_without_panicking ... ok
[INFO] [stdout] test tool::bash::tests::execute_nonzero_exit_not_flagged_as_error ... ok
[INFO] [stdout] test tool::bash::tests::execute_no_output ... ok
[INFO] [stdout] test tool::bash::tests::execute_output_with_nonzero_exit ... ok
[INFO] [stdout] test tool::bash::tests::execute_echo ... ok
[INFO] [stdout] test tool::bash::tests::run_missing_command_field ... ok
[INFO] [stdout] test tool::edit::tests::apply_eol_inserts_cr_for_crlf ... ok
[INFO] [stdout] test tool::edit::tests::apply_eol_lf_unchanged ... ok
[INFO] [stdout] test tool::edit::tests::build_diff_chunks_applies_per_chunk_trim ... ok
[INFO] [stdout] test tool::edit::tests::build_diff_chunks_single_match_carries_real_position ... ok
[INFO] [stdout] test tool::edit::tests::build_diff_chunks_take_one_caps_at_first_match ... ok
[INFO] [stdout] test tool::edit::tests::common_boundaries_asymmetric_lengths_capped_by_shorter_side ... ok
[INFO] [stdout] test tool::edit::tests::common_boundaries_disjoint_is_zero ... ok
[INFO] [stdout] test tool::edit::tests::common_boundaries_empty_inputs_return_zero ... ok
[INFO] [stdout] test tool::edit::tests::common_boundaries_produces_prefix_and_suffix_counts ... ok
[INFO] [stdout] test tool::edit::tests::dominant_eol_crlf_only ... ok
[INFO] [stdout] test tool::bash::tests::run_valid_command ... ok
[INFO] [stdout] test tool::edit::tests::dominant_eol_lf_only ... ok
[INFO] [stdout] test tool::edit::tests::dominant_eol_no_newlines ... ok
[INFO] [stdout] test tool::edit::tests::dominant_eol_tie_defaults_to_lf ... ok
[INFO] [stdout] test slash::theme::tests::complete_arg_substring_match_below_prefix_tier ... ok
[INFO] [stdout] test slash::theme::tests::down_and_j_emit_preview_for_next_row_without_popping ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_after_external_modification_is_rejected ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_chunks_carry_real_file_line_numbers_for_replace_all ... ok
[INFO] [stdout] test tool::bash::tests::execute_stderr_output ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_chunks_shift_new_side_for_growing_replace_all ... ok
[INFO] [stdout] test tool::edit::tests::dominant_eol_mixed_favors_majority ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_chunks_shift_new_side_for_shrinking_replace_all ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_crlf_in_new_string_not_doubled ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_partial_read_is_rejected ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_mixed_eol_multiline_match ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_mixed_eol_normalized_to_dominant ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_rejects_ambiguous_match ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_phantom_drift_passes_via_hash_match ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_rejects_empty_old_string ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_rejects_identical_strings ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_rejects_nonexistent_file ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_rejects_non_utf8_content ... ok
[INFO] [stdout] test slash::resume::tests::render_runs_at_typical_widths_without_panicking ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_rejects_string_not_found ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_rejects_too_large_file ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_replace_all ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_replaces_unique_string ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_replace_all_single_match ... ok
[INFO] [stdout] test tool::edit::tests::line_at_byte_after_newline_increments ... ok
[INFO] [stdout] test tool::edit::tests::line_at_byte_end_of_file_after_trailing_newline ... ok
[INFO] [stdout] test tool::edit::tests::line_at_byte_end_of_file_without_trailing_newline ... ok
[INFO] [stdout] test tool::edit::tests::line_at_byte_first_line_is_one ... ok
[INFO] [stdout] test tool::edit::tests::match_positions_advances_past_pattern_to_avoid_overlap ... ok
[INFO] [stdout] test tool::edit::tests::match_positions_finds_non_overlapping_offsets ... ok
[INFO] [stdout] test tool::edit::tests::match_positions_no_match_is_empty ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_without_prior_read_is_rejected ... ok
[INFO] [stdout] test tool::edit::tests::match_positions_take_limits_count ... ok
[INFO] [stdout] test tool::edit::tests::normalize_eol_converts_crlf_to_lf ... ok
[INFO] [stdout] test tool::edit::tests::normalize_eol_lf_input_borrows ... ok
[INFO] [stdout] test tool::edit::tests::match_positions_take_zero_is_empty ... ok
[INFO] [stdout] test tool::edit::tests::parse_replacement_count_extracts_leading_integer ... ok
[INFO] [stdout] test tool::edit::tests::parse_replacement_count_is_none_for_unrelated_messages ... ok
[INFO] [stdout] test tool::edit::tests::parse_replacement_count_is_none_when_only_prefix_present ... ok
[INFO] [stdout] test tool::edit::tests::edit_tool_run_dispatches_through_trait_to_inner_run ... ok
[INFO] [stdout] test tool::edit::tests::parse_replacement_count_requires_space_after_replaced ... ok
[INFO] [stdout] test tool::edit::tests::result_view_defaults_to_one_replacement_when_count_missing ... ok
[INFO] [stdout] test tool::edit::tests::result_view_falls_back_to_parsing_content_when_metadata_is_empty ... ok
[INFO] [stdout] test tool::edit::tests::result_view_is_none_when_field_type_is_wrong ... ok
[INFO] [stdout] test tool::edit::tests::result_view_is_none_when_new_string_missing_with_old_string_present ... ok
[INFO] [stdout] test tool::edit::tests::result_view_is_none_when_required_inputs_missing ... ok
[INFO] [stdout] test tool::edit::tests::result_view_prefers_structured_chunks_from_metadata_on_live_path ... ok
[INFO] [stdout] test tool::edit::tests::result_view_synthesizes_chunk_when_metadata_lacks_diff_chunks ... ok
[INFO] [stdout] test tool::edit::tests::run_missing_required_fields ... ok
[INFO] [stdout] test tool::edit::tests::run_edit_error_omits_edited_title ... ok
[INFO] [stdout] test tool::edit::tests::split_into_diff_lines_drops_trailing_newline ... ok
[INFO] [stdout] test tool::edit::tests::split_into_diff_lines_empty_yields_empty ... ok
[INFO] [stdout] test tool::edit::tests::split_into_diff_lines_numbers_from_start_line ... ok
[INFO] [stdout] test tool::edit::tests::synthesize_chunk_applies_trim ... ok
[INFO] [stdout] test tool::edit::tests::synthesize_chunk_starts_numbering_at_one ... ok
[INFO] [stdout] test tool::edit::tests::trim_chunk_drops_matching_prefix_and_suffix_preserving_numbers ... ok
[INFO] [stdout] test tool::edit::tests::trim_chunk_fully_identical_collapses_both_sides ... ok
[INFO] [stdout] test tool::edit::tests::trim_chunk_pure_tail_insertion_strips_anchor ... ok
[INFO] [stdout] test tool::edit::tests::run_valid_edit ... ok
[INFO] [stdout] test tool::glob::tests::glob_files_invalid_directory ... ok
[INFO] [stdout] test tool::glob::tests::glob_files_invalid_pattern ... ok
[INFO] [stdout] test tool::glob::tests::glob_files_basic ... ok
[INFO] [stdout] test tool::glob::tests::glob_files_no_matches ... ok
[INFO] [stdout] test tool::glob::tests::glob_files_recursive ... ok
[INFO] [stdout] test tool::glob::tests::glob_files_respects_gitignore ... ok
[INFO] [stdout] test tool::edit::tests::run_without_prior_read_is_rejected ... ok
[INFO] [stdout] test tool::glob::tests::glob_files_skips_hidden_dirs ... ok
[INFO] [stdout] test tool::glob::tests::is_truncation_footer_accepts_glob_files_shape ... ok
[INFO] [stdout] test tool::glob::tests::is_truncation_footer_rejects_unknown_prose ... ok
[INFO] [stdout] test tool::glob::tests::parse_total_from_footer_extracts_y_from_glob_files_shape ... ok
[INFO] [stdout] test tool::glob::tests::parse_total_from_footer_is_none_for_malformed_input ... ok
[INFO] [stdout] test tool::glob::tests::result_view_builds_glob_files ... ok
[INFO] [stdout] test tool::glob::tests::result_view_falls_back_for_empty_content ... ok
[INFO] [stdout] test tool::glob::tests::result_view_falls_back_for_unrecognised_trailing_prose ... ok
[INFO] [stdout] test tool::glob::tests::result_view_falls_back_when_input_has_no_pattern ... ok
[INFO] [stdout] test tool::glob::tests::result_view_falls_back_when_metadata_total_under_visible_files ... ok
[INFO] [stdout] test tool::glob::tests::result_view_handles_no_files_found ... ok
[INFO] [stdout] test tool::glob::tests::result_view_metadata_total_equal_to_file_count_succeeds ... ok
[INFO] [stdout] test tool::glob::tests::result_view_normalises_trailing_newline ... ok
[INFO] [stdout] test tool::glob::tests::result_view_path_with_embedded_blank_line_falls_back ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_replace_all_pins_replaced_n_occurrences_format ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_crlf_matching_preserves_line_endings ... ok
[INFO] [stdout] test tool::glob::tests::result_view_pulls_total_from_metadata_and_drops_prose_footer ... ok
[INFO] [stdout] test tool::glob::tests::result_view_recovers_total_from_prose_footer_for_legacy_sessions ... ok
[INFO] [stdout] test tool::glob::tests::result_view_single_file_no_footer ... ok
[INFO] [stdout] test tool::glob::tests::run_missing_pattern ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_basic ... ok
[INFO] [stdout] test tool::glob::tests::run_finds_files ... ok
[INFO] [stdout] test tool::edit::tests::edit_file_fails_if_write_is_rejected ... FAILED
[INFO] [stdout] test tool::grep::tests::grep_files_count_mode ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_count_mode_singular ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_count_mode_summary_first ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_count_mode_truncated ... ok
[INFO] [stdout] test tool::glob::tests::glob_files_truncated_at_max_results ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_files_with_matches_no_matches ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_case_insensitive ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_files_with_matches_truncated ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_head_limit ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_head_limit_across_multiple_files ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_files_with_matches_mode ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_invalid_regex ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_nonexistent_path ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_invalid_include_pattern ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_no_matches ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_head_limit_zero_means_unlimited ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_regex ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_single_file_too_large ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_skips_binary ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_skips_hidden_dirs ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_with_context ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_with_context_merges_adjacent_ranges ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_with_context_no_matches_in_file ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_with_context_respects_head_limit ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_with_context_separates_distant_ranges ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_respects_gitignore ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_single_file ... ok
[INFO] [stdout] test tool::grep::tests::parse_content_view_falls_back_on_invalid_line ... ok
[INFO] [stdout] test tool::grep::tests::grep_title_with_context_counts_matches_only ... ok
[INFO] [stdout] test tool::grep::tests::parse_content_view_falls_back_when_skipped_warnings_present ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_warns_about_skipped_large_files ... ok
[INFO] [stdout] test tool::grep::tests::parse_content_view_groups_consecutive_lines_with_context_and_separator ... ok
[INFO] [stdout] test tool::grep::tests::parse_content_view_truncation_footer_sets_truncated_flag ... ok
[INFO] [stdout] test tool::grep::tests::parse_content_view_no_matches_is_empty ... ok
[INFO] [stdout] test tool::grep::tests::parse_match_line_skips_path_internal_colons_without_digit_separator ... ok
[INFO] [stdout] test tool::grep::tests::parse_match_line_distinguishes_match_from_context_separator ... ok
[INFO] [stdout] test tool::grep::tests::parse_match_line_is_none_when_shape_does_not_match ... ok
[INFO] [stdout] test tool::grep::tests::result_view_non_content_mode_falls_back_to_text ... ok
[INFO] [stdout] test tool::grep::tests::grep_files_with_include_filter ... ok
[INFO] [stdout] test tool::grep::tests::result_view_content_mode_groups_by_file ... ok
[INFO] [stdout] test tool::glob::tests::run_truncated_attaches_total_to_metadata ... ok
[INFO] [stdout] test tool::grep::tests::run_missing_pattern ... ok
[INFO] [stdout] test tool::grep::tests::run_finds_pattern ... ok
[INFO] [stdout] test tool::read::tests::read_file_empty ... ok
[INFO] [stdout] test tool::read::tests::read_file_offset_beyond_end ... ok
[INFO] [stdout] test tool::read::tests::read_file_rejects_non_regular_file ... ok
[INFO] [stdout] test tool::read::tests::read_file_binary_detected ... ok
[INFO] [stdout] test tool::read::tests::read_file_respects_offset_and_limit ... ok
[INFO] [stdout] test tool::read::tests::read_file_strips_bom ... ok
[INFO] [stdout] test tool::read::tests::read_file_too_large ... ok
[INFO] [stdout] test tool::read::tests::read_file_directory ... ok
[INFO] [stdout] test tool::read::tests::result_view_builds_read_excerpt ... ok
[INFO] [stdout] test tool::read::tests::result_view_falls_back_for_missing_file_path ... ok
[INFO] [stdout] test tool::read::tests::result_view_falls_back_for_malformed_output ... ok
[INFO] [stdout] test tool::read::tests::read_file_offset_zero_treated_as_one ... ok
[INFO] [stdout] test tool::read::tests::read_file_with_line_numbers ... ok
[INFO] [stdout] test tool::read::tests::result_view_handles_empty_file ... ok
[INFO] [stdout] test tool::read::tests::result_view_preserves_total_lines_from_footer ... ok
[INFO] [stdout] test tool::read::tests::run_missing_file_path ... ok
[INFO] [stdout] test tool::read::tests::run_partial_reread_does_not_cache_hit ... ok
[INFO] [stdout] test tool::read::tests::strip_bom_no_bom_unchanged ... ok
[INFO] [stdout] test tool::read::tests::strip_bom_removes_bom ... ok
[INFO] [stdout] test tool::read::tests::run_full_reread_is_cache_hit_stub ... ok
[INFO] [stdout] test tool::read::tests::view_for_limit_only_uses_default_offset ... ok
[INFO] [stdout] test tool::read::tests::run_records_full_read_in_tracker ... ok
[INFO] [stdout] test tool::read::tests::view_for_no_args_is_full ... ok
[INFO] [stdout] test tool::read::tests::run_reads_file ... ok
[INFO] [stdout] test tool::read::tests::view_for_offset_only_uses_default_limit ... ok
[INFO] [stdout] test tool::read::tests::read_file_not_found ... ok
[INFO] [stdout] test tool::tests::cap_output_barely_over_limit_unchanged ... ok
[INFO] [stdout] test tool::tests::cap_output_short_content_unchanged ... ok
[INFO] [stdout] test tool::tests::definitions_produces_tool_with_valid_schema ... ok
[INFO] [stdout] test tool::glob::tests::glob_files_sorted_by_mtime ... ok
[INFO] [stdout] test tool::tests::cap_output_multibyte_at_split_boundary ... ok
[INFO] [stdout] test tool::tests::every_tool_exposes_non_empty_name_description_and_object_schema ... ok
[INFO] [stdout] test tool::tests::file_name_bare_name_unchanged ... ok
[INFO] [stdout] test tool::tests::file_name_extracts_basename ... ok
[INFO] [stdout] test tool::tests::from_result_err_sets_is_error ... ok
[INFO] [stdout] test tool::tests::from_result_ok_clears_is_error ... ok
[INFO] [stdout] test tool::tests::get_finds_registered_tool ... ok
[INFO] [stdout] test tool::tests::get_unknown_tool ... ok
[INFO] [stdout] test tool::tests::icon_delegates_to_registered_tool ... ok
[INFO] [stdout] test tool::tests::display_cwd_path_from_without_cwd_falls_back_to_original_path ... ok
[INFO] [stdout] test tool::tests::display_path_outside_base_stays_absolute ... ok
[INFO] [stdout] test tool::tests::label_delegates_to_registered_tool ... ok
[INFO] [stdout] test tool::tests::label_unknown_tool_falls_back_to_raw_name ... ok
[INFO] [stdout] test tool::tests::resolve_base_dir_none_uses_cwd ... ok
[INFO] [stdout] test tool::tests::resolve_base_dir_some_uses_given_path ... ok
[INFO] [stdout] test tool::tests::result_view_delegates_glob_files ... ok
[INFO] [stdout] test tool::tests::result_view_delegates_read_excerpt ... ok
[INFO] [stdout] test tool::tests::result_view_delegates_grep_matches ... ok
[INFO] [stdout] test tool::tests::result_view_delegates_to_tool_for_structured_output ... ok
[INFO] [stdout] test tool::tests::result_view_falls_back_to_text_for_unknown_tool ... ok
[INFO] [stdout] test tool::tests::result_view_falls_back_to_text_when_tool_has_no_structured_view ... ok
[INFO] [stdout] test tool::tests::result_view_short_circuits_errors_to_text ... ok
[INFO] [stdout] test tool::tests::display_path_relative_inside_base ... ok
[INFO] [stdout] test tool::tests::display_path_same_path_is_filename ... ok
[INFO] [stdout] test tool::tests::icon_unknown_tool_falls_back_to_default ... ok
[INFO] [stdout] test tool::tests::run_unknown_tool_errors ... ok
[INFO] [stdout] test tool::tests::title_case_capitalizes_first_char_only ... ok
[INFO] [stdout] test tool::tests::tool_catalog_icons_match_the_published_prefix_set ... ok
[INFO] [stdout] test tool::tests::tool_catalog_names_and_icons_are_unique ... ok
[INFO] [stdout] test tool::tests::tool_summarize_call_shortens_file_paths_inside_cwd ... ok
[INFO] [stdout] test tool::tests::tool_summarize_call_falls_back_to_bare_name_when_arg_missing ... ok
[INFO] [stdout] test tool::tests::tool_summarize_call_wraps_arg_in_title_cased_name ... ok
[INFO] [stdout] test tool::tests::tool_summarize_input_is_none_when_primary_field_missing ... ok
[INFO] [stdout] test tool::tests::tool_summarize_input_plucks_the_primary_field ... ok
[INFO] [stdout] test tool::tests::truncate_line_long_gets_truncated ... ok
[INFO] [stdout] test tool::tests::truncate_line_multibyte_safe ... ok
[INFO] [stdout] test tool::tests::truncate_line_short_unchanged ... ok
[INFO] [stdout] test tool::tests::truncate_line_multibyte_under_char_cap_unchanged ... ok
[INFO] [stdout] test tool::tests::cap_output_keeps_head_and_tail ... ok
[INFO] [stdout] test tool::write::tests::run_missing_required_fields ... ok
[INFO] [stdout] test tool::tests::run_within_cap_leaves_content_and_metadata_untouched ... ok
[INFO] [stdout] test tool::write::tests::run_creates_file ... ok
[INFO] [stdout] test tool::write::tests::run_overwrites_existing_file_uses_updated_verb ... ok
[INFO] [stdout] test tool::write::tests::write_file_after_external_modification_is_rejected ... ok
[INFO] [stdout] test tool::write::tests::write_file_creates_parent_directories ... ok
[INFO] [stdout] test tool::write::tests::write_file_existing_without_read_is_rejected ... ok
[INFO] [stdout] test tool::write::tests::write_file_creates_new ... ok
[INFO] [stdout] test tool::write::tests::write_file_empty_content ... ok
[INFO] [stdout] test tool::write::tests::write_file_fails_on_read_only_file ... FAILED
[INFO] [stdout] test tool::write::tests::write_file_after_read_overwrites_existing ... ok
[INFO] [stdout] test tool::write::tests::write_file_unread_directory_hits_strict_gate ... ok
[INFO] [stdout] test tool::write::tests::write_file_phantom_drift_passes_via_hash_match ... ok
[INFO] [stdout] test tui::app::tests::cancelled_drains_queue_head_to_match_completed_path ... ok
[INFO] [stdout] test tui::app::tests::cancelling_status_is_sticky_against_late_buffered_events ... ok
[INFO] [stdout] test tui::app::tests::dispatch_arg_bearing_slash_during_busy_refuses_locally ... ok
[INFO] [stdout] test tui::app::tests::dispatch_bare_slash_during_busy_opens_modal_picker ... ok
[INFO] [stdout] test tui::app::tests::dispatch_cancel_flips_status_to_cancelling_and_forwards ... ok
[INFO] [stdout] test tui::app::tests::dispatch_clear_during_busy_refuses_with_system_message_no_dispatch ... ok
[INFO] [stdout] test tool::write::tests::write_tool_run_dispatches_through_trait_to_inner_run ... ok
[INFO] [stdout] test tui::app::tests::dispatch_compact_forwards_to_agent_and_disables_input_until_event ... ok
[INFO] [stdout] test tui::app::tests::dispatch_double_slash_escapes_command_and_forwards_literal ... ok
[INFO] [stdout] test tui::app::tests::dispatch_full_channel_surfaces_error_but_keeps_app_alive ... ok
[INFO] [stdout] test tui::app::tests::dispatch_closed_channel_surfaces_error_and_quits ... ok
[INFO] [stdout] test tui::app::tests::dispatch_init_during_busy_refuses_with_system_message_no_forward ... ok
[INFO] [stdout] test tui::app::tests::dispatch_init_forwards_synthesized_prompt_and_flips_to_streaming ... ok
[INFO] [stdout] test tui::app::tests::dispatch_quit_sets_should_quit_and_leaves_chat_untouched ... ok
[INFO] [stdout] test tui::app::tests::dispatch_read_only_slash_during_busy_runs_client_side_without_queueing ... ok
[INFO] [stdout] test tui::app::tests::dispatch_resume_forwards_to_agent_and_disables_input_until_event ... ok
[INFO] [stdout] test tui::app::tests::dispatch_slash_command_renders_locally_without_forwarding ... ok
[INFO] [stdout] test tool::write::tests::write_file_fails_when_parent_is_a_file ... ok
[INFO] [stdout] test tui::app::tests::dispatch_submit_during_busy_queues_and_forwards_for_mid_turn_drain ... ok
[INFO] [stdout] test tui::app::tests::dispatch_submit_during_cancelling_holds_locally_without_forwarding ... ok
[INFO] [stdout] test tui::app::tests::dispatch_submit_during_compacting_holds_locally_without_forwarding ... ok
[INFO] [stdout] test tui::app::tests::dispatch_submit_prompt_updates_chat_status_and_forwards_action ... ok
[INFO] [stdout] test tui::app::tests::dispatch_swap_config_forwards_to_agent_through_user_tx ... ok
[INFO] [stdout] test tui::app::tests::dispatch_unknown_slash_during_busy_renders_error_no_queue ... ok
[INFO] [stdout] test tui::app::tests::dispatch_unknown_slash_command_renders_error_without_forwarding ... ok
[INFO] [stdout] test tool::write::tests::write_file_fails_when_parent_creation_is_denied ... FAILED
[INFO] [stdout] test tool::tests::run_byte_cap_on_read_falls_through_to_text_view ... ok
[INFO] [stdout] test tool::bash::tests::run_timeout ... ok
[INFO] [stdout] test tui::app::tests::draw_frame_streaming_shows_spinner_in_status_bar ... ok
[INFO] [stdout] test tui::app::tests::draw_frame_narrow_width_still_renders_all_three_panels ... ok
[INFO] [stdout] test tui::app::tests::draw_frame_preview_panel_renders_queued_prompts_and_overflow_tag ... ok
[INFO] [stdout] test tool::tests::run_dispatches_and_caps_byte_overflow ... ok
[INFO] [stdout] test tui::app::tests::expire_armed_exit_becomes_idle_after_window ... ok
[INFO] [stdout] test tui::app::tests::finish_turn_evicts_orphaned_pending_calls ... ok
[INFO] [stdout] test tui::app::tests::expire_armed_exit_when_not_armed_is_a_noop ... ok
[INFO] [stdout] test tui::app::tests::format_config_change_effort_clamp_surfaces_what_user_asked_for ... ok
[INFO] [stdout] test tui::app::tests::format_config_change_effort_explicit_pick_matches_resolution ... ok
[INFO] [stdout] test tui::app::tests::format_config_change_effort_pick_on_no_tier_model_surfaces_loss ... ok
[INFO] [stdout] test tui::app::tests::draw_frame_renders_slash_popup_above_input_when_visible ... ok
[INFO] [stdout] test tui::app::tests::format_config_change_swap_both_none_omits_effort_clause ... ok
[INFO] [stdout] test tui::app::tests::format_config_change_swap_clears_effort_when_new_model_drops_it ... ok
[INFO] [stdout] test tui::app::tests::format_config_change_swap_marks_clamp_when_new_effort_below_previous ... ok
[INFO] [stdout] test tui::app::tests::format_config_change_swap_marks_default_when_previous_was_none ... ok
[INFO] [stdout] test tui::app::tests::format_config_change_swap_quiet_when_effort_unchanged ... ok
[INFO] [stdout] test tui::app::tests::format_config_change_swap_with_explicit_effort_clamped_against_new_caps ... ok
[INFO] [stdout] test tui::app::tests::handle_config_changed_effort_only_keeps_status_bar_model_label ... ok
[INFO] [stdout] test tui::app::tests::handle_config_changed_model_swap_refreshes_status_and_chat ... ok
[INFO] [stdout] test tui::app::tests::handle_crossterm_key_ctrl_c_busy_forwards_cancel_without_quitting ... ok
[INFO] [stdout] test tui::app::tests::handle_crossterm_key_ctrl_c_idle_arms_exit_then_confirms ... ok
[INFO] [stdout] test tui::app::tests::handle_crossterm_key_esc_busy_forwards_cancel ... ok
[INFO] [stdout] test tui::app::tests::handle_crossterm_key_submit_forwards_through_input_to_dispatch ... ok
[INFO] [stdout] test tui::app::tests::handle_crossterm_mouse_is_forwarded_to_chat ... ok
[INFO] [stdout] test tui::app::tests::handle_crossterm_popup_enter_dispatches_canonical_command ... ok
[INFO] [stdout] test tui::app::tests::handle_crossterm_popup_tab_completes_canonical_name_into_buffer ... ok
[INFO] [stdout] test tui::app::tests::handle_crossterm_resize_schedules_dirty_for_relayout ... ok
[INFO] [stdout] test tui::app::tests::handle_crossterm_scroll_key_routes_to_chat_while_input_disabled ... ok
[INFO] [stdout] test tui::app::tests::handle_crossterm_unknown_event_is_a_noop ... ok
[INFO] [stdout] test tui::app::tests::handle_error_drains_queue_head_only_once ... ok
[INFO] [stdout] test tui::app::tests::handle_error_pushes_error_entry_and_finishes_turn ... ok
[INFO] [stdout] test tui::app::tests::handle_esc_busy_dispatches_cancel ... ok
[INFO] [stdout] test tui::app::tests::handle_esc_idle_with_buffer_content_refuses_pop ... ok
[INFO] [stdout] test tui::app::tests::handle_esc_idle_with_empty_queue_is_silent ... ok
[INFO] [stdout] test tui::app::tests::handle_esc_idle_with_queue_pops_most_recent_into_input ... ok
[INFO] [stdout] test tui::app::tests::handle_esc_with_popup_visible_dismisses_popup_and_leaves_queue_intact ... ok
[INFO] [stdout] test tui::app::tests::handle_session_compacted_drains_queued_prompts_unlike_resume ... ok
[INFO] [stdout] test tui::app::tests::handle_session_compacted_replays_summary_and_clears_pending_calls ... ok
[INFO] [stdout] test tui::app::tests::handle_session_compacted_without_instructions_renders_clean_block ... ok
[INFO] [stdout] test tui::app::tests::handle_session_resumed_replays_transcript_and_clears_pending ... ok
[INFO] [stdout] test tui::app::tests::handle_session_resumed_with_no_queued_prompts_is_silent ... ok
[INFO] [stdout] test tui::app::tests::handle_session_resumed_with_no_title_clears_stale_chrome ... ok
[INFO] [stdout] test tui::app::tests::handle_session_rolled_clears_chat_rebinds_id_and_drops_stale_title ... ok
[INFO] [stdout] test tui::app::tests::handle_session_title_updated_drops_event_for_stale_session_id ... ok
[INFO] [stdout] test tui::app::tests::handle_session_title_updated_overwrites_existing_title_for_current_session ... ok
[INFO] [stdout] test tui::app::tests::handle_stream_token_switches_to_streaming_and_disables_input ... ok
[INFO] [stdout] test tui::app::tests::handle_thinking_token_routes_to_chat_and_marks_streaming ... ok
[INFO] [stdout] test tui::app::tests::handle_tool_call_end_with_title_pushes_result_entry ... ok
[INFO] [stdout] test tui::app::tests::handle_cancelled_commits_partial_stream_with_marker_and_becomes_idle ... ok
[INFO] [stdout] test tui::app::tests::handle_cancelled_with_no_stream_still_pushes_marker ... ok
[INFO] [stdout] test tui::app::tests::draw_frame_lays_out_status_chat_and_input_in_order ... ok
[INFO] [stdout] test tui::app::tests::handle_turn_complete_becomes_idle_and_reenables_input ... ok
[INFO] [stdout] test tui::app::tests::modal_cancel_without_snapshot_is_a_noop ... ok
[INFO] [stdout] test tui::app::tests::handle_tool_call_end_without_start_uses_generic_fallback_header ... ok
[INFO] [stdout] test tui::app::tests::modal_gate_cancel_closes_modal_without_dispatching ... ok
[INFO] [stdout] test tui::app::tests::modal_gate_intercepts_keys_before_input_sees_them ... ok
[INFO] [stdout] test tui::app::tests::new_plumbs_resumed_title_into_status_bar ... ok
[INFO] [stdout] test tui::app::tests::new_whitespace_title_is_filtered_by_status_bar ... ok
[INFO] [stdout] test tui::app::tests::new_without_title_leaves_slot_unset ... ok
[INFO] [stdout] test tui::app::tests::pending_queue_survives_max_tool_rounds_bail_and_drains_serially ... ok
[INFO] [stdout] test tui::app::tests::handle_tool_call_end_without_title_falls_back_to_call_label ... ok
[INFO] [stdout] test tui::app::tests::preview_height_caps_at_visible_plus_overflow_row ... ok
[INFO] [stdout] test tui::app::tests::preview_height_is_zero_when_queue_empty ... ok
[INFO] [stdout] test tui::app::tests::handle_tool_call_start_switches_to_tool_running ... ok
[INFO] [stdout] test tui::app::tests::preview_theme_with_unknown_name_does_nothing_and_keeps_active_theme ... ok
[INFO] [stdout] test tui::app::tests::modal_system_message_action_pushes_into_chat ... ok
[INFO] [stdout] test tui::app::tests::prompt_drained_pops_queue_head_and_pushes_user_message ... ok
[INFO] [stdout] test tui::app::tests::prompt_drained_with_empty_queue_still_pushes_chat_entry ... ok
[INFO] [stdout] test tui::app::tests::preview_theme_repaints_components_and_caches_original ... ok
[INFO] [stdout] test tui::app::tests::draw_frame_with_conversation_and_tool_call ... ok
[INFO] [stdout] test tui::app::tests::preview_theme_then_modal_cancel_restores_original ... ok
[INFO] [stdout] test tui::app::tests::render_brackets_frame_with_sync_update_bytes ... ok
[INFO] [stdout] test tui::app::tests::draw_frame_hides_input_and_popup_while_modal_active ... ok
[INFO] [stdout] test tui::app::tests::slash_typed_model_routes_synthesized_swap_config_through_dispatch ... ok
[INFO] [stdout] test tui::app::tests::draw_frame_surface_fill_overwrites_unpainted_cells_with_surface_bg ... ok
[INFO] [stdout] test tui::app::tests::submit_slash_theme_pushes_picker_onto_modal_stack ... ok
[INFO] [stdout] test tui::app::tests::swap_theme_commits_and_clears_snapshot ... ok
[INFO] [stdout] test tui::app::tests::slash_typed_swap_theme_routes_through_local_handler ... ok
[INFO] [stdout] test tui::app::tests::theme_actions_are_not_forwarded_to_agent_loop ... ok
[INFO] [stdout] test tui::app::tests::render_repaints_when_chat_content_grows_past_viewport ... ok
[INFO] [stdout] test tui::components::chat::blocks::assistant::tests::apply_thinking_style_dims_plain_spans_only ... ok
[INFO] [stdout] test tui::components::chat::blocks::assistant::tests::assistant_text_fenced_code_preserves_highlight_style ... ok
[INFO] [stdout] test tui::app::tests::turn_complete_drains_queue_head_and_dispatches ... ok
[INFO] [stdout] test tui::components::chat::blocks::assistant::tests::render_empty_body_emits_header_only ... ok
[INFO] [stdout] test tui::components::chat::blocks::assistant::tests::render_inserts_gutter_line_between_header_and_body ... ok
[INFO] [stdout] test tui::components::chat::blocks::assistant::tests::render_fenced_code_block_preserves_highlight_style ... ok
[INFO] [stdout] test tui::components::chat::blocks::compacted::tests::header_omits_focus_segment_when_no_instructions ... ok
[INFO] [stdout] test tui::components::chat::blocks::compacted::tests::header_includes_focus_when_instructions_present ... ok
[INFO] [stdout] test tui::components::chat::blocks::compacted::tests::header_pluralizes_message_count ... ok
[INFO] [stdout] test tui::components::chat::blocks::compacted::tests::render_empty_body_emits_header_only ... ok
[INFO] [stdout] test tui::components::chat::blocks::compacted::tests::render_focus_label_appears_in_header ... ok
[INFO] [stdout] test tui::components::chat::blocks::compacted::tests::render_first_line_is_bold_header_with_bar_prefix ... ok
[INFO] [stdout] test tui::components::chat::blocks::compacted::tests::render_summary_body_lines_carry_bar_prefix ... ok
[INFO] [stdout] test tui::components::chat::blocks::error::tests::render_continuation_rows_align_under_first_line_body ... ok
[INFO] [stdout] test tui::app::tests::swap_theme_with_unknown_name_is_a_silent_noop ... ok
[INFO] [stdout] test tui::components::chat::blocks::compacted::tests::render_inserts_gutter_line_between_header_and_body ... ok
[INFO] [stdout] test tui::components::chat::blocks::error::tests::render_single_line_message_emits_icon_then_body ... ok
[INFO] [stdout] test tui::components::chat::blocks::error::tests::render_multi_line_message_keeps_each_line_on_its_own_row ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::block_kind_is_other ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::parse_diff_git_path_extracts_a_path ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::parse_diff_git_path_is_none_for_unrelated_line ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::parse_hunk_extents_handles_omitted_counts ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::parse_hunk_extents_is_none_for_non_hunk ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::parse_hunk_extents_produces_max_of_old_and_new_sides ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::max_line_number_width_floors_at_one_when_no_hunks ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::max_line_number_width_uses_largest_hunk_extent ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::parse_hunk_starts_with_counts ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::parse_hunk_starts_without_counts ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::parse_range_extent_with_count_is_start_plus_count_minus_one ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::parse_range_extent_without_count_is_just_start ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::render_add_row_carries_diff_add_row_bg ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::render_advances_line_numbers_through_context_rows ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::render_corrupt_hunk_body_falls_through_to_defensive_row ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::render_del_row_carries_diff_del_row_bg ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::render_emits_path_header_then_hunk_then_body_rows ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::render_skips_index_and_marker_lines ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::render_truncation_footer_after_hunks_renders_dim ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::render_untracked_section_outside_hunks_emits_plain_rows ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::render_walks_line_numbers_per_hunk_starts ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::strip_marker_extracts_body_for_real_diff_lines ... ok
[INFO] [stdout] test tui::components::chat::blocks::system::tests::render_each_input_line_gets_bar_prefix ... ok
[INFO] [stdout] test tui::components::chat::blocks::system::tests::render_empty_text_still_emits_a_bar_line ... ok
[INFO] [stdout] test tui::components::chat::blocks::system::tests::render_per_logical_line_wraps_independently ... ok
[INFO] [stdout] test tui::components::chat::blocks::system::tests::render_trailing_newline_does_not_emit_extra_blank_row ... ok
[INFO] [stdout] test tui::components::chat::blocks::system::tests::render_wraps_long_body_under_bar_at_viewport_width ... ok
[INFO] [stdout] test tui::components::chat::blocks::tests::prepend_markdown_prefix_adds_styled_prefix ... ok
[INFO] [stdout] test tui::components::chat::blocks::tests::push_icon_wrapped_short_text_single_line ... ok
[INFO] [stdout] test tui::components::chat::blocks::tests::push_icon_wrapped_uses_display_width_not_bytes ... ok
[INFO] [stdout] test tui::components::chat::blocks::tests::push_icon_wrapped_wraps_long_text_with_indent ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::bordered_row::tests::render_carries_text_style_through_wrap ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::bordered_row::tests::render_emits_bar_prefix_and_styled_text ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::bordered_row::tests::render_wraps_long_text_under_bar ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::any_chunk_has_content_empty_chunks_is_false ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::any_chunk_has_content_empty_vec_is_false ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::any_chunk_has_content_one_side_filled_is_true ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::chunk_anchor_line_falls_back_to_new_side_for_pure_insertions ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::chunk_anchor_line_is_none_when_both_sides_empty ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::chunk_anchor_line_uses_old_side_first_line ... ok
[INFO] [stdout] test tui::app::tests::run_with_events_expires_armed_exit_on_tick_before_channel_close ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::entries_at_budget_boundary_shows_every_line ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::entries_budget_two_emits_single_ellipsis_then_tail_per_side ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::entries_both_sides_overflow_split_evenly ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::entries_over_budget_splits_budget_between_sides ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::entries_pure_deletion_over_budget_truncates_old_side ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::entries_under_budget_shows_all_lines ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::entries_zero_budget_collapses_each_side_to_ellipsis ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::render_locations_footer_caps_with_and_more_suffix_past_max ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::render_locations_footer_empty_emits_nothing ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::render_locations_footer_lists_each_line_number ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::render_locations_footer_singular_label_for_one_location ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::render_no_change_marker_when_all_chunks_empty_after_trim ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::render_multi_chunk_emits_one_body_plus_locations_footer ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::render_single_chunk_replace_all_keeps_legacy_count_footer ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::split_budget_both_overflow_splits_with_odd_line_to_old ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::split_budget_smaller_side_surplus_flows_to_larger ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::split_budget_under_budget_preserves_input_lengths ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::glob::tests::footer_text_combines_hidden_count_with_limit_token_when_tool_truncated ... ok
[INFO] [stdout] test tui::app::tests::render_preview_overflow_appends_more_count_row ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::glob::tests::footer_text_hidden_uses_singular_or_plural ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::glob::tests::footer_text_no_hidden_no_truncation_is_none ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::glob::tests::footer_text_tool_truncated_with_no_tui_hidden_names_limit ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::glob::tests::render_caps_at_max_output_lines_with_hidden_footer ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::glob::tests::render_empty_files_shows_no_files_found_row ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::glob::tests::render_error_flag_swaps_border_style ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::glob::tests::render_short_list_emits_header_and_no_footer ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::glob::tests::render_tool_truncation_surfaces_total_in_footer ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::grep::tests::footer_text_hidden_and_truncated_combines_both ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::grep::tests::footer_text_hidden_uses_singular_or_plural ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::grep::tests::footer_text_no_hidden_no_truncation_is_none ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::grep::tests::render_empty_groups_emits_nothing ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::grep::tests::render_stops_when_budget_fills_at_path_boundary ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::numbered_row::tests::render_emits_bar_number_separator_and_text ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::numbered_row::tests::render_pads_number_to_column_width ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::numbered_row::tests::render_truncates_overlong_text_to_byte_budget ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::numbered_row::tests::render_wraps_with_aligned_continuation_prefix ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::numbered_row::tests::with_style_no_bg_skips_padding ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::numbered_row::tests::with_style_pads_to_full_width_with_row_bg ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::numbered_row::tests::with_style_patches_row_bg_onto_content_spans ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::numbered_row::tests::with_style_render_uses_custom_separator_in_place_of_pipe ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::numbered_row::tests::with_style_wrapped_continuation_keeps_bg_under_text_column ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::read_excerpt::tests::context_label_full_file_omits_total_suffix ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::read_excerpt::tests::context_label_single_line_uses_single_number ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::tests::border_continuation_prefix_preserves_bar_position ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::tests::truncate_to_bytes_exact_boundary_no_split ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::tests::truncate_to_bytes_over_limit_appends_ellipsis ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::tests::truncate_to_bytes_respects_char_boundary ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::tests::truncate_to_bytes_under_limit_preserves_input ... ok
[INFO] [stdout] test tui::components::chat::tests::advance_streaming_cache_defers_until_viewport_measured ... ok
[INFO] [stdout] test tui::components::chat::tests::advance_streaming_cache_incremental_inserts_paragraph_gaps ... ok
[INFO] [stdout] test tui::components::chat::tests::advance_streaming_cache_line_boundary_does_not_commit ... ok
[INFO] [stdout] test tui::components::chat::tests::advance_streaming_cache_multiple_paragraphs_commit_to_last_break ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::grep::tests::footer_text_truncated_only_names_limit ... ok
[INFO] [stdout] test tui::components::chat::tests::advance_streaming_cache_no_newline_keeps_boundary_zero ... ok
[INFO] [stdout] test tui::components::chat::tests::advance_streaming_cache_paragraph_boundary_commits ... ok
[INFO] [stdout] test tui::components::chat::tests::advance_streaming_cache_trailing_paragraph_break_only ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_cached_and_tail_both_visible ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_after_committed_assistant_omits_duplicate_icon ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_inserts_blank_separator_after_tool_output ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_persists_thinking_into_blocks ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_no_spurious_blank_between_consecutive_list_items ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_preserves_blank_before_partial_list_item_trailing ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_preserves_blank_between_cache_and_live_tail ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_preserves_blank_between_committed_paragraphs ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_renders_buffer_ending_in_newline_before_cache_advance ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_renders_committed_and_trailing_before_cache_advance ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_shows_partial_text ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_trailing_newline_with_empty_tail ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_without_prior_assistant_shows_icon ... ok
[INFO] [stdout] test tui::components::chat::tests::append_stream_token_uncommitted_newlines_all_render ... ok
[INFO] [stdout] test tui::components::chat::tests::append_thinking_token_after_tool_call_has_separator ... ok
[INFO] [stdout] test tui::components::chat::tests::append_thinking_token_after_user_has_separator ... ok
[INFO] [stdout] test tui::components::chat::tests::append_thinking_token_visible_when_enabled ... ok
[INFO] [stdout] test tui::components::chat::tests::build_text_empty_returns_no_lines ... ok
[INFO] [stdout] test tui::components::chat::tests::build_text_full_conversation ... ok
[INFO] [stdout] test tui::components::chat::tests::clear_history_drops_blocks_streaming_thinking_and_resets_scroll ... ok
[INFO] [stdout] test tui::components::chat::tests::commit_streaming_clears_state ... ok
[INFO] [stdout] test tui::components::chat::tests::append_thinking_token_hidden_when_disabled ... ok
[INFO] [stdout] test tui::components::chat::tests::commit_streaming_moves_buffer_to_block ... ok
[INFO] [stdout] test tui::components::chat::tests::commit_streaming_persists_thinking_only_turn ... ok
[INFO] [stdout] test tui::components::chat::tests::consecutive_tool_calls_have_no_gap ... ok
[INFO] [stdout] test tui::components::chat::tests::handle_event_arrow_down_scrolls_down ... ok
[INFO] [stdout] test tui::components::chat::tests::handle_event_arrow_up_scrolls_up ... ok
[INFO] [stdout] test tui::components::chat::tests::handle_event_ctrl_end_scrolls_to_bottom ... ok
[INFO] [stdout] test tui::components::chat::tests::handle_event_ctrl_home_scrolls_to_top ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::parse_hunk_starts_is_none_for_non_hunk ... ok
[INFO] [stdout] test tui::components::chat::blocks::git_diff::tests::strip_marker_rejects_diff_metadata_double_marker ... ok
[INFO] [stdout] test tui::components::chat::blocks::tool::diff::tests::render_single_chunk_emits_body_without_locations_footer ... ok
[INFO] [stdout] test tui::components::chat::tests::commit_streaming_empty_buffer_no_block ... ok
[INFO] [stdout] test tui::app::tests::run_with_events_pumps_crossterm_and_agent_events_through_select ... ok
[INFO] [stdout] test tui::components::chat::tests::handle_event_mouse_scroll_up ... ok
[INFO] [stdout] test tui::components::chat::tests::handle_event_mouse_scroll_down ... ok
[INFO] [stdout] test tui::components::chat::tests::handle_event_unhandled_key_leaves_state_unchanged ... ok
[INFO] [stdout] test tui::components::chat::tests::is_empty_false_with_in_flight_streaming_buffer ... ok
[INFO] [stdout] test tui::components::chat::tests::handle_event_page_down ... ok
[INFO] [stdout] test tui::components::chat::tests::is_empty_false_with_committed_block ... ok
[INFO] [stdout] test tui::components::chat::tests::is_empty_true_for_fresh_chat ... ok
[INFO] [stdout] test tui::components::chat::tests::last_is_error_false_for_non_error_blocks ... ok
[INFO] [stdout] test tui::components::chat::tests::handle_event_page_up ... ok
[INFO] [stdout] test tui::components::chat::tests::is_empty_false_with_pending_thinking_buffer ... ok
[INFO] [stdout] test tui::components::chat::tests::last_is_error_false_when_no_blocks ... ok
[INFO] [stdout] test tui::components::chat::tests::last_is_error_true_after_push_error ... ok
[INFO] [stdout] test tui::components::chat::tests::last_system_text_none_when_no_blocks ... ok
[INFO] [stdout] test tui::components::chat::tests::last_system_text_default_is_none_for_non_system_blocks ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_empty_slice_is_noop ... ok
[INFO] [stdout] test tui::components::chat::tests::last_system_text_produces_body_for_system_message ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_hides_resumed_thinking_when_show_thinking_disabled ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_joins_multiple_text_blocks ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_populates_user_and_assistant_entries ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_redacted_thinking_is_dropped ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_renders_resumed_thinking_when_show_thinking_enabled ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_multi_tool_turn_pairs_inline_with_orphan_fallback ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_server_tool_use_renders_like_local_tool_call ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_renders_tool_result_after_paired_tool_use ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_unknown_tool_falls_back_to_tool_name_as_label ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_restores_tool_call_after_assistant_text ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_tool_result_without_matching_tool_use_uses_fallback_label ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_skips_whitespace_only_text ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_call_after_assistant_has_blank_separator ... ok
[INFO] [stdout] test tui::components::chat::tests::load_history_uses_persisted_metadata_title_and_replacements ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_call_shows_icon_and_label ... ok
[INFO] [stdout] test tui::components::chat::tests::push_error_shows_error_indicator ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_dedup_drops_first_body_line_matching_label ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_dedup_leaves_unrelated_first_line_intact ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_drops_surrounding_blank_lines ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_empty_content_adds_nothing ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_long_line_is_truncated ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_one_over_max_shows_singular_line ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_preserves_leading_whitespace_on_first_body_line ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_success ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_truncation ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_view_edit_renders_diff_markers ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_view_edit_replace_all_multi_chunk_shows_locations_footer ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_view_edit_replace_all_shows_match_count ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_view_edit_single_replacement_hides_count_footer ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_call_wraps_long_label ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_view_grep_renders_path_header_and_numbered_match_rows ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_view_glob_renders_path_list_with_total_in_footer ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_dedup_collapses_body_when_only_line_matches_label ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_exactly_max_no_truncation ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_error ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_view_grep_truncates_body_with_hidden_line_count ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_view_read_excerpt_renders_context_and_line_numbers ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_view_grep_truncated_flag_emits_limit_reached_marker ... ok
[INFO] [stdout] test tui::components::chat::tests::push_user_message_enables_auto_scroll ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_wraps_long_label ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_view_read_excerpt_empty_file_keeps_context ... ok
[INFO] [stdout] test tui::components::chat::tests::push_tool_result_view_read_excerpt_truncates_body_lines ... ok
[INFO] [stdout] test tui::components::chat::tests::push_user_message_has_trailing_blank_before_tool_call ... ok
[INFO] [stdout] test tui::components::chat::tests::push_user_message_has_icon_and_content ... ok
[INFO] [stdout] test tui::components::chat::tests::push_user_message_multiline_renders_every_line ... ok
[INFO] [stdout] test tui::components::chat::tests::render_tool_call_with_edit_diff_error_uses_error_border_color ... ok
[INFO] [stdout] test tui::components::chat::tests::render_tool_call_followed_by_result ... ok
[INFO] [stdout] test tui::components::chat::tests::render_history_with_resumed_thinking_block ... ok
[INFO] [stdout] test tui::components::chat::tests::render_error_entry_is_styled_distinctly ... ok
[INFO] [stdout] test tui::components::chat::tests::render_empty_paints_blank_chat_region ... ok
[INFO] [stdout] test tui::components::chat::tests::render_tool_call_with_edit_diff_result ... ok
[INFO] [stdout] test tui::components::chat::tests::render_tool_call_with_edit_diff_trims_identical_boundary_lines ... ok
[INFO] [stdout] test tui::components::chat::tests::render_tool_result_overflow_shows_line_count ... ok
[INFO] [stdout] test tui::components::chat::tests::scroll_down_clamps_to_max_and_enables_auto_scroll ... ok
[INFO] [stdout] test tui::components::chat::tests::render_tool_call_with_edit_diff_wraps_long_lines_under_bar ... ok
[INFO] [stdout] test tui::components::chat::tests::scroll_down_increases_offset ... ok
[INFO] [stdout] test tui::components::chat::tests::render_user_and_assistant_interleaved ... ok
[INFO] [stdout] test tui::components::chat::tests::scroll_to_bottom_sets_offset_correctly ... ok
[INFO] [stdout] test tui::components::chat::tests::scroll_up_decreases_offset_and_disables_auto_scroll ... ok
[INFO] [stdout] test tui::components::chat::tests::scroll_to_bottom_zero_when_content_fits ... ok
[INFO] [stdout] test tui::components::chat::tests::set_theme_invalidates_streaming_cache_so_in_flight_tokens_repaint ... ok
[INFO] [stdout] test tui::components::chat::tests::render_tool_call_with_edit_diff_over_budget_truncates_both_sides ... ok
[INFO] [stdout] test tui::components::chat::tests::render_updates_content_height ... ok
[INFO] [stdout] test tui::components::chat::tests::set_theme_without_active_streaming_is_a_noop_on_cache_state ... ok
[INFO] [stdout] test tui::components::chat::tests::scroll_up_saturates_at_zero ... ok
[INFO] [stdout] test tui::components::chat::tests::update_layout_is_false_when_offset_unchanged ... ok
[INFO] [stdout] test tui::components::chat::tests::tool_result_followed_by_new_tool_call_has_borderless_spacer ... ok
[INFO] [stdout] test tui::components::chat::tests::update_layout_auto_scrolls_when_enabled ... ok
[INFO] [stdout] test tui::components::chat::tests::update_layout_invalidates_streaming_cache_on_width_change ... ok
[INFO] [stdout] test tui::components::chat::tests::update_layout_paused_skips_scroll_and_keeps_offset ... ok
[INFO] [stdout] test tui::components::chat::tests::update_layout_sets_viewport_height ... ok
[INFO] [stdout] test tui::components::chat::tests::user_followed_by_assistant_has_no_double_blank ... ok
[INFO] [stdout] test tui::components::input::popup::tests::height_caps_at_max_visible_rows_plus_chrome ... ok
[INFO] [stdout] test tui::components::input::popup::tests::height_is_zero_when_hidden ... ok
[INFO] [stdout] test tui::components::input::popup::tests::render_after_scroll_shows_window_starting_at_offset ... ok
[INFO] [stdout] test tui::components::input::popup::tests::render_filtered_name_query_shows_only_matching_rows ... ok
[INFO] [stdout] test tui::components::input::popup::tests::render_hidden_popup_emits_nothing ... ok
[INFO] [stdout] test tui::components::input::popup::tests::render_narrow_terminal_truncates_description ... ok
[INFO] [stdout] test tui::components::input::popup::tests::render_arg_mode_prefix_filters_to_subset ... ok
[INFO] [stdout] test tui::components::input::popup::tests::render_selected_row_paints_bold_text_others_dim ... ok
[INFO] [stdout] test tui::components::input::popup::tests::render_arg_mode_lists_curated_roster_without_slash_prefix ... ok
[INFO] [stdout] test tui::components::input::popup::tests::render_with_only_chrome_room_paints_the_border_and_skips_rows ... ok
[INFO] [stdout] test tui::components::input::popup::tests::render_alias_match_parenthesizes_only_typed_alias ... ok
[INFO] [stdout] test tui::components::input::popup::tests::scroll_offset_anchors_at_top_while_cursor_in_first_half ... ok
[INFO] [stdout] test tui::components::input::popup::tests::scroll_offset_at_exactly_cap_returns_zero_for_last_row ... ok
[INFO] [stdout] test tui::components::input::popup::tests::scroll_offset_anchors_at_bottom_near_end ... ok
[INFO] [stdout] test tui::components::input::popup::tests::render_empty_name_query_shows_each_command_once ... ok
[INFO] [stdout] test tui::components::input::popup::tests::scroll_offset_centers_cursor_past_first_half ... ok
[INFO] [stdout] test tui::components::input::popup::tests::scroll_offset_keeps_visible_row_at_pad_for_mid_list_selection ... ok
[INFO] [stdout] test tui::components::input::popup::tests::scroll_offset_is_zero_when_total_fits_window ... ok
[INFO] [stdout] test tui::components::input::popup::tests::scroll_offset_resets_on_wrap_to_first_row ... ok
[INFO] [stdout] test tui::components::input::popup::tests::scroll_offset_select_prev_from_top_anchors_at_bottom_window ... ok
[INFO] [stdout] test tui::components::input::popup::tests::select_next_on_empty_popup_is_a_noop ... ok
[INFO] [stdout] test tui::components::input::popup::tests::select_next_wraps_at_bottom ... ok
[INFO] [stdout] test tui::components::input::popup::tests::select_prev_wraps_at_top ... ok
[INFO] [stdout] test tui::components::input::popup::tests::select_prev_decrements_when_not_at_top ... ok
[INFO] [stdout] test tui::components::input::popup::tests::selected_is_none_when_hidden ... ok
[INFO] [stdout] test tui::components::input::popup::tests::set_state_arg_unknown_command_stays_hidden ... ok
[INFO] [stdout] test tui::components::input::popup::tests::set_state_arg_with_curated_roster_populates_arg_mode ... ok
[INFO] [stdout] test tui::components::input::popup::tests::set_state_arg_with_empty_roster_stays_hidden ... ok
[INFO] [stdout] test tui::components::input::popup::tests::set_state_clamps_selection_when_row_count_shrinks ... ok
[INFO] [stdout] test tui::components::input::popup::tests::selected_picks_row_at_index ... ok
[INFO] [stdout] test tui::components::input::popup::tests::set_state_name_empty_query_lists_full_registry_in_presentation_order ... ok
[INFO] [stdout] test tui::components::input::popup::tests::set_state_intra_mode_query_change_preserves_selection_via_clamp ... ok
[INFO] [stdout] test tui::components::input::popup::tests::set_state_none_hides_popup ... ok
[INFO] [stdout] test tui::components::input::popup::tests::set_state_resets_selection_on_mode_transition ... ok
[INFO] [stdout] test tui::components::input::tests::ghost_text_from_state_arg_with_empty_prefix_and_usage_renders_token ... ok
[INFO] [stdout] test tui::components::input::tests::ghost_text_from_state_non_empty_prefix_returns_none ... ok
[INFO] [stdout] test tui::components::input::tests::ghost_text_suppresses_in_name_mode ... ok
[INFO] [stdout] test tui::components::input::tests::ghost_text_from_state_arg_without_usage_returns_none ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_alt_enter_inserts_newline ... ok
[INFO] [stdout] test tui::components::input::tests::ghost_text_from_state_name_mode_returns_none_even_with_usage ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_ctrl_d_empty_buffer_quits_only_when_idle ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_ctrl_c_busy_triggers_cancel ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_ctrl_c_idle_arms_exit ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_disabled_empty_enter_is_silent ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_disabled_enter_with_content_submits ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_disabled_typing_lands_in_textarea ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_popup_down_advances_selection ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_enter_submits_nonempty ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_ctrl_d_with_content_is_a_noop_in_idle_and_busy ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_disabled_scroll_keys_pass_through ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_popup_enter_in_arg_mode_with_empty_prefix_commits_picked_row ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_popup_enter_in_name_mode_commits_picked_row ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_popup_enter_with_typed_arg_prefix_still_commits_picked_row ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_popup_tab_in_name_mode_chains_into_arg_mode_for_curated_commands ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_popup_visible_ignores_non_key_events ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_popup_tab_in_name_mode_inserts_slash_name_and_space ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_popup_up_reverses_selection ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_popup_visible_passes_unhandled_keys_to_textarea ... ok
[INFO] [stdout] test tui::components::input::tests::height_accounts_for_visual_wrapping ... ok
[INFO] [stdout] test tui::components::input::tests::height_capped_at_max ... ok
[INFO] [stdout] test tui::components::input::tests::height_empty_input_is_three ... ok
[INFO] [stdout] test tui::components::input::tests::height_grows_with_content ... ok
[INFO] [stdout] test tui::components::input::tests::normalize_placeholder_handles_missing_layers ... ok
[INFO] [stdout] test tui::components::input::tests::normalize_placeholder_strips_outer_brackets_and_inner_angles ... ok
[INFO] [stdout] test tui::components::input::tests::normalize_placeholder_trims_whitespace_inside_brackets ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_popup_esc_then_enter_submits_typed_buffer_literally ... ok
[INFO] [stdout] test tui::components::chat::tests::render_tool_call_with_edit_diff_identical_sides_emits_no_change_marker ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_popup_tab_in_arg_mode_inserts_cmd_value_and_space ... ok
[INFO] [stdout] test tui::components::input::tests::render_advances_scroll_top_when_cursor_below_viewport ... ok
[INFO] [stdout] test tui::components::input::tests::render_busy_state_keeps_text_styled_normally ... ok
[INFO] [stdout] test tui::components::input::tests::handle_event_shift_enter_inserts_newline ... ok
[INFO] [stdout] test tui::components::input::tests::render_omits_ghost_text_once_user_types_arg_prefix ... ok
[INFO] [stdout] test tui::components::input::tests::render_multiline_grows_textarea_region ... ok
[INFO] [stdout] test tui::components::input::tests::render_empty_buffer_shows_only_prompt_marker_and_borders ... ok
[INFO] [stdout] test tui::components::input::tests::render_long_line_wraps_and_engages_scroll_offset ... ok
[INFO] [stdout] test tui::components::input::tests::render_popup_paints_when_visible ... ok
[INFO] [stdout] test tui::components::input::tests::set_enabled_toggles_state ... ok
[INFO] [stdout] test tui::components::input::tests::submit_clears_textarea ... ok
[INFO] [stdout] test tui::components::input::tests::submit_empty_produces_no_action ... ok
[INFO] [stdout] test tui::components::input::tests::submit_trims_whitespace ... ok
[INFO] [stdout] test tui::components::input::tests::visual_line_count_mixed_logical_and_wrapped ... ok
[INFO] [stdout] test tui::components::input::tests::render_paints_ghost_text_after_cursor_in_arg_mode ... ok
[INFO] [stdout] test tui::components::input::tests::visual_line_count_no_width_falls_back_to_logical ... ok
[INFO] [stdout] test tui::components::status::tests::fit_layout_drops_title_before_cwd_when_combined_too_wide ... ok
[INFO] [stdout] test tui::components::input::tests::visual_line_count_wraps_long_line ... ok
[INFO] [stdout] test tui::components::status::tests::fit_layout_drops_both_when_nothing_extra_fits ... ok
[INFO] [stdout] test tui::components::status::tests::fit_layout_keeps_title_when_cwd_is_too_wide_to_fit_alone ... ok
[INFO] [stdout] test tui::components::status::tests::render_compacting_shows_spinner_and_status_label ... ok
[INFO] [stdout] test tui::components::status::tests::render_cancelling_shows_spinner_and_label ... ok
[INFO] [stdout] test tui::components::status::tests::render_drops_title_first_when_tight ... ok
[INFO] [stdout] test tui::components::status::tests::render_empty_cwd_drops_cwd_slot_entirely ... ok
[INFO] [stdout] test tui::components::input::tests::render_prompt_marker_always_uses_user_color ... ok
[INFO] [stdout] test tui::components::status::tests::fit_layout_keeps_both_slots_when_everything_fits ... ok
[INFO] [stdout] test tui::components::input::tests::render_rewinds_scroll_top_when_cursor_above_viewport ... ok
[INFO] [stdout] test tui::components::status::tests::render_narrow_width_drops_cwd_and_title_slots ... ok
[INFO] [stdout] test tui::components::input::tests::render_with_text_shows_typed_content ... ok
[INFO] [stdout] test tui::components::status::tests::render_idle_with_title_shows_model_title_and_cwd ... ok
[INFO] [stdout] test tui::components::status::tests::render_idle_without_title_leaves_slot_unused ... ok
[INFO] [stdout] test tui::components::status::tests::render_exit_armed_shows_static_hint_without_spinner ... ok
[INFO] [stdout] test tui::components::status::tests::render_no_title_still_shows_cwd_wide ... ok
[INFO] [stdout] test tui::components::status::tests::set_model_replaces_displayed_model_label ... ok
[INFO] [stdout] test tui::components::status::tests::render_wide_shows_title_between_model_and_status ... ok
[INFO] [stdout] test tui::components::status::tests::render_tool_running_status ... ok
[INFO] [stdout] test tui::components::status::tests::render_truncates_long_title_with_ellipsis ... ok
[INFO] [stdout] test tui::components::status::tests::set_status_resets_spinner_on_transition ... ok
[INFO] [stdout] test tui::components::status::tests::set_status_to_idle_resets_spinner ... ok
[INFO] [stdout] test tui::components::status::tests::set_title_drops_whitespace_only ... ok
[INFO] [stdout] test tui::components::status::tests::render_streaming_shows_spinner_and_status_label ... ok
[INFO] [stdout] test tui::components::status::tests::set_title_none_clears_title ... ok
[INFO] [stdout] test tui::components::status::tests::set_title_stores_non_empty_title ... ok
[INFO] [stdout] test tui::components::status::tests::tick_idle_is_false ... ok
[INFO] [stdout] test tui::components::status::tests::tick_streaming_increments_counter_before_threshold ... ok
[INFO] [stdout] test tui::components::status::tests::tick_wraps_spinner_frames ... ok
[INFO] [stdout] test tui::components::status::tests::tick_streaming_advances_frame_at_threshold ... ok
[INFO] [stdout] test tui::components::welcome::tests::from_live_picks_distinct_starters_from_the_pool ... ok
[INFO] [stdout] test tui::components::welcome::tests::from_live_picks_tip_from_the_pool ... ok
[INFO] [stdout] test tui::components::welcome::tests::from_live_projects_display_name_and_effort ... ok
[INFO] [stdout] test tui::components::welcome::tests::from_live_with_seed_is_deterministic ... ok
[INFO] [stdout] test tui::components::status::tests::set_status_same_status_preserves_spinner ... ok
[INFO] [stdout] test tui::components::welcome::tests::paint_at_narrow_min_does_not_clip_environment_text ... ok
[INFO] [stdout] test tui::components::welcome::tests::paint_below_narrow_min_is_a_noop ... ok
[INFO] [stdout] test tui::components::welcome::tests::paint_below_starters_min_height_centers_env_on_its_own_width ... ok
[INFO] [stdout] test tui::components::welcome::tests::paint_full_width_renders_box_environment_starters_and_trailer ... ok
[INFO] [stdout] test tui::components::welcome::tests::paint_just_below_collapsed_min_drops_starters ... ok
[INFO] [stdout] test tui::components::welcome::tests::paint_zero_height_is_a_noop ... ok
[INFO] [stdout] test tui::cursor::tests::place_clamped_in_offset_area_anchors_relative_to_right_edge ... ok
[INFO] [stdout] test tui::cursor::tests::place_clamped_past_right_edge_pulls_back_inside ... ok
[INFO] [stdout] test tui::components::welcome::tests::paint_60_col_minimum_full_layout_still_includes_starters ... ok
[INFO] [stdout] test tui::cursor::tests::place_clamped_within_area_keeps_raw_x ... ok
[INFO] [stdout] test tui::components::welcome::tests::paint_just_below_full_min_drops_ribbon ... ok
[INFO] [stdout] test tui::glyphs::tests::assistant_continuation_aligns_with_prefix_width ... ok
[INFO] [stdout] test tui::glyphs::tests::spinner_frames_each_render_in_one_column ... ok
[INFO] [stdout] test tui::glyphs::tests::thinking_prefix_starts_with_bar ... ok
[INFO] [stdout] test tui::event::tests::channel_sink_delivers_events ... ok
[INFO] [stdout] test tui::event::tests::channel_sink_send_after_receiver_dropped ... ok
[INFO] [stdout] test tui::glyphs::tests::tool_border_cont_starts_with_bar ... ok
[INFO] [stdout] test tui::glyphs::tests::tool_error_matches_error_prefix_glyph ... ok
[INFO] [stdout] test tui::glyphs::tests::tool_border_prefix_starts_with_bar ... ok
[INFO] [stdout] test tui::glyphs::tests::user_prompt_continuation_aligns_with_prefix_width ... ok
[INFO] [stdout] test tui::markdown::highlight::tests::highlight_code_empty_language_uses_fallback ... ok
[INFO] [stdout] test tui::glyphs::tests::user_prompt_prefix_width_matches_string_width ... ok
[INFO] [stdout] test tui::components::welcome::tests::paint_collapsed_drops_box_but_keeps_starters ... ok
[INFO] [stdout] test tui::components::welcome::tests::paint_narrow_drops_starters_and_truncates_cwd_in_the_middle ... ok
[INFO] [stdout] test tui::markdown::render::tests::blockquote_list_item_wraps_with_blockquote_marker_only ... ok
[INFO] [stdout] test tui::markdown::render::tests::blockquote_text_and_style ... ok
[INFO] [stdout] test tui::markdown::render::tests::blockquote_wraps_with_marker_on_continuations ... ok
[INFO] [stdout] test tui::markdown::render::tests::bold_and_italic ... ok
[INFO] [stdout] test tui::markdown::render::tests::bold_italic_combined ... ok
[INFO] [stdout] test tui::markdown::render::tests::fenced_code_block_plain ... ok
[INFO] [stdout] test tui::markdown::render::tests::fenced_code_block_plain_has_no_background ... ok
[INFO] [stdout] test tui::app::tests::run_with_events_marks_dirty_when_spinner_frame_advances ... ok
[INFO] [stdout] test tui::markdown::render::tests::fit_column_widths_empty_input_yields_empty ... ok
[INFO] [stdout] test tui::markdown::render::tests::fit_column_widths_natural_fits_budget_unchanged ... ok
[INFO] [stdout] test tui::markdown::render::tests::fit_column_widths_preserves_zero_width_columns ... ok
[INFO] [stdout] test tui::markdown::render::tests::fit_column_widths_shrinks_widest_column_first ... ok
[INFO] [stdout] test tui::markdown::render::tests::heading_levels_text_and_styles ... ok
[INFO] [stdout] test tui::markdown::render::tests::heading_wraps_at_width ... ok
[INFO] [stdout] test tui::markdown::render::tests::horizontal_rule_text_and_style ... ok
[INFO] [stdout] test tui::markdown::render::tests::html_block_rendered_as_text ... ok
[INFO] [stdout] test tui::markdown::render::tests::inline_code ... ok
[INFO] [stdout] test tui::markdown::render::tests::inline_code_in_list_item ... ok
[INFO] [stdout] test tui::markdown::render::tests::inline_code_inside_bold_inherits_bold ... ok
[INFO] [stdout] test tui::markdown::render::tests::inline_code_inside_heading_inherits_modifiers ... ok
[INFO] [stdout] test tui::markdown::render::tests::inline_html_preserved ... ok
[INFO] [stdout] test tui::markdown::render::tests::link_appends_url ... ok
[INFO] [stdout] test tui::markdown::render::tests::link_in_list_item ... ok
[INFO] [stdout] test tui::markdown::render::tests::link_url_has_accent_underline_style ... ok
[INFO] [stdout] test tui::markdown::render::tests::list_marker_uses_accent_color ... ok
[INFO] [stdout] test tui::markdown::render::tests::loose_ordered_list ... ok
[INFO] [stdout] test tui::markdown::render::tests::loose_unordered_list ... ok
[INFO] [stdout] test tui::markdown::render::tests::nested_blockquote ... ok
[INFO] [stdout] test tui::markdown::render::tests::nested_blockquote_wraps_with_nested_markers ... ok
[INFO] [stdout] test tui::markdown::render::tests::nested_list ... ok
[INFO] [stdout] test tui::markdown::render::tests::ordered_list_double_digit_alignment ... ok
[INFO] [stdout] test tui::markdown::render::tests::paragraph_separation ... ok
[INFO] [stdout] test tui::markdown::render::tests::paragraph_soft_break_joins ... ok
[INFO] [stdout] test tui::markdown::render::tests::paragraph_wraps_at_width ... ok
[INFO] [stdout] test tui::markdown::render::tests::plain_text ... ok
[INFO] [stdout] test tui::markdown::render::tests::strikethrough ... ok
[INFO] [stdout] test tui::markdown::render::tests::table_alignment ... ok
[INFO] [stdout] test tui::markdown::render::tests::table_basic ... ok
[INFO] [stdout] test tui::markdown::render::tests::table_empty_cells ... ok
[INFO] [stdout] test tui::markdown::render::tests::table_fits_width_budget_and_wraps_cells ... ok
[INFO] [stdout] test tui::markdown::render::tests::table_header_only ... ok
[INFO] [stdout] test tui::markdown::render::tests::table_header_style ... ok
[INFO] [stdout] test tui::markdown::render::tests::table_inline_styles ... ok
[INFO] [stdout] test tui::markdown::render::tests::table_mismatched_column_counts ... ok
[INFO] [stdout] test tui::markdown::render::tests::table_wrapped_cell_keeps_alignment_in_other_columns ... ok
[INFO] [stdout] test tui::markdown::render::tests::tight_list_item_wraps_without_repeating_marker ... ok
[INFO] [stdout] test tui::markdown::render::tests::tight_ordered_list ... ok
[INFO] [stdout] test tui::markdown::render::tests::tight_unordered_list ... ok
[INFO] [stdout] test tui::markdown::render::tests::wrap_cell_empty_produces_single_empty_sub_line ... ok
[INFO] [stdout] test tui::markdown::render::tests::wrap_cell_wraps_long_content_to_target_width ... ok
[INFO] [stdout] test tui::markdown::render::tests::wrap_cell_zero_target_width_preserves_cell ... ok
[INFO] [stdout] test tui::modal::kv_overview::tests::every_key_is_consumed_so_only_universal_cancel_dismisses ... ok
[INFO] [stdout] test tui::modal::kv_overview::tests::height_for_single_section_without_heading_counts_title_blank_rows_blank_footer ... ok
[INFO] [stdout] test tui::modal::kv_overview::tests::height_for_two_headed_sections_adds_heading_blanks_and_inter_section_blank ... ok
[INFO] [stdout] test tui::modal::kv_overview::tests::label_width_empty_sections_returns_zero ... ok
[INFO] [stdout] test tui::modal::kv_overview::tests::label_width_spans_every_section ... ok
[INFO] [stdout] test tui::modal::kv_overview::tests::render_runs_at_typical_widths_without_panicking ... ok
[INFO] [stdout] test tui::modal::list_picker::tests::height_with_description_adds_one_more_row ... ok
[INFO] [stdout] test tui::modal::list_picker::tests::height_with_empty_items_is_just_header_rows ... ok
[INFO] [stdout] test tui::modal::list_picker::tests::height_with_no_description_is_two_header_rows_plus_items ... ok
[INFO] [stdout] test tui::modal::list_picker::tests::render_handles_picker_and_items_with_no_descriptions ... ok
[INFO] [stdout] test tui::modal::list_picker::tests::render_runs_without_panicking_at_minimum_width ... ok
[INFO] [stdout] test tui::modal::list_picker::tests::select_by_hint_jumps_to_matching_item_and_returns_true ... ok
[INFO] [stdout] test tui::modal::list_picker::tests::select_by_hint_unknown_key_leaves_cursor_and_returns_false ... ok
[INFO] [stdout] test tui::modal::list_picker::tests::select_initial_no_match_leaves_cursor_at_zero ... ok
[INFO] [stdout] test tui::modal::list_picker::tests::select_initial_seeks_first_matching_item ... ok
[INFO] [stdout] test tui::markdown::highlight::tests::highlight_code_unknown_language_uses_fallback ... ok
[INFO] [stdout] test tui::modal::list_picker::tests::select_next_advances_and_wraps_at_end ... ok
[INFO] [stdout] test tui::modal::list_picker::tests::select_next_and_prev_on_empty_list_are_noops ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::cursor_to_is_a_noop_when_no_row_matches ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::cursor_to_seeks_to_first_visible_row_matching_predicate ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::cursor_to_walks_only_filtered_rows ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::empty_query_includes_every_item ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::navigation_on_empty_visible_set_is_silent_noop ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::page_down_clamps_at_last_visible_row ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::page_up_clamps_at_zero ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::place_terminal_cursor_skips_when_area_too_short_for_search_row ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::pop_char_on_empty_query_is_a_noop ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::push_then_pop_round_trips_through_filter_state ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::render_at_minimum_width_does_not_panic ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::render_places_cursor_at_prompt_plus_visible_query_width ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::render_shows_no_match_line_when_filter_excludes_everything ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::replace_items_resets_cursor_and_reapplies_filter ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::select_next_advances_through_visible_indices_and_wraps ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::select_next_skips_filtered_out_items ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::select_prev_wraps_at_zero ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::set_query_filters_to_substring_matches_case_insensitively ... ok
[INFO] [stdout] test tui::modal::searchable_list::tests::set_query_resets_cursor_and_viewport_to_top ... ok
[INFO] [stdout] test tui::modal::tests::clear_drops_every_modal_on_the_stack ... ok
[INFO] [stdout] test tui::modal::tests::debug_format_distinguishes_each_variant ... ok
[INFO] [stdout] test tui::modal::tests::default_on_focus_regained_is_a_noop_and_does_not_panic ... ok
[INFO] [stdout] test tui::modal::tests::empty_stack_pop_and_notify_is_a_noop ... ok
[INFO] [stdout] test tui::modal::tests::empty_stack_reports_inactive_and_zero_height ... ok
[INFO] [stdout] test tui::modal::tests::handle_key_cancel_pops_and_yields_modal_action_none ... ok
[INFO] [stdout] test tui::modal::tests::handle_key_ctrl_c_cancels_universally_like_esc ... ok
[INFO] [stdout] test tui::modal::tests::handle_key_esc_cancels_universally_without_reaching_modal ... ok
[INFO] [stdout] test tui::modal::tests::handle_key_modifier_less_key_routes_to_modal_unchanged ... ok
[INFO] [stdout] test tui::modal::tests::handle_key_on_empty_stack_returns_none_without_panicking ... ok
[INFO] [stdout] test tui::modal::tests::handle_key_preview_yields_action_without_popping_stack ... ok
[INFO] [stdout] test tui::modal::tests::handle_key_push_nests_child_modal_without_popping_parent ... ok
[INFO] [stdout] test tui::modal::tests::handle_key_push_take_once_falls_through_to_consumed_after_first_push ... ok
[INFO] [stdout] test tui::modal::tests::handle_key_submit_pops_and_yields_modal_action_user ... ok
[INFO] [stdout] test tui::modal::tests::handle_key_with_nested_stack_routes_to_top_modal_only ... ok
[INFO] [stdout] test tui::modal::list_picker::tests::select_prev_retreats_and_wraps_at_zero ... ok
[INFO] [stdout] test tui::modal::tests::push_activates_stack_and_height_reflects_top_modal ... ok
[INFO] [stdout] test tui::modal::tests::render_no_ops_when_stack_empty_or_area_smaller_than_body ... ok
[INFO] [stdout] test tui::modal::tests::pop_notifies_underlying_top_via_on_focus_regained ... ok
[INFO] [stdout] test tui::modal::tests::render_paints_top_border_then_delegates_body_below_it ... ok
[INFO] [stdout] test tui::pending_calls::tests::insert_and_remove_round_trip ... ok
[INFO] [stdout] test tui::pending_calls::tests::insert_overwrites_existing_entry ... ok
[INFO] [stdout] test tui::pending_calls::tests::remove_drains_the_entry ... ok
[INFO] [stdout] test tui::pending_calls::tests::remove_unknown_id_is_absent ... ok
[INFO] [stdout] test tui::pending_calls::tests::result_header_falls_back_to_generic_header_for_orphans ... ok
[INFO] [stdout] test tui::pending_calls::tests::result_header_falls_back_to_pending_label ... ok
[INFO] [stdout] test tui::pending_calls::tests::result_header_prefers_metadata_title ... ok
[INFO] [stdout] test tui::terminal::tests::enter_tui_mode_writes_setup_sequences ... ok
[INFO] [stdout] test tui::terminal::tests::leave_tui_mode_writes_restore_sequences ... ok
[INFO] [stdout] test tui::theme::builtin::tests::lookup_finds_each_builtin_by_name ... ok
[INFO] [stdout] test tui::theme::builtin::tests::lookup_unknown_name_is_none ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_hex_is_case_insensitive ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_hex_pure_red_green_blue ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_hex_rejects_missing_hash_prefix ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_hex_rejects_non_hex_chars ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_hex_rejects_three_digit_shorthand ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_indexed_mid_value ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_indexed_min_max ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_indexed_prefix_is_case_insensitive ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_indexed_rejects_non_numeric ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_indexed_rejects_out_of_range ... ok
[INFO] [stdout] test tui::terminal::tests::draw_sync_brackets_the_render_with_sync_update_bytes ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_named_bright_8 ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_named_case_insensitive ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_named_grey_alias_matches_gray ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_named_rejects_unknown_color ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_named_light_alias_matches_bright ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_named_standard_8 ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_named_reset_is_terminal_default ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_rejects_empty_string ... ok
[INFO] [stdout] test tui::theme::color::tests::parse_color_trims_surrounding_whitespace ... ok
[INFO] [stdout] test tui::theme::loader::tests::expand_tilde_passes_non_tilde_paths_through_unchanged ... ok
[INFO] [stdout] test tui::theme::loader::tests::expand_tilde_rewrites_leading_tilde_to_home ... ok
[INFO] [stdout] test tui::theme::loader::tests::inline_patch_empty_table_apply_errors_with_actionable_message ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_bare_string_slot_yields_fg_only_no_modifiers ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_bg_only_inline_slot_leaves_fg_unset ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_inline_rejects_unknown_modifier_key ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_inline_supports_every_modifier_flag ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_inline_table_slot_carries_modifiers ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_invalid_color_in_slot_names_the_slot ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_invalid_inline_bg_color_names_the_slot ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_invalid_inline_fg_color_names_the_slot ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_all_builtins ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_missing_required_slot ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_mocha_modifiers_match_default ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_mocha_matches_known_palette ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_non_mocha_palettes_match_known_text_color ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_unknown_slot_key ... ok
[INFO] [stdout] test tui::theme::loader::tests::parse_theme_surface_is_bg_only_in_every_builtin ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_bare_string_override_patches_only_fg ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_inline_override_can_add_a_modifier ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_inline_override_clears_modifier_with_false ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_inline_override_with_bad_bg_warns_and_keeps_base ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_file_path_with_bad_body_wraps_with_base_name ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_inline_override_with_bad_fg_warns_and_keeps_base ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_invalid_color_in_override_warns_and_keeps_base ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_loads_from_file_path ... ok
[INFO] [stdout] test tui::markdown::highlight::tests::highlight_code_empty_input_yields_empty ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_no_args_uses_default_mocha ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_named_builtin_loads_that_palette ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_unknown_name_with_no_matching_file_errors ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_unknown_slot_in_override_warns_and_resolves ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_multiple_overrides_apply_independently ... ok
[INFO] [stdout] test tui::theme::loader::tests::slot_patch_inline_none_modifiers_preserve_every_base_flag ... ok
[INFO] [stdout] test tui::theme::loader::tests::slot_patch_inline_with_bg_only_keeps_base_fg_and_modifiers ... ok
[INFO] [stdout] test tui::theme::loader::tests::slot_patch_inline_with_fg_overwrites_base_fg ... ok
[INFO] [stdout] test tui::theme::tests::accent_is_bold ... ok
[INFO] [stdout] test tui::theme::tests::composite_helpers_route_to_expected_slot_foreground ... ok
[INFO] [stdout] test tui::theme::tests::default_dim_cluster_matches_dim ... ok
[INFO] [stdout] test tui::theme::tests::default_table_header_matches_heading_h2 ... ok
[INFO] [stdout] test tui::theme::tests::default_theme_has_distinct_colors ... ok
[INFO] [stdout] test tui::theme::tests::diff_row_helpers_set_only_background ... ok
[INFO] [stdout] test tui::theme::tests::heading_styles_use_fg_with_expected_modifiers ... ok
[INFO] [stdout] test tui::theme::loader::tests::resolve_theme_unknown_slot_emits_tracing_warn_with_slot_name ... ok
[INFO] [stdout] test tui::theme::tests::markdown_helpers_route_to_expected_slot_foreground ... ok
[INFO] [stdout] test tui::markdown::highlight::tests::highlight_code_info_string_with_extra_tokens ... ok
[INFO] [stdout] test tui::theme::tests::separator_span_contains_pipe ... ok
[INFO] [stdout] test tui::theme::tests::slot_bg_only_sets_only_background ... ok
[INFO] [stdout] test tui::theme::tests::slot_fg_only_sets_only_foreground ... ok
[INFO] [stdout] test tui::markdown::render::tests::fenced_code_block_with_lang_highlights ... ok
[INFO] [stdout] test tui::theme::tests::slot_style_carries_modifiers ... ok
[INFO] [stdout] test tui::markdown::highlight::tests::highlight_code_known_language_produces_rgb ... ok
[INFO] [stdout] test tui::theme::tests::table_header_is_bold_fg ... ok
[INFO] [stdout] test tui::markdown::highlight::tests::highlight_code_multiline_preserves_lines ... ok
[INFO] [stdout] test tui::theme::tests::thinking_is_italic ... ok
[INFO] [stdout] test tui::wrap::tests::continuation_indent_applied ... ok
[INFO] [stdout] test tui::wrap::tests::continuation_prefix_spans_applied ... ok
[INFO] [stdout] test tui::theme::tests::link_uses_accent_with_underline ... ok
[INFO] [stdout] test tui::wrap::tests::expand_tabs_line_number_format ... ok
[INFO] [stdout] test tui::theme::tests::style_helpers_return_expected_foreground ... ok
[INFO] [stdout] test tui::wrap::tests::expand_tabs_mid_line_aligns_to_stop ... ok
[INFO] [stdout] test tui::wrap::tests::expand_tabs_no_tabs_unchanged ... ok
[INFO] [stdout] test tui::wrap::tests::styled_continuation_indent ... ok
[INFO] [stdout] test tui::theme::loader::tests::slot_for_name_routes_each_name_to_a_unique_slot ... ok
[INFO] [stdout] test tui::wrap::tests::force_break_on_long_word ... ok
[INFO] [stdout] test tui::wrap::tests::preserves_styles_across_wrap ... ok
[INFO] [stdout] test tui::wrap::tests::short_line_unchanged ... ok
[INFO] [stdout] test tui::wrap::tests::wraps_at_word_boundary ... ok
[INFO] [stdout] test tui::wrap::tests::zero_width_passes_through_unchanged ... ok
[INFO] [stdout] test util::env::tests::bool_any_other_set_value_is_explicit_false ... ok
[INFO] [stdout] test util::fs::tests::atomic_write_private_errors_when_parent_is_missing ... ok
[INFO] [stdout] test util::env::tests::bool_recognizes_true_values ... ok
[INFO] [stdout] test util::env::tests::bool_unset_or_empty_is_absent ... ok
[INFO] [stdout] test util::fs::tests::atomic_write_private_errors_when_path_has_no_parent ... ok
[INFO] [stdout] test util::env::tests::string_non_empty_reads_value ... ok
[INFO] [stdout] test util::fs::tests::create_private_dir_all_errors_with_actionable_path_when_parent_is_a_file ... ok
[INFO] [stdout] test util::fs::tests::create_private_dir_all_creates_nested_dirs ... ok
[INFO] [stdout] test util::fs::tests::create_private_dir_all_is_idempotent ... ok
[INFO] [stdout] test util::fs::tests::create_private_dir_all_sets_mode_0o700_on_new_dirs ... ok
[INFO] [stdout] test util::fs::tests::create_private_dir_all_tightens_lax_existing_directory ... ok
[INFO] [stdout] test util::lock::tests::retry_acquire_propagates_fatal_errors_without_retrying ... ok
[INFO] [stdout] test util::fs::tests::atomic_write_private_does_not_leave_temp_file_on_success ... ok
[INFO] [stdout] test util::fs::tests::atomic_write_private_sets_mode_0o600_on_new_files ... ok
[INFO] [stdout] test util::env::tests::string_unset_or_empty_is_absent ... ok
[INFO] [stdout] test util::fs::tests::atomic_write_private_writes_bytes_and_replaces_existing ... ok
[INFO] [stdout] test util::log::tests::build_log_target_is_none_when_tui_mode_false ... ok
[INFO] [stdout] test util::lock::tests::retry_acquire_succeeds_immediately ... ok
[INFO] [stdout] test util::log::tests::log_dir_from_ignores_relative_xdg_and_uses_home_fallback ... ok
[INFO] [stdout] test util::log::tests::log_dir_from_falls_back_to_home_local_state_when_xdg_unset ... ok
[INFO] [stdout] test util::log::tests::log_dir_from_is_none_without_xdg_or_home ... ok
[INFO] [stdout] test util::log::tests::log_dir_from_uses_xdg_state_home_when_set_and_absolute ... ok
[INFO] [stdout] test util::lock::tests::retry_acquire_errors_with_contention_after_exhausting_retries ... ok
[INFO] [stdout] test util::lock::tests::retry_acquire_retries_until_success_within_budget ... ok
[INFO] [stdout] test util::fs::tests::atomic_write_private_cleans_up_temp_when_rename_fails ... ok
[INFO] [stdout] test util::log::tests::open_file_appender_creates_missing_directory ... ok
[INFO] [stdout] test util::log::tests::open_file_appender_fails_when_parent_is_regular_file ... ok
[INFO] [stdout] test util::path::tests::tildify_leaves_home_itself_as_tilde ... ok
[INFO] [stdout] test util::path::tests::tildify_preserves_paths_outside_home ... ok
[INFO] [stdout] test util::path::tests::tildify_rewrites_home_prefix_to_tilde ... ok
[INFO] [stdout] test util::path::tests::xdg_dir_falls_back_to_home_when_xdg_unset ... ok
[INFO] [stdout] test util::path::tests::xdg_dir_ignores_relative_xdg_and_uses_home ... ok
[INFO] [stdout] test util::path::tests::xdg_dir_is_none_without_home_or_xdg ... ok
[INFO] [stdout] test util::log::tests::make_filter_empty_rust_log_yields_empty_filter ... ok
[INFO] [stdout] test util::log::tests::make_filter_defaults_to_warn_when_rust_log_unset ... ok
[INFO] [stdout] test util::log::tests::make_filter_honors_rust_log_level ... ok
[INFO] [stdout] test util::path::tests::xdg_dir_prefers_absolute_xdg_over_home_fallback ... ok
[INFO] [stdout] test util::text::tests::center_truncate_to_width_accounts_for_cjk_double_width ... ok
[INFO] [stdout] test util::log::tests::build_log_target_writes_to_log_file_when_tui_mode_true ... ok
[INFO] [stdout] test util::text::tests::center_truncate_to_width_falls_back_to_right_truncation_when_budget_too_small ... ok
[INFO] [stdout] test util::log::tests::make_filter_honors_rust_log_directive_language ... ok
[INFO] [stdout] test util::text::tests::center_truncate_to_width_keeps_head_and_tail_around_ellipsis ... ok
[INFO] [stdout] test util::text::tests::center_truncate_to_width_passes_through_strings_that_fit ... ok
[INFO] [stdout] test util::text::tests::truncate_to_width_accounts_for_cjk_double_width ... ok
[INFO] [stdout] test util::text::tests::truncate_to_width_drops_ellipsis_when_budget_below_ellipsis_width ... ok
[INFO] [stdout] test util::text::tests::truncate_to_width_appends_ellipsis_on_ascii_overflow ... ok
[INFO] [stdout] test util::text::tests::center_truncate_to_width_falls_back_to_right_truncate_when_cjk_overflows_both_halves ... ok
[INFO] [stdout] test util::time::tests::resolve_offset_passes_ok_through_unchanged ... ok
[INFO] [stdout] test util::time::tests::resolve_offset_falls_back_to_utc_on_err ... ok
[INFO] [stdout] test util::text::tests::truncate_to_width_passes_through_strings_that_fit ... ok
[INFO] [stdout] test util::text::tests::truncate_to_width_zero_produces_empty ... ok
[INFO] [stdout] test util::time::tests::init_is_idempotent_and_local_offset_returns_a_stable_cached_value ... ok
[INFO] [stdout] test util::log::tests::open_file_appender_appends_across_sessions ... ok
[INFO] [stdout] test tool::bash::tests::execute_timeout_kills_backgrounded_children ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tool::edit::tests::edit_file_fails_if_write_is_rejected stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tool::edit::tests::edit_file_fails_if_write_is_rejected' (1146) panicked at crates/oxide-code/src/tool/edit.rs:1126:14:
[INFO] [stdout] called `Result::unwrap_err()` on an `Ok` value: ("Successfully edited /tmp/.tmpjE3Mzl/readonly.txt.", 1, [DiffChunk { old: [DiffLine { number: 1, text: "hello" }], new: [DiffLine { number: 1, text: "goodbye" }] }])
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x6212d95d0eda - std[29689e6404d28ef9]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x6212d95d0eda - std[29689e6404d28ef9]::backtrace_rs::backtrace::trace_unsynchronized::<std[29689e6404d28ef9]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x6212d95d0eda - std[29689e6404d28ef9]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x6212d95d0eda - <<std[29689e6404d28ef9]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[e929cb53b82a81ca]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x6212d95eb8ea - <core[e929cb53b82a81ca]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x6212d95eb8ea - core[e929cb53b82a81ca]::fmt::write
[INFO] [stdout]    6:     0x6212d95d7342 - std[29689e6404d28ef9]::io::default_write_fmt::<alloc[9d7caffeb3b5d2c6]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/io/mod.rs:621:11
[INFO] [stdout]    7:     0x6212d95d7342 - <alloc[9d7caffeb3b5d2c6]::vec::Vec<u8> as std[29689e6404d28ef9]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/io/mod.rs:1976:13
[INFO] [stdout]    8:     0x6212d95a8a0f - <std[29689e6404d28ef9]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x6212d95a8a0f - std[29689e6404d28ef9]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x6212d95c6059 - std[29689e6404d28ef9]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x6212d89038ac - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn for<'a, 'b> core[e929cb53b82a81ca]::ops::function::Fn<(&'a std[29689e6404d28ef9]::panic::PanicHookInfo<'b>,), Output = ()> + core[e929cb53b82a81ca]::marker::Send + core[e929cb53b82a81ca]::marker::Sync> as core[e929cb53b82a81ca]::ops::function::Fn<(&std[29689e6404d28ef9]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   12:     0x6212d89038ac - test[a24b3028667022f7]::test_main_inner::<test[a24b3028667022f7]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x6212d95c62d2 - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn for<'a, 'b> core[e929cb53b82a81ca]::ops::function::Fn<(&'a std[29689e6404d28ef9]::panic::PanicHookInfo<'b>,), Output = ()> + core[e929cb53b82a81ca]::marker::Send + core[e929cb53b82a81ca]::marker::Sync> as core[e929cb53b82a81ca]::ops::function::Fn<(&std[29689e6404d28ef9]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   14:     0x6212d95c62d2 - std[29689e6404d28ef9]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x6212d95a8ac8 - std[29689e6404d28ef9]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x6212d959d249 - std[29689e6404d28ef9]::sys::backtrace::__rust_end_short_backtrace::<std[29689e6404d28ef9]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x6212d95a9e5d - __rustc[3aed6af316653e63]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x6212d95ec15c - core[e929cb53b82a81ca]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x6212d95ebea2 - core[e929cb53b82a81ca]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/result.rs:1867:5
[INFO] [stdout]   20:     0x6212d8058b2f - <core[e929cb53b82a81ca]::result::Result<(alloc[9d7caffeb3b5d2c6]::string::String, usize, alloc[9d7caffeb3b5d2c6]::vec::Vec<ox[bbdc97846d1f7ac1]::tool::DiffChunk>), alloc[9d7caffeb3b5d2c6]::string::String>>::unwrap_err
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/result.rs:1329:22
[INFO] [stdout]   21:     0x6212d842ec6e - ox[bbdc97846d1f7ac1]::tool::edit::tests::edit_file_fails_if_write_is_rejected::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/oxide-code/src/tool/edit.rs:1126:14
[INFO] [stdout]   22:     0x6212d82b4ef2 - <core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>> as core[e929cb53b82a81ca]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x6212d82b4fad - <core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>> as core[e929cb53b82a81ca]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/future/future.rs:133:9
[INFO] [stdout]   24:     0x6212d81129ed - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:778:70
[INFO] [stdout]   25:     0x6212d811270b - tokio[d2dd1a5e08b3eb4f]::task::coop::with_budget::<core[e929cb53b82a81ca]::task::poll::Poll<()>, <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/task/coop/mod.rs:167:5
[INFO] [stdout]   26:     0x6212d811270b - tokio[d2dd1a5e08b3eb4f]::task::coop::budget::<core[e929cb53b82a81ca]::task::poll::Poll<()>, <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/task/coop/mod.rs:133:5
[INFO] [stdout]   27:     0x6212d811270b - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:778:25
[INFO] [stdout]   28:     0x6212d80def20 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Context>::enter::<core[e929cb53b82a81ca]::task::poll::Poll<()>, <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:451:19
[INFO] [stdout]   29:     0x6212d810d09d - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:777:44
[INFO] [stdout]   30:     0x6212d810b844 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:865:68
[INFO] [stdout]   31:     0x6212d7e15b5b - <tokio[d2dd1a5e08b3eb4f]::runtime::context::scoped::Scoped<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::Context>>::set::<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}, (alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>)>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   32:     0x6212d84c4db9 - tokio[d2dd1a5e08b3eb4f]::runtime::context::set_scheduler::<(alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>), <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/context.rs:181:38
[INFO] [stdout]   33:     0x6212d831df12 - <std[29689e6404d28ef9]::thread::local::LocalKey<tokio[d2dd1a5e08b3eb4f]::runtime::context::Context>>::try_with::<tokio[d2dd1a5e08b3eb4f]::runtime::context::set_scheduler<(alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>), <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/local.rs:462:12
[INFO] [stdout]   34:     0x6212d831d6fe - <std[29689e6404d28ef9]::thread::local::LocalKey<tokio[d2dd1a5e08b3eb4f]::runtime::context::Context>>::with::<tokio[d2dd1a5e08b3eb4f]::runtime::context::set_scheduler<(alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>), <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/local.rs:426:20
[INFO] [stdout]   35:     0x6212d84bbdbd - tokio[d2dd1a5e08b3eb4f]::runtime::context::set_scheduler::<(alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>), <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/context.rs:181:17
[INFO] [stdout]   36:     0x6212d80e8da0 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:865:27
[INFO] [stdout]   37:     0x6212d80e9536 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:765:24
[INFO] [stdout]   38:     0x6212d8109db0 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:205:33
[INFO] [stdout]   39:     0x6212d7ec2983 - tokio[d2dd1a5e08b3eb4f]::runtime::context::runtime::enter_runtime::<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CurrentThread>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>::{closure#0}, ()>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   40:     0x6212d80dcca1 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:193:9
[INFO] [stdout]   41:     0x6212d85988f4 - <tokio[d2dd1a5e08b3eb4f]::runtime::runtime::Runtime>::block_on_inner::<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/runtime.rs:371:52
[INFO] [stdout]   42:     0x6212d8598c6f - <tokio[d2dd1a5e08b3eb4f]::runtime::runtime::Runtime>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/runtime.rs:345:18
[INFO] [stdout]   43:     0x6212d844c5d1 - ox[bbdc97846d1f7ac1]::tool::edit::tests::edit_file_fails_if_write_is_rejected
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/oxide-code/src/tool/edit.rs:1127:49
[INFO] [stdout]   44:     0x6212d8423197 - ox[bbdc97846d1f7ac1]::tool::edit::tests::edit_file_fails_if_write_is_rejected::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/oxide-code/src/tool/edit.rs:1112:52
[INFO] [stdout]   45:     0x6212d85f4a66 - <ox[bbdc97846d1f7ac1]::tool::edit::tests::edit_file_fails_if_write_is_rejected::{closure#0} as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x6212d88f6b8b - <fn() -> core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   47:     0x6212d88f6b8b - test[a24b3028667022f7]::__rust_begin_short_backtrace::<core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>, fn() -> core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:724:18
[INFO] [stdout]   48:     0x6212d890437b - test[a24b3028667022f7]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:747:74
[INFO] [stdout]   49:     0x6212d890437b - <core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   50:     0x6212d890437b - std[29689e6404d28ef9]::panicking::catch_unwind::do_call::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>, core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   51:     0x6212d890437b - std[29689e6404d28ef9]::panicking::catch_unwind::<core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>, core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   52:     0x6212d890437b - std[29689e6404d28ef9]::panic::catch_unwind::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>, core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panic.rs:359:14
[INFO] [stdout]   53:     0x6212d890437b - test[a24b3028667022f7]::run_test_in_process
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:747:27
[INFO] [stdout]   54:     0x6212d890437b - test[a24b3028667022f7]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:668:43
[INFO] [stdout]   55:     0x6212d88fda94 - test[a24b3028667022f7]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:698:41
[INFO] [stdout]   56:     0x6212d88fda94 - std[29689e6404d28ef9]::sys::backtrace::__rust_begin_short_backtrace::<test[a24b3028667022f7]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   57:     0x6212d8906f82 - std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked::<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   58:     0x6212d8906f82 - <core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   59:     0x6212d8906f82 - std[29689e6404d28ef9]::panicking::catch_unwind::do_call::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   60:     0x6212d8906f82 - std[29689e6404d28ef9]::panicking::catch_unwind::<(), core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   61:     0x6212d8906f82 - std[29689e6404d28ef9]::panic::catch_unwind::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panic.rs:359:14
[INFO] [stdout]   62:     0x6212d8906f82 - std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked::<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   63:     0x6212d8906f82 - <std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1} as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   64:     0x6212d95cfb9f - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn core[e929cb53b82a81ca]::ops::function::FnOnce<(), Output = ()> + core[e929cb53b82a81ca]::marker::Send> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2271:9
[INFO] [stdout]   65:     0x6212d95cfb9f - <std[29689e6404d28ef9]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   66:     0x715fd624eaa4 - <unknown>
[INFO] [stdout]   67:     0x715fd62dba64 - clone
[INFO] [stdout]   68:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tool::write::tests::write_file_fails_on_read_only_file stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tool::write::tests::write_file_fails_on_read_only_file' (1415) panicked at crates/oxide-code/src/tool/write.rs:399:26:
[INFO] [stdout] called `Result::unwrap_err()` on an `Ok` value: "Successfully updated /tmp/.tmpaslehm/locked.txt."
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x6212d95d0eda - std[29689e6404d28ef9]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x6212d95d0eda - std[29689e6404d28ef9]::backtrace_rs::backtrace::trace_unsynchronized::<std[29689e6404d28ef9]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x6212d95d0eda - std[29689e6404d28ef9]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x6212d95d0eda - <<std[29689e6404d28ef9]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[e929cb53b82a81ca]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x6212d95eb8ea - <core[e929cb53b82a81ca]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x6212d95eb8ea - core[e929cb53b82a81ca]::fmt::write
[INFO] [stdout]    6:     0x6212d95d7342 - std[29689e6404d28ef9]::io::default_write_fmt::<alloc[9d7caffeb3b5d2c6]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/io/mod.rs:621:11
[INFO] [stdout]    7:     0x6212d95d7342 - <alloc[9d7caffeb3b5d2c6]::vec::Vec<u8> as std[29689e6404d28ef9]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/io/mod.rs:1976:13
[INFO] [stdout]    8:     0x6212d95a8a0f - <std[29689e6404d28ef9]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x6212d95a8a0f - std[29689e6404d28ef9]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x6212d95c6059 - std[29689e6404d28ef9]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x6212d89038ac - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn for<'a, 'b> core[e929cb53b82a81ca]::ops::function::Fn<(&'a std[29689e6404d28ef9]::panic::PanicHookInfo<'b>,), Output = ()> + core[e929cb53b82a81ca]::marker::Send + core[e929cb53b82a81ca]::marker::Sync> as core[e929cb53b82a81ca]::ops::function::Fn<(&std[29689e6404d28ef9]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   12:     0x6212d89038ac - test[a24b3028667022f7]::test_main_inner::<test[a24b3028667022f7]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x6212d95c62d2 - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn for<'a, 'b> core[e929cb53b82a81ca]::ops::function::Fn<(&'a std[29689e6404d28ef9]::panic::PanicHookInfo<'b>,), Output = ()> + core[e929cb53b82a81ca]::marker::Send + core[e929cb53b82a81ca]::marker::Sync> as core[e929cb53b82a81ca]::ops::function::Fn<(&std[29689e6404d28ef9]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   14:     0x6212d95c62d2 - std[29689e6404d28ef9]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x6212d95a8ac8 - std[29689e6404d28ef9]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x6212d959d249 - std[29689e6404d28ef9]::sys::backtrace::__rust_end_short_backtrace::<std[29689e6404d28ef9]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x6212d95a9e5d - __rustc[3aed6af316653e63]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x6212d95ec15c - core[e929cb53b82a81ca]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x6212d95ebea2 - core[e929cb53b82a81ca]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/result.rs:1867:5
[INFO] [stdout]   20:     0x6212d80566c7 - <core[e929cb53b82a81ca]::result::Result<alloc[9d7caffeb3b5d2c6]::string::String, alloc[9d7caffeb3b5d2c6]::string::String>>::unwrap_err
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/result.rs:1329:22
[INFO] [stdout]   21:     0x6212d7f71f62 - ox[bbdc97846d1f7ac1]::tool::write::tests::write_file_fails_on_read_only_file::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/oxide-code/src/tool/write.rs:399:26
[INFO] [stdout]   22:     0x6212d82b4ef2 - <core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>> as core[e929cb53b82a81ca]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x6212d82b4fad - <core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>> as core[e929cb53b82a81ca]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/future/future.rs:133:9
[INFO] [stdout]   24:     0x6212d81129ed - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:778:70
[INFO] [stdout]   25:     0x6212d811270b - tokio[d2dd1a5e08b3eb4f]::task::coop::with_budget::<core[e929cb53b82a81ca]::task::poll::Poll<()>, <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/task/coop/mod.rs:167:5
[INFO] [stdout]   26:     0x6212d811270b - tokio[d2dd1a5e08b3eb4f]::task::coop::budget::<core[e929cb53b82a81ca]::task::poll::Poll<()>, <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/task/coop/mod.rs:133:5
[INFO] [stdout]   27:     0x6212d811270b - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:778:25
[INFO] [stdout]   28:     0x6212d80def20 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Context>::enter::<core[e929cb53b82a81ca]::task::poll::Poll<()>, <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:451:19
[INFO] [stdout]   29:     0x6212d810d09d - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:777:44
[INFO] [stdout]   30:     0x6212d810b844 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:865:68
[INFO] [stdout]   31:     0x6212d7e15b5b - <tokio[d2dd1a5e08b3eb4f]::runtime::context::scoped::Scoped<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::Context>>::set::<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}, (alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>)>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   32:     0x6212d84c4db9 - tokio[d2dd1a5e08b3eb4f]::runtime::context::set_scheduler::<(alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>), <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/context.rs:181:38
[INFO] [stdout]   33:     0x6212d831df12 - <std[29689e6404d28ef9]::thread::local::LocalKey<tokio[d2dd1a5e08b3eb4f]::runtime::context::Context>>::try_with::<tokio[d2dd1a5e08b3eb4f]::runtime::context::set_scheduler<(alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>), <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/local.rs:462:12
[INFO] [stdout]   34:     0x6212d831d6fe - <std[29689e6404d28ef9]::thread::local::LocalKey<tokio[d2dd1a5e08b3eb4f]::runtime::context::Context>>::with::<tokio[d2dd1a5e08b3eb4f]::runtime::context::set_scheduler<(alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>), <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/local.rs:426:20
[INFO] [stdout]   35:     0x6212d84bbdbd - tokio[d2dd1a5e08b3eb4f]::runtime::context::set_scheduler::<(alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>), <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/context.rs:181:17
[INFO] [stdout]   36:     0x6212d80e8da0 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:865:27
[INFO] [stdout]   37:     0x6212d80e9536 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:765:24
[INFO] [stdout]   38:     0x6212d8109db0 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:205:33
[INFO] [stdout]   39:     0x6212d7ec2983 - tokio[d2dd1a5e08b3eb4f]::runtime::context::runtime::enter_runtime::<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CurrentThread>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>::{closure#0}, ()>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   40:     0x6212d80dcca1 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:193:9
[INFO] [stdout]   41:     0x6212d85988f4 - <tokio[d2dd1a5e08b3eb4f]::runtime::runtime::Runtime>::block_on_inner::<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/runtime.rs:371:52
[INFO] [stdout]   42:     0x6212d8598c6f - <tokio[d2dd1a5e08b3eb4f]::runtime::runtime::Runtime>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/runtime.rs:345:18
[INFO] [stdout]   43:     0x6212d7fd8e21 - ox[bbdc97846d1f7ac1]::tool::write::tests::write_file_fails_on_read_only_file
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/oxide-code/src/tool/write.rs:404:72
[INFO] [stdout]   44:     0x6212d7f6ef67 - ox[bbdc97846d1f7ac1]::tool::write::tests::write_file_fails_on_read_only_file::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/oxide-code/src/tool/write.rs:388:50
[INFO] [stdout]   45:     0x6212d85f6da6 - <ox[bbdc97846d1f7ac1]::tool::write::tests::write_file_fails_on_read_only_file::{closure#0} as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x6212d88f6b8b - <fn() -> core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   47:     0x6212d88f6b8b - test[a24b3028667022f7]::__rust_begin_short_backtrace::<core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>, fn() -> core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:724:18
[INFO] [stdout]   48:     0x6212d890437b - test[a24b3028667022f7]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:747:74
[INFO] [stdout]   49:     0x6212d890437b - <core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   50:     0x6212d890437b - std[29689e6404d28ef9]::panicking::catch_unwind::do_call::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>, core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   51:     0x6212d890437b - std[29689e6404d28ef9]::panicking::catch_unwind::<core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>, core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   52:     0x6212d890437b - std[29689e6404d28ef9]::panic::catch_unwind::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>, core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panic.rs:359:14
[INFO] [stdout]   53:     0x6212d890437b - test[a24b3028667022f7]::run_test_in_process
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:747:27
[INFO] [stdout]   54:     0x6212d890437b - test[a24b3028667022f7]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:668:43
[INFO] [stdout]   55:     0x6212d88fda94 - test[a24b3028667022f7]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:698:41
[INFO] [stdout]   56:     0x6212d88fda94 - std[29689e6404d28ef9]::sys::backtrace::__rust_begin_short_backtrace::<test[a24b3028667022f7]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   57:     0x6212d8906f82 - std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked::<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   58:     0x6212d8906f82 - <core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   59:     0x6212d8906f82 - std[29689e6404d28ef9]::panicking::catch_unwind::do_call::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   60:     0x6212d8906f82 - std[29689e6404d28ef9]::panicking::catch_unwind::<(), core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   61:     0x6212d8906f82 - std[29689e6404d28ef9]::panic::catch_unwind::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panic.rs:359:14
[INFO] [stdout]   62:     0x6212d8906f82 - std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked::<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   63:     0x6212d8906f82 - <std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1} as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   64:     0x6212d95cfb9f - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn core[e929cb53b82a81ca]::ops::function::FnOnce<(), Output = ()> + core[e929cb53b82a81ca]::marker::Send> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2271:9
[INFO] [stdout]   65:     0x6212d95cfb9f - <std[29689e6404d28ef9]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   66:     0x715fd624eaa4 - <unknown>
[INFO] [stdout]   67:     0x715fd62dba64 - clone
[INFO] [stdout]   68:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tool::write::tests::write_file_fails_when_parent_creation_is_denied stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tool::write::tests::write_file_fails_when_parent_creation_is_denied' (1421) panicked at crates/oxide-code/src/tool/write.rs:423:26:
[INFO] [stdout] called `Result::unwrap_err()` on an `Ok` value: "Successfully created /tmp/.tmpRQJpxp/readonly/nested/file.txt."
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x6212d95d0eda - std[29689e6404d28ef9]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x6212d95d0eda - std[29689e6404d28ef9]::backtrace_rs::backtrace::trace_unsynchronized::<std[29689e6404d28ef9]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x6212d95d0eda - std[29689e6404d28ef9]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x6212d95d0eda - <<std[29689e6404d28ef9]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[e929cb53b82a81ca]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x6212d95eb8ea - <core[e929cb53b82a81ca]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x6212d95eb8ea - core[e929cb53b82a81ca]::fmt::write
[INFO] [stdout]    6:     0x6212d95d7342 - std[29689e6404d28ef9]::io::default_write_fmt::<alloc[9d7caffeb3b5d2c6]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/io/mod.rs:621:11
[INFO] [stdout]    7:     0x6212d95d7342 - <alloc[9d7caffeb3b5d2c6]::vec::Vec<u8> as std[29689e6404d28ef9]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/io/mod.rs:1976:13
[INFO] [stdout]    8:     0x6212d95a8a0f - <std[29689e6404d28ef9]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x6212d95a8a0f - std[29689e6404d28ef9]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x6212d95c6059 - std[29689e6404d28ef9]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x6212d89038ac - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn for<'a, 'b> core[e929cb53b82a81ca]::ops::function::Fn<(&'a std[29689e6404d28ef9]::panic::PanicHookInfo<'b>,), Output = ()> + core[e929cb53b82a81ca]::marker::Send + core[e929cb53b82a81ca]::marker::Sync> as core[e929cb53b82a81ca]::ops::function::Fn<(&std[29689e6404d28ef9]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   12:     0x6212d89038ac - test[a24b3028667022f7]::test_main_inner::<test[a24b3028667022f7]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x6212d95c62d2 - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn for<'a, 'b> core[e929cb53b82a81ca]::ops::function::Fn<(&'a std[29689e6404d28ef9]::panic::PanicHookInfo<'b>,), Output = ()> + core[e929cb53b82a81ca]::marker::Send + core[e929cb53b82a81ca]::marker::Sync> as core[e929cb53b82a81ca]::ops::function::Fn<(&std[29689e6404d28ef9]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   14:     0x6212d95c62d2 - std[29689e6404d28ef9]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x6212d95a8ac8 - std[29689e6404d28ef9]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x6212d959d249 - std[29689e6404d28ef9]::sys::backtrace::__rust_end_short_backtrace::<std[29689e6404d28ef9]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x6212d95a9e5d - __rustc[3aed6af316653e63]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x6212d95ec15c - core[e929cb53b82a81ca]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x6212d95ebea2 - core[e929cb53b82a81ca]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/result.rs:1867:5
[INFO] [stdout]   20:     0x6212d80566c7 - <core[e929cb53b82a81ca]::result::Result<alloc[9d7caffeb3b5d2c6]::string::String, alloc[9d7caffeb3b5d2c6]::string::String>>::unwrap_err
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/result.rs:1329:22
[INFO] [stdout]   21:     0x6212d7f778ff - ox[bbdc97846d1f7ac1]::tool::write::tests::write_file_fails_when_parent_creation_is_denied::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/oxide-code/src/tool/write.rs:423:26
[INFO] [stdout]   22:     0x6212d82b4ef2 - <core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>> as core[e929cb53b82a81ca]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x6212d82b4fad - <core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>> as core[e929cb53b82a81ca]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/future/future.rs:133:9
[INFO] [stdout]   24:     0x6212d81129ed - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:778:70
[INFO] [stdout]   25:     0x6212d811270b - tokio[d2dd1a5e08b3eb4f]::task::coop::with_budget::<core[e929cb53b82a81ca]::task::poll::Poll<()>, <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/task/coop/mod.rs:167:5
[INFO] [stdout]   26:     0x6212d811270b - tokio[d2dd1a5e08b3eb4f]::task::coop::budget::<core[e929cb53b82a81ca]::task::poll::Poll<()>, <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/task/coop/mod.rs:133:5
[INFO] [stdout]   27:     0x6212d811270b - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:778:25
[INFO] [stdout]   28:     0x6212d80def20 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Context>::enter::<core[e929cb53b82a81ca]::task::poll::Poll<()>, <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:451:19
[INFO] [stdout]   29:     0x6212d810d09d - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:777:44
[INFO] [stdout]   30:     0x6212d810b844 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:865:68
[INFO] [stdout]   31:     0x6212d7e15b5b - <tokio[d2dd1a5e08b3eb4f]::runtime::context::scoped::Scoped<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::Context>>::set::<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}, (alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>)>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   32:     0x6212d84c4db9 - tokio[d2dd1a5e08b3eb4f]::runtime::context::set_scheduler::<(alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>), <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/context.rs:181:38
[INFO] [stdout]   33:     0x6212d831df12 - <std[29689e6404d28ef9]::thread::local::LocalKey<tokio[d2dd1a5e08b3eb4f]::runtime::context::Context>>::try_with::<tokio[d2dd1a5e08b3eb4f]::runtime::context::set_scheduler<(alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>), <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/local.rs:462:12
[INFO] [stdout]   34:     0x6212d831d6fe - <std[29689e6404d28ef9]::thread::local::LocalKey<tokio[d2dd1a5e08b3eb4f]::runtime::context::Context>>::with::<tokio[d2dd1a5e08b3eb4f]::runtime::context::set_scheduler<(alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>), <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/local.rs:426:20
[INFO] [stdout]   35:     0x6212d84bbdbd - tokio[d2dd1a5e08b3eb4f]::runtime::context::set_scheduler::<(alloc[9d7caffeb3b5d2c6]::boxed::Box<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::Core>, core[e929cb53b82a81ca]::option::Option<()>), <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/context.rs:181:17
[INFO] [stdout]   36:     0x6212d80e8da0 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>::{closure#0}, core[e929cb53b82a81ca]::option::Option<()>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:865:27
[INFO] [stdout]   37:     0x6212d80e9536 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:765:24
[INFO] [stdout]   38:     0x6212d8109db0 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:205:33
[INFO] [stdout]   39:     0x6212d7ec2983 - tokio[d2dd1a5e08b3eb4f]::runtime::context::runtime::enter_runtime::<<tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CurrentThread>::block_on<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>::{closure#0}, ()>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   40:     0x6212d80dcca1 - <tokio[d2dd1a5e08b3eb4f]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/scheduler/current_thread/mod.rs:193:9
[INFO] [stdout]   41:     0x6212d85988f4 - <tokio[d2dd1a5e08b3eb4f]::runtime::runtime::Runtime>::block_on_inner::<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/runtime.rs:371:52
[INFO] [stdout]   42:     0x6212d8598c6f - <tokio[d2dd1a5e08b3eb4f]::runtime::runtime::Runtime>::block_on::<core[e929cb53b82a81ca]::pin::Pin<&mut dyn core[e929cb53b82a81ca]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.51.1/src/runtime/runtime.rs:345:18
[INFO] [stdout]   43:     0x6212d7fd9c21 - ox[bbdc97846d1f7ac1]::tool::write::tests::write_file_fails_when_parent_creation_is_denied
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/oxide-code/src/tool/write.rs:431:10
[INFO] [stdout]   44:     0x6212d7f6f0e7 - ox[bbdc97846d1f7ac1]::tool::write::tests::write_file_fails_when_parent_creation_is_denied::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/oxide-code/src/tool/write.rs:409:63
[INFO] [stdout]   45:     0x6212d85f6fa6 - <ox[bbdc97846d1f7ac1]::tool::write::tests::write_file_fails_when_parent_creation_is_denied::{closure#0} as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x6212d88f6b8b - <fn() -> core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   47:     0x6212d88f6b8b - test[a24b3028667022f7]::__rust_begin_short_backtrace::<core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>, fn() -> core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:724:18
[INFO] [stdout]   48:     0x6212d890437b - test[a24b3028667022f7]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:747:74
[INFO] [stdout]   49:     0x6212d890437b - <core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   50:     0x6212d890437b - std[29689e6404d28ef9]::panicking::catch_unwind::do_call::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>, core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   51:     0x6212d890437b - std[29689e6404d28ef9]::panicking::catch_unwind::<core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>, core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   52:     0x6212d890437b - std[29689e6404d28ef9]::panic::catch_unwind::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>, core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panic.rs:359:14
[INFO] [stdout]   53:     0x6212d890437b - test[a24b3028667022f7]::run_test_in_process
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:747:27
[INFO] [stdout]   54:     0x6212d890437b - test[a24b3028667022f7]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:668:43
[INFO] [stdout]   55:     0x6212d88fda94 - test[a24b3028667022f7]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:698:41
[INFO] [stdout]   56:     0x6212d88fda94 - std[29689e6404d28ef9]::sys::backtrace::__rust_begin_short_backtrace::<test[a24b3028667022f7]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   57:     0x6212d8906f82 - std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked::<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   58:     0x6212d8906f82 - <core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   59:     0x6212d8906f82 - std[29689e6404d28ef9]::panicking::catch_unwind::do_call::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   60:     0x6212d8906f82 - std[29689e6404d28ef9]::panicking::catch_unwind::<(), core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   61:     0x6212d8906f82 - std[29689e6404d28ef9]::panic::catch_unwind::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panic.rs:359:14
[INFO] [stdout]   62:     0x6212d8906f82 - std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked::<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   63:     0x6212d8906f82 - <std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1} as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   64:     0x6212d95cfb9f - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn core[e929cb53b82a81ca]::ops::function::FnOnce<(), Output = ()> + core[e929cb53b82a81ca]::marker::Send> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2271:9
[INFO] [stdout]   65:     0x6212d95cfb9f - <std[29689e6404d28ef9]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   66:     0x715fd624eaa4 - <unknown>
[INFO] [stdout]   67:     0x715fd62dba64 - clone
[INFO] [stdout]   68:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tool::edit::tests::edit_file_fails_if_write_is_rejected
[INFO] [stdout]     tool::write::tests::write_file_fails_on_read_only_file
[INFO] [stdout]     tool::write::tests::write_file_fails_when_parent_creation_is_denied
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 1910 passed; 3 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.71s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin ox`
[INFO] running `Command { std: "docker" "inspect" "5f18c7c39b0309613a546dffd850963b3416d98b67a344530bf51fcbbb01ad5a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5f18c7c39b0309613a546dffd850963b3416d98b67a344530bf51fcbbb01ad5a", kill_on_drop: false }`
[INFO] [stdout] 5f18c7c39b0309613a546dffd850963b3416d98b67a344530bf51fcbbb01ad5a
