Files
cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json

1239 lines
46 KiB
JSON

{
"jobId": "xyzab-20260626214346-f4b4aa36",
"reportId": "report-xyzab-20260626214346-f4b4aa36",
"evidenceScope": "gmoccapy-xyzab-function",
"generatedAt": "2026-06-26T21:43:46.310Z",
"targetUrl": "http://127.0.0.1:36983/web-rtcp-5axis-sim-plan/app/index.html",
"chromePath": "/usr/bin/google-chrome",
"screenshotsDir": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab",
"steps": [
{
"name": "01-loaded",
"title": "Initial gmoccapy shell",
"description": "Default shell loaded with icon registry and diagnostics.",
"screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/01-loaded.png",
"pixelStats": {
"width": 1500,
"height": 1050,
"averageLuminance": 130.04,
"nonBlackRatio": 0.7823
},
"state": {
"machineProfile": "xyzac-trt",
"coordinates": "XYZAC",
"runState": "idle",
"rtcpState": "on",
"kinsType": "tcp-xyzac",
"machine": {
"powerOn": false,
"taskState": "estop-reset",
"mode": "manual",
"allHomed": false,
"interpState": "idle"
},
"spindle": {
"enabled": true,
"direction": "forward",
"rpm": 1600
},
"coolant": {
"flood": true,
"mist": false
},
"taskPolicy": {
"canRunAuto": false,
"canRunAutoStrict": false,
"iniLoaded": true,
"machineFileStaged": true,
"taskHalRuntimeReady": true
},
"operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc"
},
"dom": {
"buttons": {
"estop": {
"exists": true,
"iconName": "main_switch_off",
"iconVariant": "inactive",
"buttonId": "tbtn_estop",
"active": "false",
"commandReady": null,
"title": "Estop the machine / F1"
},
"power": {
"exists": true,
"iconName": "power_off",
"iconVariant": "inactive",
"buttonId": "tbtn_on",
"active": "false",
"commandReady": null,
"title": "Turn the machine on/off / F2"
},
"mode-manual": {
"exists": true,
"iconName": "mode_manual_active",
"iconVariant": "active",
"buttonId": "rbt_manual",
"active": "true",
"commandReady": null,
"title": "Enter manual mode"
},
"mode-auto": {
"exists": true,
"iconName": "mode_auto_inactive",
"iconVariant": "inactive",
"buttonId": "rbt_auto",
"active": "false",
"commandReady": null,
"title": "Enter auto mode"
},
"mode-mdi": {
"exists": true,
"iconName": "mode_mdi_inactive",
"iconVariant": "inactive",
"buttonId": "rbt_mdi",
"active": "false",
"commandReady": null,
"title": "Enter MDI mode"
},
"RUN": {
"exists": true,
"iconName": "play",
"iconVariant": "inactive",
"buttonId": "btn_run",
"active": "false",
"commandReady": "false",
"title": "run blocked: machine must be on"
},
"STOP": {
"exists": true,
"iconName": "stop",
"iconVariant": "inactive",
"buttonId": "btn_stop",
"active": "false",
"commandReady": "true",
"title": "Stop"
},
"PAUSE": {
"exists": true,
"iconName": "pause",
"iconVariant": "inactive",
"buttonId": "tbtn_pause",
"active": "false",
"commandReady": "false",
"title": "pause blocked: machine must be on"
},
"HOME": {
"exists": true,
"iconName": "ref_all",
"iconVariant": "inactive",
"buttonId": "btn_homing",
"active": "false",
"commandReady": "false",
"title": "home blocked: machine must be on"
},
"spindle-forward": {
"exists": true,
"iconName": "spindle_right_on",
"iconVariant": "active",
"buttonId": "rbt_forward",
"active": "true",
"commandReady": "false",
"title": "spindle blocked: machine must be on"
},
"spindle-stop": {
"exists": true,
"iconName": "spindle_stop",
"iconVariant": "inactive",
"buttonId": "rbt_stop",
"active": "false",
"commandReady": "false",
"title": "spindle blocked: machine must be on"
},
"spindle-reverse": {
"exists": true,
"iconName": "spindle_left",
"iconVariant": "inactive",
"buttonId": "rbt_reverse",
"active": "false",
"commandReady": "false",
"title": "spindle blocked: machine must be on"
},
"toggle-flood": {
"exists": true,
"iconName": "coolant_flood_active",
"iconVariant": "active",
"buttonId": "tbtn_flood",
"active": "true",
"commandReady": "false",
"title": "coolant blocked: machine must be on"
},
"toggle-mist": {
"exists": true,
"iconName": "coolant_mist_inactive",
"iconVariant": "inactive",
"buttonId": "tbtn_mist",
"active": "false",
"commandReady": "false",
"title": "coolant blocked: machine must be on"
},
"view-x": {
"exists": true,
"iconName": "tool_axis_x",
"iconVariant": "inactive",
"buttonId": "rbt_view_x",
"active": "false",
"commandReady": null,
"title": "View X"
}
},
"profileSummary": "XYZAC / 5 joints / 10 tools",
"iniKins": "xyzac-trt-kins / XYZAC",
"taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked",
"gmoccapyCommBoundary": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyNativeCommand": "NML command: gmoccapy -> linuxcnc.command() -> NML emcCommand -> milltask",
"gmoccapyWebPath": "button -> store.dispatch -> linuxcnc-task-policy -> runtime/status snapshot -> UI/Three.js",
"gmoccapyPostgui": "halcomp.ready before POSTGUI_HALFILE",
"gmoccapyHalBoundary": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"gmoccapyHalPostgui": "spindle-abs / spindle-at-speed / tooloffset-x / tooloffset-z / tool-change-loop",
"operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc"
}
},
{
"name": "02-profile-selected",
"title": "gmoccapy XYZAB selected",
"description": "Reference profile shows XYZAB/trivkins and disables TCP promotion.",
"screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/02-profile-selected.png",
"pixelStats": {
"width": 1500,
"height": 1050,
"averageLuminance": 130.01,
"nonBlackRatio": 0.7815
},
"state": {
"machineProfile": "gmoccapy-xyzab",
"coordinates": "XYZAB",
"profileTcpCapable": false,
"profileRtcpProof": false,
"runState": "idle",
"rtcpState": "off",
"kinsType": "identity",
"machine": {
"powerOn": false,
"taskState": "estop-reset",
"mode": "manual",
"allHomed": false,
"interpState": "idle"
},
"spindle": {
"enabled": true,
"direction": "forward",
"rpm": 1600
},
"coolant": {
"flood": true,
"mist": false
},
"taskPolicy": {
"canRunAuto": false,
"canRunAutoStrict": false,
"iniLoaded": false,
"machineFileStaged": false,
"taskHalRuntimeReady": true
},
"operatorMessage": "frame source fixture-ui-only"
},
"dom": {
"buttons": {
"estop": {
"exists": true,
"iconName": "main_switch_off",
"iconVariant": "inactive",
"buttonId": "tbtn_estop",
"active": "false",
"commandReady": null,
"title": "Estop the machine / F1"
},
"power": {
"exists": true,
"iconName": "power_off",
"iconVariant": "inactive",
"buttonId": "tbtn_on",
"active": "false",
"commandReady": null,
"title": "Turn the machine on/off / F2"
},
"mode-manual": {
"exists": true,
"iconName": "mode_manual_active",
"iconVariant": "active",
"buttonId": "rbt_manual",
"active": "true",
"commandReady": null,
"title": "Enter manual mode"
},
"mode-auto": {
"exists": true,
"iconName": "mode_auto_inactive",
"iconVariant": "inactive",
"buttonId": "rbt_auto",
"active": "false",
"commandReady": null,
"title": "Enter auto mode"
},
"mode-mdi": {
"exists": true,
"iconName": "mode_mdi_inactive",
"iconVariant": "inactive",
"buttonId": "rbt_mdi",
"active": "false",
"commandReady": null,
"title": "Enter MDI mode"
},
"RUN": {
"exists": true,
"iconName": "play",
"iconVariant": "inactive",
"buttonId": "btn_run",
"active": "false",
"commandReady": "false",
"title": "run blocked: machine must be on"
},
"STOP": {
"exists": true,
"iconName": "stop",
"iconVariant": "inactive",
"buttonId": "btn_stop",
"active": "false",
"commandReady": "true",
"title": "Stop"
},
"PAUSE": {
"exists": true,
"iconName": "pause",
"iconVariant": "inactive",
"buttonId": "tbtn_pause",
"active": "false",
"commandReady": "false",
"title": "pause blocked: machine must be on"
},
"HOME": {
"exists": true,
"iconName": "ref_all",
"iconVariant": "inactive",
"buttonId": "btn_homing",
"active": "false",
"commandReady": "false",
"title": "home blocked: machine must be on"
},
"spindle-forward": {
"exists": true,
"iconName": "spindle_right_on",
"iconVariant": "active",
"buttonId": "rbt_forward",
"active": "true",
"commandReady": "false",
"title": "spindle blocked: machine must be on"
},
"spindle-stop": {
"exists": true,
"iconName": "spindle_stop",
"iconVariant": "inactive",
"buttonId": "rbt_stop",
"active": "false",
"commandReady": "false",
"title": "spindle blocked: machine must be on"
},
"spindle-reverse": {
"exists": true,
"iconName": "spindle_left",
"iconVariant": "inactive",
"buttonId": "rbt_reverse",
"active": "false",
"commandReady": "false",
"title": "spindle blocked: machine must be on"
},
"toggle-flood": {
"exists": true,
"iconName": "coolant_flood_active",
"iconVariant": "active",
"buttonId": "tbtn_flood",
"active": "true",
"commandReady": "false",
"title": "coolant blocked: machine must be on"
},
"toggle-mist": {
"exists": true,
"iconName": "coolant_mist_inactive",
"iconVariant": "inactive",
"buttonId": "tbtn_mist",
"active": "false",
"commandReady": "false",
"title": "coolant blocked: machine must be on"
},
"view-x": {
"exists": true,
"iconName": "tool_axis_x",
"iconVariant": "inactive",
"buttonId": "rbt_view_x",
"active": "false",
"commandReady": null,
"title": "View X"
}
},
"profileSummary": "XYZAB / 5 joints / 17 tools",
"iniKins": "- / -",
"taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked",
"gmoccapyCommBoundary": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyNativeCommand": "NML command: gmoccapy -> linuxcnc.command() -> NML emcCommand -> milltask",
"gmoccapyWebPath": "button -> store.dispatch -> linuxcnc-task-policy -> runtime/status snapshot -> UI/Three.js",
"gmoccapyPostgui": "halcomp.ready before POSTGUI_HALFILE",
"gmoccapyHalBoundary": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"gmoccapyHalPostgui": "spindle-abs / spindle-at-speed / tooloffset-x / tooloffset-z / tool-change-loop",
"operatorMessage": "frame source fixture-ui-only"
}
},
{
"name": "03-run-blocked-power",
"title": "RUN blocked before power",
"description": "RUN remains clickable but reports LinuxCNC/gmoccapy gate reason.",
"screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/03-run-blocked-power.png",
"pixelStats": {
"width": 1500,
"height": 1050,
"averageLuminance": 130.01,
"nonBlackRatio": 0.7815
},
"state": {
"machineProfile": "gmoccapy-xyzab",
"coordinates": "XYZAB",
"profileTcpCapable": false,
"profileRtcpProof": false,
"runState": "idle",
"rtcpState": "off",
"kinsType": "identity",
"machine": {
"powerOn": false,
"taskState": "estop-reset",
"mode": "manual",
"allHomed": false,
"interpState": "idle"
},
"spindle": {
"enabled": true,
"direction": "forward",
"rpm": 1600
},
"coolant": {
"flood": true,
"mist": false
},
"taskPolicy": {
"canRunAuto": false,
"canRunAutoStrict": false,
"iniLoaded": false,
"machineFileStaged": false,
"taskHalRuntimeReady": true
},
"operatorMessage": "run blocked: machine must be on"
},
"dom": {
"buttons": {
"estop": {
"exists": true,
"iconName": "main_switch_off",
"iconVariant": "inactive",
"buttonId": "tbtn_estop",
"active": "false",
"commandReady": null,
"title": "Estop the machine / F1"
},
"power": {
"exists": true,
"iconName": "power_off",
"iconVariant": "inactive",
"buttonId": "tbtn_on",
"active": "false",
"commandReady": null,
"title": "Turn the machine on/off / F2"
},
"mode-manual": {
"exists": true,
"iconName": "mode_manual_active",
"iconVariant": "active",
"buttonId": "rbt_manual",
"active": "true",
"commandReady": null,
"title": "Enter manual mode"
},
"mode-auto": {
"exists": true,
"iconName": "mode_auto_inactive",
"iconVariant": "inactive",
"buttonId": "rbt_auto",
"active": "false",
"commandReady": null,
"title": "Enter auto mode"
},
"mode-mdi": {
"exists": true,
"iconName": "mode_mdi_inactive",
"iconVariant": "inactive",
"buttonId": "rbt_mdi",
"active": "false",
"commandReady": null,
"title": "Enter MDI mode"
},
"RUN": {
"exists": true,
"iconName": "play",
"iconVariant": "inactive",
"buttonId": "btn_run",
"active": "false",
"commandReady": "false",
"title": "run blocked: machine must be on"
},
"STOP": {
"exists": true,
"iconName": "stop",
"iconVariant": "inactive",
"buttonId": "btn_stop",
"active": "false",
"commandReady": "true",
"title": "Stop"
},
"PAUSE": {
"exists": true,
"iconName": "pause",
"iconVariant": "inactive",
"buttonId": "tbtn_pause",
"active": "false",
"commandReady": "false",
"title": "pause blocked: machine must be on"
},
"HOME": {
"exists": true,
"iconName": "ref_all",
"iconVariant": "inactive",
"buttonId": "btn_homing",
"active": "false",
"commandReady": "false",
"title": "home blocked: machine must be on"
},
"spindle-forward": {
"exists": true,
"iconName": "spindle_right_on",
"iconVariant": "active",
"buttonId": "rbt_forward",
"active": "true",
"commandReady": "false",
"title": "spindle blocked: machine must be on"
},
"spindle-stop": {
"exists": true,
"iconName": "spindle_stop",
"iconVariant": "inactive",
"buttonId": "rbt_stop",
"active": "false",
"commandReady": "false",
"title": "spindle blocked: machine must be on"
},
"spindle-reverse": {
"exists": true,
"iconName": "spindle_left",
"iconVariant": "inactive",
"buttonId": "rbt_reverse",
"active": "false",
"commandReady": "false",
"title": "spindle blocked: machine must be on"
},
"toggle-flood": {
"exists": true,
"iconName": "coolant_flood_active",
"iconVariant": "active",
"buttonId": "tbtn_flood",
"active": "true",
"commandReady": "false",
"title": "coolant blocked: machine must be on"
},
"toggle-mist": {
"exists": true,
"iconName": "coolant_mist_inactive",
"iconVariant": "inactive",
"buttonId": "tbtn_mist",
"active": "false",
"commandReady": "false",
"title": "coolant blocked: machine must be on"
},
"view-x": {
"exists": true,
"iconName": "tool_axis_x",
"iconVariant": "inactive",
"buttonId": "rbt_view_x",
"active": "false",
"commandReady": null,
"title": "View X"
}
},
"profileSummary": "XYZAB / 5 joints / 17 tools",
"iniKins": "- / -",
"taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked",
"gmoccapyCommBoundary": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyNativeCommand": "NML command: gmoccapy -> linuxcnc.command() -> NML emcCommand -> milltask",
"gmoccapyWebPath": "button -> store.dispatch -> linuxcnc-task-policy -> runtime/status snapshot -> UI/Three.js",
"gmoccapyPostgui": "halcomp.ready before POSTGUI_HALFILE",
"gmoccapyHalBoundary": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"gmoccapyHalPostgui": "spindle-abs / spindle-at-speed / tooloffset-x / tooloffset-z / tool-change-loop",
"operatorMessage": "run blocked: machine must be on"
}
},
{
"name": "04-run-blocked-reference-evidence",
"title": "RUN blocked by reference evidence",
"description": "XYZAB passes power/home/auto gates but remains blocked without complete native INI/machine-file/runtime evidence.",
"screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/04-run-blocked-reference-evidence.png",
"pixelStats": {
"width": 1500,
"height": 1050,
"averageLuminance": 130.05,
"nonBlackRatio": 0.7815
},
"state": {
"machineProfile": "gmoccapy-xyzab",
"coordinates": "XYZAB",
"profileTcpCapable": false,
"profileRtcpProof": false,
"runState": "idle",
"rtcpState": "off",
"kinsType": "identity",
"machine": {
"powerOn": true,
"taskState": "on",
"mode": "auto",
"allHomed": true,
"interpState": "idle"
},
"spindle": {
"enabled": true,
"direction": "forward",
"rpm": 1600
},
"coolant": {
"flood": true,
"mist": false
},
"taskPolicy": {
"canRunAuto": true,
"canRunAutoStrict": false,
"iniLoaded": false,
"machineFileStaged": false,
"taskHalRuntimeReady": true
},
"operatorMessage": "run blocked: LinuxCNC INI not loaded"
},
"dom": {
"buttons": {
"estop": {
"exists": true,
"iconName": "main_switch_off",
"iconVariant": "inactive",
"buttonId": "tbtn_estop",
"active": "false",
"commandReady": null,
"title": "Estop the machine / F1"
},
"power": {
"exists": true,
"iconName": "power_on",
"iconVariant": "active",
"buttonId": "tbtn_on",
"active": "true",
"commandReady": null,
"title": "Turn the machine on/off / F2"
},
"mode-manual": {
"exists": true,
"iconName": "mode_manual_inactive",
"iconVariant": "inactive",
"buttonId": "rbt_manual",
"active": "false",
"commandReady": null,
"title": "Enter manual mode"
},
"mode-auto": {
"exists": true,
"iconName": "mode_auto_active",
"iconVariant": "active",
"buttonId": "rbt_auto",
"active": "true",
"commandReady": null,
"title": "Enter auto mode"
},
"mode-mdi": {
"exists": true,
"iconName": "mode_mdi_inactive",
"iconVariant": "inactive",
"buttonId": "rbt_mdi",
"active": "false",
"commandReady": null,
"title": "Enter MDI mode"
},
"RUN": {
"exists": true,
"iconName": "play",
"iconVariant": "inactive",
"buttonId": "btn_run",
"active": "false",
"commandReady": "false",
"title": "run blocked: LinuxCNC INI not loaded"
},
"STOP": {
"exists": true,
"iconName": "stop",
"iconVariant": "inactive",
"buttonId": "btn_stop",
"active": "false",
"commandReady": "true",
"title": "Stop"
},
"PAUSE": {
"exists": true,
"iconName": "pause",
"iconVariant": "inactive",
"buttonId": "tbtn_pause",
"active": "false",
"commandReady": "true",
"title": "Pause"
},
"HOME": {
"exists": true,
"iconName": "ref_all",
"iconVariant": "active",
"buttonId": "btn_homing",
"active": "true",
"commandReady": "false",
"title": "home blocked: switch to manual mode first"
},
"spindle-forward": {
"exists": true,
"iconName": "spindle_right_on",
"iconVariant": "active",
"buttonId": "rbt_forward",
"active": "true",
"commandReady": "true",
"title": "Spindle forward"
},
"spindle-stop": {
"exists": true,
"iconName": "spindle_stop",
"iconVariant": "inactive",
"buttonId": "rbt_stop",
"active": "false",
"commandReady": "true",
"title": "Spindle stop"
},
"spindle-reverse": {
"exists": true,
"iconName": "spindle_left",
"iconVariant": "inactive",
"buttonId": "rbt_reverse",
"active": "false",
"commandReady": "true",
"title": "Spindle reverse"
},
"toggle-flood": {
"exists": true,
"iconName": "coolant_flood_active",
"iconVariant": "active",
"buttonId": "tbtn_flood",
"active": "true",
"commandReady": "true",
"title": "Flood coolant"
},
"toggle-mist": {
"exists": true,
"iconName": "coolant_mist_inactive",
"iconVariant": "inactive",
"buttonId": "tbtn_mist",
"active": "false",
"commandReady": "true",
"title": "Mist coolant"
},
"view-x": {
"exists": true,
"iconName": "tool_axis_x",
"iconVariant": "inactive",
"buttonId": "rbt_view_x",
"active": "false",
"commandReady": null,
"title": "View X"
}
},
"profileSummary": "XYZAB / 5 joints / 17 tools",
"iniKins": "- / -",
"taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked",
"gmoccapyCommBoundary": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyNativeCommand": "NML command: gmoccapy -> linuxcnc.command() -> NML emcCommand -> milltask",
"gmoccapyWebPath": "button -> store.dispatch -> linuxcnc-task-policy -> runtime/status snapshot -> UI/Three.js",
"gmoccapyPostgui": "halcomp.ready before POSTGUI_HALFILE",
"gmoccapyHalBoundary": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"gmoccapyHalPostgui": "spindle-abs / spindle-at-speed / tooloffset-x / tooloffset-z / tool-change-loop",
"operatorMessage": "run blocked: LinuxCNC INI not loaded"
}
},
{
"name": "05-controls-active",
"title": "Spindle and coolant controls",
"description": "Spindle/coolant icons update through task policy guarded store actions.",
"screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/05-controls-active.png",
"pixelStats": {
"width": 1500,
"height": 1050,
"averageLuminance": 130.04,
"nonBlackRatio": 0.7815
},
"state": {
"machineProfile": "gmoccapy-xyzab",
"coordinates": "XYZAB",
"profileTcpCapable": false,
"profileRtcpProof": false,
"runState": "idle",
"rtcpState": "off",
"kinsType": "identity",
"machine": {
"powerOn": true,
"taskState": "on",
"mode": "manual",
"allHomed": true,
"interpState": "idle"
},
"spindle": {
"enabled": false,
"direction": "stop",
"rpm": 1600
},
"coolant": {
"flood": false,
"mist": true
},
"taskPolicy": {
"canRunAuto": false,
"canRunAutoStrict": false,
"iniLoaded": false,
"machineFileStaged": false,
"taskHalRuntimeReady": true
},
"operatorMessage": "mist coolant toggled"
},
"dom": {
"buttons": {
"estop": {
"exists": true,
"iconName": "main_switch_off",
"iconVariant": "inactive",
"buttonId": "tbtn_estop",
"active": "false",
"commandReady": null,
"title": "Estop the machine / F1"
},
"power": {
"exists": true,
"iconName": "power_on",
"iconVariant": "active",
"buttonId": "tbtn_on",
"active": "true",
"commandReady": null,
"title": "Turn the machine on/off / F2"
},
"mode-manual": {
"exists": true,
"iconName": "mode_manual_active",
"iconVariant": "active",
"buttonId": "rbt_manual",
"active": "true",
"commandReady": null,
"title": "Enter manual mode"
},
"mode-auto": {
"exists": true,
"iconName": "mode_auto_inactive",
"iconVariant": "inactive",
"buttonId": "rbt_auto",
"active": "false",
"commandReady": null,
"title": "Enter auto mode"
},
"mode-mdi": {
"exists": true,
"iconName": "mode_mdi_inactive",
"iconVariant": "inactive",
"buttonId": "rbt_mdi",
"active": "false",
"commandReady": null,
"title": "Enter MDI mode"
},
"RUN": {
"exists": true,
"iconName": "play",
"iconVariant": "inactive",
"buttonId": "btn_run",
"active": "false",
"commandReady": "false",
"title": "run blocked: switch to auto mode first"
},
"STOP": {
"exists": true,
"iconName": "stop",
"iconVariant": "inactive",
"buttonId": "btn_stop",
"active": "false",
"commandReady": "true",
"title": "Stop"
},
"PAUSE": {
"exists": true,
"iconName": "pause",
"iconVariant": "inactive",
"buttonId": "tbtn_pause",
"active": "false",
"commandReady": "false",
"title": "pause blocked: task mode must be auto or MDI"
},
"HOME": {
"exists": true,
"iconName": "ref_all",
"iconVariant": "active",
"buttonId": "btn_homing",
"active": "true",
"commandReady": "true",
"title": "Home"
},
"spindle-forward": {
"exists": true,
"iconName": "spindle_right",
"iconVariant": "inactive",
"buttonId": "rbt_forward",
"active": "false",
"commandReady": "true",
"title": "Spindle forward"
},
"spindle-stop": {
"exists": true,
"iconName": "spindle_stop_on",
"iconVariant": "active",
"buttonId": "rbt_stop",
"active": "true",
"commandReady": "true",
"title": "Spindle stop"
},
"spindle-reverse": {
"exists": true,
"iconName": "spindle_left",
"iconVariant": "inactive",
"buttonId": "rbt_reverse",
"active": "false",
"commandReady": "true",
"title": "Spindle reverse"
},
"toggle-flood": {
"exists": true,
"iconName": "coolant_flood_inactive",
"iconVariant": "inactive",
"buttonId": "tbtn_flood",
"active": "false",
"commandReady": "true",
"title": "Flood coolant"
},
"toggle-mist": {
"exists": true,
"iconName": "coolant_mist_active",
"iconVariant": "active",
"buttonId": "tbtn_mist",
"active": "true",
"commandReady": "true",
"title": "Mist coolant"
},
"view-x": {
"exists": true,
"iconName": "tool_axis_x",
"iconVariant": "inactive",
"buttonId": "rbt_view_x",
"active": "false",
"commandReady": null,
"title": "View X"
}
},
"profileSummary": "XYZAB / 5 joints / 17 tools",
"iniKins": "- / -",
"taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked",
"gmoccapyCommBoundary": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyNativeCommand": "NML command: gmoccapy -> linuxcnc.command() -> NML emcCommand -> milltask",
"gmoccapyWebPath": "button -> store.dispatch -> linuxcnc-task-policy -> runtime/status snapshot -> UI/Three.js",
"gmoccapyPostgui": "halcomp.ready before POSTGUI_HALFILE",
"gmoccapyHalBoundary": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"gmoccapyHalPostgui": "spindle-abs / spindle-at-speed / tooloffset-x / tooloffset-z / tool-change-loop",
"operatorMessage": "mist coolant toggled"
}
},
{
"name": "06-hal-diagnostics",
"title": "HAL and communication diagnostics",
"description": "Info panel exposes native NML/HAL/postgui references and Web runtime boundary.",
"screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab/06-hal-diagnostics.png",
"pixelStats": {
"width": 1500,
"height": 1050,
"averageLuminance": 130.04,
"nonBlackRatio": 0.7815
},
"state": {
"machineProfile": "gmoccapy-xyzab",
"coordinates": "XYZAB",
"profileTcpCapable": false,
"profileRtcpProof": false,
"runState": "idle",
"rtcpState": "off",
"kinsType": "identity",
"machine": {
"powerOn": true,
"taskState": "on",
"mode": "manual",
"allHomed": true,
"interpState": "idle"
},
"spindle": {
"enabled": false,
"direction": "stop",
"rpm": 1600
},
"coolant": {
"flood": false,
"mist": true
},
"taskPolicy": {
"canRunAuto": false,
"canRunAutoStrict": false,
"iniLoaded": false,
"machineFileStaged": false,
"taskHalRuntimeReady": true
},
"operatorMessage": "mist coolant toggled"
},
"dom": {
"buttons": {
"estop": {
"exists": true,
"iconName": "main_switch_off",
"iconVariant": "inactive",
"buttonId": "tbtn_estop",
"active": "false",
"commandReady": null,
"title": "Estop the machine / F1"
},
"power": {
"exists": true,
"iconName": "power_on",
"iconVariant": "active",
"buttonId": "tbtn_on",
"active": "true",
"commandReady": null,
"title": "Turn the machine on/off / F2"
},
"mode-manual": {
"exists": true,
"iconName": "mode_manual_active",
"iconVariant": "active",
"buttonId": "rbt_manual",
"active": "true",
"commandReady": null,
"title": "Enter manual mode"
},
"mode-auto": {
"exists": true,
"iconName": "mode_auto_inactive",
"iconVariant": "inactive",
"buttonId": "rbt_auto",
"active": "false",
"commandReady": null,
"title": "Enter auto mode"
},
"mode-mdi": {
"exists": true,
"iconName": "mode_mdi_inactive",
"iconVariant": "inactive",
"buttonId": "rbt_mdi",
"active": "false",
"commandReady": null,
"title": "Enter MDI mode"
},
"RUN": {
"exists": true,
"iconName": "play",
"iconVariant": "inactive",
"buttonId": "btn_run",
"active": "false",
"commandReady": "false",
"title": "run blocked: switch to auto mode first"
},
"STOP": {
"exists": true,
"iconName": "stop",
"iconVariant": "inactive",
"buttonId": "btn_stop",
"active": "false",
"commandReady": "true",
"title": "Stop"
},
"PAUSE": {
"exists": true,
"iconName": "pause",
"iconVariant": "inactive",
"buttonId": "tbtn_pause",
"active": "false",
"commandReady": "false",
"title": "pause blocked: task mode must be auto or MDI"
},
"HOME": {
"exists": true,
"iconName": "ref_all",
"iconVariant": "active",
"buttonId": "btn_homing",
"active": "true",
"commandReady": "true",
"title": "Home"
},
"spindle-forward": {
"exists": true,
"iconName": "spindle_right",
"iconVariant": "inactive",
"buttonId": "rbt_forward",
"active": "false",
"commandReady": "true",
"title": "Spindle forward"
},
"spindle-stop": {
"exists": true,
"iconName": "spindle_stop_on",
"iconVariant": "active",
"buttonId": "rbt_stop",
"active": "true",
"commandReady": "true",
"title": "Spindle stop"
},
"spindle-reverse": {
"exists": true,
"iconName": "spindle_left",
"iconVariant": "inactive",
"buttonId": "rbt_reverse",
"active": "false",
"commandReady": "true",
"title": "Spindle reverse"
},
"toggle-flood": {
"exists": true,
"iconName": "coolant_flood_inactive",
"iconVariant": "inactive",
"buttonId": "tbtn_flood",
"active": "false",
"commandReady": "true",
"title": "Flood coolant"
},
"toggle-mist": {
"exists": true,
"iconName": "coolant_mist_active",
"iconVariant": "active",
"buttonId": "tbtn_mist",
"active": "true",
"commandReady": "true",
"title": "Mist coolant"
},
"view-x": {
"exists": true,
"iconName": "tool_axis_x",
"iconVariant": "inactive",
"buttonId": "rbt_view_x",
"active": "false",
"commandReady": null,
"title": "View X"
}
},
"profileSummary": "XYZAB / 5 joints / 17 tools",
"iniKins": "- / -",
"taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked",
"gmoccapyCommBoundary": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyNativeCommand": "NML command: gmoccapy -> linuxcnc.command() -> NML emcCommand -> milltask",
"gmoccapyWebPath": "button -> store.dispatch -> linuxcnc-task-policy -> runtime/status snapshot -> UI/Three.js",
"gmoccapyPostgui": "halcomp.ready before POSTGUI_HALFILE",
"gmoccapyHalBoundary": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"gmoccapyHalPostgui": "spindle-abs / spindle-at-speed / tooloffset-x / tooloffset-z / tool-change-loop",
"operatorMessage": "mist coolant toggled"
}
}
],
"checks": [
{
"name": "XYZAB profile selected",
"pass": true,
"detail": "{\"machineProfile\":\"gmoccapy-xyzab\",\"coordinates\":\"XYZAB\",\"profileTcpCapable\":false,\"profileRtcpProof\":false,\"runState\":\"idle\",\"rtcpState\":\"off\",\"kinsType\":\"identity\",\"machine\":{\"powerOn\":false,\"taskState\":\"estop-reset\",\"mode\":\"manual\",\"allHomed\":false,\"interpState\":\"idle\"},\"spindle\":{\"enabled\":true,\"direction\":\"forward\",\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":false},\"taskPolicy\":{\"canRunAuto\":false,\"canRunAutoStrict\":false,\"iniLoaded\":false,\"machineFileStaged\":false,\"taskHalRuntimeReady\":true},\"operatorMessage\":\"frame source fixture-ui-only\"}"
},
{
"name": "Reference profile blocks RTCP promotion",
"pass": true,
"detail": "{\"machineProfile\":\"gmoccapy-xyzab\",\"coordinates\":\"XYZAB\",\"profileTcpCapable\":false,\"profileRtcpProof\":false,\"runState\":\"idle\",\"rtcpState\":\"off\",\"kinsType\":\"identity\",\"machine\":{\"powerOn\":false,\"taskState\":\"estop-reset\",\"mode\":\"manual\",\"allHomed\":false,\"interpState\":\"idle\"},\"spindle\":{\"enabled\":true,\"direction\":\"forward\",\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":false},\"taskPolicy\":{\"canRunAuto\":false,\"canRunAutoStrict\":false,\"iniLoaded\":false,\"machineFileStaged\":false,\"taskHalRuntimeReady\":true},\"operatorMessage\":\"frame source fixture-ui-only\"}"
},
{
"name": "RUN blocked before power",
"pass": true,
"detail": "run blocked: machine must be on"
},
{
"name": "RUN blocked by reference evidence",
"pass": true,
"detail": "run blocked: LinuxCNC INI not loaded"
},
{
"name": "Core icons rendered",
"pass": true,
"detail": "{\"estop\":{\"exists\":true,\"iconName\":\"main_switch_off\",\"iconVariant\":\"inactive\",\"buttonId\":\"tbtn_estop\",\"active\":\"false\",\"commandReady\":null,\"title\":\"Estop the machine / F1\"},\"power\":{\"exists\":true,\"iconName\":\"power_on\",\"iconVariant\":\"active\",\"buttonId\":\"tbtn_on\",\"active\":\"true\",\"commandReady\":null,\"title\":\"Turn the machine on/off / F2\"},\"mode-manual\":{\"exists\":true,\"iconName\":\"mode_manual_active\",\"iconVariant\":\"active\",\"buttonId\":\"rbt_manual\",\"active\":\"true\",\"commandReady\":null,\"title\":\"Enter manual mode\"},\"mode-auto\":{\"exists\":true,\"iconName\":\"mode_auto_inactive\",\"iconVariant\":\"inactive\",\"buttonId\":\"rbt_auto\",\"active\":\"false\",\"commandReady\":null,\"title\":\"Enter auto mode\"},\"mode-mdi\":{\"exists\":true,\"iconName\":\"mode_mdi_inactive\",\"iconVariant\":\"inactive\",\"buttonId\":\"rbt_mdi\",\"active\":\"false\",\"commandReady\":null,\"title\":\"Enter MDI mode\"},\"RUN\":{\"exists\":true,\"iconName\":\"play\",\"iconVariant\":\"inactive\",\"buttonId\":\"btn_run\",\"active\":\"false\",\"commandReady\":\"false\",\"title\":\"run blocked: switch to auto mode first\"},\"STOP\":{\"exists\":true,\"iconName\":\"stop\",\"iconVariant\":\"inactive\",\"buttonId\":\"btn_stop\",\"active\":\"false\",\"commandReady\":\"true\",\"title\":\"Stop\"},\"PAUSE\":{\"exists\":true,\"iconName\":\"pause\",\"iconVariant\":\"inactive\",\"buttonId\":\"tbtn_pause\",\"active\":\"false\",\"commandReady\":\"false\",\"title\":\"pause blocked: task mode must be auto or MDI\"},\"HOME\":{\"exists\":true,\"iconName\":\"ref_all\",\"iconVariant\":\"active\",\"buttonId\":\"btn_homing\",\"active\":\"true\",\"commandReady\":\"true\",\"title\":\"Home\"},\"spindle-forward\":{\"exists\":true,\"iconName\":\"spindle_right\",\"iconVariant\":\"inactive\",\"buttonId\":\"rbt_forward\",\"active\":\"false\",\"commandReady\":\"true\",\"title\":\"Spindle forward\"},\"spindle-stop\":{\"exists\":true,\"iconName\":\"spindle_stop_on\",\"iconVariant\":\"active\",\"buttonId\":\"rbt_stop\",\"active\":\"true\",\"commandReady\":\"true\",\"title\":\"Spindle stop\"},\"spindle-reverse\":{\"exists\":true,\"iconName\":\"spindle_left\",\"iconVariant\":\"inactive\",\"buttonId\":\"rbt_reverse\",\"active\":\"false\",\"commandReady\":\"true\",\"title\":\"Spindle reverse\"},\"toggle-flood\":{\"exists\":true,\"iconName\":\"coolant_flood_inactive\",\"iconVariant\":\"inactive\",\"buttonId\":\"tbtn_flood\",\"active\":\"false\",\"commandReady\":\"true\",\"title\":\"Flood coolant\"},\"toggle-mist\":{\"exists\":true,\"iconName\":\"coolant_mist_active\",\"iconVariant\":\"active\",\"buttonId\":\"tbtn_mist\",\"active\":\"true\",\"commandReady\":\"true\",\"title\":\"Mist coolant\"},\"view-x\":{\"exists\":true,\"iconName\":\"tool_axis_x\",\"iconVariant\":\"inactive\",\"buttonId\":\"rbt_view_x\",\"active\":\"false\",\"commandReady\":null,\"title\":\"View X\"}}"
},
{
"name": "Spindle/coolant state updates",
"pass": true,
"detail": "{\"machineProfile\":\"gmoccapy-xyzab\",\"coordinates\":\"XYZAB\",\"profileTcpCapable\":false,\"profileRtcpProof\":false,\"runState\":\"idle\",\"rtcpState\":\"off\",\"kinsType\":\"identity\",\"machine\":{\"powerOn\":true,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\"},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":true},\"taskPolicy\":{\"canRunAuto\":false,\"canRunAutoStrict\":false,\"iniLoaded\":false,\"machineFileStaged\":false,\"taskHalRuntimeReady\":true},\"operatorMessage\":\"mist coolant toggled\"}"
},
{
"name": "NML command diagnostic",
"pass": true,
"detail": "NML command: gmoccapy -> linuxcnc.command() -> NML emcCommand -> milltask"
},
{
"name": "Web runtime diagnostic",
"pass": true,
"detail": "button -> store.dispatch -> linuxcnc-task-policy -> runtime/status snapshot -> UI/Three.js"
},
{
"name": "HAL postgui diagnostic",
"pass": true,
"detail": "spindle-abs / spindle-at-speed / tooloffset-x / tooloffset-z / tool-change-loop"
},
{
"name": "Screenshots are nonblank",
"pass": true,
"detail": "01-loaded:0.7823, 02-profile-selected:0.7815, 03-run-blocked-power:0.7815, 04-run-blocked-reference-evidence:0.7815, 05-controls-active:0.7815, 06-hal-diagnostics:0.7815"
}
],
"consoleErrors": [
"Failed to load resource: the server responded with a status of 404 (Not Found)",
"Failed to load resource: the server responded with a status of 404 (Not Found)",
"Failed to load resource: the server responded with a status of 404 (Not Found)",
"Failed to load resource: the server responded with a status of 404 (Not Found)",
"Failed to load resource: the server responded with a status of 404 (Not Found)",
"Failed to load resource: the server responded with a status of 404 (Not Found)",
"Failed to load resource: the server responded with a status of 404 (Not Found)"
],
"pageErrors": [],
"status": "PASS",
"jsonPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.json",
"pdfPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/gmoccapy-xyzab-function-report.pdf"
}