[INFO] fetching crate featherstone 0.1.0... [INFO] testing featherstone-0.1.0 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-1 [INFO] extracting crate featherstone 0.1.0 into /workspace/builds/worker-6-tc1/source [INFO] started tweaking crates.io crate featherstone 0.1.0 [INFO] removed 0 missing examples [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate featherstone 0.1.0 [INFO] tweaked toml for crates.io crate featherstone 0.1.0 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate featherstone 0.1.0 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate featherstone 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" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded simba v0.9.1 [INFO] [stderr] Downloaded wide v0.7.33 [INFO] [stderr] Downloaded yaserde v0.8.0 [INFO] [stderr] Downloaded yaserde_derive v0.8.0 [INFO] [stderr] Downloaded urdf-rs v0.8.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 46d80131f92a6988b5ded0561d0dc544eb2d24dce719f2c274840cc23292db8e [INFO] running `Command { std: "docker" "start" "-a" "46d80131f92a6988b5ded0561d0dc544eb2d24dce719f2c274840cc23292db8e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "46d80131f92a6988b5ded0561d0dc544eb2d24dce719f2c274840cc23292db8e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "46d80131f92a6988b5ded0561d0dc544eb2d24dce719f2c274840cc23292db8e", kill_on_drop: false }` [INFO] [stdout] 46d80131f92a6988b5ded0561d0dc544eb2d24dce719f2c274840cc23292db8e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 7c6113d76192b082463f399a05ae6dc641b29026438c47503bae85290b9da362 [INFO] running `Command { std: "docker" "start" "-a" "7c6113d76192b082463f399a05ae6dc641b29026438c47503bae85290b9da362", kill_on_drop: false }` [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling bytemuck v1.25.0 [INFO] [stderr] Compiling matrixmultiply v0.3.10 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling xml-rs v0.8.28 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling rawpointer v0.2.1 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling safe_arch v0.7.4 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling wide v0.7.33 [INFO] [stderr] Compiling yaserde v0.8.0 [INFO] [stderr] Compiling num-complex v0.4.6 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling approx v0.5.1 [INFO] [stderr] Compiling num-rational v0.4.2 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling simba v0.9.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling nalgebra-macros v0.2.2 [INFO] [stderr] Compiling yaserde_derive v0.8.0 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling urdf-rs v0.8.0 [INFO] [stderr] Compiling nalgebra v0.33.2 [INFO] [stderr] Compiling featherstone v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 48.83s [INFO] running `Command { std: "docker" "inspect" "7c6113d76192b082463f399a05ae6dc641b29026438c47503bae85290b9da362", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7c6113d76192b082463f399a05ae6dc641b29026438c47503bae85290b9da362", kill_on_drop: false }` [INFO] [stdout] 7c6113d76192b082463f399a05ae6dc641b29026438c47503bae85290b9da362 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 972b69c1c4f3d29388e0ac3a1ebec3b98533c63058c1149cd908f6f13c1e8445 [INFO] running `Command { std: "docker" "start" "-a" "972b69c1c4f3d29388e0ac3a1ebec3b98533c63058c1149cd908f6f13c1e8445", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling zerocopy v0.8.47 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling zerocopy-derive v0.8.47 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling itoa v1.0.18 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling num-complex v0.4.6 [INFO] [stderr] Compiling approx v0.5.1 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling num-rational v0.4.2 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling simba v0.9.1 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling rand_xorshift v0.4.0 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling is-terminal v0.4.17 [INFO] [stderr] Compiling plotters v0.3.7 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling rusty-fork v0.3.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling tinytemplate v1.2.1 [INFO] [stderr] Compiling half v2.7.1 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling ciborium-ll v0.2.2 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling ciborium v0.2.2 [INFO] [stderr] Compiling proptest v1.10.0 [INFO] [stderr] Compiling criterion v0.5.1 [INFO] [stderr] Compiling nalgebra v0.33.2 [INFO] [stderr] Compiling featherstone v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: duplicated attribute [INFO] [stdout] --> src/joint.rs:660:5 [INFO] [stdout] | [INFO] [stdout] 660 | #[test] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(duplicate_macro_attributes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> src/collider.rs:369:13 [INFO] [stdout] | [INFO] [stdout] 369 | let n = 26; // sample directions on axes and diagonals [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `angle` [INFO] [stdout] --> src/joint.rs:764:13 [INFO] [stdout] | [INFO] [stdout] 764 | angle in -3.0f32..3.0, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_angle` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v_lin` [INFO] [stdout] --> tests/research_grade.rs:1950:14 [INFO] [stdout] | [INFO] [stdout] 1950 | let (v_lin, v_ang) = body_velocity(&body, body_id); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_v_lin` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> tests/research_grade.rs:2507:9 [INFO] [stdout] | [INFO] [stdout] 2507 | let mut body_light = make_chain(2, 0.5, 0.5); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> tests/research_grade.rs:2508:9 [INFO] [stdout] | [INFO] [stdout] 2508 | let mut body_heavy = make_chain(2, 5.0, 0.5); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement [INFO] [stdout] --> src/contact.rs:2479:18 [INFO] [stdout] | [INFO] [stdout] 2479 | for c in &result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(for_loops_over_fallibles)]` on by default [INFO] [stdout] help: to check pattern in a loop use `while let` [INFO] [stdout] | [INFO] [stdout] 2479 - for c in &result { [INFO] [stdout] 2479 + while let Some(c) = &result { [INFO] [stdout] | [INFO] [stdout] help: consider using `if let` to clear intent [INFO] [stdout] | [INFO] [stdout] 2479 - for c in &result { [INFO] [stdout] 2479 + if let Some(c) = &result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 08s [INFO] running `Command { std: "docker" "inspect" "972b69c1c4f3d29388e0ac3a1ebec3b98533c63058c1149cd908f6f13c1e8445", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "972b69c1c4f3d29388e0ac3a1ebec3b98533c63058c1149cd908f6f13c1e8445", kill_on_drop: false }` [INFO] [stdout] 972b69c1c4f3d29388e0ac3a1ebec3b98533c63058c1149cd908f6f13c1e8445 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 6655582f8c9539ddc51af10f8023be6473369c4118ce48d4b7477f2d14c6a661 [INFO] running `Command { std: "docker" "start" "-a" "6655582f8c9539ddc51af10f8023be6473369c4118ce48d4b7477f2d14c6a661", kill_on_drop: false }` [INFO] [stderr] warning: duplicated attribute [INFO] [stderr] --> src/joint.rs:660:5 [INFO] [stderr] | [INFO] [stderr] 660 | #[test] [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(duplicate_macro_attributes)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `n` [INFO] [stderr] --> src/collider.rs:369:13 [INFO] [stderr] | [INFO] [stderr] 369 | let n = 26; // sample directions on axes and diagonals [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `angle` [INFO] [stderr] --> src/joint.rs:764:13 [INFO] [stderr] | [INFO] [stderr] 764 | angle in -3.0f32..3.0, [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_angle` [INFO] [stderr] [INFO] [stderr] warning: for loop over a `&Option`. This is more readably written as an `if let` statement [INFO] [stderr] --> src/contact.rs:2479:18 [INFO] [stderr] | [INFO] [stderr] 2479 | for c in &result { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(for_loops_over_fallibles)]` on by default [INFO] [stderr] help: to check pattern in a loop use `while let` [INFO] [stderr] | [INFO] [stderr] 2479 - for c in &result { [INFO] [stderr] 2479 + while let Some(c) = &result { [INFO] [stderr] | [INFO] [stderr] help: consider using `if let` to clear intent [INFO] [stderr] | [INFO] [stderr] 2479 - for c in &result { [INFO] [stderr] 2479 + if let Some(c) = &result { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused variable: `v_lin` [INFO] [stderr] --> tests/research_grade.rs:1950:14 [INFO] [stderr] | [INFO] [stderr] 1950 | let (v_lin, v_ang) = body_velocity(&body, body_id); [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_v_lin` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> tests/research_grade.rs:2507:9 [INFO] [stderr] | [INFO] [stderr] 2507 | let mut body_light = make_chain(2, 0.5, 0.5); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> tests/research_grade.rs:2508:9 [INFO] [stderr] | [INFO] [stderr] 2508 | let mut body_heavy = make_chain(2, 5.0, 0.5); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: `featherstone` (lib test) generated 4 warnings (run `cargo fix --lib -p featherstone --tests` to apply 2 suggestions) [INFO] [stderr] warning: `featherstone` (test "research_grade") generated 3 warnings (run `cargo fix --test "research_grade" -p featherstone` to apply 3 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.21s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/featherstone-9e26ac115d1c2997) [INFO] [stdout] [INFO] [stdout] running 481 tests [INFO] [stdout] test aba::tests::determinism_aba_same_input_same_output ... ok [INFO] [stdout] test aba::tests::intent_aba_rnea_roundtrip_recovers_torques ... ok [INFO] [stdout] test aba::tests::intent_aba_symmetric_torques_produce_opposite_accelerations ... ok [INFO] [stdout] test aba::tests::intent_aba_zero_torque_zero_gravity_zero_velocity_zero_acceleration ... ok [INFO] [stdout] test aba::tests::intent_aba_double_mass_halves_acceleration ... ok [INFO] [stdout] test aba::tests::test_aba_all_accelerations_finite_multi_link ... ok [INFO] [stdout] test aba::tests::test_aba_applied_torque ... ok [INFO] [stdout] test aba::tests::test_aba_fixed_joint_no_dof ... ok [INFO] [stdout] test aba::tests::test_aba_empty ... ok [INFO] [stdout] test aba::tests::test_aba_free_fall ... ok [INFO] [stdout] test aba::tests::test_aba_heavier_body_accelerates_less ... ok [INFO] [stdout] test aba::tests::test_aba_prismatic_free_fall ... ok [INFO] [stdout] test aba::tests::test_aba_single_pendulum_gravity_torque ... ok [INFO] [stdout] test aba::tests::test_aba_spherical_free_fall ... ok [INFO] [stdout] test aba::tests::test_aba_symmetric_torques_produce_opposite_accelerations ... ok [INFO] [stdout] test aba::tests::test_aba_two_link_torque ... ok [INFO] [stdout] test aba::tests::test_aba_zero_gravity_no_acceleration ... ok [INFO] [stdout] test body::tests::edge_fixed_joint_contributes_zero_dof ... ok [INFO] [stdout] test body::tests::intent_body_branching_tree_correct_count ... ok [INFO] [stdout] test body::tests::intent_body_by_name_returns_correct_index ... ok [INFO] [stdout] test body::tests::intent_body_empty_has_zero_dimensions ... ok [INFO] [stdout] test body::tests::intent_body_nq_equals_sum_of_joint_npos ... ok [INFO] [stdout] test body::tests::intent_parent_index_always_less_than_child ... ok [INFO] [stdout] test body::tests::intent_reset_restores_default_state ... ok [INFO] [stdout] test body::tests::intent_state_dimensions_consistent ... ok [INFO] [stdout] test aba::tests::test_aba_external_force ... ok [INFO] [stdout] test body::tests::test_body_by_name ... ok [INFO] [stdout] test aba::tests::stress_aba_20_body_chain_all_finite ... ok [INFO] [stdout] test body::tests::test_branching_tree ... ok [INFO] [stdout] test body::tests::test_empty_body ... ok [INFO] [stdout] test body::tests::test_fixed_transform_identity ... ok [INFO] [stdout] test body::tests::test_floating_base ... ok [INFO] [stdout] test body::tests::test_iteration_order ... ok [INFO] [stdout] test body::tests::test_joint_dof_types ... ok [INFO] [stdout] test body::tests::test_joint_motion_subspace_revolute ... ok [INFO] [stdout] test body::tests::test_joint_transform_revolute ... ok [INFO] [stdout] test body::tests::test_mixed_nq_nv ... ok [INFO] [stdout] test body::tests::test_motion_subspace_floating ... ok [INFO] [stdout] test body::tests::test_motion_subspace_prismatic ... ok [INFO] [stdout] test body::tests::test_motion_subspace_revolute ... ok [INFO] [stdout] test body::tests::test_normalize_quaternions ... ok [INFO] [stdout] test body::tests::test_prismatic_transform ... ok [INFO] [stdout] test body::tests::test_quadruped_topology ... ok [INFO] [stdout] test body::tests::test_reset ... ok [INFO] [stdout] test body::tests::test_reset_spherical ... ok [INFO] [stdout] test body::tests::test_revolute_transform ... ok [INFO] [stdout] test body::tests::test_serial_chain_6dof ... ok [INFO] [stdout] test body::tests::test_set_and_clear_external_forces ... ok [INFO] [stdout] test body::tests::test_set_get_joint_state ... ok [INFO] [stdout] test body::tests::test_body_count_matches_add ... ok [INFO] [stdout] test body::tests::test_set_gravity ... ok [INFO] [stdout] test body::tests::test_set_joint_tau ... ok [INFO] [stdout] test body::tests::test_single_revolute ... ok [INFO] [stdout] test body::tests::test_spherical_dimensions ... ok [INFO] [stdout] test body::tests::test_world_transform_chain ... ok [INFO] [stdout] test collider::tests::collider_shape_box_half_extents_positive ... ok [INFO] [stdout] test collider::tests::collider_shape_convex_hull_construction ... ok [INFO] [stdout] test collider::tests::collider_shape_cylinder_construction ... ok [INFO] [stdout] test collider::tests::collider_shape_capsule_construction ... ok [INFO] [stdout] test collider::tests::collider_shape_decomposed_mesh_construction ... ok [INFO] [stdout] test collider::tests::collider_shape_is_clone_and_debug ... ok [INFO] [stdout] test collider::tests::collider_shape_sphere_has_positive_radius ... ok [INFO] [stdout] test collider::tests::convex_hull_aabb_bounds_all_vertices ... ok [INFO] [stdout] test collider::tests::convex_hull_aabb_contains_all_vertices ... ok [INFO] [stdout] test collider::tests::convex_hull_decompose_single_hull_when_too_few_verts ... ok [INFO] [stdout] test collider::tests::convex_hull_decompose_small_input_returns_single ... ok [INFO] [stdout] test collider::tests::convex_hull_decompose_splits_large_input ... ok [INFO] [stdout] test collider::tests::convex_hull_support_direction_negative ... ok [INFO] [stdout] test collider::tests::convex_hull_support_empty_returns_origin ... ok [INFO] [stdout] test collider::tests::convex_hull_support_returns_farthest_vertex ... ok [INFO] [stdout] test collider::tests::edge_empty_convex_hull_support ... ok [INFO] [stdout] test collider::tests::edge_single_vertex_hull ... ok [INFO] [stdout] test collider::tests::intent_box_support_returns_vertex ... ok [INFO] [stdout] test collider::tests::intent_convex_hull_aabb_contains_all_vertices ... ok [INFO] [stdout] test collider::tests::intent_sphere_support_returns_surface_point ... ok [INFO] [stdout] test collider::tests::property_decompose_preserves_vertex_count ... ok [INFO] [stdout] test contact::tests::intent_ground_contacts_only_for_penetrating_bodies ... ok [INFO] [stdout] test contact::tests::intent_manifold_prune_removes_separated ... ok [INFO] [stdout] test contact::tests::intent_sphere_sphere_separated_no_contact ... ok [INFO] [stdout] test contact::tests::property_contact_normal_always_unit ... ok [INFO] [stdout] test contact::tests::test_box_box_contact ... ok [INFO] [stdout] test contact::tests::test_box_box_contacts_from_pair_overlapping ... ok [INFO] [stdout] test contact::tests::test_box_box_contacts_from_pair_wrapper ... ok [INFO] [stdout] test contact::tests::test_box_box_separated ... ok [INFO] [stdout] test contact::tests::test_capsule_box_contact_overlapping ... ok [INFO] [stdout] test contact::tests::test_capsule_box_contact_separated ... ok [INFO] [stdout] test contact::tests::test_capsule_capsule_aligned_overlapping ... ok [INFO] [stdout] test contact::tests::test_capsule_capsule_contact_from_pair_wrapper ... ok [INFO] [stdout] test contact::tests::test_capsule_capsule_from_pair_overlapping ... ok [INFO] [stdout] test contact::tests::test_capsule_capsule_separated ... ok [INFO] [stdout] test contact::tests::test_capsule_sphere_at_endpoint ... ok [INFO] [stdout] test contact::tests::test_capsule_sphere_contact_overlapping ... ok [INFO] [stdout] test contact::tests::test_capsule_sphere_contact_touching ... ok [INFO] [stdout] test contact::tests::test_clip_degenerate_empty ... ok [INFO] [stdout] test contact::tests::test_clip_numerical_stability ... ok [INFO] [stdout] test contact::tests::test_clip_polygon_full_clip ... ok [INFO] [stdout] test contact::tests::test_clip_polygon_half_clip ... ok [INFO] [stdout] test contact::tests::test_clip_polygon_no_clip ... ok [INFO] [stdout] test contact::tests::test_compute_tangent_frame_orthonormal ... ok [INFO] [stdout] test contact::tests::test_contact_normal_always_normalized ... ok [INFO] [stdout] test contact::tests::test_contact_point_creation ... ok [INFO] [stdout] test contact::tests::test_contact_point_inactive ... ok [INFO] [stdout] test contact::tests::test_contact_point_with_material ... ok [INFO] [stdout] test contact::tests::test_contact_zero_normal_fallback ... ok [INFO] [stdout] test contact::tests::test_get_box_face_polygon_identity_z_positive ... ok [INFO] [stdout] test contact::tests::test_get_box_face_polygon_negative_face ... ok [INFO] [stdout] test contact::tests::test_ground_plane_contacts ... ok [INFO] [stdout] test contact::tests::test_inter_body_capsule_dispatch ... ok [INFO] [stdout] test contact::tests::test_inter_body_contacts_box_box ... ok [INFO] [stdout] test contact::tests::test_inter_body_contacts_dispatch ... ok [INFO] [stdout] test contact::tests::test_inter_body_contacts_from_pair_spheres ... ok [INFO] [stdout] test contact::tests::test_inter_body_contacts_separated_spheres ... ok [INFO] [stdout] test contact::tests::test_inter_body_contacts_sphere_sphere ... ok [INFO] [stdout] test contact::tests::test_manifold_clear ... ok [INFO] [stdout] test contact::tests::test_manifold_limit_per_body ... ok [INFO] [stdout] test contact::tests::test_manifold_merge ... ok [INFO] [stdout] test contact::tests::test_manifold_merge_three_contacts ... ok [INFO] [stdout] test contact::tests::test_manifold_operations ... ok [INFO] [stdout] test contact::tests::test_manifold_prune ... ok [INFO] [stdout] test contact::tests::test_manifold_sort_by_penetration_ordering ... ok [INFO] [stdout] test contact::tests::test_manifold_with_capacity_empty ... ok [INFO] [stdout] test contact::tests::test_reduce_fewer_than_max ... ok [INFO] [stdout] test contact::tests::test_reduce_preserves_deepest ... ok [INFO] [stdout] test contact::tests::test_reduce_square_patch ... ok [INFO] [stdout] test contact::tests::test_reduce_to_best_n_exactly_max ... ok [INFO] [stdout] test contact::tests::test_reduce_to_best_n_fewer_than_max ... ok [INFO] [stdout] test contact::tests::test_select_incident_face_aligned_with_neg_x ... ok [INFO] [stdout] test contact::tests::test_select_incident_face_aligned_with_y ... ok [INFO] [stdout] test contact::tests::test_select_max_area_contacts_returns_correct_count ... ok [INFO] [stdout] test contact::tests::test_select_max_area_indices ... ok [INFO] [stdout] test contact::tests::test_sort_by_penetration ... ok [INFO] [stdout] test contact::tests::test_sphere_box_contact_face ... ok [INFO] [stdout] test contact::tests::test_sphere_box_inside_box ... ok [INFO] [stdout] test contact::tests::test_sphere_box_separated ... ok [INFO] [stdout] test contact::tests::test_sphere_ground_contacts ... ok [INFO] [stdout] test contact::tests::test_sphere_sphere_coincident_centers ... ok [INFO] [stdout] test contact::tests::test_sphere_sphere_contact ... ok [INFO] [stdout] test contact::tests::test_sphere_sphere_separated ... ok [INFO] [stdout] test contact::tests::test_sphere_sphere_touching ... ok [INFO] [stdout] test contact::tests::test_sutherland_hodgman_clip_quad_against_quad ... ok [INFO] [stdout] test contact::tests::test_tangent_frame_orthonormal ... ok [INFO] [stdout] test contact::tests::test_with_friction_and_restitution_chaining ... ok [INFO] [stdout] test contact_jacobian::tests::intent_delassus_diagonal_positive ... ok [INFO] [stdout] test contact_jacobian::tests::intent_delassus_matrix_symmetric ... ok [INFO] [stdout] test contact_jacobian::tests::intent_global_constraints_correct_dimensions ... ok [INFO] [stdout] test contact_jacobian::tests::intent_jacobian_cols_match_dof ... ok [INFO] [stdout] test contact_jacobian::tests::intent_jacobian_normal_rows_match_contact_count ... ok [INFO] [stdout] test contact_jacobian::tests::property_multi_body_jacobian_cols_equal_total_dof ... ok [INFO] [stdout] test contact_jacobian::tests::test_contact_constraints_empty ... ok [INFO] [stdout] test contact_jacobian::tests::test_contact_constraints_from_manifold ... ok [INFO] [stdout] test contact_jacobian::tests::test_contact_jacobian_finite_difference ... ok [INFO] [stdout] test collider::tests::prop_aabb_contains_all_vertices ... ok [INFO] [stdout] test contact_jacobian::tests::test_delassus_matrix_dimensions ... ok [INFO] [stdout] test contact_jacobian::tests::test_contact_jacobian_single_revolute ... ok [INFO] [stdout] test contact_jacobian::tests::test_friction_cone_box ... ok [INFO] [stdout] test contact_jacobian::tests::test_friction_cone_project ... ok [INFO] [stdout] test contact_jacobian::tests::test_friction_cone_zero_normal ... ok [INFO] [stdout] test contact_jacobian::tests::test_multiple_contacts_assembly ... ok [INFO] [stdout] test contact_jacobian::tests::test_normal_jacobian_correct_direction ... ok [INFO] [stdout] test contact_jacobian::tests::test_friction_cone_creation ... ok [INFO] [stdout] test contact_jacobian::tests::test_tangent_jacobian_orthogonal ... ok [INFO] [stdout] test crba::tests::determinism_crba_same_config_same_matrix ... ok [INFO] [stdout] test crba::tests::intent_crba_aba_consistency_m_qdd_equals_tau_minus_bias ... ok [INFO] [stdout] test crba::tests::intent_crba_empty_body_zero_matrix ... ok [INFO] [stdout] test crba::tests::intent_crba_all_eigenvalues_positive ... ok [INFO] [stdout] test crba::tests::intent_crba_floating_base_dimensions ... ok [INFO] [stdout] test crba::tests::intent_crba_mass_matrix_positive_definite ... ok [INFO] [stdout] test crba::tests::intent_crba_mass_matrix_symmetric ... ok [INFO] [stdout] test crba::tests::intent_crba_heavier_body_larger_diagonal ... ok [INFO] [stdout] test body::tests::prop_external_forces_cleared ... ok [INFO] [stdout] test body::tests::prop_body_count_matches_additions ... ok [INFO] [stdout] test aba::tests::prop_aba_output_always_finite ... ok [INFO] [stdout] test aba::tests::prop_aba_double_torque_doubles_acceleration ... ok [INFO] [stdout] test crba::tests::property_crba_mass_matrix_positive_diagonal ... ok [INFO] [stdout] test crba::tests::test_bias_forces_equals_gravity_at_zero_velocity ... ok [INFO] [stdout] test crba::tests::test_bias_forces_nonzero_with_velocity ... ok [INFO] [stdout] test crba::tests::test_bias_forces_zero_velocity ... ok [INFO] [stdout] test crba::tests::test_crba_empty ... ok [INFO] [stdout] test crba::tests::test_crba_dimensions ... ok [INFO] [stdout] test crba::tests::test_crba_heavier_body_larger_diagonal ... ok [INFO] [stdout] test crba::tests::test_crba_multi_link_finite ... ok [INFO] [stdout] test crba::tests::test_crba_positive_definite ... ok [INFO] [stdout] test crba::tests::test_crba_single_revolute ... ok [INFO] [stdout] test crba::tests::test_crba_symmetry ... ok [INFO] [stdout] test crba::tests::test_crba_aba_consistency ... ok [INFO] [stdout] test error::tests::error_clone_preserves_content ... ok [INFO] [stdout] test error::tests::error_display_epa_failed ... ok [INFO] [stdout] test error::tests::error_display_empty_urdf ... ok [INFO] [stdout] test error::tests::error_display_missing_link ... ok [INFO] [stdout] test error::tests::error_is_clone_and_debug ... ok [INFO] [stdout] test error::tests::error_singular_matrix_different_contexts ... ok [INFO] [stdout] test error::tests::result_type_alias_works ... ok [INFO] [stdout] test gjk::tests::edge_gjk_box_vs_box_overlapping_returns_finite ... ok [INFO] [stdout] test gjk::tests::edge_gjk_sphere_vs_box_produces_finite_result ... ok [INFO] [stdout] test error::tests::error_display_singular_matrix ... ok [INFO] [stdout] test gjk::tests::epa_penetration_depth_matches_overlap ... ok [INFO] [stdout] test gjk::tests::gjk_asymmetry_documented ... ok [INFO] [stdout] test error::tests::error_implements_std_error_trait ... ok [INFO] [stdout] test gjk::tests::gjk_barely_separated_spheres ... ok [INFO] [stdout] test gjk::tests::gjk_identical_spheres_known_limitation ... ok [INFO] [stdout] test gjk::tests::gjk_large_separation ... ok [INFO] [stdout] test gjk::tests::intent_epa_depth_increases_with_overlap ... ok [INFO] [stdout] test gjk::tests::intent_gjk_distance_non_negative ... ok [INFO] [stdout] test gjk::tests::property_gjk_sphere_distance_within_tolerance ... ok [INFO] [stdout] test gjk::tests::test_convex_hull_support ... ok [INFO] [stdout] test gjk::tests::test_convex_hull_support_multiple_directions ... ok [INFO] [stdout] test gjk::tests::test_epa_penetration_depth_reasonable ... ok [INFO] [stdout] test gjk::tests::test_epa_sphere_sphere ... ok [INFO] [stdout] test gjk::tests::test_gjk_box_box_separated ... ok [INFO] [stdout] test gjk::tests::intent_gjk_box_distance_positive_for_separated ... ok [INFO] [stdout] test gjk::tests::intent_epa_normal_unit_length ... ok [INFO] [stdout] test gjk::tests::test_gjk_box_far_separated ... ok [INFO] [stdout] test gjk::tests::test_gjk_convex_hull_vs_sphere_separated ... ok [INFO] [stdout] test gjk::tests::test_gjk_separated_spheres ... ok [INFO] [stdout] test gjk::tests::test_gjk_sphere_box_separated ... ok [INFO] [stdout] test gjk::tests::test_gjk_sphere_support_function ... ok [INFO] [stdout] test gjk::tests::test_gjk_overlapping_spheres ... ok [INFO] [stdout] test gjk::tests::test_gjk_sphere_box_overlap ... ok [INFO] [stdout] test integrator::tests::intent_free_fall_body_accelerates_under_gravity ... ok [INFO] [stdout] test crba::tests::prop_crba_positive_definite_energy ... ok [INFO] [stdout] test integrator::tests::intent_integrator_damping_reduces_velocity ... ok [INFO] [stdout] test integrator::tests::intent_integrator_state_dimensions_preserved ... ok [INFO] [stdout] test integrator::tests::intent_kahan_compensation_arrays_exist ... ok [INFO] [stdout] test crba::tests::prop_crba_floating_base_6x6_block_spd ... ok [INFO] [stdout] test aba::tests::stress_aba_branching_tree_100_steps ... ok [INFO] [stdout] test crba::tests::prop_crba_symmetric ... ok [INFO] [stdout] test integrator::tests::intent_zero_gravity_preserves_state ... ok [INFO] [stdout] test integrator::tests::intent_velocity_verlet_second_order ... ok [INFO] [stdout] test integrator::tests::intent_implicit_euler_more_stable_large_dt ... ok [INFO] [stdout] test integrator::tests::intent_all_integrators_agree_on_free_fall_direction ... ok [INFO] [stdout] test integrator::tests::test_all_integrators_produce_finite_results ... ok [INFO] [stdout] test integrator::tests::intent_integrator_all_methods_produce_finite_values ... ok [INFO] [stdout] test integrator::tests::property_all_methods_agree_on_direction ... ok [INFO] [stdout] test integrator::tests::test_explicit_euler_free_fall ... ok [INFO] [stdout] test integrator::tests::test_integrator_with_limits ... ok [INFO] [stdout] test integrator::tests::prop_step_preserves_state_dimensions ... ok [INFO] [stdout] test integrator::tests::test_rk4_more_accurate_than_euler ... ok [INFO] [stdout] test integrator::tests::test_multi_link_integration ... ok [INFO] [stdout] test integrator::tests::test_rk4_free_fall_accuracy ... ok [INFO] [stdout] test integrator::tests::test_rk4_spherical_joint_quaternion_normalization ... ok [INFO] [stdout] test integrator::tests::test_semi_implicit_euler_free_fall ... ok [INFO] [stdout] test integrator::tests::test_velocity_verlet_spherical_joint_quaternion ... ok [INFO] [stdout] test joint::tests::intent_all_joints_default_q_produces_identity_transform ... ok [INFO] [stdout] test joint::tests::intent_joint_dof_matches_motion_subspace_len ... ok [INFO] [stdout] test joint::tests::intent_joint_dof_matches_motion_subspace_len ... ok [INFO] [stdout] test joint::tests::intent_joint_npos_geq_dof ... ok [INFO] [stdout] test joint::tests::intent_spherical_quaternion_normalize_fixes_unnormalized ... ok [INFO] [stdout] test joint::tests::intent_spherical_quaternion_normalize_preserves_unit ... ok [INFO] [stdout] test integrator::tests::test_velocity_damping ... ok [INFO] [stdout] test joint::tests::prop_prismatic_default_q_gives_identity ... ok [INFO] [stdout] test joint::tests::prop_motion_subspace_dimension_equals_dof ... ok [INFO] [stdout] test joint::tests::prop_revolute_velocity_roundtrip ... ok [INFO] [stdout] test joint::tests::test_default_q_identity_transform ... ok [INFO] [stdout] test joint::tests::prop_revolute_transform_at_zero_is_identity ... ok [INFO] [stdout] test joint::tests::test_fixed_identity ... ok [INFO] [stdout] test joint::tests::test_floating_identity ... ok [INFO] [stdout] test joint::tests::test_floating_joint_velocity_roundtrip ... ok [INFO] [stdout] test joint::tests::test_dof_and_npos ... ok [INFO] [stdout] test joint::tests::test_motion_subspace_dimensions ... ok [INFO] [stdout] test joint::tests::test_floating_translation ... ok [INFO] [stdout] test joint::tests::test_motion_subspace_prismatic ... ok [INFO] [stdout] test joint::tests::test_motion_subspace_revolute ... ok [INFO] [stdout] test joint::tests::test_normalize_floating ... ok [INFO] [stdout] test joint::tests::test_normalize_spherical ... ok [INFO] [stdout] test joint::tests::test_planar_joint_dof_and_npos ... ok [INFO] [stdout] test joint::tests::test_prismatic_transform ... ok [INFO] [stdout] test joint::tests::test_revolute_transform_90deg ... ok [INFO] [stdout] test joint::tests::test_spherical_90deg_z ... ok [INFO] [stdout] test joint::tests::test_spherical_identity_at_unit_quat ... ok [INFO] [stdout] test joint::tests::test_transform_inverse_round_trip ... ok [INFO] [stdout] test joint::tests::test_velocity_round_trip_floating ... ok [INFO] [stdout] test joint::tests::test_velocity_round_trip_revolute ... ok [INFO] [stdout] test joint::tests::test_velocity_round_trip_spherical ... ok [INFO] [stdout] test kinematics::tests::determinism_fk_same_input_same_output ... ok [INFO] [stdout] test kinematics::tests::edge_com_single_body_at_origin ... ok [INFO] [stdout] test kinematics::tests::edge_jacobian_single_body_6_rows ... ok [INFO] [stdout] test kinematics::tests::intent_body_velocity_zero_when_stationary ... ok [INFO] [stdout] test kinematics::tests::intent_com_between_body_positions ... ok [INFO] [stdout] test kinematics::tests::intent_com_inside_bounding_region ... ok [INFO] [stdout] test joint::tests::test_spherical_joint_3dof_motion_subspace ... ok [INFO] [stdout] test kinematics::tests::intent_com_jacobian_dimensions ... ok [INFO] [stdout] test kinematics::tests::intent_fk_floating_base_position_matches_q ... ok [INFO] [stdout] test kinematics::tests::intent_fk_identity_at_zero_config ... ok [INFO] [stdout] test kinematics::tests::intent_fk_revolute_rotates_child ... ok [INFO] [stdout] test kinematics::tests::intent_jacobian_dimensions_match_dof ... ok [INFO] [stdout] test kinematics::tests::intent_jacobian_maps_zero_velocity_to_zero ... ok [INFO] [stdout] test kinematics::tests::property_body_transform_finite_for_all_configs ... ok [INFO] [stdout] test kinematics::tests::property_fk_transforms_count_equals_body_count ... ok [INFO] [stdout] test kinematics::tests::test_body_transform_returns_correct_type ... ok [INFO] [stdout] test kinematics::tests::test_body_velocity_floating_base_linear ... ok [INFO] [stdout] test kinematics::tests::test_body_velocity_revolute ... ok [INFO] [stdout] test kinematics::tests::test_body_velocity_zero_at_zero_qd ... ok [INFO] [stdout] test kinematics::tests::test_com_jacobian_dimensions ... ok [INFO] [stdout] test kinematics::tests::test_com_jacobian_velocity_consistency ... ok [INFO] [stdout] test kinematics::tests::test_com_position_single_body ... ok [INFO] [stdout] test kinematics::tests::test_com_position_symmetric ... ok [INFO] [stdout] test kinematics::tests::test_fk_2r_planar ... ok [INFO] [stdout] test kinematics::tests::test_fk_empty ... ok [INFO] [stdout] test kinematics::tests::test_fk_identity_at_zero ... ok [INFO] [stdout] test kinematics::tests::test_fk_spherical_joint_at_identity ... ok [INFO] [stdout] test kinematics::tests::test_jacobian_dimensions ... ok [INFO] [stdout] test kinematics::tests::test_jacobian_velocity_consistency ... ok [INFO] [stdout] test integrator::tests::test_velocity_verlet_spherical_quaternion_stays_unit ... ok [INFO] [stdout] test lcp_solver::tests::global_lcp_empty_contacts_converges_immediately ... ok [INFO] [stdout] test lcp_solver::tests::global_lcp_warm_start_does_not_panic ... ok [INFO] [stdout] test lcp_solver::tests::global_lcp_single_body_non_negative_impulses ... ok [INFO] [stdout] test lcp_solver::tests::intent_lcp_empty_manifold_zero_impulse ... ok [INFO] [stdout] test lcp_solver::tests::intent_lcp_impulses_non_negative ... ok [INFO] [stdout] test aba::tests::stress_aba_1000_steps_no_nan ... ok [INFO] [stdout] test lcp_solver::tests::intent_lcp_heavier_body_same_impulse_less_velocity_change ... ok [INFO] [stdout] test lcp_solver::tests::intent_lcp_restitution_increases_bounce_velocity ... ok [INFO] [stdout] test lcp_solver::tests::lcp_config_default_has_reasonable_values ... ok [INFO] [stdout] test lcp_solver::tests::property_lcp_different_sor_all_converge ... ok [INFO] [stdout] test lcp_solver::tests::test_compute_contact_impulse_convenience ... ok [INFO] [stdout] test lcp_solver::tests::test_lcp_complementarity ... ok [INFO] [stdout] test lcp_solver::tests::test_lcp_convergence ... ok [INFO] [stdout] test lcp_solver::tests::test_lcp_friction_bounds ... ok [INFO] [stdout] test lcp_solver::tests::test_lcp_no_contacts ... ok [INFO] [stdout] test lcp_solver::tests::test_lcp_no_force_when_separating ... ok [INFO] [stdout] test lcp_solver::tests::test_lcp_restitution ... ok [INFO] [stdout] test lcp_solver::tests::test_lcp_result_finite ... ok [INFO] [stdout] test lcp_solver::tests::test_lcp_single_contact_normal_force ... ok [INFO] [stdout] test limits::tests::intent_barrier_force_opposes_violation ... ok [INFO] [stdout] test limits::tests::intent_clamp_velocity_respects_max ... ok [INFO] [stdout] test limits::tests::intent_disabled_limits_produce_zero_force ... ok [INFO] [stdout] test limits::tests::intent_force_continuous_at_margin_boundary ... ok [INFO] [stdout] test limits::tests::intent_limit_force_increases_with_violation_depth ... ok [INFO] [stdout] test limits::tests::intent_limit_force_opposes_violation ... ok [INFO] [stdout] test limits::tests::intent_limit_force_zero_away_from_limits ... ok [INFO] [stdout] test limits::tests::intent_violation_detected_past_hard_limit ... ok [INFO] [stdout] test integrator::tests::test_velocity_verlet_free_fall ... ok [INFO] [stdout] test lcp_solver::tests::stress_lcp_eight_contacts_all_finite ... ok [INFO] [stdout] test limits::tests::prop_clamp_effort_bounded ... ok [INFO] [stdout] test limits::tests::test_clamp_effort_exceeds_limit ... ok [INFO] [stdout] test limits::tests::test_clamp_effort_within_limit ... ok [INFO] [stdout] test limits::tests::test_clamp_effort_zero_max ... ok [INFO] [stdout] test limits::tests::test_damping_at_limit ... ok [INFO] [stdout] test limits::tests::test_effort_clamping ... ok [INFO] [stdout] test kinematics::tests::prop_fk_always_finite ... ok [INFO] [stdout] test limits::tests::test_force_continuity ... ok [INFO] [stdout] test limits::tests::test_is_violated ... ok [INFO] [stdout] test limits::tests::test_is_violated_outside_bounds ... ok [INFO] [stdout] test limits::tests::test_lower_limit_barrier ... ok [INFO] [stdout] test limits::tests::test_max_penetration ... ok [INFO] [stdout] test limits::tests::test_max_penetration_no_violation ... ok [INFO] [stdout] test limits::tests::test_is_violated_within_bounds ... ok [INFO] [stdout] test limits::tests::prop_violation_agrees_with_penetration ... ok [INFO] [stdout] test limits::tests::prop_zero_force_within_limits ... ok [INFO] [stdout] test limits::tests::test_max_penetration_with_violation ... ok [INFO] [stdout] test limits::tests::test_multi_dof_limits ... ok [INFO] [stdout] test limits::tests::test_unlimited ... ok [INFO] [stdout] test limits::tests::test_upper_limit_barrier ... ok [INFO] [stdout] test limits::tests::test_zero_force_within_limits ... ok [INFO] [stdout] test limits::tests::test_velocity_clamping ... ok [INFO] [stdout] test limits::tests::test_single_limit_creation ... ok [INFO] [stdout] test newton_solver::tests::constraint_gradient_dimensions_match_contacts_and_dofs ... ok [INFO] [stdout] test newton_solver::tests::build_block_diagonal_m_inv_dimensions ... ok [INFO] [stdout] test newton_solver::tests::intent_newton_all_impulses_non_negative ... ok [INFO] [stdout] test newton_solver::tests::intent_newton_delta_qd_opposes_penetration ... ok [INFO] [stdout] test newton_solver::tests::determinism_constraint_evaluate_same_input_same_output ... ok [INFO] [stdout] test newton_solver::tests::evaluate_with_gradient_consistent_with_separate_calls ... ok [INFO] [stdout] test newton_solver::tests::intent_newton_friction_cone_satisfied ... ok [INFO] [stdout] test newton_solver::tests::property_newton_result_all_finite_for_well_posed ... ok [INFO] [stdout] test newton_solver::tests::test_build_block_diagonal_m_inv ... ok [INFO] [stdout] test newton_solver::tests::stress_newton_four_contacts_all_finite ... ok [INFO] [stdout] test newton_solver::tests::test_constraint_function_empty ... ok [INFO] [stdout] test newton_solver::tests::test_constraint_function_single_penetrating ... ok [INFO] [stdout] test newton_solver::tests::test_constraint_gradient_matches_jacobian ... ok [INFO] [stdout] test newton_solver::tests::test_newton_solver_single_contact ... ok [INFO] [stdout] test newton_solver::tests::test_two_overlapping_boxes_contact_chain ... ok [INFO] [stdout] test rnea::tests::determinism_rnea_same_input_same_output ... ok [INFO] [stdout] test newton_solver::tests::test_newton_solver_empty ... ok [INFO] [stdout] test rnea::tests::edge_rnea_large_velocity_produces_finite_torques ... ok [INFO] [stdout] test rnea::tests::intent_coriolis_zero_for_single_revolute ... ok [INFO] [stdout] test rnea::tests::intent_coriolis_nonzero_for_multi_link_with_velocity ... ok [INFO] [stdout] test rnea::tests::intent_rnea_aba_roundtrip_multi_dof ... ok [INFO] [stdout] test rnea::tests::intent_gravity_compensation_produces_finite_torques ... ok [INFO] [stdout] test rnea::tests::intent_rnea_gravity_compensation_balances_gravity ... ok [INFO] [stdout] test rnea::tests::intent_rnea_zero_state_zero_gravity_gives_zero_torques ... ok [INFO] [stdout] test rnea::tests::intent_rnea_bias_forces_grow_with_velocity ... ok [INFO] [stdout] test limits::tests::test_pendulum_with_limits ... ok [INFO] [stdout] test rnea::tests::property_rnea_linear_in_qdd ... ok [INFO] [stdout] test rnea::tests::test_coriolis_zero_at_zero_velocity ... ok [INFO] [stdout] test rnea::tests::test_gravity_compensation_balances_aba ... ok [INFO] [stdout] test rnea::tests::test_gravity_compensation_single_pendulum ... ok [INFO] [stdout] test rnea::tests::test_rnea_aba_consistency ... ok [INFO] [stdout] test rnea::tests::test_rnea_aba_round_trip ... ok [INFO] [stdout] test rnea::tests::prop_rnea_output_always_finite ... ok [INFO] [stdout] test rnea::tests::test_rnea_empty ... ok [INFO] [stdout] test rnea::tests::test_rnea_cached_data ... ok [INFO] [stdout] test rnea::tests::test_rnea_external_force ... ok [INFO] [stdout] test rnea::tests::test_rnea_floating_base ... ok [INFO] [stdout] test rnea::tests::test_rnea_with_acceleration ... ok [INFO] [stdout] test rnea::tests::test_rnea_zero_gravity_zero_state ... ok [INFO] [stdout] test rnea::tests::test_rnea_zero_state_finite ... ok [INFO] [stdout] test smooth_contact::tests::intent_smooth_force_direction_opposes_velocity ... ok [INFO] [stdout] test smooth_contact::tests::intent_smooth_no_force_when_separated ... ok [INFO] [stdout] test smooth_contact::tests::intent_smooth_stiff_vs_soft_config ... ok [INFO] [stdout] test smooth_contact::tests::intent_stiff_config_produces_more_force_than_soft ... ok [INFO] [stdout] test smooth_contact::tests::intent_zero_penetration_produces_zero_normal_force ... ok [INFO] [stdout] test lcp_solver::tests::prop_lcp_impulses_finite ... ok [INFO] [stdout] test smooth_contact::tests::jacobian_finite_difference_consistency ... ok [INFO] [stdout] test smooth_contact::tests::jacobian_returns_correct_dimensions ... ok [INFO] [stdout] test smooth_contact::tests::jacobian_zero_for_no_contacts ... ok [INFO] [stdout] test smooth_contact::tests::property_dissipation_non_negative ... ok [INFO] [stdout] test smooth_contact::tests::property_potential_energy_proportional_to_penetration_squared ... ok [INFO] [stdout] test smooth_contact::tests::test_smooth_config_presets ... ok [INFO] [stdout] test smooth_contact::tests::stress_smooth_six_contacts_all_finite ... ok [INFO] [stdout] test smooth_contact::tests::test_smooth_energy_conservation ... ok [INFO] [stdout] test smooth_contact::tests::test_smooth_force_increases_with_penetration ... ok [INFO] [stdout] test smooth_contact::tests::test_smooth_damping_force ... ok [INFO] [stdout] test smooth_contact::tests::test_smooth_force_saturates ... ok [INFO] [stdout] test smooth_contact::tests::test_smooth_friction_opposes_motion ... ok [INFO] [stdout] test smooth_contact::tests::test_smooth_joint_space_force_direction ... ok [INFO] [stdout] test smooth_contact::tests::test_smooth_no_contacts ... ok [INFO] [stdout] test smooth_contact::tests::test_smooth_no_force_when_separated ... ok [INFO] [stdout] test smooth_contact::tests::test_smooth_normal_force_penetrating ... ok [INFO] [stdout] test spatial::tests::determinism_spatial_transform_compose ... ok [INFO] [stdout] test spatial::tests::edge_large_translation_finite_result ... ok [INFO] [stdout] test spatial::tests::edge_spatial_inertia_large_mass_valid ... ok [INFO] [stdout] test spatial::tests::edge_spatial_inertia_small_mass_valid ... ok [INFO] [stdout] test spatial::tests::intent_spatial_inertia_sphere_mass_correct ... ok [INFO] [stdout] test spatial::tests::intent_spatial_transform_compose_associative ... ok [INFO] [stdout] test rnea::tests::prop_gravity_compensation_finite ... ok [INFO] [stdout] test spatial::tests::prop_cross_motion_self_is_zero ... ok [INFO] [stdout] test spatial::tests::prop_kinetic_energy_non_negative ... ok [INFO] [stdout] test spatial::tests::prop_skew_antisymmetric ... ok [INFO] [stdout] test spatial::tests::test_cross_force_duality ... ok [INFO] [stdout] test spatial::tests::test_cross_force_matrix_consistency ... ok [INFO] [stdout] test spatial::tests::test_cross_motion_matrix_consistency ... ok [INFO] [stdout] test integrator::tests::intent_rk4_more_accurate_than_euler_for_oscillator ... ok [INFO] [stdout] test spatial::tests::test_cross_motion_zero ... ok [INFO] [stdout] test spatial::tests::test_rot_y_90_degrees ... ok [INFO] [stdout] test spatial::tests::test_rot_y_inverse_roundtrip ... ok [INFO] [stdout] test spatial::tests::test_set_angular_overwrites_top_three ... ok [INFO] [stdout] test spatial::tests::test_set_linear_overwrites_bottom_three ... ok [INFO] [stdout] test spatial::tests::test_skew_antisymmetric ... ok [INFO] [stdout] test spatial::tests::test_skew_cross_product ... ok [INFO] [stdout] test spatial::tests::test_spatial_inertia_add ... ok [INFO] [stdout] test spatial::tests::test_spatial_inertia_cuboid ... ok [INFO] [stdout] test spatial::tests::test_spatial_inertia_cylinder ... ok [INFO] [stdout] test spatial::tests::test_spatial_inertia_mul_vector ... ok [INFO] [stdout] test spatial::tests::test_spatial_inertia_sphere ... ok [INFO] [stdout] test spatial::tests::test_spatial_inertia_sub_correctness ... ok [INFO] [stdout] test spatial::tests::test_cross_motion_self_zero ... ok [INFO] [stdout] test spatial::tests::test_spatial_inertia_symmetry ... ok [INFO] [stdout] test spatial::tests::test_spatial_vector_arithmetic ... ok [INFO] [stdout] test spatial::tests::test_spatial_vector_create ... ok [INFO] [stdout] test spatial::tests::test_spatial_inertia_zero_has_zero_mass_and_data ... ok [INFO] [stdout] test spatial::tests::test_spatial_vector_dot ... ok [INFO] [stdout] test spatial::tests::test_spatial_vector_sub_correctness ... ok [INFO] [stdout] test spatial::tests::test_spatial_vector_zero ... ok [INFO] [stdout] test spatial::tests::test_transform_compose_associative ... ok [INFO] [stdout] test spatial::tests::test_transform_force_motion_duality ... ok [INFO] [stdout] test spatial::tests::test_transform_identity ... ok [INFO] [stdout] test spatial::tests::test_transform_inertia ... ok [INFO] [stdout] test spatial::tests::test_transform_inverse_round_trip ... ok [INFO] [stdout] test spatial::tests::test_transform_pure_translation ... ok [INFO] [stdout] test spatial::tests::test_transform_pure_rotation ... ok [INFO] [stdout] test urdf_convert::tests::error_urdf_single_link_produces_one_body ... ok [INFO] [stdout] test spatial::tests::prop_transform_inverse_roundtrip ... ok [INFO] [stdout] test urdf_convert::tests::test_basic_urdf_conversion ... ok [INFO] [stdout] test urdf_convert::tests::error_empty_urdf_returns_error ... ok [INFO] [stdout] test urdf_convert::tests::test_puma_like_6dof ... ok [INFO] [stdout] test urdf_convert::tests::test_converted_body_runs_aba ... ok [INFO] [stdout] test urdf_convert::tests::test_rpy_to_rotation_90deg_yaw ... ok [INFO] [stdout] test urdf_convert::tests::test_rpy_to_rotation_identity ... ok [INFO] [stdout] test urdf_convert::tests::test_urdf_inertia_values ... ok [INFO] [stdout] test urdf_convert::tests::test_urdf_inertial_with_com_offset ... ok [INFO] [stdout] test urdf_convert::tests::test_urdf_joint_limits ... ok [INFO] [stdout] test urdf_convert::tests::test_urdf_joint_origin_transform ... ok [INFO] [stdout] test urdf_convert::tests::test_urdf_joint_type_mapping ... ok [INFO] [stdout] test urdf_convert::tests::test_urdf_link_names ... ok [INFO] [stdout] test urdf_convert::tests::test_urdf_topology ... ok [INFO] [stdout] test urdf_convert::tests::test_urdf_zero_mass_link ... ok [INFO] [stdout] test urdf_convert::tests::intent_urdf_joint_types_all_have_correct_dof ... ok [INFO] [stdout] test spatial::tests::prop_spatial_inertia_mass_preserved_under_transform ... ok [INFO] [stdout] test newton_solver::tests::prop_newton_non_negative_impulses ... ok [INFO] [stdout] test smooth_contact::tests::prop_smooth_jacobian_dimensions_nv_x_nq ... ok [INFO] [stdout] test integrator::tests::stress_integrator_1000_steps_three_link_chain ... ok [INFO] [stdout] test integrator::tests::test_pendulum_energy_conservation ... ok [INFO] [stderr] Running tests/research_grade.rs (/opt/rustwide/target/debug/deps/research_grade-4ffed320f3110b8c) [INFO] [stdout] [INFO] [stdout] test result: ok. 481 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.28s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 62 tests [INFO] [stdout] test intent_kinetic_energy_always_non_negative ... ok [INFO] [stdout] test intent_mass_matrix_eigenvalues_grow_with_distal_mass ... ok [INFO] [stdout] test intent_rnea_aba_inverse_duality ... ok [INFO] [stdout] test intent_bias_forces_zero_at_rest_no_gravity ... ok [INFO] [stdout] test test_aba_floating_base_free_fall_analytical ... ok [INFO] [stdout] test proptest_algorithms::prop_crba_symmetric_positive_definite ... ok [INFO] [stdout] test test_aba_matches_analytical_single_pendulum ... ok [INFO] [stdout] test test_aba_matches_lagrangian_2r_many_configs ... ignored [INFO] [stdout] test test_aba_matches_lagrangian_2r_zero_velocity ... ok [INFO] [stdout] test proptest_algorithms::prop_aba_rnea_round_trip ... ok [INFO] [stdout] test test_aba_prismatic_free_fall_analytical ... ok [INFO] [stdout] test proptest_algorithms::prop_gravity_compensation_zero_acceleration ... ok [INFO] [stdout] test test_aba_rnea_duality_with_external_forces ... ok [INFO] [stdout] test test_aba_various_chain_lengths ... ok [INFO] [stdout] test test_aba_rnea_round_trip_many_configs ... ok [INFO] [stdout] test test_50_body_chain_finite_dynamics ... ok [INFO] [stdout] test test_contact_impulse_non_negativity ... ok [INFO] [stdout] test test_crba_aba_consistency_many_configs ... ok [INFO] [stdout] test test_crba_mass_matrix_matches_lagrangian_2r ... ok [INFO] [stdout] test test_crba_matches_analytical_single_pendulum ... ok [INFO] [stdout] test test_crba_positive_definite_many_configs ... ok [INFO] [stdout] test test_com_bounded_during_simulation ... ok [INFO] [stdout] test stress_humanoid_tree_drop_300_steps ... ok [INFO] [stdout] test test_equations_of_motion_m_qdd_equals_tau_minus_c ... ok [INFO] [stdout] test test_fk_jacobian_velocity_consistency_chain ... ok [INFO] [stdout] test test_energy_conservation_symplectic_10k_steps ... ok [INFO] [stdout] test test_branching_momentum_conservation ... ok [INFO] [stdout] test test_friction_cone_enforcement_lcp ... ok [INFO] [stdout] test test_full_pipeline_determinism ... ok [INFO] [stdout] test stress_5000_step_pendulum_energy_bounded ... ok [INFO] [stdout] test test_gravity_comp_produces_static_equilibrium ... ok [INFO] [stdout] test test_gravity_compensation_floating_base ... ok [INFO] [stdout] test test_gravity_compensation_many_configs ... ok [INFO] [stdout] test test_full_simulation_pipeline_100_steps ... ok [INFO] [stdout] test test_humanoid_aba_rnea_round_trip ... ok [INFO] [stdout] test test_humanoid_mass_matrix_spd ... ok [INFO] [stdout] test test_floating_base_quaternion_unit_over_2000_steps ... ok [INFO] [stdout] test test_lcp_convergence_monotonic_residual_decay ... ok [INFO] [stdout] test test_free_fall_trajectory_exact ... ok [INFO] [stdout] test test_limits_and_contacts_coexist ... ok [INFO] [stdout] test test_mass_matrix_condition_number_growth ... ok [INFO] [stdout] test test_newton_vs_lcp_impulse_direction_agrees ... ok [INFO] [stdout] test test_linear_momentum_conservation_isolated_system ... ok [INFO] [stdout] test test_quadruped_gravity_compensation ... ok [INFO] [stdout] test test_energy_conservation_rk4_10k_steps ... ok [INFO] [stdout] test stress_10_link_drop_with_contacts_500_steps ... ok [INFO] [stdout] test test_rnea_gravity_matches_analytical_single_pendulum ... ok [INFO] [stdout] test test_rnea_gravity_matches_lagrangian_2r ... ok [INFO] [stdout] test test_angular_momentum_conservation_isolated_system ... ok [INFO] [stdout] test test_quadruped_energy_conservation ... ok [INFO] [stdout] test test_simultaneous_limits_and_contacts ... ok [INFO] [stdout] test test_smooth_contact_rk4_pipeline_stable ... ok [INFO] [stdout] test test_smooth_vs_lcp_both_produce_upward_force ... ok [INFO] [stdout] test test_spatial_inertia_positive_definite ... ok [INFO] [stdout] test test_stacking_multiple_contacts ... ok [INFO] [stdout] test test_rotating_rod_exact_solution ... ok [INFO] [stdout] test test_kahan_compensation_beats_naive_f32 ... ok [INFO] [stdout] test test_quaternion_normalization_10k_steps ... ok [INFO] [stdout] test test_aba_linear_scaling has been running for over 60 seconds [INFO] [stdout] test test_harmonic_oscillator_frequency ... ok [INFO] [stdout] test test_rnea_linear_scaling ... ok [INFO] [stdout] test test_rk4_trajectory_more_accurate_than_euler has been running for over 60 seconds [INFO] [stdout] test test_aba_linear_scaling ... ok [INFO] [stdout] test test_rk4_trajectory_more_accurate_than_euler ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 61 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 95.12s [INFO] [stdout] [INFO] [stderr] Doc-tests featherstone [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test src/lib.rs - (line 23) ... ok [INFO] [stdout] test src/collider.rs - collider (line 19) ... ok [INFO] [stdout] test src/gjk.rs - gjk (line 25) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.68s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "6655582f8c9539ddc51af10f8023be6473369c4118ce48d4b7477f2d14c6a661", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6655582f8c9539ddc51af10f8023be6473369c4118ce48d4b7477f2d14c6a661", kill_on_drop: false }` [INFO] [stdout] 6655582f8c9539ddc51af10f8023be6473369c4118ce48d4b7477f2d14c6a661