{ "configuration_candidates": [ { "coordinates": "XYZCAB", "id": "shipped-scara-userk-slot", "implementation": "identity template", "kind": "real", "path": "linuxcnc/configs/sim/axis/vismach/scara/scara.ini", "scan": true }, { "coordinates": "XYZABC", "id": "shipped-puma560-genser", "implementation": "ugenser static adapter over genser", "kind": "real", "path": "linuxcnc/configs/sim/axis/vismach/puma/puma560.ini", "scan": true }, { "id": "static-descriptor-regression", "implementations": [ "userk.identity", "ugenser.static" ], "kind": "derived", "path": "wasm-core/tests/sim_userkins_test.c", "purpose": "ABI/capability checks, FK/IK calls, switch slot binding, and native/WASM comparison" } ], "error_boundaries": { "abi_version": -710, "capability": -711, "dynamic_module": -712, "missing_or_uninitialized_module": -708 }, "implementation_status": "verified", "native_wasm": { "native_command": "build-native/sim_userkins_test", "status": "passed", "wasm_command": "node build-wasm/sim_userkins_wasm_test.js" }, "oracle": { "blocked_samples": [ "userk identity template", "ugenser static adapter", "ABI mismatch", "capability mismatch", "dynamic module rejection", "uninitialized module" ], "reason": "linuxcnc/unit_tests/kinematics is absent from the locked source; the deprecated ugenser CLI is not an approved replacement", "status": "blocked" }, "report_sha256": "43f7a1918c7f09cea97e0ac400f6572ff9b9051fccc22cde5b70765dd1e735f1", "samples": { "byte_identical_json": true, "native": { "abi_error": -710, "abi_version": 1, "active_mode": 2, "capabilities": 7, "capability_error": -711, "dynamic_path_error": -712, "identity": { "forward_calls": 1, "inverse_calls": 1, "joints": [ 10.0, 20.0, 30.0, 5.0, 15.0 ], "pose": [ 10.0, 20.0, 30.0, 5.0, 15.0 ], "repeat_hash": 7729967891798573724, "state_hash": 7729967891798573724 }, "missing_implementation": -708, "path_name_error": -712, "schema": "userkins-samples.v1", "switch_to_user": 0, "ugenser": { "forward_calls": 2, "inverse_calls": 1, "iterations": 0, "pose": [ 619.051467462, 30.4112378, -349.855537721, -173.973089253, 5.329608876, -19.06581641 ], "repeat_hash": 1161289569922079659, "residual": 0.0, "state_hash": 1161289569922079659 }, "uninitialized_error": -708 }, "state_hash_identical": true, "state_hash_stable": true, "wasm": { "abi_error": -710, "abi_version": 1, "active_mode": 2, "capabilities": 7, "capability_error": -711, "dynamic_path_error": -712, "identity": { "forward_calls": 1, "inverse_calls": 1, "joints": [ 10.0, 20.0, 30.0, 5.0, 15.0 ], "pose": [ 10.0, 20.0, 30.0, 5.0, 15.0 ], "repeat_hash": 7729967891798573724, "state_hash": 7729967891798573724 }, "missing_implementation": -708, "path_name_error": -712, "schema": "userkins-samples.v1", "switch_to_user": 0, "ugenser": { "forward_calls": 2, "inverse_calls": 1, "iterations": 0, "pose": [ 619.051467462, 30.4112378, -349.855537721, -173.973089253, 5.329608876, -19.06581641 ], "repeat_hash": 1161289569922079659, "residual": 0.0, "state_hash": 1161289569922079659 }, "uninitialized_error": -708 } }, "schema": "userkins-kinematics-report.v1", "source_records": { "genser_functions": { "path": "linuxcnc/src/emc/kinematics/genserfuncs.c", "sha256": "e4b775e93b973a4faae873c81a95d7d8361fe5c5c59ea81e362a5f900a1e8781" }, "genser_source": { "path": "linuxcnc/src/emc/kinematics/genserkins.c", "sha256": "cbb87b9c21f9f5e1d6a3c5bd333f72a7b1b4f1618a21b32d4b34bc621b43e075" }, "header": { "path": "wasm-core/include/sim_kinematics.h", "sha256": "34b08db612056432e08705951032418bf6f6cd2c285bde5743515588fbe484ec" }, "implementation": { "path": "wasm-core/src/sim_userkins.c", "sha256": "cf3a0f3fea81fb63abf3336b87de1971391d7798b4eed3ec826c07bfd300ed0e" }, "test": { "path": "wasm-core/tests/sim_userkins_test.c", "sha256": "13ecf5d2405a0e4c706cde25d93424655108779188c310f75ed36683abed624e" }, "ugenser_config": { "path": "linuxcnc/configs/sim/axis/vismach/puma/puma560.ini", "sha256": "2bb881ed6c5662282977accac29bfd6c4efc18e572cbcb8a31c134677012cf4c" }, "ugenser_dh": { "path": "linuxcnc/configs/sim/axis/vismach/puma/puma560_dh.hal", "sha256": "23758eb7a6a4abe116e1de88140d04e6c9a910d1c378f019d76843a5a3fb6141" }, "ugenser_source": { "path": "linuxcnc/src/emc/kinematics/ugenserkins.c", "sha256": "dee63aebaa11f2867657bc4b9052f6a8e8bd875e06bd8a9df2d3edac9eb1c31d" }, "userk_config": { "path": "linuxcnc/configs/sim/axis/vismach/scara/scara.ini", "sha256": "602e02bb6d320b728d9ae15904a5d229ea1a31e932c18e9018b45be007d695ce" }, "userk_source": { "path": "linuxcnc/src/emc/kinematics/userkfuncs.c", "sha256": "146238645955f8d4e2cb0cd34ff44db3a9dad01e149f81c08f8a53c19f1609bc" } }, "static_contract": { "abi_version": 1, "capabilities": { "forward": 1, "inverse": 2, "sample_mask": 7, "static": 4 }, "dynamic_host_loading": "forbidden; paths, slash-delimited names, and host shared libraries return SIM_KIN_ERR_DYNAMIC_MODULE", "implementations": { "1": "identity", "2": "genser" }, "switch_binding": { "active_after_select": 2, "slot": 2 } }, "status": "partial", "ugenser_scope": { "adaptation": "reuse the verified statically linked genser FK/IK implementation; do not port gettimeofday, stdin, or HAL process lifecycle", "legacy_cli_status": "excluded", "source_warning_present": true } }