Files
cnc_wams/qa/web-rtcp-5axis-site-test/output/run-preconditions-feedback.json

566 lines
19 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"generatedAt": "2026-06-22T22:10:40.219Z",
"targetUrl": "http://127.0.0.1:45757/web-rtcp-5axis-sim-plan/app/index.html",
"caseName": "07-run-preconditions-and-feedback",
"summary": "浏览器 RUN 证据INI/profile/kinematics/task-HAL 同一上下文taskHalStatusLoop 持续推进UI 消费 task/HAL/motion feedback",
"status": "PASS",
"checks": [
{
"name": "INI ready",
"pass": true,
"detail": "iniReady=true,true,true,true,true"
},
{
"name": "selected LinuxCNC G-code",
"pass": true,
"detail": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc"
},
{
"name": "task/HAL session opened selected G-code",
"pass": true,
"detail": "/work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/xyzac_switchkins_test_1.ngc"
},
{
"name": "taskHalStatusLoop 新 RUN sequence",
"pass": true,
"detail": "baselineSequence=1, sequences=2,2,2,2,2"
},
{
"name": "taskHalStatusLoop 本次 RUN tickCount",
"pass": true,
"detail": "ticks=4,4,4,4,4"
},
{
"name": "programRuntimeFeedbackHistory 本次 RUN 采样",
"pass": true,
"detail": "history=5,5,5,5,5"
},
{
"name": "feedback sourceMode 来自 task/HAL",
"pass": true,
"detail": "sourceModes=linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm"
},
{
"name": "无 fixture-line-playback feedback",
"pass": true,
"detail": "sourceModes=linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm,linuxcnc-task-motion-hal-wasm"
},
{
"name": "semantic boundary",
"pass": true,
"detail": "linuxcnc_task_motion_hal_wasm_simulation_runtime,linuxcnc_task_motion_hal_wasm_simulation_runtime,linuxcnc_task_motion_hal_wasm_simulation_runtime,linuxcnc_task_motion_hal_wasm_simulation_runtime,linuxcnc_task_motion_hal_wasm_simulation_runtime"
},
{
"name": "activeLine 等于 UI 高亮行",
"pass": true,
"detail": "active=29/29,29/29,29/29,29/29,29/29"
},
{
"name": "DRO 等于 runtime feedback axisPose",
"pass": true,
"detail": "droMatchesFeedback=true for all samples"
},
{
"name": "RTCP canvas 与 state 一致",
"pass": true,
"detail": "off/off,off/off,off/off,off/off,off/off"
},
{
"name": "runtime cycle 可见",
"pass": true,
"detail": "33/330,33/330,33/330,33/330,33/330"
},
{
"name": "canvas 执行轨迹",
"pass": true,
"detail": "true/1/ok,true/1/ok,true/1/ok,true/1/ok,true/1/ok"
}
],
"baseline": {
"elapsedMs": 0,
"screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/run-preconditions-feedback/07-run-preconditions-and-feedback-0000ms-before-run.png",
"canvas": {
"threeReady": "true",
"rtcpState": "off",
"executedPathPoints": 1,
"currentSegmentHighlight": "ok",
"toolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback"
},
"state": {
"profileId": "xyzac-trt",
"iniReady": true,
"iniPath": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"coordinates": "XYZAC",
"kinematicsModuleId": "xyzac-trt",
"selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc",
"taskHalSessionProgramPath": "/work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/xyzac_switchkins_test_1.ngc",
"taskHalStatusLoop": {
"apiName": "web-rtcp-5axis-task-hal-status-loop",
"active": false,
"sequence": 1,
"profileId": "xyzac-trt",
"iniPath": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"kinematicsModuleId": "xyzac-trt",
"tickCount": 12,
"batchSize": 5,
"intervalMs": 25,
"taskPeriodNs": 10000000,
"servoPeriodNs": 1000000,
"lastStatusAt": "2026-06-22T22:10:27.362Z",
"lastError": null,
"stopReason": "running",
"semanticBoundary": "js_status_polling_loop_for_linuxcnc_task_hal_motion_status"
},
"runState": "idle",
"activeLine": 1,
"activeRowLine": 1,
"activeLineMatchesUi": true,
"droAxisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"feedbackAxisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"droMatchesFeedback": true,
"rtcpState": "off",
"kinsType": "identity",
"feedback": {
"sourceMode": "linuxcnc-task-motion-hal-wasm",
"semanticBoundary": "linuxcnc_task_motion_hal_wasm_simulation_runtime",
"line": 1,
"taskCycle": 3,
"servoCycle": 30,
"velocity": 0,
"distanceToGo": 0
},
"feedbackHistoryLength": 18,
"feedbackHistorySourceModes": [
"linuxcnc-task-motion-hal-wasm"
],
"taskHalStatus": {
"taskState": "on",
"taskMode": "auto",
"interpState": "idle",
"taskCycle": null,
"servoCycle": 30
}
}
},
"samples": [
{
"elapsedMs": 200,
"screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/run-preconditions-feedback/07-run-preconditions-and-feedback-200ms.png",
"canvas": {
"threeReady": "true",
"rtcpState": "off",
"executedPathPoints": 1,
"currentSegmentHighlight": "ok",
"toolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback"
},
"state": {
"profileId": "xyzac-trt",
"iniReady": true,
"iniPath": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"coordinates": "XYZAC",
"kinematicsModuleId": "xyzac-trt",
"selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc",
"taskHalSessionProgramPath": "/work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/xyzac_switchkins_test_1.ngc",
"taskHalStatusLoop": {
"apiName": "web-rtcp-5axis-task-hal-status-loop",
"active": false,
"sequence": 2,
"profileId": "xyzac-trt",
"iniPath": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"kinematicsModuleId": "xyzac-trt",
"tickCount": 4,
"batchSize": 5,
"intervalMs": 25,
"taskPeriodNs": 10000000,
"servoPeriodNs": 1000000,
"lastStatusAt": "2026-06-22T22:10:35.152Z",
"lastError": null,
"stopReason": "complete",
"semanticBoundary": "js_status_polling_loop_for_linuxcnc_task_hal_motion_status"
},
"runState": "complete",
"activeLine": 29,
"activeRowLine": 29,
"activeLineMatchesUi": true,
"droAxisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"feedbackAxisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"droMatchesFeedback": true,
"rtcpState": "off",
"kinsType": "identity",
"feedback": {
"sourceMode": "linuxcnc-task-motion-hal-wasm",
"semanticBoundary": "linuxcnc_task_motion_hal_wasm_simulation_runtime",
"line": 29,
"taskCycle": 33,
"servoCycle": 330,
"velocity": 3600,
"distanceToGo": 0
},
"feedbackHistoryLength": 5,
"feedbackHistorySourceModes": [
"linuxcnc-task-motion-hal-wasm"
],
"taskHalStatus": {
"taskState": "on",
"taskMode": "auto",
"interpState": "idle",
"taskCycle": null,
"servoCycle": 330
}
}
},
{
"elapsedMs": 500,
"screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/run-preconditions-feedback/07-run-preconditions-and-feedback-500ms.png",
"canvas": {
"threeReady": "true",
"rtcpState": "off",
"executedPathPoints": 1,
"currentSegmentHighlight": "ok",
"toolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback"
},
"state": {
"profileId": "xyzac-trt",
"iniReady": true,
"iniPath": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"coordinates": "XYZAC",
"kinematicsModuleId": "xyzac-trt",
"selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc",
"taskHalSessionProgramPath": "/work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/xyzac_switchkins_test_1.ngc",
"taskHalStatusLoop": {
"apiName": "web-rtcp-5axis-task-hal-status-loop",
"active": false,
"sequence": 2,
"profileId": "xyzac-trt",
"iniPath": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"kinematicsModuleId": "xyzac-trt",
"tickCount": 4,
"batchSize": 5,
"intervalMs": 25,
"taskPeriodNs": 10000000,
"servoPeriodNs": 1000000,
"lastStatusAt": "2026-06-22T22:10:35.152Z",
"lastError": null,
"stopReason": "complete",
"semanticBoundary": "js_status_polling_loop_for_linuxcnc_task_hal_motion_status"
},
"runState": "complete",
"activeLine": 29,
"activeRowLine": 29,
"activeLineMatchesUi": true,
"droAxisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"feedbackAxisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"droMatchesFeedback": true,
"rtcpState": "off",
"kinsType": "identity",
"feedback": {
"sourceMode": "linuxcnc-task-motion-hal-wasm",
"semanticBoundary": "linuxcnc_task_motion_hal_wasm_simulation_runtime",
"line": 29,
"taskCycle": 33,
"servoCycle": 330,
"velocity": 3600,
"distanceToGo": 0
},
"feedbackHistoryLength": 5,
"feedbackHistorySourceModes": [
"linuxcnc-task-motion-hal-wasm"
],
"taskHalStatus": {
"taskState": "on",
"taskMode": "auto",
"interpState": "idle",
"taskCycle": null,
"servoCycle": 330
}
}
},
{
"elapsedMs": 1000,
"screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/run-preconditions-feedback/07-run-preconditions-and-feedback-1000ms.png",
"canvas": {
"threeReady": "true",
"rtcpState": "off",
"executedPathPoints": 1,
"currentSegmentHighlight": "ok",
"toolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback"
},
"state": {
"profileId": "xyzac-trt",
"iniReady": true,
"iniPath": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"coordinates": "XYZAC",
"kinematicsModuleId": "xyzac-trt",
"selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc",
"taskHalSessionProgramPath": "/work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/xyzac_switchkins_test_1.ngc",
"taskHalStatusLoop": {
"apiName": "web-rtcp-5axis-task-hal-status-loop",
"active": false,
"sequence": 2,
"profileId": "xyzac-trt",
"iniPath": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"kinematicsModuleId": "xyzac-trt",
"tickCount": 4,
"batchSize": 5,
"intervalMs": 25,
"taskPeriodNs": 10000000,
"servoPeriodNs": 1000000,
"lastStatusAt": "2026-06-22T22:10:35.152Z",
"lastError": null,
"stopReason": "complete",
"semanticBoundary": "js_status_polling_loop_for_linuxcnc_task_hal_motion_status"
},
"runState": "complete",
"activeLine": 29,
"activeRowLine": 29,
"activeLineMatchesUi": true,
"droAxisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"feedbackAxisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"droMatchesFeedback": true,
"rtcpState": "off",
"kinsType": "identity",
"feedback": {
"sourceMode": "linuxcnc-task-motion-hal-wasm",
"semanticBoundary": "linuxcnc_task_motion_hal_wasm_simulation_runtime",
"line": 29,
"taskCycle": 33,
"servoCycle": 330,
"velocity": 3600,
"distanceToGo": 0
},
"feedbackHistoryLength": 5,
"feedbackHistorySourceModes": [
"linuxcnc-task-motion-hal-wasm"
],
"taskHalStatus": {
"taskState": "on",
"taskMode": "auto",
"interpState": "idle",
"taskCycle": null,
"servoCycle": 330
}
}
},
{
"elapsedMs": 2000,
"screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/run-preconditions-feedback/07-run-preconditions-and-feedback-2000ms.png",
"canvas": {
"threeReady": "true",
"rtcpState": "off",
"executedPathPoints": 1,
"currentSegmentHighlight": "ok",
"toolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback"
},
"state": {
"profileId": "xyzac-trt",
"iniReady": true,
"iniPath": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"coordinates": "XYZAC",
"kinematicsModuleId": "xyzac-trt",
"selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc",
"taskHalSessionProgramPath": "/work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/xyzac_switchkins_test_1.ngc",
"taskHalStatusLoop": {
"apiName": "web-rtcp-5axis-task-hal-status-loop",
"active": false,
"sequence": 2,
"profileId": "xyzac-trt",
"iniPath": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"kinematicsModuleId": "xyzac-trt",
"tickCount": 4,
"batchSize": 5,
"intervalMs": 25,
"taskPeriodNs": 10000000,
"servoPeriodNs": 1000000,
"lastStatusAt": "2026-06-22T22:10:35.152Z",
"lastError": null,
"stopReason": "complete",
"semanticBoundary": "js_status_polling_loop_for_linuxcnc_task_hal_motion_status"
},
"runState": "complete",
"activeLine": 29,
"activeRowLine": 29,
"activeLineMatchesUi": true,
"droAxisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"feedbackAxisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"droMatchesFeedback": true,
"rtcpState": "off",
"kinsType": "identity",
"feedback": {
"sourceMode": "linuxcnc-task-motion-hal-wasm",
"semanticBoundary": "linuxcnc_task_motion_hal_wasm_simulation_runtime",
"line": 29,
"taskCycle": 33,
"servoCycle": 330,
"velocity": 3600,
"distanceToGo": 0
},
"feedbackHistoryLength": 5,
"feedbackHistorySourceModes": [
"linuxcnc-task-motion-hal-wasm"
],
"taskHalStatus": {
"taskState": "on",
"taskMode": "auto",
"interpState": "idle",
"taskCycle": null,
"servoCycle": 330
}
}
},
{
"elapsedMs": 5000,
"screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/run-preconditions-feedback/07-run-preconditions-and-feedback-5000ms.png",
"canvas": {
"threeReady": "true",
"rtcpState": "off",
"executedPathPoints": 1,
"currentSegmentHighlight": "ok",
"toolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback"
},
"state": {
"profileId": "xyzac-trt",
"iniReady": true,
"iniPath": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"coordinates": "XYZAC",
"kinematicsModuleId": "xyzac-trt",
"selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc",
"taskHalSessionProgramPath": "/work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/xyzac_switchkins_test_1.ngc",
"taskHalStatusLoop": {
"apiName": "web-rtcp-5axis-task-hal-status-loop",
"active": false,
"sequence": 2,
"profileId": "xyzac-trt",
"iniPath": "configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini",
"kinematicsModuleId": "xyzac-trt",
"tickCount": 4,
"batchSize": 5,
"intervalMs": 25,
"taskPeriodNs": 10000000,
"servoPeriodNs": 1000000,
"lastStatusAt": "2026-06-22T22:10:35.152Z",
"lastError": null,
"stopReason": "complete",
"semanticBoundary": "js_status_polling_loop_for_linuxcnc_task_hal_motion_status"
},
"runState": "complete",
"activeLine": 29,
"activeRowLine": 29,
"activeLineMatchesUi": true,
"droAxisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"feedbackAxisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"droMatchesFeedback": true,
"rtcpState": "off",
"kinsType": "identity",
"feedback": {
"sourceMode": "linuxcnc-task-motion-hal-wasm",
"semanticBoundary": "linuxcnc_task_motion_hal_wasm_simulation_runtime",
"line": 29,
"taskCycle": 33,
"servoCycle": 330,
"velocity": 3600,
"distanceToGo": 0
},
"feedbackHistoryLength": 5,
"feedbackHistorySourceModes": [
"linuxcnc-task-motion-hal-wasm"
],
"taskHalStatus": {
"taskState": "on",
"taskMode": "auto",
"interpState": "idle",
"taskCycle": null,
"servoCycle": 330
}
}
}
],
"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)"
]
}