{ "boundaries": { "fixed_iteration_limit": "verified", "invalid_DH_nonfinite": "SIM_KIN_ERR_NONFINITE verified", "state_hash": "native/WASM identical after 1e-9 quantization" }, "configuration_candidates": { "melfa": { "dh_source": "linuxcnc/configs/sim/axis/vismach/melfa-sim/melfa_dh.hal", "kinematics": "genserkins", "path": "linuxcnc/configs/sim/axis/vismach/melfa-sim/melfa.ini", "scan": true }, "puma560": { "dh_source": "linuxcnc/configs/sim/axis/vismach/puma/puma560_dh.hal", "kinematics": "genserkins", "path": "linuxcnc/configs/sim/axis/vismach/puma/puma560.ini", "scan": true } }, "dh_contract": { "alpha_units": "radians from HAL pins", "joint_count": 6, "joint_units": "degrees at public ABI, radians internally", "melfa_has_alpha_and_d": true, "parameters": [ "A-0..5", "ALPHA-0..5", "D-0..5" ], "puma_has_alpha_and_d": true }, "implementation_status": "verified", "native_wasm": { "native_command": "build-native/sim_kinematics_test", "status": "passed", "wasm_command": "node build-wasm/sim_kinematics_wasm_test.js" }, "oracle": { "reason": "linuxcnc/unit_tests/kinematics is absent from the locked source", "status": "blocked" }, "report_sha256": "fc6c23f67b2a14b58735fa60ed884a5a73815c3efb26f1b4d0de427e882d67b8", "samples": { "byte_identical_json": true, "native": { "inverse": [ 0.0, 10.0, -20.0, 29.999999999, 15.0, -9.999999999 ], "iterations": 0, "pose": [ 619.051467462, 30.4112378, -349.855537721 ], "residual": 0.0, "state_hash": 13985782206955965200 }, "wasm": { "inverse": [ 0.0, 10.0, -20.0, 29.999999999, 15.0, -9.999999999 ], "iterations": 0, "pose": [ 619.051467462, 30.4112378, -349.855537721 ], "residual": 0.0, "state_hash": 13985782206955965200 } }, "schema": "genser-kinematics-report.v1", "solver": { "convergence_tolerance": 1e-07, "forward": "Craig DH homogeneous product", "inverse": "fixed-zero seed damped numerical Jacobian with 1e-4 degree finite difference", "iterations": 0, "max_iterations": 200, "nonconvergence": "SIM_KIN_ERR_SINGULAR after fixed iteration limit", "residual": 0.0 }, "source_records": { "functions": { "path": "linuxcnc/src/emc/kinematics/genserfuncs.c", "sha256": "e4b775e93b973a4faae873c81a95d7d8361fe5c5c59ea81e362a5f900a1e8781" }, "header": { "path": "wasm-core/include/sim_kinematics.h", "sha256": "5fd01043d705486b0d365e36109c3b0e0d39f220c2cec313b5b747dca06148bc" }, "implementation": { "path": "wasm-core/src/sim_kinematics.c", "sha256": "41fc146ab88a623b5bc6afbba1fc0d12434689c737426da12fcd297162672749" }, "melfa_config": { "path": "linuxcnc/configs/sim/axis/vismach/melfa-sim/melfa.ini", "sha256": "7dc7a3db58ca7f7ddba11fe08f691cd7658564be2a0b872d9087ee7b392e45c7" }, "melfa_dh": { "path": "linuxcnc/configs/sim/axis/vismach/melfa-sim/melfa_dh.hal", "sha256": "0d943182e37da99ae99db53f3dd464cb9b62b17d4cabe56c35c0c27b43bf68c6" }, "puma_config": { "path": "linuxcnc/configs/sim/axis/vismach/puma/puma560.ini", "sha256": "2bb881ed6c5662282977accac29bfd6c4efc18e572cbcb8a31c134677012cf4c" }, "puma_dh": { "path": "linuxcnc/configs/sim/axis/vismach/puma/puma560_dh.hal", "sha256": "23758eb7a6a4abe116e1de88140d04e6c9a910d1c378f019d76843a5a3fb6141" }, "source": { "path": "linuxcnc/src/emc/kinematics/genserkins.c", "sha256": "cbb87b9c21f9f5e1d6a3c5bd333f72a7b1b4f1618a21b32d4b34bc621b43e075" }, "test": { "path": "wasm-core/tests/sim_kinematics_test.c", "sha256": "6c803de9aeb91499cef391620f17c7da69ee78a873b43b0ba9fa508fd096f31a" } }, "status": "partial" }