[INFO] cloning repository https://github.com/danxiaogu520/RiichiMahjong
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/danxiaogu520/RiichiMahjong" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdanxiaogu520%2FRiichiMahjong", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdanxiaogu520%2FRiichiMahjong'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0a3f176a527e68a9c23239674aa513d1bf94f2cf
[INFO] testing danxiaogu520/RiichiMahjong against 1.98.0-beta.8+cargoflags=--release for beta-release-1.99-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdanxiaogu520%2FRiichiMahjong" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/danxiaogu520/RiichiMahjong
[INFO] finished tweaking git repo https://github.com/danxiaogu520/RiichiMahjong
[INFO] tweaked toml for git repo https://github.com/danxiaogu520/RiichiMahjong written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/danxiaogu520/RiichiMahjong on toolchain 1.98.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/danxiaogu520/RiichiMahjong 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.98.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded sha1 v0.10.7
[INFO] [stderr]   Downloaded tokio-tungstenite v0.24.0
[INFO] [stderr]   Downloaded tungstenite v0.24.0
[INFO] [stderr]   Downloaded log v0.4.32
[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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065
[INFO] running `Command { std: "docker" "start" "2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065", 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" "2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065", 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" "2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]    Compiling bytes v1.12.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling log v0.4.32
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling http-body v1.1.0
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling sha1 v0.10.7
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling data-encoding v2.11.0
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling utf-8 v0.7.6
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling http-body-util v0.1.4
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling matchit v0.7.3
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling tungstenite v0.24.0
[INFO] [stderr]    Compiling riichi-core v0.1.0 (/opt/rustwide/workdir/crates/riichi-core)
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling riichi-logic v0.1.0 (/opt/rustwide/workdir/crates/riichi-logic)
[INFO] [stderr]    Compiling riichi-proto v0.1.0 (/opt/rustwide/workdir/crates/riichi-proto)
[INFO] [stderr]    Compiling riichi-engine v0.1.0 (/opt/rustwide/workdir/crates/riichi-engine)
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling riichi-session v0.1.0 (/opt/rustwide/workdir/crates/riichi-session)
[INFO] [stderr]    Compiling riichi-ai v0.1.0 (/opt/rustwide/workdir/crates/riichi-ai)
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling riichi-server v0.1.0 (/opt/rustwide/workdir/crates/riichi-server)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 12s
[INFO] running `Command { std: "docker" "inspect" "2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065", 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" "2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling riichi-ai v0.1.0 (/opt/rustwide/workdir/crates/riichi-ai)
[INFO] [stderr]    Compiling riichi-engine v0.1.0 (/opt/rustwide/workdir/crates/riichi-engine)
[INFO] [stderr]    Compiling riichi-session v0.1.0 (/opt/rustwide/workdir/crates/riichi-session)
[INFO] [stderr]    Compiling riichi-server v0.1.0 (/opt/rustwide/workdir/crates/riichi-server)
[INFO] [stderr]    Compiling riichi-logic v0.1.0 (/opt/rustwide/workdir/crates/riichi-logic)
[INFO] [stdout] warning: unused import: `riichi_core::wall::Wall`
[INFO] [stdout]    --> crates/riichi-engine/src/state.rs:466:13
[INFO] [stdout]     |
[INFO] [stdout] 466 |         use riichi_core::wall::Wall;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling riichi-proto v0.1.0 (/opt/rustwide/workdir/crates/riichi-proto)
[INFO] [stderr]    Compiling riichi-core v0.1.0 (/opt/rustwide/workdir/crates/riichi-core)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 53.29s
[INFO] running `Command { std: "docker" "inspect" "2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065", 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" "2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `riichi_core::wall::Wall`
[INFO] [stderr]    --> crates/riichi-engine/src/state.rs:466:13
[INFO] [stderr]     |
[INFO] [stderr] 466 |         use riichi_core::wall::Wall;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `riichi-engine` (lib test) generated 1 warning (run `cargo fix --lib -p riichi-engine --tests` to apply 1 suggestion)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.14s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/riichi_ai-570a6551267506ad)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test discard::tests::discard_priority_matches_requested_order ... ok
[INFO] [stdout] test call_decision::tests::always_takes_ron_when_available ... ok
[INFO] [stdout] test call_decision::tests::passes_non_ron_calls ... ok
[INFO] [stdout] test agent::tests::basic_ai_returns_a_legal_discard_from_action_options ... ok
[INFO] [stdout] test agent::tests::basic_ai_ron_or_passes_call_options ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/riichi_core-b075cd6cece2e097)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test game::tests::high_chi_forbids_called_and_one_below_the_meld ... ok
[INFO] [stdout] test game::tests::mid_chi_and_kanchan_chi_only_forbid_the_called_tile ... ok
[INFO] [stdout] test hand::tests::add_keeps_tiles_sorted_and_counts_by_type ... ok
[INFO] [stdout] test hand::tests::add_returns_hand_full_instead_of_panicking ... ok
[INFO] [stdout] test wall::tests::kan_reduces_live_wall_by_one ... ok
[INFO] [stdout] test wall::tests::only_four_rinshan_tiles_can_be_drawn ... ok
[INFO] [stdout] test game::tests::low_chi_forbids_called_and_one_above_the_meld ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/riichi_engine-815fdea329bc5b07)
[INFO] [stdout] 
[INFO] [stdout] running 44 tests
[INFO] [stdout] test action::tests::chankan_on_ankan_is_only_for_kokushi ... ok
[INFO] [stdout] test action::tests::daiminkan_has_no_chankan_window_and_delays_dora_to_discard ... ok
[INFO] [stdout] test action::tests::completing_daisangen_records_the_discarder_as_pao_target ... ok
[INFO] [stdout] test action::tests::four_kan_abort_yields_to_ron ... ok
[INFO] [stdout] test action::tests::four_kan_aborts_after_the_following_discard_passes ... ok
[INFO] [stdout] test action::tests::kakan_does_not_reveal_dora_before_chankan_passes ... ok
[INFO] [stdout] test action::tests::open_white_dragon_pon_allows_ron_on_completing_tile ... ok
[INFO] [stdout] test action::tests::response_pass_by_discarder_advances_to_draw_phase ... ok
[INFO] [stdout] test action::tests::riichi_is_accepted_and_stick_deducted_when_declaration_discard_is_called ... ok
[INFO] [stdout] test action::tests::riichi_declaration_index_marks_the_first_post_riichi_river_discard ... ok
[INFO] [stdout] test action::tests::shape_only_wait_without_yaku_does_not_offer_ron ... ok
[INFO] [stdout] test action::tests::riichi_is_not_accepted_when_declaration_discard_is_ronned ... ok
[INFO] [stdout] test action::tests::suucha_riichi_does_not_abort_at_the_fourth_declaration ... ok
[INFO] [stdout] test action::tests::suufon_renda_triggers_on_a_plain_fourth_wind_discard ... ok
[INFO] [stdout] test action::tests::tsumo_records_win_details_with_seat_prefix ... ok
[INFO] [stdout] test call::tests::houtei_discard_cannot_be_called_but_can_be_ronned ... ok
[INFO] [stdout] test call::tests::open_kan_ron_shape_uses_fixed_meld_count ... ok
[INFO] [stdout] test call::tests::winning_shape_does_not_hide_optional_pon ... ok
[INFO] [stdout] test init::tests::new_game_starts_at_east_one ... ok
[INFO] [stdout] test action::tests::suucha_riichi_aborts_after_the_fourth_declaration_discard_passes ... ok
[INFO] [stdout] test init::tests::rotated_dealer_gets_east_wind ... ok
[INFO] [stdout] test riichi::tests::riichi_ankan_is_allowed_when_the_drawn_tile_completes_the_kan ... ok
[INFO] [stdout] test riichi::tests::riichi_ankan_is_forbidden_when_the_kan_skips_the_drawn_tile ... ok
[INFO] [stdout] test ryukyoku::tests::kyuushu_is_available_before_this_players_first_discard ... ok
[INFO] [stdout] test settlement::tests::final_ranking_orders_points_stably ... ok
[INFO] [stdout] test riichi::tests::riichi_options_only_contain_discards_that_keep_tenpai ... ok
[INFO] [stdout] test ryukyoku::tests::kyuushu_is_unavailable_after_this_players_first_discard ... ok
[INFO] [stdout] test settlement::tests::nagashi_mangan_includes_players_without_any_discards ... ok
[INFO] [stdout] test settlement::tests::carried_riichi_sticks_are_excluded_from_round_point_changes ... ok
[INFO] [stdout] test settlement::tests::nagashi_mangan_requires_only_terminal_honor_discards ... ok
[INFO] [stdout] test settlement::tests::final_riichi_sticks_go_to_the_top_player ... ok
[INFO] [stdout] test settlement::tests::multiple_nagashi_mangan_winners_are_settled_independently ... ok
[INFO] [stdout] test settlement::tests::south_four_dealer_leading_over_thirty_thousand_ends_game ... ok
[INFO] [stdout] test settlement::tests::south_four_without_target_enters_west_after_dealer_passes ... ok
[INFO] [stdout] test settlement::tests::tobi_ends_game_when_enabled ... ok
[INFO] [stdout] test settlement::tests::west_four_dealer_continues_but_pass_ends_game ... ok
[INFO] [stdout] test state::replay_tests::kakan_round_replays_consistently ... ok
[INFO] [stdout] test state::replay_tests::draw_and_discard_events_fold_back_to_the_same_state ... ok
[INFO] [stdout] test state::replay_tests::minkan_round_replays_consistently ... ok
[INFO] [stdout] test win::context_tests::double_riichi_requires_first_discard_and_no_calls_before_declaration ... ok
[INFO] [stdout] test win::context_tests::ippatsu_expires_on_the_next_own_discard ... ok
[INFO] [stdout] test win::context_tests::ippatsu_is_cancelled_by_any_call ... ok
[INFO] [stdout] test win::context_tests::ippatsu_survives_a_robbed_kakan_but_not_other_calls ... ok
[INFO] [stderr]      Running tests/half_game.rs (/opt/rustwide/target/release/deps/half_game-c6fb79f51cf9a4f7)
[INFO] [stdout] test init::tests::start_round_resets_events_and_assigns_current_seat_winds ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 44 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test local_auto_pass_game_finishes_half_game ... ok
[INFO] [stdout] test four_closed_efficiency_ai_finishes_and_monitors_half_game ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/riichi_logic-eb925061e4ceb0f4)
[INFO] [stdout] 
[INFO] [stdout] running 30 tests
[INFO] [stdout] test evaluation::tests::double_riichi_does_not_also_count_riichi ... ok
[INFO] [stdout] test evaluation::tests::mortal_ryanpeiko_pinfu_case_selects_the_highest_decomposition ... ok
[INFO] [stdout] test dora::tests::fixed_rule_has_one_red_five_per_suit ... ok
[INFO] [stdout] test evaluation::tests::ron_sequence_completion_preserves_sanankou_for_highest_points ... ok
[INFO] [stdout] test evaluation::tests::all_open_sanshoku_patterns_are_detected ... ok
[INFO] [stdout] test evaluation::tests::mortal_chiitoitsu_case_keeps_tanyao_and_fixed_25_fu ... ok
[INFO] [stdout] test evaluation::tests::open_yaku_use_their_reduced_han_values ... ok
[INFO] [stdout] test evaluation::tests::open_yakuhai_is_a_valid_yaku ... ok
[INFO] [stdout] test dora::tests::only_zero_copy_fives_are_red ... ok
[INFO] [stdout] test evaluation::tests::ron_triplet_completion_does_not_count_as_concealed_triplet ... ok
[INFO] [stdout] test evaluation::tests::thirteen_sided_kokushi_and_pure_chuuren_are_distinguished ... ok
[INFO] [stdout] test evaluation::tests::tsumo_suuankou_shanpon_is_single_yakuman ... ok
[INFO] [stdout] test evaluation::tests::tsumo_suuankou_tanki_is_double_yakuman ... ok
[INFO] [stdout] test evaluation::tests::yakuman_result_does_not_include_regular_yaku_or_dora ... ok
[INFO] [stdout] test evaluation::tests::yaku_completed_by_this_wait_is_valid_under_partial_wait_rule ... ok
[INFO] [stdout] test fu::tests::edge_wait_fu_only_applies_to_the_edge_side ... ok
[INFO] [stdout] test fu::tests::open_pon_contributes_two_or_four_fu ... ok
[INFO] [stdout] test fu::tests::ron_completed_triplet_uses_minkou_fu ... ok
[INFO] [stdout] test scoring::tests::double_yakuman_uses_two_yakuman_sticks ... ok
[INFO] [stdout] test scoring::tests::high_fu_is_capped_at_mangan ... ok
[INFO] [stdout] test scoring::tests::honba_is_three_hundred_points_on_ron ... ok
[INFO] [stdout] test scoring::tests::ron_riichi_sticks_are_not_paid_by_the_loser ... ok
[INFO] [stdout] test shape::tests::open_hand_wait_uses_remaining_concealed_mentsu ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/riichi_proto-810723589133a1df)
[INFO] [stdout] test shape::tests::kokushi_with_a_simple_tile_is_not_tenpai ... ok
[INFO] [stdout] test scoring::tests::ron_transfers_points_from_loser ... ok
[INFO] [stdout] test scoring::tests::tsumo_honba_is_one_hundred_per_opponent ... ok
[INFO] [stdout] test scoring::tests::yakuman_ron_is_split_between_discarder_and_pao_target ... ok
[INFO] [stdout] test scoring::tests::yakuman_tsumo_is_paid_fully_by_pao_target ... ok
[INFO] [stdout] test shape::tests::triplet_cannot_wait_for_a_fourth_copy_as_seven_pairs ... ok
[INFO] [stdout] test shape::tests::wait_classification_distinguishes_edge_and_two_sided_waits ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/riichi_server-c339fca60979b3cf)
[INFO] [stdout] 
[INFO] [stdout] running 25 tests
[INFO] [stdout] test application::tests::finished_game_releases_session_and_room ... ok
[INFO] [stdout] test application::tests::owner_can_start_one_human_three_ai_game ... ok
[INFO] [stdout] test application::tests::application_checks_token_before_changing_ready_state ... ok
[INFO] [stdout] test protocol::tests::action_event_is_scoped_to_the_authenticated_recipient ... ok
[INFO] [stdout] test protocol::tests::command_tracker_rejects_stale_and_duplicate_commands ... ok
[INFO] [stdout] test application::tests::room_info_never_serializes_connection_tokens ... ok
[INFO] [stdout] test protocol::tests::first_state_can_be_marked_as_a_complete_snapshot ... ok
[INFO] [stdout] test protocol::tests::round_end_reason_view_preserves_abortive_draw_kinds ... ok
[INFO] [stdout] test protocol::tests::call_view_only_exposes_recipient_options ... ok
[INFO] [stdout] test application::tests::game_cannot_start_before_all_four_players_are_ready ... ok
[INFO] [stdout] test protocol::tests::authenticated_command_gets_connection_identity ... ok
[INFO] [stdout] test protocol::tests::wire_action_does_not_supply_player_identity ... ok
[INFO] [stdout] test room::tests::connection_lifecycle_updates_only_the_token_owner ... ok
[INFO] [stdout] test protocol::tests::snapshot_request_is_sequence_checked_but_never_becomes_an_action ... ok
[INFO] [stdout] test protocol::tests::state_view_only_exposes_recipient_hand_and_drawn_tile ... ok
[INFO] [stdout] test protocol::tests::server_sequencer_assigns_monotonic_connection_sequence ... ok
[INFO] [stdout] test room::tests::four_players_get_stable_seats_and_only_ready_rooms_start ... ok
[INFO] [stdout] test room::tests::one_human_and_three_ai_can_start_after_human_ready ... ok
[INFO] [stdout] test room::tests::owner_can_configure_zero_to_three_ai_seats ... ok
[INFO] [stdout] test room::tests::reconnect_token_restores_the_original_seat ... ok
[INFO] [stdout] test transport::tests::health_and_room_creation_routes_are_available ... ok
[INFO] [stdout] test protocol::tests::controller_change_event_is_serialized_without_hidden_game_state ... ok
[INFO] [stdout] test room::tests::non_owner_cannot_change_ai_count_or_start_room ... ok
[INFO] [stdout] test application::tests::disconnected_human_is_taken_over_only_after_injected_delay ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/deps/riichi_server-6eef24e1b58acdb9)
[INFO] [stdout] test application::tests::reconnect_before_takeover_cancels_generation_checked_timer ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[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/ai_room.rs (/opt/rustwide/target/release/deps/ai_room-74350452b11aae6d)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test reconnect_after_takeover_restores_human_controller ... ok
[INFO] [stdout] test reconnect_before_delay_prevents_ai_takeover ... ok
[INFO] [stdout] test one_human_three_ai_room_reaches_game_over ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.07s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/riichi_session-4b0bf8224dd60730)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test game::tests::install_agent_broadcasts_controller_change_and_reconnect_restores_human ... ok
[INFO] [stdout] test game::tests::pon_beats_chi_and_nearer_call_wins_same_priority ... ok
[INFO] [stdout] test game::tests::reconnect_sends_state_and_current_action_prompt ... ok
[INFO] [stdout] test agent::tests::runner_only_forwards_agent_actions ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stderr]    Doc-tests riichi_ai
[INFO] [stdout] 
[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]    Doc-tests riichi_core
[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]    Doc-tests riichi_engine
[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]    Doc-tests riichi_logic
[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]    Doc-tests riichi_proto
[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]    Doc-tests riichi_server
[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]    Doc-tests riichi_session
[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" "2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065", kill_on_drop: false }`
[INFO] [stdout] 2e83270a05a1c783c86d7bd6f8272f087bf6c803b51713bd65c8ff6bf5511065
