[INFO] fetching crate zeph-llm 0.19.1... [INFO] testing zeph-llm-0.19.1 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-2 [INFO] extracting crate zeph-llm 0.19.1 into /workspace/builds/worker-5-tc1/source [INFO] started tweaking crates.io crate zeph-llm 0.19.1 [INFO] finished tweaking crates.io crate zeph-llm 0.19.1 [INFO] tweaked toml for crates.io crate zeph-llm 0.19.1 written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate zeph-llm 0.19.1 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate zeph-llm 0.19.1 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded symphonia-utils-xiph v0.5.5 [INFO] [stderr] Downloaded zeph-common v0.19.1 [INFO] [stderr] Downloaded extended v0.1.0 [INFO] [stderr] Downloaded windowfunctions v0.1.1 [INFO] [stderr] Downloaded serde_plain v1.0.2 [INFO] [stderr] Downloaded gemm-f16 v0.19.0 [INFO] [stderr] Downloaded symphonia v0.5.5 [INFO] [stderr] Downloaded gemm-f32 v0.19.0 [INFO] [stderr] Downloaded dyn-stack-macros v0.1.3 [INFO] [stderr] Downloaded pulp-wasm-simd-flag v0.1.0 [INFO] [stderr] Downloaded gemm-f16 v0.18.2 [INFO] [stderr] Downloaded audio-core v0.2.1 [INFO] [stderr] Downloaded core-graphics-types v0.1.3 [INFO] [stderr] Downloaded gemm-c64 v0.18.2 [INFO] [stderr] Downloaded which v7.0.3 [INFO] [stderr] Downloaded cudaforge v0.1.5 [INFO] [stderr] Downloaded gemm v0.18.2 [INFO] [stderr] Downloaded gemm-common v0.18.2 [INFO] [stderr] Downloaded ug v0.5.0 [INFO] [stderr] Downloaded candle-kernels v0.10.2 [INFO] [stderr] Downloaded ureq-proto v0.6.0 [INFO] [stderr] Downloaded pulp v0.21.5 [INFO] [stderr] Downloaded zip v7.2.0 [INFO] [stderr] Downloaded iri-string v0.7.12 [INFO] [stderr] Downloaded candle-core v0.10.2 [INFO] [stderr] Downloaded objc2 v0.6.4 [INFO] [stderr] Downloaded rustfft v6.4.1 [INFO] [stderr] Downloaded candle-transformers v0.10.2 [INFO] [stderr] Downloaded ureq v3.3.0 [INFO] [stderr] Downloaded cudarc v0.17.8 [INFO] [stderr] Downloaded cudarc v0.19.4 [INFO] [stderr] Downloaded rand_distr v0.6.0 [INFO] [stderr] Downloaded pulp v0.22.2 [INFO] [stderr] Downloaded candle-metal-kernels v0.10.2 [INFO] [stderr] Downloaded fancy-regex v0.17.0 [INFO] [stderr] Downloaded insta v1.47.2 [INFO] [stderr] Downloaded tokenizers v0.22.2 [INFO] [stderr] Downloaded hyper v1.9.0 [INFO] [stderr] Downloaded const-oid v0.10.2 [INFO] [stderr] Downloaded candle-nn v0.10.2 [INFO] [stderr] Downloaded symphonia-core v0.5.5 [INFO] [stderr] Downloaded gemm-f32 v0.18.2 [INFO] [stderr] Downloaded safetensors v0.4.5 [INFO] [stderr] Downloaded dispatch2 v0.3.1 [INFO] [stderr] Downloaded env_home v0.1.0 [INFO] [stderr] Downloaded realfft v3.5.0 [INFO] [stderr] Downloaded sysctl v0.6.0 [INFO] [stderr] Downloaded gemm-c64 v0.19.0 [INFO] [stderr] Downloaded metal v0.29.0 [INFO] [stderr] Downloaded gemm-f64 v0.19.0 [INFO] [stderr] Downloaded cookie_store v0.22.1 [INFO] [stderr] Downloaded rubato v2.0.0 [INFO] [stderr] Downloaded objc2-metal v0.3.2 [INFO] [stderr] Downloaded symphonia-metadata v0.5.5 [INFO] [stderr] Downloaded sha2 v0.11.0 [INFO] [stderr] Downloaded hf-hub v0.5.0 [INFO] [stderr] Downloaded symphonia-bundle-mp3 v0.5.5 [INFO] [stderr] Downloaded ollama-rs v0.3.4 [INFO] [stderr] Downloaded console v0.16.3 [INFO] [stderr] Downloaded symphonia-bundle-flac v0.5.5 [INFO] [stderr] Downloaded gemm v0.19.0 [INFO] [stderr] Downloaded audioadapter v3.0.0 [INFO] [stderr] Downloaded visibility v0.1.1 [INFO] [stderr] Downloaded ug-metal v0.5.0 [INFO] [stderr] Downloaded dyn-stack v0.13.2 [INFO] [stderr] Downloaded gemm-common v0.19.0 [INFO] [stderr] Downloaded ug-cuda v0.5.0 [INFO] [stderr] Downloaded float8 v0.7.0 [INFO] [stderr] Downloaded hyper-rustls v0.27.8 [INFO] [stderr] Downloaded audioadapter-buffers v3.0.0 [INFO] [stderr] Downloaded safetensors v0.7.0 [INFO] [stderr] Downloaded symphonia-format-ogg v0.5.5 [INFO] [stderr] Downloaded gemm-c32 v0.18.2 [INFO] [stderr] Downloaded gemm-f64 v0.18.2 [INFO] [stderr] Downloaded candle-ug v0.10.2 [INFO] [stderr] Downloaded reborrow v0.5.5 [INFO] [stderr] Downloaded utf8-zero v0.8.1 [INFO] [stderr] Downloaded audioadapter-sample v3.0.0 [INFO] [stderr] Downloaded primal-check v0.3.4 [INFO] [stderr] Downloaded symphonia-format-riff v0.5.5 [INFO] [stderr] Downloaded gemm-c32 v0.19.0 [INFO] [stderr] Downloaded symphonia-codec-pcm v0.5.5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 2675bf6b523945495217b23976f9103c670e4a2ef9474405a99914da2301d43a [INFO] running `Command { std: "docker" "start" "-a" "2675bf6b523945495217b23976f9103c670e4a2ef9474405a99914da2301d43a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2675bf6b523945495217b23976f9103c670e4a2ef9474405a99914da2301d43a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2675bf6b523945495217b23976f9103c670e4a2ef9474405a99914da2301d43a", kill_on_drop: false }` [INFO] [stdout] 2675bf6b523945495217b23976f9103c670e4a2ef9474405a99914da2301d43a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] ac5778d399ce9ccad3f1c55fb88540f9c0e21caae2ffb91cfc42f0ae47f000b4 [INFO] running `Command { std: "docker" "start" "-a" "ac5778d399ce9ccad3f1c55fb88540f9c0e21caae2ffb91cfc42f0ae47f000b4", kill_on_drop: false }` [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerovec-derive v0.11.3 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling zeroize_derive v1.4.3 [INFO] [stderr] Compiling cc v1.2.60 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling aws-lc-rs v1.16.2 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling cmake v0.1.58 [INFO] [stderr] Compiling tokio v1.51.1 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling zerofrom v0.1.7 [INFO] [stderr] Compiling yoke v0.8.2 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling aws-lc-sys v0.39.1 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling rustls v0.23.38 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling hashbrown v0.17.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling indexmap v2.14.0 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling rand_core v0.10.1 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling cpufeatures v0.3.0 [INFO] [stderr] Compiling webpki-roots v1.0.6 [INFO] [stderr] Compiling libm v0.2.16 [INFO] [stderr] Compiling ref-cast v1.0.25 [INFO] [stderr] Compiling iri-string v0.7.12 [INFO] [stderr] Compiling mime_guess v2.0.5 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling blake3 v1.8.4 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling serde_derive_internals v0.29.1 [INFO] [stderr] Compiling ref-cast-impl v1.0.25 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling rustls-native-certs v0.8.3 [INFO] [stderr] Compiling hyper v1.9.0 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling schemars_derive v1.2.1 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling chacha20 v0.10.0 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Compiling dyn-clone v1.0.20 [INFO] [stderr] Compiling constant_time_eq v0.4.2 [INFO] [stderr] Compiling arrayref v0.3.9 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling async-stream v0.3.6 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling schemars v1.2.1 [INFO] [stderr] Compiling rand v0.10.1 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling uuid v1.23.0 [INFO] [stderr] Compiling dirs v6.0.0 [INFO] [stderr] Compiling rand_distr v0.6.0 [INFO] [stderr] Compiling zeph-common v0.19.1 [INFO] [stderr] Compiling eventsource-stream v0.2.3 [INFO] [stderr] Compiling rustls-webpki v0.103.12 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling rustls-platform-verifier v0.6.2 [INFO] [stderr] Compiling hyper-rustls v0.27.8 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling reqwest v0.13.2 [INFO] [stderr] Compiling ollama-rs v0.3.4 [INFO] [stderr] Compiling zeph-llm v0.19.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 36s [INFO] running `Command { std: "docker" "inspect" "ac5778d399ce9ccad3f1c55fb88540f9c0e21caae2ffb91cfc42f0ae47f000b4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ac5778d399ce9ccad3f1c55fb88540f9c0e21caae2ffb91cfc42f0ae47f000b4", kill_on_drop: false }` [INFO] [stdout] ac5778d399ce9ccad3f1c55fb88540f9c0e21caae2ffb91cfc42f0ae47f000b4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 2b57ef378de11f5cc9a55924b0a17380734cf3a98f7787153b30914288a8a011 [INFO] running `Command { std: "docker" "start" "-a" "2b57ef378de11f5cc9a55924b0a17380734cf3a98f7787153b30914288a8a011", kill_on_drop: false }` [INFO] [stderr] Compiling tokio v1.51.1 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling zerocopy v0.8.48 [INFO] [stderr] Compiling zerocopy-derive v0.8.48 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling fastrand v2.4.1 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling alloca v0.4.0 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling ciborium-io v0.2.2 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling schemars v1.2.1 [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling deadpool-runtime v0.1.4 [INFO] [stderr] Compiling quick-error v1.2.3 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling rusty-fork v0.3.1 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling criterion-plot v0.8.2 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling eventsource-stream v0.2.3 [INFO] [stderr] Compiling rand_distr v0.6.0 [INFO] [stderr] Compiling tinytemplate v1.2.1 [INFO] [stderr] Compiling assert-json-diff v2.0.2 [INFO] [stderr] Compiling plotters v0.3.7 [INFO] [stderr] Compiling rand v0.9.4 [INFO] [stderr] Compiling rand_xorshift v0.4.0 [INFO] [stderr] Compiling page_size v0.6.0 [INFO] [stderr] Compiling console v0.16.3 [INFO] [stderr] Compiling unarray v0.1.4 [INFO] [stderr] Compiling anes v0.1.6 [INFO] [stderr] Compiling insta v1.47.2 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling deadpool v0.12.3 [INFO] [stderr] Compiling zeph-common v0.19.1 [INFO] [stderr] Compiling half v2.7.1 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling ciborium-ll v0.2.2 [INFO] [stderr] Compiling ciborium v0.2.2 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling proptest v1.11.0 [INFO] [stderr] Compiling criterion v0.8.2 [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 reqwest v0.13.2 [INFO] [stderr] Compiling ollama-rs v0.3.4 [INFO] [stderr] Compiling zeph-llm v0.19.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 2m 23s [INFO] running `Command { std: "docker" "inspect" "2b57ef378de11f5cc9a55924b0a17380734cf3a98f7787153b30914288a8a011", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2b57ef378de11f5cc9a55924b0a17380734cf3a98f7787153b30914288a8a011", kill_on_drop: false }` [INFO] [stdout] 2b57ef378de11f5cc9a55924b0a17380734cf3a98f7787153b30914288a8a011 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 7ce756729f4c3ae08998eb82f20e272b4fa5e4c3622204546477ed1c43a9498d [INFO] running `Command { std: "docker" "start" "-a" "7ce756729f4c3ae08998eb82f20e272b4fa5e4c3622204546477ed1c43a9498d", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.52s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/zeph_llm-e723780b5829cb86) [INFO] [stdout] [INFO] [stdout] running 812 tests [INFO] [stdout] test any::tests::any_claude_context_window_delegates ... ok [INFO] [stdout] test any::tests::any_claude_embed_returns_error ... ok [INFO] [stdout] test any::tests::any_claude_does_not_support_embeddings ... ok [INFO] [stdout] test any::tests::any_claude_clone ... ok [INFO] [stdout] test any::tests::any_claude_chat_unreachable_errors ... ok [INFO] [stdout] test any::tests::any_claude_chat_stream_unreachable_errors ... ok [INFO] [stdout] test any::tests::any_claude_debug ... ok [INFO] [stdout] test any::tests::any_ollama_chat_stream_unreachable_errors ... ok [INFO] [stdout] test any::tests::any_ollama_clone ... ok [INFO] [stdout] test any::tests::any_ollama_context_window_delegates ... ok [INFO] [stdout] test any::tests::any_ollama_does_not_support_structured_output ... ok [INFO] [stdout] test any::tests::any_ollama_chat_unreachable_errors ... ok [INFO] [stdout] test any::tests::any_ollama_debug ... ok [INFO] [stdout] test any::tests::any_ollama_name ... ok [INFO] [stdout] test any::tests::any_ollama_embed_unreachable_errors ... ok [INFO] [stdout] test any::tests::any_ollama_name_delegates ... ok [INFO] [stdout] test any::tests::any_claude_embed_error_message ... ok [INFO] [stdout] test any::tests::any_ollama_supports_embeddings ... ok [INFO] [stdout] test any::tests::any_ollama_supports_vision ... ok [INFO] [stdout] test any::tests::any_ollama_with_generation_overrides_preserves_variant ... ok [INFO] [stdout] test any::tests::any_ollama_supports_streaming ... ok [INFO] [stdout] test any::tests::any_claude_name ... ok [INFO] [stdout] test any::tests::any_claude_name_delegates ... ok [INFO] [stdout] test any::tests::any_openai_supports_streaming ... ok [INFO] [stdout] test any::tests::any_openai_debug ... ok [INFO] [stdout] test any::tests::any_claude_supports_vision ... ok [INFO] [stdout] test any::tests::chat_typed_erased_dispatches_to_mock ... ok [INFO] [stdout] test any::tests::any_claude_supports_streaming ... ok [INFO] [stdout] test any::tests::any_openai_name ... ok [INFO] [stdout] test classifier::llm::tests::build_judge_messages_escapes_xml_tags ... ok [INFO] [stdout] test classifier::llm::tests::build_judge_messages_truncates_long_user_msg ... ok [INFO] [stdout] test classifier::llm::tests::llm_classifier_backend_name ... ok [INFO] [stdout] test classifier::llm::tests::llm_classifier_low_confidence_becomes_neutral ... ok [INFO] [stdout] test classifier::llm::tests::build_judge_messages_returns_two_messages ... ok [INFO] [stdout] test classifier::metrics::tests::empty_snapshot_has_none_percentiles ... ok [INFO] [stdout] test classifier::llm::tests::llm_classifier_mock_returns_verdict ... ok [INFO] [stdout] test classifier::metrics::tests::identical_values_give_same_p50_p95 ... ok [INFO] [stdout] test classifier::metrics::tests::p50_p95_correct_for_one_to_ten_ms ... ok [INFO] [stdout] test classifier::metrics::tests::ring_buffer_evicts_oldest_at_default_capacity ... ok [INFO] [stdout] test classifier::metrics::tests::p50_p95_correct_for_ten_samples ... ok [INFO] [stdout] test classifier::metrics::tests::record_single_sample_gives_same_p50_p95 ... ok [INFO] [stdout] test classifier::metrics::tests::ring_buffer_evicts_oldest_when_full ... ok [INFO] [stdout] test classifier::metrics::tests::two_samples_p50_returns_higher_with_round ... ok [INFO] [stdout] test claude::tests::anthropic_content_block_image_serializes_correctly ... ok [INFO] [stdout] test claude::tests::anthropic_tool_serialization ... ok [INFO] [stdout] test claude::tests::api_message_serializes ... ok [INFO] [stdout] test claude::tests::api_response_empty_content ... ok [INFO] [stdout] test claude::tests::api_response_deserializes ... ok [INFO] [stdout] test claude::tests::api_response_multiple_content_blocks ... ok [INFO] [stdout] test claude::tests::api_usage_deserialization ... ok [INFO] [stdout] test claude::tests::api_response_with_usage ... ok [INFO] [stdout] test any::tests::any_openai_supports_vision ... ok [INFO] [stdout] test any::tests::any_openai_supports_structured_output ... ok [INFO] [stdout] test any::tests::any_provider_clone_independence ... ok [INFO] [stdout] test any::tests::any_provider_debug_variants ... ok [INFO] [stdout] test claude::tests::beta_header_excludes_compact_when_disabled ... ok [INFO] [stdout] test claude::tests::budget_to_effort_boundaries ... ok [INFO] [stdout] test claude::tests::beta_header_adaptive_mode_excludes_interleaved ... ok [INFO] [stdout] test claude::tests::beta_header_excluded_after_rejection ... ok [INFO] [stdout] test any::tests::any_openai_supports_embeddings ... ok [INFO] [stdout] test claude::tests::beta_header_includes_compact_when_server_compaction_enabled ... ok [INFO] [stdout] test claude::tests::beta_header_sonnet_4_6_extended_no_tools_excludes_interleaved ... ok [INFO] [stdout] test claude::tests::beta_header_sonnet_4_6_extended_with_tools_includes_interleaved ... ok [INFO] [stdout] test claude::tests::beta_header_without_thinking_returns_none ... ok [INFO] [stdout] test claude::tests::build_request_does_not_include_anthropic_beta_header ... ok [INFO] [stdout] test claude::tests::build_thinking_param_adaptive_serializes_correctly ... ok [INFO] [stdout] test claude::tests::build_request_opus_no_thinking_keeps_trailing_assistant ... ok [INFO] [stdout] test claude::tests::build_request_multi_turn_no_top_level_cache_control ... ok [INFO] [stdout] test claude::tests::build_request_opus_thinking_strips_trailing_assistant ... ok [INFO] [stdout] test claude::tests::build_request_single_message_no_top_level_cache_control ... ok [INFO] [stdout] test claude::tests::build_thinking_param_adaptive_returns_adaptive_type ... ok [INFO] [stdout] test claude::tests::build_thinking_param_opus_extended_converts_to_adaptive ... ok [INFO] [stdout] test claude::tests::cache_min_tokens_non_sonnet_returns_4096 ... ok [INFO] [stdout] test claude::tests::cache_min_tokens_sonnet_returns_2048 ... ok [INFO] [stdout] test claude::tests::build_request_sonnet_thinking_keeps_trailing_assistant ... ok [INFO] [stdout] test claude::tests::build_request_with_extended_context_includes_beta_header ... ok [INFO] [stdout] test claude::tests::build_thinking_param_opus_adaptive_unchanged ... ok [INFO] [stdout] test claude::tests::build_thinking_param_no_thinking_returns_none ... ok [INFO] [stdout] test claude::tests::chat_stream_with_unreachable_endpoint_errors ... ok [INFO] [stdout] test claude::tests::build_thinking_param_adaptive_with_effort_returns_effort ... ok [INFO] [stdout] test claude::tests::build_thinking_param_sonnet_extended_unchanged ... ok [INFO] [stdout] test claude::tests::build_thinking_param_extended_returns_enabled_with_budget ... ok [INFO] [stdout] test claude::tests::chat_with_tools_cache_hit_does_not_re_serialize ... ok [INFO] [stdout] test claude::tests::chat_with_tools_cache_partial_tool_set_change_invalidates ... ok [INFO] [stdout] test claude::tests::claude_embed_returns_error ... ok [INFO] [stdout] test claude::tests::chat_with_unreachable_endpoint_errors ... ok [INFO] [stdout] test claude::tests::compaction_content_block_deserialized ... ok [INFO] [stdout] test claude::tests::claude_sse_fixture_contains_expected_events ... ok [INFO] [stdout] test claude::tests::content_block_deserializes ... ok [INFO] [stdout] test claude::tests::claude_supports_embeddings_returns_false ... ok [INFO] [stdout] test claude::tests::context_management_serializes_correctly ... ok [INFO] [stdout] test claude::tests::clone_preserves_cache_user_messages ... ok [INFO] [stdout] test claude::tests::context_management_absent_after_rejection ... ok [INFO] [stdout] test claude::tests::context_management_absent_when_disabled ... ok [INFO] [stdout] test claude::tests::context_management_present_when_enabled ... ok [INFO] [stdout] test claude::tests::clone_preserves_fields ... ok [INFO] [stdout] test claude::tests::clone_shares_rejection_flag ... ok [INFO] [stdout] test claude::tests::debug_includes_model_and_max_tokens ... ok [INFO] [stdout] test claude::tests::chat_with_tools_sends_correct_tool_fields ... ok [INFO] [stdout] test claude::tests::context_window_unknown_model ... ok [INFO] [stdout] test claude::tests::debug_tool_request_caps_block_cache_controls_at_four ... ok [INFO] [stdout] test claude::tests::extended_context_disabled_returns_200k_context_window ... ok [INFO] [stdout] test claude::tests::extended_context_disabled_no_beta_header ... ok [INFO] [stdout] test claude::tests::debug_vision_request_caps_total_cache_controls_at_four ... ok [INFO] [stdout] test claude::tests::extended_context_enabled_haiku_returns_200k_context_window ... ok [INFO] [stdout] test claude::tests::has_image_parts_detects_image_in_messages ... ok [INFO] [stdout] test claude::tests::integration_claude_chat ... ignored, requires ZEPH_CLAUDE_API_KEY env var [INFO] [stdout] test claude::tests::integration_claude_chat_stream ... ignored, requires ZEPH_CLAUDE_API_KEY env var [INFO] [stdout] test claude::tests::integration_claude_stream_matches_chat ... ignored, requires ZEPH_CLAUDE_API_KEY env var [INFO] [stdout] test claude::tests::is_compact_beta_rejection_detects_context_management_extra_inputs ... ok [INFO] [stdout] test claude::tests::is_compact_beta_rejection_detects_context_management_generic ... ok [INFO] [stdout] test claude::tests::is_compact_beta_rejection_detects_invalid_beta_keyword ... ok [INFO] [stdout] test claude::tests::is_compact_beta_rejection_detects_unknown_beta ... ok [INFO] [stdout] test claude::tests::is_compact_beta_rejection_ignores_non_400 ... ok [INFO] [stdout] test claude::tests::is_compact_beta_rejection_ignores_unrelated_400 ... ok [INFO] [stdout] test claude::tests::is_compact_beta_rejection_ignores_unrelated_no_context_management ... ok [INFO] [stdout] test claude::tests::debug_redacts_api_key ... ok [INFO] [stdout] test claude::tests::extended_context_enabled_includes_beta_header ... ok [INFO] [stdout] test claude::tests::messages_response_deserialization ... ok [INFO] [stdout] test claude::tests::model_item_filters_non_model_type ... ok [INFO] [stdout] test claude::tests::model_item_uses_id_as_display_name_when_missing ... ok [INFO] [stdout] test claude::tests::extended_context_enabled_returns_1m_context_window ... ok [INFO] [stdout] test claude::tests::extended_context_with_interleaved_thinking_combines_headers ... ok [INFO] [stdout] test claude::tests::pagination_response_has_more_false_stops_loop ... ok [INFO] [stdout] test claude::tests::pagination_response_has_more_true_extracts_last_id ... ok [INFO] [stdout] test claude::tests::parse_tool_response_json_deserialization ... ok [INFO] [stdout] test claude::tests::parse_tool_response_text_only ... ok [INFO] [stdout] test claude::tests::parse_tool_response_tool_use_only ... ok [INFO] [stdout] test claude::tests::parse_tool_response_with_compaction ... ok [INFO] [stdout] test claude::tests::parse_tool_response_with_redacted_thinking ... ok [INFO] [stdout] test claude::tests::parse_tool_response_with_thinking_blocks ... ok [INFO] [stdout] test claude::tests::parse_tool_response_with_tool_use ... ok [INFO] [stdout] test claude::tests::redacted_thinking_block_serializes_in_structured_message ... ok [INFO] [stdout] test claude::tests::redacted_thinking_content_block_roundtrip ... ok [INFO] [stdout] test claude::tests::request_body_serializes_stream_true ... ok [INFO] [stdout] test claude::tests::request_body_serializes_with_stream_false_omits_stream ... ok [INFO] [stdout] test claude::tests::request_body_serializes_with_system_blocks ... ok [INFO] [stdout] test claude::tests::request_body_serializes_without_system ... ok [INFO] [stdout] test claude::tests::get_or_build_api_tools_single_tool_has_cache_control ... ok [INFO] [stdout] test claude::tests::messages_429_overload_propagates ... ok [INFO] [stdout] test claude::tests::split_messages_all_roles ... ok [INFO] [stdout] test claude::tests::split_messages_empty ... ok [INFO] [stdout] test claude::tests::name_returns_claude ... ok [INFO] [stdout] test claude::tests::split_messages_interleaved_system ... ok [INFO] [stdout] test claude::tests::split_messages_extracts_system ... ok [INFO] [stdout] test claude::tests::get_or_build_api_tools_only_last_tool_has_cache_control ... ok [INFO] [stdout] test claude::tests::split_messages_only_assistant ... ok [INFO] [stdout] test claude::tests::split_messages_multiple_system ... ok [INFO] [stdout] test claude::tests::split_messages_no_system ... ok [INFO] [stdout] test claude::tests::split_messages_structured_breakpoint_targets_last_minus_20_position ... ok [INFO] [stdout] test claude::tests::split_messages_structured_cache_disabled_no_cache_control ... ok [INFO] [stdout] test claude::tests::split_messages_structured_cache_enabled_adds_cache_control ... ok [INFO] [stdout] test claude::tests::split_messages_structured_compaction_round_trip ... ok [INFO] [stdout] test claude::tests::split_messages_structured_downgrades_unmatched_tool_use_to_text ... ok [INFO] [stdout] test claude::tests::split_messages_structured_preserves_matched_tool_use_block ... ok [INFO] [stdout] test claude::tests::split_messages_structured_produces_image_block ... ok [INFO] [stdout] test claude::tests::split_messages_structured_single_message_no_cache_breakpoint ... ok [INFO] [stdout] test claude::tests::split_messages_structured_two_messages_places_breakpoint_on_user ... ok [INFO] [stdout] test claude::tests::split_messages_structured_with_tool_parts ... ok [INFO] [stdout] test claude::tests::split_structured_system_not_in_visible ... ok [INFO] [stdout] test claude::tests::split_messages_only_system ... ok [INFO] [stdout] test claude::tests::split_system_block1_padded_when_below_threshold ... ok [INFO] [stdout] test claude::tests::split_system_block2_not_padded_when_below_threshold ... ok [INFO] [stdout] test claude::tests::split_structured_downgrades_orphaned_tool_result ... ok [INFO] [stdout] test claude::tests::split_system_no_markers_caches_entire_block ... ok [INFO] [stdout] test claude::tests::split_system_no_markers_exact_threshold_sonnet_caches ... ok [INFO] [stdout] test claude::tests::split_system_no_markers_opus_skips_short_text ... ok [INFO] [stdout] test claude::tests::split_system_no_markers_opus_caches_long_text ... ok [INFO] [stdout] test claude::tests::split_system_no_markers_short_text_skips_cache ... ok [INFO] [stdout] test claude::tests::split_system_opus_block_above_threshold_gets_cache_control ... ok [INFO] [stdout] test claude::tests::split_system_opus_block_below_threshold_skips_cache_control ... ok [INFO] [stdout] test claude::tests::split_system_with_all_markers ... ok [INFO] [stdout] test claude::tests::new_stores_fields_correctly ... ok [INFO] [stdout] test claude::tests::split_system_partial_markers ... ok [INFO] [stdout] test claude::tests::messages_529_overload_propagates ... ok [INFO] [stdout] test claude::tests::context_window_known_models ... ok [INFO] [stdout] test claude::tests::thinking_block_serializes_in_structured_message ... ok [INFO] [stdout] test claude::tests::thinking_capability_opus_4_6_no_interleaved_beta ... ok [INFO] [stdout] test claude::tests::server_compaction_not_rejected_by_default ... ok [INFO] [stdout] test claude::tests::thinking_capability_opus_4_6_prefers_effort ... ok [INFO] [stdout] test claude::tests::thinking_capability_sonnet_4_6_no_prefers_effort ... ok [INFO] [stdout] test claude::tests::thinking_capability_sonnet_4_6_needs_interleaved_beta ... ok [INFO] [stdout] test claude::tests::thinking_capability_unknown_model_no_beta ... ok [INFO] [stdout] test claude::tests::thinking_config_adaptive_deserializes ... ok [INFO] [stdout] test claude::tests::thinking_config_adaptive_serializes_with_effort ... ok [INFO] [stdout] test claude::tests::thinking_config_adaptive_serializes_without_effort ... ok [INFO] [stdout] test claude::tests::thinking_config_extended_serializes ... ok [INFO] [stdout] test claude::tests::thinking_config_extended_deserializes ... ok [INFO] [stdout] test claude::tests::thinking_content_block_roundtrip ... ok [INFO] [stdout] test claude::tests::server_compaction_disabled_by_default ... ok [INFO] [stdout] test claude::tests::supports_streaming_returns_true ... ok [INFO] [stdout] test claude::tests::store_cache_usage_updates_last_usage ... ok [INFO] [stdout] test claude::tests::supports_tool_use_returns_true ... ok [INFO] [stdout] test claude::tests::take_compaction_summary_returns_and_clears ... ok [INFO] [stdout] test claude::tests::take_compaction_summary_empty_when_none ... ok [INFO] [stdout] test claude::tests::tool_cache_invalidates_on_schema_change ... ok [INFO] [stdout] test claude::tests::tool_cache_returns_same_values_on_second_call ... ok [INFO] [stdout] test claude::tests::tool_cache_hits_on_same_tools ... ok [INFO] [stdout] test claude::tests::tool_cache_invalidates_when_tools_change ... ok [INFO] [stdout] test claude::tests::tool_cache_serialized_shape_snapshot ... ok [INFO] [stdout] test claude::tests::with_server_compaction_enables_flag ... ok [INFO] [stdout] test claude::tests::with_server_compaction_haiku_stays_disabled ... ok [INFO] [stdout] test claude::tests::with_thinking_accepts_minimum_budget ... ok [INFO] [stdout] test claude::tests::with_thinking_accepts_maximum_budget ... ok [INFO] [stdout] test claude::tests::with_thinking_bumps_max_tokens_when_too_low ... ok [INFO] [stdout] test claude::tests::with_thinking_keeps_max_tokens_when_already_high ... ok [INFO] [stdout] test claude::tests::with_thinking_rejects_budget_not_less_than_max_tokens ... ok [INFO] [stdout] test claude::tests::with_thinking_rejects_budget_above_maximum ... ok [INFO] [stdout] test claude::tests::with_cache_user_messages_builder ... ok [INFO] [stdout] test compatible::tests::chat_unreachable_errors ... ok [INFO] [stdout] test compatible::tests::clone_preserves_name ... ok [INFO] [stdout] test compatible::tests::context_window_returns_none ... ok [INFO] [stdout] test compatible::tests::debug_contains_provider_name ... ok [INFO] [stdout] test ema::tests::default_stats_optimistic_prior ... ok [INFO] [stdout] test ema::tests::maybe_reorder_empty_order_returns_empty ... ok [INFO] [stdout] test ema::tests::maybe_reorder_fast_reliable_rises_to_top ... ok [INFO] [stdout] test ema::tests::maybe_reorder_interval_zero_always_none ... ok [INFO] [stdout] test ema::tests::maybe_reorder_returns_none_before_interval ... ok [INFO] [stdout] test ema::tests::maybe_reorder_returns_order_at_interval ... ok [INFO] [stdout] test ema::tests::maybe_reorder_slow_unreliable_drops ... ok [INFO] [stdout] test ema::tests::new_tracker_empty_stats ... ok [INFO] [stdout] test ema::tests::record_increments_total_calls ... ok [INFO] [stdout] test ema::tests::record_many_failures_drives_success_ema_toward_zero ... ok [INFO] [stdout] test ema::tests::record_multiple_providers_independent ... ok [INFO] [stdout] test compatible::tests::embed_without_model_errors ... ok [INFO] [stdout] test ema::tests::record_updates_success_ema ... ok [INFO] [stdout] test embed::tests::empty_string_is_borrowed ... ok [INFO] [stdout] test embed::tests::exactly_at_limit_is_borrowed ... ok [INFO] [stdout] test embed::tests::one_byte_past_overlap_guard_produces_owned ... ok [INFO] [stdout] test embed::tests::over_limit_latin_is_owned_with_head_and_tail ... ok [INFO] [stdout] test embed::tests::over_limit_utf8_multibyte_is_valid_utf8 ... ok [INFO] [stdout] test embed::tests::overlap_guard_returns_borrowed ... ok [INFO] [stdout] test embed::tests::overlap_guard_upper_boundary_is_borrowed ... ok [INFO] [stdout] test embed::tests::short_string_is_borrowed ... ok [INFO] [stdout] test claude::tests::with_thinking_rejects_budget_below_minimum ... ok [INFO] [stdout] test embed::tests::truncated_result_has_correct_structure ... ok [INFO] [stdout] test error::tests::beta_header_rejected_display ... ok [INFO] [stdout] test error::tests::beta_header_rejected_is_detected ... ok [INFO] [stdout] test error::tests::context_length_exceeded_variant_is_detected ... ok [INFO] [stdout] test error::tests::invalid_input_display_includes_provider_and_message ... ok [INFO] [stdout] test error::tests::invalid_input_is_detected ... ok [INFO] [stdout] test error::tests::context_length_exceeded_display ... ok [INFO] [stdout] test error::tests::other_errors_are_not_invalid_input ... ok [INFO] [stdout] test error::tests::other_error_is_not_beta_header_rejected ... ok [INFO] [stdout] test error::tests::other_with_claude_message_is_detected ... ok [INFO] [stdout] test ema::tests::record_updates_latency_ema ... ok [INFO] [stdout] test error::tests::unrelated_error_is_not_detected ... ok [INFO] [stdout] test extractor::tests::extract_error_propagation ... ok [INFO] [stdout] test error::tests::other_with_ollama_message_is_detected ... ok [INFO] [stdout] test extractor::tests::extract_with_preamble ... ok [INFO] [stdout] test error::tests::other_with_openai_message_is_detected ... ok [INFO] [stdout] test gemini::tests::embed_content_request_serialization ... ok [INFO] [stdout] test gemini::tests::embed_content_response_deserialization ... ok [INFO] [stdout] test gemini::tests::embed_content_response_empty_values ... ok [INFO] [stdout] test extractor::tests::extract_without_preamble ... ok [INFO] [stdout] test compatible::tests::name_returns_custom_provider_name ... ok [INFO] [stdout] test compatible::tests::last_usage_initially_none ... ok [INFO] [stdout] test compatible::tests::supports_embeddings_without_model ... ok [INFO] [stdout] test compatible::tests::supports_embeddings_with_model ... ok [INFO] [stdout] test compatible::tests::supports_streaming_delegates ... ok [INFO] [stdout] test gemini::tests::gap1_http_error_response_maps_to_llm_error_other ... ok [INFO] [stdout] test gemini::tests::gap3_successful_response_populates_last_usage ... ok [INFO] [stdout] test gemini::tests::gemini_chat_stream_yields_chunks_from_sse ... ok [INFO] [stdout] test gemini::tests::gemini_chat_stream_error_on_failed_request ... ok [INFO] [stdout] test gemini::tests::gemini_clone_resets_usage ... ok [INFO] [stdout] test gemini::tests::gemini_context_window_1_5_pro ... ok [INFO] [stdout] test gemini::tests::gemini_context_window_2_0_flash ... ok [INFO] [stdout] test gemini::tests::gemini_context_window_default ... ok [INFO] [stdout] test gemini::tests::gap2_resource_exhausted_maps_to_rate_limited ... ok [INFO] [stdout] test gemini::tests::gemini_debug_redacts_api_key ... ok [INFO] [stdout] test gemini::tests::gemini_embed_api_error_403 ... ok [INFO] [stdout] test gemini::tests::gemini_embed_api_error_429 ... ok [INFO] [stdout] test gemini::tests::gemini_embed_api_error_500 ... ok [INFO] [stdout] test gemini::tests::gemini_model_entry_camel_case_deser ... ok [INFO] [stdout] test gemini::tests::gemini_embed_malformed_response ... ok [INFO] [stdout] test gemini::tests::gemini_embed_no_model_returns_unsupported ... ok [INFO] [stdout] test gemini::tests::gemini_embed_returns_unsupported ... ok [INFO] [stdout] test gemini::tests::gemini_list_models_includes_embedding_model_when_configured ... ok [INFO] [stdout] test gemini::tests::gemini_embed_success ... ok [INFO] [stdout] test gemini::tests::gemini_list_models_excludes_embedding_model_when_not_configured ... ok [INFO] [stdout] test gemini::tests::gemini_list_models_non_empty ... ok [INFO] [stdout] test gemini::tests::generation_config_with_thinking_includes_nested_field ... ok [INFO] [stdout] test gemini::tests::generation_config_without_thinking_omits_field ... ok [INFO] [stdout] test gemini::tests::integration_gemini_embed ... ignored, requires live Gemini API key [INFO] [stdout] test gemini::tests::gemini_name ... ok [INFO] [stdout] test gemini::tests::gemini_supports_embeddings_with_model ... ok [INFO] [stdout] test gemini::tests::gemini_supports_embeddings_false ... ok [INFO] [stdout] test gemini::tests::list_models_response_empty_models ... ok [INFO] [stdout] test gemini::tests::list_models_response_extra_unknown_fields_ignored ... ok [INFO] [stdout] test gemini::tests::gemini_supports_embeddings_without_model ... ok [INFO] [stdout] test gemini::tests::list_models_response_filters_generate_content ... ok [INFO] [stdout] test gemini::tests::list_models_response_missing_input_token_limit ... ok [INFO] [stdout] test gemini::tests::list_models_response_missing_models_field ... ok [INFO] [stdout] test gemini::tests::list_models_response_strips_models_prefix ... ok [INFO] [stdout] test gemini::tests::gemini_with_embedding_model_empty_string_is_none ... ok [INFO] [stdout] test gemini::tests::gemini_supports_vision_true ... ok [INFO] [stdout] test gemini::tests::gemini_supports_streaming_true ... ok [INFO] [stdout] test gemini::tests::list_models_remote_auth_error ... ok [INFO] [stdout] test gemini::tests::list_models_remote_http_error ... ok [INFO] [stdout] test gemini::tests::list_models_remote_success ... ok [INFO] [stdout] test gemini::tests::provider_with_thinking_budget_included_in_gen_config ... ok [INFO] [stdout] test gemini::tests::provider_clone_preserves_thinking_level ... ok [INFO] [stdout] test gemini::tests::test_consecutive_assistant_merging ... ok [INFO] [stdout] test gemini::tests::test_consecutive_role_merging ... ok [INFO] [stdout] test gemini::tests::test_convert_tool_definitions_empty ... ok [INFO] [stdout] test gemini::tests::test_convert_tool_definitions_multiple ... ok [INFO] [stdout] test gemini::tests::test_convert_tool_definitions_single ... ok [INFO] [stdout] test gemini::tests::test_convert_tool_no_parameters ... ok [INFO] [stdout] test gemini::tests::provider_with_include_thoughts_in_gen_config ... ok [INFO] [stdout] test gemini::tests::provider_debug_includes_thinking_level ... ok [INFO] [stdout] test gemini::tests::test_empty_system_omitted ... ok [INFO] [stdout] test gemini::tests::test_error_response_parsing ... ok [INFO] [stdout] test gemini::tests::test_chat_with_tools_empty_tools_falls_back_to_chat ... ok [INFO] [stdout] test gemini::tests::test_image_part_converted_to_inline_data ... ok [INFO] [stdout] test gemini::tests::test_inline_data_serializes_to_camel_case ... ok [INFO] [stdout] test gemini::tests::test_first_message_guard_prepends_user ... ok [INFO] [stdout] test gemini::tests::test_inline_refs_deep_plain_nesting ... ok [INFO] [stdout] test gemini::tests::test_inline_refs_depth_limit ... ok [INFO] [stdout] test gemini::tests::provider_without_thinking_no_thinking_config ... ok [INFO] [stdout] test gemini::tests::test_inline_refs_nested_multi_level ... ok [INFO] [stdout] test gemini::tests::test_inline_refs_no_defs ... ok [INFO] [stdout] test gemini::tests::test_inline_refs_simple ... ok [INFO] [stdout] test gemini::tests::test_is_empty_object_schema ... ok [INFO] [stdout] test gemini::tests::test_inline_refs_unknown_ref_fallback ... ok [INFO] [stdout] test gemini::tests::test_multiple_images_in_single_message ... ok [INFO] [stdout] test gemini::tests::test_multiple_tool_results_merged_into_one_user_content ... ok [INFO] [stdout] test gemini::tests::test_mixed_text_and_image_parts ... ok [INFO] [stdout] test gemini::tests::test_normalize_schema_anyof_complex_dropped ... ok [INFO] [stdout] test gemini::tests::test_normalize_schema_allowlist ... ok [INFO] [stdout] test gemini::tests::test_normalize_schema_anyof_null_first_order ... ok [INFO] [stdout] test gemini::tests::test_normalize_schema_anyof_option_pattern ... ok [INFO] [stdout] test gemini::tests::test_normalize_schema_oneof_option_pattern ... ok [INFO] [stdout] test gemini::tests::test_parse_mixed_text_and_function_call ... ok [INFO] [stdout] test gemini::tests::test_parse_null_args_uses_empty_object ... ok [INFO] [stdout] test gemini::tests::test_parse_multiple_function_calls ... ok [INFO] [stdout] test gemini::tests::test_mixed_text_and_tool_use ... ok [INFO] [stdout] test gemini::tests::test_parse_single_function_call ... ok [INFO] [stdout] test gemini::tests::test_parse_text_only_response ... ok [INFO] [stdout] test gemini::tests::test_resource_exhausted_error_parsing ... ok [INFO] [stdout] test gemini::tests::test_system_instruction_extraction ... ok [INFO] [stdout] test gemini::tests::test_tool_result_is_error_wrapping ... ok [INFO] [stdout] test gemini::tests::test_tool_result_part_to_function_response_with_name_lookup ... ok [INFO] [stdout] test gemini::tests::test_tool_use_part_to_function_call ... ok [INFO] [stdout] test gemini::tests::test_uppercase_types_array ... ok [INFO] [stdout] test gemini::tests::test_uppercase_types_boolean ... ok [INFO] [stdout] test gemini::tests::test_uppercase_types_nested ... ok [INFO] [stdout] test gemini::tests::provider_with_thinking_level_included_in_gen_config ... ok [INFO] [stdout] test gemini::tests::test_uppercase_types_number ... ok [INFO] [stdout] test gemini::tests::test_uppercase_types_null ... ok [INFO] [stdout] test gemini::tests::test_uppercase_types_simple ... ok [INFO] [stdout] test gemini::tests::test_build_tool_request_parameterless_tools_still_includes_tools_field ... ok [INFO] [stdout] test gemini::tests::thinking_config_serializes_camelcase ... ok [INFO] [stdout] test gemini::tests::thinking_config_with_budget_serializes ... ok [INFO] [stdout] test gemini::tests::thinking_level_deserializes_from_lowercase ... ok [INFO] [stdout] test gemini::tests::thinking_level_roundtrip_all_variants ... ok [INFO] [stdout] test gemini::tests::thinking_level_serializes_lowercase ... ok [INFO] [stdout] test model_cache::tests::fresh_cache_is_not_stale ... ok [INFO] [stdout] test gemini::tests::test_chat_with_tools_returns_tool_use ... ok [INFO] [stdout] test model_cache::tests::json_round_trip ... ok [INFO] [stdout] test model_cache::tests::missing_file_is_stale ... ok [INFO] [stdout] test model_cache::tests::stale_detection_on_old_timestamp ... ok [INFO] [stdout] test model_cache::tests::invalidate_removes_file ... ok [INFO] [stdout] test ollama::tests::chat_stream_with_unreachable_endpoint_errors ... ok [INFO] [stdout] test ollama::tests::chat_with_tools_unreachable_endpoint_errors ... ok [INFO] [stdout] test ollama::tests::clone_preserves_fields ... ok [INFO] [stdout] test ollama::tests::chat_with_unreachable_endpoint_errors ... ok [INFO] [stdout] test ollama::tests::clone_resets_last_usage ... ok [INFO] [stdout] test ollama::tests::context_window_after_set ... ok [INFO] [stdout] test ollama::tests::convert_message_assistant_role ... ok [INFO] [stdout] test ollama::tests::convert_message_empty_content ... ok [INFO] [stdout] test ollama::tests::context_window_none_by_default ... ok [INFO] [stdout] test ollama::tests::convert_message_preserves_content ... ok [INFO] [stdout] test ollama::tests::convert_message_roles ... ok [INFO] [stdout] test ollama::tests::convert_message_structured_multiple_tool_results_joined ... ok [INFO] [stdout] test ollama::tests::convert_message_structured_no_tool_results_delegates_to_convert_message ... ok [INFO] [stdout] test ollama::tests::convert_message_structured_tool_result_emits_tool_role ... ok [INFO] [stdout] test ollama::tests::convert_message_system_role ... ok [INFO] [stdout] test ollama::tests::convert_message_text_only_has_no_images ... ok [INFO] [stdout] test ollama::tests::convert_message_with_image_encodes_base64 ... ok [INFO] [stdout] test ollama::tests::debug_format ... ok [INFO] [stdout] test ollama::tests::embed_batch_empty_returns_empty_without_network ... ok [INFO] [stdout] test ollama::tests::embed_with_unreachable_endpoint_errors ... ok [INFO] [stdout] test ollama::tests::integration_ollama_chat_stream ... ignored, requires running Ollama instance [INFO] [stdout] test ollama::tests::integration_ollama_embed ... ignored, requires running Ollama instance [INFO] [stdout] test ollama::tests::integration_ollama_stream_matches_chat ... ignored, requires running Ollama instance [INFO] [stdout] test ollama::tests::health_check_unreachable_errors ... ok [INFO] [stdout] test ollama::tests::model_selection_falls_back_to_main_without_vision_model ... ok [INFO] [stdout] test ollama::tests::model_selection_uses_vision_model_when_images_present ... ok [INFO] [stdout] test ollama::tests::name_returns_ollama ... ok [INFO] [stdout] test ollama::tests::new_stores_model_and_embedding_model ... ok [INFO] [stdout] test ollama::tests::new_with_different_urls ... ok [INFO] [stdout] test ollama::tests::parse_host_port_bare_host_colon_port ... ok [INFO] [stdout] test ollama::tests::parse_host_port_custom_port ... ok [INFO] [stdout] test ollama::tests::parse_host_port_empty_string ... ok [INFO] [stdout] test ollama::tests::parse_host_port_https_with_path ... ok [INFO] [stdout] test ollama::tests::parse_host_port_invalid_port_falls_back ... ok [INFO] [stdout] test ollama::tests::parse_host_port_ipv4 ... ok [INFO] [stdout] test ollama::tests::parse_host_port_ipv4_with_path ... ok [INFO] [stdout] test ollama::tests::parse_host_port_ipv6_no_port ... ok [INFO] [stdout] test ollama::tests::parse_host_port_ipv6_with_path ... ok [INFO] [stdout] test ollama::tests::parse_host_port_max_port ... ok [INFO] [stdout] test ollama::tests::parse_host_port_multiple_trailing_slashes ... ok [INFO] [stdout] test ollama::tests::parse_host_port_no_scheme ... ok [INFO] [stdout] test ollama::tests::parse_host_port_only_scheme ... ok [INFO] [stdout] test ollama::tests::parse_host_port_port_overflow_falls_back ... ok [INFO] [stdout] test ollama::tests::parse_host_port_port_zero ... ok [INFO] [stdout] test ollama::tests::parse_host_port_strips_v1_path ... ok [INFO] [stdout] test ollama::tests::parse_host_port_strips_v1_trailing_slash ... ok [INFO] [stdout] test ollama::tests::parse_host_port_trailing_slash ... ok [INFO] [stdout] test ollama::tests::parse_host_port_with_port ... ok [INFO] [stdout] test ollama::tests::parse_host_port_without_port ... ok [INFO] [stdout] test ollama::tests::parse_num_ctx_from_parameters ... ok [INFO] [stdout] test ollama::tests::supports_embeddings_returns_true ... ok [INFO] [stdout] test ollama::tests::supports_streaming_returns_true ... ok [INFO] [stdout] test ollama::tests::warmup_with_unreachable_endpoint_errors ... ok [INFO] [stdout] test ollama::tests::with_generation_overrides_stores_overrides ... ok [INFO] [stdout] test ollama::tests::with_vision_model_builder_returns_self ... ok [INFO] [stdout] test ollama::tests::with_vision_model_sets_field ... ok [INFO] [stdout] test openai::tests::api_message_serializes ... ok [INFO] [stdout] test ollama::tests::last_usage_initially_none ... ok [INFO] [stdout] test gemini::tests::test_debug_request_json_with_tools_includes_function_declarations ... ok [INFO] [stdout] test gemini::tests::test_debug_request_json_no_tools_no_tools_field ... ok [INFO] [stdout] test gemini::tests::test_request_serialization ... ok [INFO] [stdout] test openai::tests::base_url_strips_trailing_slash ... ok [INFO] [stdout] test gemini::tests::test_request_no_system_instruction_when_empty ... ok [INFO] [stdout] test openai::tests::cache_slug_custom_host ... ok [INFO] [stdout] test openai::tests::cache_slug_localhost_with_port ... ok [INFO] [stdout] test openai::tests::chat_request_serialization ... ok [INFO] [stdout] test openai::tests::chat_request_serialization_non_gpt5_uses_max_tokens ... ok [INFO] [stdout] test openai::tests::chat_request_with_reasoning_effort ... ok [INFO] [stdout] test openai::tests::chat_request_with_stream_flag ... ok [INFO] [stdout] test openai::tests::chat_response_empty_choices ... ok [INFO] [stdout] test openai::tests::cache_slug_openai ... ok [INFO] [stdout] test openai::tests::chat_500_server_error_propagates ... ok [INFO] [stdout] test gemini::tests::thinking_budget_invalid_values_rejected ... ok [INFO] [stdout] test openai::tests::chat_401_auth_error_propagates ... ok [INFO] [stdout] test gemini::tests::thinking_budget_edge_values ... ok [INFO] [stdout] test openai::tests::chat_happy_path_wiremock ... ok [INFO] [stdout] test openai::tests::chat_unreachable_endpoint_errors ... ok [INFO] [stdout] test openai::tests::clone_resets_last_cache ... ok [INFO] [stdout] test openai::tests::chat_with_tools_handles_null_assistant_content ... ok [INFO] [stdout] test openai::tests::clone_resets_last_usage ... ok [INFO] [stdout] test openai::tests::convert_messages_empty ... ok [INFO] [stdout] test openai::tests::convert_messages_maps_roles ... ok [INFO] [stdout] test openai::tests::convert_messages_structured_assistant_tool_only_content_is_none ... ok [INFO] [stdout] test openai::tests::convert_messages_structured_plain_messages ... ok [INFO] [stdout] test openai::tests::convert_messages_structured_preserves_internal_variants ... ok [INFO] [stdout] test openai::tests::convert_messages_structured_with_tool_parts ... ok [INFO] [stdout] test openai::tests::convert_messages_vision_image_only_no_text_part ... ok [INFO] [stdout] test openai::tests::convert_messages_vision_produces_data_uri ... ok [INFO] [stdout] test openai::tests::convert_messages_vision_text_only_message ... ok [INFO] [stdout] test openai::tests::clone_preserves_fields ... ok [INFO] [stdout] test openai::tests::context_window_gpt4_turbo ... ok [INFO] [stdout] test openai::tests::context_window_gpt4o ... ok [INFO] [stdout] test openai::tests::context_window_gpt35 ... ok [INFO] [stdout] test openai::tests::debug_redacts_api_key ... ok [INFO] [stdout] test openai::tests::context_window_gpt5 ... ok [INFO] [stdout] test openai::tests::embedding_request_serialization ... ok [INFO] [stdout] test openai::tests::has_image_parts_detects_image ... ok [INFO] [stdout] test openai::tests::embedding_response_empty_data ... ok [INFO] [stdout] test openai::tests::integration_openai_chat ... ignored, requires ZEPH_OPENAI_API_KEY env var [INFO] [stdout] test openai::tests::integration_openai_chat_stream ... ignored, requires ZEPH_OPENAI_API_KEY env var [INFO] [stdout] test openai::tests::integration_openai_embed ... ignored, requires ZEPH_OPENAI_API_KEY env var [INFO] [stdout] test openai::tests::inline_refs_openai_resolves_defs ... ok [INFO] [stdout] test openai::tests::context_window_unknown ... ok [INFO] [stdout] test openai::tests::embed_batch_empty_returns_empty_without_network ... ok [INFO] [stdout] test openai::tests::list_models_response_empty_data_array ... ok [INFO] [stdout] test openai::tests::list_models_response_missing_data_key_returns_empty ... ok [INFO] [stdout] test openai::tests::list_models_response_parses_data_array ... ok [INFO] [stdout] test openai::tests::embed_batch_no_embedding_model_returns_error ... ok [INFO] [stdout] test openai::tests::embed_unreachable_endpoint_errors ... ok [INFO] [stdout] test openai::tests::last_cache_usage_initially_none ... ok [INFO] [stdout] test openai::tests::normalize_for_openai_strict_adds_additional_properties ... ok [INFO] [stdout] test openai::tests::normalize_for_openai_strict_preserves_anyof_for_option ... ok [INFO] [stdout] test openai::tests::normalize_nested_objects_get_additional_properties ... ok [INFO] [stdout] test openai::tests::openai_tool_empty_params_omitted_in_serialization ... ok [INFO] [stdout] test openai::tests::openai_tool_serialization ... ok [INFO] [stdout] test openai::tests::embed_without_model_returns_error ... ok [INFO] [stdout] test openai::tests::parse_chat_response_with_usage ... ok [INFO] [stdout] test openai::tests::parse_chat_response ... ok [INFO] [stdout] test openai::tests::parse_embedding_response ... ok [INFO] [stdout] test openai::tests::parse_tool_chat_response_text_only ... ok [INFO] [stdout] test openai::tests::parse_chat_response_without_usage ... ok [INFO] [stdout] test openai::tests::parse_tool_chat_response_with_null_content_and_tool_calls ... ok [INFO] [stdout] test openai::tests::parse_usage_with_cached_tokens ... ok [INFO] [stdout] test openai::tests::parse_tool_chat_response_with_tool_calls ... ok [INFO] [stdout] test openai::tests::parse_usage_without_cached_tokens ... ok [INFO] [stdout] test openai::tests::prepare_tool_params_empty_object_returns_none ... ok [INFO] [stdout] test openai::tests::prepare_tool_params_no_properties_key_returns_none ... ok [INFO] [stdout] test openai::tests::prepare_tool_params_non_empty_normalizes_strict ... ok [INFO] [stdout] test openai::tests::last_usage_initially_none ... ok [INFO] [stdout] test openai::tests::list_models_remote_http_error_propagates ... ok [INFO] [stdout] test openai::tests::name_returns_openai ... ok [INFO] [stdout] test openai::tests::new_with_reasoning_effort ... ok [INFO] [stdout] test openai::tests::new_stores_fields ... ok [INFO] [stdout] test openai::tests::store_cache_usage_stores_token_counts ... ok [INFO] [stdout] test openai::tests::store_and_retrieve_cache_usage ... ok [INFO] [stdout] test openai::tests::tool_chat_request_serialization_uses_gpt5_completion_tokens ... ok [INFO] [stdout] test openai::tests::typed_chat_request_serialization_uses_gpt5_completion_tokens ... ok [INFO] [stdout] test openai::tests::vision_chat_request_serialization_uses_gpt5_completion_tokens ... ok [INFO] [stdout] test openai::tests::store_cache_usage_zero_cached_tokens_not_stored ... ok [INFO] [stdout] test provider::tests::chat_response_construction ... ok [INFO] [stdout] test provider::tests::chat_stream_default_propagates_chat_error ... ok [INFO] [stdout] test provider::tests::chat_stream_default_yields_single_chunk ... ok [INFO] [stdout] test provider::tests::chat_typed_both_fail ... ok [INFO] [stdout] test provider::tests::chat_typed_chat_error_propagates ... ok [INFO] [stdout] test provider::tests::chat_typed_happy_path ... ok [INFO] [stdout] test provider::tests::chat_typed_retry_succeeds ... ok [INFO] [stdout] test provider::tests::chat_typed_strips_fences ... ok [INFO] [stdout] test provider::tests::chat_with_tools_default_delegates_to_chat ... ok [INFO] [stdout] test provider::tests::context_window_default_returns_none ... ok [INFO] [stdout] test provider::tests::embed_batch_default_calls_embed_sequentially ... ok [INFO] [stdout] test provider::tests::embed_batch_default_empty_returns_empty ... ok [INFO] [stdout] test provider::tests::fail_provider_embed_propagates_error ... ok [INFO] [stdout] test provider::tests::flatten_compacted_tool_output_with_reference_renders_body ... ok [INFO] [stdout] test provider::tests::flatten_parts_compaction_contributes_no_text ... ok [INFO] [stdout] test provider::tests::flatten_parts_includes_image_placeholder ... ok [INFO] [stdout] test provider::tests::flatten_parts_tool_result ... ok [INFO] [stdout] test provider::tests::flatten_parts_tool_use ... ok [INFO] [stdout] test provider::tests::flatten_skips_compacted_tool_output_empty_body ... ok [INFO] [stdout] test provider::tests::from_legacy_creates_empty_parts ... ok [INFO] [stdout] test provider::tests::from_parts_flattens_content ... ok [INFO] [stdout] test provider::tests::from_parts_tool_output_format ... ok [INFO] [stdout] test provider::tests::message_clone ... ok [INFO] [stdout] test provider::tests::message_debug ... ok [INFO] [stdout] test provider::tests::message_deserializes_without_parts ... ok [INFO] [stdout] test provider::tests::message_metadata_agent_only ... ok [INFO] [stdout] test provider::tests::message_metadata_default_both_visible ... ok [INFO] [stdout] test openai::tests::stream_unreachable_endpoint_errors ... ok [INFO] [stdout] test provider::tests::message_metadata_serde_default ... ok [INFO] [stdout] test provider::tests::message_metadata_round_trip ... ok [INFO] [stdout] test provider::tests::message_metadata_user_only ... ok [INFO] [stdout] test provider::tests::message_part_compaction_round_trip ... ok [INFO] [stdout] test provider::tests::message_part_image_roundtrip_json ... ok [INFO] [stdout] test provider::tests::message_part_tool_result_is_error_default ... ok [INFO] [stdout] test provider::tests::message_part_serde_round_trip ... ok [INFO] [stdout] test provider::tests::message_part_tool_result_serde_round_trip ... ok [INFO] [stdout] test provider::tests::message_serialization ... ok [INFO] [stdout] test provider::tests::message_visibility_db_roundtrip_agent_only ... ok [INFO] [stdout] test provider::tests::message_part_tool_use_serde_round_trip ... ok [INFO] [stdout] test provider::tests::message_visibility_db_roundtrip_both ... ok [INFO] [stdout] test provider::tests::message_visibility_db_roundtrip_user_only ... ok [INFO] [stdout] test provider::tests::message_visibility_from_db_str_unknown_defaults_to_both ... ok [INFO] [stdout] test provider::tests::role_deserialization ... ok [INFO] [stdout] test provider::tests::rebuild_content_syncs_after_mutation ... ok [INFO] [stdout] test provider::tests::role_serialization ... ok [INFO] [stdout] test provider::tests::short_type_name_extracts_last_segment ... ok [INFO] [stdout] test provider::tests::short_type_name_nested_path_returns_last ... ok [INFO] [stdout] test provider::tests::short_type_name_primitive_returns_full_name ... ok [INFO] [stdout] test provider::tests::stream_chunk_compaction_variant ... ok [INFO] [stdout] test provider::tests::strip_json_fences_empty ... ok [INFO] [stdout] test provider::tests::strip_json_fences_only_opening_fence ... ok [INFO] [stdout] test provider::tests::strip_json_fences_plain_json ... ok [INFO] [stdout] test provider::tests::strip_json_fences_whitespace ... ok [INFO] [stdout] test provider::tests::strip_json_fences_with_json_fence ... ok [INFO] [stdout] test provider::tests::strip_json_fences_outer_whitespace ... ok [INFO] [stdout] test provider::tests::strip_json_fences_with_plain_fence ... ok [INFO] [stdout] test provider::tests::structured_parse_error_display ... ok [INFO] [stdout] test provider::tests::summary_roundtrip ... ok [INFO] [stdout] test provider::tests::stub_provider_embed_returns_vector ... ok [INFO] [stdout] test provider::tests::supports_streaming_default_returns_false ... ok [INFO] [stdout] test provider::tests::supports_structured_output_default_false ... ok [INFO] [stdout] test provider::tests::supports_vision_default_false ... ok [INFO] [stdout] test provider::tests::tool_definition_serde_round_trip ... ok [INFO] [stdout] test retry::tests::retry_delay_exponential_backoff ... ok [INFO] [stdout] test provider::tests::tool_output_compacted_at_serde_default ... ok [INFO] [stdout] test openai::tests::supports_embeddings_without_model ... ok [INFO] [stdout] test retry::tests::retry_delay_range_always_valid ... ok [INFO] [stdout] test openai::tests::supports_embeddings_with_model ... ok [INFO] [stdout] test router::asi::tests::asi_state_high_coherence_for_identical_embeddings ... ok [INFO] [stdout] test router::asi::tests::asi_state_low_coherence_for_orthogonal_embeddings ... ok [INFO] [stdout] test router::asi::tests::asi_state_returns_one_before_warmup ... ok [INFO] [stdout] test router::asi::tests::asi_state_window_evicts_oldest ... ok [INFO] [stdout] test router::bandit::tests::cost_weight_biases_toward_cheap_provider ... ok [INFO] [stdout] test router::bandit::tests::cost_weight_zero_no_bias ... ok [INFO] [stdout] test router::bandit::tests::decay_converges_to_identity ... ok [INFO] [stdout] test router::bandit::tests::dim_one_update_and_select ... ok [INFO] [stdout] test router::bandit::tests::embedding_to_features_normalises ... ok [INFO] [stdout] test router::bandit::tests::embedding_to_features_short_returns_none ... ok [INFO] [stdout] test router::bandit::tests::embedding_to_features_zero_vector_returns_none ... ok [INFO] [stdout] test router::bandit::tests::load_clamps_out_of_range_values ... ok [INFO] [stdout] test router::bandit::tests::load_corrupt_file_returns_default ... ok [INFO] [stdout] test router::bandit::tests::load_mismatched_dim_resets_arm ... ok [INFO] [stdout] test router::bandit::tests::load_missing_file_returns_default ... ok [INFO] [stdout] test router::bandit::tests::mar_cost_weight_zero_no_boost_even_high_confidence ... ok [INFO] [stdout] test router::bandit::tests::mar_high_confidence_boosts_cheap_provider ... ok [INFO] [stdout] test router::bandit::tests::mar_low_confidence_no_boost ... ok [INFO] [stdout] test router::bandit::tests::provider_cost_estimate_tiers ... ok [INFO] [stdout] test router::bandit::tests::prune_removes_stale_arms ... ok [INFO] [stdout] test router::bandit::tests::reward_clamping_via_stats ... ok [INFO] [stdout] test openai::tests::supports_tool_use_returns_true ... ok [INFO] [stdout] test router::bandit::tests::save_and_load_roundtrip ... ok [INFO] [stdout] test router::bandit::tests::select_after_warmup_returns_provider ... ok [INFO] [stdout] test router::bandit::tests::select_converges_to_best_arm ... ok [INFO] [stdout] test router::bandit::tests::save_leaves_no_tmp_file ... ok [INFO] [stdout] test router::bandit::tests::select_one_provider_over_budget_excluded ... ok [INFO] [stdout] test router::bandit::tests::select_returns_none_when_all_filtered ... ok [INFO] [stdout] test router::bandit::tests::select_returns_none_during_warmup ... ok [INFO] [stdout] test router::bandit::tests::select_single_provider_returns_it ... ok [INFO] [stdout] test router::bandit::tests::solve_identity_returns_rhs ... ok [INFO] [stdout] test router::bandit::tests::solve_known_matrix ... ok [INFO] [stdout] test router::bandit::tests::select_zero_providers_returns_none ... ok [INFO] [stdout] test router::bandit::tests::stats_returns_sorted_by_name ... ok [INFO] [stdout] test openai::tests::with_generation_overrides_stores_overrides ... ok [INFO] [stdout] test router::bandit::tests::solve_singular_returns_none ... ok [INFO] [stdout] test router::bandit::tests::ucb_score_nan_feature_returns_none ... ok [INFO] [stdout] test router::bandit::tests::ucb_selects_arm_with_higher_score ... ok [INFO] [stdout] test router::bandit::tests::ucb_score_fresh_arm_equals_alpha_times_norm ... ok [INFO] [stdout] test router::bandit::tests::update_increments_total_updates ... ok [INFO] [stdout] test router::cascade::tests::cascade_state_records_and_retrieves ... ok [INFO] [stdout] test router::cascade::tests::cascade_state_unknown_provider_returns_neutral ... ok [INFO] [stdout] test router::cascade::tests::classifier_mode_default_is_heuristic ... ok [INFO] [stdout] test router::cascade::tests::classifier_mode_serde_roundtrip ... ok [INFO] [stdout] test router::cascade::tests::empty_response_scores_zero ... ok [INFO] [stdout] test router::bandit::tests::update_modifies_a_and_b ... ok [INFO] [stdout] test router::cascade::tests::cascade_state_window_evicts_old_scores ... ok [INFO] [stdout] test router::cascade::tests::normal_response_scores_high ... ok [INFO] [stdout] test router::cascade::tests::highly_repetitive_response_scores_low ... ok [INFO] [stdout] test router::cascade::tests::parse_judge_score_decimal ... ok [INFO] [stdout] test openai::tests::supports_streaming_returns_true ... ok [INFO] [stdout] test router::cascade::tests::parse_judge_score_garbage_returns_none ... ok [INFO] [stdout] test router::cascade::tests::parse_judge_score_ten_clamps_to_one ... ok [INFO] [stdout] test router::cascade::tests::parse_judge_score_zero_is_valid ... ok [INFO] [stdout] test router::cascade::tests::repetition_ratio_full_repetition ... ok [INFO] [stdout] test router::cascade::tests::parse_judge_score_with_surrounding_text ... ok [INFO] [stdout] test router::cascade::tests::heuristic_score_never_panics_on_unicode ... ok [INFO] [stdout] test router::cascade::tests::very_short_response_scores_low ... ok [INFO] [stdout] test router::reputation::tests::apply_decay_does_not_go_below_prior_at_one ... ok [INFO] [stdout] test router::reputation::tests::apply_decay_shrinks_toward_prior ... ok [INFO] [stdout] test router::reputation::tests::apply_decay_with_zero_observations_leaves_observations_zero ... ok [INFO] [stdout] test router::reputation::tests::default_entry_is_uniform_prior ... ok [INFO] [stdout] test router::reputation::tests::ema_reputation_factor_exact_value ... ok [INFO] [stdout] test router::reputation::tests::ema_reputation_factor_in_range ... ok [INFO] [stdout] test router::reputation::tests::high_quality_provider_gets_higher_effective_alpha ... ok [INFO] [stdout] test router::reputation::tests::load_clamps_out_of_range_values ... ok [INFO] [stdout] test router::reputation::tests::load_corrupt_file_returns_default ... ok [INFO] [stdout] test router::reputation::tests::load_missing_file_returns_default ... ok [INFO] [stdout] test router::cascade::tests::repetition_ratio_no_repetition ... ok [INFO] [stdout] test router::cascade::tests::parse_judge_score_integer ... ok [INFO] [stdout] test router::reputation::tests::min_observations_gate_blocks_insufficient_data ... ok [INFO] [stdout] test router::reputation::tests::min_observations_gate_passes_at_threshold ... ok [INFO] [stdout] test router::reputation::tests::new_clamps_zero_decay_factor_to_min_positive ... ok [INFO] [stdout] test router::reputation::tests::empty_provider_list_does_not_panic ... ok [INFO] [stdout] test router::reputation::tests::prune_with_empty_known_removes_all ... ok [INFO] [stdout] test router::reputation::tests::load_sanitizes_nan_and_inf_values ... ok [INFO] [stdout] test router::reputation::tests::record_success_increments_alpha ... ok [INFO] [stdout] test router::reputation::tests::save_and_load_roundtrip ... ok [INFO] [stdout] test router::reputation::tests::prune_removes_stale_entries ... ok [INFO] [stdout] test router::reputation::tests::save_leaves_no_tmp_file ... ok [INFO] [stdout] test router::reputation::tests::record_failure_increments_beta ... ok [INFO] [stdout] test router::reputation::tests::save_and_load_preserves_decay_factor_and_min_observations ... ok [INFO] [stdout] test router::reputation::tests::shift_thompson_priors_max_weight_shifts_fully ... ok [INFO] [stdout] test router::reputation::tests::shift_thompson_priors_returns_unchanged_below_min_obs ... ok [INFO] [stdout] test router::reputation::tests::shift_thompson_priors_shifts_alpha_for_good_provider ... ok [INFO] [stdout] test router::reputation::tests::stats_returns_sorted_entries ... ok [INFO] [stdout] test router::reputation::tests::shift_thompson_priors_zero_weight_returns_original ... ok [INFO] [stdout] test router::reputation::tests::shift_thompson_priors_shifts_beta_for_bad_provider ... ok [INFO] [stdout] test router::tests::asi_debounce_next_turn_fires_again ... ok [INFO] [stdout] test router::tests::asi_debounce_same_turn_fires_once ... ok [INFO] [stdout] test router::tests::arc_providers_clone_shares_allocation ... ok [INFO] [stdout] test router::tests::cascade_accepts_good_quality_response ... ok [INFO] [stdout] test router::tests::cascade_config_default_values ... ok [INFO] [stdout] test router::tests::cascade_empty_best_seen_not_returned_on_all_fail ... ok [INFO] [stdout] test router::tests::cascade_empty_response_not_stored_as_best_seen ... ok [INFO] [stdout] test router::tests::cascade_empty_router_returns_no_providers ... ok [INFO] [stdout] test router::tests::cascade_all_providers_fail_returns_no_providers ... ok [INFO] [stdout] test router::tests::cascade_max_escalations_budget_exhausted_returns_last_attempted ... ok [INFO] [stdout] test router::tests::cascade_ordered_providers_preserves_chain_order ... ok [INFO] [stdout] test router::tests::cascade_returns_best_seen_when_all_fail_after_good_response ... ok [INFO] [stdout] test router::tests::cascade_strategy_is_set ... ok [INFO] [stdout] test router::tests::cascade_stream_all_fail_returns_error ... ok [INFO] [stdout] test router::tests::cascade_stream_budget_returns_best_seen ... ok [INFO] [stdout] test router::tests::cascade_escalations_exhausted_returns_best_seen_not_current ... ok [INFO] [stdout] test router::tests::cascade_stream_empty_response_not_stored_as_best_seen ... ok [INFO] [stdout] test router::tests::cascade_stream_budget_returns_best_seen_not_current ... ok [INFO] [stdout] test router::tests::cascade_budget_returns_best_seen_not_current ... ok [INFO] [stdout] test router::tests::cascade_chat_with_tools_unaffected_by_cost_tiers ... ok [INFO] [stdout] test router::tests::cascade_stream_escalates_to_last_provider ... ok [INFO] [stdout] test router::tests::cascade_stream_escalations_exhausted_returns_best_seen_not_current ... ok [INFO] [stdout] test router::tests::clone_preserves_providers ... ok [INFO] [stdout] test router::tests::cascade_stream_good_quality_no_escalation ... ok [INFO] [stdout] test router::tests::cascade_stream_last_fails_returns_best_seen ... ok [INFO] [stdout] test router::tests::cascade_token_budget_stops_escalation ... ok [INFO] [stdout] test router::tests::cost_tiers_all_providers_listed ... ok [INFO] [stdout] test router::tests::cost_tiers_duplicate_name_uses_last_position ... ok [INFO] [stdout] test router::tests::cost_tiers_empty_router_does_not_panic ... ok [INFO] [stdout] test router::tests::concurrent_record_outcome_does_not_deadlock ... ok [INFO] [stdout] test router::tests::cost_tiers_empty_vec_preserves_chain_order ... ok [INFO] [stdout] test router::tests::cost_tiers_reorders_providers_at_construction ... ok [INFO] [stdout] test router::tests::cost_tiers_unknown_name_ignored ... ok [INFO] [stdout] test router::tests::cost_tiers_none_preserves_chain_order ... ok [INFO] [stdout] test router::tests::embed_invalid_input_breaks_loop_and_returns_invalid_input ... ok [INFO] [stdout] test router::tests::embed_invalid_input_does_not_fall_through_to_second_provider ... ok [INFO] [stdout] test router::tests::embed_invalid_input_does_not_record_availability ... ok [INFO] [stdout] test retry::tests::send_with_retry_exhausts_retries_returns_rate_limited ... ok [INFO] [stdout] test retry::tests::send_with_retry_success_on_first_attempt ... ok [INFO] [stdout] test router::tests::embed_skips_non_embedding_providers_and_falls_through ... ok [INFO] [stdout] test router::tests::empty_router_chat_returns_no_providers ... ok [INFO] [stdout] test router::tests::empty_router_chat_stream_returns_no_providers ... ok [INFO] [stdout] test router::tests::empty_router_chat_with_tools_returns_no_providers ... ok [INFO] [stdout] test router::tests::embed_semaphore_limits_concurrency ... ok [INFO] [stdout] test router::tests::empty_router_context_window_none ... ok [INFO] [stdout] test router::tests::empty_router_embed_returns_no_providers ... ok [INFO] [stdout] test router::tests::empty_router_name ... ok [INFO] [stdout] test router::tests::evaluate_heuristic_empty_should_escalate_above_threshold ... ok [INFO] [stdout] test router::tests::evaluate_heuristic_good_response_does_not_escalate ... ok [INFO] [stdout] test router::tests::empty_router_supports_nothing ... ok [INFO] [stdout] test router::tests::quality_gate_exhaustion_returns_best_seen ... ok [INFO] [stdout] test router::tests::quality_gate_passes_when_similarity_above_threshold ... ok [INFO] [stdout] test router::tests::router_falls_back_on_unreachable ... ok [INFO] [stdout] test router::tests::router_with_streaming_provider ... ok [INFO] [stdout] test router::tests::routing_signals_quality_gate_above_one_is_ignored ... ok [INFO] [stdout] test router::tests::routing_signals_quality_gate_valid_is_wired ... ok [INFO] [stdout] test router::tests::save_thompson_state_noop_without_thompson ... ok [INFO] [stdout] test router::tests::set_status_tx_works_with_arc ... ok [INFO] [stdout] test router::tests::last_cache_usage_returns_none ... ok [INFO] [stdout] test router::tests::thompson_ordered_providers_empty ... ok [INFO] [stdout] test router::tests::thompson_strategy_is_set ... ok [INFO] [stdout] test router::tests::turn_counter_increments_across_clones ... ok [INFO] [stdout] test router::tests::turn_embed_cache_hit_increments_counter ... ok [INFO] [stdout] test router::tests::with_embed_concurrency_positive_creates_semaphore ... ok [INFO] [stdout] test router::tests::with_embed_concurrency_zero_means_no_semaphore ... ok [INFO] [stdout] test router::thompson::tests::beta_dist_sample_in_range ... ok [INFO] [stdout] test router::tests::spawn_asi_update_with_precomputed_skips_embed ... ok [INFO] [stdout] test router::thompson::tests::load_clamps_out_of_range_values ... ok [INFO] [stdout] test router::thompson::tests::load_corrupt_file_returns_default ... ok [INFO] [stdout] test router::thompson::tests::load_missing_file_returns_default ... ok [INFO] [stdout] test router::thompson::tests::provider_stats_returns_sorted_entries ... ok [INFO] [stdout] test router::thompson::tests::prune_removes_stale_entries ... ok [INFO] [stdout] test router::thompson::tests::save_and_load_roundtrip ... ok [INFO] [stdout] test router::thompson::tests::save_leaves_no_tmp_file ... ok [INFO] [stdout] test router::thompson::tests::select_empty_providers_returns_none ... ok [INFO] [stdout] test router::thompson::tests::select_is_mut_compatible_with_repeated_calls ... ok [INFO] [stdout] test router::thompson::tests::select_returns_one_of_the_providers ... ok [INFO] [stdout] test router::thompson::tests::select_single_provider_returns_it ... ok [INFO] [stdout] test router::thompson::tests::update_failure_increases_beta ... ok [INFO] [stdout] test router::thompson::tests::update_success_increases_alpha ... ok [INFO] [stdout] test router::triage::tests::build_triage_prompt_contains_last_user_message ... ok [INFO] [stdout] test router::triage::tests::build_triage_prompt_has_no_context_size_metadata ... ok [INFO] [stdout] test router::triage::tests::complexity_tier_index_ordering ... ok [INFO] [stdout] test router::triage::tests::debug_request_json_reflects_last_provider_after_chat ... ok [INFO] [stdout] test router::triage::tests::embed_delegates_to_first_embedding_capable_tier ... ok [INFO] [stdout] test router::triage::tests::embed_returns_error_when_no_tier_supports_embeddings ... ok [INFO] [stdout] test router::triage::tests::escalate_no_larger_provider_keeps_original ... ok [INFO] [stdout] test router::triage::tests::escalate_no_op_within_80_percent ... ok [INFO] [stdout] test router::triage::tests::escalate_skips_when_context_window_none ... ok [INFO] [stdout] test router::triage::tests::escalate_triggers_above_80_percent ... ok [INFO] [stdout] test router::triage::tests::last_usage_none_before_any_call ... ok [INFO] [stdout] test retry::tests::send_with_retry_succeeds_after_one_429 ... ok [INFO] [stdout] test router::triage::tests::parse_tier_complex ... ok [INFO] [stdout] test router::triage::tests::parse_tier_garbage_returns_none ... ok [INFO] [stdout] test router::triage::tests::parse_tier_json ... ok [INFO] [stdout] test router::triage::tests::parse_tier_regex_fallback ... ok [INFO] [stdout] test router::triage::tests::parse_tier_regex_only ... ok [INFO] [stdout] test router::triage::tests::select_provider_escalates_to_higher ... ok [INFO] [stdout] test router::triage::tests::select_provider_exact_tier ... ok [INFO] [stdout] test router::triage::tests::supports_embeddings_false_when_no_tier_supports_it ... ok [INFO] [stdout] test router::triage::tests::metrics_snapshot_default ... ok [INFO] [stdout] test router::triage::tests::supports_embeddings_true_when_tier_supports_it ... ok [INFO] [stdout] test router::triage::tests::supports_streaming_false_if_no_tier_supports_it ... ok [INFO] [stdout] test router::triage::tests::supports_streaming_true_if_any_tier_supports_it ... ok [INFO] [stdout] test router::triage::tests::tier_as_str ... ok [INFO] [stdout] test router::triage::tests::triage_router_chat_delegates_to_correct_tier ... ok [INFO] [stdout] test sse::tests::claude_compaction_block_start_sets_buf ... ok [INFO] [stdout] test sse::tests::claude_compaction_buf_capped_at_32kib ... ok [INFO] [stdout] test sse::tests::claude_compaction_delta_accumulated_into_buf ... ok [INFO] [stdout] test router::thompson::tests::high_alpha_provider_selected_disproportionately ... ok [INFO] [stdout] test sse::tests::claude_compaction_stop_emits_compaction_chunk ... ok [INFO] [stdout] test sse::tests::claude_full_compaction_sequence ... ok [INFO] [stdout] test sse::tests::claude_non_compaction_block_start_leaves_buf_empty ... ok [INFO] [stdout] test sse::tests::claude_parse_empty_text_delta ... ok [INFO] [stdout] test sse::tests::claude_parse_error_event ... ok [INFO] [stdout] test sse::tests::claude_parse_text_delta ... ok [INFO] [stdout] test sse::tests::claude_compaction_delta_does_not_emit_content_chunk ... ok [INFO] [stdout] test sse::tests::claude_parse_unknown_event_skipped ... ok [INFO] [stdout] test sse::tests::claude_signature_delta_not_emitted_to_stream ... ok [INFO] [stdout] test sse::tests::claude_thinking_delta_emitted_as_thinking_chunk ... ok [INFO] [stdout] test sse::tests::claude_thinking_delta_empty_not_emitted ... ok [INFO] [stdout] test sse::tests::gemini_parse_empty_text_skipped ... ok [INFO] [stdout] test sse::tests::gemini_parse_function_call_empty_name ... ok [INFO] [stdout] test sse::tests::gemini_parse_function_call_no_args ... ok [INFO] [stdout] test sse::tests::gemini_parse_function_call_null_args ... ok [INFO] [stdout] test sse::tests::gemini_parse_function_call_with_thinking ... ok [INFO] [stdout] test sse::tests::gemini_parse_invalid_json_error ... ok [INFO] [stdout] test sse::tests::gemini_parse_mixed_text_and_function_call ... ok [INFO] [stdout] test sse::tests::gemini_parse_multi_part_thinking_priority ... ok [INFO] [stdout] test sse::tests::gemini_parse_multiple_function_calls ... ok [INFO] [stdout] test sse::tests::claude_stop_without_compaction_buf_returns_none ... ok [INFO] [stdout] test sse::tests::gemini_parse_no_candidates_skipped ... ok [INFO] [stdout] test sse::tests::gemini_parse_single_function_call ... ok [INFO] [stdout] test sse::tests::gemini_parse_text_chunk ... ok [INFO] [stdout] test sse::tests::gemini_parse_thinking_chunk ... ok [INFO] [stdout] test sse::tests::gemini_parse_text_only_unaffected ... ok [INFO] [stdout] test sse::tests::gemini_parse_thought_false_emitted_as_content ... ok [INFO] [stdout] test sse::tests::openai_parse_done_signal ... ok [INFO] [stdout] test sse::tests::openai_parse_empty_content ... ok [INFO] [stdout] test sse::tests::openai_parse_invalid_json ... ok [INFO] [stdout] test sse::tests::openai_parse_reasoning_content_chunk ... ok [INFO] [stdout] test sse::tests::openai_parse_text_chunk ... ok [INFO] [stdout] test testing::tests::claude_sse_contains_chunks ... ok [INFO] [stdout] test testing::tests::ollama_response_shape ... ok [INFO] [stdout] test testing::tests::claude_messages_response_shape ... ok [INFO] [stdout] test testing::tests::openai_sse_contains_done_sentinel ... ok [INFO] [stdout] test testing::tests::openai_chat_response_is_200 ... ok [INFO] [stdout] test whisper::tests::whisper_provider_construction ... ok [INFO] [stdout] test whisper::tests::whisper_provider_debug_redacts_key ... ok [INFO] [stdout] test router::triage::tests::triage_router_fallback_on_timeout ... ok [INFO] [stdout] test router::tests::embed_batch_retries_on_rate_limited_then_succeeds ... ok [INFO] [stdout] test router::tests::embed_retries_on_rate_limited_then_succeeds ... ok [INFO] [stdout] test router::tests::embed_batch_falls_back_after_all_retries_exhausted ... ok [INFO] [stdout] test router::tests::embed_falls_back_after_all_retries_exhausted ... ok [INFO] [stdout] test openai::tests::chat_429_rate_limit_propagates ... ok [INFO] [stderr] Doc-tests zeph_llm [INFO] [stdout] [INFO] [stdout] test result: ok. 802 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 20.29s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test src/extractor.rs - extractor (line 14) - compile ... ok [INFO] [stdout] test src/ollama.rs - ollama (line 23) - compile ... ok [INFO] [stdout] test src/claude/mod.rs - claude (line 30) - compile ... ok [INFO] [stdout] test src/lib.rs - (line 57) - compile ... ok [INFO] [stdout] test src/provider.rs - provider::LlmProvider (line 649) - compile ... ok [INFO] [stdout] test src/provider.rs - provider::Message (line 496) ... ok [INFO] [stdout] test src/provider.rs - provider::short_type_name (line 58) ... ok [INFO] [stdout] test src/provider.rs - provider::MessageVisibility (line 338) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stdout] all doctests ran in 2.07s; merged doctests compilation took 2.01s [INFO] running `Command { std: "docker" "inspect" "7ce756729f4c3ae08998eb82f20e272b4fa5e4c3622204546477ed1c43a9498d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7ce756729f4c3ae08998eb82f20e272b4fa5e4c3622204546477ed1c43a9498d", kill_on_drop: false }` [INFO] [stdout] 7ce756729f4c3ae08998eb82f20e272b4fa5e4c3622204546477ed1c43a9498d