[INFO] cloning repository https://github.com/p4u/webscout [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/p4u/webscout" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fp4u%2Fwebscout", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fp4u%2Fwebscout'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 89f447b8e69a35deae358fc6eb1564bd0fbf07d1 [INFO] testing p4u/webscout/89f447b8e69a35deae358fc6eb1564bd0fbf07d1 against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fp4u%2Fwebscout" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-6-tc1/source/rust-toolchain.toml [INFO] started tweaking git repo https://github.com/p4u/webscout [INFO] finished tweaking git repo https://github.com/p4u/webscout [INFO] tweaked toml for git repo https://github.com/p4u/webscout written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/p4u/webscout on toolchain 1.99.0-beta.8 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/p4u/webscout 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.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded async-compression v0.4.48 [INFO] [stderr] Downloaded compression-codecs v0.4.43 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2 [INFO] running `Command { std: "docker" "start" "b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2", 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" "b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2", 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" "b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.107 [INFO] [stderr] Compiling unicode-ident v1.0.26 [INFO] [stderr] Compiling quote v1.0.47 [INFO] [stderr] Compiling libc v0.2.189 [INFO] [stderr] Compiling cfg-if v1.0.5 [INFO] [stderr] Compiling memchr v2.8.3 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling itoa v1.0.18 [INFO] [stderr] Compiling futures-core v0.3.34 [INFO] [stderr] Compiling bytes v1.12.1 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling typenum v1.20.1 [INFO] [stderr] Compiling futures-sink v0.3.34 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling find-msvc-tools v0.1.12 [INFO] [stderr] Compiling serde_core v1.0.229 [INFO] [stderr] Compiling shlex v2.0.1 [INFO] [stderr] Compiling smallvec v1.16.1 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling futures-channel v0.3.34 [INFO] [stderr] Compiling rustversion v1.0.23 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling writeable v0.6.4 [INFO] [stderr] Compiling futures-task v0.3.34 [INFO] [stderr] Compiling cc v1.4.6 [INFO] [stderr] Compiling crc32fast v1.5.2 [INFO] [stderr] Compiling litemap v0.8.3 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling hashbrown v0.17.1 [INFO] [stderr] Compiling futures-io v0.3.34 [INFO] [stderr] Compiling simd-adler32 v0.3.10 [INFO] [stderr] Compiling icu_properties_data v2.3.0 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling zeroize v1.9.0 [INFO] [stderr] Compiling icu_normalizer_data v2.3.0 [INFO] [stderr] Compiling adler2 v2.0.1 [INFO] [stderr] Compiling utf8_iter v1.0.4 [INFO] [stderr] Compiling rustls-pki-types v1.15.1 [INFO] [stderr] Compiling untrusted v0.9.0 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling serde v1.0.229 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Compiling miniz_oxide v0.9.1 [INFO] [stderr] Compiling log v0.4.34 [INFO] [stderr] Compiling fnv v1.0.7 [INFO] [stderr] Compiling atomic-waker v1.1.2 [INFO] [stderr] Compiling rustls v0.23.45 [INFO] [stderr] Compiling zmij v1.0.23 [INFO] [stderr] Compiling try-lock v0.2.5 [INFO] [stderr] Compiling encoding_rs v0.8.41 [INFO] [stderr] Compiling want v0.3.1 [INFO] [stderr] Compiling http v1.5.0 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling getrandom v0.4.3 [INFO] [stderr] Compiling tower-layer v0.3.3 [INFO] [stderr] Compiling subtle v2.6.1 [INFO] [stderr] Compiling serde_json v1.0.151 [INFO] [stderr] Compiling httpdate v1.0.3 [INFO] [stderr] Compiling rand_core v0.10.1 [INFO] [stderr] Compiling autocfg v1.5.1 [INFO] [stderr] Compiling flate2 v1.1.10 [INFO] [stderr] Compiling syn v3.0.6 [INFO] [stderr] Compiling syn v2.0.119 [INFO] [stderr] Compiling indexmap v2.14.2 [INFO] [stderr] Compiling aho-corasick v1.1.5 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling block-padding v0.3.3 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling compression-core v0.4.33 [INFO] [stderr] Compiling multiversion_no_op v1.0.0 [INFO] [stderr] Compiling simdutf8 v0.1.5 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling inout v0.1.4 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling mio v1.2.3 [INFO] [stderr] Compiling socket2 v0.6.5 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling cipher v0.4.4 [INFO] [stderr] Compiling regex-syntax v0.8.11 [INFO] [stderr] Compiling cpufeatures v0.3.1 [INFO] [stderr] Compiling ipnet v2.12.2 [INFO] [stderr] Compiling core_detect v1.0.0 [INFO] [stderr] Compiling bitflags v2.13.2 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling tinyvec v1.13.3 [INFO] [stderr] Compiling http-body v1.1.0 [INFO] [stderr] Compiling thiserror v2.0.20 [INFO] [stderr] Compiling scopeguard v1.2.0 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling http-body-util v0.1.5 [INFO] [stderr] Compiling chacha20 v0.10.2 [INFO] [stderr] Compiling compression-codecs v0.4.43 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling pom v1.1.0 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling unicode-bidi v0.3.18 [INFO] [stderr] Compiling unicode-properties v0.1.4 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling openssl-probe v0.2.1 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling colorchoice v1.0.5 [INFO] [stderr] Compiling unicode-normalization v0.1.25 [INFO] [stderr] Compiling mime v0.3.17 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling rustls-native-certs v0.8.4 [INFO] [stderr] Compiling rand v0.10.3 [INFO] [stderr] Compiling cbc v0.1.2 [INFO] [stderr] Compiling aes v0.8.4 [INFO] [stderr] Compiling ecb v0.1.2 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling md-5 v0.10.6 [INFO] [stderr] Compiling nom v8.0.0 [INFO] [stderr] Compiling rangemap v1.8.0 [INFO] [stderr] Compiling clap_lex v1.1.1 [INFO] [stderr] Compiling stringprep v0.1.5 [INFO] [stderr] Compiling anyhow v1.0.104 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling weezl v0.1.12 [INFO] [stderr] Compiling ttf-parser v0.25.1 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling euclid v0.20.14 [INFO] [stderr] Compiling clap_builder v4.6.7 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling axum-core v0.5.6 [INFO] [stderr] Compiling adobe-cmap-parser v0.4.1 [INFO] [stderr] Compiling type1-encoding-parser v0.1.1 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling regex-automata v0.4.18 [INFO] [stderr] Compiling csv-core v0.1.13 [INFO] [stderr] Compiling thread_local v1.1.10 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling postscript v0.14.1 [INFO] [stderr] Compiling matchit v0.8.4 [INFO] [stderr] Compiling base64 v0.23.1 [INFO] [stderr] Compiling cff-parser v0.2.0 [INFO] [stderr] Compiling csv v1.4.0 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling synstructure v0.14.0 [INFO] [stderr] Compiling zerofrom-derive v0.1.8 [INFO] [stderr] Compiling yoke-derive v0.8.3 [INFO] [stderr] Compiling zerovec-derive v0.11.6 [INFO] [stderr] Compiling displaydoc v0.2.7 [INFO] [stderr] Compiling tokio-macros v2.7.2 [INFO] [stderr] Compiling futures-macro v0.3.34 [INFO] [stderr] Compiling serde_derive v1.0.229 [INFO] [stderr] Compiling multiversion-macros v0.9.0 [INFO] [stderr] Compiling thiserror-impl v2.0.20 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling clap_derive v4.6.7 [INFO] [stderr] Compiling tokio v1.53.1 [INFO] [stderr] Compiling futures-util v0.3.34 [INFO] [stderr] Compiling multiversion v0.9.0 [INFO] [stderr] Compiling zerofrom v0.1.8 [INFO] [stderr] Compiling yoke v0.8.3 [INFO] [stderr] Compiling zerovec v0.11.8 [INFO] [stderr] Compiling zerotrie v0.2.5 [INFO] [stderr] Compiling clap v4.6.7 [INFO] [stderr] Compiling tinystr v0.8.4 [INFO] [stderr] Compiling potential_utf v0.1.6 [INFO] [stderr] Compiling icu_collections v2.3.0 [INFO] [stderr] Compiling icu_locale_core v2.3.0 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling regex v1.13.1 [INFO] [stderr] Compiling lopdf v0.42.0 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling tracing-serde v0.2.0 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling rustls-webpki v0.103.15 [INFO] [stderr] Compiling icu_provider v2.3.1 [INFO] [stderr] Compiling icu_properties v2.3.0 [INFO] [stderr] Compiling icu_normalizer v2.3.0 [INFO] [stderr] Compiling futures-executor v0.3.34 [INFO] [stderr] Compiling futures v0.3.34 [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 tokio-util v0.7.19 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling async-compression v0.4.48 [INFO] [stderr] Compiling h2 v0.4.19 [INFO] [stderr] Compiling tower-http v0.6.11 [INFO] [stderr] Compiling tokio-rustls v0.26.5 [INFO] [stderr] Compiling rustls-platform-verifier v0.7.0 [INFO] [stderr] Compiling pdf-extract v0.12.1 [INFO] [stderr] Compiling hyper v1.11.1 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-rustls v0.27.9 [INFO] [stderr] Compiling axum v0.8.9 [INFO] [stderr] Compiling reqwest v0.13.5 [INFO] [stderr] Compiling webscout v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 4m 19s [INFO] running `Command { std: "docker" "inspect" "b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2", 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" "b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling webscout v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 2m 45s [INFO] running `Command { std: "docker" "inspect" "b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2", 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" "b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.22s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/release/deps/webscout-a1f0b4989a972503) [INFO] [stdout] [INFO] [stdout] running 543 tests [INFO] [stdout] test api::tests::a_multiline_message_stays_one_ndjson_line ... ok [INFO] [stdout] test api::tests::a_float_is_not_a_whole_number ... ok [INFO] [stdout] test api::tests::a_number_is_not_a_boolean ... ok [INFO] [stdout] test api::tests::a_boolean_is_not_a_number ... ok [INFO] [stdout] test api::tests::defaults_are_read_from_tunables_not_copied ... ok [INFO] [stdout] test api::tests::a_wrong_password_is_401_and_sets_no_cookie ... ok [INFO] [stdout] test api::tests::a_persisted_report_survives_the_in_memory_store ... ok [INFO] [stdout] test api::tests::download_of_an_unknown_run_is_a_404 ... ok [INFO] [stdout] test api::tests::download_of_an_unknown_format_is_a_400 ... ok [INFO] [stdout] test api::tests::empty_options_yield_the_standard_preset ... ok [INFO] [stdout] test api::tests::a_malformed_body_is_a_400_not_a_422 ... ok [INFO] [stdout] test api::tests::catalogue_has_the_three_contract_groups ... ok [INFO] [stdout] test api::tests::a_cost_the_endpoint_never_reported_is_absent_not_zero ... ok [INFO] [stdout] test api::tests::enum_options_declare_their_values_and_default_to_one ... ok [INFO] [stdout] test api::tests::engines_and_format_parse_to_their_enums ... ok [INFO] [stdout] test api::tests::credentials_endpoints_and_binaries_are_rejected_as_unknown ... ok [INFO] [stdout] test api::tests::download_serves_a_stored_run_as_an_attachment ... ok [INFO] [stdout] test api::tests::an_empty_query_is_rejected ... ok [INFO] [stdout] test api::tests::an_out_of_range_option_is_a_400_naming_the_bound ... ok [INFO] [stdout] test api::tests::a_planner_that_never_ran_reports_zeroes_the_ui_can_hide ... ok [INFO] [stdout] test api::tests::every_offered_format_parses_to_a_renderer ... ok [INFO] [stdout] test api::tests::every_option_carries_a_non_empty_help ... ok [INFO] [stdout] test api::tests::credentials_in_the_request_body_are_a_400 ... ok [INFO] [stdout] test api::tests::fetch_concurrency_falls_back_to_the_servers_choice ... ok [INFO] [stdout] test api::tests::a_password_guards_the_api_but_not_health_session_login_ui_or_mcp ... ok [INFO] [stdout] test api::tests::generated_run_ids_are_unique ... ok [INFO] [stdout] test api::tests::every_catalogue_option_is_applied ... ok [INFO] [stdout] test api::tests::every_contract_option_is_present_in_its_group ... ok [INFO] [stdout] test api::tests::extensions_and_types_cover_every_offered_format ... ok [INFO] [stdout] test api::tests::no_option_names_a_credential_or_an_endpoint ... ok [INFO] [stdout] test api::tests::logging_in_opens_the_api_and_logging_out_closes_it ... ok [INFO] [stdout] test api::tests::only_max_rounds_is_auto_capable ... ok [INFO] [stdout] test api::tests::max_rounds_accepts_auto_or_a_number ... ok [INFO] [stdout] test api::tests::mcp_without_a_configured_token_refuses_everything ... ok [INFO] [stdout] test api::tests::options_payload_serialises_with_the_contract_shape ... ok [INFO] [stdout] test api::tests::out_of_range_names_the_bound_and_is_not_clamped ... ok [INFO] [stdout] test api::tests::numeric_options_declare_a_sane_range_containing_their_default ... ok [INFO] [stdout] test api::tests::preset_is_applied_before_overrides_whatever_the_key_order ... ok [INFO] [stdout] test api::tests::mcp_initializes_lists_tools_and_acks_notifications ... ok [INFO] [stdout] test api::tests::mcp_rejects_a_missing_or_wrong_token ... ok [INFO] [stdout] test api::tests::negation_options_invert_the_flag ... ok [INFO] [stdout] test api::tests::now_rfc3339_has_the_right_shape ... ok [INFO] [stdout] test api::tests::progress_line_carries_the_contract_fields ... ok [INFO] [stdout] test api::tests::preset_tunables_match_the_config_functions ... ok [INFO] [stdout] test api::tests::presets_round_trip ... ok [INFO] [stdout] test api::tests::rfc3339_formats_the_epoch ... ok [INFO] [stdout] test api::tests::download_defaults_to_markdown ... ok [INFO] [stdout] test api::tests::model_names_are_accepted_and_blank_means_server_default ... ok [INFO] [stdout] test api::tests::ndjson_lines_end_in_exactly_one_newline ... ok [INFO] [stdout] test api::tests::options_endpoint_serves_the_catalogue ... ok [INFO] [stdout] test api::tests::store_evicts_the_oldest_past_the_cap ... ok [INFO] [stdout] test api::tests::health_reports_ok_and_the_crate_version ... ok [INFO] [stdout] test api::tests::run_id_is_hex_of_clock_and_counter ... ok [INFO] [stdout] test api::tests::run_ids_differ_within_one_tick ... ok [INFO] [stdout] test api::tests::reasoning_tokens_appear_only_when_some_were_spent ... ok [INFO] [stdout] test api::tests::rfc3339_formats_a_known_instant ... ok [INFO] [stdout] test api::tests::search_cache_ttl_becomes_a_duration ... ok [INFO] [stdout] test api::tests::several_unknown_options_are_all_named ... ok [INFO] [stdout] test api::tests::the_cookie_is_secure_only_behind_https ... ok [INFO] [stdout] test api::tests::the_final_usage_event_and_the_result_stats_agree ... ok [INFO] [stdout] test api::tests::store_returns_what_it_kept ... ok [INFO] [stdout] test api::tests::terminal_is_not_an_offered_format ... ok [INFO] [stdout] test api::tests::unknown_option_is_named_in_the_error ... ok [INFO] [stdout] test api::tests::ui_file_serves_files_falls_back_to_index_and_refuses_escapes ... ok [INFO] [stdout] test api::tests::the_mcp_token_is_shown_only_to_a_logged_in_user_of_a_protected_server ... ok [INFO] [stdout] test api::tests::usage_line_is_one_ndjson_line ... ok [INFO] [stdout] test api::tests::thinking_controls_parse_through_the_same_value_enum_as_the_flag ... ok [INFO] [stdout] test api::tests::usage_line_carries_the_contract_fields ... ok [INFO] [stdout] test api::tests::without_a_login_configured_everything_is_open ... ok [INFO] [stdout] test api::tests::without_a_password_login_is_a_no_op_and_session_says_open ... ok [INFO] [stdout] test api::tests::stats_serves_the_contract_shape_and_validates_its_query ... ok [INFO] [stdout] test auth::tests::the_eleventh_attempt_in_a_minute_is_refused_even_if_right ... ok [INFO] [stdout] test api::tests::eleven_attempts_a_minute_is_one_too_many ... ok [INFO] [stdout] test auth::tests::a_blank_or_quoted_password_is_read_like_other_config ... ok [INFO] [stdout] test auth::tests::the_session_cookie_is_found_among_others_and_across_headers ... ok [INFO] [stdout] test api::tests::wrong_type_is_rejected_by_name ... ok [INFO] [stdout] test auth::tests::tokens_are_64_hex_characters_and_distinct ... ok [INFO] [stdout] test auth::tests::secret_eq_compares_whole_values_of_any_length ... ok [INFO] [stdout] test browser::tests::a_panicking_pdf_parser_is_a_dropped_fetch_not_a_crash ... ok [INFO] [stdout] test auth::tests::sessions_open_validate_and_close ... ok [INFO] [stdout] test api::tests::zero_is_below_the_floor_for_a_count ... ok [INFO] [stdout] test auth::tests::secure_follows_the_forwarded_protocol ... ok [INFO] [stdout] test api::tests::the_usage_interval_is_about_a_second ... ok [INFO] [stdout] test api::tests::unknown_enum_value_lists_the_allowed_ones ... ok [INFO] [stdout] test browser::tests::a_header_element_is_not_the_head ... ok [INFO] [stdout] test browser::tests::a_textless_pdf_is_reported_as_no_text ... ok [INFO] [stdout] test browser::tests::canonical_url_survives_garbage ... ok [INFO] [stdout] test browser::tests::decode_html_honours_the_meta_charset ... ok [INFO] [stdout] test browser::tests::decodes_entities_including_numeric ... ok [INFO] [stdout] test browser::tests::chunks_on_paragraph_boundaries ... ok [INFO] [stdout] test browser::tests::an_unclosed_code_block_does_not_truncate_the_page ... ok [INFO] [stdout] test browser::tests::dedupe_hits_uses_the_canonical_key ... ok [INFO] [stdout] test browser::tests::canonical_url_drops_tracking_and_sorts_the_rest ... ok [INFO] [stdout] test browser::tests::code_blocks_are_dropped_even_after_text ... ok [INFO] [stdout] test browser::tests::decodes_latin_named_entities ... ok [INFO] [stdout] test browser::tests::canonical_url_folds_scheme_www_and_trailing_slash ... ok [INFO] [stdout] test browser::tests::canonical_url_keeps_content_selecting_parameters ... ok [INFO] [stdout] test browser::tests::dedupes_and_unwraps_hits ... ok [INFO] [stdout] test browser::tests::display_url_strips_the_cookie_wall_litter_but_keeps_the_document ... ok [INFO] [stdout] test browser::tests::extract_links_resolves_relative_hrefs ... ok [INFO] [stdout] test browser::tests::double_escaped_entities_decode_once ... ok [INFO] [stdout] test browser::tests::drops_fragments_too_short_to_judge ... ok [INFO] [stdout] test browser::tests::extract_markdown_links_captures_bare_urls ... ok [INFO] [stdout] test browser::tests::display_url_keeps_what_selects_the_content ... ok [INFO] [stdout] test browser::tests::display_url_returns_something_citable_for_garbage ... ok [INFO] [stdout] test browser::tests::encodes_query_components ... ok [INFO] [stdout] test browser::tests::extract_markdown_links_handles_title_after_url ... ok [INFO] [stdout] test browser::tests::extract_links_strips_tags_and_collapses_whitespace_in_text ... ok [INFO] [stdout] test browser::tests::extract_links_truncates_text_at_160_chars ... ok [INFO] [stdout] test browser::tests::extract_markdown_links_parses_inline_links_and_resolves_relative ... ok [INFO] [stdout] test browser::tests::extract_markdown_links_parses_links_summary_section ... ok [INFO] [stdout] test browser::tests::extract_markdown_links_caps_at_300 ... ok [INFO] [stdout] test browser::tests::extract_links_caps_at_300 ... ok [INFO] [stdout] test browser::tests::extract_markdown_links_skips_unwanted_schemes_and_fragments ... ok [INFO] [stdout] test browser::tests::extract_markdown_links_deduplicates_across_forms ... ok [INFO] [stdout] test browser::tests::html_to_text_emits_img_alt_inline ... ok [INFO] [stdout] test browser::tests::is_pdf_url_judges_by_the_path_extension ... ok [INFO] [stdout] test browser::tests::extract_markdown_links_strips_trailing_punctuation_on_bare_urls ... ok [INFO] [stdout] test browser::tests::extract_markdown_links_truncates_text_at_160_chars ... ok [INFO] [stdout] test browser::tests::merge_hits_drops_syndicated_duplicate_titles ... ok [INFO] [stdout] test browser::tests::merge_hits_honours_the_limit_and_ignores_empty_urls ... ok [INFO] [stdout] test browser::tests::extract_links_deduplicates_by_href ... ok [INFO] [stdout] test browser::tests::honors_the_chunk_cap ... ok [INFO] [stdout] test browser::tests::merge_hits_keeps_the_best_position_and_fills_empty_titles ... ok [INFO] [stdout] test browser::tests::lane_budget_scales_with_the_waves_a_batch_needs ... ok [INFO] [stdout] test browser::tests::merge_hits_keeps_same_site_pages_that_share_a_title ... ok [INFO] [stdout] test browser::tests::merge_hits_of_nothing_is_nothing ... ok [INFO] [stdout] test browser::tests::merge_hits_unions_engines_on_agreement ... ok [INFO] [stdout] test browser::tests::merge_hits_keeps_distinct_pages_sharing_a_short_title ... ok [INFO] [stdout] test browser::tests::passes_direct_links_through ... ok [INFO] [stdout] test browser::tests::html_helpers_survive_multibyte_markup ... ok [INFO] [stdout] test browser::tests::json_ld_structured_data_is_kept_as_text ... ok [INFO] [stdout] test browser::tests::percent_decoding_leaves_a_trailing_partial_escape_alone ... ok [INFO] [stdout] test browser::tests::rejects_internal_duckduckgo_navigation ... ok [INFO] [stdout] test browser::tests::pdf_title_takes_the_decoded_filename ... ok [INFO] [stdout] test browser::tests::site_stem_folds_hosts_and_suffixes ... ok [INFO] [stdout] test browser::tests::title_key_matches_syndicated_copies ... ok [INFO] [stdout] test browser::tests::hard_splits_text_that_has_no_blank_lines ... ok [INFO] [stdout] test browser::tests::hard_split_never_panics_on_multibyte_text ... ok [INFO] [stdout] test browser::tests::tracking_params_are_recognised_by_prefix_and_name ... ok [INFO] [stdout] test browser::tests::unread_urls_are_the_missing_and_the_blank ... ok [INFO] [stdout] test browser::tests::unwraps_duckduckgo_redirects ... ok [INFO] [stdout] test candidates::tests::appears_in_case_insensitive ... ok [INFO] [stdout] test browser::tests::title_key_strips_site_names_and_caps_at_eight_words ... ok [INFO] [stdout] test candidates::tests::appears_in_returns_false_when_absent ... ok [INFO] [stdout] test candidates::tests::appears_in_matches_json_escaped_text ... ok [INFO] [stdout] test candidates::tests::appears_in_obfuscated_email_in_text ... ok [INFO] [stdout] test candidates::tests::appears_in_whitespace_normalised ... ok [INFO] [stdout] test candidates::tests::finds_bare_www_url_and_prepends_scheme ... ok [INFO] [stdout] test candidates::tests::finds_https_url ... ok [INFO] [stdout] test candidates::tests::deduplicates_urls ... ok [INFO] [stdout] test candidates::tests::at_obfuscation_does_not_invent_emails_from_prose ... ok [INFO] [stdout] test candidates::tests::finds_multiple_emails ... ok [INFO] [stdout] test candidates::tests::finds_phone_with_spaces ... ok [INFO] [stdout] test candidates::tests::finds_international_phone ... ok [INFO] [stdout] test candidates::tests::ignores_short_digit_sequences ... ok [INFO] [stdout] test candidates::tests::keeps_ordinary_email_addresses ... ok [INFO] [stdout] test candidates::tests::mailing_address_is_not_an_email_field ... ok [INFO] [stdout] test candidates::tests::normalises_arroba_obfuscation ... ok [INFO] [stdout] test candidates::tests::normalises_at_bracket_obfuscation ... ok [INFO] [stdout] test candidates::tests::normalises_at_paren_obfuscation ... ok [INFO] [stdout] test candidates::tests::normalises_spaced_at_obfuscation ... ok [INFO] [stdout] test candidates::tests::deduplicates_emails ... ok [INFO] [stdout] test candidates::tests::recognises_email_field_names ... ok [INFO] [stdout] test candidates::tests::recognises_url_field_names ... ok [INFO] [stdout] test candidates::tests::rejects_cloudflare_email_protected_artefact ... ok [INFO] [stdout] test candidates::tests::recognises_phone_field_names ... ok [INFO] [stdout] test candidates::tests::rejects_local_part_containing_protected_word ... ok [INFO] [stdout] test candidates::tests::finds_standard_email ... ok [INFO] [stdout] test candidates::tests::keeps_email_prefix_that_is_not_the_full_local_part ... ok [INFO] [stdout] test candidates::tests::returns_none_for_unknown_field ... ok [INFO] [stdout] test candidates::tests::unescapes_json_separated_urls_and_folds_the_plain_spelling ... ok [INFO] [stdout] test candidates::tests::rejects_local_part_email_exactly ... ok [INFO] [stdout] test candidates::tests::rejects_placeholder_domains ... ok [INFO] [stdout] test clock::tests::century_case_2000_is_a_leap_year ... ok [INFO] [stdout] test clock::tests::epoch_day_zero_is_the_unix_epoch ... ok [INFO] [stdout] test clock::tests::century_case_1900_is_not_a_leap_year ... ok [INFO] [stdout] test clock::tests::format_pads_every_component ... ok [INFO] [stdout] test clock::tests::today_utc_has_the_iso_shape_and_a_plausible_year ... ok [INFO] [stdout] test config::config_tests::accepts_localhost_http ... ok [INFO] [stdout] test clock::tests::year_boundaries_round_trip_both_ways ... ok [INFO] [stdout] test clock::tests::known_epoch_2024_new_year ... ok [INFO] [stdout] test clock::tests::leap_day_2024_02_29_exists_and_is_followed_by_march ... ok [INFO] [stdout] test config::config_tests::accepts_openrouter_full_url ... ok [INFO] [stdout] test config::config_tests::accepts_query_string ... ok [INFO] [stdout] test config::config_tests::rejects_chat_slash ... ok [INFO] [stdout] test config::config_tests::rejects_http_on_non_local ... ok [INFO] [stdout] test config::config_tests::rejects_v1_only ... ok [INFO] [stdout] test config::config_tests::suggest_from_bare_host ... ok [INFO] [stdout] test config::config_tests::accepts_trailing_slash_on_completions ... ok [INFO] [stdout] test config::config_tests::suggest_from_chat_slash ... ok [INFO] [stdout] test config::config_tests::rejects_bare_host ... ok [INFO] [stdout] test config::config_tests::unquote_strips_one_matching_pair_and_whitespace ... ok [INFO] [stdout] test llm::tests::a_stall_counts_as_progress_only_past_the_opening ... ok [INFO] [stdout] test llm::tests::auto_adds_nothing_on_non_openrouter ... ok [INFO] [stdout] test llm::tests::effective_control_auto_resolves_for_other_host ... ok [INFO] [stdout] test llm::tests::effective_control_auto_resolves_for_openrouter ... ok [INFO] [stdout] test llm::tests::effort_thinking_off ... ok [INFO] [stdout] test config::config_tests::suggest_from_v1 ... ok [INFO] [stdout] test llm::tests::effort_thinking_on ... ok [INFO] [stdout] test api::tests::mcp_tool_errors_are_readable_results_not_protocol_errors ... ok [INFO] [stdout] test llm::tests::effective_control_non_auto_passes_through ... ok [INFO] [stdout] test api::tests::negative_values_are_rejected ... ok [INFO] [stdout] test browser::tests::extract_links_skips_unwanted_schemes_and_fragments ... ok [INFO] [stdout] test browser::tests::payload_downcast_reads_both_payload_shapes ... ok [INFO] [stdout] test browser::tests::pdf_text_extracts_from_a_real_pdf ... ok [INFO] [stdout] test browser::tests::extract_links_recovers_logo_wall_names_from_alt_and_title_and_aria ... ok [INFO] [stdout] test llm::tests::message_reasoning_bytes_falls_back_to_reasoning_content ... ok [INFO] [stdout] test llm::tests::extract_first_json_object_pulls_out_wrapped_json ... ok [INFO] [stdout] test llm::tests::is_starved_triggers_on_reasoning_content_server_error ... ok [INFO] [stdout] test llm::tests::message_reasoning_bytes_zero_when_neither ... ok [INFO] [stdout] test llm::tests::message_deserializes_reasoning_content_alias ... ok [INFO] [stdout] test llm::tests::message_reasoning_bytes_prefers_reasoning_field ... ok [INFO] [stdout] test llm::tests::nano_usd_accumulates_without_drift ... ok [INFO] [stdout] test llm::tests::is_openrouter_detects_host ... ok [INFO] [stdout] test llm::tests::is_response_format_unsupported_matches_400_bodies ... ok [INFO] [stdout] test llm::tests::nano_usd_rejects_nonsense_rather_than_wrapping ... ok [INFO] [stdout] test llm::tests::salvage_recovers_before_degenerate_filler ... ok [INFO] [stdout] test llm::tests::openrouter_thinking_on ... ok [INFO] [stdout] test llm::tests::off_adds_nothing ... ok [INFO] [stdout] test llm::tests::nano_usd_round_trips_an_openrouter_cost ... ok [INFO] [stdout] test llm::tests::strip_code_fence_handles_json_marker ... ok [INFO] [stdout] test llm::tests::sse_data_reads_payload_lines_only ... ok [INFO] [stdout] test llm::tests::openrouter_thinking_off ... ok [INFO] [stdout] test llm::tests::salvage_honours_braces_inside_strings ... ok [INFO] [stdout] test llm::tests::vllm_thinking_on ... ok [INFO] [stdout] test llm::tests::whitespace_run_tracks_trailing_whitespace_across_chunks ... ok [INFO] [stdout] test llm::tests::salvage_returns_none_when_there_is_nothing_to_cut ... ok [INFO] [stdout] test llm::tests::usage_without_a_cost_is_unknown_not_zero ... ok [INFO] [stdout] test main_tests::api_plus_a_query_names_the_conflict ... ok [INFO] [stdout] test main_tests::api_without_a_query_is_fine ... ok [INFO] [stdout] test llm::tests::vllm_thinking_off ... ok [INFO] [stdout] test main_tests::llm_extras_says_nothing_when_there_is_nothing_to_say ... ok [INFO] [stdout] test llm::tests::salvage_skips_the_partial_object_after_a_comma ... ok [INFO] [stdout] test llm::tests::usage_reads_openrouter_cost_and_reasoning_tokens ... ok [INFO] [stdout] test llm::tests::salvage_recovers_records_before_the_cut ... ok [INFO] [stdout] test main_tests::a_component_that_never_ran_does_not_make_the_total_unknown ... ok [INFO] [stdout] test main_tests::a_query_without_api_is_fine ... ok [INFO] [stdout] test main_tests::commas_group_thousands ... ok [INFO] [stdout] test main_tests::api_mode_is_not_silent_by_default ... ok [INFO] [stdout] test main_tests::max_rounds_takes_a_number_or_auto ... ok [INFO] [stdout] test main_tests::llm_extras_prints_a_reported_cost_to_four_decimals ... ok [INFO] [stdout] test main_tests::llm_extras_surfaces_reasoning_tokens_with_separators ... ok [INFO] [stdout] test main_tests::the_run_summary_omits_a_cost_no_endpoint_reported ... ok [INFO] [stdout] test main_tests::total_cost_is_unknown_when_an_endpoint_that_ran_stayed_quiet ... ok [INFO] [stdout] test mcp::tests::constant_time_eq_compares_whole_values ... ok [INFO] [stdout] test main_tests::total_cost_adds_every_component_that_reported_one ... ok [INFO] [stdout] test main_tests::neither_a_query_nor_api_is_an_error_that_suggests_both ... ok [INFO] [stdout] test mcp::tests::an_unset_token_disables_the_endpoint ... ok [INFO] [stdout] test mcp::tests::a_wrong_or_missing_token_is_401_with_a_challenge ... ok [INFO] [stdout] test main_tests::stages_land_in_the_right_column ... ok [INFO] [stdout] test main_tests::the_run_summary_shows_cost_and_reasoning ... ok [INFO] [stdout] test mcp::tests::bearer_is_read_case_insensitively_and_trimmed ... ok [INFO] [stdout] test mcp::tests::total_cost_is_unknown_when_a_component_that_ran_did_not_report ... ok [INFO] [stdout] test mcp::tests::wait_is_clamped_and_defaults ... ok [INFO] [stdout] test output::tests::csv_no_extra_col_when_provenance_matches_source_url ... ok [INFO] [stdout] test output::tests::csv_adds_provenance_source_url_column ... ok [INFO] [stdout] test output::tests::csv_has_header_and_row ... ok [INFO] [stdout] test mcp::tests::row_limit_follows_the_request ... ok [INFO] [stdout] test mcp::tests::start_search_lifts_the_ui_options_to_arguments ... ok [INFO] [stdout] test mcp::tests::every_tool_has_a_schema_description_and_annotations ... ok [INFO] [stdout] test mcp::tests::initialize_echoes_a_known_version_and_offers_the_newest_otherwise ... ok [INFO] [stdout] test output::tests::markdown_escapes_pipes_in_values ... ok [INFO] [stdout] test output::tests::markdown_shows_the_unsupported_marker_in_the_answer_text ... ok [INFO] [stdout] test output::tests::partial_gloss_without_a_target_names_no_zero ... ok [INFO] [stdout] test output::tests::jsonl_emits_one_record_then_a_summary ... ok [INFO] [stdout] test output::tests::markdown_body_is_the_result_without_its_frame ... ok [INFO] [stdout] test output::tests::json_carries_the_claim_stats_and_the_marked_answer ... ok [INFO] [stdout] test output::tests::markdown_columns_follow_the_mission_field_order ... ok [INFO] [stdout] test output::tests::stats_line_reports_unsupported_claims_when_nonzero ... ok [INFO] [stdout] test output::tests::stats_claim_fields_default_to_zero_when_absent ... ok [INFO] [stdout] test output::tests::stats_line_silent_about_claims_when_none_were_unsupported ... ok [INFO] [stdout] test output::tests::terminal_shows_the_unsupported_marker_in_the_answer_text ... ok [INFO] [stdout] test scout::tests::a_page_on_another_rows_website_is_not_this_rows_source ... ok [INFO] [stdout] test scout::tests::a_passage_answering_one_part_is_kept ... ok [INFO] [stdout] test output::tests::stats_line_shows_enrichment_when_nonzero ... ok [INFO] [stdout] test scout::tests::a_referent_is_bound_as_the_field_that_names_it_not_as_the_entity ... ok [INFO] [stdout] test output::tests::terminal_shows_per_field_provenance_when_different ... ok [INFO] [stdout] test output::tests::markdown_table_rows_all_have_the_same_cell_count ... ok [INFO] [stdout] test output::tests::json_round_trips ... ok [INFO] [stdout] test scout::tests::a_multi_part_question_is_answered_only_when_every_part_is ... ok [INFO] [stdout] test scout::tests::a_source_field_names_where_its_neighbour_was_read ... ok [INFO] [stdout] test output::tests::stats_line_silent_when_enrichment_zero ... ok [INFO] [stdout] test scout::tests::a_url_is_not_a_name_except_where_a_url_was_asked_for ... ok [INFO] [stdout] test scout::tests::a_url_part_may_be_satisfied_by_the_source_itself ... ok [INFO] [stdout] test scout::tests::accept_retry_unfaithful_only_accepts_strict_improvement ... ok [INFO] [stdout] test scout::tests::a_year_field_holds_a_number_and_no_template_tokens ... ok [INFO] [stdout] test scout::tests::align_constraint_glosses_empty_when_no_constraints ... ok [INFO] [stdout] test scout::tests::align_constraint_glosses_matches_lengths ... ok [INFO] [stdout] test scout::tests::accept_retry_constraints_missing_accepts_clean_prose_retry ... ok [INFO] [stdout] test scout::tests::accept_retry_live_scenario_rejects_constraints_when_all_code_like ... ok [INFO] [stdout] test scout::tests::align_constraint_glosses_truncates_extras ... ok [INFO] [stdout] test scout::tests::an_answer_honours_a_chosen_round_count ... ok [INFO] [stdout] test scout::tests::accept_retry_constraints_missing_rejects_code_like_retry ... ok [INFO] [stdout] test scout::tests::an_oversized_item_gets_its_own_batch ... ok [INFO] [stdout] test scout::tests::align_constraint_glosses_pads_missing_with_empty ... ok [INFO] [stdout] test scout::tests::an_unlistable_constraint_is_cut_out_of_the_listing_core ... ok [INFO] [stdout] test scout::tests::anchor_domain_seed_recognises_bare_domain_anchors ... ok [INFO] [stdout] test scout::tests::anchor_stem_returns_stem_for_domain_shaped_anchors ... ok [INFO] [stdout] test scout::tests::answer_checks_keep_the_unsupported_question_intact ... ok [INFO] [stdout] test scout::tests::apply_enrich_recheck_excludes_on_contradiction ... ok [INFO] [stdout] test scout::tests::an_answer_that_admits_a_gap_is_detected ... ok [INFO] [stdout] test scout::tests::anchor_present_matches_case_and_accents ... ok [INFO] [stdout] test scout::tests::bare_domains_are_recognised ... ok [INFO] [stdout] test scout::tests::answer_checks_name_today_in_the_stale_question ... ok [INFO] [stdout] test scout::tests::apply_enrich_recheck_upgrades_silence_never_downgrades ... ok [INFO] [stdout] test scout::tests::category_echo_is_only_a_name_made_of_entity_type_words ... ok [INFO] [stdout] test scout::tests::build_plan_queue_fans_out_axis_combos_per_language ... ok [INFO] [stdout] test scout::tests::claim_floor_is_more_likely_than_not ... ok [INFO] [stdout] test scout::tests::chunk_windows_fit_the_budget_and_keep_every_chunk ... ok [INFO] [stdout] test scout::tests::accept_retry_anchors_missing_rejects_worse_by_more_than_a_tenth ... ok [INFO] [stdout] test scout::tests::claim_question_asks_about_evidence_not_truth ... ok [INFO] [stdout] test scout::tests::build_plan_queue_orders_selected_then_request_then_sources ... ok [INFO] [stdout] test scout::tests::accept_retry_anchors_missing_accepts_when_anchors_present ... ok [INFO] [stdout] test scout::tests::binding_gate_matches_measured_misattributions ... ok [INFO] [stdout] test scout::tests::a_dated_passage_is_kept_not_dropped ... ok [INFO] [stdout] test scout::tests::binding_gate_unresolved_tightens_rather_than_accepts ... ok [INFO] [stdout] test scout::tests::constraint_choice_costs_more_than_the_noul_it_replaced ... ok [INFO] [stdout] test scout::tests::constraint_evidence_question_wording_and_options ... ok [INFO] [stdout] test scout::tests::claim_question_cost_grows_with_the_claim ... ok [INFO] [stdout] test scout::tests::count_untried_drops_a_pair_after_its_first_attempt ... ok [INFO] [stdout] test scout::tests::code_bottleneck_diagnoses_from_counts ... ok [INFO] [stdout] test scout::tests::completion_counts_only_records_with_every_field_filled ... ok [INFO] [stdout] test scout::tests::decide_constraint_matches_measured_distributions ... ok [INFO] [stdout] test scout::tests::depth_allows_explore_enforces_seed_and_anchor_rule ... ok [INFO] [stdout] test scout::tests::constraint_evidence_question_omits_empty_gloss ... ok [INFO] [stdout] test scout::tests::derived_parts_note_asks_for_a_labelled_estimate ... ok [INFO] [stdout] test scout::tests::determination_fields_are_not_shape_checked ... ok [INFO] [stdout] test scout::tests::a_plateau_stops_an_auto_harvest_and_nothing_else ... ok [INFO] [stdout] test scout::tests::determination_subject_is_a_jev_choice_over_the_missions_own_fields ... ok [INFO] [stdout] test scout::tests::determination_subject_routes_to_the_referent_or_the_entity ... ok [INFO] [stdout] test scout::tests::count_enrichable_follows_the_round_rules ... ok [INFO] [stdout] test scout::tests::discovery_goal_drops_constraints_that_mirror_a_field ... ok [INFO] [stdout] test scout::tests::count_enrichable_strands_a_referential_pair_whose_referent_died ... ok [INFO] [stdout] test scout::tests::discovery_goal_drops_jev_flagged_unlistable_constraints ... ok [INFO] [stdout] test scout::tests::discovery_goal_keeps_fact_constraints_the_field_only_partially_echoes ... ok [INFO] [stdout] test scout::tests::discovery_goal_drops_contact_detail_constraints ... ok [INFO] [stdout] test scout::tests::discovery_goal_lists_topic_and_constraints ... ok [INFO] [stdout] test scout::tests::election_source_names_where_the_election_year_was_read ... ok [INFO] [stdout] test scout::tests::email_domain_extracts_correctly ... ok [INFO] [stdout] test browser::tests::lane_ids_are_stable ... ok [INFO] [stdout] test scout::tests::engine_agreement_boost_rewards_agreement_and_caps_at_thirty_percent ... ok [INFO] [stdout] test scout::tests::discovery_goal_renders_the_listing_core_when_set ... ok [INFO] [stdout] test scout::tests::effective_plan_languages_defaults_for_global_scope ... ok [INFO] [stdout] test scout::tests::engine_agreement_reorders_but_never_reclassifies ... ok [INFO] [stdout] test scout::tests::enrich_templates_never_search_for_a_snake_case_identifier ... ok [INFO] [stdout] test scout::tests::content_words_drops_function_words_in_three_languages ... ok [INFO] [stdout] test scout::tests::decide_constraint_table ... ok [INFO] [stdout] test scout::tests::enrich_candidates_are_primary_alternate_and_bare_pair ... ok [INFO] [stdout] test scout::tests::enriched_facts_constraint_question_spells_out_the_facts ... ok [INFO] [stdout] test api::tests::pinning_an_unavailable_engine_names_what_is_missing ... ok [INFO] [stdout] test scout::tests::enrich_goal_names_entity_topic_and_field ... ok [INFO] [stdout] test scout::tests::enrichment_queries_search_the_brand_not_the_registration ... ok [INFO] [stdout] test scout::tests::enrich_order_visits_fewest_missing_fields_first ... ok [INFO] [stdout] test scout::tests::ensure_anchor_uses_stem_when_anchor_is_domain_form ... ok [INFO] [stdout] test scout::tests::ensure_anchor_appends_when_missing_and_noop_otherwise ... ok [INFO] [stdout] test scout::tests::enrich_candidates_keep_three_slots_even_when_they_coincide ... ok [INFO] [stdout] test scout::tests::enrich_templates_render_selects_alternate_on_retry ... ok [INFO] [stdout] test scout::tests::extract_anchor_fallbacks_picks_domains_and_camelcase ... ok [INFO] [stdout] test scout::tests::entity_token_rejects_unrelated_domains ... ok [INFO] [stdout] test scout::tests::extraction_fields_omits_determinations ... ok [INFO] [stdout] test scout::tests::discovery_goal_keeps_contact_constraint_without_the_field ... ok [INFO] [stdout] test scout::tests::discovery_goal_frames_constraints_as_criteria_not_that_clauses ... ok [INFO] [stdout] test scout::tests::fold_ascii_lower_maps_common_accents ... ok [INFO] [stdout] test scout::tests::filter_anchors_verbatim_drops_hallucinated_names ... ok [INFO] [stdout] test scout::tests::extraction_goal_drops_unlistable_constraints ... ok [INFO] [stdout] test scout::tests::guard_fields_ayuntamientos_keeps_name_and_email ... ok [INFO] [stdout] test scout::tests::extraction_prompt_carries_the_goal_not_the_raw_request ... ok [INFO] [stdout] test scout::tests::evidence_is_bounded_by_the_request_budget_not_just_per_item ... ok [INFO] [stdout] test scout::tests::entity_token_handles_malformed_input ... ok [INFO] [stdout] test scout::tests::entity_token_ignores_short_tokens ... ok [INFO] [stdout] test llm::tests::a_fresh_client_reports_no_cost_at_all ... ok [INFO] [stdout] test scout::tests::filled_values_counts_every_value_but_the_name ... ok [INFO] [stdout] test scout::tests::guard_fields_leaves_unknown_fields_alone ... ok [INFO] [stdout] test scout::tests::guard_fields_never_drops_entity_field ... ok [INFO] [stdout] test scout::tests::discovery_goal_no_constraints_is_plain ... ok [INFO] [stdout] test scout::tests::entity_token_matches_registrable_domain_when_token_is_substring ... ok [INFO] [stdout] test scout::tests::head_and_tail_keeps_the_top_and_the_footer ... ok [INFO] [stdout] test scout::tests::guard_fields_decidim_keeps_only_name ... ok [INFO] [stdout] test scout::tests::guard_fields_keeps_a_url_field_the_request_calls_a_link ... ok [INFO] [stdout] test scout::tests::instruction_filler_strips_catalan_spanish_and_english_openers ... ok [INFO] [stdout] test scout::tests::instruction_fillers_are_ordered_longest_first ... ok [INFO] [stdout] test scout::tests::lang_dedup_key_returns_none_for_bad_url ... ok [INFO] [stdout] test scout::tests::line_fingerprints_ignore_case_spacing_and_short_lines ... ok [INFO] [stdout] test scout::tests::link_questions_split_into_multiple_batches ... ok [INFO] [stdout] test scout::tests::listability_questions_add_core_choice_for_composite_topic ... ok [INFO] [stdout] test scout::tests::listability_questions_carry_constraint_gloss_and_ids ... ok [INFO] [stdout] test scout::tests::is_code_like_constraint_flags_other_code_shapes ... ok [INFO] [stdout] test scout::tests::is_code_like_constraint_accepts_plain_language ... ok [INFO] [stdout] test scout::tests::is_code_like_constraint_flags_live_bad_strings ... ok [INFO] [stdout] test scout::tests::instruction_filler_needs_a_word_boundary_and_leaves_clean_requests_alone ... ok [INFO] [stdout] test scout::tests::keep_by_constraint_support_passes_when_per_record_meets_floor ... ok [INFO] [stdout] test scout::tests::mark_unsupported_appends_the_tag_after_each_flagged_claim ... ok [INFO] [stdout] test scout::tests::mark_unsupported_is_order_independent_and_a_no_op_when_nothing_is_flagged ... ok [INFO] [stdout] test scout::tests::mark_unsupported_preserves_multibyte_text ... ok [INFO] [stdout] test scout::tests::merge_pages_into_round_preserves_pending_and_searched ... ok [INFO] [stdout] test scout::tests::merging_two_views_of_one_entity_unions_the_verification_state ... ok [INFO] [stdout] test scout::tests::mirrored_determination_constraints_are_dropped_not_duplicated ... ok [INFO] [stdout] test scout::tests::keep_by_constraint_support_needs_page_at_seven_tenths ... ok [INFO] [stdout] test scout::tests::mission_time_sensitive_defaults_to_false_when_absent ... ok [INFO] [stdout] test scout::tests::listing_core_candidates_cut_at_clause_markers ... ok [INFO] [stdout] test scout::tests::near_collision_detects_containment_and_token_overlap ... ok [INFO] [stdout] test scout::tests::listing_core_candidates_cut_before_a_participle ... ok [INFO] [stdout] test scout::tests::listing_core_candidates_offer_the_temporal_tail_trim ... ok [INFO] [stdout] test scout::tests::near_collision_ignores_tokens_common_across_the_store ... ok [INFO] [stdout] test scout::tests::no_planned_batch_exceeds_the_request_limit ... ok [INFO] [stdout] test scout::tests::only_an_entity_subject_determination_may_record_a_negative ... ok [INFO] [stdout] test scout::tests::other_set_exclusions_spare_anything_supported ... ok [INFO] [stdout] test scout::tests::page_matches_key_prefers_the_requested_url_and_accepts_the_final_one ... ok [INFO] [stdout] test scout::tests::pair_hits_by_query_handles_out_of_order_results ... ok [INFO] [stdout] test scout::tests::parse_core_pick_separates_answer_from_miss ... ok [INFO] [stdout] test scout::tests::passage_rank_sinks_superseded_evidence_below_current_evidence ... ok [INFO] [stdout] test scout::tests::query_candidates_dedupe_case_insensitively_and_skip_empties ... ok [INFO] [stdout] test scout::tests::query_candidates_fall_back_to_topic_and_survive_a_missionless_anchor ... ok [INFO] [stdout] test scout::tests::query_candidates_have_the_documented_order_and_always_start_with_the_request ... ok [INFO] [stdout] test scout::tests::query_candidates_never_omit_the_anchor ... ok [INFO] [stdout] test scout::tests::question_costs_are_measured_not_guessed ... ok [INFO] [stdout] test scout::tests::re_aim_decision_fires_when_triage_rejects_everything ... ok [INFO] [stdout] test scout::tests::record_email_identity_picks_the_email_field ... ok [INFO] [stdout] test scout::tests::lang_dedup_key_does_not_collapse_different_paths ... ok [INFO] [stdout] test scout::tests::record_homepage_reads_the_website_field ... ok [INFO] [stdout] test scout::tests::on_anchor_site_matches_any_word_of_a_multi_word_anchor ... ok [INFO] [stdout] test scout::tests::passage_currency_defaults_to_one_when_absent ... ok [INFO] [stdout] test scout::tests::on_anchor_site_matches_name_stems_and_domain_anchors ... ok [INFO] [stdout] test scout::tests::passage_rank_reduces_to_supports_when_currency_is_default ... ok [INFO] [stdout] test scout::tests::pair_hits_by_query_handles_missing_query ... ok [INFO] [stdout] test scout::tests::keep_by_constraint_support_rescues_low_per_record_with_strong_page ... ok [INFO] [stdout] test scout::tests::listability_questions_empty_for_constraintless_mission ... ok [INFO] [stdout] test scout::tests::is_on_anchor_domain_matches_domain_and_subdomains ... ok [INFO] [stdout] test scout::tests::registrable_domain_common_tlds ... ok [INFO] [stdout] test scout::tests::resolve_constraints_excludes_on_any_contradiction ... ok [INFO] [stdout] test scout::tests::keep_by_constraint_support_does_not_rescue_implausibly_low ... ok [INFO] [stdout] test scout::tests::registrable_domain_two_label_public_suffix ... ok [INFO] [stdout] test scout::tests::lang_dedup_key_collapses_translations ... ok [INFO] [stdout] test scout::tests::related_binding_is_never_complete ... ok [INFO] [stdout] test scout::tests::select_evidence_reserves_a_slot_for_every_part ... ok [INFO] [stdout] test scout::tests::resolve_constraints_records_rescue_and_unverified ... ok [INFO] [stdout] test scout::tests::same_site_accepts_subdomains_both_ways ... ok [INFO] [stdout] test scout::tests::resplit_chunk_isolates_large_paragraphs ... ok [INFO] [stdout] test scout::tests::sanitize_constraints_drops_code_keeps_prose ... ok [INFO] [stdout] test scout::tests::select_evidence_caps_ranked_fill_per_source_and_orders_by_rank ... ok [INFO] [stdout] test scout::tests::screen_verdict_applies_the_gates_in_order ... ok [INFO] [stdout] test scout::tests::searchable_entity_strips_legal_forms_and_only_legal_forms ... ok [INFO] [stdout] test scout::tests::set_naming_constraint_overrides_the_unlistable_verdict ... ok [INFO] [stdout] test scout::tests::shared_email_pairs_star_group_one_operator ... ok [INFO] [stdout] test scout::tests::split_claims_does_not_break_abbreviations ... ok [INFO] [stdout] test scout::tests::split_claims_does_not_break_inside_a_quoted_sentence ... ok [INFO] [stdout] test scout::tests::split_claims_drops_short_fragments_and_letterless_lines ... ok [INFO] [stdout] test scout::tests::split_claims_handles_multibyte_text_without_panicking ... ok [INFO] [stdout] test scout::tests::split_claims_never_splits_inside_a_fenced_code_block ... ok [INFO] [stdout] test scout::tests::resplit_chunk_of_one_paragraph_is_one_piece ... ok [INFO] [stdout] test scout::tests::split_claims_keeps_citation_markers_with_their_claim ... ok [INFO] [stdout] test scout::tests::retry_draft_wins_only_when_it_is_actually_better ... ok [INFO] [stdout] test scout::tests::small_evidence_passes_through_untrimmed ... ok [INFO] [stdout] test scout::tests::split_claims_returns_nothing_for_empty_or_trivial_input ... ok [INFO] [stdout] test scout::tests::split_claims_skips_lead_ins_and_statements_about_the_sources ... ok [INFO] [stdout] test scout::tests::split_claims_treats_an_ellipsis_as_one_token ... ok [INFO] [stdout] test scout::tests::split_on_oversize_falls_back_on_singleton ... ok [INFO] [stdout] test scout::tests::split_on_oversize_halves_until_it_fits ... ok [INFO] [stdout] test scout::tests::split_on_oversize_ignores_non_oversized_errors ... ok [INFO] [stdout] test scout::tests::stale_retry_instruction_names_the_defect_and_the_date ... ok [INFO] [stdout] test scout::tests::steer_stop_is_overridden_while_pairs_are_enrichable ... ok [INFO] [stdout] test scout::tests::resolve_constraints_missing_probability_is_not_support ... ok [INFO] [stdout] test scout::tests::select_evidence_round_robins_before_second_slots ... ok [INFO] [stdout] test scout::tests::strip_lang_prefix_handles_edge_inputs ... ok [INFO] [stdout] test scout::tests::strip_lang_prefix_leaves_language_root ... ok [INFO] [stdout] test scout::tests::strip_lang_prefix_leaves_non_language_segments ... ok [INFO] [stdout] test scout::tests::strip_lang_prefix_removes_region_tagged_code ... ok [INFO] [stdout] test scout::tests::strip_lang_prefix_removes_two_letter_code ... ok [INFO] [stdout] test scout::tests::the_other_set_question_names_the_criterion_and_its_escape_hatch ... ok [INFO] [stdout] test scout::tests::the_bare_entity_type_is_never_the_reconciled_core ... ok [INFO] [stdout] test scout::tests::select_evidence_uses_currency_only_to_break_part_ties ... ok [INFO] [stdout] test scout::tests::the_writer_is_told_which_parts_are_missing ... ok [INFO] [stdout] test scout::tests::should_use_prefetch_only_yields_to_review_and_follow ... ok [INFO] [stdout] test scout::tests::the_judge_decides_whether_an_anchor_bearing_constraint_names_a_set ... ok [INFO] [stdout] test scout::tests::site_link_candidates_stay_on_site_and_skip_the_read ... ok [INFO] [stdout] test scout::tests::split_claims_does_not_break_decimals_or_version_numbers ... ok [INFO] [stdout] test scout::tests::trimming_keeps_the_strongest_evidence_first ... ok [INFO] [stdout] test scout::tests::triage_batches_also_fit ... ok [INFO] [stdout] test scout::tests::union_find_over_pairs_helper ... ok [INFO] [stdout] test scout::tests::unsupported_claims_note_quotes_the_marked_claims_and_truncates ... ok [INFO] [stdout] test scout::tests::split_claims_skips_markdown_headings ... ok [INFO] [stdout] test scout::tests::split_claims_splits_plain_sentences_with_exact_offsets ... ok [INFO] [stdout] test scout::tests::stale_floor_is_more_likely_than_not ... ok [INFO] [stdout] test scout::tests::unsupported_indices_treats_the_floor_as_inclusive_of_support ... ok [INFO] [stdout] test scout::tests::unsupported_indices_flags_only_finite_scores_below_the_floor ... ok [INFO] [stdout] test scout::tests::unsupported_marker_is_appended_not_prefixed ... ok [INFO] [stdout] test scout::tests::unsupported_indices_never_marks_or_counts_an_unchecked_claim ... ok [INFO] [stdout] test search_cache::tests::normalizes_the_query_and_keys_on_lane_and_limit ... ok [INFO] [stdout] test stats::tests::an_old_line_missing_new_fields_still_loads ... ok [INFO] [stdout] test stats::tests::an_unwritable_log_never_fails_the_run ... ok [INFO] [stdout] test scout::tests::validate_seed_urls_trims_dedupes_and_rejects_non_http ... ok [INFO] [stdout] test stats::tests::buckets_align_to_utc_hours_days_and_iso_weeks ... ok [INFO] [stdout] test scout::tests::unverified_constraint_blocks_completion ... ok [INFO] [stdout] test search_cache::tests::corrupt_file_is_treated_as_a_miss ... ok [INFO] [stdout] test search_cache::tests::miss_then_hit ... ok [INFO] [stdout] test scout::tests::values_must_fit_their_fields_kind ... ok [INFO] [stdout] test search_cache::tests::empty_responses_are_never_cached ... ok [INFO] [stdout] test search_cache::tests::cache_key_is_stable_and_distinguishes_inputs ... ok [INFO] [stdout] test scout::tests::weak_anchor_tokens_do_not_name_the_set ... ok [INFO] [stdout] test stats::tests::cost_counts_unreported_prices_as_nothing ... ok [INFO] [stdout] test search_cache::tests::default_cache_dir_prefers_xdg_then_home ... ok [INFO] [stdout] test stats::tests::days_are_clamped_and_hourly_ranges_capped_at_a_week ... ok [INFO] [stdout] test stats::tests::empty_ranges_report_zeros_not_nans ... ok [INFO] [stdout] test stats::tests::by_kind_and_by_preset_split_the_range ... ok [INFO] [stdout] test types::tests::entity_binding_merge_keeps_the_more_informative_verdict ... ok [INFO] [stdout] test types::tests::constraint_verdict_round_trips_through_its_labels ... ok [INFO] [stdout] test types::tests::needs_identity_field_detects_missing_identity ... ok [INFO] [stdout] test stats::tests::percentiles_are_nearest_rank ... ok [INFO] [stdout] test types::tests::entity_binding_labels_and_unknown_is_unresolved ... ok [INFO] [stdout] test stats::tests::runs_land_in_their_bucket_and_the_range_filters ... ok [INFO] [stdout] test types::tests::merge_constraint_status_takes_support_from_either_page ... ok [INFO] [stdout] test types::tests::normalize_entity_accentless_name_unchanged ... ok [INFO] [stdout] test search_cache::tests::expired_entry_is_a_miss_and_is_overwritten ... ok [INFO] [stdout] test types::tests::normalize_entity_institutional_parenthetical ... ok [INFO] [stdout] test stats::tests::the_series_is_contiguous_zero_filled_and_oldest_first ... ok [INFO] [stdout] test types::tests::normalize_entity_strips_accents_and_prefix ... ok [INFO] [stdout] test stats::tests::the_test_clock_is_what_it_says ... ok [INFO] [stdout] test stats::tests::the_record_serialises_with_the_contract_field_names ... ok [INFO] [stdout] test types::tests::normalize_entity_strips_repo_owner_slugs ... ok [INFO] [stdout] test types::tests::normalize_entity_strips_trailing_basque_udala ... ok [INFO] [stdout] test types::tests::pick_entity_field_empty_returns_name ... ok [INFO] [stdout] test types::tests::normalize_entity_bare_region_parenthetical_still_strips ... ok [INFO] [stdout] test types::tests::normalize_entity_collapses_punctuation ... ok [INFO] [stdout] test types::tests::record_without_the_new_fields_deserializes_unverified ... ok [INFO] [stdout] test types::tests::normalize_entity_keeps_slashes_that_are_not_slugs ... ok [INFO] [stdout] test types::tests::normalize_entity_strips_bare_institutional_prefixes ... ok [INFO] [stdout] test types::tests::unknown_constraint_choice_is_not_addressed ... ok [INFO] [stdout] test typesafe::tests::ema_clamps_at_floor_for_low_observed_ratio ... ok [INFO] [stdout] test typesafe::tests::budget_chars_free_fn_is_conservative_seed ... ok [INFO] [stdout] test stats::tests::the_log_round_trips_and_skips_a_corrupt_line ... ok [INFO] [stdout] test types::tests::pick_entity_field_falls_back_to_first ... ok [INFO] [stdout] test types::tests::normalize_entity_strips_trailing_region_parenthetical ... ok [INFO] [stdout] test types::tests::pick_entity_field_prefers_known_names ... ok [INFO] [stdout] test types::tests::pick_entity_field_ayuntamiento ... ok [INFO] [stdout] test typesafe::tests::ema_converges_upward_and_clamps_at_ceiling ... ok [INFO] [stdout] test typesafe::tests::ema_single_step_math ... ok [INFO] [stdout] test typesafe::tests::entity_binding_question_names_the_subject_key ... ok [INFO] [stdout] test typesafe::tests::entity_binding_question_wording ... ok [INFO] [stdout] test browser::tests::a_challenge_page_posing_as_a_pdf_goes_to_the_browser ... ok [INFO] [stdout] test browser::tests::search_many_with_no_lanes_returns_empty_results_per_query ... ok [INFO] [stdout] test browser::tests::search_many_serves_a_cached_lane_without_calling_out ... ok [INFO] [stdout] test browser::tests::a_static_pdf_is_read_over_plain_http ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 543 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2", kill_on_drop: false }` [INFO] [stdout] b12cfae374811c5471c116e78f604dd9286a8d39867429c40580341756b865c2