[INFO] fetching crate solverforge-solver 0.13.0...
[INFO] testing solverforge-solver-0.13.0 against master#ec6f9a5b4413f74386267ef8efc93712c2ce6db6 for pr-155739-1
[INFO] extracting crate solverforge-solver 0.13.0 into /workspace/builds/worker-3-tc1/source
[INFO] started tweaking crates.io crate solverforge-solver 0.13.0
[INFO] finished tweaking crates.io crate solverforge-solver 0.13.0
[INFO] tweaked toml for crates.io crate solverforge-solver 0.13.0 written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate solverforge-solver 0.13.0 on toolchain ec6f9a5b4413f74386267ef8efc93712c2ce6db6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate solverforge-solver 0.13.0 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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "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 pin-project-lite v0.2.17
[INFO] [stderr]   Downloaded once_cell v1.21.4
[INFO] [stderr]   Downloaded bitflags v2.11.1
[INFO] [stderr]   Downloaded tracing-attributes v0.1.31
[INFO] [stderr]   Downloaded wit-bindgen-rust-macro v0.51.0
[INFO] [stderr]   Downloaded errno v0.3.14
[INFO] [stderr]   Downloaded leb128fmt v0.1.0
[INFO] [stderr]   Downloaded cpufeatures v0.3.0
[INFO] [stderr]   Downloaded id-arena v2.3.0
[INFO] [stderr]   Downloaded unicode-xid v0.2.6
[INFO] [stderr]   Downloaded tokio-macros v2.7.0
[INFO] [stderr]   Downloaded rand_chacha v0.10.0
[INFO] [stderr]   Downloaded solverforge-config v0.13.0
[INFO] [stderr]   Downloaded either v1.15.0
[INFO] [stderr]   Downloaded tracing-core v0.1.36
[INFO] [stderr]   Downloaded redox_syscall v0.5.18
[INFO] [stderr]   Downloaded lock_api v0.4.14
[INFO] [stderr]   Downloaded rand_core v0.10.1
[INFO] [stderr]   Downloaded wasm-metadata v0.244.0
[INFO] [stderr]   Downloaded anyhow v1.0.102
[INFO] [stderr]   Downloaded wit-bindgen-core v0.51.0
[INFO] [stderr]   Downloaded parking_lot_core v0.9.12
[INFO] [stderr]   Downloaded signal-hook-registry v1.4.8
[INFO] [stderr]   Downloaded solverforge-core v0.13.0
[INFO] [stderr]   Downloaded wit-bindgen-rust v0.51.0
[INFO] [stderr]   Downloaded socket2 v0.6.3
[INFO] [stderr]   Downloaded parking_lot v0.12.5
[INFO] [stderr]   Downloaded ryu v1.0.23
[INFO] [stderr]   Downloaded serde_yaml v0.9.34+deprecated
[INFO] [stderr]   Downloaded chacha20 v0.10.0
[INFO] [stderr]   Downloaded unsafe-libyaml v0.2.11
[INFO] [stderr]   Downloaded getrandom v0.4.2
[INFO] [stderr]   Downloaded semver v1.0.28
[INFO] [stderr]   Downloaded prettyplease v0.2.37
[INFO] [stderr]   Downloaded r-efi v6.0.0
[INFO] [stderr]   Downloaded bytes v1.11.1
[INFO] [stderr]   Downloaded wit-bindgen v0.57.1
[INFO] [stderr]   Downloaded rayon-core v1.13.0
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.48
[INFO] [stderr]   Downloaded wasm-encoder v0.244.0
[INFO] [stderr]   Downloaded wit-bindgen v0.51.0
[INFO] [stderr]   Downloaded mio v1.2.0
[INFO] [stderr]   Downloaded solverforge-scoring v0.13.0
[INFO] [stderr]   Downloaded rand v0.10.1
[INFO] [stderr]   Downloaded wasip3 v0.4.0+wasi-0.3.0-rc-2026-01-06
[INFO] [stderr]   Downloaded hashbrown v0.15.5
[INFO] [stderr]   Downloaded wasip2 v1.0.3+wasi-0.2.9
[INFO] [stderr]   Downloaded wit-parser v0.244.0
[INFO] [stderr]   Downloaded rayon v1.12.0
[INFO] [stderr]   Downloaded zerocopy v0.8.48
[INFO] [stderr]   Downloaded wit-component v0.244.0
[INFO] [stderr]   Downloaded wasmparser v0.244.0
[INFO] [stderr]   Downloaded tracing v0.1.44
[INFO] [stderr]   Downloaded libc v0.2.186
[INFO] [stderr]   Downloaded tokio v1.52.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5b4156e6a1397d2bc96e2d7df75efaf4d8ca28e603d3090a41ed8a65573bf0fc
[INFO] running `Command { std: "docker" "start" "-a" "5b4156e6a1397d2bc96e2d7df75efaf4d8ca28e603d3090a41ed8a65573bf0fc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5b4156e6a1397d2bc96e2d7df75efaf4d8ca28e603d3090a41ed8a65573bf0fc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5b4156e6a1397d2bc96e2d7df75efaf4d8ca28e603d3090a41ed8a65573bf0fc", kill_on_drop: false }`
[INFO] [stdout] 5b4156e6a1397d2bc96e2d7df75efaf4d8ca28e603d3090a41ed8a65573bf0fc
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c4b5bf353f007b5a93a534f530061f32b1795c512cbdadf8a91e7103753e0864
[INFO] running `Command { std: "docker" "start" "-a" "c4b5bf353f007b5a93a534f530061f32b1795c512cbdadf8a91e7103753e0864", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling rand_core v0.10.1
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling winnow v1.0.2
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling rand v0.10.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.10.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling solverforge-core v0.13.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling solverforge-scoring v0.13.0
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling solverforge-config v0.13.0
[INFO] [stderr]    Compiling solverforge-solver v0.13.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: enum `ListSelectorCursor` is never used
[INFO] [stdout]   --> src/builder/list_selector/builder_impl/types.rs:24:10
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum ListSelectorCursor<'a, S, V, DM, IDM>
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ScalarSelectorCursor` is never used
[INFO] [stdout]   --> src/builder/scalar_selector/dispatch.rs:92:10
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub enum ScalarSelectorCursor<'a, S>
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 34.47s
[INFO] running `Command { std: "docker" "inspect" "c4b5bf353f007b5a93a534f530061f32b1795c512cbdadf8a91e7103753e0864", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c4b5bf353f007b5a93a534f530061f32b1795c512cbdadf8a91e7103753e0864", kill_on_drop: false }`
[INFO] [stdout] c4b5bf353f007b5a93a534f530061f32b1795c512cbdadf8a91e7103753e0864
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cc66fb376f233f95a03d460395cc102debd99e614fe0ff6a1ab43ad19e0e1557
[INFO] running `Command { std: "docker" "start" "-a" "cc66fb376f233f95a03d460395cc102debd99e614fe0ff6a1ab43ad19e0e1557", kill_on_drop: false }`
[INFO] [stdout] warning: enum `ListSelectorCursor` is never used
[INFO] [stdout]   --> src/builder/list_selector/builder_impl/types.rs:24:10
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum ListSelectorCursor<'a, S, V, DM, IDM>
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ScalarSelectorCursor` is never used
[INFO] [stdout]   --> src/builder/scalar_selector/dispatch.rs:92:10
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub enum ScalarSelectorCursor<'a, S>
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling solverforge-solver v0.13.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 47.55s
[INFO] running `Command { std: "docker" "inspect" "cc66fb376f233f95a03d460395cc102debd99e614fe0ff6a1ab43ad19e0e1557", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cc66fb376f233f95a03d460395cc102debd99e614fe0ff6a1ab43ad19e0e1557", kill_on_drop: false }`
[INFO] [stdout] cc66fb376f233f95a03d460395cc102debd99e614fe0ff6a1ab43ad19e0e1557
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] fd0cd6f7b8a9e1c058508ce5d15eaa2f2d8b7c7d9fc30b6593689658f4113593
[INFO] running `Command { std: "docker" "start" "-a" "fd0cd6f7b8a9e1c058508ce5d15eaa2f2d8b7c7d9fc30b6593689658f4113593", kill_on_drop: false }`
[INFO] [stderr] warning: enum `ListSelectorCursor` is never used
[INFO] [stderr]   --> src/builder/list_selector/builder_impl/types.rs:24:10
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub enum ListSelectorCursor<'a, S, V, DM, IDM>
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: enum `ScalarSelectorCursor` is never used
[INFO] [stderr]   --> src/builder/scalar_selector/dispatch.rs:92:10
[INFO] [stderr]    |
[INFO] [stderr] 92 | pub enum ScalarSelectorCursor<'a, S>
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `solverforge-solver` (lib) generated 2 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.14s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/solverforge_solver-75732341f109e1f7)
[INFO] [stdout] 
[INFO] [stdout] running 673 tests
[INFO] [stdout] test builder::acceptor::tests::test_acceptor_builder_hill_climbing ... ok
[INFO] [stdout] test builder::acceptor::tests::test_acceptor_builder_simulated_annealing_accepts_fractional_level_temperature ... ok
[INFO] [stdout] test builder::acceptor::tests::test_acceptor_builder_tabu_search ... ok
[INFO] [stdout] test builder::acceptor::tests::test_acceptor_builder_tabu_search_normalizes_default_to_move_tabu ... ok
[INFO] [stdout] test builder::list_selector::tests::public_list_builder_supports_cartesian_product ... ok
[INFO] [stdout] test builder::acceptor::tests::test_acceptor_builder_simulated_annealing_accepts_hard_regression_policy ... ok
[INFO] [stdout] test builder::scalar_selector::tests::builds_nearby_change_selectors_when_meter_is_present ... ok
[INFO] [stdout] test builder::acceptor::tests::test_acceptor_builder_late_acceptance ... ok
[INFO] [stdout] test builder::scalar_selector::tests::change_selector_ignores_construction_value_order_key ... ok
[INFO] [stdout] test builder::scalar_selector::tests::builds_solution_count_scalar_selectors_without_descriptor_bindings ... ok
[INFO] [stdout] test builder::scalar_selector::tests::nearby_swap_filters_same_value_candidates_before_limiting ... ok
[INFO] [stdout] test builder::scalar_selector::tests::ruin_recreate_do_move_preserves_required_assignment_when_recreate_values_are_empty ... ok
[INFO] [stdout] test builder::scalar_selector::tests::pillar_change_uses_public_pillar_semantics ... ok
[INFO] [stdout] test builder::scalar_selector::tests::pillar_change_intersects_entity_slice_domains ... ok
[INFO] [stdout] test builder::scalar_selector::tests::pillar_swap_prunes_illegal_entity_slice_partners ... ok
[INFO] [stdout] test builder::list_selector::tests::nearby_list_swap_uses_cross_entity_meter ... ok
[INFO] [stdout] test builder::scalar_selector::tests::ruin_recreate_skips_required_entities_without_recreate_values ... ok
[INFO] [stdout] test builder::scalar_selector::tests::ruin_recreate_zero_candidate_limit_preserves_required_assignment ... ok
[INFO] [stdout] test builder::scalar_selector::tests::filters_change_moves_against_entity_slice_candidates ... ok
[INFO] [stdout] test builder::scalar_selector::tests::filters_swap_moves_against_entity_slice_candidates_before_evaluation ... ok
[INFO] [stdout] test builder::scalar_selector::tests::swap_selector_rejects_explicit_empty_entity_slice_domain ... ok
[INFO] [stdout] test builder::search::tests::custom_search_builds_registered_names_in_configured_order ... ok
[INFO] [stdout] test builder::scalar_selector::tests::scalar_change_applies_value_candidate_limit_before_generation ... ok
[INFO] [stdout] test builder::scalar_selector::tests::ruin_recreate_honors_configured_random_seed ... ok
[INFO] [stdout] test builder::scalar_selector::tests::nearby_change_applies_value_candidate_limit_before_ranking ... ok
[INFO] [stdout] test builder::search::tests::partitioned_search_builds_registered_partitioner_name ... ok
[INFO] [stdout] test builder::scalar_selector::tests::scalar_builder_cartesian_selector_survives_filtering_wrapper ... ok
[INFO] [stdout] test builder::selector::tests::cartesian_list_selector_builds_composite_moves ... ok
[INFO] [stdout] test builder::selector::tests::cartesian_right_child_conflict_repair_allows_soft_metadata_when_configured ... ok
[INFO] [stdout] test builder::scalar_selector::tests::swap_selector_emits_complete_assignment_swaps_without_domain ... ok
[INFO] [stdout] test builder::selector::tests::cartesian_right_child_conflict_repair_uses_package_qualified_preview_metadata ... ok
[INFO] [stdout] test builder::selector::tests::cartesian_right_child_conflict_repair_uses_preview_constraint_metadata ... ok
[INFO] [stdout] test builder::selector::tests::cartesian_mixed_selector_supports_limited_children ... ok
[INFO] [stdout] test builder::selector::tests::cartesian_scalar_selector_can_require_hard_improvement ... ok
[INFO] [stdout] test builder::selector::tests::cartesian_scalar_selector_builds_composite_moves ... ok
[INFO] [stdout] test builder::acceptor::tests::test_acceptor_builder_simulated_annealing ... ok
[INFO] [stdout] test builder::selector::tests::conflict_repair_accepts_package_qualified_constraint_metadata ... ok
[INFO] [stdout] test builder::selector::tests::conflict_repair_allows_non_hard_constraint_when_configured ... ok
[INFO] [stdout] test builder::acceptor::tests::test_acceptor_builder_simulated_annealing_rejects_invalid_calibration_probability ... ok
[INFO] [stdout] test builder::acceptor::tests::test_acceptor_builder_tabu_search_helper_rejects_zero_size ... ok
[INFO] [stdout] test builder::acceptor::tests::test_acceptor_builder_simulated_annealing_rejects_invalid_decay_rate ... ok
[INFO] [stdout] test builder::acceptor::tests::test_acceptor_builder_simulated_annealing_rejects_wrong_temperature_level_count ... ok
[INFO] [stdout] test builder::acceptor::tests::test_acceptor_builder_tabu_search_rejects_zero_sizes ... ok
[INFO] [stdout] test builder::selector::tests::conflict_repair_selector_does_not_edit_assignment_owned_scalars ... ok
[INFO] [stdout] test builder::selector::tests::default_list_and_mixed_local_search_use_list_streaming_defaults ... ok
[INFO] [stdout] test builder::selector::tests::default_list_selector_uses_capability_gated_neighborhoods ... ok
[INFO] [stdout] test builder::selector::tests::conflict_repair_selector_builds_executable_registered_repairs ... ok
[INFO] [stdout] test builder::selector::tests::default_scalar_local_search_uses_scalar_streaming_defaults ... ok
[INFO] [stdout] test builder::selector::tests::default_nearby_scalar_local_search_uses_stream_horizon ... ok
[INFO] [stdout] test builder::selector::tests::default_scalar_selector_uses_grouped_assignment_owner_when_registered ... ok
[INFO] [stdout] test builder::selector::tests::default_scalar_selector_uses_plain_change_and_swap_without_nearby_hooks ... ok
[INFO] [stdout] test builder::selector::tests::default_scalar_selector_uses_nearby_hooks_when_declared ... ok
[INFO] [stdout] test builder::selector::tests::default_search_profile_keeps_plain_scalar_to_one_streaming_phase ... ok
[INFO] [stdout] test builder::selector::tests::default_search_profile_uses_one_streaming_phase_for_assignment_groups ... ok
[INFO] [stdout] test builder::selector::tests::default_selector_adds_compound_conflict_repair_when_repairs_registered ... ok
[INFO] [stdout] test builder::selector::tests::explicit_acceptor_and_forager_configs_override_defaults ... ok
[INFO] [stdout] test builder::selector::tests::explicit_limited_neighborhood_remains_supported ... ok
[INFO] [stdout] test builder::selector::tests::conflict_repair_rejects_provider_without_matching_scoring_constraint - should panic ... ok
[INFO] [stdout] test builder::search::tests::custom_search_rejects_duplicate_registered_names - should panic ... ok
[INFO] [stdout] test builder::search::tests::partitioned_search_rejects_unregistered_partitioner_name - should panic ... ok
[INFO] [stdout] test builder::search::tests::custom_search_rejects_unregistered_configured_name - should panic ... ok
[INFO] [stdout] test builder::search::tests::stock_runtime_rejects_custom_phase_without_search_registration - should panic ... ok
[INFO] [stdout] test builder::search::tests::stock_runtime_rejects_partitioned_search_without_registration - should panic ... ok
[INFO] [stdout] test builder::selector::tests::explicit_scalar_union_selector_can_be_round_robin ... ok
[INFO] [stdout] test builder::selector::tests::acceptor_forager_local_search_rejects_neighborhoods - should panic ... ok
[INFO] [stdout] test builder::selector::tests::explicit_scalar_union_selector_remains_supported ... ok
[INFO] [stdout] test builder::selector::tests::grouped_scalar_selector_uses_model_owned_value_limit ... ok
[INFO] [stdout] test builder::selector::tests::local_search_type_defaults_to_acceptor_forager ... ok
[INFO] [stdout] test builder::selector::tests::local_search_phase_uses_configured_step_count_limit ... ok
[INFO] [stdout] test builder::selector::tests::mixed_default_selector_puts_list_neighborhoods_before_scalar_defaults ... ok
[INFO] [stdout] test builder::selector::tests::omitted_and_empty_local_search_configs_share_defaults ... ok
[INFO] [stdout] test builder::selector::tests::mixed_builder_cartesian_selector_survives_filtering_wrapper ... ok
[INFO] [stdout] test builder::selector::tests::grouped_scalar_selector_builds_one_compound_candidate ... ok
[INFO] [stdout] test builder::selector::tests::union_child_limited_neighborhood_keeps_scalar_change_context ... ok
[INFO] [stdout] test builder::selector::tests::grouped_scalar_selector_filters_illegal_and_duplicate_edits ... ok
[INFO] [stdout] test builder::selector::tests::variable_neighborhood_descent_type_dispatches_under_local_search ... ok
[INFO] [stdout] test descriptor::tests::construction_basic::descriptor_best_fit_assigns_optional_variable_when_candidate_improves_score ... ok
[INFO] [stdout] test descriptor::tests::construction_basic::descriptor_change_selector_adds_to_none_for_assigned_optional_variables ... ok
[INFO] [stdout] test descriptor::tests::construction_basic::descriptor_first_fit_forced_optional_slot_assigns_first_candidate_even_when_worse ... ok
[INFO] [stdout] test descriptor::tests::construction_basic::descriptor_completed_optional_none_is_skipped_by_later_construction_passes ... ok
[INFO] [stdout] test descriptor::tests::construction_basic::descriptor_best_fit_forced_optional_slot_assigns_best_candidate_even_when_worse ... ok
[INFO] [stdout] test descriptor::tests::construction_basic::descriptor_first_fit_optional_slot_skips_worse_candidate_for_later_improvement ... ok
[INFO] [stdout] test descriptor::tests::construction_basic::solution_level_value_range_builds_change_moves ... ok
[INFO] [stdout] test descriptor::tests::construction_basic::descriptor_first_fit_optional_slot_keeps_none_when_baseline_is_not_beaten ... ok
[INFO] [stdout] test descriptor::tests::construction_basic::descriptor_first_fit_optional_slot_takes_first_improving_candidate ... ok
[INFO] [stdout] test descriptor::tests::construction_basic::descriptor_first_fit_required_slot_still_assigns_first_doable_value ... ok
[INFO] [stdout] test descriptor::tests::construction_ordered_values::descriptor_strongest_fit_uses_live_value_order_key ... ok
[INFO] [stdout] test descriptor::tests::construction_ordered_values::descriptor_weakest_fit_uses_live_value_order_key ... ok
[INFO] [stdout] test descriptor::tests::construction_basic::solution_level_value_range_generates_scalar_work ... ok
[INFO] [stdout] test descriptor::tests::construction_queue::descriptor_allocate_to_value_from_queue_uses_live_value_order ... ok
[INFO] [stdout] test builder::selector::tests::cartesian_right_child_conflict_repair_rejects_soft_metadata_when_not_configured - should panic ... ok
[INFO] [stdout] test descriptor::tests::construction_queue::descriptor_first_fit_decreasing_reevaluates_entity_order_each_step ... ok
[INFO] [stdout] test descriptor::tests::construction_queue::descriptor_reopened_optional_slot_is_revisited_by_later_construction ... ok
[INFO] [stdout] test descriptor::tests::descriptor_cartesian_builds_composite_moves ... ok
[INFO] [stdout] test descriptor::tests::descriptor_cartesian_selector_survives_filtering_wrapper ... ok
[INFO] [stdout] test descriptor::tests::descriptor_manual_illegal_pillar_moves_are_not_doable ... ok
[INFO] [stdout] test descriptor::tests::descriptor_nearby_change_applies_value_candidate_limit_before_ranking ... ok
[INFO] [stdout] test descriptor::tests::construction_ordered_values::descriptor_live_refresh_generates_candidates_for_selected_slot_only ... ok
[INFO] [stdout] test descriptor::tests::construction_queue::descriptor_allocate_entity_from_queue_reevaluates_entity_order_each_step ... ok
[INFO] [stdout] test descriptor::tests::descriptor_nearby_change_uses_value_distance_meter ... ok
[INFO] [stdout] test descriptor::tests::descriptor_nearby_swap_prunes_illegal_entity_ranges_before_limiting ... ok
[INFO] [stdout] test descriptor::tests::descriptor_nearby_swap_filters_same_value_candidates_before_limiting ... ok
[INFO] [stdout] test descriptor::tests::construction_ordered_values::descriptor_first_fit_ignores_value_order_hook ... ok
[INFO] [stdout] test descriptor::tests::descriptor_pillar_change_intersects_entity_domains ... ok
[INFO] [stdout] test descriptor::tests::descriptor_pillar_swap_prunes_illegal_partners ... ok
[INFO] [stdout] test descriptor::tests::descriptor_pillar_change_uses_public_pillar_semantics ... ok
[INFO] [stdout] test descriptor::tests::descriptor_ruin_recreate_cheapest_insertion_picks_best_value ... ok
[INFO] [stdout] test descriptor::tests::descriptor_ruin_recreate_first_fit_reassigns_to_first_improving_value ... ok
[INFO] [stdout] test descriptor::tests::descriptor_pillar_swap_tabu_identity_is_direction_stable ... ok
[INFO] [stdout] test descriptor::tests::descriptor_ruin_recreate_skips_required_entities_without_recreate_values ... ok
[INFO] [stdout] test descriptor::tests::descriptor_ruin_recreate_zero_candidate_limit_preserves_required_assignment ... ok
[INFO] [stdout] test descriptor::tests::descriptor_swap_move_uses_indexed_legality_after_generation ... ok
[INFO] [stdout] test descriptor::tests::descriptor_ruin_recreate_honors_configured_random_seed ... ok
[INFO] [stdout] test descriptor::tests::descriptor_swap_selector_emits_complete_assignment_swaps_without_domain ... ok
[INFO] [stdout] test descriptor::tests::descriptor_swap_selector_prunes_illegal_entity_ranges ... ok
[INFO] [stdout] test descriptor::tests::descriptor_swap_selector_rejects_explicit_empty_domain ... ok
[INFO] [stdout] test heuristic::r#move::k_opt_reconnection::tests::enumerate_2opt_count ... ok
[INFO] [stdout] test heuristic::r#move::k_opt_reconnection::tests::enumerate_3opt_count ... ok
[INFO] [stdout] test heuristic::r#move::k_opt_reconnection::tests::enumerate_4opt_count ... ok
[INFO] [stdout] test heuristic::r#move::k_opt_reconnection::tests::enumerate_5opt_count ... ok
[INFO] [stdout] test descriptor::tests::descriptor_swap_tabu_identity_is_direction_stable ... ok
[INFO] [stdout] test heuristic::r#move::k_opt_reconnection::tests::enumerate_matches_static_3opt ... ok
[INFO] [stdout] test heuristic::r#move::k_opt_reconnection::tests::no_identity_in_patterns ... ok
[INFO] [stdout] test heuristic::r#move::k_opt_reconnection::tests::static_patterns_not_identity ... ok
[INFO] [stdout] test heuristic::r#move::tests::arena::test_arena_basic ... ok
[INFO] [stdout] test heuristic::r#move::tests::arena::test_arena_extend ... ok
[INFO] [stdout] test heuristic::r#move::tests::arena::test_arena_iter ... ok
[INFO] [stdout] test heuristic::r#move::tests::arena::test_arena_reset ... ok
[INFO] [stdout] test heuristic::r#move::tests::arena::test_arena_reuse_after_reset ... ok
[INFO] [stdout] test heuristic::r#move::tests::arena::test_arena_take ... ok
[INFO] [stdout] test heuristic::r#move::tests::arena::test_arena_with_capacity ... ok
[INFO] [stdout] test heuristic::r#move::tests::change::test_change_move_copy ... ok
[INFO] [stdout] test heuristic::r#move::tests::change::test_change_move_do_move ... ok
[INFO] [stdout] test heuristic::r#move::tests::change::test_change_move_entity_indices ... ok
[INFO] [stdout] test heuristic::r#move::tests::change::test_change_move_is_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::change::test_change_move_to_none ... ok
[INFO] [stdout] test heuristic::r#move::tests::compound_scalar::compound_scalar_applies_and_undoes_multiple_edits_atomically ... ok
[INFO] [stdout] test heuristic::r#move::tests::compound_scalar::compound_scalar_rejects_noop_and_illegal_edits ... ok
[INFO] [stdout] test heuristic::r#move::tests::compound_scalar::compound_scalar_reports_each_affected_scope_and_tabu_token ... ok
[INFO] [stdout] test heuristic::r#move::tests::conflict_repair::conflict_repair_affected_entities_keep_each_edit_scope ... ok
[INFO] [stdout] test heuristic::r#move::tests::conflict_repair::conflict_repair_tabu_tokens_use_each_edit_scope ... ok
[INFO] [stdout] test heuristic::r#move::tests::k_opt::k_opt_tests::cuts_not_sorted_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::k_opt::k_opt_tests::invalid_cuts_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::k_opt::k_opt_tests::three_opt_reverse_segment ... ok
[INFO] [stdout] test heuristic::r#move::tests::k_opt::k_opt_tests::three_opt_swap_segments ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_change::inter_list_move ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_change::intra_list_move_backward ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_change::intra_list_move_forward ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_change::invalid_source_position_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_change::same_position_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_reverse::list_reverse_tabu_identity_is_direction_stable ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_reverse::out_of_bounds_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_reverse::reverse_entire_list ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_reverse::reverse_segment ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_reverse::single_element_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_ruin::computes_exact_final_positions_for_same_entity_reinsertion ... ok
[INFO] [stdout] test descriptor::tests::descriptor_ruin_recreate_do_move_preserves_required_assignment_when_recreate_values_are_empty ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_ruin::out_of_bounds_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_ruin::ruin_multiple_elements ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_ruin::ruin_single_element ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_ruin::ruin_unordered_indices ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_ruin::undo_positions_do_not_underflow_for_interacting_same_entity_insertions ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_swap::inter_list_swap ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_swap::intra_list_swap ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_swap::invalid_position_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_swap::list_swap_tabu_identity_is_direction_stable ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_swap::same_position_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_swap::same_values_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::pillar_change::test_pillar_change_all_entities ... ok
[INFO] [stdout] test heuristic::r#move::tests::pillar_change::test_pillar_change_empty_pillar_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::pillar_change::test_pillar_change_entity_indices ... ok
[INFO] [stdout] test heuristic::r#move::tests::pillar_change::test_pillar_change_same_value_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::pillar_swap::pillar_swap_tabu_identity_is_direction_stable ... ok
[INFO] [stdout] test heuristic::r#move::tests::list_ruin::empty_indices_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::pillar_swap::test_pillar_swap_all_entities ... ok
[INFO] [stdout] test heuristic::r#move::tests::pillar_swap::test_pillar_swap_empty_pillar_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::pillar_swap::test_pillar_swap_same_value_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::ruin::ruin_all_unassigned_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::ruin::ruin_already_unassigned_is_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::ruin::ruin_multiple_entities ... ok
[INFO] [stdout] test heuristic::r#move::tests::ruin::ruin_single_entity ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_change::empty_range_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_change::dest_at_source_start_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_change::inter_list_move ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_change::inter_list_tabu_inverse_matches_reverse_move ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_change::intra_list_move_backward ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_change::intra_list_move_forward ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_change::intra_list_rightward_tabu_inverse_matches_reverse_move ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_change::out_of_bounds_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_swap::empty_range_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_swap::inter_list_swap ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_swap::inter_list_unequal_length_tabu_inverse_matches_reverse_move ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_swap::intra_list_unequal_length_tabu_inverse_matches_reverse_move ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_swap::out_of_bounds_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_swap::overlapping_ranges_not_doable ... ok
[INFO] [stdout] test heuristic::r#move::tests::swap::swap_tabu_identity_is_direction_stable ... ok
[INFO] [stdout] test descriptor::tests::descriptor_cartesian_rejects_score_seeking_left_child - should panic ... ok
[INFO] [stdout] test builder::selector::tests::cartesian_selector_rejects_score_seeking_scalar_left_child - should panic ... ok
[INFO] [stdout] test builder::selector::tests::conflict_repair_rejects_non_hard_constraint_before_provider_invocation - should panic ... ok
[INFO] [stdout] test heuristic::r#move::tests::swap::test_swap_move_do_and_undo ... ok
[INFO] [stdout] test heuristic::r#move::tests::swap::test_swap_same_value_not_doable ... ok
[INFO] [stdout] test descriptor::tests::construction_ordered_values::descriptor_allocate_to_value_from_queue_consumes_value_order_hook ... ok
[INFO] [stdout] test heuristic::r#move::tests::sublist_swap::intra_list_swap ... ok
[INFO] [stdout] test heuristic::r#move::tests::swap::test_swap_entity_indices ... ok
[INFO] [stdout] test builder::selector::tests::conflict_repair_rejects_short_name_for_package_qualified_metadata - should panic ... ok
[INFO] [stdout] test builder::scalar_selector::tests::nearby_change_rejects_distance_meter_without_candidate_hook - should panic ... ok
[INFO] [stdout] test builder::selector::tests::conflict_repair_rejects_soft_package_qualified_metadata - should panic ... ok
[INFO] [stdout] test builder::selector::tests::explicit_scalar_selector_rejects_assignment_owned_variable - should panic ... ok
[INFO] [stdout] test builder::selector::tests::empty_model_does_not_synthesize_scalar_neighborhoods - should panic ... ok
[INFO] [stdout] test builder::selector::tests::variable_neighborhood_descent_rejects_acceptor_forager_fields - should panic ... ok
[INFO] [stdout] test builder::selector::tests::variable_neighborhood_descent_requires_neighborhoods - should panic ... ok
[INFO] [stdout] test descriptor::tests::descriptor_nearby_change_rejects_distance_meter_without_candidate_hook - should panic ... ok
[INFO] [stdout] test heuristic::selector::decorator::cartesian_product::tests::cartesian_product_arena_yields_all_pairs ... ok
[INFO] [stdout] test heuristic::selector::decorator::cartesian_product::tests::cartesian_product_size_does_not_open_child_cursors ... ok
[INFO] [stdout] test heuristic::r#move::tests::swap::test_swap_self_not_doable ... ok
[INFO] [stdout] test builder::selector::tests::cartesian_selector_rejects_score_seeking_list_left_child - should panic ... ok
[INFO] [stdout] test heuristic::selector::decorator::cartesian_product::tests::cartesian_product_moves_remain_stable_after_selector_reuse ... ok
[INFO] [stdout] test heuristic::selector::decorator::cartesian_product::tests::cartesian_product_skips_pairs_with_illegal_right_moves ... ok
[INFO] [stdout] test heuristic::selector::decorator::cartesian_product::tests::cartesian_product_preview_updates_shadows_before_building_right_row ... ok
[INFO] [stdout] test heuristic::selector::decorator::cartesian_product::tests::cartesian_product_skips_rows_with_illegal_left_moves ... ok
[INFO] [stdout] test heuristic::r#move::tests::arena::test_arena_double_take_panics - should panic ... ok
[INFO] [stdout] test heuristic::selector::decorator::cartesian_product::tests::reset_clears_both_arenas ... ok
[INFO] [stdout] test heuristic::selector::decorator::filtering::tests::empty_when_no_moves_pass ... ok
[INFO] [stdout] test heuristic::selector::decorator::limited::tests::limited_cursor_stops_inner_generation_at_limit ... ok
[INFO] [stdout] test heuristic::selector::decorator::filtering::tests::filters_cartesian_candidates_without_materializing_the_full_stream ... ok
[INFO] [stdout] test heuristic::selector::decorator::filtering::tests::filters_moves_by_predicate ... ok
[INFO] [stdout] test heuristic::selector::decorator::probability::tests::probabilistic_filter_keeps_cartesian_candidates_borrowable ... ok
[INFO] [stdout] test heuristic::selector::decorator::probability::tests::same_seed_produces_same_selection ... ok
[INFO] [stdout] test heuristic::selector::decorator::sorting::tests::sorts_ascending ... ok
[INFO] [stdout] test heuristic::selector::decorator::probability::tests::selects_some_moves_with_uniform_weight ... ok
[INFO] [stdout] test heuristic::selector::decorator::shuffling::tests::shuffles_cartesian_candidates_without_dropping_borrowable_access ... ok
[INFO] [stdout] test heuristic::selector::decorator::test_utils::tests::test_get_set_priority ... ok
[INFO] [stdout] test heuristic::selector::decorator::probability::tests::zero_weight_selects_nothing ... ok
[INFO] [stdout] test heuristic::selector::decorator::sorting::tests::sorts_cartesian_candidates_by_borrowed_preview_data ... ok
[INFO] [stdout] test heuristic::selector::decorator::sorting::tests::sorts_descending ... ok
[INFO] [stdout] test heuristic::selector::decorator::shuffling::tests::different_seeds_produce_different_order ... ok
[INFO] [stdout] test heuristic::selector::decorator::shuffling::tests::preserves_all_moves ... ok
[INFO] [stdout] test heuristic::selector::decorator::test_utils::tests::test_solution_creation ... ok
[INFO] [stdout] test heuristic::selector::decorator::test_utils::tests::test_task_creation ... ok
[INFO] [stdout] test heuristic::selector::decorator::union::tests::handles_empty_second ... ok
[INFO] [stdout] test heuristic::selector::decorator::vec_union::tests::rotating_round_robin_uses_stream_context_offset_without_changing_child_order ... ok
[INFO] [stdout] test heuristic::selector::decorator::union::tests::both_empty_yields_nothing ... ok
[INFO] [stdout] test heuristic::selector::decorator::vec_union::tests::round_robin_candidates_remain_borrowable_and_takeable_after_interleaving ... ok
[INFO] [stdout] test heuristic::selector::decorator::union::tests::combines_both_selectors ... ok
[INFO] [stdout] test heuristic::selector::decorator::union::tests::handles_empty_first ... ok
[INFO] [stdout] test heuristic::selector::decorator::vec_union::tests::stratified_random_keeps_each_child_live_without_materializing_child_moves ... ok
[INFO] [stdout] test heuristic::selector::k_opt::tests::binomial_coefficient ... ok
[INFO] [stdout] test heuristic::selector::decorator::vec_union::tests::sequential_drains_each_child_before_next_child ... ok
[INFO] [stdout] test heuristic::selector::entity::tests::test_all_entities_selector ... ok
[INFO] [stdout] test heuristic::selector::entity::tests::test_from_solution_entity_selector ... ok
[INFO] [stdout] test heuristic::selector::decorator::shuffling::tests::same_seed_produces_same_order ... ok
[INFO] [stdout] test heuristic::selector::k_opt::tests::selector_generates_moves ... ok
[INFO] [stdout] test heuristic::selector::decorator::vec_union::tests::round_robin_interleaves_uneven_child_lengths_and_skips_empty_children ... ok
[INFO] [stdout] test heuristic::selector::selection_order::tests::test_default ... ok
[INFO] [stdout] test heuristic::selector::selection_order::tests::test_from_random_selection ... ok
[INFO] [stdout] test heuristic::selector::k_opt::tests::cut_combination_too_short ... ok
[INFO] [stdout] test heuristic::selector::selection_order::tests::test_resolve_inherit_from_random ... ok
[INFO] [stdout] test heuristic::selector::selection_order::tests::test_is_random ... ok
[INFO] [stdout] test heuristic::selector::selection_order::tests::test_resolve_inherit_from_inherit ... ok
[INFO] [stdout] test heuristic::selector::selection_order::tests::test_resolve_non_inherit ... ok
[INFO] [stdout] test heuristic::selector::tests::k_opt::binomial_coefficient ... ok
[INFO] [stdout] test heuristic::selector::selection_order::tests::test_to_random_selection ... ok
[INFO] [stdout] test heuristic::selector::k_opt::tests::selector_size_matches_iteration ... ok
[INFO] [stdout] test heuristic::selector::tests::k_opt::cut_combination_iterator_basic ... ok
[INFO] [stdout] test heuristic::selector::selection_order::tests::test_requires_caching ... ok
[INFO] [stdout] test heuristic::selector::tests::list_neighborhood::list_change_moves_are_doable ... ok
[INFO] [stdout] test heuristic::selector::tests::list_neighborhood::list_swap_moves_are_doable ... ok
[INFO] [stdout] test heuristic::selector::tests::list_ruin::clamps_to_available_elements ... ok
[INFO] [stdout] test heuristic::selector::tests::k_opt::selector_size_matches_iteration ... ok
[INFO] [stdout] test heuristic::selector::tests::list_ruin::empty_solution_yields_no_moves ... ok
[INFO] [stdout] test heuristic::selector::tests::k_opt::selector_generates_moves ... ok
[INFO] [stdout] test heuristic::selector::selection_order::tests::test_to_random_selection_panics_on_shuffled - should panic ... ok
[INFO] [stdout] test heuristic::selector::tests::list_ruin::generates_list_ruin_moves ... ok
[INFO] [stdout] test heuristic::selector::tests::list_ruin::panics_on_zero_min - should panic ... ok
[INFO] [stdout] test heuristic::selector::tests::list_ruin::seeded_selector_advances_between_steps ... ok
[INFO] [stdout] test heuristic::selector::tests::mimic::test_mimic_recording_selector ... ok
[INFO] [stdout] test heuristic::selector::tests::mimic::test_mimic_empty_selector ... ok
[INFO] [stdout] test heuristic::selector::tests::mimic::test_mimic_replaying_selector ... ok
[INFO] [stdout] test heuristic::selector::tests::list_ruin::panics_on_invalid_range - should panic ... ok
[INFO] [stdout] test heuristic::selector::decorator::sorting::tests::preserves_size ... ok
[INFO] [stdout] test heuristic::selector::tests::list_ruin::empty_lists_should_not_reduce_moves_per_step ... ok
[INFO] [stdout] test heuristic::selector::tests::k_opt::cut_combination_too_short ... ok
[INFO] [stdout] test heuristic::selector::tests::list_ruin::size_returns_moves_per_step ... ok
[INFO] [stdout] test heuristic::selector::tests::list_neighborhood::list_swap_emits_unique_pairs_in_canonical_order ... ok
[INFO] [stdout] test heuristic::selector::tests::mimic::test_mimic_synchronized_iteration ... ok
[INFO] [stdout] test heuristic::selector::tests::move_selector::change_selector_does_not_emit_to_none_without_unassigned_support ... ok
[INFO] [stdout] test heuristic::selector::tests::move_selector::change_selector_emits_single_to_none_move_for_assigned_entities_when_enabled ... ok
[INFO] [stdout] test heuristic::selector::tests::move_selector::change_selector_materializes_values_on_open_and_moves_on_demand ... ok
[INFO] [stdout] test heuristic::selector::tests::move_selector::test_change_do_and_undo ... ok
[INFO] [stdout] test heuristic::selector::tests::move_selector::test_change_move_selector ... ok
[INFO] [stdout] test heuristic::selector::tests::move_selector::test_swap_do_and_undo ... ok
[INFO] [stdout] test heuristic::selector::k_opt::tests::cut_combination_iterator_basic ... ok
[INFO] [stdout] test heuristic::selector::tests::move_selector::test_swap_move_selector ... ok
[INFO] [stdout] test heuristic::selector::tests::nearby::test_nearby_selector_excludes_origin ... ok
[INFO] [stdout] test heuristic::selector::tests::nearby::test_nearby_selector_sorts_by_distance ... ok
[INFO] [stdout] test heuristic::selector::tests::nearby::test_nearby_selector_with_max_size ... ok
[INFO] [stdout] test heuristic::selector::tests::nearby_list::nearby_list_change_keeps_stable_tie_order ... ok
[INFO] [stdout] test heuristic::selector::tests::pillar::test_default_pillar_selector_groups_by_value ... ok
[INFO] [stdout] test heuristic::selector::tests::pillar::test_default_pillar_selector_preserves_canonical_first_entity_order ... ok
[INFO] [stdout] test heuristic::selector::tests::nearby_list::nearby_list_swap_emits_unique_pairs_in_stable_order ... ok
[INFO] [stdout] test heuristic::selector::tests::pillar::test_pillar_empty ... ok
[INFO] [stdout] test heuristic::selector::tests::pillar::test_pillar_selector_with_minimum_size ... ok
[INFO] [stdout] test heuristic::selector::tests::pillar::test_pillar_selector_with_none_values ... ok
[INFO] [stdout] test heuristic::selector::tests::pillar::test_sub_pillar_config ... ok
[INFO] [stdout] test heuristic::selector::tests::sublist_neighborhood::sublist_change_keeps_canonical_segment_order ... ok
[INFO] [stdout] test heuristic::selector::tests::sublist_neighborhood::sublist_change_moves_are_doable ... ok
[INFO] [stdout] test heuristic::selector::tests::sublist_neighborhood::sublist_swap_emits_canonical_non_overlapping_pairs ... ok
[INFO] [stdout] test heuristic::selector::tests::sublist_neighborhood::sublist_swap_moves_are_doable ... ok
[INFO] [stdout] test heuristic::selector::value_selector::tests::test_from_solution_value_selector_selector ... ok
[INFO] [stdout] test heuristic::selector::value_selector::tests::test_static_value_selector_selector ... ok
[INFO] [stdout] test manager::builder_tests::test_builder_with_step_limit ... ok
[INFO] [stdout] test manager::builder_tests::test_builder_with_time_limit ... ok
[INFO] [stdout] test manager::builder_tests::test_construction_types ... ok
[INFO] [stdout] test manager::builder_tests::test_local_acceptor_types ... ok
[INFO] [stdout] test manager::mod_tests::test_calculate_score_basic ... ok
[INFO] [stdout] test manager::mod_tests::test_calculate_score_complex_calculator ... ok
[INFO] [stdout] test manager::mod_tests::test_calculate_score_multiple_solutions ... ok
[INFO] [stdout] test manager::mod_tests::test_score_calculator_returns_reference ... ok
[INFO] [stdout] test manager::mod_tests::test_solver_factory_builder_builds_successfully ... ok
[INFO] [stdout] test manager::mod_tests::test_calculate_score_negative_value ... ok
[INFO] [stdout] test manager::mod_tests::test_solver_factory_builder_creation ... ok
[INFO] [stdout] test manager::mod_tests::test_solver_factory_builder_with_time_limit ... ok
[INFO] [stdout] test manager::mod_tests::test_solver_factory_builder_with_step_limit ... ok
[INFO] [stdout] test manager::mod_tests::test_score_calculator_and_calculate_score_consistent ... ok
[INFO] [stdout] test manager::mod_tests::test_calculate_score_zero ... ok
[INFO] [stdout] test manager::mod_tests::test_solver_factory_with_multiple_phases ... ok
[INFO] [stdout] test manager::mod_tests::test_solver_factory_with_phase_and_step_limit ... ok
[INFO] [stdout] test manager::mod_tests::test_solver_factory_with_phase ... ok
[INFO] [stdout] test manager::mod_tests_integration::basic::test_construction_and_local_acceptor_types_exist ... ok
[INFO] [stdout] test manager::mod_tests_integration::basic::test_solver_factory_with_multiple_phases ... ok
[INFO] [stdout] test manager::mod_tests_integration::basic::test_solver_factory_with_entity_solution ... ok
[INFO] [stdout] test manager::mod_tests_integration::basic::test_solver_factory_with_phases ... ok
[INFO] [stdout] test manager::mod_tests_integration::basic::test_solver_with_time_limit_termination ... ok
[INFO] [stdout] test manager::mod_tests_integration::basic::test_solver_with_step_limit_termination ... ok
[INFO] [stdout] test manager::mod_tests_integration::lifecycle_tests::retained_job_delete_keeps_slot_reserved_until_worker_exit ... ok
[INFO] [stdout] test heuristic::selector::tests::pillar::test_pillar_new ... ok
[INFO] [stdout] test manager::mod_tests_integration::analysis_tests::retained_job_analysis_is_snapshot_bound_across_live_states_and_completion ... ok
[INFO] [stdout] test heuristic::selector::tests::pillar::test_pillar_selector_empty_solution ... ok
[INFO] [stdout] test manager::mod_tests_integration::lifecycle_tests::retained_job_pause_requested_event_precedes_worker_pause_events ... ok
[INFO] [stdout] test manager::mod_tests_integration::lifecycle_tests::trivial_job_cancelled_while_paused_reports_cancelled ... ok
[INFO] [stdout] test manager::mod_tests_integration::partitioned_lifecycle_tests::partitioned_child_pause_publishes_parent_snapshot_only ... ok
[INFO] [stdout] test manager::mod_tests_integration::prompt_tests::retained_job_pause_settles_promptly_during_generation ... ok
[INFO] [stdout] test manager::mod_tests_integration::prompt_tests::retained_job_cancel_settles_promptly_during_evaluation ... ok
[INFO] [stdout] test manager::mod_tests_integration::lifecycle_tests::retained_job_invalid_transitions_cancel_and_delete ... ok
[INFO] [stdout] test manager::mod_tests_integration::lifecycle_tests::retained_job_pause_resume_completion_flow ... ok
[INFO] [stdout] test phase::construction::forager::tests::best_fit_keeps_current_when_all_candidates_are_worse_than_baseline ... ok
[INFO] [stdout] test manager::phase_factory::list_clarke_wright::tests::clarke_wright_hooks_receive_actual_list_values ... ok
[INFO] [stdout] test phase::construction::forager::tests::best_fit_prefers_first_equal_score_candidate_over_keep_current ... ok
[INFO] [stdout] test phase::construction::forager::tests::best_fit_selects_best_candidate_when_it_beats_baseline ... ok
[INFO] [stdout] test phase::construction::forager::tests::first_feasible_prefers_equal_score_candidate_over_infeasible_baseline ... ok
[INFO] [stdout] test phase::construction::forager::tests::first_feasible_returns_keep_current_when_baseline_is_feasible ... ok
[INFO] [stdout] test phase::construction::forager::tests::first_feasible_selects_first_feasible_candidate_when_baseline_is_infeasible ... ok
[INFO] [stdout] test phase::construction::forager::tests::first_fit_keeps_current_when_optional_baseline_is_not_beaten ... ok
[INFO] [stdout] test phase::construction::forager::tests::first_fit_selects_first_improving_candidate_over_optional_baseline ... ok
[INFO] [stdout] test phase::construction::forager::tests::first_fit_selects_later_improving_candidate_when_earlier_one_is_worse ... ok
[INFO] [stdout] test phase::construction::forager::tests::strongest_fit_keeps_current_when_selected_move_does_not_beat_optional_baseline ... ok
[INFO] [stdout] test phase::construction::forager::tests::strongest_fit_selects_when_selected_move_beats_optional_baseline ... ok
[INFO] [stdout] test phase::construction::forager::tests::test_best_fit_forager ... ok
[INFO] [stdout] test phase::construction::forager::tests::test_empty_placement ... ok
[INFO] [stdout] test phase::construction::forager::tests::test_first_fit_forager ... ok
[INFO] [stdout] test phase::construction::forager::tests::test_strongest_fit_forager ... ok
[INFO] [stdout] test phase::construction::forager::tests::test_weakest_fit_forager ... ok
[INFO] [stdout] test phase::construction::forager::tests::weakest_fit_keeps_current_when_selected_move_does_not_beat_optional_baseline ... ok
[INFO] [stdout] test manager::mod_tests_integration::resume_tests::retained_job_exact_resume_matches_uninterrupted_execution_after_boundary ... ok
[INFO] [stdout] test phase::construction::forager::tests::weakest_fit_selects_when_selected_move_beats_optional_baseline ... ok
[INFO] [stdout] test phase::construction::phase::tests::best_fit_assigns_when_candidate_is_strictly_better_than_none ... ok
[INFO] [stdout] test phase::construction::phase::tests::best_fit_forced_construction_assigns_best_candidate_even_when_worse ... ok
[INFO] [stdout] test phase::construction::phase::tests::best_fit_keeps_current_when_every_assignment_is_worse ... ok
[INFO] [stdout] test phase::construction::phase::tests::best_fit_prefers_equal_score_candidate_over_keep_current ... ok
[INFO] [stdout] test phase::construction::phase::tests::best_fit_progresses_across_equal_score_plateau ... ok
[INFO] [stdout] test phase::construction::phase::tests::construction_phase_accepts_custom_forager_without_static_router ... ok
[INFO] [stdout] test phase::construction::phase::tests::first_feasible_keeps_current_when_baseline_is_already_feasible ... ok
[INFO] [stdout] test phase::construction::phase::tests::first_feasible_selects_first_feasible_move_when_baseline_is_infeasible ... ok
[INFO] [stdout] test phase::construction::phase::tests::first_fit_forced_construction_assigns_first_doable_candidate_even_when_worse ... ok
[INFO] [stdout] test phase::construction::phase::tests::first_fit_optional_construction_keeps_current_when_baseline_is_not_beaten ... ok
[INFO] [stdout] test phase::construction::phase::tests::first_fit_optional_construction_skips_worse_candidate_and_takes_later_improvement ... ok
[INFO] [stdout] test phase::construction::phase::tests::first_fit_optional_construction_takes_first_improving_candidate ... ok
[INFO] [stdout] test phase::construction::phase::tests::first_fit_required_construction_still_selects_first_doable_candidate ... ok
[INFO] [stdout] test phase::construction::phase::tests::test_construction_best_fit ... ok
[INFO] [stdout] test phase::construction::phase::tests::test_construction_empty_solution ... ok
[INFO] [stdout] test phase::construction::phase::tests::test_construction_first_fit ... ok
[INFO] [stdout] test phase::construction::phase::tests::test_construction_phase_reports_one_best_solution_on_improvement ... ok
[INFO] [stdout] test phase::construction::phase::tests::keep_current_pause_snapshot_has_committed_score ... ok
[INFO] [stdout] test phase::construction::placer::tests::test_queued_placer_all_initialized ... ok
[INFO] [stdout] test phase::construction::placer::tests::test_queued_placer_all_uninitialized ... ok
[INFO] [stdout] test phase::construction::phase::tests::first_feasible_prefers_equal_score_candidate_over_infeasible_baseline ... ok
[INFO] [stdout] test phase::construction::phase::tests::test_construction_resume_retries_interrupted_placement ... ok
[INFO] [stdout] test phase::construction::placer::tests::test_sorted_entity_placer_descending ... ok
[INFO] [stdout] test phase::exhaustive::bounder::tests::test_bounder_type_default ... ok
[INFO] [stdout] test phase::exhaustive::bounder::tests::test_bounder_type_display ... ok
[INFO] [stdout] test phase::exhaustive::bounder::tests::test_simple_bounder_returns_none ... ok
[INFO] [stdout] test phase::exhaustive::decider::tests::simple_decider_replays_and_resets_assignment_nodes ... ok
[INFO] [stdout] test phase::exhaustive::decider::tests::test_simple_decider_creation ... ok
[INFO] [stdout] test phase::exhaustive::node::tests::assignment_path_returns_root_to_leaf_assignments ... ok
[INFO] [stdout] test phase::exhaustive::node::tests::test_child_node ... ok
[INFO] [stdout] test phase::exhaustive::node::tests::test_is_leaf ... ok
[INFO] [stdout] test phase::exhaustive::node::tests::test_root_node ... ok
[INFO] [stdout] test phase::exhaustive::phase::tests::solve_honors_inphase_step_limit ... ok
[INFO] [stdout] test phase::exhaustive::phase::tests::solve_keeps_last_complete_leaf_when_step_limit_interrupts_frontier ... ok
[INFO] [stdout] test phase::exhaustive::phase::tests::solve_marks_depth_limit_before_leaf_as_config_termination ... ok
[INFO] [stdout] test phase::exhaustive::phase::tests::solve_marks_node_limit_cut_as_config_termination ... ok
[INFO] [stdout] test phase::exhaustive::phase::tests::solve_publishes_the_actual_best_leaf_solution ... ok
[INFO] [stdout] test phase::exhaustive::phase::tests::solve_reports_completed_when_frontier_is_exhausted ... ok
[INFO] [stdout] test phase::exhaustive::phase::tests::solve_stops_before_work_when_cancelled ... ok
[INFO] [stdout] test phase::exhaustive::phase::tests::test_config_default ... ok
[INFO] [stdout] test phase::exhaustive::phase::tests::test_exploration_type_default ... ok
[INFO] [stdout] test phase::exhaustive::phase::tests::test_exploration_type_display ... ok
[INFO] [stdout] test phase::exhaustive::phase::tests::test_phase_debug ... ok
[INFO] [stdout] test phase::exhaustive::phase::tests::test_phase_type_name ... ok
[INFO] [stdout] test phase::hard_delta_phase_tests::vnd_accepts_required_repair_that_improves_later_hard_level ... ok
[INFO] [stdout] test phase::hard_delta_tests::custom_non_contiguous_hard_labels_are_compared_in_level_order ... ok
[INFO] [stdout] test phase::hard_delta_tests::earlier_hard_level_dominates_later_hard_levels ... ok
[INFO] [stdout] test phase::hard_delta_tests::score_without_hard_levels_has_no_hard_delta ... ok
[INFO] [stdout] test phase::hard_delta_tests::second_bendable_hard_level_can_improve_required_repairs ... ok
[INFO] [stdout] test phase::hard_delta_tests::second_bendable_hard_level_can_regress ... ok
[INFO] [stdout] test phase::hard_delta_tests::single_hard_level_behavior_is_unchanged ... ok
[INFO] [stdout] test phase::hard_delta_tests::soft_level_changes_do_not_affect_hard_delta ... ok
[INFO] [stdout] test phase::localsearch::acceptor::diversified_late_acceptance::tests::test_accepts_improving_moves ... ok
[INFO] [stdout] test phase::localsearch::acceptor::diversified_late_acceptance::tests::test_accepts_late_equal ... ok
[INFO] [stdout] test phase::localsearch::acceptor::diversified_late_acceptance::tests::test_diversification_accepts_within_tolerance ... ok
[INFO] [stdout] test phase::localsearch::acceptor::diversified_late_acceptance::tests::test_history_cycles ... ok
[INFO] [stdout] test phase::localsearch::acceptor::diversified_late_acceptance::tests::test_rejects_outside_tolerance ... ok
[INFO] [stdout] test phase::localsearch::acceptor::great_deluge::tests::test_accepts_above_water_level ... ok
[INFO] [stdout] test phase::localsearch::acceptor::great_deluge::tests::test_accepts_improving_moves ... ok
[INFO] [stdout] test phase::localsearch::acceptor::great_deluge::tests::test_phase_reset ... ok
[INFO] [stdout] test phase::localsearch::acceptor::great_deluge::tests::test_rejects_below_water_level ... ok
[INFO] [stdout] test phase::localsearch::acceptor::great_deluge::tests::test_water_rises_over_time ... ok
[INFO] [stdout] test phase::localsearch::acceptor::simulated_annealing::tests::accepts_improving_and_equal_moves ... ok
[INFO] [stdout] test phase::localsearch::acceptor::simulated_annealing::tests::cooled_simulated_annealing_matches_hill_climbing ... ok
[INFO] [stdout] test phase::localsearch::acceptor::simulated_annealing::tests::hard_improvement_with_soft_regression_is_accepted_as_improving ... ok
[INFO] [stdout] test phase::localsearch::acceptor::simulated_annealing::tests::huge_soft_improvement_does_not_mask_hard_regression ... ok
[INFO] [stdout] test phase::localsearch::acceptor::simulated_annealing::tests::never_accept_hard_regression_policy_rejects_hard_regressions_at_high_temperature ... ok
[INFO] [stdout] test phase::localsearch::acceptor::simulated_annealing::tests::sampled_calibration_derives_temperatures_per_level ... ok
[INFO] [stdout] test phase::localsearch::acceptor::simulated_annealing::tests::seeded_auto_calibration_starts_with_same_temperatures ... ok
[INFO] [stdout] test phase::localsearch::acceptor::simulated_annealing::tests::single_level_high_temperature_accepts_most_worsening_moves ... ok
[INFO] [stdout] test phase::construction::placer::tests::test_queued_placer_some_initialized ... ok
[INFO] [stdout] test phase::localsearch::acceptor::simulated_annealing::tests::single_level_low_temperature_rejects_most_worsening_moves ... ok
[INFO] [stdout] test phase::localsearch::acceptor::simulated_annealing::tests::temperature_decays_each_step_until_hill_climbing_threshold ... ok
[INFO] [stdout] test phase::localsearch::acceptor::simulated_annealing::tests::unchanged_hard_soft_regression_uses_soft_temperature ... ok
[INFO] [stdout] test phase::localsearch::acceptor::step_counting::tests::test_accepts_improving_moves ... ok
[INFO] [stdout] test phase::localsearch::acceptor::step_counting::tests::test_accepts_non_improving_within_limit ... ok
[INFO] [stdout] test phase::localsearch::acceptor::step_counting::tests::test_improving_always_accepted_even_after_limit ... ok
[INFO] [stdout] test phase::localsearch::acceptor::step_counting::tests::test_phase_reset ... ok
[INFO] [stdout] test phase::localsearch::acceptor::step_counting::tests::test_rejects_after_limit_exceeded ... ok
[INFO] [stdout] test phase::localsearch::acceptor::step_counting::tests::test_resets_on_improvement ... ok
[INFO] [stdout] test phase::localsearch::acceptor::tests::hill_climbing_accepts_only_improving_moves ... ok
[INFO] [stdout] test phase::localsearch::acceptor::tests::late_acceptance_uses_late_score_threshold ... ok
[INFO] [stdout] test heuristic::selector::decorator::cartesian_product::tests::cartesian_product_reverse_signature_matches_true_inverse_order ... ok
[INFO] [stdout] test heuristic::selector::selection_order::tests::test_resolve_inherit_from_original ... ok
[INFO] [stdout] test phase::localsearch::acceptor::tests::tabu_search_blocks_exact_move_and_undo_move ... ok
[INFO] [stdout] test heuristic::selector::tests::list_neighborhood::list_change_keeps_canonical_intra_then_inter_order ... ok
[INFO] [stdout] test phase::localsearch::acceptor::tests::tabu_search_blocks_recent_entities_and_allows_aspiration ... ok
[INFO] [stdout] test phase::localsearch::acceptor::tests::tabu_search_move_only_policy_blocks_recent_exact_move ... ok
[INFO] [stdout] test phase::localsearch::acceptor::tests::tabu_search_scoped_tokens_do_not_collide_across_variables ... ok
[INFO] [stdout] test phase::localsearch::acceptor::tests::tabu_search_undo_memory_matches_candidate_move_identity ... ok
[INFO] [stdout] test manager::phase_factory::list_clarke_wright::tests::clarke_wright_preserves_preassigned_routes ... ok
[INFO] [stdout] test phase::localsearch::forager::any_tests::any_forager_forwards_stream_horizon ... ok
[INFO] [stdout] test phase::localsearch::acceptor::tests::tabu_search_blocks_recent_values ... ok
[INFO] [stdout] test phase::localsearch::acceptor::tests::tabu_search_clears_memories_on_phase_end ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::test_accepted_count_forager_picks_best_index ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::foragers_report_stream_horizon_only_for_finite_accepted_counts ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::test_accepted_count_forager_empty ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::test_accepted_count_forager_picks_best_of_first_n_accepted_moves ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::test_accepted_count_forager_quits_at_limit ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::test_accepted_count_one_matches_first_accepted_horizon ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::test_best_score_forager_never_quits_early ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::test_first_accepted_forager ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::test_first_best_score_improving_quits_on_improvement ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::test_first_last_step_improving_quits_on_improvement ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::test_forager_resets_on_step ... ok
[INFO] [stdout] test phase::localsearch::phase::tests::accepted_count_one_evaluates_one_accepted_move_per_step ... ok
[INFO] [stdout] test phase::localsearch::phase::tests::best_score_forager_still_scans_full_neighborhood ... ok
[INFO] [stdout] test phase::localsearch::acceptor::tests::tabu_search_requires_signatures ... ok
[INFO] [stdout] test manager::mod_tests_integration::analysis_tests::retained_job_analysis_remains_available_after_cancel_failure_and_config_termination ... ok
[INFO] [stdout] test phase::localsearch::phase::tests::local_search_can_improve_by_unassigning_optional_variable ... ok
[INFO] [stdout] test phase::localsearch::phase::tests::local_search_opens_selector_with_stream_context ... ok
[INFO] [stdout] test phase::localsearch::phase::tests::cancellation_before_next_candidate_does_not_commit_selected_move ... ok
[INFO] [stdout] test phase::localsearch::phase::tests::test_local_search_reaches_optimal ... ok
[INFO] [stdout] test phase::localsearch::phase::tests::test_local_search_hill_climbing ... ok
[INFO] [stdout] test manager::mod_tests_integration::lifecycle_tests::retained_job_progress_reflects_pause_requested_state ... ok
[INFO] [stdout] test phase::localsearch::phase::tests::accepted_count_limit_picks_best_of_accepted_horizon ... ok
[INFO] [stdout] test phase::localsearch::phase::tests::test_local_search_records_selector_open_time_as_generation_time ... ok
[INFO] [stdout] test manager::mod_tests_integration::prompt_tests::retained_job_time_limit_settles_promptly_during_generation ... ok
[INFO] [stdout] test phase::localsearch::phase::tests::test_local_search_step_limit ... ok
[INFO] [stdout] test phase::localsearch::vnd::phase::tests::vnd_cancel_mid_neighborhood_does_not_commit_partial_best ... ok
[INFO] [stdout] test phase::localsearch::vnd::phase::tests::vnd_single_neighborhood_applies_best_improving_move ... ok
[INFO] [stdout] test phase::localsearch::vnd::phase::tests::vnd_polling_advances_through_non_doable_tail_after_cancel_request ... ok
[INFO] [stdout] test phase::partitioned::partitioner::tests::test_thread_count_default ... ok
[INFO] [stdout] test phase::partitioned::partitioner::tests::test_thread_count_resolve_specific ... ok
[INFO] [stdout] test phase::localsearch::vnd::phase::tests::vnd_rejects_hard_neutral_repair_move_when_hard_improvement_required ... ok
[INFO] [stdout] test phase::partitioned::partitioner::tests::test_thread_count_display ... ok
[INFO] [stdout] test phase::partitioned::phase::tests::partitioned_search_does_not_merge_config_terminated_children ... ok
[INFO] [stdout] test phase::partitioned::phase::tests::partitioned_search_bootstraps_child_scopes_before_mutation ... ok
[INFO] [stdout] test phase::partitioned::phase::tests::partitioned_search_does_not_merge_cancelled_children ... ok
[INFO] [stdout] test phase::partitioned::phase::tests::partitioned_search_reinitializes_after_merge ... ok
[INFO] [stdout] test phase::partitioned::phase::tests::sequential_partitioned_search_shares_move_limit_across_children ... ok
[INFO] [stdout] test phase::partitioned::phase::tests::sequential_partitioned_search_shares_step_limit_across_children ... ok
[INFO] [stdout] test phase::partitioned::phase::tests::test_config_default ... ok
[INFO] [stdout] test realtime::problem_change::tests::closure_problem_change ... ok
[INFO] [stdout] test phase::partitioned::phase::tests::sequential_partitioned_search_shares_score_limit_across_children ... ok
[INFO] [stdout] test realtime::problem_change::tests::struct_problem_change ... ok
[INFO] [stdout] test realtime::problem_change::tests::problem_change_apply_through_solver_scope_invalidates_frontier_revision ... ok
[INFO] [stdout] test realtime::solver_handle::tests::handle_clone ... ok
[INFO] [stdout] test realtime::solver_handle::tests::handle_creation ... ok
[INFO] [stdout] test phase::partitioned::partitioner::tests::test_thread_count_resolve_auto ... ok
[INFO] [stdout] test realtime::solver_handle::tests::submit_change_when_not_solving ... ok
[INFO] [stdout] test realtime::solver_handle::tests::submit_change_when_solving ... ok
[INFO] [stdout] test realtime::solver_handle::tests::terminate_early ... ok
[INFO] [stdout] test run::tests::build_termination_explicit_time_overrides_fallback ... ok
[INFO] [stdout] test run::tests::build_termination_preserves_missing_time_limit_as_unlimited ... ok
[INFO] [stdout] test run::tests::build_termination_returns_fallback_time_for_best_score_limit ... ok
[INFO] [stdout] test run::tests::build_termination_returns_fallback_time_for_step_limit ... ok
[INFO] [stdout] test run::tests::build_termination_returns_fallback_time_for_unimproved_step_limit ... ok
[INFO] [stdout] test run::tests::build_termination_returns_fallback_time_for_unimproved_time_limit ... ok
[INFO] [stdout] test phase::partitioned::partitioner::tests::test_functional_partitioner ... ok
[INFO] [stdout] test phase::partitioned::partitioner::tests::test_partitioner_debug ... ok
[INFO] [stdout] test run::tests::config_best_score_limit_stops_active_phase_loop ... ok
[INFO] [stdout] test runtime::construction_routing_tests::mixed_cheapest_insertion_keeps_generic_construction_path ... ok
[INFO] [stdout] test runtime::construction_routing_tests::mixed_first_fit_keeps_generic_construction_path ... ok
[INFO] [stdout] test runtime::construction_routing_tests::pure_scalar_cheapest_insertion_uses_descriptor_path ... ok
[INFO] [stdout] test runtime::construction_routing_tests::pure_scalar_first_fit_uses_descriptor_path ... ok
[INFO] [stdout] test runtime::construction_routing_tests::scalar_only_heuristics_still_route_to_descriptor_path ... ok
[INFO] [stdout] test runtime::list_tests::empty_list_runtime_builds_construction_plus_streaming_local_search ... ok
[INFO] [stdout] test run::tests::load_solver_config_from_preserves_file_settings ... ok
[INFO] [stdout] test runtime::list_tests::generic_list_only_first_fit_uses_canonical_order ... ok
[INFO] [stdout] test realtime::solver_handle::tests::multiple_changes ... ok
[INFO] [stdout] test runtime::tests::coupled_scalar_witness_is_hard_feasible_only_as_compound_assignment ... ok
[INFO] [stdout] test runtime::tests::default_scalar_assignment_construction_does_not_fill_optional_slots_in_required_pass ... ok
[INFO] [stdout] test phase::partitioned::phase::tests::partitioned_search_honors_specific_thread_count ... ok
[INFO] [stdout] test runtime::list_tests::generic_list_only_cheapest_insertion_uses_global_best_score ... ok
[INFO] [stdout] test runtime::tests::default_scalar_assignment_construction_scores_required_assignment_values ... ok
[INFO] [stdout] test phase::exhaustive::node::tests::test_optimistic_bound_pruning ... ok
[INFO] [stdout] test runtime::tests::entity_class_target_matches_scalar_and_list_in_same_owner ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::test_accepted_count_forager_ignores_candidates_after_limit ... ok
[INFO] [stdout] test runtime::tests::grouped_scalar_construction_applies_group_candidate_limit_separately ... ok
[INFO] [stdout] test runtime::tests::grouped_assignment_vnd_improves_soft_assignment_cost_after_feasibility ... ok
[INFO] [stdout] test runtime::tests::grouped_scalar_construction_applies_group_limit_after_frontier_filtering ... ok
[INFO] [stdout] test runtime::tests::generic_mixed_phase_reopens_optional_none_after_list_commit ... ok
[INFO] [stdout] test runtime::tests::grouped_scalar_construction_config_limits_override_model_limits ... ok
[INFO] [stdout] test runtime::tests::grouped_scalar_construction_reaches_coupled_hard_witness ... ok
[INFO] [stdout] test runtime::tests::grouped_scalar_construction_uses_model_owned_candidate_limits ... ok
[INFO] [stdout] test runtime::tests::grouped_scalar_construction_skips_already_assigned_slots ... ok
[INFO] [stdout] test runtime::tests::grouped_scalar_first_fit_scans_past_worse_candidate_for_later_improvement ... ok
[INFO] [stdout] test runtime::tests::grouped_scalar_keep_current_marks_scalar_slots_complete ... ok
[INFO] [stdout] test runtime::tests::list_round_robin_runtime_appends_after_existing_elements ... ok
[INFO] [stdout] test runtime::tests::list_target_matches_variable_name_across_all_owners ... ok
[INFO] [stdout] test runtime::tests::grouped_scalar_weakest_fit_uses_candidate_strength_key ... ok
[INFO] [stdout] test runtime::tests::mixed_cheapest_insertion_breaks_equal_scores_by_canonical_order ... ok
[INFO] [stdout] test runtime::tests::queue_runtime_allocate_to_value_from_queue_uses_model_hook_without_descriptor_keys ... ok
[INFO] [stdout] test runtime::tests::queue_runtime_allocate_entity_from_queue_uses_model_hook_without_descriptor_keys ... ok
[INFO] [stdout] test runtime::tests::no_op_runtime_construction_still_seeds_score_and_best_solution ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_augmenting_rematch_emits_bounded_rotation ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_best_solution_callback_reports_current_remaining_required_slots ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_construction_assigns_optional_only_after_required_complete ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_construction_displaces_optional_occupant_for_required_slot ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_cheapest_insertion_scores_required_assignment_values ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_construction_fills_required_slots_with_free_capacity ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_cheapest_insertion_scores_multi_required_allocations ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_construction_forces_required_assignment_for_soft_score_worse_move ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_construction_honors_explicit_optional_assignment_obligation ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_construction_ignores_repair_move_cap ... ok
[INFO] [stdout] test runtime::tests::list_target_matches_entity_class_only ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_construction_forces_required_assignment_when_hard_neutral_soft_worse ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_construction_reports_remaining_required_slots_without_panic ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_construction_moves_required_blocker_through_augmenting_path ... ok
[INFO] [stdout] test phase::localsearch::acceptor::tests::tabu_search_rejects_zero_tenures_at_acceptor_boundary ... ok
[INFO] [stdout] test phase::localsearch::forager::tests::test_accepted_count_forager_zero_panics - should panic ... ok
[INFO] [stdout] test run::tests::log_solve_start_rejects_ambiguous_scale ... ok
[INFO] [stdout] test run::tests::log_solve_start_rejects_missing_scale ... ok
[INFO] [stdout] test runtime::tests::construction_target_panics_when_no_variable_matches ... ok
[INFO] [stdout] test runtime::tests::explicit_scalar_construction_rejects_assignment_owned_variable - should panic ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_decreasing_heuristics_validate_entity_order_hook - should panic ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_dense_construction_uses_full_required_augmenting_chain ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_optional_construction_remains_score_improving_only ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_ejection_reinsert_emits_bounded_multi_slot_rebuild ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_live_construction_generates_only_current_assignment_placement ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_first_fit_uses_cursor_default_for_assignment_alternatives ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_reassignment_emits_bounded_direct_moves ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_rematch_emits_bounded_sequence_swap ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_rematch_orders_sequence_groups_deterministically ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_repair_uses_group_cap_when_selector_cap_is_omitted ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_repair_orders_capacity_conflict_groups_by_coverage_order ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_repair_falls_back_to_moving_preferred_keeper ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_selector_assigns_optional_unassigned_entities ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_selector_cap_overrides_group_cap ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_selector_deduplicates_equivalent_compound_edits ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_rule_filters_required_construction_candidates ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_selector_cap_rotates_across_cursor_openings ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_selector_emits_independent_pair_reassignment ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_selector_interleaves_later_assignment_families ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_selector_prioritizes_required_work ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_strength_heuristics_validate_value_order_hook - should panic ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_strongest_fit_uses_assignment_value_order ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_strongest_fit_orders_multi_required_allocations ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_selector_repairs_capacity_conflicts_without_losing_required ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_weakest_fit_orders_multi_required_allocations ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_weakest_fit_uses_assignment_value_order ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_sequence_window_exchanges_across_sequences ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_selector_transfers_optional_assignments_to_open_slots ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_selector_emits_only_hard_improving_required_moves ... ok
[INFO] [stdout] test runtime::tests::scalar_runtime_first_fit_required_slot_still_assigns_first_doable ... ok
[INFO] [stdout] test runtime::tests::scalar_runtime_frontier_marks_kept_optional_none_as_complete ... ok
[INFO] [stdout] test runtime::tests::scalar_construction_is_order_local_for_coupled_nullable_slots ... ok
[INFO] [stdout] test runtime::tests::scalar_runtime_first_fit_keeps_none_when_optional_baseline_is_not_beaten ... ok
[INFO] [stdout] test runtime::tests::scalar_runtime_first_fit_skips_worse_candidate_for_later_improvement ... ok
[INFO] [stdout] test runtime::tests::scalar_runtime_first_fit_takes_first_improving_candidate ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_selector_releases_optional_assigned_entities ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_selector_rechecks_temporal_neighbors_for_compound_moves ... ok
[INFO] [stdout] test runtime::tests::scalar_runtime_strongest_fit_assigns_from_runtime_value_order_hook ... ok
[INFO] [stdout] test runtime::tests::scalar_runtime_weakest_fit_assigns_from_runtime_value_order_hook ... ok
[INFO] [stdout] test runtime::tests::scalar_runtime_weakest_fit_keeps_none_from_runtime_value_order_hook ... ok
[INFO] [stdout] test runtime::tests::scalar_runtime_strongest_fit_keeps_none_from_runtime_value_order_hook ... ok
[INFO] [stdout] test runtime::tests::targeted_multi_owner_list_round_robin_runs_all_matching_owners ... ok
[INFO] [stdout] test runtime::tests::scalar_target_matches_entity_class_only_target ... ok
[INFO] [stdout] test runtime::tests::targeted_multi_owner_list_round_robin_panics_when_no_owner_matches ... ok
[INFO] [stdout] test runtime::tests::untargeted_multi_owner_list_round_robin_runs_all_owners_in_declaration_order ... ok
[INFO] [stdout] test scope::tests::inphase_best_score_limit_requests_search_config_termination ... ok
[INFO] [stdout] test scope::tests::test_replace_working_solution_reinitializes_revision_and_frontier ... ok
[INFO] [stdout] test scope::tests::test_solver_scope_creation ... ok
[INFO] [stdout] test scope::tests::test_solver_scope_mutate_advances_revision_once ... ok
[INFO] [stdout] test scope::tests::test_solver_scope_promotes_current_solution_on_score_tie ... ok
[INFO] [stdout] test scope::tests::test_phase_scope ... ok
[INFO] [stdout] test scope::tests::inphase_best_score_limit_requests_construction_config_termination ... ok
[INFO] [stdout] test scope::tests::test_solver_scope_step_count ... ok
[INFO] [stdout] test scope::tests::test_solver_scope_update_best ... ok
[INFO] [stdout] test scope::tests::test_step_scope ... ok
[INFO] [stdout] test stats::tests::format_duration_uses_exact_integer_units ... ok
[INFO] [stdout] test stats::tests::phase_stats_track_generation_and_evaluation_separately ... ok
[INFO] [stdout] test stats::tests::solver_scalar_assignment_remaining_aggregates_by_group ... ok
[INFO] [stdout] test stats::tests::solver_snapshot_includes_selector_level_telemetry ... ok
[INFO] [stdout] test stats::tests::throughput_helpers_use_stage_specific_durations ... ok
[INFO] [stdout] test stats::tests::unattributed_applied_moves_do_not_create_selector_zero_telemetry ... ok
[INFO] [stdout] test stats::tests::whole_units_per_second_uses_integer_rate_math ... ok
[INFO] [stdout] test termination::diminished_returns::tests::test_not_terminated_during_grace_period ... ok
[INFO] [stdout] test runtime::tests::scalar_assignment_repair_honors_value_candidate_limit_when_relocating_blocker ... ok
[INFO] [stdout] test stats::tests::solver_snapshot_prefers_observed_selector_label ... ok
[INFO] [stdout] test stats::tests::solver_snapshot_preserves_exact_counts_and_durations ... ok
[INFO] [stdout] test termination::tests::test_and_termination ... ok
[INFO] [stdout] test termination::tests::test_best_score_feasible_termination ... ok
[INFO] [stdout] test termination::tests::test_best_score_feasible_termination_custom ... ok
[INFO] [stdout] test termination::tests::test_best_score_termination_exceeded ... ok
[INFO] [stdout] test runtime::tests::targeted_multi_owner_list_round_robin_runs_only_matching_owner ... ok
[INFO] [stdout] test termination::tests::test_diminished_not_terminated_during_grace_period ... ok
[INFO] [stdout] test termination::tests::test_best_score_feasible_termination_not_feasible ... ok
[INFO] [stdout] test termination::tests::test_best_score_termination_no_score ... ok
[INFO] [stdout] test termination::tests::test_best_score_termination_not_reached ... ok
[INFO] [stdout] test termination::tests::test_best_score_termination_reached ... ok
[INFO] [stdout] test termination::tests::test_unimproved_step_count_termination ... ok
[INFO] [stdout] test termination::tests::test_unimproved_step_count_termination_with_improvement ... ok
[INFO] [stdout] test termination::tests::test_unimproved_time_termination_initial_score ... ok
[INFO] [stdout] test termination::tests::test_unimproved_time_termination_no_score ... ok
[INFO] [stdout] test test_utils::tests::test_conflict_calculation_no_conflicts ... ok
[INFO] [stdout] test test_utils::tests::test_conflict_calculation_row_conflict ... ok
[INFO] [stdout] test test_utils::tests::test_create_scope ... ok
[INFO] [stdout] test test_utils::tests::test_create_scope_with_score ... ok
[INFO] [stdout] test test_utils::tests::test_nqueens_solution_creation ... ok
[INFO] [stdout] test test_utils::tests::test_queen_creation ... ok
[INFO] [stdout] test test_utils::tests::test_solution_creation ... ok
[INFO] [stdout] test termination::tests::test_or_termination ... ok
[INFO] [stdout] test test_utils::tests::test_conflict_calculation_diagonal_conflict ... ok
[INFO] [stdout] test termination::diminished_returns::tests::test_no_score_does_not_terminate ... ok
[INFO] [stdout] test termination::tests::test_step_count_termination ... ok
[INFO] [stdout] test termination::tests::test_diminished_no_score_does_not_terminate ... ok
[INFO] [stdout] test termination::diminished_returns::tests::test_not_terminated_with_sufficient_improvement ... ok
[INFO] [stdout] test termination::tests::test_diminished_not_terminated_with_sufficient_improvement ... ok
[INFO] [stdout] test heuristic::selector::tests::list_neighborhood::bench_list_swap_cursor_enumeration ... ok
[INFO] [stdout] test termination::diminished_returns::tests::test_terminates_with_zero_improvement ... ok
[INFO] [stdout] test termination::tests::test_diminished_terminates_with_zero_improvement ... ok
[INFO] [stdout] test heuristic::selector::tests::nearby_list::bench_nearby_list_swap_cursor_enumeration ... ok
[INFO] [stdout] test heuristic::selector::tests::list_neighborhood::bench_list_change_cursor_enumeration ... ok
[INFO] [stdout] test heuristic::selector::tests::sublist_neighborhood::bench_sublist_swap_cursor_enumeration ... ok
[INFO] [stdout] test heuristic::selector::tests::sublist_neighborhood::bench_sublist_change_cursor_enumeration ... ok
[INFO] [stdout] test heuristic::selector::tests::nearby_list::bench_nearby_list_change_cursor_enumeration ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 673 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.07s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests solverforge_solver
[INFO] [stdout] 
[INFO] [stdout] running 39 tests
[INFO] [stdout] test src/heuristic/move/arena.rs - heuristic::r#move::arena::MoveArena (line 32) ... ok
[INFO] [stdout] test src/heuristic/move/list_union.rs - heuristic::r#move::list_union::ListMoveUnion (line 27) ... ok
[INFO] [stdout] test src/heuristic/move/list_change.rs - heuristic::r#move::list_change::ListChangeMove (line 33) ... ok
[INFO] [stdout] test src/heuristic/selector/decorator/sorting.rs - heuristic::selector::decorator::sorting::SortingMoveSelector (line 27) ... ok
[INFO] [stdout] test src/heuristic/move/list_swap.rs - heuristic::r#move::list_swap::ListSwapMove (line 34) ... ok
[INFO] [stdout] test src/heuristic/move/swap.rs - heuristic::r#move::swap::SwapMove (line 33) ... ok
[INFO] [stdout] test src/heuristic/move/sublist_change.rs - heuristic::r#move::sublist_change::SublistChangeMove (line 36) ... ok
[INFO] [stdout] test src/heuristic/move/k_opt_reconnection.rs - heuristic::r#move::k_opt_reconnection::enumerate_reconnections (line 250) ... ok
[INFO] [stdout] test src/heuristic/move/k_opt_reconnection.rs - heuristic::r#move::k_opt_reconnection::THREE_OPT_RECONNECTIONS (line 209) ... ok
[INFO] [stdout] test src/heuristic/selector/decorator/filtering.rs - heuristic::selector::decorator::filtering::FilteringMoveSelector (line 26) ... ok
[INFO] [stdout] test src/heuristic/move/sublist_swap.rs - heuristic::r#move::sublist_swap::SublistSwapMove (line 36) ... ok
[INFO] [stdout] test src/heuristic/move/ruin.rs - heuristic::r#move::ruin::RuinMove (line 35) ... ok
[INFO] [stdout] test src/manager/phase_factory/list_clarke_wright.rs - manager::phase_factory::list_clarke_wright::ListClarkeWrightPhase (line 44) ... ok
[INFO] [stdout] test src/heuristic/move/list_reverse.rs - heuristic::r#move::list_reverse::ListReverseMove (line 35) ... ok
[INFO] [stdout] test src/heuristic/selector/decorator/shuffling.rs - heuristic::selector::decorator::shuffling::ShufflingMoveSelector (line 29) ... ok
[INFO] [stdout] test src/heuristic/selector/decorator/probability.rs - heuristic::selector::decorator::probability::ProbabilityMoveSelector (line 30) ... ok
[INFO] [stdout] test src/heuristic/move/list_ruin.rs - heuristic::r#move::list_ruin::ListRuinMove (line 37) ... ok
[INFO] [stdout] test src/manager/solution_manager.rs - manager::solution_manager::Analyzable (line 38) ... ok
[INFO] [stdout] test src/heuristic/selector/nearby.rs - heuristic::selector::nearby::NearbyDistanceMeter (line 35) ... ok
[INFO] [stdout] test src/manager/solver_factory.rs - manager::solver_factory::SolverFactory<S,(),(),(),()>::builder (line 112) ... ok
[INFO] [stdout] test src/manager/solution_manager.rs - manager::solution_manager::analyze (line 78) ... ok
[INFO] [stdout] test src/manager/phase_factory/k_opt.rs - manager::phase_factory::k_opt::KOptPhaseBuilder (line 31) ... ok
[INFO] [stdout] test src/phase/construction/placer.rs - phase::construction::placer::SortedEntityPlacer (line 397) ... ok
[INFO] [stdout] test src/phase/localsearch/acceptor/late_acceptance.rs - phase::localsearch::acceptor::late_acceptance::LateAcceptanceAcceptor (line 17) ... ok
[INFO] [stdout] test src/phase/exhaustive/phase.rs - phase::exhaustive::phase::ExhaustiveSearchPhase (line 31) ... ok
[INFO] [stdout] test src/heuristic/selector/decorator/union.rs - heuristic::selector::decorator::union::UnionMoveSelector (line 24) ... ok
[INFO] [stdout] test src/phase/localsearch/acceptor/great_deluge.rs - phase::localsearch::acceptor::great_deluge::GreatDelugeAcceptor (line 25) ... ok
[INFO] [stdout] test src/manager/phase_factory/list_construction/regret.rs - manager::phase_factory::list_construction::regret::ListRegretInsertionPhase (line 37) ... ok
[INFO] [stdout] test src/termination/unimproved.rs - termination::unimproved::UnimprovedStepCountTermination (line 23) ... ok
[INFO] [stdout] test src/manager/phase_factory/list_k_opt.rs - manager::phase_factory::list_k_opt::ListKOptPhase (line 31) ... ok
[INFO] [stdout] test src/manager/phase_factory/list_construction/cheapest.rs - manager::phase_factory::list_construction::cheapest::ListCheapestInsertionPhase (line 33) ... ok
[INFO] [stdout] test src/termination/unimproved.rs - termination::unimproved::UnimprovedTimeTermination (line 137) ... ok
[INFO] [stdout] test src/realtime/problem_change.rs - realtime::problem_change::ProblemChange (line 24) ... ok
[INFO] [stdout] test src/phase/localsearch/acceptor/diversified_late_acceptance.rs - phase::localsearch::acceptor::diversified_late_acceptance::DiversifiedLateAcceptanceAcceptor (line 24) ... ok
[INFO] [stdout] test src/phase/localsearch/acceptor/step_counting.rs - phase::localsearch::acceptor::step_counting::StepCountingHillClimbingAcceptor (line 21) ... ok
[INFO] [stdout] test src/manager/phase_factory/list_construction/round_robin.rs - manager::phase_factory::list_construction::round_robin::ListConstructionPhaseBuilder (line 36) ... ok
[INFO] [stdout] test src/realtime/problem_change.rs - realtime::problem_change::ClosureProblemChange (line 96) ... ok
[INFO] [stdout] test src/termination/diminished_returns.rs - termination::diminished_returns::DiminishedReturnsTermination (line 28) ... ok
[INFO] [stdout] test src/realtime/solver_handle.rs - realtime::solver_handle::SolverHandle (line 32) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 39 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.76s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "fd0cd6f7b8a9e1c058508ce5d15eaa2f2d8b7c7d9fc30b6593689658f4113593", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fd0cd6f7b8a9e1c058508ce5d15eaa2f2d8b7c7d9fc30b6593689658f4113593", kill_on_drop: false }`
[INFO] [stdout] fd0cd6f7b8a9e1c058508ce5d15eaa2f2d8b7c7d9fc30b6593689658f4113593
