[INFO] cloning repository https://github.com/jv-gomes/claude-tray
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jv-gomes/claude-tray" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjv-gomes%2Fclaude-tray", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjv-gomes%2Fclaude-tray'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3a1c0751e8d752f8cfb33ae4824d379344300279
[INFO] testing jv-gomes/claude-tray against 1.99.0-beta.1+cargoflags=--release for beta-release-1.99-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjv-gomes%2Fclaude-tray" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-0-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/jv-gomes/claude-tray
[INFO] finished tweaking git repo https://github.com/jv-gomes/claude-tray
[INFO] tweaked toml for git repo https://github.com/jv-gomes/claude-tray written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jv-gomes/claude-tray on toolchain 1.99.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jv-gomes/claude-tray 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.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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2
[INFO] running `Command { std: "docker" "start" "1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2", 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" "1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2", 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" "1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling simd-adler32 v0.3.10
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling bytemuck v1.25.2
[INFO] [stderr]    Compiling strict-num v0.1.1
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling arrayref v0.3.9
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling arrayvec v0.7.8
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling tiny-skia-path v0.12.0
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling clap_builder v4.6.5
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling directories v6.0.0
[INFO] [stderr]    Compiling tiny-skia v0.12.0
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling async-trait v0.1.91
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling clap v4.6.5
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling claude-tray-core v0.0.0 (/opt/rustwide/workdir/crates/claude-tray-core)
[INFO] [stderr]    Compiling claude-tray-icon v0.0.0 (/opt/rustwide/workdir/crates/claude-tray-icon)
[INFO] [stderr]    Compiling claude-tray-provider v0.0.0 (/opt/rustwide/workdir/crates/claude-tray-provider)
[INFO] [stderr]    Compiling claude-tray v0.0.0 (/opt/rustwide/workdir/crates/claude-tray)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 33.62s
[INFO] running `Command { std: "docker" "inspect" "1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2", 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" "1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling simd-adler32 v0.3.10
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling bytemuck v1.25.2
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling strict-num v0.1.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling arrayref v0.3.9
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling tiny-skia-path v0.12.0
[INFO] [stderr]    Compiling arrayvec v0.7.8
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling clap_builder v4.6.5
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling directories v6.0.0
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling rand v0.9.5
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling tiny-skia v0.12.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling clap v4.6.5
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling claude-tray-core v0.0.0 (/opt/rustwide/workdir/crates/claude-tray-core)
[INFO] [stderr]    Compiling claude-tray-icon v0.0.0 (/opt/rustwide/workdir/crates/claude-tray-icon)
[INFO] [stderr]    Compiling claude-tray-provider v0.0.0 (/opt/rustwide/workdir/crates/claude-tray-provider)
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling claude-tray v0.0.0 (/opt/rustwide/workdir/crates/claude-tray)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 40.54s
[INFO] running `Command { std: "docker" "inspect" "1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2", 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" "1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.07s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/deps/claude_tray-690cc9fd65814d46)
[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] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/claude_tray_core-5dd4139dede7a793)
[INFO] [stdout] 
[INFO] [stdout] running 88 tests
[INFO] [stdout] test battery::tests::filled_and_empty_segments_account_for_the_whole_icon ... ok
[INFO] [stdout] test battery::tests::only_an_exact_zero_draws_empty ... ok
[INFO] [stdout] test battery::tests::quantises_to_ten_segments ... ok
[INFO] [stdout] test battery::tests::renders_the_way_the_readme_draws_it ... ok
[INFO] [stdout] test battery::tests::rounds_down_so_only_a_true_full_looks_full ... ok
[INFO] [stdout] test battery::tests::every_level_is_within_the_icon ... ok
[INFO] [stdout] test battery::tests::quantisation_is_monotonic ... ok
[INFO] [stdout] test color::tests::a_missing_figure_is_unknown_rather_than_red ... ok
[INFO] [stdout] test color::tests::bands_are_inclusive_of_their_thresholds ... ok
[INFO] [stdout] test color::tests::custom_thresholds_move_the_bands ... ok
[INFO] [stdout] test color::tests::the_defaults_are_the_ones_from_the_spec ... ok
[INFO] [stdout] test color::tests::thresholds_must_be_strictly_descending ... ok
[INFO] [stdout] test duration::tests::a_missing_duration_is_a_dash ... ok
[INFO] [stdout] test duration::tests::a_very_long_duration_still_reads_in_days ... ok
[INFO] [stdout] test duration::tests::a_zero_minor_unit_is_left_off ... ok
[INFO] [stdout] test duration::tests::reads_the_way_a_person_would_say_it ... ok
[INFO] [stdout] test duration::tests::seconds_are_truncated_not_shown ... ok
[INFO] [stdout] test hysteresis::tests::a_real_fall_gets_through ... ok
[INFO] [stdout] test hysteresis::tests::a_slow_drift_is_not_suppressed_forever ... ok
[INFO] [stdout] test hysteresis::tests::a_zero_margin_passes_everything_through ... ok
[INFO] [stdout] test hysteresis::tests::an_oscillating_figure_holds_its_band ... ok
[INFO] [stdout] test hysteresis::tests::it_wraps_the_battery_quantiser_too ... ok
[INFO] [stdout] test hysteresis::tests::resetting_takes_the_next_reading_at_face_value ... ok
[INFO] [stdout] test hysteresis::tests::the_ends_of_the_scale_still_move ... ok
[INFO] [stdout] test notification::tests::a_disabled_rule_stays_quiet ... ok
[INFO] [stdout] test hysteresis::tests::the_first_reading_is_always_taken_at_face_value ... ok
[INFO] [stdout] test notification::tests::a_flapping_figure_is_silenced_by_the_cooldown ... ok
[INFO] [stdout] test hysteresis::tests::rising_past_a_boundary_needs_the_margin_too ... ok
[INFO] [stdout] test notification::tests::a_snapshot_without_a_measurable_window_says_nothing ... ok
[INFO] [stdout] test notification::tests::a_reset_is_detected_from_the_refill_time_moving_forward ... ok
[INFO] [stdout] test notification::tests::an_unchanged_refill_time_is_not_a_reset ... ok
[INFO] [stdout] test notification::tests::each_window_resets_on_its_own_schedule ... ok
[INFO] [stdout] test notification::tests::landing_exactly_on_a_threshold_fires ... ok
[INFO] [stdout] test notification::tests::re_crossing_after_a_reset_fires_again ... ok
[INFO] [stdout] test notification::tests::resetting_the_engine_makes_the_next_reading_a_starting_point ... ok
[INFO] [stdout] test notification::tests::the_cooldown_expires ... ok
[INFO] [stdout] test notification::tests::a_large_fall_announces_only_the_most_serious_threshold ... ok
[INFO] [stdout] test notification::tests::crossing_up_does_not_fire ... ok
[INFO] [stdout] test notification::tests::the_default_rules_are_the_ones_from_the_spec ... ok
[INFO] [stdout] test notification::tests::the_first_reading_never_fires ... ok
[INFO] [stdout] test notification::tests::crossing_down_fires_once ... ok
[INFO] [stdout] test percent::tests::deserialisation_validates ... ok
[INFO] [stdout] test percent::tests::accepts_the_bounds ... ok
[INFO] [stdout] test percent::tests::negative_zero_equals_zero ... ok
[INFO] [stdout] test percent::tests::displays_rounded_and_unitless ... ok
[INFO] [stdout] test percent::tests::orders_by_value ... ok
[INFO] [stdout] test percent::tests::rejects_nan_in_both_constructors ... ok
[INFO] [stdout] test percent::tests::rejects_out_of_range ... ok
[INFO] [stdout] test percent::tests::constructed_values_are_always_in_range ... ok
[INFO] [stdout] test percent::tests::round_trips_through_json ... ok
[INFO] [stdout] test percent::tests::new_accepts_exactly_the_valid_range ... ok
[INFO] [stdout] test percent::tests::saturating_clamps_instead_of_failing ... ok
[INFO] [stdout] test plan::tests::an_unrecognised_plan_survives_persistence ... ok
[INFO] [stdout] test plan::tests::display_and_wire_names_differ_where_it_matters ... ok
[INFO] [stdout] test plan::tests::keeps_unknown_names_verbatim ... ok
[INFO] [stdout] test plan::tests::parses_known_names_case_insensitively ... ok
[INFO] [stdout] test plan::tests::round_trips_through_json_as_a_bare_string ... ok
[INFO] [stdout] test snapshot::tests::a_future_dated_snapshot_is_not_stale ... ok
[INFO] [stdout] test percent::tests::saturating_only_rejects_nan ... ok
[INFO] [stdout] test snapshot::tests::a_snapshot_with_no_measurable_window_has_no_percentage ... ok
[INFO] [stdout] test snapshot::tests::a_snapshot_with_no_windows_has_nothing_measurable ... ok
[INFO] [stdout] test snapshot::tests::finds_a_window_by_kind ... ok
[INFO] [stdout] test snapshot::tests::measurable_windows_skip_the_ones_without_limits ... ok
[INFO] [stdout] test snapshot::tests::round_trips_through_json ... ok
[INFO] [stdout] test snapshot::tests::staleness_is_measured_against_a_supplied_now ... ok
[INFO] [stdout] test snapshot::tests::the_countdown_follows_the_same_window_as_the_percentage ... ok
[INFO] [stdout] test snapshot::tests::the_most_constrained_window_wins ... ok
[INFO] [stdout] test snapshot::tests::timestamps_persist_as_utc ... ok
[INFO] [stdout] test state::tests::both_ok_and_stale_expose_their_snapshot ... ok
[INFO] [stdout] test state::tests::errors_read_as_plain_sentences ... ok
[INFO] [stdout] test state::tests::going_stale_leaves_other_states_alone ... ok
[INFO] [stdout] test state::tests::only_a_missing_login_needs_the_user ... ok
[INFO] [stdout] test state::tests::only_the_error_state_carries_an_error ... ok
[INFO] [stdout] test state::tests::retrying_a_rate_limit_or_a_missing_login_is_pointless ... ok
[INFO] [stdout] test state::tests::starts_out_knowing_nothing ... ok
[INFO] [stdout] test window::tests::a_bounded_window_is_measurable ... ok
[INFO] [stdout] test window::tests::a_passed_reset_time_reads_as_zero ... ok
[INFO] [stdout] test window::tests::a_window_without_a_reset_time_has_no_countdown ... ok
[INFO] [stdout] test window::tests::a_zero_limit_counts_as_unknown ... ok
[INFO] [stdout] test window::tests::an_unbounded_window_is_not_measurable ... ok
[INFO] [stdout] test window::tests::an_unmeasurable_window_has_no_remaining_percent ... ok
[INFO] [stdout] test window::tests::an_untouched_window_is_full ... ok
[INFO] [stdout] test window::tests::kind_serialises_in_snake_case ... ok
[INFO] [stdout] test window::tests::overage_reads_as_empty_rather_than_negative ... ok
[INFO] [stdout] test window::tests::remaining_percent_is_the_unused_share_of_the_limit ... ok
[INFO] [stdout] test window::tests::round_trips_through_json ... ok
[INFO] [stdout] test window::tests::time_until_reset_counts_down_to_the_refill ... ok
[INFO] [stdout] test window::tests::with_reset_attaches_a_refill_time ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 88 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/claude_tray_icon-bab7cc68a0f27276)
[INFO] [stdout] 
[INFO] [stdout] running 43 tests
[INFO] [stdout] test render_tests::a_theme_change_changes_the_pixels ... ok
[INFO] [stdout] test render_tests::a_stale_reading_is_drawn_faded ... ok
[INFO] [stdout] test render_tests::clearing_the_cache_empties_it ... ok
[INFO] [stdout] test render_tests::an_icon_is_square_and_the_size_that_was_asked_for ... ok
[INFO] [stdout] test render_tests::an_unknown_state_draws_less_than_a_reading ... ok
[INFO] [stdout] test render_tests::nothing_left_is_drawn_in_the_alarm_colour ... ok
[INFO] [stdout] test render_tests::loading_draws_something_other_than_a_fill ... ok
[INFO] [stdout] test render_tests::the_buffer_is_straight_alpha_not_premultiplied ... ok
[INFO] [stdout] test render_tests::something_is_actually_drawn_at_every_size ... ok
[INFO] [stdout] test render_tests::the_cache_returns_the_same_icon_rather_than_redrawing ... ok
[INFO] [stdout] test render_tests::a_png_round_trips_back_to_the_same_pixels ... ok
[INFO] [stdout] test render_tests::the_same_spec_always_draws_the_same_pixels ... ok
[INFO] [stdout] test spec::tests::a_nonsense_scale_factor_still_produces_a_drawable_size ... ok
[INFO] [stdout] test spec::tests::a_reading_becomes_a_level_and_a_colour ... ok
[INFO] [stdout] test render_tests::the_error_badge_is_drawn_over_the_reading ... ok
[INFO] [stdout] test render_tests::the_template_theme_is_black_and_alpha_only ... ok
[INFO] [stdout] test spec::tests::a_scale_factor_becomes_physical_pixels ... ok
[INFO] [stdout] test spec::tests::a_snapshot_without_a_percentage_is_unknown ... ok
[INFO] [stdout] test spec::tests::a_stale_reading_keeps_its_level_and_colour ... ok
[INFO] [stdout] test render_tests::the_same_percentage_draws_the_same_proportion_at_every_size ... ok
[INFO] [stdout] test spec::tests::equal_specs_hash_alike_so_the_cache_can_key_on_them ... ok
[INFO] [stdout] test spec::tests::every_nominal_size_is_drawable ... ok
[INFO] [stdout] test render_tests::more_remaining_never_draws_less_fill ... ok
[INFO] [stdout] test spec::tests::from_percent_describes_an_ordinary_reading ... ok
[INFO] [stdout] test spec::tests::having_no_figure_is_drawn_as_an_outline_not_an_empty_battery ... ok
[INFO] [stdout] test spec::tests::loading_and_error_carry_their_own_badge ... ok
[INFO] [stdout] test spec::tests::loading_is_not_drawn_as_an_outline ... ok
[INFO] [stdout] test spec::tests::sizes_outside_the_drawable_range_are_rejected ... ok
[INFO] [stdout] test render_tests::a_single_render_stays_well_inside_the_budget ... ok
[INFO] [stdout] test theme::tests::an_accent_the_platform_will_not_give_falls_back ... ok
[INFO] [stdout] test theme::tests::an_explicit_preference_ignores_the_panel ... ok
[INFO] [stdout] test theme::tests::auto_follows_the_panel ... ok
[INFO] [stdout] test theme::tests::contrast_runs_from_one_to_twenty_one ... ok
[INFO] [stdout] test theme::tests::every_band_holds_contrast_on_both_panels ... ok
[INFO] [stdout] test theme::tests::monochrome_and_template_hold_contrast_too ... ok
[INFO] [stdout] test theme::tests::hex_unpacks_the_way_it_reads ... ok
[INFO] [stdout] test theme::tests::monochrome_draws_one_colour_for_every_band ... ok
[INFO] [stdout] test theme::tests::the_accent_is_ignored_unless_it_was_asked_for ... ok
[INFO] [stdout] test theme::tests::the_accent_preference_uses_the_colour_the_platform_gave ... ok
[INFO] [stdout] test theme::tests::the_safe_palette_still_holds_contrast ... ok
[INFO] [stdout] test theme::tests::the_safe_palette_survives_red_green_deficiency ... ok
[INFO] [stdout] test theme::tests::the_uncoloured_themes_say_so ... ok
[INFO] [stdout] test render_tests::the_cache_stays_bounded ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 43 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/golden.rs (/opt/rustwide/target/release/deps/golden-a01b556aa4e7549d)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test an_icon_compares_equal_to_itself ... ok
[INFO] [stdout] test the_tolerance_still_catches_a_real_change ... ok
[INFO] [stdout] test every_state_matches_its_reference ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/claude_tray_provider-52ecba0b2f5c7349)
[INFO] [stdout] 
[INFO] [stdout] running 76 tests
[INFO] [stdout] test error::tests::a_source_that_gave_no_delay_leaves_the_backoff_to_the_caller ... ok
[INFO] [stdout] test error::tests::a_rate_limit_is_retryable_but_carries_a_delay ... ok
[INFO] [stdout] test error::tests::the_message_is_for_logs_and_the_kind_is_for_the_tooltip ... ok
[INFO] [stdout] test fallback::tests::a_chain_is_itself_a_provider ... ok
[INFO] [stdout] test error::tests::the_policy_can_be_overridden ... ok
[INFO] [stdout] test fallback::tests::a_chain_of_hopeless_failures_is_not_retryable ... ok
[INFO] [stdout] test error::tests::the_retry_policy_follows_the_kind_by_default ... ok
[INFO] [stdout] test fallback::tests::a_chain_of_one_behaves_like_the_provider_itself ... ok
[INFO] [stdout] test fallback::tests::a_shared_rate_limit_waits_for_the_earliest_member ... ok
[INFO] [stdout] test fallback::tests::an_empty_chain_claims_nothing ... ok
[INFO] [stdout] test fallback::tests::an_empty_chain_fails_rather_than_panicking ... ok
[INFO] [stdout] test fallback::tests::capabilities_are_the_union_of_the_members ... ok
[INFO] [stdout] test fallback::tests::health_collects_every_reason_when_nothing_can_serve ... ok
[INFO] [stdout] test fallback::tests::health_is_ready_when_the_preferred_provider_is ... ok
[INFO] [stdout] test fallback::tests::health_says_so_when_running_on_a_fallback ... ok
[INFO] [stdout] test fallback::tests::later_providers_are_not_consulted_after_a_success ... ok
[INFO] [stdout] test fallback::tests::one_member_ready_now_means_no_mandated_wait ... ok
[INFO] [stdout] test fallback::tests::the_chain_is_retryable_when_any_member_is ... ok
[INFO] [stdout] test fallback::tests::the_chain_reports_its_own_id ... ok
[INFO] [stdout] test fallback::tests::the_first_provider_that_works_wins ... ok
[INFO] [stdout] test fallback::tests::total_failure_reports_the_preferred_provider_s_kind ... ok
[INFO] [stdout] test local::tests::a_directory_without_transcripts_reads_as_not_signed_in ... ok
[INFO] [stdout] test local::tests::a_discovered_provider_uses_the_configured_id ... ok
[INFO] [stdout] test local::tests::a_missing_directory_reads_as_not_signed_in ... ok
[INFO] [stdout] test local::tests::a_provider_with_no_windows_is_rejected ... ok
[INFO] [stdout] test local::tests::an_empty_override_falls_back_to_the_home_directory ... ok
[INFO] [stdout] test local::tests::an_override_wins_over_the_home_directory ... ok
[INFO] [stdout] test local::tests::an_unscanned_provider_has_nothing_to_report ... ok
[INFO] [stdout] test local::tests::capabilities_admit_there_is_no_percentage ... ok
[INFO] [stdout] test local::tests::a_deleted_transcript_stops_counting ... ok
[INFO] [stdout] test local::tests::a_half_written_line_is_left_for_the_next_refresh ... ok
[INFO] [stdout] test local::tests::a_refresh_reads_only_what_was_appended ... ok
[INFO] [stdout] test local::tests::health_turns_degraded_once_a_scan_finds_nothing_recognisable ... ok
[INFO] [stdout] test local::tests::damaged_records_are_skipped_rather_than_fatal ... ok
[INFO] [stdout] test mock::tests::a_pinned_capture_time_makes_snapshots_reproducible ... ok
[INFO] [stdout] test mock::tests::a_fixed_provider_reports_the_same_figure_forever ... ok
[INFO] [stdout] test local::tests::cache_reads_are_not_counted ... ok
[INFO] [stdout] test local::tests::the_windows_can_be_reconfigured ... ok
[INFO] [stdout] test local::tests::transcripts_with_no_usage_at_all_are_reported_as_a_parse_failure ... ok
[INFO] [stdout] test local::tests::it_reports_the_model_from_the_most_recent_record ... ok
[INFO] [stdout] test local::tests::it_totals_tokens_per_rolling_window ... ok
[INFO] [stdout] test local::tests::it_does_not_claim_to_know_the_plan ... ok
[INFO] [stdout] test local::tests::no_window_claims_a_limit_or_a_reset_time ... ok
[INFO] [stdout] test mock::tests::a_recoverable_fault_is_degraded_rather_than_unavailable ... ok
[INFO] [stdout] test mock::tests::a_requested_figure_survives_the_round_trip ... ok
[INFO] [stdout] test local::tests::a_truncated_transcript_is_re_read_from_the_start ... ok
[INFO] [stdout] test mock::tests::a_rate_limit_can_carry_the_delay_the_source_asked_for ... ok
[INFO] [stdout] test mock::tests::a_script_can_mix_readings_and_failures ... ok
[INFO] [stdout] test mock::tests::a_finished_script_holds_its_last_step ... ok
[INFO] [stdout] test mock::tests::a_script_walks_one_step_per_fetch ... ok
[INFO] [stdout] test local::tests::records_outside_every_window_are_forgotten ... ok
[INFO] [stdout] test mock::tests::a_snapshot_carries_the_provider_that_made_it ... ok
[INFO] [stdout] test mock::tests::a_step_rejects_a_figure_that_is_not_a_percentage ... ok
[INFO] [stdout] test local::tests::an_unchanged_transcript_is_not_read_again ... ok
[INFO] [stdout] test mock::tests::a_repeating_script_starts_over ... ok
[INFO] [stdout] test mock::tests::an_empty_script_fails_rather_than_panicking ... ok
[INFO] [stdout] test mock::tests::an_unpinned_provider_reads_the_clock ... ok
[INFO] [stdout] test mock::tests::capabilities_track_what_the_mock_actually_reports ... ok
[INFO] [stdout] test mock::tests::faults_arrive_as_the_kinds_the_tray_renders ... ok
[INFO] [stdout] test mock::tests::health_describes_the_next_fetch_without_consuming_it ... ok
[INFO] [stdout] test mock::tests::it_can_be_used_through_the_trait_object ... ok
[INFO] [stdout] test mock::tests::the_boundaries_come_back_exactly ... ok
[INFO] [stdout] test mock::tests::the_plan_and_model_are_configurable ... ok
[INFO] [stdout] test provider::tests::a_provider_reporting_nothing_declares_nothing ... ok
[INFO] [stdout] test provider::tests::a_window_with_a_limit_is_a_percentage ... ok
[INFO] [stdout] test provider::tests::degraded_is_still_worth_trying ... ok
[INFO] [stdout] test provider::tests::windows_without_limits_are_not_a_percentage ... ok
[INFO] [stdout] test registry::tests::a_chain_can_be_built_straight_from_ids ... ok
[INFO] [stdout] test registry::tests::a_chain_of_nothing_is_rejected ... ok
[INFO] [stdout] test registry::tests::a_duplicate_id_is_rejected ... ok
[INFO] [stdout] test registry::tests::an_unknown_id_names_the_ones_that_exist ... ok
[INFO] [stdout] test registry::tests::ids_come_back_in_registration_order ... ok
[INFO] [stdout] test registry::tests::it_builds_in_one_expression ... ok
[INFO] [stdout] test registry::tests::one_bad_id_fails_the_whole_resolution ... ok
[INFO] [stdout] test registry::tests::resolving_keeps_the_order_asked_for ... ok
[INFO] [stdout] test registry::tests::an_empty_registry_resolves_nothing ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 76 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests claude_tray_core
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test crates/claude-tray-core/src/duration.rs - duration::humanize_duration (line 19) ... ok
[INFO] [stdout] test crates/claude-tray-core/src/notification.rs - notification::NotificationEngine (line 84) ... ok
[INFO] [stdout] test crates/claude-tray-core/src/plan.rs - plan::Plan (line 15) ... ok
[INFO] [stdout] test crates/claude-tray-core/src/percent.rs - percent::Percent (line 19) ... ok
[INFO] [stdout] test crates/claude-tray-core/src/hysteresis.rs - hysteresis::Hysteresis (line 23) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.82s; merged doctests compilation took 0.82s
[INFO] [stderr]    Doc-tests claude_tray_icon
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test crates/claude-tray-icon/src/lib.rs - (line 7) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.82s; merged doctests compilation took 0.82s
[INFO] [stderr]    Doc-tests claude_tray_provider
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test crates/claude-tray-provider/src/mock.rs - mock::MockProvider (line 87) ... ok
[INFO] [stdout] test crates/claude-tray-provider/src/fallback.rs - fallback::FallbackChain (line 23) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.90s; merged doctests compilation took 0.90s
[INFO] running `Command { std: "docker" "inspect" "1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2", kill_on_drop: false }`
[INFO] [stdout] 1e19e38575827e212f3716f5270e84a34b7b80efcbe632a0574996f609b5fff2
