[INFO] fetching crate sc-mesh-core 0.1.0...
[INFO] testing sc-mesh-core-0.1.0 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate sc-mesh-core 0.1.0 into /workspace/builds/worker-0-tc1/source
[INFO] started tweaking crates.io crate sc-mesh-core 0.1.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate sc-mesh-core 0.1.0
[INFO] tweaked toml for crates.io crate sc-mesh-core 0.1.0 written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate sc-mesh-core 0.1.0 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate sc-mesh-core 0.1.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" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded newtypes v0.4.0
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.55
[INFO] [stderr]   Downloaded zerocopy v0.8.55
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473
[INFO] running `Command { std: "docker" "start" "4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]    Compiling crossbeam-deque v0.8.7
[INFO] [stderr]    Compiling either v1.17.0
[INFO] [stderr]    Compiling newtypes v0.4.0
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling sc-mesh-core v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.73s
[INFO] running `Command { std: "docker" "inspect" "4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling rand v0.9.5
[INFO] [stderr]    Compiling sc-mesh-core v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stdout] warning: use of deprecated constant `std::f32::NAN`: replaced by the `NAN` associated constant on `f32`
[INFO] [stdout]    --> src/geometry.rs:273:29
[INFO] [stdout]     |
[INFO] [stdout] 273 |         let verts = [v(f32::NAN, 0.0, 0.0), v(1.0, 0.0, 0.0), v(0.0, 1.0, 0.0)];
[INFO] [stdout]     |                             ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f32::INFINITY`: replaced by the `INFINITY` associated constant on `f32`
[INFO] [stdout]    --> src/geometry.rs:307:20
[INFO] [stdout]     |
[INFO] [stdout] 307 |             v(f32::INFINITY, 0.0, 0.0),
[INFO] [stdout]     |                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 29.85s
[INFO] running `Command { std: "docker" "inspect" "4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: use of deprecated constant `std::f32::NAN`: replaced by the `NAN` associated constant on `f32`
[INFO] [stderr]    --> src/geometry.rs:273:29
[INFO] [stderr]     |
[INFO] [stderr] 273 |         let verts = [v(f32::NAN, 0.0, 0.0), v(1.0, 0.0, 0.0), v(0.0, 1.0, 0.0)];
[INFO] [stderr]     |                             ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f32::INFINITY`: replaced by the `INFINITY` associated constant on `f32`
[INFO] [stderr]    --> src/geometry.rs:307:20
[INFO] [stderr]     |
[INFO] [stderr] 307 |             v(f32::INFINITY, 0.0, 0.0),
[INFO] [stderr]     |                    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `sc-mesh-core` (lib test) generated 2 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.08s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/sc_mesh_core-c71fc9cbb22b99b6)
[INFO] [stdout] 
[INFO] [stdout] running 457 tests
[INFO] [stdout] test aabb::aabb_tests::empty_is_empty ... ok
[INFO] [stdout] test aabb::aabb_tests::transformed_arvo_on_empty_does_not_propagate_nan_to_output ... ok
[INFO] [stdout] test aabb::aabb_tests::transformed_arvo_on_empty_with_identity_stays_empty ... ok
[INFO] [stdout] test aabb::aabb_tests::union_combines_two_boxes ... ok
[INFO] [stdout] test aabb::aabb_tests::empty_unioned_with_real_box_takes_the_real_box ... ok
[INFO] [stdout] test aabb::aabb_tests::transformed_arvo_on_empty_stays_empty_for_arbitrary_transform ... ok
[INFO] [stdout] test aabb::aabb_tests::extend_grows_in_both_directions ... ok
[INFO] [stdout] test aabb::aabb_tests::union_with_empty_is_identity ... ok
[INFO] [stdout] test geometry::geometry_tests::degenerate_collinear_points_returns_error ... ok
[INFO] [stdout] test geometry::geometry_tests::gt_strict_equal_returns_false ... ok
[INFO] [stdout] test geometry::geometry_tests::gt_strict_infinities ... ok
[INFO] [stdout] test geometry::geometry_tests::degenerate_duplicate_vertices_returns_error ... ok
[INFO] [stdout] test geometry::geometry_tests::diagonal_triangle_normal_is_normalized ... ok
[INFO] [stdout] test geometry::geometry_tests::gt_strict_nan_returns_false ... ok
[INFO] [stdout] test geometry::geometry_tests::degenerate_two_identical_vertices_returns_error ... ok
[INFO] [stdout] test geometry::geometry_tests::gt_strict_strictly_greater_finite ... ok
[INFO] [stdout] test aabb::aabb_tests::extend_replaces_empty_sentinels ... ok
[INFO] [stdout] test aabb::aabb_tests::from_min_max_with_equal_corners_is_a_point ... ok
[INFO] [stdout] test aabb::aabb_tests::extend_inside_does_not_change_box ... ok
[INFO] [stdout] test geometry::geometry_tests::gt_strict_subnormals ... ok
[INFO] [stdout] test geometry::geometry_tests::infinite_coordinate_returns_error ... ok
[INFO] [stdout] test geometry::geometry_tests::nan_coordinate_returns_error ... ok
[INFO] [stdout] test geometry::geometry_tests::scale_invariance_yields_same_normal ... ok
[INFO] [stdout] test geometry::geometry_tests::gt_strict_strictly_less_finite ... ok
[INFO] [stdout] test geometry::geometry_tests::sliver_just_below_threshold_returns_error ... ok
[INFO] [stdout] test geometry::geometry_tests::small_but_valid_triangle_is_accepted ... ok
[INFO] [stdout] test geometry::geometry_tests::sliver_just_above_threshold_is_accepted ... ok
[INFO] [stdout] test geometry::geometry_tests::xz_plane_triangle_gives_negative_y_normal ... ok
[INFO] [stdout] test geometry::geometry_tests::yz_plane_triangle_gives_x_normal ... ok
[INFO] [stdout] test geometry::geometry_tests::translated_triangle_same_normal ... ok
[INFO] [stdout] test geometry::geometry_tests::xy_plane_triangle_gives_z_normal ... ok
[INFO] [stdout] test indexed_mesh::error_summary::example_face_tests::manifold_inconsistent_winding_returns_first_face_index ... ok
[INFO] [stdout] test indexed_mesh::error_summary::example_face_tests::manifold_non_manifold_edge_returns_first_face_index ... ok
[INFO] [stdout] test indexed_mesh::error_summary::example_face_tests::mesh_face_error_example_face_is_the_face_index ... ok
[INFO] [stdout] test indexed_mesh::error_summary::group_errors_by_variant_tests::empty_input_returns_no_groups ... ok
[INFO] [stdout] test indexed_mesh::error_summary::group_errors_by_variant_tests::group_order_follows_first_occurrence_of_each_variant ... ok
[INFO] [stdout] test indexed_mesh::error_summary::group_errors_by_variant_tests::members_within_a_group_preserve_input_order ... ok
[INFO] [stdout] test indexed_mesh::error_summary::group_errors_by_variant_tests::single_variant_collapses_into_one_group ... ok
[INFO] [stdout] test indexed_mesh::error_summary::variant_name_tests::mesh_face_error_variant_names_round_trip ... ok
[INFO] [stdout] test indexed_mesh::error_summary::variant_name_tests::mesh_manifold_error_variant_names_round_trip ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::does_not_modify_correct_faces ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::errors_when_face_has_more_than_3_winding_errors ... ok
[INFO] [stdout] test geometry::geometry_tests::result_is_unit_length ... ok
[INFO] [stdout] test geometry::geometry_tests::reversed_winding_flips_normal ... ok
[INFO] [stdout] test geometry::geometry_tests::sliver_above_threshold_is_accepted ... ok
[INFO] [stdout] test geometry::geometry_tests::sliver_below_threshold_returns_error ... ok
[INFO] [stdout] test indexed_mesh::error_summary::example_face_tests::manifold_empty_mesh_has_no_example_face ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::fix_faces_orientation_is_atomic_when_face_has_more_than_3_winding_errors ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::fix_faces_orientation_is_atomic_when_recompute_fails_in_flip_pass ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::errors_when_too_many_faces_need_flipping ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::fixes_flipped_face_with_wrong_normal_by_recomputing ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::face_with_one_winding_error_is_not_flipped ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::fixes_non_unit_norm_without_winding_error ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::flips_face_but_negates_normal_when_fix_face_normals_is_false ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::ignores_non_winding_manifold_errors ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::skips_flipping_when_fix_flipped_faces_is_false ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::fix_faces_orientation_is_atomic_when_recompute_fails_in_normals_pass ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::fix_faces_orientation_is_atomic_when_too_many_faces_need_flipping ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_zero_length_edges_tests::dedup_keeps_face_removed_only_once_when_multiple_edges_collapse ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_zero_length_edges_tests::empty_face_list_with_unrelated_errors_is_a_no_op ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::skips_normal_fix_when_fix_face_normals_is_false ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_zero_length_edges_tests::mixed_error_kinds_only_remove_collapsed_faces ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_zero_length_edges_tests::single_collapsed_face_is_removed_with_a_fix_record ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_zero_length_edges_tests::no_errors_means_no_fixes_and_no_face_removed ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_zero_length_edges_tests::removes_in_descending_order_so_remaining_indices_stay_valid ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::fixes_single_flipped_face_vertices_and_normal ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::fixes_wrong_normal_without_winding_error ... ok
[INFO] [stdout] test indexed_mesh::half_edges::half_edges_tests::key_is_canonical_and_round_trips ... ok
[INFO] [stdout] test indexed_mesh::half_edges::half_edges_tests::value_round_trips_face_and_direction ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::ignores_zero_area_triangle_normal_errors ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::mesh_is_valid_after_fixing_flipped_face ... ok
[INFO] [stdout] test indexed_mesh::topology::edge_key_tests::edge_key_equal_endpoints_collapses_cleanly ... ok
[INFO] [stdout] test indexed_mesh::fix::indexed_mesh_fix_faces_orientation_tests::no_op_when_no_errors ... ok
[INFO] [stdout] test indexed_mesh::half_edges::half_edges_tests::records_of_a_shared_edge_form_one_run_ascending_by_face ... ok
[INFO] [stdout] test indexed_mesh::topology::edge_key_tests::edge_key_canonicalises_to_lo_hi ... ok
[INFO] [stdout] test indexed_mesh::topology::mesh_topology_tests::edge_faces_is_unordered_pair_lookup ... ok
[INFO] [stdout] test indexed_mesh::topology::mesh_topology_tests::edge_faces_returns_two_for_each_tetrahedron_edge ... ok
[INFO] [stdout] test indexed_mesh::topology::mesh_topology_tests::vertex_one_ring_visits_every_incident_face_exactly_once ... ok
[INFO] [stdout] test indexed_mesh::topology::mesh_topology_tests::vertex_one_ring_length_matches_vertex_degree_for_tetrahedron ... ok
[INFO] [stdout] test indexed_mesh::topology::mesh_topology_tests::edge_faces_returns_none_for_non_edges ... ok
[INFO] [stdout] test indexed_mesh::topology::mesh_topology_tests::vertex_one_ring_consecutive_faces_share_an_edge_through_the_vertex ... ok
[INFO] [stdout] test indexed_mesh::topology::mesh_topology_tests::edge_count_matches_tetrahedron_edge_count ... ok
[INFO] [stdout] test indexed_mesh::topology::mesh_topology_tests::vertex_one_ring_returns_none_for_unreferenced_vertex ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_faces_tests::detects_collapsed_edge_12 ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_faces_tests::detects_out_of_range_vertex_pos_0 ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_faces_tests::detects_collapsed_edge_20 ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_faces_tests::degenerate_triangle_reports_all_collapsed_edges ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_faces_tests::detects_out_of_range_vertex_pos_1 ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_faces_tests::detects_collapsed_edge_01 ... ok
[INFO] [stdout] test indexed_mesh::topology::sorted_topology_equivalence_tests::matches_the_reference_on_the_tetrahedron ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_faces_tests::detects_out_of_range_vertex_pos_2 ... ok
[INFO] [stdout] test indexed_mesh::topology::sorted_topology_equivalence_tests::matches_the_reference_on_a_grid_torus ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_faces_tests::ok_for_empty_faces ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_faces_tests::ok_for_valid_faces ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_manifold_tests::detects_non_manifold_edge ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_manifold_tests::rejects_empty_mesh ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_manifold_tests::reports_multiple_error_types ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_manifold_tests::tetrahedron_with_one_flipped_face_detects_inconsistent_winding ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_faces_tests::reports_both_out_of_range_and_collapsed ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_faces_tests::reports_correct_face_idx_across_faces ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_manifold_tests::detects_boundary_edge_single_triangle ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_manifold_tests::detects_inconsistent_winding_order ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_manifold_tests::ok_for_closed_manifold_tetrahedron ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::detects_expectation_mismatch_perpendicular ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::detects_zero_area_triangle_coincident_vertices ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::detects_expectation_mismatch_opposite_direction ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::detects_non_unit_norm_zero_vector ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::ok_for_correct_normal ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::detects_zero_area_triangle_collinear_vertices ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::ok_for_empty_faces ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::ok_for_non_axis_aligned_triangle ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::ok_for_small_but_valid_triangle ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::rejects_nan_magnitude_normal ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::rejects_normal_just_outside_unit_norm_tolerance_above ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::rejects_normal_just_outside_unit_norm_tolerance_below ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::reports_correct_face_idx_across_faces ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::reports_multiple_errors_across_faces ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_manifold_tests::detects_boundary_edge_open_surface ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_vertices_tests::detects_infinite_x ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_vertices_tests::detects_infinite_y ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_vertices_tests::detects_nan_y ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_vertices_tests::detects_nan_z ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_vertices_tests::ok_for_valid_vertices ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_vertices_tests::reports_errors_across_multiple_vertices ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_vertices_tests::reports_multiple_errors_per_vertex ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::accepts_normal_just_inside_unit_norm_tolerance ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::detects_non_unit_norm_too_small ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_vertices_tests::detects_infinite_z ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_vertices_tests::detects_nan_x ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_vertices_tests::ok_for_empty_mesh ... ok
[INFO] [stdout] test indexed_mesh::validate::indexed_mesh_validate_normal_vectors_tests::detects_non_unit_norm_too_large ... ok
[INFO] [stdout] test indexed_mesh::validate::mesh_face_error_display_tests::out_of_range_renders_face_slot_and_target_vertex ... ok
[INFO] [stdout] test indexed_mesh::validate::mesh_face_error_display_tests::zero_length_edge_renders_face_two_slots_and_shared_vertex ... ok
[INFO] [stdout] test indexed_mesh::validate::mesh_vertex_error_display_tests::infinite_coordinate_renders_index_and_axis ... ok
[INFO] [stdout] test indexed_mesh::validated::indexed_mesh_validated_faces_tests::fix_zero_length_edges_into_validated_returns_err_when_post_removal_invalid ... ok
[INFO] [stdout] test indexed_mesh::validated::indexed_mesh_validated_faces_tests::fix_zero_length_edges_into_validated_returns_ok_witness_when_only_zle ... ok
[INFO] [stdout] test indexed_mesh::validate::manifold_sort_equivalence_tests::errors_are_sorted_by_canonical_edge_and_deterministic ... ok
[INFO] [stdout] test indexed_mesh::validate::mesh_vertex_error_display_tests::nan_coordinate_renders_index_and_axis ... ok
[INFO] [stdout] test indexed_mesh::validate::manifold_sort_equivalence_tests::non_manifold_edge_lists_faces_ascending ... ok
[INFO] [stdout] test indexed_mesh::validate::manifold_sort_equivalence_tests::winding_error_lists_faces_ascending ... ok
[INFO] [stdout] test indexed_mesh::validated::indexed_mesh_validated_faces_tests::validated_faces_returns_face_errors_on_out_of_range_indices ... ok
[INFO] [stdout] test indexed_mesh::validated::indexed_mesh_validated_faces_tests::validated_faces_succeeds_on_clean_mesh ... ok
[INFO] [stdout] test indexed_mesh::validated::indexed_mesh_validated_faces_tests::validated_manifold_fails_on_boundary_edge ... ok
[INFO] [stdout] test indexed_mesh::validated::indexed_mesh_validated_faces_tests::validated_manifold_round_trips_buffers ... ok
[INFO] [stdout] test indexed_mesh::validated::indexed_mesh_validated_faces_tests::validated_manifold_succeeds_on_closed_mesh ... ok
[INFO] [stdout] test indexed_mesh::validated::mesh_manifold_error_display_tests::empty_mesh_renders_short_phrase ... ok
[INFO] [stdout] test indexed_mesh::validated::mesh_manifold_error_display_tests::inconsistent_winding_renders_edge_and_both_face_ids ... ok
[INFO] [stdout] test indexed_mesh::validated::mesh_manifold_error_display_tests::non_manifold_edge_renders_edge_and_count ... ok
[INFO] [stdout] test indexed_mesh::validated::mesh_normal_vector_error_display_tests::expectation_mismatch_renders_face_id ... ok
[INFO] [stdout] test indexed_mesh::validated::mesh_normal_vector_error_display_tests::non_unit_norm_renders_face_id_and_norm ... ok
[INFO] [stdout] test indexed_mesh::validated::mesh_normal_vector_error_display_tests::zero_area_triangle_renders_face_id ... ok
[INFO] [stdout] test primitives::vector3d_constructor_tests::array_into_vector3d_round_trip ... ok
[INFO] [stdout] test primitives::vector3d_constructor_tests::new_is_const ... ok
[INFO] [stdout] test primitives::vector3d_constructor_tests::new_stores_components_in_order ... ok
[INFO] [stdout] test primitives::vector3d_conversion_tests::f32_to_f64_to_f32_is_identity_for_normal_finite ... ok
[INFO] [stdout] test primitives::vector3d_conversion_tests::f32_to_f64_widens_components ... ok
[INFO] [stdout] test primitives::vector3d_conversion_tests::f64_to_f32_truncates_components ... ok
[INFO] [stdout] test indexed_mesh::validated::indexed_mesh_validated_faces_tests::fix_zero_length_edges_into_validated_revalidates_when_mixed_errors ... ok
[INFO] [stdout] test indexed_mesh::validated::indexed_mesh_validated_faces_tests::validated_faces_mut_succeeds_on_clean_mesh ... ok
[INFO] [stdout] test primitives::vector3d_index_tests::index_returns_each_component ... ok
[INFO] [stdout] test indexed_mesh::validated::indexed_mesh_validated_faces_tests::validated_faces_returns_face_errors_on_zero_length_edge ... ok
[INFO] [stdout] test indexed_mesh::validated::mesh_manifold_error_display_tests::boundary_edge_renders_edge_and_face ... ok
[INFO] [stdout] test scene::aabb::scene_aabb_tests::aabb_composes_group_and_leaf_transforms ... ok
[INFO] [stdout] test scene::aabb::scene_aabb_tests::aabb_of_empty_graph_is_none ... ok
[INFO] [stdout] test scene::aabb::scene_aabb_tests::aabb_treats_csg_children_as_union_conservatively ... ok
[INFO] [stdout] test scene::aabb::scene_aabb_tests::aabb_two_instances_of_same_subtree_resource ... ok
[INFO] [stdout] test scene::aabb::scene_aabb_tests::aabb_unions_two_roots ... ok
[INFO] [stdout] test scene::aabb::scene_aabb_tests::translation_to_drop_at_centres_xy_and_sets_floor_z ... ok
[INFO] [stdout] test scene::bake::scene_bake_tests::bake_leaf_to_world_composes_ancestor_chain_translations ... ok
[INFO] [stdout] test scene::aabb::scene_aabb_tests::translation_to_drop_at_on_empty_returns_none ... ok
[INFO] [stdout] test scene::bake::scene_bake_tests::bake_leaf_to_world_reverses_winding_under_mirror ... ok
[INFO] [stdout] test scene::bake::scene_bake_tests::bake_leaf_to_world_rotates_normal ... ok
[INFO] [stdout] test scene::bake::scene_bake_tests::bake_leaf_to_world_under_identity_root_matches_mesh ... ok
[INFO] [stdout] test scene::bake::scene_bake_tests::merge_meshes_composes_group_and_leaf_translations ... ok
[INFO] [stdout] test scene::bake::scene_bake_tests::merge_meshes_duplicates_geometry_for_two_instances ... ok
[INFO] [stdout] test scene::bake::scene_bake_tests::merge_meshes_errors_on_csg_node ... ok
[INFO] [stdout] test scene::bake::scene_bake_tests::merge_meshes_on_single_leaf_identity_passes_through ... ok
[INFO] [stdout] test scene::bake::scene_bake_tests::merge_meshes_on_empty_graph_returns_none ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::add_leaf_apply_installs_a_parented_inline_leaf_at_the_recorded_position ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::add_leaf_and_remove_leaf_are_structural_and_not_noop ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::add_leaf_apply_then_inverse_round_trips_for_a_root_leaf ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::add_leaf_apply_installs_a_root_inline_leaf ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::add_leaf_inverse_is_remove_leaf_with_same_fields_and_vice_versa ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::add_mesh_resource_inverse_is_remove_with_same_arc ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::add_mesh_resource_is_never_noop ... ok
[INFO] [stdout] test scene::aabb::scene_aabb_tests::aabb_of_single_leaf_at_identity_matches_mesh ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::add_root_leaf_inverse_is_remove_root_leaf_with_same_fields ... ok
[INFO] [stdout] test scene::bake::scene_bake_tests::bake_leaf_to_world_on_non_leaf_errors ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::add_root_leaf_is_never_noop ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::add_root_leaf_is_structural ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::add_root_leaf_with_out_of_range_id_is_silent_noop ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::apply_add_mesh_resource_installs_at_the_allocated_slot ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::apply_add_mesh_then_inverse_round_trips_scene ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::apply_add_root_leaf_installs_a_root ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::apply_add_then_inverse_round_trips_graph ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::apply_remove_then_inverse_round_trips_graph ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::apply_then_inverse_round_trips_graph ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::compound_apply_runs_edits_in_order_and_round_trips_via_inverse ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::apply_set_local_transform_writes_after_to_graph ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::compound_inverse_reverses_and_inverts_each_inner_edit ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::compound_is_noop_iff_all_inner_are_noop ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::compound_is_structural_iff_any_inner_is ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::remove_leaf_apply_then_inverse_round_trips_for_a_parented_leaf ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::remove_mesh_resource_is_never_noop ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::remove_root_leaf_inverse_is_add_root_leaf_with_same_fields ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::remove_root_leaf_is_never_noop ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::remove_root_leaf_on_empty_slot_is_silent_noop ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::set_local_transform_inverse_swaps_before_and_after ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::set_local_transform_is_noop_when_before_equals_after ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::set_local_transform_is_not_noop_when_transforms_differ ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::set_local_transform_is_not_structural ... ok
[INFO] [stdout] test scene::edit::scene_edit_tests::set_local_transform_on_dangling_node_id_is_silent_noop ... ok
[INFO] [stdout] test scene::fragment::scene_fragment_tests::from_leaf_snapshot_arc_identity_is_preserved ... ok
[INFO] [stdout] test scene::fragment::scene_fragment_tests::from_leaf_snapshot_carries_the_provided_local_transform ... ok
[INFO] [stdout] test scene::from_indexed_mesh_tests::from_indexed_mesh_produces_single_leaf_root ... ok
[INFO] [stdout] test scene::mesh_health::mesh_health_tests::a_mesh_resource_leaf_is_checked_too ... ok
[INFO] [stdout] test scene::mesh_health::mesh_health_tests::empty_scene_has_no_non_manifold_leaves ... ok
[INFO] [stdout] test scene::mesh_health::mesh_health_tests::only_the_defective_leaf_is_reported ... ok
[INFO] [stdout] test scene::node::scene_node_tests::csg_kind_exposes_children ... ok
[INFO] [stdout] test scene::node::scene_node_tests::group_kind_exposes_children ... ok
[INFO] [stdout] test scene::node::scene_node_tests::instance_kind_exposes_no_children_through_structural_graph ... ok
[INFO] [stdout] test scene::node::scene_node_tests::leaf_kind_exposes_no_children ... ok
[INFO] [stdout] test scene::node::scene_node_tests::mesh_resource_id_get_returns_raw_value ... ok
[INFO] [stdout] test scene::node::scene_node_tests::node_id_get_returns_raw_value ... ok
[INFO] [stdout] test scene::node::scene_node_tests::nonzero_u32_makes_option_node_id_one_word ... ok
[INFO] [stdout] test scene::node::scene_node_tests::subtree_resource_id_get_returns_raw_value ... ok
[INFO] [stdout] test scene::fragment::scene_fragment_tests::from_leaf_snapshot_builds_one_root_one_resource ... ok
[INFO] [stdout] test scene::mesh_health::mesh_health_tests::a_closed_manifold_leaf_is_not_flagged ... ok
[INFO] [stdout] test scene::mesh_health::mesh_health_tests::an_open_mesh_leaf_is_flagged ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_child_under_group ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_child_direct_instance_cycle_rejected ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_child_indirect_instance_cycle_rejected ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_child_under_csg ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_child_under_instance_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_child_under_leaf_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_csg_intersection_with_no_children_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_child_with_already_parented_child_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_csg_union_with_no_children_succeeds ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_csg_with_already_parented_child_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_csg_with_duplicate_child_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_csg_intersection_with_one_child_succeeds ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_csg_with_dangling_child_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_child_with_scene_root_child_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_leaf_with_dangling_mesh_resource_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_leaf_with_valid_mesh_resource_succeeds ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_root_happy_path ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_leaf_with_inline_mesh_succeeds ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_root_on_parented_node_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_root_on_subtree_resource_root_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::allocate_unbound_mesh_resource_id_leaves_slot_empty ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_root_twice_on_same_node_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::allocate_unbound_node_id_leaves_slot_empty ... ok
[INFO] [stdout] test scene::scene_construction_tests::allocate_install_remove_install_round_trips_mesh_resource_at_same_id ... ok
[INFO] [stdout] test scene::scene_construction_tests::allocate_unbound_node_id_returns_fresh_ids ... ok
[INFO] [stdout] test scene::scene_construction_tests::add_instance_with_dangling_resource_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::allocate_unbound_node_id_grows_arena_by_one_slot ... ok
[INFO] [stdout] test scene::scene_construction_tests::allocate_unbound_node_id_shares_counter_with_installers ... ok
[INFO] [stdout] test scene::scene_construction_tests::first_leaf_id_returns_pre_order_first_leaf ... ok
[INFO] [stdout] test scene::scene_construction_tests::inline_mesh_mut_on_dangling_id_returns_none ... ok
[INFO] [stdout] test scene::scene_construction_tests::first_leaf_id_is_none_for_empty_graph ... ok
[INFO] [stdout] test scene::scene_construction_tests::inline_mesh_mut_returns_none_for_group ... ok
[INFO] [stdout] test scene::scene_construction_tests::inline_mesh_mut_returns_none_for_resource_backed_leaf ... ok
[INFO] [stdout] test scene::scene_construction_tests::inline_mesh_mut_returns_writable_leaf_payload ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_leaf_at_round_trips_a_parented_leaf ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_leaf_at_round_trips_a_root_leaf ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_leaf_at_with_dangling_parent_errors_dangling_node_id ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_leaf_at_with_dangling_rid_errors_dangling_mesh_resource ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_leaf_at_with_leaf_parent_errors_not_a_branch ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_mesh_resource_at_freshly_allocated_id_succeeds ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_mesh_resource_at_occupied_slot_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_mesh_resource_at_out_of_range_id_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_remove_install_round_trips_at_same_id ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_root_leaf_on_occupied_slot_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_root_leaf_on_out_of_range_id_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::first_leaf_id_is_none_when_only_groups_reachable ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_root_leaf_at_freshly_allocated_id_succeeds ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_root_leaf_with_dangling_mesh_resource_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::install_leaf_at_on_occupied_slot_errors_node_slot_occupied ... ok
[INFO] [stdout] test scene::scene_construction_tests::leaf_mesh_arc_returns_none_for_group ... ok
[INFO] [stdout] test scene::scene_construction_tests::leaf_mesh_arc_returns_the_inline_payload_arc ... ok
[INFO] [stdout] test primitives::vector3d_index_tests::index_out_of_bounds_panics - should panic ... ok
[INFO] [stdout] test scene::scene_construction_tests::leaf_mesh_arc_follows_resource_indirection ... ok
[INFO] [stdout] test scene::scene_construction_tests::leaf_mesh_arc_returns_none_on_dangling_id ... ok
[INFO] [stdout] test scene::scene_construction_tests::mesh_resource_mut_on_dangling_id_returns_none ... ok
[INFO] [stdout] test scene::scene_construction_tests::mesh_resource_mut_returns_writable_borrow ... ok
[INFO] [stdout] test scene::scene_construction_tests::mesh_resources_iter_mut_allows_in_place_edit ... ok
[INFO] [stdout] test scene::scene_construction_tests::mesh_resources_iter_yields_every_live_slot ... ok
[INFO] [stdout] test scene::scene_construction_tests::other_leaf_references_resource_ignores_inline_mesh_leaves ... ok
[INFO] [stdout] test scene::scene_construction_tests::new_is_empty ... ok
[INFO] [stdout] test scene::scene_construction_tests::node_ids_strictly_increase ... ok
[INFO] [stdout] test scene::scene_construction_tests::other_leaf_references_resource_ignores_non_leaf_nodes ... ok
[INFO] [stdout] test scene::scene_construction_tests::other_leaf_references_resource_is_false_when_exclude_is_the_only_reference ... ok
[INFO] [stdout] test scene::scene_construction_tests::other_leaf_references_resource_is_true_when_a_sibling_leaf_holds_the_same_rid ... ok
[INFO] [stdout] test scene::scene_construction_tests::other_leaf_references_resource_with_dangling_exclude_still_reports_live_references ... ok
[INFO] [stdout] test scene::scene_construction_tests::reachable_leaf_count_is_zero_for_empty_graph ... ok
[INFO] [stdout] test scene::scene_construction_tests::reachable_leaf_count_matches_repeated_leaf_id_at_index ... ok
[INFO] [stdout] test scene::scene_construction_tests::register_subtree_resource_happy_path ... ok
[INFO] [stdout] test scene::scene_construction_tests::register_subtree_resource_for_parented_node_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::register_subtree_resource_for_scene_root_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::register_subtree_resource_twice_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_leaf_on_dangling_id_errors_dangling_node_id ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_leaf_on_root_mesh_resource_leaf_returns_root_attachment_and_rid ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_leaf_preserves_sibling_position_for_round_trip ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_leaf_on_parented_leaf_returns_parent_attachment_with_position ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_leaf_on_root_inline_mesh_leaf_returns_root_attachment_and_payload ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_leaf_on_non_leaf_node_errors_not_a_leaf_and_leaves_scene_unchanged ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_root_leaf_on_empty_slot_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_root_leaf_on_group_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_root_leaf_on_parented_leaf_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_root_leaf_on_inline_mesh_leaf_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_mesh_resource_on_dangling_id_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_root_leaf_returns_payload_and_clears_slot ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_mesh_resource_returns_arc_and_clears_slot ... ok
[INFO] [stdout] test scene::scene_construction_tests::set_local_transform_changes_node_transform ... ok
[INFO] [stdout] test scene::scene_construction_tests::remove_mesh_resource_with_live_referencing_leaf_errors ... ok
[INFO] [stdout] test scene::scene_construction_tests::set_local_transform_on_dangling_id_errors ... ok
[INFO] [stdout] test scene::shared_vertices::shared_vertices_tests::a_coordinate_held_by_three_leaves_reports_each_once ... ok
[INFO] [stdout] test scene::shared_vertices::shared_vertices_tests::an_empty_leaf_beside_a_populated_one_reports_nothing ... ok
[INFO] [stdout] test scene::shared_vertices::shared_vertices_tests::empty_scene_has_no_shared_vertices ... ok
[INFO] [stdout] test scene::shared_vertices::shared_vertices_tests::negative_zero_collides_with_positive_zero ... ok
[INFO] [stdout] test scene::shared_vertices::shared_vertices_tests::leaves_sharing_many_coordinates_are_reported_once_each ... ok
[INFO] [stdout] test scene::shared_vertices::shared_vertices_tests::three_leaves_with_pairwise_sharing_all_reported ... ok
[INFO] [stdout] test scene::shared_vertices::shared_vertices_tests::single_leaf_with_repeated_local_vertex_is_not_shared ... ok
[INFO] [stdout] test scene::shared_vertices::shared_vertices_tests::two_disjoint_leaves_are_not_shared ... ok
[INFO] [stdout] test scene::tests_error::display_already_a_subtree_resource_root ... ok
[INFO] [stdout] test scene::shared_vertices::shared_vertices_tests::two_leaves_sharing_one_vertex_are_both_reported ... ok
[INFO] [stdout] test scene::tests_error::display_already_a_root ... ok
[INFO] [stdout] test scene::tests_error::display_already_has_parent ... ok
[INFO] [stdout] test scene::tests_error::display_dangling_node_id ... ok
[INFO] [stdout] test scene::tests_error::display_dangling_mesh_resource ... ok
[INFO] [stdout] test scene::tests_error::display_dangling_subtree_resource ... ok
[INFO] [stdout] test scene::tests_error::display_duplicate_child ... ok
[INFO] [stdout] test scene::shared_vertices::shared_vertices_tests::mesh_resource_leaves_are_walked_too ... ok
[INFO] [stdout] test scene::tests_error::display_empty_intersection ... ok
[INFO] [stdout] test scene::tests_error::display_mesh_resource_in_use ... ok
[INFO] [stdout] test scene::tests_error::display_not_a_branch ... ok
[INFO] [stdout] test scene::tests_error::display_instance_cycle ... ok
[INFO] [stdout] test scene::tests_error::display_node_slot_occupied ... ok
[INFO] [stdout] test scene::tests_error::display_not_a_mesh_resource_leaf ... ok
[INFO] [stdout] test scene::tests_error::display_not_a_root ... ok
[INFO] [stdout] test scene::tests_error::display_mesh_resource_slot_occupied ... ok
[INFO] [stdout] test scene::tests_error::display_not_a_leaf ... ok
[INFO] [stdout] test scene::tests_error::display_parent_mismatch_with_recorded_some ... ok
[INFO] [stdout] test scene::tests_error::display_structural_cycle ... ok
[INFO] [stdout] test scene::tests_error::display_transform_wraps_inner_message ... ok
[INFO] [stdout] test scene::tests_error::source_returns_transform_error_only_for_transform_variant ... ok
[INFO] [stdout] test scene::tests_error::display_unevaluated_csg ... ok
[INFO] [stdout] test scene::validate::scene_validate_tests::validate_detects_dangling_child ... ok
[INFO] [stdout] test scene::validate::scene_validate_tests::validate_detects_dangling_mesh_resource ... ok
[INFO] [stdout] test scene::validate::scene_validate_tests::validate_detects_dangling_subtree_resource ... ok
[INFO] [stdout] test scene::validate::scene_validate_tests::validate_detects_duplicate_child ... ok
[INFO] [stdout] test scene::validate::scene_validate_tests::validate_detects_empty_intersection ... ok
[INFO] [stdout] test scene::validate::scene_validate_tests::validate_passes_on_empty_graph ... ok
[INFO] [stdout] test scene::validate::scene_validate_tests::validate_passes_on_simple_tree ... ok
[INFO] [stdout] test scene::validate::scene_validate_tests::validate_passes_on_subtree_instance_graph ... ok
[INFO] [stdout] test tests_triangle_iterator::distinct_nan_payloads_stay_distinct_vertices ... ok
[INFO] [stdout] test scene::tests_error::display_parent_mismatch_with_recorded_none ... ok
[INFO] [stdout] test tests_triangle_iterator::keeps_the_bits_of_the_first_zero_spelling ... ok
[INFO] [stdout] test scene::validate::scene_validate_tests::validate_detects_parent_mismatch ... ok
[INFO] [stdout] test scene::validate::scene_validate_tests::validate_detects_instance_cycle ... ok
[INFO] [stdout] test scene::shared_vertices::shared_vertices_tests::matches_the_reference_detection ... ok
[INFO] [stdout] test tests_triangle_iterator::passes_metadata_through_an_empty_soup ... ok
[INFO] [stdout] test tests_triangle_iterator::soup_above_cap_reports_too_many_vertices ... ok
[INFO] [stdout] test tests_triangle_iterator::soup_at_exact_cap_succeeds ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_at_exact_singularity_threshold_returns_error ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_identity_is_pass_through ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_just_above_singularity_threshold_succeeds ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_mirror_along_x_does_not_flip_z_normal ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_mirror_along_z_flips_the_normal ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_nan_determinant_returns_error ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_negative_determinant_uses_abs_threshold ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_non_uniform_scale_uses_inverse_transpose ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_result_is_unit_length ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_rotation_rotates_the_normal ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_rotation_then_translation_ignores_translation ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_singular_linear_returns_error ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_translation_does_not_change_normal ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_uniform_scale_does_not_change_normal ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_normal_zero_input_returns_error ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vector_ignores_translation ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vector_scales_displacement ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vector_uses_linear_part ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vertex_far_from_origin_keeps_precision ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vertex_identity_is_pass_through ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vertex_non_uniform_scale_scales_each_axis_independently ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vertex_overflow_produces_inf_caught_by_validate_vertices ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vertex_rotation_x_quarter_turn_sends_y_to_z ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vertex_rotation_y_quarter_turn_sends_z_to_x ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vertex_rotation_z_quarter_turn_sends_x_to_y ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vertex_translation_adds_offset ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vertex_translation_then_rotation_uses_correct_order ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::apply_to_vertex_uniform_scale_scales_each_coordinate ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::compose_apply_equals_sequential_apply ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::compose_chain_apply_matches_sequential_apply_at_length_twenty ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::compose_chain_of_twenty_subrotations_is_near_full_rotation ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::compose_is_associative ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::compose_translates_translations ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::compose_translation_then_rotation_orders_correctly ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::compose_with_identity_on_either_side_is_a_no_op ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::default_equals_identity ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::determinant_identity_is_one ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::determinant_mirror_is_negative ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::determinant_non_uniform_scale_is_product ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::determinant_rotation_is_one ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::determinant_singular_is_zero ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::determinant_translation_is_one ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::determinant_uniform_scale_is_cubed ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_axis_angle_normalises_input_axis ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_axis_angle_pi_around_diagonal_swaps_axes ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_axis_angle_subnormal_angle_is_near_identity ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_axis_angle_two_pi_is_near_identity ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_axis_angle_zero_angle_is_exact_identity ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_axis_angle_zero_axis_errors ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_linear_and_translation_stores_inputs_verbatim ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_non_uniform_scale_has_diagonal_linear_and_zero_translation ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_non_uniform_scale_ones_equals_identity ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_rotation_axis_aligned_matches_dedicated_builders ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_rotation_x_quarter_turn_swaps_y_into_z ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_rotation_x_zero_equals_identity ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_rotation_y_quarter_turn_swaps_z_into_x ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_rotation_z_quarter_turn_swaps_x_into_y ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_translation_keeps_identity_linear ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_translation_zero_equals_identity ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_uniform_scale_has_zero_translation_and_diagonal_linear ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_uniform_scale_negative_mirrors ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::from_uniform_scale_one_equals_identity ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::identity_has_unit_diagonal_and_zero_translation ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::inverse_compose_self_is_identity ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::inverse_of_combined_transform_is_correct ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::inverse_of_identity_is_identity ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::inverse_of_translation_negates_offset ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::inverse_singular_returns_error ... ok
[INFO] [stdout] test transform::affine_transform_3d_tests::struct_is_copy ... ok
[INFO] [stdout] test transform::transform_3d_tests::affine_apply_to_normal_delegates_to_inner ... ok
[INFO] [stdout] test transform::transform_3d_tests::affine_apply_to_vertex_delegates_to_inner ... ok
[INFO] [stdout] test transform::transform_3d_tests::compose_identity_with_anything_returns_other ... ok
[INFO] [stdout] test transform::transform_3d_tests::compose_two_affines_returns_affine ... ok
[INFO] [stdout] test transform::transform_3d_tests::compose_two_identities_is_identity ... ok
[INFO] [stdout] test transform::transform_3d_tests::determinant_of_affine_delegates_to_inner ... ok
[INFO] [stdout] test transform::transform_3d_tests::determinant_of_identity_is_one ... ok
[INFO] [stdout] test transform::transform_3d_tests::identity_apply_to_normal_is_pass_through ... ok
[INFO] [stdout] test transform::transform_3d_tests::identity_apply_to_vertex_is_pass_through ... ok
[INFO] [stdout] test transform::transform_3d_tests::identity_is_default ... ok
[INFO] [stdout] test transform::transform_3d_tests::inverse_of_affine_round_trips ... ok
[INFO] [stdout] test transform::transform_3d_tests::inverse_of_identity_is_identity ... ok
[INFO] [stdout] test transform::transform_3d_tests::inverse_of_singular_affine_propagates_error ... ok
[INFO] [stdout] test transform::transform_3d_tests::is_identity_distinguishes_variants ... ok
[INFO] [stdout] test triangle_iterator::triangle_iterator_tests::build_above_cap_returns_too_many_vertices ... ok
[INFO] [stdout] test triangle_iterator::triangle_iterator_tests::build_at_exact_cap_succeeds ... ok
[INFO] [stdout] test triangle_iterator::triangle_iterator_tests::build_below_cap_produces_indexed_mesh ... ok
[INFO] [stdout] test indexed_mesh::validate::manifold_sort_equivalence_tests::agrees_with_the_reference_on_mutated_tori ... ok
[INFO] [stdout] test indexed_mesh::topology::sorted_topology_equivalence_tests::matches_the_reference_on_generated_tori ... ok
[INFO] [stdout] test tests_triangle_iterator::matches_the_reference_on_a_large_grid ... ok
[INFO] [stdout] test indexed_mesh::validate::manifold_sort_equivalence_tests::agrees_with_the_reference_on_valid_tori ... ok
[INFO] [stdout] test tests_triangle_iterator::matches_the_reference_near_the_cap ... ok
[INFO] [stdout] test tests_triangle_iterator::is_deterministic_across_runs ... ok
[INFO] [stdout] test tests_triangle_iterator::matches_the_reference_on_generated_soups ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 457 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.76s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/properties.rs (/opt/rustwide/target/debug/deps/properties-4b4fd58bcc39eb4d)
[INFO] [stdout] 
[INFO] [stdout] running 22 tests
[INFO] [stdout] test compute_normal_is_scale_invariant ... ok
[INFO] [stdout] test cross_product_is_orthogonal_to_inputs_f64 ... ok
[INFO] [stdout] test diff_norm_is_symmetric_f32 ... ok
[INFO] [stdout] test cross_product_is_anti_commutative_f64 ... ok
[INFO] [stdout] test dot_product_is_commutative_f32 ... ok
[INFO] [stdout] test compute_normal_at_degeneracy_threshold_is_finite_or_errs ... ok
[INFO] [stdout] test dot_product_is_commutative_f64 ... ok
[INFO] [stdout] test compose_with_identity_is_identity_right ... ok
[INFO] [stdout] test compose_with_identity_is_identity_left ... ok
[INFO] [stdout] test f32_to_f64_to_f32_round_trip ... ok
[INFO] [stdout] test compose_apply_equals_sequential_apply ... ok
[INFO] [stdout] test from_axis_angle_with_negated_axis_is_inverse_rotation ... ok
[INFO] [stdout] test from_axis_angle_with_non_zero_axis_succeeds_and_has_unit_determinant ... ok
[INFO] [stdout] test f32_arvo_transformed_aabb_contains_every_high_precision_corner ... ok
[INFO] [stdout] test from_axis_angle_is_invariant_to_axis_scaling ... ok
[INFO] [stdout] test norm_is_non_negative_f32 ... ok
[INFO] [stdout] test squared_norm_equals_dot_with_self_f64 ... ok
[INFO] [stdout] test transformed_arvo_contains_every_transformed_corner ... ok
[INFO] [stdout] test inverse_then_apply_is_round_trip ... ok
[INFO] [stdout] test transformed_arvo_is_tight_for_pure_translation ... ok
[INFO] [stdout] test compose_is_associative ... ok
[INFO] [stderr]    Doc-tests sc_mesh_core
[INFO] [stdout] test compute_normal_never_returns_non_finite_or_panics_on_pathological_input ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473", kill_on_drop: false }`
[INFO] [stdout] 4978ac4d6db42b9070a68796347779343f1bd04cc4257a850002273f21159473
