{ "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" }