[INFO] fetching crate zeph-llm 0.21.1...
[INFO] testing zeph-llm-0.21.1 against master#ec6f9a5b4413f74386267ef8efc93712c2ce6db6 for pr-155739-1
[INFO] extracting crate zeph-llm 0.21.1 into /workspace/builds/worker-2-tc1/source
[INFO] started tweaking crates.io crate zeph-llm 0.21.1
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate zeph-llm 0.21.1
[INFO] tweaked toml for crates.io crate zeph-llm 0.21.1 written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate zeph-llm 0.21.1 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 crates.io crate zeph-llm 0.21.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" "+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]  Downloading crates ...
[INFO] [stderr]   Downloaded uuid v1.23.1
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.120
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.120
[INFO] [stderr]   Downloaded rayon-cond v0.4.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.120
[INFO] [stderr]   Downloaded monostate-impl v0.1.18
[INFO] [stderr]   Downloaded libredox v0.1.16
[INFO] [stderr]   Downloaded macro_rules_attribute v0.2.2
[INFO] [stderr]   Downloaded deadpool-runtime v0.1.4
[INFO] [stderr]   Downloaded macro_rules_attribute-proc_macro v0.2.2
[INFO] [stderr]   Downloaded monostate v0.1.18
[INFO] [stderr]   Downloaded extended v0.1.0
[INFO] [stderr]   Downloaded zerofrom v0.1.7
[INFO] [stderr]   Downloaded derive_builder_macro v0.20.2
[INFO] [stderr]   Downloaded assert-json-diff v2.0.2
[INFO] [stderr]   Downloaded symphonia v0.5.5
[INFO] [stderr]   Downloaded symphonia-codec-pcm v0.5.5
[INFO] [stderr]   Downloaded visibility v0.1.1
[INFO] [stderr]   Downloaded cpu-time v1.0.0
[INFO] [stderr]   Downloaded block-buffer v0.12.0
[INFO] [stderr]   Downloaded windowfunctions v0.1.1
[INFO] [stderr]   Downloaded symphonia-utils-xiph v0.5.5
[INFO] [stderr]   Downloaded audioadapter-sample v3.0.0
[INFO] [stderr]   Downloaded wasm-bindgen-futures v0.4.70
[INFO] [stderr]   Downloaded crypto-common v0.2.1
[INFO] [stderr]   Downloaded audio-core v0.2.1
[INFO] [stderr]   Downloaded derive_builder_core v0.20.2
[INFO] [stderr]   Downloaded socks v0.3.4
[INFO] [stderr]   Downloaded utf8-zero v0.8.1
[INFO] [stderr]   Downloaded eventsource-stream v0.2.3
[INFO] [stderr]   Downloaded serde_plain v1.0.2
[INFO] [stderr]   Downloaded candle-ug v0.10.2
[INFO] [stderr]   Downloaded symphonia-format-riff v0.5.5
[INFO] [stderr]   Downloaded symphonia-format-ogg v0.5.5
[INFO] [stderr]   Downloaded audioadapter v3.0.0
[INFO] [stderr]   Downloaded digest v0.11.3
[INFO] [stderr]   Downloaded audioadapter-buffers v3.0.0
[INFO] [stderr]   Downloaded symphonia-bundle-flac v0.5.5
[INFO] [stderr]   Downloaded ripemd v0.2.0
[INFO] [stderr]   Downloaded realfft v3.5.0
[INFO] [stderr]   Downloaded gemm-f64 v0.18.2
[INFO] [stderr]   Downloaded fs2 v0.4.3
[INFO] [stderr]   Downloaded gemm-c32 v0.18.2
[INFO] [stderr]   Downloaded gemm-f32 v0.18.2
[INFO] [stderr]   Downloaded bech32 v0.9.1
[INFO] [stderr]   Downloaded gemm-f16 v0.18.2
[INFO] [stderr]   Downloaded ordered-float v5.3.0
[INFO] [stderr]   Downloaded deadpool v0.12.3
[INFO] [stderr]   Downloaded daachorse v1.0.1
[INFO] [stderr]   Downloaded dary_heap v0.3.9
[INFO] [stderr]   Downloaded zeph-common v0.21.1
[INFO] [stderr]   Downloaded unit-prefix v0.5.2
[INFO] [stderr]   Downloaded onig v6.5.3
[INFO] [stderr]   Downloaded derive_builder v0.20.2
[INFO] [stderr]   Downloaded symphonia-metadata v0.5.5
[INFO] [stderr]   Downloaded sha2 v0.11.0
[INFO] [stderr]   Downloaded hybrid-array v0.4.11
[INFO] [stderr]   Downloaded float8 v0.7.0
[INFO] [stderr]   Downloaded ug-metal v0.5.0
[INFO] [stderr]   Downloaded safetensors v0.4.5
[INFO] [stderr]   Downloaded gemm-common v0.18.2
[INFO] [stderr]   Downloaded gemm-c64 v0.18.2
[INFO] [stderr]   Downloaded ug-cuda v0.5.0
[INFO] [stderr]   Downloaded cudaforge v0.1.5
[INFO] [stderr]   Downloaded metrics v0.24.5
[INFO] [stderr]   Downloaded wiremock v0.6.5
[INFO] [stderr]   Downloaded rapidhash v4.4.1
[INFO] [stderr]   Downloaded hf-hub v0.5.0
[INFO] [stderr]   Downloaded cookie_store v0.22.1
[INFO] [stderr]   Downloaded rubato v2.0.0
[INFO] [stderr]   Downloaded symphonia-bundle-mp3 v0.5.5
[INFO] [stderr]   Downloaded libloading v0.9.0
[INFO] [stderr]   Downloaded gemm v0.18.2
[INFO] [stderr]   Downloaded compact_str v0.9.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.120
[INFO] [stderr]   Downloaded ollama-rs v0.3.4
[INFO] [stderr]   Downloaded ureq-proto v0.6.0
[INFO] [stderr]   Downloaded dispatch2 v0.3.1
[INFO] [stderr]   Downloaded const-oid v0.10.2
[INFO] [stderr]   Downloaded ug v0.5.0
[INFO] [stderr]   Downloaded jni-macros v0.22.4
[INFO] [stderr]   Downloaded toml_edit v0.25.11+spec-1.1.0
[INFO] [stderr]   Downloaded rand_distr v0.6.0
[INFO] [stderr]   Downloaded unicode-normalization-alignments v0.1.12
[INFO] [stderr]   Downloaded cc v1.2.61
[INFO] [stderr]   Downloaded candle-kernels v0.10.2
[INFO] [stderr]   Downloaded symphonia-core v0.5.5
[INFO] [stderr]   Downloaded indicatif v0.18.4
[INFO] [stderr]   Downloaded candle-nn v0.10.2
[INFO] [stderr]   Downloaded js-sys v0.3.97
[INFO] [stderr]   Downloaded fancy-regex v0.17.0
[INFO] [stderr]   Downloaded webpki-root-certs v1.0.7
[INFO] [stderr]   Downloaded candle-metal-kernels v0.10.2
[INFO] [stderr]   Downloaded esaxx-rs v0.1.10
[INFO] [stderr]   Downloaded ureq v3.3.0
[INFO] [stderr]   Downloaded pulp v0.21.5
[INFO] [stderr]   Downloaded jni v0.22.4
[INFO] [stderr]   Downloaded zeph-config v0.21.1
[INFO] [stderr]   Downloaded tokenizers v0.22.2
[INFO] [stderr]   Downloaded tokenizers v0.23.1
[INFO] [stderr]   Downloaded webpki-roots v1.0.7
[INFO] [stderr]   Downloaded blake3 v1.8.5
[INFO] [stderr]   Downloaded proptest v1.11.0
[INFO] [stderr]   Downloaded aws-lc-rs v1.16.3
[INFO] [stderr]   Downloaded objc2-metal v0.3.2
[INFO] [stderr]   Downloaded objc2 v0.6.4
[INFO] [stderr]   Downloaded candle-core v0.10.2
[INFO] [stderr]   Downloaded simd_cesu8 v1.1.1
[INFO] [stderr]   Downloaded candle-transformers v0.10.2
[INFO] [stderr]   Downloaded spm_precompiled v0.1.4
[INFO] [stderr]   Downloaded cudarc v0.17.8
[INFO] [stderr]   Downloaded web-sys v0.3.97
[INFO] [stderr]   Downloaded cudarc v0.19.4
[INFO] [stderr]   Downloaded onig_sys v69.9.3
[INFO] [stderr]   Downloaded tokio v1.52.2
[INFO] [stderr]   Downloaded metal v0.29.0
[INFO] [stderr]   Downloaded aws-lc-sys v0.40.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 2a8e52ca3a6aab241c82e3a56c3dad1845b5bb0578fffb39af1f032708d8dea6
[INFO] running `Command { std: "docker" "start" "-a" "2a8e52ca3a6aab241c82e3a56c3dad1845b5bb0578fffb39af1f032708d8dea6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2a8e52ca3a6aab241c82e3a56c3dad1845b5bb0578fffb39af1f032708d8dea6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2a8e52ca3a6aab241c82e3a56c3dad1845b5bb0578fffb39af1f032708d8dea6", kill_on_drop: false }`
[INFO] [stdout] 2a8e52ca3a6aab241c82e3a56c3dad1845b5bb0578fffb39af1f032708d8dea6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] b82b1a8dbea8c889262f381cfacd8fc1ac250c616f3217b4d668995bc2016cd9
[INFO] running `Command { std: "docker" "start" "-a" "b82b1a8dbea8c889262f381cfacd8fc1ac250c616f3217b4d668995bc2016cd9", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling cc v1.2.61
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling aws-lc-rs v1.16.3
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling rand_core v0.10.1
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling aws-lc-sys v0.40.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling blake3 v1.8.5
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling winnow v1.0.2
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling rapidhash v4.4.1
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling constant_time_eq v0.4.2
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling metrics v0.24.5
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling uuid v1.23.1
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling cpu-time v1.0.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling serde_derive v1.0.228
[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 zeroize_derive v1.4.3
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling tokio v1.52.2
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[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 potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling ordered-float v5.3.0
[INFO] [stderr]    Compiling rand v0.10.1
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling toml_edit v0.25.11+spec-1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling zeph-common v0.21.1
[INFO] [stderr]    Compiling tower-http v0.6.10
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling eventsource-stream v0.2.3
[INFO] [stderr]    Compiling rand_distr v0.6.0
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling zeph-config v0.21.1
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.7.0
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling reqwest v0.13.3
[INFO] [stderr]    Compiling ollama-rs v0.3.4
[INFO] [stderr]    Compiling zeph-llm v0.21.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 50s
[INFO] running `Command { std: "docker" "inspect" "b82b1a8dbea8c889262f381cfacd8fc1ac250c616f3217b4d668995bc2016cd9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b82b1a8dbea8c889262f381cfacd8fc1ac250c616f3217b4d668995bc2016cd9", kill_on_drop: false }`
[INFO] [stdout] b82b1a8dbea8c889262f381cfacd8fc1ac250c616f3217b4d668995bc2016cd9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 0ef096f17769dccc95ff8fe89eeb58906a7b6559d916fe29580c8ca97b9a6390
[INFO] running `Command { std: "docker" "start" "-a" "0ef096f17769dccc95ff8fe89eeb58906a7b6559d916fe29580c8ca97b9a6390", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.52.2
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling ordered-float v5.3.0
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling deadpool-runtime v0.1.4
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling rand_distr v0.6.0
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling unarray v0.1.4
[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 tower-http v0.6.10
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling zeph-common v0.21.1
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling zeph-config v0.21.1
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling ciborium v0.2.2
[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.9
[INFO] [stderr]    Compiling wiremock v0.6.5
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling reqwest v0.13.3
[INFO] [stderr]    Compiling ollama-rs v0.3.4
[INFO] [stderr]    Compiling zeph-llm v0.21.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 27.14s
[INFO] running `Command { std: "docker" "inspect" "0ef096f17769dccc95ff8fe89eeb58906a7b6559d916fe29580c8ca97b9a6390", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0ef096f17769dccc95ff8fe89eeb58906a7b6559d916fe29580c8ca97b9a6390", kill_on_drop: false }`
[INFO] [stdout] 0ef096f17769dccc95ff8fe89eeb58906a7b6559d916fe29580c8ca97b9a6390
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] c5ffc118d58f784d74ebbb7b8af71b1ed139ce1e796b2992f8c94cb66df63694
[INFO] running `Command { std: "docker" "start" "-a" "c5ffc118d58f784d74ebbb7b8af71b1ed139ce1e796b2992f8c94cb66df63694", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.30s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/zeph_llm-9b69d68e3c64a13f)
[INFO] [stdout] 
[INFO] [stdout] running 865 tests
[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_context_window_delegates ... ok
[INFO] [stdout] test any::tests::any_claude_debug ... ok
[INFO] [stdout] test any::tests::any_claude_embed_error_message ... ok
[INFO] [stdout] test any::tests::any_claude_embed_returns_error ... ok
[INFO] [stdout] test any::tests::any_ollama_chat_stream_unreachable_errors ... ok
[INFO] [stdout] test any::tests::any_ollama_chat_unreachable_errors ... ok
[INFO] [stdout] test any::tests::any_ollama_context_window_delegates ... ok
[INFO] [stdout] test any::tests::any_ollama_clone ... ok
[INFO] [stdout] test any::tests::any_ollama_debug ... ok
[INFO] [stdout] test any::tests::any_ollama_does_not_support_structured_output ... ok
[INFO] [stdout] test any::tests::any_ollama_name ... 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_ollama_embed_unreachable_errors ... ok
[INFO] [stdout] test any::tests::any_ollama_name_delegates ... ok
[INFO] [stdout] test any::tests::any_ollama_supports_embeddings ... ok
[INFO] [stdout] test any::tests::any_ollama_supports_streaming ... 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_claude_name ... ok
[INFO] [stdout] test any::tests::any_claude_supports_streaming ... ok
[INFO] [stdout] test any::tests::any_claude_supports_vision ... 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::chat_typed_erased_dispatches_to_mock ... ok
[INFO] [stdout] test classifier::llm::tests::build_judge_messages_escapes_xml_tags ... ok
[INFO] [stdout] test classifier::llm::tests::build_judge_messages_returns_two_messages ... ok
[INFO] [stdout] test classifier::llm::tests::build_judge_messages_truncates_long_user_msg ... ok
[INFO] [stdout] test any::tests::any_openai_supports_structured_output ... ok
[INFO] [stdout] test classifier::llm::tests::llm_classifier_backend_name ... ok
[INFO] [stdout] test classifier::llm::tests::llm_classifier_mock_returns_verdict ... ok
[INFO] [stdout] test classifier::metrics::tests::empty_snapshot_has_none_percentiles ... 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::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_at_default_capacity ... 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_deserializes ... ok
[INFO] [stdout] test claude::tests::api_response_empty_content ... ok
[INFO] [stdout] test claude::tests::api_response_multiple_content_blocks ... ok
[INFO] [stdout] test claude::tests::api_response_with_usage ... ok
[INFO] [stdout] test claude::tests::api_usage_deserialization ... ok
[INFO] [stdout] test claude::tests::apply_cache_breakpoint_propagates_one_hour_ttl ... ok
[INFO] [stdout] test classifier::llm::tests::llm_classifier_low_confidence_becomes_neutral ... ok
[INFO] [stdout] test any::tests::any_openai_name ... ok
[INFO] [stdout] test any::tests::any_openai_debug ... ok
[INFO] [stdout] test any::tests::any_openai_supports_vision ... ok
[INFO] [stdout] test any::tests::any_provider_debug_variants ... ok
[INFO] [stdout] test any::tests::any_provider_clone_independence ... ok
[INFO] [stdout] test any::tests::any_openai_supports_embeddings ... 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 claude::tests::budget_to_effort_boundaries ... ok
[INFO] [stdout] test claude::tests::beta_header_excludes_compact_when_disabled ... ok
[INFO] [stdout] test claude::tests::beta_header_includes_compact_when_server_compaction_enabled ... ok
[INFO] [stdout] test claude::tests::beta_header_includes_extended_cache_ttl_for_one_hour ... ok
[INFO] [stdout] test claude::tests::beta_header_sonnet_4_6_extended_no_tools_excludes_interleaved ... ok
[INFO] [stdout] test claude::tests::beta_header_omits_extended_cache_ttl_for_ephemeral ... 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_multi_turn_no_top_level_cache_control ... ok
[INFO] [stdout] test claude::tests::build_request_opus_no_thinking_keeps_trailing_assistant ... 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_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::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::cache_ttl_deserialize_rejects_unknown_string ... ok
[INFO] [stdout] test claude::tests::cache_ttl_ephemeral_requires_no_beta ... ok
[INFO] [stdout] test claude::tests::cache_ttl_ephemeral_serializes_without_ttl_field ... ok
[INFO] [stdout] test claude::tests::cache_ttl_ephemeral_toml_round_trip ... ok
[INFO] [stdout] test claude::tests::cache_ttl_one_hour_requires_beta ... ok
[INFO] [stdout] test claude::tests::cache_ttl_one_hour_serializes_with_ttl_field ... ok
[INFO] [stdout] test claude::tests::cache_ttl_one_hour_toml_round_trip ... ok
[INFO] [stdout] test claude::tests::build_thinking_param_adaptive_with_effort_returns_effort ... ok
[INFO] [stdout] test claude::tests::build_thinking_param_adaptive_returns_adaptive_type ... ok
[INFO] [stdout] test claude::tests::build_thinking_param_extended_returns_enabled_with_budget ... ok
[INFO] [stdout] test claude::tests::build_thinking_param_no_thinking_returns_none ... ok
[INFO] [stdout] test claude::tests::build_thinking_param_opus_extended_converts_to_adaptive ... ok
[INFO] [stdout] test claude::tests::build_thinking_param_opus_adaptive_unchanged ... ok
[INFO] [stdout] test claude::tests::build_thinking_param_sonnet_extended_unchanged ... ok
[INFO] [stdout] test claude::tests::chat_with_tools_cache_hit_does_not_re_serialize ... ok
[INFO] [stdout] test claude::tests::chat_stream_with_unreachable_endpoint_errors ... ok
[INFO] [stdout] test claude::tests::chat_with_tools_cache_partial_tool_set_change_invalidates ... 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::content_block_deserializes ... ok
[INFO] [stdout] test claude::tests::claude_embed_returns_error ... ok
[INFO] [stdout] test claude::tests::claude_sse_fixture_contains_expected_events ... 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::clone_preserves_fields ... ok
[INFO] [stdout] test claude::tests::chat_with_tools_sends_correct_tool_fields ... ok
[INFO] [stdout] test claude::tests::context_management_absent_after_rejection ... ok
[INFO] [stdout] test claude::tests::clone_shares_rejection_flag ... 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::context_window_unknown_model ... ok
[INFO] [stdout] test claude::tests::extended_context_disabled_no_beta_header ... ok
[INFO] [stdout] test claude::tests::debug_includes_model_and_max_tokens ... ok
[INFO] [stdout] test claude::tests::debug_redacts_api_key ... ok
[INFO] [stdout] test claude::tests::extended_context_disabled_returns_200k_context_window ... ok
[INFO] [stdout] test claude::tests::debug_tool_request_caps_block_cache_controls_at_four ... ok
[INFO] [stdout] test claude::tests::debug_vision_request_caps_total_cache_controls_at_four ... 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::extended_context_enabled_haiku_returns_200k_context_window ... 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_with_interleaved_thinking_combines_headers ... ok
[INFO] [stdout] test claude::tests::extended_context_enabled_returns_1m_context_window ... ok
[INFO] [stdout] test claude::tests::get_or_build_api_tools_only_last_tool_has_cache_control ... ok
[INFO] [stdout] test claude::tests::get_or_build_api_tools_single_tool_has_cache_control ... ok
[INFO] [stdout] test claude::tests::context_window_known_models ... 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::messages_429_overload_propagates ... ok
[INFO] [stdout] test claude::tests::messages_529_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::split_messages_extracts_system ... ok
[INFO] [stdout] test claude::tests::split_messages_interleaved_system ... 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_only_assistant ... ok
[INFO] [stdout] test claude::tests::split_messages_only_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_downgrades_orphaned_tool_result ... ok
[INFO] [stdout] test claude::tests::split_structured_system_not_in_visible ... 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_system_into_blocks_propagates_one_hour_ttl ... 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_caches_long_text ... ok
[INFO] [stdout] test claude::tests::split_system_no_markers_opus_skips_short_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_partial_markers ... ok
[INFO] [stdout] test claude::tests::split_system_with_all_markers ... ok
[INFO] [stdout] test claude::tests::name_returns_claude ... ok
[INFO] [stdout] test claude::tests::output_schema_forwarding_disabled_no_hint ... ok
[INFO] [stdout] test claude::tests::new_stores_fields_correctly ... ok
[INFO] [stdout] test claude::tests::output_schema_forwarding_enabled_appends_hint ... ok
[INFO] [stdout] test claude::tests::output_schema_forwarding_truncates_large_schema ... ok
[INFO] [stdout] test claude::tests::server_compaction_disabled_by_default ... ok
[INFO] [stdout] test claude::tests::server_compaction_not_rejected_by_default ... 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::thinking_capability_opus_4_6_prefers_effort ... ok
[INFO] [stdout] test claude::tests::thinking_capability_sonnet_4_6_needs_interleaved_beta ... ok
[INFO] [stdout] test claude::tests::thinking_capability_sonnet_4_6_no_prefers_effort ... 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_deserializes ... ok
[INFO] [stdout] test claude::tests::thinking_config_extended_serializes ... ok
[INFO] [stdout] test claude::tests::thinking_content_block_roundtrip ... 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_empty_when_none ... ok
[INFO] [stdout] test claude::tests::tool_cache_key_sensitive_to_description ... ok
[INFO] [stdout] test claude::tests::tool_cache_key_sensitive_to_output_schema ... ok
[INFO] [stdout] test claude::tests::take_compaction_summary_returns_and_clears ... ok
[INFO] [stdout] test claude::tests::test_claude_default_output_schema_hint_bytes_is_1024 ... ok
[INFO] [stdout] test claude::tests::test_claude_stub_used_when_schema_exceeds_1024_bytes ... ok
[INFO] [stdout] test claude::tests::tool_cache_hits_on_same_tools ... ok
[INFO] [stdout] test claude::tests::tool_cache_control_uses_typed_path_for_one_hour ... ok
[INFO] [stdout] test claude::tests::tool_cache_invalidates_on_schema_change ... ok
[INFO] [stdout] test claude::tests::tool_cache_invalidates_when_tools_change ... ok
[INFO] [stdout] test claude::tests::tool_cache_returns_same_values_on_second_call ... 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_maximum_budget ... ok
[INFO] [stdout] test claude::tests::with_thinking_accepts_minimum_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_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 claude::tests::with_thinking_rejects_budget_not_less_than_max_tokens ... ok
[INFO] [stdout] test compatible::tests::debug_contains_provider_name ... ok
[INFO] [stdout] test compatible::tests::embed_without_model_errors ... 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 ema::tests::record_updates_latency_ema ... 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 embed::tests::truncated_result_has_correct_structure ... ok
[INFO] [stdout] test error::tests::api_error_display ... 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::body_is_context_length_error_detects_known_messages ... ok
[INFO] [stdout] test error::tests::body_is_context_length_error_ignores_unrelated_messages ... ok
[INFO] [stdout] test error::tests::context_length_exceeded_display ... 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::other_error_is_not_beta_header_rejected ... ok
[INFO] [stdout] test error::tests::other_errors_are_not_invalid_input ... ok
[INFO] [stdout] test error::tests::other_variant_is_not_context_length_error ... ok
[INFO] [stdout] test error::tests::unrelated_error_is_not_detected ... ok
[INFO] [stdout] test extractor::tests::extract_error_propagation ... ok
[INFO] [stdout] test extractor::tests::extract_with_preamble ... ok
[INFO] [stdout] test extractor::tests::extract_without_preamble ... 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 compatible::tests::last_usage_initially_none ... ok
[INFO] [stdout] test compatible::tests::name_returns_custom_provider_name ... ok
[INFO] [stdout] test compatible::tests::supports_embeddings_with_model ... ok
[INFO] [stdout] test claude::tests::with_thinking_rejects_budget_below_minimum ... ok
[INFO] [stdout] test compatible::tests::supports_embeddings_without_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 compatible::tests::with_output_schema_forwarding_does_not_panic ... ok
[INFO] [stdout] test gemini::tests::gap3_successful_response_populates_last_usage ... ok
[INFO] [stdout] test gemini::tests::gemini_chat_stream_error_on_failed_request ... ok
[INFO] [stdout] test gemini::tests::gemini_chat_stream_yields_chunks_from_sse ... ok
[INFO] [stdout] test gemini::tests::gemini_context_window_1_5_pro ... ok
[INFO] [stdout] test gemini::tests::gemini_clone_resets_usage ... 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_429 ... ok
[INFO] [stdout] test gemini::tests::gemini_embed_api_error_403 ... 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_success ... ok
[INFO] [stdout] test gemini::tests::gemini_embed_returns_unsupported ... ok
[INFO] [stdout] test gemini::tests::gemini_embed_no_model_returns_unsupported ... ok
[INFO] [stdout] test gemini::tests::gemini_embed_malformed_response ... ok
[INFO] [stdout] test gemini::tests::gemini_list_models_non_empty ... ok
[INFO] [stdout] test gemini::tests::gemini_name ... ok
[INFO] [stdout] test gemini::tests::gemini_list_models_excludes_embedding_model_when_not_configured ... 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_list_models_includes_embedding_model_when_configured ... ok
[INFO] [stdout] test gemini::tests::gemini_supports_embeddings_false ... ok
[INFO] [stdout] test gemini::tests::gemini_supports_embeddings_with_model ... 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::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_supports_embeddings_without_model ... ok
[INFO] [stdout] test gemini::tests::gemini_supports_streaming_true ... 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::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_include_thoughts_in_gen_config ... ok
[INFO] [stdout] test gemini::tests::provider_debug_includes_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_clone_preserves_thinking_level ... ok
[INFO] [stdout] test gemini::tests::provider_with_thinking_budget_included_in_gen_config ... 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_first_message_guard_prepends_user ... 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_inline_refs_deep_plain_nesting ... ok
[INFO] [stdout] test gemini::tests::test_inline_refs_depth_limit ... 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_inline_refs_unknown_ref_fallback ... ok
[INFO] [stdout] test gemini::tests::test_is_empty_object_schema ... ok
[INFO] [stdout] test gemini::tests::test_mixed_text_and_image_parts ... ok
[INFO] [stdout] test gemini::tests::test_mixed_text_and_tool_use ... 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_normalize_schema_allowlist ... ok
[INFO] [stdout] test gemini::tests::test_normalize_schema_anyof_complex_dropped ... 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_multiple_function_calls ... ok
[INFO] [stdout] test gemini::tests::test_parse_null_args_uses_empty_object ... 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::provider_with_thinking_level_included_in_gen_config ... ok
[INFO] [stdout] test gemini::tests::provider_without_thinking_no_thinking_config ... 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::test_uppercase_types_null ... ok
[INFO] [stdout] test gemini::tests::test_uppercase_types_number ... 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::test_chat_with_tools_empty_tools_falls_back_to_chat ... 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::test_chat_with_tools_returns_tool_use ... ok
[INFO] [stdout] test gemini::tests::thinking_level_serializes_lowercase ... ok
[INFO] [stdout] test model_cache::tests::cache_save_uses_json_tmp_atomic_suffix ... ok
[INFO] [stdout] test model_cache::tests::invalidate_removes_file ... ok
[INFO] [stdout] test model_cache::tests::fresh_cache_is_not_stale ... 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 gemini::tests::test_debug_request_json_no_tools_no_tools_field ... ok
[INFO] [stdout] test model_cache::tests::json_round_trip ... 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::clone_resets_last_usage ... ok
[INFO] [stdout] test ollama::tests::chat_with_unreachable_endpoint_errors ... ok
[INFO] [stdout] test ollama::tests::context_length_error_keywords_are_detected ... 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_roles ... ok
[INFO] [stdout] test ollama::tests::convert_message_preserves_content ... 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::last_usage_initially_none ... ok
[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 gemini::tests::test_debug_request_json_with_tools_includes_function_declarations ... ok
[INFO] [stdout] test ollama::tests::new_stores_model_and_embedding_model ... ok
[INFO] [stdout] test ollama::tests::name_returns_ollama ... 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::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_invalid_port_falls_back ... ok
[INFO] [stdout] test ollama::tests::parse_host_port_custom_port ... 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 gemini::tests::test_request_no_system_instruction_when_empty ... ok
[INFO] [stdout] test ollama::tests::parse_host_port_trailing_slash ... ok
[INFO] [stdout] test ollama::tests::parse_host_port_strips_v1_trailing_slash ... ok
[INFO] [stdout] test ollama::tests::parse_host_port_without_port ... ok
[INFO] [stdout] test ollama::tests::parse_host_port_with_port ... ok
[INFO] [stdout] test ollama::tests::parse_num_ctx_from_parameters ... ok
[INFO] [stdout] test ollama::tests::supports_streaming_returns_true ... ok
[INFO] [stdout] test ollama::tests::supports_embeddings_returns_true ... 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 openai::tests::api_message_serializes ... ok
[INFO] [stdout] test ollama::tests::warmup_with_unreachable_endpoint_errors ... ok
[INFO] [stdout] test ollama::tests::with_vision_model_sets_field ... ok
[INFO] [stdout] test gemini::tests::test_request_serialization ... ok
[INFO] [stdout] test openai::tests::cache_slug_custom_host ... ok
[INFO] [stdout] test openai::tests::cache_slug_openai ... ok
[INFO] [stdout] test openai::tests::chat_401_auth_error_propagates ... ok
[INFO] [stdout] test openai::tests::chat_request_serialization ... ok
[INFO] [stdout] test openai::tests::base_url_strips_trailing_slash ... 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_localhost_with_port ... ok
[INFO] [stdout] test gemini::tests::thinking_budget_invalid_values_rejected ... ok
[INFO] [stdout] test openai::tests::chat_500_server_error_propagates ... ok
[INFO] [stdout] test openai::tests::clone_preserves_fields ... 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::chat_with_tools_handles_null_assistant_content ... ok
[INFO] [stdout] test gemini::tests::thinking_budget_edge_values ... ok
[INFO] [stdout] test openai::tests::clone_resets_last_cache ... 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::context_window_gpt35 ... ok
[INFO] [stdout] test openai::tests::clone_resets_last_usage ... 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_gpt5 ... ok
[INFO] [stdout] test openai::tests::embedding_request_serialization ... ok
[INFO] [stdout] test openai::tests::embedding_response_empty_data ... ok
[INFO] [stdout] test openai::tests::has_image_parts_detects_image ... ok
[INFO] [stdout] test openai::tests::inline_refs_openai_resolves_defs ... 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::context_window_unknown ... ok
[INFO] [stdout] test openai::tests::debug_redacts_api_key ... 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::last_cache_usage_initially_none ... ok
[INFO] [stdout] test openai::tests::embed_batch_no_embedding_model_returns_error ... ok
[INFO] [stdout] test openai::tests::embed_without_model_returns_error ... 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::output_schema_forwarding_disabled_no_hint_openai ... ok
[INFO] [stdout] test openai::tests::output_schema_forwarding_enabled_appends_hint_openai ... ok
[INFO] [stdout] test openai::tests::output_schema_forwarding_none_schema_unchanged_description_openai ... ok
[INFO] [stdout] test openai::tests::output_schema_forwarding_truncates_large_schema_openai ... ok
[INFO] [stdout] test openai::tests::parse_chat_response ... ok
[INFO] [stdout] test openai::tests::parse_chat_response_with_usage ... ok
[INFO] [stdout] test openai::tests::parse_chat_response_without_usage ... 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_tool_chat_response_with_null_content_and_tool_calls ... ok
[INFO] [stdout] test openai::tests::parse_tool_chat_response_with_tool_calls ... ok
[INFO] [stdout] test openai::tests::parse_usage_with_cached_tokens ... 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::embed_unreachable_endpoint_errors ... ok
[INFO] [stdout] test openai::tests::list_models_remote_http_error_propagates ... ok
[INFO] [stdout] test openai::tests::store_and_retrieve_cache_usage ... ok
[INFO] [stdout] test openai::tests::name_returns_openai ... ok
[INFO] [stdout] test openai::tests::new_stores_fields ... ok
[INFO] [stdout] test openai::tests::new_with_reasoning_effort ... ok
[INFO] [stdout] test openai::tests::store_cache_usage_stores_token_counts ... ok
[INFO] [stdout] test openai::tests::test_openai_default_output_schema_hint_bytes_is_1024 ... ok
[INFO] [stdout] test openai::tests::test_openai_stub_used_when_schema_exceeds_1024_bytes ... 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::stream_unreachable_endpoint_errors ... 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::store_cache_usage_zero_cached_tokens_not_stored ... 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_metadata_serde_default ... 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_serde_round_trip ... ok
[INFO] [stdout] test provider::tests::message_part_tool_result_is_error_default ... ok
[INFO] [stdout] test provider::tests::message_part_tool_result_serde_round_trip ... ok
[INFO] [stdout] test provider::tests::message_part_tool_use_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_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::rebuild_content_syncs_after_mutation ... ok
[INFO] [stdout] test provider::tests::role_deserialization ... ok
[INFO] [stdout] test provider::tests::short_type_name_extracts_last_segment ... ok
[INFO] [stdout] test provider::tests::role_serialization ... 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_outer_whitespace ... 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_with_plain_fence ... ok
[INFO] [stdout] test provider::tests::structured_parse_error_display ... ok
[INFO] [stdout] test provider::tests::stub_provider_embed_returns_vector ... ok
[INFO] [stdout] test provider::tests::summary_roundtrip ... 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 provider::tests::tool_output_compacted_at_serde_default ... ok
[INFO] [stdout] test provider_dyn::tests::chat_typed_dyn_happy_path ... ok
[INFO] [stdout] test provider_dyn::tests::chat_typed_dyn_strips_fences ... ok
[INFO] [stdout] test provider_dyn::tests::dyn_chat_works ... ok
[INFO] [stdout] test provider_dyn::tests::dyn_embed_works ... ok
[INFO] [stdout] test provider_dyn::tests::dyn_sync_methods_forward_correctly ... ok
[INFO] [stdout] test retry::tests::retry_delay_exponential_backoff ... 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 openai::tests::supports_embeddings_without_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 openai::tests::supports_tool_use_returns_true ... ok
[INFO] [stdout] test openai::tests::supports_streaming_returns_true ... ok
[INFO] [stdout] test router::aware::tests::router_aware_noop_on_mock_record_quality_outcome ... ok
[INFO] [stdout] test router::aware::tests::router_aware_noop_on_mock_set_memory_confidence ... ok
[INFO] [stdout] test router::aware::tests::router_aware_noop_on_ollama_set_memory_confidence ... 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 router::bandit::tests::save_and_load_roundtrip ... ok
[INFO] [stdout] test openai::tests::with_generation_overrides_stores_overrides ... ok
[INFO] [stdout] test router::bandit::tests::select_after_warmup_returns_provider ... 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_during_warmup ... ok
[INFO] [stdout] test router::bandit::tests::select_returns_none_when_all_filtered ... ok
[INFO] [stdout] test router::bandit::tests::select_zero_providers_returns_none ... 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_single_provider_returns_it ... ok
[INFO] [stdout] test router::bandit::tests::solve_singular_returns_none ... ok
[INFO] [stdout] test router::bandit::tests::stats_returns_sorted_by_name ... ok
[INFO] [stdout] test router::bandit::tests::ucb_score_fresh_arm_equals_alpha_times_norm ... ok
[INFO] [stdout] test router::bandit::tests::select_converges_to_best_arm ... 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::update_increments_total_updates ... ok
[INFO] [stdout] test router::bandit::tests::update_modifies_a_and_b ... 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::cascade_state_window_evicts_old_scores ... 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::cascade::tests::highly_repetitive_response_scores_low ... ok
[INFO] [stdout] test router::cascade::tests::normal_response_scores_high ... ok
[INFO] [stdout] test router::cascade::tests::parse_judge_score_decimal ... ok
[INFO] [stdout] test router::cascade::tests::parse_judge_score_garbage_returns_none ... ok
[INFO] [stdout] test router::cascade::tests::parse_judge_score_integer ... ok
[INFO] [stdout] test router::cascade::tests::parse_judge_score_with_surrounding_text ... 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::heuristic_score_never_panics_on_unicode ... ok
[INFO] [stdout] test router::cascade::tests::repetition_ratio_full_repetition ... ok
[INFO] [stdout] test router::cascade::tests::repetition_ratio_no_repetition ... ok
[INFO] [stdout] test router::cascade::tests::repetition_ratio_pinned_input ... ok
[INFO] [stdout] test router::cascade::tests::very_short_response_scores_low ... ok
[INFO] [stdout] test router::coe::tests::decide_escalates_inter ... ok
[INFO] [stdout] test router::coe::tests::decide_keeps_primary_when_below_thresholds ... ok
[INFO] [stdout] test router::coe::tests::decide_escalates_intra ... ok
[INFO] [stdout] test router::coe::tests::run_coe_escalates_intra_when_entropy_high ... ok
[INFO] [stdout] test router::coe::tests::run_coe_fallback_on_secondary_failure ... ok
[INFO] [stdout] test router::coe::tests::run_coe_keeps_primary_when_shadow_disabled ... ok
[INFO] [stdout] test router::coe::tests::should_shadow_returns_false_below_borderline ... ok
[INFO] [stdout] test router::coe::tests::should_shadow_returns_true_when_above_threshold ... 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_in_range ... ok
[INFO] [stdout] test router::reputation::tests::ema_reputation_factor_exact_value ... ok
[INFO] [stdout] test router::reputation::tests::empty_provider_list_does_not_panic ... 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_missing_file_returns_default ... ok
[INFO] [stdout] test router::reputation::tests::load_corrupt_file_returns_default ... 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::load_sanitizes_nan_and_inf_values ... ok
[INFO] [stdout] test router::reputation::tests::prune_removes_stale_entries ... ok
[INFO] [stdout] test router::reputation::tests::prune_with_empty_known_removes_all ... ok
[INFO] [stdout] test router::reputation::tests::record_failure_increments_beta ... 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::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::save_leaves_no_tmp_file ... ok
[INFO] [stdout] test router::reputation::tests::shift_thompson_priors_shifts_alpha_for_good_provider ... 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_zero_weight_returns_original ... ok
[INFO] [stdout] test router::reputation::tests::shift_thompson_priors_shifts_beta_for_bad_provider ... ok
[INFO] [stdout] test router::reputation::tests::stats_returns_sorted_entries ... ok
[INFO] [stdout] test router::tests::arc_providers_clone_shares_allocation ... 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::cascade_all_providers_fail_returns_no_providers ... 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_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_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_escalations_exhausted_returns_best_seen_not_current ... ok
[INFO] [stdout] test router::tests::cascade_ordered_providers_preserves_chain_order ... ok
[INFO] [stdout] test router::tests::cascade_max_escalations_budget_exhausted_returns_last_attempted ... ok
[INFO] [stdout] test router::tests::cascade_strategy_is_set ... ok
[INFO] [stdout] test router::tests::cascade_stream_budget_returns_best_seen ... ok
[INFO] [stdout] test router::tests::cascade_stream_all_fail_returns_error ... ok
[INFO] [stdout] test router::tests::cascade_returns_best_seen_when_all_fail_after_good_response ... ok
[INFO] [stdout] test router::tests::cascade_stream_budget_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_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::cascade_token_budget_stops_escalation ... ok
[INFO] [stdout] test router::tests::cascade_stream_last_fails_returns_best_seen ... ok
[INFO] [stdout] test router::tests::cascade_stream_good_quality_no_escalation ... ok
[INFO] [stdout] test router::tests::chat_with_tools_invalid_input_does_not_fall_through_to_second_provider ... ok
[INFO] [stdout] test router::tests::clone_preserves_providers ... 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 retry::tests::send_with_retry_exhausts_retries_returns_rate_limited ... ok
[INFO] [stdout] test router::tests::cost_tiers_empty_router_does_not_panic ... ok
[INFO] [stdout] test router::tests::cost_tiers_empty_vec_preserves_chain_order ... ok
[INFO] [stdout] test router::tests::concurrent_record_outcome_does_not_deadlock ... ok
[INFO] [stdout] test router::tests::cost_tiers_none_preserves_chain_order ... ok
[INFO] [stdout] test router::tests::cost_tiers_unknown_name_ignored ... ok
[INFO] [stdout] test router::tests::cost_tiers_reorders_providers_at_construction ... ok
[INFO] [stdout] test router::tests::chat_with_tools_invalid_input_breaks_loop_and_returns_invalid_input ... 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_succeeds_after_one_429 ... ok
[INFO] [stdout] test router::aware::tests::router_aware_noop_on_claude_record_quality_outcome ... ok
[INFO] [stdout] test router::tests::embed_skips_non_embedding_providers_and_falls_through ... ok
[INFO] [stdout] test retry::tests::send_with_retry_success_on_first_attempt ... 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_context_window_none ... ok
[INFO] [stdout] test router::tests::empty_router_chat_with_tools_returns_no_providers ... ok
[INFO] [stdout] test router::tests::empty_router_name ... ok
[INFO] [stdout] test router::tests::empty_router_embed_returns_no_providers ... ok
[INFO] [stdout] test router::tests::empty_router_supports_nothing ... ok
[INFO] [stdout] test router::tests::evaluate_heuristic_empty_should_escalate_above_threshold ... ok
[INFO] [stdout] test router::tests::last_cache_usage_returns_none ... ok
[INFO] [stdout] test router::tests::evaluate_heuristic_good_response_does_not_escalate ... 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_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::embed_semaphore_limits_concurrency ... 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::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::router_falls_back_on_unreachable ... ok
[INFO] [stdout] test router::tests::with_embed_concurrency_positive_creates_semaphore ... ok
[INFO] [stdout] test router::tests::turn_embed_cache_hit_increments_counter ... 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::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::rate_limited_error_increments_beta_by_two ... ok
[INFO] [stdout] test router::thompson::tests::high_alpha_provider_selected_disproportionately ... ok
[INFO] [stdout] test router::thompson::tests::save_and_load_roundtrip ... 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::thompson::tests::save_leaves_no_tmp_file ... 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_skips_when_context_window_none ... ok
[INFO] [stdout] test router::triage::tests::escalate_no_op_within_80_percent ... ok
[INFO] [stdout] test router::triage::tests::last_usage_none_before_any_call ... ok
[INFO] [stdout] test router::triage::tests::metrics_snapshot_default ... ok
[INFO] [stdout] test router::triage::tests::escalate_triggers_above_80_percent ... 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::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 sse::tests::claude_compaction_delta_does_not_emit_content_chunk ... 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_parse_unknown_event_skipped ... ok
[INFO] [stdout] test sse::tests::claude_signature_delta_not_emitted_to_stream ... ok
[INFO] [stdout] test sse::tests::claude_stop_without_compaction_buf_returns_none ... 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::claude_tool_sse_input_json_delta_emitted ... ok
[INFO] [stdout] test sse::tests::claude_tool_sse_thinking_block_done_on_stop ... ok
[INFO] [stdout] test sse::tests::claude_tool_sse_tool_call_complete_on_stop ... 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::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_text_only_unaffected ... ok
[INFO] [stdout] test sse::tests::gemini_parse_thinking_chunk ... 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 router::tests::spawn_asi_update_with_precomputed_skips_embed ... ok
[INFO] [stdout] test testing::tests::claude_messages_response_shape ... 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::openai_chat_response_is_200 ... ok
[INFO] [stdout] test testing::tests::openai_sse_contains_done_sentinel ... 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] [stdout] 
[INFO] [stdout] test result: ok. 855 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 8.79s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/gonka_live.rs (/opt/rustwide/target/debug/deps/gonka_live-721ac8fab64be544)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests zeph_llm
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test src/claude/mod.rs - claude (line 30) - compile ... ok
[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/lib.rs - (line 57) - compile ... ok
[INFO] [stdout] test src/provider.rs - provider::LlmProvider (line 688) - compile ... ok
[INFO] [stdout] test src/router/aware.rs - router::aware (line 19) - compile ... ok
[INFO] [stdout] test src/provider_dyn.rs - provider_dyn (line 28) - compile ... ok
[INFO] [stdout] test src/provider_dyn.rs - provider_dyn::chat_typed_dyn (line 290) - compile ... ok
[INFO] [stdout] test src/provider.rs - provider::ChatExtras::with_entropy (line 94) ... ok
[INFO] [stdout] test src/provider.rs - provider::Message (line 535) ... ok
[INFO] [stdout] test src/provider.rs - provider::short_type_name (line 58) ... ok
[INFO] [stdout] test src/provider.rs - provider::MessageVisibility (line 377) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 1.05s; merged doctests compilation took 1.05s
[INFO] running `Command { std: "docker" "inspect" "c5ffc118d58f784d74ebbb7b8af71b1ed139ce1e796b2992f8c94cb66df63694", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c5ffc118d58f784d74ebbb7b8af71b1ed139ce1e796b2992f8c94cb66df63694", kill_on_drop: false }`
[INFO] [stdout] c5ffc118d58f784d74ebbb7b8af71b1ed139ce1e796b2992f8c94cb66df63694
