[INFO] cloning repository https://github.com/chenpu17/cc-gw2 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/chenpu17/cc-gw2" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchenpu17%2Fcc-gw2", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchenpu17%2Fcc-gw2'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 3a9f0ac1cc5509f93c80441669ea1ba6e518aaf5 [INFO] testing chenpu17/cc-gw2 against try#28f95933dc0727396c07b48d0a8cb5211b7fb472 for pr-154065-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchenpu17%2Fcc-gw2" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-2-tc2/source/.cargo/config.toml [INFO] started tweaking git repo https://github.com/chenpu17/cc-gw2 [INFO] finished tweaking git repo https://github.com/chenpu17/cc-gw2 [INFO] tweaked toml for git repo https://github.com/chenpu17/cc-gw2 written to /workspace/builds/worker-2-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/chenpu17/cc-gw2 on toolchain 28f95933dc0727396c07b48d0a8cb5211b7fb472 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/chenpu17/cc-gw2 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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 4adf5938b608ca9f7598a9cbd71245e62e736524b72657c318e8abc86aa06c80 [INFO] running `Command { std: "docker" "start" "-a" "4adf5938b608ca9f7598a9cbd71245e62e736524b72657c318e8abc86aa06c80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4adf5938b608ca9f7598a9cbd71245e62e736524b72657c318e8abc86aa06c80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4adf5938b608ca9f7598a9cbd71245e62e736524b72657c318e8abc86aa06c80", kill_on_drop: false }` [INFO] [stdout] 4adf5938b608ca9f7598a9cbd71245e62e736524b72657c318e8abc86aa06c80 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 29b1f7f6aa6bad1d9e0679c0cc8b502d67ca5322e195b6234632a28cff0a61ef [INFO] running `Command { std: "docker" "start" "-a" "29b1f7f6aa6bad1d9e0679c0cc8b502d67ca5322e195b6234632a28cff0a61ef", kill_on_drop: false }` [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling fs_extra v1.3.0 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling aws-lc-rs v1.16.1 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling inout v0.1.4 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Compiling zerocopy v0.8.42 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling unicase v2.9.0 [INFO] [stderr] Compiling opaque-debug v0.3.1 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling fs-err v3.3.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling mime_guess v2.0.5 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling brotli-decompressor v4.0.3 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Compiling simd-adler32 v0.3.8 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling cipher v0.4.4 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling universal-hash v0.5.1 [INFO] [stderr] Compiling polyval v0.6.2 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling hashlink v0.10.0 [INFO] [stderr] Compiling hmac v0.12.1 [INFO] [stderr] Compiling aes v0.8.4 [INFO] [stderr] Compiling ctr v0.9.2 [INFO] [stderr] Compiling ghash v0.5.1 [INFO] [stderr] Compiling aead v0.5.2 [INFO] [stderr] Compiling base64ct v1.8.3 [INFO] [stderr] Compiling zlib-rs v0.6.3 [INFO] [stderr] Compiling bumpalo v3.20.2 [INFO] [stderr] Compiling aes-gcm v0.10.3 [INFO] [stderr] Compiling async-stream v0.3.6 [INFO] [stderr] Compiling brotli v7.0.0 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling pbkdf2 v0.12.2 [INFO] [stderr] Compiling zopfli v0.8.3 [INFO] [stderr] Compiling password-hash v0.5.0 [INFO] [stderr] Compiling salsa20 v0.10.2 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling arc-swap v1.8.2 [INFO] [stderr] Compiling rustls-pemfile v2.2.0 [INFO] [stderr] Compiling cmake v0.1.57 [INFO] [stderr] Compiling axum-core v0.5.6 [INFO] [stderr] Compiling sysinfo v0.37.2 [INFO] [stderr] Compiling matchit v0.8.4 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling scrypt v0.11.0 [INFO] [stderr] Compiling semver v1.0.27 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling aws-lc-sys v0.38.0 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling libsqlite3-sys v0.31.0 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling zip v4.6.1 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling rusqlite v0.33.0 [INFO] [stderr] Compiling axum v0.8.8 [INFO] [stderr] Compiling rustls-webpki v0.103.9 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling axum-server v0.7.3 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling cc-gw-core v0.8.28 (/opt/rustwide/workdir/crates/cc-gw-core) [INFO] [stderr] Compiling cc-gw-server v0.8.28 (/opt/rustwide/workdir/crates/cc-gw-server) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 18s [INFO] running `Command { std: "docker" "inspect" "29b1f7f6aa6bad1d9e0679c0cc8b502d67ca5322e195b6234632a28cff0a61ef", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "29b1f7f6aa6bad1d9e0679c0cc8b502d67ca5322e195b6234632a28cff0a61ef", kill_on_drop: false }` [INFO] [stdout] 29b1f7f6aa6bad1d9e0679c0cc8b502d67ca5322e195b6234632a28cff0a61ef [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 95a977d035a684b0a9328905fc2571bd8273fe7b12cbc40e9678250d9835963a [INFO] running `Command { std: "docker" "start" "-a" "95a977d035a684b0a9328905fc2571bd8273fe7b12cbc40e9678250d9835963a", kill_on_drop: false }` [INFO] [stderr] Compiling cc-gw-core v0.8.28 (/opt/rustwide/workdir/crates/cc-gw-core) [INFO] [stderr] Compiling cc-gw-server v0.8.28 (/opt/rustwide/workdir/crates/cc-gw-server) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 16.74s [INFO] running `Command { std: "docker" "inspect" "95a977d035a684b0a9328905fc2571bd8273fe7b12cbc40e9678250d9835963a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "95a977d035a684b0a9328905fc2571bd8273fe7b12cbc40e9678250d9835963a", kill_on_drop: false }` [INFO] [stdout] 95a977d035a684b0a9328905fc2571bd8273fe7b12cbc40e9678250d9835963a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 213b3f91d5b57e281be28c836a26946f15482ca895c6175d86b333c4d72b74c0 [INFO] running `Command { std: "docker" "start" "-a" "213b3f91d5b57e281be28c836a26946f15482ca895c6175d86b333c4d72b74c0", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.38s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/cc_gw_core-110aa1410c8c457d) [INFO] [stdout] [INFO] [stdout] running 118 tests [INFO] [stdout] test config::tests::apply_protocol_migration_preserves_legacy_port_and_host ... ok [INFO] [stdout] test config::tests::resolve_paths_prefers_explicit_cc_gw_home ... ok [INFO] [stdout] test config::tests::resolve_paths_uses_homedrive_and_homepath_when_profile_is_missing ... ok [INFO] [stdout] test config::tests::resolve_paths_uses_userprofile_when_home_is_missing ... ok [INFO] [stdout] test config::tests::validate_allows_provider_qualified_unregistered_model_targets ... ok [INFO] [stdout] test config::tests::validate_allows_stale_route_targets_on_startup ... ok [INFO] [stdout] test config::tests::validate_for_save_rejects_route_targets_with_missing_provider_prefix ... ok [INFO] [stdout] test convert::tests::anthropic_request_to_openai_chat_maps_required_tool_choice_without_downgrading ... ok [INFO] [stdout] test config::tests::validate_rejects_duplicate_provider_ids ... ok [INFO] [stdout] test convert::tests::anthropic_request_to_openai_chat_maps_stop_sequences_to_stop ... ok [INFO] [stdout] test convert::tests::anthropic_request_to_openai_chat_preserves_metadata_and_tool_choice ... ok [INFO] [stdout] test convert::tests::anthropic_request_to_openai_chat_preserves_string_message_content ... ok [INFO] [stdout] test convert::tests::anthropic_request_to_openai_chat_sets_tool_result_name_from_tool_use_id ... ok [INFO] [stdout] test convert::tests::anthropic_request_to_openai_chat_preserves_reasoning_and_multimodal_parts ... ok [INFO] [stdout] test convert::tests::anthropic_request_to_openai_response_preserves_string_message_content ... ok [INFO] [stdout] test convert::tests::anthropic_request_to_openai_response_builds_responses_input_items ... ok [INFO] [stdout] test convert::tests::anthropic_request_to_openai_response_preserves_reasoning_and_multimodal_parts ... ok [INFO] [stdout] test convert::tests::anthropic_response_to_openai_chat_emits_cache_read_as_cached_tokens ... ok [INFO] [stdout] test convert::tests::anthropic_response_to_openai_chat_preserves_reasoning_content ... ok [INFO] [stdout] test convert::tests::anthropic_response_to_openai_response_emits_cache_read_as_cached_tokens ... ok [INFO] [stdout] test convert::tests::openai_chat_response_to_anthropic_omits_empty_text_before_tool_use ... ok [INFO] [stdout] test convert::tests::openai_chat_request_to_anthropic_maps_tool_choice_and_parallel_flags ... ok [INFO] [stdout] test convert::tests::openai_chat_response_to_anthropic_preserves_cache_breakdown ... ok [INFO] [stdout] test convert::tests::anthropic_response_to_openai_response_emits_function_call_items ... ok [INFO] [stdout] test convert::tests::openai_chat_request_to_anthropic_maps_stop_and_max_completion_tokens ... ok [INFO] [stdout] test convert::tests::openai_chat_request_to_anthropic_preserves_reasoning_and_multimodal_parts ... ok [INFO] [stdout] test convert::tests::openai_chat_response_to_anthropic_defaults_null_finish_reason_to_end_turn ... ok [INFO] [stdout] test config::tests::save_config_atomically_replaces_previous_longer_contents ... ok [INFO] [stdout] test convert::tests::anthropic_response_to_openai_response_preserves_reasoning_content ... ok [INFO] [stdout] test convert::tests::openai_chat_response_to_anthropic_maps_context_window_finish_to_max_tokens ... ok [INFO] [stdout] test convert::tests::openai_chat_response_to_anthropic_defaults_null_finish_reason_with_tools_to_tool_use ... ok [INFO] [stdout] test convert::tests::openai_chat_request_to_anthropic_preserves_metadata ... ok [INFO] [stdout] test convert::tests::openai_responses_request_to_anthropic_preserves_reasoning_and_multimodal_parts ... ok [INFO] [stdout] test convert::tests::openai_chat_response_to_anthropic_preserves_max_tokens_with_tools ... ok [INFO] [stdout] test convert::tests::openai_chat_response_to_anthropic_keeps_tool_input_as_object ... ok [INFO] [stdout] test convert::tests::openai_chat_response_to_anthropic_treats_stop_with_tools_as_tool_use ... ok [INFO] [stdout] test convert::tests::openai_responses_request_to_anthropic_maps_function_call_output ... ok [INFO] [stdout] test convert::tests::openai_responses_request_to_anthropic_maps_stop_and_max_completion_tokens ... ok [INFO] [stdout] test convert::tests::openai_responses_request_to_anthropic_maps_top_level_function_call ... ok [INFO] [stdout] test convert::tests::openai_responses_request_to_anthropic_maps_top_level_reasoning_item ... ok [INFO] [stdout] test convert::tests::openai_chat_response_to_anthropic_preserves_reasoning_content ... ok [INFO] [stdout] test convert::tests::openai_responses_response_to_anthropic_maps_top_level_function_call_when_completed ... ok [INFO] [stdout] test convert::tests::openai_responses_response_to_anthropic_keeps_tool_input_as_object ... ok [INFO] [stdout] test convert::tests::openai_chat_response_to_anthropic_rebuilds_anthropic_input_tokens_from_total ... ok [INFO] [stdout] test convert::tests::openai_chat_response_to_anthropic_preserves_multimodal_content ... ok [INFO] [stdout] test config::tests::save_config_omits_legacy_request_and_response_logging_flags ... ok [INFO] [stdout] test convert::tests::openai_responses_response_to_anthropic_maps_context_window_status_to_max_tokens ... ok [INFO] [stdout] test convert::tests::openai_chat_response_to_anthropic_preserves_refusal_text ... ok [INFO] [stdout] test convert::tests::openai_responses_response_to_anthropic_parses_function_call_arguments ... ok [INFO] [stdout] test convert::tests::openai_responses_response_to_anthropic_places_reasoning_before_text ... ok [INFO] [stdout] test convert::tests::openai_responses_response_to_anthropic_normalizes_tool_use_input_values ... ok [INFO] [stdout] test convert::tests::openai_responses_response_to_anthropic_preserves_multimodal_content ... ok [INFO] [stdout] test convert::tests::openai_responses_response_to_anthropic_preserves_refusal_blocks ... ok [INFO] [stdout] test convert::tests::openai_responses_response_to_anthropic_rebuilds_anthropic_input_tokens_from_total ... ok [INFO] [stdout] test provider::tests::anthropic_endpoint_uses_existing_version_prefix_without_adding_v1 ... ok [INFO] [stdout] test provider::tests::apply_query_string_appends_to_existing_query ... ok [INFO] [stdout] test provider::tests::anthropic_headers_preserve_claude_client_identity_headers ... ok [INFO] [stdout] test provider::tests::apply_query_string_appends_to_plain_url ... ok [INFO] [stdout] test provider::tests::apply_query_string_ignores_empty_values ... ok [INFO] [stdout] test provider::tests::openai_endpoint_preserves_full_chat_completions_path ... ok [INFO] [stdout] test provider::tests::openai_endpoint_uses_existing_version_prefix_without_adding_v1 ... ok [INFO] [stdout] test provider::tests::openai_headers_preserve_client_identity_headers_without_leaking_gateway_auth ... ok [INFO] [stdout] test provider::tests::provider_prefers_anthropic_protocol_for_explicit_anthropic_signals ... ok [INFO] [stdout] test provider::tests::provider_prefers_openai_protocol_without_anthropic_hints ... ok [INFO] [stdout] test provider::tests::provider_prefers_openai_responses_protocol_for_explicit_signals ... ok [INFO] [stdout] test routing::tests::custom_endpoint_uses_its_own_routing_before_global_defaults ... ok [INFO] [stdout] test routing::tests::custom_openai_endpoint_falls_back_to_openai_defaults ... ok [INFO] [stdout] test routing::tests::provider_qualified_route_can_target_unregistered_model ... ok [INFO] [stdout] test routing::tests::provider_qualified_route_trims_provider_and_model_target_before_resolution ... ok [INFO] [stdout] test stream::tests::anthropic_observer_tracks_ttft_and_usage ... ok [INFO] [stdout] test stream::tests::anthropic_observer_treats_tool_and_thinking_events_as_first_output ... ok [INFO] [stdout] test stream::tests::anthropic_to_openai_chat_stream_preserves_thinking_as_reasoning_content ... ok [INFO] [stdout] test stream::tests::anthropic_to_openai_responses_emits_richer_stream_events ... ok [INFO] [stdout] test stream::tests::anthropic_to_openai_responses_preserves_reasoning_content_on_completion ... ok [INFO] [stdout] test stream::tests::anthropic_to_openai_responses_tool_use_emits_requires_action_status ... ok [INFO] [stdout] test stream::tests::materialize_anthropic_stream_drops_empty_text_blocks_before_tool_use ... ok [INFO] [stdout] test stream::tests::materialize_anthropic_stream_keeps_bad_tool_input_as_object ... ok [INFO] [stdout] test stream::tests::materialize_anthropic_stream_preserves_redacted_thinking_blocks ... ok [INFO] [stdout] test stream::tests::materialize_anthropic_stream_returns_offline_message ... ok [INFO] [stdout] test stream::tests::materialize_anthropic_stream_preserves_thinking_blocks ... ok [INFO] [stdout] test stream::tests::materialize_openai_responses_stream_returns_offline_response ... ok [INFO] [stdout] test api_keys::tests::list_api_keys_accepts_legacy_text_timestamps ... ok [INFO] [stdout] test stream::tests::openai_chat_observer_treats_tool_calls_as_first_output ... ok [INFO] [stdout] test routing::tests::wildcard_routes_keep_configured_order_when_specificity_ties ... ok [INFO] [stdout] test stream::tests::openai_chat_to_anthropic_stream_can_disable_suppressed_reasoning_fallback ... ok [INFO] [stdout] test stream::tests::openai_chat_to_anthropic_stream_can_suppress_reasoning_content ... ok [INFO] [stdout] test stream::tests::openai_chat_to_anthropic_stream_falls_back_when_only_reasoning_is_suppressed ... ok [INFO] [stdout] test stream::tests::openai_chat_to_anthropic_stream_infers_tool_use_without_finish_reason ... ok [INFO] [stdout] test stream::tests::openai_chat_to_anthropic_stream_maps_context_window_finish_to_max_tokens ... ok [INFO] [stdout] test stream::tests::openai_chat_to_anthropic_stream_omits_empty_text_before_tool_use ... ok [INFO] [stdout] test stream::tests::openai_chat_to_anthropic_stream_preserves_max_tokens_with_tools ... ok [INFO] [stdout] test stream::tests::openai_chat_to_anthropic_stream_preserves_reasoning_content ... ok [INFO] [stdout] test stream::tests::openai_responses_observer_normalizes_anthropic_cache_breakdown ... ok [INFO] [stdout] test stream::tests::openai_chat_to_anthropic_stream_preserves_refusal_with_tools ... ok [INFO] [stdout] test stream::tests::openai_chat_to_anthropic_stream_treats_stop_with_tools_as_tool_use ... ok [INFO] [stdout] test stream::tests::openai_responses_observer_tracks_output_text_and_usage ... ok [INFO] [stdout] test stream::tests::openai_responses_observer_treats_function_call_events_as_first_output ... ok [INFO] [stdout] test stream::tests::openai_responses_to_anthropic_reconciles_reasoning_output_items ... ok [INFO] [stdout] test stream::tests::openai_responses_to_anthropic_stream_can_suppress_reasoning_items ... ok [INFO] [stdout] test stream::tests::openai_responses_to_anthropic_stream_falls_back_to_incomplete_status_for_unknown_reason ... ok [INFO] [stdout] test stream::tests::openai_responses_to_anthropic_stream_maps_context_window_reason_to_max_tokens ... ok [INFO] [stdout] test stream::tests::openai_responses_transformer_emits_anthropic_events ... ok [INFO] [stdout] test stream::tests::openai_responses_transformer_maps_incomplete_to_max_tokens ... ok [INFO] [stdout] test stream::tests::openai_responses_transformer_treats_completed_function_call_as_tool_use ... ok [INFO] [stdout] test stream::tests::unsupported_stream_transformer_returns_error ... ok [INFO] [stdout] test stream::tests::sse_observer_accepts_crlf_event_boundaries ... ok [INFO] [stdout] test stream::tests::sse_observer_tracks_terminal_events_by_protocol ... ok [INFO] [stdout] test stream::tests::openai_responses_transformer_maps_requires_action_and_tool_output ... ok [INFO] [stdout] test profiler::tests::append_profiler_turn_orders_by_request_start_and_keeps_session_bounds ... ok [INFO] [stdout] test profiler::tests::append_profiler_turn_persists_first_turn_and_updates_session_end ... ok [INFO] [stdout] test profiler::tests::clear_profiler_sessions_removes_records_before_reusing_session_id ... ok [INFO] [stdout] test observability::tests::log_detail_falls_back_to_legacy_prompt_and_response_payloads ... ok [INFO] [stdout] test observability::tests::recent_client_activity_counts_distinct_ips_and_sessions ... ok [INFO] [stdout] test observability::tests::log_status_filters_exclude_unfinished_records ... ok [INFO] [stdout] test observability::tests::metrics_overview_today_uses_local_request_logs ... ok [INFO] [stdout] test observability::tests::metrics_overview_today_respects_local_day_boundary ... ok [INFO] [stdout] test storage::tests::initialize_database_migrates_legacy_schema ... ok [INFO] [stdout] test observability::tests::recent_throughput_metrics_counts_recent_requests_and_output_tokens ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 118 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/cc_gw_server-96259543722516a0) [INFO] [stdout] [INFO] [stdout] running 81 tests [INFO] [stdout] test proxy_routes::tests::extract_usage_stats_keeps_cached_tokens_as_cache_read_only ... ok [INFO] [stdout] test proxy_routes::tests::extract_usage_stats_normalizes_anthropic_input_tokens_with_cache_breakdown ... ok [INFO] [stdout] test proxy_routes::tests::extract_usage_stats_reads_nested_response_usage ... ok [INFO] [stdout] test proxy_routes::tests::concurrency_allows_when_under_limit ... ok [INFO] [stdout] test proxy_routes::tests::concurrency_allows_when_no_limit ... ok [INFO] [stdout] test proxy_routes::tests::concurrency_rejects_when_at_limit ... ok [INFO] [stdout] test proxy_routes::tests::concurrency_releases_slot_on_drop ... ok [INFO] [stdout] test proxy_routes::tests::concurrency_check_increments_atomically ... ok [INFO] [stdout] test proxy_routes::tests::concurrency_allows_when_limit_is_zero ... ok [INFO] [stdout] test tests::anthropic_messages_validation_rejects_unknown_block_types_in_claude_code_mode ... ok [INFO] [stdout] test tests::anthropic_count_tokens_accounts_for_schema_keys_and_structure ... ok [INFO] [stdout] test tests::anthropic_messages_forward_query_and_identity_headers_to_anthropic_provider ... ok [INFO] [stdout] test tests::anthropic_openai_chat_non_stream_via_stream_without_thinking_strips_reasoning_content ... ok [INFO] [stdout] test tests::anthropic_openai_chat_with_thinking_preserves_reasoning_content ... ok [INFO] [stdout] test tests::anthropic_openai_chat_without_thinking_falls_back_when_only_reasoning_content_remains ... ok [INFO] [stdout] test tests::anthropic_openai_chat_non_stream_via_stream_without_thinking_falls_back_when_only_reasoning_content_remains ... ok [INFO] [stdout] test tests::anthropic_to_openai_non_stream_error_is_converted_to_anthropic_shape ... ok [INFO] [stdout] test tests::anthropic_messages_can_target_anthropic_compatible_custom_provider ... ok [INFO] [stdout] test tests::anthropic_openai_chat_without_thinking_strips_reasoning_content ... ok [INFO] [stdout] test tests::anthropic_to_openai_does_not_retry_when_compatibility_disabled ... ok [INFO] [stdout] test tests::anthropic_to_custom_provider_strips_tooling_and_metadata ... ok [INFO] [stdout] test tests::anthropic_to_openai_maps_required_tool_choice_and_stop_sequences ... ok [INFO] [stdout] test tests::anthropic_endpoint_accepts_bearer_auth_for_gateway_api_keys ... ok [INFO] [stdout] test tests::anthropic_to_openai_non_json_error_uses_anthropic_error_fallback ... ok [INFO] [stdout] test tests::api_version_check_reports_update_state_from_registry ... ok [INFO] [stdout] test tests::anthropic_messages_validation_accepts_string_or_block_content_in_claude_code_mode ... ok [INFO] [stdout] test tests::api_status_responses_disable_http_caching ... ok [INFO] [stdout] test tests::anthropic_to_openai_non_stream_via_stream_surfaces_sse_error_event ... ok [INFO] [stdout] test tests::anthropic_to_openai_non_stream_via_stream_materializes_and_converts_response ... ok [INFO] [stdout] test tests::anthropic_to_openai_routes_thinking_requests_to_explicit_responses_provider ... ok [INFO] [stdout] test tests::anthropic_to_openai_stream_handshake_error_is_converted_to_anthropic_shape ... ok [INFO] [stdout] test tests::configured_body_limit_rejects_requests_over_boundary ... ok [INFO] [stdout] test tests::extract_header_session_id_supports_cc_gw_standard_header ... ok [INFO] [stdout] test tests::extract_profiler_session_id_ignores_user_fallback_and_uses_url_safe_id ... ok [INFO] [stdout] test tests::extract_request_session_id_supports_provider_conversation_fields ... ok [INFO] [stdout] test tests::extract_request_session_id_uses_stable_headers_before_user_fallbacks ... ok [INFO] [stdout] test tests::extract_session_id_prefers_session_fields_over_user_fields ... ok [INFO] [stdout] test tests::infer_client_kind_prefers_known_cli_markers ... ok [INFO] [stdout] test tests::claude_code_auto_mode_classifier_does_not_fallback_to_reasoning_text ... ok [INFO] [stdout] test tests::anthropic_to_openai_retry_drops_metadata_and_tool_choice ... ok [INFO] [stdout] test tests::claude_code_auto_mode_classifier_non_stream_via_stream_strips_thinking_blocks ... ok [INFO] [stdout] test tests::cross_protocol_logs_capture_four_payload_blocks_on_one_record ... ok [INFO] [stdout] test tests::api_key_admin_reveal_and_stats_work_end_to_end ... ok [INFO] [stdout] test tests::cross_protocol_non_stream_responses_preserve_observability_headers ... ok [INFO] [stdout] test tests::legacy_public_routes_remain_available ... ok [INFO] [stdout] test tests::disabled_custom_endpoint_is_not_exposed ... ok [INFO] [stdout] test tests::cross_protocol_stream_responses_preserve_observability_headers ... ok [INFO] [stdout] test tests::direct_proxy_responses_do_not_forward_upstream_set_cookie ... ok [INFO] [stdout] test tests::custom_endpoint_and_api_key_restrictions_work_end_to_end ... ok [INFO] [stdout] test tests::custom_proxy_routes_accept_payloads_larger_than_two_mib ... ok [INFO] [stdout] test tests::logs_export_archive_includes_four_payload_fields ... ok [INFO] [stdout] test tests::non_stream_response_logging_does_not_store_compressed_payload_gibberish ... ok [INFO] [stdout] test tests::anthropic_to_openai_retry_summarizes_tool_roundtrip_and_normalizes_tokens ... ok [INFO] [stdout] test tests::openai_chat_non_stream_routes_model_and_records_rewritten_upstream_payload ... ok [INFO] [stdout] test tests::openai_chat_non_stream_via_stream_materializes_response_when_model_enabled ... ok [INFO] [stdout] test tests::openai_chat_non_stream_via_stream_preserves_utf8_split_across_chunks ... ok [INFO] [stdout] test tests::openai_responses_from_anthropic_provider_emits_function_call_items ... ok [INFO] [stdout] test tests::openai_chat_non_stream_via_stream_surfaces_sse_error_event ... ok [INFO] [stdout] test tests::openai_responses_non_stream_routes_unregistered_target_model ... ok [INFO] [stdout] test tests::openai_responses_same_protocol_does_not_retry_or_strip_metadata ... ok [INFO] [stdout] test tests::openai_responses_stream_from_anthropic_provider_emits_richer_events ... ok [INFO] [stdout] test tests::openai_chat_routes_model_for_stream_and_non_stream_requests ... ok [INFO] [stdout] test tests::openai_chat_non_stream_via_stream_latency_includes_full_upstream_stream ... ok [INFO] [stdout] test tests::openai_responses_to_custom_provider_preserves_same_protocol_tooling ... ok [INFO] [stdout] test tests::profiler_status_start_stop ... ok [INFO] [stdout] test tests::root_falls_back_to_ui_redirect_when_landing_html_is_missing ... ok [INFO] [stdout] test tests::provider_test_matches_key_node_behaviors ... ok [INFO] [stdout] test tests::profiler_sessions_list_and_clear ... ok [INFO] [stdout] test tests::dropped_streams_finalize_logs_as_interrupted ... ok [INFO] [stdout] test tests::root_seo_files_are_served ... ok [INFO] [stdout] test tests::openai_to_anthropic_error_is_converted_to_openai_shape ... ok [INFO] [stdout] test tests::openai_root_routes_match_openai_prefixed_routes ... ok [INFO] [stdout] test tests::ui_html_is_not_cached_but_hashed_assets_are_cacheable ... ok [INFO] [stdout] test tests::profiler_records_real_requests_without_user_fallback_or_disabled_response_payloads ... ok [INFO] [stdout] test tests::streaming_logs_store_materialized_response_instead_of_raw_sse_chunks ... ok [INFO] [stdout] test tests::upstream_stream_failures_are_logged_as_upstream_errors ... ok [INFO] [stdout] test tests::trailing_upstream_stream_errors_after_terminal_event_are_logged_as_success ... ok [INFO] [stdout] test tests::standard_proxy_routes_accept_payloads_larger_than_two_mib ... ok [INFO] [stdout] test tests::api_key_concurrency_limit_returns_429_and_records_event ... ok [INFO] [stdout] test tests::api_status_reports_live_and_recent_client_activity ... ok [INFO] [stdout] test tests::web_auth_requires_session_for_api_routes ... ok [INFO] [stderr] Doc-tests cc_gw_core [INFO] [stdout] [INFO] [stdout] test result: ok. 81 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.82s [INFO] [stdout] [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" "213b3f91d5b57e281be28c836a26946f15482ca895c6175d86b333c4d72b74c0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "213b3f91d5b57e281be28c836a26946f15482ca895c6175d86b333c4d72b74c0", kill_on_drop: false }` [INFO] [stdout] 213b3f91d5b57e281be28c836a26946f15482ca895c6175d86b333c4d72b74c0