[INFO] fetching crate koi-certmesh 0.2.202603241449... [INFO] testing koi-certmesh-0.2.202603241449 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-1 [INFO] extracting crate koi-certmesh 0.2.202603241449 into /workspace/builds/worker-5-tc1/source [INFO] started tweaking crates.io crate koi-certmesh 0.2.202603241449 [INFO] finished tweaking crates.io crate koi-certmesh 0.2.202603241449 [INFO] tweaked toml for crates.io crate koi-certmesh 0.2.202603241449 written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate koi-certmesh 0.2.202603241449 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate koi-certmesh 0.2.202603241449 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" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded totp-rs v5.7.1 [INFO] [stderr] Downloaded linux-keyutils v0.2.4 [INFO] [stderr] Downloaded hostname v0.4.2 [INFO] [stderr] Downloaded koi-common v0.2.202603241449 [INFO] [stderr] Downloaded koi-truststore v0.2.202603241449 [INFO] [stderr] Downloaded koi-crypto v0.2.202603241449 [INFO] [stderr] Downloaded rcgen v0.13.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 5bb19a42f787382a9ce4bfa83127336e39dd94e9d790d249218e335c7d0c7044 [INFO] running `Command { std: "docker" "start" "-a" "5bb19a42f787382a9ce4bfa83127336e39dd94e9d790d249218e335c7d0c7044", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5bb19a42f787382a9ce4bfa83127336e39dd94e9d790d249218e335c7d0c7044", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5bb19a42f787382a9ce4bfa83127336e39dd94e9d790d249218e335c7d0c7044", kill_on_drop: false }` [INFO] [stdout] 5bb19a42f787382a9ce4bfa83127336e39dd94e9d790d249218e335c7d0c7044 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0f2ba4bd9d51a03903ac0af3bf5197d2fcd1a7f1e90393cdc38cb74b48368dea [INFO] running `Command { std: "docker" "start" "-a" "0f2ba4bd9d51a03903ac0af3bf5197d2fcd1a7f1e90393cdc38cb74b48368dea", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling subtle v2.6.1 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling generic-array v0.14.9 [INFO] [stderr] Compiling base64ct v1.8.3 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling simd-adler32 v0.3.8 [INFO] [stderr] Compiling zerocopy v0.8.42 [INFO] [stderr] Compiling cc v1.2.57 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Compiling pxfm v0.1.28 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling deranged v0.5.8 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling fdeflate v0.3.7 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling byteorder-lite v0.1.0 [INFO] [stderr] Compiling pem-rfc7468 v0.7.0 [INFO] [stderr] Compiling num-conv v0.2.0 [INFO] [stderr] Compiling portable-atomic v1.13.1 [INFO] [stderr] Compiling bytemuck v1.25.0 [INFO] [stderr] Compiling time-core v0.1.8 [INFO] [stderr] Compiling pem v3.0.6 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling linux-raw-sys v0.4.15 [INFO] [stderr] Compiling base32 v0.5.1 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling number_prefix v0.4.0 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling png v0.18.1 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling ff v0.13.1 [INFO] [stderr] Compiling hostname v0.4.2 [INFO] [stderr] Compiling group v0.13.0 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling uuid v1.22.0 [INFO] [stderr] Compiling password-hash v0.5.0 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling linux-keyutils v0.2.4 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling console v0.15.11 [INFO] [stderr] Compiling crossterm v0.28.1 [INFO] [stderr] Compiling keyring v3.6.3 [INFO] [stderr] Compiling moxcms v0.8.1 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling indicatif v0.17.11 [INFO] [stderr] Compiling yasna v0.5.2 [INFO] [stderr] Compiling zeroize_derive v1.4.3 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling der v0.7.10 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling async-stream v0.3.6 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling crypto-common v0.1.6 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling inout v0.1.4 [INFO] [stderr] Compiling crypto-bigint v0.5.5 [INFO] [stderr] Compiling utoipa-gen v5.4.0 [INFO] [stderr] Compiling universal-hash v0.5.1 [INFO] [stderr] Compiling axum-core v0.5.6 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling cipher v0.4.4 [INFO] [stderr] Compiling aead v0.5.2 [INFO] [stderr] Compiling hmac v0.12.1 [INFO] [stderr] Compiling polyval v0.6.2 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling rfc6979 v0.4.0 [INFO] [stderr] Compiling signature v2.2.0 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling ctr v0.9.2 [INFO] [stderr] Compiling aes v0.8.4 [INFO] [stderr] Compiling blake2 v0.10.6 [INFO] [stderr] Compiling ghash v0.5.1 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling spki v0.7.3 [INFO] [stderr] Compiling hkdf v0.12.4 [INFO] [stderr] Compiling argon2 v0.5.3 [INFO] [stderr] Compiling totp-rs v5.7.1 [INFO] [stderr] Compiling aes-gcm v0.10.3 [INFO] [stderr] Compiling x25519-dalek v2.0.1 [INFO] [stderr] Compiling pkcs8 v0.10.2 [INFO] [stderr] Compiling rcgen v0.13.2 [INFO] [stderr] Compiling sec1 v0.7.3 [INFO] [stderr] Compiling elliptic-curve v0.13.8 [INFO] [stderr] Compiling primeorder v0.13.6 [INFO] [stderr] Compiling ecdsa v0.16.9 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling p256 v0.13.2 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling image v0.25.10 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling qrcode v0.14.1 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling utoipa v5.4.0 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling axum v0.8.8 [INFO] [stderr] Compiling koi-common v0.2.202603241449 [INFO] [stderr] Compiling koi-truststore v0.2.202603241449 [INFO] [stderr] Compiling koi-crypto v0.2.202603241449 [INFO] [stderr] Compiling koi-certmesh v0.2.202603241449 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 05s [INFO] running `Command { std: "docker" "inspect" "0f2ba4bd9d51a03903ac0af3bf5197d2fcd1a7f1e90393cdc38cb74b48368dea", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0f2ba4bd9d51a03903ac0af3bf5197d2fcd1a7f1e90393cdc38cb74b48368dea", kill_on_drop: false }` [INFO] [stdout] 0f2ba4bd9d51a03903ac0af3bf5197d2fcd1a7f1e90393cdc38cb74b48368dea [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] fd1c515ed00d0fa6165f1d4dbcc12a2829d5dbe0364899accfda7940e59e70b1 [INFO] running `Command { std: "docker" "start" "-a" "fd1c515ed00d0fa6165f1d4dbcc12a2829d5dbe0364899accfda7940e59e70b1", kill_on_drop: false }` [INFO] [stderr] Compiling koi-certmesh v0.2.202603241449 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 11.23s [INFO] running `Command { std: "docker" "inspect" "fd1c515ed00d0fa6165f1d4dbcc12a2829d5dbe0364899accfda7940e59e70b1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fd1c515ed00d0fa6165f1d4dbcc12a2829d5dbe0364899accfda7940e59e70b1", kill_on_drop: false }` [INFO] [stdout] fd1c515ed00d0fa6165f1d4dbcc12a2829d5dbe0364899accfda7940e59e70b1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 1f2319bdf815b054ac4b5bb4558a15b7eb527f7bfa14811db296cda67b05dc5d [INFO] running `Command { std: "docker" "start" "-a" "1f2319bdf815b054ac4b5bb4558a15b7eb527f7bfa14811db296cda67b05dc5d", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.27s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/koi_certmesh-8a0f12fe646630ad) [INFO] [stdout] [INFO] [stdout] running 264 tests [INFO] [stdout] test certmesh_paths::tests::default_paths_derive_from_data_dir ... ok [INFO] [stdout] test ca::tests::ca_fingerprint_is_deterministic ... ok [INFO] [stdout] test ca::tests::is_ca_initialized_false_by_default ... ok [INFO] [stdout] test certmesh_paths::tests::has_slot_table_false_for_nonexistent_dir ... ok [INFO] [stdout] test certmesh_paths::tests::is_ca_initialized_false_for_nonexistent_dir ... ok [INFO] [stdout] test enrollment::tests::parse_cidr_invalid ... ok [INFO] [stdout] test audit::tests::append_and_read_entries ... ok [INFO] [stdout] test enrollment::tests::validate_scope_domain_case_insensitive ... ok [INFO] [stdout] test enrollment::tests::validate_scope_domain_exact_match ... ok [INFO] [stdout] test certfiles::tests::writes_all_four_files ... ok [INFO] [stdout] test enrollment::tests::validate_scope_domain_rejects_partial_suffix ... ok [INFO] [stdout] test enrollment::tests::validate_scope_domain_rejects_outside ... ok [INFO] [stdout] test enrollment::tests::validate_scope_no_constraints_allows_any ... ok [INFO] [stdout] test enrollment::tests::validate_subnet_allows_in_range ... ok [INFO] [stdout] test enrollment::tests::parse_cidr_valid ... ok [INFO] [stdout] test enrollment::tests::validate_subnet_mixed_versions_rejects ... ok [INFO] [stdout] test enrollment::tests::validate_scope_domain_suffix_match ... ok [INFO] [stdout] test enrollment::tests::validate_subnet_no_constraint_allows_any ... ok [INFO] [stdout] test enrollment::tests::validate_subnet_rejects_invalid_cidr ... ok [INFO] [stdout] test enrollment::tests::validate_subnet_prefix_32_exact_match ... ok [INFO] [stdout] test enrollment::tests::validate_subnet_rejects_outside ... ok [INFO] [stdout] test enrollment::tests::validate_subnet_ipv6 ... ok [INFO] [stdout] test entropy::tests::auto_generate_entropy_produces_32_bytes ... ok [INFO] [stdout] test entropy::tests::different_passphrases_produce_different_entropy ... ok [INFO] [stdout] test entropy::tests::estimate_entropy_lowercase_only ... ok [INFO] [stdout] test entropy::tests::estimate_entropy_mixed ... ok [INFO] [stdout] test entropy::tests::different_seeds_produce_different_passphrases ... ok [INFO] [stdout] test entropy::tests::generate_passphrase_is_deterministic ... ok [INFO] [stdout] test entropy::tests::hash_passphrase_is_32_bytes ... ok [INFO] [stdout] test entropy::tests::manual_entropy_produces_32_bytes ... ok [INFO] [stdout] test entropy::tests::memorization_hint_format ... ok [INFO] [stdout] test error::tests::crypto_error_converts_to_certmesh_error ... ok [INFO] [stdout] test error::tests::rate_limited_error_includes_remaining_secs_in_message ... ok [INFO] [stdout] test failover::tests::find_active_primary_empty_services ... ok [INFO] [stdout] test entropy::tests::estimate_entropy_empty ... ok [INFO] [stdout] test failover::tests::find_active_primary_matches_fingerprint ... ok [INFO] [stdout] test failover::tests::find_active_primary_missing_role_key ... ok [INFO] [stdout] test error::tests::all_certmesh_error_variants_map_to_expected_error_code_and_http_status ... ok [INFO] [stdout] test entropy::tests::generate_passphrase_produces_word_word_word_nn ... ok [INFO] [stdout] test failover::tests::find_active_primary_mixed_roles ... ok [INFO] [stdout] test failover::tests::find_active_primary_multiple_primaries_returns_first ... ok [INFO] [stdout] test failover::tests::find_active_primary_skips_standby ... ok [INFO] [stdout] test failover::tests::find_active_primary_wrong_fingerprint ... ok [INFO] [stdout] test failover::tests::find_active_primary_missing_fingerprint_key ... ok [INFO] [stdout] test ca::tests::create_ca_produces_valid_state ... ok [INFO] [stdout] test failover::tests::should_promote_at_exact_boundary ... ok [INFO] [stdout] test failover::tests::should_promote_false_when_no_absence ... ok [INFO] [stdout] test failover::tests::should_promote_false_within_grace ... ok [INFO] [stdout] test failover::tests::should_promote_true_after_grace ... ok [INFO] [stdout] test failover::tests::should_promote_with_zero_grace ... ok [INFO] [stdout] test failover::tests::manifest_empty_public_key_fails ... ok [INFO] [stdout] test failover::tests::tiebreaker_is_case_sensitive ... ok [INFO] [stdout] test failover::tests::tiebreaker_lower_hostname_wins ... ok [INFO] [stdout] test failover::tests::tiebreaker_with_common_prefixes ... ok [INFO] [stdout] test failover::tests::tiebreaker_with_empty_hostname ... ok [INFO] [stdout] test failover::tests::tiebreaker_with_numeric_hostnames ... ok [INFO] [stdout] test failover::tests::manifest_empty_signature_fails ... ok [INFO] [stdout] test health::tests::different_length_fingerprints_are_invalid ... ok [INFO] [stdout] test health::tests::empty_fingerprints_match ... ok [INFO] [stdout] test health::tests::fingerprint_comparison_is_case_sensitive ... ok [INFO] [stdout] test health::tests::heartbeat_interval_is_five_minutes ... ok [INFO] [stdout] test health::tests::matching_fingerprints_are_valid ... ok [INFO] [stdout] test health::tests::mismatched_fingerprints_are_invalid ... ok [INFO] [stdout] test health::tests::non_hex_characters_dont_match_valid ... ok [INFO] [stdout] test health::tests::real_fingerprint_round_trip ... ok [INFO] [stdout] test health::tests::single_char_difference_fails ... ok [INFO] [stdout] test health::tests::two_different_certs_produce_different_fingerprints ... ok [INFO] [stdout] test health::tests::whitespace_fingerprints_dont_match_empty ... ok [INFO] [stdout] test http::tests::certmesh_state_is_send_sync ... ok [INFO] [stdout] test http::tests::close_enrollment_returns_200 ... ok [INFO] [stdout] test http::tests::create_with_bad_entropy_returns_400 ... ok [INFO] [stdout] test http::tests::create_with_short_entropy_returns_400 ... ok [INFO] [stdout] test http::tests::decode_hex_invalid ... ok [INFO] [stdout] test http::tests::decode_hex_odd_length ... ok [INFO] [stdout] test http::tests::decode_hex_valid ... ok [INFO] [stdout] test http::tests::destroy_endpoint_returns_200 ... ok [INFO] [stdout] test http::tests::error_response_includes_error_code ... ok [INFO] [stdout] test http::tests::health_without_ca_body_has_error_code ... ok [INFO] [stdout] test http::tests::health_without_ca_returns_503 ... ok [INFO] [stdout] test http::tests::join_without_ca_body_has_error_code ... ok [INFO] [stdout] test http::tests::join_without_ca_returns_503 ... ok [INFO] [stdout] test http::tests::log_endpoint_body_has_entries_field ... ok [INFO] [stdout] test http::tests::log_endpoint_returns_200 ... ok [INFO] [stdout] test http::tests::nonexistent_route_returns_404 ... ok [INFO] [stdout] test http::tests::open_enrollment_accepts_empty_body ... ok [INFO] [stdout] test http::tests::open_enrollment_returns_200 ... ok [INFO] [stdout] test http::tests::open_enrollment_with_deadline ... ok [INFO] [stdout] test http::tests::promote_without_ca_body_has_error_code ... ok [INFO] [stdout] test http::tests::promote_without_ca_returns_503 ... ok [INFO] [stdout] test http::tests::roster_without_ca_body_has_error_code ... ok [INFO] [stdout] test http::tests::roster_without_ca_returns_503 ... ok [INFO] [stdout] test http::tests::rotate_auth_without_ca_returns_503 ... ok [INFO] [stdout] test http::tests::set_hook_not_found_body_has_error ... ok [INFO] [stdout] test http::tests::set_hook_relative_path_returns_400 ... ok [INFO] [stdout] test http::tests::set_hook_unknown_member_returns_404 ... ok [INFO] [stdout] test http::tests::set_policy_clears_with_nulls ... ok [INFO] [stdout] test http::tests::set_policy_invalid_cidr_ip_returns_400 ... ok [INFO] [stdout] test http::tests::set_policy_invalid_cidr_returns_400 ... ok [INFO] [stdout] test http::tests::set_policy_returns_200 ... ok [INFO] [stdout] test http::tests::status_body_has_expected_fields ... ok [INFO] [stdout] test http::tests::status_endpoint_returns_200 ... ok [INFO] [stdout] test http::tests::status_endpoint_returns_json ... ok [INFO] [stdout] test http::tests::unlock_with_wrong_passphrase_returns_error ... ok [INFO] [stdout] test lifecycle::tests::already_expired_cert_needs_renewal ... ok [INFO] [stdout] test lifecycle::tests::execute_reload_hook_bad_command ... ok [INFO] [stdout] test lifecycle::tests::execute_reload_hook_captures_stderr ... ok [INFO] [stdout] test lifecycle::tests::execute_reload_hook_empty_command ... ok [INFO] [stdout] test lifecycle::tests::execute_reload_hook_failure ... ok [INFO] [stdout] test lifecycle::tests::execute_reload_hook_success ... ok [INFO] [stdout] test lifecycle::tests::members_needing_renewal_all_members_due ... ok [INFO] [stdout] test lifecycle::tests::members_needing_renewal_empty_roster ... ok [INFO] [stdout] test lifecycle::tests::members_needing_renewal_filters_by_threshold ... ok [INFO] [stdout] test lifecycle::tests::members_needing_renewal_mixed_roles ... ok [INFO] [stdout] test lifecycle::tests::members_needing_renewal_none_due ... ok [INFO] [stdout] test lifecycle::tests::members_needing_renewal_skips_revoked ... ok [INFO] [stdout] test ca::tests::full_ca_and_issue_round_trip ... ok [INFO] [stdout] test failover::tests::manifest_sign_verify_round_trip ... ok [INFO] [stdout] test enrollment::tests::enrollment_closed_rejects ... ok [INFO] [stdout] test failover::tests::tampered_manifest_fails_verification ... ok [INFO] [stdout] test failover::tests::manifest_with_empty_roster ... ok [INFO] [stdout] test failover::tests::manifest_with_multiple_members ... ok [INFO] [stdout] test enrollment::tests::enrollment_with_invalid_totp_fails ... ok [INFO] [stdout] test enrollment::tests::rate_limit_after_failures ... ok [INFO] [stdout] test failover::tests::manifest_tampered_signature_fails ... ok [INFO] [stdout] test failover::tests::promotion_dh_preserves_roster_metadata has been running for over 60 seconds [INFO] [stdout] test failover::tests::promotion_dh_with_empty_roster has been running for over 60 seconds [INFO] [stdout] test failover::tests::promotion_dh_wrong_keypair_fails has been running for over 60 seconds [INFO] [stdout] test failover::tests::promotion_missing_server_ephemeral_key_fails has been running for over 60 seconds [INFO] [stdout] test failover::tests::promotion_round_trip_with_dh has been running for over 60 seconds [INFO] [stdout] test lifecycle::tests::renew_member_cert_produces_distinct_fingerprints ... ok [INFO] [stdout] test pond_ceremony::tests::init_complete_returns_result_data ... ok [INFO] [stdout] test pond_ceremony::tests::init_custom_profile_asks_enrollment_then_approval ... ok [INFO] [stdout] test pond_ceremony::tests::init_custom_with_approval_asks_operator ... ok [INFO] [stdout] test pond_ceremony::tests::init_entropy_then_passphrase_suggestion ... ok [INFO] [stdout] test pond_ceremony::tests::init_invalid_profile_reprompts ... ok [INFO] [stdout] test pond_ceremony::tests::init_my_team_asks_operator ... ok [INFO] [stdout] test pond_ceremony::tests::init_profile_then_entropy ... ok [INFO] [stdout] test pond_ceremony::tests::init_rejects_short_passphrase ... ok [INFO] [stdout] test pond_ceremony::tests::init_starts_with_profile_prompt ... ok [INFO] [stdout] test pond_ceremony::tests::join_collects_code_then_verification ... ok [INFO] [stdout] test pond_ceremony::tests::unknown_ceremony_rejected ... ok [INFO] [stdout] test pond_ceremony::tests::unlock_collects_passphrase_then_completes ... ok [INFO] [stdout] test profiles::tests::auto_unlock_policy ... ok [INFO] [stdout] test profiles::tests::just_me_no_approval ... ok [INFO] [stdout] test profiles::tests::my_organization_strict ... ok [INFO] [stdout] test profiles::tests::my_team_requires_approval ... ok [INFO] [stdout] test profiles::tests::parse_from_string ... ok [INFO] [stdout] test profiles::tests::profile_serde_round_trip ... ok [INFO] [stdout] test profiles::tests::profile_serializes_to_snake_case ... ok [INFO] [stdout] test protocol::tests::audit_log_response_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::ca_announcement_has_correct_fields ... ok [INFO] [stdout] test protocol::tests::certmesh_status_includes_policy_when_set ... ok [INFO] [stdout] test protocol::tests::certmesh_status_omits_none_policy_fields ... ok [INFO] [stdout] test protocol::tests::certmesh_status_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::certmesh_status_serializes ... ok [INFO] [stdout] test protocol::tests::certmesh_status_uninitialized_round_trip ... ok [INFO] [stdout] test protocol::tests::create_ca_request_omits_none_operator ... ok [INFO] [stdout] test protocol::tests::create_ca_request_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::create_ca_request_with_operator ... ok [INFO] [stdout] test protocol::tests::create_ca_response_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::destroy_response_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::health_request_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::health_response_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::hook_result_omits_none_output ... ok [INFO] [stdout] test protocol::tests::join_request_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::join_request_without_sans_deserializes ... ok [INFO] [stdout] test protocol::tests::join_response_serializes ... ok [INFO] [stdout] test protocol::tests::open_enrollment_request_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::policy_request_omits_none_fields ... ok [INFO] [stdout] test protocol::tests::policy_request_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::policy_summary_serializes ... ok [INFO] [stdout] test protocol::tests::promote_request_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::promote_request_with_ephemeral_public_round_trip ... ok [INFO] [stdout] test protocol::tests::promote_response_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::promote_response_with_ephemeral_public_round_trip ... ok [INFO] [stdout] test protocol::tests::renew_request_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::renew_response_omits_none_hook_result ... ok [INFO] [stdout] test protocol::tests::renew_response_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::roster_manifest_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::rotate_auth_request_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::rotate_auth_response_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::set_hook_request_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::set_hook_response_serializes ... ok [INFO] [stdout] test protocol::tests::unlock_request_serde_round_trip ... ok [INFO] [stdout] test protocol::tests::unlock_response_serde_round_trip ... ok [INFO] [stdout] test roster::tests::backward_compat_deserialize_without_new_fields ... ok [INFO] [stdout] test roster::tests::backward_compat_phase3_roster_without_phase4_fields ... ok [INFO] [stdout] test roster::tests::close_enrollment_clears_deadline ... ok [INFO] [stdout] test roster::tests::enrollment_with_deadline_auto_closes ... ok [INFO] [stdout] test roster::tests::enrollment_with_future_deadline_stays_open ... ok [INFO] [stdout] test roster::tests::find_and_count_members ... ok [INFO] [stdout] test roster::tests::find_member_mut_and_touch ... ok [INFO] [stdout] test roster::tests::new_fields_skip_serialization_when_none ... ok [INFO] [stdout] test roster::tests::new_roster_just_me ... ok [INFO] [stdout] test roster::tests::new_roster_organization_closed ... ok [INFO] [stdout] test roster::tests::open_and_close_enrollment ... ok [INFO] [stdout] test roster::tests::primary_and_standbys_helpers ... ok [INFO] [stdout] test roster::tests::roster_metadata_scope_fields_serialize_when_set ... ok [INFO] [stdout] test roster::tests::roster_metadata_scope_fields_skip_when_none ... ok [INFO] [stdout] test roster::tests::roster_serde_round_trip ... ok [INFO] [stdout] test roster::tests::save_and_load_roster ... ok [INFO] [stdout] test roster::tests::standby_role_serde ... ok [INFO] [stdout] test lifecycle::tests::renew_and_update_member_cert_expires_is_future ... ok [INFO] [stdout] test lifecycle::tests::renew_and_update_member_not_found ... ok [INFO] [stdout] test lifecycle::tests::renew_and_update_member_with_hook ... ok [INFO] [stdout] test tests::build_status_locked_ca ... ok [INFO] [stdout] test tests::build_status_member_roles_lowercase ... ok [INFO] [stdout] test lifecycle::tests::renew_and_update_member_updates_cert_path ... ok [INFO] [stdout] test lifecycle::tests::renew_and_update_member_with_failing_hook_still_updates_roster ... ok [INFO] [stdout] test tests::ca_announcement_returns_none_when_ca_locked ... ok [INFO] [stdout] test failover::tests::wrong_key_manifest_fails_verification has been running for over 60 seconds [INFO] [stdout] test lifecycle::tests::renew_and_update_member_fingerprint_is_sha256 ... ok [INFO] [stdout] test tests::capability_status_locked ... ok [INFO] [stdout] test tests::capability_status_uninitialised ... ok [INFO] [stdout] test lifecycle::tests::renew_member_cert_reuses_sans ... ok [INFO] [stdout] test failover::tests::promotion_missing_server_ephemeral_key_fails ... ok [INFO] [stdout] test lifecycle::tests::renew_and_update_member_updates_roster has been running for over 60 seconds [INFO] [stdout] test lifecycle::tests::renew_member_cert_fullchain_contains_both_certs has been running for over 60 seconds [INFO] [stdout] test lifecycle::tests::renew_and_update_member_updates_roster ... ok [INFO] [stdout] test lifecycle::tests::renew_member_cert_fullchain_contains_both_certs ... ok [INFO] [stdout] test tests::health_check_returns_error_when_ca_locked ... ok [INFO] [stdout] test failover::tests::promotion_dh_wrong_keypair_fails ... ok [INFO] [stdout] test tests::ca_announcement_returns_none_when_no_primary ... ok [INFO] [stdout] test tests::local_hostname_returns_some ... ok [INFO] [stdout] test tests::accept_roster_sync_rejects_invalid_manifest ... ok [INFO] [stdout] test tests::capability_status_unlocked ... ok [INFO] [stdout] test tests::ca_announcement_returns_descriptor_for_primary ... ok [INFO] [stdout] test tests::health_check_updates_last_seen ... ok [INFO] [stdout] test tests::build_status_includes_policy_fields ... ok [INFO] [stdout] test failover::tests::wrong_key_manifest_fails_verification ... ok [INFO] [stdout] test failover::tests::promotion_dh_preserves_roster_metadata ... ok [INFO] [stdout] test tests::build_status_unlocked_ca ... ok [INFO] [stdout] test tests::promote_returns_error_when_ca_locked ... ok [INFO] [stdout] test tests::certmesh_status_returns_profile ... ok [INFO] [stdout] test failover::tests::promotion_dh_with_empty_roster ... ok [INFO] [stdout] test tests::accept_roster_sync_replaces_roster has been running for over 60 seconds [INFO] [stdout] test tests::health_check_validates_matching_fingerprint ... ok [INFO] [stdout] test failover::tests::promotion_round_trip_with_dh ... ok [INFO] [stdout] test tests::health_check_rejects_mismatched_fingerprint ... ok [INFO] [stdout] test tests::close_enrollment_changes_state ... ok [INFO] [stdout] test tests::renew_all_due_returns_empty_when_ca_locked ... ok [INFO] [stdout] test tests::node_role_returns_none_for_empty_roster ... ok [INFO] [stdout] test tests::node_role_returns_role_for_matching_hostname ... ok [INFO] [stdout] test tests::roster_manifest_returns_error_when_ca_locked ... ok [INFO] [stdout] test tests::pinned_ca_fingerprint_returns_none_for_empty_roster ... ok [INFO] [stdout] test tests::rotate_auth_fails_when_ca_locked ... ok [INFO] [stdout] test tests::open_enrollment_changes_state ... ok [INFO] [stdout] test tests::accept_roster_sync_replaces_roster ... ok [INFO] [stdout] test tests::receive_renewal_skips_roster_update_for_unknown_member ... ok [INFO] [stdout] test tests::receive_renewal_handles_invalid_expires_gracefully ... ok [INFO] [stdout] test tests::open_enrollment_with_deadline ... ok [INFO] [stdout] test tests::receive_renewal_executes_hook_if_set ... ok [INFO] [stdout] test tests::uninitialized_core_enroll_returns_error ... ok [INFO] [stdout] test tests::uninitialized_core_promote_returns_error ... ok [INFO] [stdout] test tests::uninitialized_core_renew_all_due_returns_empty ... ok [INFO] [stdout] test tests::uninitialized_core_roster_manifest_returns_error ... ok [INFO] [stdout] test tests::uninitialized_core_rotate_auth_returns_error ... ok [INFO] [stdout] test tests::uninitialized_core_status_shows_empty_roster ... ok [INFO] [stdout] test tests::pinned_ca_fingerprint_returns_value_for_matching_member has been running for over 60 seconds [INFO] [stdout] test tests::promote_response_can_be_accepted_with_dh has been running for over 60 seconds [INFO] [stdout] test tests::promote_returns_encrypted_material has been running for over 60 seconds [INFO] [stdout] test tests::pinned_ca_fingerprint_returns_value_for_matching_member ... ok [INFO] [stdout] test tests::renew_all_due_partial_failure_continues ... ok [INFO] [stdout] test tests::receive_renewal_updates_roster_member has been running for over 60 seconds [INFO] [stdout] test tests::receive_renewal_updates_roster_member ... ok [INFO] [stdout] test tests::renew_all_due_renews_expiring_members ... ok [INFO] [stdout] test tests::renew_all_due_returns_empty_when_no_members_due ... ok [INFO] [stdout] test tests::roster_manifest_is_verifiable ... ok [INFO] [stdout] test tests::roster_manifest_returns_signed_manifest ... ok [INFO] [stdout] test tests::set_policy_rejects_cidr_with_bad_ip ... ok [INFO] [stdout] test tests::set_policy_clears_constraints ... ok [INFO] [stdout] test tests::promote_returns_encrypted_material ... ok [INFO] [stdout] test tests::set_reload_hook_unknown_member_returns_error ... ok [INFO] [stdout] test tests::set_policy_rejects_invalid_cidr ... ok [INFO] [stdout] test tests::set_policy_updates_constraints ... ok [INFO] [stdout] test tests::set_reload_hook_sets_hook_for_known_member ... ok [INFO] [stdout] test tests::promote_response_can_be_accepted_with_dh ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 264 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 250.70s [INFO] [stdout] [INFO] [stderr] Doc-tests koi_certmesh [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" "1f2319bdf815b054ac4b5bb4558a15b7eb527f7bfa14811db296cda67b05dc5d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1f2319bdf815b054ac4b5bb4558a15b7eb527f7bfa14811db296cda67b05dc5d", kill_on_drop: false }` [INFO] [stdout] 1f2319bdf815b054ac4b5bb4558a15b7eb527f7bfa14811db296cda67b05dc5d