[INFO] cloning repository https://github.com/gerryg1957/moyodb-core
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gerryg1957/moyodb-core" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgerryg1957%2Fmoyodb-core", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgerryg1957%2Fmoyodb-core'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1f0de11a210dc2df70bc2871ee3e93a0c4ef515e
[INFO] testing gerryg1957/moyodb-core 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%2Fgerryg1957%2Fmoyodb-core" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/gerryg1957/moyodb-core
[INFO] finished tweaking git repo https://github.com/gerryg1957/moyodb-core
[INFO] tweaked toml for git repo https://github.com/gerryg1957/moyodb-core written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/gerryg1957/moyodb-core 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/gerryg1957/moyodb-core 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]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded mio v1.2.3
[INFO] [stderr]   Downloaded yoke-derive v0.8.3
[INFO] [stderr]   Downloaded libredox v0.1.21
[INFO] [stderr]   Downloaded tokio-rustls v0.26.5
[INFO] [stderr]   Downloaded cxxbridge-flags v1.0.197
[INFO] [stderr]   Downloaded cc v1.2.67
[INFO] [stderr]   Downloaded clang-format v0.3.0
[INFO] [stderr]   Downloaded quote v1.0.46
[INFO] [stderr]   Downloaded link-cplusplus v1.0.12
[INFO] [stderr]   Downloaded cxx-qt-lib-extras v0.8.1
[INFO] [stderr]   Downloaded cxx-build v1.0.197
[INFO] [stderr]   Downloaded qt-build-utils v0.8.1
[INFO] [stderr]   Downloaded scratch v1.0.9
[INFO] [stderr]   Downloaded directories v6.0.0
[INFO] [stderr]   Downloaded cxx-qt-macro v0.8.1
[INFO] [stderr]   Downloaded anyhow v1.0.103
[INFO] [stderr]   Downloaded cxx-qt v0.8.1
[INFO] [stderr]   Downloaded cxx-gen v0.7.197
[INFO] [stderr]   Downloaded cxxbridge-cmd v1.0.197
[INFO] [stderr]   Downloaded cxx-qt-build v0.8.1
[INFO] [stderr]   Downloaded cxxbridge-macro v1.0.197
[INFO] [stderr]   Downloaded cxx-qt-lib v0.8.1
[INFO] [stderr]   Downloaded cxx-qt-gen v0.8.1
[INFO] [stderr]   Downloaded quinn-proto v0.11.18
[INFO] [stderr]   Downloaded cxx v1.0.197
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10
[INFO] running `Command { std: "docker" "start" "2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10", 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" "2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10" "/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" "2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10", 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" "2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling crossbeam-deque v0.8.7
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling cc v1.2.67
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling const-oid v0.10.2
[INFO] [stderr]    Compiling either v1.17.0
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling hashlink v0.12.1
[INFO] [stderr]    Compiling hybrid-array v0.4.13
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling libsqlite3-sys v0.38.1
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling rusqlite v0.40.1
[INFO] [stderr]    Compiling bermuda v0.8.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.06s
[INFO] running `Command { std: "docker" "inspect" "2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10", 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" "2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10" "/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 bitflags v2.13.0
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling rusqlite v0.40.1
[INFO] [stderr]    Compiling bermuda v0.8.2 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 18.47s
[INFO] running `Command { std: "docker" "inspect" "2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10", 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" "2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.19s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/bermuda-83020c06a7ef8de6)
[INFO] [stdout] 
[INFO] [stdout] running 241 tests
[INFO] [stdout] test canonical::tests::metadata_does_not_change_hash ... ok
[INFO] [stdout] test canonical::tests::equivalent_setup_positions_have_same_hash ... ok
[INFO] [stdout] test canonical::tests::pass_is_part_of_game_identity ... ok
[INFO] [stdout] test game_date::tests::derives_sort_key_from_publication_dates ... ok
[INFO] [stdout] test game_list::tests::columns_map_to_fixed_sql_expressions ... ok
[INFO] [stdout] test game_date::tests::rejects_unrecognised_dates ... ok
[INFO] [stdout] test game_date::tests::derives_sort_key_from_iso_dates ... ok
[INFO] [stdout] test game_date::tests::uses_first_date_in_complex_publication_value ... ok
[INFO] [stdout] test game_list::tests::directions_map_to_sql_keywords ... ok
[INFO] [stdout] test game_list::tests::default_query_has_stable_multi_column_sorting ... ok
[INFO] [stdout] test game::tests::accepts_legacy_tt_as_a_pass_on_19x19 ... ok
[INFO] [stdout] test game::tests::does_not_accept_tt_as_a_setup_point ... ok
[INFO] [stdout] test canonical::tests::different_move_sequences_have_different_hashes ... ok
[INFO] [stdout] test game_list::tests::creates_multi_column_ordering_with_stable_tie_breaker ... ok
[INFO] [stdout] test database::tests::migrates_version_7_to_catalogue_suppression_foundation ... ok
[INFO] [stdout] test game_list::tests::counts_games_matching_combined_filters ... ok
[INFO] [stdout] test game_list::tests::counts_zero_when_no_games_match ... ok
[INFO] [stdout] test database::tests::migrates_version_6_to_player_catalogue_foundation ... ok
[INFO] [stdout] test game_list::tests::counts_all_games_ignoring_pagination ... ok
[INFO] [stdout] test game_list::tests::counts_games_matching_versus_and_event_filters ... ok
[INFO] [stdout] test database::tests::migrates_version_3_dates_and_creates_sort_keys ... ok
[INFO] [stdout] test game_list::tests::filters_by_player_of_either_colour ... ok
[INFO] [stdout] test database::tests::migrates_version_5_to_player_identity_without_rewriting_source_names ... ok
[INFO] [stdout] test game_list::tests::filters_black_wins ... ok
[INFO] [stdout] test game_list::tests::filters_by_black_player ... ok
[INFO] [stdout] test game_list::tests::filters_by_white_player ... ok
[INFO] [stdout] test game_list::tests::filters_by_opponent_with_specific_colour ... ok
[INFO] [stdout] test game_list::tests::filters_from_date_inclusively ... ok
[INFO] [stdout] test game_list::tests::gets_one_game_by_id ... ok
[INFO] [stdout] test game_list::tests::filters_game_occurrences_without_collapsing_sources ... ok
[INFO] [stdout] test game_list::tests::filters_to_date_inclusively ... ok
[INFO] [stdout] test game_list::tests::getting_unknown_game_reports_error ... ok
[INFO] [stdout] test game_list::tests::filters_by_opponent_with_player_of_either_colour ... ok
[INFO] [stdout] test game_list::tests::filters_within_date_range ... ok
[INFO] [stdout] test game_list::tests::filters_white_wins ... ok
[INFO] [stdout] test game_list::tests::lists_each_game_source_as_a_separate_occurrence ... ok
[INFO] [stdout] test database::tests::stale_schema_observation_does_not_repeat_completed_migration ... ok
[INFO] [stdout] test game_list::tests::filters_event_by_case_insensitive_substring ... ok
[INFO] [stdout] test game_list::tests::lists_one_row_per_canonical_game_and_uses_best_metadata ... ok
[INFO] [stdout] test game_list::tests::year_only_to_date_includes_the_whole_year ... ok
[INFO] [stdout] test game_list::tests::versus_without_player_matches_nothing ... ok
[INFO] [stdout] test game_list::tests::year_only_from_date_includes_the_whole_year ... ok
[INFO] [stdout] test game_list::tests::year_only_date_range_is_inclusive ... ok
[INFO] [stdout] test game_list::tests::filters_void_results ... ok
[INFO] [stdout] test game_list::tests::filters_jigo_results ... ok
[INFO] [stdout] test game_list::tests::filters_identified_players_by_preferred_name_alias_and_ambiguity ... ok
[INFO] [stdout] test import_directory::tests::calculates_import_rate ... ok
[INFO] [stdout] test game_list::tests::in_memory_filter_matches_database_filter_semantics ... ok
[INFO] [stdout] test game_store::tests::loads_game_by_id ... ok
[INFO] [stdout] test game_store::tests::reports_unknown_game_source_when_removing ... ok
[INFO] [stdout] test import_directory::tests::recognises_sgf_extension_case_insensitively ... ok
[INFO] [stdout] test importer::tests::exact_alias_resolution_prefers_source_specific_and_refuses_ambiguity ... ok
[INFO] [stdout] test importer::tests::insert_metadata_stores_normalised_played_date ... ok
[INFO] [stdout] test game_store::tests::reports_unknown_game_id ... ok
[INFO] [stdout] test importer::tests::insert_metadata_uses_known_aliases_without_rewriting_source_names ... ok
[INFO] [stdout] test game_store::tests::reports_unknown_game_when_removing ... ok
[INFO] [stdout] test importer::tests::normalises_approximate_year ... ok
[INFO] [stdout] test importer::tests::move_files_use_hash_subdirectories ... ok
[INFO] [stdout] test importer::tests::normalises_year_and_year_month ... ok
[INFO] [stdout] test importer::tests::preserves_complete_iso_date ... ok
[INFO] [stdout] test importer::tests::preserves_invalid_year_month_values ... ok
[INFO] [stdout] test importer::tests::preserves_unrecognised_descriptive_dates ... ok
[INFO] [stdout] test importer::tests::trims_surrounding_whitespace ... ok
[INFO] [stdout] test game_store::tests::returns_initial_position_after_setup ... ok
[INFO] [stdout] test game_store::tests::returns_all_game_positions ... ok
[INFO] [stdout] test game_store::tests::reports_out_of_range_move_number ... ok
[INFO] [stdout] test game_store::tests::reports_missing_move_file ... ok
[INFO] [stdout] test game_catalogue::tests::opens_catalogue_from_project_and_lists_games ... ok
[INFO] [stdout] test import_directory::tests::cancels_during_sgf_discovery_before_importing ... ok
[INFO] [stdout] test game_store::tests::returns_position_after_move ... ok
[INFO] [stdout] test game_store::tests::returns_position_after_pass ... ok
[INFO] [stdout] test game_store::tests::removes_game_database_records_and_move_file ... ok
[INFO] [stdout] test game_store::tests::removing_one_source_preserves_shared_canonical_game ... ok
[INFO] [stdout] test game_store::tests::removing_final_source_removes_canonical_game_and_move_file ... ok
[INFO] [stdout] test import_directory::tests::cancels_safely_between_sgf_files ... ok
[INFO] [stdout] test indexer::tests::find_matches_from_unknown_game_reports_error ... ok
[INFO] [stdout] test importer::tests::insert_metadata_uses_catalogue_only_after_local_resolution ... ok
[INFO] [stdout] test import_directory::tests::reports_discovery_and_import_progress ... ok
[INFO] [stdout] test katago::tests::converts_only_moves_up_to_requested_position ... ok
[INFO] [stdout] test katago::tests::converts_ordinary_move_history ... ok
[INFO] [stdout] test katago::tests::converts_pass_in_real_move_history ... ok
[INFO] [stdout] test katago::tests::converts_resolved_setup_board_and_white_to_move ... ok
[INFO] [stdout] test katago::tests::gtp_output_skips_i_column ... ok
[INFO] [stdout] test katago::tests::parses_analysis_response_into_bermuda_types ... ok
[INFO] [stdout] test katago::tests::recognises_terminated_response_without_results ... ok
[INFO] [stdout] test katago::tests::rejects_coordinate_outside_board ... ok
[INFO] [stdout] test katago::tests::rejects_invalid_gtp_coordinate ... ok
[INFO] [stdout] test katago::tests::sample_sgf_has_external_coordinates_and_unchanged_storage ... ok
[INFO] [stdout] test indexer::tests::excludes_games_already_indexed_at_requested_version ... ok
[INFO] [stdout] test katago::tests::serialises_analysis_request_as_katago_json ... ok
[INFO] [stdout] test katago::tests::serialises_termination_request_as_katago_json ... ok
[INFO] [stdout] test katago_worker::tests::cancelling_all_discards_pending_work ... ok
[INFO] [stdout] test katago_worker::tests::failed_termination_can_be_retried ... ok
[INFO] [stdout] test katago_worker::tests::finishing_old_request_does_not_clear_new_active_request ... ok
[INFO] [stdout] test katago_worker::tests::pending_analysis_keeps_only_latest_request ... ok
[INFO] [stdout] test katago_worker::tests::supersedes_running_analysis_with_latest_request_using_real_katago ... ignored, requires an explicitly configured local KataGo installation
[INFO] [stdout] test pattern::any_cell_matches_empty_black_and_white ... ok
[INFO] [stdout] test pattern::does_not_match_different_location ... ok
[INFO] [stdout] test pattern::empty_cell_still_requires_an_empty_intersection ... ok
[INFO] [stdout] test pattern::matches_identical_pattern ... ok
[INFO] [stdout] test pattern::tests::edge_pattern_does_not_match_interior_location ... ok
[INFO] [stdout] test pattern::tests::extracts_centre_pattern ... ok
[INFO] [stdout] test pattern::tests::extracts_corner_pattern ... ok
[INFO] [stdout] test pattern::tests::extracts_side_pattern ... ok
[INFO] [stdout] test pattern::tests::interior_pattern_does_not_match_edge_location ... ok
[INFO] [stdout] test pattern::tests::inverse_coordinate_transform_restores_inside_and_outside_points ... ok
[INFO] [stdout] test pattern::tests::rejects_empty_rectangle ... ok
[INFO] [stdout] test pattern::tests::rejects_rectangle_outside_board ... ok
[INFO] [stdout] test pattern::tests::reports_transformed_dimensions ... ok
[INFO] [stdout] test pattern::tests::top_right_corner_pattern_only_matches_top_right_corner ... ok
[INFO] [stdout] test pattern::tests::transforms_relative_coordinates ... ok
[INFO] [stdout] test pattern::transformation_tests::colour_reversal_preserves_geometry_and_edges ... ok
[INFO] [stdout] test pattern::transformation_tests::diagonal_mirror_swaps_dimensions_and_edges ... ok
[INFO] [stdout] test pattern::transformation_tests::four_clockwise_quarter_turns_restore_pattern ... ok
[INFO] [stdout] test pattern::transformation_tests::mirroring_twice_restores_pattern ... ok
[INFO] [stdout] test pattern::transformation_tests::reversing_colours_twice_restores_pattern ... ok
[INFO] [stdout] test pattern::transformation_tests::rotates_rectangular_pattern_clockwise ... ok
[INFO] [stdout] test pattern_index::tests::retains_packed_board_words_for_every_replayed_position ... ok
[INFO] [stdout] test pattern_index_format::tests::borrowed_view_matches_decoded_positions ... ok
[INFO] [stdout] test pattern_index::tests::packed_positions_preserve_capture_results ... ok
[INFO] [stdout] test pattern_index_format::tests::decoder_reports_bytes_consumed_for_concatenated_blocks ... ok
[INFO] [stdout] test pattern_index_format::tests::encoded_size_is_100_bytes_per_position_plus_header ... ok
[INFO] [stdout] test pattern_search::option_tests::bermuda_shape_only_accepts_clearly_elongated_patterns ... ok
[INFO] [stdout] test pattern_search::option_tests::default_options_generate_only_the_exact_pattern ... ok
[INFO] [stdout] test pattern_index_format::tests::round_trip_preserves_board_and_position_metadata ... ok
[INFO] [stdout] test pattern_search::option_tests::enabled_options_generate_transformed_and_reversed_variants ... ok
[INFO] [stdout] test pattern_search::option_tests::fast_matcher_treats_any_as_wildcard_but_empty_as_empty ... ok
[INFO] [stdout] test pattern_search::option_tests::equivalent_variants_are_deduplicated ... ok
[INFO] [stdout] test pattern_search::option_tests::long_axis_edge_band_does_not_restrict_square_patterns ... ok
[INFO] [stdout] test pattern_search::option_tests::long_axis_edge_band_handles_even_short_dimension_symmetrically ... ok
[INFO] [stdout] test pattern_search::option_tests::long_axis_edge_band_uses_horizontal_shape_centre ... ok
[INFO] [stdout] test pattern_search::option_tests::long_axis_edge_band_uses_vertical_shape_centre ... ok
[INFO] [stdout] test pattern_search::option_tests::next_move_distribution_normalises_and_classifies_moves ... ok
[INFO] [stdout] test pattern_search::option_tests::packed_indexed_position_matches_like_replayed_board ... ok
[INFO] [stdout] test pattern_search::option_tests::search_variants_keep_long_axis_edge_band ... ok
[INFO] [stdout] test pattern_search::option_tests::source_long_axis_edge_band_detects_horizontal_edge_pattern ... ok
[INFO] [stdout] test pattern_search::option_tests::source_long_axis_edge_band_detects_vertical_edge_pattern ... ok
[INFO] [stdout] test pattern_search::option_tests::source_long_axis_edge_band_ignores_square_patterns ... ok
[INFO] [stdout] test pattern_search::option_tests::transformed_matches_have_separate_appearance_identity ... ok
[INFO] [stdout] test player_catalogue::tests::catalogue_reconciliation_respects_local_ambiguity_and_suppression ... ok
[INFO] [stdout] test indexer::tests::indexes_one_game_transactionally ... ok
[INFO] [stdout] test indexer::tests::finds_matches_from_game_position ... ok
[INFO] [stdout] test indexer::tests::older_index_version_does_not_hide_game ... ok
[INFO] [stdout] test player_catalogue::tests::rejects_semantically_invalid_catalogues ... ok
[INFO] [stdout] test player_catalogue::tests::resolves_catalogue_names_without_guessing ... ok
[INFO] [stdout] test player_catalogue::tests::supplied_catalogue_parses ... ok
[INFO] [stdout] test player_catalogue::tests::catalogue_version_change_repairs_only_catalogue_owned_interpretations ... ok
[INFO] [stdout] test player_catalogue::tests::parses_player_aliases_and_optional_notes ... ok
[INFO] [stdout] test indexer::tests::lists_games_in_id_order ... ok
[INFO] [stdout] test player_catalogue::tests::rejects_malformed_catalogue ... ok
[INFO] [stdout] test indexer::tests::rejects_non_positive_index_version ... ok
[INFO] [stdout] test indexer::tests::pattern_search_games_exclude_handicap_unless_requested ... ok
[INFO] [stdout] test index_build::tests::cancels_safely_between_games ... ok
[INFO] [stdout] test indexer::tests::rejects_out_of_range_position_number ... ok
[INFO] [stdout] test indexer::tests::replays_one_database_game_into_positions ... ok
[INFO] [stdout] test indexer::tests::reindexing_replaces_existing_position_rows ... ok
[INFO] [stdout] test index_build::tests::builds_pending_games_with_progress ... ok
[INFO] [stdout] test indexer::tests::reports_missing_move_file ... ok
[INFO] [stdout] test indexer::tests::reports_unknown_game_id ... ok
[INFO] [stdout] test indexer::tests::selects_position_from_game_by_move_number ... ok
[INFO] [stdout] test player_catalogue::tests::materialises_catalogue_identity_without_guessing_or_overwriting ... ok
[INFO] [stdout] test player_catalogue::tests::synchronises_catalogue_without_deleting_local_identity_data ... ok
[INFO] [stdout] test player_directory::tests::creates_renames_and_lists_players ... ok
[INFO] [stdout] test position::tests::board_size_changes_fingerprint ... ok
[INFO] [stdout] test position::tests::identical_positions_have_identical_fingerprints ... ok
[INFO] [stdout] test position::tests::side_to_move_changes_fingerprint ... ok
[INFO] [stdout] test position::tests::stone_placement_changes_fingerprint ... ok
[INFO] [stdout] test position_stream::tests::emits_initial_and_post_move_positions ... ok
[INFO] [stdout] test position_stream::tests::empty_game_emits_only_initial_position ... ok
[INFO] [stdout] test position_stream::tests::includes_setup_stones_in_initial_position ... ok
[INFO] [stdout] test position_stream::tests::pass_still_emits_a_new_occurrence ... ok
[INFO] [stdout] test position_stream::tests::uses_recorded_next_colour_in_non_alternating_games ... ok
[INFO] [stdout] test project::tests::creates_paths_relative_to_project_root ... ok
[INFO] [stdout] test player_directory::tests::aliases_are_explicit_and_can_represent_ambiguous_names ... ok
[INFO] [stdout] test player_directory::tests::deleting_player_identity_restores_metadata_without_changing_source_name ... ok
[INFO] [stdout] test player_directory::tests::creates_player_and_assigns_source_name_in_one_transaction ... ok
[INFO] [stdout] test sgf::tests::accepts_mixed_case_property_identifier ... ok
[INFO] [stdout] test sgf::tests::main_variation_comments_follow_displayed_positions ... ok
[INFO] [stdout] test project_manager::tests::refuses_to_overwrite_existing_path ... ok
[INFO] [stdout] test sgf_writer::tests::escapes_closing_bracket_and_backslash ... ok
[INFO] [stdout] test sgf_writer::tests::collection_round_trip_preserves_variations_comments_and_markup ... ok
[INFO] [stdout] test sgf_writer::tests::game_record_round_trip_preserves_all_supported_data ... ok
[INFO] [stdout] test sgf_writer::tests::rejects_non_finite_komi ... ok
[INFO] [stdout] test sgf_writer::tests::rejects_point_outside_board ... ok
[INFO] [stdout] test sgf_writer::tests::writes_ff4_utf8_and_empty_coordinate_for_pass ... ok
[INFO] [stdout] test sgf_writer::tests::rejects_invalid_board_size ... ok
[INFO] [stdout] test study_document::tests::metadata_round_trip_is_self_contained_in_sgf ... ok
[INFO] [stdout] test study_document::tests::replacing_annotation_keeps_only_one_manual_mark_per_point ... ok
[INFO] [stdout] test study_document::tests::setting_same_annotation_toggles_it_off ... ok
[INFO] [stdout] test player_directory::tests::assigns_source_name_atomically_and_reuses_existing_alias ... ok
[INFO] [stdout] test study_edit::delete_from_here_tests::delete_first_node_of_variation_removes_only_that_variation ... ok
[INFO] [stdout] test study_edit::delete_from_here_tests::delete_inside_variation_keeps_earlier_nodes_and_siblings ... ok
[INFO] [stdout] test study_edit::delete_from_here_tests::delete_from_root_sequence_truncates_every_descendant ... ok
[INFO] [stdout] test study_edit::tests::adds_a_sibling_to_an_existing_branch_point ... ok
[INFO] [stdout] test study_edit::delete_from_here_tests::root_node_is_protected ... ok
[INFO] [stdout] test study_edit::tests::branch_from_leaf_creates_first_continuation ... ok
[INFO] [stdout] test study_edit::tests::branches_after_comment_only_nodes_belonging_to_the_position ... ok
[INFO] [stdout] test study_edit::tests::can_branch_again_inside_a_new_variation ... ok
[INFO] [stdout] test study_edit::tests::empty_inserted_node_round_trips_through_writer_and_parser ... ok
[INFO] [stdout] test study_edit::tests::extend_requires_explicit_branch_for_new_alternative ... ok
[INFO] [stdout] test study_edit::tests::existing_immediate_continuation_is_reused ... ok
[INFO] [stdout] test player_directory::tests::applies_source_alias_resolution_only_when_safe ... ok
[INFO] [stdout] test study_edit::tests::extends_a_leaf_in_the_same_sequence ... ok
[INFO] [stdout] test study_edit::tests::inserts_after_non_move_nodes_owned_by_position ... ok
[INFO] [stdout] test study_edit::tests::inserts_before_next_move_in_same_sequence ... ok
[INFO] [stdout] test study_edit::tests::inserts_common_node_before_existing_variations ... ok
[INFO] [stdout] test study_edit::tests::inserts_empty_node_at_leaf ... ok
[INFO] [stdout] test study_edit::tests::inserts_inside_nested_variation ... ok
[INFO] [stdout] test study_edit::tests::inserts_literal_node_after_non_move_source ... ok
[INFO] [stdout] test study_edit::tests::literal_branch_illegal_move_does_not_mutate_collection_and_pass_works ... ok
[INFO] [stdout] test study_edit::tests::literal_branches_keep_inserted_node_and_old_continuation ... ok
[INFO] [stdout] test study_edit::tests::main_variation_cannot_be_promoted_again ... ok
[INFO] [stdout] test study_edit::tests::literal_insert_at_branch_point_stays_common_to_variations ... ok
[INFO] [stdout] test study_edit::tests::literal_position_excludes_later_setup_and_preserves_nested_path ... ok
[INFO] [stdout] test study_edit::tests::preserves_nested_variations_with_the_old_continuation ... ok
[INFO] [stdout] test study_edit::tests::promotes_nearest_side_variation_without_losing_siblings ... ok
[INFO] [stdout] test study_edit::tests::rejects_wrong_colour_and_illegal_move ... ok
[INFO] [stdout] test study_edit::tests::splits_an_existing_sequence_into_old_and_new_variations ... ok
[INFO] [stdout] test player_directory::tests::new_player_is_rolled_back_when_source_assignment_is_unsafe ... ok
[INFO] [stdout] test player_directory::tests::local_source_alias_overrides_catalogue_but_not_local_assignment ... ok
[INFO] [stdout] test study_edit::tests::supports_pass_as_an_inserted_move ... ok
[INFO] [stdout] test study_structure::tests::preserves_variation_topology_and_source_addresses ... ok
[INFO] [stdout] test study_tree::tests::carries_leading_variation_comment_to_first_variation_move ... ok
[INFO] [stdout] test study_tree::tests::preserves_branch_order_and_builds_main_path ... ok
[INFO] [stdout] test study_tree::tests::keeps_comments_with_their_variation_moves ... ok
[INFO] [stdout] test player_directory::tests::links_and_unlinks_identity_without_changing_source_name ... ok
[INFO] [stdout] test study_tree::tests::retains_labels_and_standard_board_marks ... ok
[INFO] [stdout] test study_tree::tests::records_nested_variation_paths ... ok
[INFO] [stdout] test study_tree::tests::tracks_all_sgf_nodes_contributing_to_displayed_comments ... ok
[INFO] [stdout] test player_directory::tests::explicit_identity_changes_control_catalogue_suppression ... ok
[INFO] [stdout] test player_directory::tests::explicit_player_assignment_becomes_local_provenance ... ok
[INFO] [stdout] test project_manager::tests::creates_project_directory_structure ... ok
[INFO] [stdout] test study_structure::tests::inserted_empty_node_becomes_visible_structure ... ok
[INFO] [stdout] test study_structure::tests::preserves_non_move_nodes_in_sequence ... ok
[INFO] [stdout] test study_structure::tests::structural_rows_advance_even_when_move_number_does_not ... ok
[INFO] [stdout] test project_manager::tests::opens_existing_project ... ok
[INFO] [stdout] test player_directory::tests::search_names_are_case_insensitive ... ok
[INFO] [stdout] test player_directory::tests::previews_source_alias_resolution_without_changing_metadata ... ok
[INFO] [stdout] test player_directory::tests::removing_source_alias_restores_metadata_without_changing_source_name ... ok
[INFO] [stdout] test player_directory::tests::known_names_keep_preferred_supplied_and_local_assertions_distinct ... ok
[INFO] [stdout] test player_directory::tests::source_name_assignment_rolls_back_new_alias_when_resolution_is_unsafe ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 240 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.80s
[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/main.rs (/opt/rustwide/target/debug/deps/bermuda-be687e5b4363b07f)
[INFO] [stderr]      Running tests/core.rs (/opt/rustwide/target/debug/deps/core-fb857101a96e1c9d)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test parses_escaped_values_and_variations ... ok
[INFO] [stdout] test compact_move_file_round_trip ... ok
[INFO] [stdout] test captures_a_stone ... ok
[INFO] [stdout] test enforces_simple_ko_and_pass_clears_it ... ok
[INFO] [stdout] test extracts_first_variation_and_pass ... 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 tests/import_record.rs (/opt/rustwide/target/debug/deps/import_record-7abb291622a862d2)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test imports_game_record_without_sgf_round_trip ... ok
[INFO] [stderr]      Running tests/katago_process.rs (/opt/rustwide/target/debug/deps/katago_process-297885d9dc4480c6)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]      Running tests/occurrence_context.rs (/opt/rustwide/target/debug/deps/occurrence_context-245eab68af25b819)
[INFO] [stdout] running 2 tests
[INFO] [stdout] test analyses_empty_board_with_real_katago ... ignored, requires an explicitly configured local KataGo installation
[INFO] [stdout] test analyses_setup_position_from_bermuda_replay_with_real_katago ... ignored, requires an explicitly configured local KataGo installation
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/pattern_search.rs (/opt/rustwide/target/debug/deps/pattern_search-0aea2902a04b9386)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test records_first_move_at_each_distance_threshold_from_appearance_start ... ok
[INFO] [stdout] test uses_the_transformed_match_rectangle_dimensions ... ok
[INFO] [stdout] test leaves_thresholds_empty_when_only_passes_or_distant_moves_follow ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test distinct_appearances_collapse_continuity_and_keep_reappearance ... ok
[INFO] [stdout] test game_appearance_search_ignores_unchanged_pass_positions ... ok
[INFO] [stdout] test project_scope_returns_one_result_per_matching_game ... ok
[INFO] [stdout] test game_scope_groups_occurrences_for_requested_game ... ok
[INFO] [stdout] test project_summary_search_keeps_counts_and_first_appearance_spans ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests bermuda
[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" "2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10", kill_on_drop: false }`
[INFO] [stdout] 2c0803b6753b890bcb7a098f15ad094e72acc1e95242a453067fedaea31ceb10
