[INFO] fetching crate shipper-registry 0.3.0-rc.2...
[INFO] testing shipper-registry-0.3.0-rc.2 against beta-2026-04-21 for beta-1.96-2
[INFO] extracting crate shipper-registry 0.3.0-rc.2 into /workspace/builds/worker-6-tc2/source
[INFO] started tweaking crates.io crate shipper-registry 0.3.0-rc.2
[INFO] finished tweaking crates.io crate shipper-registry 0.3.0-rc.2
[INFO] tweaked toml for crates.io crate shipper-registry 0.3.0-rc.2 written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate shipper-registry 0.3.0-rc.2 on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate shipper-registry 0.3.0-rc.2 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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 0df3dde54a9530debe21c7fc74bedcb5f9f67552cd7dbee4ddb7be439283a47b
[INFO] running `Command { std: "docker" "start" "-a" "0df3dde54a9530debe21c7fc74bedcb5f9f67552cd7dbee4ddb7be439283a47b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0df3dde54a9530debe21c7fc74bedcb5f9f67552cd7dbee4ddb7be439283a47b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0df3dde54a9530debe21c7fc74bedcb5f9f67552cd7dbee4ddb7be439283a47b", kill_on_drop: false }`
[INFO] [stdout] 0df3dde54a9530debe21c7fc74bedcb5f9f67552cd7dbee4ddb7be439283a47b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] afbede10d43550989a6867cf1f6600fd6a5a5f9523e5baa70c660167dfded3d4
[INFO] running `Command { std: "docker" "start" "-a" "afbede10d43550989a6867cf1f6600fd6a5a5f9523e5baa70c660167dfded3d4", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling rustls v0.23.38
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling base64ct v1.8.3
[INFO] [stderr]    Compiling iri-string v0.7.12
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling humantime-serde v1.1.1
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling shipper-duration v0.3.0-rc.2
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling shipper-sparse-index v0.3.0-rc.2
[INFO] [stderr]    Compiling rand v0.10.1
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling password-hash v0.5.0
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling tokio v1.51.1
[INFO] [stderr]    Compiling shipper-retry v0.3.0-rc.2
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling universal-hash v0.5.1
[INFO] [stderr]    Compiling aead v0.5.2
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling polyval v0.6.2
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling ghash v0.5.1
[INFO] [stderr]    Compiling pbkdf2 v0.12.2
[INFO] [stderr]    Compiling ctr v0.9.2
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling aes-gcm v0.10.3
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling shipper-encrypt v0.3.0-rc.2
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling aws-lc-sys v0.39.1
[INFO] [stderr]    Compiling serde_with_macros v3.18.0
[INFO] [stderr]    Compiling serde_with v3.18.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling aws-lc-rs v1.16.2
[INFO] [stderr]    Compiling rustls-webpki v0.103.12
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.6.2
[INFO] [stderr]    Compiling hyper-rustls v0.27.8
[INFO] [stderr]    Compiling reqwest v0.13.2
[INFO] [stderr]    Compiling shipper-webhook v0.3.0-rc.2
[INFO] [stderr]    Compiling shipper-types v0.3.0-rc.2
[INFO] [stderr]    Compiling shipper-registry v0.3.0-rc.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 51.27s
[INFO] running `Command { std: "docker" "inspect" "afbede10d43550989a6867cf1f6600fd6a5a5f9523e5baa70c660167dfded3d4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "afbede10d43550989a6867cf1f6600fd6a5a5f9523e5baa70c660167dfded3d4", kill_on_drop: false }`
[INFO] [stdout] afbede10d43550989a6867cf1f6600fd6a5a5f9523e5baa70c660167dfded3d4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b547c4df92da3825930e643208083b2a1811fd12a8cb4894e02795964e853338
[INFO] running `Command { std: "docker" "start" "-a" "b547c4df92da3825930e643208083b2a1811fd12a8cb4894e02795964e853338", kill_on_drop: false }`
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling chunked_transfer v1.5.0
[INFO] [stderr]    Compiling ascii v1.1.0
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling tiny_http v0.12.0
[INFO] [stderr]    Compiling rand v0.9.3
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling reqwest v0.13.2
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling insta v1.47.2
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling shipper-webhook v0.3.0-rc.2
[INFO] [stderr]    Compiling shipper-types v0.3.0-rc.2
[INFO] [stderr]    Compiling shipper-registry v0.3.0-rc.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 16.04s
[INFO] running `Command { std: "docker" "inspect" "b547c4df92da3825930e643208083b2a1811fd12a8cb4894e02795964e853338", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b547c4df92da3825930e643208083b2a1811fd12a8cb4894e02795964e853338", kill_on_drop: false }`
[INFO] [stdout] b547c4df92da3825930e643208083b2a1811fd12a8cb4894e02795964e853338
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] e99390dc073f2027a10e6122489641b3282bcacbc611746e6b42fc7108b3fb7c
[INFO] running `Command { std: "docker" "start" "-a" "e99390dc073f2027a10e6122489641b3282bcacbc611746e6b42fc7108b3fb7c", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.23s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/shipper_registry-1b8894b8e263dee1)
[INFO] [stdout] 
[INFO] [stdout] running 258 tests
[INFO] [stdout] test context::tests::backoff_delays_capped_at_max ... ok
[INFO] [stdout] test context::tests::backoff_delays_increase_exponentially ... ok
[INFO] [stdout] test context::tests::api_mode_visible_on_first_check ... ok
[INFO] [stdout] test context::tests::backoff_initial_delay_is_honored ... ok
[INFO] [stdout] test context::tests::calculate_backoff_delay_attempt_overflow_is_safe ... ok
[INFO] [stdout] test context::tests::calculate_backoff_delay_full_jitter_stays_in_range ... ok
[INFO] [stdout] test context::tests::calculate_backoff_delay_is_bounded_with_jitter ... ok
[INFO] [stdout] test context::tests::calculate_backoff_delay_zero_base ... ok
[INFO] [stdout] test context::tests::calculate_backoff_delay_zero_max ... ok
[INFO] [stdout] test context::tests::calculate_index_path_for_hyphenated_crate ... ok
[INFO] [stdout] test context::tests::calculate_index_path_for_long_crate_name ... ok
[INFO] [stdout] test context::tests::calculate_index_path_for_short_crate ... ok
[INFO] [stdout] test context::tests::calculate_index_path_for_special_chars ... ok
[INFO] [stdout] test context::tests::calculate_index_path_for_standard_crate ... ok
[INFO] [stdout] test context::tests::calculate_index_path_lowercases_mixed_case ... ok
[INFO] [stdout] test context::tests::check_index_visibility_finds_prerelease_version ... ok
[INFO] [stdout] test context::tests::check_index_visibility_handles_malformed_json_gracefully ... ok
[INFO] [stdout] test context::tests::check_index_visibility_returns_false_for_404 ... ok
[INFO] [stdout] test context::tests::check_index_visibility_returns_false_for_429 ... ok
[INFO] [stdout] test context::tests::check_index_visibility_returns_false_for_503 ... ok
[INFO] [stdout] test context::tests::check_index_visibility_returns_false_for_invalid_json ... ok
[INFO] [stdout] test context::tests::check_index_visibility_returns_false_for_missing_version ... ok
[INFO] [stdout] test context::tests::check_index_visibility_returns_false_for_network_error ... ok
[INFO] [stdout] test context::tests::check_index_visibility_returns_true_for_existing_version ... ok
[INFO] [stdout] test context::tests::check_index_visibility_with_empty_index_returns_false ... ok
[INFO] [stdout] test context::tests::check_index_visibility_with_large_index ... ok
[INFO] [stdout] test context::tests::check_index_visibility_with_multiple_versions_finds_correct ... ok
[INFO] [stdout] test context::tests::check_new_crate_propagates_server_errors ... ok
[INFO] [stdout] test context::tests::check_new_crate_returns_false_for_existing_crate ... ok
[INFO] [stdout] test context::tests::check_new_crate_returns_true_for_nonexistent_crate ... ok
[INFO] [stdout] test context::tests::concurrent_crate_exists_checks ... ok
[INFO] [stdout] test context::tests::concurrent_version_exists_checks ... ok
[INFO] [stdout] test context::tests::crate_exists_429_with_retry_after_header_still_errors ... ok
[INFO] [stdout] test context::tests::crate_exists_error_message_includes_status_code_text ... ok
[INFO] [stdout] test context::tests::crate_exists_errors_for_401_unauthorized ... ok
[INFO] [stdout] test context::tests::crate_exists_errors_for_429_rate_limit ... ok
[INFO] [stdout] test context::tests::crate_exists_errors_for_502_bad_gateway ... ok
[INFO] [stdout] test context::tests::crate_exists_errors_for_503_service_unavailable ... ok
[INFO] [stdout] test context::tests::crate_exists_errors_for_unexpected_status ... ok
[INFO] [stdout] test context::tests::crate_exists_errors_on_connection_refused ... ok
[INFO] [stdout] test context::tests::crate_exists_false_for_404 ... ok
[INFO] [stdout] test context::tests::crate_exists_normalizes_trailing_slash ... ok
[INFO] [stdout] test context::tests::crate_exists_preserves_hyphenated_name_in_url ... ok
[INFO] [stdout] test context::tests::crate_exists_true_for_200 ... ok
[INFO] [stdout] test context::tests::crate_exists_with_long_name_sends_correct_url ... ok
[INFO] [stdout] test context::tests::disabled_readiness_with_not_found_returns_false ... ok
[INFO] [stdout] test context::tests::empty_owners_response_verify_ownership_still_returns_true ... ok
[INFO] [stdout] test context::tests::both_mode_api_succeeds_index_fails ... ok
[INFO] [stdout] test context::tests::api_mode_intermittent_failures_then_success ... ok
[INFO] [stdout] test context::tests::backoff_429_then_500_then_success ... ok
[INFO] [stdout] test context::tests::backoff_version_appears_after_initial_not_found ... ok
[INFO] [stdout] test context::tests::backoff_with_prerelease_version_succeeds ... ok
[INFO] [stdout] test context::tests::backoff_handles_alternating_404_and_500_then_success ... ok
[INFO] [stdout] test context::tests::backoff_index_mode_with_server_errors_gracefully_degrades ... ok
[INFO] [stdout] test context::tests::both_mode_prefer_index_false_checks_api_first ... ok
[INFO] [stdout] test context::tests::api_mode_500_treated_as_not_visible_in_backoff ... ok
[INFO] [stdout] test context::tests::both_mode_index_succeeds_api_fails ... ok
[INFO] [stdout] test context::tests::both_mode_both_fail_times_out ... ok
[INFO] [stdout] test context::tests::both_mode_prefer_index_true_checks_index_first ... ok
[INFO] [stdout] test context::tests::index_200_writes_cache_and_etag ... ok
[INFO] [stdout] test context::tests::api_mode_never_visible_times_out ... ok
[INFO] [stdout] test context::tests::backoff_poll_interval_increases_between_attempts ... ok
[INFO] [stdout] test context::tests::index_with_304_not_modified_without_cache_returns_error_gracefully ... ok
[INFO] [stdout] test context::tests::index_path_normalizes_hyphens_and_underscores_independently ... ok
[INFO] [stdout] test context::tests::backoff_total_elapsed_time_respects_max_total_wait ... ok
[INFO] [stdout] test context::tests::index_200_without_etag_header_still_caches_content ... ok
[INFO] [stdout] test context::tests::fetch_index_file_errors_for_unexpected_status_code ... ok
[INFO] [stdout] test context::tests::is_version_visible_with_backoff_uses_index_method ... ok
[INFO] [stdout] test context::tests::is_version_visible_with_backoff_disabled_returns_immediate ... ok
[INFO] [stdout] test context::tests::is_version_visible_with_backoff_respects_initial_delay ... ok
[INFO] [stdout] test context::tests::index_sends_etag_as_if_none_match ... ok
[INFO] [stdout] test context::tests::is_version_visible_with_backoff_with_api_method ... ok
[INFO] [stdout] test context::tests::index_with_304_not_modified_uses_cache ... ok
[INFO] [stdout] test context::tests::is_version_visible_with_backoff_uses_both_method_prefer_index ... ok
[INFO] [stdout] test context::tests::is_version_visible_with_backoff_handles_network_errors_gracefully ... ok
[INFO] [stdout] test context::tests::is_version_visible_with_backoff_with_both_method_prefer_api ... ok
[INFO] [stdout] test context::tests::list_owners_errors_for_401_unauthorized ... ok
[INFO] [stdout] test context::tests::index_mode_sparse_index_shows_version ... ok
[INFO] [stdout] test context::tests::list_owners_errors_on_200_with_binary_garbage ... ok
[INFO] [stdout] test context::tests::list_owners_errors_for_502_bad_gateway ... ok
[INFO] [stdout] test context::tests::list_owners_errors_on_200_with_valid_json_wrong_types ... ok
[INFO] [stdout] test context::tests::list_owners_429_with_retry_after_header_still_errors ... ok
[INFO] [stdout] test context::tests::list_owners_errors_for_429_rate_limit ... ok
[INFO] [stdout] test context::tests::list_owners_errors_on_empty_response_body ... ok
[INFO] [stdout] test context::tests::list_owners_errors_on_200_with_nested_invalid_user_object ... ok
[INFO] [stdout] test context::tests::list_owners_errors_on_connection_refused ... ok
[INFO] [stdout] test context::tests::list_owners_errors_on_non_json_response ... ok
[INFO] [stdout] test context::tests::list_owners_errors_on_html_error_page ... ok
[INFO] [stdout] test context::tests::list_owners_parses_empty_users_array ... ok
[INFO] [stdout] test context::tests::list_owners_errors_for_503_service_unavailable ... ok
[INFO] [stdout] test context::tests::list_owners_parses_response_with_multiple_owners ... ok
[INFO] [stdout] test context::tests::list_owners_errors_on_truncated_json ... ok
[INFO] [stdout] test context::tests::list_owners_errors_on_wrong_schema_json ... ok
[INFO] [stdout] test context::tests::list_owners_parses_response_with_special_chars_in_name ... ok
[INFO] [stdout] test context::tests::list_owners_with_team_and_individual_owners ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_empty_content ... ok
[INFO] [stdout] test context::tests::list_owners_errors_for_404_403_and_other_statuses ... ok
[INFO] [stdout] test context::tests::list_owners_errors_on_null_json_body ... ok
[INFO] [stdout] test context::tests::list_owners_parses_success_response ... ok
[INFO] [stdout] test context::tests::list_owners_errors_on_json_array_instead_of_object ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_finds_version ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_leading_v_not_matched ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_extra_fields_ignored ... ok
[INFO] [stdout] test context::tests::list_owners_ignores_unknown_extra_fields_in_json ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_mixed_valid_and_garbage_lines ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_json_array_instead_of_jsonl ... ok
[INFO] [stdout] test context::tests::list_owners_parses_large_response ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_exact_match_only ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_many_prerelease_identifiers ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_only_whitespace_lines ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_handles_invalid_json ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_returns_false_for_missing_version ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_build_metadata_versions ... ok
[INFO] [stdout] test context::tests::property_tests_version_strings::version_found_when_present_in_index ... ok
[INFO] [stdout] test context::tests::property_tests_version_strings::version_not_found_when_absent_from_index ... ok
[INFO] [stdout] test context::tests::property_tests_version_strings::version_string_in_multi_line_index ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_prerelease_versions ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_yanked_field_does_not_affect_match ... ok
[INFO] [stdout] test context::tests::property_tests_version_strings::prerelease_version_found_in_index ... ok
[INFO] [stdout] test context::tests::property_tests_registry::random_crate_names_produce_valid_api_url ... ok
[INFO] [stdout] test context::tests::property_tests_registry::random_crate_names_produce_valid_index_path ... ok
[INFO] [stdout] test context::tests::registry_get_index_base_derives_from_api_base ... ok
[INFO] [stdout] test context::tests::registry_get_index_base_derives_from_http_api_base ... ok
[INFO] [stdout] test context::tests::registry_get_index_base_leaves_non_sparse_prefix ... ok
[INFO] [stdout] test context::tests::registry_get_index_base_returns_explicit_index_base ... ok
[INFO] [stdout] test context::tests::registry_get_index_base_strips_sparse_prefix ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_null_vers_field_skipped ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_numeric_vers_field_skipped ... ok
[INFO] [stdout] test context::tests::parse_version_from_index_with_large_content ... ok
[INFO] [stdout] test context::tests::snapshot_empty_owner_list_detail ... ok
[INFO] [stdout] test context::tests::snapshot_owners_empty_users ... ok
[INFO] [stdout] test context::tests::registry_accessor_returns_correct_values ... ok
[INFO] [stdout] test context::tests::snapshot_owners_response_parsed ... ok
[INFO] [stdout] test context::tests::snapshot_owners_multiple_with_mixed_names ... ok
[INFO] [stdout] test context::tests::snapshot_owners_with_teams ... ok
[INFO] [stdout] test context::tests::snapshot_readiness_evidence_single_attempt ... ok
[INFO] [stdout] test context::tests::snapshot_registry_debug_repr_no_index ... ok
[INFO] [stdout] test context::tests::snapshot_registry_debug_repr ... ok
[INFO] [stdout] test context::tests::verify_ownership_propagates_429_rate_limit ... ok
[INFO] [stdout] test context::tests::verify_ownership_propagates_500_server_error ... ok
[INFO] [stdout] test context::tests::verify_ownership_propagates_network_error ... ok
[INFO] [stdout] test context::tests::verify_ownership_returns_false_on_401_unauthorized ... ok
[INFO] [stdout] test context::tests::verify_ownership_returns_false_on_not_found ... ok
[INFO] [stdout] test context::tests::verify_ownership_returns_false_on_forbidden ... ok
[INFO] [stdout] test context::tests::verify_ownership_returns_true_on_success ... ok
[INFO] [stdout] test context::tests::verify_ownership_returns_true_even_with_empty_owners_list ... ok
[INFO] [stdout] test context::tests::verify_ownership_returns_true_with_single_owner ... ok
[INFO] [stdout] test context::tests::version_exists_429_with_retry_after_header_still_errors ... ok
[INFO] [stdout] test context::tests::verify_ownership_returns_true_with_many_owners ... ok
[INFO] [stdout] test context::tests::version_exists_errors_for_401_unauthorized ... ok
[INFO] [stdout] test context::tests::version_exists_errors_for_403_forbidden ... ok
[INFO] [stdout] test context::tests::version_exists_error_message_includes_status_code_text ... ok
[INFO] [stdout] test context::tests::version_exists_errors_for_429_rate_limit ... ok
[INFO] [stdout] test context::tests::version_exists_errors_for_503_service_unavailable ... ok
[INFO] [stdout] test context::tests::version_exists_errors_for_502_bad_gateway ... ok
[INFO] [stdout] test context::tests::evidence_records_populated_correctly ... ok
[INFO] [stdout] test context::tests::version_exists_errors_on_connection_refused ... ok
[INFO] [stdout] test context::tests::version_exists_errors_for_unexpected_status ... ok
[INFO] [stdout] test context::tests::version_exists_false_for_404 ... ok
[INFO] [stdout] test context::tests::version_exists_normalizes_trailing_slash ... ok
[INFO] [stdout] test context::tests::version_exists_passes_hyphenated_name_in_url ... ok
[INFO] [stdout] test context::tests::version_exists_passes_underscored_name_in_url ... ok
[INFO] [stdout] test context::tests::version_exists_sends_prerelease_version_in_url ... ok
[INFO] [stdout] test context::tests::version_exists_false_for_nonexistent_version_with_prerelease ... ok
[INFO] [stdout] test context::tests::version_exists_true_for_200 ... ok
[INFO] [stdout] test context::tests::version_exists_with_hyphenated_crate_name ... ok
[INFO] [stdout] test context::tests::version_exists_slow_response_still_succeeds ... ok
[INFO] [stdout] test context::tests::version_exists_with_max_length_crate_name ... ok
[INFO] [stdout] test context::tests::version_exists_with_underscore_crate_name ... ok
[INFO] [stdout] test context::tests::with_cache_dir_sets_cache_directory ... ok
[INFO] [stdout] test http::tests::client_with_custom_url ... ok
[INFO] [stdout] test context::tests::zero_timeout_returns_immediately ... ok
[INFO] [stdout] test http::tests::client_creation ... ok
[INFO] [stdout] test http::tests::crate_exists_handles_connection_refused ... ok
[INFO] [stdout] test http::tests::client_with_timeout ... ok
[INFO] [stdout] test http::tests::crate_exists_returns_true_on_200 ... ok
[INFO] [stdout] test http::tests::crate_info_roundtrip ... ok
[INFO] [stdout] test http::tests::crate_info_serialization ... ok
[INFO] [stdout] test http::tests::crate_response_parsing ... ok
[INFO] [stdout] test http::tests::crates_io_api_constant ... ok
[INFO] [stdout] test http::tests::default_timeout_constant ... ok
[INFO] [stdout] test http::tests::crate_exists_returns_error_on_500 ... ok
[INFO] [stdout] test http::tests::crate_exists_returns_false_on_404 ... ok
[INFO] [stdout] test http::tests::fetch_sparse_index_304_without_cache_errors ... ok
[INFO] [stdout] test http::tests::fetch_sparse_index_not_found ... ok
[INFO] [stdout] test http::tests::default_timeout_is_30s ... ok
[INFO] [stdout] test http::tests::get_crate_info_returns_error_on_500 ... ok
[INFO] [stdout] test http::tests::get_crate_info_returns_error_on_invalid_json ... ok
[INFO] [stdout] test http::tests::get_crate_info_returns_none_on_404 ... ok
[INFO] [stdout] test http::tests::get_crate_info_returns_some_on_200 ... ok
[INFO] [stdout] test http::tests::fetch_sparse_index_unexpected_status ... ok
[INFO] [stdout] test http::tests::get_owners_returns_empty_on_404 ... ok
[INFO] [stdout] test http::tests::is_owner_returns_false_for_non_matching_user ... ok
[INFO] [stdout] test http::tests::is_crate_visible_delegates_to_client ... ok
[INFO] [stdout] test http::tests::get_owners_returns_owners_on_200 ... ok
[INFO] [stdout] test http::tests::is_version_visible_delegates_to_client ... ok
[INFO] [stdout] test http::tests::is_owner_returns_true_for_matching_user ... ok
[INFO] [stdout] test http::tests::is_version_visible_in_sparse_index_returns_false_for_missing_version ... ok
[INFO] [stdout] test http::tests::list_owners_returns_error_on_403 ... ok
[INFO] [stdout] test http::tests::is_version_visible_in_sparse_index_with_mock ... ok
[INFO] [stdout] test http::tests::list_owners_returns_error_on_401 ... ok
[INFO] [stdout] test http::tests::list_owners_returns_error_on_unexpected_status ... ok
[INFO] [stdout] test http::tests::owner_roundtrip_with_optional_fields ... ok
[INFO] [stdout] test http::tests::owner_serialization ... ok
[INFO] [stdout] test http::tests::owners_api_user_optional_id ... ok
[INFO] [stdout] test http::tests::owners_api_user_with_id ... ok
[INFO] [stdout] test http::tests::owners_response_default_is_empty ... ok
[INFO] [stdout] test http::tests::owners_response_parsing ... ok
[INFO] [stdout] test http::tests::list_owners_sends_auth_header ... ok
[INFO] [stdout] test http::tests::list_owners_returns_error_on_crate_not_found ... ok
[INFO] [stdout] test http::tests::proptests::owners_response_roundtrip_prop ... ok
[INFO] [stdout] test http::tests::proptests::crate_info_roundtrip_prop ... ok
[INFO] [stdout] test http::tests::proptests::sparse_index_path_is_deterministic ... ok
[INFO] [stdout] test http::tests::proptests::sparse_index_path_is_lowercase ... ok
[INFO] [stdout] test http::tests::snapshot_crate_info ... ok
[INFO] [stdout] test http::tests::snapshot_error_connection_refused ... ok
[INFO] [stdout] test http::tests::snapshot_error_owners_forbidden ... ok
[INFO] [stdout] test http::tests::snapshot_error_owners_not_found ... ok
[INFO] [stdout] test http::tests::snapshot_error_unexpected_status_crate_exists ... ok
[INFO] [stdout] test http::tests::snapshot_owner_all_fields ... ok
[INFO] [stdout] test http::tests::snapshot_owner_minimal ... ok
[INFO] [stdout] test http::tests::snapshot_owners_api_user_with_id ... ok
[INFO] [stdout] test http::tests::snapshot_owners_api_user_without_id ... ok
[INFO] [stdout] test http::tests::snapshot_owners_response_empty ... ok
[INFO] [stdout] test http::tests::snapshot_owners_response_multiple ... ok
[INFO] [stdout] test http::tests::snapshot_sparse_index_paths ... ok
[INFO] [stdout] test http::tests::snapshot_url_construction_crate ... ok
[INFO] [stdout] test http::tests::snapshot_url_construction_custom_registry ... ok
[INFO] [stdout] test http::tests::snapshot_url_construction_owners ... ok
[INFO] [stdout] test http::tests::snapshot_url_construction_version ... ok
[INFO] [stdout] test http::tests::sparse_index_path_four_plus_char ... ok
[INFO] [stdout] test http::tests::sparse_index_path_short_crate ... ok
[INFO] [stdout] test http::tests::sparse_index_path_three_char ... ok
[INFO] [stdout] test http::tests::test_sparse_index_caching ... ok
[INFO] [stdout] test http::tests::timeout_triggers_on_slow_server ... ok
[INFO] [stdout] test http::tests::url_multiple_trailing_slashes_stripped ... ok
[INFO] [stdout] test http::tests::url_no_trailing_slash_unchanged ... ok
[INFO] [stdout] test http::tests::user_agent_includes_version ... ok
[INFO] [stdout] test http::tests::version_exists_returns_error_on_503 ... ok
[INFO] [stdout] test http::tests::version_exists_returns_false_on_404 ... ok
[INFO] [stdout] test http::tests::version_exists_returns_true_on_200 ... ok
[INFO] [stdout] test http::tests::versions_response_parsing ... ok
[INFO] [stdout] test http::tests::with_cache_dir_sets_cache ... ok
[INFO] [stdout] test context::tests::index_cache_populated_on_first_200_used_on_subsequent_304 ... ok
[INFO] [stdout] test context::tests::index_mode_backoff_uses_cached_content_on_304 ... ok
[INFO] [stdout] test context::tests::index_mode_502_treated_as_not_visible_in_backoff ... ok
[INFO] [stdout] test context::tests::index_mode_stale_empty_index ... ok
[INFO] [stdout] test context::tests::index_mode_parse_errors_treated_as_not_visible ... ok
[INFO] [stdout] test context::tests::is_version_visible_with_backoff_returns_false_on_timeout ... ok
[INFO] [stdout] test context::tests::rate_limit_429_then_success_in_backoff ... ok
[INFO] [stdout] test context::tests::rate_limit_429_backoff_retries_multiple_times_before_success ... ok
[INFO] [stdout] test context::tests::rate_limit_429_continuous_causes_timeout ... ok
[INFO] [stdout] test context::tests::rate_limit_429_treated_as_not_visible_in_api_backoff ... ok
[INFO] [stdout] test context::tests::snapshot_readiness_evidence_multi_attempt ... ok
[INFO] [stdout] test http::tests::proptests::version_string_in_url_construction ... ok
[INFO] [stdout] test http::tests::proptests::url_normalization_strips_trailing_slashes ... ok
[INFO] [stdout] test context::tests::server_error_then_recovery_succeeds_for_each_5xx has been running for over 60 seconds
[INFO] [stdout] test context::tests::server_errors_500_502_503_all_classified_as_not_visible_in_backoff has been running for over 60 seconds
[INFO] [stdout] test context::tests::server_error_then_recovery_succeeds_for_each_5xx ... ok
[INFO] [stdout] test context::tests::server_errors_500_502_503_all_classified_as_not_visible_in_backoff ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 258 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 123.15s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests shipper_registry
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/lib.rs - (line 20) - compile ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 1.68s; merged doctests compilation took 1.66s
[INFO] running `Command { std: "docker" "inspect" "e99390dc073f2027a10e6122489641b3282bcacbc611746e6b42fc7108b3fb7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e99390dc073f2027a10e6122489641b3282bcacbc611746e6b42fc7108b3fb7c", kill_on_drop: false }`
[INFO] [stdout] e99390dc073f2027a10e6122489641b3282bcacbc611746e6b42fc7108b3fb7c
