{ "axis_order": { "A": 3, "B": 4, "C": 5, "U": 6, "V": 7, "W": 8, "X": 0, "Y": 1, "Z": 2 }, "context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", "contract_sha256": "f79ad4af7f460b0d544d835fa63fe331d7c39907d7394edba1c7a3cbef612874", "error_cases": [ "null_config", "null_pose", "nonfinite_joint", "nonfinite_pose", "joint_count_mismatch", "enabled_limit_violation", "invalid_coordinate", "inverse_only_forward", "forward_only_inverse" ], "inputs": { "header": "/home/mes006/linuxcncWebWASM/wasm-core/include/sim_kinematics.h", "header_sha256": "db16293ec3645559a0be71a40963693f3d1e3f5fdedc92902be19b47f653dfa8", "source": "/home/mes006/linuxcncWebWASM/wasm-core/src/sim_kinematics.c", "source_sha256": "7a77915c59f190bcbe5c93d8f53498745bfcf978c167ba8878a21b914f9401fd" }, "sample_mappings": [ { "axis_joint": { "X": 0, "Y": 1, "Z": 2 }, "coordinates": "XYZ" }, { "axis_joint": { "X": 0, "Y": 1, "Z": 3 }, "coordinates": "XYYZ", "duplicate": { "axis": "Y", "copies": [ 2 ], "owner": 1 } }, { "axis_joint": { "X": 0, "Y": 1, "Z": 3 }, "case_fold": true, "coordinates": "xyyz" }, { "axis_joint": { "A": 3, "B": 4, "C": 5, "U": 6, "V": 7, "W": 8, "X": 0, "Y": 1, "Z": 2 }, "coordinates": "XYZABCUVW" } ], "schema": "kinematics-mapping-contract.v1", "semantics": { "coordinate_case": "ASCII case-fold to uppercase", "duplicate_axis": "first occurrence owns axis; later duplicates copy the first joint during inverse", "extra_joints": "coordinates may repeat and joint_count remains authoritative", "forward": "joint-to-pose uses mapped first joint for each axis", "home": "zeroes all configured joints, then computes forward pose", "inverse": "pose-to-joint initializes all joints then fills duplicates deterministically", "limits": "enabled inclusive min/max; violation returns SIM_KIN_ERR_RANGE", "state_hash": "includes config bytes, configured joint prefix and pose bytes" }, "status": "verified" }