[INFO] cloning repository https://github.com/alexvas/inf-splitter
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/alexvas/inf-splitter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falexvas%2Finf-splitter", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falexvas%2Finf-splitter'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7767554812a4660e9e61f27d3e623c34477909b4
[INFO] testing alexvas/inf-splitter against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falexvas%2Finf-splitter" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/alexvas/inf-splitter
[INFO] finished tweaking git repo https://github.com/alexvas/inf-splitter
[INFO] tweaked toml for git repo https://github.com/alexvas/inf-splitter written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/alexvas/inf-splitter on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/alexvas/inf-splitter 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" "+1.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744
[INFO] running `Command { std: "docker" "start" "43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling bytes v1.12.0
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling log v0.4.32
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling alloc-no-stdlib v2.0.4
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling alloc-stdlib v0.2.2
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling brotli-decompressor v5.0.0
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling time-core v0.1.9
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling crc-catalog v2.5.0
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling time-macros v0.2.29
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling compression-core v0.4.32
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling brotli v8.0.2
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling socket2 v0.6.4
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling cc v1.2.65
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling filetime v0.2.29
[INFO] [stderr]    Compiling zip v2.4.2
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling bumpalo v3.20.3
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling bit-vec v0.7.0
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling uuid v1.23.3
[INFO] [stderr]    Compiling filetime_creation v0.2.0
[INFO] [stderr]    Compiling pbkdf2 v0.12.2
[INFO] [stderr]    Compiling time v0.3.49
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling bit-set v0.6.0
[INFO] [stderr]    Compiling zopfli v0.8.3
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling lzma-rs v0.3.0
[INFO] [stderr]    Compiling lzma-rust v0.1.7
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling libbz2-rs-sys v0.2.5
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling constant_time_eq v0.3.1
[INFO] [stderr]    Compiling nt-time v0.8.1
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling deflate64 v0.1.12
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling matchit v0.8.4
[INFO] [stderr]    Compiling xxhash-rust v0.8.15
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling bzip2-sys v0.1.13+1.0.8
[INFO] [stderr]    Compiling lzma-sys v0.1.20
[INFO] [stderr]    Compiling bzip2 v0.6.1
[INFO] [stderr]    Compiling sevenz-rust v0.6.1
[INFO] [stderr]    Compiling xz2 v0.1.7
[INFO] [stderr]    Compiling bzip2 v0.5.2
[INFO] [stderr]    Compiling inf-splitter v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling zeroize_derive v1.5.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling rustls-native-certs v0.8.4
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling zstd v0.13.3
[INFO] [stderr]    Compiling compression-codecs v0.4.38
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling anyllm_translate v0.9.9
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling async-compression v0.4.42
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 43s
[INFO] running `Command { std: "docker" "inspect" "43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling inf-splitter v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: function `post_openai_with_session` is never used
[INFO] [stdout]    --> tests/e2e.rs:441:10
[INFO] [stdout]     |
[INFO] [stdout] 441 | async fn post_openai_with_session(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_upstream_capture_all` is never used
[INFO] [stdout]   --> tests/common/mod.rs:99:14
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub async fn spawn_upstream_capture_all(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_router_with_dump` is never used
[INFO] [stdout]    --> tests/common/mod.rs:135:14
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub async fn spawn_router_with_dump(config_toml: &str) -> SocketAddr {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_router_with_diagnostics` is never used
[INFO] [stdout]    --> tests/common/mod.rs:151:14
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub async fn spawn_router_with_diagnostics(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_error_upstream` is never used
[INFO] [stdout]    --> tests/common/mod.rs:166:14
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub async fn spawn_error_upstream(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_delayed_upstream` is never used
[INFO] [stdout]    --> tests/common/mod.rs:182:14
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub async fn spawn_delayed_upstream(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poll_diagnostics_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:225:14
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub async fn poll_diagnostics_file(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_for_file` is never used
[INFO] [stdout]    --> tests/common/mod.rs:255:14
[INFO] [stdout]     |
[INFO] [stdout] 255 | pub async fn wait_for_file(path: &std::path::Path) -> Vec<String> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file_no_remove` is never used
[INFO] [stdout]    --> tests/common/mod.rs:266:14
[INFO] [stdout]     |
[INFO] [stdout] 266 | pub async fn read_file_no_remove(path: &std::path::Path) -> Vec<String> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_for_ingress_dump` is never used
[INFO] [stdout]    --> tests/common/mod.rs:289:14
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub async fn wait_for_ingress_dump(path: &std::path::Path) -> Vec<String> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_for_egress_dump` is never used
[INFO] [stdout]    --> tests/common/mod.rs:295:14
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub async fn wait_for_egress_dump(path: &std::path::Path) -> Vec<String> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_for_egress_response_dump` is never used
[INFO] [stdout]    --> tests/common/mod.rs:302:14
[INFO] [stdout]     |
[INFO] [stdout] 302 | pub async fn wait_for_egress_response_dump(path: &std::path::Path) -> Vec<String> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_for_stage` is never used
[INFO] [stdout]    --> tests/common/mod.rs:306:10
[INFO] [stdout]     |
[INFO] [stdout] 306 | async fn wait_for_stage(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_sse_upstream_with_headers` is never used
[INFO] [stdout]    --> tests/common/mod.rs:336:14
[INFO] [stdout]     |
[INFO] [stdout] 336 | pub async fn spawn_sse_upstream_with_headers(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stdout]    --> tests/e2e.rs:719:5
[INFO] [stdout]     |
[INFO] [stdout] 719 |     drop(proxy_addr1);
[INFO] [stdout]     |     ^^^^^-----------^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          argument has type `std::net::SocketAddr`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_copy_types)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 719 -     drop(proxy_addr1);
[INFO] [stdout] 719 +     let _ = proxy_addr1;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_upstream_capture_all` is never used
[INFO] [stdout]   --> tests/common/mod.rs:99:14
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub async fn spawn_upstream_capture_all(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base`
[INFO] [stdout]     --> src/interactions_handler.rs:5774:13
[INFO] [stdout]      |
[INFO] [stdout] 5774 |         let base = format!("http://{addr}/v1/interactions");
[INFO] [stdout]      |             ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Captures` is never constructed
[INFO] [stdout]     --> src/interactions_handler.rs:5257:16
[INFO] [stdout]      |
[INFO] [stdout] 5257 |         struct Captures(Vec<serde_json::Value>);
[INFO] [stdout]      |                ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 31.88s
[INFO] running `Command { std: "docker" "inspect" "43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: unused variable: `base`
[INFO] [stderr]     --> src/interactions_handler.rs:5774:13
[INFO] [stderr]      |
[INFO] [stderr] 5774 |         let base = format!("http://{addr}/v1/interactions");
[INFO] [stderr]      |             ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Captures` is never constructed
[INFO] [stderr]     --> src/interactions_handler.rs:5257:16
[INFO] [stderr]      |
[INFO] [stderr] 5257 |         struct Captures(Vec<serde_json::Value>);
[INFO] [stderr]      |                ^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `inf-splitter` (lib test) generated 2 warnings (run `cargo fix --lib -p inf-splitter --tests` to apply 1 suggestion)
[INFO] [stderr] warning: function `spawn_upstream_capture_all` is never used
[INFO] [stderr]   --> tests/common/mod.rs:99:14
[INFO] [stderr]    |
[INFO] [stderr] 99 | pub async fn spawn_upstream_capture_all(
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `post_openai_with_session` is never used
[INFO] [stderr]    --> tests/e2e.rs:441:10
[INFO] [stderr]     |
[INFO] [stderr] 441 | async fn post_openai_with_session(
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `spawn_upstream_capture_all` is never used
[INFO] [stderr]   --> tests/common/mod.rs:99:14
[INFO] [stderr]    |
[INFO] [stderr] 99 | pub async fn spawn_upstream_capture_all(
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `spawn_router_with_dump` is never used
[INFO] [stderr]    --> tests/common/mod.rs:135:14
[INFO] [stderr]     |
[INFO] [stderr] 135 | pub async fn spawn_router_with_dump(config_toml: &str) -> SocketAddr {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `spawn_router_with_diagnostics` is never used
[INFO] [stderr]    --> tests/common/mod.rs:151:14
[INFO] [stderr]     |
[INFO] [stderr] 151 | pub async fn spawn_router_with_diagnostics(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `spawn_error_upstream` is never used
[INFO] [stderr]    --> tests/common/mod.rs:166:14
[INFO] [stderr]     |
[INFO] [stderr] 166 | pub async fn spawn_error_upstream(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `spawn_delayed_upstream` is never used
[INFO] [stderr]    --> tests/common/mod.rs:182:14
[INFO] [stderr]     |
[INFO] [stderr] 182 | pub async fn spawn_delayed_upstream(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `poll_diagnostics_file` is never used
[INFO] [stderr]    --> tests/common/mod.rs:225:14
[INFO] [stderr]     |
[INFO] [stderr] 225 | pub async fn poll_diagnostics_file(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `wait_for_file` is never used
[INFO] [stderr]    --> tests/common/mod.rs:255:14
[INFO] [stderr]     |
[INFO] [stderr] 255 | pub async fn wait_for_file(path: &std::path::Path) -> Vec<String> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_file_no_remove` is never used
[INFO] [stderr]    --> tests/common/mod.rs:266:14
[INFO] [stderr]     |
[INFO] [stderr] 266 | pub async fn read_file_no_remove(path: &std::path::Path) -> Vec<String> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `wait_for_ingress_dump` is never used
[INFO] [stderr]    --> tests/common/mod.rs:289:14
[INFO] [stderr]     |
[INFO] [stderr] 289 | pub async fn wait_for_ingress_dump(path: &std::path::Path) -> Vec<String> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `wait_for_egress_dump` is never used
[INFO] [stderr]    --> tests/common/mod.rs:295:14
[INFO] [stderr]     |
[INFO] [stderr] 295 | pub async fn wait_for_egress_dump(path: &std::path::Path) -> Vec<String> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `wait_for_egress_response_dump` is never used
[INFO] [stderr]    --> tests/common/mod.rs:302:14
[INFO] [stderr]     |
[INFO] [stderr] 302 | pub async fn wait_for_egress_response_dump(path: &std::path::Path) -> Vec<String> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `wait_for_stage` is never used
[INFO] [stderr]    --> tests/common/mod.rs:306:10
[INFO] [stderr]     |
[INFO] [stderr] 306 | async fn wait_for_stage(
[INFO] [stderr]     |          ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `spawn_sse_upstream_with_headers` is never used
[INFO] [stderr]    --> tests/common/mod.rs:336:14
[INFO] [stderr]     |
[INFO] [stderr] 336 | pub async fn spawn_sse_upstream_with_headers(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stderr]    --> tests/e2e.rs:719:5
[INFO] [stderr]     |
[INFO] [stderr] 719 |     drop(proxy_addr1);
[INFO] [stderr]     |     ^^^^^-----------^
[INFO] [stderr]     |          |
[INFO] [stderr]     |          argument has type `std::net::SocketAddr`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dropping_copy_types)]` on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the expression or result
[INFO] [stderr]     |
[INFO] [stderr] 719 -     drop(proxy_addr1);
[INFO] [stderr] 719 +     let _ = proxy_addr1;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: `inf-splitter` (test "protocol_conversion") generated 1 warning
[INFO] [stderr] warning: `inf-splitter` (test "e2e") generated 15 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.42s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/inf_splitter-4d2c200cf2de283a)
[INFO] [stdout] 
[INFO] [stdout] running 364 tests
[INFO] [stdout] test anthropic::tests::copy_response_headers_filters_to_whitelist ... ok
[INFO] [stdout] test anthropic::tests::copy_response_headers_maps_x_claude_code_session_id_to_x_request_id ... ok
[INFO] [stdout] test auth::tests::anthropic_maps_x_client_request_id_to_x_claude_code_session_id ... ok
[INFO] [stdout] test auth::tests::anthropic_passthrough_x_claude_code_session_id ... ok
[INFO] [stdout] test auth::tests::anthropic_maps_x_request_id_to_x_claude_code_session_id ... ok
[INFO] [stdout] test auth::tests::anthropic_x_claude_code_session_id_priority_over_x_request_id ... ok
[INFO] [stdout] test auth::tests::is_auth_header_detects_variants ... ok
[INFO] [stdout] test auth::tests::forward_request_headers_map_with_api_key ... ok
[INFO] [stdout] test auth::tests::openai_maps_x_request_id_to_x_client_request_id ... ok
[INFO] [stdout] test auth::tests::openai_maps_x_claude_code_session_id_to_x_client_request_id ... ok
[INFO] [stdout] test auth::tests::forward_request_headers_map_without_api_key ... ok
[INFO] [stdout] test auth::tests::openai_x_client_request_id_passthrough ... ok
[INFO] [stdout] test auth::tests::should_forward_excludes_hop_by_hop ... ok
[INFO] [stdout] test config::tests::cap_numeric_field_leaves_below_unchanged ... ok
[INFO] [stdout] test config::tests::cap_numeric_field_clamps_exceeding ... ok
[INFO] [stdout] test config::tests::cap_numeric_field_leaves_equal_unchanged ... ok
[INFO] [stdout] test config::tests::cap_numeric_field_sets_missing ... ok
[INFO] [stdout] test config::tests::drop_fields_for_model_flat ... ok
[INFO] [stdout] test config::tests::drop_fields_absent_defaults_to_empty_all ... ok
[INFO] [stdout] test config::tests::drop_fields_per_model_parses ... ok
[INFO] [stdout] test config::tests::drop_fields_all_key_is_valid_when_no_models_match ... ok
[INFO] [stdout] test config::tests::drop_fields_flat_list_parses ... ok
[INFO] [stdout] test config::tests::endpoint_interactions_with_proxy_and_limits ... ok
[INFO] [stdout] test config::tests::drop_fields_empty_list_is_noop ... ok
[INFO] [stdout] test config::tests::drop_fields_for_model_merges_all_and_specific ... ok
[INFO] [stdout] test config::tests::endpoint_interactions_parses ... ok
[INFO] [stdout] test config::tests::error_translation_status_only_parses ... ok
[INFO] [stdout] test config::tests::error_translation_multiple_rules_parses_in_order ... ok
[INFO] [stdout] test config::tests::error_translation_status_with_ingress_parses ... ok
[INFO] [stdout] test config::tests::error_translation_empty_list_is_noop ... ok
[INFO] [stdout] test config::tests::global_defaults_merge_with_per_provider_overrides ... ok
[INFO] [stdout] test config::tests::error_translation_absent_is_empty ... ok
[INFO] [stdout] test config::tests::interactions_session_store_default_none ... ok
[INFO] [stdout] test config::tests::drop_fields_per_model_all_only ... ok
[INFO] [stdout] test config::tests::interactions_session_store_custom ... ok
[INFO] [stdout] test config::tests::drop_fields_for_model_all_only_no_match ... ok
[INFO] [stdout] test config::tests::listen_via_env ... ok
[INFO] [stdout] test config::tests::load_config_allows_both_endpoints ... ok
[INFO] [stdout] test config::tests::parse_byte_size_accepts_g_suffix ... ok
[INFO] [stdout] test config::tests::parse_byte_size_accepts_k_and_m_suffixes ... ok
[INFO] [stdout] test config::tests::parse_byte_size_rejects_invalid_values ... ok
[INFO] [stdout] test config::tests::parse_duration_accepts_s_and_m_suffixes ... ok
[INFO] [stdout] test config::tests::load_config_with_timeout_and_limits ... ok
[INFO] [stdout] test config::tests::listen_via_config ... ok
[INFO] [stdout] test config::tests::parse_duration_rejects_invalid_values ... ok
[INFO] [stdout] test config::tests::rejects_drop_fields_unknown_model ... ok
[INFO] [stdout] test config::tests::rejects_error_translation_missing_status ... ok
[INFO] [stdout] test config::tests::rejects_error_translation_missing_egress ... ok
[INFO] [stdout] test config::tests::rejects_whitespace_model_name_in_list ... ok
[INFO] [stdout] test config::tests::rejects_empty_model_name_in_list ... ok
[INFO] [stdout] test config::tests::resolve_secret_literal ... ok
[INFO] [stdout] test config::tests::load_project_config_and_resolve_routes ... ok
[INFO] [stdout] test config::tests::rejects_unknown_key_in_defaults_section ... ok
[INFO] [stdout] test control::tests::extract_timestamp_from_constant ... ok
[INFO] [stdout] test config::tests::listen_config_overrides_env ... ok
[INFO] [stdout] test config::tests::resolve_secret_from_env ... ok
[INFO] [stdout] test config::tests::listen_defaults_to_localhost ... ok
[INFO] [stdout] test control::tests::extract_timestamp_at_end_of_message ... ok
[INFO] [stdout] test control::tests::scan_control_without_constants_configured_is_noop ... ok
[INFO] [stdout] test control::tests::scan_detects_clean_all_double ... ok
[INFO] [stdout] test control::tests::extract_timestamp_no_match ... ok
[INFO] [stdout] test control::tests::scan_detects_extend_lifetime_double ... ok
[INFO] [stdout] test control::tests::scan_no_control_messages_passes_through ... ok
[INFO] [stdout] test control::tests::scan_idempotent_skips_repeated_control ... ok
[INFO] [stdout] test diagnostics::tests::anthropic_messages_detail_image_and_tool_use ... ok
[INFO] [stdout] test control::tests::scan_single_clean_all_is_noop ... ok
[INFO] [stdout] test control::tests::scan_single_extend_lifetime_is_noop ... ok
[INFO] [stdout] test diagnostics::tests::abort_is_idempotent ... ok
[INFO] [stdout] test diagnostics::tests::abort_finalizes_guard_and_returns_app_error ... ok
[INFO] [stdout] test diagnostics::tests::civil_from_days_epoch ... ok
[INFO] [stdout] test diagnostics::tests::dump_body_from_bytes_non_utf8_base64 ... ok
[INFO] [stdout] test config::tests::load_config_rejects_invalid_timeout ... ok
[INFO] [stdout] test diagnostics::tests::anthropic_messages_detail_text_only ... ok
[INFO] [stdout] test diagnostics::tests::diagnostic_mode_default_is_off ... ok
[INFO] [stdout] test config::tests::load_config_rejects_no_endpoint ... ok
[INFO] [stdout] test diagnostics::tests::dump_body_from_bytes_utf8 ... ok
[INFO] [stdout] test diagnostics::tests::dump_event_base64_still_has_encoding_field ... ok
[INFO] [stdout] test diagnostics::tests::dump_event_utf8_plain_text_remains_string ... ok
[INFO] [stdout] test diagnostics::tests::dump_event_without_encoding_skips_field ... ok
[INFO] [stdout] test diagnostics::tests::dump_event_serializes_cleanly ... ok
[INFO] [stdout] test diagnostics::tests::dump_event_utf8_empty_remains_string ... ok
[INFO] [stdout] test diagnostics::tests::finish_with_upstream_error_dumps_response_and_finishes ... ok
[INFO] [stdout] test diagnostics::tests::is_sensitive_header_rejects_non_sensitive ... ok
[INFO] [stdout] test diagnostics::tests::finish_with_upstream_error_is_idempotent ... ok
[INFO] [stdout] test diagnostics::tests::dump_event_with_encoding_serializes ... ok
[INFO] [stdout] test diagnostics::tests::header_pairs_with_masking_preserves_non_sensitive ... ok
[INFO] [stdout] test diagnostics::tests::is_sensitive_header_detects_authorization ... ok
[INFO] [stdout] test diagnostics::tests::is_sensitive_header_detects_x_api_key ... ok
[INFO] [stdout] test diagnostics::tests::is_sensitive_header_detects_x_goog_api_key ... ok
[INFO] [stdout] test diagnostics::tests::header_pairs_with_masking_masks_sensitive_values ... ok
[INFO] [stdout] test diagnostics::tests::dump_event_utf8_valid_json_embedded_as_json ... ok
[INFO] [stdout] test diagnostics::tests::mask_header_values_masks_sensitive_in_vec ... ok
[INFO] [stdout] test diagnostics::tests::messages_detail_from_bytes_missing_field ... ok
[INFO] [stdout] test diagnostics::tests::messages_detail_from_bytes_anthropic_shape ... ok
[INFO] [stdout] test diagnostics::tests::messages_detail_from_bytes_non_utf8 ... ok
[INFO] [stdout] test diagnostics::tests::dump_body_from_bytes_truncates_large_non_utf8 ... ok
[INFO] [stdout] test diagnostics::tests::messages_detail_from_bytes_openai_shape ... ok
[INFO] [stdout] test diagnostics::tests::request_diagnostics_detail_setters_populate_fields ... ok
[INFO] [stdout] test diagnostics::tests::openai_messages_detail_with_tool_calls ... ok
[INFO] [stdout] test diagnostics::tests::request_diagnostics_drop_records_safety_net_stats ... ok
[INFO] [stdout] test diagnostics::tests::request_id_is_unique_and_monotonic ... ok
[INFO] [stdout] test diagnostics::tests::request_diagnostics_finish_is_idempotent ... ok
[INFO] [stdout] test interactions::tests::build_anthropic_request_basic ... ok
[INFO] [stdout] test interactions::tests::build_anthropic_first_includes_all_fields ... ok
[INFO] [stdout] test diagnostics::tests::openai_messages_detail_text_only ... ok
[INFO] [stdout] test interactions::tests::build_anthropic_followup_omits_first_only_fields ... ok
[INFO] [stdout] test interactions::tests::build_anthropic_request_with_tools ... ok
[INFO] [stdout] test interactions::tests::build_anthropic_with_previous_id ... ok
[INFO] [stdout] test diagnostics::tests::stats_event_serializes_cleanly ... ok
[INFO] [stdout] test interactions::tests::build_chunk_request_preserves_prev_id ... ok
[INFO] [stdout] test interactions::tests::build_chunk_request_stream_true ... ok
[INFO] [stdout] test interactions::tests::build_openai_request_basic ... ok
[INFO] [stdout] test interactions::tests::build_openai_request_with_tools ... ok
[INFO] [stdout] test interactions::tests::build_request_no_tools_field_when_none ... ok
[INFO] [stdout] test interactions::tests::control_stripped_before_hashing ... ok
[INFO] [stdout] test interactions::tests::extract_anthropic_content_mixed_text_and_tool_result ... ok
[INFO] [stdout] test interactions::tests::build_response_without_tool_calls_is_end_turn ... ok
[INFO] [stdout] test interactions::tests::extract_anthropic_content_tool_result_array ... ok
[INFO] [stdout] test interactions::tests::extract_anthropic_tools_none_when_no_tools ... ok
[INFO] [stdout] test interactions::tests::extract_openai_system_handles_array_content ... ok
[INFO] [stdout] test interactions::tests::extract_anthropic_content_tool_result_string ... ok
[INFO] [stdout] test interactions::tests::extract_text_from_interaction ... ok
[INFO] [stdout] test interactions::tests::extract_anthropic_tools_basic ... ok
[INFO] [stdout] test interactions::tests::build_response_with_function_call_anthropic ... ok
[INFO] [stdout] test interactions::tests::extract_openai_system_in_non_first_position ... ok
[INFO] [stdout] test interactions::tests::extract_openai_tools_none_when_no_tools ... ok
[INFO] [stdout] test interactions::tests::extract_openai_system_no_system_message_returns_none ... ok
[INFO] [stdout] test interactions::tests::extract_openai_tools_basic ... ok
[INFO] [stdout] test interactions::tests::extract_tool_calls_empty_for_completed ... ok
[INFO] [stdout] test interactions::tests::build_chunk_request_stream_false ... ok
[INFO] [stdout] test interactions::tests::build_openai_with_system_message ... ok
[INFO] [stdout] test interactions::tests::build_response_function_call_openai ... ok
[INFO] [stdout] test interactions::tests::extract_tool_calls_from_interaction ... ok
[INFO] [stdout] test interactions::tests::filter_harness_messages_anthropic_keeps_user_only ... ok
[INFO] [stdout] test interactions::tests::filter_harness_messages_openai_keeps_harness_roles ... ok
[INFO] [stdout] test interactions::tests::hash_harness_message_different_content_different_hash ... ok
[INFO] [stdout] test interactions::tests::hash_harness_message_includes_all_fields ... ok
[INFO] [stdout] test interactions::tests::hash_harness_message_is_deterministic ... ok
[INFO] [stdout] test interactions::tests::max_tokens_client_lower_than_route_client_wins ... ok
[INFO] [stdout] test interactions::tests::max_tokens_no_client_limit_route_used ... ok
[INFO] [stdout] test interactions::tests::max_tokens_no_route_limit_client_used ... ok
[INFO] [stdout] test interactions::tests::max_tokens_route_lower_than_client_route_caps ... ok
[INFO] [stdout] test interactions::tests::pack_all_items_fit_in_one_chunk ... ok
[INFO] [stdout] test interactions::tests::pack_chunk_body_includes_previous_interaction_id_overhead ... ok
[INFO] [stdout] test interactions::tests::pack_chunk_size_accounts_for_all_fields ... ok
[INFO] [stdout] test interactions::tests::pack_greedy_splits_at_limit ... ok
[INFO] [stdout] test interactions::tests::pack_greedy_each_chunk_maximally_full ... ok
[INFO] [stdout] test interactions::tests::pack_single_item_too_large_rejected ... ok
[INFO] [stdout] test interactions::tests::serialized_content_size_positive ... ok
[INFO] [stdout] test interactions::tests::split_content_empty ... ok
[INFO] [stdout] test interactions::tests::split_content_single_chunk ... ok
[INFO] [stdout] test interactions::tests::system_instruction_first_chunk_carries_tools_and_gen_config ... ok
[INFO] [stdout] test interactions::tests::system_instruction_hash_produces_same_hash_for_same_input ... ok
[INFO] [stdout] test interactions::tests::system_instruction_hash_uses_serde_json_serialization ... ok
[INFO] [stdout] test interactions::tests::system_instruction_split_parts_fit_under_limit ... ok
[INFO] [stdout] test interactions::tests::token_count_saturating_conversion_above_u32_max ... ok
[INFO] [stdout] test interactions::tests::token_count_within_range_passes_through ... ok
[INFO] [stdout] test interactions_handler::tests::all_chunks_under_limit ... ok
[INFO] [stdout] test interactions_handler::tests::buffered_no_content_pieces_with_id_substitution ... ok
[INFO] [stdout] test interactions_handler::tests::buffered_overflow_does_not_crash_on_substitute_and_translate ... ok
[INFO] [stdout] test interactions_handler::tests::buffered_single_piece_no_substitution_passes_through ... ok
[INFO] [stdout] test interactions_handler::tests::buffered_tool_call_openai ... ok
[INFO] [stdout] test interactions_handler::tests::buffered_tool_call_across_pieces ... ok
[INFO] [stdout] test interactions_handler::tests::build_interaction_url_no_query_params_unchanged ... ok
[INFO] [stdout] test interactions_handler::tests::buffered_two_pieces_anthropic_content_merged ... ok
[INFO] [stdout] test interactions_handler::tests::buffered_two_pieces_openai_content_merged ... ok
[INFO] [stdout] test interactions_handler::tests::buffered_three_pieces_ordered_output ... ok
[INFO] [stdout] test interactions_handler::tests::build_interaction_url_empty_id_reaches_list_endpoint ... ok
[INFO] [stdout] test interactions_handler::tests::build_interaction_url_preserves_bare_qmark_param ... ok
[INFO] [stdout] test interactions_handler::tests::build_interaction_url_preserves_existing_query_params ... ok
[INFO] [stdout] test interactions_handler::tests::build_interaction_url_preserves_multiple_query_params ... ok
[INFO] [stdout] test interactions_handler::tests::build_interaction_url_preserves_query_params_for_lifecycle_operations ... ok
[INFO] [stdout] test interactions_handler::tests::build_interaction_url_strips_empty_qmark ... ok
[INFO] [stdout] test interactions_handler::tests::build_interaction_url_strips_trailing_slash ... ok
[INFO] [stdout] test interactions_handler::tests::build_interactions_headers_client_api_revision_overwrites_fixed ... ok
[INFO] [stdout] test interactions_handler::tests::build_interactions_headers_does_not_set_x_client_request_id_for_gemini ... ok
[INFO] [stdout] test interactions_handler::tests::build_interactions_headers_map_without_api_key ... ok
[INFO] [stdout] test interactions_handler::tests::build_split_plans_is_stream_agnostic ... ok
[INFO] [stdout] test interactions_handler::tests::build_interactions_headers_map_with_api_key ... ok
[INFO] [stdout] test interactions_handler::tests::can_split_overhead_alone_exceeds_limit ... ok
[INFO] [stdout] test interactions_handler::tests::can_split_all_splittable_ok ... ok
[INFO] [stdout] test interactions_handler::tests::can_split_single_content_too_large ... ok
[INFO] [stdout] test interactions_handler::tests::clamp_max_tokens_above_u32_max_clamps ... ok
[INFO] [stdout] test interactions_handler::tests::clamp_max_tokens_within_range ... ok
[INFO] [stdout] test interactions_handler::tests::can_split_system_instruction_unsplittable_word ... ok
[INFO] [stdout] test interactions_handler::tests::single_element_above_limit ... ok
[INFO] [stdout] test interactions_handler::tests::single_element_under_limit ... ok
[INFO] [stdout] test interactions_handler::tests::split_content_greedy_packing ... ok
[INFO] [stdout] test interactions_handler::tests::split_content_preserves_order ... ok
[INFO] [stdout] test interactions_handler::tests::split_piece_plan_no_content_chunks_only_sys ... ok
[INFO] [stdout] test interactions_handler::tests::split_piece_plan_only_first_has_tools_config ... ok
[INFO] [stdout] test interactions_handler::tests::split_piece_plan_ordering_sys_first_then_content ... ok
[INFO] [stdout] test interactions_handler::tests::split_piece_plan_single_sys_with_content ... ok
[INFO] [stdout] test interactions_handler::tests::resolve_session_id_prefers_x_client_request_id_over_all ... ok
[INFO] [stdout] test interactions_handler::tests::split_send_first_chunk_gets_tools_and_gen_config ... ok
[INFO] [stdout] test interactions_handler::tests::build_interactions_headers_forwards_client_auth_when_no_key ... ok
[INFO] [stdout] test auth::tests::forward_request_headers_excludes_x_request_id ... ok
[INFO] [stdout] test interactions_handler::tests::can_split_reports_per_tool_breakdown_from_dump ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_at_dot_space ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_at_double_newline ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_at_single_newline ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_comma_delimiter ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_empty ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_exact_limit_single_chunk ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_exclamation_delimiter ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_greedy_fill ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_last_delimiter_space ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_multi_level_delimiters ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_multiple_paragraphs_large_limit ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_narrow_limit_forces_word_splitting ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_parts_fit_in_envelope_under_proxy_limit ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_question_delimiter ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_rejects_oversized_contiguous_segment ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_semicolon_delimiter ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_single_paragraph_fits ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_under_limit_single_chunk ... ok
[INFO] [stdout] test interactions_handler::tests::split_text_unsplittable_error ... ok
[INFO] [stdout] test interactions_handler::tests::translate_arguments_delta_produces_input_json_delta ... ok
[INFO] [stdout] test interactions_handler::tests::translate_buffered_sse_anthropic_single_step ... ok
[INFO] [stdout] test interactions_handler::tests::translate_buffered_sse_empty_input ... ok
[INFO] [stdout] test interactions_handler::tests::translate_buffered_sse_invalid_utf8 ... ok
[INFO] [stdout] test interactions_handler::tests::translate_buffered_sse_openai_single_step ... ok
[INFO] [stdout] test interactions_handler::tests::translate_error_event_produces_error ... ok
[INFO] [stdout] test interactions_handler::tests::translate_full_dump_sequence ... ok
[INFO] [stdout] test interactions_handler::tests::translate_interaction_completed_produces_stop_events ... ok
[INFO] [stdout] test interactions_handler::tests::translate_interaction_created_produces_message_start_only ... ok
[INFO] [stdout] test interactions_handler::tests::translate_multiple_deltas_accumulate ... ok
[INFO] [stdout] test auth::tests::forward_request_headers_forwards_incoming_auth_when_no_override ... ok
[INFO] [stdout] test interactions_handler::tests::translate_returns_none_for_unknown_event_type ... ok
[INFO] [stdout] test interactions_handler::tests::translate_step_delta_signature_produces_block_delta ... ok
[INFO] [stdout] test interactions_handler::tests::translate_step_delta_text_produces_block_delta ... ok
[INFO] [stdout] test interactions_handler::tests::translate_step_start_function_call_produces_tool_use_block ... ok
[INFO] [stdout] test interactions_handler::tests::translate_step_start_model_output_produces_text_block ... ok
[INFO] [stdout] test interactions_handler::tests::translate_step_start_thought_produces_text_block ... ok
[INFO] [stdout] test interactions_handler::tests::translate_step_stop_produces_block_stop ... ok
[INFO] [stdout] test interactions_types::tests::content_serialization_has_correct_type_field ... ok
[INFO] [stdout] test interactions_types::tests::deserialize_create_model_interaction_params_basic ... ok
[INFO] [stdout] test interactions_types::tests::deserialize_create_model_interaction_params_with_generation_config ... ok
[INFO] [stdout] test interactions_types::tests::deserialize_generation_config ... ok
[INFO] [stdout] test interactions_types::tests::deserialize_interaction_created_incomplete ... ok
[INFO] [stdout] test interactions_types::tests::deserialize_interaction_response ... ok
[INFO] [stdout] test interactions_types::tests::deserialize_usage ... ok
[INFO] [stdout] test interactions_types::tests::sse_event_serialization_has_correct_event_type_field ... ok
[INFO] [stdout] test openai::tests::cap_anthropic_max_tokens_clamps_exceeding ... ok
[INFO] [stdout] test openai::tests::cap_anthropic_max_tokens_leaves_below_unchanged ... ok
[INFO] [stdout] test openai::tests::cap_anthropic_max_tokens_no_limit_unchanged ... ok
[INFO] [stdout] test openai::tests::relay_response_headers_maps_x_request_id_to_x_claude_code_session_id ... ok
[INFO] [stdout] test openai::tests::sanitize_openai_egress_does_not_remove_unrelated_extra_fields ... ok
[INFO] [stdout] test openai::tests::sanitize_openai_egress_is_idempotent ... ok
[INFO] [stdout] test openai::tests::sanitize_openai_egress_nulls_max_tokens_when_completion_tokens_present ... ok
[INFO] [stdout] test openai::tests::sanitize_openai_egress_preserves_max_tokens_when_completion_tokens_absent ... ok
[INFO] [stdout] test openai::tests::sanitize_openai_egress_removes_context_management_from_extra ... ok
[INFO] [stdout] test openai::tests::sanitize_openai_egress_removes_output_config_from_extra ... ok
[INFO] [stdout] test openai::tests::strip_adaptive_thinking_passes_through_other ... ok
[INFO] [stdout] test openai::tests::strip_adaptive_thinking_removes_field ... ok
[INFO] [stdout] test relay::tests::cap_openai_max_completion_tokens_sets_missing ... ok
[INFO] [stdout] test relay::tests::cap_openai_max_output_tokens_clamps_exceeding ... ok
[INFO] [stdout] test relay::tests::cap_openai_max_output_tokens_sets_missing_via_extra ... ok
[INFO] [stdout] test interactions_handler::tests::resolve_session_id_prefers_x_claude_code_session_id_over_x_request_id ... ok
[INFO] [stdout] test relay::tests::cap_openai_max_tokens_leaves_below ... ok
[INFO] [stdout] test interactions_handler::tests::build_interactions_headers_sets_x_goog_api_key ... ok
[INFO] [stdout] test relay::tests::cap_openai_max_tokens_sets_missing ... ok
[INFO] [stdout] test router::tests::models_response_has_anthropic_shape ... ok
[INFO] [stdout] test router::tests::models_response_order_is_lexicographic_and_stable ... ok
[INFO] [stdout] test interactions_handler::tests::cancel_interaction_tolerates_404 ... ok
[INFO] [stdout] test relay::tests::cap_openai_no_limits_leaves_unchanged ... ok
[INFO] [stdout] test session::tests::clean_all_clears_v2_stores ... ok
[INFO] [stdout] test session::tests::extend_lifetime_updates_v2_session_and_client_node ... ok
[INFO] [stdout] test session::tests::fail_batch_cleans_upstream_to_clients_index ... ok
[INFO] [stdout] test interactions_handler::tests::resolve_session_id_falls_back_to_body_request_id_when_no_headers ... ok
[INFO] [stdout] test session::tests::concurrent_identical_splits_converge_on_single_batch ... ok
[INFO] [stdout] test session::tests::frontier_all_known_single_upstream ... ok
[INFO] [stdout] test session::tests::frontier_all_known_stateless_non_root ... ok
[INFO] [stdout] test auth::tests::forward_request_headers_applies_auth_override ... ok
[INFO] [stdout] test interactions_handler::tests::build_interactions_headers_forwards_non_auth_headers ... ok
[INFO] [stdout] test interactions_handler::tests::openai_concurrent_split_send_creates_duplicate_batch ... ok
[INFO] [stdout] test session::tests::frontier_equal_tie_break_deterministic ... ok
[INFO] [stdout] test session::tests::frontier_forks_on_system_instruction_hash_mismatch ... ok
[INFO] [stdout] test session::tests::frontier_isolated_later_hash_does_not_move_frontier ... ok
[INFO] [stdout] test session::tests::frontier_inside_multi_node_chain_forks_at_parent ... ok
[INFO] [stdout] test session::tests::frontier_known_prefix_at_client_boundary ... ok
[INFO] [stdout] test session::tests::frontier_rejects_collision_by_chain_order ... ok
[INFO] [stdout] test session::tests::inflight_complete_batch_propagates_system_instruction_hash ... ok
[INFO] [stdout] test session::tests::inflight_complete_batch_inserts_nodes ... ok
[INFO] [stdout] test session::tests::inflight_fail_batch_no_client_node ... ok
[INFO] [stdout] test session::tests::inflight_piece_pending_to_acked_transitions ... ok
[INFO] [stdout] test session::tests::inflight_find_matching_batch ... ok
[INFO] [stdout] test session::tests::inflight_single_piece_batch ... ok
[INFO] [stdout] test session::tests::interaction_store_hash_index_supports_duplicates ... ok
[INFO] [stdout] test session::tests::interaction_store_insert_and_lookup_client ... ok
[INFO] [stdout] test session::tests::interaction_store_insert_and_lookup_upstream ... ok
[INFO] [stdout] test session::tests::next_in_chain_is_constant_time ... ok
[INFO] [stdout] test session::tests::interaction_store_walk_client_chain ... ok
[INFO] [stdout] test session::tests::session_info_does_not_drive_frontier ... ok
[INFO] [stdout] test session::tests::frontier_all_known_with_multiple_upstream_ids ... ok
[INFO] [stdout] test session::tests::frontier_inside_client_node_forks_at_parent ... ok
[INFO] [stdout] test session::tests::old_v1_file_ignored ... ok
[INFO] [stdout] test interactions_handler::tests::build_interactions_headers_strips_client_auth_when_key_set ... ok
[INFO] [stdout] test session::tests::startup_cleanup_does_not_touch_committed_interactions ... ok
[INFO] [stdout] test session::tests::replay_updates_upstream_node_last_seen_utc ... ok
[INFO] [stdout] test sse::tests::format_openai_sse_chunk_produces_valid_sse ... ok
[INFO] [stdout] test sse::tests::format_sse_event_str_uses_correct_event_names ... ok
[INFO] [stdout] test sse::tests::is_event_stream_detects_valid ... ok
[INFO] [stdout] test sse::tests::is_event_stream_empty_headers ... ok
[INFO] [stdout] test sse::tests::is_event_stream_rejects_json ... ok
[INFO] [stdout] test sse::tests::mem_sse_buffer_duplicate_piece_index_appends ... ok
[INFO] [stdout] test sse::tests::mem_sse_buffer_empty_drain ... ok
[INFO] [stdout] test sse::tests::mem_sse_buffer_large_content_within_limit ... ok
[INFO] [stdout] test session::tests::startup_cleanup_removes_failed_batches ... ok
[INFO] [stdout] test sse::tests::mem_sse_buffer_overflow_does_not_mutate ... ok
[INFO] [stdout] test session::tests::startup_resumes_pending_inflight_piece ... ok
[INFO] [stdout] test sse::tests::mem_sse_buffer_overflow_returns_error ... ok
[INFO] [stdout] test sse::tests::mem_sse_buffer_pieces_ordered_on_drain ... ok
[INFO] [stdout] test sse::tests::mem_sse_buffer_push_and_drain_single_piece ... ok
[INFO] [stdout] test session::tests::v2_store_round_trip ... ok
[INFO] [stdout] test sse::tests::mem_sse_buffer_substitute_id_no_match_leaves_unchanged ... ok
[INFO] [stdout] test sse::tests::parse_anthropic_sse_event_ignores_empty_data ... ok
[INFO] [stdout] test sse::tests::mem_sse_buffer_substitute_id_replaces_all_occurrences ... ok
[INFO] [stdout] test sse::tests::parse_anthropic_sse_event_returns_none_on_garbage ... ok
[INFO] [stdout] test sse::tests::parse_anthropic_sse_event_parses_message_start ... ok
[INFO] [stdout] test sse::tests::parse_sse_buffer_discards_incomplete_trailing_event ... ok
[INFO] [stdout] test sse::tests::parse_sse_buffer_empty ... ok
[INFO] [stdout] test sse::tests::parse_sse_buffer_no_events_fallback ... ok
[INFO] [stdout] test sse::tests::parse_sse_buffer_non_utf8_fallback ... ok
[INFO] [stdout] test sse::tests::parse_sse_buffer_skips_done ... ok
[INFO] [stdout] test sse::tests::parse_sse_buffer_two_events ... ok
[INFO] [stdout] test sse::tests::sse_response_does_not_echo_accept_header ... ok
[INFO] [stdout] test sse::tests::sse_response_sets_correct_headers ... ok
[INFO] [stdout] test tests::apply_token_caps_applies_all_three_limits ... ok
[INFO] [stdout] test tests::apply_token_caps_clamps_max_tokens ... ok
[INFO] [stdout] test tests::apply_token_caps_no_limits_returns_unchanged ... ok
[INFO] [stdout] test tests::apply_token_caps_sets_missing_max_tokens ... ok
[INFO] [stdout] test session::tests::startup_rebuilds_derived_indexes ... ok
[INFO] [stdout] test tests::drop_fields_empty_set_is_noop ... ok
[INFO] [stdout] test tests::drop_fields_nonexistent_key_is_noop ... ok
[INFO] [stdout] test tests::drop_fields_removes_specified_keys ... ok
[INFO] [stdout] test tests::error_translation_empty_ingress_matches_any_body ... ok
[INFO] [stdout] test tests::error_translation_empty_rules_returns_body_unchanged ... ok
[INFO] [stdout] test tests::error_translation_first_match_wins ... ok
[INFO] [stdout] test tests::error_translation_second_rule_when_first_no_match ... ok
[INFO] [stdout] test tests::error_translation_status_match_replaces_body ... ok
[INFO] [stdout] test tests::error_translation_status_mismatch_passes_through ... ok
[INFO] [stdout] test tests::error_translation_status_with_substring_replaces_body ... ok
[INFO] [stdout] test tests::error_translation_substring_mismatch_passes_through ... ok
[INFO] [stdout] test tests::peek_model_extracts_field ... ok
[INFO] [stdout] test tests::peek_model_returns_question_on_garbage ... ok
[INFO] [stdout] test tests::peek_model_returns_question_on_missing ... ok
[INFO] [stdout] test tests::translate_gemini_error_missing_code_defaults ... ok
[INFO] [stdout] test tests::translate_gemini_error_preserves_upstream_code ... ok
[INFO] [stdout] test tests::translate_gemini_error_to_anthropic ... ok
[INFO] [stdout] test tests::translate_gemini_error_to_openai ... ok
[INFO] [stdout] test tests::translate_non_gemini_json_passes_through ... ok
[INFO] [stdout] test tests::translate_non_json_body_passes_through ... ok
[INFO] [stdout] test relay::tests::cap_openai_max_tokens_clamps_exceeding ... ok
[INFO] [stdout] test session::tests::find_frontier_skips_chain_on_wrong_system_instruction_hash ... ok
[INFO] [stdout] test session::tests::find_matching_batch_openai_sys_hash_mismatch ... ok
[INFO] [stdout] test session::tests::startup_discards_non_fully_acked_batches ... ok
[INFO] [stdout] test interactions_handler::tests::translate_returns_none_for_malformed_json ... ok
[INFO] [stdout] test interactions_handler::tests::resolve_session_id_uses_random_uuid_as_last_resort ... ok
[INFO] [stdout] test interactions_handler::tests::resolve_session_id_uses_x_claude_code_session_id_when_x_request_id_absent ... ok
[INFO] [stderr] {"section":"test","request_id":"1783610761-0","ts":"2026-07-09T15:26:01Z","direction":"request","model":"test-model","upstream":"test-upstream","status":502,"duration_ms":56,"request_size_bytes":2,"response_size_bytes":40,"streaming":false,"error":"{\"error\":{\"message\":\"upstream failure\"}}"}
[INFO] [stdout] test interactions_handler::tests::split_system_instruction_non_streaming_cancels_acked_on_failure ... ok
[INFO] [stdout] test interactions_handler::tests::split_system_instruction_non_streaming_carries_prev_id_on_first_chunk ... ok
[INFO] [stderr] {"section":"test","request_id":"1783610761-0","ts":"2026-07-09T15:26:01Z","direction":"request","model":"test-model","upstream":"test-upstream","status":502,"duration_ms":19,"request_size_bytes":2,"response_size_bytes":40,"streaming":true,"error":"{\"error\":{\"message\":\"upstream failure\"}}"}
[INFO] [stdout] test interactions_handler::tests::split_send_completes_after_client_disconnect ... ok
[INFO] [stdout] test interactions_handler::tests::split_system_instruction_streaming_cancels_acked_on_failure ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 364 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.76s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/inf_splitter-73db611df21b2630)
[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]      Running tests/e2e.rs (/opt/rustwide/target/debug/deps/e2e-42e8ffc14f5d6506)
[INFO] [stdout] 
[INFO] [stdout] running 36 tests
[INFO] [stdout] test interactions_openai_streaming_returns_openai_sse ... ok
[INFO] [stdout] test anthropic_client_to_openai_upstream_cross_roundtrip ... ok
[INFO] [stdout] test default_provider_catches_unmatched_model ... ok
[INFO] [stdout] test anthropic_client_to_anthropic_upstream_passthrough_roundtrip ... ok
[INFO] [stdout] test clean_all_reports_errors_when_upstream_unreachable ... ok
[INFO] [stdout] test interactions_error_translation_e2e ... ok
[INFO] [stdout] test interactions_content_type_field_is_correct ... ok
[INFO] [stdout] test anthropic_ingress_to_interactions_roundtrip ... ok
[INFO] [stdout] test interactions_openai_ingress_returns_openai_format ... ok
[INFO] [stdout] test interactions_forwards_client_headers_to_upstream ... ok
[INFO] [stdout] test control_message_idempotency ... ok
[INFO] [stdout] test anthropic_split_streaming_uses_final_id ... ok
[INFO] [stdout] test control_message_extend_lifetime ... ok
[INFO] [stdout] test control_messages_stripped_from_delta ... ok
[INFO] [stdout] test interactions_multi_turn_session_delta ... ok
[INFO] [stdout] test control_message_clean_all_sessions ... ok
[INFO] [stdout] test interactions_strips_client_auth_headers_when_api_key_set ... ok
[INFO] [stdout] test interactions_streaming_anthropic_sse_roundtrip ... ok
[INFO] [stdout] test openai_client_to_openai_upstream_passthrough_roundtrip ... ok
[INFO] [stdout] test interactions_split_send_returns_real_response ... ok
[INFO] [stdout] test openai_client_to_anthropic_upstream_cross_roundtrip ... ok
[INFO] [stdout] test interactions_sets_x_goog_api_key_from_config ... ok
[INFO] [stdout] test model_list_routes_all_entries_to_same_upstream ... ok
[INFO] [stdout] test non_streaming_split_merge_preserves_tool_calls ... ok
[INFO] [stdout] test openai_split_streaming_uses_final_id ... ok
[INFO] [stdout] test non_streaming_split_merges_all_piece_responses ... ok
[INFO] [stdout] test interactions_token_limits_injected ... ok
[INFO] [stdout] test openai_ingress_to_interactions_roundtrip ... ok
[INFO] [stdout] test split_send_creates_v2_nodes_replay_works ... ok
[INFO] [stdout] test multi_provider_routes_to_correct_upstream ... ok
[INFO] [stdout] test interactions_session_persistence_survives_restart ... ok
[INFO] [stdout] test openai_split_send_returns_openai_format ... ok
[INFO] [stdout] test split_send_piece_failure_cancels_acked_pieces ... ok
[INFO] [stdout] test unroutable_model_returns_400_e2e ... ok
[INFO] [stdout] test streaming_system_instruction_split_uses_final_id ... ok
[INFO] [stdout] test retry_during_in_flight_split_waits_and_returns_merged ... ok
[INFO] [stderr]      Running tests/protocol_conversion.rs (/opt/rustwide/target/debug/deps/protocol_conversion-3e25f787e7170819)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.39s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 67 tests
[INFO] [stdout] test anthropic_ingress_openai_upstream_converts_both_ways ... ok
[INFO] [stdout] test delayed_upstream_produces_nonzero_duration_ms ... ok
[INFO] [stdout] test anthropic_to_openai_streaming_success_egress_response_dump ... ok
[INFO] [stdout] test anthropic_passthrough_dump_off_no_dump_file ... ok
[INFO] [stdout] test anthropic_passthrough_success_produces_ingress_dump ... ok
[INFO] [stdout] test anthropic_passthrough_error_produces_dumps ... ok
[INFO] [stdout] test anthropic_to_openai_translation_success_produces_stats_and_dumps ... ok
[INFO] [stdout] test anthropic_passthrough_no_conversion ... ok
[INFO] [stdout] test anthropic_ingress_openai_upstream_streaming ... ok
[INFO] [stdout] test anthropic_passthrough_success_produces_stats_and_dumps ... ok
[INFO] [stdout] test anthropic_to_openai_non_streaming_success_egress_response_dump ... ok
[INFO] [stdout] test anthropic_passthrough_streaming_egress_response_dump ... ok
[INFO] [stdout] test anthropic_passthrough_non_streaming_egress_response_dump ... ok
[INFO] [stdout] test drop_fields_noop_when_absent ... ok
[INFO] [stdout] test diagnostics_rotation_compresses_with_bz2 ... ok
[INFO] [stdout] test dump_mode_all_writes_to_file_on_success ... ok
[INFO] [stdout] test drop_fields_anthropic_passthrough ... ok
[INFO] [stdout] test drop_fields_nonexistent_field_is_noop ... ok
[INFO] [stdout] test drop_fields_anthropic_to_openai_conversion ... ok
[INFO] [stdout] test drop_fields_noop_when_empty_list ... ok
[INFO] [stderr] {"section":"remote","request_id":"1783610771-0","ts":"2026-07-09T15:26:12Z","direction":"openai->anthropic","model":"dump-stream-model","upstream":"http://127.0.0.1:41655","status":502,"duration_ms":1,"request_size_bytes":106,"response_size_bytes":62,"streaming":true,"input_messages":1,"max_tokens":64,"messages_detail_ingress":[{"parts":[{"chars":5,"type":"text","words":1}],"role":"user"}],"messages_detail_egress":[{"parts":[{"chars":5,"type":"text","words":1}],"role":"user"}],"error":"{\"error\":{\"message\":\"down\",\"type\":\"api_error\"},\"type\":\"error\"}"}
[INFO] [stdout] test dump_on_error_stream_conversion_error_does_not_break_response ... ok
[INFO] [stdout] test diagnostics_file_rotates_on_max_file_size ... ok
[INFO] [stderr] {"section":"remote","request_id":"1783610770-0","ts":"2026-07-09T15:26:12Z","direction":"openai->anthropic","model":"dump-conv-model","upstream":"http://127.0.0.1:43141","status":503,"duration_ms":4,"request_size_bytes":157,"response_size_bytes":67,"streaming":false,"input_messages":2,"max_tokens":64,"messages_detail_ingress":[{"parts":[{"chars":5,"type":"text","words":1}],"role":"user"},{"parts":[{"chars":13,"type":"text","words":2}],"role":"user"}],"messages_detail_egress":[{"parts":[{"chars":5,"type":"text","words":1}],"role":"user"},{"parts":[{"chars":13,"type":"text","words":2}],"role":"user"}],"error":"{\"error\":{\"message\":\"too busy\",\"type\":\"overloaded\"},\"type\":\"error\"}"}
[INFO] [stdout] test drop_fields_openai_passthrough ... ok
[INFO] [stdout] test dump_on_error_conversion_does_not_break_response ... ok
[INFO] [stdout] test drop_fields_openai_to_anthropic_conversion ... ok
[INFO] [stdout] test dump_mode_error_writes_only_on_error ... ok
[INFO] [stdout] test egress_request_dump_timestamp_not_after_response ... ok
[INFO] [stdout] test diagnostics_rotation_compresses_with_7z ... ok
[INFO] [stderr] {"section":"local","request_id":"1783610770-0","ts":"2026-07-09T15:26:13Z","direction":"openai->openai","model":"dump-model","upstream":"http://127.0.0.1:41265","status":502,"duration_ms":5,"request_size_bytes":108,"response_size_bytes":41,"streaming":false,"messages_detail_ingress":[{"parts":[{"chars":5,"type":"text","words":1}],"role":"user"},{"parts":[{"chars":5,"type":"text","words":1}],"role":"assistant"}],"messages_detail_egress":[{"parts":[{"chars":5,"type":"text","words":1}],"role":"user"},{"parts":[{"chars":5,"type":"text","words":1}],"role":"assistant"}],"error":"{\"error\":{\"message\":\"upstream exploded\"}}"}
[INFO] [stdout] test dump_on_error_passthrough_does_not_break_response ... ok
[INFO] [stdout] test interactions_dump_and_stats_share_request_id ... ok
[INFO] [stdout] test empty_model_produces_ingress_dump ... ok
[INFO] [stdout] test interactions_non_streaming_produces_dumps ... ok
[INFO] [stdout] test empty_model_returns_400 ... ok
[INFO] [stdout] test invalid_json_body_produces_ingress_dump ... ok
[INFO] [stdout] test interactions_error_records_stats_with_error_field ... ok
[INFO] [stdout] test interactions_no_dump_when_off ... ok
[INFO] [stdout] test non_utf8_client_body_returns_400 ... ok
[INFO] [stdout] test openai_ingress_anthropic_upstream_converts_both_ways ... ok
[INFO] [stdout] test interactions_error_produces_dumps ... ok
[INFO] [stdout] test non_utf8_upstream_response_returns_500_openai ... ok
[INFO] [stdout] test invalid_json_body_returns_400 ... ok
[INFO] [stdout] test interactions_split_send_records_aggregate_stats ... ok
[INFO] [stdout] test openai_passthrough_error_produces_ingress_dump ... ok
[INFO] [stdout] test openai_passthrough_no_conversion ... ok
[INFO] [stdout] test openai_passthrough_streaming_records_streaming_true_in_stats ... ok
[INFO] [stdout] test interactions_system_instruction_split_records_stats ... ok
[INFO] [stdout] test drop_fields_per_model_all_and_specific ... ok
[INFO] [stdout] test openai_ingress_anthropic_upstream_streaming ... ok
[INFO] [stdout] test interactions_streaming_records_streaming_true_in_stats ... ok
[INFO] [stdout] test interactions_streaming_produces_dumps ... ok
[INFO] [stdout] test openai_passthrough_streaming_egress_response_dump ... ok
[INFO] [stdout] test passthrough_success_request_dumps_have_status ... ok
[INFO] [stdout] test non_utf8_upstream_response_returns_500_anthropic ... ok
[INFO] [stdout] test translation_anthropic_to_openai_produces_ingress_and_egress_events ... ok
[INFO] [stdout] test no_messages_field_produces_no_detail_null_in_stats ... ok
[INFO] [stdout] test streaming_passthrough_records_streaming_true_in_stats ... ok
[INFO] [stdout] test openai_passthrough_non_streaming_egress_response_dump ... ok
[INFO] [stdout] test openai_to_anthropic_streaming_success_egress_response_dump ... ok
[INFO] [stdout] test openai_to_anthropic_non_streaming_success_egress_response_dump ... ok
[INFO] [stdout] test relay_openai_upstream_does_not_duplicate_sse_headers ... ok
[INFO] [stdout] test stats_mode_all_writes_to_file_on_success ... ok
[INFO] [stdout] test unroutable_model_returns_400 ... ok
[INFO] [stdout] test stats_mode_error_writes_only_on_error ... ok
[INFO] [stdout] test openai_to_anthropic_translation_success_produces_stats_and_dumps ... ok
[INFO] [stdout] test split_send_error_records_response_dump_and_error_stats ... ok
[INFO] [stdout] test translation_openai_to_anthropic_produces_ingress_and_egress_events ... ok
[INFO] [stdout] test upstream_error_relays_status ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 67 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.94s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests inf_splitter
[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] running `Command { std: "docker" "inspect" "43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744", kill_on_drop: false }`
[INFO] [stdout] 43043142ce43c7061d26c4fb3dcebf41adcf6dcf6c84dc0177b9e93d18af6744
