[INFO] fetching crate rho-providers 2.13.1...
[INFO] testing rho-providers-2.13.1 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate rho-providers 2.13.1 into /workspace/builds/worker-2-tc2/source
[INFO] started tweaking crates.io crate rho-providers 2.13.1
[INFO] finished tweaking crates.io crate rho-providers 2.13.1
[INFO] tweaked toml for crates.io crate rho-providers 2.13.1 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate rho-providers 2.13.1 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate rho-providers 2.13.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.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-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1
[INFO] running `Command { std: "docker" "start" "8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1", 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" "8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1", 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" "8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling bytes v1.12.0
[INFO] [stderr]    Compiling cc v1.2.65
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling socket2 v0.6.4
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling futures-io v0.3.34
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling endi v1.1.1
[INFO] [stderr]    Compiling futures-lite v2.6.1
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling rustls v0.23.45
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling hybrid-array v0.4.15
[INFO] [stderr]    Compiling piper v0.2.5
[INFO] [stderr]    Compiling http v1.5.0
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling uuid v1.26.1
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling async-channel v2.5.0
[INFO] [stderr]    Compiling async-lock v3.4.2
[INFO] [stderr]    Compiling async-broadcast v0.7.2
[INFO] [stderr]    Compiling async-executor v1.14.0
[INFO] [stderr]    Compiling ordered-stream v0.2.0
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling blocking v1.6.2
[INFO] [stderr]    Compiling futures-channel v0.3.34
[INFO] [stderr]    Compiling rustls-native-certs v0.8.4
[INFO] [stderr]    Compiling pem-rfc7468 v0.7.0
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling cbc v0.1.2
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling ed25519 v2.2.3
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling rand v0.10.2
[INFO] [stderr]    Compiling ssh-encoding v0.2.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.38.2
[INFO] [stderr]    Compiling keyring-core v1.0.0
[INFO] [stderr]    Compiling base16ct v0.2.0
[INFO] [stderr]    Compiling data-encoding v2.11.0
[INFO] [stderr]    Compiling sec1 v0.7.3
[INFO] [stderr]    Compiling toml_edit v0.25.12+spec-1.1.0
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling sha1 v0.11.0
[INFO] [stderr]    Compiling ssh-cipher v0.2.0
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling hashlink v0.12.2
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling base64 v0.23.1
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling num v0.4.3
[INFO] [stderr]    Compiling toml v1.1.3+spec-1.1.0
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling polling v3.11.0
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling futures-macro v0.3.34
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling async-trait v0.1.92
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling async-signal v0.2.14
[INFO] [stderr]    Compiling async-process v2.5.0
[INFO] [stderr]    Compiling futures-util v0.3.34
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling async-recursion v1.1.1
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling rustls-webpki v0.103.15
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling ed25519-dalek v2.2.0
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling ssh-key v0.6.7
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling zvariant_utils v3.4.0
[INFO] [stderr]    Compiling enumflags2 v0.7.12
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling zvariant_derive v5.12.0
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling zvariant v5.12.0
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tungstenite v0.30.0
[INFO] [stderr]    Compiling rustls-platform-verifier v0.7.0
[INFO] [stderr]    Compiling zbus_names v4.3.2
[INFO] [stderr]    Compiling webbrowser v1.2.4
[INFO] [stderr]    Compiling rusqlite v0.40.2
[INFO] [stderr]    Compiling zbus_macros v5.16.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling rho-sdk v5.6.0
[INFO] [stderr]    Compiling tokio-tungstenite v0.30.0
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling h2 v0.4.19
[INFO] [stderr]    Compiling zbus v5.16.0
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.13.5
[INFO] [stderr]    Compiling secret-service v5.1.0
[INFO] [stderr]    Compiling zbus-secret-service-keyring-store v1.0.0
[INFO] [stderr]    Compiling keyring v4.2.0
[INFO] [stderr]    Compiling rho-providers v2.13.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 50s
[INFO] running `Command { std: "docker" "inspect" "8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1", 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" "8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]    Compiling diff v0.1.13
[INFO] [stderr]    Compiling pretty_assertions v1.4.1
[INFO] [stderr]    Compiling reqwest v0.13.5
[INFO] [stderr]    Compiling rho-sdk v5.6.0
[INFO] [stderr]    Compiling polling v3.11.0
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling async-signal v0.2.14
[INFO] [stderr]    Compiling async-process v2.5.0
[INFO] [stderr]    Compiling zbus v5.16.0
[INFO] [stderr]    Compiling secret-service v5.1.0
[INFO] [stderr]    Compiling zbus-secret-service-keyring-store v1.0.0
[INFO] [stderr]    Compiling keyring v4.2.0
[INFO] [stderr]    Compiling rho-providers v2.13.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 18s
[INFO] running `Command { std: "docker" "inspect" "8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1", 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" "8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.50s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/rho-providers/7cd5524233ff397d/out/rho_providers-7cd5524233ff397d)
[INFO] [stdout] 
[INFO] [stdout] running 586 tests
[INFO] [stdout] test auth::codex_oauth::tests::callback_parser_accepts_matching_state_and_code ... ok
[INFO] [stdout] test auth::codex_oauth::tests::extracts_account_id_from_id_token_claims ... ok
[INFO] [stdout] test auth::codex_oauth::tests::oauth_debug_redacts_codes_and_pkce_secrets ... ok
[INFO] [stdout] test auth::codex_oauth::tests::callback_parser_rejects_state_mismatch ... ok
[INFO] [stdout] test auth::github_copilot_device::tests::device_login_debug_redacts_codes ... ok
[INFO] [stdout] test auth::codex_oauth::tests::callback_parser_reports_oauth_error ... ok
[INFO] [stdout] test auth::github_copilot_token::tests::auth_material_debug_redacts_token ... ok
[INFO] [stdout] test auth::github_copilot_token::tests::cached_copilot_token_refreshes_near_expiry_or_after_refresh_time ... ok
[INFO] [stdout] test auth::browser::tests::resolve_is_conservative_and_table_driven ... ok
[INFO] [stdout] test auth::codex_oauth::tests::extracts_plan_from_id_token_claims ... ok
[INFO] [stdout] test auth::github_copilot_token::tests::cached_material_uses_stored_endpoints ... ok
[INFO] [stdout] test auth::kimi_oauth::tests::debug_redacts_device_codes_and_complete_uri ... ok
[INFO] [stdout] test auth::kimi_token::tests::refresh_threshold_is_half_lifetime_with_five_minute_minimum ... ok
[INFO] [stdout] test auth::github_copilot_token::tests::token_endpoints_build_full_paths_from_api_base ... ok
[INFO] [stdout] test auth::codex_oauth::tests::unknown_plan_is_returned_for_invalid_or_missing_id_token_claims ... ok
[INFO] [stdout] test auth::login_dispatch::tests::multi_auth_provider_name_is_ambiguous_for_login ... ok
[INFO] [stdout] test auth::github_copilot_token::tests::cached_copilot_token_is_fresh_before_refresh_and_expiry ... ok
[INFO] [stdout] test auth::kimi_token::tests::token_without_expiration_does_not_refresh ... ok
[INFO] [stdout] test auth::login_dispatch::tests::owns_api_key_storage_and_deletion ... ok
[INFO] [stdout] test auth::login_dispatch::tests::login_prompt_maps_to_interactive_user_action ... ok
[INFO] [stdout] test auth::login_prompt::tests::constructors_copyable_url_and_debug_redaction ... ok
[INFO] [stdout] test auth::login_dispatch::tests::preferred_mode_uses_device_only_when_headless_and_capable ... ok
[INFO] [stdout] test auth::login_dispatch::tests::rejects_unknown_provider_before_starting_authentication ... ok
[INFO] [stdout] test auth::login_dispatch::tests::supports_device_login_only_for_device_capable_providers ... ok
[INFO] [stdout] test auth::loopback::tests::socket_address_format_supports_ipv6_callback_targets ... ok
[INFO] [stdout] test auth::loopback::tests::generated_callback_target_reaches_the_listener ... ok
[INFO] [stdout] test auth::codex_oauth::tests::authorize_url_contains_pkce_and_loopback_redirect ... ok
[INFO] [stdout] test auth::loopback::tests::callback_url_uses_the_bound_ipv4_target ... ok
[INFO] [stdout] test auth::ollama_device::tests::connect_url_includes_encoded_public_key ... ok
[INFO] [stdout] test auth::github_copilot_token::tests::empty_env_token_does_not_disable_stored_refresh ... ok
[INFO] [stdout] test auth::ollama_device::tests::generates_and_reloads_device_key ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::authorization_url_uses_callback_and_s256_challenge ... ok
[INFO] [stdout] test auth::kimi_oauth::tests::refresh_posts_form_and_returns_rotated_tokens ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::callback_parser_ignores_unrelated_browser_probes_and_nonce_mismatches ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::callback_parser_reports_denial_without_exposing_it_in_debug ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::callback_parser_accepts_only_matching_get_callback_with_code ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::callback_waiter_returns_browser_denial_after_failure_response ... ok
[INFO] [stdout] test auth::ollama_device::tests::load_or_create_does_not_truncate_existing_private_key ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::callback_waiter_skips_probes_and_sends_plain_text_success ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::generated_verifier_has_valid_length_and_characters ... ok
[INFO] [stdout] test auth::codex_oauth::tests::codex_device_login_exchanges_authorization_code_for_tokens ... ok
[INFO] [stdout] test auth::ollama_device::tests::create_new_reports_already_exists_without_truncating ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::pkce_challenge_matches_rfc_7636_s256_example ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::secret_values_are_redacted_from_debug_output ... ok
[INFO] [stdout] test auth::github_copilot_token::tests::token_exchange_maps_unauthorized_to_missing_auth ... ok
[INFO] [stdout] test auth::provider_credentials::tests::custom_host_acquisition_reads_store_key ... ok
[INFO] [stdout] test auth::codex_oauth::tests::codex_device_login_posts_client_id_and_parses_response ... ok
[INFO] [stdout] test auth::github_copilot_device::tests::github_copilot_device_login_posts_client_id_and_parses_response ... ok
[INFO] [stdout] test auth::provider_credentials::tests::ollama_acquisition_returns_explicit_no_auth_without_store_access ... ok
[INFO] [stdout] test auth::provider_credentials::tests::ollama_cloud_acquisition_reads_store_key_and_stays_isolated_from_local_ollama ... ok
[INFO] [stdout] test auth::github_copilot_device::tests::github_copilot_device_login_polls_until_success ... ok
[INFO] [stdout] test auth::xai_oauth::tests::authorization_url_uses_registered_loopback_and_pkce ... ok
[INFO] [stdout] test auth::xai_oauth::tests::callback_ignores_probes_and_non_callback_paths ... ok
[INFO] [stdout] test auth::xai_oauth::tests::callback_accepts_form_post_body ... ok
[INFO] [stdout] test auth::xai_oauth::tests::callback_preserves_oauth_error_description ... ok
[INFO] [stdout] test auth::provider_credentials::tests::ollama_cloud_acquisition_reports_missing_credentials_without_key ... ok
[INFO] [stdout] test auth::xai_oauth::tests::callback_requires_matching_state ... ok
[INFO] [stdout] test auth::xai_oauth::tests::token_response_records_expiry ... ok
[INFO] [stdout] test auth::provider_credentials::tests::ollama_cloud_device_acquisition_reports_missing_without_key_dir ... ok
[INFO] [stdout] test auth::xai_token::tests::auth_material_debug_redacts_access_token ... ok
[INFO] [stdout] test auth::xai_oauth::tests::oauth_debug_redacts_codes_and_pkce_secrets ... ok
[INFO] [stdout] test auth::xai_token::tests::refresh_merges_tokens_and_derives_expiry_from_expires_in ... ok
[INFO] [stdout] test credentials::backend::tests::availability_probe_retries_cleanup_after_delete_failure ... ok
[INFO] [stdout] test credentials::backend::tests::availability_probe_round_trips_through_memory_store ... ok
[INFO] [stdout] test credentials::backend::tests::availability_probe_is_non_destructive_for_existing_secrets ... ok
[INFO] [stdout] test credentials::backend::tests::backend_names_and_default_are_os_or_file ... ok
[INFO] [stdout] test credentials::backend::tests::open_os_uses_os_backend_without_file_fallback ... ok
[INFO] [stdout] test auth::kimi_oauth::tests::device_authorization_posts_form_client_id_and_parses_response ... ok
[INFO] [stdout] test credentials::backend::tests::parses_backend_selector_values ... ok
[INFO] [stdout] test credentials::backend::tests::probe_account_names_are_namespaced_and_random ... ok
[INFO] [stdout] test auth::github_copilot_device::tests::github_copilot_device_login_maps_access_denied ... ok
[INFO] [stdout] test credentials::file::tests::file_store_round_trips_secrets_under_rho_home ... ok
[INFO] [stdout] test credentials::file::tests::file_store_uses_private_unix_permissions ... ok
[INFO] [stdout] test credentials::backend::tests::file_backend_probe_uses_explicit_file_store ... ok
[INFO] [stdout] test credentials::file::tests::open_creates_credentials_directory_lazily_under_rho_home ... ok
[INFO] [stdout] test credentials::file::tests::rejects_empty_account_names ... ok
[INFO] [stdout] test credentials::file::tests::rejects_symlinked_credential_paths ... ok
[INFO] [stdout] test credentials::file::tests::removes_stale_secret_temp_files_while_locked ... ok
[INFO] [stdout] test credentials::openrouter_tests::blank_openrouter_oauth_keys_are_rejected ... ok
[INFO] [stdout] test credentials::file::tests::file_store_preserves_unrelated_secrets_across_updates ... ok
[INFO] [stdout] test credentials::openrouter_tests::missing_openrouter_oauth_credentials_name_the_selected_login_profile ... ok
[INFO] [stdout] test credentials::os::tests::chunk_account_names_are_derived_from_stable_base_account ... ok
[INFO] [stdout] test credentials::os::tests::chunk_manifest_supports_legacy_and_current_chunks ... ok
[INFO] [stdout] test credentials::os::tests::chunk_secret_preserves_unicode_boundaries ... ok
[INFO] [stdout] test credentials::os::tests::credential_account_names_are_stable ... ok
[INFO] [stdout] test credentials::file::tests::concurrent_writers_do_not_lose_secrets ... ok
[INFO] [stdout] test credentials::store_tests::auth_env_override_requires_a_nonblank_value_for_that_mode ... ok
[INFO] [stdout] test credentials::store_tests::codex_tokens_allow_missing_optional_fields ... ok
[INFO] [stdout] test credentials::store_tests::codex_tokens_round_trip_with_optional_fields ... ok
[INFO] [stdout] test credentials::store_tests::malformed_oauth_tokens_are_not_available_auth ... ok
[INFO] [stdout] test credentials::store_tests::available_auth_modes_includes_anthropic_api_key ... ok
[INFO] [stdout] test credentials::store_tests::empty_github_copilot_env_override_is_not_active ... ok
[INFO] [stdout] test credentials::store_tests::empty_oauth_tokens_are_not_available_auth ... ok
[INFO] [stdout] test credentials::store_tests::provider_api_keys_round_trip_through_memory_store ... ok
[INFO] [stdout] test credentials::store_tests::xai_tokens_round_trip_with_optional_fields ... ok
[INFO] [stdout] test credentials::store_tests::token_debug_redacts_every_secret_field ... ok
[INFO] [stdout] test credentials::store_tests::web_search_api_keys_use_dedicated_accounts ... ok
[INFO] [stdout] test model::catalog::tests::bare_uncached_current_provider_model_is_rejected ... ok
[INFO] [stdout] test auth::ollama_device::tests::authorize_request_adds_ts_and_raw_authorization ... ok
[INFO] [stdout] test credentials::store_tests::github_copilot_tokens_round_trip_with_cached_token_fields ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::key_exchange_rejects_invalid_json_without_exposing_body ... ok
[INFO] [stdout] test model::catalog::tests::login_groups_include_meta_and_merge_openai_codex ... ok
[INFO] [stdout] test model::catalog::tests::non_allowlisted_codex_model_is_rejected ... ok
[INFO] [stdout] test auth::github_copilot_token::tests::token_exchange_persists_endpoints_and_returns_material ... ok
[INFO] [stdout] test auth::ollama_device::tests::loads_ollama_generated_pem_wrapped_at_64_columns ... ok
[INFO] [stdout] test auth::xai_oauth::tests::code_exchange_echoes_xai_pkce_challenge ... ok
[INFO] [stdout] test model::catalog::tests::bare_model_selection_prefers_credential_backed_auth_mode ... ok
[INFO] [stdout] test model::catalog::tests::github_copilot_requires_cached_models ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::key_exchange_posts_expected_json_and_returns_key ... ok
[INFO] [stdout] test model::catalog::tests::bare_ambiguous_model_returns_error ... ok
[INFO] [stdout] test model::catalog::tests::opencode_go_has_no_default_model_when_cache_is_empty ... ok
[INFO] [stdout] test auth::xai_oauth::tests::device_setup_sends_client_and_offline_scopes ... ok
[INFO] [stdout] test model::catalog::tests::current_auth_wins_when_it_is_available_for_provider_selection ... ok
[INFO] [stdout] test auth::ollama_device::tests::signs_authorization_in_ollama_format ... ok
[INFO] [stdout] test model::catalog::tests::unknown_provider_is_rejected ... ok
[INFO] [stdout] test model::catalog::tests::provider_selection_ignores_current_auth_from_another_provider ... ok
[INFO] [stdout] test model::catalog::tests::provider_selection_keeps_current_auth_when_multiple_credentials_exist ... ok
[INFO] [stdout] test model::catalog::tests::local_catalog_includes_cached_models_without_credentials ... ok
[INFO] [stdout] test model::catalog::tests::provider_selection_prefers_credential_backed_auth_over_default ... ok
[INFO] [stdout] test model::favorites::tests::cycle_reports_why_it_did_not_move ... ok
[INFO] [stdout] test model::favorites::tests::cycles_usable_favorites_in_pin_order ... ok
[INFO] [stdout] test model::favorites::tests::legacy_provider_aliases_normalize_favorites ... ok
[INFO] [stdout] test model::favorites::tests::poolside_favorites_normalize_to_internal_model_and_match_legacy_forms ... ok
[INFO] [stdout] test model::favorites::tests::reorders_available_models_by_favorites ... ok
[INFO] [stdout] test model::favorites::tests::toggles_favorites ... ok
[INFO] [stdout] test model::models_dev::tests::anthropic_effort_catalog_stays_unknown_until_protocols_are_modeled ... ok
[INFO] [stdout] test model::catalog::tests::resolves_bare_model_across_all_available_auths ... ok
[INFO] [stdout] test model::catalog::tests::provider_selection_prefers_stored_key_over_keyless_default ... ok
[INFO] [stdout] test model::catalog::tests::resolves_legacy_openrouter_model_references_to_canonical_provider ... ok
[INFO] [stdout] test model::catalog::tests::provider_selection_uses_default_auth_when_no_credentials_available ... ok
[INFO] [stdout] test model::catalog::tests::resolves_poolside_references_to_internal_model_id ... ok
[INFO] [stdout] test model::models_dev::tests::deprecated_provider_models_only_returns_exact_deprecation_flags ... ok
[INFO] [stdout] test model::models_dev::tests::effort_options_without_none_do_not_inject_off_for_openai ... ok
[INFO] [stdout] test model::models_dev::tests::exact_catalog_toggle_does_not_imply_off ... ok
[INFO] [stdout] test model::models_dev::tests::batch_metadata_writes_inserts_all_records ... ok
[INFO] [stdout] test model::models_dev::tests::authenticated_provider_levels_replace_generic_catalog_levels ... ok
[INFO] [stdout] test model::display_name::tests::fixture_catalogs_do_not_share_cached_names ... ok
[INFO] [stdout] test model::models_dev::tests::first_effort_option_wins_and_missing_values_use_toggle ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::key_exchange_reports_status_without_exposing_secrets ... ok
[INFO] [stdout] test model::display_name::tests::ensure_awaits_when_the_catalog_snapshot_is_stale ... ok
[INFO] [stdout] test model::catalog::tests::preferred_cached_default_prefers_descriptor_default_when_present ... ok
[INFO] [stdout] test model::models_dev::tests::batch_metadata_writes_returns_zero_on_commit_failure ... ok
[INFO] [stdout] test model::catalog::tests::baked_provider_defaults_survive_empty_and_cached_models ... ok
[INFO] [stdout] test model::models_dev::tests::failed_hydrate_does_not_advance_readiness ... ok
[INFO] [stdout] test auth::openrouter_oauth::tests::key_exchange_rejects_missing_or_blank_key ... ok
[INFO] [stdout] test model::models_dev::tests::hydrate_writes_complete_rows_for_every_registered_provider ... ok
[INFO] [stdout] test model::display_name::tests::ensure_is_a_no_op_when_the_catalog_snapshot_is_current ... ok
[INFO] [stdout] test model::models_dev::tests::leaves_unknown_reasoning_option_schemas_unknown ... ok
[INFO] [stdout] test model::models_dev::tests::local_catalog_ref_parses_slug_and_qualified_ids ... ok
[INFO] [stdout] test model::models_dev::tests::local_models_document_resolves_the_requested_model_table ... ok
[INFO] [stdout] test model::models_dev::tests::local_reasoning_override_replaces_provider_levels_exactly ... ok
[INFO] [stdout] test model::models_dev::tests::malformed_catalog_rows_stay_lenient ... ok
[INFO] [stdout] test model::models_dev::tests::mixed_known_and_unknown_efforts_leave_capabilities_incomplete ... ok
[INFO] [stdout] test model::models_dev::tests::grok_4_7_build_fast_doubles_grok_4_7_catalog_price ... ok
[INFO] [stdout] test model::display_name::tests::a_catalog_write_reaches_a_lookup_that_already_missed ... ok
[INFO] [stdout] test model::models_dev::tests::image_input_follows_advertised_input_modalities ... ok
[INFO] [stdout] test model::models_dev::tests::models_dev_parses_the_catalog_name_and_rejects_blank_ones ... ok
[INFO] [stdout] test model::models_dev::tests::models_dev_parses_long_context_cost_tiers ... ok
[INFO] [stdout] test model::models_dev::tests::models_dev_resolves_sdk_package_from_provider_and_model_npm ... ok
[INFO] [stdout] test model::models_dev::tests::non_reasoning_models_are_not_configurable ... ok
[INFO] [stdout] test model::models_dev::tests::models_without_effort_choices_are_not_configurable ... ok
[INFO] [stdout] test model::models_dev::tests::parses_reasoning_effort_options ... ok
[INFO] [stdout] test model::models_dev::tests::hydrate_writes_opencode_go_rows_that_only_advertise_sdk_package ... ok
[INFO] [stdout] test model::models_dev::tests::provider_context_length_overrides_generic_effective_context ... ok
[INFO] [stdout] test model::models_dev::tests::known_reasoning_capabilities_prefers_current_then_stale_known ... ok
[INFO] [stdout] test model::models_dev::tests::provider_path_that_ignores_reasoning_is_not_configurable ... ok
[INFO] [stdout] test model::models_dev::tests::providers_that_read_another_upstream_catalog_still_get_names ... ok
[INFO] [stdout] test model::models_dev::tests::qwen_token_plan_qwen38_max_uses_exact_advertised_efforts ... ok
[INFO] [stdout] test model::models_dev::tests::custom_host_model_id_lookup_reads_unsplit_ids_and_misses_bare_ids ... ok
[INFO] [stdout] test model::models_dev::tests::reasoning_models_without_options_are_not_capability_complete ... ok
[INFO] [stdout] test model::models_dev::tests::rehydrates_when_cache_version_is_stale_or_metadata_is_incomplete ... ok
[INFO] [stdout] test model::models_dev::tests::poolside_version_five_metadata_is_stale_after_reasoning_policy_change ... ok
[INFO] [stdout] test model::models_dev::tests::custom_provider_catalog_slug_borrows_upstream_metadata ... ok
[INFO] [stdout] test model::models_dev::tests::qwen_token_plan_unknown_complete_rows_are_stale_after_policy_change ... ok
[INFO] [stdout] test model::provider_models::anthropic::policy::tests::dated_parent_model_strips_yyyymmdd_suffix ... ok
[INFO] [stdout] test model::provider_models::anthropic::policy::tests::host_catalog_capabilities_never_infer_adaptive_thinking ... ok
[INFO] [stdout] test model::provider_models::anthropic::policy::tests::missing_or_non_object_capabilities_become_empty_object ... ok
[INFO] [stdout] test model::provider_models::anthropic::policy::tests::per_message_effort_is_limited_to_documented_model_families ... ok
[INFO] [stdout] test model::provider_models::anthropic::tests::compatible_list_keeps_non_claude_ids ... ok
[INFO] [stdout] test model::display_name::tests::prefers_the_catalog_name_then_the_provider_name_then_nothing ... ok
[INFO] [stdout] test model::provider_models::anthropic::tests::list_payload_keeps_or_defaults_capabilities_for_the_request_builder ... ok
[INFO] [stdout] test model::provider_models::anthropic::tests::model_page_limit_exhaustion_is_not_success ... ok
[INFO] [stdout] test model::provider_models::anthropic::tests::records_from_page_projects_advertised_reasoning_levels ... ok
[INFO] [stdout] test model::models_dev::tests::provider_facing_cache_keys_are_order_independent ... ok
[INFO] [stdout] test model::models_dev::tests::stale_rows_remain_available_as_offline_fallback ... ok
[INFO] [stdout] test model::models_dev::tests::fresh_snapshot_is_not_ready_for_a_new_borrowed_slug ... ok
[INFO] [stdout] test model::provider_models::capability_tests::anthropic_dated_snapshots_reuse_the_parent_alias_for_freshness_and_pickers ... ok
[INFO] [stdout] test model::provider_models::google::policy::tests::text_chat_filter_hides_specialty_models ... ok
[INFO] [stdout] test model::models_dev::tests::hydrate_borrowed_openrouter_slug_uses_catalog_document ... ok
[INFO] [stdout] test model::provider_models::capability_tests::anthropic_empty_capabilities_object_is_known_and_null_is_not ... ok
[INFO] [stdout] test model::provider_models::capability_tests::ollama_unknown_reasoning_rows_settle_after_a_fresh_refresh ... ok
[INFO] [stdout] test model::provider_models::google::tests::model_conversion_filters_methods_and_strips_resource_prefix ... ok
[INFO] [stdout] test model::provider_models::google::tests::non_thinking_models_are_not_configurable ... ok
[INFO] [stdout] test model::provider_models::kimi_capabilities::tests::authenticated_efforts_are_canonical_and_include_off ... ok
[INFO] [stdout] test model::provider_models::kimi_capabilities::tests::default_effort_does_not_add_a_selection_level ... ok
[INFO] [stdout] test model::provider_models::kimi_capabilities::tests::missing_or_malformed_efforts_are_unknown ... ok
[INFO] [stdout] test model::provider_models::kimi_capabilities::tests::non_reasoning_model_has_only_off ... ok
[INFO] [stdout] test model::provider_models::ollama::tests::embedding_only_models_are_not_chat_models ... ok
[INFO] [stdout] test model::provider_models::ollama::tests::native_root_strips_a_trailing_v1_segment ... ok
[INFO] [stdout] test model::provider_models::ollama::tests::show_context_length_prefers_model_info ... ok
[INFO] [stdout] test model::provider_models::ollama::tests::thinking_capability_maps_to_ollama_effort_levels ... ok
[INFO] [stdout] test model::provider_models::capability_tests::provider_snapshot_expiration_applies_to_every_model_in_the_snapshot ... ok
[INFO] [stdout] test model::models_dev::tests::hydrate_writes_borrowed_non_rho_catalog_slugs ... ok
[INFO] [stdout] test model::provider_models::capability_tests::old_kimi_cache_rows_are_incomplete_and_need_refresh ... ok
[INFO] [stdout] test model::provider_models::google::tests::fetch_returns_google_errors_without_polling_the_catalog ... ok
[INFO] [stdout] test model::provider_models::tests::cached_provider_model_exact_returns_single_model ... ok
[INFO] [stdout] test auth::kimi_oauth::tests::refresh_retries_rate_limits_and_accepts_rotated_tokens ... ok
[INFO] [stdout] test model::provider_models::tests::cli_provider_models_round_trip_without_canonicalizing_ids ... ok
[INFO] [stdout] test model::models_dev::tests::hydrate_writes_full_tree_for_model_id_hosts ... ok
[INFO] [stdout] test model::provider_models::tests::github_copilot_models_retry_once_after_unauthorized ... ok
[INFO] [stdout] test model::provider_models::tests::minimax_refresh_uses_anthropic_models_and_keeps_m_series_ids ... ok
[INFO] [stdout] test model::models_dev::tests::invalidate_catalog_snapshot_clears_stored_extra_docs ... ok
[INFO] [stdout] test model::provider_models::tests::legacy_openrouter_refresh_writes_canonical_provider_models ... ok
[INFO] [stdout] test model::provider_models::tests::openai_model_filter_keeps_chat_families ... ok
[INFO] [stdout] test model::provider_models::tests::parses_github_copilot_models_from_data_objects_and_deduplicates ... ok
[INFO] [stdout] test model::provider_models::google::tests::fetch_paginates_deduplicates_and_filters_deprecated_models ... ok
[INFO] [stdout] test model::models_dev::tests::model_id_host_applies_builtin_overrides_from_split_id ... ok
[INFO] [stdout] test model::reasoning_capabilities::tests::empty_level_sets_are_rejected_during_deserialization ... ok
[INFO] [stdout] test model::provider_models::tests::ollama_native_discovery_sends_stored_api_key ... ok
[INFO] [stdout] test model::reasoning_capabilities::tests::exact_levels_do_not_inject_off_into_cycling_or_normalization ... ok
[INFO] [stdout] test model::reasoning_capabilities::tests::legacy_unrestricted_capabilities_deserialize_as_unknown ... ok
[INFO] [stdout] test model::reasoning_capabilities::tests::level_sets_are_sorted_and_deduplicated ... ok
[INFO] [stdout] test model::reasoning_capabilities::tests::not_configurable_models_have_no_effective_or_selectable_level ... ok
[INFO] [stdout] test model::provider_models::tests::openai_compatible_models_preserve_account_context_length ... ok
[INFO] [stdout] test model::reasoning_capabilities::tests::selectable_levels_follow_advertised_sets_and_keep_current_visible ... ok
[INFO] [stdout] test openai_compatible_dialect::tests::chat_tool_call_policy_opts_unknown_hosts_into_lenient ... ok
[INFO] [stdout] test model::reasoning_capabilities::tests::unsupported_explicit_choices_are_not_silently_changed ... ok
[INFO] [stdout] test openai_compatible_dialect::tests::moonshot_moves_parent_type_into_any_of_branches ... ok
[INFO] [stdout] test paths::tests::does_not_use_windows_fallbacks_on_unix ... ok
[INFO] [stdout] test paths::tests::rho_home_overrides_default_data_root ... ok
[INFO] [stdout] test openai_compatible_dialect::tests::moonshot_parameters_keep_required_root_object_type ... ok
[INFO] [stdout] test protocol::anthropic_messages::convert::tests::converts_foreign_summary_and_omits_foreign_provider_context ... ok
[INFO] [stdout] test protocol::anthropic_messages::convert::tests::disabled_replay_preserves_foreign_portable_fallback ... ok
[INFO] [stdout] test paths::tests::uses_home_when_set ... ok
[INFO] [stdout] test protocol::anthropic_messages::convert::tests::exact_anthropic_handoff_omits_thinking_when_reasoning_is_disabled ... ok
[INFO] [stdout] test protocol::anthropic_messages::convert::tests::exact_anthropic_handoff_replays_signed_thinking_in_original_position ... ok
[INFO] [stdout] test protocol::anthropic_messages::convert::tests::marks_failed_tool_results_as_errors ... ok
[INFO] [stdout] test protocol::anthropic_messages::convert::tests::merges_consecutive_same_role_messages ... ok
[INFO] [stdout] test protocol::anthropic_messages::convert::tests::maps_nested_cache_creation_usage ... ok
[INFO] [stdout] test protocol::anthropic_messages::stream::stream_cost_tests::message_delta_reports_gateway_cost_with_usage ... ok
[INFO] [stdout] test protocol::anthropic_messages::convert::tests::thinking_only_assistant_is_retryable ... ok
[INFO] [stdout] test protocol::anthropic_messages::stream::stream_cost_tests::message_deltas_emit_only_monotonic_token_and_cost_deltas ... ok
[INFO] [stdout] test protocol::anthropic_messages::stream::stream_cost_tests::message_delta_reports_gateway_cost_without_token_usage ... ok
[INFO] [stdout] test protocol::anthropic_messages::stream::tests::ping_is_not_meaningful_stream_activity ... ok
[INFO] [stdout] test protocol::anthropic_messages::stream::tests::stream_error_events_map_to_the_provider_contract ... ok
[INFO] [stdout] test protocol::anthropic_messages::stream::tests::stream_error_events_without_a_type_stay_invalid_responses ... ok
[INFO] [stdout] test protocol::anthropic_messages::stream::tests::streams_and_retains_signed_thinking_context ... ok
[INFO] [stdout] test protocol::anthropic_messages::stream::tests::streams_message_delta_usage_as_output_only ... ok
[INFO] [stdout] test protocol::anthropic_messages::stream::stream_index_tests::rejects_out_of_range_content_block_index ... ok
[INFO] [stdout] test protocol::anthropic_messages::stream::tests::streams_text_deltas_and_usage ... ok
[INFO] [stdout] test protocol::cost::cost_tests::parses_numeric_and_formatted_costs ... ok
[INFO] [stdout] test protocol::anthropic_messages::stream::tests::streams_tool_use_input_json_deltas ... ok
[INFO] [stdout] test protocol::cost::cost_tests::rejects_invalid_or_out_of_range_costs ... ok
[INFO] [stdout] test protocol::cost::cost_tests::parses_object_shaped_usage_cost_totals ... ok
[INFO] [stdout] test protocol::gemini_generate_content::stream::tests::decoder_joins_multiline_data_and_ignores_comments_and_done ... ok
[INFO] [stdout] test protocol::gemini_generate_content::stream::tests::stream_errors_after_output_are_not_retryable_as_fresh_requests ... ok
[INFO] [stdout] test protocol::gemini_generate_content::stream::tests::decoder_rejects_malformed_event_when_delimited ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::aborted_assistant_replays_thought_signatures_before_abort_marker ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::aborted_mixed_tool_and_text_keeps_signature_targets ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::aborted_signed_text_keeps_nonzero_signature_position ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::aborted_parallel_tool_calls_keep_stream_order_not_id_order ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::blocked_response_reports_usage_before_error ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::content_policy_finish_reason_stays_a_permanent_invalid_response ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::foreign_aborted_tool_calls_are_not_promoted_to_gemini_function_calls ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::empty_gemini_assistant_is_retryable ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::missing_function_call_ids_stay_local_and_replay_as_absent ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::parallel_tool_results_share_one_user_content ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::prompt_without_cached_count_is_not_uncached_input ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::request_maps_system_tools_results_and_thought_signatures ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::signed_text_parts_are_not_merged_with_neighbors ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::transient_finish_reasons_are_retryable_invalid_responses ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::usage_deltas_preserve_omitted_cumulative_fields ... ok
[INFO] [stdout] test model::models_dev::tests::fresh_snapshot_is_not_ready_for_a_model_id_host ... ok
[INFO] [stdout] test protocol::late_tool_results::tests::normalize_late_tool_results_pairs_or_borrows ... ok
[INFO] [stdout] test protocol::late_tool_results::tests::image_supplements_allow_late_results_in_every_provider_protocol ... ok
[INFO] [stdout] test protocol::openai_shared::codex_sse::image_tests::completed_only_image_generation_is_content ... ok
[INFO] [stdout] test protocol::openai_shared::codex_sse::image_tests::image_generation_call_emits_activity_and_slim_replay ... ok
[INFO] [stdout] test protocol::openai_shared::codex_sse::async_tests::async_function_call_emits_marker_once ... ok
[INFO] [stdout] test model::provider_models::tests::ollama_show_embedding_only_stays_out_of_the_picker ... ok
[INFO] [stdout] test protocol::openai_shared::codex_sse::terminal_tests::bare_error_event_uses_websocket_fallbacks ... ok
[INFO] [stdout] test protocol::openai_shared::codex_sse::image_tests::invalid_image_generation_result_is_ignored ... ok
[INFO] [stdout] test protocol::openai_shared::codex_sse::terminal_tests::response_failed_after_text_delta_still_fails ... ok
[INFO] [stdout] test protocol::openai_shared::codex_sse::terminal_tests::response_failed_event_surfaces_provider_error ... ok
[INFO] [stdout] test protocol::openai_shared::codex_sse::terminal_tests::bare_error_event_uses_http_fallbacks ... ok
[INFO] [stdout] test protocol::openai_shared::codex_sse::terminal_tests::response_incomplete_after_text_delta_still_fails ... ok
[INFO] [stdout] test protocol::openai_shared::codex_sse::terminal_tests::steered_incomplete_completes_with_created_response_id ... ok
[INFO] [stdout] test protocol::openai_shared::codex_sse::terminal_tests::top_level_error_fields_are_used ... ok
[INFO] [stdout] test protocol::openai_shared::compact::tests::extract_compaction_item_requires_exactly_one_valid_item ... ok
[INFO] [stdout] test protocol::openai_shared::codex_sse::terminal_tests::response_incomplete_event_surfaces_reason ... ok
[INFO] [stdout] test protocol::openai_shared::compact::tests::parse_compact_response_reads_usage ... ok
[INFO] [stdout] test protocol::openai_shared::compact::tests::parse_compact_response_malformed_output_is_invalid ... ok
[INFO] [stdout] test protocol::openai_shared::compact::tests::retained_messages_keep_systems_and_newest_users_within_budget ... ok
[INFO] [stdout] test protocol::openai_shared::compact::tests::xai_policy_drops_server_user_messages ... ok
[INFO] [stdout] test protocol::openai_shared::compact::tests::xai_single_compaction_item_replaces_history ... ok
[INFO] [stdout] test protocol::openai_shared::convert::finalize_tests::empty_chat_assistant_is_retryable ... ok
[INFO] [stdout] test protocol::openai_shared::convert::handoff_tests::chat_handoff_injects_empty_reasoning_content_for_same_model_tool_turns ... ok
[INFO] [stdout] test protocol::openai_shared::compact::tests::native_compact_from_response_body_success_and_failure ... ok
[INFO] [stdout] test protocol::openai_shared::compact::tests::replacement_uses_server_output_users_and_compaction_marker ... ok
[INFO] [stdout] test protocol::openai_shared::convert::handoff_tests::chat_handoff_omits_reasoning_content_for_foreign_model ... ok
[INFO] [stdout] test protocol::openai_shared::convert::handoff_tests::chat_handoff_rejects_unknown_replay_context_kinds ... ok
[INFO] [stdout] test protocol::openai_shared::convert::handoff_tests::codex_handoff_keeps_reasoning_native_or_uses_foreign_summary ... ok
[INFO] [stdout] test protocol::openai_shared::convert::handoff_tests::chat_handoff_replays_reasoning_content_for_exact_model ... ok
[INFO] [stdout] test protocol::openai_shared::convert::handoff_tests::codex_handoff_replays_async_true_only_for_matching_target ... ok
[INFO] [stdout] test protocol::openai_shared::convert::handoff_tests::chat_handoff_keeps_foreign_reasoning_summary_as_tagged_text ... ok
[INFO] [stdout] test protocol::openai_shared::convert::handoff_tests::codex_remote_compaction_marker_replays_item_without_portable_text ... ok
[INFO] [stdout] test protocol::openai_shared::convert::handoff_tests::codex_handoff_restores_original_order_for_multiple_replay_items ... ok
[INFO] [stdout] test protocol::openai_shared::convert::handoff_tests::codex_handoff_restores_replay_item_position ... ok
[INFO] [stdout] test protocol::openai_shared::convert::image_tests::openai_converters_replace_assistant_image_history_with_placeholder ... ok
[INFO] [stdout] test protocol::openai_shared::image_generation::tests::image_generation_normalizes_and_sniffs_base64 ... ok
[INFO] [stdout] test protocol::gemini_generate_content::tests::foreign_reasoning_summary_uses_shared_handoff_format ... ok
[INFO] [stdout] test model::provider_models::tests::provider_model_cache_replaces_one_provider_and_preserves_capabilities ... ok
[INFO] [stdout] test protocol::openai_shared::convert::handoff_tests::convert_openai_response_captures_reasoning_content ... ok
[INFO] [stdout] test protocol::openai_shared::convert::image_tests::responses_replay_restores_image_result_without_placeholder ... ok
[INFO] [stdout] test protocol::openai_shared::stream::stream_chat_tests::chat_stream_emits_reasoning_content_provider_context ... ok
[INFO] [stdout] test protocol::openai_shared::stream::stream_chat_tests::final_message_snapshot_fills_incomplete_streamed_tool_calls ... ok
[INFO] [stdout] test protocol::openai_shared::stream::stream_chat_tests::final_snapshot_reasoning_does_not_count_as_streamed_for_throughput ... ok
[INFO] [stdout] test protocol::openai_shared::stream::stream_chat_tests::partial_final_usage_snapshot_keeps_input_buckets_disjoint ... ok
[INFO] [stdout] test protocol::openai_shared::stream::stream_chat_tests::streamed_tool_calls_tolerate_qwen_style_quirks ... ok
[INFO] [stdout] test protocol::openai_shared::tool_calls::tests::strict_policy_rejects_empty_sparse_slots ... ok
[INFO] [stdout] test protocol::openai_shared::usage::stream_cost_tests::generation_output_tokens_match_generation_window_accounting ... ok
[INFO] [stdout] test protocol::openai_shared::usage::stream_cost_tests::invalid_reported_costs_do_not_replace_catalog_fallback ... ok
[INFO] [stdout] test protocol::openai_shared::usage::stream_cost_tests::merge_replaces_output_reasoning_pair_atomically ... ok
[INFO] [stdout] test protocol::openai_shared::stream::stream_chat_tests::accumulates_streamed_tool_call_deltas ... ok
[INFO] [stdout] test protocol::openai_shared::usage::stream_cost_tests::prompt_tokens_without_cache_details_are_not_uncached_input ... ok
[INFO] [stdout] test protocol::openai_shared::stream::stream_chat_tests::streamed_tool_calls_strict_policy_rejects_sparse_empty_slots ... ok
[INFO] [stdout] test protocol::openai_shared::stream::stream_chat_tests::chat_tool_calls_reject_non_object_arguments ... ok
[INFO] [stdout] test protocol::openai_shared::tool_calls::tests::lenient_policy_normalizes_qwen_style_quirks ... ok
[INFO] [stdout] test protocol::openai_shared::usage::stream_cost_tests::reported_cost_accepts_strings_and_preserves_zero ... ok
[INFO] [stdout] test protocol::openai_shared::usage::stream_cost_tests::reported_cost_reads_composer_api_usage_object ... ok
[INFO] [stdout] test protocol::openai_shared::usage::stream_cost_tests::valid_cost_components_survive_missing_or_malformed_aliases ... ok
[INFO] [stdout] test protocol::openai_shared::usage::stream_cost_tests::reported_cost_includes_byok_upstream_inference_cost ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::credential_env_vars_include_live_rho_api_key_overrides ... ok
[INFO] [stdout] test model::provider_models::tests::provider_model_cache_migrates_old_schema ... ok
[INFO] [stdout] test model::models_dev::tests::model_id_host_keeps_advertised_levels_for_builtin_slugs ... ok
[INFO] [stdout] test model::models_dev::tests::prefetch_does_nothing_when_every_target_is_current ... ok
[INFO] [stdout] test model::models_dev::tests::rematched_openai_codex_catalog_keeps_builtin_window ... ok
[INFO] [stdout] test model::provider_models::tests::ollama_incomplete_tags_fill_context_from_show ... ok
[INFO] [stdout] test model::provider_models::tests::ollama_tags_complete_skips_show_and_hides_embedding_only ... ok
[INFO] [stdout] test model::models_dev::tests::second_model_id_host_reuses_shared_full_tree ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::custom_host_api_change_reinterns_the_descriptor ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::thread_scope_does_not_replace_process_active_providers ... ok
[INFO] [stdout] test provider::tests::meta_is_openai_compatible_with_api_key_auth ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::custom_host_catalog_change_reinterns_the_descriptor ... ok
[INFO] [stdout] test provider::tests::minimax_declares_anthropic_messages_on_its_compatible_base ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::credential_env_vars_include_interned_custom_hosts ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::custom_host_catalog_slug_becomes_metadata_upstream ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::custom_host_model_id_lookup_reinterns_the_descriptor ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::discovery_auth_prefers_a_stored_key_over_the_keyless_default ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::install_custom_providers_makes_openai_compatible_hosts ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::install_custom_providers_replaces_the_active_set ... ok
[INFO] [stdout] test provider::tests::opencode_go_is_openai_compatible_with_catalog_npm_construction ... ok
[INFO] [stdout] test provider::tests::openai_and_codex_share_runtime_family ... ok
[INFO] [stdout] test provider::tests::openrouter_auth_modes_share_one_provider_and_legacy_aliases_normalize ... ok
[INFO] [stdout] test provider::tests::persisted_custom_host_value_omits_non_custom_apis ... ok
[INFO] [stdout] test provider::tests::qwen_token_plan_is_openai_compatible_with_api_key_auth ... ok
[INFO] [stdout] test provider::tests::resolve_profile_exact_rejects_incompatible_auth ... ok
[INFO] [stdout] test provider_backend::http_error::tests::parse_retry_after_ignores_non_numeric_values ... ok
[INFO] [stdout] test provider::tests::xai_legacy_provider_alias_selects_oauth_mode ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::installing_a_new_host_is_visible_without_an_overlay ... ok
[INFO] [stdout] test provider::tests::poolside_model_id_codec_canonicalizes_and_expands_wire_ids ... ok
[INFO] [stdout] test provider::tests::provider_ids_have_unique_descriptors_and_lookup_round_trips ... ok
[INFO] [stdout] test provider_backend::http_error::tests::parse_retry_after_reads_delay_seconds ... ok
[INFO] [stdout] test provider_backend::line_decoder::tests::decodes_lf_crlf_empty_lines_and_trailing_tail_across_chunks ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::intern_responses_api_sets_host_api ... ok
[INFO] [stdout] test provider_backend::line_decoder::tests::accepts_complete_line_at_exact_byte_limit ... ok
[INFO] [stdout] test provider_backend::line_decoder::tests::constructors_are_self_documenting ... ok
[INFO] [stdout] test provider_backend::line_decoder::tests::drains_valid_complete_lines_before_oversize_error ... ok
[INFO] [stdout] test provider_backend::line_decoder::tests::finish_rejects_unterminated_oversize_tail_when_error_pending ... ok
[INFO] [stdout] test provider_backend::line_decoder::tests::rejects_invalid_utf8_in_complete_lines_and_tail ... ok
[INFO] [stdout] test provider_backend::line_decoder::tests::rejects_unterminated_oversize_line_without_unbounded_growth ... ok
[INFO] [stdout] test provider_backend::line_decoder::tests::retains_only_an_incomplete_line_when_appending_a_chunk ... ok
[INFO] [stdout] test provider_backend::line_decoder::tests::unlimited_default_accepts_large_lines ... ok
[INFO] [stdout] test provider_backend::line_decoder::tests::waits_for_a_complete_multibyte_character ... ok
[INFO] [stdout] test provider_backend::stream_timeout::tests::returns_activity_before_the_deadline ... ok
[INFO] [stdout] test provider_backend::line_decoder::tests::rejects_complete_oversize_line_before_returning_it ... ok
[INFO] [stdout] test providers::anthropic::per_message_effort::tests::conversation_effort_changes_keep_prefix_and_pin_system_messages ... ok
[INFO] [stdout] test provider_backend::stream_timeout::tests::reports_when_a_stream_stops_delivering_activity ... ok
[INFO] [stdout] test providers::anthropic::per_message_effort::tests::non_continuation_requests_use_top_level_current_effort ... ok
[INFO] [stdout] test providers::anthropic::per_message_effort::tests::effort_change_on_tool_result_turn_uses_top_level_and_restarts_cache ... ok
[INFO] [stdout] test providers::anthropic::per_message_effort::tests::interleaved_conversations_on_one_provider_keep_separate_effort_state ... ok
[INFO] [stdout] test providers::anthropic::tests::provider_context_replay_follows_effective_thinking_mode ... ok
[INFO] [stdout] test providers::anthropic::per_message_effort::tests::tracked_conversations_are_bounded_by_lru_eviction ... ok
[INFO] [stdout] test provider_backend::http_error::tests::captures_and_truncates_error_response_bodies ... ok
[INFO] [stdout] test providers::anthropic::tests::reasoning_off_disables_adaptive_thinking_when_supported ... ok
[INFO] [stdout] test model::provider_models::google::tests::fetch_bounds_catalog_wait_and_keeps_google_models ... ok
[INFO] [stdout] test model::reasoning_capabilities::tests::empty_level_sets_cannot_be_constructed - should panic ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::custom_api_key_auth_ids_accept_valid_host_names_only ... ok
[INFO] [stdout] test provider::custom_openai_compatible::tests::custom_provider_names_reject_reserved_and_invalid_values ... ok
[INFO] [stdout] test model::provider_models::tests::ollama_discovery_falls_back_to_v1_models_without_auth ... ok
[INFO] [stdout] test providers::anthropic::tests::thinking_budget_stays_latched_when_max_tokens_hydrates ... ok
[INFO] [stdout] test provider_backend::http_error::tests::preserves_status_when_reading_the_error_body_fails ... ok
[INFO] [stdout] test providers::anthropic::tests::request_body_forces_non_object_root_schema_type_to_object ... ok
[INFO] [stdout] test providers::anthropic::tests::legacy_thinking_still_reserves_answer_tokens ... ok
[INFO] [stdout] test providers::anthropic::thinking::tests::adaptive_capabilities_send_effort_and_never_a_token_budget ... ok
[INFO] [stdout] test provider_backend::http_error::tests::captures_retry_after_from_error_responses ... ok
[INFO] [stdout] test providers::anthropic::tests::request_body_serializes_messages_tools_and_stream_flag ... ok
[INFO] [stdout] test providers::anthropic::thinking::tests::effort_clamps_down_to_levels_the_model_advertises ... ok
[INFO] [stdout] test providers::anthropic::thinking::tests::empty_fetched_capabilities_leave_model_default_for_requested_reasoning ... ok
[INFO] [stdout] test providers::anthropic::thinking::tests::adaptive_without_effort_sends_adaptive_without_output_config ... ok
[INFO] [stdout] test providers::anthropic::thinking::tests::effort_below_the_advertised_range_rises_to_the_model_minimum ... ok
[INFO] [stdout] test providers::anthropic::thinking::tests::off_follows_disabled_leaf_then_model_gap_table ... ok
[INFO] [stdout] test providers::anthropic::tests::fable_5_1_mid_conversation_effort_change_keeps_prefix_output_config ... ok
[INFO] [stdout] test providers::anthropic::thinking::tests::unresolved_capabilities_reject_requested_reasoning_and_omit_off ... ok
[INFO] [stdout] test providers::anthropic::tests::adaptive_thinking_uses_output_effort_without_a_token_budget ... ok
[INFO] [stdout] test providers::anthropic::tests::thinking_budget_shrinks_when_max_tokens_hydrates_lower ... ok
[INFO] [stdout] test providers::anthropic::thinking::tests::enabled_capabilities_reserve_an_answer_budget ... ok
[INFO] [stdout] test providers::anthropic::tests::prior_write_stays_in_lookback_after_twenty_new_blocks ... ok
[INFO] [stdout] test providers::anthropic::thinking::tests::resolve_reads_cached_capabilities_including_dated_snapshots ... ok
[INFO] [stdout] test providers::anthropic::thinking::tests::hosted_messages_resolve_uses_host_catalog_not_anthropic_cache ... ok
[INFO] [stdout] test providers::anthropic::tests::unknown_model_rejects_requested_reasoning_instead_of_omitting_thinking ... ok
[INFO] [stdout] test providers::builder::tests::options_reject_invalid_states_and_accept_typed_overrides ... ok
[INFO] [stdout] test providers::anthropic::tests::request_body_removes_top_level_schema_composition_from_tools ... ok
[INFO] [stdout] test providers::fast_mode::tests::fast_serving_follows_the_provider_implementation ... ok
[INFO] [stdout] test providers::github_copilot::tests::provider_construction_requires_available_auth ... ok
[INFO] [stdout] test providers::builder::tests::custom_host_build_survives_dropped_thread_scope ... ok
[INFO] [stdout] test providers::google::tests::complete_turn_uses_google_header_and_generate_content_endpoint ... ok
[INFO] [stdout] test providers::anthropic::tests::request_body_types_pure_composition_tool_schemas_for_anthropic ... ok
[INFO] [stdout] test providers::openai::cache::tests::blank_session_id_does_not_create_cache_key ... ok
[INFO] [stdout] test providers::openai::cache::tests::cache_key_is_clamped_and_stable_for_long_session_ids ... ok
[INFO] [stdout] test providers::openai::cache::tests::cache_key_sanitizes_unsupported_characters ... ok
[INFO] [stdout] test providers::openai::codex_continuation::perf_tests::perf_audit_codex_candidate_bookkeeping ... ignored, manual performance measurement; run with --release --ignored --nocapture
[INFO] [stdout] test providers::openai::codex_continuation::tests::astra_reasoning_change_keeps_request_properties_and_deltas_update_item ... ok
[INFO] [stdout] test providers::openai::codex_continuation::tests::continuation_accepts_semantically_equivalent_function_call_arguments ... ok
[INFO] [stdout] test providers::image_input::tests::gate_strips_images_only_for_models_marked_text_only ... ok
[INFO] [stdout] test providers::openai::codex_continuation::tests::continuation_falls_back_to_full_request_when_request_properties_change ... ok
[INFO] [stdout] test providers::openai::codex_continuation::tests::continuation_falls_back_to_full_request_for_unrepresentable_server_output ... ok
[INFO] [stdout] test providers::openai::codex_continuation::tests::continuation_falls_back_to_full_request_when_server_output_is_unavailable ... ok
[INFO] [stdout] test providers::openai::codex_continuation::tests::continuation_retains_tool_result_after_server_function_call ... ok
[INFO] [stdout] test providers::openai::codex_continuation::tests::continuation_matches_function_call_when_server_item_is_async ... ok
[INFO] [stdout] test providers::openai::codex_request::tests::async_tools_are_advertised_only_when_supported_and_declared ... ok
[INFO] [stdout] test providers::openai::codex_continuation::tests::continuation_uses_only_new_user_input_after_server_assistant_output ... ok
[INFO] [stdout] test providers::openai::codex_request::tests::codex_model_switch_preserves_native_context_on_repeated_sends ... ok
[INFO] [stdout] test providers::openai::codex_request::tests::create_and_compact_body_builders_diverge_on_tools ... ok
[INFO] [stdout] test providers::openai::codex_request::tests::compact_body_omits_stream_tools_and_tool_policy_fields ... ok
[INFO] [stdout] test providers::openai::codex_request::tests::priority_service_tier_is_limited_to_codex_auth ... ok
[INFO] [stdout] test providers::openai::codex_request::tests::gpt56_codex_models_use_standard_wire_contract ... ok
[INFO] [stdout] test providers::openai::codex_request::tests::priority_service_tier_is_omitted_for_unsupported_codex_models ... ok
[INFO] [stdout] test providers::openai::codex_request::tests::standard_create_wire_contract_is_auth_flavor_specific ... ok
[INFO] [stdout] test providers::google::tests::stream_turn_parses_sse_and_uses_stream_endpoint ... ok
[INFO] [stdout] test providers::openai::codex_request::tests::standard_requests_keep_hosted_web_search_tool ... ok
[INFO] [stdout] test providers::openai::codex_steer::tests::pending_steer_match_table ... ok
[INFO] [stdout] test providers::openai::codex_steer::tests::required_input_always_replays ... ok
[INFO] [stdout] test providers::openai::codex_request::tests::standard_requests_keep_function_web_search_when_hosted_disabled ... ok
[INFO] [stdout] test providers::openai::codex_request::tests::priority_service_tier_is_sent_as_fast_mode ... ok
[INFO] [stdout] test providers::openai::codex_ws::steering_tests::steer_is_released_when_unforwardable_or_failed ... ok
[INFO] [stdout] test providers::openai::codex_ws::steering_tests::queued_steer_sends_after_prior_acknowledgement ... ok
[INFO] [stdout] test providers::anthropic::tests::two_user_breakpoints_cover_a_multi_result_turn ... ok
[INFO] [stdout] test providers::openai::codex_ws::steering_tests::steer_reuses_auto_continuation_when_completion_precedes_ack ... ok
[INFO] [stdout] test providers::openai::codex_ws::steering_tests::steer_during_reused_continuation_is_reused_again ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::derives_websocket_url_from_codex_api_base ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::continuation_error_before_output_returns_immediate_full_sse_fallback ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::empty_websocket_completion_before_output_falls_back_to_sse ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::empty_websocket_completion_after_output_uses_streamed_output ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::first_websocket_request_sends_full_input_without_previous_response_id ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::compatible_websocket_request_sends_delta_with_previous_response_id ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::full_sse_fallback_returns_the_unframed_request_body ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::terminal_failure_uses_error_type_when_code_is_null ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::silent_response_incomplete_returns_immediate_model_error ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::top_level_previous_response_not_found_falls_back_to_sse ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::websocket_connection_failure_reports_that_no_model_request_was_submitted ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::websocket_emits_delta_before_response_completes ... ok
[INFO] [stdout] test providers::builder::tests::opencode_go_anthropic_npm_posts_messages_with_x_api_key ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::websocket_error_resets_continuation_and_returns_full_sse_fallback ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::websocket_failure_after_delta_does_not_replay_request ... ok
[INFO] [stdout] test providers::openai::configuration_update::tests::api_key_astra_create_body_emits_configuration_update ... ok
[INFO] [stdout] test providers::openai::configuration_update::tests::compact_body_omits_configuration_update_even_when_create_would_emit ... ok
[INFO] [stdout] test providers::openai::configuration_update::tests::effort_context_precedes_first_retainable_stream_event ... ok
[INFO] [stdout] test providers::openai::configuration_update::tests::non_astra_create_body_follows_current_level_without_updates ... ok
[INFO] [stdout] test providers::openai::configuration_update::tests::astra_create_bodies_preserve_prefix_effort ... ok
[INFO] [stdout] test providers::openai::remote_compaction::tests::astra_compaction_preserves_reasoning_baseline ... ok
[INFO] [stdout] test providers::openai::remote_compaction::tests::codex_compaction_body_streams_trailing_trigger_without_tools ... ok
[INFO] [stdout] test providers::openai::remote_compaction::tests::compact_request_body_is_unary_without_trigger ... ok
[INFO] [stdout] test providers::github_copilot::tests::chat_retries_once_after_unauthorized_with_refreshed_endpoint ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::response_failed_after_delta_returns_immediately_without_replay ... ok
[INFO] [stdout] test providers::openai::stream_tests::cancelling_codex_stream_resets_websocket_before_next_turn ... ok
[INFO] [stdout] test providers::anthropic::tests::cold_catalog_max_tokens_depends_on_provider_construction ... ok
[INFO] [stdout] test providers::openai::stream_tests::rejects_out_of_range_tool_call_index ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::abandoned_turn_does_not_leave_continuation_state_for_the_next_turn ... ok
[INFO] [stdout] test providers::openai::tests::chat_stream_usage_normalizes_prompt_cache_tokens ... ok
[INFO] [stdout] test providers::openai::tests::codex_reasoning_param_preserves_none_effort ... ok
[INFO] [stdout] test providers::openai::tests::codex_response_usage_normalizes_input_cache_tokens ... ok
[INFO] [stdout] test providers::openai::tests::codex_responses_body_includes_prompt_cache_key_when_present ... ok
[INFO] [stdout] test providers::openai::tests::codex_responses_body_uses_hosted_web_search_tool ... ok
[INFO] [stdout] test providers::openai::tests::codex_sse_completed_emits_search_activity_when_stream_has_text ... ok
[INFO] [stdout] test providers::openai::tests::codex_sse_completed_processes_unstreamed_items_individually ... ok
[INFO] [stdout] test providers::openai::tests::codex_sse_custom_tool_call_without_xs_call_id_is_not_x_search ... ok
[INFO] [stdout] test providers::openai::tests::codex_sse_line_emits_reasoning_summary_delta ... ok
[INFO] [stdout] test providers::openai::tests::codex_sse_line_emits_web_search_detail ... ok
[INFO] [stdout] test providers::openai::codex_ws::tests::websocket_routes_connections_by_model_and_service_tier ... ok
[INFO] [stdout] test providers::openai::tests::codex_sse_line_emits_x_search_from_custom_tool_call ... ok
[INFO] [stdout] test providers::openai::tests::codex_sse_search_action_url_and_pattern_are_bare_detail ... ok
[INFO] [stdout] test providers::openai::tests::codex_sse_search_activity_is_not_duplicated_on_completed ... ok
[INFO] [stdout] test providers::openai::tests::codex_sse_search_query_count_ignores_invalid_entries ... ok
[INFO] [stdout] test providers::openai::tests::codex_sse_search_without_detail_still_emits_activity ... ok
[INFO] [stdout] test providers::openai::tests::completed_envelope_keeps_message_text_beside_function_call_without_deltas ... ok
[INFO] [stdout] test providers::openai::tests::completed_response_text_preserves_url_annotations ... ok
[INFO] [stdout] test providers::openai::tests::completed_tool_call_arguments_are_published_exactly_once ... ok
[INFO] [stdout] test providers::openai::tests::completed_tool_call_item_publishes_arguments_that_never_streamed ... ok
[INFO] [stdout] test providers::openai::tests::empty_codex_sse_content_error_includes_stream_summary ... ok
[INFO] [stdout] test providers::openai::tests::immutable_openai_reasoning_profile_normalizes_exact_and_omits_fixed_models ... ok
[INFO] [stdout] test providers::openai::tests::codex_sse_line_emits_x_search_detail ... ok
[INFO] [stdout] test providers::openai::tests::openai_reasoning_normalization_never_turns_requested_reasoning_off ... ok
[INFO] [stdout] test providers::openai::tests::parallel_tool_calls_stream_arguments_per_output_index ... ok
[INFO] [stdout] test providers::openai::tests::reported_service_tier_detects_priority_fallback ... ok
[INFO] [stdout] test providers::openai::tests::serializes_aborted_codex_tool_calls_as_non_executable_context ... ok
[INFO] [stdout] test providers::openai::tests::streams_partial_codex_tool_call_arguments ... ok
[INFO] [stdout] test model::provider_models::tests::ollama_probe_distinguishes_models_empty_invalid_and_unreachable ... ok
[INFO] [stdout] test providers::builder::tests::custom_responses_api_key_posts_responses_with_bearer ... ok
[INFO] [stdout] test providers::openai_compatible::tests::chat_completions_forwards_prompt_cache_key_when_present ... ok
[INFO] [stdout] test providers::anthropic::tests::two_stage_bodies_mark_shared_transcript_and_keep_screen_thinking_cheap ... ok
[INFO] [stdout] test providers::builder::session_tests::opencode_go_session_headers_reach_every_adapter ... ok
[INFO] [stdout] test providers::builder::tests::opencode_go_catalog_npm_selects_adapter_identity ... ok
[INFO] [stdout] test providers::openai_compatible::tests::moonshot_k3_never_serializes_off_and_preserves_offline_non_off_requests ... ok
[INFO] [stdout] test providers::openai::remote_compaction::tests::codex_trigger_compaction_streams_item_and_retains_users ... ok
[INFO] [stdout] test providers::openai::remote_compaction::tests::compact_with_http_malformed_retry_response_preserves_failed_attempts ... ok
[INFO] [stdout] test providers::builder::tests::credentials_are_redacted_and_mismatches_fail_before_execution ... ok
[INFO] [stdout] test providers::openai_compatible::tests::moonshot_exact_metadata_drives_top_level_reasoning_effort ... ok
[INFO] [stdout] test providers::openai_compatible::tests::moonshot_posts_chat_completions_with_bearer_auth ... ok
[INFO] [stdout] test providers::openai_compatible::tests::openrouter_omits_reasoning_for_non_configurable_models ... ok
[INFO] [stdout] test providers::openai_compatible::tests::ollama_cloud_metadata_drives_top_level_reasoning_effort ... ok
[INFO] [stdout] test providers::openai_compatible::tests::authenticated_capabilities_normalize_before_kimi_request_serialization ... ok
[INFO] [stdout] test providers::openai::tests::api_responses_body_uses_each_request_reasoning_level ... ok
[INFO] [stdout] test providers::openai_compatible::tests::openrouter_posts_reasoning_to_chat_completions ... ok
[INFO] [stdout] test providers::openai_compatible::tests::poolside_request_body_uses_namespaced_model_and_thinking_control ... ok
[INFO] [stdout] test providers::openai_compatible::tests::kimi_code_k3_serializes_an_unnormalized_effort_as_is ... ok
[INFO] [stdout] test providers::builder::tests::custom_responses_does_not_inject_hosted_web_search ... ok
[INFO] [stdout] test providers::openai_compatible::tests::exact_advertised_standard_hosts_omit_reasoning_when_catalog_is_unknown ... ok
[INFO] [stdout] test providers::openai_compatible::tests::poolside_publishes_only_final_stream_usage_snapshot ... ok
[INFO] [stdout] test providers::openai::tests::native_compact_is_advertised_only_for_first_party_hosts ... ok
[INFO] [stdout] test providers::openai_compatible::tests::poolside_off_trusts_aggregate_output_without_reasoning_details ... ok
[INFO] [stdout] test providers::openai_compatible::tests::standard_dialect_streams_without_auth_or_usage ... ok
[INFO] [stdout] test providers::openai_compatible::tests::standard_dialect_converts_tool_calls_and_http_errors ... ok
[INFO] [stdout] test providers::openai_compatible::tests::poolside_streamed_reasoning_reports_full_output_total ... ok
[INFO] [stdout] test providers::responses_http::tests::api_key_create_and_compact_send_expected_headers_and_paths ... ok
[INFO] [stdout] test providers::responses_http::tests::codex_create_and_compact_send_expected_headers_and_paths ... ok
[INFO] [stdout] test providers::openai::stream_tests::api_key_responses_stream_accepts_data_without_space_after_colon ... ok
[INFO] [stdout] test providers::openai::stream_tests::completed_responses_turn_emits_reasoning_effort_context ... ok
[INFO] [stdout] test providers::sdk_contract::tests::callback_events_accepted_before_cancellation_are_forwarded ... ok
[INFO] [stdout] test providers::sdk_contract::tests::callback_sink_timestamps_events_at_the_callback_boundary ... ok
[INFO] [stdout] test providers::sdk_contract::tests::callback_stream_bridge_applies_host_backpressure_across_awaits ... ok
[INFO] [stdout] test providers::sdk_contract::tests::callback_stream_bridge_forwards_events_in_order ... ok
[INFO] [stdout] test providers::sdk_contract::tests::callback_stream_bridge_handles_bursts_larger_than_host_capacity ... ok
[INFO] [stdout] test providers::sdk_contract::tests::callback_stream_bridge_observes_cancellation_between_events ... ok
[INFO] [stdout] test providers::sdk_contract::tests::cancellation_before_turn_is_reported_as_interrupted ... ok
[INFO] [stdout] test providers::sdk_contract::tests::cancels_a_non_streaming_turn_that_never_completes ... ok
[INFO] [stdout] test providers::sdk_contract::tests::cancels_a_streaming_turn_that_never_completes ... ok
[INFO] [stdout] test providers::sdk_contract::tests::context_window_rejections_map_to_context_overflow ... ok
[INFO] [stdout] test providers::sdk_contract::tests::fake_native_compact_provider_returns_compaction_output_through_sdk ... ok
[INFO] [stdout] test providers::sdk_contract::tests::http_error_messages_include_status_without_bodies ... ok
[INFO] [stdout] test providers::sdk_contract::tests::maps_model_errors_to_sanitized_provider_errors ... ok
[INFO] [stdout] test providers::sdk_contract::tests::provider_reported_errors_map_by_semantic_kind ... ok
[INFO] [stdout] test providers::sdk_contract::tests::providers_implement_sdk_contract_directly ... ok
[INFO] [stdout] test providers::sdk_contract::tests::rate_limit_http_errors_carry_retry_after ... ok
[INFO] [stdout] test providers::responses_http::tests::cancellation_during_refresh_returns_interrupted ... ok
[INFO] [stdout] test providers::responses_http::tests::codex_compact_401_refresh_reports_auth_failed_attempt_and_retries ... ok
[INFO] [stdout] test providers::tui_fixture::semantic_tests::image_supplements_do_not_start_user_turns ... ok
[INFO] [stdout] test providers::tui_fixture::tests::questionnaire_count_is_scoped_to_the_current_user_turn ... ok
[INFO] [stdout] test providers::tui_fixture::semantic_tests::compact_fixtures_match_seed_prompt_after_empty_user_entry ... ok
[INFO] [stdout] test providers::responses_http::tests::cancellation_during_send_returns_interrupted ... ok
[INFO] [stdout] test providers::tui_fixture::tests::routes_steering_and_compaction_requests_without_network_access ... ok
[INFO] [stdout] test providers::xai::reasoning::tests::catalog_metadata_clamps_flagship_grok_generic_levels ... ok
[INFO] [stdout] test providers::xai::reasoning::tests::exact_mandatory_reasoning_clamps_requests_and_never_emits_none ... ok
[INFO] [stdout] test providers::xai::reasoning::tests::catalog_optional_grok_encodes_off_as_none ... ok
[INFO] [stdout] test providers::xai::reasoning::tests::unknown_metadata_does_not_synthesize_reasoning_and_non_configurable_omits_it ... ok
[INFO] [stdout] test providers::xai::reasoning::tests::exact_optional_reasoning_encodes_off_as_none ... ok
[INFO] [stdout] test providers::xai::tests::compact_body_is_model_and_full_input_only ... ok
[INFO] [stdout] test providers::responses_http::tests::refresh_hook_accounts_for_401_outcomes ... ok
[INFO] [stdout] test providers::builder::tests::minimax_declared_api_is_anthropic_messages ... ok
[INFO] [stdout] test providers::xai::tests::responses_body_maps_client_tools_to_enabled_hosted_tools ... ok
[INFO] [stdout] test providers::xai::tests::responses_body_preserves_tools_cache_key_and_supported_reasoning ... ok
[INFO] [stdout] test providers::xai::tests::unknown_grok_4_5_off_does_not_enable_reasoning_on_the_wire ... ok
[INFO] [stdout] test providers::builder::tests::custom_responses_keyless_posts_responses_without_authorization ... ok
[INFO] [stdout] test providers::openai_compatible::tests::kimi_code_k3_serializes_each_reasoning_mode_as_a_whole_request ... ok
[INFO] [stdout] test providers::responses_http::tests::refresh_failure_retains_authentication_failed_attempt ... ok
[INFO] [stdout] test providers::responses_http::tests::refresh_retry_notice_error_skips_second_post ... ok
[INFO] [stdout] test providers::responses_http::tests::keyless_create_and_compact_omit_authorization ... ok
[INFO] [stdout] test providers::responses_http::tests::refresh_retry_notifies_before_second_post ... ok
[INFO] [stdout] test providers::xai::tests::provider_posts_to_responses_and_collects_stream ... ok
[INFO] [stdout] test providers::responses_http::tests::retry_send_failure_retains_authentication_failed_attempt ... ok
[INFO] [stdout] test providers::responses_http::tests::xai_create_and_compact_send_expected_headers_and_paths ... ok
[INFO] [stdout] test providers::xai::tests::native_compact_unauthorized_without_refresh_fails ... ok
[INFO] [stdout] test providers::xai::tests::native_compact_posts_to_responses_compact_and_returns_marker ... ok
[INFO] [stdout] test providers::sdk_contract::tests::transport_request_errors_keep_sanitized_public_messages ... ok
[INFO] [stdout] test providers::openai_compatible::tests::off_as_none_standard_hosts_send_reasoning_effort_when_catalog_is_unknown ... ok
[INFO] [stdout] test providers::xai::tests::oauth_fast_serving_rewrites_only_the_request_model_id ... ok
[INFO] [stdout] test providers::openai_compatible::tests::unknown_ollama_models_send_only_accepted_reasoning_effort ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 585 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 6.66s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rho_providers
[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" "8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1", kill_on_drop: false }`
[INFO] [stdout] 8f8b84d75108cf947ba015742ce3e95319875efb880cf8687ce6db7783e597e1
