[INFO] fetching crate shardline-protocol 1.11.2...
[INFO] testing shardline-protocol-1.11.2 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate shardline-protocol 1.11.2 into /workspace/builds/worker-4-tc2/source
[INFO] started tweaking crates.io crate shardline-protocol 1.11.2
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate shardline-protocol 1.11.2
[INFO] tweaked toml for crates.io crate shardline-protocol 1.11.2 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate shardline-protocol 1.11.2 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate shardline-protocol 1.11.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" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:131:12
[INFO] [stderr]     |
[INFO] [stderr] 131 | homepage = "https://github.com/STEXS-Technologies/shardline"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 135 | repository = "https://github.com/STEXS-Technologies/shardline"
[INFO] [stderr]     |              -------------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `shardline-protocol` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/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] d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11
[INFO] running `Command { std: "docker" "start" "d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11", 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" "d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11", 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" "d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:131:12
[INFO] [stderr]     |
[INFO] [stderr] 131 | homepage = "https://github.com/STEXS-Technologies/shardline"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 135 | repository = "https://github.com/STEXS-Technologies/shardline"
[INFO] [stderr]     |              -------------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `shardline-protocol` (manifest) generated 1 warning
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling shardline-protocol v1.11.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.95s
[INFO] running `Command { std: "docker" "inspect" "d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11", 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" "d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:131:12
[INFO] [stderr]     |
[INFO] [stderr] 131 | homepage = "https://github.com/STEXS-Technologies/shardline"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 135 | repository = "https://github.com/STEXS-Technologies/shardline"
[INFO] [stderr]     |              -------------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `shardline-protocol` (manifest) generated 1 warning
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling shardline-protocol v1.11.2 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling criterion v0.5.1
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 14.31s
[INFO] running `Command { std: "docker" "inspect" "d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11", 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" "d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:131:12
[INFO] [stderr]     |
[INFO] [stderr] 131 | homepage = "https://github.com/STEXS-Technologies/shardline"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 135 | repository = "https://github.com/STEXS-Technologies/shardline"
[INFO] [stderr]     |              -------------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `shardline-protocol` (manifest) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.08s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/shardline-protocol/28df804f8b0d955e/out/shardline_protocol-28df804f8b0d955e)
[INFO] [stdout] 
[INFO] [stdout] running 131 tests
[INFO] [stdout] test hash::tests::canonical_hash_rejects_uppercase_hex ... ok
[INFO] [stdout] test hash::tests::hash_copy_and_clone_work ... ok
[INFO] [stdout] test hash::tests::hash_error_derive_impls ... ok
[INFO] [stdout] test hash::tests::canonical_hash_rejects_short_hex ... ok
[INFO] [stdout] test hash::tests::hash_parse_hex_rejects_uppercase_at_start ... ok
[INFO] [stdout] test hash::tests::canonical_hash_rejects_long_hex ... ok
[INFO] [stdout] test hash::tests::hash_partial_eq_compares_bytes ... ok
[INFO] [stdout] test hash::tests::canonical_hash_vectors_round_trip ... ok
[INFO] [stdout] test ranges::tests::byte_range_single_byte ... ok
[INFO] [stdout] test hash::tests::hash_parse_hex_rejects_garbage_after_valid_prefix ... ok
[INFO] [stdout] test hash::tests::hash_parse_error_display_invalid_length ... ok
[INFO] [stdout] test ranges::tests::byte_range_is_inclusive ... ok
[INFO] [stdout] test hash::tests::canonical_hash_rejects_non_hex_character ... ok
[INFO] [stdout] test ranges::tests::chunk_range_is_end_exclusive ... ok
[INFO] [stdout] test ranges::tests::byte_range_u64_max_start ... ok
[INFO] [stdout] test ranges::tests::chunk_range_clone_copy_consistency ... ok
[INFO] [stdout] test hash::tests::hash_from_bytes_as_bytes_roundtrip ... ok
[INFO] [stdout] test hash::tests::raw_bytes_are_preserved ... ok
[INFO] [stdout] test ranges::tests::chunk_range_rejects_inverted_ranges ... ok
[INFO] [stdout] test hash::tests::hash_hex_string_all_byte_values ... ok
[INFO] [stdout] test hash::tests::hash_parse_hex_rejects_uppercase_in_middle ... ok
[INFO] [stdout] test ranges::tests::chunk_range_rejects_empty_ranges ... ok
[INFO] [stdout] test hash::tests::hash_parse_error_display_invalid_character ... ok
[INFO] [stdout] test ranges::tests::chunk_range_single_chunk ... ok
[INFO] [stdout] test ranges::tests::byte_range_rejects_inverted_input ... ok
[INFO] [stdout] test ranges::tests::byte_range_reports_unrepresentable_full_u64_length ... ok
[INFO] [stdout] test ranges::tests::chunk_range_u32_bounds ... ok
[INFO] [stdout] test ranges::tests::byte_range_clone_copy_consistency ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_accepts_suffix_and_rejects_multi_range_forms ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_clamps_open_or_oversized_end_to_resource ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_exact_resource_length_start_zero ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_parses_inclusive_range ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_huge_numbers ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_rejects_empty_raw_suffix ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_rejects_empty_start_no_end ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_rejects_invalid_syntax ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_rejects_suffix_zero ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_rejects_start_equals_resource_length ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_rejects_unsatisfiable_start ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_suffix_larger_than_resource_clamps_to_start ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_suffix_zero_resource_length ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_suffix_zero_resource_length_is_unsatisfiable ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_suffix_nonzero_resource_preserved ... ok
[INFO] [stdout] test ranges::tests::http_byte_range_zero_resource_length ... ok
[INFO] [stdout] test ranges::tests::http_range_parse_error_debug_non_empty ... ok
[INFO] [stdout] test ranges::tests::range_error_clone_copy_partial_eq ... ok
[INFO] [stdout] test ranges::tests::http_range_parse_error_display_all_variants ... ok
[INFO] [stdout] test ranges::tests::range_error_display_empty ... ok
[INFO] [stdout] test ranges::tests::range_error_display_inverted ... ok
[INFO] [stdout] test security::tests::secret_bytes_as_ref ... ok
[INFO] [stdout] test hash::tests::canonical_hash_hex_round_trips_raw_bytes ... ok
[INFO] [stdout] test ranges::tests::byte_range_zero_length_range ... ok
[INFO] [stdout] test security::tests::secret_bytes_clone_produces_equal_data ... ok
[INFO] [stdout] test security::tests::secret_bytes_debug_no_content_leak ... ok
[INFO] [stdout] test security::tests::secret_bytes_debug_redacts_contents ... ok
[INFO] [stdout] test security::tests::secret_bytes_exposes_underlying_bytes ... ok
[INFO] [stdout] test security::tests::secret_bytes_is_empty_various ... ok
[INFO] [stdout] test security::tests::secret_bytes_len_various_sizes ... ok
[INFO] [stdout] test security::tests::secret_bytes_len_and_is_empty ... ok
[INFO] [stdout] test security::tests::secret_bytes_new_wraps_owned ... ok
[INFO] [stdout] test security::tests::secret_string_as_ref ... ok
[INFO] [stdout] test security::tests::secret_bytes_partial_eq_compares_content ... ok
[INFO] [stdout] test security::tests::secret_bytes_zeroize_clears_memory ... ok
[INFO] [stdout] test security::tests::secret_string_clone_produces_equal_data ... ok
[INFO] [stdout] test security::tests::secret_string_debug_no_content_leak ... ok
[INFO] [stdout] test security::tests::secret_string_debug_redacts_contents ... ok
[INFO] [stdout] test security::tests::secret_string_exposes_underlying_text ... ok
[INFO] [stdout] test security::tests::secret_string_is_empty ... ok
[INFO] [stdout] test security::tests::secret_string_empty_vs_non_empty ... ok
[INFO] [stdout] test security::tests::secret_string_new_wraps_owned ... ok
[INFO] [stdout] test time::tests::returns_modern_timestamp ... ok
[INFO] [stdout] test token::tests::read_token_does_not_allow_write ... ok
[INFO] [stdout] test token::tests::repository_provider_as_str_all_variants ... ok
[INFO] [stdout] test token::tests::repository_provider_as_str_returns_expected_values ... ok
[INFO] [stdout] test time::tests::not_in_the_future ... ok
[INFO] [stdout] test token::tests::format_signed_token_rejects_empty_segments ... ok
[INFO] [stdout] test text::tests::case_insensitive_false ... ok
[INFO] [stdout] test text::tests::parse_empty ... ok
[INFO] [stdout] test text::tests::case_insensitive_true ... ok
[INFO] [stdout] test security::tests::secret_string_partial_eq_compares_content ... ok
[INFO] [stdout] test token::tests::format_signed_token_enforces_shared_length_limit ... ok
[INFO] [stdout] test token::tests::repository_provider_parses_stable_names ... ok
[INFO] [stdout] test text::tests::parse_true_strings ... ok
[INFO] [stdout] test text::tests::parse_surrounding_whitespace ... ok
[INFO] [stdout] test text::tests::parse_invalid ... ok
[INFO] [stdout] test text::tests::parse_false_strings ... ok
[INFO] [stdout] test token::tests::repository_scope_accepts_missing_revision ... ok
[INFO] [stdout] test token::tests::repository_scope_accepts_all_providers ... ok
[INFO] [stdout] test token::tests::repository_scope_allows_missing_revision ... ok
[INFO] [stdout] test token::tests::repository_scope_rejects_control_characters_in_name ... ok
[INFO] [stdout] test token::tests::repository_provider_parse_error_debug_non_empty ... ok
[INFO] [stdout] test token::tests::repository_scope_rejects_control_characters_in_owner ... ok
[INFO] [stdout] test token::tests::repository_scope_rejects_control_characters_in_revision ... ok
[INFO] [stdout] test token::tests::repository_scope_accessors ... ok
[INFO] [stdout] test token::tests::repository_scope_rejects_empty_revision ... ok
[INFO] [stdout] test token::tests::repository_scope_rejects_empty_name ... ok
[INFO] [stdout] test token::tests::repository_scope_rejects_empty_owner ... ok
[INFO] [stdout] test token::tests::repository_scope_rejects_oversized_components ... ok
[INFO] [stdout] test token::tests::split_token_rejects_empty_signature_and_extra_separator ... ok
[INFO] [stdout] test token::tests::token_claims_field_accessors ... ok
[INFO] [stdout] test token::tests::token_claims_error_display_all_variants ... ok
[INFO] [stdout] test token::tests::token_claims_rejects_control_characters_in_issuer ... ok
[INFO] [stdout] test token::tests::token_claims_rejects_control_characters_in_subject ... ok
[INFO] [stdout] test token::tests::token_claims_reject_empty_issuer ... ok
[INFO] [stdout] test token::tests::token_claims_rejects_oversized_issuer ... ok
[INFO] [stdout] test token::tests::token_codec_error_empty_signing_key_display ... ok
[INFO] [stdout] test token::tests::token_codec_error_claims_display ... ok
[INFO] [stdout] test token::tests::token_codec_error_display_variants ... ok
[INFO] [stdout] test token::tests::token_roundtrips_through_sign_and_verify ... ok
[INFO] [stdout] test token::tests::token_codec_error_signing_key_too_short_display ... ok
[INFO] [stdout] test token::tests::token_signer_verify_rejects_invalid_hex_payload ... ok
[INFO] [stdout] test token::tests::token_signer_rejects_short_key ... ok
[INFO] [stdout] test token::tests::token_claims_reject_oversized_subject ... ok
[INFO] [stdout] test token::tests::token_scope_read_allows_read_not_write ... ok
[INFO] [stdout] test token::tests::token_claims_reject_empty_subject ... ok
[INFO] [stdout] test token::tests::token_codec_error_from_json_error ... ok
[INFO] [stdout] test token::tests::token_signer_verify_rejects_token_without_dot ... ok
[INFO] [stdout] test token::tests::token_signer_debug_redacts_signing_key_material ... ok
[INFO] [stdout] test token::tests::token_signer_sign_and_verify_now ... ok
[INFO] [stdout] test token::tests::token_signer_verify_rejects_empty_token ... ok
[INFO] [stdout] test token::tests::token_verify_rejects_expired_tokens ... ok
[INFO] [stdout] test token::tests::token_signer_verify_rejects_too_long_token ... ok
[INFO] [stdout] test token::tests::token_verify_rejects_oversized_token_before_hex_decoding ... ok
[INFO] [stdout] test token::tests::token_verify_rejects_oversized_signature_before_hex_decoding ... ok
[INFO] [stdout] test token::tests::token_codec_error_from_hex_error ... ok
[INFO] [stdout] test token::tests::write_token_allows_read_and_write ... ok
[INFO] [stdout] test token::tests::token_signer_rejects_empty_key ... ok
[INFO] [stdout] test token::tests::token_verify_rejects_tampering ... ok
[INFO] [stdout] test token::tests::token_claims_serialization_roundtrips ... ok
[INFO] [stdout] test token::tests::token_scope_write_allows_both ... ok
[INFO] [stdout] test token::tests::repository_provider_parse_error_display ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 131 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/protocol_integration.rs (/opt/rustwide/target/debug/build/shardline-protocol/86c2733637566f68/out/protocol_integration-86c2733637566f68)
[INFO] [stdout] 
[INFO] [stdout] running 57 tests
[INFO] [stdout] test byte_range_rejects_inverted ... ok
[INFO] [stdout] test byte_range_copy_semantics ... ok
[INFO] [stdout] test chunk_range_rejects_inverted ... ok
[INFO] [stdout] test chunk_range_rejects_empty ... ok
[INFO] [stdout] test different_keys_produce_different_tokens ... ok
[INFO] [stdout] test hash_hex_string_is_canonical ... ok
[INFO] [stdout] test parse_bool_rejects_invalid_inputs ... ok
[INFO] [stdout] test parse_byte_range_clamps_to_resource_end ... ok
[INFO] [stdout] test disjoint_ranges_detected ... ok
[INFO] [stdout] test parse_byte_range_rejects_missing_bytes_unit ... ok
[INFO] [stdout] test parse_bool_true_variants ... ok
[INFO] [stdout] test parse_byte_range_rejects_multi_range ... ok
[INFO] [stdout] test parse_standard_byte_range ... ok
[INFO] [stdout] test hash_from_bytes_hex_string_parse_hex_round_trip ... ok
[INFO] [stdout] test overlapping_ranges_detected ... ok
[INFO] [stdout] test parse_suffix_byte_range ... ok
[INFO] [stdout] test repository_provider_as_str_round_trip ... ok
[INFO] [stdout] test parse_open_ended_byte_range ... ok
[INFO] [stdout] test byte_range_u64_max_boundary ... ok
[INFO] [stdout] test repository_scope_accepts_all_providers ... ok
[INFO] [stdout] test hash_parse_hex_rejects_invalid_inputs ... ok
[INFO] [stdout] test http_range_parse_error_display_messages ... ok
[INFO] [stdout] test range_error_display_messages ... ok
[INFO] [stdout] test secret_bytes_as_ref ... ok
[INFO] [stdout] test parse_byte_range_rejects_unsatisfiable_start ... ok
[INFO] [stdout] test repository_scope_accepts_missing_revision ... ok
[INFO] [stdout] test repository_scope_rejects_empty_fields ... ok
[INFO] [stdout] test secret_bytes_construction_and_access ... ok
[INFO] [stdout] test secret_string_as_ref ... ok
[INFO] [stdout] test secret_bytes_clone_produces_equal_data ... ok
[INFO] [stdout] test secret_bytes_constant_time_comparison ... ok
[INFO] [stdout] test secret_bytes_debug_redacts_content ... ok
[INFO] [stdout] test secret_string_debug_redacts_content ... ok
[INFO] [stdout] test secret_string_clone_produces_equal_data ... ok
[INFO] [stdout] test token_scope_permissions ... ok
[INFO] [stdout] test chunk_range_new_valid ... ok
[INFO] [stdout] test parse_bool_false_variants ... ok
[INFO] [stdout] test secret_string_constant_time_comparison ... ok
[INFO] [stdout] test secret_string_empty ... ok
[INFO] [stdout] test token_verify_rejects_expired_token ... ok
[INFO] [stdout] test secret_string_construction_and_access ... ok
[INFO] [stdout] test token_claims_rejects_empty_issuer_and_subject ... ok
[INFO] [stdout] test token_verify_rejects_malformed_token ... ok
[INFO] [stdout] test parse_bool_is_case_insensitive_and_whitespace_tolerant ... ok
[INFO] [stdout] test hash_clone_copy_eq ... ok
[INFO] [stdout] test secret_bytes_empty ... ok
[INFO] [stdout] test touching_ranges_overlap ... ok
[INFO] [stdout] test unix_now_seconds_is_reasonable ... ok
[INFO] [stdout] test zero_length_not_possible ... ok
[INFO] [stdout] test token_verify_rejects_tampered_signature ... ok
[INFO] [stdout] test single_byte_overlap_edges ... ok
[INFO] [stdout] test nested_ranges_overlap ... ok
[INFO] [stdout] test byte_range_new_valid ... ok
[INFO] [stdout] test token_sign_and_verify_full_round_trip ... ok
[INFO] [stdout] test token_signer_rejects_empty_key ... ok
[INFO] [stdout] test token_signer_rejects_short_key ... ok
[INFO] [stdout] test byte_range_length_accounting ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 57 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests shardline_protocol
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test src/security.rs - security::SecretBytes (line 13) ... ok
[INFO] [stdout] test src/token.rs - token::TokenSigner::verify_at (line 406) ... ok
[INFO] [stdout] test src/security.rs - security::SecretString (line 85) ... ok
[INFO] [stdout] test src/token.rs - token::TokenSigner::sign (line 372) ... ok
[INFO] [stdout] test src/token.rs - token::RepositoryScope::new (line 122) ... ok
[INFO] [stdout] test src/hash.rs - hash::ShardlineHash (line 11) ... ok
[INFO] [stdout] test src/token.rs - token::TokenClaims::new (line 198) ... ok
[INFO] [stdout] test src/hash.rs - hash::ShardlineHash::parse_hex (line 44) ... ok
[INFO] [stdout] test src/lib.rs - (line 33) ... ok
[INFO] [stdout] test src/text.rs - text::parse_bool (line 8) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.59s; merged doctests compilation took 0.56s
[INFO] running `Command { std: "docker" "inspect" "d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11", kill_on_drop: false }`
[INFO] [stdout] d0527b4eb0e22a3ea9bda8de57b59df05c1de975d644bfe182506a1057d0dc11
