[INFO] cloning repository https://github.com/Episkey-G/GrokSearch-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Episkey-G/GrokSearch-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEpiskey-G%2FGrokSearch-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEpiskey-G%2FGrokSearch-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] de86cd1bd59540a7a1aad353bb978fa148025ba5
[INFO] testing Episkey-G/GrokSearch-rs against 1.97.0-beta.6 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEpiskey-G%2FGrokSearch-rs" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Episkey-G/GrokSearch-rs
[INFO] finished tweaking git repo https://github.com/Episkey-G/GrokSearch-rs
[INFO] tweaked toml for git repo https://github.com/Episkey-G/GrokSearch-rs written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Episkey-G/GrokSearch-rs on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Episkey-G/GrokSearch-rs 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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] 5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199
[INFO] running `Command { std: "docker" "start" "5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199", 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" "5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199", 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" "5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.2.62
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling compression-core v0.4.32
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling compression-codecs v0.4.38
[INFO] [stderr]    Compiling quick-xml v0.37.5
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling uuid v1.23.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling async-compression v0.4.42
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tower-http v0.6.10
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling grok-search-rs v0.1.17 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 41.64s
[INFO] running `Command { std: "docker" "inspect" "5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199", 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" "5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling tower-http v0.6.10
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling grok-search-rs v0.1.17 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 20.64s
[INFO] running `Command { std: "docker" "inspect" "5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199", 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" "5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.30s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/grok_search_rs-7065f31749eb543f)
[INFO] [stdout] 
[INFO] [stdout] running 90 tests
[INFO] [stdout] test config::source_config_tests::enrich_config_defaults_hold ... ok
[INFO] [stdout] test config::source_config_tests::enrich_concurrency_reads_env_and_clamps ... ok
[INFO] [stdout] test config::source_config_tests::debug_does_not_leak_secret_values ... ok
[INFO] [stdout] test config::source_config_tests::source_caps_defaults_hold ... ok
[INFO] [stdout] test config::source_config_tests::github_token_present_and_filtered ... ok
[INFO] [stdout] test config::source_config_tests::source_max_answers_reads_env ... ok
[INFO] [stdout] test config::transport_field_tests::transport_chat_completions_when_only_compat_set ... ok
[INFO] [stdout] test config::source_config_tests::source_max_comments_reads_env ... ok
[INFO] [stdout] test config::transport_field_tests::transport_defaults_to_responses_when_only_grok_set ... ok
[INFO] [stdout] test config::transport_field_tests::transport_prefers_grok_when_both_set ... ok
[INFO] [stdout] test mcp::tests::tools_list_descriptions_guide_routing ... ok
[INFO] [stdout] test model::source::tests::source_content_none_omitted_from_json ... ok
[INFO] [stdout] test model::source::tests::source_content_some_appears_in_json ... ok
[INFO] [stdout] test model::tool::tests::web_fetch_output_includes_source_type_and_omits_none_fallback_reason ... ok
[INFO] [stdout] test model::tool::tests::web_fetch_output_serializes_fallback_reason_when_present ... ok
[INFO] [stdout] test oauth::login::tests::callback_line_extracts_code_and_state ... ok
[INFO] [stdout] test mcp::tests::web_map_returns_url_sources_without_search_metadata ... ok
[INFO] [stdout] test mcp::tests::initialized_notification_does_not_emit_response ... ok
[INFO] [stdout] test mcp::tests::ping_request_gets_empty_success_response ... ok
[INFO] [stdout] test oauth::pkce::tests::pkce_challenge_is_s256_url_safe_no_pad ... ok
[INFO] [stdout] test config::transport_field_tests::loads_openai_compatible_fields_from_env ... ok
[INFO] [stdout] test oauth::token_store::tests::damaged_token_file_returns_error ... ok
[INFO] [stdout] test oauth::token_store::tests::detects_expiring_tokens ... ok
[INFO] [stdout] test oauth::token_store::tests::parses_jwt_exp ... ok
[INFO] [stdout] test oauth::token_store::tests::save_and_load_token_store_round_trips ... ok
[INFO] [stdout] test providers::tavily::key_ring_tests::all_empty_segments_fall_back_to_raw_value ... ok
[INFO] [stdout] test providers::tavily::key_ring_tests::comma_separated_keys_split_trim_and_drop_empties ... ok
[INFO] [stdout] test providers::tavily::key_ring_tests::key_indexing_wraps_for_failover_offsets ... ok
[INFO] [stdout] test providers::tavily::key_ring_tests::key_scoped_statuses_trigger_rotation_only ... ok
[INFO] [stdout] test providers::tavily::key_ring_tests::rotation_cursor_is_shared_across_provider_clones ... ok
[INFO] [stdout] test providers::tavily::key_ring_tests::single_key_parses_to_one_entry ... ok
[INFO] [stdout] test providers::tavily::key_ring_tests::start_rotates_round_robin_across_requests ... ok
[INFO] [stdout] test service::enrich_tests::enrich_specialist_failure_rescued_by_generic_fetch ... ok
[INFO] [stdout] test service::enrich_tests::enrich_generic_url_uses_provider_fetch_fallback ... ok
[INFO] [stdout] test service::enrich_tests::extra_sources_zero_suppresses_inline ... ok
[INFO] [stdout] test service::enrich_tests::include_content_false_omits_content_field ... ok
[INFO] [stdout] test service::transport_dispatch_tests::default_model_falls_back_to_grok_model_when_compat_model_missing ... ok
[INFO] [stdout] test service::transport_dispatch_tests::default_model_follows_chat_completions_when_compat_model_set ... ok
[INFO] [stdout] test service::transport_dispatch_tests::default_model_uses_grok_model_on_responses_transport ... ok
[INFO] [stdout] test service::enrich_tests::enrich_fault_isolation_one_fails_rest_ok ... ok
[INFO] [stdout] test service::transport_dispatch_tests::doctor_reports_github_token_status ... ok
[INFO] [stdout] test service::transport_dispatch_tests::doctor_reports_openai_compatible_transport_fields ... ok
[INFO] [stdout] test service::enrich_tests::get_sources_inherits_enriched_content ... ok
[INFO] [stdout] test service::transport_dispatch_tests::fake_with_router_constructs_and_clones ... ok
[INFO] [stdout] test service::transport_dispatch_tests::service_constructs_for_chat_completions_transport ... ok
[INFO] [stdout] test service::transport_dispatch_tests::service_rejects_chat_completions_without_url ... ok
[INFO] [stdout] test sources::github::tests::comments_url_clamps_per_page_to_github_max ... ok
[INFO] [stdout] test sources::github::tests::comments_url_requests_one_more_than_cap ... ok
[INFO] [stdout] test sources::arxiv::tests::extract_id_strips_pdf_suffix ... ok
[INFO] [stdout] test sources::stackexchange::tests::answers_pagesize_requests_one_more_than_cap_capped_at_100 ... ok
[INFO] [stdout] test sources::stackexchange::tests::answers_url_requests_markdown_filter_and_vote_sort ... ok
[INFO] [stdout] test sources::github::tests::parse_review_bodies_skips_empty_and_maps_submitted_at ... ok
[INFO] [stdout] test sources::stackexchange::tests::decode_entities_handles_named_decimal_and_hex ... ok
[INFO] [stdout] test service::transport_dispatch_tests::doctor_still_reports_grok_responses_on_responses_transport ... ok
[INFO] [stdout] test service::enrich_tests::enrich_truncates_to_max_chars ... ok
[INFO] [stdout] test service::enrich_tests::web_search_inline_default_fills_content ... ok
[INFO] [stdout] test sources::stackexchange::tests::field_str_decodes_html_entities_in_body_markdown ... ok
[INFO] [stdout] test sources::stackexchange::tests::decode_entities_leaves_unknown_and_bare_ampersand_intact ... ok
[INFO] [stdout] test sources::arxiv::tests::extract_id_handles_abs_and_extensionless_pdf ... ok
[INFO] [stdout] test sources::github::tests::pr_endpoints_target_pulls_paths ... ok
[INFO] [stdout] test sources::github::tests::parse_comments_maps_user_login_and_timestamps ... ok
[INFO] [stdout] test sources::stackexchange::tests::field_str_prefers_body_markdown_over_html_body ... ok
[INFO] [stdout] test sources::stackexchange::tests::site_from_host_keeps_mathoverflow_full_domain ... ok
[INFO] [stdout] test sources::stackexchange::tests::question_url_requests_markdown_filter_not_withbody ... ok
[INFO] [stdout] test sources::stackexchange::tests::is_se_host_accepts_per_site_meta_hosts ... ok
[INFO] [stdout] test sources::stackexchange::tests::site_from_host_maps_meta_mathoverflow ... ok
[INFO] [stdout] test sources::stackexchange::tests::site_from_host_maps_per_site_meta_hosts ... ok
[INFO] [stdout] test sources::stackexchange::tests::site_from_host_preserves_meta_stackexchange ... ok
[INFO] [stdout] test sources::stackexchange::tests::site_from_host_strips_regular_stackexchange_subdomain ... ok
[INFO] [stdout] test sources::tests::empty_router_finds_nothing ... ok
[INFO] [stdout] test sources::tests::router_returns_first_matching_extractor_in_order ... ok
[INFO] [stdout] test sources::tests::source_type_as_str_matches_serialization ... ok
[INFO] [stdout] test sources::tests::resolve_content_empty_render_falls_back ... ok
[INFO] [stdout] test sources::tests::source_type_serializes_to_required_snake_case_strings ... ok
[INFO] [stdout] test sources::wikipedia::tests::build_api_url_does_not_double_encode_preencoded_title ... ok
[INFO] [stdout] test sources::tests::source_caps_default_is_5_answers_30_comments ... ok
[INFO] [stdout] test sources::tests::router_with_extractor_finds_first_match ... ok
[INFO] [stdout] test sources::tests::resolve_content_err_returns_labeled_reason ... ok
[INFO] [stdout] test sources::wikipedia::tests::excluded_namespace_allows_real_articles ... ok
[INFO] [stdout] test sources::tests::get_json_maps_connection_failure_to_err ... ok
[INFO] [stdout] test sources::tests::resolve_content_ok_returns_content_and_kind ... ok
[INFO] [stdout] test sources::tests::get_text_maps_connection_failure_to_err ... ok
[INFO] [stdout] test sources::wikipedia::tests::build_api_url_requests_full_article_not_intro ... ok
[INFO] [stdout] test sources::wikipedia::tests::build_api_url_encodes_query_delimiters_in_title ... ok
[INFO] [stdout] test sources::tests::resolve_content_no_match_returns_sentinel ... ok
[INFO] [stdout] test sources::wikipedia::tests::excluded_namespace_decodes_encoded_colon ... ok
[INFO] [stdout] test sources::wikipedia::tests::excluded_namespace_is_case_insensitive ... ok
[INFO] [stdout] test service::enrich_tests::counting_extractor_self_test ... ok
[INFO] [stdout] test service::enrich_tests::enrich_concurrency_is_bounded ... ok
[INFO] [stdout] test service::enrich_tests::enrich_timeout_yields_note_not_error ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 90 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/grok_search_rs-a0115eb9c6ddc649)
[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/adapter_grok_responses.rs (/opt/rustwide/target/debug/deps/adapter_grok_responses-d76de911e685c723)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test parses_inline_bracket_citations_from_message_text ... ok
[INFO] [stderr]      Running tests/config.rs (/opt/rustwide/target/debug/deps/config-27cfa86436dd566a)
[INFO] [stdout] test grok_responses_payload_includes_web_search_by_default ... ok
[INFO] [stdout] test grok_responses_payload_adds_x_search_only_when_enabled ... ok
[INFO] [stdout] test web_search_enabled_requires_tool_intent ... ok
[INFO] [stdout] test parses_output_text_fallback ... ok
[INFO] [stdout] test inline_citations_dedupe_against_structured_sources ... ok
[INFO] [stdout] test parses_grok_responses_text_annotations_and_search_call_sources ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 28 tests
[INFO] [stdout] test auth_path_falls_back_to_userprofile_when_home_missing ... ok
[INFO] [stdout] test auth_path_uses_config_sibling_by_default ... ok
[INFO] [stdout] test auth_path_honors_explicit_override ... ok
[INFO] [stdout] test config_enables_x_search_only_when_configured ... ok
[INFO] [stdout] test config_path_falls_back_to_userprofile_when_home_missing ... ok
[INFO] [stdout] test config_normalizes_grok_search_url_to_v1_base ... ok
[INFO] [stdout] test config_path_none_when_no_env_set ... ok
[INFO] [stdout] test config_file_supplies_values_when_env_absent ... ok
[INFO] [stdout] test config_file_supports_all_documented_keys ... ok
[INFO] [stdout] test config_path_honors_explicit_env_override ... ok
[INFO] [stdout] test config_path_explicit_override_wins_over_home ... ok
[INFO] [stdout] test config_path_uses_home_on_unix_layout ... ok
[INFO] [stdout] test config_path_prefers_home_over_userprofile_when_both_set ... ok
[INFO] [stdout] test config_reads_auth_file_override ... ok
[INFO] [stdout] test config_reads_extra_sources_and_fallback_sources_from_env ... ok
[INFO] [stdout] test config_reads_firecrawl_settings ... ok
[INFO] [stdout] test config_reads_grok_search_responses_defaults ... ok
[INFO] [stdout] test config_reads_oauth_auth_mode_from_env ... ok
[INFO] [stdout] test config_reads_timeout_seconds ... ok
[INFO] [stdout] test config_redacts_grok_tavily_and_firecrawl_keys ... ok
[INFO] [stdout] test invalid_source_counts_fall_back_to_safe_defaults ... ok
[INFO] [stdout] test oauth_transport_wins_over_openai_compatible_config ... ok
[INFO] [stdout] test response_budget_defaults_and_env_overrides ... ok
[INFO] [stdout] test unknown_auth_mode_falls_back_to_api_key ... ok
[INFO] [stdout] test missing_config_file_falls_back_to_env_and_defaults ... ok
[INFO] [stdout] test fresh_template_does_not_override_defaults_or_supply_credentials ... ok
[INFO] [stdout] test env_overrides_config_file_values ... ok
[INFO] [stderr]      Running tests/integration_compat.rs (/opt/rustwide/target/debug/deps/integration_compat-693be5e27031d20c)
[INFO] [stdout] test write_template_creates_file_then_is_idempotent ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test chat_completions_e2e_returns_text_and_sources ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_service.rs (/opt/rustwide/target/debug/deps/integration_service-9d546a58c9be2be6)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test full_service_web_search_via_chat_completions ... ignored
[INFO] [stderr]      Running tests/logging.rs (/opt/rustwide/target/debug/deps/logging-b1ff59fc5c549215)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stderr]      Running tests/openai_compatible_adapter.rs (/opt/rustwide/target/debug/deps/openai_compatible_adapter-7f498267da1cec0c)
[INFO] [stdout] test debug_log_redacts_authorization_and_api_keys ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 17 tests
[INFO] [stdout] test errors_when_content_empty_and_no_sources ... ok
[INFO] [stdout] test payload_omits_tools_when_disabled ... ok
[INFO] [stdout] test provider_request_model_overrides_self_model ... ok
[INFO] [stdout] test user_system_overrides_default_hint ... ok
[INFO] [stdout] test payload_includes_tools_when_web_search_enabled ... ok
[INFO] [stdout] test extracts_perplexity_style_message_citations ... ok
[INFO] [stdout] test extracts_array_form_message_content ... ok
[INFO] [stdout] test inline_scanner_recovers_after_malformed_citation ... ok
[INFO] [stdout] test extracts_openai_nested_url_citation_annotations ... ok
[INFO] [stdout] test extracts_top_level_search_sources ... ok
[INFO] [stdout] test extracts_inline_bracket_citations_from_content ... ok
[INFO] [stdout] test extracts_openai_style_annotations ... ok
[INFO] [stdout] test merges_and_dedupes_across_all_paths ... ok
[INFO] [stdout] test provider_endpoint_appends_chat_completions ... ok
[INFO] [stdout] test provider_endpoint_strips_trailing_slash ... ok
[INFO] [stdout] test provider_endpoint_normalizes_root_url_to_v1 ... ok
[INFO] [stdout] test provider_endpoint_normalizes_full_endpoint_input ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/response_budget.rs (/opt/rustwide/target/debug/deps/response_budget-2023398eda0bc72f)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test response_format_concise_omits_inline_content ... ok
[INFO] [stdout] test budget_counts_metadata_and_drops_tail_sources ... ok
[INFO] [stdout] test inline_content_capped_to_max_inline_sources ... ok
[INFO] [stdout] test get_sources_paginates_with_offset_limit ... ok
[INFO] [stdout] test response_format_invalid_value_is_rejected ... ok
[INFO] [stdout] test response_within_budget_is_not_truncated ... ok
[INFO] [stdout] test response_format_detailed_overrides_include_content_false ... ok
[INFO] [stdout] test response_budget_trims_tail_and_cache_keeps_full_content ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/service_contract.rs (/opt/rustwide/target/debug/deps/service_contract-d05ab62484aa5594)
[INFO] [stdout] 
[INFO] [stdout] running 16 tests
[INFO] [stdout] test service_requires_grok_search_api_key ... ok
[INFO] [stdout] test web_fetch_no_specialist_match_has_no_fallback_reason ... ok
[INFO] [stdout] test get_sources_returns_same_payload_repeatedly ... ok
[INFO] [stdout] test web_fetch_source_type_present_on_normal_fetch ... ok
[INFO] [stdout] test fallback_honors_include_content_false ... ok
[INFO] [stdout] test web_fetch_specialist_err_falls_back_to_generic ... ok
[INFO] [stdout] test web_fetch_truncates_to_max_chars_when_explicit ... ok
[INFO] [stdout] test web_search_fallback_reason_reflects_grok_error_kind ... ok
[INFO] [stdout] test web_fetch_specialist_empty_render_falls_back_to_generic ... ok
[INFO] [stdout] test web_fetch_uses_firecrawl_when_tavily_fetch_fails ... ok
[INFO] [stdout] test web_fetch_truncates_via_env_default ... ok
[INFO] [stdout] test web_search_speculation_serves_enrichment_with_one_source_call ... ok
[INFO] [stdout] test web_search_returns_content_and_caches_sources ... ok
[INFO] [stdout] test web_search_uses_env_default_extra_sources_after_grok_success ... ok
[INFO] [stdout] test web_search_success_path_returns_inline_sources ... ok
[INFO] [stderr]      Running tests/source_merge.rs (/opt/rustwide/target/debug/deps/source_merge-b82b3a7734ad9dba)
[INFO] [stdout] test web_search_falls_back_to_tavily_when_grok_has_no_sources ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/sources_render.rs (/opt/rustwide/target/debug/deps/sources_render-d7ec405406724321)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test merge_sources_dedupes_by_url_and_preserves_first_provider ... ok
[INFO] [stdout] test source_provider_field_accepts_static_str_via_cow ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 23 tests
[INFO] [stdout] test arxiv_matcher_negative_non_paper_paths ... ok
[INFO] [stdout] test arxiv_matcher_positive_abs_and_pdf ... ok
[INFO] [stdout] test arxiv_parse_atom_lists_all_authors ... ok
[INFO] [stdout] test arxiv_parse_atom_returns_categories ... ok
[INFO] [stdout] test arxiv_parse_atom_returns_pdf_link ... ok
[INFO] [stdout] test github_issue_render_folds_comments_at_cap ... ok
[INFO] [stdout] test github_issue_render_shows_labels ... ok
[INFO] [stdout] test github_issue_render_shows_title_and_state ... ok
[INFO] [stdout] test arxiv_render_shows_title_and_pdf_link ... ok
[INFO] [stdout] test github_pr_render_shows_merged_state ... ok
[INFO] [stdout] test github_matcher_strict_positive_and_negative ... ok
[INFO] [stdout] test arxiv_parse_atom_returns_title ... ok
[INFO] [stdout] test se_matcher_full_network_positive ... ok
[INFO] [stdout] test se_matcher_non_question_negative ... ok
[INFO] [stdout] test se_render_accepted_answer_includes_comments ... ok
[INFO] [stdout] test se_render_accepted_answer_marked_and_first ... ok
[INFO] [stdout] test se_render_folds_extra_answers_at_cap ... ok
[INFO] [stdout] test se_render_other_answers_have_no_comments ... ok
[INFO] [stdout] test wiki_matcher_excludes_all_non_article_namespaces ... ok
[INFO] [stdout] test wiki_matcher_positive_article_urls ... ok
[INFO] [stdout] test wiki_parse_page_extracts_title_body_and_lang ... ok
[INFO] [stdout] test wiki_render_produces_clean_plaintext ... ok
[INFO] [stdout] test wiki_render_shows_title_and_body ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/sse_bug_repro.rs (/opt/rustwide/target/debug/deps/sse_bug_repro-4f407409c82f31fc)
[INFO] [stdout] 
[INFO] [stdout] running 13 tests
[INFO] [stdout] test post_json_errors_on_response_failed_terminal_event ... ok
[INFO] [stdout] test post_json_returns_when_done_event_has_no_data ... ok
[INFO] [stdout] test post_json_preserves_metadata_only_chat_stream ... ok
[INFO] [stdout] test post_json_decodes_sse_utf8_after_full_event_boundary ... ok
[INFO] [stdout] test post_json_preserves_chat_stream_metadata ... ok
[INFO] [stdout] test post_json_parses_trailing_sse_event_at_eof ... ok
[INFO] [stdout] test post_json_returns_when_stream_true_sse_completed_without_connection_close ... ok
[INFO] [stdout] test post_json_returns_when_stream_false_still_gets_sse ... ok
[INFO] [stdout] test post_json_returns_when_done_event_has_empty_data ... ok
[INFO] [stdout] test post_json_splits_cr_only_sse_events ... ok
[INFO] [stdout] test post_json_uses_earliest_mixed_sse_delimiter ... ok
[INFO] [stdout] test post_json_strips_initial_sse_bom ... ok
[INFO] [stdout] test post_json_returns_when_done_event_has_json_payload ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/tavily_parse.rs (/opt/rustwide/target/debug/deps/tavily_parse-e9a5045e814341b7)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test limit_tavily_results_truncates_api_results ... ok
[INFO] [stdout] test normalizes_tavily_map_string_results ... ok
[INFO] [stdout] test tavily_search_body_omits_filters_when_empty ... ok
[INFO] [stdout] test tavily_search_body_serializes_filters ... ok
[INFO] [stdout] test tavily_map_request_uses_limit_not_max_results ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/tavily_rotation.rs (/opt/rustwide/target/debug/deps/tavily_rotation-7444f9de5b6df57b)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test single_key_exhausts_without_retry ... ok
[INFO] [stdout] test key_scoped_failure_rotates_to_next_key_and_succeeds ... ok
[INFO] [stdout] test upstream_5xx_fails_fast_without_rotation ... ok
[INFO] [stdout] test plan_limit_432_rotates_like_rate_limit ... ok
[INFO] [stdout] test successive_requests_round_robin_across_keys ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests grok_search_rs
[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" "5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199", kill_on_drop: false }`
[INFO] [stdout] 5d209e683e187db13e07612a91beabb8b4eba1bb9ff1dcdabc5f00b36a415199
