[INFO] cloning repository https://github.com/korjavin/vsbot [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/korjavin/vsbot" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkorjavin%2Fvsbot", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkorjavin%2Fvsbot'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] a0a4d1d08e3815e46f6fa66f9df4438d0e8b6f3b [INFO] testing korjavin/vsbot/a0a4d1d08e3815e46f6fa66f9df4438d0e8b6f3b against 1.99.0-beta.8 for beta-1.100-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkorjavin%2Fvsbot" "/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/korjavin/vsbot [INFO] finished tweaking git repo https://github.com/korjavin/vsbot [INFO] tweaked toml for git repo https://github.com/korjavin/vsbot written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/korjavin/vsbot 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 git repo https://github.com/korjavin/vsbot 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] [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-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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993 [INFO] running `Command { std: "docker" "start" "a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993", 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" "a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993" "/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" "a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993", 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" "a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling itoa v1.0.18 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling libc v0.2.189 [INFO] [stderr] Compiling serde_core v1.0.229 [INFO] [stderr] Compiling zmij v1.0.23 [INFO] [stderr] Compiling serde_json v1.0.151 [INFO] [stderr] Compiling syn v3.0.3 [INFO] [stderr] Compiling serde v1.0.229 [INFO] [stderr] Compiling memchr v2.8.3 [INFO] [stderr] Compiling find-msvc-tools v0.1.10 [INFO] [stderr] Compiling cc v1.4.2 [INFO] [stderr] Compiling zeroize v1.9.0 [INFO] [stderr] Compiling rustls-pki-types v1.15.1 [INFO] [stderr] Compiling typenum v1.20.1 [INFO] [stderr] Compiling bytes v1.12.1 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling hybrid-array v0.4.14 [INFO] [stderr] Compiling rand_core v0.10.1 [INFO] [stderr] Compiling untrusted v0.9.0 [INFO] [stderr] Compiling getrandom v0.4.3 [INFO] [stderr] Compiling rustls v0.23.43 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling cpufeatures v0.3.0 [INFO] [stderr] Compiling mio v1.2.2 [INFO] [stderr] Compiling socket2 v0.6.5 [INFO] [stderr] Compiling subtle v2.6.1 [INFO] [stderr] Compiling crypto-common v0.2.2 [INFO] [stderr] Compiling block-buffer v0.12.1 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling const-oid v0.10.2 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling thiserror v2.0.20 [INFO] [stderr] Compiling chacha20 v0.10.1 [INFO] [stderr] Compiling futures-core v0.3.34 [INFO] [stderr] Compiling futures-sink v0.3.34 [INFO] [stderr] Compiling rand v0.10.2 [INFO] [stderr] Compiling digest v0.11.3 [INFO] [stderr] Compiling sha1 v0.11.0 [INFO] [stderr] Compiling http v1.5.0 [INFO] [stderr] Compiling webpki-roots v1.0.9 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling data-encoding v2.11.1 [INFO] [stderr] Compiling futures-task v0.3.34 [INFO] [stderr] Compiling log v0.4.33 [INFO] [stderr] Compiling futures-util v0.3.34 [INFO] [stderr] Compiling webpki-roots v0.26.11 [INFO] [stderr] Compiling uuid v1.24.0 [INFO] [stderr] Compiling serde_derive v1.0.229 [INFO] [stderr] Compiling tokio-macros v2.7.2 [INFO] [stderr] Compiling thiserror-impl v2.0.20 [INFO] [stderr] Compiling tokio v1.53.1 [INFO] [stderr] Compiling virus-core v0.1.0 (/opt/rustwide/workdir/crates/virus-core) [INFO] [stderr] Compiling virus-eval v0.1.0 (/opt/rustwide/workdir/crates/virus-eval) [INFO] [stderr] Compiling virus-mcts v0.1.0 (/opt/rustwide/workdir/crates/virus-mcts) [INFO] [stderr] Compiling virus-search v0.1.0 (/opt/rustwide/workdir/crates/virus-search) [INFO] [stderr] Compiling virus-arena v0.1.0 (/opt/rustwide/workdir/crates/virus-arena) [INFO] [stderr] Compiling virus-selfplay v0.1.0 (/opt/rustwide/workdir/crates/virus-selfplay) [INFO] [stderr] Compiling tokio-util v0.7.19 [INFO] [stderr] Compiling rustls-webpki v0.103.14 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling tungstenite v0.30.0 [INFO] [stderr] Compiling tokio-tungstenite v0.30.0 [INFO] [stderr] Compiling virus-proto v0.1.0 (/opt/rustwide/workdir/crates/virus-proto) [INFO] [stderr] Compiling vsbot v0.1.0 (/opt/rustwide/workdir/crates/vsbot) [INFO] [stderr] Finished `dev` profile [optimized + debuginfo] target(s) in 1m 26s [INFO] running `Command { std: "docker" "inspect" "a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993", 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" "a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling virus-arena v0.1.0 (/opt/rustwide/workdir/crates/virus-arena) [INFO] [stderr] Compiling virus-selfplay v0.1.0 (/opt/rustwide/workdir/crates/virus-selfplay) [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling virus-mcts v0.1.0 (/opt/rustwide/workdir/crates/virus-mcts) [INFO] [stderr] Compiling tokio v1.53.1 [INFO] [stderr] Compiling virus-search v0.1.0 (/opt/rustwide/workdir/crates/virus-search) [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling tokio-tungstenite v0.30.0 [INFO] [stderr] Compiling tokio-util v0.7.19 [INFO] [stderr] Compiling virus-eval v0.1.0 (/opt/rustwide/workdir/crates/virus-eval) [INFO] [stderr] Compiling virus-proto v0.1.0 (/opt/rustwide/workdir/crates/virus-proto) [INFO] [stderr] Compiling vsbot v0.1.0 (/opt/rustwide/workdir/crates/vsbot) [INFO] [stderr] Compiling virus-core v0.1.0 (/opt/rustwide/workdir/crates/virus-core) [INFO] [stderr] Finished `test` profile [optimized + debuginfo] target(s) in 22.66s [INFO] running `Command { std: "docker" "inspect" "a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993", 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" "a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [optimized + debuginfo] target(s) in 0.08s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/virus_arena-53c7ccc3b3523df5) [INFO] [stdout] [INFO] [stdout] running 53 tests [INFO] [stdout] test engine::tests::an_mcts_side_names_its_artifact ... ok [INFO] [stdout] test engine::tests::alpha_beta_arms_never_enable_smp ... ok [INFO] [stdout] test engine::tests::an_mcts_side_without_a_net_is_an_error_not_a_panic ... ok [INFO] [stdout] test engine::tests::budgets_parse_from_the_cli_form ... ok [INFO] [stdout] test engine::tests::meaningless_combinations_are_refused_before_any_game ... ok [INFO] [stdout] test engine::tests::side_specs_parse_to_the_expected_engines ... ok [INFO] [stdout] test engine::tests::names_carry_engine_and_budget ... ok [INFO] [stdout] test engine::tests::the_greedy_floor_matches_the_documented_rule ... ok [INFO] [stdout] test gauntlet::tests::a_bad_configuration_is_refused ... ok [INFO] [stdout] test engine::tests::tags_match_the_java_provenance_spelling ... ok [INFO] [stdout] test engine::tests::a_second_seat_arm_roots_at_its_own_seat ... ok [INFO] [stdout] test engine::tests::a_depth_budgeted_arm_returns_a_legal_action ... ok [INFO] [stdout] test engine::tests::a_node_budgeted_alpha_beta_arm_returns_a_legal_action ... ok [INFO] [stdout] test gauntlet::tests::outcomes_are_read_from_side_as_chair ... ok [INFO] [stdout] test gauntlet::tests::odd_game_counts_are_rounded_up_to_even ... ok [INFO] [stdout] test gauntlet::tests::the_turn_cap_is_counted_in_turns ... ok [INFO] [stdout] test probes::tests::a_game_with_no_recorded_winner_is_not_labelled_a_loss ... ok [INFO] [stdout] test probes::tests::a_lost_neutral_placement_is_mined_as_a_suspect ... ok [INFO] [stdout] test probes::tests::a_non_neutral_position_is_refused_by_state ... ok [INFO] [stdout] test probes::tests::a_probe_record_round_trips_through_jsonl ... ok [INFO] [stdout] test probes::tests::a_recorded_game_replays_through_the_real_rules ... ok [INFO] [stdout] test probes::tests::a_seat_outside_the_two_player_rules_is_skipped_by_name ... ok [INFO] [stdout] test probes::tests::a_zero_cap_takes_nothing ... ok [INFO] [stdout] test probes::tests::a_zero_horizon_does_not_index_off_the_front ... ok [INFO] [stdout] test probes::tests::an_out_of_rules_recording_is_rejected_not_fabricated ... ok [INFO] [stdout] test probes::tests::logsumexp_is_stable_and_correct ... ok [INFO] [stdout] test probes::tests::omitted_zero_coordinates_round_trip ... ok [INFO] [stdout] test probes::tests::probe_sources_round_trip_their_wire_spelling ... ok [INFO] [stdout] test probes::tests::the_advantage_label_is_the_movers_cell_lead ... ok [INFO] [stdout] test probes::tests::the_configured_source_reaches_the_mined_records ... ok [INFO] [stdout] test rng::tests::a_stream_is_reproducible ... ok [INFO] [stdout] test rng::tests::below_stays_in_range_and_covers_it ... ok [INFO] [stdout] test rng::tests::both_colours_of_a_pair_share_a_seed ... ok [INFO] [stdout] test rng::tests::different_pairs_get_different_seeds ... ok [INFO] [stdout] test rng::tests::mix64_is_a_bijection_on_a_sample ... ok [INFO] [stdout] test rng::tests::nearby_base_seeds_do_not_overlap ... ok [INFO] [stdout] test rng::tests::next_f64_is_a_unit_interval_draw ... ok [INFO] [stdout] test stats::tests::a_small_sample_prints_informational_only ... ok [INFO] [stdout] test stats::tests::adding_outcomes_tallies_them ... ok [INFO] [stdout] test stats::tests::an_empty_record_reports_zero_not_nan ... ok [INFO] [stdout] test stats::tests::draws_are_not_half_wins_in_the_headline ... ok [INFO] [stdout] test stats::tests::flipping_a_record_swaps_wins_and_losses ... ok [INFO] [stdout] test stats::tests::merging_adds_componentwise ... ok [INFO] [stdout] test stats::tests::the_sample_size_ladder_is_enforced ... ok [INFO] [stdout] test stats::tests::wilson_behaves_at_the_extremes ... ok [INFO] [stdout] test stats::tests::wilson_matches_the_go_reference ... ok [INFO] [stdout] test gauntlet::tests::games_terminate_decisively ... ok [INFO] [stdout] test gauntlet::tests::a_different_seed_produces_different_games ... ok [INFO] [stdout] test gauntlet::tests::seats_alternate_by_game_parity ... ok [INFO] [stdout] test gauntlet::tests::epsilon_zero_replays_one_opening ... ok [INFO] [stdout] test gauntlet::tests::a_node_budget_run_is_reproducible_and_thread_invariant ... ok [INFO] [stdout] test gauntlet::tests::self_play_cancels_exactly ... ok [INFO] [stdout] test gauntlet::tests::alpha_beta_beats_the_greedy_floor ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 53 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.63s [INFO] [stdout] [INFO] [stderr] Running unittests src/bin/arena.rs (/opt/rustwide/target/debug/deps/arena-f69b8c32bebeecaa) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test tests::a_per_side_flag_leaves_the_other_side_on_the_shared_default ... ok [INFO] [stdout] test tests::a_side_named_twice_with_two_paths_is_refused ... ok [INFO] [stdout] test tests::a_side_that_needs_no_net_resolves_to_none ... ok [INFO] [stdout] test tests::one_net_flag_serves_both_mcts_sides ... ok [INFO] [stdout] test tests::a_spec_path_overrides_the_shared_net_flag ... ok [INFO] [stdout] test tests::the_new_flags_still_need_values ... ok [INFO] [stdout] test tests::two_different_artifacts_resolve_per_side ... 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/bin/probe.rs (/opt/rustwide/target/debug/deps/probe-16f7894eb1288c6a) [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/crossplay.rs (/opt/rustwide/target/debug/deps/crossplay-2255d94371dedb67) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test vsbot_plays_the_go_bot_through_the_real_server ... ok [INFO] [stdout] test the_crossplay_tally_is_correct ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s [INFO] [stdout] [INFO] [stderr] Running tests/determinism.rs (/opt/rustwide/target/debug/deps/determinism-3c7e82ac84cbb4db) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test gate_runs_end_in_decided_games ... ok [INFO] [stdout] test a_self_gauntlet_reads_exactly_fifty_percent ... ok [INFO] [stdout] test a_fixed_seed_node_budget_gauntlet_reproduces_byte_identically ... ok [INFO] [stdout] test the_tally_does_not_depend_on_the_worker_count ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.84s [INFO] [stdout] [INFO] [stderr] Running tests/net_vs_net.rs (/opt/rustwide/target/debug/deps/net_vs_net-ac9f35f64c45f79a) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test the_two_test_artifacts_are_genuinely_different_nets ... ok [INFO] [stdout] test one_artifact_against_itself_still_cancels_exactly ... ok [INFO] [stdout] test two_arms_on_two_artifacts_search_differently ... ok [INFO] [stdout] test the_shared_net_path_is_unchanged ... ok [INFO] [stdout] test a_net_vs_net_run_is_not_one_artifact_against_itself ... ok [INFO] [stdout] test a_net_follows_its_side_and_not_its_seat ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.96s [INFO] [stdout] [INFO] [stderr] Running tests/probes_fixture.rs (/opt/rustwide/target/debug/deps/probes_fixture-1d3531e10057aee7) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test both_mined_classes_are_represented ... ok [INFO] [stdout] test the_committed_set_is_the_documented_size ... ok [INFO] [stdout] test every_record_carries_its_provenance ... ok [INFO] [stdout] test the_live_owner_half_is_populated ... ok [INFO] [stdout] test the_played_pair_was_legal_at_the_position ... ok [INFO] [stdout] test ids_and_positions_are_unique ... ok [INFO] [stdout] test every_position_is_a_real_neutral_decision ... 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/debug/deps/virus_core-a59712cdaf6a125f) [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/movegen_parity.rs (/opt/rustwide/target/debug/deps/movegen_parity-f52a84f19971958f) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test decodes_every_search_parity_record ... ok [INFO] [stdout] test unanalyzed_position_enumerates_identically ... ok [INFO] [stdout] test zobrist_stays_incrementally_correct ... ok [INFO] [stdout] test recorded_choice_is_enumerated ... ok [INFO] [stdout] test state_hash_matches_gobot ... ok [INFO] [stdout] test search_action_order_matches_gobot ... ok [INFO] [stdout] test apply_matches_gobot_transition ... ok [INFO] [stdout] test position_agrees_with_the_authoritative_state ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] Running tests/rules.rs (/opt/rustwide/target/debug/deps/rules-3352009241c4b4a2) [INFO] [stdout] [INFO] [stdout] running 21 tests [INFO] [stdout] test an_eliminated_player_cannot_win_the_territory_tiebreak ... ok [INFO] [stdout] test adjacency_is_eight_way ... ok [INFO] [stdout] test a_skipped_seat_does_not_get_the_turn ... ok [INFO] [stdout] test a_finished_or_inactive_position_enumerates_nothing ... ok [INFO] [stdout] test eliminated_players_keep_their_cells_and_stay_capturable ... ok [INFO] [stdout] test capturing_an_enemy_normal_makes_it_your_fortified ... ok [INFO] [stdout] test a_neutral_split_can_sever_a_component ... ok [INFO] [stdout] test fortified_bases_and_neutrals_are_immune ... ok [INFO] [stdout] test moves_are_enumerated_in_row_major_target_order ... ok [INFO] [stdout] test neutral_pairs_must_be_two_distinct_own_normals ... ok [INFO] [stdout] test placing_neutrals_consumes_the_whole_turn_and_only_happens_once ... ok [INFO] [stdout] test territory_decides_a_turn_capped_game ... ok [INFO] [stdout] test neutral_pairs_follow_the_moves_and_are_ordered_by_board_index ... ok [INFO] [stdout] test targets_must_touch_the_base_connected_component ... ok [INFO] [stdout] test out_of_bounds_and_wrong_shaped_actions_are_rejected ... ok [INFO] [stdout] test the_zobrist_key_covers_the_hidden_state ... ok [INFO] [stdout] test the_last_player_able_to_move_wins_regardless_of_territory ... ok [INFO] [stdout] test the_last_active_player_wins ... ok [INFO] [stdout] test the_curated_pair_set_is_bounded_and_legal ... ok [INFO] [stdout] test the_mover_does_not_alternate_per_ply ... ok [INFO] [stdout] test the_incremental_key_tracks_a_full_game ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/snapshot.rs (/opt/rustwide/target/debug/deps/snapshot-8babe26ff2afe354) [INFO] [stdout] [INFO] [stdout] running 11 tests [INFO] [stdout] test an_unknown_cell_kind_fails_to_parse ... ok [INFO] [stdout] test an_honest_snapshot_keeps_both_seats_active ... ok [INFO] [stdout] test a_stuck_seat_reported_active_is_recomputed_as_dead ... ok [INFO] [stdout] test a_seat_the_server_calls_dead_is_never_revived ... ok [INFO] [stdout] test decodes_the_real_go_server_wire_format ... ok [INFO] [stdout] test both_wire_dialects_decode_identically ... ok [INFO] [stdout] test a_live_mover_with_no_moves_left_enumerates_nothing ... ok [INFO] [stdout] test malformed_snapshots_are_rejected_with_a_reason ... ok [INFO] [stdout] test round_trips_a_mid_game_position ... ok [INFO] [stdout] test round_trips_through_the_engine ... ok [INFO] [stdout] test unknown_fields_are_ignored ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 11 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/debug/deps/virus_eval-f0dacad022ac8b49) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test tests::default_params_match_go_literals ... ok [INFO] [stdout] test tests::neighbors_scan_order_matches_go ... ok [INFO] [stdout] test tests::normalized_multiplies_before_dividing ... ok [INFO] [stdout] test tests::inactive_seats_score_half_a_mate ... ok [INFO] [stdout] test tests::negative_weights_clamp_to_zero_like_go ... ok [INFO] [stdout] test tests::workspace_reuse_is_score_invariant ... ok [INFO] [stdout] test tests::zero_cut_loss_divisor_is_rejected_up_front - should panic ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/no_alloc.rs (/opt/rustwide/target/debug/deps/no_alloc-1ee4b917f7bfd863) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test reused_workspace_reaches_a_zero_allocation_steady_state ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Running tests/staticeval_parity.rs (/opt/rustwide/target/debug/deps/staticeval_parity-8cdf0d5f91ede09b) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test absent_seats_are_pinned_to_half_a_mate ... ok [INFO] [stdout] test every_record_matches_gobot_exactly ... ok [INFO] [stdout] test shared_workspace_matches_fresh_workspace ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/virus_mcts-cb14a131a298e7fa) [INFO] [stdout] [INFO] [stdout] running 25 tests [INFO] [stdout] test gumbel::tests::a_starved_budget_still_gives_every_candidate_a_visit ... ok [INFO] [stdout] test gumbel::tests::a_surplus_budget_goes_to_the_last_survivor ... ok [INFO] [stdout] test gumbel::tests::a_zero_prior_is_ranked_rather_than_infinite ... ok [INFO] [stdout] test gumbel::tests::m_is_clamped_to_the_legal_actions ... ok [INFO] [stdout] test gumbel::tests::rounds_is_ceil_log2 ... ok [INFO] [stdout] test gumbel::tests::softmax_is_a_distribution_and_survives_a_flat_input ... ok [INFO] [stdout] test gumbel::tests::the_draw_follows_the_seed ... ok [INFO] [stdout] test gumbel::tests::the_schedule_spends_the_budget_in_halving_phases ... ok [INFO] [stdout] test search::tests::a_negamax_backup_would_pick_the_other_move ... ok [INFO] [stdout] test search::tests::absolute_frame_backup_never_negates_on_a_non_alternating_path ... ok [INFO] [stdout] test search::tests::rebasing_refuses_an_unreachable_action_without_touching_the_tree ... ok [INFO] [stdout] test search::tests::rebasing_keeps_the_subtree_and_its_statistics ... ok [INFO] [stdout] test search::tests::selection_sign_follows_the_node_mover ... ok [INFO] [stdout] test search::tests::rebasing_reaches_the_same_position_as_applying_the_action ... ok [INFO] [stdout] test search::tests::the_hand_tuned_leaf_is_flipped_once_by_the_mover ... ok [INFO] [stdout] test search::tests::rebasing_rewrites_every_child_index ... ok [INFO] [stdout] test search::tests::the_root_state_and_visit_total_describe_the_tree_that_survived_a_re_root ... ok [INFO] [stdout] test search::tests::a_batched_search_leaves_no_virtual_loss_behind_for_a_re_root_to_inherit ... ok [INFO] [stdout] test search::tests::the_root_is_never_a_merge_target_so_its_noised_prior_cannot_leak ... ok [INFO] [stdout] test search::tests::a_merged_node_pools_the_visits_of_every_parent ... ok [INFO] [stdout] test search::tests::a_within_turn_permutation_reaches_exactly_one_node ... ok [INFO] [stdout] test search::tests::without_the_dag_the_same_permutation_is_two_nodes ... ok [INFO] [stdout] test search::tests::a_batched_dag_search_leaves_nothing_in_flight ... ok [INFO] [stdout] test search::tests::re_rooting_rebuilds_the_index_and_reclaims_the_unreachable_nodes ... ok [INFO] [stdout] test search::tests::the_dag_spends_every_expansion_on_a_position_it_has_not_seen ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s [INFO] [stdout] [INFO] [stderr] Running tests/gumbel.rs (/opt/rustwide/target/debug/deps/gumbel-4d967030f12a5b59) [INFO] [stdout] [INFO] [stdout] running 19 tests [INFO] [stdout] test a_terminal_root_has_no_improved_policy ... ok [INFO] [stdout] test play_mode_takes_no_exploration_knob ... ok [INFO] [stdout] test asking_for_both_noise_and_gumbel_is_refused - should panic ... ok [INFO] [stdout] test a_deadline_budget_terminates_under_a_gumbel_schedule ... ok [INFO] [stdout] test the_dirichlet_self_play_config_is_unchanged ... ok [INFO] [stdout] test the_gumbel_self_play_config_replaces_dirichlet_rather_than_stacking ... ok [INFO] [stdout] test an_m_larger_than_the_action_count_is_clamped ... ok [INFO] [stdout] test the_budget_goes_to_the_candidate_set_and_is_spent_in_full ... ok [INFO] [stdout] test the_improved_policy_reads_q_from_the_root_movers_chair ... ok [INFO] [stdout] test the_parallel_engine_refuses_a_gumbel_config - should panic ... ok [INFO] [stdout] test the_improved_policy_covers_every_legal_action ... ok [INFO] [stdout] test a_budget_that_misses_the_plan_still_produces_a_legal_answer ... ok [INFO] [stdout] test a_batched_gumbel_search_still_expands_a_position_per_simulation ... ok [INFO] [stdout] test the_improved_policy_is_defined_for_a_puct_search_as_well ... ok [INFO] [stdout] test rebasing_promotes_the_childs_own_leaf_value_not_its_childrens_average ... ok [INFO] [stdout] test the_played_action_is_a_measured_candidate ... ok [INFO] [stdout] test gumbel_is_deterministic_with_and_without_the_dag ... ok [INFO] [stdout] test a_gumbel_search_is_byte_stable_for_a_fixed_seed ... ok [INFO] [stdout] test the_seed_changes_the_draw_and_therefore_the_search ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.70s [INFO] [stdout] [INFO] [stderr] Running tests/net_parity.rs (/opt/rustwide/target/debug/deps/net_parity-3b855e4be5d132b4) [INFO] [stdout] [INFO] [stdout] running 19 tests [INFO] [stdout] test a_conv_layer_count_mismatch_is_rejected_at_load ... ok [INFO] [stdout] test a_mis_sized_head_is_rejected_at_load ... ok [INFO] [stdout] test a_non_finite_weight_is_rejected_at_load ... ok [INFO] [stdout] test a_mis_sized_value_head_row_is_rejected_at_load ... ok [INFO] [stdout] test a_head_kernel_wider_than_1x1_is_rejected_at_load ... ok [INFO] [stdout] test a_short_bias_vector_is_rejected_at_load ... ok [INFO] [stdout] test a_policy_only_artifact_loads_without_a_value_head ... ok [INFO] [stdout] test a_short_conv_row_is_rejected_at_load ... ok [INFO] [stdout] test a_wrong_board_is_rejected_at_load ... ok [INFO] [stdout] test a_well_formed_tiny_artifact_loads ... ok [INFO] [stdout] test an_unknown_architecture_is_rejected_at_load ... ok [INFO] [stdout] test the_policy_only_architecture_is_supported ... ok [INFO] [stdout] test value_and_policy_heads_match_the_python_fixture ... ok [INFO] [stdout] test the_gen5_champion_loads ... ok [INFO] [stdout] test softmax_over_the_board_agrees_far_inside_the_logit_band ... ok [INFO] [stdout] test policy_heads_match_the_python_fixture ... ok [INFO] [stdout] test both_convolution_paths_hit_parity ... ok [INFO] [stdout] test both_batched_convolution_paths_hit_parity ... ok [INFO] [stdout] test the_batched_forward_is_bit_identical_to_the_serial_one ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.68s [INFO] [stdout] [INFO] [stderr] Running tests/parallel.rs (/opt/rustwide/target/debug/deps/parallel-d1b0907191afefd1) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test a_terminal_root_yields_no_action ... ok [INFO] [stdout] test the_hand_tuned_fallback_runs_in_parallel ... ok [INFO] [stdout] test root_noise_matches_the_serial_searcher ... ok [INFO] [stdout] test a_four_player_state_is_refused - should panic ... ok [INFO] [stdout] test the_parallel_deadline_budget_stops ... ok [INFO] [stdout] test a_parallel_search_resumes_into_the_same_tree ... ok [INFO] [stdout] test a_multi_threaded_search_stays_internally_consistent ... ok [INFO] [stdout] test parallel_with_one_thread_matches_the_serial_searcher ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.82s [INFO] [stdout] [INFO] [stderr] Running tests/search.rs (/opt/rustwide/target/debug/deps/search-129c5bc6c3c03b32) [INFO] [stdout] [INFO] [stdout] running 30 tests [INFO] [stdout] test a_column_past_the_edge_does_not_alias_the_next_row - should panic ... ok [INFO] [stdout] test a_negative_coordinate_is_rejected - should panic ... ok [INFO] [stdout] test a_terminal_root_yields_no_action ... ok [INFO] [stdout] test a_four_player_state_is_refused_with_the_hand_tuned_value - should panic ... ok [INFO] [stdout] test a_four_player_state_is_refused_with_a_net - should panic ... ok [INFO] [stdout] test an_off_board_neutral_pair_is_rejected - should panic ... ok [INFO] [stdout] test flat_action_ids_round_trip ... ok [INFO] [stdout] test generated_actions_map_to_distinct_ids ... ok [INFO] [stdout] test pair_ids_are_order_independent ... ok [INFO] [stdout] test every_simulation_lands_somewhere ... ok [INFO] [stdout] test priors_are_a_distribution_over_the_legal_actions ... ok [INFO] [stdout] test root_noise_perturbs_the_prior_and_is_seeded ... ok [INFO] [stdout] test play_mode_ignores_the_seed_entirely ... ok [INFO] [stdout] test run_sims_is_byte_stable_for_a_fixed_seed ... ok [INFO] [stdout] test temperature_sampling_is_on_only_for_the_opening_plies ... ok [INFO] [stdout] test a_dag_search_is_byte_stable_at_batch_size_one ... ok [INFO] [stdout] test simulations_are_resumable_at_batch_boundaries ... ok [INFO] [stdout] test the_hand_tuned_fallback_is_deterministic_too ... ok [INFO] [stdout] test a_dag_search_still_answers_legally ... ok [INFO] [stdout] test the_deadline_budget_runs_at_least_one_sim_and_then_stops ... ok [INFO] [stdout] test the_root_value_stays_in_the_tanh_range ... ok [INFO] [stdout] test virtual_loss_spreads_a_batch_over_several_edges ... ok [INFO] [stdout] test a_batched_budget_is_spent_exactly ... ok [INFO] [stdout] test the_search_always_picks_a_legal_action ... ok [INFO] [stdout] test the_serial_searcher_is_resumable_at_any_split ... ok [INFO] [stdout] test the_dag_is_genuinely_opt_out ... ok [INFO] [stdout] test visit_sampling_picks_legal_actions_and_follows_the_seed ... ok [INFO] [stdout] test a_batched_dag_search_is_deterministic ... ok [INFO] [stdout] test batched_search_is_deterministic ... ok [INFO] [stdout] test re_rooting_a_dag_keeps_the_tree_rooted_where_the_caller_thinks ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.20s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/virus_proto-84a46638c0d0e1a0) [INFO] [stdout] [INFO] [stdout] running 25 tests [INFO] [stdout] test client::tests::a_flapping_endpoint_backs_off_to_the_ceiling ... ok [INFO] [stdout] test client::tests::a_healthy_session_resets_the_backoff ... ok [INFO] [stdout] test clock::tests::a_fully_spent_turn_splits_uneven_with_the_first_action_largest ... ok [INFO] [stdout] test clock::tests::a_catchable_runner_up_keeps_the_search_running ... ok [INFO] [stdout] test clock::tests::a_new_turn_reopens_the_bank ... ok [INFO] [stdout] test clock::tests::a_per_action_override_disables_the_allocator_entirely ... ok [INFO] [stdout] test clock::tests::a_repeated_moves_left_does_not_reopen_the_bank ... ok [INFO] [stdout] test clock::tests::a_search_that_has_run_nothing_yet_never_stops_early ... ok [INFO] [stdout] test clock::tests::a_stable_root_releases_its_remainder_to_the_next_action ... ok [INFO] [stdout] test clock::tests::a_settled_root_stops_at_the_target ... ok [INFO] [stdout] test clock::tests::an_inherited_lead_does_not_end_an_action_before_it_has_searched ... ok [INFO] [stdout] test clock::tests::an_exhausted_bank_still_leaves_a_floor_to_search_with ... ok [INFO] [stdout] test clock::tests::an_overrun_shrinks_the_rest_of_the_turn_instead_of_extending_it ... ok [INFO] [stdout] test clock::tests::an_uncatchable_leader_stops_the_search_early ... ok [INFO] [stdout] test clock::tests::the_ceiling_is_the_last_word_even_for_an_unstable_root ... ok [INFO] [stdout] test clock::tests::the_extension_rule_can_be_switched_off ... ok [INFO] [stdout] test clock::tests::no_sequence_of_extensions_can_break_the_turn_bound ... ok [INFO] [stdout] test clock::tests::the_guard_cannot_change_a_verdict_for_a_search_that_grew_its_own_tree ... ok [INFO] [stdout] test clock::tests::the_uncatchable_horizon_reaches_to_the_ceiling ... ok [INFO] [stdout] test clock::tests::top_two_visits_are_read_off_the_visit_vector ... ok [INFO] [stdout] test clock::tests::an_unstable_root_extends_past_the_target ... ok [INFO] [stdout] test config::tests::rng_is_deterministic_for_a_seed ... ok [INFO] [stdout] test config::tests::connect_url_appends_bot_flag_and_escaped_prefix ... ok [INFO] [stdout] test clock::tests::the_ceiling_extends_past_the_target_but_never_past_the_bank ... ok [INFO] [stdout] test clock::tests::back_to_back_turns_at_moves_left_three_still_reopen_the_bank ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/invariants.rs (/opt/rustwide/target/debug/deps/invariants-61dcabb9ee49f3ce) [INFO] [stdout] [INFO] [stdout] running 19 tests [INFO] [stdout] test a_second_challenge_before_game_start_is_declined ... ok [INFO] [stdout] test an_idle_bot_accepts_a_challenge ... ok [INFO] [stdout] test a_busy_bot_declines_a_challenge ... ok [INFO] [stdout] test an_idle_bot_joins_a_wanted_lobby ... ok [INFO] [stdout] test actions_convert_to_the_documented_frames ... ok [INFO] [stdout] test an_accepted_game_that_never_starts_heals_back_to_idle ... ok [INFO] [stdout] test a_stale_game_end_cannot_disturb_the_current_game ... ok [INFO] [stdout] test a_rejected_snapshot_drops_the_position_and_resyncs ... ok [INFO] [stdout] test a_late_search_result_is_dropped ... ok [INFO] [stdout] test the_send_time_guard_rejects_a_superseded_action ... ok [INFO] [stdout] test an_illegal_engine_choice_is_never_queued ... ok [INFO] [stdout] test tolerant_snapshot_dialects_agree ... ok [INFO] [stdout] test game_end_invalidates_an_in_flight_search ... ok [INFO] [stdout] test our_own_action_ack_never_emits_an_action ... ok [INFO] [stdout] test users_update_never_sends_a_challenge ... ok [INFO] [stdout] test unknown_and_malformed_frames_are_survivable ... ok [INFO] [stdout] test our_own_neutrals_ack_never_emits_an_action ... ok [INFO] [stdout] test same_turn_snapshots_drive_one_action_each ... ok [INFO] [stdout] test the_per_game_hook_tracks_accepted_game_starts_only ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.91s [INFO] [stdout] [INFO] [stderr] Running tests/ponder_guards.rs (/opt/rustwide/target/debug/deps/ponder_guards-9f9b4a24f6f2e54a) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test a_game_ending_cancels_and_tears_down_the_session ... ok [INFO] [stdout] test an_answer_is_only_ever_requested_on_our_own_turn ... ok [INFO] [stdout] test a_dead_session_still_lets_the_turn_be_played ... ok [INFO] [stdout] test an_engine_that_cannot_ponder_is_never_given_a_session ... ok [INFO] [stdout] test a_pondering_session_never_emits_an_action ... ok [INFO] [stdout] test our_own_neutrals_ack_drives_neither_a_search_nor_a_ponder_step ... ok [INFO] [stdout] test a_position_with_no_actions_left_is_never_pondered ... ok [INFO] [stdout] test pondering_off_means_no_session_at_all ... ok [INFO] [stdout] test every_accepted_snapshot_cancels_the_step_in_flight ... ok [INFO] [stdout] test pondering_never_holds_the_read_loop ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.02s [INFO] [stdout] [INFO] [stderr] Running tests/time_manager.rs (/opt/rustwide/target/debug/deps/time_manager-22de33ba9c482abd) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test a_stable_root_releases_its_remainder_to_the_next_action ... ok [INFO] [stdout] test a_per_action_override_gives_every_action_the_same_budget ... ok [INFO] [stdout] test a_turn_is_divided_across_its_three_actions_largest_first ... ok [INFO] [stdout] test the_next_turn_starts_from_a_full_budget ... ok [INFO] [stdout] test the_default_fallback_is_a_legal_action ... ok [INFO] [stdout] test an_engine_that_overruns_answers_with_the_fallback_it_picked_first ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.00s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/virus_search-29f5a1ead65a03c5) [INFO] [stdout] [INFO] [stdout] running 20 tests [INFO] [stdout] test searcher::tests::bound_flags_follow_fail_soft_alpha_beta ... ok [INFO] [stdout] test book::tests::a_collision_on_a_tiny_board_voids_the_book ... ok [INFO] [stdout] test book::tests::a_later_turn_voids_the_book ... ok [INFO] [stdout] test book::tests::plays_the_whole_wedge_from_a_fresh_board ... ok [INFO] [stdout] test book::tests::mid_turn_state_keeps_the_placed_plus_moves_left_invariant ... ok [INFO] [stdout] test book::tests::an_own_cell_outside_the_block_voids_the_book ... ok [INFO] [stdout] test searcher::tests::place_neutrals_tt_moves_never_take_the_fast_path ... ok [INFO] [stdout] test searcher::tests::move_ordering_puts_the_tt_move_first_then_the_killer ... ok [INFO] [stdout] test searcher::tests::the_fallback_prefers_a_self_preserving_action ... ok [INFO] [stdout] test searcher::tests::tt_move_plausibility_rejects_impossible_targets ... ok [INFO] [stdout] test searcher::tests::stored_bounds_tighten_the_window_before_cutting ... ok [INFO] [stdout] test searcher::tests::plain_mode_ignores_killers_and_history ... ok [INFO] [stdout] test searcher::tests::history_biases_quiet_moves_but_stays_below_the_capture_tier ... ok [INFO] [stdout] test tt::tests::deeper_same_generation_entries_keep_the_slot ... ok [INFO] [stdout] test tt::tests::oversized_neutral_pairs_store_as_absent ... ok [INFO] [stdout] test tt::tests::mate_scores_rebase_symmetrically ... ok [INFO] [stdout] test tt::tests::round_trips_a_stored_entry ... ok [INFO] [stdout] test tt::tests::a_corrupted_key_slot_reads_as_a_miss ... ok [INFO] [stdout] test tt::tests::neutral_pairs_encode_unordered ... ok [INFO] [stdout] test searcher::tests::salvage_refuses_a_partial_iteration_that_only_produced_bounds ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s [INFO] [stdout] [INFO] [stderr] Running tests/enhanced.rs (/opt/rustwide/target/debug/deps/enhanced-6998f6ffa38282f6) [INFO] [stdout] [INFO] [stdout] running 24 tests [INFO] [stdout] test a_zero_budget_has_no_answer ... ok [INFO] [stdout] test a_zero_budget_still_plays_the_book ... ok [INFO] [stdout] test a_search_cancelled_before_it_starts_does_no_work ... ok [INFO] [stdout] test a_searcher_refuses_to_move_for_the_wrong_seat - should panic ... ok [INFO] [stdout] test a_deadline_search_respects_its_budget ... ok [INFO] [stdout] test cancelling_an_smp_search_winds_the_helpers_down ... ok [INFO] [stdout] test history_is_recorded_and_then_aged_between_searches ... ok [INFO] [stdout] test a_cancelled_search_returns_promptly_and_keeps_invariant_three ... ok [INFO] [stdout] test smp_is_off_by_default ... ok [INFO] [stdout] test the_book_does_not_smuggle_a_move_for_the_wrong_seat - should panic ... ok [INFO] [stdout] test lazy_smp_helpers_keep_the_search_sound ... ok [INFO] [stdout] test late_move_reduction_can_be_switched_off ... ok [INFO] [stdout] test the_live_paths_play_the_book_and_label_it ... ok [INFO] [stdout] test the_oracle_skips_the_book ... ok [INFO] [stdout] test the_oracle_keeps_no_packed_table ... ok [INFO] [stdout] test the_staged_fast_path_actually_cuts ... ok [INFO] [stdout] test three_player_games_run_max_n ... ok [INFO] [stdout] test a_deadline_search_returns_the_completed_iteration ... ok [INFO] [stdout] test a_searcher_never_raises_its_own_stop_flag ... ok [INFO] [stdout] test the_packed_table_survives_between_moves ... ok [INFO] [stdout] test aspiration_windows_do_not_change_the_score ... ok [INFO] [stdout] test the_enhanced_search_is_deterministic_with_smp_off ... ok [INFO] [stdout] test late_move_reduction_never_touches_a_turn_ending_action ... ok [INFO] [stdout] test a_budget_aborted_search_returns_the_completed_iteration ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.71s [INFO] [stdout] [INFO] [stderr] Running tests/search_parity.rs (/opt/rustwide/target/debug/deps/search_parity-fc4b6c03793c7870) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test choose_depth_never_consults_the_opening_book ... ok [INFO] [stdout] test choose_depth_matches_the_gobot_oracle ... ok [INFO] [stdout] test choose_node_budget_matches_the_gobot_oracle ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 50.87s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/virus_selfplay-cdf7783d067ef14f) [INFO] [stdout] [INFO] [stdout] running 34 tests [INFO] [stdout] test tests::a_would_be_resigner_that_only_drew_still_counts_as_a_false_resign ... ok [INFO] [stdout] test tests::game_seeds_depend_only_on_seed_and_index ... ok [INFO] [stdout] test tests::control_arm_membership_is_a_pure_function_of_seed_and_game ... ok [INFO] [stdout] test tests::a_capped_game_is_scored_by_territory_not_called_a_draw ... ok [INFO] [stdout] test tests::hopeless_is_read_in_the_absolute_frame_per_seat ... ok [INFO] [stdout] test tests::gumbel_composes_with_resignation ... ok [INFO] [stdout] test tests::mix64_matches_the_reference_finalizer ... ok [INFO] [stdout] test tests::one_survivable_ply_resets_the_count ... ok [INFO] [stdout] test tests::quantize_sums_to_the_total_and_is_never_all_zero ... ok [INFO] [stdout] test tests::a_resigned_game_is_won_by_the_side_that_did_not_resign ... ok [INFO] [stdout] test tests::gumbel_is_off_by_default_and_inert_when_absent ... ok [INFO] [stdout] test tests::gumbel_rows_satisfy_the_selfplay_contract ... ok [INFO] [stdout] test tests::resign_enabled_rows_satisfy_the_same_contract ... ok [INFO] [stdout] test tests::a_run_with_a_control_arm_measures_the_rate_the_bar_is_written_against ... ok [INFO] [stdout] test tests::rows_satisfy_the_selfplay_contract ... ok [INFO] [stdout] test tests::a_control_game_is_byte_for_byte_the_resign_off_game ... ok [INFO] [stdout] test tests::resign_is_off_by_default_and_inert_when_absent ... ok [INFO] [stdout] test tests::resign_truncates_rather_than_perturbing ... ok [INFO] [stdout] test tests::sign_collapses_the_three_terminal_values ... ok [INFO] [stdout] test tests::the_control_counterfactual_is_exactly_what_the_resign_arm_would_do ... ok [INFO] [stdout] test tests::sharding_repartitions_the_arms_rather_than_redrawing_them ... ok [INFO] [stdout] test tests::the_gumbel_pv_spelling_round_trips_and_rejects_typos ... ok [INFO] [stdout] test tests::the_gumbel_search_config_is_planned_against_the_runs_own_budget ... ok [INFO] [stdout] test tests::the_hopeless_counter_is_per_seat_and_ignores_the_opponents_plies ... ok [INFO] [stdout] test tests::a_game_ending_on_its_last_allowed_ply_is_not_reported_capped ... ok [INFO] [stdout] test tests::same_seed_and_shard_is_byte_identical ... ok [INFO] [stdout] test tests::same_seed_and_shard_is_byte_identical_with_resign_on ... ok [INFO] [stdout] test tests::sharding_repartitions_rather_than_regenerates ... ok [INFO] [stdout] test tests::sharding_repartitions_rather_than_regenerates_with_gumbel_on ... ok [INFO] [stdout] test tests::the_gumbel_arm_plays_different_games_from_the_puct_arm ... ok [INFO] [stdout] test tests::the_pv_mapping_does_not_change_the_games ... ok [INFO] [stdout] test tests::the_public_arm_predicate_answers_for_the_actual_run ... ok [INFO] [stdout] test tests::the_two_pv_mappings_are_different_targets_over_the_same_total ... ok [INFO] [stdout] test tests::same_seed_and_shard_is_byte_identical_with_gumbel_on ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 34 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s [INFO] [stdout] [INFO] [stderr] Running unittests src/bin/selfplay.rs (/opt/rustwide/target/debug/deps/selfplay-7405f62ccc27c58e) [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/debug/deps/vsbot-45a09650ecf8ae31) [INFO] [stdout] [INFO] [stdout] running 64 tests [INFO] [stdout] test alphabeta::tests::a_cancelled_budget_is_answered_with_nothing_before_any_work ... ok [INFO] [stdout] test alphabeta::tests::a_spent_turn_is_answered_with_nothing ... ok [INFO] [stdout] test alphabeta::tests::it_reports_itself_for_the_banner ... ok [INFO] [stdout] test alphabeta::tests::a_search_cancelled_mid_flight_stops_instead_of_running_to_its_deadline ... ok [INFO] [stdout] test alphabeta::tests::a_panicking_search_does_not_hang_the_cancellation_watcher ... ok [INFO] [stdout] test alphabeta::tests::the_fallback_is_instant_and_legal ... ok [INFO] [stdout] test alphabeta::tests::the_other_seat_gets_its_own_searcher ... ok [INFO] [stdout] test explore::tests::a_cancelled_search_never_consumes_the_window ... ok [INFO] [stdout] test explore::tests::a_repeated_position_is_decided_once ... ok [INFO] [stdout] test explore::tests::a_straggler_from_the_previous_game_cannot_move_the_new_ones_window ... ok [INFO] [stdout] test explore::tests::an_explored_action_is_legal_and_carries_no_fictional_score ... ok [INFO] [stdout] test explore::tests::consecutive_games_get_unrelated_streams ... ok [INFO] [stdout] test explore::tests::epsilon_zero_is_off_and_the_wrapper_is_never_installed ... ok [INFO] [stdout] test explore::tests::the_same_seed_replays_the_same_schedule_and_a_different_one_does_not ... ok [INFO] [stdout] test explore::tests::the_seed_derivation_avalanches ... ok [INFO] [stdout] test explore::tests::the_stream_is_uniform_enough_to_be_a_coin ... ok [INFO] [stdout] test explore::tests::the_window_ends_cleanly ... ok [INFO] [stdout] test explore::tests::the_window_is_counted_in_our_turns_not_our_plies ... ok [INFO] [stdout] test explore::tests::the_wrapper_delegates_name_and_fallback_and_refuses_to_ponder ... ok [INFO] [stdout] test alphabeta::tests::one_engine_survives_alternating_seats_boards_and_player_counts ... ok [INFO] [stdout] test mcts::tests::a_missing_or_broken_artifact_is_an_error_not_a_downgrade ... ok [INFO] [stdout] test alphabeta::tests::it_plays_legally_on_the_champion_board ... ok [INFO] [stdout] test alphabeta::tests::the_cached_searcher_is_rebuilt_for_every_change_of_shape ... ok [INFO] [stdout] test alphabeta::tests::a_cancelled_search_does_not_poison_the_cached_searcher ... ok [INFO] [stdout] test mcts::tests::a_four_player_game_falls_back_to_alpha_beta_instead_of_panicking ... ok [INFO] [stdout] test mcts::tests::a_plain_budget_keeps_the_pre_allocator_behaviour ... ok [INFO] [stdout] test mcts::tests::a_ponder_session_exits_when_its_channel_closes ... ok [INFO] [stdout] test alphabeta::tests::a_second_concurrent_search_answers_without_waiting_for_the_first ... ok [INFO] [stdout] test mcts::tests::a_search_never_runs_past_its_ceiling ... ok [INFO] [stdout] test mcts::tests::a_ponder_session_answers_an_out_of_domain_position_with_the_fallback_engine ... ok [INFO] [stdout] test mcts::tests::an_already_cancelled_search_does_no_work_at_all ... ok [INFO] [stdout] test mcts::tests::a_tree_rooted_elsewhere_is_refused_rather_than_re_rooted ... ok [INFO] [stdout] test mcts::tests::every_single_action_gap_is_re_rootable_within_the_apply_budget ... ok [INFO] [stdout] test mcts::tests::an_expired_but_live_budget_still_returns_a_searched_move ... ok [INFO] [stdout] test mcts::tests::a_one_ply_re_root_succeeds_however_late_the_action_is_enumerated ... ok [INFO] [stdout] test mcts::tests::the_banner_names_the_artifact_and_its_meta ... ok [INFO] [stdout] test mcts::tests::the_engine_is_shareable_across_search_workers ... ok [INFO] [stdout] test mcts::tests::the_fallback_costs_about_one_forward_pass ... ok [INFO] [stdout] test mcts::tests::a_three_player_game_falls_back_to_alpha_beta_instead_of_panicking ... ok [INFO] [stdout] test mcts::tests::the_fallback_is_the_prior_argmax_over_the_legal_mask ... ok [INFO] [stdout] test mcts::tests::the_fallback_survives_an_out_of_domain_position_without_searching ... ok [INFO] [stdout] test mcts::tests::the_ponder_cap_is_re_based_onto_what_a_re_root_kept ... ok [INFO] [stdout] test tests::a_bad_artifact_fails_startup_rather_than_downgrading_to_greedy ... ok [INFO] [stdout] test tests::alphabeta_is_wired_and_describes_itself ... ok [INFO] [stdout] test tests::bad_values_fail_startup_instead_of_falling_back ... ok [INFO] [stdout] test mcts::tests::the_fallback_verdict_is_logged_once_per_transition_not_once_per_process ... ok [INFO] [stdout] test tests::defaults_need_no_environment ... ok [INFO] [stdout] test tests::empty_values_read_as_unset ... ok [INFO] [stdout] test tests::exploration_and_pondering_are_refused_together ... ok [INFO] [stdout] test tests::every_field_is_read_from_the_environment ... ok [INFO] [stdout] test tests::mcts_is_the_default_engine ... ok [INFO] [stdout] test tests::opening_exploration_is_off_unless_asked_for ... ok [INFO] [stdout] test tests::pondering_is_off_unless_asked_for ... ok [INFO] [stdout] test tests::search_alphabeta_selects_the_alphabeta_engine ... ok [INFO] [stdout] test tests::the_exploration_wrapper_is_only_installed_when_it_is_on ... ok [INFO] [stdout] test tests::the_stop_rules_are_on_by_default_and_individually_switchable ... ok [INFO] [stdout] test tests::the_turn_allocator_is_on_by_default_and_the_override_switches_it_off ... ok [INFO] [stdout] test tests::mcts_and_greedy_are_wired_and_describe_themselves ... ok [INFO] [stdout] test mcts::tests::a_non_12x12_board_falls_back_to_alpha_beta_instead_of_panicking ... ok [INFO] [stdout] test mcts::tests::it_searches_a_two_player_12x12_position_and_reports_simulations ... ok [INFO] [stdout] test mcts::tests::play_mode_never_explores_and_is_reproducible ... ok [INFO] [stdout] test alphabeta::tests::it_plays_legally_off_the_twelve_by_twelve_board ... ok [INFO] [stdout] test mcts::tests::a_ponder_session_carries_its_tree_into_our_turn ... ok [INFO] [stdout] test alphabeta::tests::multiplayer_positions_go_through_the_max_n_path ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 64 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.36s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/vsbot-c78fe28fb9e070c0) [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/live_games.rs (/opt/rustwide/target/debug/deps/live_games-3da22ec291c593af) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test the_alphabeta_engine_plays_full_games_on_and_off_the_champion_board ... ok [INFO] [stdout] test ponder_on_is_not_weaker_than_ponder_off_over_a_local_gauntlet ... ok [INFO] [stdout] test ponder_soak_plays_twenty_games_without_a_forfeit_or_an_out_of_turn_action ... ok [INFO] [stdout] test the_mcts_champion_plays_a_full_game_without_a_single_illegal_move ... ok [INFO] [stdout] test two_bots_play_full_games_without_a_single_illegal_move ... ok [INFO] [stdout] test mcts_falls_back_to_alphabeta_on_a_board_it_cannot_encode ... ok [INFO] [stdout] test the_alphabeta_engine_plays_a_full_multiplayer_game ... 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] Doc-tests virus_arena [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test crates/virus-arena/src/lib.rs - (line 31) - compile ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Doc-tests virus_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 virus_eval [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 virus_mcts [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test crates/virus-mcts/src/lib.rs - (line 7) - compile ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Doc-tests virus_proto [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test crates/virus-proto/src/lib.rs - (line 39) - compile ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s [INFO] [stdout] [INFO] [stderr] Doc-tests virus_search [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test crates/virus-search/src/lib.rs - (line 61) ... ok [INFO] [stdout] test crates/virus-search/src/searcher.rs - searcher::CancelToken (line 134) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s [INFO] [stdout] [INFO] [stderr] Doc-tests virus_selfplay [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test crates/virus-selfplay/src/lib.rs - (line 9) - compile ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Doc-tests vsbot [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" "a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993", kill_on_drop: false }` [INFO] [stdout] a08f42291d4fb1356967327d1ed93ba30ba812334efd4970ae0acbf36019c993