[INFO] cloning repository https://github.com/gnufood/parlov [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gnufood/parlov" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgnufood%2Fparlov", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgnufood%2Fparlov'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ef4ff4e0b36d05d60bffbfb0a6595e968aba0a29 [INFO] testing gnufood/parlov/ef4ff4e0b36d05d60bffbfb0a6595e968aba0a29 against 1.99.0-beta.8 for beta-1.100-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgnufood%2Fparlov" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/gnufood/parlov [INFO] finished tweaking git repo https://github.com/gnufood/parlov [INFO] tweaked toml for git repo https://github.com/gnufood/parlov written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/gnufood/parlov 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/gnufood/parlov 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] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded wasm-bindgen v0.2.121 [INFO] [stderr] Downloaded worker-sys v0.7.5 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.121 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.121 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.71 [INFO] [stderr] Downloaded worker v0.7.5 [INFO] [stderr] Downloaded worker-macros v0.7.5 [INFO] [stderr] Downloaded shell-escape v0.1.5 [INFO] [stderr] Downloaded schemafy_lib v0.6.0 [INFO] [stderr] Downloaded pin-project-internal v1.1.12 [INFO] [stderr] Downloaded schemafy_core v0.6.0 [INFO] [stderr] Downloaded hybrid-array v0.4.12 [INFO] [stderr] Downloaded schemars_derive v0.8.22 [INFO] [stderr] Downloaded typed-builder v0.21.2 [INFO] [stderr] Downloaded typed-builder-macro v0.21.2 [INFO] [stderr] Downloaded wasm-streams v0.5.0 [INFO] [stderr] Downloaded rustls-pki-types v1.14.1 [INFO] [stderr] Downloaded schemars v0.8.22 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.121 [INFO] [stderr] Downloaded pin-project v1.1.12 [INFO] [stderr] Downloaded serde-sarif v0.8.0 [INFO] [stderr] Downloaded comfy-table v7.2.2 [INFO] [stderr] Downloaded typenum v1.20.0 [INFO] [stderr] Downloaded js-sys v0.3.98 [INFO] [stderr] Downloaded wasip2 v1.0.3+wasi-0.2.9 [INFO] [stderr] Downloaded webpki-root-certs v1.0.7 [INFO] [stderr] Downloaded insta v1.46.3 [INFO] [stderr] Downloaded reqwest v0.13.3 [INFO] [stderr] Downloaded tower-http v0.6.10 [INFO] [stderr] Downloaded h2 v0.4.14 [INFO] [stderr] Downloaded axum v0.8.8 [INFO] [stderr] Downloaded aws-lc-rs v1.16.3 [INFO] [stderr] Downloaded rustls v0.23.40 [INFO] [stderr] Downloaded web-sys v0.3.98 [INFO] [stderr] Downloaded aws-lc-sys v0.40.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87 [INFO] running `Command { std: "docker" "start" "06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87", 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" "06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87" "/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" "06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87", 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" "06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling aws-lc-rs v1.16.3 [INFO] [stderr] Compiling cc v1.2.62 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling typenum v1.20.0 [INFO] [stderr] Compiling rustls-pki-types v1.14.1 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling hashbrown v0.17.1 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling hybrid-array v0.4.12 [INFO] [stderr] Compiling cmake v0.1.58 [INFO] [stderr] Compiling indexmap v2.14.0 [INFO] [stderr] Compiling tracing v0.1.41 [INFO] [stderr] Compiling rustls v0.23.40 [INFO] [stderr] Compiling crypto-common v0.2.1 [INFO] [stderr] Compiling block-buffer v0.12.0 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling aws-lc-sys v0.40.0 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling prettyplease v0.2.37 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling uuid v1.22.0 [INFO] [stderr] Compiling idna_adapter v1.2.2 [INFO] [stderr] Compiling uriparse v0.6.4 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling digest v0.11.3 [INFO] [stderr] Compiling sha2 v0.11.0 [INFO] [stderr] Compiling schemafy_core v0.6.0 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling parlov-core v0.7.0 (/opt/rustwide/workdir/crates/parlov-core) [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling litrs v1.0.0 [INFO] [stderr] Compiling rustls-native-certs v0.8.3 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling typed-builder-macro v0.21.2 [INFO] [stderr] Compiling document-features v0.2.12 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling strum_macros v0.27.2 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling Inflector v0.11.4 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling schemafy_lib v0.6.0 [INFO] [stderr] Compiling typed-builder v0.21.2 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling strum v0.27.2 [INFO] [stderr] Compiling parlov-elicit v0.5.0 (/opt/rustwide/workdir/crates/parlov-elicit) [INFO] [stderr] Compiling h2 v0.4.14 [INFO] [stderr] Compiling tower-http v0.6.10 [INFO] [stderr] Compiling comfy-table v7.2.2 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling serde-sarif v0.8.0 [INFO] [stderr] Compiling shell-escape v0.1.5 [INFO] [stderr] Compiling parlov-analysis v0.7.0 (/opt/rustwide/workdir/crates/parlov-analysis) [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling hyper v1.9.0 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling parlov-output v0.8.0 (/opt/rustwide/workdir/crates/parlov-output) [INFO] [stderr] Compiling rustls-webpki v0.103.13 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling rustls-platform-verifier v0.7.0 [INFO] [stderr] Compiling hyper-rustls v0.27.9 [INFO] [stderr] Compiling reqwest v0.13.3 [INFO] [stderr] Compiling parlov-probe v0.3.0 (/opt/rustwide/workdir/crates/parlov-probe) [INFO] [stderr] Compiling parlov v0.8.0 (/opt/rustwide/workdir/crates/parlov) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 15s [INFO] running `Command { std: "docker" "inspect" "06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87", 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" "06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling tracing v0.1.41 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling zerocopy v0.8.48 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling h2 v0.4.14 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling Inflector v0.11.4 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling rand_xorshift v0.4.0 [INFO] [stderr] Compiling rand v0.9.4 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling unarray v0.1.4 [INFO] [stderr] Compiling tower-http v0.6.10 [INFO] [stderr] Compiling console v0.15.11 [INFO] [stderr] Compiling similar v2.7.0 [INFO] [stderr] Compiling axum-core v0.5.6 [INFO] [stderr] Compiling matchit v0.8.4 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling uuid v1.22.0 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling rusty-fork v0.3.1 [INFO] [stderr] Compiling parlov-core v0.7.0 (/opt/rustwide/workdir/crates/parlov-core) [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling comfy-table v7.2.2 [INFO] [stderr] Compiling insta v1.46.3 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling schemafy_core v0.6.0 [INFO] [stderr] Compiling schemafy_lib v0.6.0 [INFO] [stderr] Compiling parlov-elicit v0.5.0 (/opt/rustwide/workdir/crates/parlov-elicit) [INFO] [stderr] Compiling parlov-analysis v0.7.0 (/opt/rustwide/workdir/crates/parlov-analysis) [INFO] [stderr] Compiling hyper v1.9.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling serde-sarif v0.8.0 [INFO] [stderr] Compiling proptest v1.11.0 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-rustls v0.27.9 [INFO] [stderr] Compiling axum v0.8.8 [INFO] [stderr] Compiling reqwest v0.13.3 [INFO] [stderr] Compiling parlov-probe v0.3.0 (/opt/rustwide/workdir/crates/parlov-probe) [INFO] [stderr] Compiling parlov-output v0.8.0 (/opt/rustwide/workdir/crates/parlov-output) [INFO] [stderr] Compiling parlov v0.8.0 (/opt/rustwide/workdir/crates/parlov) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 6m 21s [INFO] running `Command { std: "docker" "inspect" "06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87", 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" "06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.50s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/parlov-d451b68ad67e8f49) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/parlov-9b54bbc68ce9ac7d) [INFO] [stdout] [INFO] [stdout] running 97 tests [INFO] [stdout] test parse::tests::parse_risk_method_destructive ... ok [INFO] [stdout] test parse::tests::parse_risk_operation_destructive ... ok [INFO] [stdout] test parse::tests::parse_risk_safe ... ok [INFO] [stdout] test parse::tests::parse_known_duplicate_no_divider_returns_err ... ok [INFO] [stdout] test parse::tests::parse_known_duplicate_splits_on_first_equals_only ... ok [INFO] [stdout] test parse::tests::parse_state_field_splits_correctly ... ok [INFO] [stdout] test parse::tests::parse_known_duplicate_splits_field_and_value ... ok [INFO] [stdout] test scan::tests::pipeline::pipeline_state_strategies_total_accumulates_phase2 ... ok [INFO] [stdout] test pipeline_state::tests::pipeline_state_new_initialises_correctly ... ok [INFO] [stdout] test parse::tests::parse_risk_invalid_returns_err ... ok [INFO] [stdout] test scan::tests::pipeline::build_scan_context_target_matches_and_risk_defaults_to_safe ... ok [INFO] [stdout] test pipeline_state::tests::findings_only_discards_outcomes ... ok [INFO] [stdout] test pipeline_state::tests::findings_only_returns_references_not_clones ... ok [INFO] [stdout] test scan::tests::pipeline::harvest_allowlist_admits_h1_h2_and_h3_classes ... ok [INFO] [stdout] test scan::tests::validation::strategy_with_default_risk_is_valid ... ok [INFO] [stdout] test scan::tests::validation::strategy_and_risk_mutually_exclusive ... ok [INFO] [stdout] test scan::tests::pipeline::spec_strategy_id_returns_pair_strategy_id ... ok [INFO] [stdout] test scan::tests::validation::strategy_and_vector_mutually_exclusive ... ok [INFO] [stdout] test scan::tests::validation::vector_and_risk_mutually_exclusive ... ok [INFO] [stdout] test scan::tests::verdict::build_endpoint_verdict_all_no_signal_is_inconclusive ... ok [INFO] [stdout] test scan::tests::validation::vector_with_default_risk_is_not_exclusive ... ok [INFO] [stdout] test scan::tests::verdict::build_endpoint_verdict_first_threshold_crossed_by_propagates ... ok [INFO] [stdout] test scan::tests::verdict::build_endpoint_verdict_first_threshold_crossed_by_none_when_not_set ... ok [INFO] [stdout] test scan::tests::verdict::build_endpoint_verdict_stop_reason_early_accept ... ok [INFO] [stdout] test scan::tests::verdict::build_endpoint_verdict_positive_finding_raises_posterior ... ok [INFO] [stdout] test scan::tests::validation::strategy_filter_keeps_only_matching_specs ... ok [INFO] [stdout] test scan::tests::verdict::build_endpoint_verdict_stop_reason_exhausted_when_none ... ok [INFO] [stdout] test scan::tests::validation::strategy_filter_unknown_id_yields_empty_plan ... ok [INFO] [stdout] test scan::tests::verdict::pipeline_state_first_threshold_crossed_by_starts_none ... ok [INFO] [stdout] test scan::tests::validation::multiple_strategy_flags_produce_union_plan ... ok [INFO] [stdout] test scan_context::tests::build_scan_context_target_matches_and_risk_defaults_to_safe ... ok [INFO] [stdout] test scan_exec::tests::parse_rate_limit_remaining_parses_legacy_x_header ... ok [INFO] [stdout] test scan_exec::tests::parse_rate_limit_remaining_returns_none_on_malformed ... ok [INFO] [stdout] test scan_exec::tests::parse_rate_limit_remaining_parses_standard_header ... ok [INFO] [stdout] test scan::tests::verdict::exhaustive_flag_defaults_to_false ... ok [INFO] [stdout] test scan_exec::tests::rate_limit_gate_returns_false_on_success_exchanges ... ok [INFO] [stdout] test scan_exec::tests::rate_limit_gate_returns_false_when_ratelimit_remaining_nonzero ... ok [INFO] [stdout] test scan_exec::tests::rate_limit_gate_returns_true_when_ratelimit_remaining_zero ... ok [INFO] [stdout] test scan_exec::tests::rate_limit_gate_returns_true_when_retry_after_present ... ok [INFO] [stdout] test scan_exec::tests::rate_limit_gate_returns_false_on_empty_exchanges ... ok [INFO] [stdout] test scan_exec::tests::rate_limit_gate_returns_true_when_x_ratelimit_remaining_zero ... ok [INFO] [stdout] test scan_runner::tests::burst_result_confirmed_has_nonzero_confidence ... ok [INFO] [stdout] test scan_exec::tests::parse_rate_limit_remaining_returns_none_when_absent ... ok [INFO] [stdout] test scan_runner::tests::burst_result_produces_status_code_diff_signal ... ok [INFO] [stdout] test scan_runner::tests::burst_result_uses_oracle_class_from_technique ... ok [INFO] [stdout] test scan_runner::tests::into_outcome_confirmed_maps_to_positive ... ok [INFO] [stdout] test scan_runner::tests::into_outcome_likely_maps_to_no_signal ... ok [INFO] [stdout] test scan_runner::tests::into_outcome_not_present_maps_to_no_signal ... ok [INFO] [stdout] test scan_runner::tests::header_diff_result_confirmed_has_nonzero_confidence ... ok [INFO] [stdout] test scan_runner::tests::burst_result_not_present_has_zero_confidence ... ok [INFO] [stdout] test strategy_filter::tests::filter_empty_plan_yields_empty ... ok [INFO] [stdout] test scan_runner::tests::header_diff_result_not_present_has_zero_confidence ... ok [INFO] [stdout] test scan_runner::tests::header_diff_result_produces_header_presence_signal ... ok [INFO] [stdout] test strategy_filter::tests::filter_empty_ids_yields_empty ... ok [INFO] [stdout] test vector_filter::tests::max_risk_defaults_to_safe_when_no_risk_specified ... ok [INFO] [stdout] test strategy_filter::tests::filter_keeps_matching_spec ... ok [INFO] [stdout] test vector_filter::tests::max_risk_empty_filters_returns_safe ... ok [INFO] [stdout] test strategy_filter::tests::filter_unknown_id_yields_empty ... ok [INFO] [stdout] test vector_filter::tests::parse_vector_emg_name_only ... ok [INFO] [stdout] test vector_filter::tests::parse_vector_emg_with_safe_risk ... ok [INFO] [stdout] test vector_filter::tests::max_risk_picks_highest_across_filters ... ok [INFO] [stdout] test vector_filter::tests::parse_vector_emg_with_risk ... ok [INFO] [stdout] test vector_filter::tests::parse_vector_redirect_diff_with_risk ... ok [INFO] [stdout] test strategy_filter::tests::filter_multiple_ids_yields_union ... ok [INFO] [stdout] test vector_filter::tests::parse_vector_redirect_diff_with_safe_risk ... ok [INFO] [stdout] test vector_filter::tests::filter_emg_specs_only ... ok [INFO] [stdout] test vector_filter::tests::parse_vector_with_risk ... ok [INFO] [stdout] test vector_filter::tests::parse_vector_unknown_risk_returns_err ... ok [INFO] [stdout] test vector_filter::tests::parse_vector_with_safe_risk ... ok [INFO] [stdout] test vector_filter::tests::parse_vector_name_only ... ok [INFO] [stdout] test vector_filter::tests::parse_vector_redirect_diff_name_only ... ok [INFO] [stdout] test vector_filter::tests::parse_vector_unknown_name_returns_err ... ok [INFO] [stdout] test verdict_builder::tests::build_endpoint_verdict_defaults_existence_when_no_findings ... ok [INFO] [stdout] test verdict_builder::tests::build_endpoint_verdict_derives_oracle_class_from_findings ... ok [INFO] [stdout] test verdict_builder::tests::build_endpoint_verdict_gate_does_not_alter_confirmed ... ok [INFO] [stdout] test verdict_builder::tests::build_endpoint_verdict_gate_does_not_alter_inconclusive ... ok [INFO] [stdout] test verdict_builder::tests::build_endpoint_verdict_weak_contradictories_below_threshold_downgrades_to_inconclusive ... ok [INFO] [stdout] test verdict_builder::tests::build_endpoint_verdict_gate_passes_keeps_not_present ... ok [INFO] [stdout] test verdict_builder::tests::compute_final_confirming_strategy_contradictory_drag ... ok [INFO] [stdout] test verdict_builder::tests::compute_final_confirming_strategy_exact_threshold ... ok [INFO] [stdout] test verdict_builder::tests::compute_final_confirming_strategy_none_when_below_threshold ... ok [INFO] [stdout] test verdict_builder::tests::compute_final_confirming_strategy_none_when_empty ... ok [INFO] [stdout] test verdict_builder::tests::compute_final_confirming_strategy_single_positive_crosses ... ok [INFO] [stdout] test verdict_builder::tests::contributing_finding_positive_below_cap_equals_logit_of_confidence ... ok [INFO] [stdout] test verdict_builder::tests::contributing_findings_contradictory_diminishing_returns ... ok [INFO] [stdout] test verdict_builder::tests::contributing_finding_positive_above_cap_is_clamped_to_cap ... ok [INFO] [stdout] test verdict_builder::tests::compute_final_confirming_strategy_zero_contribution_not_named ... ok [INFO] [stdout] test verdict_builder::tests::compute_final_confirming_strategy_first_crossing ... ok [INFO] [stdout] test verdict_builder::tests::contributing_findings_contradictory_magnitude_equals_weight ... ok [INFO] [stdout] test verdict_builder::tests::contributing_findings_contradictory_has_negative_log_odds ... ok [INFO] [stdout] test verdict_builder::tests::prop_cumsum_to_named_strategy_meets_threshold ... ok [INFO] [stdout] test verdict_builder::tests::prop_none_means_no_prefix_reached_threshold ... ok [INFO] [stdout] test verdict_builder::tests::prop_named_strategy_has_positive_contribution ... ok [INFO] [stdout] test verdict_builder::tests::prop_prefix_before_named_strategy_is_below_threshold ... ok [INFO] [stdout] test scan::tests::verdict::first_threshold_crossed_by_stays_none_when_not_exhaustive ... ok [INFO] [stdout] test scan::tests::verdict::stop_decision_none_when_exhaustive ... ok [INFO] [stdout] test scan::tests::pipeline::run_plan_specs_returns_exchanges_on_empty_plan ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 97 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s [INFO] [stdout] [INFO] [stderr] Running tests/cache_probing_get.rs (/opt/rustwide/target/debug/deps/cache_probing_get-3f1102e49563fa1d) [INFO] [stdout] [INFO] [stdout] running 38 tests [INFO] [stdout] test conditional_if_modified_since_future_returns_304 ... ok [INFO] [stdout] test conditional_if_match_star_existing_returns_200 ... ok [INFO] [stdout] test conditional_if_match_fails_before_if_none_match ... ok [INFO] [stdout] test conditional_if_match_matching_etag_returns_200 ... ok [INFO] [stdout] test conditional_if_match_nonmatching_etag_returns_412 ... ok [INFO] [stdout] test conditional_if_modified_since_past_returns_200 ... ok [INFO] [stdout] test conditional_200_includes_etag_and_last_modified ... ok [INFO] [stdout] test conditional_if_match_nonmatching_nonexistent_returns_404 ... ok [INFO] [stdout] test conditional_if_none_match_list_with_match_returns_304 ... ok [INFO] [stdout] test conditional_if_modified_since_skipped_when_if_none_match_present ... ok [INFO] [stdout] test conditional_if_none_match_matching_etag_returns_304 ... ok [INFO] [stdout] test conditional_if_none_match_nonmatching_etag_returns_200 ... ok [INFO] [stdout] test conditional_if_none_match_star_nonexistent_returns_404 ... ok [INFO] [stdout] test conditional_if_unmodified_since_future_returns_200 ... ok [INFO] [stdout] test conditional_if_unmodified_since_past_returns_412 ... ok [INFO] [stdout] test conditional_no_headers_existing_returns_200 ... ok [INFO] [stdout] test conditional_if_unmodified_since_skipped_when_if_match_present ... ok [INFO] [stdout] test conditional_if_none_match_star_existing_returns_304 ... ok [INFO] [stdout] test conditional_no_headers_nonexistent_returns_404 ... ok [INFO] [stdout] test negotiated_no_accept_header_returns_200 ... ok [INFO] [stdout] test negotiated_json_accept_existing_returns_200 ... ok [INFO] [stdout] test negotiated_wildcard_accept_returns_200 ... ok [INFO] [stdout] test normalized_nonexistent_id_returns_404 ... ok [INFO] [stdout] test normalized_existing_id_returns_404 ... ok [INFO] [stdout] test negotiated_xml_only_returns_406 ... ok [INFO] [stdout] test negotiated_nonexistent_returns_404 ... ok [INFO] [stdout] test normalized_with_conditional_headers_still_returns_404 ... ok [INFO] [stdout] test range_if_range_matching_etag_returns_206 ... ok [INFO] [stdout] test range_if_range_nonexistent_returns_404 ... ok [INFO] [stdout] test range_if_range_without_range_ignored ... ok [INFO] [stdout] test range_open_ended_returns_206 ... ok [INFO] [stdout] test range_if_range_nonmatching_etag_returns_200 ... ok [INFO] [stdout] test range_no_header_existing_returns_200_with_accept_ranges ... ok [INFO] [stdout] test range_no_header_nonexistent_returns_404 ... ok [INFO] [stdout] test range_suffix_returns_206 ... ok [INFO] [stdout] test range_unsatisfiable_returns_416 ... ok [INFO] [stdout] test range_valid_byte_range_returns_206 ... ok [INFO] [stdout] test range_valid_range_nonexistent_returns_404 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.29s [INFO] [stdout] [INFO] [stderr] Running tests/cache_probing_head.rs (/opt/rustwide/target/debug/deps/cache_probing_head-bd82f9617ee35903) [INFO] [stdout] [INFO] [stdout] running 17 tests [INFO] [stdout] test head_conditional_if_none_match_matching_returns_304 ... ok [INFO] [stdout] test head_conditional_if_match_nonmatching_nonexistent_returns_404 ... ok [INFO] [stdout] test head_conditional_if_modified_since_future_returns_304 ... ok [INFO] [stdout] test head_conditional_200_has_no_body ... ok [INFO] [stdout] test head_conditional_if_none_match_nonmatching_returns_200 ... ok [INFO] [stdout] test head_conditional_if_none_match_star_nonexistent_returns_404 ... ok [INFO] [stdout] test head_conditional_200_includes_etag_and_last_modified ... ok [INFO] [stdout] test head_conditional_if_match_nonmatching_returns_412 ... ok [INFO] [stdout] test head_conditional_if_unmodified_since_past_returns_412 ... ok [INFO] [stdout] test head_conditional_if_none_match_star_returns_304 ... ok [INFO] [stdout] test head_conditional_no_headers_nonexistent_returns_404 ... ok [INFO] [stdout] test head_conditional_no_headers_existing_returns_200 ... ok [INFO] [stdout] test head_normalized_nonexistent_returns_404 ... ok [INFO] [stdout] test head_negotiated_xml_only_returns_406 ... ok [INFO] [stdout] test head_negotiated_nonexistent_returns_404 ... ok [INFO] [stdout] test head_negotiated_json_accept_returns_200 ... ok [INFO] [stdout] test head_normalized_existing_returns_404 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.10s [INFO] [stdout] [INFO] [stderr] Running tests/cross_method_server_sanity.rs (/opt/rustwide/target/debug/deps/cross_method_server_sanity-914e2886e2d030eb) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test server_404_returns_404_status ... ok [INFO] [stdout] test app_404_body_is_structured_json ... ok [INFO] [stdout] test app_404_returns_404_status ... ok [INFO] [stdout] test server_404_does_not_have_x_request_id ... ok [INFO] [stdout] test server_404_does_not_have_json_content_type ... ok [INFO] [stdout] test app_404_has_x_request_id_header ... ok [INFO] [stdout] test app_404_has_json_content_type ... ok [INFO] [stderr] Running tests/delete_server_sanity.rs (/opt/rustwide/target/debug/deps/delete_server_sanity-d69228850a4a7064) [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.57s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test delete_normalized_returns_404 ... ok [INFO] [stdout] test delete_resource_unknown_id_returns_404 ... ok [INFO] [stdout] test delete_resource_known_id_returns_405 ... ok [INFO] [stdout] test delete_resource_known_id_has_allow_header ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s [INFO] [stdout] [INFO] [stderr] Running tests/delete_server_sanity_rfc.rs (/opt/rustwide/target/debug/deps/delete_server_sanity_rfc-a32b983332b73852) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test delete_async_known_id_returns_202 ... ok [INFO] [stdout] test delete_forbidden_known_id_returns_403 ... ok [INFO] [stdout] test delete_deletable_unknown_id_returns_404 ... ok [INFO] [stdout] test delete_async_unknown_id_returns_404 ... ok [INFO] [stdout] test delete_deletable_200_known_id_returns_200 ... ok [INFO] [stdout] test delete_deletable_known_id_returns_204 ... ok [INFO] [stdout] test delete_deletable_200_unknown_id_returns_404 ... ok [INFO] [stdout] test delete_forbidden_unknown_id_returns_404 ... ok [INFO] [stdout] test delete_has_deps_known_id_returns_409 ... ok [INFO] [stdout] test delete_has_deps_unknown_id_returns_404 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.64s [INFO] [stdout] [INFO] [stderr] Running tests/elicit_server_sanity.rs (/opt/rustwide/target/debug/deps/elicit_server_sanity-4a0181673eb55b95) [INFO] [stdout] [INFO] [stdout] running 20 tests [INFO] [stdout] test forbidden_unknown_id_returns_404 ... ok [INFO] [stdout] test headered_unknown_id_returns_404_without_quota_headers ... ok [INFO] [stdout] test headered_known_id_returns_200_with_quota_headers ... ok [INFO] [stdout] test dependent_unknown_id_returns_404 ... ok [INFO] [stdout] test forbidden_known_id_with_auth_returns_403 ... ok [INFO] [stdout] test dependent_known_id_returns_409 ... ok [INFO] [stdout] test forbidden_known_id_without_auth_returns_401 ... ok [INFO] [stdout] test ratelimited_known_id_under_threshold_returns_200 ... ok [INFO] [stdout] test scoped_known_id_under_scoped_token_returns_403 ... ok [INFO] [stdout] test scoped_no_auth_returns_401 ... ok [INFO] [stdout] test scoped_known_id_full_access_token_returns_200 ... ok [INFO] [stdout] test scoped_unknown_id_returns_404 ... ok [INFO] [stdout] test state_known_id_invalid_state_returns_409 ... ok [INFO] [stdout] test state_known_id_valid_state_returns_200 ... ok [INFO] [stdout] test state_unknown_id_returns_404 ... ok [INFO] [stdout] test unique_unknown_id_returns_404 ... ok [INFO] [stdout] test unique_known_id_taken_email_returns_409 ... ok [INFO] [stdout] test unique_known_id_free_email_returns_201 ... ok [INFO] [stdout] test ratelimited_known_id_over_threshold_returns_429 ... ok [INFO] [stdout] test ratelimited_unknown_id_never_rate_limited ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.72s [INFO] [stdout] [INFO] [stderr] Running tests/emg_delete_server_sanity.rs (/opt/rustwide/target/debug/deps/emg_delete_server_sanity-9e7a1d78e68255a9) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test emg_delete_org_unknown_id_returns_404 ... ok [INFO] [stdout] test emg_delete_org_unknown_id_body_is_not_found ... ok [INFO] [stdout] test emg_delete_org_known_id_returns_409 ... ok [INFO] [stdout] test emg_delete_normalized_unknown_id_returns_404 ... ok [INFO] [stdout] test emg_delete_normalized_known_id_returns_404 ... ok [INFO] [stdout] test emg_delete_normalized_body_content ... ok [INFO] [stdout] test emg_delete_org_known_id_body_is_subscription_conflict ... ok [INFO] [stdout] test emg_delete_normalized_both_ids_have_identical_body ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.62s [INFO] [stdout] [INFO] [stderr] Running tests/emg_get_server_sanity.rs (/opt/rustwide/target/debug/deps/emg_get_server_sanity-365aea27edc3d846) [INFO] [stdout] [INFO] [stdout] running 12 tests [INFO] [stdout] test emg_bola_known_id_returns_403 ... ok [INFO] [stdout] test emg_bola_unknown_id_body_is_not_found ... ok [INFO] [stdout] test emg_normalized_body_content ... ok [INFO] [stdout] test emg_normalized_known_id_returns_403 ... ok [INFO] [stdout] test emg_normalized_unknown_id_returns_403 ... ok [INFO] [stdout] test emg_bola_unknown_id_returns_403 ... ok [INFO] [stdout] test emg_bola_known_id_body_is_access_denied ... ok [INFO] [stdout] test emg_normalized_both_ids_have_identical_body ... ok [INFO] [stdout] test emg_query_validation_known_id_body_is_field_error ... ok [INFO] [stdout] test emg_query_validation_unknown_id_body_is_user_not_found ... ok [INFO] [stdout] test emg_query_validation_unknown_id_returns_404 ... ok [INFO] [stdout] test emg_query_validation_known_id_returns_400 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.80s [INFO] [stdout] [INFO] [stderr] Running tests/emg_integration.rs (/opt/rustwide/target/debug/deps/emg_integration-072ddef29d106a25) [INFO] [stdout] [INFO] [stdout] running 14 tests [INFO] [stdout] test emg_schema_validation_patch_vs_normalized_not_present ... ok [INFO] [stdout] test emg_schema_validation_patch_body_diff_detected ... ok [INFO] [stdout] test emg_bola_vs_normalized_not_present ... ok [INFO] [stdout] test emg_query_validation_vs_get_server_body_diff_detected ... ok [INFO] [stdout] test method_destructive_plan_includes_all_7_emg_strategies ... ok [INFO] [stdout] test emg_fk_violation_vs_normalized_not_present ... ok [INFO] [stdout] test safe_plan_includes_all_3_safe_emg_strategies ... ok [INFO] [stdout] test state_conflict_excluded_without_body_template ... ok [INFO] [stdout] test emg_fk_violation_confirmed ... ok [INFO] [stdout] test emg_bola_vs_get_server_body_diff_detected ... ok [INFO] [stdout] test emg_state_conflict_vs_normalized_not_present ... ok [INFO] [stdout] test emg_app_vs_server_404_body_diff_detected ... ok [INFO] [stdout] test emg_state_conflict_confirmed ... ok [INFO] [stdout] test emg_schema_validation_put_likely ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.89s [INFO] [stdout] [INFO] [stderr] Running tests/emg_patch_server_sanity.rs (/opt/rustwide/target/debug/deps/emg_patch_server_sanity-cb9fe7957cf0bea8) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test emg_patch_users_known_id_body_is_type_error ... ok [INFO] [stdout] test emg_patch_normalized_unknown_id_returns_404 ... ok [INFO] [stdout] test emg_patch_users_unknown_id_body_is_not_found ... ok [INFO] [stdout] test emg_patch_normalized_known_id_returns_404 ... ok [INFO] [stdout] test emg_patch_users_unknown_id_returns_404 ... ok [INFO] [stdout] test emg_patch_normalized_body_content ... ok [INFO] [stdout] test emg_patch_users_known_id_returns_400 ... ok [INFO] [stdout] test emg_patch_normalized_both_ids_have_identical_body ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.58s [INFO] [stdout] [INFO] [stderr] Running tests/emg_post_server_sanity.rs (/opt/rustwide/target/debug/deps/emg_post_server_sanity-9bdda9f360ece332) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test emg_post_normalized_known_id_returns_404 ... ok [INFO] [stdout] test emg_post_comments_known_id_body_is_locked ... ok [INFO] [stdout] test emg_post_comments_unknown_id_returns_404 ... ok [INFO] [stdout] test emg_post_comments_known_id_returns_409 ... ok [INFO] [stdout] test emg_post_normalized_body_content ... ok [INFO] [stdout] test emg_post_normalized_unknown_id_returns_404 ... ok [INFO] [stdout] test emg_post_comments_unknown_id_body_is_not_found ... ok [INFO] [stdout] test emg_post_normalized_both_ids_have_identical_body ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s [INFO] [stdout] [INFO] [stderr] Running tests/emg_put_server_sanity.rs (/opt/rustwide/target/debug/deps/emg_put_server_sanity-38941c1f78b9880f) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test emg_put_normalized_known_id_returns_404 ... ok [INFO] [stdout] test emg_put_users_unknown_id_body_is_not_found ... ok [INFO] [stdout] test emg_put_users_known_id_returns_422 ... ok [INFO] [stdout] test emg_put_users_unknown_id_returns_404 ... ok [INFO] [stdout] test emg_put_normalized_unknown_id_returns_404 ... ok [INFO] [stdout] test emg_put_normalized_body_content ... ok [INFO] [stdout] test emg_put_users_known_id_body_is_type_error ... ok [INFO] [stdout] test emg_put_normalized_both_ids_have_identical_body ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.72s [INFO] [stdout] [INFO] [stderr] Running tests/existence_delete.rs (/opt/rustwide/target/debug/deps/existence_delete-d60a335491a5c50f) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test delete_204_vs_404_confirmed_medium ... ok [INFO] [stdout] test delete_202_vs_404_confirmed_medium ... ok [INFO] [stdout] test delete_405_vs_404_confirmed_medium ... ok [INFO] [stdout] test delete_normalized_not_present ... ok [INFO] [stdout] test delete_409_vs_404_confirmed_medium ... ok [INFO] [stdout] test delete_200_vs_404_confirmed_medium ... ok [INFO] [stdout] test delete_403_vs_404_confirmed_medium ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.49s [INFO] [stdout] [INFO] [stderr] Running tests/existence_delete_snapshots.rs (/opt/rustwide/target/debug/deps/existence_delete_snapshots-1130b4b7066bd23b) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test snap_delete_405_vs_404_json ... ok [INFO] [stdout] test snap_delete_405_vs_404_table ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s [INFO] [stdout] [INFO] [stderr] Running tests/existence_get.rs (/opt/rustwide/target/debug/deps/existence_get-e1622755e6bf9fa3) [INFO] [stdout] [INFO] [stdout] running 15 tests [INFO] [stdout] test negotiated_406_vs_404_confirmed_medium ... ok [INFO] [stdout] test archive_410_vs_404_confirmed_low ... ok [INFO] [stdout] test metered_429_vs_404_likely_low ... ok [INFO] [stdout] test conditional_304_vs_404_confirmed_medium ... ok [INFO] [stdout] test oracle_403_vs_404_confirmed_medium ... ok [INFO] [stdout] test normalized_same_same_not_present ... ok [INFO] [stdout] test broken_500_vs_404_confirmed_medium ... ok [INFO] [stdout] test premium_402_vs_404_likely_low ... ok [INFO] [stdout] test unrecognised_diff_not_present ... ok [INFO] [stdout] test range_invalid_416_vs_404_confirmed_high ... ok [INFO] [stdout] test ranged_206_vs_404_confirmed_high ... ok [INFO] [stdout] test public_200_vs_404_confirmed_medium ... ok [INFO] [stdout] test redirected_301_vs_404_confirmed_medium ... ok [INFO] [stdout] test protected_401_vs_404_confirmed_medium ... ok [INFO] [stdout] test validated_400_vs_404_not_present ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.89s [INFO] [stdout] [INFO] [stderr] Running tests/existence_get_snapshots.rs (/opt/rustwide/target/debug/deps/existence_get_snapshots-8edbb17142a7c691) [INFO] [stdout] [INFO] [stdout] running 18 tests [INFO] [stdout] test snapshot_json_410_vs_404 ... ok [INFO] [stdout] test snapshot_json_403_vs_404 ... ok [INFO] [stdout] test snapshot_json_402_vs_404 ... ok [INFO] [stdout] test snapshot_json_inconclusive ... ok [INFO] [stdout] test snapshot_json_200_vs_404 ... ok [INFO] [stdout] test snapshot_json_401_vs_404 ... ok [INFO] [stdout] test snapshot_table_403_vs_404 ... ok [INFO] [stdout] test snapshot_json_500_vs_404 ... ok [INFO] [stdout] test snapshot_table_402_vs_404 ... ok [INFO] [stdout] test snapshot_json_not_present ... ok [INFO] [stdout] test snapshot_table_200_vs_404 ... ok [INFO] [stdout] test snapshot_table_500_vs_404 ... ok [INFO] [stdout] test snapshot_json_429_vs_404 ... ok [INFO] [stdout] test snapshot_table_410_vs_404 ... ok [INFO] [stdout] test snapshot_table_not_present ... ok [INFO] [stdout] test snapshot_table_inconclusive ... ok [INFO] [stdout] test snapshot_table_401_vs_404 ... ok [INFO] [stdout] test snapshot_table_429_vs_404 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s [INFO] [stdout] [INFO] [stderr] Running tests/existence_head.rs (/opt/rustwide/target/debug/deps/existence_head-874083ed67b0ca32) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test head_204_vs_404_confirmed_medium ... ok [INFO] [stdout] test head_normalized_not_present ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s [INFO] [stdout] [INFO] [stderr] Running tests/existence_head_snapshots.rs (/opt/rustwide/target/debug/deps/existence_head_snapshots-e731197b8ccac07a) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test snap_head_204_vs_404_json ... ok [INFO] [stdout] test snap_head_204_vs_404_table ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s [INFO] [stdout] [INFO] [stderr] Running tests/existence_options.rs (/opt/rustwide/target/debug/deps/existence_options-08dab1924aca4457) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test options_204_vs_404_confirmed_medium ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s [INFO] [stdout] [INFO] [stderr] Running tests/existence_patch.rs (/opt/rustwide/target/debug/deps/existence_patch-5c5f1dab2f6c8bd3) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test patch_412_vs_404_confirmed_high ... ok [INFO] [stdout] test patch_409_vs_404_confirmed_high ... ok [INFO] [stdout] test patch_normalized_not_present ... ok [INFO] [stdout] test patch_415_vs_404_confirmed_high ... ok [INFO] [stdout] test patch_200_vs_404_confirmed_high ... ok [INFO] [stdout] test patch_422_vs_201_confirmed_high ... ok [INFO] [stdout] test patch_422_vs_404_confirmed_high ... ok [INFO] [stdout] test patch_204_vs_404_confirmed_medium ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.60s [INFO] [stdout] [INFO] [stderr] Running tests/existence_patch_snapshots.rs (/opt/rustwide/target/debug/deps/existence_patch_snapshots-7bb44c0b3b3eff01) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test snap_patch_422_vs_404_table ... ok [INFO] [stdout] test snap_patch_422_vs_404_json ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s [INFO] [stdout] [INFO] [stderr] Running tests/existence_post.rs (/opt/rustwide/target/debug/deps/existence_post-09c5f79c35142375) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test post_normalized_not_present ... ok [INFO] [stdout] test post_413_vs_404_confirmed_medium ... ok [INFO] [stdout] test post_411_vs_404_confirmed_medium ... ok [INFO] [stdout] test post_409_vs_303_confirmed_medium ... ok [INFO] [stdout] test post_409_vs_201_confirmed_medium ... ok [INFO] [stdout] test post_409_vs_200_confirmed_medium ... ok [INFO] [stdout] test post_409_vs_204_confirmed_medium ... ok [INFO] [stdout] test post_409_vs_202_confirmed_medium ... ok [INFO] [stdout] test post_with_body_template_probe_id_substituted ... ok [INFO] [stdout] test post_with_body_template_baseline_id_substituted ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.62s [INFO] [stdout] [INFO] [stderr] Running tests/existence_post_snapshots.rs (/opt/rustwide/target/debug/deps/existence_post_snapshots-94965c9785a29ee8) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test snap_post_409_vs_201_table ... ok [INFO] [stdout] test snap_post_409_vs_201_json ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s [INFO] [stdout] [INFO] [stderr] Running tests/existence_put.rs (/opt/rustwide/target/debug/deps/existence_put-808f1543e97e7304) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test put_409_vs_201_confirmed_high ... ok [INFO] [stdout] test put_422_vs_404_confirmed_high ... ok [INFO] [stdout] test put_normalized_not_present ... ok [INFO] [stdout] test put_422_vs_201_confirmed_high ... ok [INFO] [stdout] test put_412_vs_404_confirmed_high ... ok [INFO] [stdout] test put_415_vs_404_confirmed_high ... ok [INFO] [stdout] test put_204_vs_404_confirmed_medium ... ok [INFO] [stdout] test put_200_vs_404_confirmed_high ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.50s [INFO] [stdout] [INFO] [stderr] Running tests/existence_put_snapshots.rs (/opt/rustwide/target/debug/deps/existence_put_snapshots-1f0e7e30d7f3c09d) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test snap_put_422_vs_201_table ... ok [INFO] [stderr] Running tests/existence_redirect_diff.rs (/opt/rustwide/target/debug/deps/existence_redirect_diff-9e676ae738e7087a) [INFO] [stdout] test snap_put_422_vs_201_json ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 16 tests [INFO] [stdout] test rd_double_slash_blanket_not_present ... ok [INFO] [stdout] test rd_protocol_upgrade_stub ... ignored, RdProtocolUpgrade requires TLS infrastructure not available in test environment [INFO] [stdout] test rd_double_slash_301_vs_404_confirmed ... ok [INFO] [stdout] test rd_percent_encoding_301_vs_404_confirmed ... ok [INFO] [stdout] test rd_post_to_303_confirmed ... ok [INFO] [stdout] test rd_case_variation_301_vs_404_confirmed ... ok [INFO] [stdout] test rd_percent_encoding_blanket_not_present ... ok [INFO] [stdout] test rd_post_to_303_normalized_not_present ... ok [INFO] [stdout] test rd_case_variation_blanket_not_present ... ok [INFO] [stdout] test rd_slash_append_blanket_not_present ... ok [INFO] [stdout] test rd_slash_append_301_vs_404_confirmed ... ok [INFO] [stdout] test rd_slash_append_severity_at_least_low ... ok [INFO] [stdout] test rd_put_to_303_confirmed ... ok [INFO] [stdout] test rd_put_to_303_normalized_not_present ... ok [INFO] [stdout] test rd_slash_strip_blanket_not_present ... ok [INFO] [stdout] test rd_slash_strip_301_vs_404_confirmed ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 15 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.05s [INFO] [stdout] [INFO] [stderr] Running tests/existence_redirect_diff_snapshots.rs (/opt/rustwide/target/debug/deps/existence_redirect_diff_snapshots-912f4aa65ec46037) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test snapshot_rd_table_slash_append_301_vs_404 ... ok [INFO] [stdout] test snapshot_rd_table_not_present ... ok [INFO] [stdout] test snapshot_rd_json_not_present ... ok [INFO] [stdout] test snapshot_rd_json_post_to_303_vs_404 ... ok [INFO] [stdout] test snapshot_rd_table_post_to_303_vs_404 ... ok [INFO] [stdout] test snapshot_rd_json_slash_append_301_vs_404 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s [INFO] [stdout] [INFO] [stderr] Running tests/existence_trace.rs (/opt/rustwide/target/debug/deps/existence_trace-d0da8536706ce7a9) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test trace_200_vs_404_confirmed_high ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s [INFO] [stdout] [INFO] [stderr] Running tests/get_server_sanity.rs (/opt/rustwide/target/debug/deps/get_server_sanity-9864278fe393d942) [INFO] [stdout] [INFO] [stdout] running 18 tests [INFO] [stdout] test broken_known_id_returns_500 ... ok [INFO] [stdout] test metered_known_id_returns_429 ... ok [INFO] [stdout] test metered_known_id_has_retry_after_header ... ok [INFO] [stdout] test normalized_known_id_returns_404 ... ok [INFO] [stdout] test broken_unknown_id_returns_404 ... ok [INFO] [stdout] test archive_unknown_id_returns_404 ... ok [INFO] [stdout] test metered_unknown_id_returns_404 ... ok [INFO] [stdout] test archive_known_id_returns_410 ... ok [INFO] [stdout] test oracle_unknown_id_returns_404 ... ok [INFO] [stdout] test normalized_unknown_id_returns_404 ... ok [INFO] [stdout] test premium_known_id_returns_402 ... ok [INFO] [stdout] test oracle_known_id_returns_403 ... ok [INFO] [stdout] test premium_unknown_id_returns_404 ... ok [INFO] [stdout] test protected_known_id_has_www_authenticate_header ... ok [INFO] [stdout] test protected_known_id_returns_401 ... ok [INFO] [stdout] test protected_unknown_id_returns_404 ... ok [INFO] [stdout] test public_known_id_returns_200 ... ok [INFO] [stdout] test public_unknown_id_returns_404 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.21s [INFO] [stdout] [INFO] [stderr] Running tests/get_server_sanity_rfc.rs (/opt/rustwide/target/debug/deps/get_server_sanity_rfc-dcc3031e9844a324) [INFO] [stdout] [INFO] [stdout] running 16 tests [INFO] [stdout] test conditional_known_id_returns_304 ... ok [INFO] [stdout] test conditional_unknown_id_returns_404 ... ok [INFO] [stdout] test conditional_known_id_has_etag_header ... ok [INFO] [stdout] test range_invalid_unknown_id_returns_404 ... ok [INFO] [stdout] test range_invalid_known_id_has_content_range_header ... ok [INFO] [stdout] test negotiated_unknown_id_returns_404 ... ok [INFO] [stdout] test negotiated_known_id_returns_406 ... ok [INFO] [stdout] test range_invalid_known_id_returns_416 ... ok [INFO] [stdout] test ranged_known_id_has_content_range_header ... ok [INFO] [stdout] test ranged_known_id_returns_206 ... ok [INFO] [stdout] test redirected_unknown_id_returns_404 ... ok [INFO] [stdout] test ranged_unknown_id_returns_404 ... ok [INFO] [stdout] test redirected_known_id_returns_301 ... ok [INFO] [stdout] test validated_known_id_returns_400 ... ok [INFO] [stdout] test redirected_known_id_has_location_header ... ok [INFO] [stderr] Running tests/head_server_sanity.rs (/opt/rustwide/target/debug/deps/head_server_sanity-f91bb9fdab417198) [INFO] [stdout] test validated_unknown_id_returns_404 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.01s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test head_resource_known_id_has_no_body ... ok [INFO] [stdout] test head_resource_known_id_returns_204 ... ok [INFO] [stdout] test head_normalized_known_id_returns_404 ... ok [INFO] [stderr] Running tests/options_server_sanity.rs (/opt/rustwide/target/debug/deps/options_server_sanity-ddcc3b1ba1c70f2b) [INFO] [stdout] test head_resource_unknown_id_returns_404 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.25s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test options_resource_unknown_id_returns_404 ... ok [INFO] [stdout] test options_resource_known_id_returns_204 ... ok [INFO] [stdout] test options_normalized_returns_404 ... ok [INFO] [stdout] test options_resource_known_id_has_allow_header ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s [INFO] [stdout] [INFO] [stderr] Running tests/patch_server_sanity.rs (/opt/rustwide/target/debug/deps/patch_server_sanity-095b24d220b1cecd) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test patch_normalized_returns_404 ... ok [INFO] [stdout] test patch_creating_unknown_id_returns_201 ... ok [INFO] [stdout] test patch_creating_known_id_returns_422 ... ok [INFO] [stdout] test patch_resource_unknown_id_returns_404 ... ok [INFO] [stdout] test patch_resource_known_id_returns_422 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s [INFO] [stdout] [INFO] [stderr] Running tests/patch_server_sanity_rfc.rs (/opt/rustwide/target/debug/deps/patch_server_sanity_rfc-106e10f225774797) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test patch_precondition_unknown_id_returns_404 ... ok [INFO] [stdout] test patch_conflict_unknown_id_returns_404 ... ok [INFO] [stdout] test patch_no_content_known_id_returns_204 ... ok [INFO] [stdout] test patch_media_known_id_returns_415 ... ok [INFO] [stdout] test patch_conflict_known_id_returns_409 ... ok [INFO] [stdout] test patch_media_unknown_id_returns_404 ... ok [INFO] [stdout] test patch_precondition_known_id_returns_412 ... ok [INFO] [stdout] test patch_no_content_unknown_id_returns_404 ... ok [INFO] [stdout] test patch_success_known_id_returns_200 ... ok [INFO] [stdout] test patch_success_unknown_id_returns_404 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.73s [INFO] [stdout] [INFO] [stderr] Running tests/post_server_sanity.rs (/opt/rustwide/target/debug/deps/post_server_sanity-dd2a33d88e65c141) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test post_users_known_email_returns_409 ... ok [INFO] [stdout] test post_normalized_always_returns_201 ... ok [INFO] [stdout] test post_users_200_known_email_returns_409 ... ok [INFO] [stdout] test post_users_303_known_email_returns_409 ... ok [INFO] [stdout] test post_users_303_unknown_email_returns_303 ... ok [INFO] [stdout] test post_users_unknown_email_returns_201 ... ok [INFO] [stdout] test post_users_200_unknown_email_returns_200 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.47s [INFO] [stdout] [INFO] [stderr] Running tests/post_server_sanity_cross.rs (/opt/rustwide/target/debug/deps/post_server_sanity_cross-af89f3ba99ab3298) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test post_payload_known_id_returns_413 ... ok [INFO] [stdout] test post_length_required_known_id_returns_411 ... ok [INFO] [stdout] test post_length_required_unknown_id_returns_404 ... ok [INFO] [stdout] test post_payload_unknown_id_returns_404 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s [INFO] [stdout] [INFO] [stderr] Running tests/post_server_sanity_rfc.rs (/opt/rustwide/target/debug/deps/post_server_sanity_rfc-82ed628226b4a6b5) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test post_users_204_known_email_returns_409 ... ok [INFO] [stdout] test post_users_202_known_email_returns_409 ... ok [INFO] [stdout] test post_users_204_unknown_email_returns_204 ... ok [INFO] [stdout] test post_users_202_unknown_email_returns_202 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.29s [INFO] [stdout] [INFO] [stderr] Running tests/put_server_sanity.rs (/opt/rustwide/target/debug/deps/put_server_sanity-0987bd7a5808ec9f) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test put_normalized_returns_201 ... ok [INFO] [stdout] test put_resource_known_id_returns_422 ... ok [INFO] [stdout] test put_resource_unknown_id_returns_201 ... ok [INFO] [stdout] test put_no_create_unknown_id_returns_404 ... ok [INFO] [stdout] test put_no_create_known_id_returns_422 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s [INFO] [stdout] [INFO] [stderr] Running tests/put_server_sanity_rfc.rs (/opt/rustwide/target/debug/deps/put_server_sanity_rfc-035e777123a15c0e) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test put_no_content_unknown_id_returns_404 ... ok [INFO] [stdout] test put_media_unknown_id_returns_404 ... ok [INFO] [stdout] test put_no_content_known_id_returns_204 ... ok [INFO] [stdout] test put_precondition_known_id_returns_412 ... ok [INFO] [stdout] test put_conflict_unknown_id_returns_201 ... ok [INFO] [stdout] test put_media_known_id_returns_415 ... ok [INFO] [stdout] test put_precondition_unknown_id_returns_404 ... ok [INFO] [stdout] test put_conflict_known_id_returns_409 ... ok [INFO] [stdout] test put_success_known_id_returns_200 ... ok [INFO] [stdout] test put_success_unknown_id_returns_404 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.68s [INFO] [stdout] [INFO] [stderr] Running tests/redirect_diff_sanity.rs (/opt/rustwide/target/debug/deps/redirect_diff_sanity-04dbfce555046ace) [INFO] [stdout] [INFO] [stdout] running 20 tests [INFO] [stdout] test get_rd_blanket_unknown_id_returns_301 ... ok [INFO] [stdout] test get_rd_double_unknown_id_returns_404 ... ok [INFO] [stdout] test get_rd_double_known_id_returns_301_with_location ... ok [INFO] [stdout] test get_rd_percent_known_id_returns_301_with_location ... ok [INFO] [stdout] test get_rd_case_known_id_returns_301_with_location ... ok [INFO] [stdout] test get_rd_blanket_known_id_returns_301 ... ok [INFO] [stdout] test get_rd_case_unknown_id_returns_404 ... ok [INFO] [stdout] test get_rd_percent_unknown_id_returns_404 ... ok [INFO] [stdout] test get_rd_slash_unknown_id_returns_404 ... ok [INFO] [stdout] test post_rd_303_known_id_returns_303_with_location ... ok [INFO] [stdout] test get_rd_slash_known_id_returns_301_with_location ... ok [INFO] [stdout] test get_rd_strip_unknown_id_returns_404 ... ok [INFO] [stdout] test get_rd_strip_known_id_returns_301_with_location ... ok [INFO] [stdout] test post_rd_303_unknown_id_returns_404 ... ok [INFO] [stdout] test post_rd_normalized_known_id_returns_201 ... ok [INFO] [stdout] test post_rd_normalized_unknown_id_returns_201 ... ok [INFO] [stdout] test put_rd_normalized_unknown_id_returns_201 ... ok [INFO] [stdout] test put_rd_303_unknown_id_returns_404 ... ok [INFO] [stdout] test put_rd_303_known_id_returns_303_with_location ... ok [INFO] [stdout] test put_rd_normalized_known_id_returns_201 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.35s [INFO] [stdout] [INFO] [stderr] Running tests/scan_applicability_marker_missing.rs (/opt/rustwide/target/debug/deps/scan_applicability_marker_missing-85be5bceb42f0fb5) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test missing_etag_blocks_conditional_request_techniques ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s [INFO] [stdout] [INFO] [stderr] Running tests/scan_auth_canonical_401.rs (/opt/rustwide/target/debug/deps/scan_auth_canonical_401-6422a949ac3c9de1) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test canonical_401_produces_zero_contradictory_outcomes ... ok [INFO] [stdout] test canonical_401_posterior_is_near_neutral ... ok [INFO] [stdout] test canonical_401_produces_inapplicable_outcomes ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s [INFO] [stdout] [INFO] [stderr] Running tests/scan_auth_challenge_chain.rs (/opt/rustwide/target/debug/deps/scan_auth_challenge_chain-932a1dd793763c61) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test auth_challenge_chain_does_not_fire_on_missing_www_authenticate ... ok [INFO] [stdout] test auth_challenge_chain_does_not_fire_on_success ... ok [INFO] [stdout] test auth_challenge_chain_generates_one_spec ... ok [INFO] [stdout] test auth_challenge_chain_fires_on_401_with_www_authenticate ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/scan_auth_challenge_full.rs (/opt/rustwide/target/debug/deps/scan_auth_challenge_full-12650e6634a4f2a6) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test auth_challenge_full_chain_urls_target_correct_ids ... ok [INFO] [stdout] test auth_challenge_full_captures_auth_challenge_exchange ... ok [INFO] [stdout] test auth_challenge_full_exchange_has_www_authenticate ... ok [INFO] [stdout] test auth_challenge_full_chain_fires_from_real_scan ... ok [INFO] [stdout] test auth_challenge_full_chain_spec_has_authorization_header ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.88s [INFO] [stdout] [INFO] [stderr] Running tests/scan_auth_credentials_rejected.rs (/opt/rustwide/target/debug/deps/scan_auth_credentials_rejected-d5e374d8e4e5f106) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test credentials_rejected_zero_contradictory ... ok [INFO] [stdout] test credentials_rejected_posterior_near_neutral ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s [INFO] [stdout] [INFO] [stderr] Running tests/scan_auth_insufficient_scope.rs (/opt/rustwide/target/debug/deps/scan_auth_insufficient_scope-3b54ba209affb8ad) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test insufficient_scope_gates_non_auth_mutating_techniques ... ok [INFO] [stdout] test insufficient_scope_inapplicable_present ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.30s [INFO] [stdout] [INFO] [stderr] Running tests/scan_body_oracle_masked_by_status.rs (/opt/rustwide/target/debug/deps/scan_body_oracle_masked_by_status-d86176e744690cde) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test head_responses_diverge_on_header_keys ... ok [INFO] [stdout] test server_serves_distinct_bodies_for_distinct_ids ... ok [INFO] [stdout] test body_oracle_masked_by_status_verdict_inconclusive ... ok [INFO] [stdout] test body_oracle_masked_by_status_produces_zero_contradictory ... ok [INFO] [stdout] test body_oracle_masked_by_status_produces_inapplicable_outcomes ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.56s [INFO] [stdout] [INFO] [stderr] Running tests/scan_c10_gating.rs (/opt/rustwide/target/debug/deps/scan_c10_gating-9fa88ae9472fd8d0) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test range_chain_does_not_fire_when_accept_ranges_none ... ok [INFO] [stdout] test range_chain_fires_when_accept_ranges_bytes ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/scan_cache_probing.rs (/opt/rustwide/target/debug/deps/scan_cache_probing-e7fed4bf362777e4) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test cp_if_modified_since_vs_conditional_confirmed ... ok [INFO] [stdout] test cp_if_none_match_vs_conditional_confirmed ... ok [INFO] [stdout] test safe_plan_includes_all_8_cache_probing_strategies ... ok [INFO] [stdout] test cp_if_unmodified_since_vs_conditional_confirmed ... ok [INFO] [stdout] test cp_if_none_match_vs_normalized_not_present ... ok [INFO] [stdout] test cp_if_match_vs_conditional_confirmed ... ok [INFO] [stdout] test cp_range_satisfiable_vs_range_confirmed ... ok [INFO] [stdout] test cp_if_range_vs_range_confirmed ... ok [INFO] [stdout] test cp_range_unsatisfiable_vs_range_confirmed ... ok [INFO] [stderr] Running tests/scan_case_sensitive_routing.rs (/opt/rustwide/target/debug/deps/scan_case_sensitive_routing-7eb730d0b294293e) [INFO] [stdout] test cp_accept_vs_negotiated_confirmed ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.74s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test case_sensitive_server_returns_distinct_statuses ... ok [INFO] [stdout] test case_normalize_with_destroyed_control_produces_zero_contradictory_for_that_technique ... ok [INFO] [stdout] test case_normalize_with_destroyed_control_produces_inapplicable ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.43s [INFO] [stdout] [INFO] [stderr] Running tests/scan_content_type_chain.rs (/opt/rustwide/target/debug/deps/scan_content_type_chain-351e51c855fd3ddf) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test content_type_chain_does_not_fire_on_redirect ... ok [INFO] [stdout] test content_type_chain_fires_on_success_with_content_type ... ok [INFO] [stdout] test content_type_chain_generates_two_specs ... ok [INFO] [stdout] test content_type_chain_does_not_fire_on_missing_content_type ... ok [INFO] [stdout] [INFO] [stderr] Running tests/scan_content_type_full.rs (/opt/rustwide/target/debug/deps/scan_content_type_full-4ab7510143e34d5d) [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test content_type_full_chain_urls_target_correct_ids ... ok [INFO] [stdout] test content_type_full_captures_success_exchange ... ok [INFO] [stdout] test content_type_full_chain_fires_from_real_scan ... ok [INFO] [stdout] test content_type_full_chain_generates_at_least_two_specs ... ok [INFO] [stdout] test content_type_full_success_exchange_has_content_type ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.88s [INFO] [stdout] [INFO] [stderr] Running tests/scan_contradictory_verdict.rs (/opt/rustwide/target/debug/deps/scan_contradictory_verdict-862a615e3219b46f) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test uniformly_401_endpoint_does_not_verdict_likely ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s [INFO] [stdout] [INFO] [stderr] Running tests/scan_coverage_gate.rs (/opt/rustwide/target/debug/deps/scan_coverage_gate-7a27b19f9acc4f51) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test uniform_200_endpoint_does_not_verdict_not_present ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s [INFO] [stdout] [INFO] [stderr] Running tests/scan_elicit_integration.rs (/opt/rustwide/target/debug/deps/scan_elicit_integration-9d7eb892535abdbb) [INFO] [stdout] [INFO] [stdout] running 21 tests [INFO] [stdout] test if_match_read_elicit_included_in_safe_scan ... ok [INFO] [stdout] test if_match_vs_patch_precondition_confirmed ... ok [INFO] [stdout] test auth_strip_vs_protected_confirmed ... ok [INFO] [stdout] test content_type_vs_patch_media_confirmed ... ok [INFO] [stdout] test case_normalize_vs_case_insensitive_server_likely ... ok [INFO] [stdout] test accept_vs_negotiated_confirmed ... ok [INFO] [stdout] test rate_limit_burst_produces_burst_specs ... ok [INFO] [stdout] test if_match_read_elicit_get_confirmed ... ok [INFO] [stdout] test empty_body_vs_patch_resource_likely_or_confirmed ... ok [INFO] [stdout] test rate_limit_headers_produces_header_diff_specs ... ok [INFO] [stdout] test low_privilege_elicit_normalized_404_is_no_signal ... ok [INFO] [stdout] test low_privilege_elicit_confirmed ... ok [INFO] [stdout] test if_none_match_vs_conditional_confirmed ... ok [INFO] [stdout] test rate_limit_headers_elicit_differential_confirmed ... ok [INFO] [stdout] test rate_limit_headers_execution_produces_result ... ok [INFO] [stdout] test scope_manipulation_elicit_confirmed ... ok [INFO] [stdout] test trailing_slash_vs_slash_insensitive_server_likely ... ok [INFO] [stdout] test state_transition_elicit_confirmed ... ok [INFO] [stdout] test dependency_delete_elicit_likely_or_confirmed ... ok [INFO] [stdout] test rate_limit_burst_elicit_confirmed ... ok [INFO] [stderr] Running tests/scan_equal_length_body_oracle.rs (/opt/rustwide/target/debug/deps/scan_equal_length_body_oracle-f63120fbc4091f83) [INFO] [stdout] test uniqueness_elicit_likely_or_confirmed ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.25s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test server_serves_equal_length_divergent_bodies ... ok [INFO] [stdout] test equal_length_body_oracle_produces_inapplicable_outcomes ... ok [INFO] [stdout] test equal_length_body_oracle_inapplicable_outweighs_contradictory ... ok [INFO] [stdout] test equal_length_body_oracle_verdict_inconclusive ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.48s [INFO] [stdout] [INFO] [stderr] Running tests/scan_final_confirming_strategy.rs (/opt/rustwide/target/debug/deps/scan_final_confirming_strategy-e9a9f157da31f64d) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test final_confirming_strategy_is_some_on_confirmed_verdict ... ok [INFO] [stdout] test final_confirming_strategy_cumsum_meets_threshold ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s [INFO] [stdout] [INFO] [stderr] Running tests/scan_idor_403_vs_404.rs (/opt/rustwide/target/debug/deps/scan_idor_403_vs_404-1315c245da695f82) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test idor_403_vs_404_differential_preserved ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.32s [INFO] [stdout] [INFO] [stderr] Running tests/scan_integration.rs (/opt/rustwide/target/debug/deps/scan_integration-3cc67bc0f64f0fb0) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test safe_plan_generates_specs_for_minimal_ctx ... ok [INFO] [stdout] test if_none_match_strategy_produces_confirmed_finding ... ok [INFO] [stdout] test accept_strategy_produces_confirmed_finding ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s [INFO] [stdout] [INFO] [stderr] Running tests/scan_login_redirect.rs (/opt/rustwide/target/debug/deps/scan_login_redirect-6763e3a0d85ffd82) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test login_redirect_zero_contradictory_on_status_techniques ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s [INFO] [stdout] [INFO] [stderr] Running tests/scan_login_redirect_asymmetric.rs (/opt/rustwide/target/debug/deps/scan_login_redirect_asymmetric-4a3fb2cd217be2a0) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test asymmetric_login_redirect_differential_preserved ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s [INFO] [stdout] [INFO] [stderr] Running tests/scan_modifiers_plumbing.rs (/opt/rustwide/target/debug/deps/scan_modifiers_plumbing-819109010eedd2a4) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test modifiers_gate_downgrades_uniform_401_phantom_contradictories ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s [INFO] [stdout] [INFO] [stderr] Running tests/scan_normalization_weight_calibration.rs (/opt/rustwide/target/debug/deps/scan_normalization_weight_calibration-018ec15bc6f588c5) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stderr] Running tests/scan_oauth_error_envelope.rs (/opt/rustwide/target/debug/deps/scan_oauth_error_envelope-f8e8c62b8b6c1a97) [INFO] [stdout] test uniformly_401_endpoint_posterior_below_calibrated_ceiling ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test oauth_envelope_gates_techniques ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s [INFO] [stdout] [INFO] [stderr] Running tests/scan_observability_blocked_before_oracle.rs (/opt/rustwide/target/debug/deps/scan_observability_blocked_before_oracle-08220e19da08309d) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test uniform_401_verdict_is_inconclusive ... ok [INFO] [stdout] test uniform_401_observability_is_blocked_before_oracle_layer ... ok [INFO] [stdout] test uniform_401_block_summary_dominant_family_is_authorization ... ok [INFO] [stdout] test uniform_401_block_summary_blocked_fraction_is_at_least_80_percent ... ok [INFO] [stdout] test uniform_401_operator_action_mentions_authorization_bearer ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.62s [INFO] [stdout] [INFO] [stderr] Running tests/scan_observability_evidence_observed.rs (/opt/rustwide/target/debug/deps/scan_observability_evidence_observed-4088ecf7c64dc628) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test existence_oracle_observability_is_evidence_observed ... ok [INFO] [stdout] test existence_oracle_block_summary_is_none ... ok [INFO] [stdout] test existence_oracle_verdict_is_confirmed_or_likely ... ok [INFO] [stderr] Running tests/scan_observability_normalized_endpoint.rs (/opt/rustwide/target/debug/deps/scan_observability_normalized_endpoint-bcfd72d865607319) [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.68s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test uniform_200_block_summary_is_none ... ok [INFO] [stdout] test uniform_200_observability_is_evidence_observed ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s [INFO] [stdout] [INFO] [stderr] Running tests/scan_phantom_auth_gate.rs (/opt/rustwide/target/debug/deps/scan_phantom_auth_gate-9e4cea23fa3a37a1) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test uniform_401_produces_inapplicable_outcomes ... ok [INFO] [stdout] test uniform_401_posterior_is_near_neutral ... ok [INFO] [stdout] test uniform_401_produces_zero_contradictory_outcomes ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.45s [INFO] [stdout] [INFO] [stderr] Running tests/scan_phantom_method_gate.rs (/opt/rustwide/target/debug/deps/scan_phantom_method_gate-8b8a3b0d4d556825) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test uniform_405_produces_zero_contradictory_outcomes ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s [INFO] [stdout] [INFO] [stderr] Running tests/scan_problem_details_chain.rs (/opt/rustwide/target/debug/deps/scan_problem_details_chain-d2eba751e6c90704) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test problem_details_chain_does_not_fire_on_200_without_errors ... ok [INFO] [stdout] test problem_details_chain_consumer_body_has_required_fields ... ok [INFO] [stdout] test problem_details_chain_fires_on_422_with_problem_json ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/scan_problem_details_full.rs (/opt/rustwide/target/debug/deps/scan_problem_details_full-efc820290bfc9630) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test problem_details_full_chain_fires_from_real_scan ... ok [INFO] [stdout] test problem_details_full_exchange_body_has_error_fields ... ok [INFO] [stdout] test problem_details_full_captures_structured_error_exchange ... ok [INFO] [stdout] test problem_details_full_chain_body_has_required_fields ... ok [INFO] [stdout] test problem_details_full_chain_urls_target_correct_ids ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.69s [INFO] [stdout] [INFO] [stderr] Running tests/scan_proxy_auth_407.rs (/opt/rustwide/target/debug/deps/scan_proxy_auth_407-f81283f09a12fb44) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test proxy_auth_407_gates_techniques ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s [INFO] [stdout] [INFO] [stderr] Running tests/scan_range_chain.rs (/opt/rustwide/target/debug/deps/scan_range_chain-b41344abd85315bf) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test range_chain_exchanges_non_empty ... ok [INFO] [stdout] test range_chain_verdict_not_not_present ... ok [INFO] [stdout] test range_chain_captures_partial_content_exchange ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s [INFO] [stdout] [INFO] [stderr] Running tests/scan_rate_limit_contradictory.rs (/opt/rustwide/target/debug/deps/scan_rate_limit_contradictory-749a333bd393cd1f) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test inverted_rate_limit_headers_do_not_produce_confirmed_or_likely ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s [INFO] [stdout] [INFO] [stderr] Running tests/scan_rate_limit_gate.rs (/opt/rustwide/target/debug/deps/scan_rate_limit_gate-fd4318e992acc28a) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test rate_limit_gate_returns_false_on_empty_exchanges ... ok [INFO] [stdout] test rate_limit_gate_allows_phase2_without_rate_limit_signals ... ok [INFO] [stdout] test rate_limit_gate_blocks_phase2_on_429_with_retry_after ... ok [INFO] [stdout] test rate_limit_gate_blocks_phase2_when_x_remaining_zero ... ok [INFO] [stdout] test rate_limit_gate_blocks_phase2_when_remaining_zero ... ok [INFO] [stdout] test rate_limit_gate_allows_phase2_when_remaining_nonzero ... ok [INFO] [stderr] Running tests/scan_redirect_location_chain.rs (/opt/rustwide/target/debug/deps/scan_redirect_location_chain-c8673ce3f95c8b39) [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test redirect_location_chain_captures_redirect_exchange ... ok [INFO] [stdout] test redirect_location_chain_exchanges_non_empty ... ok [INFO] [stdout] test redirect_location_chain_verdict_not_not_present ... ok [INFO] [stdout] test redirect_location_chain_location_header_present ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.01s [INFO] [stdout] [INFO] [stderr] Running tests/scan_repro_flag.rs (/opt/rustwide/target/debug/deps/scan_repro_flag-e1f404ed17965614) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test repro_info_round_trips_through_serde ... ok [INFO] [stdout] test build_curl_yields_strings_for_real_probe_pair ... ok [INFO] [stdout] test accept_elicit_pair_executes_against_live_server ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s [INFO] [stdout] [INFO] [stderr] Running tests/scan_resource_id_chain.rs (/opt/rustwide/target/debug/deps/scan_resource_id_chain-1d99e04a8ab4d23d) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test resource_id_chain_does_not_fire_on_404 ... ok [INFO] [stdout] test resource_id_chain_fires_on_success_with_location ... ok [INFO] [stdout] test resource_id_chain_verdict_not_not_present ... ok [INFO] [stdout] test resource_id_chain_exchanges_non_empty ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.70s [INFO] [stdout] [INFO] [stderr] Running tests/scan_strict_trailing_slash.rs (/opt/rustwide/target/debug/deps/scan_strict_trailing_slash-4f6b6309cf01c4cf) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test slash_strict_server_returns_distinct_statuses ... ok [INFO] [stdout] test trailing_slash_with_destroyed_control_produces_zero_contradictory_for_that_technique ... ok [INFO] [stdout] test trailing_slash_with_destroyed_control_produces_inapplicable ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.50s [INFO] [stdout] [INFO] [stderr] Running tests/scan_two_phase.rs (/opt/rustwide/target/debug/deps/scan_two_phase-311180ec834e6eb7) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test chained_if_match_uses_real_etag ... ok [INFO] [stdout] test chained_if_modified_since_uses_real_date ... ok [INFO] [stdout] test chained_if_unmodified_since_uses_real_date ... ok [INFO] [stdout] test chained_plan_has_etag_strategies_when_etag_present ... ok [INFO] [stdout] test chained_plan_empty_when_no_observations ... ok [INFO] [stdout] test chained_if_none_match_uses_real_etag ... ok [INFO] [stdout] test chained_plan_has_last_modified_strategies_when_lm_present ... ok [INFO] [stdout] test chained_plan_if_range_uses_etag_when_both_present ... ok [INFO] [stdout] test chained_plan_if_range_absent_when_no_strong_etag ... ok [INFO] [stdout] test location_harvested_from_3xx_baseline ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.29s [INFO] [stdout] [INFO] [stderr] Running tests/scan_validator_chain.rs (/opt/rustwide/target/debug/deps/scan_validator_chain-b30fcdea8bafce11) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test validator_chain_verdict_not_not_present ... ok [INFO] [stdout] test validator_chain_baseline_returns_etag ... ok [INFO] [stderr] Running tests/scan_verbose_flag.rs (/opt/rustwide/target/debug/deps/scan_verbose_flag-40f76e154cddb9b1) [INFO] [stdout] test validator_chain_exchanges_non_empty ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.63s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test filter_security_headers_dedup_and_lowercases ... ok [INFO] [stdout] test verbose_on_populates_filtered_headers_and_body_samples ... ok [INFO] [stdout] test verbose_off_finding_renders_probe_and_exchange_in_json ... ok [INFO] [stdout] test verbose_on_finding_renders_filtered_headers_in_json ... ok [INFO] [stdout] test chain_provenance_propagates_into_rendered_finding ... ok [INFO] [stdout] test verbose_off_omits_headers_and_body_samples ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.32s [INFO] [stdout] [INFO] [stderr] Running tests/trace_server_sanity.rs (/opt/rustwide/target/debug/deps/trace_server_sanity-739d633e30423c39) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test trace_resource_unknown_id_returns_404 ... ok [INFO] [stdout] test trace_disabled_unknown_id_returns_405 ... ok [INFO] [stdout] test trace_disabled_known_id_has_allow_header ... ok [INFO] [stdout] test trace_resource_known_id_has_message_http_content_type ... ok [INFO] [stdout] test trace_resource_known_id_returns_200 ... ok [INFO] [stdout] test trace_disabled_known_id_returns_405 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.41s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/parlov_analysis-1092b325c4f8a462) [INFO] [stdout] [INFO] [stdout] running 442 tests [INFO] [stdout] test aggregation::auth_classifier::tests::classify_401_without_www_authenticate_medium ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::classify_200_normal_response_returns_none ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::classify_403_with_auth_present_no_challenge_returns_none ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::classify_403_without_auth_signal_returns_none ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::classify_200_with_invalid_token_envelope_auth_error_envelope ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::classify_511_network_authentication ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::classify_401_with_bearer_no_auth_strong_no_credential ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::classify_403_with_insufficient_scope_origin_authorization ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::classify_401_with_invalid_token_credential_rejected ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::classify_200_with_www_authenticate_medium ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::classify_407_with_proxy_auth ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::classify_401_with_insufficient_scope_insufficient_scope ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::do_not_gate_status_differential_401_vs_200 ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::do_not_gate_invalid_token_vs_insufficient_scope ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::equivalent_two_identical_401_bearer ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::do_not_gate_403_vs_404_idor_pattern ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::do_not_gate_status_differential_401_vs_404 ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::equivalent_two_401_same_parsed_code_different_bytes ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::gate_two_407_proxy ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::equivalent_two_403_insufficient_scope_same_body ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::gate_two_511_network ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::gate_when_two_equivalent_401 ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::login_redirect_basic_login_path ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::login_redirect_200_with_login_location_returns_none ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::login_redirect_with_session_cookie_strong ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::login_redirect_303_signin ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::login_redirect_non_login_path_returns_none ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::equivalent_two_login_redirects_same_target ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::not_equivalent_401_vs_403 ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::not_equivalent_different_error_param ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::not_equivalent_login_redirects_different_targets ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::not_equivalent_different_realm ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_bearer_with_insufficient_scope_and_scope_param ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::no_auth_involvement_200_200 ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_basic_with_realm ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_bearer_with_realm ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_bearer_with_realm_and_invalid_token_error ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_body_over_8_kib_skipped ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_digest_with_realm_and_nonce ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_empty_body_returns_none ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_empty_input_returns_none ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_error_description_quoted ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_form_urlencoded_invalid_token ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_json_forbidden_weak ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_json_invalid_token_strong ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_html_content_type_skipped ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_garbage_unrecognised_scheme_is_other ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_malformed_json_returns_none ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_json_unauthorized_medium ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_problem_json_invalid_token ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::parse_multiple_challenges_first_wins ... ok [INFO] [stdout] test aggregation::auth_parsers::tests::form_error_malformed_leading_segment_skipped ... ok [INFO] [stdout] test aggregation::auth_parsers::tests::form_error_malformed_trailing_segment_still_finds_key ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::login_redirect_oauth_authorize_with_params_strong ... ok [INFO] [stdout] test aggregation::auth_parsers::tests::form_error_no_equals_at_all_returns_none ... ok [INFO] [stdout] test aggregation::control::tests::canonical_200_mutated_200_reaches_one ... ok [INFO] [stdout] test aggregation::auth_parsers::tests::form_error_only_malformed_segments_returns_none ... ok [INFO] [stdout] test aggregation::control::tests::canonical_200_mutated_500_blocks ... ok [INFO] [stdout] test aggregation::control::tests::canonical_201_mutated_200_reaches_one ... ok [INFO] [stdout] test aggregation::control::tests::canonical_204_mutated_404_blocks ... ok [INFO] [stdout] test aggregation::control::tests::canonical_200_mutated_404_blocks ... ok [INFO] [stdout] test aggregation::control::tests::canonical_301_blocks ... ok [INFO] [stdout] test aggregation::control::tests::canonical_302_does_not_block ... ok [INFO] [stdout] test aggregation::control::tests::canonical_307_does_not_block ... ok [INFO] [stdout] test aggregation::control::tests::canonical_303_does_not_block ... ok [INFO] [stdout] test aggregation::control::tests::canonical_308_blocks ... ok [INFO] [stdout] test aggregation::control::tests::canonical_401_mutated_401_reaches_one ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::classify_referentially_transparent ... ok [INFO] [stdout] test aggregation::control::tests::canonical_404_mutated_404_reaches_one ... ok [INFO] [stdout] test aggregation::control::tests::canonical_500_mutated_500_reaches_one ... ok [INFO] [stdout] test aggregation::control::tests::confidence_of_blocked_is_zero ... ok [INFO] [stdout] test aggregation::control::tests::confidence_of_reached_one ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::decision_referentially_transparent ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::equivalent_reflexive ... ok [INFO] [stdout] test aggregation::control::tests::confidence_of_reached_returns_inner ... ok [INFO] [stdout] test aggregation::control::tests::no_canonical_returns_reached_one ... ok [INFO] [stdout] test aggregation::control::tests::no_canonical_with_status_diff_returns_reached_one ... ok [INFO] [stdout] test aggregation::control::tests::confidence_is_bounded ... ok [INFO] [stdout] test aggregation::coverage_gate::tests::empty_events_fails_gate ... ok [INFO] [stdout] test aggregation::control::tests::empty_baseline_with_canonical_returns_reached_one ... ok [INFO] [stdout] test aggregation::coverage_gate::tests::enough_strong_contradictories_passes ... ok [INFO] [stdout] test aggregation::control::tests::canonical_301_or_308_always_blocks ... ok [INFO] [stdout] test aggregation::coverage_gate::tests::positive_disqualifies_even_with_strong_contradictories ... ok [INFO] [stdout] test aggregation::coverage_gate::tests::ten_weak_contradictories_no_strong_fails ... ok [INFO] [stdout] test aggregation::coverage_gate::tests::three_contradictories_one_strong_passes ... ok [INFO] [stdout] test aggregation::coverage_gate::tests::three_weak_contradictories_fails_no_strong ... ok [INFO] [stdout] test aggregation::coverage_gate::tests::two_strong_contradictories_fails_below_min_count ... ok [INFO] [stdout] test aggregation::coverage_gate::tests::weight_exactly_at_strong_threshold_counts_as_strong ... ok [INFO] [stdout] test aggregation::coverage_gate::tests::weight_just_below_strong_threshold_does_not_count ... ok [INFO] [stdout] test aggregation::evidence::contradictory_tests::contradictory_high_confidence_produces_negative_contribution ... ok [INFO] [stdout] test aggregation::evidence::contradictory_tests::contradictory_low_confidence_produces_negative_contribution ... ok [INFO] [stdout] test aggregation::evidence::contradictory_tests::contradictory_magnitude_independent_of_confidence ... ok [INFO] [stdout] test aggregation::evidence::contradictory_tests::contradictory_magnitude_proportional_to_weight ... ok [INFO] [stdout] test aggregation::evidence::contradictory_tests::juice_shop_two_contradictory_outcomes_drop_verdict ... ok [INFO] [stdout] test aggregation::coverage_gate::tests::no_strong_techniques_fails_regardless_of_count ... ok [INFO] [stdout] test aggregation::control::tests::control_integrity_referentially_transparent ... ok [INFO] [stdout] test aggregation::evidence::contradictory_tests::prop_contradictory_magnitude_independent_of_confidence ... ok [INFO] [stdout] test aggregation::evidence::contradictory_tests::two_contradictory_at_new_max_weight_exceed_old_ceiling ... ok [INFO] [stdout] test aggregation::evidence::contradictory_tests::prop_contradictory_never_positive_contribution ... ok [INFO] [stdout] test aggregation::evidence::tests::contradictory_outcome_lowers_posterior ... ok [INFO] [stdout] test aggregation::evidence::tests::fresh_accumulator_posterior_is_half ... ok [INFO] [stdout] test aggregation::evidence::tests::inapplicable_leaves_posterior_unchanged ... ok [INFO] [stdout] test aggregation::evidence::tests::ingest_positive_at_threshold_accepted ... ok [INFO] [stdout] test aggregation::evidence::tests::ingest_positive_below_threshold_skipped ... ok [INFO] [stdout] test aggregation::evidence::tests::ingest_positive_above_threshold_always_raises_posterior ... ok [INFO] [stdout] test aggregation::auth_classifier::tests::status_differentials_never_gated ... ok [INFO] [stdout] test aggregation::evidence::tests::max_positive_remaining_empty_is_zero ... ok [INFO] [stdout] test aggregation::coverage_gate::tests::fewer_than_min_contradictories_fails_the_gate ... ok [INFO] [stdout] test aggregation::evidence::tests::max_positive_remaining_positive_for_fresh_family ... ok [INFO] [stdout] test aggregation::evidence::tests::max_positive_remaining_zero_when_family_already_capped ... ok [INFO] [stdout] test aggregation::evidence::tests::no_signal_leaves_posterior_unchanged ... ok [INFO] [stdout] test aggregation::evidence::tests::ingest_positive_with_zero_confidence_fires_debug_assert ... ok [INFO] [stdout] test aggregation::evidence::tests::positive_outcome_raises_posterior ... ok [INFO] [stdout] test aggregation::evidence::tests::posterior_clamped_to_unit_interval ... ok [INFO] [stdout] test aggregation::coverage_gate::tests::any_positive_event_fails_the_gate ... ok [INFO] [stdout] test aggregation::evidence::tests::two_positives_different_families_full_weight ... ok [INFO] [stdout] test aggregation::evidence::tests::two_positives_same_family_diminishing_returns ... ok [INFO] [stdout] test aggregation::modifiers::tests::compute_modifiers_blocks_uniform_401_no_auth ... ok [INFO] [stdout] test aggregation::modifiers::tests::compute_modifiers_blocks_uniform_status_with_diverging_body ... ok [INFO] [stdout] test aggregation::modifiers::tests::compute_modifiers_blocks_when_canonical_returns_301 ... ok [INFO] [stdout] test aggregation::modifiers::tests::compute_modifiers_control_takes_priority_over_surface ... ok [INFO] [stdout] test aggregation::modifiers::tests::compute_modifiers_inert_when_body_surface_with_diverging_body ... ok [INFO] [stdout] test aggregation::evidence::contradictory_tests::prop_contradictory_magnitude_scales_with_weight ... ok [INFO] [stdout] test aggregation::evidence::tests::third_positive_same_family_zero_contribution ... ok [INFO] [stdout] test aggregation::modifiers::tests::compute_modifiers_inert_when_no_canonical ... ok [INFO] [stdout] test aggregation::modifiers::tests::compute_modifiers_precondition_takes_priority_over_control ... ok [INFO] [stdout] test aggregation::modifiers::tests::compute_modifiers_returns_default_on_distinct_status ... ok [INFO] [stdout] test aggregation::control::tests::no_canonical_always_reaches_one ... ok [INFO] [stdout] test aggregation::modifiers::tests::compute_modifiers_precondition_takes_priority_over_surface ... ok [INFO] [stdout] test aggregation::modifiers::tests::default_is_not_blocked ... ok [INFO] [stdout] test aggregation::modifiers::tests::compute_modifiers_total_is_one_on_distinct_status ... ok [INFO] [stdout] test aggregation::modifiers::tests::default_returns_all_ones ... ok [INFO] [stdout] test aggregation::modifiers::tests::default_total_is_one ... ok [INFO] [stdout] test aggregation::modifiers::tests::is_blocked_false_when_all_positive ... ok [INFO] [stdout] test aggregation::modifiers::tests::is_blocked_true_when_all_zero ... ok [INFO] [stdout] test aggregation::modifiers::tests::is_blocked_true_when_control_integrity_zero ... ok [INFO] [stdout] test aggregation::modifiers::tests::is_blocked_true_when_precondition_confidence_zero ... ok [INFO] [stdout] test aggregation::modifiers::tests::compute_modifiers_blocks_when_canonical_succeeds_mutated_fails ... ok [INFO] [stdout] test aggregation::modifiers::tests::is_blocked_true_when_surface_relevance_zero ... ok [INFO] [stdout] test aggregation::modifiers::tests::compute_modifiers_referentially_transparent ... ok [INFO] [stdout] test aggregation::modifiers::tests::is_blocked_iff_any_field_zero ... ok [INFO] [stdout] test aggregation::modifiers::tests::total_is_multiplicative_product ... ok [INFO] [stdout] test aggregation::modifiers::tests::total_with_one_zero_is_zero ... ok [INFO] [stdout] test aggregation::precondition::tests::auth_gate_uses_no_credential_for_low_privilege_when_unauthenticated ... ok [INFO] [stdout] test aggregation::precondition::tests::block_reason_of_blocked_is_some ... ok [INFO] [stdout] test aggregation::precondition::tests::confidence_of_blocked_is_zero ... ok [INFO] [stdout] test aggregation::precondition::tests::block_reason_of_reached_is_none ... ok [INFO] [stdout] test aggregation::precondition::tests::block_strings_are_distinct ... ok [INFO] [stdout] test aggregation::precondition::tests::confidence_of_reached_returns_inner ... ok [INFO] [stdout] test aggregation::precondition::tests::missing_applicability_marker_blocks ... ok [INFO] [stdout] test aggregation::precondition::tests::mixed_400_422_does_not_fire_parser_gate ... ok [INFO] [stdout] test aggregation::precondition::tests::mixed_405_404_does_not_fire_method_gate ... ok [INFO] [stdout] test aggregation::modifiers::tests::total_bounded_when_fields_bounded ... ok [INFO] [stdout] test aggregation::precondition::tests::non_auth_technique_blocked_by_auth_gate ... ok [INFO] [stdout] test aggregation::modifiers::tests::total_commutative_under_permutation ... ok [INFO] [stdout] test aggregation::precondition::tests::non_parser_relevant_blocked_by_parser ... ok [INFO] [stdout] test aggregation::precondition::tests::status_differential_401_vs_404_is_preserved ... ok [INFO] [stdout] test aggregation::precondition::tests::uniform_400_does_not_block_parser_relevant_technique ... ok [INFO] [stdout] test aggregation::precondition::tests::strong_applicability_marker_returns_one ... ok [INFO] [stdout] test aggregation::precondition::tests::uniform_400_blocks_for_non_parser_relevant_technique ... ok [INFO] [stdout] test aggregation::precondition::tests::precondition_confidence_referentially_transparent ... ok [INFO] [stdout] test aggregation::precondition::tests::uniform_401_no_auth_blocks_with_auth_gate_reason ... ok [INFO] [stdout] test aggregation::precondition::tests::uniform_405_blocks_with_method_gate_reason ... ok [INFO] [stdout] test aggregation::precondition::tests::uniform_401_with_auth_header_credential_rejected_blocks ... ok [INFO] [stdout] test aggregation::precondition::tests::uniform_405_with_method_relevant_does_not_block ... ok [INFO] [stdout] test aggregation::precondition::tests::uniform_422_blocks_for_non_parser_relevant_technique ... ok [INFO] [stdout] test aggregation::precondition::tests::weak_applicability_marker_returns_three_tenths ... ok [INFO] [stdout] test aggregation::reducer::tests::attribution_empty_returns_empty ... ok [INFO] [stdout] test aggregation::reducer::tests::attribution_parallel_to_input_index ... ok [INFO] [stdout] test aggregation::reducer::tests::attribution_sum_equals_total ... ok [INFO] [stdout] test aggregation::reducer::tests::attribution_no_cap_matches_schedule_per_event ... ok [INFO] [stdout] test aggregation::reducer::tests::attribution_total_matches_reduce_all ... ok [INFO] [stdout] test aggregation::precondition::tests::uniform_401_different_bodies_does_not_fire_auth_gate ... ok [INFO] [stdout] test aggregation::auth_parsers::tests::form_error_finds_error_key_despite_junk_pairs ... ok [INFO] [stdout] test aggregation::reducer::tests::attribution_when_capped_group_sums_to_cap ... ok [INFO] [stdout] test aggregation::reducer::tests::attribution_sums_to_total_property ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_all_distinct_families_sum_independently ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_all_empty_returns_zero ... ok [INFO] [stdout] test aggregation::reducer::tests::attribution_total_order_invariant ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_all_invariant_under_permutation_with_real_ids ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_all_positive_and_contradictory_independent_within_family ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_all_single_family_single_polarity_matches_group_reduce ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_family_polarity_clamps_to_negative_cap ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_family_polarity_clamps_to_positive_cap ... ok [INFO] [stdout] test aggregation::reducer::tests::adding_zero_weight_event_does_not_change_result ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_family_polarity_empty_returns_zero ... ok [INFO] [stdout] test aggregation::reducer::tests::attribution_total_matches_reduce_all_property ... ok [INFO] [stdout] test aggregation::evidence::tests::posterior_in_unit_interval ... ok [INFO] [stdout] test aggregation::reducer::tests::attribution_parallel_indexing_property ... ok [INFO] [stdout] test aggregation::reducer::tests::polarity_only_groups_have_consistent_sign ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_family_polarity_events_beyond_schedule_contribute_zero ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_family_polarity_single_contradictory_event_full_slot ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_family_polarity_sorts_by_weight_descending ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_family_polarity_two_contradictory_events_apply_first_two_slots ... ok [INFO] [stdout] test aggregation::stop_rule::tests::early_reject_posterior_below_half ... ok [INFO] [stdout] test aggregation::reducer::tests::technique_id_tiebreaker_smaller_id_wins_slot_0 ... ok [INFO] [stdout] test aggregation::stop_rule::tests::fresh_accumulator_no_remaining_is_early_reject ... ok [INFO] [stdout] test aggregation::stop_rule::tests::early_accept_posterior_above_half ... ok [INFO] [stdout] test aggregation::stop_rule::tests::early_reject_boundary_is_exclusive_at_likely_threshold ... ok [INFO] [stdout] test aggregation::stop_rule::tests::high_log_odds_with_small_max_neg_is_early_accept ... ok [INFO] [stdout] test aggregation::stop_rule::tests::log_odds_at_confirm_threshold_is_early_accept ... ok [INFO] [stdout] test aggregation::stop_rule::tests::neutral_accumulator_no_remaining_is_early_reject ... ok [INFO] [stdout] test aggregation::surface::tests::body_diff_ratio_both_empty_is_zero ... ok [INFO] [stdout] test aggregation::surface::tests::body_diff_ratio_equal_length_divergent_content_is_above_threshold ... ok [INFO] [stdout] test aggregation::surface::tests::body_diff_ratio_identical_bytes_is_zero ... ok [INFO] [stdout] test aggregation::surface::tests::body_diff_ratio_identical_long_random_bytes_is_zero ... ok [INFO] [stdout] test aggregation::surface::tests::body_diff_ratio_one_empty_is_one ... ok [INFO] [stdout] test aggregation::surface::tests::body_diff_ratio_same_length_all_bytes_differ_is_one ... ok [INFO] [stdout] test aggregation::surface::tests::body_diff_ratio_same_length_half_bytes_differ_is_half ... ok [INFO] [stdout] test aggregation::stop_rule::tests::large_remaining_potential_is_continue ... ok [INFO] [stdout] test aggregation::surface::tests::body_diff_ratio_different_lengths_identical_overlap ... ok [INFO] [stdout] test aggregation::surface::tests::body_surface_returns_reached_one_even_with_body_diff ... ok [INFO] [stdout] test aggregation::surface::tests::composite_surface_returns_reached_one ... ok [INFO] [stdout] test aggregation::surface::tests::confidence_of_blocked_is_zero ... ok [INFO] [stdout] test aggregation::surface::tests::confidence_of_reached_returns_inner ... ok [INFO] [stdout] test aggregation::surface::tests::empty_baseline_returns_reached_one ... ok [INFO] [stdout] test aggregation::surface::tests::empty_differential_set_returns_reached_one ... ok [INFO] [stdout] test aggregation::surface::tests::header_diff_ratio_both_empty_is_zero ... ok [INFO] [stdout] test aggregation::evidence::tests::posterior_is_order_invariant ... ok [INFO] [stdout] test aggregation::reducer::tests::schedule_consumed_in_slot_order_regardless_of_input_order ... ok [INFO] [stdout] test aggregation::surface::tests::header_diff_ratio_completely_disjoint_keys_is_one ... ok [INFO] [stdout] test aggregation::surface::tests::header_diff_ratio_identical_keys_and_values_is_zero ... ok [INFO] [stdout] test aggregation::surface::tests::header_diff_ratio_multi_value_headers_full_sequence_compared ... ok [INFO] [stdout] test aggregation::surface::tests::header_diff_ratio_same_key_different_value_counts_as_diverged ... ok [INFO] [stdout] test aggregation::surface::tests::header_diff_ratio_bounded ... ok [INFO] [stdout] test aggregation::surface::tests::header_diff_ratio_key_only_in_one_side_counts_as_diverged ... ok [INFO] [stdout] test aggregation::surface::tests::header_diff_ratio_self_is_zero ... ok [INFO] [stdout] test aggregation::surface::tests::header_diff_ratio_symmetric ... ok [INFO] [stdout] test aggregation::surface::tests::status_surface_body_length_diff_above_threshold_blocks ... ok [INFO] [stdout] test aggregation::surface::tests::status_surface_body_length_diff_at_threshold_does_not_block ... ok [INFO] [stdout] test aggregation::surface::tests::non_status_surface_always_reaches ... ok [INFO] [stdout] test aggregation::surface::tests::status_surface_equal_length_divergent_body_blocks ... ok [INFO] [stdout] test aggregation::surface::tests::status_surface_header_diff_at_threshold_does_not_block ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_all_is_order_invariant ... ok [INFO] [stdout] test aggregation::surface::tests::status_surface_identical_body_and_headers_reaches_one ... ok [INFO] [stdout] test aggregation::surface::tests::status_surface_majority_header_keys_differ_blocks ... ok [INFO] [stdout] test aggregation::surface::tests::status_surface_minor_header_diff_reaches ... ok [INFO] [stdout] test aggregation::surface::tests::status_surface_body_length_diff_below_threshold_reaches ... ok [INFO] [stdout] test aggregation::surface::tests::headers_surface_returns_reached_one_even_with_header_diff ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::analyze_provided_method_delegates_to_evaluate ... ok [INFO] [stdout] test aggregation::reducer::tests::reduce_family_polarity_respects_cap ... ok [INFO] [stdout] test aggregation::surface::tests::timing_surface_returns_reached_one ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::analyze_returns_err_when_evaluate_returns_need_more ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::evaluate_1_sample_diff_returns_need_more ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::evaluate_2_samples_diff_returns_need_more ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::evaluate_3_samples_stable_diff_confirmed ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::evaluate_empty_baseline_returns_need_more ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::evaluate_empty_probe_returns_need_more ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::need_more_variant_is_constructible ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::result_carries_confidence_and_impact ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::result_carries_status_code_diff_signal ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::result_carries_technique_metadata ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::evaluate_complete_confirmed_on_403_vs_404 ... ok [INFO] [stdout] test existence::analyzer::tests::not_fired::not_fired_path_produces_no_signal_outcome ... ok [INFO] [stdout] test existence::analyzer::tests::fully_scored::confirmed_result_produces_positive_outcome ... ok [INFO] [stdout] test existence::analyzer::tests::not_fired::redirect_diff_baseline_3xx_proceeds_to_scoring ... ok [INFO] [stdout] test existence::analyzer::tests::same_status::evaluate_complete_not_present_on_same_status ... ok [INFO] [stdout] test existence::analyzer::tests::not_fired::redirect_diff_no_3xx_on_either_side_is_not_present ... ok [INFO] [stdout] test existence::analyzer::tests::not_fired::redirect_diff_probe_3xx_proceeds_to_scoring ... ok [INFO] [stdout] test existence::analyzer::tests::same_status::same_status_on_redirect_diff_produces_no_signal ... ok [INFO] [stdout] test existence::analyzer::tests::same_status::same_status_normalization_weight_some_always_contradictory ... ok [INFO] [stdout] test existence::analyzer::tests::same_status::same_status_on_status_code_diff_produces_contradictory ... ok [INFO] [stdout] test existence::analyzer::tests::same_status::same_status_without_normalization_weight_is_no_signal ... ok [INFO] [stdout] test existence::analyzer::tests::same_status::same_status_with_normalization_weight_is_contradictory ... ok [INFO] [stdout] test existence::analyzer::tests::unstable::evaluate_3_samples_unstable_probe_not_present ... ok [INFO] [stdout] test existence::analyzer::tests::unstable::unstable_path_produces_no_signal_outcome ... ok [INFO] [stdout] test existence::analyzer::tests::unstable::unstable_result_carries_signal ... ok [INFO] [stdout] test existence::analyzer::tests::unstable::evaluate_3_samples_unstable_baseline_not_present ... ok [INFO] [stdout] test existence::classifier::tests::lower_moderate::found_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::lower_moderate::gone_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::lower_moderate::internal_server_error_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::lower_moderate::length_required_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::lower_moderate::method_not_allowed_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::lower_moderate::moved_permanently_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::lower_moderate::no_content_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::lower_moderate::payload_too_large_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::lower_moderate::permanent_redirect_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::lower_moderate::see_other_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::lower_moderate::temporary_redirect_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::strong::conflict_vs_accepted ... ok [INFO] [stdout] test existence::classifier::tests::strong::conflict_vs_created ... ok [INFO] [stdout] test existence::classifier::tests::strong::conflict_vs_ok ... ok [INFO] [stdout] test existence::classifier::tests::strong::conflict_vs_see_other ... ok [INFO] [stdout] test existence::classifier::tests::strong::forbidden_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::strong::ok_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::lower_moderate::accepted_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::strong::unauthorized_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::strong::partial_content_vs_not_found ... ok [INFO] [stdout] test aggregation::surface::tests::surface_relevance_referentially_transparent ... ok [INFO] [stdout] test existence::analyzer::tests::same_status::same_status_normalization_weight_none_always_no_signal ... ok [INFO] [stdout] test existence::classifier::tests::upper_moderate::conflict_vs_no_content ... ok [INFO] [stdout] test existence::classifier::tests::upper_moderate::precondition_failed_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::upper_moderate::range_not_satisfiable_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::upper_moderate::unprocessable_vs_created ... ok [INFO] [stdout] test existence::classifier::tests::upper_moderate::unprocessable_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::upper_moderate::unsupported_media_type_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::weak::bad_request_vs_created ... ok [INFO] [stdout] test aggregation::surface::tests::status_surface_identical_always_reaches ... ok [INFO] [stdout] test existence::classifier::tests::upper_moderate::conflict_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::upper_moderate::not_acceptable_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::weak::classify_populates_confidence ... ok [INFO] [stdout] test existence::classifier::tests::weak::content_range_size_leak_produces_high_impact ... ok [INFO] [stdout] test existence::classifier::tests::weak::may_strength_reduces_signal_confidence ... ok [INFO] [stdout] test existence::classifier::tests::weak::multiple_choices_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::weak::multiple_signal_families_add_corroboration ... ok [INFO] [stdout] test existence::classifier::tests::weak::payment_required_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::weak::same_status_200_not_present ... ok [INFO] [stdout] test existence::classifier::tests::weak::same_status_not_present ... ok [INFO] [stdout] test existence::classifier::tests::weak::signals_can_push_likely_to_confirmed ... ok [INFO] [stdout] test existence::classifier::tests::weak::too_many_requests_vs_not_found ... ok [INFO] [stdout] test existence::classifier::tests::weak::unrecognised_diff_503_vs_200 ... ok [INFO] [stdout] test existence::classifier::tests::weak::unrecognised_diff_not_present ... ok [INFO] [stdout] test existence::families::tests::corroboration_bonus_values ... ok [INFO] [stdout] test existence::families::tests::different_families_count_independently ... ok [INFO] [stdout] test existence::families::tests::error_body_family_is_distinct ... ok [INFO] [stdout] test existence::families::tests::first_signal_gets_full_points ... ok [INFO] [stdout] test existence::families::tests::header_family_location ... ok [INFO] [stdout] test existence::families::tests::header_family_mappings ... ok [INFO] [stdout] test existence::families::tests::impact_saturates_at_255_without_overflow ... ok [INFO] [stdout] test existence::classifier::tests::upper_moderate::not_modified_vs_not_found ... ok [INFO] [stdout] test existence::families::tests::redirect_family_is_distinct ... ok [INFO] [stdout] test existence::classifier::tests::weak::bad_request_vs_ok ... ok [INFO] [stdout] test existence::families::tests::second_signal_in_family_gets_half ... ok [INFO] [stdout] test existence::families::tests::status_code_family_redirect_300 ... ok [INFO] [stdout] test existence::families::tests::status_code_family_redirect_301 ... ok [INFO] [stdout] test existence::classifier::tests::weak::classify_populates_technique_metadata ... ok [INFO] [stdout] test existence::classifier::tests::weak::etag_metadata_produces_medium_impact ... ok [INFO] [stdout] test existence::families::tests::status_code_family_redirect_303 ... ok [INFO] [stdout] test existence::families::tests::status_code_family_redirect_307 ... ok [INFO] [stdout] test existence::runners::tests::burst_baseline_429_probe_zero_is_positive ... ok [INFO] [stdout] test existence::runners::tests::burst_both_nonzero_is_no_signal ... ok [INFO] [stdout] test existence::families::tests::status_code_family_redirect_302 ... ok [INFO] [stdout] test existence::families::tests::status_code_family_redirect_308 ... ok [INFO] [stdout] test existence::families::tests::third_signal_in_family_gets_zero_confidence ... ok [INFO] [stdout] test existence::runners::tests::burst_contradictory_evidence_contains_both_counts ... ok [INFO] [stdout] test existence::runners::tests::burst_evidence_contains_both_counts ... ok [INFO] [stdout] test existence::runners::tests::burst_multiple_baseline_429_is_positive ... ok [INFO] [stdout] test existence::runners::tests::burst_both_zero_is_no_signal ... ok [INFO] [stdout] test existence::runners::tests::burst_probe_429_baseline_zero_is_contradictory ... ok [INFO] [stdout] test existence::runners::tests::header_diff_baseline_only_is_positive ... ok [INFO] [stdout] test existence::runners::tests::header_diff_contradictory_evidence_contains_header_name ... ok [INFO] [stdout] test existence::runners::tests::header_diff_headers_in_both_is_no_signal ... ok [INFO] [stdout] test existence::runners::tests::burst_positive_when_baseline_nonzero_probe_zero ... ok [INFO] [stdout] test existence::runners::tests::header_diff_no_headers_is_no_signal ... ok [INFO] [stdout] test existence::runners::tests::header_diff_no_signal_evidence_is_canonical_string ... ok [INFO] [stdout] test existence::runners::tests::header_diff_positive_evidence_contains_header_name ... ok [INFO] [stdout] test existence::runners::tests::header_diff_probe_only_is_contradictory ... ok [INFO] [stdout] test existence::scoring::tests::confidence_clamped_to_100 ... ok [INFO] [stdout] test existence::scoring::tests::confirmed_verdict_gets_full_severity ... ok [INFO] [stdout] test existence::scoring::tests::content_range_size_leak_yields_high_impact ... ok [INFO] [stdout] test existence::scoring::tests::high_base_confidence_yields_confirmed ... ok [INFO] [stdout] test existence::scoring::tests::likely_verdict_caps_severity_one_below ... ok [INFO] [stdout] test existence::scoring::tests::low_base_confidence_yields_not_present ... ok [INFO] [stdout] test existence::runners::tests::burst_no_signal_when_both_zero_or_both_nonzero ... ok [INFO] [stdout] test existence::scoring::tests::may_strength_confirmed_pattern_caps_at_likely ... ok [INFO] [stdout] test existence::scoring::tests::may_strength_not_present_pattern_stays_not_present ... ok [INFO] [stdout] test existence::scoring::tests::moderate_base_confidence_yields_likely ... ok [INFO] [stdout] test existence::scoring::tests::must_strength_confirmed_pattern_reaches_confirmed ... ok [INFO] [stdout] test existence::runners::tests::header_diff_contradictory_weight_matches_technique ... ok [INFO] [stdout] test existence::runners::tests::burst_contradictory_when_probe_nonzero_baseline_zero ... ok [INFO] [stdout] test existence::scoring::tests::same_status_body_diff_may_alone_below_likely ... ok [INFO] [stdout] test existence::scoring::tests::may_strength_likely_pattern_stays_likely ... ok [INFO] [stdout] test existence::scoring::tests::same_status_body_diff_plus_content_type_may_reaches_likely ... ok [INFO] [stdout] test existence::scoring::tests::same_status_body_diff_should_reaches_likely ... ok [INFO] [stdout] test existence::scoring::tests::same_status_no_signals_still_not_present ... ok [INFO] [stdout] test existence::scoring::tests::should_strength_confirmed_pattern_reaches_confirmed ... ok [INFO] [stdout] test existence::scoring::tests::signals_add_to_confidence ... ok [INFO] [stdout] test existence::scoring::tests::status_diff_plus_body_diff_attenuated ... ok [INFO] [stdout] test existence::scoring::tests::verdict_from_confidence_thresholds ... ok [INFO] [stdout] test existence::scoring::tests::zero_base_returns_not_present ... ok [INFO] [stdout] test existence::signal_weights::tests::body_diff_content_type_weight ... ok [INFO] [stdout] test existence::signal_weights::tests::body_diff_content_weight ... ok [INFO] [stdout] test existence::signal_weights::tests::body_diff_normative_may_reduces_confidence ... ok [INFO] [stdout] test existence::signal_weights::tests::content_range_size_leak_weight ... ok [INFO] [stdout] test existence::signal_weights::tests::input_reflection_weight_is_strongly_negative ... ok [INFO] [stdout] test existence::signal_weights::tests::location_presence_weight ... ok [INFO] [stdout] test existence::signal_weights::tests::normative_should_reduces_confidence ... ok [INFO] [stdout] test existence::signal_weights::tests::reproducibility_reduces_confidence ... ok [INFO] [stdout] test existence::signal_weights::tests::weight_signal_borrows_evidence_without_clone ... ok [INFO] [stdout] test existence::signal_weights::tests::www_authenticate_weight ... ok [INFO] [stdout] test signals::body::reflection_tests::body_diff_unrelated_to_id_still_emits_body_diff_not_reflection ... ok [INFO] [stdout] test signals::body::reflection_tests::equal_bodies_no_signal_at_all ... ok [INFO] [stdout] test signals::body::reflection_tests::id_appearing_multiple_times_in_body_handled ... ok [INFO] [stdout] test signals::body::reflection_tests::id_substring_collision_does_not_false_positive ... ok [INFO] [stdout] test existence::signal_weights::tests::normative_may_reduces_confidence ... ok [INFO] [stdout] test existence::signal_weights::tests::etag_presence_weight ... ok [INFO] [stdout] test signals::body::reflection_tests::identical_urls_no_reflection_check ... ok [INFO] [stdout] test signals::body::reflection_tests::juice_shop_url_path_echo_detected_as_input_reflection ... ok [INFO] [stdout] test signals::body::reflection_tests::non_utf8_bodies_with_url_diff_skips_reflection_check ... ok [INFO] [stdout] test existence::runners::tests::header_diff_never_inapplicable ... ok [INFO] [stdout] test existence::signal_weights::tests::location_in_evidence_maps_to_redirect_family ... ok [INFO] [stdout] test signals::body::tests::different_bodies_produce_body_diff_signal ... ok [INFO] [stdout] test aggregation::surface::tests::body_diff_ratio_self_is_zero ... ok [INFO] [stdout] test signals::body::reflection_tests::partial_id_echo_with_other_diffs_emits_body_diff ... ok [INFO] [stdout] test signals::body::tests::different_content_type_produces_signal ... ok [INFO] [stdout] test signals::body::tests::large_bodies_truncation_marker_shows_total_length ... ok [INFO] [stdout] test signals::body::tests::non_utf8_baseline_emits_byte_count ... ok [INFO] [stdout] test signals::body::tests::identical_bodies_produce_no_signal ... ok [INFO] [stdout] test signals::body::tests::empty_exchanges_produce_no_signals ... ok [INFO] [stdout] test signals::body::tests::equal_length_different_content_includes_preview ... ok [INFO] [stdout] test signals::body::tests::non_utf8_probe_emits_byte_count ... ok [INFO] [stdout] test signals::body::tests::one_empty_one_nonempty_produces_signal ... ok [INFO] [stdout] test signals::body::tests::same_length_different_content_noted ... ok [INFO] [stdout] test signals::body::tests::truncation_respects_utf8_boundary ... ok [INFO] [stdout] test signals::body::tests::utf8_bodies_include_content_preview ... ok [INFO] [stdout] test signals::header::tests::allow_header_different_values ... ok [INFO] [stdout] test signals::header::tests::empty_exchanges_produce_no_signals ... ok [INFO] [stdout] test signals::header::tests::etag_is_not_rate_limit ... ok [INFO] [stdout] test signals::header::tests::etag_present_in_baseline_only ... ok [INFO] [stdout] test signals::header::tests::identical_notable_headers_produce_no_signal ... ok [INFO] [stdout] test signals::header::tests::location_different_values ... ok [INFO] [stdout] test signals::body::tests::large_bodies_emit_truncated_preview ... ok [INFO] [stdout] test signals::body::tests::non_utf8_both_sides_emit_byte_counts ... ok [INFO] [stdout] test signals::body::tests::truncate_at_exact_max_preview_len_no_marker ... ok [INFO] [stdout] test signals::header::tests::location_present_in_baseline_only ... ok [INFO] [stdout] test signals::header::tests::multiple_rate_limit_headers_in_baseline_none_in_probe_all_returned ... ok [INFO] [stdout] test signals::header::tests::no_rate_limit_headers_on_either_side_is_empty ... ok [INFO] [stdout] test signals::header::tests::non_notable_headers_ignored ... ok [INFO] [stdout] test signals::header::tests::rate_limit_header_in_baseline_only_returned ... ok [INFO] [stdout] test signals::header::tests::rate_limit_header_in_both_not_returned ... ok [INFO] [stdout] test signals::header::tests::rate_limit_header_in_probe_only_not_returned ... ok [INFO] [stdout] test signals::header::tests::ratelimit_bare_is_rate_limit ... ok [INFO] [stdout] test signals::header::tests::ratelimit_remaining_is_rate_limit ... ok [INFO] [stdout] test signals::header::tests::www_authenticate_present_in_probe_only ... ok [INFO] [stdout] test signals::header::tests::x_rate_limit_wrong_prefix_is_not_rate_limit ... ok [INFO] [stdout] test signals::metadata::tests::content_range_unsatisfied_with_total_produces_leak ... ok [INFO] [stdout] test signals::metadata::tests::content_range_with_star_total_produces_no_leak ... ok [INFO] [stdout] test signals::metadata::tests::content_range_with_total_size_produces_leak ... ok [INFO] [stdout] test signals::metadata::tests::empty_baseline_produces_no_signals ... ok [INFO] [stdout] test signals::header::tests::x_ratelimit_bare_is_rate_limit ... ok [INFO] [stdout] test signals::metadata::tests::etag_produces_metadata_leak ... ok [INFO] [stdout] test signals::header::tests::x_ratelimit_limit_is_rate_limit ... ok [INFO] [stdout] test signals::metadata::tests::no_metadata_headers_produces_no_signals ... ok [INFO] [stdout] test signals::status_code::tests::empty_baseline_produces_no_signal ... ok [INFO] [stdout] test signals::status_code::tests::uses_most_recent_exchange ... ok [INFO] [stdout] test signals::status_code::tests::empty_probe_produces_no_signal ... ok [INFO] [stdout] test signals::status_code::tests::identical_status_codes_produce_no_signal ... ok [INFO] [stdout] test signals::header::tests::mixed_shared_and_unshared_rate_limit_headers_only_unshared_returned ... ok [INFO] [stdout] test signals::status_code::tests::different_status_codes_produce_signal ... ok [INFO] [stdout] test signals::body::tests::small_body_unchanged_behavior ... ok [INFO] [stdout] test aggregation::surface::tests::body_diff_ratio_symmetric ... ok [INFO] [stdout] test aggregation::surface::tests::body_diff_ratio_bounded ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 442 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.47s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/parlov_core-7d904fcb447f158b) [INFO] [stdout] [INFO] [stdout] running 123 tests [INFO] [stdout] test endpoint_verdict::tests::posterior_to_verdict_at_0_59_is_inconclusive ... ok [INFO] [stdout] test endpoint_verdict::tests::posterior_to_verdict_at_0_20_is_not_present ... ok [INFO] [stdout] test endpoint_verdict::tests::posterior_to_verdict_at_0_60_is_likely ... ok [INFO] [stdout] test endpoint_verdict::tests::posterior_to_verdict_at_0_79_is_likely ... ok [INFO] [stdout] test endpoint_verdict::tests::posterior_to_verdict_at_0_21_is_inconclusive ... ok [INFO] [stdout] test exchange::tests::empty_baseline_returns_none ... ok [INFO] [stdout] test endpoint_verdict::tests::endpoint_stop_reason_display ... ok [INFO] [stdout] test endpoint_verdict::tests::strategy_outcome_kind_display ... ok [INFO] [stdout] test exchange::tests::mixed_200_then_301_with_location_returns_200 ... ok [INFO] [stdout] test exchange::tests::single_301_with_location_returns_it_when_no_2xx ... ok [INFO] [stdout] test endpoint_verdict::tests::posterior_to_verdict_at_0_80_is_confirmed ... ok [INFO] [stdout] test exchange::tests::mixed_301_with_location_then_200_returns_200 ... ok [INFO] [stdout] test exchange::tests::multiple_2xx_returns_first ... ok [INFO] [stdout] test exchange::tests::single_200_returns_its_status_and_headers ... ok [INFO] [stdout] test exchange::tests::single_301_without_location_returns_none ... ok [INFO] [stdout] test endpoint_verdict::tests::strategy_outcome_kind_all_variants_roundtrip ... ok [INFO] [stdout] test observability::tests::block_family_display ... ok [INFO] [stdout] test observability::tests::block_family_roundtrip ... ok [INFO] [stdout] test endpoint_verdict::tests::endpoint_verdict_roundtrip ... ok [INFO] [stdout] test finding_id::tests::finding_id_is_12_hex_chars ... ok [INFO] [stdout] test observability::tests::observability_status_display ... ok [INFO] [stdout] test observability::tests::observability_status_roundtrip ... ok [INFO] [stdout] test observability_compute::tests::all_auth_blocked_returns_blocked_before_oracle_layer ... ok [INFO] [stdout] test finding_id::tests::finding_id_differs_on_input_change ... ok [INFO] [stdout] test finding_id::tests::finding_id_is_deterministic ... ok [INFO] [stdout] test observability_compute::tests::blocked_fraction_is_clamped_to_unit_interval ... ok [INFO] [stdout] test observability_compute::tests::contradictory_returns_evidence_observed ... ok [INFO] [stdout] test observability_compute::tests::evidence_bearing_returns_evidence_observed ... ok [INFO] [stdout] test observability_compute::tests::fewer_than_3_opportunities_returns_underpowered ... ok [INFO] [stdout] test observability_compute::tests::method_blocked_returns_blocked_before_oracle_layer ... ok [INFO] [stdout] test observability_compute::tests::no_findings_returns_underpowered ... ok [INFO] [stdout] test outcome::tests::clone_contradictory ... ok [INFO] [stdout] test outcome::tests::clone_inapplicable ... ok [INFO] [stdout] test outcome::tests::clone_no_signal ... ok [INFO] [stdout] test endpoint_verdict::tests::endpoint_stop_reason_all_variants_roundtrip ... ok [INFO] [stdout] test outcome::tests::clone_positive ... ok [INFO] [stdout] test outcome::tests::roundtrip_inapplicable_reason_string_survives ... ok [INFO] [stdout] test observability_compute::tests::all_no_signal_returns_probed_no_evidence ... ok [INFO] [stdout] test observability_compute::tests::mixed_blocked_returns_partially_blocked ... ok [INFO] [stdout] test outcome::tests::roundtrip_contradictory_weight_survives ... ok [INFO] [stdout] test outcome::tests::roundtrip_no_signal_inner_oracle_result_survives ... ok [INFO] [stdout] test outcome::tests::roundtrip_positive_inner_oracle_result_survives ... ok [INFO] [stdout] test response_class::tests::auth_challenge_401 ... ok [INFO] [stdout] test response_class::tests::other_100 ... ok [INFO] [stdout] test response_class::tests::other_3xx_without_location ... ok [INFO] [stdout] test response_class::tests::other_4xx_without_json_content_type ... ok [INFO] [stdout] test response_class::tests::other_500 ... ok [INFO] [stdout] test response_class::tests::auth_challenge_407 ... ok [INFO] [stdout] test response_class::tests::not_modified_304 ... ok [INFO] [stdout] test response_class::tests::partial_content_206 ... ok [INFO] [stdout] test response_class::tests::precedence_206_not_success ... ok [INFO] [stdout] test response_class::tests::precedence_401_not_structured_error_with_json_content_type ... ok [INFO] [stdout] test response_class::tests::range_not_satisfiable_416 ... ok [INFO] [stdout] test response_class::tests::rate_limited_429 ... ok [INFO] [stdout] test response_class::tests::rate_limited_503 ... ok [INFO] [stdout] test response_class::tests::redirect_301_with_location ... ok [INFO] [stdout] test response_class::tests::structured_error_application_json ... ok [INFO] [stdout] test response_class::tests::structured_error_problem_json ... ok [INFO] [stdout] test response_class::tests::success_200 ... ok [INFO] [stdout] test response_class::tests::precedence_304_not_redirect_even_with_location ... ok [INFO] [stdout] test response_class::tests::precedence_429_not_structured_error_with_problem_json ... ok [INFO] [stdout] test response_class::tests::success_201 ... ok [INFO] [stdout] test technique::tests::always_applicable_returns_strong ... ok [INFO] [stdout] test technique::tests::applicability_missing_confidence_is_zero ... ok [INFO] [stdout] test signal::tests::impact_class_display ... ok [INFO] [stdout] test signal::tests::signal_kind_display ... ok [INFO] [stdout] test technique::tests::applicability_weak_confidence_is_three_tenths ... ok [INFO] [stdout] test technique::tests::default_parser_relevant_is_false ... ok [INFO] [stdout] test technique::tests::error_message_granularity_serializes ... ok [INFO] [stdout] test technique::tests::applicability_strong_confidence_is_one ... ok [INFO] [stdout] test technique::tests::error_message_granularity_variant_exists ... ok [INFO] [stdout] test technique::tests::inverted_signal_weight_none_roundtrips ... ok [INFO] [stdout] test technique::tests::inverted_signal_weight_some_roundtrips ... ok [INFO] [stdout] test technique::tests::normalization_weight_none_roundtrips ... ok [INFO] [stdout] test technique::tests::normalization_weight_some_roundtrips ... ok [INFO] [stdout] test technique::tests::normative_strength_display ... ok [INFO] [stdout] test technique::tests::redirect_diff_is_copy ... ok [INFO] [stdout] test technique::tests::redirect_diff_serializes ... ok [INFO] [stdout] test technique::tests::redirect_diff_variant_exists ... ok [INFO] [stdout] test technique::tests::vector_display ... ok [INFO] [stdout] test technique::tests::default_method_relevant_is_false ... ok [INFO] [stdout] test tests::deserialize_minimal_json_defaults_to_none ... ok [INFO] [stdout] test technique::tests::error_message_granularity_is_copy ... ok [INFO] [stdout] test tests::error_cli_is_distinct_from_http ... ok [INFO] [stdout] test tests::error_cli_variant_exists_and_displays_correctly ... ok [INFO] [stdout] test tests::from_technique_confirmed_fields_match_inputs ... ok [INFO] [stdout] test tests::from_technique_not_present_none_severity_fields_match ... ok [INFO] [stdout] test tests::from_technique_optional_fields_are_none_or_empty ... ok [INFO] [stdout] test tests::header_map_serde_preserves_multi_valued_headers ... ok [INFO] [stdout] test tests::differential_set_carries_technique ... ok [INFO] [stdout] test tests::header_map_serde_format_is_array_of_pairs ... ok [INFO] [stdout] test tests::impact_class_copy_and_eq ... ok [INFO] [stdout] test tests::impact_class_serialize_roundtrip ... ok [INFO] [stdout] test tests::into_outcome_confirmed_becomes_positive ... ok [INFO] [stdout] test tests::normative_strength_copy_and_eq ... ok [INFO] [stdout] test tests::oracle_class_display ... ok [INFO] [stdout] test tests::oracle_result_roundtrip_with_technique_context ... ok [INFO] [stdout] test tests::into_outcome_inconclusive_becomes_no_signal ... ok [INFO] [stdout] test tests::oracle_result_with_confidence_and_impact_serializes ... ok [INFO] [stdout] test tests::oracle_result_with_technique_context_serializes ... ok [INFO] [stdout] test tests::oracle_result_zero_confidence_omits_impact_and_reasons ... ok [INFO] [stdout] test tests::oracle_verdict_display ... ok [INFO] [stdout] test tests::primary_evidence_falls_back_to_first_signal ... ok [INFO] [stdout] test tests::into_outcome_likely_becomes_no_signal ... ok [INFO] [stdout] test tests::into_outcome_not_present_becomes_no_signal ... ok [INFO] [stdout] test tests::primary_evidence_returns_dash_when_empty ... ok [INFO] [stdout] test tests::primary_evidence_returns_status_code_diff ... ok [INFO] [stdout] test tests::probe_exchange_pairs_request_and_response ... ok [INFO] [stdout] test tests::roundtrip_confirmed_preserves_metadata ... ok [INFO] [stdout] test tests::roundtrip_not_present_preserves_none_metadata ... ok [INFO] [stdout] test tests::scoring_dimension_copy_and_eq ... ok [INFO] [stdout] test tests::scoring_reason_negative_points ... ok [INFO] [stdout] test tests::scoring_reason_serialize_roundtrip ... ok [INFO] [stdout] test tests::serialize_confirmed_includes_metadata_fields ... ok [INFO] [stdout] test tests::serialize_not_present_omits_none_metadata ... ok [INFO] [stdout] test tests::severity_display ... ok [INFO] [stdout] test tests::signal_kind_copy_and_eq ... ok [INFO] [stdout] test tests::technique_clone ... ok [INFO] [stdout] test tests::technique_without_target_signals_constructs ... ok [INFO] [stdout] test tests::vector_copy_and_eq ... ok [INFO] [stdout] test observability_compute::tests::blocked_before_oracle_dominant_family_is_scan_wide ... ok [INFO] [stdout] test observability_compute::tests::evidence_bearing_always_yields_evidence_observed ... ok [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/parlov_elicit-4645418978aa8630) [INFO] [stdout] test observability_compute::tests::block_summary_fraction_is_in_unit_interval ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 123 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 558 tests [INFO] [stdout] test chain::tests::consumer_is_object_safe ... ok [INFO] [stdout] test chain::tests::kind_string_for_etag_returns_etag ... ok [INFO] [stdout] test chain::tests::dag_plan_empty_when_producer_does_not_admit_exchange_class ... ok [INFO] [stdout] test chain::tests::dag_plan_empty_when_no_exchanges ... ok [INFO] [stdout] test chain::tests::kind_string_for_problem_details_returns_problem_details ... ok [INFO] [stdout] test chain::tests::producer_output_kind_matches_variant ... ok [INFO] [stdout] test chain::tests::registry_register_increments_len ... ok [INFO] [stdout] test chain::tests::registry_starts_empty ... ok [INFO] [stdout] test chain::tests::registry_extend_merges_edges ... ok [INFO] [stdout] test chain::tests::kind_string_for_auth_challenge_returns_auth_challenge ... ok [INFO] [stdout] test chain::tests::value_string_for_accept_ranges_returns_string ... ok [INFO] [stdout] test chain::tests::dag_plan_empty_when_registry_is_empty ... ok [INFO] [stdout] test chain::tests::dag_plan_empty_when_producer_admits_but_extract_returns_none ... ok [INFO] [stdout] test chain::tests::value_string_for_content_range_size_returns_decimal_string ... ok [INFO] [stdout] test chain::tests::value_string_for_content_type_returns_mime ... ok [INFO] [stdout] test chain::tests::value_string_for_etag_returns_quoted_value ... ok [INFO] [stdout] test chain::tests::value_string_for_auth_challenge_includes_scheme_realm_scope ... ok [INFO] [stdout] test chain::tests::value_string_for_last_modified_returns_date_string ... ok [INFO] [stdout] test chain::tests::value_string_for_location_returns_url_string ... ok [INFO] [stdout] test chain::tests::dag_attaches_chain_provenance_to_generated_specs ... ok [INFO] [stdout] test chain::tests::value_string_for_problem_details_returns_summary ... ok [INFO] [stdout] test chain::tests::producer_is_object_safe ... ok [INFO] [stdout] test chain::tests::value_string_for_resource_id_returns_string ... ok [INFO] [stdout] test chain::tests::value_string_for_problem_details_renders_dash_when_type_none ... ok [INFO] [stdout] test context::tests::known_duplicate_fields_accessible ... ok [INFO] [stdout] test context::tests::scan_context_all_none_fields_accessible ... ok [INFO] [stdout] test context::tests::scan_context_all_some_fields_accessible ... ok [INFO] [stdout] test context::tests::state_field_fields_accessible ... ok [INFO] [stdout] test existence::cache_probing::accept::tests::is_always_applicable ... ok [INFO] [stdout] test existence::cache_probing::accept::tests::risk_is_safe ... ok [INFO] [stdout] test existence::cache_probing::if_match::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::cache_probing::if_match::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::cache_probing::if_match::tests::generates_probe_with_correct_header ... ok [INFO] [stdout] test existence::cache_probing::accept::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::cache_probing::accept::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::cache_probing::accept::tests::generates_probe_with_correct_header ... ok [INFO] [stdout] test existence::cache_probing::if_match::tests::is_always_applicable ... ok [INFO] [stdout] test existence::cache_probing::if_match::tests::risk_is_safe ... ok [INFO] [stdout] test chain::tests::value_string_for_auth_challenge_renders_dashes_when_optional_absent ... ok [INFO] [stdout] test existence::cache_probing::if_modified_since::tests::risk_is_safe ... ok [INFO] [stdout] test existence::cache_probing::if_modified_since::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::cache_probing::if_none_match::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::cache_probing::if_modified_since::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test chain::tests::phase1_specs_have_no_chain_provenance ... ok [INFO] [stdout] test existence::cache_probing::if_none_match::tests::generates_probe_with_correct_header ... ok [INFO] [stdout] test existence::cache_probing::if_modified_since::tests::is_always_applicable ... ok [INFO] [stdout] test existence::cache_probing::if_none_match::tests::risk_is_safe ... ok [INFO] [stdout] test existence::cache_probing::if_range::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::cache_probing::if_none_match::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::cache_probing::if_range::tests::generates_probe_with_correct_headers ... ok [INFO] [stdout] test existence::cache_probing::if_modified_since::tests::generates_probe_with_correct_header ... ok [INFO] [stdout] test existence::cache_probing::if_range::tests::risk_is_safe ... ok [INFO] [stdout] test existence::cache_probing::if_unmodified_since::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::cache_probing::if_none_match::tests::is_always_applicable ... ok [INFO] [stdout] test existence::cache_probing::if_range::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::cache_probing::if_range::tests::is_always_applicable ... ok [INFO] [stdout] test existence::cache_probing::if_unmodified_since::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::cache_probing::if_unmodified_since::tests::generates_probe_with_correct_header ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::range_size_producer_admits_range_not_satisfiable ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::range_size_producer_admits_partial_content ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::is_always_applicable ... ok [INFO] [stdout] test existence::cache_probing::if_unmodified_since::tests::is_always_applicable ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::generates_probe_with_correct_header ... ok [INFO] [stdout] test existence::cache_probing::if_unmodified_since::tests::risk_is_safe ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::range_size_producer_does_not_admit_success ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::range_size_producer_returns_none_when_accept_ranges_none ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::range_size_producer_returns_none_when_no_content_range ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::satisfiable_consumer_needs_content_range_size ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::satisfiable_consumer_probe_has_full_range_header ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::satisfiable_consumer_probe_has_last_byte_range_header ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::risk_is_safe ... ok [INFO] [stdout] test existence::cache_probing::range_unsatisfiable::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::cache_probing::range_unsatisfiable::tests::risk_is_safe ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::satisfiable_consumer_generates_two_specs_from_size ... ok [INFO] [stdout] test existence::cache_probing::range_unsatisfiable::tests::unsatisfiable_consumer_generates_two_specs_from_size ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::range_size_producer_parses_bytes_range_form ... ok [INFO] [stdout] test existence::cache_probing::range_unsatisfiable::tests::unsatisfiable_consumer_needs_content_range_size ... ok [INFO] [stdout] test existence::cache_probing::range_unsatisfiable::tests::unsatisfiable_consumer_probe_has_beyond_end_range ... ok [INFO] [stdout] test existence::cache_probing::range_unsatisfiable::tests::unsatisfiable_consumer_probe_has_open_ended_range ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::range_size_producer_returns_none_on_size_zero ... ok [INFO] [stdout] test existence::cache_probing::tests::cp_chain_registry_has_seven_edges ... ok [INFO] [stdout] test existence::cache_probing::range_unsatisfiable::tests::is_always_applicable ... ok [INFO] [stdout] test existence::cache_probing::range_unsatisfiable::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::cache_probing::range_unsatisfiable::tests::generates_probe_with_correct_header ... ok [INFO] [stdout] test existence::cache_probing::range_satisfiable::tests::range_size_producer_parses_bytes_star_form ... ok [INFO] [stdout] test existence::error_message_granularity::app_vs_server_404::tests::is_always_applicable ... ok [INFO] [stdout] test existence::error_message_granularity::app_vs_server_404::tests::baseline_url_has_baseline_id ... ok [INFO] [stdout] test existence::error_message_granularity::app_vs_server_404::tests::garble_fallback_when_single_segment ... ok [INFO] [stdout] test existence::error_message_granularity::app_vs_server_404::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::error_message_granularity::app_vs_server_404::tests::probe_url_is_garbled ... ok [INFO] [stdout] test existence::error_message_granularity::app_vs_server_404::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::error_message_granularity::app_vs_server_404::tests::garble_replaces_parent_segment ... ok [INFO] [stdout] test existence::error_message_granularity::app_vs_server_404::tests::risk_is_safe ... ok [INFO] [stdout] test existence::error_message_granularity::app_vs_server_404::tests::generates_get_method ... ok [INFO] [stdout] test existence::error_message_granularity::bola::tests::is_always_applicable ... ok [INFO] [stdout] test existence::error_message_granularity::bola::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::error_message_granularity::bola::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::error_message_granularity::bola::tests::generates_get_method ... ok [INFO] [stdout] test existence::error_message_granularity::fk_violation::tests::generates_delete_method ... ok [INFO] [stdout] test existence::error_message_granularity::fk_violation::tests::risk_is_method_destructive ... ok [INFO] [stdout] test existence::error_message_granularity::query_validation::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::error_message_granularity::query_validation::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::error_message_granularity::query_validation::tests::generates_get_method ... ok [INFO] [stdout] test existence::error_message_granularity::query_validation::tests::urls_use_ampersand_when_query_already_present ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_patch::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::error_message_granularity::bola::tests::risk_is_safe ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_patch::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::error_message_granularity::fk_violation::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::error_message_granularity::fk_violation::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::error_message_granularity::fk_violation::tests::is_always_applicable ... ok [INFO] [stdout] test existence::error_message_granularity::query_validation::tests::is_always_applicable ... ok [INFO] [stdout] test existence::error_message_granularity::query_validation::tests::risk_is_safe ... ok [INFO] [stdout] test existence::error_message_granularity::query_validation::tests::urls_have_query_param ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_patch::tests::generates_patch_method ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_patch::tests::risk_is_method_destructive ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_put::tests::has_content_type_json ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_patch::tests::is_always_applicable ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_put::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_put::tests::is_always_applicable ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_patch::tests::has_content_type_json ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_patch::tests::has_malformed_body ... ok [INFO] [stdout] test existence::error_message_granularity::state_conflict::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::error_message_granularity::state_conflict::tests::generates_post_method ... ok [INFO] [stdout] test existence::error_message_granularity::state_conflict::tests::is_applicable_with_body_template ... ok [INFO] [stdout] test existence::error_message_granularity::state_conflict::tests::not_applicable_without_body_template ... ok [INFO] [stdout] test existence::redirect_diff::case_variation::tests::both_sides_manipulated ... ok [INFO] [stdout] test existence::redirect_diff::case_variation::tests::generates_correct_method_count ... ok [INFO] [stdout] test existence::error_message_granularity::state_conflict::tests::generates_correct_technique_strength ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_put::tests::generates_correct_technique_vector ... ok [INFO] [stdout] test existence::error_message_granularity::state_conflict::tests::risk_is_method_destructive ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_put::tests::generates_put_method ... ok [INFO] [stdout] test existence::redirect_diff::case_variation::tests::is_always_applicable ... ok [INFO] [stdout] test existence::redirect_diff::case_variation::tests::location_consumer_does_not_corrupt_ambiguous_id_occurrence ... ok [INFO] [stdout] test existence::redirect_diff::case_variation::tests::location_consumer_generates_pair_when_baseline_id_in_location ... ok [INFO] [stdout] test existence::redirect_diff::case_variation::tests::risk_is_safe ... ok [INFO] [stdout] test existence::redirect_diff::case_variation::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::baseline_and_probe_same_manipulation ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_put::tests::has_malformed_body ... ok [INFO] [stdout] test existence::redirect_diff::case_variation::tests::location_consumer_skips_when_baseline_id_not_in_location ... ok [INFO] [stdout] test existence::error_message_granularity::schema_validation_put::tests::risk_is_method_destructive ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::double_slash_inserted_at_path_start ... ok [INFO] [stdout] test existence::redirect_diff::case_variation::tests::baseline_and_probe_same_manipulation ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::both_sides_manipulated ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::location_consumer_generates_pair_when_baseline_id_in_location ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::location_consumer_needs_location ... ok [INFO] [stdout] test existence::redirect_diff::case_variation::tests::query_string_preserved ... ok [INFO] [stdout] test existence::redirect_diff::case_variation::tests::technique_vector_is_redirect_diff ... ok [INFO] [stdout] test existence::redirect_diff::case_variation::tests::location_consumer_needs_location ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::generates_correct_method_count ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::is_always_applicable ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::technique_vector_is_redirect_diff ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::location_consumer_does_not_corrupt_ambiguous_id_occurrence ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::risk_is_safe ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::baseline_and_probe_same_manipulation ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::generates_correct_method_count ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::location_consumer_does_not_corrupt_ambiguous_id_occurrence ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::location_consumer_skips_when_baseline_id_not_in_location ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::location_consumer_generates_pair_when_baseline_id_in_location ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::risk_is_safe ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::technique_vector_is_redirect_diff ... ok [INFO] [stdout] test existence::redirect_diff::post_to_303::tests::both_sides_have_content_type_json ... ok [INFO] [stdout] test existence::redirect_diff::post_to_303::tests::generates_correct_method_count ... ok [INFO] [stdout] test existence::redirect_diff::post_to_303::tests::is_always_applicable ... ok [INFO] [stdout] test existence::redirect_diff::post_to_303::tests::location_consumer_does_not_corrupt_ambiguous_id_occurrence ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::location_consumer_needs_location ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::encodes_first_alnum_correctly ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::both_sides_manipulated ... ok [INFO] [stdout] test existence::redirect_diff::post_to_303::tests::location_consumer_generates_pair_when_baseline_id_in_location ... ok [INFO] [stdout] test existence::redirect_diff::double_slash::tests::query_string_preserved ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::is_always_applicable ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::location_consumer_skips_when_baseline_id_not_in_location ... ok [INFO] [stdout] test existence::redirect_diff::post_to_303::tests::method_is_post ... ok [INFO] [stdout] test existence::redirect_diff::post_to_303::tests::location_consumer_skips_when_baseline_id_not_in_location ... ok [INFO] [stdout] test existence::redirect_diff::protocol_upgrade::tests::generates_correct_method_count ... ok [INFO] [stdout] test existence::redirect_diff::post_to_303::tests::location_consumer_needs_location ... ok [INFO] [stdout] test existence::redirect_diff::post_to_303::tests::technique_strength_is_should ... ok [INFO] [stdout] test existence::redirect_diff::protocol_upgrade::tests::is_always_applicable ... ok [INFO] [stdout] test existence::redirect_diff::percent_encoding::tests::query_string_preserved ... ok [INFO] [stdout] test existence::redirect_diff::protocol_upgrade::tests::location_consumer_does_not_corrupt_ambiguous_id_occurrence ... ok [INFO] [stdout] test existence::redirect_diff::protocol_upgrade::tests::location_consumer_generates_pair_when_baseline_id_in_location ... ok [INFO] [stdout] test existence::redirect_diff::protocol_upgrade::tests::non_https_url_returned_unchanged ... ok [INFO] [stdout] test existence::redirect_diff::protocol_upgrade::tests::risk_is_safe ... ok [INFO] [stdout] test existence::redirect_diff::protocol_upgrade::tests::technique_vector_is_redirect_diff ... ok [INFO] [stdout] test existence::redirect_diff::post_to_303::tests::risk_is_method_destructive ... ok [INFO] [stdout] test existence::redirect_diff::put_to_303::tests::both_sides_have_content_type_json ... ok [INFO] [stdout] test existence::redirect_diff::protocol_upgrade::tests::both_sides_manipulated ... ok [INFO] [stdout] test existence::redirect_diff::post_to_303::tests::technique_vector_is_redirect_diff ... ok [INFO] [stdout] test existence::redirect_diff::put_to_303::tests::is_always_applicable ... ok [INFO] [stdout] test existence::redirect_diff::protocol_upgrade::tests::baseline_and_probe_same_manipulation ... ok [INFO] [stdout] test existence::redirect_diff::put_to_303::tests::generates_correct_method_count ... ok [INFO] [stdout] test existence::redirect_diff::put_to_303::tests::location_consumer_does_not_corrupt_ambiguous_id_occurrence ... ok [INFO] [stdout] test existence::redirect_diff::put_to_303::tests::location_consumer_generates_pair_when_baseline_id_in_location ... ok [INFO] [stdout] test existence::redirect_diff::put_to_303::tests::risk_is_method_destructive ... ok [INFO] [stdout] test existence::redirect_diff::put_to_303::tests::location_consumer_needs_location ... ok [INFO] [stdout] test existence::redirect_diff::put_to_303::tests::technique_strength_is_should ... ok [INFO] [stdout] test existence::redirect_diff::put_to_303::tests::technique_vector_is_redirect_diff ... ok [INFO] [stdout] test existence::redirect_diff::slash_append::tests::baseline_and_probe_same_manipulation ... ok [INFO] [stdout] test existence::redirect_diff::slash_append::tests::both_sides_have_slash_stripped ... ok [INFO] [stdout] test existence::redirect_diff::slash_append::tests::generates_correct_method_count ... ok [INFO] [stdout] test existence::redirect_diff::slash_append::tests::location_consumer_generates_pair_when_baseline_id_in_location ... ok [INFO] [stdout] test existence::redirect_diff::slash_append::tests::location_consumer_needs_location ... ok [INFO] [stdout] test existence::redirect_diff::slash_append::tests::location_consumer_skips_when_baseline_id_not_in_location ... ok [INFO] [stdout] test existence::redirect_diff::slash_append::tests::query_string_preserved ... ok [INFO] [stdout] test existence::redirect_diff::slash_append::tests::is_always_applicable ... ok [INFO] [stdout] test existence::redirect_diff::put_to_303::tests::location_consumer_skips_when_baseline_id_not_in_location ... ok [INFO] [stdout] test existence::redirect_diff::slash_append::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::redirect_diff::protocol_upgrade::tests::location_consumer_needs_location ... ok [INFO] [stdout] test existence::redirect_diff::protocol_upgrade::tests::location_consumer_skips_when_baseline_id_not_in_location ... ok [INFO] [stdout] test existence::redirect_diff::slash_strip::tests::baseline_and_probe_same_manipulation ... ok [INFO] [stdout] test existence::redirect_diff::slash_strip::tests::is_always_applicable ... ok [INFO] [stdout] test existence::redirect_diff::slash_append::tests::technique_vector_is_redirect_diff ... ok [INFO] [stdout] test existence::redirect_diff::put_to_303::tests::method_is_put ... ok [INFO] [stdout] test existence::redirect_diff::slash_strip::tests::both_sides_have_slash_appended ... ok [INFO] [stdout] test existence::redirect_diff::slash_append::tests::location_consumer_does_not_corrupt_ambiguous_id_occurrence ... ok [INFO] [stdout] test existence::redirect_diff::protocol_upgrade::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::redirect_diff::slash_strip::tests::generates_correct_method_count ... ok [INFO] [stdout] test existence::redirect_diff::slash_strip::tests::query_string_preserved ... ok [INFO] [stdout] test existence::redirect_diff::slash_strip::tests::risk_is_safe ... ok [INFO] [stdout] test existence::redirect_diff::slash_strip::tests::location_consumer_does_not_corrupt_ambiguous_id_occurrence ... ok [INFO] [stdout] test existence::redirect_diff::slash_strip::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::redirect_diff::slash_strip::tests::technique_vector_is_redirect_diff ... ok [INFO] [stdout] test existence::redirect_diff::slash_strip::tests::location_consumer_generates_pair_when_baseline_id_in_location ... ok [INFO] [stdout] test existence::redirect_diff::tests::rd_chain_registry_has_eight_edges ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::all_items_are_pair_variants ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::baseline_and_probe_headers_are_identical ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::baseline_has_same_accept_as_probe ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::generate_returns_two_items ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::head_pair_probe_method_is_head ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::baseline_url_uses_baseline_id_probe_url_uses_probe_id ... ok [INFO] [stdout] test existence::redirect_diff::tests::rd_location_producer_extracts_location_header ... ok [INFO] [stdout] test existence::redirect_diff::slash_strip::tests::location_consumer_needs_location ... ok [INFO] [stdout] test existence::redirect_diff::tests::rd_location_producer_returns_none_when_no_location ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::redirect_diff::slash_strip::tests::location_consumer_skips_when_baseline_id_not_in_location ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::is_applicable_always_true ... ok [INFO] [stdout] test existence::redirect_diff::tests::rd_location_producer_admits_redirect_only ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::methods_contains_get_and_head ... ok [INFO] [stdout] test existence::redirect_diff::slash_append::tests::risk_is_safe ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::risk_is_safe ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::technique_strength_is_should ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::technique_vector_is_status_code_diff ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_consumer_basic_uses_empty_credentials ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_consumer_bearer_header_includes_realm ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_consumer_unknown_scheme_uses_scheme_only ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_producer_admits_auth_challenge ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_producer_does_not_admit_success ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_producer_extracts_basic_scheme ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_producer_extracts_bearer_with_realm_and_scope ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_producer_extracts_bearer_without_params ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_producer_parses_realm_unquoted ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_producer_returns_none_when_no_header ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::normalization_weight_is_0_05 ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_consumer_needs_auth_challenge ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_consumer_returns_empty_on_wrong_output_variant ... ok [INFO] [stdout] test existence::status_code_diff::accept::tests::probe_has_unsupported_accept ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::auth_challenge_consumer_generates_one_spec ... ok [INFO] [stdout] test existence::status_code_diff::auth_strip::tests::is_applicable_false_without_auth_header ... ok [INFO] [stdout] test existence::status_code_diff::auth_strip::tests::normalization_weight_is_0_25 ... ok [INFO] [stdout] test existence::status_code_diff::auth_strip::tests::probe_lacks_authorization_header ... ok [INFO] [stdout] test existence::status_code_diff::auth_strip::tests::risk_is_safe ... ok [INFO] [stdout] test existence::status_code_diff::auth_strip::tests::technique_strength_is_should ... ok [INFO] [stdout] test existence::status_code_diff::auth_strip::tests::baseline_has_authorization_header ... ok [INFO] [stdout] test existence::status_code_diff::case_normalize::tests::baseline_and_probe_paths_use_same_case_transform ... ok [INFO] [stdout] test existence::status_code_diff::case_normalize::tests::baseline_url_path_is_uppercased ... ok [INFO] [stdout] test existence::status_code_diff::case_normalize::tests::baseline_url_uses_baseline_id_probe_url_uses_probe_id ... ok [INFO] [stdout] test existence::status_code_diff::case_normalize::tests::generate_returns_two_items ... ok [INFO] [stdout] test existence::status_code_diff::case_normalize::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::case_normalize::tests::baseline_and_probe_headers_are_identical ... ok [INFO] [stdout] test existence::status_code_diff::auth_strip::tests::generate_returns_two_items ... ok [INFO] [stdout] test existence::status_code_diff::auth_strip::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::auth_strip::tests::is_applicable_true_with_auth_header ... ok [INFO] [stdout] test existence::status_code_diff::case_normalize::tests::probe_url_path_is_uppercased ... ok [INFO] [stdout] test existence::status_code_diff::case_normalize::tests::normalization_weight_is_0_05 ... ok [INFO] [stdout] test existence::status_code_diff::case_normalize::tests::query_string_is_not_uppercased ... ok [INFO] [stdout] test existence::status_code_diff::case_normalize::tests::risk_is_safe ... ok [INFO] [stdout] test existence::status_code_diff::case_normalize::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_consumer_generates_two_specs ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_consumer_baseline_uses_baseline_id ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_consumer_both_sides_carry_same_accept ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_consumer_first_spec_has_matching_accept_header ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_consumer_needs_content_type ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_consumer_probe_uses_probe_id ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_consumer_returns_empty_on_wrong_output_variant ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_producer_admits_success ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_producer_does_not_admit_redirect ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_producer_returns_none_when_content_type_empty ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_consumer_technique_is_status_code_diff ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_consumer_second_spec_has_unsupported_accept_header ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_producer_returns_none_when_no_header ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_producer_strips_charset_param ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_producer_strips_whitespace_after_semicolon ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::content_type_producer_extracts_plain_mime ... ok [INFO] [stdout] test existence::status_code_diff::content_type::tests::baseline_has_same_content_type_as_probe ... ok [INFO] [stdout] test existence::status_code_diff::content_type::tests::generate_returns_two_items ... ok [INFO] [stdout] test existence::status_code_diff::content_type::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::content_type::tests::baseline_and_probe_headers_are_identical ... ok [INFO] [stdout] test existence::status_code_diff::content_type::tests::baseline_url_uses_baseline_id_probe_url_uses_probe_id ... ok [INFO] [stdout] test existence::status_code_diff::content_type::tests::methods_are_exactly_put_and_patch ... ok [INFO] [stdout] test existence::status_code_diff::content_type::tests::post_is_not_generated ... ok [INFO] [stdout] test existence::status_code_diff::content_type::tests::probe_has_invalid_content_type ... ok [INFO] [stdout] test existence::status_code_diff::content_type::tests::risk_is_method_destructive ... ok [INFO] [stdout] test existence::status_code_diff::content_type::tests::technique_strength_is_should ... ok [INFO] [stdout] test existence::status_code_diff::content_type::tests::normalization_weight_is_0_05 ... ok [INFO] [stdout] test existence::status_code_diff::dependency_delete::tests::generate_returns_one_item ... ok [INFO] [stdout] test existence::status_code_diff::dependency_delete::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::dependency_delete::tests::normalization_weight_is_0_02 ... ok [INFO] [stdout] test existence::status_code_diff::dependency_delete::tests::risk_is_operation_destructive ... ok [INFO] [stdout] test existence::status_code_diff::dependency_delete::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::status_code_diff::empty_body::tests::both_body_is_empty_json_object ... ok [INFO] [stdout] test existence::status_code_diff::empty_body::tests::both_have_application_json_content_type ... ok [INFO] [stdout] test existence::status_code_diff::empty_body::tests::generate_returns_three_items ... ok [INFO] [stdout] test existence::status_code_diff::empty_body::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::empty_body::tests::normalization_weight_is_0_05 ... ok [INFO] [stdout] test existence::status_code_diff::empty_body::tests::risk_is_method_destructive ... ok [INFO] [stdout] test existence::status_code_diff::empty_body::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::status_code_diff::dependency_delete::tests::item_is_pair_variant ... ok [INFO] [stdout] test existence::status_code_diff::dependency_delete::tests::probe_body_is_none ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::baseline_and_probe_headers_are_identical ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::baseline_has_same_if_match_as_probe ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::generate_returns_three_items ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::if_match_consumer_baseline_headers_match_probe_headers ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::if_match_consumer_delete_has_no_body ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::if_match_consumer_generates_nothing_for_non_etag_output ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::if_match_consumer_generates_three_specs_from_strong_etag ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::if_match_consumer_needs_etag ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::if_match_consumer_probe_headers_contain_real_etag ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::if_match_consumer_put_has_body ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::if_match_producer_admits_success_only ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::if_match_producer_extracts_etag_strong ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::if_match_producer_extracts_etag_weak ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::if_match_producer_returns_none_when_no_etag ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::normalization_weight_is_0_12 ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::probe_has_if_match_bogus_etag ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::risk_is_method_destructive ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::technique_strength_is_must ... ok [INFO] [stdout] test existence::status_code_diff::if_match_read::tests::baseline_and_probe_headers_are_identical ... ok [INFO] [stdout] test existence::status_code_diff::if_match_read::tests::baseline_has_same_if_match_as_probe ... ok [INFO] [stdout] test existence::status_code_diff::if_match_read::tests::generate_returns_two_items ... ok [INFO] [stdout] test existence::status_code_diff::if_match_read::tests::is_applicable_always_true ... ok [INFO] [stdout] test existence::status_code_diff::if_match_read::tests::methods_are_get_and_head ... ok [INFO] [stdout] test existence::status_code_diff::if_match_read::tests::neither_side_has_body ... ok [INFO] [stdout] test existence::status_code_diff::if_match_read::tests::probe_has_if_match_bogus_etag ... ok [INFO] [stdout] test existence::status_code_diff::if_match_read::tests::risk_is_safe ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::baseline_url_uses_baseline_id_probe_url_uses_probe_id ... ok [INFO] [stdout] test existence::status_code_diff::if_match::tests::delete_pair_probe_has_no_body ... ok [INFO] [stdout] test existence::status_code_diff::if_match_read::tests::strategy_id_is_correct ... ok [INFO] [stdout] test existence::status_code_diff::if_match_read::tests::technique_strength_is_must ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::baseline_has_same_if_none_match_as_probe ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::baseline_url_uses_baseline_id_probe_url_uses_probe_id ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::if_none_match_consumer_baseline_headers_match_probe_headers ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::if_none_match_consumer_generates_two_specs ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::if_none_match_consumer_needs_etag ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::if_none_match_consumer_no_body_on_any_spec ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::if_none_match_consumer_probe_headers_contain_real_etag ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::if_none_match_producer_admits_success_only ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::if_none_match_producer_extracts_etag ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::if_none_match_producer_returns_none_when_no_etag ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::is_applicable_always_true ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::normalization_weight_is_0_12 ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::probe_has_if_none_match_star ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::risk_is_safe ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::technique_strength_is_must ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::baseline_and_probe_headers_are_identical ... ok [INFO] [stdout] test existence::status_code_diff::if_none_match::tests::generate_returns_two_pair_items ... ok [INFO] [stdout] test existence::status_code_diff::low_privilege::tests::both_sides_carry_authorization_header ... ok [INFO] [stdout] test existence::status_code_diff::low_privilege::tests::generate_returns_two_items ... ok [INFO] [stdout] test existence::status_code_diff::low_privilege::tests::is_applicable_true_with_auth ... ok [INFO] [stdout] test existence::status_code_diff::low_privilege::tests::normalization_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::low_privilege::tests::risk_is_safe ... ok [INFO] [stdout] test existence::status_code_diff::low_privilege::tests::technique_strength_is_should ... ok [INFO] [stdout] test existence::status_code_diff::low_privilege::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::low_privilege::tests::is_applicable_false_without_auth ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::normalization_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_consumer_body_contains_all_required_fields ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_consumer_generates_one_spec_with_required_fields ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_consumer_needs_problem_details ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_consumer_returns_empty_on_wrong_output_variant ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_consumer_returns_empty_when_no_required_fields ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_producer_does_not_admit_not_found ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_producer_admits_client_error ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_producer_does_not_admit_success ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_producer_extracts_from_problem_json_body ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_producer_extracts_from_plain_json_body ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_producer_extracts_type_uri_without_errors ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_producer_returns_none_on_malformed_json ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_producer_returns_none_on_non_json_content_type ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_producer_returns_none_when_no_errors_and_no_type ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::problem_details_producer_returns_none_on_empty_body ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_burst::tests::all_items_are_burst_variants ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_burst::tests::baseline_url_uses_baseline_id ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_burst::tests::burst_count_is_100 ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_burst::tests::generate_returns_two_items ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_burst::tests::inverted_signal_weight_is_0_02 ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_burst::tests::normalization_weight_is_0_02 ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_burst::tests::risk_is_operation_destructive ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_burst::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_headers::tests::all_items_are_header_diff_variants ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_headers::tests::baseline_and_probe_use_ctx_headers_unmodified ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_headers::tests::generate_returns_two_items ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_headers::tests::inverted_signal_weight_is_0_02 ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_headers::tests::is_applicable_always_true ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_headers::tests::normalization_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_headers::tests::risk_is_safe ... ok [INFO] [stdout] test existence::status_code_diff::rate_limit_headers::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::producer_extracted_scheme_is_non_empty ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::consumer_all_specs_are_pairs ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::normalization_weight_is_0_12 ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::consumer_baseline_and_probe_carry_same_authorization ... ok [INFO] [stdout] test existence::status_code_diff::auth_challenge::tests::consumer_always_generates_one_spec ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_consumer_delete_spec_targets_resource_url ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_consumer_generates_three_specs ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_consumer_get_spec_targets_resource_url ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_consumer_patch_has_body ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_consumer_returns_empty_when_wrong_output_variant ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_consumer_technique_is_status_code_diff ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_producer_admits_success ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_producer_does_not_admit_redirect ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_producer_does_not_admit_structured_error ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_producer_extracts_id_from_location_header ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_producer_extracts_uuid_id ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_producer_returns_none_for_empty_last_segment ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_producer_returns_none_for_root_location ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_producer_returns_none_when_no_location ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_producer_strips_query_string ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::resource_id_consumer_needs_resource_id ... ok [INFO] [stdout] test existence::status_code_diff::scope_manipulation::tests::generate_returns_two_items ... ok [INFO] [stdout] test existence::status_code_diff::scope_manipulation::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::scope_manipulation::tests::is_applicable_false_when_alt_credential_none ... ok [INFO] [stdout] test existence::status_code_diff::scope_manipulation::tests::is_applicable_true_when_alt_credential_some ... ok [INFO] [stdout] test existence::status_code_diff::scope_manipulation::tests::normalization_weight_is_0_25 ... ok [INFO] [stdout] test existence::status_code_diff::scope_manipulation::tests::probe_uses_alt_credential_headers ... ok [INFO] [stdout] test existence::status_code_diff::scope_manipulation::tests::risk_is_safe ... ok [INFO] [stdout] test existence::status_code_diff::scope_manipulation::tests::technique_strength_is_should ... ok [INFO] [stdout] test existence::status_code_diff::state_transition::tests::generate_returns_two_items_when_applicable ... ok [INFO] [stdout] test existence::status_code_diff::state_transition::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::state_transition::tests::is_applicable_false_when_state_field_none ... ok [INFO] [stdout] test existence::status_code_diff::state_transition::tests::is_applicable_true_when_state_field_some ... ok [INFO] [stdout] test existence::status_code_diff::state_transition::tests::normalization_weight_is_0_02 ... ok [INFO] [stdout] test existence::status_code_diff::state_transition::tests::probe_body_contains_state_field_as_valid_json ... ok [INFO] [stdout] test existence::status_code_diff::state_transition::tests::risk_is_method_destructive ... ok [INFO] [stdout] test existence::status_code_diff::state_transition::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::status_code_diff::tests::scd_chain_registry_has_six_edges ... ok [INFO] [stdout] test existence::status_code_diff::trailing_slash::tests::baseline_and_probe_headers_are_identical ... ok [INFO] [stdout] test existence::status_code_diff::trailing_slash::tests::baseline_url_gains_slash_when_absent ... ok [INFO] [stdout] test existence::status_code_diff::trailing_slash::tests::baseline_url_loses_slash_when_present ... ok [INFO] [stdout] test existence::status_code_diff::trailing_slash::tests::baseline_url_uses_baseline_id_probe_url_uses_probe_id ... ok [INFO] [stdout] test existence::status_code_diff::trailing_slash::tests::generate_returns_two_items ... ok [INFO] [stdout] test existence::status_code_diff::trailing_slash::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::trailing_slash::tests::normalization_weight_is_0_08 ... ok [INFO] [stdout] test existence::status_code_diff::trailing_slash::tests::probe_url_gains_slash_when_absent ... ok [INFO] [stdout] test existence::status_code_diff::trailing_slash::tests::probe_url_loses_slash_when_present ... ok [INFO] [stdout] test existence::status_code_diff::trailing_slash::tests::risk_is_safe ... ok [INFO] [stdout] test existence::status_code_diff::trailing_slash::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::status_code_diff::trailing_slash::tests::trailing_slash_toggle_preserves_query_string ... ok [INFO] [stdout] test existence::status_code_diff::uniqueness::tests::generate_returns_two_items_when_applicable ... ok [INFO] [stdout] test existence::status_code_diff::uniqueness::tests::inverted_signal_weight_is_none ... ok [INFO] [stdout] test existence::status_code_diff::uniqueness::tests::is_applicable_false_when_known_duplicate_none ... ok [INFO] [stdout] test existence::status_code_diff::uniqueness::tests::is_applicable_true_when_known_duplicate_some ... ok [INFO] [stdout] test existence::status_code_diff::uniqueness::tests::normalization_weight_is_0_05 ... ok [INFO] [stdout] test existence::status_code_diff::uniqueness::tests::probe_body_contains_duplicate_field ... ok [INFO] [stdout] test existence::status_code_diff::uniqueness::tests::risk_is_operation_destructive ... ok [INFO] [stdout] test existence::status_code_diff::uniqueness::tests::technique_strength_is_may ... ok [INFO] [stdout] test existence::tests::default_chain_registry_has_twenty_one_edges ... ok [INFO] [stdout] test harvest::tests::empty_has_all_fields_empty ... ok [INFO] [stdout] test harvest::tests::from_baseline_200_with_both_etag_and_last_modified ... ok [INFO] [stdout] test harvest::tests::from_baseline_200_with_etag ... ok [INFO] [stdout] test harvest::tests::from_baseline_200_with_last_modified ... ok [INFO] [stdout] test harvest::tests::from_baseline_200_with_no_relevant_headers ... ok [INFO] [stdout] test harvest::tests::from_baseline_200_with_strong_etag_classified_correctly ... ok [INFO] [stdout] test harvest::tests::from_baseline_200_with_weak_etag_classified_correctly ... ok [INFO] [stdout] test harvest::tests::from_baseline_206_extracts_range_signals ... ok [INFO] [stdout] test harvest::tests::from_baseline_301_with_location ... ok [INFO] [stdout] test harvest::tests::from_baseline_302_without_location ... ok [INFO] [stdout] test harvest::tests::from_baseline_3xx_location_and_redirect_target_are_in_sync ... ok [INFO] [stdout] test harvest::tests::from_baseline_416_extracts_size_from_wildcard_content_range ... ok [INFO] [stdout] test registry::tests::all_specs_have_populated_technique_id ... ok [INFO] [stdout] test registry::tests::all_specs_have_known_vector ... ok [INFO] [stdout] test registry::tests::all_strategies_returns_exactly_39 ... ok [INFO] [stdout] test registry::tests::applicable_strategies_both_filters_applied_simultaneously ... ok [INFO] [stdout] test registry::tests::applicable_strategies_excludes_above_max_risk ... ok [INFO] [stdout] test registry::tests::applicable_strategies_excludes_inapplicable ... ok [INFO] [stdout] test registry::tests::all_strategy_ids_are_unique ... ok [INFO] [stdout] test registry::tests::method_destructive_ceiling_excludes_op_destructive ... ok [INFO] [stdout] test registry::tests::full_plan_returns_at_least_37_specs ... ok [INFO] [stdout] test registry::tests::no_alt_credential_excludes_scope_manipulation ... ok [INFO] [stdout] test registry::tests::no_auth_excludes_auth_strip_and_low_privilege ... ok [INFO] [stdout] test registry::tests::no_known_duplicate_excludes_uniqueness ... ok [INFO] [stdout] test registry::tests::no_state_field_excludes_state_transition ... ok [INFO] [stdout] test registry::tests::report::spec_count_by_strategy ... ok [INFO] [stdout] test registry::tests::risk_distribution_is_26_10_3 ... ok [INFO] [stdout] test registry::tests::safe_filter_excludes_method_and_op_destructive ... ok [INFO] [stdout] test strategy::tests::strategy_id_accessible_via_dyn ... ok [INFO] [stdout] test strategy::tests::strategy_is_object_safe ... ok [INFO] [stdout] test strategy::tests::strategy_name_accessible_via_dyn ... ok [INFO] [stdout] test strategy::tests::strategy_risk_accessible_via_dyn ... ok [INFO] [stdout] test strategy::tests::test_strategy_generate_returns_pair ... ok [INFO] [stdout] test strategy::tests::test_strategy_is_applicable_returns_true ... ok [INFO] [stdout] test types::tests::burst_spec_fields_accessible ... ok [INFO] [stdout] test types::tests::probe_pair_fields_accessible ... ok [INFO] [stdout] test types::tests::probe_spec_burst_variant_accessible ... ok [INFO] [stdout] test types::tests::probe_spec_header_diff_variant_accessible ... ok [INFO] [stdout] test types::tests::probe_spec_pair_variant_accessible ... ok [INFO] [stdout] test types::tests::probe_spec_technique_accessor_returns_correct_technique ... ok [INFO] [stdout] test types::tests::risk_level_method_destructive_less_than_operation_destructive ... ok [INFO] [stdout] test types::tests::risk_level_method_destructive_roundtrip ... ok [INFO] [stdout] test types::tests::risk_level_safe_less_than_method_destructive ... ok [INFO] [stdout] test types::tests::risk_level_safe_less_than_operation_destructive ... ok [INFO] [stdout] test types::tests::strategy_metadata_fields_accessible ... ok [INFO] [stdout] test util::tests::build_pair_body_none_when_none ... ok [INFO] [stdout] test util::tests::build_pair_body_present_when_some ... ok [INFO] [stdout] test util::tests::build_pair_body_template_substituted_when_no_explicit_body ... ok [INFO] [stdout] test util::tests::build_pair_explicit_body_overrides_template ... ok [INFO] [stdout] test util::tests::build_pair_headers_assigned_to_correct_side ... ok [INFO] [stdout] test util::tests::build_pair_method_set_on_both_definitions ... ok [INFO] [stdout] test util::tests::build_pair_probe_url_uses_probe_id ... ok [INFO] [stdout] test util::tests::clone_headers_with_new_header_present ... ok [INFO] [stdout] test util::tests::clone_headers_with_overwrites_existing_key ... ok [INFO] [stdout] test util::tests::build_pair_baseline_url_uses_baseline_id ... ok [INFO] [stdout] test util::tests::clone_headers_with_preserves_existing_headers ... ok [INFO] [stdout] test util::tests::derive_probe_location_does_not_corrupt_port_containing_id ... ok [INFO] [stdout] test util::tests::derive_probe_location_does_not_substitute_id_in_version_segment ... ok [INFO] [stdout] test util::tests::derive_probe_location_replaces_id_at_template_anchor ... ok [INFO] [stdout] test util::tests::derive_probe_location_returns_none_when_id_not_at_anchor ... ok [INFO] [stdout] test util::tests::derive_probe_location_returns_none_when_no_id_placeholder_in_target ... ok [INFO] [stdout] test util::tests::garble_path_segment_multi_segment_url ... ok [INFO] [stdout] test util::tests::garble_path_segment_preserves_query_string ... ok [INFO] [stdout] test util::tests::garble_path_segment_scheme_less_url ... ok [INFO] [stdout] test util::tests::garble_path_segment_single_segment ... ok [INFO] [stdout] test util::tests::garble_path_segment_url_with_port ... ok [INFO] [stdout] test util::tests::json_body_empty_slice_produces_empty_object ... ok [INFO] [stdout] test util::tests::json_body_multiple_fields ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::consumer_any_resource_id_yields_three_specs ... ok [INFO] [stdout] test util::tests::json_body_roundtrips_through_serde ... ok [INFO] [stdout] test util::tests::json_body_single_field ... ok [INFO] [stdout] test util::tests::substitute_body_no_placeholder_returns_template_unchanged ... ok [INFO] [stdout] test util::tests::substitute_body_replaces_placeholder ... ok [INFO] [stdout] test util::tests::derive_probe_location_returns_none_when_prefix_diverges ... ok [INFO] [stdout] test util::tests::substitute_body_none_template_returns_none ... ok [INFO] [stdout] test util::tests::substitute_url_no_placeholder_returns_unchanged ... ok [INFO] [stdout] test util::tests::substitute_url_replaces_placeholder ... ok [INFO] [stdout] test util::tests::try_clone_headers_with_crlf_returns_none ... ok [INFO] [stdout] test util::tests::try_clone_headers_with_nul_returns_none ... ok [INFO] [stdout] test util::tests::try_clone_headers_with_valid_value_returns_some ... ok [INFO] [stdout] test util::tests::substitute_url_replaces_only_first_occurrence ... ok [INFO] [stdout] test util::tests::try_clone_headers_with_preserves_existing_headers ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::consumer_nonempty_fields_yields_exactly_one_spec ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::consumer_always_generates_two_specs ... ok [INFO] [stdout] test existence::status_code_diff::problem_details::tests::producer_any_nonempty_errors_array_yields_problem_details ... ok [INFO] [stdout] test existence::status_code_diff::content_type::chain_tests::producer_stripped_mime_has_no_semicolon_or_trailing_whitespace ... ok [INFO] [stdout] test existence::status_code_diff::resource_id::tests::producer_any_non_empty_last_segment_yields_resource_id ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 558 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.68s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/parlov_output-836f5ebe94a94edf) [INFO] [stdout] [INFO] [stdout] running 90 tests [INFO] [stdout] test context_output_tests::json_finding_includes_probe_and_exchange_default ... ok [INFO] [stdout] test context_output_tests::json_phase2_finding_includes_chain_provenance ... ok [INFO] [stdout] test context_output_tests::json_verbose_finding_includes_filtered_headers ... ok [INFO] [stdout] test context_output_tests::json_schema_version_is_1_2_0 ... ok [INFO] [stdout] test context_output_tests::json_phase1_finding_omits_chain_provenance ... ok [INFO] [stdout] test context_output_tests::json_verbose_finding_includes_body_samples ... ok [INFO] [stdout] test context_output_tests::sarif_finding_has_probe_and_exchange_properties ... ok [INFO] [stdout] test json::tests::endpoint_verdict_json_findings_array_present ... ok [INFO] [stdout] test context_output_tests::sarif_phase2_finding_has_chain_provenance_property ... ok [INFO] [stdout] test json::tests::endpoint_verdict_json_has_endpoint_verdict_at_root ... ok [INFO] [stdout] test json::tests::endpoint_verdict_json_has_schema_version ... ok [INFO] [stdout] test json::tests::endpoint_verdict_json_stop_reason_present_when_set ... ok [INFO] [stdout] test context_output_tests::table_verbose_adds_headers_section ... ok [INFO] [stdout] test context_output_tests::table_renders_probe_row_under_non_not_present_finding ... ok [INFO] [stdout] test json::tests::endpoint_verdict_json_verdict_is_confirmed_string ... ok [INFO] [stdout] test json::tests::endpoint_verdict_json_posterior_probability_present ... ok [INFO] [stdout] test context_output_tests::table_renders_chain_row_when_provenance_present ... ok [INFO] [stdout] test json::tests::endpoint_verdict_json_stop_reason_absent_when_none ... ok [INFO] [stdout] test json::tests::scan_json_empty_findings_produces_empty_array ... ok [INFO] [stdout] test json::tests::single_json_has_schema_version_and_target ... ok [INFO] [stdout] test json::tests::scan_json_uses_findings_array ... ok [INFO] [stdout] test json_endpoint::tests::outcome_kind_to_string_matches_display ... ok [INFO] [stdout] test json::tests::single_json_omits_none_matched_pattern_fields ... ok [INFO] [stdout] test repro::tests::build_curl_escapes_single_quote_in_body ... ok [INFO] [stdout] test repro::tests::build_curl_escapes_single_quote_in_header_value ... ok [INFO] [stdout] test repro::tests::build_curl_escapes_url_with_query_string_special_chars ... ok [INFO] [stdout] test repro::tests::build_curl_get_no_body_no_headers ... ok [INFO] [stdout] test repro::tests::build_curl_post_with_json_body ... ok [INFO] [stdout] test json::tests::single_json_has_finding_id_12_hex ... ok [INFO] [stdout] test repro::tests::build_curl_uses_uppercase_method ... ok [INFO] [stdout] test repro::tests::build_curl_with_authorization_header_not_redacted ... ok [INFO] [stdout] test repro::tests::build_curl_with_empty_body_some ... ok [INFO] [stdout] test repro::tests::build_curl_with_multiple_headers_each_on_own_line ... ok [INFO] [stdout] test repro::tests::build_curl_with_simple_header ... ok [INFO] [stdout] test repro_output_tests::repro_renders_in_endpoint_sarif_properties_when_flag_set ... ok [INFO] [stdout] test context_output_tests::table_does_not_render_probe_row_under_not_present_finding ... ok [INFO] [stdout] test repro_output_tests::repro_renders_in_json_when_flag_set ... ok [INFO] [stdout] test repro_output_tests::repro_renders_in_sarif_properties_when_flag_set ... ok [INFO] [stdout] test repro_output_tests::repro_renders_in_table_when_flag_set_and_verdict_present ... ok [INFO] [stdout] test repro_output_tests::repro_absent_in_json_when_flag_unset ... ok [INFO] [stdout] test repro_output_tests::repro_absent_in_sarif_when_flag_unset ... ok [INFO] [stdout] test sarif::tests::sarif_has_fingerprints ... ok [INFO] [stdout] test repro_output_tests::repro_absent_in_table_when_flag_unset ... ok [INFO] [stdout] test repro_output_tests::repro_suppressed_in_table_when_verdict_not_present ... ok [INFO] [stdout] test sarif::tests::endpoint_sarif_has_endpoint_verdict_in_run_properties ... ok [INFO] [stdout] test sarif::tests::sarif_not_present_produces_empty_results ... ok [INFO] [stdout] test sarif::tests::sarif_confirmed_produces_error_level ... ok [INFO] [stdout] test sarif::tests::sarif_rule_id_is_technique_id ... ok [INFO] [stdout] test sarif::tests::sarif_message_uses_leaks_when_present ... ok [INFO] [stdout] test sarif::tests::sarif_has_related_locations_for_signals ... ok [INFO] [stdout] test sarif::tests::scan_sarif_valid_json_with_version ... ok [INFO] [stdout] test sarif::tests::sarif_message_falls_back_to_primary_evidence ... ok [INFO] [stdout] test sarif::tests::scan_sarif_has_run_properties ... ok [INFO] [stdout] test sarif::tests::endpoint_sarif_has_posterior_probability_in_run_properties ... ok [INFO] [stdout] test sarif::tests::endpoint_sarif_has_strategies_run_and_total_in_run_properties ... ok [INFO] [stdout] test table::tests::blocked_endpoint_table_contains_action_row ... ok [INFO] [stdout] test sarif_builder::tests::blocked_verdict_run_properties_contain_observability_status ... ok [INFO] [stdout] test sarif_builder::tests::blocked_verdict_run_properties_contain_operator_action ... ok [INFO] [stdout] test sarif_builder::tests::deduplicate_rules_empty_input_returns_empty ... ok [INFO] [stdout] test sarif_builder::tests::deduplicate_rules_removes_duplicates ... ok [INFO] [stdout] test sarif_builder::tests::deduplicate_rules_stable_with_no_duplicates ... ok [INFO] [stdout] test table::tests::blocked_endpoint_table_contains_blocked_before_oracle_layer ... ok [INFO] [stdout] test sarif::tests::scan_sarif_filters_not_present ... ok [INFO] [stdout] test table::tests::endpoint_table_contains_verdict_string ... ok [INFO] [stdout] test table::tests::blocked_endpoint_table_contains_blocked_fraction ... ok [INFO] [stdout] test table::tests::endpoint_table_no_stop_reason_shows_dash ... ok [INFO] [stdout] test table::tests::endpoint_table_first_column_header_is_oracle_slash_strategy ... ok [INFO] [stdout] test table::tests::blocked_endpoint_table_contains_observability_label ... ok [INFO] [stdout] test table::tests::table_includes_label_when_present ... ok [INFO] [stdout] test table::tests::scan_table_contains_strategy_name_and_method ... ok [INFO] [stdout] test table::tests::endpoint_table_contains_posterior_percentage ... ok [INFO] [stdout] test table::tests::table_includes_leaks_when_present ... ok [INFO] [stdout] test table::tests::scan_table_confirmed_verdict_appears ... ok [INFO] [stdout] test table::tests::table_includes_rfc_basis_when_present ... ok [INFO] [stdout] test table::tests::table_omits_label_row_when_none ... ok [INFO] [stdout] test table::tests::table_omits_leaks_row_when_none ... ok [INFO] [stdout] test wire::tests::filter_security_headers_excludes_host ... ok [INFO] [stdout] test table::tests::table_omits_rfc_basis_row_when_none ... ok [INFO] [stdout] test wire::tests::filter_security_headers_includes_authorization ... ok [INFO] [stdout] test wire::tests::filter_security_headers_includes_if_match ... ok [INFO] [stdout] test table::tests::table_shows_primary_evidence_from_signals ... ok [INFO] [stdout] test wire::tests::filter_security_headers_includes_x_custom_header ... ok [INFO] [stdout] test wire::tests::filter_security_headers_excludes_user_agent ... ok [INFO] [stdout] test wire::tests::truncate_body_sample_under_cap_full_content ... ok [INFO] [stdout] test wire::tests::truncate_body_sample_utf8_boundary_safe ... ok [INFO] [stdout] test table::tests::endpoint_table_contains_stop_reason_when_set ... ok [INFO] [stdout] test table::tests::scan_table_empty_findings_no_panic ... ok [INFO] [stdout] test wire::tests::filter_security_headers_normalizes_case ... ok [INFO] [stdout] test wire::tests::truncate_body_sample_non_utf8_byte_count_fallback ... ok [INFO] [stdout] test wire::tests::truncate_body_sample_over_cap_truncated_with_marker ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 90 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Running tests/emg_snapshots.rs (/opt/rustwide/target/debug/deps/emg_snapshots-4a6cb86b2770932e) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test emg_body_diff_only_sarif ... ok [INFO] [stdout] test emg_scan_json ... ok [INFO] [stdout] test emg_body_diff_only_table ... ok [INFO] [stdout] test emg_status_plus_body_table ... ok [INFO] [stdout] test emg_status_plus_body_json ... ok [INFO] [stdout] test emg_body_diff_only_json ... ok [INFO] [stdout] test emg_scan_sarif ... ok [INFO] [stdout] test emg_status_plus_body_sarif ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/parlov_probe-b37b72a35767b726) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test http::native::tests::build_method_roundtrips_all_standard_methods ... ok [INFO] [stdout] test http::native::tests::convert_headers_preserves_multi_valued_headers ... ok [INFO] [stdout] test http::native::tests::http_probe_is_clone ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s [INFO] [stdout] [INFO] [stderr] Doc-tests parlov [INFO] [stderr] Doc-tests parlov_analysis [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] [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] Doc-tests parlov_core [INFO] [stdout] [INFO] [stderr] Doc-tests parlov_elicit [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] [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] Doc-tests parlov_output [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] Doc-tests parlov_probe [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" "06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87", kill_on_drop: false }` [INFO] [stdout] 06ab4066d0e97c3fe94f08783855f9b4ca0124c3dcbc1f667a69319d82c9cc87