Plan full LinuxCNC TP numerical parity

This commit is contained in:
2026-08-31 09:30:27 +08:00
parent 6033dcd47a
commit b564792452
5 changed files with 618 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
{
"schema": "task-handoff.v1",
"task_id": "TP-PARITY-00",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"status": "blocked",
"scope": "xyzac_only",
"result": "run-5axis-rtcp.sh launches native LinuxCNC services and AXIS, but linuxcnc.stat cannot attach to the launcher status buffer on this host; no native per-tick oracle was generated",
"report": {"path": "coverage/xyzac-native-tick-trace.report.json", "status": "blocked"},
"outputs": [
{"path": "scripts/run_xyzac_native_tick_trace.py", "status": "created"},
{"path": "doc-rtcp/xyzac-trt-full-tp-parity-plan.md", "status": "created"},
{"path": "coverage/task-packets/TP-PARITY-00.json", "status": "created"}
],
"checks": {
"launcher": "run-5axis-rtcp.sh started native linuxcncsvr/io/halui/milltask/axis",
"axis_window": "visible during manual probe",
"stat_attach": "blocked: emcStatusBuffer invalid err=3 / taskbeat invalid",
"native_trace": "blocked",
"source_hashes": "recorded by collector",
"full_parity_claim": "forbidden"
},
"failure_samples": [
{"code": "NATIVE_STAT_BUFFER_INVALID", "detail": "linuxcnc.stat().poll() returned emcStatusBuffer invalid err=3 or SystemError without exception while run-5axis-rtcp.sh services were alive"},
{"code": "NATIVE_TASKBEAT_INVALID", "detail": "taskbeat remained 4294967296 and no valid native tick could be selected"}
],
"next_task": "TP-PARITY-01",
"next_task_status": "blocked_by_TP-PARITY-00",
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,59 @@
{
"schema": "task-packet.v1",
"task_id": "TP-PARITY-00",
"status": "blocked",
"title": "Native LinuxCNC XYZAC per-tick oracle",
"milestone": "M7-TP-NUMERICAL-PARITY",
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"case": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"scope": "xyzac_only",
"depends_on": ["RELEASE-00"],
"direct_inputs": [
"run-5axis-rtcp.sh",
"scripts/run_axis3_tutorial_native_sequence.py",
"linuxcnc/src/emc/usr_intf/axis/extensions/emcmodule.cc",
"linuxcnc/src/emc/task/taskintf.cc",
"linuxcnc/src/emc/motion/motion.h",
"linuxcnc/src/emc/tp/tp_debug.h",
"linuxcnc/src/emc/tp/tp.c",
"linuxcnc/src/emc/tp/tcq.c",
"linuxcnc/src/emc/tp/tc.c",
"doc-rtcp/xyzac-trt-full-tp-parity-plan.md"
],
"required_outputs": [
"scripts/run_xyzac_native_tick_trace.py",
"coverage/xyzac-native-tick-trace.report.json",
"coverage/task-packets/TP-PARITY-00.handoff.json"
],
"observed": {
"report": "coverage/xyzac-native-tick-trace.report.json",
"report_sha256": "812a0bb8de8438aa18bc16789c40a33bcaadfaf3fcdc704ecf109c4b77bfdbfd",
"row_count": 0,
"first_blocker": "NATIVE_STAT_BUFFER_INVALID"
},
"acceptance": [
"run-5axis-rtcp.sh launches native LinuxCNC",
"linuxcnc.stat captures task/interpreter/motion/queue/pose/joint/current-line fields",
"tick source is native taskbeat or explicitly blocked with evidence",
"empty queue and queue drain ticks are retained",
"source/config/program hashes are recorded",
"native trace report is self-hashed",
"no claim of full parity before TP-PARITY-06 passes"
],
"next_tasks": [
"TP-PARITY-01",
"TP-PARITY-02",
"TP-PARITY-03",
"TP-PARITY-04",
"TP-PARITY-05",
"TP-PARITY-06",
"TP-PARITY-07",
"TP-PARITY-08"
],
"known_blockers": [
"native stat API may not expose TP segment geometry; map motion_id and retain explicit unavailable field",
"native GUI process requires DISPLAY and cleanup",
"full LinuxCNC TP source integration may require ABI-compatible C port rather than simplified queue extension"
],
"release_status": "STOP_RELEASE"
}

View File

@@ -0,0 +1,83 @@
{
"case": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"scope": "xyzac_only"
},
"cleanup": {
"commands": [
{
"command": [
"axis-remote",
"--quit"
],
"returncode": 1,
"stdout_sha256": "e887c3a096d768c45173b5087b76b19f871abedface8d6a05f107a2dbb93b3f9"
},
{
"command": [
"halcmd",
"stop"
],
"returncode": 0,
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"command": [
"halcmd",
"unload",
"all"
],
"returncode": 0,
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"command": [
"/usr/lib/linuxcnc/realtime",
"stop"
],
"returncode": 0,
"stdout_sha256": "91338655380567a02b2f78410c6af8bb22361915c68b22572d9a09389d9599ab"
}
],
"killed_pids": [],
"lock_path": "/tmp/linuxcnc.lock",
"lock_removed": false,
"remaining_services": []
},
"errors": [
"RuntimeError:native_stat_transition_timeout"
],
"known_boundaries": [
"native stat exposes motion_id but not full TP segment geometry; active_segment_geometry is explicit null",
"taskbeat is the public native task-cycle counter; wall-clock is recorded only as diagnostic elapsed_ms",
"this report is an oracle input and does not claim native/WASM parity by itself"
],
"launcher": [
"./run-5axis-rtcp.sh",
"xyzac-trt.ini"
],
"launcher_output_sha256": "8e18cd62ead0174b8c9c7c70b4fa62716ee066bb0984de99e288322ae6aecaa2",
"launcher_output_tail": "Starting 5-axis RTCP case: /home/mes006/linuxcncWebWASM/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini\nDemo program: /home/mes006/linuxcncWebWASM/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc\nRTCP subroutine: /home/mes006/linuxcncWebWASM/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/helix_ac.ngc\nMachine configuration file is 'xyzac-trt.ini'\ncheck_config: Unchecked: [KINS]KINEMATICS={xyzac-trt-kins sparm=identityfirst}\nStarting LinuxCNC...\nlinuxcnc TPMOD=tpmod HOMEMOD=homemod EMCMOT=motmod\nNote: Using POSIX non-realtime\nFound file(LIB): /home/mes006/linuxcncWebWASM/linuxcnc/lib/hallib/basic_sim.tcl\nsetup_kins: cmd=loadrt xyzac-trt-kins sparm=identityfirst\nnote: MAXV max: 1000.000 units/sec 60000.000 units/min\nnote: LJOG max: 1000.000 units/sec 60000.000 units/min\nnote: LJOG default: 20.000 units/sec 1200.000 units/min\nnote: AJOG max: 360.000 units/sec 21600.000 units/min\nnote: AJOG default: 360.000 units/sec 21600.000 units/min\nnote: jog_order='XYZC'\nnote: jog_invert=set()\ntask: 0 cycles, min=0.000004, max=0.062398, avg=-1.000000, 0 latency excursions (> 10x expected cycle time of 0.010000s)\nTraceback (most recent call last):\n File \"/home/mes006/linuxcncWebWASM/linuxcnc/bin/axis\", line 4249, in <module>\n o.mainloop()\n File \"/usr/lib/python3.12/tkinter/__init__.py\", line 1504, in mainloop\n self.tk.mainloop(n)\n File \"/usr/lib/python3.12/tkinter/__init__.py\", line 1962, in __call__\n def __call__(self, *args):\n\nKeyboardInterrupt\nShutting down and cleaning up LinuxCNC...\n\n!!! switchkins-type 0 is IDENTITY\n\nidentityKinematicsSetup: coordinates:xyzac\n Joint 0 ==> Axis X\n Joint 1 ==> Axis Y\n Joint 2 ==> Axis Z\n Joint 3 ==> Axis A\n Joint 4 ==> Axis C\n\nxyzac-trt-kins coordinates=xyzac assigns:\n Joint 0 ==> Axis X\n Joint 1 ==> Axis Y\n Joint 2 ==> Axis Z\n Joint 3 ==> Axis A\n Joint 4 ==> Axis C\n\nuserkKinematicsSetup:\n emc/kinematics/userkfuncs.c <xyzac> max_joints=16 allow_duplicates=1\n\nNote: Using POSIX non-realtime",
"native_axis_window": {
"height": 1377,
"raw": "0x4c0001f \"AXIS 2.10.0~pre0 on sim-xyzac-trt-kins (switchkins) (no file)\": (\"axis\" \"Axis\") 1552x1377+28+98 +280+286",
"title": "AXIS 2.10.0~pre0 on sim-xyzac-trt-kins (switchkins) (no file)",
"width": 1552
},
"native_linuxcnc": {
"display": ":1",
"python_module": "/usr/lib/python3/dist-packages/linuxcnc.cpython-312-x86_64-linux-gnu.so"
},
"program": {
"path": "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc",
"sha256": "5afc03d5c1b692edd4154a6d37e5f94d74936a7bd5e82dc9c022f7bc21c7dc17"
},
"release_status": "STOP_RELEASE",
"report_sha256": "812a0bb8de8438aa18bc16789c40a33bcaadfaf3fcdc704ecf109c4b77bfdbfd",
"row_count": 0,
"rows": [],
"schema": "xyzac-native-linuxcnc-tick-trace.v1",
"status": "blocked",
"tick_source": "linuxcnc.stat.taskbeat",
"trace_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
}