[INFO] cloning repository https://github.com/Mec-iS/arrowspace-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Mec-iS/arrowspace-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMec-iS%2Farrowspace-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMec-iS%2Farrowspace-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 306145d12ee6408f41dd4737217105f8cb9ba4ab
[INFO] testing Mec-iS/arrowspace-rs against master#1ef7943ee607160a564655b6596f83670ef95df5 for pr-146098-6
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMec-iS%2Farrowspace-rs" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Mec-iS/arrowspace-rs
[INFO] finished tweaking git repo https://github.com/Mec-iS/arrowspace-rs
[INFO] tweaked toml for git repo https://github.com/Mec-iS/arrowspace-rs written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Mec-iS/arrowspace-rs on toolchain 1ef7943ee607160a564655b6596f83670ef95df5
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1ef7943ee607160a564655b6596f83670ef95df5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Mec-iS/arrowspace-rs 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" "+1ef7943ee607160a564655b6596f83670ef95df5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: /workspace/builds/worker-1-tc1/source/Cargo.toml: unused manifest key: examples
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded uuid v1.18.1
[INFO] [stderr]   Downloaded erased-serde v0.4.8
[INFO] [stderr]   Downloaded rand_xoshiro v0.7.0
[INFO] [stderr]   Downloaded inventory v0.3.21
[INFO] [stderr]   Downloaded typetag-impl v0.2.21
[INFO] [stderr]   Downloaded alga v0.9.3
[INFO] [stderr]   Downloaded rand_pcg v0.9.0
[INFO] [stderr]   Downloaded typetag v0.2.21
[INFO] [stderr]   Downloaded criterion-plot v0.6.0
[INFO] [stderr]   Downloaded flatbuffers v25.9.23
[INFO] [stderr]   Downloaded integer-encoding v3.0.4
[INFO] [stderr]   Downloaded arrow-csv v57.0.0
[INFO] [stderr]   Downloaded arrow-row v57.0.0
[INFO] [stderr]   Downloaded arrow-ord v57.0.0
[INFO] [stderr]   Downloaded arrow-arith v57.0.0
[INFO] [stderr]   Downloaded arrow v57.0.0
[INFO] [stderr]   Downloaded criterion v0.7.0
[INFO] [stderr]   Downloaded lexical-write-float v1.0.6
[INFO] [stderr]   Downloaded lexical-util v1.0.7
[INFO] [stderr]   Downloaded arrow-ipc v57.0.0
[INFO] [stderr]   Downloaded lexical-parse-float v1.0.6
[INFO] [stderr]   Downloaded arrow-cast v57.0.0
[INFO] [stderr]   Downloaded arrow-buffer v57.0.0
[INFO] [stderr]   Downloaded arrow-select v57.0.0
[INFO] [stderr]   Downloaded arrow-array v57.0.0
[INFO] [stderr]   Downloaded smartcore v0.4.5
[INFO] [stderr]   Downloaded arrow-json v57.0.0
[INFO] [stderr]   Downloaded arrow-schema v57.0.0
[INFO] [stderr]   Downloaded sprs v0.11.3
[INFO] [stderr]   Downloaded arrow-data v57.0.0
[INFO] [stderr]   Downloaded arrow-string v57.0.0
[INFO] [stderr]   Downloaded lexical-write-integer v1.0.6
[INFO] [stderr]   Downloaded thrift v0.17.0
[INFO] [stderr]   Downloaded twox-hash v2.1.2
[INFO] [stderr]   Downloaded lexical-parse-integer v1.0.6
[INFO] [stderr]   Downloaded lexical-core v1.0.6
[INFO] [stderr]   Downloaded parquet v57.0.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+1ef7943ee607160a564655b6596f83670ef95df5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 15652fd7fdeb28699892cccc4a8d51db3a089500e8149ebd969ec3e3e0ee38c7
[INFO] running `Command { std: "docker" "start" "-a" "15652fd7fdeb28699892cccc4a8d51db3a089500e8149ebd969ec3e3e0ee38c7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "15652fd7fdeb28699892cccc4a8d51db3a089500e8149ebd969ec3e3e0ee38c7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "15652fd7fdeb28699892cccc4a8d51db3a089500e8149ebd969ec3e3e0ee38c7", kill_on_drop: false }`
[INFO] [stdout] 15652fd7fdeb28699892cccc4a8d51db3a089500e8149ebd969ec3e3e0ee38c7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+1ef7943ee607160a564655b6596f83670ef95df5" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8bd2b0d31d384554d7ff1f57bfcd9a652b68ce6b34c3ee6b5440d9a47faec2bc
[INFO] running `Command { std: "docker" "start" "-a" "8bd2b0d31d384554d7ff1f57bfcd9a652b68ce6b34c3ee6b5440d9a47faec2bc", kill_on_drop: false }`
[INFO] [stderr] warning: /opt/rustwide/workdir/Cargo.toml: unused manifest key: examples
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling num-complex v0.2.4
[INFO] [stderr]    Compiling matrixmultiply v0.3.10
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling anstyle-query v1.1.4
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling approx v0.3.2
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling ordered-float v5.1.0
[INFO] [stderr]    Compiling approx v0.5.1
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling jiff v0.2.15
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling dashmap v6.1.0
[INFO] [stderr]    Compiling num v0.4.3
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling ndarray v0.16.1
[INFO] [stderr]    Compiling smartcore v0.4.5
[INFO] [stderr]    Compiling alga v0.9.3
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling syn v2.0.108
[INFO] [stderr]    Compiling rand_distr v0.5.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling env_filter v0.1.4
[INFO] [stderr]    Compiling sprs v0.11.3
[INFO] [stderr]    Compiling env_logger v0.11.8
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling arrowspace v0.22.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.37s
[INFO] running `Command { std: "docker" "inspect" "8bd2b0d31d384554d7ff1f57bfcd9a652b68ce6b34c3ee6b5440d9a47faec2bc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8bd2b0d31d384554d7ff1f57bfcd9a652b68ce6b34c3ee6b5440d9a47faec2bc", kill_on_drop: false }`
[INFO] [stdout] 8bd2b0d31d384554d7ff1f57bfcd9a652b68ce6b34c3ee6b5440d9a47faec2bc
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+1ef7943ee607160a564655b6596f83670ef95df5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9b787d974a75e40fdd798bab965ab300f5e4216855eb3f7f6b3fb70262dc2cca
[INFO] running `Command { std: "docker" "start" "-a" "9b787d974a75e40fdd798bab965ab300f5e4216855eb3f7f6b3fb70262dc2cca", kill_on_drop: false }`
[INFO] [stderr] warning: /opt/rustwide/workdir/Cargo.toml: unused manifest key: examples
[INFO] [stderr]    Compiling typeid v1.0.3
[INFO] [stderr]    Compiling erased-serde v0.4.8
[INFO] [stderr]    Compiling typetag v0.2.21
[INFO] [stderr]    Compiling syn v2.0.108
[INFO] [stderr]    Compiling inventory v0.3.21
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling clap_builder v4.5.50
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling sprs v0.11.3
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling rand_xoshiro v0.7.0
[INFO] [stderr]    Compiling rand_pcg v0.9.0
[INFO] [stderr]    Compiling clap v4.5.50
[INFO] [stderr]    Compiling criterion-plot v0.6.0
[INFO] [stderr]    Compiling tempfile v3.23.0
[INFO] [stderr]    Compiling zerocopy-derive v0.8.27
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling typetag-impl v0.2.21
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling criterion v0.7.0
[INFO] [stderr]    Compiling rand_distr v0.4.3
[INFO] [stderr]    Compiling rand_distr v0.5.1
[INFO] [stderr]    Compiling smartcore v0.4.5
[INFO] [stderr]    Compiling arrowspace v0.22.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 47.90s
[INFO] running `Command { std: "docker" "inspect" "9b787d974a75e40fdd798bab965ab300f5e4216855eb3f7f6b3fb70262dc2cca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9b787d974a75e40fdd798bab965ab300f5e4216855eb3f7f6b3fb70262dc2cca", kill_on_drop: false }`
[INFO] [stdout] 9b787d974a75e40fdd798bab965ab300f5e4216855eb3f7f6b3fb70262dc2cca
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+1ef7943ee607160a564655b6596f83670ef95df5" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 489ab628b6c0daa7389452a8d9da34a4b08d827d536cc1d913637abfa8f2292a
[INFO] running `Command { std: "docker" "start" "-a" "489ab628b6c0daa7389452a8d9da34a4b08d827d536cc1d913637abfa8f2292a", kill_on_drop: false }`
[INFO] [stderr] warning: /opt/rustwide/workdir/Cargo.toml: unused manifest key: examples
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/arrowspace-5f3b06c0f0a47dac)
[INFO] [stdout] 
[INFO] [stdout] running 198 tests
[INFO] [stdout] test tests::test_arrow::test_builder_normalisation_flag_is_preserved ... ok
[INFO] [stdout] test tests::test_arrow::test_builder_lambda_computation_with_different_tau_modes ... ok
[INFO] [stdout] test tests::test_arrow::test_builder_with_normalized_vs_unnormalized_items ... ok
[INFO] [stdout] test tests::test_builder::test_density_adaptive_aggressive_sampling ... ok
[INFO] [stdout] test tests::test_builder::test_density_adaptive_high_rate ... ok
[INFO] [stdout] test tests::test_builder::test_density_adaptive_sampling_basic ... ok
[INFO] [stdout] test tests::test_builder::simple_build ... ok
[INFO] [stdout] test tests::test_builder::test_density_adaptive_with_duplicates ... ok
[INFO] [stdout] test tests::test_builder::test_density_adaptive_with_uniform_data ... ok
[INFO] [stdout] test tests::test_builder::test_density_adaptive_vs_no_sampling ... ok
[INFO] [stdout] test tests::test_builder::test_simple_random_high_rate ... ignored, flaky, depends on how sampling happens
[INFO] [stdout] test tests::test_builder::test_simple_random_vs_density_adaptive ... ignored, flaky, depends on what happens in clustering
[INFO] [stdout] test tests::test_builder::lambda_graph_shape_matches_rows ... ok
[INFO] [stdout] test tests::test_clustering::test_calinski_harabasz_single_cluster ... ok
[INFO] [stdout] test tests::test_builder::test_density_adaptive_maintains_lambda_quality ... ok
[INFO] [stdout] test tests::test_clustering::test_calinski_harabasz_well_separated ... ok
[INFO] [stdout] test tests::test_clustering::test_clustering_heuristic_trait_interface ... ok
[INFO] [stdout] test tests::test_clustering::test_consistent_results_with_seed ... ok
[INFO] [stdout] test tests::test_clustering::test_euclidean_dist_basic ... ok
[INFO] [stdout] test tests::test_clustering::test_euclidean_dist_identity ... ok
[INFO] [stdout] test tests::test_clustering::test_euclidean_dist_one_dimensional ... ok
[INFO] [stdout] test tests::test_builder::test_with_deterministic_seed ... ok
[INFO] [stdout] test tests::test_clustering::test_calinski_harabasz_three_clusters ... ok
[INFO] [stdout] test tests::test_clustering::test_intrinsic_dimension_full_space ... ok
[INFO] [stdout] test tests::test_clustering::test_intrinsic_dimension_small_n ... ok
[INFO] [stdout] test tests::test_clustering::test_kmeans_convergence_early_stop ... ok
[INFO] [stdout] test tests::test_clustering::test_kmeans_empty_cluster_recovery ... ok
[INFO] [stdout] test tests::test_clustering::test_intrinsic_dimension_plane ... ok
[INFO] [stdout] test tests::test_clustering::test_kmeans_k_greater_than_n ... ok
[INFO] [stdout] test tests::test_arrow::test_builder_spectral_laplacian_computation ... ok
[INFO] [stdout] test tests::test_arrow::test_builder_clustering_produces_valid_assignments ... ok
[INFO] [stdout] test tests::test_clustering::test_kmeans_lloyd_k_equals_n ... ok
[INFO] [stdout] test tests::test_clustering::test_intrinsic_dimension_line ... ok
[INFO] [stdout] test tests::test_clustering::test_nearest_centroid_single ... ok
[INFO] [stdout] test tests::test_clustering::test_kmeans_lloyd_gaussian_blobs ... ok
[INFO] [stdout] test tests::test_clustering::test_nearest_centroid_middle ... ok
[INFO] [stdout] test tests::test_arrow::test_builder_direction_vs_magnitude_sensitivity ... ok
[INFO] [stdout] test tests::test_clustering::test_kmeans_k_equals_zero - should panic ... ok
[INFO] [stdout] test tests::test_clustering::test_kmeans_single_row - should panic ... ok
[INFO] [stdout] test tests::test_clustering::test_optimal_k_heuristic_small_n ... ok
[INFO] [stdout] test tests::test_clustering::test_optimal_k_minimum_viable_dataset ... ok
[INFO] [stdout] test tests::test_clustering::test_optimal_k_heuristic_degenerate_identical ... ok
[INFO] [stdout] test tests::test_clustering::test_optimal_k_performance_large_dataset ... ignored
[INFO] [stdout] test tests::test_clustering::test_optimal_k_mixed_scale_features ... ok
[INFO] [stdout] test tests::test_clustering::test_readme_example ... ok
[INFO] [stdout] test tests::test_clustering::test_optimal_k_very_high_dimensional ... ok
[INFO] [stdout] test tests::test_clustering::test_step1_bounds_high_dimensional ... ok
[INFO] [stdout] test tests::test_clustering::test_step1_bounds_small_dataset ... ok
[INFO] [stdout] test tests::test_clustering::test_threshold_all_points_identical ... ok
[INFO] [stdout] test tests::test_clustering::test_threshold_from_pilot_large_variance ... ok
[INFO] [stdout] test tests::test_clustering::test_threshold_from_pilot_single_point_per_cluster ... ok
[INFO] [stdout] test tests::test_clustering::test_threshold_from_pilot_two_clusters ... ok
[INFO] [stdout] test tests::test_clustering::test_step1_bounds_large_n_small_f ... ok
[INFO] [stdout] test tests::test_clustering::test_threshold_very_tight_clusters ... ok
[INFO] [stdout] test tests::test_clustering::test_threshold_zero_variance_clusters ... ok
[INFO] [stdout] test tests::test_arrow::test_builder_lambda_statistics ... ok
[INFO] [stdout] test tests::test_clustering::test_optimal_k_heuristic_synthetic_three_clusters ... ok
[INFO] [stdout] test tests::test_eigenmaps::test_eigenmaps_stages_produce_valid_state ... ok
[INFO] [stdout] test tests::test_builder::test_constant_sampler_preserves_outliers ... ok
[INFO] [stdout] test tests::test_clustering::test_optimal_k_heuristic_high_dimensional_random ... ok
[INFO] [stdout] test tests::test_builder::test_simple_random_aggressive_sampling ... ok
[INFO] [stdout] test tests::test_energy_builder::test_build_energy_requires_dims_reduction - should panic ... ok
[INFO] [stdout] test tests::test_arrow::test_builder_cluster_radius_impact ... ok
[INFO] [stdout] test tests::test_energy_builder::test_energy_build_custom_params ... ok
[INFO] [stdout] test tests::test_arrow::test_builder_dimensionality_reduction ... ok
[INFO] [stdout] test tests::test_eigenmaps::test_eigenmaps_non_sensical_undecidable_query - should panic ... ok
[INFO] [stdout] test tests::test_energy_builder::test_energy_build_basic ... ok
[INFO] [stdout] test tests::test_arrow::test_builder_with_inline_sampling ... ok
[INFO] [stdout] test tests::test_energy_builder::test_build_energy_dimensionality_reduction ... ok
[INFO] [stdout] test tests::test_energy_builder::test_energy_build_diffusion_splits ... ok
[INFO] [stdout] test tests::test_energy_builder::test_energy_build_taumode_consistency ... ok
[INFO] [stdout] test tests::test_energy_builder::test_energy_build_lambda_statistics ... ok
[INFO] [stdout] test tests::test_eigenmaps::test_search_without_taumode_panics - should panic ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_search_empty_k ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_no_cosine_dependence ... ok
[INFO] [stdout] test tests::test_clustering::test_optimal_k_heuristic_single_feature ... ok
[INFO] [stdout] test tests::test_eigenmaps::test_eigenmaps_vs_build_with_spectral ... ok
[INFO] [stdout] test tests::test_clustering::test_optimal_k_heuristic_spherical_clusters ... ok
[INFO] [stdout] test tests::test_builder::test_builder_unit_norm_diagonal_similarity ... ok
[INFO] [stdout] test tests::test_builder::build_from_rows_with_lambda_graph ... ok
[INFO] [stdout] test tests::test_builder::test_density_adaptive_sampling_statistics ... ok
[INFO] [stdout] test tests::test_builder::build_with_lambda_graph_over_product_like_rows ... ok
[INFO] [stdout] test tests::test_eigenmaps::test_eigenmaps_vs_build_different_taumode ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_search_basic ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_search_single ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_search_weight_tuning ... ok
[INFO] [stdout] test tests::test_eigenmaps::test_eigenmaps_vs_build_basic ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_vs_standard_recall_at_k ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_vs_energy_extra_dims_reduction_recall_at_k ... FAILED
[INFO] [stdout] test tests::test_energy_search::test_energy_vs_standard_build_time ... ok
[INFO] [stdout] test tests::test_graph_factory::test_builder_basic_clustering_with_synthetic_data ... ok
[INFO] [stdout] test tests::test_graph_factory::test_builder_lambda_values_are_nonnegative ... ok
[INFO] [stdout] test tests::test_graph_factory::test_builder_laplacian_diagonal_properties ... ok
[INFO] [stdout] test tests::test_graph_factory::test_builder_minimum_items ... ok
[INFO] [stdout] test tests::test_graph_factory::test_builder_laplacian_symmetry ... ok
[INFO] [stdout] test tests::test_graph_factory::test_builder_parameter_preservation ... ok
[INFO] [stdout] test tests::test_graph_factory::test_builder_normalization_effects ... ok
[INFO] [stdout] test tests::test_graph_factory::test_builder_scale_invariance_with_normalization ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_vs_standard_graph_structure ... ok
[INFO] [stdout] test tests::test_energy_builder::test_energy_build_with_projection ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_search_k_scaling ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_search_high_dimensional ... ok
[INFO] [stdout] test tests::test_laplacian::test_cosine_similarity_based_construction ... ok
[INFO] [stdout] test tests::test_laplacian::test_eps_parameter_constraint ... ok
[INFO] [stdout] test tests::test_laplacian::test_insufficient_data_panics - should panic ... ok
[INFO] [stdout] test tests::test_laplacian::test_k_parameter_constraint ... ok
[INFO] [stdout] test tests::test_laplacian::test_basic_laplacian_construction ... ok
[INFO] [stdout] test tests::test_laplacian::test_laplacian_mathematical_properties ... ok
[INFO] [stdout] test tests::test_laplacian::test_arrowspace_integration_pattern_sparse ... ok
[INFO] [stdout] test tests::test_laplacian::test_optimized_sparse_matrix_laplacian ... ok
[INFO] [stdout] test tests::test_laplacian::test_numerical_stability ... ok
[INFO] [stdout] test tests::test_laplacian::test_with_adjacency_output ... ok
[INFO] [stdout] test tests::test_laplacian_unnormalised::test_builder_normalized_vs_unnormalized_clustering ... ok
[INFO] [stdout] test tests::test_laplacian_unnormalised::test_cosine_similarity_scale_invariance ... ok
[INFO] [stdout] test tests::test_laplacian_unnormalised::test_hybrid_similarity_components ... ok
[INFO] [stdout] test tests::test_laplacian_unnormalised::test_hybrid_similarity_scale_sensitivity ... ok
[INFO] [stdout] test tests::test_laplacian_unnormalised::test_magnitude_penalty_computation ... ok
[INFO] [stdout] test tests::test_graph_factory::test_builder_with_different_dimensions ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_vs_standard_search_overlap ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_search_score_monotonicity ... ok
[INFO] [stdout] test tests::test_laplacian_unnormalised::test_builder_graph_params_preservation ... ok
[INFO] [stdout] test tests::test_motives::test_motives_basic ... ok
[INFO] [stdout] test tests::test_laplacian_unnormalised::test_with_deterministic_clustering ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_vs_standard_lambda_distribution ... ok
[INFO] [stdout] test tests::test_motives::test_motives_energy_basic ... ok
[INFO] [stdout] test tests::test_laplacian_unnormalised::test_builder_lambda_comparison_normalized_vs_unnormalized ... ok
[INFO] [stdout] test tests::test_motives::test_motives_eigen_vs_energy_consistency ... ok
[INFO] [stdout] test tests::test_querying_proj::test_project_query_no_projection ... ok
[INFO] [stdout] test tests::test_querying_proj::test_prepare_query_item_consistency ... ok
[INFO] [stdout] test tests::test_motives::test_motives_basic_2 ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_search_self_retrieval ... ok
[INFO] [stdout] test tests::test_graph_factory::test_builder_spectral_laplacian_shape ... ok
[INFO] [stdout] test tests::test_querying_proj::test_project_query_preserves_scale_approximately ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_vs_standard_precision_at_k ... ok
[INFO] [stdout] test tests::test_querying_proj::test_project_query_linearity ... ok
[INFO] [stdout] test tests::test_querying_proj::test_project_query_preserves_dot_product_sign ... ok
[INFO] [stdout] test tests::test_querying_proj::test_lambda_values_reasonable_range ... ok
[INFO] [stdout] test tests::test_energy_builder::test_energy_laplacian_properties ... ok
[INFO] [stdout] test tests::test_querying_proj::test_project_query_consistency ... ok
[INFO] [stdout] test tests::test_graph_factory::test_builder_with_high_noise ... ok
[INFO] [stdout] test tests::test_reduction::test_full_pipeline_implicit_projection ... ok
[INFO] [stdout] test tests::test_reduction::test_implicit_projection_creates ... ok
[INFO] [stdout] test tests::test_reduction::test_implicit_projection_deterministic ... ok
[INFO] [stdout] test tests::test_reduction::test_implicit_projection_different_seeds ... ok
[INFO] [stdout] test tests::test_reduction::test_implicit_projection_dimensions ... ok
[INFO] [stdout] test tests::test_reduction::test_implicit_projection_linearity ... ok
[INFO] [stdout] test tests::test_reduction::test_implicit_projection_non_trivial ... ok
[INFO] [stdout] test tests::test_reduction::test_implicit_projection_preserves_scale ... ok
[INFO] [stdout] test tests::test_reduction::test_implicit_projection_zero_vector ... ok
[INFO] [stdout] test tests::test_reduction::test_jl_dimension_basic ... ok
[INFO] [stdout] test tests::test_reduction::test_jl_dimension_edge_case_small_epsilon ... ok
[INFO] [stdout] test tests::test_reduction::test_jl_dimension_formula_correctness ... ok
[INFO] [stdout] test tests::test_reduction::test_jl_dimension_grows_with_n ... ok
[INFO] [stdout] test tests::test_reduction::test_jl_dimension_inversely_proportional_epsilon ... ok
[INFO] [stdout] test tests::test_reduction::test_jl_dimension_large_dataset ... ok
[INFO] [stdout] test tests::test_reduction::test_jl_dimension_minimum_bound ... ok
[INFO] [stdout] test tests::test_reduction::test_jl_dimension_reasonable_range ... ok
[INFO] [stdout] test tests::test_reduction::test_jl_dimension_tight_epsilon ... ok
[INFO] [stdout] test tests::test_querying_proj::test_project_query_zero_vector ... ok
[INFO] [stdout] test tests::test_reduction::test_project_matrix_different_rows_different_projections ... ok
[INFO] [stdout] test tests::test_reduction::test_project_matrix_dimensions ... ok
[INFO] [stdout] test tests::test_querying_proj::test_query_dimension_mismatch_panics - should panic ... ok
[INFO] [stdout] test tests::test_reduction::test_project_matrix_zero_matrix ... ok
[INFO] [stdout] test tests::test_sparsification::test_sfgrass_basic ... ok
[INFO] [stdout] test tests::test_reduction::test_project_matrix_preserves_rows ... ok
[INFO] [stdout] test tests::test_sparsification::test_sfgrass_vs_no_sparsification ... ignored, depends on number of nodes
[INFO] [stdout] test tests::test_querying_proj::test_projection_preserves_relative_distances ... ok
[INFO] [stdout] test tests::test_reduction::test_memory_efficiency ... ok
[INFO] [stdout] test tests::test_sparsification::test_sfgrass_larger ... ok
[INFO] [stdout] test tests::test_taumode::test_builder_compute_lambdas_basic ... ok
[INFO] [stdout] test tests::test_taumode::test_builder_lambdas_consistency_properties ... ok
[INFO] [stdout] test tests::test_querying_proj::test_project_query_different_queries_differ ... ok
[INFO] [stdout] test tests::test_querying_proj::test_range_search_with_query_lambda ... ok
[INFO] [stdout] test tests::test_taumode::test_builder_lambdas_invariants ... ok
[INFO] [stdout] test tests::test_taumode::test_rayleigh_quotient_scale_invariance ... ok
[INFO] [stdout] test tests::test_taumode::test_select_tau_fixed ... ok
[INFO] [stdout] test tests::test_taumode::test_select_tau_floor_enforcement ... ok
[INFO] [stdout] test tests::test_taumode::test_select_tau_mean ... ok
[INFO] [stdout] test tests::test_taumode::test_select_tau_median ... ok
[INFO] [stdout] test tests::test_taumode::test_select_tau_percentile ... ok
[INFO] [stdout] test tests::test_taumode::test_tau_floor_constant ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_search_optimized ... ok
[INFO] [stdout] test tests::test_taumode::test_energy_lambda_computation_bounds ... ok
[INFO] [stdout] test tests::test_energy_builder::test_energy_build_with_optical_compression ... ok
[INFO] [stdout] test tests::test_querying_proj::test_search_returns_top_k_exactly ... ok
[INFO] [stdout] test tests::test_taumode::test_builder_lambdas_different_tau_modes ... ok
[INFO] [stdout] test tests::test_taumode::test_taumode_consistency_with_projection ... ok
[INFO] [stdout] test tests::test_taumode::test_taumode_energy_consistency_with_projection ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_search_lambda_proximity has been running for over 60 seconds
[INFO] [stdout] test tests::test_energy_search::test_energy_search_optical_compression has been running for over 60 seconds
[INFO] [stdout] test tests::test_energy_search::test_energy_search_lambda_proximity ... ok
[INFO] [stdout] test tests::test_querying_proj::test_search_lambda_aware_hybrid ... ok
[INFO] [stdout] test tests::test_querying_proj::test_query_with_projection_enabled ... ok
[INFO] [stdout] test tests::test_taumode::test_builder_lambdas_nondeterministic_with_projection ... ok
[INFO] [stdout] test tests::test_energy_search::test_energy_search_optical_compression ... ok
[INFO] [stdout] test tests::test_taumode::test_energy_dimension_consistency ... ok
[INFO] [stdout] test tests::test_querying_proj::test_query_with_nan_values - should panic ... ok
[INFO] [stdout] test tests::test_querying_proj::test_query_without_projection ... ok
[INFO] [stdout] test tests::test_taumode::test_builder_lambdas_with_larger_dataset ... ok
[INFO] [stdout] test tests::test_querying_proj::test_search_lambda_aware_alpha_effect ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_energy_search::test_energy_vs_energy_extra_dims_reduction_recall_at_k stdout ----
[INFO] [stdout] [2025-11-08T12:35:27Z INFO  arrowspace::tests::test_energy_search] Test: energy vs energy (with vs without extra dims reduction) recall@k
[INFO] [stdout] [2025-11-08T12:35:27Z INFO  arrowspace::builder] Initializing new ArrowSpaceBuilder
[INFO] [stdout] [2025-11-08T12:35:27Z DEBUG arrowspace::builder] Creating ArrowSpaceBuilder with default parameters
[INFO] [stdout] [2025-11-08T12:35:27Z INFO  arrowspace::builder] Configuring lambda graph: eps=0.8, k=3, p=2, sigma=None
[INFO] [stdout] [2025-11-08T12:35:27Z DEBUG arrowspace::builder] Lambda graph will use raw item magnitudes for normalization
[INFO] [stdout] [2025-11-08T12:35:27Z INFO  arrowspace::builder] Setting custom clustering seed: 333
[INFO] [stdout] [2025-11-08T12:35:27Z INFO  arrowspace::builder] Configuring inline sampling: None
[INFO] [stdout] [2025-11-08T12:35:27Z INFO  arrowspace::energymaps] Creating adaptive EnergyParams from ArrowSpaceBuilder
[INFO] [stdout] [2025-11-08T12:35:27Z WARN  arrowspace::energymaps] Using dim-reduction heuristic: optical_tokens=200 (consider setting expected_nitems for better scaling)
[INFO] [stdout] [2025-11-08T12:35:27Z DEBUG arrowspace::energymaps] Adaptive params: neighbor_k=15, candidate_m=45, optical_tokens=Some(200)
[INFO] [stdout] [2025-11-08T12:35:27Z INFO  arrowspace::eigenmaps] EigenMaps::start_clustering: N=78 items, F=100 features
[INFO] [stdout] [2025-11-08T12:35:27Z DEBUG arrowspace::eigenmaps] Creating ArrowSpace with taumode: Median
[INFO] [stdout] [2025-11-08T12:35:27Z INFO  arrowspace::sampling] Simple random sampler with keep rate 100.0%
[INFO] [stdout] [2025-11-08T12:35:27Z INFO  arrowspace::eigenmaps] Computing optimal clustering parameters
[INFO] [stdout] [2025-11-08T12:35:27Z INFO  arrowspace::clustering] Computing optimal K for clustering: N=78, F=100
[INFO] [stdout] [2025-11-08T12:35:27Z DEBUG arrowspace::clustering] Two-NN mean ratio: 1.0263, estimated ID: 39
[INFO] [stdout] [2025-11-08T12:35:27Z DEBUG arrowspace::clustering] Intrinsic dimension estimate: 39
[INFO] [stdout] [2025-11-08T12:35:27Z DEBUG arrowspace::clustering] Testing K in range [3, 7] with step 1
[INFO] [stdout] [2025-11-08T12:35:28Z DEBUG arrowspace::clustering] Best K=3 with penalized score=-9.2674
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::clustering] Standard threshold: radius=7373.836370
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::eigenmaps] Optimal clustering: K=3, radius=7373.836370, intrinsic_dim=39
[INFO] [stdout] [2025-11-08T12:35:29Z INFO  arrowspace::eigenmaps] Running incremental clustering: max_clusters=3, radius=7373.836370
[INFO] [stdout] [2025-11-08T12:35:29Z INFO  arrowspace::clustering] Starting incremental clustering with inline sampling
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::clustering] Parameters: max_clusters=3, radius=7373.8364
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::clustering] Clustering produced 3 centroids from 78 rows (100% sampling)
[INFO] [stdout] [2025-11-08T12:35:29Z INFO  arrowspace::eigenmaps] Clustering complete: 3 centroids, 78 items assigned
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::reduction] Computing JL optimal dimensions for n_points 3
[INFO] [stdout] [2025-11-08T12:35:29Z INFO  arrowspace::eigenmaps] Applying JL projection: 100 features → 50 dimensions (ε=0.20)
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::reduction] Computing project matrix for projection ImplicitProjection { original_dim: 100, reduced_dim: 50, seed: 16680475505970762118 }
[INFO] [stdout] [2025-11-08T12:35:29Z INFO  arrowspace::eigenmaps] Projection complete: 2.0x compression, stored as 8-byte seed
[INFO] [stdout] [2025-11-08T12:35:29Z INFO  arrowspace::energymaps] EnergyMaps::optical_compress_centroids: target=200 tokens, trim_q=0.10
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::energymaps] Input centroids: 3 × 50 (X centroids, F features)
[INFO] [stdout] [2025-11-08T12:35:29Z INFO  arrowspace::energymaps] Optical compression skipped: budget 200 >= centroids 3
[INFO] [stdout] [2025-11-08T12:35:29Z INFO  arrowspace::energymaps] EnergyMaps::bootstrap_centroid_laplacian: k=3, normalise=false
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::energymaps] Building bootstrap L₀ on 3 centroids (nodes) × 50 features
[INFO] [stdout] [2025-11-08T12:35:29Z INFO  arrowspace::laplacian] Building Laplacian matrix for 3 items with 50 features
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::laplacian] Graph parameters: eps=0.8, k=2, p=2, sigma=None, normalise=false
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::laplacian] Skipping normalization - using raw item magnitudes
[INFO] [stdout] [2025-11-08T12:35:29Z INFO  arrowspace::laplacian] Building CosinePair data structure
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::laplacian] CosinePair structure built for 50 items
[INFO] [stdout] [2025-11-08T12:35:29Z INFO  arrowspace::laplacian] Computing degrees for inline sparsification
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::laplacian] Skipping sparsification (avg degree 1.0)
[INFO] [stdout] [2025-11-08T12:35:29Z INFO  arrowspace::laplacian] Computing k-NN with CosinePair: k=3
[INFO] [stdout] [2025-11-08T12:35:29Z DEBUG arrowspace::laplacian] Built adjacency rows for 50 items
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::laplacian] Converting adjacency to sparse Laplacian matrix (DashMap batched)
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::laplacian] Total triplets: 152, edges: 51
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::laplacian] Inserted triplets in 13.3µs
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::laplacian] Sparse Laplacian construction time: 4.25058ms
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::laplacian] Total Laplacian construction time: 933.0865ms
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::laplacian] Successfully built sparse Laplacian matrix (3x3) with 152 non-zeros
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::energymaps] EnergyMaps::diffuse_and_split_subcentroids: eta=0.100, steps=4, split_q=0.90
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Diffusing 3 centroids × 50 features over 4 steps with F×F Laplacian (50×50)
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Diffusion complete after 4 steps
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Laplacian: 50×50 (must be F×F feature-space)
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Energy and dispersion computed for 3 nodes [parallel]
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Energy: λ ∈ [0.205547, 0.507617], mean=0.348719
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Dispersion: G ∈ [0.048209, 0.056182], mean=0.051673
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Split threshold (quantile 0.90): G ≥ 0.056182
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Computed 1 splits [parallel]
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::energymaps] Sub-centroid generation: 3 → 5 centroids (1 splits)
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::energymaps] Energy graph: (3, 50) centroids → (5, 50) sub_centroids (reduced_dim=50)
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::energymaps] EnergyMaps::build_energy_laplacian: k=3, w_λ=1.00, w_G=0.50, w_D=0.25
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Building energy Laplacian on 5 sub-centroids × 50 features
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::energymaps] EnergyMaps::bootstrap_centroid_laplacian: k=3, normalise=false
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Building bootstrap L₀ on 5 centroids (nodes) × 50 features
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::laplacian] Building Laplacian matrix for 5 items with 50 features
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::laplacian] Graph parameters: eps=0.8, k=3, p=2, sigma=None, normalise=false
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::laplacian] Skipping normalization - using raw item magnitudes
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::laplacian] Building CosinePair data structure
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::laplacian] CosinePair structure built for 50 items
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::laplacian] Computing degrees for inline sparsification
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::laplacian] Skipping sparsification (avg degree 1.8)
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::laplacian] Computing k-NN with CosinePair: k=4
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::laplacian] Built adjacency rows for 50 items
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::laplacian] Converting adjacency to sparse Laplacian matrix (DashMap batched)
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::laplacian] Total triplets: 220, edges: 85
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::laplacian] Inserted triplets in 14.32µs
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::laplacian] Sparse Laplacian construction time: 800.38µs
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::laplacian] Total Laplacian construction time: 174.498519ms
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::laplacian] Successfully built sparse Laplacian matrix (5x5) with 220 non-zeros
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Bootstrap Laplacian: 50×50 (F×F feature-space for taumode)
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Laplacian: 50×50 (must be F×F feature-space)
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Energy and dispersion computed for 5 nodes [parallel]
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Robust scales: λ=0.548499, G=0.000807
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::graph] Matrix has 220 non-zero entries
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::energymaps] Energy Laplacian (F×F): 50×50, 220 nnz, 91.20% sparse
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::core] Creating subcentroid ArrowSpace from DenseMatrix(5, 50)
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::core] → Interpreted as: 5 subcentroids × 50 features (row-major)
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::energymaps] Computing lambdas on 5 sub_centroids...
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ╔═════════════════════════════════════════════════════════════╗
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║          Parallel TauMode Lambda Computation                ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ╠═════════════════════════════════════════════════════════════╣
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║ Configuration:                                              ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Items:           5                                        ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Features:        50                                       ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Threads:         16                                       ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   TauMode:         Median                                   ║
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::taumode] compute_taumode_lambdas_parallel: NO signals
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Graph Source:    Laplacian Matrix                         ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Graph Shape:     50×50                                   ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Graph NNZ:       220                                      ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Graph Sparsity:  0.088000                                 ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ╚═════════════════════════════════════════════════════════════╝
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] Starting parallel lambda computation...
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ╔═════════════════════════════════════════════════════════════╗
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║          Computation Statistics                             ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ╠═════════════════════════════════════════════════════════════╣
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Sequential Items: 0                                       ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Parallel Items:   0                                       ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Compute Time:     10.971ms                                ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::core] Updating lambdas with 5 new values
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::core] Normalized lambdas to [0, 1] range (original spread: 1.061929)
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::core] Lambda update: old range [0.000000, 0.000000] -> new range [0.000000, 1.000000]
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Update Time:      323.450µs                               ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Total Time:       13.345ms                                ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Throughput:       375                                     items/sec ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ╠═════════════════════════════════════════════════════════════╣
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║          Lambda Statistics                                  ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ╠═════════════════════════════════════════════════════════════╣
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Min:              0.000000                                ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Max:              1.000000                                ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Mean:             0.556513                                ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Std Dev:          0.331374                                ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ║   Range:            1.000000                                ║
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ╚═════════════════════════════════════════════════════════════╝
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::taumode] ✓ Parallel taumode lambda computation completed successfully
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::energymaps] Sub_centroid λ: min=0.000000, max=1.000000, mean=0.556513
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::energymaps] Mapping 78 items to (5, 50) sub_centroids and computing norms...
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::energymaps] Item λ assigned: min=0.000000, max=1.000000, mean=0.726546
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Item norms computed: min=4.266663, max=83.856355, mean=19.600294
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::builder] Initializing new ArrowSpaceBuilder
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::builder] Creating ArrowSpaceBuilder with default parameters
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::builder] Configuring lambda graph: eps=0.8, k=3, p=2, sigma=None
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::builder] Lambda graph will use raw item magnitudes for normalization
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::builder] Setting custom clustering seed: 333
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::builder] Configuring inline sampling: None
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::energymaps] Creating adaptive EnergyParams from ArrowSpaceBuilder
[INFO] [stdout] [2025-11-08T12:35:30Z WARN  arrowspace::energymaps] Using dim-reduction heuristic: optical_tokens=200 (consider setting expected_nitems for better scaling)
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::energymaps] Adaptive params: neighbor_k=15, candidate_m=45, optical_tokens=Some(200)
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::eigenmaps] EigenMaps::start_clustering: N=78 items, F=100 features
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::eigenmaps] Creating ArrowSpace with taumode: Median
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::sampling] Simple random sampler with keep rate 100.0%
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::eigenmaps] Computing optimal clustering parameters
[INFO] [stdout] [2025-11-08T12:35:30Z INFO  arrowspace::clustering] Computing optimal K for clustering: N=78, F=100
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::clustering] Two-NN mean ratio: 1.0263, estimated ID: 39
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::clustering] Intrinsic dimension estimate: 39
[INFO] [stdout] [2025-11-08T12:35:30Z DEBUG arrowspace::clustering] Testing K in range [3, 7] with step 1
[INFO] [stdout] [2025-11-08T12:35:37Z DEBUG arrowspace::clustering] Best K=3 with penalized score=-9.2674
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::clustering] Standard threshold: radius=7373.836370
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::eigenmaps] Optimal clustering: K=3, radius=7373.836370, intrinsic_dim=39
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::eigenmaps] Running incremental clustering: max_clusters=3, radius=7373.836370
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::clustering] Starting incremental clustering with inline sampling
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::clustering] Parameters: max_clusters=3, radius=7373.8364
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::clustering] Clustering produced 3 centroids from 78 rows (100% sampling)
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::eigenmaps] Clustering complete: 3 centroids, 78 items assigned
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::reduction] Computing JL optimal dimensions for n_points 3
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::eigenmaps] Applying JL projection: 100 features → 50 dimensions (ε=0.20)
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::reduction] Computing project matrix for projection ImplicitProjection { original_dim: 100, reduced_dim: 50, seed: 3259754124452361196 }
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::eigenmaps] Projection complete: 2.0x compression, stored as 8-byte seed
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] EnergyMaps::optical_compress_centroids: target=200 tokens, trim_q=0.10
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Input centroids: 3 × 50 (X centroids, F features)
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] Optical compression skipped: budget 200 >= centroids 3
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] EnergyMaps::bootstrap_centroid_laplacian: k=3, normalise=false
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Building bootstrap L₀ on 3 centroids (nodes) × 50 features
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Building Laplacian matrix for 3 items with 50 features
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] Graph parameters: eps=0.8, k=2, p=2, sigma=None, normalise=false
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] Skipping normalization - using raw item magnitudes
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Building CosinePair data structure
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] CosinePair structure built for 50 items
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Computing degrees for inline sparsification
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] Skipping sparsification (avg degree 1.1)
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Computing k-NN with CosinePair: k=3
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] Built adjacency rows for 50 items
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Converting adjacency to sparse Laplacian matrix (DashMap batched)
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] Total triplets: 160, edges: 55
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] Inserted triplets in 10.96µs
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Sparse Laplacian construction time: 635.16µs
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Total Laplacian construction time: 13.21534ms
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Successfully built sparse Laplacian matrix (3x3) with 160 non-zeros
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] EnergyMaps::diffuse_and_split_subcentroids: eta=0.100, steps=4, split_q=0.90
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Diffusing 3 centroids × 50 features over 4 steps with F×F Laplacian (50×50)
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Diffusion complete after 4 steps
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Laplacian: 50×50 (must be F×F feature-space)
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Energy and dispersion computed for 3 nodes [parallel]
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Energy: λ ∈ [0.252051, 0.367418], mean=0.316644
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Dispersion: G ∈ [0.036755, 0.083174], mean=0.052935
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Split threshold (quantile 0.90): G ≥ 0.083174
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Computed 1 splits [parallel]
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] Sub-centroid generation: 3 → 5 centroids (1 splits)
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] Energy graph: (3, 50) centroids → (5, 50) sub_centroids (reduced_dim=50)
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] EnergyMaps::build_energy_laplacian: k=3, w_λ=1.00, w_G=0.50, w_D=0.25
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Building energy Laplacian on 5 sub-centroids × 50 features
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] EnergyMaps::bootstrap_centroid_laplacian: k=3, normalise=false
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Building bootstrap L₀ on 5 centroids (nodes) × 50 features
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Building Laplacian matrix for 5 items with 50 features
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] Graph parameters: eps=0.8, k=3, p=2, sigma=None, normalise=false
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] Skipping normalization - using raw item magnitudes
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Building CosinePair data structure
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] CosinePair structure built for 50 items
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Computing degrees for inline sparsification
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] Skipping sparsification (avg degree 1.5)
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Computing k-NN with CosinePair: k=4
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] Built adjacency rows for 50 items
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Converting adjacency to sparse Laplacian matrix (DashMap batched)
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] Total triplets: 194, edges: 72
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::laplacian] Inserted triplets in 11.53µs
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Sparse Laplacian construction time: 527.71µs
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Total Laplacian construction time: 67.940539ms
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::laplacian] Successfully built sparse Laplacian matrix (5x5) with 194 non-zeros
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Bootstrap Laplacian: 50×50 (F×F feature-space for taumode)
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Laplacian: 50×50 (must be F×F feature-space)
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Energy and dispersion computed for 5 nodes [parallel]
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Robust scales: λ=0.012959, G=0.007533
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::graph] Matrix has 194 non-zero entries
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] Energy Laplacian (F×F): 50×50, 194 nnz, 92.24% sparse
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::core] Creating subcentroid ArrowSpace from DenseMatrix(5, 50)
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::core] → Interpreted as: 5 subcentroids × 50 features (row-major)
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] Computing lambdas on 5 sub_centroids...
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ╔═════════════════════════════════════════════════════════════╗
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║          Parallel TauMode Lambda Computation                ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ╠═════════════════════════════════════════════════════════════╣
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║ Configuration:                                              ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Items:           5                                        ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Features:        50                                       ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Threads:         16                                       ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   TauMode:         Median                                   ║
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::taumode] compute_taumode_lambdas_parallel: NO signals
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Graph Source:    Laplacian Matrix                         ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Graph Shape:     50×50                                   ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Graph NNZ:       194                                      ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Graph Sparsity:  0.077600                                 ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ╚═════════════════════════════════════════════════════════════╝
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] Starting parallel lambda computation...
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ╔═════════════════════════════════════════════════════════════╗
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║          Computation Statistics                             ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ╠═════════════════════════════════════════════════════════════╣
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Sequential Items: 0                                       ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Parallel Items:   0                                       ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Compute Time:     21.116ms                                ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::core] Updating lambdas with 5 new values
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::core] Normalized lambdas to [0, 1] range (original spread: 0.583074)
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::core] Lambda update: old range [0.000000, 0.000000] -> new range [0.000000, 1.000000]
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Update Time:      120.590µs                               ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Total Time:       22.114ms                                ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Throughput:       226                                     items/sec ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ╠═════════════════════════════════════════════════════════════╣
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║          Lambda Statistics                                  ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ╠═════════════════════════════════════════════════════════════╣
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Min:              0.000000                                ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Max:              1.000000                                ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Mean:             0.564412                                ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Std Dev:          0.382703                                ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ║   Range:            1.000000                                ║
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ╚═════════════════════════════════════════════════════════════╝
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::taumode] ✓ Parallel taumode lambda computation completed successfully
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] Sub_centroid λ: min=0.000000, max=1.000000, mean=0.564412
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] Mapping 78 items to (5, 50) sub_centroids and computing norms...
[INFO] [stdout] [2025-11-08T12:35:38Z INFO  arrowspace::energymaps] Item λ assigned: min=0.752978, max=0.840047, mean=0.761908
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::energymaps] Item norms computed: min=4.266663, max=83.856355, mean=19.600294
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::core] Query mapped to subcentroid 3/5 with λ=0.696533 (dist=48.6628)
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::core] Query mapped to subcentroid 1/5 with λ=0.840047 (dist=47.0001)
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::tests::test_energy_search] Results (base energy):  [(0, 4.8512416306323306e-20), (27, 7.980481042072161e-10), (32, 8.587058505825286e-10), (41, 8.6661838210895e-10), (49, 8.946747394664675e-10), (34, 9.106971278474641e-10), (5, 9.314133172557374e-10), (42, 9.349022468294962e-10), (14, 9.37206513466822e-10), (9, 9.615333466643467e-10), (45, 9.730317225516726e-10), (54, 9.781197366921124e-10), (11, 1.0084210076587272e-9), (35, 1.0147916967469866e-9), (77, 1.0175502994658092e-9), (40, 1.034295247497126e-9), (19, 1.0354835432480778e-9), (58, 1.0362597676680926e-9), (22, 1.0509473346996906e-9), (7, 1.0539726045293298e-9)]
[INFO] [stdout] [2025-11-08T12:35:38Z DEBUG arrowspace::tests::test_energy_search] Results (extra energy): [(0, 4.8512416306323306e-20), (32, 8.587058505825286e-10), (49, 8.946747394664675e-10), (34, 9.106971278474641e-10), (40, 1.034295247497126e-9), (19, 1.0354835432480778e-9), (22, 1.0509473346996906e-9), (48, 1.0899927655481386e-9), (1, 0.08706834959126486), (2, 0.08706834959126486), (3, 0.08706834959126486), (4, 0.08706834959126486), (5, 0.08706834959126486), (6, 0.08706834959126486), (7, 0.08706834959126486), (8, 0.08706834959126486), (9, 0.08706834959126486), (10, 0.08706834959126486), (11, 0.08706834959126486), (12, 0.08706834959126486)]
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::test_energy_search::test_energy_vs_energy_extra_dims_reduction_recall_at_k' (134) panicked at src/tests/test_energy_search.rs:916:5:
[INFO] [stdout] Recall between energy (extra vs base) too low: 0.55
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d0c5ca14442 - std::backtrace_rs::backtrace::libunwind::trace::h786de35fecf3582f
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5d0c5ca14442 - std::backtrace_rs::backtrace::trace_unsynchronized::h4a7da1a2a64387f1
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5d0c5ca14442 - std::sys::backtrace::_print_fmt::h6bd7d500070c788c
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/sys/backtrace.rs:66:9
[INFO] [stdout]    3:     0x5d0c5ca14442 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h6d82c1afff976903
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/sys/backtrace.rs:39:26
[INFO] [stdout]    4:     0x5d0c5ca2612f - core::fmt::rt::Argument::fmt::hc4ce6d643d397690
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/core/src/fmt/rt.rs:173:76
[INFO] [stdout]    5:     0x5d0c5ca2612f - core::fmt::write::hb1e7ca88b6a3936e
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/core/src/fmt/mod.rs:1469:25
[INFO] [stdout]    6:     0x5d0c5c9e02e3 - std::io::default_write_fmt::haffd49d96f1984a8
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5d0c5c9e02e3 - std::io::Write::write_fmt::h027871c57cf57c01
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/io/mod.rs:1954:13
[INFO] [stdout]    8:     0x5d0c5c9ec292 - std::sys::backtrace::BacktraceLock::print::ha2430613ee79d059
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/sys/backtrace.rs:42:9
[INFO] [stdout]    9:     0x5d0c5c9f0f0f - std::panicking::default_hook::{{closure}}::hdbd2db9e5c303cf6
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/panicking.rs:301:27
[INFO] [stdout]   10:     0x5d0c5c9f0da1 - std::panicking::default_hook::hed93c70cba5fdcf0
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/panicking.rs:325:9
[INFO] [stdout]   11:     0x5d0c5c8d6c5e - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hd0ee8b569efc6a07
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/alloc/src/boxed.rs:2099:9
[INFO] [stdout]   12:     0x5d0c5c8d6c5e - test::test_main_with_exit_callback::{{closure}}::hf10864b576ecd15d
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5d0c5c9f15cf - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h3a55ca34534c0d00
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/alloc/src/boxed.rs:2099:9
[INFO] [stdout]   14:     0x5d0c5c9f15cf - std::panicking::panic_with_hook::h3862d766c2cec19b
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/panicking.rs:842:13
[INFO] [stdout]   15:     0x5d0c5c9f137a - std::panicking::panic_handler::{{closure}}::hb95eb402b5e28ee1
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/panicking.rs:707:13
[INFO] [stdout]   16:     0x5d0c5c9ec3c9 - std::sys::backtrace::__rust_end_short_backtrace::hf73a26dc1835d85a
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/sys/backtrace.rs:174:18
[INFO] [stdout]   17:     0x5d0c5c9d4bcd - __rustc[6ed5915ee467787]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/panicking.rs:698:5
[INFO] [stdout]   18:     0x5d0c5ca2ed40 - core::panicking::panic_fmt::h3454303eb8e6f7cd
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5d0c5c52932a - arrowspace::tests::test_energy_search::test_energy_vs_energy_extra_dims_reduction_recall_at_k::h8497b623abc52d50
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests/test_energy_search.rs:916:5
[INFO] [stdout]   20:     0x5d0c5c529807 - arrowspace::tests::test_energy_search::test_energy_vs_energy_extra_dims_reduction_recall_at_k::{{closure}}::hb7c67be7fbec0885
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests/test_energy_search.rs:848:60
[INFO] [stdout]   21:     0x5d0c5c3ddc56 - core::ops::function::FnOnce::call_once::h153a5eb13f5ba2e3
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x5d0c5c8d6a3b - core::ops::function::FnOnce::call_once::ha729ee35d2fab541
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x5d0c5c8d6a3b - test::__rust_begin_short_backtrace::ha40f4db8207e1111
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/test/src/lib.rs:663:18
[INFO] [stdout]   24:     0x5d0c5c8eaabd - test::run_test_in_process::{{closure}}::hc1b77cda5d44f0f3
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/test/src/lib.rs:686:74
[INFO] [stdout]   25:     0x5d0c5c8eaabd - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h1dbea1de64785521
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   26:     0x5d0c5c8eaabd - std::panicking::catch_unwind::do_call::hd5febe9affd5a1b3
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/panicking.rs:590:40
[INFO] [stdout]   27:     0x5d0c5c8eaabd - std::panicking::catch_unwind::h51ea89627559b6f4
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/panicking.rs:553:19
[INFO] [stdout]   28:     0x5d0c5c8eaabd - std::panic::catch_unwind::hb8b8c2367cae3d66
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x5d0c5c8eaabd - test::run_test_in_process::ha5b55801407ea100
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/test/src/lib.rs:686:27
[INFO] [stdout]   30:     0x5d0c5c8eaabd - test::run_test::{{closure}}::h0b9d4072b527abf5
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/test/src/lib.rs:607:43
[INFO] [stdout]   31:     0x5d0c5c8c3fd4 - test::run_test::{{closure}}::hb1056b5731205822
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/test/src/lib.rs:637:41
[INFO] [stdout]   32:     0x5d0c5c8c3fd4 - std::sys::backtrace::__rust_begin_short_backtrace::hb61ff5a34023c7ef
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/sys/backtrace.rs:158:18
[INFO] [stdout]   33:     0x5d0c5c8c790a - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hb0a83c0e8b353cff
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/thread/mod.rs:562:17
[INFO] [stdout]   34:     0x5d0c5c8c790a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hb4f32cb008535298
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   35:     0x5d0c5c8c790a - std::panicking::catch_unwind::do_call::h16d110e4fc35789a
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/panicking.rs:590:40
[INFO] [stdout]   36:     0x5d0c5c8c790a - std::panicking::catch_unwind::hea9118f355699c4b
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/panicking.rs:553:19
[INFO] [stdout]   37:     0x5d0c5c8c790a - std::panic::catch_unwind::hf4b3c2a06d3f42f5
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x5d0c5c8c790a - std::thread::Builder::spawn_unchecked_::{{closure}}::h3f4cb733a52d53d5
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/thread/mod.rs:560:30
[INFO] [stdout]   39:     0x5d0c5c8c790a - core::ops::function::FnOnce::call_once{{vtable.shim}}::h4052f0967b37caeb
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x5d0c5c9e77cf - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7ec433abd3f148b4
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/alloc/src/boxed.rs:2085:9
[INFO] [stdout]   41:     0x5d0c5c9e77cf - std::sys::thread::unix::Thread::new::thread_start::he514622d3d7ba65c
[INFO] [stdout]                                at /rustc/1ef7943ee607160a564655b6596f83670ef95df5/library/std/src/sys/thread/unix.rs:124:17
[INFO] [stdout]   42:     0x77c6398bbaa4 - <unknown>
[INFO] [stdout]   43:     0x77c639948a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tests::test_energy_search::test_energy_vs_energy_extra_dims_reduction_recall_at_k
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 193 passed; 1 failed; 4 ignored; 0 measured; 0 filtered out; finished in 99.68s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "489ab628b6c0daa7389452a8d9da34a4b08d827d536cc1d913637abfa8f2292a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "489ab628b6c0daa7389452a8d9da34a4b08d827d536cc1d913637abfa8f2292a", kill_on_drop: false }`
[INFO] [stdout] 489ab628b6c0daa7389452a8d9da34a4b08d827d536cc1d913637abfa8f2292a
