[INFO] fetching crate trypema 2.1.0...
[INFO] testing trypema-2.1.0 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate trypema 2.1.0 into /workspace/builds/worker-5-tc1/source
[INFO] removed /workspace/builds/worker-5-tc1/source/.cargo/config.toml
[INFO] started tweaking crates.io crate trypema 2.1.0
[INFO] finished tweaking crates.io crate trypema 2.1.0
[INFO] tweaked toml for crates.io crate trypema 2.1.0 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate trypema 2.1.0 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate trypema 2.1.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded futures-io v0.3.33
[INFO] [stderr]   Downloaded blocking v1.6.1
[INFO] [stderr]   Downloaded async-io v2.4.0
[INFO] [stderr]   Downloaded futures-sink v0.3.33
[INFO] [stderr]   Downloaded smol-timeout v0.6.1
[INFO] [stderr]   Downloaded futures-macro v0.3.33
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.111
[INFO] [stderr]   Downloaded async-fs v2.2.0
[INFO] [stderr]   Downloaded async-executor v1.13.1
[INFO] [stderr]   Downloaded async-net v2.0.0
[INFO] [stderr]   Downloaded futures-channel v0.3.33
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.111
[INFO] [stderr]   Downloaded futures-executor v0.3.33
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.111
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.111
[INFO] [stderr]   Downloaded futures v0.3.33
[INFO] [stderr]   Downloaded js-sys v0.3.88
[INFO] [stderr]   Downloaded smol v2.0.2
[INFO] [stderr]   Downloaded syn v3.0.0
[INFO] [stderr]   Downloaded redis v1.4.1
[INFO] [stderr]   Downloaded web-sys v0.3.88
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d
[INFO] running `Command { std: "docker" "start" "1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d", 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" "1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d", 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" "1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.23
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling syn v2.0.115
[INFO] [stderr]    Compiling syn v3.0.0
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling dashmap v6.2.1
[INFO] [stderr]    Compiling rand v0.10.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling trypema v2.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.58s
[INFO] running `Command { std: "docker" "inspect" "1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d", 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" "1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling regex-syntax v0.8.9
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling zerocopy-derive v0.8.39
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling tokio v1.53.0
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling criterion-plot v0.8.2
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling trypema v2.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling criterion v0.8.2
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 31.75s
[INFO] running `Command { std: "docker" "inspect" "1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d", 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" "1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.19s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/trypema-8af53a5b011bfb69)
[INFO] [stdout] 
[INFO] [stdout] running 124 tests
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::conditional_set_missing_zero_leaves_key_absent ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::get_unknown_key_returns_zero ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::is_allowed_unknown_key_is_allowed ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::get_fresh_key_uses_shared_dashmap_lock ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rate_and_key_lifecycle_preserves_usage_and_resets_state ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::per_key_state_is_independent ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::get_returns_current_window_total ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::conditional_set_present_zero_removes_key ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::concurrent_inc_eventually_rejects_without_panicking ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::conditional_set_guard_miss_uses_shared_dashmap_lock ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::cleanup_keeps_fresh_keys ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rate_grouping_merges_within_group ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rejected_includes_retry_after_and_remaining_after_waiting_window_6 ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rejects_at_exact_window_limit ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rejects_at_exact_window_limit_window_10 ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rejects_at_exact_window_limit_window_6 ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_always_overwrites_unconditionally_including_lowering ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rejected_includes_retry_after_and_remaining_after_waiting_window_10 ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::cleanup_removal_makes_key_unknown_and_allowed ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_eq_zero_sets_only_when_window_is_empty ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_lt_primes_empty_key_and_reprime_is_noop ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_lt_with_lower_target_is_noop ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_preserve_history_creates_missing_positive_target_for_both_directions ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_gt_and_ne_guards_follow_current_total ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_preserve_history_redefines_limit_even_when_total_is_unchanged ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_preserve_history_zero_removes_key ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rejected_includes_retry_after_and_remaining_after_waiting ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_preserve_newest_reduces_from_front_and_increases_newest ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_preserve_oldest_reduces_from_back_and_increases_oldest ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_prime_at_capacity_rejects_next_inc ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_prime_then_inc_enforces_remaining_budget ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_redefines_sticky_rate_limit ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_unmatched_guard_on_unknown_key_writes_no_counts ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::threaded_lifecycle_cutovers_preserve_exact_usage ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rate_grouping_separates_beyond_group ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::volume_batch_increment_matches_expected_volumes_under_local_semantics ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::volume_non_integer_rate_uses_truncating_capacity ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rejected_metadata_window_10_with_nonzero_grouping_merges_within_group ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::volume_unit_increments_accepts_exact_capacity_then_rejects_rest ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::window_limit_for_key_is_not_updated_after_first_inc ... ok
[INFO] [stdout] test tests::test_builder::bucket_size_must_not_exceed_window_size ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rejected_metadata_window_6_with_nonzero_grouping_merges_within_group ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::cleanup_concurrent_is_allowed_smoke_does_not_panic ... ok
[INFO] [stdout] test tests::test_builder::cleanup_durations_are_validated ... ok
[INFO] [stdout] test tests::test_builder::conditional_outcome_distinguishes_match_noop_and_miss ... ok
[INFO] [stdout] test tests::test_builder::local_builder_implements_shared_trait_and_returns_arc ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::cleanup_is_millisecond_granularity ... ok
[INFO] [stdout] test tests::test_common_validation::bucket_size_helpers_store_milliseconds ... ok
[INFO] [stdout] test tests::test_common_validation::hard_limit_factor_default_and_try_from_validate_at_least_one ... ok
[INFO] [stdout] test tests::test_common_validation::millisecond_duration_conversion_preserves_full_window_range ... ok
[INFO] [stdout] test tests::test_common_validation::rate_limit_comparator_matches_uses_embedded_operand_and_always_matches ... ok
[INFO] [stdout] test tests::test_common_validation::rate_limit_period_helpers_convert_both_directions ... ok
[INFO] [stdout] test tests::test_common_validation::semantic_rate_and_window_units_preserve_window_capacity ... ok
[INFO] [stdout] test tests::test_builder::cleanup_convenience_methods_follow_builder_order ... ok
[INFO] [stdout] test tests::test_common_validation::window_size_getters_convert_from_seconds ... ok
[INFO] [stdout] test tests::test_common_validation::suppression_factor_cache_period_helpers_store_milliseconds ... ok
[INFO] [stdout] test tests::test_common_validation::window_size_helpers_store_seconds ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::batch_crossing_hard_limit_is_fully_declined_without_consuming_accepted_capacity ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::cleanup_does_not_break_factor_recomputation_when_cache_entry_removed ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::cleanup_is_millisecond_granularity_for_suppression_factor ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::cleanup_removes_stale_suppression_factors_and_keeps_fresh ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::concurrent_increments_record_every_observation ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rejected_metadata_window_10_with_nonzero_grouping_separates_buckets ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::rejected_metadata_window_6_with_nonzero_grouping_separates_buckets ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::conditional_set_missing_zero_leaves_suppressed_key_absent ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::conditional_set_present_zero_removes_suppressed_key_completely ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::conditional_set_guard_miss_uses_shared_dashmap_lock ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::fractional_limits_use_truncated_soft_and_hard_window_boundaries ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::does_not_suppress_when_soft_window_limit_not_exceeded ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::get_fresh_key_uses_shared_dashmap_lock ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::get_returns_observed_snapshot ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::get_unknown_key_returns_empty_snapshot ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::hard_limit_is_enforced_after_suppression_factor_cache_expires ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::inc_keeps_the_first_hard_window_limit_for_the_key ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::public_suppressed_decisions_never_return_absolute_rejection_metadata ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::rate_and_key_lifecycle_preserves_snapshot_and_resets_state ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::reaching_shared_soft_and_hard_limit_is_allowed_then_suppresses ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_always_overwrites_unconditionally_including_lowering ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::cleanup_removes_stale_series_and_keeps_fresh_series ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_eq_zero_sets_only_when_window_is_empty ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_lt_primes_empty_key_and_reprime_is_noop ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_lt_with_lower_target_is_noop ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_preserve_history_creates_missing_positive_targets ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_preserve_history_keeps_exact_decline_ratio_for_large_counters ... ok
[INFO] [stdout] test tests::test_cleanup_loop::local_cleanup_removes_stale_entries_and_keeps_active_entries ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_preserve_history_increases_the_selected_edge_bucket ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_preserve_oldest_keeps_oldest_suppressed_history ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_preserve_history_scales_partial_declines_proportionally ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_prime_at_hard_limit_declines_next_inc ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_redefines_sticky_hard_window_limit ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_replacement_resets_declined_history_and_cached_factor ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_prime_below_soft_limit_allows_next_inc ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_zero_count_resets_declines_and_suppression_state ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::suppressed_inc_allowed_returns_suppressed_is_allowed_true_and_increments_accepted ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::suppressed_inc_denied_returns_suppressed_and_does_not_increment_accepted ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::suppressed_is_deterministically_allowed_until_base_capacity_boundary ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::suppressed_is_fully_denied_after_hard_limit_observed ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::suppression_factor_cache_is_recomputed_after_cache_window ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::suppression_factor_gt_one_panics - should panic ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::suppression_factor_negative_panics - should panic ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::suppression_factor_one_must_not_return_allowed ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::suppression_factor_zero_returns_suppressed_allowed_and_rng_not_called ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::suppression_property_values_do_not_panic_and_follow_basic_contract ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::suppression_rng_probability_is_one_minus_suppression_factor ... ok
[INFO] [stdout] test tests::test_builder::cleanup_can_be_disabled_started_stopped_and_restarted ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::unchanged_preserve_history_uses_shared_lock_and_keeps_cached_factor ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::unchanged_total_with_a_new_limit_updates_limit_and_invalidates_cache ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::threaded_lifecycle_cutovers_preserve_exact_snapshot ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_replacement_with_unchanged_total_still_replaces_history ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::conditional_set_guard_miss_leaves_expired_history_untouched ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::get_excludes_and_evicts_expired_buckets ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::cleanup_removes_stale_keys_by_last_activity ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::cleanup_uses_most_recent_bucket_not_oldest ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_evicts_expired_buckets_before_comparing ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::set_if_preserve_history_prunes_expired_before_directional_reduction ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::unblocks_after_window_expires ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::volume_rejections_do_not_consume_and_capacity_resets_after_window_expiry ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::conditional_set_guard_miss_leaves_expired_history_untouched ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::get_evicts_expired_buckets_and_updates_declined_total ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::set_if_preserve_history_prunes_expired_buckets_before_matching_update ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::verify_suppression_factor_calculation_last_second ... ok
[INFO] [stdout] test tests::test_suppressed_local_rate_limiter::verify_suppression_factor_calculation_spread ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::evicts_oldest_bucket_but_keeps_newer_bucket_window_2_with_grouping ... ok
[INFO] [stdout] test tests::test_absolute_local_rate_limiter::unblocks_after_window_expires_window_2_with_nonzero_grouping ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 124 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.18s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests trypema
[INFO] [stdout] 
[INFO] [stdout] running 31 tests
[INFO] [stdout] test src/../docs/lib.md - (line 59) - compile ... ok
[INFO] [stdout] test src/error.rs - error::TrypemaError::InvalidRateLimit (line 57) ... ok
[INFO] [stdout] test src/../docs/lib.md - (line 81) - compile ... ok
[INFO] [stdout] test src/../docs/lib.md - (line 9) ... ok
[INFO] [stdout] test src/error.rs - error::TrypemaError::InvalidHardLimitFactor (line 114) ... ok
[INFO] [stdout] test src/common.rs - common::SuppressionFactorCachePeriod (line 891) ... ok
[INFO] [stdout] test src/common.rs - common::RateLimitComparator (line 1025) ... ok
[INFO] [stdout] test src/common.rs - common::HardLimitFactor (line 799) ... ok
[INFO] [stdout] test src/error.rs - error::TrypemaError (line 18) ... ok
[INFO] [stdout] test src/local/local_rate_limiter_provider.rs - local::local_rate_limiter_provider::LocalRateLimiterProvider::suppressed (line 202) ... ok
[INFO] [stdout] test src/local/mod.rs - local (line 12) ... ok
[INFO] [stdout] test src/local/absolute_local_rate_limiter.rs - local::absolute_local_rate_limiter::AbsoluteLocalRateLimiter (line 76) ... ok
[INFO] [stdout] test src/local/absolute_local_rate_limiter.rs - local::absolute_local_rate_limiter::AbsoluteLocalRateLimiter::set_if (line 643) ... ok
[INFO] [stdout] test src/local/absolute_local_rate_limiter.rs - local::absolute_local_rate_limiter::AbsoluteLocalRateLimiter::inc (line 154) ... ok
[INFO] [stdout] test src/local/local_rate_limiter_provider.rs - local::local_rate_limiter_provider::LocalRateLimiterProvider (line 93) ... ok
[INFO] [stdout] test src/local/local_rate_limiter_provider.rs - local::local_rate_limiter_provider::LocalRateLimiterProvider::absolute (line 177) ... ok
[INFO] [stdout] test src/local/absolute_local_rate_limiter.rs - local::absolute_local_rate_limiter::AbsoluteLocalRateLimiter::is_allowed (line 250) ... ok
[INFO] [stdout] test src/local/suppressed_local_rate_limiter.rs - local::suppressed_local_rate_limiter::SuppressedLocalRateLimiter::set_if (line 913) ... ok
[INFO] [stdout] test src/local/suppressed_local_rate_limiter.rs - local::suppressed_local_rate_limiter::SuppressedLocalRateLimiter (line 117) ... ok
[INFO] [stdout] test src/local/suppressed_local_rate_limiter.rs - local::suppressed_local_rate_limiter::SuppressedLocalRateLimiter::inc (line 198) ... ok
[INFO] [stdout] test src/local/suppressed_local_rate_limiter.rs - local::suppressed_local_rate_limiter::SuppressedLocalRateLimiter::get_suppression_factor (line 415) ... ok
[INFO] [stdout] test src/local/suppressed_local_rate_limiter.rs - local::suppressed_local_rate_limiter::SuppressedLocalRateLimiter::get (line 526) ... ok
[INFO] [stdout] test src/common.rs - common::RateLimitDecision (line 96) ... ok
[INFO] [stdout] test src/common.rs - common::RateLimit (line 239) ... ok
[INFO] [stdout] test src/common.rs - common::RateLimit::max (line 274) ... ok
[INFO] [stdout] test src/common.rs - common::WindowSize (line 443) ... ok
[INFO] [stdout] test src/../docs/lib.md - (line 133) ... ok
[INFO] [stdout] test src/common.rs - common::BucketSize (line 635) ... ok
[INFO] [stdout] test src/error.rs - error::TrypemaError::InvalidBucketSize (line 96) ... ok
[INFO] [stdout] test src/error.rs - error::TrypemaError::InvalidWindowSize (line 78) ... ok
[INFO] [stdout] test src/local/absolute_local_rate_limiter.rs - local::absolute_local_rate_limiter::AbsoluteLocalRateLimiter::get (line 552) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 31 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/common.rs - common::WindowSize (line 461) - compile fail ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 1.21s; merged doctests compilation took 0.89s
[INFO] running `Command { std: "docker" "inspect" "1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d", kill_on_drop: false }`
[INFO] [stdout] 1ab777a684f496633994486005805759bdfb3da67a842aa2ce49c9ebceef520d
