[INFO] cloning repository https://github.com/brookstalley/worldground
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/brookstalley/worldground" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbrookstalley%2Fworldground", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbrookstalley%2Fworldground'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 48313778d7c3cfeb15699abcfb0c409177bc33b4
[INFO] testing brookstalley/worldground/48313778d7c3cfeb15699abcfb0c409177bc33b4 against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbrookstalley%2Fworldground" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/brookstalley/worldground
[INFO] finished tweaking git repo https://github.com/brookstalley/worldground
[INFO] tweaked toml for git repo https://github.com/brookstalley/worldground written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/brookstalley/worldground on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/brookstalley/worldground already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9
[INFO] running `Command { std: "docker" "start" "d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9", 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" "d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9", 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" "d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling syn v2.0.116
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling smartstring v1.0.1
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling regex-syntax v0.8.9
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling utf-8 v0.7.6
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling data-encoding v2.10.0
[INFO] [stderr]    Compiling const_soft_float v0.1.4
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling clap_builder v4.5.59
[INFO] [stderr]    Compiling glam v0.32.0
[INFO] [stderr]    Compiling thin-vec v0.2.14
[INFO] [stderr]    Compiling constgebra v0.1.4
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling const-random v0.1.18
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling uuid v1.21.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand_xorshift v0.3.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling noise v0.9.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling rhai_codegen v3.1.0
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling rhai v1.24.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling tungstenite v0.26.2
[INFO] [stderr]    Compiling clap v4.5.59
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling hexasphere v18.0.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling tokio-tungstenite v0.26.2
[INFO] [stderr]    Compiling worldground v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 18.03s
[INFO] running `Command { std: "docker" "inspect" "d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9", 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" "d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling rhai v1.24.0
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling worldground v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 15.56s
[INFO] running `Command { std: "docker" "inspect" "d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9", 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" "d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.17s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/worldground-90ae871b32081af5)
[INFO] [stdout] 
[INFO] [stdout] running 194 tests
[INFO] [stdout] test config::generation::tests::from_file_missing ... ok
[INFO] [stdout] test config::generation::tests::invalid_mountain_ratio ... ok
[INFO] [stdout] test config::generation::tests::invalid_ocean_ratio ... ok
[INFO] [stdout] test config::generation::tests::from_file_invalid_toml ... ok
[INFO] [stdout] test config::generation::tests::invalid_tile_count ... ok
[INFO] [stdout] test config::generation::tests::valid_params ... ok
[INFO] [stdout] test config::generation::tests::from_toml_string ... ok
[INFO] [stdout] test config::generation::tests::from_file_valid ... ok
[INFO] [stdout] test config::simulation::tests::defaults_applied_for_empty_config ... ok
[INFO] [stdout] test config::generation::tests::from_file_out_of_range ... ok
[INFO] [stdout] test config::simulation::tests::from_file_missing_file_error ... ok
[INFO] [stdout] test config::simulation::tests::invalid_log_level_rejected ... ok
[INFO] [stdout] test config::simulation::tests::invalid_season_length_rejected ... ok
[INFO] [stdout] test config::simulation::tests::invalid_snapshot_interval_rejected ... ok
[INFO] [stdout] test config::simulation::tests::invalid_tick_rate_rejected ... ok
[INFO] [stdout] test config::simulation::tests::from_file_loads_valid_config ... ok
[INFO] [stdout] test config::simulation::tests::invalid_websocket_port_rejected ... ok
[INFO] [stdout] test config::simulation::tests::malformed_toml_includes_source_path ... ok
[INFO] [stdout] test config::simulation::tests::multiple_errors_reported_together ... ok
[INFO] [stdout] test config::simulation::tests::valid_config_loads_all_fields ... ok
[INFO] [stdout] test persistence::snapshot::tests::list_snapshots_empty_dir ... ok
[INFO] [stdout] test persistence::snapshot::tests::parse_invalid_filename_returns_none ... ok
[INFO] [stdout] test persistence::snapshot::tests::load_latest_valid_empty_dir_returns_error ... ok
[INFO] [stdout] test persistence::snapshot::tests::load_corrupt_snapshot_returns_error ... ok
[INFO] [stdout] test persistence::snapshot::tests::atomic_write_no_temp_files_remain ... ok
[INFO] [stdout] test persistence::snapshot::tests::list_snapshots_skips_non_snapshot_files ... ok
[INFO] [stdout] test persistence::snapshot::tests::list_snapshots_returns_sorted_newest_first ... ok
[INFO] [stdout] test persistence::snapshot::tests::list_snapshots_nonexistent_dir ... ok
[INFO] [stdout] test persistence::snapshot::tests::load_latest_valid_all_corrupt_returns_error ... ok
[INFO] [stdout] test persistence::snapshot::tests::prune_keeps_max_snapshots ... ok
[INFO] [stdout] test server::protocol::tests::diff_detects_multiple_layer_changes ... ok
[INFO] [stdout] test persistence::snapshot::tests::load_truncated_snapshot_returns_error ... ok
[INFO] [stdout] test server::protocol::tests::diff_detects_weather_change ... ok
[INFO] [stdout] test server::protocol::tests::health_status_serializes ... ok
[INFO] [stdout] test persistence::snapshot::tests::snapshot_filename_parse_round_trip ... ok
[INFO] [stdout] test server::protocol::tests::snapshot_serializes_to_json ... ok
[INFO] [stdout] test server::protocol::tests::diff_empty_when_no_changes ... ok
[INFO] [stdout] test server::protocol::tests::tick_diff_serializes_to_json ... ok
[INFO] [stdout] test persistence::snapshot::tests::save_creates_directory_if_missing ... ok
[INFO] [stdout] test server::protocol::tests::world_snapshot_contains_all_tiles ... ok
[INFO] [stdout] test server::protocol::tests::diff_only_includes_changed_tiles ... ok
[INFO] [stdout] test server::tests::broadcast_diff_to_subscribers ... ok
[INFO] [stdout] test persistence::snapshot::tests::load_latest_valid_falls_back_on_corrupt ... ok
[INFO] [stdout] test server::tests::build_diff_json_empty_when_no_changes ... ok
[INFO] [stdout] test server::tests::health_recent_durations_capped_at_100 ... ok
[INFO] [stdout] test server::tests::build_diff_json_is_valid ... ok
[INFO] [stdout] test server::tests::health_endpoint_returns_json ... ok
[INFO] [stdout] test persistence::snapshot::tests::prune_noop_when_under_limit ... ok
[INFO] [stdout] test server::tests::server_state_on_tick_updates_health ... ok
[INFO] [stdout] test server::tests::server_state_updates_snapshot_for_new_clients ... ok
[INFO] [stdout] test server::tests::tick_rate_calculation ... ok
[INFO] [stdout] test simulation::engine::tests::apply_weather_mutations ... ok
[INFO] [stdout] test simulation::engine::tests::apply_conditions_mutations_with_clamping ... ok
[INFO] [stdout] test server::tests::client_disconnect_does_not_crash_server ... ok
[INFO] [stdout] test simulation::engine::tests::apply_terrain_mutations ... ok
[INFO] [stdout] test simulation::engine::tests::enum_string_helpers_match_debug ... ok
[INFO] [stdout] test simulation::engine::tests::immutable_map_contents_match_full ... ok
[INFO] [stdout] test simulation::engine::tests::missing_rule_dir_error ... ok
[INFO] [stdout] test persistence::snapshot::tests::save_and_load_round_trip_identical ... ok
[INFO] [stdout] test persistence::snapshot::tests::round_trip_preserves_all_fields ... ok
[INFO] [stdout] test simulation::engine::tests::tile_to_map_has_all_layers ... ok
[INFO] [stdout] test simulation::engine::tests::xorshift64_deterministic ... ok
[INFO] [stdout] test simulation::macro_weather::tests::coriolis_direction_nh_low ... ok
[INFO] [stdout] test simulation::engine::tests::empty_phase_dir_is_noop ... ok
[INFO] [stdout] test simulation::engine::tests::load_valid_rules ... ok
[INFO] [stdout] test simulation::engine::tests::wrong_phase_mutations_ignored ... ok
[INFO] [stdout] test simulation::macro_weather::tests::gaussian_falloff_correct ... ok
[INFO] [stdout] test simulation::engine::tests::rhai_syntax_error_detected ... ok
[INFO] [stdout] test simulation::macro_weather::tests::empty_systems_resets_tile_fields ... ok
[INFO] [stdout] test simulation::engine::tests::rule_error_returns_rule_error ... ok
[INFO] [stdout] test simulation::engine::tests::multiple_rules_last_write_wins ... ok
[INFO] [stdout] test simulation::macro_weather::tests::spatial_grid_wrapping_and_poles ... ok
[INFO] [stdout] test simulation::engine::tests::rule_reads_season_and_tick ... ok
[INFO] [stdout] test simulation::engine::tests::rule_reads_neighbors ... ok
[INFO] [stdout] test simulation::native_weather::tests::accum_humidity_chain ... ok
[INFO] [stdout] test simulation::native_weather::tests::accum_no_duplicate_mutations ... ok
[INFO] [stdout] test simulation::native_weather::tests::accum_storm_reads_fresh_cloud ... ok
[INFO] [stdout] test simulation::native_weather::tests::accum_storm_amplifies_rule1_wind ... ok
[INFO] [stdout] test simulation::native_weather::tests::native_weather_produces_expected_fields ... ok
[INFO] [stdout] test simulation::engine::tests::rule_reads_tile_data ... ok
[INFO] [stdout] test simulation::native_weather::tests::native_weather_rng_deterministic ... ok
[INFO] [stdout] test simulation::native_weather::tests::test_advection_weight_alignment ... ok
[INFO] [stdout] test simulation::engine::tests::rules_sorted_by_filename ... ok
[INFO] [stdout] test simulation::macro_weather::tests::spatial_grid_matches_linear_scan ... ok
[INFO] [stdout] test simulation::native_weather::tests::test_cloud_clearing_from_precipitation ... ok
[INFO] [stdout] test simulation::native_weather::tests::test_humidity_advects_downwind ... ok
[INFO] [stdout] test simulation::native_weather::tests::test_convergence_vertical_motion_values ... ok
[INFO] [stdout] test simulation::native_weather::tests::test_convergence_zones_latitude_pattern ... ok
[INFO] [stdout] test simulation::native_weather::tests::test_humidity_stable_without_macro ... ok
[INFO] [stdout] test simulation::native_weather::tests::test_neighbor_bearings_flat_hex_fallback ... ok
[INFO] [stdout] test simulation::native_weather::tests::test_neighbor_bearings_geodesic ... ok
[INFO] [stdout] test simulation::native_weather::tests::test_evapotranspiration_scales_with_vegetation ... ok
[INFO] [stdout] test simulation::native_weather::tests::test_precipitation_sustains_humidity ... ok
[INFO] [stdout] test simulation::native_weather::tests::test_no_advection_crosswind ... ok
[INFO] [stdout] test simulation::phase::tests::biome_adjacency_graph_is_bidirectional ... ok
[INFO] [stdout] test simulation::phase::tests::ocean_biome_transition_always_rejected ... ok
[INFO] [stdout] test simulation::phase::tests::invalid_biome_transition_tundra_to_desert_rejected ... ok
[INFO] [stdout] test simulation::phase::tests::valid_biome_transition_grassland_to_savanna_accepted ... ok
[INFO] [stdout] test simulation::phase::tests::non_biome_mutations_preserved_when_biome_rejected ... ok
[INFO] [stdout] test simulation::sphere_math::tests::advance_position_eastward_at_equator ... ok
[INFO] [stdout] test simulation::sphere_math::tests::advance_position_stationary ... ok
[INFO] [stdout] test simulation::sphere_math::tests::advance_position_northward ... ok
[INFO] [stdout] test simulation::sphere_math::tests::angular_distance_antipodal ... ok
[INFO] [stdout] test simulation::sphere_math::tests::angular_distance_pole_to_equator ... ok
[INFO] [stdout] test simulation::sphere_math::tests::angular_distance_symmetric ... ok
[INFO] [stdout] test simulation::sphere_math::tests::angular_distance_same_point ... ok
[INFO] [stdout] test simulation::sphere_math::tests::direction_on_sphere_east ... ok
[INFO] [stdout] test simulation::sphere_math::tests::angular_distance_equator_quarter ... ok
[INFO] [stdout] test simulation::macro_weather::tests::projection_sets_tile_fields ... ok
[INFO] [stdout] test simulation::phase::tests::empty_phase_is_noop ... ok
[INFO] [stdout] test simulation::sphere_math::tests::direction_on_sphere_north ... ok
[INFO] [stdout] test simulation::sphere_math::tests::lat_lon_xyz_round_trip ... ok
[INFO] [stdout] test simulation::sphere_math::tests::rotate_tangent_vector_90_degrees ... ok
[INFO] [stdout] test simulation::sphere_math::tests::tangent_to_bearing_east ... ok
[INFO] [stdout] test simulation::sphere_math::tests::direction_coincident_returns_zero ... ok
[INFO] [stdout] test simulation::sphere_math::tests::tangent_to_bearing_north ... ok
[INFO] [stdout] test simulation::sphere_math::tests::tangent_to_bearing_south ... ok
[INFO] [stdout] test simulation::phase::tests::double_buffer_within_phase ... ok
[INFO] [stdout] test simulation::sphere_math::tests::tangent_to_bearing_west ... ok
[INFO] [stdout] test simulation::statistics::tests::compute_statistics_biome_distribution ... ok
[INFO] [stdout] test simulation::statistics::tests::compute_statistics_basic_averages ... ok
[INFO] [stdout] test simulation::statistics::tests::diversity_index_monoculture_is_zero ... ok
[INFO] [stdout] test simulation::statistics::tests::empty_world_returns_zeroed_stats ... ok
[INFO] [stdout] test simulation::statistics::tests::weather_coverage_counted ... ok
[INFO] [stdout] test simulation::statistics::tests::diversity_index_multiple_biomes_positive ... ok
[INFO] [stdout] test server::tests::build_snapshot_json_is_valid ... ok
[INFO] [stdout] test server::tests::websocket_client_receives_snapshot_and_diff ... ok
[INFO] [stdout] test simulation::engine::tests::rule_timeout_enforced ... ok
[INFO] [stdout] test simulation::tests::established_biome_resists_change ... ok
[INFO] [stdout] test simulation::macro_weather::tests::geodesic_world_macro_weather ... ok
[INFO] [stdout] test simulation::tests::memory_estimate_10k_tiles_under_50mb ... ok
[INFO] [stdout] test simulation::tests::cascade_detection_with_failing_rules ... ok
[INFO] [stdout] test simulation::tests::phase_ordering_causal_chain ... ok
[INFO] [stdout] test simulation::tests::single_tick_produces_state_changes ... ok
[INFO] [stdout] test persistence::snapshot::tests::serialization_round_trip_10k_tiles_within_one_second ... ok
[INFO] [stdout] test world::generation::tests::all_ocean_world ... ok
[INFO] [stdout] test simulation::tests::ticks_in_current_biome_increments ... ok
[INFO] [stdout] test simulation::tests::season_advances_at_interval ... ok
[INFO] [stdout] test world::generation::tests::climate_follows_latitude ... ok
[INFO] [stdout] test world::generation::tests::custom_params_mountain_ratio ... ok
[INFO] [stdout] test world::generation::tests::custom_params_ocean_ratio ... ok
[INFO] [stdout] test world::generation::tests::generate_default_world_correct_tile_count ... ok
[INFO] [stdout] test world::generation::tests::generate_default_world_all_layers_populated ... ok
[INFO] [stdout] test world::generation::tests::generate_geodesic_world_correct_tile_count ... ok
[INFO] [stdout] test world::generation::tests::generate_geodesic_world_all_layers_populated ... ok
[INFO] [stdout] test world::generation::tests::generate_default_world_ocean_ratio ... ok
[INFO] [stdout] test world::generation::tests::min_world_100_tiles ... ok
[INFO] [stdout] test world::generation::tests::geodesic_climate_follows_latitude ... ok
[INFO] [stdout] test world::generation::tests::generation_is_deterministic ... ok
[INFO] [stdout] test world::generation::tests::no_ocean_world ... ok
[INFO] [stdout] test world::tile::tests::all_biome_types_serialize ... ok
[INFO] [stdout] test simulation::tests::geodesic_pentagon_tiles_simulate_correctly ... ok
[INFO] [stdout] test world::tile::tests::all_terrain_types_serialize ... ok
[INFO] [stdout] test world::tile::tests::season_cycles_correctly ... ok
[INFO] [stdout] test world::tile::tests::tile_creation_has_all_layers ... ok
[INFO] [stdout] test world::tile::tests::tile_serde_round_trip ... ok
[INFO] [stdout] test world::topology::tests::all_tiles_have_six_neighbors ... ok
[INFO] [stdout] test world::generation::tests::resources_distributed ... ok
[INFO] [stdout] test world::topology::tests::all_tiles_reachable ... ok
[INFO] [stdout] test world::generation::tests::seed_zero_generates_random ... ok
[INFO] [stdout] test world::topology::tests::flat_hex_correct_tile_count ... ok
[INFO] [stdout] test world::topology::tests::geodesic_all_tiles_reachable ... ok
[INFO] [stdout] test world::topology::tests::geodesic_is_deterministic ... ok
[INFO] [stdout] test world::topology::tests::geodesic_lat_lon_ranges ... ok
[INFO] [stdout] test world::topology::tests::geodesic_neighbors_bidirectional ... ok
[INFO] [stdout] test world::topology::tests::geodesic_no_self_neighbors ... ok
[INFO] [stdout] test world::topology::tests::geodesic_no_duplicate_neighbors ... ok
[INFO] [stdout] test world::topology::tests::geodesic_tile_count_formula ... ok
[INFO] [stdout] test world::topology::tests::grid_dimensions_returns_valid_sizes ... ok
[INFO] [stdout] test world::topology::tests::neighbors_are_bidirectional ... ok
[INFO] [stdout] test world::topology::tests::no_duplicate_neighbors ... ok
[INFO] [stdout] test world::topology::tests::no_self_neighbors ... ok
[INFO] [stdout] test world::topology::tests::small_grid_neighbor_verification ... ok
[INFO] [stdout] test world::topology::tests::topology_is_deterministic ... ok
[INFO] [stdout] test world::weather_systems::tests::all_system_types_serialize ... ok
[INFO] [stdout] test world::weather_systems::tests::macro_weather_state_default ... ok
[INFO] [stdout] test world::weather_systems::tests::macro_weather_state_serde_round_trip ... ok
[INFO] [stdout] test world::weather_systems::tests::macro_weather_state_with_seed ... ok
[INFO] [stdout] test world::weather_systems::tests::pressure_system_serde_round_trip ... ok
[INFO] [stdout] test world::topology::tests::geodesic_positions_on_unit_sphere ... ok
[INFO] [stdout] test world::topology::tests::geodesic_exactly_12_pentagons ... ok
[INFO] [stdout] test world::topology::tests::geodesic_correct_tile_counts ... ok
[INFO] [stdout] test simulation::macro_weather::tests::macro_weather_step_deterministic ... ok
[INFO] [stdout] test simulation::macro_weather::tests::systems_spawn_and_evolve ... ok
[INFO] [stdout] test simulation::tests::geodesic_world_multi_tick_no_errors ... ok
[INFO] [stdout] test simulation::tests::season_full_cycle ... ok
[INFO] [stdout] test persistence::snapshot::tests::multiple_saves_produce_distinct_files ... ok
[INFO] [stdout] test simulation::macro_weather::tests::systems_capped_at_max ... ok
[INFO] [stdout] test simulation::tests::test_advection_moves_humidity_inland ... ok
[INFO] [stdout] test simulation::tests::per_phase_timing_within_budget ... ok
[INFO] [stdout] test simulation::tests::simulation_determinism_100_ticks ... ok
[INFO] [stdout] test simulation::tests::performance_10k_tiles_100_ticks ... ok
[INFO] [stdout] test simulation::tests::multi_tick_evolution_400_ticks has been running for over 60 seconds
[INFO] [stdout] test simulation::tests::test_world_does_not_desertify has been running for over 60 seconds
[INFO] [stdout] test simulation::tests::multi_tick_evolution_400_ticks ... ok
[INFO] [stdout] test simulation::tests::test_world_does_not_desertify ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 194 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 165.51s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/worldground-b31da9eeca200ed7)
[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 worldground
[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" "d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9", kill_on_drop: false }`
[INFO] [stdout] d2d1145e3821bba03d55c84f433416a1a25b829e4b5a28736a66c10254e5efc9
