[INFO] fetching crate tetatui 0.2.0...
[INFO] testing tetatui-0.2.0 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate tetatui 0.2.0 into /workspace/builds/worker-1-tc2/source
[INFO] started tweaking crates.io crate tetatui 0.2.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate tetatui 0.2.0
[INFO] tweaked toml for crates.io crate tetatui 0.2.0 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate tetatui 0.2.0 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate tetatui 0.2.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd
[INFO] running `Command { std: "docker" "start" "66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd", 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" "66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd", 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" "66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling instability v0.3.13
[INFO] [stderr]    Compiling lru v0.18.3
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling syn v3.0.4
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling mio v1.2.2
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling time v0.3.55
[INFO] [stderr]    Compiling line-clipping v0.3.8
[INFO] [stderr]    Compiling fumen v0.1.2
[INFO] [stderr]    Compiling toml v1.1.4+spec-1.1.0
[INFO] [stderr]    Compiling compact_str v0.9.1
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling darling_core v0.24.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling ratatui-core v0.1.2
[INFO] [stderr]    Compiling clap v4.6.6
[INFO] [stderr]    Compiling darling_macro v0.24.1
[INFO] [stderr]    Compiling darling v0.24.1
[INFO] [stderr]    Compiling ratatui-widgets v0.3.2
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.2
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling ratatui-macros v0.7.2
[INFO] [stderr]    Compiling ratatui v0.30.2
[INFO] [stderr]    Compiling tetatui v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.25s
[INFO] running `Command { std: "docker" "inspect" "66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd", 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" "66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling tetatui v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 4.45s
[INFO] running `Command { std: "docker" "inspect" "66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd", 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" "66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.16s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/tetatui/5ba2f83f788afa89/out/tetatui-5ba2f83f788afa89)
[INFO] [stdout] 
[INFO] [stdout] running 136 tests
[INFO] [stdout] test engine::attack::tests::perfect_clear_dominates ... ok
[INFO] [stdout] test engine::attack::tests::tspins_outdamage_plain_clears ... ok
[INFO] [stdout] test engine::attack::tests::combo_bonus_escalates_and_saturates ... ok
[INFO] [stdout] test config::tests::assigning_a_bind_steals_it_from_other_actions ... ok
[INFO] [stdout] test engine::attack::tests::spinless_t_clears_do_no_bonus_damage ... ok
[INFO] [stdout] test engine::bag::tests::seeded_bags_are_deterministic ... ok
[INFO] [stdout] test config::tests::missing_fields_fall_back_to_defaults ... ok
[INFO] [stdout] test engine::board::tests::garbage_rows_are_one_short_of_full ... ok
[INFO] [stdout] test engine::bag::tests::peek_does_not_consume ... ok
[INFO] [stdout] test engine::board::tests::new_board_is_empty ... ok
[INFO] [stdout] test engine::board::tests::out_of_bounds_counts_as_filled ... ok
[INFO] [stdout] test engine::board::tests::from_ascii_is_bottom_aligned ... ok
[INFO] [stdout] test engine::board::tests::full_rows_and_collapse ... ok
[INFO] [stdout] test engine::board::tests::rising_garbage_lifts_the_stack_and_leaves_one_hole ... ok
[INFO] [stdout] test engine::board::tests::perfect_clear_detection ... ok
[INFO] [stdout] test engine::board::tests::rising_is_refused_when_it_would_push_the_stack_off_the_top ... ok
[INFO] [stdout] test engine::game::tests::block_out_ends_the_game ... ok
[INFO] [stdout] test engine::attack::tests::base_values ... ok
[INFO] [stdout] test engine::bag::tests::queue_prefix_is_respected ... ok
[INFO] [stdout] test engine::bag::tests::every_seven_pieces_form_a_full_bag ... ok
[INFO] [stdout] test config::tests::palette_parses_from_toml ... ok
[INFO] [stdout] test engine::game::tests::engaging_soft_drop_does_not_spend_banked_gravity_time ... ok
[INFO] [stdout] test engine::game::tests::ghost_projects_to_floor ... ok
[INFO] [stdout] test engine::board::tests::collapse_of_nothing_is_identity ... ok
[INFO] [stdout] test engine::game::tests::lock_delay_expires_after_half_second ... ok
[INFO] [stdout] test engine::game::tests::lock_resets_are_capped ... ok
[INFO] [stdout] test engine::board::tests::rising_nothing_is_allowed_and_changes_nothing ... ok
[INFO] [stdout] test engine::game::tests::rotation_without_corners_is_not_a_tspin ... ok
[INFO] [stdout] test config::tests::default_config_round_trips_through_toml ... ok
[INFO] [stdout] test engine::game::tests::movement_resets_lock_delay ... ok
[INFO] [stdout] test engine::attack::tests::back_to_back_adds_one ... ok
[INFO] [stdout] test engine::game::tests::hard_drop_scores_two_per_cell_and_locks ... ok
[INFO] [stdout] test engine::game::tests::hard_drop_with_travel_cancels_tspin ... ok
[INFO] [stdout] test engine::game::tests::hold_swaps_and_is_limited_to_once_per_piece ... ok
[INFO] [stdout] test engine::game::tests::gravity_advances_with_time ... ok
[INFO] [stdout] test engine::game::tests::level_advances_every_ten_lines ... ok
[INFO] [stdout] test engine::game::tests::soft_drop_scores_one_per_cell ... ok
[INFO] [stdout] test engine::game::tests::walls_stop_horizontal_movement ... ok
[INFO] [stdout] test engine::game::tests::spawns_centered_with_immediate_drop ... ok
[INFO] [stdout] test engine::piece::tests::every_state_has_four_distinct_cells ... ok
[INFO] [stdout] test engine::rng::tests::short_seeds_still_produce_distinct_bags ... ok
[INFO] [stdout] test engine::rng::tests::shuffle_is_a_permutation ... ok
[INFO] [stdout] test engine::piece::tests::rotation_states_are_true_srs_rotations ... ok
[INFO] [stdout] test engine::scoring::tests::back_to_back_multiplies_difficult_clears_by_1_5 ... ok
[INFO] [stdout] test engine::scoring::tests::perfect_clear_bonuses ... ok
[INFO] [stdout] test engine::piece::tests::rot_round_trips ... ok
[INFO] [stdout] test engine::rng::tests::entropy_seeds_differ ... ok
[INFO] [stdout] test engine::rng::tests::short_seeds_stay_six_digits ... ok
[INFO] [stdout] test engine::scoring::tests::combo_bonus_scales_with_level ... ok
[INFO] [stdout] test engine::rng::tests::deterministic_for_same_seed ... ok
[INFO] [stdout] test engine::scoring::tests::guideline_line_clear_values ... ok
[INFO] [stdout] test engine::scoring::tests::tspin_values ... ok
[INFO] [stdout] test engine::piece::tests::t_center_is_stable ... ok
[INFO] [stdout] test engine::srs::tests::first_test_is_always_no_offset ... ok
[INFO] [stdout] test engine::srs::tests::cw_and_ccw_between_same_states_are_inverses ... ok
[INFO] [stdout] test engine::srs::tests::jlstz_spot_checks_match_canonical_srs ... ok
[INFO] [stdout] test engine::srs::tests::opposing_180_transitions_are_inverses ... ok
[INFO] [stdout] test engine::srs::tests::the_180_table_never_kicks_a_piece_downward_between_vertical_states ... ok
[INFO] [stdout] test engine::finesse::tests::a_single_rotation_costs_one_input ... ok
[INFO] [stdout] test engine::finesse::tests::placement_costs_match_the_known_distribution ... ok
[INFO] [stdout] test engine::finesse::tests::floor_targets_match_the_table_and_rest_on_the_floor ... ok
[INFO] [stdout] test input::tests::no_repeats_before_das_elapses ... ok
[INFO] [stdout] test input::tests::release_falls_back_to_still_held_direction ... ok
[INFO] [stdout] test engine::finesse::tests::symmetric_rotations_collapse_to_one_entry ... ok
[INFO] [stdout] test engine::srs::tests::i_spot_checks_match_canonical_srs ... ok
[INFO] [stdout] test input::tests::opposite_press_takes_over ... ok
[INFO] [stdout] test engine::srs::tests::the_180_table_starts_with_the_plain_rotation ... ok
[INFO] [stdout] test engine::finesse::tests::walls_are_one_input_away ... ok
[INFO] [stdout] test keybind::tests::invalid_binds_are_rejected ... ok
[INFO] [stdout] test input::tests::zero_arr_shifts_to_wall ... ok
[INFO] [stdout] test engine::finesse::tests::spawn_placement_costs_nothing ... ok
[INFO] [stdout] test input::tests::repeats_fire_at_arr_after_das ... ok
[INFO] [stdout] test keybind::tests::char_matching_ignores_shift_and_case ... ok
[INFO] [stdout] test keybind::tests::parse_and_display_round_trip ... ok
[INFO] [stdout] test practice::coverage::tests::fixed_order_deals_the_authored_queue_only ... ok
[INFO] [stdout] test practice::coverage::tests::a_tuck_along_a_higher_row_then_a_drop_is_reachable ... ok
[INFO] [stdout] test practice::coverage::tests::cells_above_the_board_are_solid_like_the_engine ... ok
[INFO] [stdout] test practice::coverage::tests::landings_exclude_locks_entirely_above_the_visible_board ... ok
[INFO] [stdout] test practice::coverage::tests::the_final_placement_must_leave_the_spawn_clear ... ok
[INFO] [stdout] test practice::coverage::tests::queues_skip_repeated_orders ... ok
[INFO] [stdout] test practice::coverage::tests::settle_drops_full_rows_and_shifts_the_stack_down ... ok
[INFO] [stdout] test practice::fumen_import::tests::a_complete_row_in_the_starting_position_is_rejected ... ok
[INFO] [stdout] test practice::finesse_drill::tests::locks_are_judged_by_cells_then_by_input_count ... ok
[INFO] [stdout] test practice::finesse_drill::tests::aim_picks_a_resting_placement_of_the_piece_in_play ... ok
[INFO] [stdout] test practice::fumen_import::tests::a_clear_on_the_final_page_keeps_every_order_in_play ... ok
[INFO] [stdout] test practice::fumen_import::tests::a_starting_position_in_the_spawn_rows_is_rejected ... ok
[INFO] [stdout] test practice::coverage::tests::in_order_gap_reports_the_first_floating_placement ... ok
[INFO] [stdout] test practice::fumen_import::tests::goal_keys_parse ... ok
[INFO] [stdout] test practice::fumen_import::tests::a_drawn_position_becomes_the_starting_board ... ok
[INFO] [stdout] test practice::coverage::tests::placements_may_rest_on_the_starting_board ... ok
[INFO] [stdout] test practice::fumen_import::tests::hand_drawn_field_edits_are_rejected ... ok
[INFO] [stdout] test practice::coverage::tests::repeated_pieces_try_every_matching_placement ... ok
[INFO] [stdout] test practice::fumen_import::tests::malformed_and_out_of_bounds_fumens_error_instead_of_panicking ... ok
[INFO] [stdout] test practice::fumen_import::tests::overlapping_placements_are_rejected ... ok
[INFO] [stdout] test practice::fumen_import::tests::repeated_pieces_are_dealt_as_repeated ... ok
[INFO] [stdout] test practice::fumen_import::tests::pages_drawn_before_the_first_piece_may_change_freely ... ok
[INFO] [stdout] test practice::coverage::tests::a_tspin_slot_is_entered_by_rotation ... ok
[INFO] [stdout] test practice::fumen_import::tests::oversized_builds_are_rejected ... ok
[INFO] [stdout] test practice::fumen_import::tests::replicated_offsets_match_the_crate_probe ... ok
[INFO] [stdout] test practice::coverage::tests::spin_entry_works_whatever_rotation_state_labels_the_shape ... ok
[INFO] [stdout] test practice::fumen_import::tests::the_fumen_garbage_row_is_rejected ... ok
[INFO] [stdout] test practice::session::tests::long_queues_wrap_seven_letters_per_line ... ok
[INFO] [stdout] test practice::openers::tests::all_opener_placements_are_valid_shapes_without_overlap ... ok
[INFO] [stdout] test records::tests::higher_scores_beat_the_record ... ok
[INFO] [stdout] test records::tests::round_trips_through_toml ... ok
[INFO] [stdout] test records::tests::unfinished_runs_never_set_a_time_record ... ok
[INFO] [stdout] test practice::coverage::tests::a_free_order_finisher_may_clear_only_when_it_is_the_last_piece ... ok
[INFO] [stdout] test screens::game::tests::cheese_finishes_on_rows_dug_not_lines_cleared ... ok
[INFO] [stdout] test practice::fumen_import::tests::fixed_order_builds_must_work_in_page_order ... ok
[INFO] [stdout] test screens::game::tests::sprint_finishes_at_the_line_target ... ok
[INFO] [stdout] test screens::records::tests::scores_group_digits_in_threes ... ok
[INFO] [stdout] test screens::game::tests::times_format_as_minutes_seconds_hundredths ... ok
[INFO] [stdout] test screens::game::tests::endless_modes_have_no_goal ... ok
[INFO] [stdout] test records::tests::faster_sprint_times_beat_the_record ... ok
[INFO] [stdout] test ui::tests::danger_starts_when_the_stack_reaches_the_top_three_visible_rows ... ok
[INFO] [stdout] test ui::tests::digits_and_symbols_have_glyphs ... ok
[INFO] [stdout] test screens::game::tests::ultra_finishes_when_the_clock_runs_out ... ok
[INFO] [stdout] test ui::tests::board_lines_scale_multiplies_rows_and_columns ... ok
[INFO] [stdout] test ui::tests::danger_shades_empty_cells_and_nothing_else ... ok
[INFO] [stdout] test engine::finesse::tests::every_placement_of_every_piece_is_reachable ... ok
[INFO] [stdout] test ui::tests::big_text_matches_reported_width_and_height ... ok
[INFO] [stdout] test practice::fumen_import::tests::a_mid_build_clear_followed_by_a_final_clear_still_fixes_the_order ... ok
[INFO] [stdout] test ui::tests::ghost_renders_above_practice_overlay ... ok
[INFO] [stdout] test practice::fumen_import::tests::drawing_pages_before_the_first_piece_collapse_as_fumen_shows_them ... ok
[INFO] [stdout] test ui::tests::every_palette_gives_each_piece_its_own_colour ... ok
[INFO] [stdout] test practice::coverage::tests::a_mid_build_clear_is_only_allowed_in_page_order ... ok
[INFO] [stdout] test ui::tests::piece_lines_scale_multiplies_dimensions ... ok
[INFO] [stdout] test ui::tests::piece_letters_sit_on_the_middle_row_of_each_cell ... ok
[INFO] [stdout] test ui::tests::screen_scale_thresholds_follow_game_layout ... ok
[INFO] [stdout] test practice::coverage::tests::the_search_starts_where_the_engine_drops_the_spawned_piece ... ok
[INFO] [stdout] test practice::fumen_import::tests::line_clears_fix_the_dealt_order_and_keep_later_cells_in_the_cleared_frame ... ok
[INFO] [stdout] test screens::game::tests::the_attack_pop_outranks_the_combo_and_chain_when_space_is_tight ... ok
[INFO] [stdout] test practice::fumen_import::tests::imports_a_simple_two_piece_build ... ok
[INFO] [stdout] test practice::openers::tests::every_variant_is_buildable_from_some_bag ... ok
[INFO] [stdout] test practice::openers::tests::coverage_matches_published_rates ... ok
[INFO] [stdout] test practice::coverage::tests::hopeless_searches_stop_at_the_node_budget ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 136 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 31.27s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/tetatui/3716b0e3b589b4e2/out/tetatui-3716b0e3b589b4e2)
[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 tests/engine_scenarios.rs (/opt/rustwide/target/debug/build/tetatui/13c35a33c19d6e4e/out/engine_scenarios-13c35a33c19d6e4e)
[INFO] [stdout] 
[INFO] [stdout] running 20 tests
[INFO] [stdout] test back_to_back_tetrises ... ok
[INFO] [stdout] test a_small_goal_never_seeds_more_garbage_than_it_needs ... ok
[INFO] [stdout] test a_line_of_only_player_pieces_does_not_count_as_dug ... ok
[INFO] [stdout] test cheese_boards_are_reproducible_from_the_seed ... ok
[INFO] [stdout] test cheese_seeds_the_board_up_to_the_configured_height ... ok
[INFO] [stdout] test a_t_spin_survives_being_finished_with_180s ... ok
[INFO] [stdout] test consecutive_clears_build_combo ... ok
[INFO] [stdout] test plain_single_breaks_back_to_back ... ok
[INFO] [stdout] test the_game_can_end_during_the_clear_delay_without_reporting_a_lock ... ok
[INFO] [stdout] test every_hole_below_the_top_row_is_sealed_from_above ... ok
[INFO] [stdout] test rotating_180_reaches_the_opposite_state ... ok
[INFO] [stdout] test consecutive_garbage_rows_never_share_a_hole ... ok
[INFO] [stdout] test tspin_triple_via_test_five_kick ... ok
[INFO] [stdout] test perfect_clear_awards_bonus ... ok
[INFO] [stdout] test digging_a_garbage_row_counts_and_tops_the_stack_back_up ... ok
[INFO] [stdout] test rotating_180_is_refused_once_the_game_is_over ... ok
[INFO] [stdout] test the_no_repeat_rule_holds_across_a_top_up ... ok
[INFO] [stderr]      Running tests/mode_lifecycle.rs (/opt/rustwide/target/debug/build/tetatui/7a82e238e7961435/out/mode_lifecycle-7a82e238e7961435)
[INFO] [stdout] test tspin_double_scores_full ... ok
[INFO] [stdout] test tspin_mini_single_via_wall_kick ... ok
[INFO] [stdout] test zero_distance_hard_drop_preserves_tspin ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test topping_out_records_the_run_exactly_once ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 12.64s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/practice_scenarios.rs (/opt/rustwide/target/debug/build/tetatui/3ae65ae001657992/out/practice_scenarios-3ae65ae001657992)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test a_scenario_starts_from_its_drawn_board ... ok
[INFO] [stdout] test a_fixed_order_drill_accepts_only_the_next_page ... ok
[INFO] [stdout] test a_spin_finisher_completes_the_build_and_the_goal_at_once ... ok
[INFO] [stdout] test a_line_clearing_misdrop_shows_the_correction_in_the_collapsed_frame ... ok
[INFO] [stdout] test a_free_order_finisher_is_hidden_and_refused_until_it_is_the_last_piece ... ok
[INFO] [stdout] test an_i_spin_under_an_overhang_is_dealt_and_accepted ... ok
[INFO] [stdout] test a_clearing_scenario_validates_later_placements_in_the_collapsed_frame ... ok
[INFO] [stdout] test holding_the_finisher_until_last_completes_a_free_order_drill ... ok
[INFO] [stdout] test a_misdrop_that_clears_a_line_still_shows_the_correction ... ok
[INFO] [stdout] test the_next_silhouette_waits_for_the_clear_animation_to_finish ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/screens.rs (/opt/rustwide/target/debug/build/tetatui/1500c6c493e01068/out/screens-1500c6c493e01068)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test two_taps_in_compat_mode_count_as_two_inputs ... ok
[INFO] [stdout] test a_held_shift_in_compat_mode_counts_as_one_input ... ok
[INFO] [stdout] test presses_during_the_finesse_pause_are_not_charged_to_the_next_piece ... ok
[INFO] [stdout] test the_records_screen_shows_a_scrollbar_when_it_overflows ... ok
[INFO] [stdout] test the_finesse_drill_starts_with_a_target_on_an_empty_board ... ok
[INFO] [stdout] test the_records_screen_lists_mode_bests_and_opener_statistics ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 20.76s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests tetatui
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd", kill_on_drop: false }`
[INFO] [stdout] 66043e39267ea2947b2cc7f607a94a2c608f4c8d5f55e65490e5f83bf9433ddd
