[INFO] cloning repository https://github.com/pilc80/claudex
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/pilc80/claudex" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpilc80%2Fclaudex", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpilc80%2Fclaudex'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0483d7d947025c41ddb8b67a29d9529a13265704
[INFO] testing pilc80/claudex 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%2Fpilc80%2Fclaudex" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/pilc80/claudex
[INFO] finished tweaking git repo https://github.com/pilc80/claudex
[INFO] tweaked toml for git repo https://github.com/pilc80/claudex written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/pilc80/claudex 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/pilc80/claudex 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-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6
[INFO] running `Command { std: "docker" "start" "36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6", 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" "36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6" "/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" "36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6", 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" "36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling aws-lc-rs v1.16.3
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling rand_core v0.10.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling proc-macro2-diagnostics v0.10.1
[INFO] [stderr]    Compiling typenum v1.20.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling tokio v1.52.2
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling filetime v0.2.27
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling uncased v0.9.10
[INFO] [stderr]    Compiling zip v2.4.2
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling pear_codegen v0.2.9
[INFO] [stderr]    Compiling nix v0.31.2
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling cc v1.2.61
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling figment v0.10.19
[INFO] [stderr]    Compiling instant v0.1.13
[INFO] [stderr]    Compiling is-docker v0.2.0
[INFO] [stderr]    Compiling self_update v0.42.0
[INFO] [stderr]    Compiling number_prefix v0.4.0
[INFO] [stderr]    Compiling signal-hook v0.4.4
[INFO] [stderr]    Compiling winnow v1.0.2
[INFO] [stderr]    Compiling inlinable_string v0.1.15
[INFO] [stderr]    Compiling indicatif v0.17.11
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling pear v0.2.9
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling xattr v1.6.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling tar v0.4.45
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling self-replace v1.5.0
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling inotify v0.10.2
[INFO] [stderr]    Compiling is-wsl v0.4.0
[INFO] [stderr]    Compiling aws-lc-sys v0.40.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling notify-types v1.0.1
[INFO] [stderr]    Compiling libyml v0.0.5
[INFO] [stderr]    Compiling axum-macros v0.5.1
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling quick-xml v0.37.5
[INFO] [stderr]    Compiling pathdiff v0.2.3
[INFO] [stderr]    Compiling semver v1.0.28
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling symlink v0.1.0
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling env_home v0.1.0
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling which v7.0.3
[INFO] [stderr]    Compiling tracing-appender v0.2.5
[INFO] [stderr]    Compiling serde_yml v0.0.12
[INFO] [stderr]    Compiling open v5.3.4
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling notify v7.0.0
[INFO] [stderr]    Compiling rand v0.10.1
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling uuid v1.23.1
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling bytecount v0.6.9
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tower-http v0.6.10
[INFO] [stderr]    Compiling h2 v0.4.14
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.7.0
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling reqwest v0.13.3
[INFO] [stderr]    Compiling claudex v0.9.53 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 12s
[INFO] running `Command { std: "docker" "inspect" "36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6", 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" "36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6" "/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 hyper v1.9.0
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling deadpool-runtime v0.1.4
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling deadpool v0.12.3
[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 wiremock v0.6.5
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling reqwest v0.13.3
[INFO] [stderr]    Compiling self_update v0.42.0
[INFO] [stderr]    Compiling claudex v0.9.53 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 51.70s
[INFO] running `Command { std: "docker" "inspect" "36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6", 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" "36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.59s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/claudex-ec348a44b18196b7)
[INFO] [stdout] 
[INFO] [stdout] running 479 tests
[INFO] [stdout] test cli::tests::proxy_start_rejects_daemon_option ... ok
[INFO] [stdout] test config::tests::test_config_format_from_path ... ok
[INFO] [stdout] test cli::tests::auth_login_accepts_no_provider ... ok
[INFO] [stdout] test cli::tests::auth_login_help_explains_provider_profile_and_force ... ok
[INFO] [stdout] test cli::tests::root_help_exposes_core_management_commands ... ok
[INFO] [stdout] test cli::tests::root_help_omits_obsolete_side_commands ... ok
[INFO] [stdout] test config::cmd::tests::doctor_adds_reauth_action_when_oauth_token_is_missing ... ok
[INFO] [stdout] test config::cmd::tests::doctor_reports_duplicate_profile_names ... ok
[INFO] [stdout] test config::cmd::tests::doctor_accepts_enabled_oauth_profile ... ok
[INFO] [stdout] test config::tests::test_default_hyperlinks_is_auto ... ok
[INFO] [stdout] test config::tests::test_default_values ... ok
[INFO] [stdout] test config::tests::test_config_example_toml_parses ... ok
[INFO] [stdout] test config::cmd::tests::doctor_reports_needs_setup_without_profiles ... ok
[INFO] [stdout] test config::tests::test_existing_config_backward_compat ... ok
[INFO] [stdout] test config::tests::test_hyperlinks_parse_auto_string ... ok
[INFO] [stdout] test config::tests::test_figment_env_overrides_file ... ok
[INFO] [stdout] test config::tests::test_hyperlinks_parse_false_bool ... ok
[INFO] [stdout] test config::tests::test_hyperlinks_omitted_defaults_to_auto ... ok
[INFO] [stdout] test config::tests::test_hyperlinks_parse_on_string ... ok
[INFO] [stdout] test config::tests::test_figment_layered_merge_defaults_lt_file ... ok
[INFO] [stdout] test config::tests::test_hyperlinks_parse_true_bool ... ok
[INFO] [stdout] test config::tests::test_hyperlinks_parse_true_string ... ok
[INFO] [stdout] test config::tests::test_figment_toml_save_load_roundtrip ... ok
[INFO] [stdout] test config::tests::test_figment_yaml_parsing ... ok
[INFO] [stdout] test config::tests::test_figment_yaml_save_load_roundtrip ... ok
[INFO] [stdout] test config::tests::test_hyperlinks_parse_false_string ... ok
[INFO] [stdout] test config::tests::test_enabled_profiles ... ok
[INFO] [stdout] test config::tests::test_hyperlinks_parse_off_string ... ok
[INFO] [stdout] test config::tests::test_find_profile_mut ... ok
[INFO] [stdout] test config::tests::test_find_profile ... ok
[INFO] [stdout] test config::tests::test_parse_mixed_auth_type_profiles ... ok
[INFO] [stdout] test config::tests::test_parse_oauth_profile ... ok
[INFO] [stdout] test config::tests::test_resolve_model_no_alias ... ok
[INFO] [stdout] test config::tests::test_parse_no_auth_type_defaults_to_api_key ... ok
[INFO] [stdout] test config::tests::test_parse_minimal_toml ... ok
[INFO] [stdout] test config::tests::test_parse_with_router_and_context ... ok
[INFO] [stdout] test config::tests::test_parse_all_oauth_providers ... ok
[INFO] [stdout] test config::tests::test_figment_global_then_project_merge ... ok
[INFO] [stdout] test config::tests::test_hyperlinks_parse_unknown_defaults_to_auto ... ok
[INFO] [stdout] test config::tests::test_figment_nested_env_override ... ok
[INFO] [stdout] test config::tests::test_oauth_profile_api_key_defaults_empty ... ok
[INFO] [stdout] test context::rag::tests::test_cosine_similarity_different_lengths ... ok
[INFO] [stdout] test context::rag::tests::test_cosine_similarity_empty ... ok
[INFO] [stdout] test context::rag::tests::test_cosine_similarity_opposite ... ok
[INFO] [stdout] test context::rag::tests::test_cosine_similarity_identical ... ok
[INFO] [stdout] test config::tests::test_figment_hyperlinks_through_pipeline ... ok
[INFO] [stdout] test config::tests::test_resolve_model_alias ... ok
[INFO] [stdout] test context::sharing::tests::test_extract_key_info_empty_messages ... ok
[INFO] [stdout] test context::sharing::tests::test_extract_key_info_short_response_ignored ... ok
[INFO] [stdout] test context::sharing::tests::test_extract_key_info_long_response ... ok
[INFO] [stdout] test context::sharing::tests::test_extract_key_info_not_assistant ... ok
[INFO] [stdout] test context::sharing::tests::test_shared_context_store_and_gather ... ok
[INFO] [stdout] test context::sharing::tests::test_shared_context_disabled ... ok
[INFO] [stdout] test context::sharing::tests::test_shared_context_size_limit ... ok
[INFO] [stdout] test context::sharing::tests::test_extract_key_info_truncates_at_500 ... ok
[INFO] [stdout] test oauth::exchange::tests::test_copilot_headers ... ok
[INFO] [stdout] test oauth::exchange::tests::test_device_auth_redirect_uri_no_api_accounts ... ok
[INFO] [stdout] test oauth::exchange::tests::test_authorize_url_dynamic_port ... ok
[INFO] [stdout] test oauth::exchange::tests::test_authorize_url_redirect_uri_format ... ok
[INFO] [stdout] test oauth::exchange::tests::test_authorize_url_scope_uses_percent20 ... ok
[INFO] [stdout] test oauth::exchange::tests::test_build_chatgpt_authorize_url ... ok
[INFO] [stdout] test oauth::exchange::tests::test_chatgpt_client_id_matches_codex_cli ... ok
[INFO] [stdout] test oauth::exchange::tests::test_copilot_extra_headers_include_intent ... ok
[INFO] [stdout] test oauth::exchange::tests::test_encode_passthrough_safe_chars ... ok
[INFO] [stdout] test oauth::exchange::tests::test_github_copilot_client_id_is_official ... ok
[INFO] [stdout] test oauth::exchange::tests::test_refresh_error_display ... ok
[INFO] [stdout] test oauth::exchange::tests::test_encode_spaces_as_percent20 ... ok
[INFO] [stdout] test oauth::exchange::tests::test_encode_special_chars ... ok
[INFO] [stdout] test context::rag::tests::test_cosine_similarity_orthogonal ... ok
[INFO] [stdout] test oauth::handler::tests::test_all_providers_have_handler ... ok
[INFO] [stdout] test oauth::handler::tests::test_factory_returns_correct_provider ... ok
[INFO] [stdout] test context::sharing::tests::test_extract_key_info_array_content ... ok
[INFO] [stdout] test context::rag::tests::test_cosine_similarity_zero_vector ... ok
[INFO] [stdout] test oauth::manager::tests::test_apply_token_to_profile_no_override_existing ... ok
[INFO] [stdout] test oauth::manager::tests::test_apply_token_to_profile_copilot ... ok
[INFO] [stdout] test oauth::manager::tests::test_apply_token_to_profile_chatgpt ... ok
[INFO] [stdout] test oauth::providers::tests::test_account_id_no_extra_field ... ok
[INFO] [stdout] test oauth::providers::tests::test_account_id_injection_from_token_extra ... ok
[INFO] [stdout] test oauth::providers::tests::test_account_id_no_override_existing ... ok
[INFO] [stdout] test oauth::providers::tests::test_format_expires ... ok
[INFO] [stdout] test oauth::providers::tests::test_provider_defaults_kimi ... ok
[INFO] [stdout] test oauth::providers::tests::test_format_expires_zero_timestamp ... ok
[INFO] [stdout] test oauth::providers::tests::test_provider_defaults_qwen ... ok
[INFO] [stdout] test oauth::providers::tests::test_format_expires_future_timestamp ... ok
[INFO] [stdout] test oauth::providers::tests::test_provider_defaults_github ... ok
[INFO] [stdout] test oauth::providers::tests::test_urlencoded_no_special_chars ... ok
[INFO] [stdout] test oauth::providers::tests::test_all_providers_have_model_slots ... ok
[INFO] [stdout] test oauth::providers::tests::test_provider_defaults_openai ... ok
[INFO] [stdout] test oauth::providers::tests::test_provider_type_classification ... ok
[INFO] [stdout] test oauth::providers::tests::test_urlencoded ... ok
[INFO] [stdout] test oauth::providers::tests::test_urlencoded_at_sign ... ok
[INFO] [stdout] test oauth::providers::tests::test_account_id_missing_in_token_extra ... ok
[INFO] [stdout] test oauth::providers::tests::test_provider_defaults_google ... ok
[INFO] [stdout] test oauth::providers::tests::test_provider_defaults_claude ... ok
[INFO] [stdout] test oauth::providers::tests::test_urlencoded_empty ... ok
[INFO] [stdout] test oauth::providers::tests::test_urlencoded_space ... ok
[INFO] [stdout] test oauth::providers::tests::test_urlencoded_hash_and_plus ... ok
[INFO] [stdout] test oauth::providers::tests::test_urlencoded_special_chars ... ok
[INFO] [stdout] test oauth::server::tests::test_find_available_port ... ok
[INFO] [stdout] test oauth::server::tests::test_find_available_port_returns_distinct_ports ... ok
[INFO] [stdout] test oauth::server::tests::test_pkce_challenge_generation ... ok
[INFO] [stdout] test oauth::server::tests::test_pkce_uniqueness ... ok
[INFO] [stdout] test oauth::server::tests::test_pkce_verifier_length_rfc_compliant ... ok
[INFO] [stdout] test oauth::server::tests::test_pkce_verifier_url_safe_chars_only ... ok
[INFO] [stdout] test oauth::source::tests::test_credential_chain_env_var ... ok
[INFO] [stdout] test oauth::source::tests::test_extract_jwt_exp_invalid_token ... ok
[INFO] [stdout] test oauth::source::tests::test_normalize_openai_to_chatgpt ... ok
[INFO] [stdout] test oauth::source::tests::test_extract_account_id_from_id_token ... ok
[INFO] [stdout] test oauth::source::tests::test_raw_credential_into_oauth_token ... ok
[INFO] [stdout] test oauth::tests::test_auth_type_default_is_api_key ... ok
[INFO] [stdout] test oauth::source::tests::test_extract_jwt_claim ... ok
[INFO] [stdout] test oauth::source::tests::test_extract_jwt_exp ... ok
[INFO] [stdout] test oauth::tests::test_oauth_token_expired_exactly_at_boundary ... ok
[INFO] [stdout] test oauth::tests::test_oauth_provider_display_names ... ok
[INFO] [stdout] test oauth::tests::test_auth_type_serde_roundtrip ... ok
[INFO] [stdout] test oauth::tests::test_oauth_provider_serde_roundtrip ... ok
[INFO] [stdout] test oauth::tests::test_oauth_token_expired ... ok
[INFO] [stdout] test oauth::tests::test_oauth_token_negative_buffer_extends_window ... ok
[INFO] [stdout] test oauth::tests::test_oauth_token_json_roundtrip_minimal ... ok
[INFO] [stdout] test oauth::tests::test_oauth_token_no_expiry ... ok
[INFO] [stdout] test oauth::source::tests::test_credential_chain_empty_env_skipped ... ok
[INFO] [stdout] test oauth::tests::test_openai_deserializes_for_backward_compat ... ok
[INFO] [stdout] test oauth::tests::test_oauth_token_not_expired ... ok
[INFO] [stdout] test oauth::tests::test_parse_provider_str ... ok
[INFO] [stdout] test oauth::tests::test_parse_token_response_minimal ... ok
[INFO] [stdout] test oauth::tests::test_parse_token_response_missing_access_token ... ok
[INFO] [stdout] test oauth::tests::test_parse_token_response_single_scope ... ok
[INFO] [stdout] test oauth::token::tests::test_reexport_extract_jwt_exp ... ok
[INFO] [stdout] test oauth::token::tests::token_keyring_wrappers_are_disabled ... ok
[INFO] [stdout] test process::launch::tests::claude_visible_model_adds_suffix_only_for_large_context_models ... ok
[INFO] [stdout] test process::launch::tests::claudex_websearch_guard_adds_default_args_before_user_args ... ok
[INFO] [stdout] test process::launch::tests::claudex_websearch_guard_does_not_duplicate_tool_flags ... ok
[INFO] [stdout] test process::launch::tests::claudex_websearch_guard_uses_kebab_case_flags_when_advertised ... ok
[INFO] [stdout] test oauth::tests::test_parse_provider_str_empty ... ok
[INFO] [stdout] test oauth::tests::test_parse_provider_str_case_insensitive ... ok
[INFO] [stdout] test oauth::tests::test_parse_token_response_access_token_not_string ... ok
[INFO] [stdout] test oauth::tests::test_parse_token_response_empty_object ... ok
[INFO] [stdout] test oauth::tests::test_parse_token_response_expires_in_computed_correctly ... ok
[INFO] [stdout] test oauth::tests::test_parse_token_response ... ok
[INFO] [stdout] test oauth::tests::test_oauth_token_expired_with_buffer ... ok
[INFO] [stdout] test process::launch::tests::large_context_gpt_detection_matches_boundary ... ok
[INFO] [stdout] test process::launch::tests::openai_model_auto_compact_window_does_not_limit_large_context_gpt_models ... ok
[INFO] [stdout] test process::launch::tests::openai_responses_oauth_profile_enables_context_window_override ... ok
[INFO] [stdout] test oauth::tests::test_oauth_token_json_roundtrip ... ok
[INFO] [stdout] test process::launch::tests::parse_claude_guard_support_prefers_camel_case_flags ... ok
[INFO] [stdout] test process::launch::tests::test_build_resume_hint_filters_existing_resume ... ok
[INFO] [stdout] test process::launch::tests::test_build_resume_hint_resume_at_end ... ok
[INFO] [stdout] test proxy::adapter::responses::tests::test_chatgpt_codex_backend_gets_default_instructions ... ok
[INFO] [stdout] test proxy::adapter::responses::tests::test_non_chatgpt_responses_backend_keeps_missing_instructions ... ok
[INFO] [stdout] test proxy::error::tests::test_circuit_breaker_display ... ok
[INFO] [stdout] test proxy::error::tests::test_into_response_bad_request ... ok
[INFO] [stdout] test proxy::adapter::responses::tests::test_old_image_history_does_not_force_image_model ... ok
[INFO] [stdout] test proxy::adapter::responses::tests::test_current_image_uses_image_model ... ok
[INFO] [stdout] test proxy::error::tests::test_into_response_not_found ... ok
[INFO] [stdout] test proxy::error::tests::test_into_response_unauthorized ... ok
[INFO] [stdout] test proxy::error::tests::test_upstream_error_display ... ok
[INFO] [stdout] test proxy::error_translation::tests::circuit_decision_keeps_auth_and_account_errors_direct ... ok
[INFO] [stdout] test proxy::error_translation::tests::circuit_decision_keeps_request_errors_direct ... ok
[INFO] [stdout] test proxy::error_translation::tests::common_status_codes_map_to_anthropic_types ... ok
[INFO] [stdout] test proxy::error_translation::tests::context_length_exceeded_maps_to_compact_trigger ... ok
[INFO] [stdout] test process::launch::tests::test_build_resume_hint_with_extra_args ... ok
[INFO] [stdout] test proxy::error::tests::test_profile_not_found_display ... ok
[INFO] [stdout] test proxy::error_translation::tests::circuit_decision_retries_provider_health_errors ... ok
[INFO] [stdout] test proxy::error_translation::tests::empty_stream_is_clear_api_error ... ok
[INFO] [stdout] test proxy::error_translation::tests::local_transport_error_is_clear_api_error ... ok
[INFO] [stdout] test proxy::error_translation::tests::invalidated_token_maps_to_terminal_400_with_guidance ... ok
[INFO] [stdout] test proxy::error_translation::tests::response_failed_overloaded_maps_to_overloaded ... ok
[INFO] [stdout] test proxy::error_translation::tests::responses_service_unavailable_maps_to_overloaded ... ok
[INFO] [stdout] test proxy::fallback::tests::test_default_values ... ok
[INFO] [stdout] test proxy::error_translation::tests::schema_bug_preserves_invalid_request_message ... ok
[INFO] [stdout] test process::launch::tests::unknown_guard_arg_error_requires_guard_flag_reference ... ok
[INFO] [stdout] test config::tests::test_figment_config_example_toml ... ok
[INFO] [stdout] test proxy::fallback::tests::test_halfopen_after_timeout ... ok
[INFO] [stdout] test proxy::fallback::tests::test_is_open ... ok
[INFO] [stdout] test proxy::fallback::tests::test_halfopen_failure_reopens ... ok
[INFO] [stdout] test proxy::fallback::tests::test_halfopen_success_closes ... ok
[INFO] [stdout] test proxy::error_translation::tests::responses_incomplete_max_output_tokens_maps_to_compact_trigger ... ok
[INFO] [stdout] test proxy::fallback::tests::test_closed_can_attempt ... ok
[INFO] [stdout] test proxy::fallback::tests::test_halfopen_allows_attempt ... ok
[INFO] [stdout] test proxy::fallback::tests::test_open_rejects_attempts ... ok
[INFO] [stdout] test proxy::fallback::tests::test_single_failure_stays_closed ... ok
[INFO] [stdout] test proxy::fallback::tests::test_success_resets_state ... ok
[INFO] [stdout] test proxy::fallback::tests::test_threshold_opens_circuit ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_override_detects_current_xml_compact_command ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_audit_ignores_existing_compacted_context_without_task_directive ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_override_appends_instruction_and_removes_reasoning ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_override_detects_hidden_summarizer_task_within_first_8_lines ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_override_detects_translated_hidden_summarizer_prompt ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_override_detects_current_hidden_summarizer_prompt ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_override_ignores_historical_compact_command ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_override_ignores_hidden_summarizer_task_after_first_8_lines ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_audit_detects_claude_compact_command ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_override_ignores_quoted_compact_command_markers ... ok
[INFO] [stdout] test proxy::handler::tests::deterministic_translated_errors_do_not_count_against_circuit ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_override_is_not_applied_to_regular_requests ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_override_ignores_historical_summarizer_prompt ... ok
[INFO] [stdout] test proxy::handler::tests::test_apply_metadata_from_headers_sets_session_id ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_audit_detects_summary_task_without_dumping_transcript_text ... ok
[INFO] [stdout] test proxy::handler::tests::test_extract_skips_tool_use_blocks ... ok
[INFO] [stdout] test proxy::handler::tests::test_extract_text_from_response ... ok
[INFO] [stdout] test proxy::handler::tests::test_extract_empty_content ... ok
[INFO] [stdout] test proxy::handler::tests::test_prune_images_inside_old_tool_results ... ok
[INFO] [stdout] test proxy::handler::tests::compact_prompt_override_ignores_historical_translated_summarizer_prompt ... ok
[INFO] [stdout] test proxy::handler::tests::test_extract_no_content_field ... ok
[INFO] [stdout] test proxy::handler::tests::test_responses_preflight_detects_failed_context_overflow_event ... ok
[INFO] [stdout] test proxy::handler::tests::test_responses_preflight_does_not_treat_hidden_reasoning_as_visible_content ... ok
[INFO] [stdout] test proxy::handler::tests::test_prune_keeps_newest_image_message_and_prunes_older_images ... ok
[INFO] [stdout] test proxy::handler::tests::test_responses_preflight_extracts_overloaded_error ... ok
[INFO] [stdout] test proxy::handler::tests::test_responses_preflight_metadata_verification_overrides_overloaded_error ... ok
[INFO] [stdout] test proxy::handler::tests::test_responses_preflight_replays_normal_stream ... ok
[INFO] [stdout] test proxy::handler::tests::test_responses_preflight_treats_function_call_as_visible_content ... ok
[INFO] [stdout] test proxy::handler::tests::test_prune_keeps_last_image_across_followup_text_turns ... ok
[INFO] [stdout] test proxy::handler::tests::test_retry_after_delay_is_capped ... ok
[INFO] [stdout] test proxy::handler::tests::test_responses_preflight_detects_context_overflow ... ok
[INFO] [stdout] test proxy::handler::tests::test_responses_preflight_ignores_context_words_echoed_in_created_event ... ok
[INFO] [stdout] test proxy::handler::tests::test_responses_preflight_extracts_split_overloaded_error ... ok
[INFO] [stdout] test proxy::handler::tests::test_responses_preflight_ignores_event_names_inside_metadata ... ok
[INFO] [stdout] test proxy::error::tests::test_bad_request_display ... ok
[INFO] [stdout] test process::launch::tests::test_build_resume_hint_no_extra_args ... ok
[INFO] [stdout] test proxy::handler::tests::test_apply_metadata_from_headers_skips_non_responses_profiles ... ok
[INFO] [stdout] test proxy::handler::tests::test_truncate_ascii_at_limit ... ok
[INFO] [stdout] test proxy::handler::tests::test_truncate_ascii_over_limit ... ok
[INFO] [stdout] test proxy::handler::tests::test_truncate_ascii_within_limit ... ok
[INFO] [stdout] test proxy::handler::tests::test_truncate_empty_string ... ok
[INFO] [stdout] test proxy::metrics::tests::test_avg_latency_empty ... ok
[INFO] [stdout] test proxy::handler::tests::transport_errors_count_against_circuit ... ok
[INFO] [stdout] test proxy::metrics::tests::test_avg_latency_single ... ok
[INFO] [stdout] test proxy::metrics::tests::test_latency_buffer_cap_at_100 ... ok
[INFO] [stdout] test proxy::metrics::tests::test_metrics_store_get_or_create ... ok
[INFO] [stdout] test proxy::metrics::tests::test_new_metrics_are_zero ... ok
[INFO] [stdout] test proxy::metrics::tests::test_success_rate_no_requests ... ok
[INFO] [stdout] test proxy::metrics::tests::test_success_rate_mixed ... ok
[INFO] [stdout] test proxy::metrics::tests::test_metrics_store_snapshot ... ok
[INFO] [stdout] test proxy::tests::request_body_limit_accepts_custom_byte_count ... ok
[INFO] [stdout] test proxy::models::tests::test_profile_model_entries_include_slots_without_duplicates ... ok
[INFO] [stdout] test proxy::metrics::tests::test_record_failure ... ok
[INFO] [stdout] test proxy::metrics::tests::test_record_success ... ok
[INFO] [stdout] test proxy::tests::request_body_limit_accepts_zero_for_provider_decides ... ok
[INFO] [stdout] test proxy::handler::tests::test_truncate_zero_length ... ok
[INFO] [stdout] test proxy::metrics::tests::test_avg_latency_multiple ... ok
[INFO] [stdout] test proxy::handler::tests::test_truncate_utf8_boundary ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_assistant_with_tool_use ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_model_override ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_full_tool_use_roundtrip ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_basic_user_message ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_model_override_strips_1m_suffix ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_multiple_tool_results_in_one_user_message ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_parameters_passthrough ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_read_pdf_tool_call_response_keeps_pages ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_openai_tool_call_response ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_read_tool_call_response_strips_invalid_pages ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_openai_text_response ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_stop_reason_mapping ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_edit_tool_call_response_preserves_pages_field ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_system_prompt_array ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tool_choice_object_auto ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_system_prompt_string ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tool_choice_object_none ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tool_choice_object_any ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_empty_openai_response ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tool_choice_string_any ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tool_choice_string_auto ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tool_name_roundtrip ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tool_result_empty_content ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tool_result_mixed_with_text ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tool_result_with_array_content ... ok
[INFO] [stdout] test proxy::tests::request_body_limit_defaults_to_anthropic_limit ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_done_marker ... ok
[INFO] [stdout] test proxy::tests::request_body_limit_rejects_invalid_values ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tools_conversion ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_empty_content_ignored ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_finalize_tool_call_no_pending ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_error_json_maps_to_anthropic_error ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_block_index_increments ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_finish_reason_tool_calls_finalizes ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_no_data_prefix_returns_none ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_invalid_json_returns_none ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_process_text_delta ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tool_result_in_user_message ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_subsequent_text_delta_no_block_start ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_read_stream_strips_invalid_pages ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_tool_call_argument_accumulation ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_tool_call_start ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_read_pdf_stream_keeps_pages ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_basic_user_message ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_untranslatable_stream_returns_error_before_message_start ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_usage_tracking ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_anthropic_to_responses_strips_1m_model_suffix ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_dedupe_preserves_small_duplicate_function_outputs ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_dedupe_preserves_recent_duplicate_function_outputs ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tool_choice_object_specific_tool ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_dedupe_old_large_duplicate_function_outputs ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_plain_request_does_not_request_reasoning_by_default ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_document_file_block_maps_to_input_file ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_read_tool_use_strips_invalid_pages ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_responses_to_anthropic_output_text_fallback ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_empty_image_source_is_not_forwarded ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_read_pdf_tool_use_keeps_pages ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_invalid_structured_output_schema_errors ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_json_schema_format_without_name_gets_default_name ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_responses_to_anthropic_text ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_responses_to_anthropic_text_part_shape ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_responses_to_anthropic_tool_call ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_structured_output_and_prompt_cache_mapping ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_server_tool_without_opt_in_errors ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_system_prompt_array ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_tool_choice_mapping ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_usage_cache_details_are_mapped ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_tool_use_roundtrip ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_codex_rate_limits_event_emits_error ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_tool_result_image_content_becomes_user_image_message ... ok
[INFO] [stdout] test proxy::translate::responses::tests::test_unsafe_document_format_errors ... ok
[INFO] [stdout] test proxy::translate::chat_completions::tests::test_tool_choice_string_none ... ok
[INFO] [stdout] test proxy::translate::chat_completions_stream::tests::test_edit_stream_preserves_pages_field_and_streams_deltas ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_completed_extracts_usage ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_completed_usage_is_emitted_in_final_message_delta ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_completed_usage_ignores_reasoning_token_breakdown ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_edit_function_call_argument_deltas_still_stream_and_preserve_pages ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_incomplete_max_output_without_visible_output_translates_to_compact_error ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_incomplete_max_output_with_visible_output_finishes_as_max_tokens ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_final_data_line_without_newline_is_processed ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_metadata_verification_overrides_later_overloaded_error ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_non_read_function_call_argument_deltas_still_stream ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_metadata_verification_stream_error_before_message_start ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_context_overflow_translates_to_claude_compact_error ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_event_error_overloaded_translates_to_overloaded_error ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_event_line_supplies_type_when_data_omits_type ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_function_call_flow ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_output_item_done_message_text ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_read_function_call_argument_deltas_strip_invalid_pages ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_read_function_call_arguments_done_strips_invalid_pages ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_response_failed_emits_anthropic_error ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_stream_state_tracks_open_tool_for_diagnostics ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_response_failed_overloaded_translates_to_overloaded_error ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_untranslatable_stream_returns_error_before_message_start ... ok
[INFO] [stdout] test proxy::util::tests::test_format_key_preview_empty ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_text_delta ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_stream_error_before_content_does_not_emit_message_start ... ok
[INFO] [stdout] test proxy::util::tests::test_format_key_preview_long ... ok
[INFO] [stdout] test proxy::util::tests::test_format_sse ... ok
[INFO] [stdout] test proxy::util::tests::test_format_key_preview_short ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_orphan_function_arguments_delta_returns_error_before_message_start ... ok
[INFO] [stdout] test proxy::util::tests::test_to_anthropic_error ... ok
[INFO] [stdout] test proxy::util::tests::test_truncate_65_chars ... ok
[INFO] [stdout] test proxy::util::tests::test_truncate_exactly_64_unchanged ... ok
[INFO] [stdout] test proxy::util::tests::test_truncate_preserves_determinism ... ok
[INFO] [stdout] test proxy::util::tests::test_truncate_short_name_unchanged ... ok
[INFO] [stdout] test router::classifier::tests::test_extract_array_content ... ok
[INFO] [stdout] test router::classifier::tests::test_extract_empty_messages ... ok
[INFO] [stdout] test router::classifier::tests::test_extract_last_user_among_multiple ... ok
[INFO] [stdout] test router::classifier::tests::test_extract_no_messages_field ... ok
[INFO] [stdout] test router::classifier::tests::test_extract_no_user_message ... ok
[INFO] [stdout] test router::tests::test_defaults ... ok
[INFO] [stdout] test router::tests::test_resolve_exact_match ... ok
[INFO] [stdout] test router::tests::test_resolve_fallback_to_default ... ok
[INFO] [stdout] test router::tests::test_resolve_no_match_no_default ... ok
[INFO] [stdout] test terminal::detect::tests::test_detect_returns_bool ... ok
[INFO] [stdout] test terminal::detect::tests::test_domterm_returns_true ... ok
[INFO] [stdout] test terminal::detect::tests::test_force_hyperlinks_overrides_all ... ok
[INFO] [stdout] test terminal::detect::tests::test_force_hyperlinks_zero_no_effect ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_read_pdf_function_call_arguments_done_keeps_pages ... ok
[INFO] [stdout] test terminal::detect::tests::test_ghostty_term_detected ... ok
[INFO] [stdout] test router::classifier::tests::test_extract_string_content ... ok
[INFO] [stdout] test terminal::detect::tests::test_iterm_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_hyper_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_not_tty_returns_false ... ok
[INFO] [stdout] test terminal::detect::tests::test_plain_xterm_not_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_priority_force_over_not_tty ... ok
[INFO] [stdout] test terminal::detect::tests::test_kitty_term_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_unknown_tty_returns_false ... ok
[INFO] [stdout] test terminal::detect::tests::test_tabby_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_vscode_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_vte_version_5000_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_vte_version_non_numeric_not_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_unknown_term_program_not_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_vte_version_above_5000_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_warp_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_wezterm_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_vte_version_below_5000_not_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_windows_terminal_detected ... ok
[INFO] [stdout] test terminal::detect::tests::test_mintty_detected ... ok
[INFO] [stdout] test terminal::osc8::tests::test_already_has_osc8 ... ok
[INFO] [stdout] test terminal::osc8::tests::test_empty_line ... ok
[INFO] [stdout] test terminal::osc8::tests::test_enhance_preserves_non_link_text ... ok
[INFO] [stdout] test terminal::osc8::tests::test_dotdot_path ... ok
[INFO] [stdout] test terminal::osc8::tests::test_file_cache_negative_result ... ok
[INFO] [stdout] test terminal::osc8::tests::test_file_cache_works ... ok
[INFO] [stdout] test terminal::osc8::tests::test_file_path_to_uri_absolute ... ok
[INFO] [stdout] test terminal::osc8::tests::test_file_path_to_uri_relative ... ok
[INFO] [stdout] test terminal::osc8::tests::test_ansi_colors_preserved ... ok
[INFO] [stdout] test terminal::osc8::tests::test_file_path_to_uri_with_line ... ok
[INFO] [stdout] test terminal::osc8::tests::test_absolute_path_nonexistent ... ok
[INFO] [stdout] test terminal::osc8::tests::test_absolute_path_existing_file ... ok
[INFO] [stdout] test terminal::osc8::tests::test_line_with_only_dots_and_slashes ... ok
[INFO] [stdout] test terminal::osc8::tests::test_https_url ... ok
[INFO] [stdout] test terminal::osc8::tests::test_link_detector_new_cwd ... ok
[INFO] [stdout] test terminal::osc8::tests::test_mailto_link ... ok
[INFO] [stdout] test terminal::osc8::tests::test_http_url_basic ... ok
[INFO] [stdout] test terminal::osc8::tests::test_multiple_ansi_segments_with_url ... ok
[INFO] [stdout] test terminal::osc8::tests::test_multiple_links_one_line ... ok
[INFO] [stdout] test terminal::osc8::tests::test_overlaps_detection ... ok
[INFO] [stdout] test terminal::osc8::tests::test_http_url ... ok
[INFO] [stdout] test terminal::osc8::tests::test_line_with_only_line_number_path ... ok
[INFO] [stdout] test terminal::osc8::tests::test_multiple_urls_with_text_between ... ok
[INFO] [stdout] test terminal::osc8::tests::test_path_with_line_col ... ok
[INFO] [stdout] test terminal::osc8::tests::test_quick_skip_no_linklike_chars ... ok
[INFO] [stdout] test terminal::osc8::tests::test_pure_ansi_escape_line ... ok
[INFO] [stdout] test proxy::tests::upstream_http_client_uses_idle_read_timeout_instead_of_total_deadline ... ok
[INFO] [stdout] test oauth::manager::tests::test_get_token_no_provider_fails ... ok
[INFO] [stdout] test terminal::osc8::tests::test_plain_text_no_change ... ok
[INFO] [stdout] test oauth::manager::tests::test_get_token_non_oauth_profile_fails ... ok
[INFO] [stdout] test terminal::osc8::tests::test_relative_path_nonexistent_not_wrapped ... ok
[INFO] [stdout] test oauth::manager::tests::test_invalidate_clears_cache ... ok
[INFO] [stdout] test terminal::osc8::tests::test_split_ansi_segments_mixed ... ok
[INFO] [stdout] test terminal::osc8::tests::test_path_and_url_on_same_line ... ok
[INFO] [stdout] test terminal::osc8::tests::test_split_ansi_segments_no_ansi ... ok
[INFO] [stdout] test terminal::osc8::tests::test_url_with_encoded_chars ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_stream_timeout_error_explains_claudex_upstream_timeout ... ok
[INFO] [stdout] test terminal::osc8::tests::test_wrap_osc8_format ... ok
[INFO] [stdout] test terminal::osc8::tests::test_split_ansi_segments_empty ... ok
[INFO] [stdout] test terminal::pty::tests::test_detect_resume_empty_line ... ok
[INFO] [stdout] test terminal::osc8::tests::test_url_with_fragment ... ok
[INFO] [stdout] test terminal::osc8::tests::test_url_with_trailing_punctuation ... ok
[INFO] [stdout] test terminal::osc8::tests::test_url_with_parentheses ... ok
[INFO] [stdout] test terminal::osc8::tests::test_split_ansi_segments_only_ansi ... ok
[INFO] [stdout] test terminal::pty::tests::test_detect_resume_overwrites_previous ... ok
[INFO] [stdout] test terminal::pty::tests::test_detect_resume_with_ansi ... ok
[INFO] [stdout] test terminal::pty::tests::test_detect_resume_with_leading_whitespace ... ok
[INFO] [stdout] test terminal::pty::tests::test_strip_ansi_csi_color ... ok
[INFO] [stdout] test terminal::pty::tests::test_strip_ansi_csi_cursor_movement ... ok
[INFO] [stdout] test terminal::pty::tests::test_strip_ansi_empty ... ok
[INFO] [stdout] test terminal::pty::tests::test_strip_ansi_mixed_escapes ... ok
[INFO] [stdout] test terminal::pty::tests::test_strip_ansi_osc_with_bel ... ok
[INFO] [stdout] test terminal::pty::tests::test_detect_resume_not_matched ... ok
[INFO] [stdout] test terminal::pty::tests::test_strip_ansi_osc_with_st ... ok
[INFO] [stdout] test terminal::pty::tests::test_strip_ansi_plain_text ... ok
[INFO] [stdout] test terminal::pty::tests::test_strip_ansi_single_char_escape ... ok
[INFO] [stdout] test terminal::pty::tests::test_utf8_safe_end_ascii_only ... ok
[INFO] [stdout] test terminal::pty::tests::test_utf8_safe_end_complete_multibyte ... ok
[INFO] [stdout] test terminal::pty::tests::test_utf8_safe_end_empty ... ok
[INFO] [stdout] test terminal::pty::tests::test_utf8_safe_end_incomplete_multibyte ... ok
[INFO] [stdout] test terminal::pty::tests::test_utf8_safe_end_mixed_ascii_and_incomplete ... ok
[INFO] [stdout] test tests::executable_mode_detects_config_binary ... ok
[INFO] [stdout] test tests::executable_mode_env_overrides_argv0_for_shims ... ok
[INFO] [stdout] test terminal::pty::tests::test_detect_resume_partial_prefix ... ok
[INFO] [stdout] test tests::find_available_local_port_returns_bindable_port ... ok
[INFO] [stdout] test tests::launcher_hyperlinks_env_maps_to_config ... ok
[INFO] [stdout] test tests::installer_command_display_uses_platform_installer ... ok
[INFO] [stdout] test tests::launcher_profile_prefers_env_then_codex_sub_then_first_enabled ... ok
[INFO] [stdout] test tests::noninteractive_startup_args_skip_release_check ... ok
[INFO] [stdout] test tests::oauth_expiry_status_ignores_tokens_after_warning_window ... ok
[INFO] [stdout] test tests::oauth_expiry_status_warns_for_expired_token ... ok
[INFO] [stdout] test terminal::osc8::tests::test_file_url_passthrough ... ok
[INFO] [stdout] test tests::oauth_expiry_status_warns_within_three_days ... ok
[INFO] [stdout] test terminal::pty::tests::test_detect_resume_osc8_wrapped ... ok
[INFO] [stdout] test tests::proxy_start_keeps_explicit_port_override ... ok
[INFO] [stdout] test tests::startup_oauth_health_reports_missing_token ... ok
[INFO] [stdout] test tests::proxy_start_without_override_selects_ephemeral_port ... ok
[INFO] [stdout] test update::tests::compare_versions_reports_local_ahead ... ok
[INFO] [stdout] test tests::windows_shim_target_uses_latest_metadata_and_mode ... ok
[INFO] [stdout] test tests::update_check_runs_after_three_hour_cache_window ... ok
[INFO] [stdout] test update::tests::compare_versions_reports_up_to_date ... ok
[INFO] [stdout] test update::tests::installer_command_uses_installer_script ... ok
[INFO] [stdout] test update::tests::newer_version_returns_none_for_current ... ok
[INFO] [stdout] test terminal::pty::tests::test_detect_resume_uuid_format ... ok
[INFO] [stdout] test terminal::osc8::tests::test_url_not_double_wrapped ... ok
[INFO] [stdout] test update::tests::release_manifest_parses_version ... ok
[INFO] [stdout] test update::tests::compare_versions_reports_update_available ... ok
[INFO] [stdout] test update::tests::newer_version_strips_v_prefix ... ok
[INFO] [stdout] test terminal::pty::tests::test_detect_resume_plain ... ok
[INFO] [stdout] test oauth::manager::tests::test_cache_hit ... ok
[INFO] [stdout] test update::tests::newer_version_returns_none_when_current_is_newer_than_latest ... ok
[INFO] [stdout] test terminal::osc8::tests::test_relative_path_dir_file ... ok
[INFO] [stdout] test terminal::osc8::tests::test_relative_path_dot_slash ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_stream_unexpected_eof_after_text_explains_midstream_disconnect ... ok
[INFO] [stdout] test oauth::server::tests::test_callback_server_receives_code ... ok
[INFO] [stdout] test proxy::translate::responses_stream::tests::test_stream_transport_error_after_text_closes_block_and_surfaces_root_cause ... ok
[INFO] [stdout] test oauth::server::tests::test_callback_server_handles_error_response ... ok
[INFO] [stdout] test proxy::handler::tests::test_transport_error_records_circuit_breaker_failure ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 479 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.64s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/claudex.rs (/opt/rustwide/target/debug/deps/claudex-d014e2c97316e448)
[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 unittests src/bin/claudex-config.rs (/opt/rustwide/target/debug/deps/claudex_config-7eec6eba2d1b84b2)
[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/installers_static.rs (/opt/rustwide/target/debug/deps/installers_static-63c89f110000b8b5)
[INFO] [stdout] 
[INFO] [stdout] running 19 tests
[INFO] [stdout] test unix_installer_replaces_existing_path_install_and_verifies_latest ... ok
[INFO] [stdout] test claudex_binary_dispatches_by_argv0_for_config_links ... ok
[INFO] [stdout] test unix_installer_avoids_global_dest_variable_collision ... ok
[INFO] [stdout] test unix_installer_explains_running_proxy_action ... ok
[INFO] [stdout] test windows_installer_checks_native_exit_codes ... ok
[INFO] [stdout] test windows_installer_handles_temp_source_cleanup ... ok
[INFO] [stdout] test installers_use_claudex_config_for_management ... ok
[INFO] [stdout] test windows_installer_falls_back_to_source_then_deploys_same_path ... ok
[INFO] [stdout] test windows_installer_stops_running_proxy_before_versioned_deploy ... ok
[INFO] [stdout] test windows_installer_stages_real_binaries_before_switching_latest ... ok
[INFO] [stdout] test unix_installer_downloads_with_progress_timeout_and_retries ... ok
[INFO] [stdout] test windows_installer_stops_cargo_bin_proxy_before_source_install ... ok
[INFO] [stdout] test windows_installer_uses_safe_web_wrappers ... ok
[INFO] [stdout] test windows_installer_validates_repo_and_avoids_noninteractive_prompts ... ok
[INFO] [stdout] test windows_installer_reports_unsupported_arm64 ... ok
[INFO] [stdout] test windows_installer_uses_versioned_shim_layout ... ok
[INFO] [stdout] test rust_binary_supports_windows_shim_dispatch_contract ... ok
[INFO] [stdout] test unix_installer_supports_optional_macos_codesigning ... ok
[INFO] [stdout] test unix_installer_smoke_tests_config_symlink_before_and_after_deploy ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/proxy_integration.rs (/opt/rustwide/target/debug/deps/proxy_integration-403f0b36b67bc26c)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test test_integration_framework_exists ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests claudex
[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" "36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6", kill_on_drop: false }`
[INFO] [stdout] 36495e5a4dedeefa3666b9cf0aa554e2974207ab1b7640d1a7f4390a29eb15d6
