[INFO] fetching crate sparklebios 0.1.1...
[INFO] testing sparklebios-0.1.1 against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate sparklebios 0.1.1 into /workspace/builds/worker-7-tc1/source
[INFO] started tweaking crates.io crate sparklebios 0.1.1
[INFO] finished tweaking crates.io crate sparklebios 0.1.1
[INFO] tweaked toml for crates.io crate sparklebios 0.1.1 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate sparklebios 0.1.1 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 sparklebios 0.1.1 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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054
[INFO] running `Command { std: "docker" "start" "6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054", 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" "6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054" "/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" "6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054", 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" "6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling unicode-ident v1.0.26
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling clap_lex v1.1.1
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling winnow v1.0.4
[INFO] [stderr]    Compiling toml_writer v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling clap_builder v4.6.7
[INFO] [stderr]    Compiling toml_parser v1.1.3+spec-1.1.0
[INFO] [stderr]    Compiling syn v3.0.6
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling clap_derive v4.6.7
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling toml v1.1.6+spec-1.1.0
[INFO] [stderr]    Compiling clap v4.6.7
[INFO] [stderr]    Compiling sparklebios v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 59.62s
[INFO] running `Command { std: "docker" "inspect" "6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054", 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" "6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling rustix v1.1.5
[INFO] [stderr]    Compiling aho-corasick v1.1.5
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling cfg-if v1.0.5
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling bitflags v2.13.2
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling bstr v1.13.1
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling sparklebios v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 23s
[INFO] running `Command { std: "docker" "inspect" "6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054", 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" "6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.09s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/sparklebios-7ac798f58daf6ab8)
[INFO] [stdout] 
[INFO] [stdout] running 641 tests
[INFO] [stdout] test boot::tests::graphics_for_auto_follows_whichever_protocol_the_terminal_speaks ... ok
[INFO] [stdout] test boot::tests::calendar_line_for_applies_only_when_told_to_even_on_a_real_calendar_date ... ok
[INFO] [stdout] test boot::tests::calendar_line_for_is_none_on_an_ordinary_day_regardless_of_whether_it_applies ... ok
[INFO] [stdout] test boot::tests::fast_renders_byte_for_byte_the_same_as_the_calendar_oblivious_render_on_a_real_calendar_date ... ok
[INFO] [stdout] test boot::tests::graphics_for_off_is_always_none_whatever_the_terminal_speaks ... ok
[INFO] [stdout] test boot::tests::memory_count_sound_is_none_with_no_sounds_dir ... ok
[INFO] [stdout] test boot::tests::memory_count_sound_builds_for_a_hand_typed_preview_the_same_way_as_a_real_full_boot ... ok
[INFO] [stdout] test boot::tests::a_zero_counter_never_becomes_a_fact ... ok
[INFO] [stdout] test cache::tests::fresh_keeps_a_finding_inside_its_ttl_and_drops_one_past_it ... ok
[INFO] [stdout] test boot::tests::resolve_graphics_pref_env_override_reads_retired_and_unknown_values_as_auto ... ok
[INFO] [stdout] test boot::tests::memory_count_sound_only_builds_for_a_full_boot_at_ultra_with_a_player_and_a_sounds_dir ... ok
[INFO] [stdout] test boot::tests::resolve_graphics_pref_falls_back_to_the_config_value_with_no_env_override ... ok
[INFO] [stdout] test boot::tests::resolve_graphics_pref_env_override_wins_and_parses_both_values ... ok
[INFO] [stdout] test checks::battery::tests::capacity_is_a_percentage_of_design_and_never_over_a_hundred ... ok
[INFO] [stdout] test boot::tests::resolve_sprinkles_falls_back_to_config_with_no_env_and_env_wins_including_when_unknown ... ok
[INFO] [stdout] test boot::tests::quiet_never_calls_the_calendar_override ... ok
[INFO] [stdout] test boot::tests::memory_count_sound_is_none_off_full_never_mind_the_level ... ok
[INFO] [stdout] test cache::tests::is_stale_at_the_boundary_and_for_zero_or_future_generated ... ok
[INFO] [stdout] test cache::tests::save_then_load_round_trips_and_creates_the_directory ... ok
[INFO] [stdout] test boot::tests::memory_count_sound_is_none_with_no_player ... ok
[INFO] [stdout] test checks::battery::tests::a_healthy_battery_has_no_step_and_says_nothing ... ok
[INFO] [stdout] test boot::tests::memory_count_sound_is_none_below_ultra_even_on_a_full_boot ... ok
[INFO] [stdout] test checks::battery::tests::a_step_already_spoken_at_does_not_speak_again ... ok
[INFO] [stdout] test checks::dotfiles::tests::a_home_directory_that_is_itself_a_repository_counts_last ... ok
[INFO] [stdout] test checks::battery::tests::each_ten_point_band_below_eighty_is_its_own_step ... ok
[INFO] [stdout] test cache::tests::missing_and_corrupt_files_load_as_default ... ok
[INFO] [stdout] test boot::tests::the_best_memory_test_is_a_fact_once_there_is_one ... ok
[INFO] [stdout] test checks::disk::tests::a_disk_filling_fast_enough_to_matter_reports_when_and_how_fast ... ok
[INFO] [stdout] test checks::battery::tests::a_missing_design_capacity_is_not_a_battery_we_can_report_on ... ok
[INFO] [stdout] test checks::disk::tests::a_disk_filling_slowly_is_still_too_far_off_to_mention ... ok
[INFO] [stdout] test checks::battery::tests::the_real_ioreg_shape_is_parsed ... ok
[INFO] [stdout] test checks::disk::tests::one_reading_a_day_is_kept_and_the_oldest_fall_off ... ok
[INFO] [stdout] test checks::disk::tests::a_disk_hours_from_full_still_reads_as_a_day_rather_than_zero ... ok
[INFO] [stdout] test checks::disk::tests::an_unreadable_disk_leaves_the_history_alone ... ok
[INFO] [stdout] test checks::disk::tests::a_second_reading_the_same_day_replaces_the_first ... ok
[INFO] [stdout] test checks::ports::tests::a_system_command_is_dropped_even_on_an_allowed_port_while_others_survive ... ok
[INFO] [stdout] test checks::ports::tests::format_age_exact_strings ... ok
[INFO] [stdout] test checks::ports::tests::port_5000_is_no_longer_accepted ... ok
[INFO] [stdout] test checks::ports::tests::parses_records_and_drops_ports_not_on_the_list ... ok
[INFO] [stdout] test checks::disk::tests::a_disk_that_is_not_filling_says_nothing ... ok
[INFO] [stdout] test checks::ports::tests::parse_etime_handles_all_three_shapes ... ok
[INFO] [stdout] test checks::dotfiles::tests::the_conventional_names_are_found_in_order ... ok
[INFO] [stdout] test checks::disk::tests::fewer_than_three_readings_is_not_a_trend ... ok
[INFO] [stdout] test checks::projects::tests::a_repo_is_not_descended_into ... ok
[INFO] [stdout] test checks::ports::tests::pick_oldest_requires_the_eight_hour_threshold_and_picks_the_oldest ... ok
[INFO] [stdout] test checks::dotfiles::tests::a_home_with_no_dotfiles_repository_anywhere_yields_nothing ... ok
[INFO] [stdout] test checks::dotfiles::tests::no_home_means_no_finding ... ok
[INFO] [stdout] test checks::projects::tests::a_directory_with_no_git_is_ignored ... ok
[INFO] [stdout] test checks::projects::tests::a_missing_project_dir_does_not_panic_or_drop_other_roots ... ok
[INFO] [stdout] test checks::ports::tests::pick_oldest_is_none_when_nothing_qualifies ... ok
[INFO] [stdout] test checks::projects::tests::join_capped_drops_devices_from_the_end_without_mid_word_truncation ... ok
[INFO] [stdout] test checks::projects::tests::a_depth_two_repo_is_found ... ok
[INFO] [stdout] test checks::secrets::tests::hits ... ok
[INFO] [stdout] test checks::secrets::tests::misses ... ok
[INFO] [stdout] test checks::runtimes::tests::the_first_dotted_number_is_pulled_out_of_a_version_line ... ok
[INFO] [stdout] test checks::projects::tests::most_recent_repo_comes_first ... ok
[INFO] [stdout] test checks::runtimes::tests::a_repository_that_pins_nothing_yields_no_finding ... ok
[INFO] [stdout] test checks::runtimes::tests::no_devices_means_no_finding ... ok
[INFO] [stdout] test checks::projects::tests::a_repo_reachable_through_two_different_roots_appears_once ... ok
[INFO] [stdout] test checks::runtimes::tests::a_tool_versions_entry_with_no_number_is_skipped ... ok
[INFO] [stdout] test checks::runtimes::tests::tool_versions_lines_are_read_for_the_runtimes_we_know ... ok
[INFO] [stdout] test cli::tests::ensure_ultra_sounds_with_no_directory_does_nothing_and_never_panics ... ok
[INFO] [stdout] test checks::runtimes::tests::a_rust_toolchain_channel_is_read_only_when_it_pins_a_number ... ok
[INFO] [stdout] test checks::stashes::tests::age_is_worded_in_days_then_months ... ok
[INFO] [stdout] test cli::tests::sprinkles_set_offers_a_preview_for_every_level_but_off ... ok
[INFO] [stdout] test checks::stashes::tests::no_devices_means_no_finding ... ok
[INFO] [stdout] test checks::tests::plural_produces_the_one_and_many_forms ... ok
[INFO] [stdout] test cli::tests::find_on_path_ignores_a_matching_name_that_is_not_executable ... ok
[INFO] [stdout] test checks::projects::tests::a_root_reached_by_two_paths_yields_each_repo_once ... ok
[INFO] [stdout] test cli::tests::find_on_path_returns_the_earliest_candidate_present_in_any_path_directory ... ok
[INFO] [stdout] test checks::runtimes::tests::the_pinning_files_are_all_read ... ok
[INFO] [stdout] test checks::runtimes::tests::a_pin_is_satisfied_by_a_more_precise_answer_but_not_a_different_one ... ok
[INFO] [stdout] test cli::tests::find_on_path_is_none_when_nothing_on_path_matches_or_path_is_unset ... ok
[INFO] [stdout] test cli::tests::parse_sprinkle_level_accepts_exactly_the_four_known_levels ... ok
[INFO] [stdout] test clock::tests::day_of_year_256_lands_on_13_september_in_a_common_year_and_12_in_a_leap_year ... ok
[INFO] [stdout] test checks::projects::tests::ordering_is_most_recent_first_after_dedupe ... ok
[INFO] [stdout] test clock::tests::days_until_y2038_matches_a_known_date_by_hand ... ok
[INFO] [stdout] test clock::tests::day_of_year_counts_the_day_before_and_after_the_leap_day_boundary ... ok
[INFO] [stdout] test clock::tests::day_of_year_matches_a_known_date_by_hand ... ok
[INFO] [stdout] test clock::tests::days_until_y2038_counts_the_day_before_and_after_the_boundary ... ok
[INFO] [stdout] test clock::tests::day_string_is_iso_shaped ... ok
[INFO] [stdout] test cli::tests::sprinkles_set_ultra_sound_line_is_the_exact_line_for_ultra_and_none_for_every_other_level ... ok
[INFO] [stdout] test clock::tests::days_until_y2038_is_zero_on_the_day_itself_by_hand ... ok
[INFO] [stdout] test clock::tests::weekday_name_matches_a_known_thursday_by_hand ... ok
[INFO] [stdout] test clock::tests::consecutive_days_differ ... ok
[INFO] [stdout] test clock::tests::weekday_name_counts_the_day_before_and_after_a_week_boundary ... ok
[INFO] [stdout] test clock::tests::weekday_name_finds_friday_the_13th_and_a_13th_that_is_not_friday ... ok
[INFO] [stdout] test config::tests::flavour_defaults_to_unicorn_and_is_read ... ok
[INFO] [stdout] test config::tests::a_missing_file_yields_the_default ... ok
[INFO] [stdout] test config::tests::an_unknown_sprinkles_value_reads_as_off ... ok
[INFO] [stdout] test config::tests::no_dir_yields_the_default ... ok
[INFO] [stdout] test config::tests::an_invalid_file_yields_the_default ... ok
[INFO] [stdout] test config::tests::project_dirs_defaults_to_empty_and_is_read ... ok
[INFO] [stdout] test config::tests::checks_defaults_to_true_and_is_read ... ok
[INFO] [stdout] test config::tests::ensure_exists_creates_the_template_when_absent ... ok
[INFO] [stdout] test config::tests::reset_over_a_different_file_leaves_a_backup ... ok
[INFO] [stdout] test config::tests::reads_animate ... ok
[INFO] [stdout] test config::tests::graphics_defaults_to_auto_and_reads_auto_and_off ... ok
[INFO] [stdout] test config::tests::reset_writes_the_template ... ok
[INFO] [stdout] test config::tests::reset_leaves_no_temp_file_behind ... ok
[INFO] [stdout] test config::tests::graphics_reads_the_retired_and_unknown_values_as_auto ... ok
[INFO] [stdout] test config::tests::resolve_ultra_chance_falls_back_to_config_with_no_env_and_env_wins_including_when_garbage ... ok
[INFO] [stdout] test config::tests::set_flavour_creates_the_file_and_directory ... ok
[INFO] [stdout] test config::tests::reset_over_a_file_identical_to_the_template_writes_no_backup ... ok
[INFO] [stdout] test checks::stashes::tests::a_repository_with_no_stashes_contributes_nothing ... ok
[INFO] [stdout] test config::tests::set_flavour_preserves_other_keys ... ok
[INFO] [stdout] test config::tests::set_flavour_replaces_an_invalid_existing_file_without_erroring ... ok
[INFO] [stdout] test config::tests::the_template_parses_to_exactly_the_default ... ok
[INFO] [stdout] test config::tests::sprinkles_defaults_to_off_and_reads_each_level ... ok
[INFO] [stdout] test config::tests::set_key_preserves_an_unknown_key ... ok
[INFO] [stdout] test config::tests::resolve_ultra_volume_falls_back_to_config_with_no_env_and_env_wins_including_when_garbage ... ok
[INFO] [stdout] test config::tests::the_retired_full_and_fast_keys_are_ignored ... ok
[INFO] [stdout] test config::tests::ultra_chance_defaults_to_twenty_and_is_read ... ok
[INFO] [stdout] test config::tests::set_sprinkles_preserves_an_unknown_key ... ok
[INFO] [stdout] test config::tests::set_sprinkles_preserves_other_keys ... ok
[INFO] [stdout] test facts::other::tests::boot_ms_from_parts_computes_elapsed_time_since_start ... ok
[INFO] [stdout] test facts::other::tests::boot_ms_from_parts_is_none_past_the_freshness_window ... ok
[INFO] [stdout] test facts::other::tests::parse_cpu_cores_counts_processor_lines ... ok
[INFO] [stdout] test facts::other::tests::parse_cpu_name_falls_back_to_hardware_or_model_on_arm ... ok
[INFO] [stdout] test facts::other::tests::parse_cpu_name_is_none_without_any_matching_field ... ok
[INFO] [stdout] test facts::other::tests::parse_cpu_name_reads_model_name ... ok
[INFO] [stdout] test facts::other::tests::parse_comm_is_none_for_an_empty_read ... ok
[INFO] [stdout] test facts::other::tests::parse_cpu_cores_is_none_when_there_are_no_processor_lines ... ok
[INFO] [stdout] test facts::other::tests::parse_comm_strips_a_leading_dash_and_trailing_newline ... ok
[INFO] [stdout] test facts::other::tests::parse_mem_kb_is_none_without_memtotal ... ok
[INFO] [stdout] test facts::other::tests::parse_uptime_secs_is_none_when_empty ... ok
[INFO] [stdout] test facts::other::tests::parse_os_release_falls_back_to_pretty_name ... ok
[INFO] [stdout] test config::tests::ensure_exists_leaves_an_existing_file_untouched ... ok
[INFO] [stdout] test facts::other::tests::parse_os_release_reads_name_and_version_id ... ok
[INFO] [stdout] test facts::other::tests::parse_uptime_secs_reads_the_first_field ... ok
[INFO] [stdout] test facts::other::tests::parse_starttime_ticks_is_none_without_a_closing_paren ... ok
[INFO] [stdout] test facts::other::tests::parse_starttime_ticks_reads_field_22_past_the_last_paren ... ok
[INFO] [stdout] test facts::other::tests::parse_os_release_is_empty_without_any_usable_line ... ok
[INFO] [stdout] test config::tests::ultra_volume_defaults_to_a_half_and_is_read ... ok
[INFO] [stdout] test facts::tests::ghostty_theme_is_none_without_a_theme_line_or_a_candidate ... ok
[INFO] [stdout] test facts::other::tests::boot_ms_from_parts_is_none_when_the_arithmetic_would_go_negative ... ok
[INFO] [stdout] test facts::tests::ghostty_theme_reads_the_top_level_theme_line ... ok
[INFO] [stdout] test facts::tests::ghostty_theme_picks_the_candidate_pick_config_path_would_pick ... ok
[INFO] [stdout] test facts::tests::kb_to_whole_gb_rounds_to_the_nearest_gigabyte ... ok
[INFO] [stdout] test config::tests::ultra_chance_out_of_range_falls_back_to_the_default ... ok
[INFO] [stdout] test facts::tests::remove_deletes_a_key ... ok
[INFO] [stdout] test facts::tests::terminal_name_prefers_term_program_and_falls_back_to_term ... ok
[INFO] [stdout] test facts::other::tests::parse_mem_kb_reads_memtotal ... ok
[INFO] [stdout] test facts::tests::terminal_name_treats_an_empty_value_as_unset ... ok
[INFO] [stdout] test fetch::tests::ansi16_shows_the_swatch_but_no_mascot ... ok
[INFO] [stdout] test fetch::tests::a_missing_value_omits_its_line_and_nothing_else_shifts ... ok
[INFO] [stdout] test fetch::tests::every_labels_colon_lines_up ... ok
[INFO] [stdout] test fetch::tests::an_unrecognised_theme_in_a_sandboxed_ghostty_config_is_shown_verbatim ... ok
[INFO] [stdout] test fetch::tests::kitty_graphics_emits_the_transmission_escape_once ... ok
[INFO] [stdout] test facts::tests::gather_always_sets_the_date_facts ... ok
[INFO] [stdout] test config::tests::ultra_volume_out_of_range_falls_back_to_the_default ... ok
[INFO] [stdout] test fetch::tests::no_image_support_leaves_the_facts_flush_left_even_with_a_sprite ... ok
[INFO] [stdout] test facts::tests::fixture_carries_the_two_calendar_facts_derived_from_its_fixed_date ... ok
[INFO] [stdout] test fetch::tests::the_palette_swatch_is_skipped_when_colour_is_off ... ok
[INFO] [stdout] test fetch::tests::theme_display_uses_the_display_name_for_one_of_ours ... ok
[INFO] [stdout] test fetch::tests::kitty_graphics_reserves_the_fixed_mascot_box_before_the_panel ... ok
[INFO] [stdout] test config::tests::unknown_keys_are_ignored ... ok
[INFO] [stdout] test facts::other::tests::boot_ms_from_parts_is_none_with_an_unknown_clock_rate ... ok
[INFO] [stdout] test facts::tests::fixture_has_known_and_missing_facts ... ok
[INFO] [stdout] test flavour::tests::apply_skips_streak_when_streak_label_is_absent ... ok
[INFO] [stdout] test facts::tests::gather_reads_real_hardware_on_linux ... ok
[INFO] [stdout] test fetch::tests::matches_the_fetch_unicorn_golden_with_colour_off ... FAILED
[INFO] [stdout] test facts::tests::ghostty_theme_is_none_when_the_line_names_nothing ... ok
[INFO] [stdout] test fetch::tests::no_color_produces_no_escape_sequences_at_all ... ok
[INFO] [stdout] test flavour::tests::apply_inserts_all_eight_slots_for_fixture_facts ... ok
[INFO] [stdout] test flavour::tests::builtins_are_the_full_roster_in_order ... ok
[INFO] [stdout] test flavour::tests::every_builtin_finding_phrasing_resolves_against_fixture_facts ... ok
[INFO] [stdout] test flavour::tests::find_rejects_ids_that_are_not_plain_names ... ok
[INFO] [stdout] test flavour::tests::malformed_toml_is_an_error ... ok
[INFO] [stdout] test flavour::tests::every_builtin_flavour_quip_fits_80_columns_against_fixture_facts ... ok
[INFO] [stdout] test flavour::tests::every_builtin_flavours_sprite_resolves ... ok
[INFO] [stdout] test flavour::tests::find_ignores_a_user_file_whose_id_does_not_match_its_name ... ok
[INFO] [stdout] test flavour::tests::parses_a_minimal_flavour ... ok
[INFO] [stdout] test flavour::tests::no_builtin_flavours_presence_or_findings_line_has_an_em_or_en_dash ... ok
[INFO] [stdout] test flavour::tests::pick_index_of_two_candidates_alternates_strictly ... ok
[INFO] [stdout] test flavour::tests::pick_random_is_stable_for_the_same_day ... ok
[INFO] [stdout] test flavour::tests::every_builtin_finding_phrasing_fits_80_columns_against_fixture_facts ... ok
[INFO] [stdout] test flavour::tests::rejects_a_missing_key ... ok
[INFO] [stdout] test flavour::tests::pick_index_of_a_single_candidate_is_always_zero ... ok
[INFO] [stdout] test flavour::tests::rejects_a_bad_findings_key_and_an_empty_value ... ok
[INFO] [stdout] test flavour::tests::random_is_a_reserved_id_alongside_every_builtin ... ok
[INFO] [stdout] test flavour::tests::rejects_an_empty_string ... ok
[INFO] [stdout] test flavour::tests::unicorns_findings_table_is_empty ... ok
[INFO] [stdout] test flavour::tests::rejects_an_unknown_sprite ... ok
[INFO] [stdout] test flavour::tests::regression_2026_02_01_and_2026_02_02_no_longer_repeat ... ok
[INFO] [stdout] test flavour::tests::resolve_of_a_literal_id_is_exactly_find ... ok
[INFO] [stdout] test flavour::tests::sumos_findings_table_parses_and_has_all_seven_keys ... ok
[INFO] [stdout] test machine::tests::a_flavoured_machine_may_have_a_quip_step_without_quips ... ok
[INFO] [stdout] test machine::tests::a_findings_key_with_a_capital_letter_and_an_empty_value_are_both_rejected ... ok
[INFO] [stdout] test machine::tests::a_minimal_machine_has_no_calendar_rules_by_default ... ok
[INFO] [stdout] test machine::tests::a_step_with_both_quip_and_findings_is_rejected ... ok
[INFO] [stdout] test flavour::tests::user_file_overrides_builtin_and_bad_user_files_are_ignored ... ok
[INFO] [stdout] test machine::tests::calendar_rule_matches_by_month_and_day_only_on_that_date ... ok
[INFO] [stdout] test machine::tests::an_unflavoured_machine_carries_its_own_quips ... ok
[INFO] [stdout] test machine::tests::a_user_file_with_a_new_id_adds_to_the_roster ... ok
[INFO] [stdout] test machine::tests::calendar_rule_matches_day_of_year_256_landing_on_different_calendar_dates ... ok
[INFO] [stdout] test machine::tests::accepts_paint_without_bg ... ok
[INFO] [stdout] test flavour::tests::resolve_random_is_stable_for_the_same_moment ... ok
[INFO] [stdout] test machine::tests::builtins_is_pc95_only ... ok
[INFO] [stdout] test flavour::tests::shuffled_is_a_valid_permutation_across_roster_sizes_and_rounds ... ok
[INFO] [stdout] test machine::tests::findings_false_and_f1_false_are_rejected ... ok
[INFO] [stdout] test flavour::tests::rejects_a_bad_id ... ok
[INFO] [stdout] test machine::tests::findings_true_and_f1_true_parse_with_their_default_ms ... ok
[INFO] [stdout] test machine::tests::calendar_rule_matches_friday_the_13th_only_when_the_13th_is_really_a_friday ... ok
[INFO] [stdout] test machine::tests::each_pc95_calendar_rule_fires_on_its_own_date_and_no_other ... ok
[INFO] [stdout] test machine::tests::defaults_are_unpainted_with_pad_2_and_1 ... ok
[INFO] [stdout] test machine::tests::every_builtin_quip_fits_its_cols_against_fixture_facts ... ok
[INFO] [stdout] test machine::tests::find_rejects_ids_that_are_not_plain_names ... ok
[INFO] [stdout] test machine::tests::find_ignores_a_user_file_whose_id_does_not_match_its_name ... ok
[INFO] [stdout] test flavour::tests::rejects_fewer_than_three_quips ... ok
[INFO] [stdout] test machine::tests::parses_a_day_of_year_calendar_rule ... ok
[INFO] [stdout] test machine::tests::parses_an_accent_detect_and_a_badge ... ok
[INFO] [stdout] test machine::tests::parses_logo_and_badge_with_defaults ... ok
[INFO] [stdout] test machine::tests::parses_paint_border_pad_and_uppercase ... ok
[INFO] [stdout] test machine::tests::builtins_carry_a_quip_step ... ok
[INFO] [stdout] test machine::tests::malformed_toml_is_a_parse_error ... ok
[INFO] [stdout] test machine::tests::parses_a_minimal_machine_with_defaults ... ok
[INFO] [stdout] test machine::tests::parses_a_weekday_and_day_calendar_rule ... ok
[INFO] [stdout] test machine::tests::flavoured_and_detect_width_parse_with_defaults ... ok
[INFO] [stdout] test machine::tests::pc95_has_a_count_step ... ok
[INFO] [stdout] test machine::tests::rejects_a_calendar_rule_with_no_shape_or_more_than_one ... ok
[INFO] [stdout] test machine::tests::rejects_border_without_bg ... ok
[INFO] [stdout] test machine::tests::rejects_border_without_paint ... ok
[INFO] [stdout] test machine::tests::rejects_calendar_rules_out_of_range_or_with_a_bad_weekday_or_empty_text ... ok
[INFO] [stdout] test machine::tests::rejects_count_without_to_and_detect_without_result ... ok
[INFO] [stdout] test flavour::tests::pick_random_includes_a_user_flavour_in_its_candidates ... ok
[INFO] [stdout] test machine::tests::rejects_more_than_four_badge_lines ... ok
[INFO] [stdout] test machine::tests::rejects_a_step_with_two_kinds ... ok
[INFO] [stdout] test machine::tests::rejects_an_unknown_logo ... ok
[INFO] [stdout] test machine::tests::pc95_is_flavoured_with_no_logo_and_no_quips ... ok
[INFO] [stdout] test machine::tests::rejects_a_detect_width_out_of_range ... ok
[INFO] [stdout] test machine::tests::pc95_has_all_twelve_calendar_rules ... ok
[INFO] [stdout] test machine::tests::rejects_bad_colour_bad_id_and_bad_cols ... ok
[INFO] [stdout] test machine::tests::rejects_pad_x_out_of_range ... ok
[INFO] [stdout] test machine::tests::the_findings_table_parses ... ok
[INFO] [stdout] test machine::tests::rejects_a_quip_step_without_quips ... ok
[INFO] [stdout] test machine::tests::rejects_a_badge_line_over_twenty_chars ... ok
[INFO] [stdout] test mode::tests::a_last_boot_in_the_future_is_ignored ... ok
[INFO] [stdout] test machine::tests::user_file_overrides_builtin_and_bad_user_files_are_ignored ... ok
[INFO] [stdout] test machine::tests::parses_a_month_and_day_calendar_rule ... ok
[INFO] [stdout] test machine::tests::pc95_carries_all_seven_finding_keys ... ok
[INFO] [stdout] test mode::tests::fast_on_an_ordinary_new_tab ... ok
[INFO] [stdout] test paths::tests::ghostty_candidates_off_macos_are_xdg_only ... ok
[INFO] [stdout] test paths::tests::home_plus_default_relative_path_is_the_fallback ... ok
[INFO] [stdout] test paths::tests::ghostty_candidates_lead_with_macos_app_support_then_xdg ... ok
[INFO] [stdout] test paths::tests::starship_config_path_honours_xdg_config_home ... ok
[INFO] [stdout] test paths::tests::an_empty_xdg_value_is_treated_as_unset ... ok
[INFO] [stdout] test paths::tests::both_missing_yields_none ... ok
[INFO] [stdout] test presence::tests::a_duration_is_worded_the_way_a_person_would_say_it ... ok
[INFO] [stdout] test mode::tests::quiet_inside_the_burst_window ... ok
[INFO] [stdout] test mode::tests::kill_switch_only_means_zero ... ok
[INFO] [stdout] test paths::tests::xdg_value_wins ... ok
[INFO] [stdout] test mode::tests::off_conditions ... ok
[INFO] [stdout] test mode::tests::quiet_beats_full ... ok
[INFO] [stdout] test presence::tests::a_line_whose_slot_was_not_supplied_is_silent_rather_than_half_written ... ok
[INFO] [stdout] test presence::tests::a_slot_is_filled_from_what_the_caller_supplies ... ok
[INFO] [stdout] test presence::tests::an_event_the_flavour_has_no_words_for_is_silent ... ok
[INFO] [stdout] test presence::tests::a_line_with_no_slots_comes_back_as_written ... ok
[INFO] [stdout] test mode::tests::full_on_the_first_boot_of_the_day ... ok
[INFO] [stdout] test paths::tests::ghostty_candidates_are_empty_with_nothing_set ... ok
[INFO] [stdout] test presence::tests::every_built_in_flavour_has_every_event ... ok
[INFO] [stdout] test render::tests::a_calendar_day_replaces_the_quip_on_the_static_path_with_no_row_added ... ok
[INFO] [stdout] test render::tests::a_badge_line_is_dropped_rather_than_truncating_the_row_it_collides_with ... ok
[INFO] [stdout] test paths::tests::ghostty_candidates_fall_back_to_home_dot_config ... ok
[INFO] [stdout] test render::tests::a_finding_that_already_fits_is_unchanged_with_no_marker ... ok
[INFO] [stdout] test render::tests::a_finding_with_an_unresolved_slot_is_omitted_while_others_render ... ok
[INFO] [stdout] test render::tests::a_finding_with_no_phrasing_at_all_is_omitted ... ok
[INFO] [stdout] test render::tests::a_finding_with_one_very_long_slot_value_fits_exactly_cols_and_keeps_its_final_sentence ... ok
[INFO] [stdout] test render::tests::a_flavoured_detect_label_is_padded_to_detect_width_like_a_literal_one ... ok
[INFO] [stdout] test render::tests::a_painted_machine_falls_back_to_plain_truecolor_when_too_narrow_or_unknown ... ok
[INFO] [stdout] test render::tests::a_quip_longer_than_cols_is_skipped ... ok
[INFO] [stdout] test render::tests::a_value_is_never_shortened_below_its_floor_and_falls_back_to_whole_line_truncation ... ok
[INFO] [stdout] test render::tests::animated_count_steps_grow_from_zero_to_the_final_value ... ok
[INFO] [stdout] test render::tests::an_unflavoured_machine_ignores_a_flavours_findings_table ... ok
[INFO] [stdout] test presence::tests::every_line_fits_eighty_columns_with_realistic_values ... ok
[INFO] [stdout] test render::tests::an_unresolved_calendar_line_falls_back_to_the_ordinary_quip_on_the_static_path ... ok
[INFO] [stdout] test render::tests::an_over_long_finding_is_truncated_to_exactly_cols ... ok
[INFO] [stdout] test render::tests::a_transparent_painted_screen_styles_text_without_naming_a_colour ... ok
[INFO] [stdout] test render::tests::a_painted_machine_places_its_badge_from_the_second_row ... ok
[INFO] [stdout] test presence::tests::the_board_names_are_all_different ... ok
[INFO] [stdout] test render::tests::a_painted_bordered_uppercase_machine_is_44_wide_with_matching_colours ... ok
[INFO] [stdout] test render::tests::none_mode_with_paint_is_the_same_regardless_of_term_cols ... ok
[INFO] [stdout] test render::tests::no_f1_line_when_only_info_findings_fired_and_boot_device_is_absent ... ok
[INFO] [stdout] test render::tests::multi_byte_characters_are_shortened_by_character_count_not_bytes ... ok
[INFO] [stdout] test render::tests::f1_resume_wins_when_boot_device_is_present ... ok
[INFO] [stdout] test render::tests::f1_appears_when_a_warn_is_present_and_boot_device_is_absent ... ok
[INFO] [stdout] test render::tests::painted_pc95_with_iterm_emits_one_osc_image_and_no_kitty_escape ... ok
[INFO] [stdout] test render::tests::painted_pc95_with_graphics_none_has_no_logo_or_badge ... ok
[INFO] [stdout] test render::tests::painted_pc95_kitty_embeds_the_flavours_own_sprite ... ok
[INFO] [stdout] test render::tests::painted_pc95_with_kitty_emits_one_image_and_no_half_blocks ... ok
[INFO] [stdout] test render::tests::painted_pc95_with_kitty_places_the_logo ... ok
[INFO] [stdout] test render::tests::pc95_matches_golden ... FAILED
[INFO] [stdout] test render::tests::painted_pc95_with_no_image_support_has_no_blank_indent ... ok
[INFO] [stdout] test render::tests::animated_layout_final_spans_agree_with_layout ... ok
[INFO] [stdout] test render::tests::ansi16_uses_basic_codes ... ok
[INFO] [stdout] test render::tests::color_mode_from_env_rules ... ok
[INFO] [stdout] test render::tests::empty_facts_never_leak_a_slot ... ok
[INFO] [stdout] test render::tests::pc95_painted_matches_golden ... FAILED
[INFO] [stdout] test render::tests::pc95_with_no_flavour_omits_the_firmware_line ... ok
[INFO] [stdout] test render::tests::render_static_is_render_static_with_calendar_given_none ... ok
[INFO] [stdout] test render::tests::pc95_with_sumo_shows_sumo_wording_and_hides_unicorn_wording ... ok
[INFO] [stdout] test render::tests::phrasing_prefers_flavour_falls_back_to_machine_and_is_none_for_unknown_id ... ok
[INFO] [stdout] test render::tests::resolve_quip_line_falls_back_to_the_ordinary_quip_when_the_calendar_slot_does_not_resolve ... ok
[INFO] [stdout] test render::tests::resolve_quip_line_prefers_a_calendar_candidate_that_resolves_and_fits ... ok
[INFO] [stdout] test render::tests::resolve_quip_line_falls_back_to_the_ordinary_quip_when_the_calendar_candidate_is_too_long ... ok
[INFO] [stdout] test flavour::tests::pick_index_covers_every_aligned_window_exactly_once_for_every_roster_size ... ok
[INFO] [stdout] test render::tests::seed_rotates_quips_and_skips_unresolvable_ones ... ok
[INFO] [stdout] test render::tests::plain_pc95_has_no_logo_or_badge ... ok
[INFO] [stdout] test render::tests::painted_pc95_with_no_mascot_shape_is_pinned ... ok
[INFO] [stdout] test render::tests::the_mascot_box_is_a_fixed_footprint_regardless_of_machine_width ... ok
[INFO] [stdout] test render::tests::transparent_painted_pc95_has_no_background_but_keeps_geometry ... ok
[INFO] [stdout] test render::tests::pc95_findings_matches_golden_for_both_flavours ... FAILED
[INFO] [stdout] test render::tests::text_start_col_is_zero_when_unpainted ... ok
[INFO] [stdout] test render::tests::truecolor_wraps_spans_and_styles_only_the_detect_result ... ok
[INFO] [stdout] test render::tests::resolve_quip_line_with_no_calendar_candidate_is_the_ordinary_rotation ... ok
[INFO] [stdout] test render::tests::twinkle_margin_cols_is_empty_with_graphics_none_even_inside_the_would_be_logo_box ... ok
[INFO] [stdout] test render::tests::the_longest_of_two_slot_values_is_the_one_shortened ... ok
[INFO] [stdout] test render::tests::row_geometry_line_matches_render_static_for_pc95 ... ok
[INFO] [stdout] test screensaver::model::tests::hitting_the_left_wall_reverses_the_horizontal_direction ... ok
[INFO] [stdout] test screensaver::model::tests::hitting_the_right_wall_reverses_the_horizontal_direction_only ... ok
[INFO] [stdout] test screensaver::model::tests::a_fresh_bounce_starts_near_the_top_left_moving_down_and_right ... ok
[INFO] [stdout] test screensaver::model::tests::a_tint_is_never_chosen_twice_in_a_row ... ok
[INFO] [stdout] test screensaver::model::tests::a_ripple_plays_exactly_the_eight_images_in_order ... ok
[INFO] [stdout] test screensaver::model::tests::a_twinkle_lasts_three_frames_and_its_cells_fall_outside_the_image_bounds ... ok
[INFO] [stdout] test screensaver::model::tests::eight_seconds_without_a_bounce_forces_a_single_ripple ... ok
[INFO] [stdout] test render::tests::unresolved_lines_vanish_and_blank_lines_collapse ... ok
[INFO] [stdout] test render::tests::text_start_col_and_margin_cols_sit_either_side_of_the_pc95_logo_box ... ok
[INFO] [stdout] test screensaver::view::tests::a_text_mode_bounce_changes_the_letters_colouring_and_never_repeats_the_previous_one ... ok
[INFO] [stdout] test screensaver::view::tests::colour_mode_stripes_the_letters_in_the_six_ansi_colours ... ok
[INFO] [stdout] test screensaver::view::tests::every_row_is_exactly_the_terminal_width ... ok
[INFO] [stdout] test screensaver::view::tests::a_snapshot_of_an_80_by_24_text_frame_with_a_twinkle_showing ... ok
[INFO] [stdout] test screensaver::view::tests::image_delete_names_the_image_id_and_carries_no_cursor_move ... ok
[INFO] [stdout] test screensaver::view::tests::image_mode_twinkle_clear_blanks_its_three_cells ... ok
[INFO] [stdout] test screensaver::model::tests::hitting_the_bottom_wall_reverses_the_vertical_direction_only ... ok
[INFO] [stdout] test screensaver::model::tests::repeated_stepping_keeps_the_box_bouncing_back_and_forth_forever ... ok
[INFO] [stdout] test screensaver::model::tests::stepping_moves_the_box_by_its_current_direction ... ok
[INFO] [stdout] test screensaver::model::tests::hitting_the_top_wall_reverses_the_vertical_direction ... ok
[INFO] [stdout] test screensaver::tests::any_key_ends_the_text_loop_and_restores_the_terminal ... ok
[INFO] [stdout] test screensaver::tests::the_screen_guard_restores_the_terminal_even_when_a_panic_unwinds_through_it ... ok
[INFO] [stdout] test screensaver::view::tests::image_mode_twinkle_frame_lights_its_three_cells_in_the_stripe_colours ... ok
[INFO] [stdout] test screensaver::view::tests::no_color_draws_the_same_text_with_no_escape_sequence ... ok
[INFO] [stdout] test screensaver::view::tests::image_move_positions_and_places_the_stored_image_without_resending_it ... ok
[INFO] [stdout] test screensaver::view::tests::the_wordmark_sits_on_the_models_own_row_and_column ... ok
[INFO] [stdout] test screensaver::view::tests::image_size_is_about_sixty_percent_of_the_terminal_width_and_preserves_the_wordmarks_shape ... ok
[INFO] [stdout] test screensaver::model::tests::a_taller_box_bounces_off_the_bottom_wall_sooner ... ok
[INFO] [stdout] test setup::keys::tests::a_key_we_do_not_act_on_is_simply_not_a_key ... ok
[INFO] [stdout] test setup::keys::tests::a_lone_escape_is_escape ... ok
[INFO] [stdout] test setup::keys::tests::enter_in_both_spellings ... ok
[INFO] [stdout] test setup::keys::tests::plus_and_minus_change_a_value ... ok
[INFO] [stdout] test setup::keys::tests::f10_saves ... ok
[INFO] [stdout] test setup::keys::tests::page_up_and_down_change_a_value_too ... ok
[INFO] [stdout] test setup::keys::tests::a_sequence_is_decoded_from_the_front_of_a_longer_buffer ... ok
[INFO] [stdout] test setup::keys::tests::an_unknown_escape_sequence_does_not_swallow_what_follows ... ok
[INFO] [stdout] test setup::keys::tests::delete_leaves_rather_than_typing_a_stray_character ... ok
[INFO] [stdout] test setup::keys::tests::y_and_n_answer_a_dialog_in_either_case ... ok
[INFO] [stdout] test setup::memtest::model::tests::a_terminal_smaller_than_the_cap_still_shrinks_to_fit ... ok
[INFO] [stdout] test setup::memtest::model::tests::bricks_tile_the_row_exactly_at_several_terminal_widths ... ok
[INFO] [stdout] test setup::memtest::model::tests::clearing_every_brick_wins_and_ends_exactly_once ... ok
[INFO] [stdout] test setup::memtest::model::tests::ctrl_c_walks_away_without_recording_anything ... ok
[INFO] [stdout] test setup::keys::tests::q_leaves_and_ctrl_c_leaves_harder ... ok
[INFO] [stdout] test setup::memtest::model::tests::a_paddle_hit_near_the_edge_sends_the_ball_out_wider_than_a_hit_in_the_middle ... ok
[INFO] [stdout] test setup::keys::tests::the_arrow_keys ... ok
[INFO] [stdout] test screensaver::tests::the_image_loop_transmits_all_fourteen_images_exactly_once ... ok
[INFO] [stdout] test setup::memtest::model::tests::a_minute_of_following_the_ball_clears_ten_bricks_and_loses_none_at_any_size ... ok
[INFO] [stdout] test setup::memtest::model::tests::a_new_record_is_whatever_beats_the_best_that_stood_at_the_start ... ok
[INFO] [stdout] test setup::memtest::model::tests::a_paddle_bounce_keeps_the_vertical_speed_steady_however_wide_the_horizontal_gets ... ok
[INFO] [stdout] test setup::memtest::model::tests::mouse_move_centres_the_paddle_under_the_given_field_column ... ok
[INFO] [stdout] test setup::memtest::model::tests::mouse_move_does_nothing_once_the_game_has_ended ... ok
[INFO] [stdout] test setup::memtest::model::tests::mouse_move_is_clamped_so_the_paddle_never_leaves_the_field ... ok
[INFO] [stdout] test setup::memtest::model::tests::eighty_columns_gives_four_bricks_of_seven_and_eight_of_six ... ok
[INFO] [stdout] test setup::memtest::model::tests::mouse_move_keeps_the_attached_ball_above_the_paddles_new_centre ... ok
[INFO] [stdout] test setup::memtest::model::tests::mouse_move_reports_nothing_when_the_paddle_was_already_there ... ok
[INFO] [stdout] test setup::memtest::model::tests::moving_the_paddle_keeps_the_attached_ball_above_its_centre ... ok
[INFO] [stdout] test setup::memtest::model::tests::speed_never_exceeds_one_and_a_half_times_even_after_clearing_every_brick ... ok
[INFO] [stdout] test setup::memtest::model::tests::the_ball_bounces_off_a_brick_and_removes_it ... ok
[INFO] [stdout] test setup::memtest::model::tests::the_ball_bounces_off_the_ceiling ... ok
[INFO] [stdout] test setup::memtest::model::tests::sixty_bricks_sum_to_exactly_mem_kb_even_when_it_does_not_divide_by_sixty ... ok
[INFO] [stdout] test setup::memtest::model::tests::the_ball_bounces_off_the_left_wall ... ok
[INFO] [stdout] test setup::memtest::model::tests::speed_increases_by_five_percent_every_ten_bricks ... ok
[INFO] [stdout] test setup::memtest::model::tests::space_launches_only_while_the_ball_is_ready ... ok
[INFO] [stdout] test setup::memtest::model::tests::the_ball_bounces_off_the_paddle ... ok
[INFO] [stdout] test setup::memtest::model::tests::the_field_is_capped_at_the_size_it_was_tuned_for_however_big_the_terminal_is ... ok
[INFO] [stdout] test setup::memtest::model::tests::the_ball_bounces_off_the_right_wall ... ok
[INFO] [stdout] test setup::memtest::tests::a_key_the_game_does_not_act_on_is_simply_not_a_key ... ok
[INFO] [stdout] test setup::memtest::tests::a_left_click_decodes_as_a_click_at_its_own_column ... ok
[INFO] [stdout] test setup::memtest::tests::a_left_click_serves_the_ball_even_when_the_paddle_does_not_need_to_move ... ok
[INFO] [stdout] test setup::memtest::model::tests::the_remainder_lands_on_the_last_brick ... ok
[INFO] [stdout] test setup::memtest::model::tests::the_ball_takes_about_a_second_and_a_half_to_fall_from_the_lowest_brick_row_to_the_bat_at_any_size ... ok
[INFO] [stdout] test setup::memtest::model::tests::esc_ends_the_game_as_a_loss_and_keeps_what_was_cleared ... ok
[INFO] [stdout] test setup::memtest::model::tests::either_way_in_starts_the_ball_attached_and_ready ... ok
[INFO] [stdout] test setup::memtest::tests::a_click_left_of_the_field_still_moves_the_paddle_clamped_into_it ... ok
[INFO] [stdout] test setup::memtest::tests::a_mouse_move_with_no_click_never_launches_the_ball ... ok
[INFO] [stdout] test setup::memtest::model::tests::losing_all_three_balls_ends_the_game_after_the_fail_pause ... ok
[INFO] [stdout] test setup::memtest::tests::an_incomplete_mouse_report_is_not_decoded_yet ... ok
[INFO] [stdout] test setup::memtest::view::tests::a_bigger_terminal_centres_the_capped_field_rather_than_growing_it ... ok
[INFO] [stdout] test setup::memtest::view::tests::a_new_record_prints_above_the_result_line ... ok
[INFO] [stdout] test setup::memtest::model::tests::missing_the_paddle_loses_a_ball_and_a_fresh_one_reattaches ... ok
[INFO] [stdout] test setup::memtest::tests::a_release_or_a_drag_moves_the_paddle_but_never_clicks ... ok
[INFO] [stdout] test setup::memtest::view::tests::a_terminal_grown_since_the_game_was_built_centres_the_field_rather_than_stretching_it ... ok
[INFO] [stdout] test setup::memtest::tests::the_arrow_keys_and_the_letters_do_the_same_thing ... ok
[INFO] [stdout] test screensaver::view::tests::a_frame_the_wordmark_has_moved_off_of_is_blank_on_that_row ... ok
[INFO] [stdout] test flavour::tests::pick_index_never_repeats_between_consecutive_days_for_every_roster_size ... ok
[INFO] [stdout] test setup::keys::tests::the_vi_keys_do_the_same_thing ... ok
[INFO] [stdout] test screensaver::view::tests::image_move_always_reuses_the_same_placement_id_so_it_moves_rather_than_stacks ... ok
[INFO] [stdout] test setup::memtest::tests::a_sustained_drags_many_reports_between_two_ticks_still_yield_one_redraw ... ok
[INFO] [stdout] test setup::memtest::view::tests::no_color_still_fills_every_line_to_the_terminal_width_at_any_size ... ok
[INFO] [stdout] test setup::memtest::tests::advance_reports_none_the_moment_any_input_asks_to_leave ... ok
[INFO] [stdout] test setup::memtest::tests::advance_with_nothing_decoded_still_ticks_the_game_once ... ok
[INFO] [stdout] test setup::memtest::tests::space_launches_and_the_two_ways_out_are_told_apart ... ok
[INFO] [stdout] test setup::memtest::view::tests::every_line_is_exactly_as_wide_as_the_terminal_at_the_smallest_size ... ok
[INFO] [stdout] test setup::memtest::view::tests::no_color_emits_no_escape_sequence_at_any_size ... ok
[INFO] [stdout] test setup::model::tests::a_row_with_one_value_cannot_move ... ok
[INFO] [stdout] test setup::model::tests::changing_a_value_wraps_in_both_directions ... ok
[INFO] [stdout] test setup::model::tests::ctrl_c_leaves_from_anywhere_without_asking ... ok
[INFO] [stdout] test setup::memtest::view::tests::no_color_still_draws_the_bricks_as_plain_hashes ... ok
[INFO] [stdout] test setup::model::tests::escape_backs_out_of_the_save_dialog ... ok
[INFO] [stdout] test setup::memtest::view::tests::the_initial_screen_matches_the_plan ... ok
[INFO] [stdout] test setup::memtest::view::tests::the_header_shows_ok_once_the_game_is_won ... ok
[INFO] [stdout] test setup::model::tests::enter_on_the_screen_previews ... ok
[INFO] [stdout] test setup::model::tests::f10_then_y_saves_exactly_the_changed_settings ... ok
[INFO] [stdout] test setup::model::tests::escape_with_changes_asks_first_and_n_goes_back ... ok
[INFO] [stdout] test setup::model::tests::moving_down_past_the_last_row_wraps_to_the_first ... ok
[INFO] [stdout] test setup::model::tests::escape_with_nothing_changed_leaves_at_once ... ok
[INFO] [stdout] test setup::model::tests::quitting_with_y_leaves_without_saving ... ok
[INFO] [stdout] test setup::model::tests::returning_a_value_to_where_it_started_is_not_a_change ... ok
[INFO] [stdout] test setup::model::tests::moving_up_from_the_first_row_wraps_to_the_last ... ok
[INFO] [stdout] test setup::model::tests::the_save_dialog_defaults_to_saving ... ok
[INFO] [stdout] test setup::model::tests::the_quit_dialog_defaults_to_going_back_not_losing_the_changes ... ok
[INFO] [stdout] test setup::model::tests::turbo_changes_on_screen_and_is_saved_like_any_other_row ... ok
[INFO] [stdout] test setup::memtest::view::tests::the_bricks_and_the_bat_never_draw_outside_the_capped_fields_own_bounds ... ok
[INFO] [stdout] test setup::tests::a_short_name_is_capitalised_for_the_screen ... ok
[INFO] [stdout] test setup::tests::a_broken_sequence_does_not_start_it ... ok
[INFO] [stdout] test setup::tests::a_turbo_flag_set_by_bios_turbo_is_reflected_when_setup_next_opens ... ok
[INFO] [stdout] test setup::tests::every_flavour_is_offered_by_name ... ok
[INFO] [stdout] test setup::tests::an_extra_key_before_the_sequence_does_not_stop_it_starting_fresh_right_after ... ok
[INFO] [stdout] test setup::memtest::view::tests::the_header_counts_down_as_bricks_go ... ok
[INFO] [stdout] test setup::tests::near_misses_reset_progress_rather_than_leaving_it_stuck ... ok
[INFO] [stdout] test setup::memtest::view::tests::the_lost_result_screen_shows_the_remaining_k_and_any_key ... ok
[INFO] [stdout] test setup::memtest::view::tests::the_header_shows_fail_after_the_last_ball_is_lost ... ok
[INFO] [stdout] test setup::memtest::view::tests::nothing_is_ever_painted_outside_the_capped_fields_own_background ... ok
[INFO] [stdout] test setup::tests::only_left_and_right_on_the_turbo_row_count_as_a_toggle ... ok
[INFO] [stdout] test setup::tests::saving_ultra_with_no_ghostty_config_does_nothing_and_the_save_still_succeeds ... ok
[INFO] [stdout] test setup::tests::reset_then_setup_then_f10_with_nothing_changed_is_byte_identical ... ok
[INFO] [stdout] test setup::tests::nothing_starts_out_changed ... ok
[INFO] [stdout] test setup::tests::saving_random_from_the_flavour_row_writes_it_to_the_config ... ok
[INFO] [stdout] test setup::tests::saving_with_sprinkles_set_to_any_other_level_generates_no_sounds ... ok
[INFO] [stdout] test setup::tests::ten_turbo_toggles_start_it_but_nine_do_not ... ok
[INFO] [stdout] test setup::tests::the_rows_start_on_whatever_the_config_says ... ok
[INFO] [stdout] test setup::tests::a_users_own_custom_shader_line_survives_saving_ultra_then_a_lower_level_from_setup ... ok
[INFO] [stdout] test setup::tests::saving_with_sprinkles_set_to_ultra_also_installs_and_enables_the_shaders ... ok
[INFO] [stdout] test setup::tests::saving_with_sprinkles_unchanged_never_touches_the_sounds_directory_even_at_ultra ... ok
[INFO] [stdout] test setup::tests::the_sprinkles_row_offers_all_four_levels_and_ultra_help_is_exact ... ok
[INFO] [stdout] test setup::tests::saving_with_sprinkles_dropped_below_ultra_removes_the_shader_lines_again ... ok
[INFO] [stdout] test setup::tests::the_exact_key_sequence_starts_the_game ... ok
[INFO] [stdout] test setup::tests::toggling_only_turbo_and_saving_does_not_touch_config_toml ... ok
[INFO] [stdout] test setup::tests::the_flavour_row_starts_on_random_when_that_is_configured ... ok
[INFO] [stdout] test setup::tests::toggling_turbo_and_leaving_with_esc_persists_nothing ... ok
[INFO] [stdout] test setup::tests::the_sprinkles_row_starts_on_ultra_when_configured ... ok
[INFO] [stdout] test setup::tests::the_setup_save_preserves_an_unknown_key ... ok
[INFO] [stdout] test setup::view::tests::a_changed_row_is_picked_out_in_yellow_once_it_is_not_the_selected_one ... ok
[INFO] [stdout] test setup::view::tests::every_help_text_wraps_within_the_pane_and_fits_its_height_at_any_size ... ok
[INFO] [stdout] test setup::tests::the_turbo_row_reflects_the_persisted_flag_when_setup_opens ... ok
[INFO] [stdout] test setup::view::tests::item_help_wraps_within_a_wide_pane ... ok
[INFO] [stdout] test setup::view::tests::no_color_dialog_also_emits_no_escape_sequence ... ok
[INFO] [stdout] test setup::view::tests::no_color_marks_the_selected_row_with_a_marker_and_no_other_row ... ok
[INFO] [stdout] test setup::view::tests::no_color_emits_no_escape_sequence_at_any_size ... ok
[INFO] [stdout] test setup::view::tests::item_help_wraps_within_a_narrow_pane ... ok
[INFO] [stdout] test setup::view::tests::every_line_is_exactly_the_terminal_width_at_any_size ... ok
[INFO] [stdout] test setup::tests::toggling_turbo_and_saving_with_f10_persists_it_to_state_json ... ok
[INFO] [stdout] test setup::view::tests::the_help_pane_shows_the_selected_rows_text_wrapped_inside_the_pane ... ok
[INFO] [stdout] test setup::view::tests::the_quit_dialog_asks_the_other_question ... ok
[INFO] [stdout] test setup::view::tests::the_save_dialog_sits_over_the_screen_without_changing_its_shape ... ok
[INFO] [stdout] test setup::view::tests::no_color_still_fills_every_line_to_the_terminal_width_at_any_size ... ok
[INFO] [stdout] test setup::view::tests::the_frame_fills_a_bigger_terminal_rather_than_sitting_as_an_island_in_it ... ok
[INFO] [stdout] test setup::view::tests::the_footer_lists_the_keys_at_any_size ... ok
[INFO] [stdout] test setup::memtest::view::tests::consecutive_frames_change_fewer_than_a_quarter_of_the_cells ... ok
[INFO] [stdout] test setup::view::tests::the_year_comes_from_the_caller_rather_than_the_clock ... ok
[INFO] [stdout] test setup::view::tests::truecolor_draws_the_exact_cga_background_and_the_fallback_draws_the_old_ansi_code ... ok
[INFO] [stdout] test setup::view::tests::wrapping_breaks_on_spaces_and_cuts_only_a_word_too_long_to_fit ... ok
[INFO] [stdout] test setup::view::tests::truecolor_and_non_truecolor_both_render_at_any_size ... ok
[INFO] [stdout] test setup::view::tests::the_screen_is_the_full_height_at_any_size ... ok
[INFO] [stdout] test setup::view::tests::truecolor_capable_follows_colorterm_and_the_known_terminals ... ok
[INFO] [stdout] test shaders::tests::disable_does_nothing_when_the_file_is_missing ... ok
[INFO] [stdout] test setup::tests::the_theme_row_offers_unchanged_first_then_every_theme ... ok
[INFO] [stdout] test shaders::tests::is_shader_line_for_matches_exact_value_with_flexible_spacing ... ok
[INFO] [stdout] test shaders::tests::install_writes_both_files_and_returns_their_paths ... ok
[INFO] [stdout] test shaders::tests::enable_leaves_an_unrelated_custom_shader_line_untouched ... ok
[INFO] [stdout] test shell::tests::a_flavour_cannot_smuggle_shell_into_the_hook ... ok
[INFO] [stdout] test setup::view::tests::the_selected_row_is_the_only_one_in_reverse_video ... ok
[INFO] [stdout] test shaders::tests::enable_appends_the_missing_lines_and_leaves_the_rest_alone ... ok
[INFO] [stdout] test shell::tests::a_line_with_no_duration_in_it_is_still_one_quoted_word ... ok
[INFO] [stdout] test shaders::tests::enable_twice_does_not_duplicate_the_lines ... ok
[INFO] [stdout] test shell::tests::a_kitty_placement_sends_the_image_once_and_repeats_only_the_placement ... ok
[INFO] [stdout] test shell::tests::a_string_with_a_quote_in_it_survives_being_made_a_shell_word ... ok
[INFO] [stdout] test shell::tests::a_terminal_with_no_images_still_shows_the_streak_on_its_own ... ok
[INFO] [stdout] test shell::tests::a_placement_is_wrapped_so_the_shell_counts_the_right_width ... ok
[INFO] [stdout] test setup::view::tests::the_frame_does_not_end_in_a_newline_at_any_size ... ok
[INFO] [stdout] test shell::tests::a_second_eval_does_not_resend_an_unchanged_mascot ... ok
[INFO] [stdout] test shell::tests::a_streak_worth_mentioning_follows_the_mascot ... ok
[INFO] [stdout] test shell::tests::bash_only_adds_precmd_and_title_to_prompt_command_once_each ... ok
[INFO] [stdout] test shell::tests::bash_reads_comp_line_and_the_precmd_timer_without_tripping_set_dash_u ... ok
[INFO] [stdout] test shell::tests::a_hook_below_ultra_never_mentions_ultra_in_any_shell ... ok
[INFO] [stdout] test shaders::tests::disable_removes_exactly_the_two_lines_and_restores_the_original_byte_for_byte ... ok
[INFO] [stdout] test setup::tests::every_row_has_help_that_fits_its_pane ... ok
[INFO] [stdout] test shell::tests::a_hook_below_ultra_is_unaffected_by_turbo_or_the_sounds_dir ... ok
[INFO] [stdout] test shell::tests::an_ultra_hook_carries_the_jingle_chance_volume_and_sounds_dir ... ok
[INFO] [stdout] test shell::tests::fish_escapes_the_backslash_that_ends_a_kitty_escape ... ok
[INFO] [stdout] test shell::tests::an_ultra_hook_never_calls_power_off ... ok
[INFO] [stdout] test shell::tests::fish_replaces_its_own_defaults_and_leaves_the_users_alone ... ok
[INFO] [stdout] test shell::tests::an_ultra_hook_with_no_flavour_is_silent_on_the_jingle_but_still_renders ... ok
[INFO] [stdout] test shell::tests::every_shells_hook_fills_in_every_placeholder_it_has ... ok
[INFO] [stdout] test shell::tests::iterm_has_nothing_to_send_once_because_it_stores_nothing ... ok
[INFO] [stdout] test shaders::tests::disable_leaves_an_unrelated_custom_shader_line_untouched ... ok
[INFO] [stdout] test shell::tests::the_flavours_lines_are_written_into_the_hook ... ok
[INFO] [stdout] test shell::tests::title_is_independent_of_presence_not_nested_inside_it ... ok
[INFO] [stdout] test shell::tests::mascot_is_gated_on_presence_not_printed_unconditionally ... ok
[INFO] [stdout] test shell::tests::the_prompt_snippet_expands_the_placement_once_rather_than_needing_prompt_subst ... ok
[INFO] [stdout] test shell::tests::with_no_flavour_at_all_the_hook_is_silent_rather_than_broken ... ok
[INFO] [stdout] test shell::tests::presence_off_writes_a_hook_that_does_nothing_extra ... ok
[INFO] [stdout] test shell::tests::zero_ultra_volume_mutes_sound_but_keeps_the_ceremony_line ... ok
[INFO] [stdout] test shell::tests::the_duration_slot_becomes_the_shells_own_variable ... ok
[INFO] [stdout] test shell::tests::only_fish_sets_the_title_through_a_function ... ok
[INFO] [stdout] test show::tests::a_key_press_ends_the_show_at_once_in_its_final_state ... ok
[INFO] [stdout] test shell::tests::the_title_bit_needs_a_flavour_the_same_way_presence_does ... ok
[INFO] [stdout] test show::tests::a_key_press_produces_no_sprinkle_output_after_it ... ok
[INFO] [stdout] test show::tests::at_fifty_columns_no_sprinkle_output_at_all ... ok
[INFO] [stdout] test show::tests::an_unresolved_calendar_line_falls_back_to_the_ordinary_quip_in_the_animated_show ... ok
[INFO] [stdout] test show::tests::a_transparent_pc95_show_never_emits_a_background_colour ... ok
[INFO] [stdout] test show::tests::a_calendar_day_replaces_the_quip_in_the_animated_show_and_agrees_with_the_static_path ... ok
[INFO] [stdout] test shell::tests::zsh_reads_the_precmd_timer_without_tripping_nounset ... ok
[INFO] [stdout] test show::tests::kitty_sprinkles_full_sends_the_image_once_and_the_stream_stays_a_small_multiple_of_off ... ok
[INFO] [stdout] test show::tests::filter_typed_strips_escape_sequences_and_ctrl_c ... ok
[INFO] [stdout] test show::tests::speed_zero_final_rows_equal_render_static_for_pc95_with_both_flavours ... ok
[INFO] [stdout] test show::tests::speed_zero_light_final_rows_equal_render_static ... ok
[INFO] [stdout] test show::tests::light_shows_a_shimmer_over_the_firmware_line_and_plays_no_sound ... ok
[INFO] [stdout] test show::tests::light_stripe_sweep_appears_only_on_a_streak_milestone ... ok
[INFO] [stdout] test show::tests::full_beeps_once_with_no_fail_and_four_times_with_one ... ok
[INFO] [stdout] test show::tests::twinkle_does_not_run_with_no_mascot_but_shimmer_still_does ... ok
[INFO] [stdout] test show::tests::speed_zero_resolves_to_the_same_rows_as_render_static_unpainted ... ok
[INFO] [stdout] test show::tests::speed_zero_resolves_to_the_same_rows_as_render_static_painted ... ok
[INFO] [stdout] test show::tests::speed_zero_final_rows_equal_render_static_for_pc95_with_findings_for_both_flavours ... ok
[INFO] [stdout] test show::tests::sprinkles_off_is_byte_identical_to_the_pre_sprinkles_player ... ok
[INFO] [stdout] test shell::tests::no_mascot_leaves_the_variable_empty_so_a_prompt_is_unchanged ... ok
[INFO] [stdout] test sprinkles::tests::as_str_round_trips_through_parse ... ok
[INFO] [stdout] test show::tests::the_stream_shows_an_intermediate_detect_frame_and_many_count_values ... ok
[INFO] [stdout] test sprinkles::tests::level_parse_reads_the_four_values_and_anything_else_as_off ... ok
[INFO] [stdout] test sprinkles::tests::resolve_falls_back_to_config_with_no_env_and_env_wins_including_when_unknown ... ok
[INFO] [stdout] test sprinkles::tests::shimmer_frame_highlights_only_the_window ... ok
[INFO] [stdout] test sprinkles::tests::is_streak_milestone_matches_the_named_days_and_multiples_of_365_only ... ok
[INFO] [stdout] test sprinkles::tests::splice_passes_a_kitty_apc_sequence_through_untouched_and_uncounted ... ok
[INFO] [stdout] test setup::memtest::view::tests::no_line_is_ever_wider_than_the_terminal ... ok
[INFO] [stdout] test sprinkles::tests::shimmer_positions_sweep_every_window_and_are_empty_below_the_window_width ... ok
[INFO] [stdout] test sprinkles::tests::splice_over_a_whole_span_leaves_no_stray_colour_behind ... ok
[INFO] [stdout] test checks::projects::tests::the_400_directory_cap_holds ... ok
[INFO] [stdout] test sprinkles::tests::splice_of_a_prefix_still_resumes_the_colour_for_the_rest_of_the_same_span ... ok
[INFO] [stdout] test sprinkles::tests::splice_replaces_only_the_targeted_columns ... ok
[INFO] [stdout] test sprinkles::tests::splice_resumes_the_active_colour_after_a_mid_span_window ... ok
[INFO] [stdout] test sprinkles::tests::text_effects_and_sound_gates ... ok
[INFO] [stdout] test sprinkles::tests::wide_enough_at_the_boundary ... ok
[INFO] [stdout] test sprite::tests::a_terminal_that_speaks_neither_protocol_gets_no_image ... ok
[INFO] [stdout] test sprinkles::tests::twinkle_positions_is_empty_with_no_candidates ... ok
[INFO] [stdout] test sprinkles::tests::twinkle_frame_is_unchanged_once_blank ... ok
[INFO] [stdout] test sprinkles::tests::twinkle_glyph_runs_once_through_star_plus_dot_then_nothing ... ok
[INFO] [stdout] test sprinkles::tests::twinkle_positions_never_exceed_three_or_the_candidate_list_and_are_distinct ... ok
[INFO] [stdout] test sprinkles::tests::stripe_frame_colours_every_character_in_the_six_colour_cycle ... ok
[INFO] [stdout] test sprite::tests::every_builtin_flavours_sprite_resolves_to_a_non_empty_png ... ok
[INFO] [stdout] test sprite::tests::every_builtin_sprite_png_starts_with_the_png_signature ... ok
[INFO] [stdout] test sprite::tests::kitty_wins_when_a_terminal_could_be_read_as_either ... ok
[INFO] [stdout] test sprite::tests::kitty_terminals_are_detected_as_kitty ... ok
[INFO] [stdout] test sprite::tests::supports_kitty_truth_table ... ok
[INFO] [stdout] test sprite::tests::unknown_sprite_name_is_none ... ok
[INFO] [stdout] test sprite::tests::the_iterm_image_is_one_osc_1337_sized_in_cells_that_leaves_the_cursor_alone ... ok
[INFO] [stdout] test sprite::tests::kitty_image_chunks_a_large_payload ... ok
[INFO] [stdout] test sprite::tests::iterm_and_wezterm_are_detected_as_iterm ... ok
[INFO] [stdout] test state::tests::old_state_files_without_the_memory_test_keys_load_with_defaults ... ok
[INFO] [stdout] test state::tests::streak_rules ... ok
[INFO] [stdout] test state::tests::old_state_files_without_the_turbo_key_load_with_it_off ... ok
[INFO] [stdout] test state::tests::missing_and_corrupt_files_load_as_default ... ok
[INFO] [stdout] test template::tests::malformed_braces_are_literal ... ok
[INFO] [stdout] test template::tests::missing_slot_yields_none ... ok
[INFO] [stdout] test state::tests::the_turbo_flag_round_trips ... ok
[INFO] [stdout] test template::tests::replaces_known_slots ... ok
[INFO] [stdout] test template::tests::replaces_several_slots_in_one_line ... ok
[INFO] [stdout] test template::tests::slot_keys_finds_each_key_once_in_order ... ok
[INFO] [stdout] test template::tests::slot_keys_ignores_malformed_braces_like_render_does ... ok
[INFO] [stdout] test state::tests::the_memory_test_high_score_round_trips ... ok
[INFO] [stdout] test template::tests::slot_keys_is_empty_for_a_template_with_no_slots ... ok
[INFO] [stdout] test template::tests::text_without_slots_is_unchanged ... ok
[INFO] [stdout] test term::tests::a_non_terminal_fd_yields_none ... ok
[INFO] [stdout] test state::tests::unknown_fields_are_tolerated ... ok
[INFO] [stdout] test theme::tests::extract_palette_table_handles_the_last_table_in_the_file ... ok
[INFO] [stdout] test theme::tests::display_name_is_none_for_a_theme_that_is_not_one_of_ours ... ok
[INFO] [stdout] test show::tests::never_flash_no_frame_changes_more_than_480_cells_and_no_cell_blinks_faster_than_3_times_a_second ... ok
[INFO] [stdout] test theme::tests::display_name_returns_the_display_name_for_each_theme ... ok
[INFO] [stdout] test theme::tests::pick_config_path_falls_back_to_the_first_existing_candidate ... ok
[INFO] [stdout] test state::tests::save_then_load_round_trips_and_creates_the_directory ... ok
[INFO] [stdout] test theme::tests::install_and_use_installs_files_and_sets_the_theme ... ok
[INFO] [stdout] test theme::tests::every_theme_and_every_display_name_pair_up_with_no_gaps_on_either_side ... ok
[INFO] [stdout] test theme::tests::pick_config_path_is_none_when_nothing_exists ... ok
[INFO] [stdout] test theme::tests::resolve_name_accepts_short_and_full_names ... ok
[INFO] [stdout] test theme::tests::pick_config_path_prefers_a_candidate_with_a_theme_line ... ok
[INFO] [stdout] test theme::tests::set_ghostty_theme_appends_when_there_is_no_theme_line ... ok
[INFO] [stdout] test theme::tests::set_ghostty_theme_creates_a_missing_file_and_its_directory ... ok
[INFO] [stdout] test theme::tests::set_ghostty_theme_replaces_the_line_and_leaves_the_rest_alone ... ok
[INFO] [stdout] test theme::tests::set_starship_palette_does_nothing_without_a_top_level_palette_line ... ok
[INFO] [stdout] test theme::tests::set_starship_palette_does_nothing_when_the_file_is_missing ... ok
[INFO] [stdout] test theme::tests::set_starship_palette_handles_a_multiline_literal_string_the_same_way ... ok
[INFO] [stdout] test theme::tests::set_starship_palette_does_not_duplicate_an_existing_table ... ok
[INFO] [stdout] test theme::tests::set_starship_palette_ignores_a_commented_out_palette_line ... ok
[INFO] [stdout] test theme::tests::set_starship_palette_ignores_a_nested_palette_key ... ok
[INFO] [stdout] test theme::tests::set_starship_palette_ignores_a_palette_line_inside_a_multiline_string ... ok
[INFO] [stdout] test theme::tests::set_ghostty_theme_matches_a_theme_line_with_extra_spaces ... ok
[INFO] [stdout] test theme::tests::set_starship_palette_is_not_stuck_inside_a_string_that_opens_and_closes_on_one_line ... ok
[INFO] [stdout] test theme::tests::starship_palette_name_is_paper_only_for_the_paper_theme ... ok
[INFO] [stdout] test tomledit::tests::live_toml_lines_handles_a_multiline_literal_string ... ok
[INFO] [stdout] test theme::tests::set_starship_palette_repoints_the_line_and_appends_the_table ... ok
[INFO] [stdout] test tomledit::tests::live_toml_lines_marks_the_inside_of_a_multiline_basic_string_and_recovers_after_it ... ok
[INFO] [stdout] test tomledit::tests::live_toml_lines_treats_a_string_opened_and_closed_on_one_line_as_never_leaving ... ok
[INFO] [stdout] test theme::tests::set_starship_palette_preserves_double_quote_style ... ok
[INFO] [stdout] test tomledit::tests::set_top_level_key_appends_before_the_first_table_header_rather_than_after_it ... ok
[INFO] [stdout] test tomledit::tests::set_top_level_key_appends_when_the_key_is_absent ... ok
[INFO] [stdout] test tomledit::tests::set_top_level_key_ignores_a_commented_out_line ... ok
[INFO] [stdout] test tomledit::tests::set_top_level_key_keeps_the_original_lines_leading_whitespace ... ok
[INFO] [stdout] test tomledit::tests::set_top_level_key_preserves_the_trailing_newline_exactly ... ok
[INFO] [stdout] test tty::tests::raw_guard_is_none_on_a_non_terminal_fd ... ok
[INFO] [stdout] test tty::tests::wait_for_key_returns_data_already_on_a_pipe ... ok
[INFO] [stdout] test tomledit::tests::set_top_level_key_replaces_an_existing_value_and_leaves_the_rest_alone ... ok
[INFO] [stdout] test sprite::tests::base64_encodes_the_textbook_examples ... ok
[INFO] [stdout] test theme::tests::extract_palette_table_trims_the_next_tables_write_up_off_the_auto_table ... ok
[INFO] [stdout] test theme::tests::set_starship_palette_finds_the_palette_line_after_a_multiline_basic_format_string ... ok
[INFO] [stdout] test tty::tests::wait_for_key_times_out_on_an_empty_pipe ... ok
[INFO] [stdout] test screensaver::tests::the_fourteen_transmissions_happen_once_for_a_whole_run_however_many_frames ... ok
[INFO] [stdout] test tomledit::tests::set_top_level_key_ignores_the_same_key_inside_a_table ... ok
[INFO] [stdout] test cli::tests::ensure_ultra_sounds_writes_the_sixteen_sounds_into_a_given_directory ... ok
[INFO] [stdout] test sound::tests::sixteen_sounds_in_the_expected_order ... ok
[INFO] [stdout] test screensaver::tests::every_frame_deletes_the_image_the_previous_frame_placed_before_placing_the_new_one ... ok
[INFO] [stdout] test setup::tests::saving_with_sprinkles_set_to_ultra_generates_the_sixteen_sounds_on_the_spot ... ok
[INFO] [stdout] test sound::tests::generating_all_sixteen_is_within_budget ... FAILED
[INFO] [stdout] test sound::tests::every_sound_stays_under_half_scale ... ok
[INFO] [stdout] test sound::tests::ensure_writes_sixteen_valid_wav_files_then_nothing_on_a_second_call ... ok
[INFO] [stdout] test sound::tests::matches_the_python_reference_sample_for_sample ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- fetch::tests::matches_the_fetch_unicorn_golden_with_colour_off stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'fetch::tests::matches_the_fetch_unicorn_golden_with_colour_off' (1176) panicked at src/fetch.rs:226:10:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d491aa8bc55 - <unknown>
[INFO] [stdout]    1:     0x5d491aa6b3ca - <unknown>
[INFO] [stdout]    2:     0x5d491aa8b2eb - <unknown>
[INFO] [stdout]    3:     0x5d491aa8adcf - <unknown>
[INFO] [stdout]    4:     0x5d491aa8a9fa - <unknown>
[INFO] [stdout]    5:     0x5d491aa8a532 - <unknown>
[INFO] [stdout]    6:     0x5d491aab15f1 - <unknown>
[INFO] [stdout]    7:     0x5d491aab15a9 - <unknown>
[INFO] [stdout]    8:     0x5d491aab1abc - <unknown>
[INFO] [stdout]    9:     0x5d491aa6b25b - <unknown>
[INFO] [stdout]   10:     0x5d491aa6f501 - <unknown>
[INFO] [stdout]   11:     0x5d491a9ebd08 - <unknown>
[INFO] [stdout]   12:     0x5d491aacfdbb - <unknown>
[INFO] [stdout]   13:     0x5d491aacbf31 - <unknown>
[INFO] [stdout]   14:     0x5d491aacb71c - <unknown>
[INFO] [stdout]   15:     0x5d491aae778c - <unknown>
[INFO] [stdout]   16:     0x5d491aab3182 - <unknown>
[INFO] [stdout]   17:     0x75f6bb674dfa - <unknown>
[INFO] [stdout]   18:     0x75f6bb7083d4 - clone
[INFO] [stdout]   19:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- render::tests::pc95_matches_golden stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'render::tests::pc95_matches_golden' (1318) panicked at src/render.rs:1200:10:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d491aa8bc55 - <unknown>
[INFO] [stdout]    1:     0x5d491aa6b3ca - <unknown>
[INFO] [stdout]    2:     0x5d491aa8b2eb - <unknown>
[INFO] [stdout]    3:     0x5d491aa8adcf - <unknown>
[INFO] [stdout]    4:     0x5d491aa8a9fa - <unknown>
[INFO] [stdout]    5:     0x5d491aa8a532 - <unknown>
[INFO] [stdout]    6:     0x5d491aab15f1 - <unknown>
[INFO] [stdout]    7:     0x5d491aab15a9 - <unknown>
[INFO] [stdout]    8:     0x5d491aab1abc - <unknown>
[INFO] [stdout]    9:     0x5d491aa6b25b - <unknown>
[INFO] [stdout]   10:     0x5d491aa6f501 - <unknown>
[INFO] [stdout]   11:     0x5d491a9b71f4 - <unknown>
[INFO] [stdout]   12:     0x5d491aa0dcb5 - <unknown>
[INFO] [stdout]   13:     0x5d491aacfdbb - <unknown>
[INFO] [stdout]   14:     0x5d491aacbf31 - <unknown>
[INFO] [stdout]   15:     0x5d491aacb71c - <unknown>
[INFO] [stdout]   16:     0x5d491aae778c - <unknown>
[INFO] [stdout]   17:     0x5d491aab3182 - <unknown>
[INFO] [stdout]   18:     0x75f6bb674dfa - <unknown>
[INFO] [stdout]   19:     0x75f6bb7083d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- render::tests::pc95_painted_matches_golden stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'render::tests::pc95_painted_matches_golden' (1319) panicked at src/render.rs:1200:10:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d491aa8bc55 - <unknown>
[INFO] [stdout]    1:     0x5d491aa6b3ca - <unknown>
[INFO] [stdout]    2:     0x5d491aa8b2eb - <unknown>
[INFO] [stdout]    3:     0x5d491aa8adcf - <unknown>
[INFO] [stdout]    4:     0x5d491aa8a9fa - <unknown>
[INFO] [stdout]    5:     0x5d491aa8a532 - <unknown>
[INFO] [stdout]    6:     0x5d491aab15f1 - <unknown>
[INFO] [stdout]    7:     0x5d491aab15a9 - <unknown>
[INFO] [stdout]    8:     0x5d491aab1abc - <unknown>
[INFO] [stdout]    9:     0x5d491aa6b25b - <unknown>
[INFO] [stdout]   10:     0x5d491aa6f501 - <unknown>
[INFO] [stdout]   11:     0x5d491a9b71f4 - <unknown>
[INFO] [stdout]   12:     0x5d491aa0e2a1 - <unknown>
[INFO] [stdout]   13:     0x5d491aacfdbb - <unknown>
[INFO] [stdout]   14:     0x5d491aacbf31 - <unknown>
[INFO] [stdout]   15:     0x5d491aacb71c - <unknown>
[INFO] [stdout]   16:     0x5d491aae778c - <unknown>
[INFO] [stdout]   17:     0x5d491aab3182 - <unknown>
[INFO] [stdout]   18:     0x75f6bb674dfa - <unknown>
[INFO] [stdout]   19:     0x75f6bb7083d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- render::tests::pc95_findings_matches_golden_for_both_flavours stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'render::tests::pc95_findings_matches_golden_for_both_flavours' (1317) panicked at src/render.rs:1200:10:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d491aa8bc55 - <unknown>
[INFO] [stdout]    1:     0x5d491aa6b3ca - <unknown>
[INFO] [stdout]    2:     0x5d491aa8b2eb - <unknown>
[INFO] [stdout]    3:     0x5d491aa8adcf - <unknown>
[INFO] [stdout]    4:     0x5d491aa8a9fa - <unknown>
[INFO] [stdout]    5:     0x5d491aa8a532 - <unknown>
[INFO] [stdout]    6:     0x5d491aab15f1 - <unknown>
[INFO] [stdout]    7:     0x5d491aab15a9 - <unknown>
[INFO] [stdout]    8:     0x5d491aab1abc - <unknown>
[INFO] [stdout]    9:     0x5d491aa6b25b - <unknown>
[INFO] [stdout]   10:     0x5d491aa6f501 - <unknown>
[INFO] [stdout]   11:     0x5d491a9b71f4 - <unknown>
[INFO] [stdout]   12:     0x5d491aa13519 - <unknown>
[INFO] [stdout]   13:     0x5d491aacfdbb - <unknown>
[INFO] [stdout]   14:     0x5d491aacbf31 - <unknown>
[INFO] [stdout]   15:     0x5d491aacb71c - <unknown>
[INFO] [stdout]   16:     0x5d491aae778c - <unknown>
[INFO] [stdout]   17:     0x5d491aab3182 - <unknown>
[INFO] [stdout]   18:     0x75f6bb674dfa - <unknown>
[INFO] [stdout]   19:     0x75f6bb7083d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- sound::tests::generating_all_sixteen_is_within_budget stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sound::tests::generating_all_sixteen_is_within_budget' (1571) panicked at src/sound.rs:989:9:
[INFO] [stdout] took 299.940687ms, budget 200ms
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d491aa8bc55 - <unknown>
[INFO] [stdout]    1:     0x5d491aa6b3ca - <unknown>
[INFO] [stdout]    2:     0x5d491aa8b2eb - <unknown>
[INFO] [stdout]    3:     0x5d491aa8adcf - <unknown>
[INFO] [stdout]    4:     0x5d491aa8a9fa - <unknown>
[INFO] [stdout]    5:     0x5d491aa8a532 - <unknown>
[INFO] [stdout]    6:     0x5d491aab15f1 - <unknown>
[INFO] [stdout]    7:     0x5d491aab15a9 - <unknown>
[INFO] [stdout]    8:     0x5d491aab1abc - <unknown>
[INFO] [stdout]    9:     0x5d491aa6b25b - <unknown>
[INFO] [stdout]   10:     0x5d491a9fde4c - <unknown>
[INFO] [stdout]   11:     0x5d491aacfdbb - <unknown>
[INFO] [stdout]   12:     0x5d491aacbf31 - <unknown>
[INFO] [stdout]   13:     0x5d491aacb71c - <unknown>
[INFO] [stdout]   14:     0x5d491aae778c - <unknown>
[INFO] [stdout]   15:     0x5d491aab3182 - <unknown>
[INFO] [stdout]   16:     0x75f6bb674dfa - <unknown>
[INFO] [stdout]   17:     0x75f6bb7083d4 - clone
[INFO] [stdout]   18:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     fetch::tests::matches_the_fetch_unicorn_golden_with_colour_off
[INFO] [stdout]     render::tests::pc95_findings_matches_golden_for_both_flavours
[INFO] [stdout]     render::tests::pc95_matches_golden
[INFO] [stdout]     render::tests::pc95_painted_matches_golden
[INFO] [stdout]     sound::tests::generating_all_sixteen_is_within_budget
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] [stdout] test result: FAILED. 636 passed; 5 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.31s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054", kill_on_drop: false }`
[INFO] [stdout] 6a79786c01059051f0828e4ad67a1dac1c8156ad34d7a664ef6e8b466fe36054
