[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
