[INFO] cloning repository https://github.com/cainem/hill_descent [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/cainem/hill_descent" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcainem%2Fhill_descent", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcainem%2Fhill_descent'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 1707964815b6bc24f58c83e94c81c74bf3abbcb0 [INFO] testing cainem/hill_descent against master#ad85bc524b1ad696e42061ad8338d382dffbdbe5 for pr-146237 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcainem%2Fhill_descent" "/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/cainem/hill_descent [INFO] finished tweaking git repo https://github.com/cainem/hill_descent [INFO] tweaked toml for git repo https://github.com/cainem/hill_descent written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/cainem/hill_descent on toolchain ad85bc524b1ad696e42061ad8338d382dffbdbe5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/cainem/hill_descent 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" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root: [INFO] [stderr] package: /workspace/builds/worker-4-tc1/source/hill_descent_lib/Cargo.toml [INFO] [stderr] workspace: /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] af1f8d965c0bcb622a5e24c4f9420b1ec5028d71d529ce33e9fa7556c8ca5665 [INFO] running `Command { std: "docker" "start" "-a" "af1f8d965c0bcb622a5e24c4f9420b1ec5028d71d529ce33e9fa7556c8ca5665", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "af1f8d965c0bcb622a5e24c4f9420b1ec5028d71d529ce33e9fa7556c8ca5665", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "af1f8d965c0bcb622a5e24c4f9420b1ec5028d71d529ce33e9fa7556c8ca5665", kill_on_drop: false }` [INFO] [stdout] af1f8d965c0bcb622a5e24c4f9420b1ec5028d71d529ce33e9fa7556c8ca5665 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0b6b407aac99a0409e6f1954b129720ea1bd524e78904e183d52e9d237894864 [INFO] running `Command { std: "docker" "start" "-a" "0b6b407aac99a0409e6f1954b129720ea1bd524e78904e183d52e9d237894864", kill_on_drop: false }` [INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root: [INFO] [stderr] package: /opt/rustwide/workdir/hill_descent_lib/Cargo.toml [INFO] [stderr] workspace: /opt/rustwide/workdir/Cargo.toml [INFO] [stderr] Compiling parking_lot_core v0.9.11 [INFO] [stderr] Compiling signal-hook-registry v1.4.6 [INFO] [stderr] Compiling socket2 v0.6.0 [INFO] [stderr] Compiling cc v1.2.31 [INFO] [stderr] Compiling tracing v0.1.41 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling bytes v1.10.1 [INFO] [stderr] Compiling tracing-core v0.1.34 [INFO] [stderr] Compiling zerovec v0.11.4 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling cookie v0.16.2 [INFO] [stderr] Compiling socket2 v0.5.10 [INFO] [stderr] Compiling parking_lot v0.12.4 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling v_htmlescape v0.15.8 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling anstyle-query v1.1.4 [INFO] [stderr] Compiling derive_more v0.99.20 [INFO] [stderr] Compiling flate2 v1.1.2 [INFO] [stderr] Compiling tokio v1.47.1 [INFO] [stderr] Compiling anstream v0.6.20 [INFO] [stderr] Compiling bytestring v1.4.0 [INFO] [stderr] Compiling tracing-subscriber v0.3.19 [INFO] [stderr] Compiling env_filter v0.1.3 [INFO] [stderr] Compiling http-range v0.1.5 [INFO] [stderr] Compiling actix-router v0.5.3 [INFO] [stderr] Compiling jiff v0.2.15 [INFO] [stderr] Compiling tinystr v0.8.1 [INFO] [stderr] Compiling potential_utf v0.1.2 [INFO] [stderr] Compiling icu_locale_core v2.0.0 [INFO] [stderr] Compiling icu_collections v2.0.0 [INFO] [stderr] Compiling zstd-sys v2.0.15+zstd.1.5.7 [INFO] [stderr] Compiling actix-web-codegen v4.3.0 [INFO] [stderr] Compiling icu_provider v2.0.0 [INFO] [stderr] Compiling icu_normalizer v2.0.0 [INFO] [stderr] Compiling icu_properties v2.0.1 [INFO] [stderr] Compiling serde_json v1.0.140 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling hill_descent_lib v0.1.0 (/opt/rustwide/workdir/hill_descent_lib) [INFO] [stderr] Compiling tokio-util v0.7.16 [INFO] [stderr] Compiling actix-rt v2.10.0 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.0.3 [INFO] [stderr] Compiling actix-server v2.6.0 [INFO] [stderr] Compiling env_logger v0.11.8 [INFO] [stderr] Compiling url v2.5.4 [INFO] [stderr] Compiling actix-codec v0.5.2 [INFO] [stderr] Compiling h2 v0.3.27 [INFO] [stderr] Compiling zstd-safe v7.2.4 [INFO] [stderr] Compiling zstd v0.13.3 [INFO] [stderr] Compiling actix-http v3.11.0 [INFO] [stderr] Compiling actix-web v4.11.0 [INFO] [stderr] Compiling actix-files v0.6.6 [INFO] [stderr] Compiling actix-cors v0.7.1 [INFO] [stderr] Compiling hill_descent_server v0.1.0 (/opt/rustwide/workdir/hill_descent_server) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 30.52s [INFO] running `Command { std: "docker" "inspect" "0b6b407aac99a0409e6f1954b129720ea1bd524e78904e183d52e9d237894864", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0b6b407aac99a0409e6f1954b129720ea1bd524e78904e183d52e9d237894864", kill_on_drop: false }` [INFO] [stdout] 0b6b407aac99a0409e6f1954b129720ea1bd524e78904e183d52e9d237894864 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0d4dd1858873818ebac7c9d187db132b4d6c54516c26fdba219e2139bee9b8b9 [INFO] running `Command { std: "docker" "start" "-a" "0d4dd1858873818ebac7c9d187db132b4d6c54516c26fdba219e2139bee9b8b9", kill_on_drop: false }` [INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root: [INFO] [stderr] package: /opt/rustwide/workdir/hill_descent_lib/Cargo.toml [INFO] [stderr] workspace: /opt/rustwide/workdir/Cargo.toml [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling plotters-backend v0.3.7 [INFO] [stderr] Compiling clap_builder v4.5.41 [INFO] [stderr] Compiling cast v0.3.0 [INFO] [stderr] Compiling ciborium v0.2.2 [INFO] [stderr] Compiling tinytemplate v1.2.1 [INFO] [stderr] Compiling is-terminal v0.4.16 [INFO] [stderr] Compiling anes v0.1.6 [INFO] [stderr] Compiling oorandom v11.1.5 [INFO] [stderr] Compiling actix-router v0.5.3 [INFO] [stderr] Compiling hill_descent_lib v0.1.0 (/opt/rustwide/workdir/hill_descent_lib) [INFO] [stderr] Compiling itertools v0.10.5 [INFO] [stderr] Compiling rayon v1.10.0 [INFO] [stderr] Compiling plotters-svg v0.3.7 [INFO] [stderr] Compiling plotters v0.3.7 [INFO] [stderr] Compiling actix-web v4.11.0 [INFO] [stderr] Compiling criterion-plot v0.5.0 [INFO] [stderr] Compiling clap v4.5.41 [INFO] [stderr] Compiling criterion v0.5.1 [INFO] [stderr] Compiling actix-files v0.6.6 [INFO] [stderr] Compiling actix-cors v0.7.1 [INFO] [stderr] Compiling hill_descent_server v0.1.0 (/opt/rustwide/workdir/hill_descent_server) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 13.77s [INFO] running `Command { std: "docker" "inspect" "0d4dd1858873818ebac7c9d187db132b4d6c54516c26fdba219e2139bee9b8b9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0d4dd1858873818ebac7c9d187db132b4d6c54516c26fdba219e2139bee9b8b9", kill_on_drop: false }` [INFO] [stdout] 0d4dd1858873818ebac7c9d187db132b4d6c54516c26fdba219e2139bee9b8b9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 8637e3a6ee7e12fa95c7132a6e52f245491c32accc4fda82d0128b5596f46f61 [INFO] running `Command { std: "docker" "start" "-a" "8637e3a6ee7e12fa95c7132a6e52f245491c32accc4fda82d0128b5596f46f61", kill_on_drop: false }` [INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root: [INFO] [stderr] package: /opt/rustwide/workdir/hill_descent_lib/Cargo.toml [INFO] [stderr] workspace: /opt/rustwide/workdir/Cargo.toml [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.30s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/hill_descent_lib-546ec0451800143e) [INFO] [stdout] [INFO] [stdout] running 302 tests [INFO] [stdout] test gamete::new_random_gamete::tests::given_empty_bounds_when_new_random_gamete_then_gamete_is_empty ... ok [INFO] [stdout] test gamete::reproduce::tests::given_reproduce_when_problem_parameters_exceed_bounds_then_values_are_not_clamped ... ok [INFO] [stdout] test gamete::reproduce::tests::given_reproduce_when_system_parameters_exceed_bounds_then_values_are_clamped ... ok [INFO] [stdout] test gamete::new_random_gamete::tests::given_some_bounds_when_new_random_gamete_then_gamete_has_correct_number_of_loci ... ok [INFO] [stdout] test gamete::tests::given_empty_loci_when_new_then_len_is_zero_and_is_empty ... ok [INFO] [stdout] test gen_hybrid_range::tests::given_cross_zero_wide_range_rng_selects_negative_side_returns_negative ... ok [INFO] [stdout] test gen_hybrid_range::tests::given_cross_zero_large_range_when_gen_hybrid_range_then_value_within_bounds ... ok [INFO] [stdout] test gamete::new_random_gamete::tests::given_bounds_when_new_random_gamete_then_loci_are_created_with_correct_value_bounds ... ok [INFO] [stdout] test gen_hybrid_range::tests::given_extreme_cross_zero_range_when_gen_hybrid_range_then_varied_values_within_bounds ... ok [INFO] [stdout] test locus::locus_adjustment::tests::given_valid_params_when_new_then_fields_set ... ok [INFO] [stdout] test gen_hybrid_range::tests::given_wide_positive_range_when_gen_hybrid_range_then_value_within_bounds ... ok [INFO] [stdout] test gen_hybrid_range::tests::given_small_positive_range_when_gen_hybrid_range_then_value_within_bounds ... ok [INFO] [stdout] test gamete::reproduce::tests::reproduce_zero_crossovers_returns_clones ... ok [INFO] [stdout] test gen_hybrid_range::tests::given_cross_zero_small_range_when_gen_hybrid_range_then_value_within_bounds ... ok [INFO] [stdout] test gen_hybrid_range::tests::given_wide_negative_range_when_gen_hybrid_range_then_value_within_bounds ... ok [INFO] [stdout] test gen_hybrid_range::tests::given_cross_zero_wide_range_rng_selects_positive_side_returns_positive ... ok [INFO] [stdout] test gen_hybrid_range::tests::given_low_greater_than_high_when_gen_hybrid_range_then_returns_nan ... ok [INFO] [stdout] test gen_hybrid_range::tests::given_equal_bounds_when_gen_hybrid_range_then_returns_single_bound_value ... ok [INFO] [stdout] test locus::mutate::tests::given_all_mutation_probs_zero_when_mutate_then_locus_is_unchanged ... ok [INFO] [stdout] test locus::mutate::tests::given_final_apply_flag_true_direction_add_when_mutate_then_value_increases ... ok [INFO] [stdout] test locus::mutate::tests::given_final_apply_flag_false_when_mutate_then_value_unchanged_by_application ... ok [INFO] [stdout] test locus::mutate::tests::given_m1_false_apply_flag_false_when_mutate_then_apply_flag_remains_false ... ok [INFO] [stdout] test locus::mutate::tests::given_m1_true_apply_flag_false_when_mutate_then_apply_flag_true ... ok [INFO] [stdout] test locus::mutate::tests::given_m4_true_direction_subtract_when_mutate_then_direction_add_double_flag_inverted ... ok [INFO] [stdout] test locus::mutate::tests::given_m5_double_true_adj_value_near_max_when_mutate_then_adj_value_clamped_at_max ... ok [INFO] [stdout] test locus::mutate::tests::given_m5_halve_true_adj_value_zero_when_mutate_then_adj_value_remains_zero ... ok [INFO] [stdout] test locus::mutate::tests::given_m5_halve_true_adj_value_small_positive_when_mutate_then_adj_value_halved_correctly ... ok [INFO] [stdout] test locus::mutate::tests::given_mutate_unbound_when_apply_flag_false_then_value_unchanged ... ok [INFO] [stdout] test locus::mutate::tests::given_mutate_unbound_when_value_would_exceed_bounds_then_value_is_not_clamped ... ok [INFO] [stdout] test locus::mutate::tests::given_m2_false_apply_flag_true_when_mutate_then_apply_flag_remains_true ... ok [INFO] [stdout] test locus::mutate::tests::given_mutate_unbound_when_value_would_go_below_bounds_then_value_is_not_clamped ... ok [INFO] [stdout] test locus::mutate::tests::given_m3_true_double_flag_true_when_mutate_then_double_flag_false ... ok [INFO] [stdout] test locus::mutate::tests::given_m4_true_direction_add_when_mutate_then_direction_subtract_double_flag_inverted ... ok [INFO] [stdout] test locus::mutate::tests::given_mutate_vs_mutate_unbound_when_value_exceeds_bounds_then_different_results ... ok [INFO] [stdout] test locus::mutate::tests::mutate_no_mutation_returns_same ... ok [INFO] [stdout] test locus::mutate::tests::given_final_apply_flag_true_direction_subtract_when_mutate_then_value_decreases ... ok [INFO] [stdout] test locus::mutate::tests::mutate_with_full_probs_applies_flag_flip_and_other_mutations ... ok [INFO] [stdout] test locus::mutate::tests::given_m2_true_apply_flag_true_when_mutate_then_apply_flag_false ... ok [INFO] [stdout] test locus::mutate::tests::given_m3_true_double_flag_false_when_mutate_then_double_flag_true ... ok [INFO] [stdout] test locus::new_random_locus::tests::given_new_random_locus_when_dh_flag_true_and_doubling_out_of_bounds_then_dh_flag_is_false ... ok [INFO] [stdout] test locus::mutate::tests::given_m5_true_double_flag_false_when_mutate_then_adj_value_halved ... ok [INFO] [stdout] test locus::mutate::tests::given_m5_true_double_flag_true_when_mutate_then_adj_value_doubled ... ok [INFO] [stdout] test locus::new_random_locus::tests::given_new_random_locus_when_dh_flag_true_and_change_in_bounds_then_dh_flag_is_true ... ok [INFO] [stdout] test locus::new_random_locus::tests::given_new_random_locus_when_initial_dh_flag_false_then_final_dh_flag_is_false ... ok [INFO] [stdout] test locus::tests::given_locus_when_adjustment_called_then_returns_correct_adjustment ... ok [INFO] [stdout] test locus::tests::given_locus_when_apply_adjustment_flag_called_then_returns_correct_flag ... ok [INFO] [stdout] test locus::new_random_locus_adjustment::tests::given_rng_and_bounds_when_new_random_then_adjustment_is_sensible ... ok [INFO] [stdout] test locus::new_random_locus_adjustment::tests::given_seeded_rng_when_new_random_then_flags_are_deterministic_for_test ... ok [INFO] [stdout] test locus::tests::given_locus_when_value_called_then_returns_correct_value ... ok [INFO] [stdout] test locus::tests::given_valid_params_when_new_then_locus_fields_are_set_correctly ... ok [INFO] [stdout] test parameters::global_constants::tests::given_valid_inputs_when_new_then_global_constants_is_created ... ok [INFO] [stdout] test locus::new_random_locus::tests::given_rng_and_bounds_when_new_random_then_locus_is_valid ... ok [INFO] [stdout] test parameters::parameter::tests::given_set_unbound_when_value_is_above_max_then_value_is_set_without_clamping ... ok [INFO] [stdout] test parameters::parameter::tests::given_set_unbound_when_value_is_below_min_then_value_is_set_without_clamping ... ok [INFO] [stdout] test parameters::parameter::tests::given_set_unbound_when_value_is_within_bounds_then_value_is_set ... ok [INFO] [stdout] test parameters::parameter::tests::given_set_when_value_is_above_max_then_value_is_clamped_to_max ... ok [INFO] [stdout] test parameters::parameter::tests::given_set_when_value_is_below_min_then_value_is_clamped_to_min ... ok [INFO] [stdout] test parameters::parameter::tests::given_new_when_value_is_valid_then_parameter_is_created_with_default_bounds ... ok [INFO] [stdout] test locus::new_random_locus::tests::given_new_random_locus_when_dh_flag_true_and_halving_out_of_bounds_then_dh_flag_is_false ... ok [INFO] [stdout] test locus::mutate::tests::given_locus_with_bounds_when_mutated_repeatedly_then_value_stays_within_bounds ... ok [INFO] [stdout] test parameters::parameter::tests::given_new_and_set_when_values_are_valid_then_values_are_set_correctly ... ok [INFO] [stdout] test parameters::parameter::tests::given_set_when_value_is_within_bounds_then_value_is_set ... ok [INFO] [stdout] test parameters::parameter::tests::given_with_bounds_when_value_is_above_max_then_value_is_clamped_to_max ... ok [INFO] [stdout] test parameters::parameter::tests::given_with_bounds_when_value_is_below_min_then_value_is_clamped_to_min ... ok [INFO] [stdout] test gamete::tests::given_non_empty_loci_when_new_then_len_and_accessors_work ... ok [INFO] [stdout] test parameters::parameter::tests::given_with_bounds_when_value_is_within_bounds_then_parameter_is_created ... ok [INFO] [stdout] test parameters::parameter_enhancement::tests::given_bounds_when_enhanced_then_system_bounds_are_correct ... ok [INFO] [stdout] test parameters::parameter_enhancement::tests::given_empty_slice_when_enhance_parameters_called_then_returns_only_system_parameter_bounds ... ok [INFO] [stdout] test parameters::parameter_enhancement::tests::given_non_empty_slice_when_enhance_parameters_called_then_prepends_system_parameter_bounds ... ok [INFO] [stdout] test parameters::system_parameters::tests::given_correct_length_slice_when_new_then_all_fields_are_set_correctly ... ok [INFO] [stdout] test parameters::system_parameters::tests::given_default_when_called_then_all_fields_are_zero ... ok [INFO] [stdout] test gamete::reproduce::tests::reproduce_mismatched_lengths_panics - should panic ... ok [INFO] [stdout] test gamete::reproduce::tests::reproduce_too_many_crossovers_panics - should panic ... ok [INFO] [stdout] test locus::locus_adjustment::tests::given_negative_adjustment_when_new_then_panic - should panic ... ok [INFO] [stdout] test phenotype::asexual_reproduction::tests::given_phenotype_when_asexual_reproduction_then_one_offspring_is_created ... ok [INFO] [stdout] test phenotype::calculate_crossovers::tests::test_calculate_crossovers ... ok [INFO] [stdout] test phenotype::compute_expressed::tests::given_equal_checksums_rng_chooses_first_when_compute_expressed_then_returns_first_value ... ok [INFO] [stdout] test parameters::global_constants::tests::given_zero_target_regions_when_new_then_panics - should panic ... ok [INFO] [stdout] test parameters::parameter::tests::given_new_when_value_is_infinite_then_panics - should panic ... ok [INFO] [stdout] test parameters::parameter::tests::given_set_unbound_when_value_is_infinite_then_panics - should panic ... ok [INFO] [stdout] test parameters::parameter::tests::given_new_when_value_is_nan_then_panics - should panic ... ok [INFO] [stdout] test phenotype::compute_expressed::tests::given_equal_checksums_rng_chooses_second_when_compute_expressed_then_returns_second_value ... ok [INFO] [stdout] test parameters::global_constants::tests::given_zero_population_size_when_new_then_panics - should panic ... ok [INFO] [stdout] test parameters::parameter::tests::given_set_unbound_when_value_is_nan_then_panics - should panic ... ok [INFO] [stdout] test parameters::parameter::tests::given_set_when_value_is_nan_then_panics - should panic ... ok [INFO] [stdout] test phenotype::compute_expressed::tests::given_unequal_checksums_rng_favors_larger_checksum_locus_when_compute_expressed_then_returns_its_value ... ok [INFO] [stdout] test parameters::parameter::tests::given_with_bounds_when_max_is_infinite_then_panics - should panic ... ok [INFO] [stdout] test phenotype::compute_expressed::tests::given_unequal_checksums_rng_favors_smaller_checksum_locus_when_compute_expressed_then_returns_its_value ... ok [INFO] [stdout] test phenotype::compute_expressed_hash::tests::given_different_spatial_values_when_compute_expressed_hash_then_returns_different_hashes ... ok [INFO] [stdout] test phenotype::compute_expressed_hash::tests::given_same_system_params_different_spatial_when_compute_expressed_hash_then_returns_different_hashes ... ok [INFO] [stdout] test phenotype::compute_expressed_hash::tests::given_slice_shorter_than_system_params_when_compute_expressed_hash_then_consistent_hash ... ok [INFO] [stdout] test phenotype::compute_expressed::tests::given_mismatched_gamete_lengths_when_compute_expressed_then_panics - should panic ... ok [INFO] [stdout] test phenotype::compute_expressed_hash::tests::given_slice_with_only_system_params_when_compute_expressed_hash_then_consistent_hash ... ok [INFO] [stdout] test phenotype::compute_expressed_hash::tests::given_different_system_params_same_spatial_when_compute_expressed_hash_then_returns_same_hash ... ok [INFO] [stdout] test phenotype::compute_expressed_hash::tests::given_spatial_values_with_nan_when_compute_expressed_hash_then_consistent_for_same_nan_bits ... ok [INFO] [stdout] test phenotype::compute_expressed_hash::tests::given_system_params_and_one_spatial_when_compute_expressed_hash_then_hashes_spatial ... ok [INFO] [stdout] test phenotype::compute_expressed_hash::tests::given_system_params_and_multiple_spatial_when_compute_expressed_hash_then_hashes_spatial_part_only ... ok [INFO] [stdout] test phenotype::new_random_phenotype::tests::given_sufficient_bounds_when_new_random_phenotype_then_phenotype_is_created ... ok [INFO] [stdout] test phenotype::compute_expressed_hash::tests::given_spatial_values_with_zero_and_negative_zero_when_compute_expressed_hash_then_hashes_differ_if_bits_differ ... ok [INFO] [stdout] test phenotype::tests::given_two_gametes_when_new_then_fields_are_set ... ok [INFO] [stdout] test world::dimensions::adjust_limits::tests::given_empty_organisms_when_adjusting_limits_then_returns_false ... ok [INFO] [stdout] test phenotype::new_random_phenotype::tests::given_zero_bounds_when_new_random_phenotype_then_panics - should panic ... ok [INFO] [stdout] test world::dimensions::adjust_limits::tests::given_invalid_dimension_index_when_adjusting_limits_then_returns_false ... ok [INFO] [stdout] test parameters::parameter::tests::given_set_when_value_is_infinite_then_panics - should panic ... ok [INFO] [stdout] test world::dimensions::adjust_limits::tests::given_negative_values_when_adjusting_limits_then_handles_correctly ... ok [INFO] [stdout] test world::dimensions::adjust_limits::tests::given_organisms_with_wide_spread_when_adjusting_limits_then_range_expanded_and_returns_false ... ok [INFO] [stdout] test world::dimensions::adjust_limits::tests::given_organisms_with_narrow_spread_when_adjusting_limits_then_range_shrunk_and_returns_true ... ok [INFO] [stdout] test world::dimensions::adjust_limits::tests::given_single_organism_when_adjusting_limits_then_range_expanded_and_returns_false ... ok [INFO] [stdout] test parameters::parameter::tests::given_with_bounds_when_min_is_nan_then_panics - should panic ... ok [INFO] [stdout] test world::dimensions::calculate_dimensions_key::tests::given_empty_inputs_when_calculate_dimensions_key_is_called_then_success_with_empty_vec_is_returned ... ok [INFO] [stdout] test parameters::parameter::tests::given_with_bounds_when_value_is_nan_then_panics - should panic ... ok [INFO] [stdout] test world::dimensions::calculate_dimensions_key::tests::given_first_value_out_of_bounds_when_calculate_dimensions_key_is_called_then_failure_is_returned ... ok [INFO] [stdout] test phenotype::sexual_reproduction::tests::given_parents_with_zero_m_values_when_reproduce_then_offspring_inherit_parental_gametes ... ok [INFO] [stdout] test world::dimensions::calculate_dimensions_key::tests::given_valid_inputs_when_calculate_dimensions_key_is_called_then_success_is_returned ... ok [INFO] [stdout] test world::dimensions::calculate_dimensions_key::tests::given_values_on_boundaries_when_calculate_dimensions_key_is_called_then_success_is_returned ... ok [INFO] [stdout] test world::dimensions::dimension::expand_bounds::tests::given_dimension_with_zero_width_when_expand_bounds_then_range_expands_by_fixed_amount ... ok [INFO] [stdout] test world::dimensions::dimension::expand_bounds::tests::given_dimension_with_non_zero_width_when_expand_bounds_then_range_expands_by_50_percent ... ok [INFO] [stdout] test world::dimensions::dimension::get_interval::tests::test_get_interval_at_boundaries ... ok [INFO] [stdout] test world::dimensions::dimension::get_interval::tests::test_get_interval_basic_and_boundaries ... ok [INFO] [stdout] test phenotype::compute_expressed::tests::given_multi_loci_gametes_when_compute_expressed_then_returns_correct_length_vector ... ok [INFO] [stdout] test world::dimensions::dimension::get_interval::tests::test_get_interval_negative_range ... ok [INFO] [stdout] test phenotype::compute_expressed_hash::tests::given_empty_slice_when_compute_expressed_hash_then_returns_consistent_hash ... ok [INFO] [stdout] test world::dimensions::dimension::get_interval::tests::test_get_interval_out_of_bounds ... ok [INFO] [stdout] test world::dimensions::dimension::get_interval::tests::test_get_interval_single_point_range ... ok [INFO] [stdout] test world::dimensions::dimension::get_interval::tests::test_get_interval_floating_point_precision ... ok [INFO] [stdout] test world::dimensions::dimension::get_interval::tests::test_get_interval_mixed_range ... ok [INFO] [stdout] test world::dimensions::dimension::get_interval::tests::test_get_interval_zero_doublings ... ok [INFO] [stdout] test world::dimensions::dimension::interval_bounds::tests::given_basic_divisions_when_interval_bounds_then_correct_bounds_for_each_interval ... ok [INFO] [stdout] test world::dimensions::dimension::interval_bounds::tests::given_last_interval_when_interval_bounds_then_end_is_exact_range_end ... ok [INFO] [stdout] test world::dimensions::dimension::interval_bounds::tests::given_out_of_range_index_when_interval_bounds_then_none ... ok [INFO] [stdout] test world::dimensions::dimension::interval_bounds::tests::given_single_point_range_when_interval_bounds_then_single_bounds_returned ... ok [INFO] [stdout] test world::dimensions::dimension::interval_bounds::tests::given_zero_doublings_when_interval_bounds_then_full_range_returned ... ok [INFO] [stdout] test world::dimensions::dimension::new::tests::given_valid_input_when_new_dimension_then_succeeds ... ok [INFO] [stdout] test world::dimensions::dimension::new::tests::given_zero_divisions_when_new_dimension_then_succeeds ... ok [INFO] [stdout] test world::dimensions::divide_dimension::tests_divide_next_dimension::given_non_zero_doublings_when_divide_next_dimension_then_increments ... ok [INFO] [stdout] test world::dimensions::divide_dimension::tests_divide_next_dimension::given_precision_at_limit_when_divide_next_dimension_then_returns_false ... ok [INFO] [stdout] test world::dimensions::divide_dimension::tests_divide_next_dimension::given_sequence_when_divide_next_dimension_then_doublings_increment_by_one ... ok [INFO] [stdout] test world::dimensions::divide_dimension::tests_divide_next_dimension::given_zero_doublings_when_divide_next_dimension_then_becomes_one ... ok [INFO] [stdout] test world::dimensions::new::tests::given_bounds_with_equal_start_end_when_new_then_dimension_created ... ok [INFO] [stdout] test world::dimensions::new::tests::given_bounds_with_negative_values_when_new_then_dimensions_created_correctly ... ok [INFO] [stdout] test world::dimensions::new::tests::given_empty_parameter_bounds_when_new_then_no_dimensions_are_created ... ok [INFO] [stdout] test parameters::system_parameters::tests::given_empty_slice_when_new_then_panics - should panic ... ok [INFO] [stdout] test parameters::system_parameters::tests::given_longer_slice_when_new_then_panics - should panic ... ok [INFO] [stdout] test parameters::system_parameters::tests::given_shorter_slice_when_new_then_panics - should panic ... ok [INFO] [stdout] test world::dimensions::adjust_limits::tests::given_infinite_original_range_when_adjusting_limits_then_handles_sensibly ... ok [INFO] [stdout] test phenotype::new_random_phenotype::tests::given_insufficient_bounds_when_new_random_phenotype_then_panics - should panic ... ok [INFO] [stdout] test world::dimensions::new::tests::given_multiple_bounds_when_new_then_all_dimensions_created_with_zero_doublings ... ok [INFO] [stdout] test phenotype::sexual_reproduction::tests::given_parents_with_mismatched_gamete_lengths_when_reproduce_then_panics - should panic ... ok [INFO] [stdout] test world::dimensions::calculate_dimensions_key::tests::given_value_out_of_bounds_when_calculate_dimensions_key_is_called_then_failure_is_returned ... ok [INFO] [stdout] test world::dimensions::new::tests::given_single_bound_when_new_then_one_dimension_created_with_zero_doublings ... ok [INFO] [stdout] test parameters::parameter::tests::given_with_bounds_when_min_greater_than_max_then_panics - should panic ... ok [INFO] [stdout] test phenotype::sexual_reproduction::tests::given_parent_with_zero_length_gametes_when_reproduce_then_panics - should panic ... ok [INFO] [stdout] test world::get_best_score::tests::given_world_with_scored_organisms_when_get_best_score_then_returns_lowest ... ok [INFO] [stdout] test world::get_best_organism::tests::given_valid_data_when_get_best_then_returns_lowest_score ... ok [INFO] [stdout] test world::get_state::tests::given_world_when_get_state_then_returns_valid_json ... ok [INFO] [stdout] test world::organisms::best::tests::given_multiple_scored_organisms_when_best_then_returns_lowest ... ok [INFO] [stdout] test world::organisms::best::tests::given_no_scores_when_best_then_returns_none ... ok [INFO] [stdout] test world::organisms::find_spacial_limits::tests::given_empty_organisms_when_find_spacial_limits_then_returns_empty_vec ... ok [INFO] [stdout] test world::organisms::find_spacial_limits::tests::given_one_organism_when_find_spacial_limits_then_returns_ranges_from_that_organism ... ok [INFO] [stdout] test world::organisms::find_spacial_limits::tests::given_multiple_organisms_when_find_spacial_limits_then_returns_correct_min_max_ranges ... ok [INFO] [stdout] test world::dimensions::dimension::new::tests::given_max_less_than_min_when_new_dimension_then_panics - should panic ... ok [INFO] [stdout] test world::organisms::generate_random_phenotypes::tests::given_bounds_with_only_system_parameters_when_called_then_succeeds ... ok [INFO] [stdout] test world::organisms::generate_random_phenotypes::tests::given_valid_inputs_when_called_then_returns_correct_number_of_phenotypes ... ok [INFO] [stdout] test world::organisms::increment_ages::tests::given_organism_exceeding_max_age_when_increment_ages_then_marked_dead ... ok [INFO] [stdout] test world::get_state_for_web::tests::given_2d_world_when_get_state_for_web_then_returns_valid_json_in_pdd_format ... ok [INFO] [stdout] test world::organisms::organism::increment_age::tests::given_organism_when_increment_age_then_age_increments ... ok [INFO] [stdout] test world::organisms::organism::run::tests::given_empty_known_outputs_when_run_then_score_is_first_output_plus_e0 ... ok [INFO] [stdout] test world::organisms::generate_random_phenotypes::tests::given_zero_population_size_when_called_then_returns_empty_vector ... ok [INFO] [stdout] test world::organisms::organism::run::tests::given_valid_inputs_when_run_is_called_then_score_is_updated_correctly ... ok [INFO] [stdout] test world::organisms::organism::increment_age::tests::given_organism_when_age_exceeds_max_then_mark_dead ... ok [INFO] [stdout] test world::organisms::increment_ages::tests::given_multiple_organisms_when_increment_ages_then_all_ages_increment ... ok [INFO] [stdout] test world::get_best_score::tests::given_world_with_no_scored_organisms_when_get_best_score_then_returns_max ... ok [INFO] [stdout] test world::organisms::organism::tests::given_new_organism_with_age_when_age_is_checked_then_it_is_correct ... ok [INFO] [stdout] test world::organisms::new::tests::given_valid_inputs_when_new_called_then_creates_organisms_correctly ... ok [INFO] [stdout] test world::organisms::organism::tests::given_organism_when_mark_dead_then_is_dead_returns_true ... ok [INFO] [stdout] test world::organisms::organism::update_region_key::tests::given_dimension_changed_some_but_region_key_none_then_full_recompute_occurs ... ok [INFO] [stdout] test world::organisms::organism::update_region_key::tests::given_out_of_bounds_value_when_dimension_changed_none_then_failure_and_key_none ... ok [INFO] [stdout] test world::organisms::organism::update_region_key::tests::given_region_key_exists_when_no_dimension_changed_then_no_op_success ... ok [INFO] [stdout] test world::organisms::organism::update_region_key::tests::given_single_dimension_in_bounds_when_region_key_exists_then_success_and_key_updated ... ok [INFO] [stdout] test world::organisms::organism::update_region_key::tests::given_single_dimension_out_of_bounds_when_region_key_exists_then_failure_and_key_cleared ... ok [INFO] [stdout] test world::organisms::organism::update_region_key::tests::given_valid_inputs_when_dimension_changed_none_then_success_and_key_set ... ok [INFO] [stdout] test world::organisms::run_all::tests::given_multiple_organisms_when_run_all_then_every_score_is_set ... ok [INFO] [stdout] test world::organisms::update_all_region_keys::tests::given_no_organisms_when_update_all_region_keys_then_ok ... ok [INFO] [stdout] test world::organisms::update_all_region_keys::tests::given_organism_with_cached_key_when_update_all_with_dimension_changed_out_of_bounds_then_failure ... ok [INFO] [stdout] test world::organisms::update_all_region_keys::tests::given_one_organism_fails_update_when_update_all_region_keys_then_err ... ok [INFO] [stdout] test world::organisms::organism::run::tests::given_perfect_match_when_run_is_called_then_score_is_max ... ok [INFO] [stdout] test world::dimensions::divide_dimension::tests_divide_next_dimension::given_empty_dimensions_when_divide_next_dimension_then_panics - should panic ... ok [INFO] [stdout] test world::organisms::update_all_region_keys::tests::given_organisms_with_cached_keys_when_update_all_with_dimension_changed_then_fast_path_used ... ok [INFO] [stdout] test world::organisms::update_all_region_keys::tests::given_organisms_all_update_successfully_when_update_all_region_keys_then_ok ... ok [INFO] [stdout] test world::dimensions::divide_dimension::tests_divide_next_dimension::given_out_of_bounds_index_when_divide_next_dimension_then_panics - should panic ... ok [INFO] [stdout] test world::regions::adjust_regions::tests::given_at_precision_limit_when_adjust_regions_then_tries_adjust_limits ... ok [INFO] [stdout] test world::regions::add_organisms::tests::given_multiple_organisms_different_keys_when_add_phenotypes_then_regions_created_correctly ... ok [INFO] [stdout] test world::regions::add_organisms::tests::given_multiple_organisms_same_key_when_add_phenotypes_then_region_has_all_orgtypes ... ok [INFO] [stdout] test world::regions::adjust_regions::tests::given_adjust_limits_succeeds_when_division_fails_then_returns_dimension_expanded ... ok [INFO] [stdout] test world::regions::add_organisms::tests::given_region_with_existing_orgtype_when_add_more_orgtypes_to_same_key_then_all_are_present ... ok [INFO] [stdout] test world::regions::add_organisms::tests::given_one_organism_with_region_key_when_add_phenotypes_then_region_created_with_orgtype ... ok [INFO] [stdout] test world::regions::adjust_regions::tests::given_no_variance_when_handle_successful_update_then_returns_at_resolution_limit ... ok [INFO] [stdout] test world::regions::adjust_regions::tests::given_precision_limit_and_adjust_limits_fails_when_adjust_regions_then_returns_at_resolution_limit ... ok [INFO] [stdout] test world::regions::calculate_dimension_stats::tests::given_diverse_values_when_calculate_dimension_stats_then_returns_correct_stats ... ok [INFO] [stdout] test world::regions::calculate_dimension_stats::tests::given_no_diversity_when_calculate_dimension_stats_then_returns_zero_std_dev ... ok [INFO] [stdout] test world::regions::calculate_dimension_stats::tests::given_single_organism_when_calculate_dimension_stats_then_returns_zero_std_dev ... ok [INFO] [stdout] test world::regions::calculate_dimension_stats::tests::given_values_outside_relative_tolerance_when_calculate_dimension_stats_then_treats_as_different ... ok [INFO] [stdout] test world::regions::add_organisms::tests::given_empty_organisms_when_add_phenotypes_then_regions_unchanged ... ok [INFO] [stdout] test world::regions::calculate_dimension_stats::tests::given_values_within_relative_tolerance_when_calculate_dimension_stats_then_treats_as_same ... ok [INFO] [stdout] test world::regions::adjust_regions::tests::given_target_regions_already_reached_when_handle_successful_update_then_returns_expansion_not_necessary ... ok [INFO] [stdout] test world::regions::adjust_regions::tests::given_variance_when_handle_successful_update_then_returns_dimension_index ... ok [INFO] [stdout] test world::regions::adjust_regions::tests::given_zero_dimensions_when_handle_successful_update_then_returns_at_resolution_limit ... ok [INFO] [stdout] test world::dimensions::new::tests::given_bounds_with_invalid_range_when_new_then_dimension_new_panics - should panic ... ok [INFO] [stdout] test world::regions::calculate_dimension_stats::tests::given_empty_values_when_calculate_dimension_stats_then_returns_empty_stats ... ok [INFO] [stdout] test world::regions::count_unique_values_with_tolerance::tests::given_close_values_when_count_unique_then_treats_as_same ... ok [INFO] [stdout] test world::regions::count_unique_values_with_tolerance::tests::given_different_values_when_count_unique_then_returns_correct_count ... ok [INFO] [stdout] test world::regions::count_unique_values_with_tolerance::tests::given_distant_values_when_count_unique_then_treats_as_different ... ok [INFO] [stdout] test world::regions::count_unique_values_with_tolerance::tests::given_empty_values_when_count_unique_then_returns_zero ... ok [INFO] [stdout] test world::regions::count_unique_values_with_tolerance::tests::given_identical_values_when_count_unique_then_returns_one ... ok [INFO] [stdout] test world::regions::count_unique_values_with_tolerance::tests::given_mixed_magnitudes_when_count_unique_then_handles_correctly ... ok [INFO] [stdout] test world::regions::find_most_diverse_index::tests::given_no_diversity_when_find_most_diverse_index_then_returns_none ... ok [INFO] [stdout] test world::regions::find_most_diverse_index::tests::given_tie_in_uniqueness_when_find_most_diverse_index_then_std_dev_breaks_tie ... ok [INFO] [stdout] test world::regions::get_most_common_key::tests::given_all_regions_are_empty_when_get_most_common_key_then_returns_a_key ... ok [INFO] [stdout] test world::regions::get_most_common_key::tests::given_no_regions_when_get_most_common_key_then_returns_none ... ok [INFO] [stdout] test world::regions::get_most_common_key::tests::given_one_region_when_get_most_common_key_then_returns_its_key ... ok [INFO] [stdout] test world::regions::get_most_diverse_dimension::tests::given_no_diversity_when_get_most_diverse_dimension_then_returns_none ... ok [INFO] [stdout] test world::regions::get_most_diverse_dimension::tests::given_non_existent_key_when_get_most_diverse_dimension_then_returns_none ... ok [INFO] [stdout] test world::regions::find_most_diverse_index::tests::given_winner_has_one_unique_value_when_find_most_diverse_index_then_returns_none ... ok [INFO] [stdout] test world::regions::get_most_diverse_dimension::tests::given_region_with_one_organism_when_get_most_diverse_dimension_then_returns_none ... ok [INFO] [stdout] test world::regions::count_unique_values_with_tolerance::tests::given_single_value_when_count_unique_then_returns_one ... ok [INFO] [stdout] test world::regions::find_most_diverse_index::tests::given_clear_winner_when_find_most_diverse_index_then_returns_correct_index ... ok [INFO] [stdout] test world::regions::get_most_common_key::tests::given_multiple_regions_when_get_most_common_key_then_returns_correct_key ... ok [INFO] [stdout] test world::regions::get_most_diverse_dimension::tests::given_tie_in_uniqueness_when_get_most_diverse_dimension_then_std_dev_breaks_tie ... ok [INFO] [stdout] test world::regions::prune_empty_regions::tests::given_no_regions_when_prune_empty_regions_then_no_change_and_no_panic ... ok [INFO] [stdout] test world::regions::prune_empty_regions::tests::given_regions_with_all_empty_when_prune_empty_regions_then_all_regions_are_removed ... ok [INFO] [stdout] test world::regions::prune_empty_regions::tests::given_regions_with_all_populated_when_prune_empty_regions_then_no_regions_are_removed ... ok [INFO] [stdout] test world::regions::prune_empty_regions::tests::given_regions_with_some_empty_when_prune_empty_regions_then_empty_regions_are_removed ... ok [INFO] [stdout] test world::regions::region::execute_reproduction_passes::tests::given_max_passes_limit_when_execute_then_stops_at_limit ... ok [INFO] [stdout] test world::regions::get_most_common_key::tests::given_regions_with_a_tie_when_get_most_common_key_then_returns_one_of_them ... ok [INFO] [stdout] test world::dimensions::calculate_dimensions_key::tests::given_mismatched_lengths_when_calculate_dimensions_key_is_called_then_it_panics - should panic ... ok [INFO] [stdout] test world::regions::region::execute_reproduction_passes::tests::given_two_organisms_single_pass_when_execute_then_two_offspring ... ok [INFO] [stdout] test world::get_best_organism::tests::given_empty_data_when_get_best_then_panics - should panic ... ok [INFO] [stdout] test world::get_state_for_web::tests::given_non_2d_world_when_get_state_for_web_then_panics - should panic ... ok [INFO] [stdout] test world::regions::get_most_diverse_dimension::tests::given_organisms_with_one_diverse_dimension_when_get_most_diverse_dimension_then_returns_correct_index ... ok [INFO] [stdout] test world::regions::find_most_diverse_index::tests::given_empty_stats_when_find_most_diverse_index_then_returns_none ... ok [INFO] [stdout] test world::regions::region::execute_reproduction_passes::tests::given_single_organism_multiple_passes_when_execute_then_multiple_offspring ... ok [INFO] [stdout] test world::regions::region::execute_reproduction_passes::tests::given_offspring_this_pass_limit_when_execute_then_respects_limit ... ok [INFO] [stdout] test world::organisms::organism::run::tests::given_mismatched_output_lengths_when_run_is_called_then_it_panics - should panic ... ok [INFO] [stdout] test world::regions::add_organisms::tests::given_organisms_with_no_region_keys_when_add_organisms_then_panics - should panic ... ok [INFO] [stdout] test world::organisms::organism::run::tests::given_empty_known_outputs_and_no_outputs_then_panics - should panic ... ok [INFO] [stdout] test world::regions::region::execute_reproduction_passes::tests::given_two_organisms_multiple_passes_when_execute_then_multiple_offspring ... ok [INFO] [stdout] test world::regions::region::execute_reproduction_passes::tests::given_three_organisms_odd_number_when_execute_then_handles_asexual_correctly ... ok [INFO] [stdout] test world::regions::region::execute_reproduction_passes::tests::given_single_organism_single_pass_when_execute_then_one_offspring ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_empty_region_when_reproduce_then_returns_empty_vec ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_carrying_capacity_exceeded_when_reproduce_then_single_pass_only ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_no_carrying_capacity_when_reproduce_then_single_pass_only ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_even_r_when_reproduce_then_returns_r_offspring ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_odd_r_when_reproduce_then_returns_r_offspring ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_r_exceeds_parents_when_reproduce_then_all_parents_used ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_one_parent_when_reproduce_then_one_offspring_asexual ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_odd_number_organisms_when_reproduce_multiple_passes_then_handles_asexual_correctly ... ok [INFO] [stdout] test world::regions::region::execute_reproduction_passes::tests::given_zero_number_to_reproduce_when_execute_then_empty_result ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_reproduction_factor_limit_when_reproduce_then_stops_at_factor_limit ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_equal_score_different_age_then_older_ranks_higher ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_sufficient_parents_when_reproduce_single_pass_then_no_multiple_passes ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_single_organism_when_reproduce_multiple_passes_then_produces_multiple_offspring ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_zero_r_when_reproduce_then_returns_empty_vec ... ok [INFO] [stdout] test world::regions::repopulate::tests::given_regions_with_deficit_when_repopulate_then_offspring_collected ... ok [INFO] [stdout] test world::regions::update::tests::given_no_organisms_when_update_then_no_regions ... ok [INFO] [stdout] test world::regions::update::tests::given_multiple_distant_organisms_when_update_then_space_divides ... ok [INFO] [stdout] test world::regions::update::tests::given_no_organisms_when_update_then_returns_true ... ok [INFO] [stdout] test world::regions::update::tests::given_no_variance_when_update_then_returns_true_at_resolution_limit ... ok [INFO] [stdout] test world::regions::update::tests::given_one_organism_fits_bounds_when_update_then_single_region_no_extra_division ... ok [INFO] [stdout] test world::regions::update::tests::given_organism_out_of_bounds_when_update_then_dimension_expands ... ok [INFO] [stdout] test world::regions::update::tests::given_small_target_when_update_then_returns_true_at_resolution_limit ... ok [INFO] [stdout] test world::regions::region::reproduce::tests::given_two_organisms_when_reproduce_multiple_passes_then_produces_multiple_offspring ... ok [INFO] [stdout] test world::regions::update::tests::given_target_reached_when_update_then_returns_false_expansion_not_necessary ... ok [INFO] [stdout] test world::regions::update_all_region_min_scores::tests::given_multiple_organisms_same_region_when_update_min_scores_then_min_positive_score_set ... ok [INFO] [stdout] test world::regions::update_all_region_min_scores::tests::given_new_score_is_higher_when_update_min_scores_then_score_is_unchanged ... ok [INFO] [stdout] test world::regions::update_all_region_min_scores::tests::given_new_score_is_lower_when_update_min_scores_then_score_is_updated ... ok [INFO] [stdout] test world::regions::update_all_region_min_scores::tests::given_no_organisms_when_update_min_scores_then_scores_are_unchanged ... ok [INFO] [stdout] test world::regions::update_all_region_min_scores::tests::given_organisms_different_regions_when_update_min_scores_then_scores_set_correctly ... ok [INFO] [stdout] test world::regions::update_all_region_min_scores::tests::given_organisms_no_scores_or_no_keys_when_update_min_scores_then_scores_are_unchanged ... ok [INFO] [stdout] test world::regions::update_carrying_capacities::test_update_carrying_capacities::given_multiple_regions_with_min_scores_when_update_capacities_then_capacities_proportional ... ok [INFO] [stdout] test world::regions::update_all_region_min_scores::tests::given_organisms_with_zero_or_negative_scores_when_update_min_scores_then_scores_are_unchanged ... ok [INFO] [stdout] test world::regions::update_all_region_min_scores::tests::given_single_organism_with_positive_score_in_empty_region_when_update_min_scores_then_score_set ... ok [INFO] [stdout] test world::regions::update_carrying_capacities::test_update_carrying_capacities::given_no_regions_with_min_scores_when_update_capacities_then_all_capacities_zero ... ok [INFO] [stdout] test world::regions::update_carrying_capacities::test_update_carrying_capacities::given_one_region_with_positive_min_score_when_update_capacities_then_capacity_is_population_size ... ok [INFO] [stdout] test world::regions::update_carrying_capacities::test_update_carrying_capacities::given_region_with_no_min_score_when_update_capacities_then_its_capacity_is_zero ... ok [INFO] [stdout] test world::regions::update_carrying_capacities::test_update_carrying_capacities::given_sum_inverse_fitness_zero_when_update_capacities_then_all_capacities_zero ... ok [INFO] [stdout] test world::remove_dead::tests::given_dead_organism_in_region_when_region_retain_live_then_removed ... ok [INFO] [stdout] test world::remove_dead::tests::given_dead_organism_when_organisms_retain_live_then_removed ... ok [INFO] [stdout] test world::remove_dead::tests::given_some_dead_organisms_when_remove_dead_then_only_live_remain ... ok [INFO] [stdout] test world::run_epoch::tests::given_empty_training_data_when_run_epoch_then_panic - should panic ... ok [INFO] [stdout] test world::run_epoch::tests::given_training_data_when_run_epoch_then_scores_are_updated ... ok [INFO] [stdout] test world::run_epoch::tests::given_valid_training_data_when_run_epoch_then_no_panic ... ok [INFO] [stdout] test world::tests::given_zero_population_size_when_new_is_called_then_it_panics - should panic ... ok [INFO] [stdout] test world::validate_training_sets::tests::given_mismatched_lengths_when_validate_then_panic - should panic ... ok [INFO] [stdout] test world::validate_training_sets::tests::given_valid_sets_when_validate_then_no_panic ... ok [INFO] [stdout] test world::validate_training_sets::tests::given_row_length_mismatch_when_validate_then_panic - should panic ... ok [INFO] [stdout] test world::training_run::tests::given_perfect_match_when_training_run_then_resolution_limit_not_reached ... ok [INFO] [stdout] test world::training_run::tests::given_valid_inputs_when_training_run_then_scores_positive_and_ages_increment ... ok [INFO] [stdout] test world::validate_training_sets::tests::given_empty_inputs_when_validate_then_panic - should panic ... ok [INFO] [stdout] test world::remove_dead::tests::given_all_dead_organisms_when_remove_dead_then_world_is_empty ... ok [INFO] [stdout] test world::remove_dead::tests::given_no_dead_organisms_when_remove_dead_then_world_unchanged ... ok [INFO] [stdout] test world::tests::given_valid_inputs_when_new_is_called_then_world_is_initialized_correctly ... ok [INFO] [stderr] Running tests/simple_test.rs (/opt/rustwide/target/debug/deps/simple_test-7f57cc4ba575675e) [INFO] [stdout] test world::tests::given_zero_target_regions_when_new_is_called_then_it_panics - should panic ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 302 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test execute ... ignored [INFO] [stderr] Running tests/two_d_simple_test.rs (/opt/rustwide/target/debug/deps/two_d_simple_test-088dd8f7b44d0c32) [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test execute ... ignored [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/hill_descent_server-2a6c407daa14618f) [INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests hill_descent_lib [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" "8637e3a6ee7e12fa95c7132a6e52f245491c32accc4fda82d0128b5596f46f61", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8637e3a6ee7e12fa95c7132a6e52f245491c32accc4fda82d0128b5596f46f61", kill_on_drop: false }` [INFO] [stdout] 8637e3a6ee7e12fa95c7132a6e52f245491c32accc4fda82d0128b5596f46f61