[INFO] fetching crate tamer 0.1.0...
[INFO] testing tamer-0.1.0 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate tamer 0.1.0 into /workspace/builds/worker-0-tc2/source
[INFO] started tweaking crates.io crate tamer 0.1.0
[INFO] finished tweaking crates.io crate tamer 0.1.0
[INFO] tweaked toml for crates.io crate tamer 0.1.0 written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate tamer 0.1.0 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 tamer 0.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.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2
[INFO] running `Command { std: "docker" "start" "7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2", 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" "7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2" "/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" "7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2", 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" "7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling tamer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.45s
[INFO] running `Command { std: "docker" "inspect" "7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2", 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" "7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling tamer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.69s
[INFO] running `Command { std: "docker" "inspect" "7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2", 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" "7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.03s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/tamer/39314d5e8e6c7c5e/out/tamer-39314d5e8e6c7c5e)
[INFO] [stdout] 
[INFO] [stdout] running 257 tests
[INFO] [stdout] test analog::tests::calibration_observes_min_max_and_range ... ok
[INFO] [stdout] test analog::tests::input_seeds_from_reader_and_updates ... ok
[INFO] [stdout] test analog::tests::range_normalizes_bounds ... ok
[INFO] [stdout] test analog::tests::sample_reports_percent ... ok
[INFO] [stdout] test analog::tests::calibration_can_require_minimum_span ... ok
[INFO] [stdout] test analog::tests::range_clamps_out_of_bounds_samples ... ok
[INFO] [stdout] test analog::tests::value_emits_movement_at_deadband ... ok
[INFO] [stdout] test analog::tests::range_normalizes_midpoint ... ok
[INFO] [stdout] test analog::tests::raw_delta_to_normalized_converts_adc_counts ... ok
[INFO] [stdout] test analog::tests::zero_deadband_emits_any_normalized_change ... ok
[INFO] [stdout] test analog::tests::value_ignores_movement_inside_deadband ... ok
[INFO] [stdout] test button::tests::double_click_exact_boundary_is_click ... ok
[INFO] [stdout] test button::tests::double_click_within_window_fires_double_click ... ok
[INFO] [stdout] test button::tests::long_press_fires_mid_hold_then_release_on_lift ... ok
[INFO] [stdout] test button::tests::constructed_pressed_does_not_emit_phantom_long_press ... ok
[INFO] [stdout] test debounce::tests::edge_bounce_resets_timer ... ok
[INFO] [stdout] test button::tests::press_confirms_after_debounce_window ... ok
[INFO] [stdout] test button::tests::single_edge_long_hold_is_long_press_not_click ... ok
[INFO] [stdout] test button::tests::first_tap_is_never_misclassified_as_double_click ... ok
[INFO] [stdout] test button::tests::stable_held_produces_no_event_before_threshold ... ok
[INFO] [stdout] test button::tests::stable_released_produces_no_event ... ok
[INFO] [stdout] test button::tests::tap_after_long_press_is_click_not_double_click ... ok
[INFO] [stdout] test button::tests::short_tap_emits_press_release_click ... ok
[INFO] [stdout] test button::tests::second_tap_outside_window_fires_two_clicks ... ok
[INFO] [stdout] test button::tests::zero_debounce_one_sample_press_on_drain_tick_is_missed ... ok
[INFO] [stdout] test button::tests::press_during_gesture_drain_is_delayed_not_lost ... ok
[INFO] [stdout] test button::tests::every_press_is_bracketed_by_release ... ok
[INFO] [stdout] test button::tests::is_pressed_tracks_debounced_state ... ok
[INFO] [stdout] test debounce::tests::bounce_within_window_resets_timer ... ok
[INFO] [stdout] test button::tests::long_press_suppresses_click ... ok
[INFO] [stdout] test button::tests::debounced_long_hold_fires_long_press_during_release_window ... ok
[INFO] [stdout] test debounce::tests::falling_edge ... ok
[INFO] [stdout] test debounce::tests::near_u64_max_ticks_rising_edge ... ok
[INFO] [stdout] test debounce::tests::near_u64_max_ticks_transition_confirmed ... ok
[INFO] [stdout] test debounce::tests::same_value_as_stable_clears_pending ... ok
[INFO] [stdout] test debounce::tests::saturating_sub_with_earlier_timestamp_does_not_transition ... ok
[INFO] [stdout] test debounce::tests::transition_at_exact_boundary ... ok
[INFO] [stdout] test debounce::tests::stable_state_delegates_to_debouncer ... ok
[INFO] [stdout] test debounce::tests::multiple_edges_in_sequence ... ok
[INFO] [stdout] test debounce::tests::zero_debounce_rising_edge ... ok
[INFO] [stdout] test debounce::tests::zero_debounce_window_transitions_on_first_call ... ok
[INFO] [stdout] test hall::tests::calibrate_averages_samples ... ok
[INFO] [stdout] test hall::tests::calibrate_empty_samples_returns_err ... ok
[INFO] [stdout] test hall::tests::deviation_returns_absolute_difference ... ok
[INFO] [stdout] test debounce::tests::rising_edge ... ok
[INFO] [stdout] test debounce::tests::stable_transition_after_debounce ... ok
[INFO] [stdout] test debounce::tests::maximum_debounce_window ... ok
[INFO] [stdout] test debounce::tests::zero_debounce_falling_edge ... ok
[INFO] [stdout] test hall::tests::evaluate_absent_just_below_threshold ... ok
[INFO] [stdout] test hall::tests::evaluate_absent_near_midpoint ... ok
[INFO] [stdout] test hall::tests::calibrate_midpoint_unchanged_on_error ... ok
[INFO] [stdout] test hall::tests::calibrate_single_sample ... ok
[INFO] [stdout] test hall::tests::evaluate_present_above_midpoint ... ok
[INFO] [stdout] test debounce::tests::multiple_transitions ... ok
[INFO] [stdout] test debounce::tests::transition_at_exactly_u64_max ... ok
[INFO] [stdout] test hall::tests::calibrate_handles_large_values ... ok
[INFO] [stdout] test hall::tests::evaluate_after_set_midpoint ... ok
[INFO] [stdout] test debounce::tests::immediate_change_ignored ... ok
[INFO] [stdout] test debounce::tests::no_edge_within_debounce_window ... ok
[INFO] [stdout] test hall::tests::set_threshold_overrides ... ok
[INFO] [stdout] test hall::tests::typical_calibrated_workflow ... ok
[INFO] [stdout] test hall::tests::evaluate_present_at_exact_threshold ... ok
[INFO] [stdout] test morse::tests::all_space_oneshot_fires_one_finished_after_one_word_gap ... ok
[INFO] [stdout] test hall::tests::evaluate_present_below_midpoint ... ok
[INFO] [stdout] test hall::tests::evaluate_present_at_extremes ... ok
[INFO] [stdout] test hall::tests::set_midpoint_overrides ... ok
[INFO] [stdout] test hall::tests::hall_calibration_error_display ... ok
[INFO] [stdout] test morse::tests::character_started_reports_byte_offsets_not_a_character_count ... ok
[INFO] [stdout] test morse::tests::cq_oneshot_canonical_timeline ... ok
[INFO] [stdout] test hall::tests::new_sets_midpoint_and_threshold ... ok
[INFO] [stdout] test morse::tests::all_space_loop_emits_zero_events_and_stays_off ... ok
[INFO] [stdout] test morse::tests::all_unsupported_message_is_finished_immediately ... ok
[INFO] [stdout] test morse::tests::code_for_folds_lowercase ... ok
[INFO] [stdout] test morse::tests::code_for_none_for_space_punctuation_and_newline ... ok
[INFO] [stdout] test morse::tests::code_for_c_and_q ... ok
[INFO] [stdout] test morse::tests::consecutive_spaces_collapse_to_one_word_gap ... ok
[INFO] [stdout] test morse::tests::cq_loop_continuation_never_finishes ... ok
[INFO] [stdout] test morse::tests::empty_message_is_finished_immediately_and_never_panics ... ok
[INFO] [stdout] test morse::tests::huge_unit_ticks_never_panics_on_duration_multiplication ... ok
[INFO] [stdout] test morse::tests::intra_inter_and_word_gap_durations ... ok
[INFO] [stdout] test morse::tests::near_u64_max_start_and_update_never_panic ... ok
[INFO] [stdout] test morse::tests::non_monotonic_now_saturates_without_panic_or_spurious_advance ... ok
[INFO] [stdout] test morse::tests::loop_seam_collapses_both_edge_spaces_to_one_word_gap ... ok
[INFO] [stdout] test morse::tests::leading_space_delays_first_oneshot_symbol_by_one_word_gap ... ok
[INFO] [stdout] test morse::tests::start_restart_with_a_leading_word_gap_as_the_first_segment ... ok
[INFO] [stdout] test morse::tests::inactive_before_start_is_silent_and_update_is_noop ... ok
[INFO] [stdout] test morse::tests::loop_seam_collapses_leading_space_with_no_leading_gap ... ok
[INFO] [stdout] test morse::tests::loop_seam_collapses_trailing_space_to_one_word_gap ... ok
[INFO] [stdout] test morse::tests::late_poll_advances_exactly_one_segment_per_call ... ok
[INFO] [stdout] test morse::tests::start_after_finished_resets_finished_flag ... ok
[INFO] [stdout] test mpu6050::tests::apply_offsets_zero_reading_zero_offsets_returns_zero ... ok
[INFO] [stdout] test mpu6050::tests::calibration_default_trait ... ok
[INFO] [stdout] test mpu6050::tests::calibration_extreme_negative_z_does_not_panic ... ok
[INFO] [stdout] test mpu6050::tests::calibration_z_offset_subtracts_one_g_reference ... ok
[INFO] [stdout] test mpu6050::tests::parse_byte_order_matters ... ok
[INFO] [stdout] test mpu6050::tests::calibration_no_samples_returns_zero_offsets ... ok
[INFO] [stdout] test mpu6050::tests::calibration_single_sample ... ok
[INFO] [stdout] test morse::tests::leading_delay_gap_to_first_character_fires_no_event ... ok
[INFO] [stdout] test morse::tests::skip_bytes_are_transparent_and_tick_free ... ok
[INFO] [stdout] test mpu6050::tests::apply_offsets_subtracts_positive_offset ... ok
[INFO] [stdout] test mpu6050::tests::calibration_extreme_negative_z_offsets_feed_apply_offsets_cleanly ... ok
[INFO] [stdout] test mpu6050::tests::parse_known_negative_values ... ok
[INFO] [stdout] test mpu6050::tests::calibration_multiple_samples_average ... ok
[INFO] [stdout] test mpu6050::tests::parse_max_positive_all_axes ... ok
[INFO] [stdout] test mpu6050::tests::calibration_negative_y_offset ... ok
[INFO] [stdout] test mpu6050::tests::parse_known_positive_values ... ok
[INFO] [stdout] test mpu6050::tests::parse_max_negative_all_axes ... ok
[INFO] [stdout] test morse::tests::stop_silences_output_suspends_update_and_leaves_is_finished_unchanged ... ok
[INFO] [stdout] test morse::tests::trailing_space_adds_word_gap_before_finished ... ok
[INFO] [stdout] test morse::tests::zero_unit_ticks_advances_one_segment_per_update_without_panic ... ok
[INFO] [stdout] test mpu6050::tests::apply_offsets_negative_offset_increases_value ... ok
[INFO] [stdout] test mpu6050::tests::apply_offsets_overflow_scenario_does_not_panic ... ok
[INFO] [stdout] test mpu6050::tests::protocol_constant_reg_accel_xout_h ... ok
[INFO] [stdout] test mpu6050::tests::protocol_init_sequence_length ... ok
[INFO] [stdout] test presence::tests::absent_transition ... ok
[INFO] [stdout] test presence::tests::absent_at_exact_warmup_end_arms ... ok
[INFO] [stdout] test presence::tests::bounce_cancels_pending_transition ... ok
[INFO] [stdout] test mpu6050::tests::protocol_init_sequence_entries ... ok
[INFO] [stdout] test presence::tests::active_low_reed_switch_present_transition ... ok
[INFO] [stdout] test presence::tests::absent_at_deadline_then_rise_one_tick_later_starts ... ok
[INFO] [stdout] test presence::tests::active_high_present_transition ... ok
[INFO] [stdout] test presence::tests::initial_present_produces_no_rising_edge ... ok
[INFO] [stdout] test presence::tests::active_high_maps_correctly ... ok
[INFO] [stdout] test presence::tests::armed_session_emits_started_then_ended_with_dwell ... ok
[INFO] [stdout] test mpu6050::tests::protocol_constant_who_am_i_value ... ok
[INFO] [stdout] test mpu6050::tests::protocol_constant_i2c_addr ... ok
[INFO] [stdout] test presence::tests::active_low_maps_correctly ... ok
[INFO] [stdout] test presence::tests::last_dwell_holds_previous_value_during_active_session ... ok
[INFO] [stdout] test presence::tests::armed_rising_edges_never_suppressed ... ok
[INFO] [stdout] test presence::tests::presence_converts_to_and_from_bool ... ok
[INFO] [stdout] test presence::tests::non_monotonic_timestamp_does_not_transition_spuriously ... ok
[INFO] [stdout] test presence::tests::is_active_tracks_open_session ... ok
[INFO] [stdout] test mpu6050::tests::parse_zero_buffer_gives_all_zeros ... ok
[INFO] [stdout] test presence::tests::tick_regression_across_warmup_end_does_not_revert ... ok
[INFO] [stdout] test presence::tests::saturated_deadline_stays_warming_up_below_u64_max ... ok
[INFO] [stdout] test presence::tests::tick_regression_in_open_session_gives_zero_dwell ... ok
[INFO] [stdout] test presence::tests::trigger_modes_yield_identical_streams ... ok
[INFO] [stdout] test presence::tests::saturated_deadline_expires_at_u64_max ... ok
[INFO] [stdout] test presence::tests::zero_debounce_matches_debouncer_behavior ... ok
[INFO] [stdout] test presence::tests::warmup_rising_edge_counts_pulse ... ok
[INFO] [stdout] test presence::tests::counters_saturate_and_event_reuses_u32_max ... ok
[INFO] [stdout] test presence::tests::warmup_falling_edge_is_silent ... ok
[INFO] [stdout] test presence::tests::zero_warmup_first_absent_arms ... ok
[INFO] [stdout] test mpu6050::tests::parse_temperature_bytes_do_not_affect_result ... ok
[INFO] [stdout] test range_map::tests::double_inversion_restores_original_mapping ... ok
[INFO] [stdout] test presence::tests::last_and_max_dwell_track_two_sessions ... ok
[INFO] [stdout] test presence::tests::rising_edge_at_warmup_end_is_silent_not_spurious ... ok
[INFO] [stdout] test range_map::tests::descending_output_bounds_without_inverted ... ok
[INFO] [stdout] test range_map::tests::clamps_out_of_bounds_readings ... ok
[INFO] [stdout] test presence::tests::last_onset_survives_ended ... ok
[INFO] [stdout] test presence::tests::zero_warmup_first_present_is_settling ... ok
[INFO] [stdout] test presence::tests::pulse_straddling_warmup_end_settles_then_arms_without_ended ... ok
[INFO] [stdout] test range_map::tests::endpoints_are_exact ... ok
[INFO] [stdout] test presence::tests::rising_edge_one_tick_after_warmup_end_is_silent_not_spurious ... ok
[INFO] [stdout] test rotary::tests::cw_one_detent_increments_position ... ok
[INFO] [stdout] test presence::tests::same_sample_twice_is_noop ... ok
[INFO] [stdout] test presence::tests::from_presence_seeds_semantic_initial_state ... ok
[INFO] [stdout] test range_map::tests::rounds_to_nearest_at_interior_value ... ok
[INFO] [stdout] test presence::tests::presence_not_operator_flips_state ... ok
[INFO] [stdout] test rotary::tests::ccw_one_detent_decrements_position ... ok
[INFO] [stdout] test presence::tests::presence_boolean_helpers_match_state ... ok
[INFO] [stdout] test range_map::tests::inversion_swaps_endpoints ... ok
[INFO] [stdout] test range_map::tests::inverted_asymmetric_non_zero_range ... ok
[INFO] [stdout] test range_map::tests::monotonic_decreasing_when_inverted ... ok
[INFO] [stdout] test rotary::tests::partial_rotation_reversed_before_detent_does_not_count ... ok
[INFO] [stdout] test rotary::tests::set_position_updates_and_clears_accumulator ... ok
[INFO] [stdout] test rotary::tests::reset_zeroes_position_and_accumulator ... ok
[INFO] [stdout] test rotary::tests::multiple_ccw_detents_accumulate ... ok
[INFO] [stdout] test rotary::tests::bounce_at_detent_does_not_drift ... ok
[INFO] [stdout] test smoothing::tests::constant_input_converges ... ok
[INFO] [stdout] test morse::tests::start_restarts_from_the_first_keyed_character_and_resets_baseline ... ok
[INFO] [stdout] test smoothing::tests::correct_after_multiple_wraparounds ... ok
[INFO] [stdout] test rotary::tests::max_steps_per_detent_accepted ... ok
[INFO] [stdout] test smoothing::tests::default_trait ... ok
[INFO] [stdout] test smoothing::tests::ema_alpha_one_passes_input_unchanged ... ok
[INFO] [stdout] test smoothing::tests::ema_alpha_zero_freezes_after_first_sample ... ok
[INFO] [stdout] test smoothing::tests::drops_oldest_when_full ... ok
[INFO] [stdout] test smoothing::tests::ema_first_sample_initialises_to_raw_value ... ok
[INFO] [stdout] test smoothing::tests::ema_constant_input_converges ... ok
[INFO] [stdout] test rotary::tests::multiple_cw_detents_accumulate ... ok
[INFO] [stdout] test range_map::tests::endpoints_are_exact_for_non_zero_bounds ... ok
[INFO] [stdout] test rotary::tests::cw_then_ccw_returns_to_zero ... ok
[INFO] [stdout] test smoothing::tests::ema_reset_clears_state ... ok
[INFO] [stdout] test rotary::tests::half_step_config_counts_every_two_transitions ... ok
[INFO] [stdout] test rotary::tests::invalid_two_bit_jump_is_ignored ... ok
[INFO] [stdout] test range_map::tests::map_is_total_over_a_full_u16_sweep ... ok
[INFO] [stdout] test smoothing::tests::empty_average_is_zero ... ok
[INFO] [stdout] test smoothing::tests::ema_value_none_before_first_sample ... ok
[INFO] [stdout] test smoothing::tests::spike_absorption ... ok
[INFO] [stdout] test smoothing::tests::integer_truncation ... ok
[INFO] [stdout] test smoothing::tests::single_sample ... ok
[INFO] [stdout] test smoothing::tests::window_size_one_is_passthrough ... ok
[INFO] [stdout] test smoothing::tests::running_sum_reset_via_zero_samples ... ok
[INFO] [stdout] test tone::tests::accumulate_survives_zero_duration_notes_under_coarse_polling ... ok
[INFO] [stdout] test range_map::tests::monotonic_across_a_sweep ... ok
[INFO] [stdout] test smoothing::tests::max_u16_values_do_not_overflow ... ok
[INFO] [stdout] test smoothing::tests::fills_gradually ... ok
[INFO] [stdout] test tone::tests::inactive_before_start_is_silent_and_update_is_noop ... ok
[INFO] [stdout] test tone::tests::loop_mode_all_zero_duration_advances_one_step_per_update ... ok
[INFO] [stdout] test tone::tests::loop_wrap_schedule_survives_coarse_polling ... ok
[INFO] [stdout] test tone::tests::near_u64_max_oneshot_finishes ... ok
[INFO] [stdout] test tone::tests::near_u64_max_start_transitions_correctly ... ok
[INFO] [stdout] test tone::tests::loop_wraps_to_note_zero_and_never_finishes ... ok
[INFO] [stdout] test tone::tests::non_monotonic_now_saturates_without_panic_or_spurious_advance ... ok
[INFO] [stdout] test tone::tests::jitter_does_not_accumulate ... ok
[INFO] [stdout] test tone::tests::empty_slice_is_finished_immediately_and_never_panics ... ok
[INFO] [stdout] test tone::tests::basic_playback_and_note_changed_at_exact_boundary ... ok
[INFO] [stdout] test tone::tests::rest_outputs_silence_while_active_then_advances ... ok
[INFO] [stdout] test tone::tests::start_after_finished_resets_finished_flag ... ok
[INFO] [stdout] test tone::tests::start_while_active_restarts_from_note_zero_and_resets_baseline ... ok
[INFO] [stdout] test tone::tests::empty_slice_loop_mode_is_also_finished ... ok
[INFO] [stdout] test tone::tests::stop_silences_output_and_suspends_update ... ok
[INFO] [stdout] test tone::tests::zero_duration_note_advances_on_next_update_without_looping_forever ... ok
[INFO] [stdout] test tone::tests::rest_is_zero_frequency_and_amplitude ... ok
[INFO] [stdout] test tone::tests::zero_hz_note_with_nonzero_amplitude_outputs_silent ... ok
[INFO] [stdout] test tone::tests::oneshot_finishes_exactly_once_then_stays_silent ... ok
[INFO] [stdout] test touch::tests::axis_tie_goes_horizontal ... ok
[INFO] [stdout] test tone::tests::coarse_polling_preserves_schedule_without_drift ... ok
[INFO] [stdout] test touch::tests::coarse_poll_long_hold_emits_long_press_then_queued_up ... ok
[INFO] [stdout] test rotary::tests::sustained_rotation_never_overflows_accumulator ... ok
[INFO] [stdout] test tone::tests::new_stores_fields_verbatim ... ok
[INFO] [stdout] test tone::tests::one_tick_past_boundary_still_advances ... ok
[INFO] [stdout] test touch::tests::diagonal_at_epsilon_stays_within ... ok
[INFO] [stdout] test touch::tests::every_down_bracketed_by_up ... ok
[INFO] [stdout] test touch::tests::extreme_i16_span_swipe_no_overflow ... ok
[INFO] [stdout] test touch::tests::jitter_within_epsilon_emits_nothing ... ok
[INFO] [stdout] test touch::tests::long_press_suppresses_swipe ... ok
[INFO] [stdout] test touch::tests::long_press_suppresses_tap ... ok
[INFO] [stdout] test touch::tests::mid_range_drag_release_is_bare_up ... ok
[INFO] [stdout] test touch::tests::move_after_long_press_still_emitted ... ok
[INFO] [stdout] test touch::tests::move_emitted_and_reanchored ... ok
[INFO] [stdout] test touch::tests::move_past_epsilon_cancels_tap ... ok
[INFO] [stdout] test touch::tests::movement_cancels_long_press ... ok
[INFO] [stdout] test touch::tests::dominant_axis_selects_direction ... ok
[INFO] [stdout] test touch::tests::near_u64_max_ticks_long_press_confirmed ... ok
[INFO] [stdout] test touch::tests::down_edge_emits_down_with_point ... ok
[INFO] [stdout] test touch::tests::no_move_on_down_call ... ok
[INFO] [stdout] test touch::tests::down_on_drain_tick_is_delayed_not_lost ... ok
[INFO] [stdout] test touch::tests::swipe_wins_when_config_inverted ... ok
[INFO] [stdout] test touch::tests::now_backwards_saturates_no_long_press ... ok
[INFO] [stdout] test touch::tests::is_touched_and_position_track_state ... ok
[INFO] [stdout] test touch::tests::long_press_fires_once_mid_hold ... ok
[INFO] [stdout] test touch::tests::second_touch_gets_fresh_origin_and_flags ... ok
[INFO] [stdout] test touch::tests::swipe_all_four_directions ... ok
[INFO] [stdout] test touch::tests::up_edge_emits_up ... ok
[INFO] [stdout] test touch::tests::swipe_exact_min_distance_fires ... ok
[INFO] [stdout] test touch::tests::one_unit_short_is_not_swipe ... ok
[INFO] [stdout] test touch::tests::one_frame_flicker_emits_up_and_fresh_origin_on_recontact ... ok
[INFO] [stdout] test touch::tests::tap_sequence_down_up_then_tap_next_call ... ok
[INFO] [stdout] test touch::tests::long_press_exact_boundary ... ok
[INFO] [stdout] test rotary::tests::sustained_reverse_rotation_never_overflows_accumulator ... ok
[INFO] [stdout] test touch::tests::tap_at_exact_epsilon_still_tap ... ok
[INFO] [stdout] test rotary::tests::zero_steps_per_detent_panics - should panic ... ok
[INFO] [stdout] test range_map::tests::new_panics_when_in_min_equals_in_max - should panic ... ok
[INFO] [stdout] test smoothing::tests::ema_new_panics_on_nan_alpha - should panic ... ok
[INFO] [stderr]    Doc-tests tamer
[INFO] [stdout] test smoothing::tests::ema_new_panics_on_alpha_above_range - should panic ... ok
[INFO] [stdout] test smoothing::tests::ema_new_panics_on_alpha_below_range - should panic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 257 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.30s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 33 tests
[INFO] [stdout] test src/lib.rs - smoothing (line 140) ... ok
[INFO] [stdout] test src/lib.rs - button (line 226) ... ok
[INFO] [stdout] test src/lib.rs - debounce (line 101) ... ok
[INFO] [stdout] test src/button.rs - button::ButtonDecoder (line 112) ... ok
[INFO] [stdout] test src/lib.rs - hall (line 128) ... ok
[INFO] [stdout] test src/lib.rs - presence (line 153) ... ok
[INFO] [stdout] test src/lib.rs - morse (line 303) ... ok
[INFO] [stdout] test src/lib.rs - mpu6050 (line 236) ... ok
[INFO] [stdout] test src/debounce.rs - debounce::Debouncer (line 47) ... ok
[INFO] [stdout] test src/lib.rs - mpu6050 (line 257) ... ok
[INFO] [stdout] test src/lib.rs - range_map (line 162) ... ok
[INFO] [stdout] test src/debounce.rs - debounce::EdgeDetector (line 146) ... ok
[INFO] [stdout] test src/mpu6050.rs - mpu6050::RawReading (line 158) - compile fail ... ok
[INFO] [stdout] test src/lib.rs - morse (line 276) ... ok
[INFO] [stdout] test src/lib.rs - rotary (line 185) ... ok
[INFO] [stdout] test src/lib.rs - analog (line 112) ... ok
[INFO] [stdout] test src/lib.rs - tone (line 278) ... ok
[INFO] [stdout] test src/morse.rs - morse::MorseKeyer (line 363) ... ok
[INFO] [stdout] test src/mpu6050.rs - mpu6050::apply_offsets (line 271) ... ok
[INFO] [stdout] test src/lib.rs - tone (line 255) ... ok
[INFO] [stdout] test src/lib.rs - touch (line 332) ... ok
[INFO] [stdout] test src/mpu6050.rs - mpu6050::AccelCalibration (line 323) ... ok
[INFO] [stdout] test src/lib.rs - touch (line 357) ... ok
[INFO] [stdout] test src/lib.rs - touch (line 313) ... ok
[INFO] [stdout] test src/morse.rs - morse::MorseKeyer<'msg>::start (line 436) ... ok
[INFO] [stdout] test src/presence.rs - presence::PresenceSession (line 499) ... ok
[INFO] [stdout] test src/touch.rs - touch::TouchTracker (line 263) ... ok
[INFO] [stdout] test src/tone.rs - tone::ToneSequencer (line 188) ... ok
[INFO] [stdout] test src/morse.rs - morse::code_for (line 113) ... ok
[INFO] [stdout] test src/presence.rs - presence::PresenceSession (line 467) ... ok
[INFO] [stdout] test src/rotary.rs - rotary::QuadratureDecoder (line 80) ... ok
[INFO] [stdout] test src/presence.rs - presence::PresenceSession (line 420) ... ok
[INFO] [stdout] test src/smoothing.rs - smoothing::EmaFilter (line 146) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.37s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2", kill_on_drop: false }`
[INFO] [stdout] 7dfaac23e6c9203b0744f643ce493320bcd70c6c510012197bfb3a74fb05c7b2
