1960 lines
65 KiB
Markdown
1960 lines
65 KiB
Markdown
# 05-验收证据
|
||
|
||
## 2026-07-07 19:03 EDT - working 全部工作收口复验证据
|
||
|
||
本轮按用户要求完成 `working` 中全部工作,并重新执行收口复验。
|
||
|
||
执行命令:
|
||
|
||
```text
|
||
node --check web-rtcp-5axis-xyzbc-trt-sim-plan/tools/compare-xyzbc-trt-evidence.mjs
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
node wasm-port/tests/wasm/node/verify_task_state_matrix.mjs
|
||
node wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
|
||
node wasm-port/tests/wasm/node/verify_task_hal_sdk.mjs
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 90
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
xyzbc_trt_web_app_smoke=ok
|
||
gmoccapy_static_build=ok
|
||
task_state_matrix=ok
|
||
linuxcnc_task_runtime_smoke=ok
|
||
linuxcnc_task_hal_sdk=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
native_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/native-xyzbc-trt-evidence.json
|
||
web_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
```
|
||
|
||
最新 evidence 摘要:
|
||
|
||
```text
|
||
native.status=ok
|
||
native.collectedAt=2026-07-07T19:03:34-0400
|
||
web.status=ready-for-wasm-runtime
|
||
web.collectedAt=2026-07-07T23:03:42.947Z
|
||
web.blockers=[]
|
||
|
||
compare.status=pass
|
||
compare.comparedAt=2026-07-07T23:03:43.547Z
|
||
surfaceSummary.checkCount=60
|
||
surfaceSummary.passCount=60
|
||
surfaceSummary.failCount=0
|
||
functionalSummary.status=pass
|
||
functionalSummary.checkCount=8
|
||
functionalSummary.passCount=8
|
||
functionalSummary.failCount=0
|
||
functionalSummary.requiredImprovements=[]
|
||
compare.requiredImprovements=[]
|
||
```
|
||
|
||
结论:本轮收口复验通过。`working` 中当前任务 T-001 到 T-080 均已完成,未发现新增缺失功能、fail、blocker 或 required improvement。
|
||
|
||
## 2026-07-07 18:57 EDT - AXIS C++ 功能级 compare 硬验收证据
|
||
|
||
本轮按 20/21 号文档补齐 compare 功能级硬验收,避免仅凭旧 `60/60 pass` 宣称真实通过。
|
||
|
||
关键实现证据:
|
||
|
||
```text
|
||
tools/compare-xyzbc-trt-evidence.mjs
|
||
working/evidence/web-xyzbc-trt-evidence.json
|
||
working/evidence/compare-xyzbc-trt-evidence.json
|
||
```
|
||
|
||
执行命令:
|
||
|
||
```text
|
||
node --check web-rtcp-5axis-xyzbc-trt-sim-plan/tools/compare-xyzbc-trt-evidence.mjs
|
||
node wasm-port/tests/wasm/node/verify_task_state_matrix.mjs
|
||
node wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
|
||
node wasm-port/tests/wasm/node/verify_task_hal_sdk.mjs
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
task_state_matrix=ok
|
||
linuxcnc_task_runtime_smoke=ok
|
||
pause_freezes_motion_queue=ok
|
||
resume_restores_interp_resume_state=ok
|
||
step_returns_to_paused=ok
|
||
linuxcnc_task_hal_sdk=ok
|
||
xyzbc_trt_web_app_smoke=ok
|
||
gmoccapy_static_build=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
compare_xyzbc_trt_status=pass
|
||
```
|
||
|
||
最新 compare 摘要:
|
||
|
||
```text
|
||
web.collectedAt=2026-07-07T22:56:59.101Z
|
||
compare.comparedAt=2026-07-07T22:56:59.718Z
|
||
compare.status=pass
|
||
|
||
surfaceSummary.checkCount=60
|
||
surfaceSummary.passCount=60
|
||
surfaceSummary.failCount=0
|
||
|
||
functionalSummary.status=pass
|
||
functionalSummary.checkCount=8
|
||
functionalSummary.passCount=8
|
||
functionalSummary.failCount=0
|
||
functionalSummary.requiredImprovements=[]
|
||
```
|
||
|
||
功能级硬检查:
|
||
|
||
```text
|
||
cppTaskStateMachineParity=pass
|
||
cppModeGateParity=pass
|
||
cppHomingParity=pass
|
||
cppRunGateParity=pass
|
||
cppPauseResumeParity=pass
|
||
cppStepParity=pass
|
||
illegalCommandParity=pass
|
||
realProgramExecutionParity=pass
|
||
```
|
||
|
||
结论:20/21 号文档要求的 `surfaceSummary` 与 `functionalSummary` 已进入 compare JSON;本轮表面检查和功能级硬检查均通过,允许结论写为“真实通过”。
|
||
|
||
## 2026-07-07 18:18 EDT - AXIS 主控制按钮状态链路收敛证据
|
||
|
||
本轮按 `working/18-20260707-AXIS主控制按钮调用链与Web完善指南.md` 完成主控制按钮状态链路收敛,覆盖:
|
||
|
||
```text
|
||
ESTOP / RESET
|
||
Power ON / OFF
|
||
Home All
|
||
Run
|
||
Pause / Resume
|
||
Step
|
||
Task/HAL status -> Web policy/store 回写
|
||
Web evidence -> compare
|
||
```
|
||
|
||
关键实现证据:
|
||
|
||
```text
|
||
app/src/state/linuxcnc-task-policy.js
|
||
app/src/state/store.js
|
||
app/src/runtime/linuxcnc-task-hal-runtime.js
|
||
wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
|
||
tools/collect-web-xyzbc-trt-evidence.mjs
|
||
tests/node/verify_xyzbc_trt_web_app.mjs
|
||
tests/browser/xyzbc_trt_browser_smoke.html
|
||
wasm-port/tests/wasm/node/verify_task_state_matrix.mjs
|
||
```
|
||
|
||
执行命令:
|
||
|
||
```text
|
||
source /home/mes123456/emsdk/emsdk_env.sh && wasm-port/tools/build_task_hal_wasm.sh
|
||
node --check web-rtcp-5axis-xyzbc-trt-sim-plan/app/src/state/store.js
|
||
node --check web-rtcp-5axis-xyzbc-trt-sim-plan/app/src/state/linuxcnc-task-policy.js
|
||
node --check web-rtcp-5axis-xyzbc-trt-sim-plan/app/src/runtime/linuxcnc-task-hal-runtime.js
|
||
node --check web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-web-xyzbc-trt-evidence.mjs
|
||
|
||
node wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
|
||
node wasm-port/tests/wasm/node/verify_task_state_matrix.mjs
|
||
node wasm-port/tests/wasm/node/verify_task_hal_sdk.mjs
|
||
|
||
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_run_feedback_loop.mjs
|
||
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_run_preconditions.mjs
|
||
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_linuxcnc_task_hal_runtime.mjs
|
||
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_gmoccapy_xyzab_gates.mjs
|
||
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_rtcp_store.mjs
|
||
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_impeller_feed_task_hal_run.mjs
|
||
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
linuxcnc_task_hal_wasm_build=ok
|
||
linuxcnc_task_runtime_smoke=ok
|
||
task_state_matrix=ok
|
||
linuxcnc_task_hal_sdk=ok
|
||
run_feedback_status_loop_smoke=ok
|
||
run_preconditions_ini_profile_smoke=ok
|
||
linuxcnc_task_hal_runtime_smoke=ok
|
||
gmoccapy_xyzab_gates_smoke=ok
|
||
rtcp_store_smoke=ok
|
||
impeller_feed_task_hal_run=ok
|
||
gmoccapy_static_build=ok
|
||
xyzbc_trt_web_app_smoke=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
web_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/compare-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
```
|
||
|
||
最新 evidence 摘要:
|
||
|
||
```text
|
||
web.status=ready-for-wasm-runtime
|
||
web.collectedAt=2026-07-07T22:17:57.900Z
|
||
web.executionPath.sampleCount=228
|
||
web.executionPath.status=ok
|
||
web.basicSimEquivalent.ready=true
|
||
web.taskHalEquivalence.ready=true
|
||
web.axisMainUi.ready=true
|
||
web.blockers=[]
|
||
|
||
compare.status=pass
|
||
compare.comparedAt=2026-07-07T22:17:58.519Z
|
||
compare.summary.checkCount=60
|
||
compare.summary.passCount=60
|
||
compare.summary.failCount=0
|
||
compare.summary.blockers=[]
|
||
compare.summary.nativeStatus=ok
|
||
compare.summary.webStatus=ready-for-wasm-runtime
|
||
compare.requiredImprovements=[]
|
||
```
|
||
|
||
结论:AXIS 主控制按钮状态链路收敛完成。Web 主控制按钮不再依赖单一 `runState` 判断,而是由 LinuxCNC task/motion/home 状态事实驱动;当前 compare 仍为 `60/60 pass`。
|
||
|
||
## 2026-07-05 18:57 EDT - Pause 按钮 LinuxCNC AXIS 对标修复证据
|
||
|
||
本轮按用户要求,以 `/home/mes123456/cnc_wams/linuxcnc` 源程序中的 AXIS 行为严格对标 Pause。
|
||
|
||
LinuxCNC 对标来源:
|
||
|
||
```text
|
||
/home/mes123456/cnc_wams/linuxcnc/share/axis/tcl/axis.tcl
|
||
/home/mes123456/cnc_wams/linuxcnc/src/emc/usr_intf/axis/scripts/axis.py
|
||
```
|
||
|
||
关键源码事实:
|
||
|
||
```text
|
||
axis.tcl: .toolbar.program_pause -command task_pauseresume
|
||
axis.py: task_pause -> c.auto(linuxcnc.AUTO_PAUSE)
|
||
axis.py: task_resume -> c.auto(linuxcnc.AUTO_RESUME)
|
||
axis.py: task_pauseresume -> paused 时 AUTO_RESUME,否则 interpreter 非 idle 时 AUTO_PAUSE
|
||
```
|
||
|
||
执行命令:
|
||
|
||
```text
|
||
node --check web-rtcp-5axis-xyzbc-trt-sim-plan/app/src/state/store.js
|
||
node --check web-rtcp-5axis-xyzbc-trt-sim-plan/app/src/state/linuxcnc-task-policy.js
|
||
node --check web-rtcp-5axis-xyzbc-trt-sim-plan/app/src/ui/axis-shell.js
|
||
node --check web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_xyzbc_trt_web_app.mjs
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 90
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
xyzbc_trt_web_app_smoke=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
gmoccapy_static_build=ok
|
||
web_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json
|
||
native_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/native-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/compare-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
```
|
||
|
||
最新 compare 摘要:
|
||
|
||
```text
|
||
compare.status=pass
|
||
compare.comparedAt=2026-07-05T22:57:05.625Z
|
||
compare.summary.checkCount=60
|
||
compare.summary.passCount=60
|
||
compare.summary.failCount=0
|
||
compare.summary.blockers=[]
|
||
compare.requiredImprovements=[]
|
||
```
|
||
|
||
结论:Pause 按钮已恢复为 LinuxCNC AXIS 工具栏 `task_pauseresume` 语义,并通过 Node、浏览器、构建和 native/Web compare 复验。
|
||
|
||
## 2026-07-05 18:18 EDT - 按 working 完成全部任务复验证据
|
||
|
||
本轮按 `working` 文档继续执行,确认任务矩阵中 T-001 到 T-077 的完成状态仍可通过当前证据链复现。
|
||
|
||
执行命令:
|
||
|
||
```text
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 90
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
web_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json
|
||
native_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/native-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/compare-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
xyzbc_trt_web_app_smoke=ok
|
||
gmoccapy_static_build=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
```
|
||
|
||
最新 evidence 摘要:
|
||
|
||
```text
|
||
native.status=ok
|
||
native.collectedAt=2026-07-05T18:17:15-0400
|
||
native.coverage=35/35
|
||
native.executionMode=auto-run
|
||
|
||
web.status=ready-for-wasm-runtime
|
||
web.collectedAt=2026-07-05T22:17:16.154Z
|
||
web.coverage=49/49
|
||
web.blockers=[]
|
||
|
||
compare.status=pass
|
||
compare.comparedAt=2026-07-05T22:17:25.931Z
|
||
compare.summary.checkCount=60
|
||
compare.summary.passCount=60
|
||
compare.summary.failCount=0
|
||
compare.summary.blockers=[]
|
||
compare.requiredImprovements=[]
|
||
```
|
||
|
||
结论:本轮按 `working` 文档执行的全量复验通过。当前没有新增缺失功能、fail、blocker 或 required improvement,T-001 到 T-077 仍为完成状态。
|
||
|
||
## 2026-07-05 18:08 EDT - 完全对标复验与文档修订证据
|
||
|
||
本轮按用户要求,对 Web 仿真系统除硬件相关外的全部仿真功能重新执行 LinuxCNC `xyzbc-trt` native/Web/compare/build/smoke 复验。native 权威源为:
|
||
|
||
```text
|
||
/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
|
||
```
|
||
|
||
执行命令:
|
||
|
||
```text
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 90
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
web_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json
|
||
native_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/native-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/compare-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
xyzbc_trt_web_app_smoke=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
gmoccapy_static_build=ok
|
||
```
|
||
|
||
最新 evidence 摘要:
|
||
|
||
```text
|
||
native.status=ok
|
||
native.collectedAt=2026-07-05T18:07:01-0400
|
||
native.coverage=35/35
|
||
native.previewPath.sampleCount=1300
|
||
native.executionPath.sampleCount=4
|
||
native.semanticExecutionPath.sampleCount=1300
|
||
native.lineExecutionTrace=64
|
||
native.axisValuesByLine=29
|
||
|
||
web.status=ready-for-wasm-runtime
|
||
web.collectedAt=2026-07-05T22:06:45.346Z
|
||
web.coverage=49/49
|
||
web.previewPath.sampleCount=1300
|
||
web.executionPath.sampleCount=228
|
||
web.semanticExecutionPath.sampleCount=1300
|
||
web.lineExecutionTrace=64
|
||
web.axisValuesByLine=29
|
||
web.blockers=[]
|
||
|
||
compare.status=pass
|
||
compare.comparedAt=2026-07-05T22:07:13.768Z
|
||
compare.summary.checkCount=60
|
||
compare.summary.passCount=60
|
||
compare.summary.failCount=0
|
||
compare.summary.blockers=[]
|
||
compare.requiredImprovements=[]
|
||
```
|
||
|
||
关键路径和执行过程对比:
|
||
|
||
```text
|
||
semanticExecutionVsSemanticExecution.status=pass
|
||
nativeSampleCount=1300
|
||
webSampleCount=1300
|
||
samplePeriodMs=50
|
||
maxTcpErrorMm=3.552713678800501e-15
|
||
rmsTcpErrorMm=4.515420281608176e-16
|
||
maxJointError=3.552713678800501e-15
|
||
maxToolAxisAngleDeg=0
|
||
machineStateMismatchCount=0
|
||
sampleCountDelta=0
|
||
|
||
lineExecutionComparison.status=pass
|
||
axisValuesByLineComparison.status=pass
|
||
gcodeExecutionProcessComparison.status=pass
|
||
```
|
||
|
||
结论:本轮完全对标复验通过。除实体硬件 I/O 和物理设备接入外,当前 Web 仿真项目在源码、配置、运行、UI、HAL/task、Vismach 等效、路径、G 代码执行过程、错误路径和证据链范围内未发现新增缺失功能。
|
||
|
||
## 2026-07-04 18:22 EDT - P-002 强制复验证据
|
||
|
||
本轮按 `working/12-20260704-真实执行复验与缺失功能工作计划.md` 的 P-002 规则,重新执行当前工作区的 native/Web/compare/smoke 复验。
|
||
|
||
执行命令:
|
||
|
||
```text
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 90
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
web_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json
|
||
native_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/native-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/compare-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
xyzbc_trt_web_app_smoke=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
```
|
||
|
||
最新 compare 摘要:
|
||
|
||
```text
|
||
status=pass
|
||
checkCount=60
|
||
passCount=60
|
||
failCount=0
|
||
blockers=[]
|
||
requiredImprovements=[]
|
||
nativeStatus=ok
|
||
webStatus=ready-for-wasm-runtime
|
||
```
|
||
|
||
结论:P-002 强制复验通过。当前没有新增缺失功能、fail、blocker 或 required improvement。
|
||
|
||
## 2026-07-04 18:12 EDT - 真实执行复验与缺失功能分析证据
|
||
|
||
本轮按用户要求重新真实执行 native LinuxCNC 与 Web 仿真项目,并重新生成 compare。
|
||
|
||
执行命令:
|
||
|
||
```text
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 90
|
||
npm --prefix /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
npm --prefix /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
native_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/native-xyzbc-trt-evidence.json
|
||
web_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json
|
||
xyzbc_trt_web_app_smoke=ok
|
||
compare_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/compare-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
xyzbc_trt_browser_smoke=ok
|
||
```
|
||
|
||
最新 compare 摘要:
|
||
|
||
```text
|
||
status=pass
|
||
checkCount=60
|
||
passCount=60
|
||
failCount=0
|
||
blockers=[]
|
||
nativeStatus=ok
|
||
webStatus=ready-for-wasm-runtime
|
||
```
|
||
|
||
关键对比数据:
|
||
|
||
```text
|
||
semanticExecutionVsSemanticExecution.status=pass
|
||
nativeSampleCount=1300
|
||
webSampleCount=1300
|
||
maxTcpErrorMm=3.552713678800501e-15
|
||
maxJointError=3.552713678800501e-15
|
||
maxToolAxisAngleDeg=0
|
||
machineStateMismatchCount=0
|
||
|
||
lineExecutionComparison.status=pass
|
||
nativeTraceCount=64
|
||
webTraceCount=64
|
||
mismatchCount=0
|
||
|
||
axisValuesByLineComparison.status=pass
|
||
nativeLineValueCount=29
|
||
webLineValueCount=29
|
||
maxTcpErrorMm=0
|
||
maxJointError=0
|
||
maxToolAxisAngleDeg=0
|
||
mismatchCount=0
|
||
|
||
gcodeExecutionProcessComparison.status=pass
|
||
nativeExecutionStepCount=128
|
||
webExecutionStepCount=128
|
||
nativeSourceLineCoverageCount=65
|
||
webSourceLineCoverageCount=65
|
||
mismatchCount=0
|
||
```
|
||
|
||
结论:本轮真实执行复验未发现新增缺失功能。缺失功能分析和后续工作计划已写入 `working/12-20260704-真实执行复验与缺失功能工作计划.md`。
|
||
|
||
## 2026-07-04 17:57 EDT - T-051 到 T-075 源码/运行双基线复验证据
|
||
|
||
本轮重新生成:
|
||
|
||
```text
|
||
working/evidence/native-xyzbc-trt-evidence.json
|
||
working/evidence/web-xyzbc-trt-evidence.json
|
||
working/evidence/compare-xyzbc-trt-evidence.json
|
||
```
|
||
|
||
执行命令:
|
||
|
||
```text
|
||
python3 -m py_compile web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py
|
||
node --check web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-web-xyzbc-trt-evidence.mjs
|
||
node --check web-rtcp-5axis-xyzbc-trt-sim-plan/tools/compare-xyzbc-trt-evidence.mjs
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 80
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
native_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/native-xyzbc-trt-evidence.json
|
||
web_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/compare-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
xyzbc_trt_web_app_smoke=ok
|
||
gmoccapy_static_build=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
```
|
||
|
||
最新 compare 摘要:
|
||
|
||
```text
|
||
status=pass
|
||
checkCount=60
|
||
passCount=60
|
||
failCount=0
|
||
blockers=[]
|
||
nativeStatus=ok
|
||
webStatus=ready-for-wasm-runtime
|
||
```
|
||
|
||
新增严格对标检查均通过:
|
||
|
||
```text
|
||
sourceManifestComparison=pass
|
||
runtimeLaunchComparison=pass
|
||
iniFullComparison=pass
|
||
halGraphComparison=pass
|
||
kinematicsFormulaComparison=pass
|
||
remapSemanticsComparison=pass
|
||
pyvcpPostguiComparison=pass
|
||
axisUiBehaviorComparison=pass
|
||
visualComparison=pass
|
||
servoTaskTimingComparison=pass
|
||
runtimeExecutionComparison=pass
|
||
webStagingHashComparison=pass
|
||
wasmSourceBindingComparison=pass
|
||
taskHalFullStateComparison=pass
|
||
limitInterlocksComparison=pass
|
||
toolParameterComparison=pass
|
||
programCorpusComparison=pass
|
||
nativeWebVisualComparison=pass
|
||
errorPathComparison=pass
|
||
dualBaselineComparison=pass
|
||
evidenceClassificationComparison=pass
|
||
rerunEntryComparison=pass
|
||
reverseSourceIndexComparison=pass
|
||
performanceBudgetComparison=pass
|
||
strictAcceptanceComparison=pass
|
||
```
|
||
|
||
结论:T-051 到 T-075 已从“待实现”升级为“完成”。当前严格完整对标以最新 native/Web/compare JSON 为准;历史 fail 记录仍保留为推进过程档案。
|
||
|
||
## 2026-07-03 锥形刀尖与刀杆方向一致性验收
|
||
|
||
### 新增截图证据
|
||
|
||
```text
|
||
working/screenshots/web-tool-tip-axis-fixed-20260703T080358Z/running-helix-tool-tip-axis-fixed-full.png
|
||
working/screenshots/web-tool-tip-axis-fixed-20260703T080358Z/running-helix-tool-tip-axis-fixed-canvas.png
|
||
working/screenshots/web-tool-tip-axis-fixed-20260703T080358Z/manifest.json
|
||
```
|
||
|
||
### 关键断言
|
||
|
||
```text
|
||
toolAxisVector = { x: 0.24184476264797528, y: 0.24184476264797522, z: 0.9396926207859084 }
|
||
threeToolAxis = { x: 0.242, y: 0.242, z: 0.94 }
|
||
threeToolGlyphAxis = { x: 0.242, y: 0.242, z: 0.94 }
|
||
programUiExecution.sourceFile = helix_bc.ngc
|
||
programUiExecution.line = 17
|
||
programUiExecution.operation = feed-helix
|
||
```
|
||
|
||
### 验证命令
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
```
|
||
|
||
### 结果
|
||
|
||
```text
|
||
gmoccapy_static_build=ok
|
||
xyzbc_trt_web_app_smoke=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
```
|
||
|
||
结论:刀具几何已改为锥形刀尖和刀杆共用同一本地 `+Z` 刀轴,再由 `toolAxisVector` 统一定向。Browser smoke 已增加 `threeToolGlyphAxis` 与实时 `toolAxisVector` 的一致性检查。
|
||
|
||
## 2026-07-03 真实 G 代码过程截图补充验收
|
||
|
||
### 新增截图证据
|
||
|
||
```text
|
||
working/screenshots/web-simulation-real-gcode-process-20260703T074714Z/000-loaded-real-source-full.png
|
||
working/screenshots/web-simulation-real-gcode-process-20260703T074714Z/001-loaded-real-source-program.png
|
||
working/screenshots/web-simulation-real-gcode-process-20260703T074714Z/010-running-helix-feed-full.png
|
||
working/screenshots/web-simulation-real-gcode-process-20260703T074714Z/011-running-helix-feed-program.png
|
||
working/screenshots/web-simulation-real-gcode-process-20260703T074714Z/012-running-process-monitor.png
|
||
working/screenshots/web-simulation-real-gcode-process-20260703T074714Z/manifest.json
|
||
```
|
||
|
||
### 图片分析结论
|
||
|
||
- `011-running-helix-feed-program.png` 明确显示当前执行源行为 `helix_bc.ngc:17`,语句为 `f#<frate> g2i#<r>z#<zmin> p#<n>`,operation 为 `feed-helix`。
|
||
- 画面中同时显示主程序入口 `xyzbc_switchkins.ngc:2 o<xyzbc_switchkins_sub> call [10] [5] [10][1000][3][0][20][45][20]`,以及展开后的 `helix_bc.ngc:15-19` 执行窗口。
|
||
- 当前姿态为 `B20.000 C45.000`,TCP/Joint 坐标同步,Tool axis 为 `I0.242 J0.242 K0.940`,Feed 为 `1000.0 mm/min cutting`。
|
||
- manifest 记录 `executionStepCount=128`、`motionStepCount=29`、`parameterAssignmentStepCount=41`、`samplePeriodMs=50`、`sampleIndex=55/1300`。
|
||
|
||
### 验证命令
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
```
|
||
|
||
### 结果
|
||
|
||
```text
|
||
gmoccapy_static_build=ok
|
||
xyzbc_trt_web_app_smoke=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
```
|
||
|
||
结论:截图不再只是显示主程序三行文本,而是能在程序区直接看到真实 G 代码展开、调用栈、当前执行步骤、机床姿态、刀轴方向、切削进给和最近执行步骤。
|
||
|
||
## 2026-07-03 截图真实执行过程 UI 验收
|
||
|
||
### 命令
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
```
|
||
|
||
### 结果
|
||
|
||
```text
|
||
xyzbc_trt_web_app_smoke=ok
|
||
gmoccapy_static_build=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
web_xyzbc_trt_evidence=.../working/evidence/web-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
```
|
||
|
||
### 关键断言
|
||
|
||
```text
|
||
programAxisPreviewPath.samples[0].sourceFile = xyzbc_switchkins_sub.ngc
|
||
programAxisPreviewPath.samples[0].statement 包含 g53 g0
|
||
programUiExecution.source = programAxisPreviewPath.samples
|
||
programUiExecution.samplePeriodMs = 50
|
||
programUiExecution.sourceFile = programRuntimeFeedback.sourceFile
|
||
programUiExecution.line = programRuntimeFeedback.line
|
||
linuxCncProcessMonitor.path.uiExecution.sourceFile = programUiExecution.sourceFile
|
||
linuxCncProcessMonitor.path.activeGcode = programUiExecution.statement
|
||
state.toolAxisVector = programUiExecution.toolAxis.i/j/k
|
||
canvas.data-three-tool-axis = state.toolAxisVector
|
||
program pane dataset liveSourceFile/liveSampleIndex = state.programUiExecution
|
||
process monitor dataset liveSourceFile/liveSourceLine = state.programUiExecution
|
||
```
|
||
|
||
结论:
|
||
|
||
- 截图页面中的程序区和监控区现在能直接呈现真实展开 G 代码执行过程。
|
||
- 刀具实时位置、已执行路径、刀头方向和刀杆方向均由同一个 50ms 样本派生。
|
||
- browser smoke 已覆盖页面 DOM、state 和 canvas dataset 的一致性。
|
||
|
||
## 2026-07-02 23:50 EDT working 复核验收
|
||
|
||
### 命令
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
python3 -m py_compile web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 80
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
```
|
||
|
||
### 结果
|
||
|
||
```text
|
||
xyzbc_trt_web_app_smoke=ok
|
||
py_compile=ok
|
||
web_xyzbc_trt_evidence=.../working/evidence/web-xyzbc-trt-evidence.json
|
||
native_xyzbc_trt_evidence=.../working/evidence/native-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
gmoccapy_static_build=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
```
|
||
|
||
### JSON 摘要
|
||
|
||
```text
|
||
native.status = ok
|
||
web.status = ready-for-wasm-runtime
|
||
compare.status = pass
|
||
compare.summary.checkCount = 35
|
||
compare.summary.passCount = 35
|
||
compare.summary.failCount = 0
|
||
compare.summary.blockers = []
|
||
|
||
native.pathSampling.samplePeriodMs = 50
|
||
web.pathSampling.samplePeriodMs = 50
|
||
native.previewPath.sampleCount = 1300
|
||
web.previewPath.sampleCount = 1300
|
||
native.semanticExecutionPath.sampleCount = 1300
|
||
web.semanticExecutionPath.sampleCount = 1300
|
||
|
||
semanticExecution.machineStateMismatchCount = 0
|
||
semanticExecution.maxTcpErrorMm = 3.552713678800501e-15
|
||
semanticExecution.maxJointError = 3.552713678800501e-15
|
||
semanticExecution.maxToolAxisAngleDeg = 0
|
||
|
||
lineExecution.nativeTraceCount = 64
|
||
lineExecution.webTraceCount = 64
|
||
lineExecution.mismatchCount = 0
|
||
|
||
axisValues.nativeLineValueCount = 29
|
||
axisValues.webLineValueCount = 29
|
||
axisValues.mismatchCount = 0
|
||
|
||
gcodeExecutionProcess.nativeExecutionStepCount = 128
|
||
gcodeExecutionProcess.webExecutionStepCount = 128
|
||
gcodeExecutionProcess.nativeSourceLineCoverageCount = 65
|
||
gcodeExecutionProcess.webSourceLineCoverageCount = 65
|
||
gcodeExecutionProcess.mismatchCount = 0
|
||
```
|
||
|
||
结论:
|
||
|
||
- 当前最新证据以 50ms 采样周期记录 native/Web 预览路径、runtime 执行反馈路径和源程序语义执行路径。
|
||
- native/Web `semanticExecutionPath` 样本数量均为 1300,运行状态字段逐样本硬比较 mismatch 为 0。
|
||
- 逐行 G 代码执行、每行轴值和完整 G 代码执行过程 JSON 全部同构,compare 为 `35/35 pass`。
|
||
- 本文件中较早的 `fail` 记录为历史推进过程,不代表当前验收状态;当前状态以本节和 `working/evidence/compare-xyzbc-trt-evidence.json` 为准。
|
||
|
||
## 运行状态字段补强验收
|
||
|
||
### 命令
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
python3 -m py_compile web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 80
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
```
|
||
|
||
### 结果
|
||
|
||
```text
|
||
xyzbc_trt_web_app_smoke=ok
|
||
py_compile=ok
|
||
web_xyzbc_trt_evidence=.../working/evidence/web-xyzbc-trt-evidence.json
|
||
native_xyzbc_trt_evidence=.../working/evidence/native-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
gmoccapy_static_build=ok
|
||
```
|
||
|
||
### JSON 摘要
|
||
|
||
```text
|
||
native.status = ok
|
||
web.status = ready-for-wasm-runtime
|
||
compare.status = pass
|
||
compare.summary.passCount = 35/35
|
||
native.pathSampling.samplePeriodMs = 50
|
||
web.pathSampling.samplePeriodMs = 50
|
||
native.semanticExecutionPath.sampleCount = 1300
|
||
web.semanticExecutionPath.sampleCount = 1300
|
||
compare.pathComparison.semanticExecutionVsSemanticExecution.machineStateMismatchCount = 0
|
||
compare.gcodeExecutionProcessComparison.mismatchCount = 0
|
||
|
||
arc.machineState.cutting.active = true
|
||
arc.machineState.cutting.cuttingSpeedMmPerMin = 1000
|
||
arc.machineState.feed.programmedMmPerMin = 1000
|
||
arc.machineState.feed.actualMmPerMin = 1000
|
||
arc.machineState.feed.overridePercent = 100
|
||
arc.machineState.tool.id = 2
|
||
arc.machineState.tool.pocket = 2
|
||
arc.machineState.tool.length = 10
|
||
arc.machineState.tool.diameter = 8
|
||
arc.machineState.coolant.mist = false
|
||
arc.machineState.coolant.flood = false
|
||
```
|
||
|
||
结论:
|
||
|
||
- native/Web 50ms 语义执行样本数量完全一致,均为 1300。
|
||
- 每个样本除原有 `sampleIndex`、`timeMs`、`line`、`motionType`、`activeKinematics`、`tool`、`joint`、`tcp`、`toolAxis`、`feed`、`spindle` 外,新增同构 `machineState`。
|
||
- `machineState` 覆盖主轴转速、方向、进给、切削速度、当前刀具、换刀状态、冷却状态;逐行轴值与完整执行步骤也记录该状态。
|
||
- compare 已把 `machineState` 纳入逐样本、逐行轴值、完整 G 代码执行过程的 native/Web 硬比较,当前 mismatch 为 0。
|
||
|
||
## 50ms G 代码执行过程同步验收
|
||
|
||
### 命令
|
||
|
||
```bash
|
||
python3 -m py_compile web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 80
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
```
|
||
|
||
### 结果
|
||
|
||
```text
|
||
py_compile=ok
|
||
native_xyzbc_trt_evidence=.../working/evidence/native-xyzbc-trt-evidence.json
|
||
web_xyzbc_trt_evidence=.../working/evidence/web-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
xyzbc_trt_web_app_smoke=ok
|
||
gmoccapy_static_build=ok
|
||
```
|
||
|
||
### JSON 摘要
|
||
|
||
```text
|
||
native.pathSampling.samplePeriodMs = 50
|
||
native.previewPath.samplePeriodMs = 50
|
||
native.previewPath.sampleCount = 1300
|
||
native.executionPath.samplePeriodMs = 50
|
||
native.executionPath.sampleCount = 4
|
||
native.executionPath.taskHal.completed = true
|
||
native.semanticExecutionPath.samplePeriodMs = 50
|
||
native.semanticExecutionPath.sampleCount = 1300
|
||
|
||
web.pathSampling.samplePeriodMs = 50
|
||
web.previewPath.samplePeriodMs = 50
|
||
web.previewPath.sampleCount = 1300
|
||
web.executionPath.samplePeriodMs = 50
|
||
web.executionPath.sampleCount = 228
|
||
web.executionPath.taskHal.completed = true
|
||
web.semanticExecutionPath.samplePeriodMs = 50
|
||
web.semanticExecutionPath.sampleCount = 1300
|
||
|
||
lineExecution.nativeTraceCount = 64
|
||
lineExecution.webTraceCount = 64
|
||
axisValues.nativeLineValueCount = 29
|
||
axisValues.webLineValueCount = 29
|
||
gcodeExecutionProcess.nativeExecutionStepCount = 128
|
||
gcodeExecutionProcess.webExecutionStepCount = 128
|
||
gcodeExecutionProcess.nativeSourceLineCoverageCount = 65
|
||
gcodeExecutionProcess.webSourceLineCoverageCount = 65
|
||
|
||
compare.summary.checkCount = 35
|
||
compare.summary.passCount = 35
|
||
compare.summary.failCount = 0
|
||
compare.summary.blockers = []
|
||
compare.pathComparison.samplePeriodMs = 50
|
||
compare.lineExecutionComparison.status = pass
|
||
compare.axisValuesByLineComparison.status = pass
|
||
compare.gcodeExecutionProcessComparison.status = pass
|
||
```
|
||
|
||
结论:
|
||
|
||
- 当前 native/Web 刀具预览路径、runtime 执行反馈路径和源程序语义执行路径均统一为 50ms 采样周期。
|
||
- 每个样本继续记录 `sampleIndex`、`timeMs`、`line`、`motionType`、`activeKinematics`、`tool`、`joint`、`tcp`、`toolAxis`、`feed`、`spindle`。
|
||
- 完整 G 代码执行过程 JSON 继续覆盖源行、动态执行步骤、参数赋值、switchkins、G10 偏置、运动起止轴值、TCP、toolAxis、进给和最终状态,native/Web compare 全部通过。
|
||
|
||
## native/Web 全量闭环最终验收
|
||
|
||
### 2026-07-02 15:45 EDT 复核补充
|
||
|
||
本轮修正 native evidence 采集器,使以下命令在没有预先运行 `xyzbc-trt` LinuxCNC 实例时也可直接重现:
|
||
|
||
```bash
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 80
|
||
```
|
||
|
||
验证结果:
|
||
|
||
```text
|
||
native_xyzbc_trt_evidence=.../working/evidence/native-xyzbc-trt-evidence.json
|
||
native.status = ok
|
||
native.linuxcncRuntime.startup.startedByCollector = true
|
||
native.previewPath.sampleCount = 3226
|
||
native.executionPath.sampleCount = 7
|
||
native.executionPath.taskHal.completed = true
|
||
compare.summary.checkCount = 29
|
||
compare.summary.passCount = 29
|
||
compare.summary.failCount = 0
|
||
compare.summary.blockers = []
|
||
```
|
||
|
||
随后重新执行 `smoke:node`、`evidence:web`、`evidence:compare`、`build`、`smoke:browser` 均通过。
|
||
|
||
### 命令
|
||
|
||
```bash
|
||
python3 -m py_compile web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 80
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
```
|
||
|
||
### 结果
|
||
|
||
```text
|
||
py_compile=ok
|
||
xyzbc_trt_web_app_smoke=ok
|
||
web_xyzbc_trt_evidence=.../working/evidence/web-xyzbc-trt-evidence.json
|
||
native_xyzbc_trt_evidence=.../working/evidence/native-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=pass
|
||
gmoccapy_static_build=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
```
|
||
|
||
### JSON 摘要
|
||
|
||
```text
|
||
native.previewPath.samplePeriodMs = 50
|
||
native.previewPath.sampleCount = 1300
|
||
native.executionPath.samplePeriodMs = 50
|
||
native.executionPath.sampleCount = 4
|
||
native.executionPath.taskHal.completed = true
|
||
native.basicSimEquivalent.ready = true
|
||
native.taskStateFlow.ready = true
|
||
|
||
web.previewPath.samplePeriodMs = 50
|
||
web.previewPath.sampleCount = 1300
|
||
web.executionPath.samplePeriodMs = 50
|
||
web.executionPath.sampleCount = 228
|
||
web.executionPath.taskHal.completed = true
|
||
web.basicSimEquivalent.ready = true
|
||
web.ngcguiExecution.ready = true
|
||
web.nativeStateFlowReview.ready = true
|
||
|
||
compare.summary.checkCount = 35
|
||
compare.summary.passCount = 35
|
||
compare.summary.failCount = 0
|
||
compare.summary.blockers = []
|
||
compare.pathComparison.previewVsPreview.comparable = true
|
||
compare.pathComparison.executionVsExecution.comparable = true
|
||
compare.pathComparison.previewVsExecutionNative.comparable = true
|
||
compare.pathComparison.previewVsExecutionWeb.comparable = true
|
||
```
|
||
|
||
结论:
|
||
|
||
- native/Web 刀具预览路径和执行路径均使用 50ms 采样周期,compare 已进入可比误差统计。
|
||
- native/Web basic_sim 等效、Ngcgui/remap 子程序执行、TRAJ/AXIS/JOINT 限制、HAL pin、按钮联锁和状态流复核均已纳入证据并通过 compare。
|
||
- `04-任务矩阵.md` 中 T-001 到 T-040 均为完成。
|
||
|
||
## Web OPFS 与 AXIS 首屏等效验收
|
||
|
||
### 命令
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
```
|
||
|
||
### 结果
|
||
|
||
```text
|
||
xyzbc_trt_web_app_smoke=ok
|
||
gmoccapy_static_build=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
web_xyzbc_trt_evidence=.../working/evidence/web-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=fail fail_count=5
|
||
```
|
||
|
||
### 浏览器 OPFS 断言
|
||
|
||
```text
|
||
machineFileSeedReady.save.storageMode = opfs
|
||
machineFileStaging.storageMode = opfs
|
||
machineFileStaging.storageCapability.opfsAvailable = true
|
||
OPFS readback xyzbc_switchkins.ngc contains M428/M429
|
||
saveSession().storageMode = opfs
|
||
OPFS readback session contains "machineProfile": "xyzbc-trt"
|
||
saveToolDb().storageMode = opfs
|
||
OPFS readback tool table contains T2 and Z10
|
||
```
|
||
|
||
### AXIS 首屏证据
|
||
|
||
```text
|
||
web.axisMainUi.ready = true
|
||
web.axisMainUi.profileId = xyzbc-trt
|
||
web.axisMainUi.coordinates = XYZBC
|
||
web.axisMainUi.missingCapabilities = []
|
||
web.coverage.axisMainUiEquivalent = true
|
||
compare.summary.passCount = 20
|
||
compare.summary.failCount = 5
|
||
```
|
||
|
||
结论:
|
||
|
||
- 目标 Web app 默认不再把 machine files、session、tool table 静默保存到 memory fallback;浏览器路径强制 OPFS。
|
||
- `smoke:browser` 已从 OPFS 读回程序、会话和刀具表内容,证明不是仅生成 OPFS path。
|
||
- Node evidence 仍使用内存存储模拟文件内容,这是非浏览器采集限制;真实 Web 文件系统验收以 browser smoke 为准。
|
||
|
||
## Tool table 到 tool-offset 闭环验收
|
||
|
||
### 命令
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
```
|
||
|
||
### 结果
|
||
|
||
```text
|
||
xyzbc_trt_web_app_smoke=ok
|
||
web_xyzbc_trt_evidence=.../working/evidence/web-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=fail fail_count=5
|
||
gmoccapy_static_build=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
```
|
||
|
||
### JSON 摘要
|
||
|
||
```text
|
||
web.toolRuntime.ready = true
|
||
web.toolRuntime.activeOffsetApplied = true
|
||
web.toolRuntime.activeToolNumber = 2
|
||
web.toolRuntime.activePocket = 2
|
||
web.toolRuntime.kinematics.toolOffsetZ = 10
|
||
web.toolRuntime.pathTool.length = 10
|
||
web.toolRuntime.pathTool.diameter = 8
|
||
web.toolRuntime.vismach.toolOffset = 10
|
||
web.toolOffsetClosure.closed = true
|
||
web.coverage.toolTableToToolOffsetClosed = true
|
||
web.previewPath.samples[0].tool = { id: 2, pocket: 2, length: 10, diameter: 8 }
|
||
web.executionPath.samples[0].tool = { id: 2, pocket: 2, length: 10, diameter: 8 }
|
||
compare.summary.passCount = 19
|
||
compare.summary.failCount = 5
|
||
compare.checks["web tool table active offset drives kinematics, path, and Vismach"].status = pass
|
||
```
|
||
|
||
结论:
|
||
|
||
- `xyzbc-trt.tbl` 中 `T2 P2 Z10 D8` 已进入 Web tool DB 运行时摘要。
|
||
- 当前 active tool offset 已同时写入 kinematics `motion.tooloffset.z` 等效值、路径样本 tool 字段和 Vismach `tool-offset` pin。
|
||
- 默认程序本身无 T/M6/G43,因此 Web evidence 记录 `defaultActivationUsed=true`,用于证明 tool table 偏置链路;带 T/M6/G43 的程序会使用程序扫描命令。
|
||
- compare 仍保持失败是正确结果:剩余 5 项仍来自 native path evidence 未重采集。
|
||
|
||
## Vismach 3D pin 驱动模型验收
|
||
|
||
### 命令
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
|
||
```
|
||
|
||
### 结果
|
||
|
||
```text
|
||
xyzbc_trt_web_app_smoke=ok
|
||
web_xyzbc_trt_evidence=.../working/evidence/web-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=fail fail_count=5
|
||
gmoccapy_static_build=ok
|
||
xyzbc_trt_browser_smoke=ok
|
||
```
|
||
|
||
### JSON 摘要
|
||
|
||
```text
|
||
web.status = ready-for-wasm-runtime
|
||
web.blockers = []
|
||
web.vismachEquivalent.pins = table-x,saddle-y,spindle-z,tilt-b,rotate-c,tool-offset,x-offset,z-offset
|
||
web.vismachEquivalent.pinValues.table-x = 43
|
||
web.vismachEquivalent.pinValues.saddle-y = -32.15
|
||
web.vismachEquivalent.pinValues.spindle-z = -11.306
|
||
web.vismachEquivalent.pinValues.tool-offset = 84.019
|
||
web.vismachEquivalent.pinValues.x-offset = -20
|
||
web.vismachEquivalent.pinValues.z-offset = -15
|
||
web.vismachEquivalent.halNets.length = 9
|
||
web.vismachEquivalent.semanticBoundary = web_threejs_vismach_equivalent_driven_by_xyzbc_trt_hal_pins
|
||
```
|
||
|
||
结论:
|
||
|
||
- Web 3D 参考模型已由 Vismach 等效 pin 状态驱动。
|
||
- canvas dataset 已输出 `threeVismachPins`、`threeVismachTransforms`、`threeVismachPinDrivenModel`,后续浏览器 smoke 可直接断言。
|
||
- `smoke:browser` 已断言默认 `xyzbc-trt`、三类 worker runtime ready、canvas 非空、Vismach pin/transform dataset。
|
||
- compare 仍保持失败是正确结果:剩余 5 项仍来自 native path evidence 未重采集。
|
||
|
||
## evidence 字段与路径对比实现验收
|
||
|
||
### 命令
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
python3 -m py_compile web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
```
|
||
|
||
### 结果
|
||
|
||
```text
|
||
xyzbc_trt_web_app_smoke=ok
|
||
collect-native-xyzbc-trt-evidence.py py_compile=ok
|
||
web_xyzbc_trt_evidence=.../working/evidence/web-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=fail fail_count=5
|
||
gmoccapy_static_build=ok
|
||
```
|
||
|
||
### JSON 证据
|
||
|
||
```text
|
||
web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json
|
||
web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/compare-xyzbc-trt-evidence.json
|
||
```
|
||
|
||
当前 Web evidence 已包含:
|
||
|
||
```text
|
||
pathSampling.samplePeriodMs = 50
|
||
previewPath.samplePeriodMs = 50
|
||
executionPath.samplePeriodMs = 50
|
||
startupSequence
|
||
iniDisplay
|
||
halNets
|
||
kinematicsPins
|
||
axisJointLimits
|
||
switchkinsTransitions
|
||
uiEquivalence
|
||
vismachEquivalent
|
||
ngcguiSubroutines
|
||
demoPrograms
|
||
vismachEquivalent.pinValues
|
||
vismachEquivalent.transforms
|
||
```
|
||
|
||
当前 compare evidence 已包含:
|
||
|
||
```text
|
||
pathComparison.previewVsPreview
|
||
pathComparison.executionVsExecution
|
||
pathComparison.previewVsExecutionNative
|
||
pathComparison.previewVsExecutionWeb
|
||
```
|
||
|
||
结论:
|
||
|
||
- 静态/profile/staging/evidence 字段已实现并通过 Node smoke。
|
||
- compare 仍保持失败是正确结果:Web WASM artifact、preview path 和 execution path 已具备,native evidence 尚未用新基线重采集 path 样本。
|
||
- `npm run build` 当前已通过,说明目标 app 可在现有 WASM artifact 下完成静态构建。
|
||
|
||
## Web task/HAL executionPath 采集验收
|
||
|
||
### 命令
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
|
||
```
|
||
|
||
### 结果
|
||
|
||
```text
|
||
web_xyzbc_trt_evidence=.../working/evidence/web-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=fail fail_count=5
|
||
xyzbc_trt_web_app_smoke=ok
|
||
gmoccapy_static_build=ok
|
||
```
|
||
|
||
### JSON 摘要
|
||
|
||
```text
|
||
web.wasm.ready = true
|
||
web.blockers = []
|
||
web.previewPath.samplePeriodMs = 50
|
||
web.previewPath.sampleCount = 1300
|
||
web.executionPath.samplePeriodMs = 50
|
||
web.executionPath.sampleCount = 228
|
||
web.executionPath.source = web-linuxcnc-task-hal-execution
|
||
web.executionPath.taskHal.completed = true
|
||
compare.summary.passCount = 18
|
||
compare.summary.failCount = 5
|
||
```
|
||
|
||
结论:
|
||
|
||
- Web 侧 `previewPath` 已由 `linuxcnc_interp`/TP WASM 轨迹重采样为 20ms。
|
||
- Web 侧 `executionPath` 已由 `linuxcnc_task_hal` WASM 执行反馈生成 20ms 样本。
|
||
- compare 剩余 5 项失败均来自 native evidence 尚无 `previewPath`/`executionPath` 样本和采样周期字段。
|
||
|
||
## DOCX 整合验收
|
||
|
||
### 源文件
|
||
|
||
```text
|
||
web-rtcp-5axis-xyzbc-trt-sim-plan/doc/xyzbc-trt-web-cnc-simulation-design-task-and-technical-plan.docx
|
||
```
|
||
|
||
### 输出文件
|
||
|
||
```text
|
||
web-rtcp-5axis-xyzbc-trt-sim-plan/working/09-设计任务书与技术方案整合.md
|
||
```
|
||
|
||
### 包结构检查结论
|
||
|
||
```text
|
||
DOCX 正文段落数:507
|
||
DOCX 图片数:5
|
||
图片文件:
|
||
- word/media/xyzbc-trt-axis-window.png
|
||
- word/media/xyzbc-trt-desktop.png
|
||
- word/media/xyzbc-trt-json-compare-flow.png
|
||
- word/media/xyzbc-trt-logic-map.png
|
||
- word/media/xyzbc-trt-web-architecture.png
|
||
```
|
||
|
||
### Markdown 输出检查
|
||
|
||
```bash
|
||
wc -l web-rtcp-5axis-xyzbc-trt-sim-plan/working/09-设计任务书与技术方案整合.md
|
||
rg -n "^## |图 1|图 2|图 3|图 4|图 5|状态联锁|Evidence JSON|开发任务分解|验收标准|风险" web-rtcp-5axis-xyzbc-trt-sim-plan/working/09-设计任务书与技术方案整合.md
|
||
rg -n "!\\[" web-rtcp-5axis-xyzbc-trt-sim-plan/working/09-设计任务书与技术方案整合.md
|
||
```
|
||
|
||
结果:
|
||
|
||
```text
|
||
364 web-rtcp-5axis-xyzbc-trt-sim-plan/working/09-设计任务书与技术方案整合.md
|
||
检索到 1-11 章关键章节。
|
||
检索到 5 张图片引用,均指向 ../doc/assets/。
|
||
```
|
||
|
||
结论:
|
||
|
||
- DOCX 任务书已整合到 `working/09-设计任务书与技术方案整合.md`。
|
||
- 该 Markdown 保留任务书、技术方案、开发任务分解、验收标准、风险控制、源码级程序逻辑分析和状态联锁章节。
|
||
- `working/README.md` 和 `04-任务矩阵.md` 已登记该整合项。
|
||
|
||
## 本轮命令证据
|
||
|
||
### 读取对标文档
|
||
|
||
```bash
|
||
sed -n '1,240p' web-rtcp-5axis-xyzbc-trt-sim-plan/doc/xyzbc-trt-runtime-files.md
|
||
sed -n '241,520p' web-rtcp-5axis-xyzbc-trt-sim-plan/doc/xyzbc-trt-runtime-files.md
|
||
```
|
||
|
||
结论:
|
||
|
||
- `xyzbc-trt.ini` 使用 `DISPLAY=axis`、`PYVCP=./xyzbc-trt.xml`、`OPEN_FILE=./demos/xyzbc_switchkins.ngc`。
|
||
- `switchkins_postgui.hal` 连接 PyVCP 按钮到 `halui.mdi-command-00/01/02`。
|
||
- `M429/M428/M430` 分别选择 identity、XYZBC TCP、userk。
|
||
|
||
### 检查 WASM 支撑
|
||
|
||
```bash
|
||
rg -n "xyzbc|xyzbc-trt|supportedLinuxCncKinematicsModules|linuxcnc_xyzbc" wasm-port web-rtcp-5axis-sim-plan/tests web-rtcp-5axis-sim-plan/app/src
|
||
```
|
||
|
||
结论:
|
||
|
||
- SDK 包含 `xyzbc-trt -> linuxcnc_xyzbc_trt_kinematics.wasm`。
|
||
- native probe 包含 `linuxcnc_xyzbc_trt_kinematics_probe.cpp`。
|
||
- remap 执行 harness 包含 `xyzbc-trt.ini`、`xyzbc_switchkins.ngc`、`boat-xyzbc.ngc`。
|
||
|
||
### 检查当前 artifact
|
||
|
||
```bash
|
||
find wasm-port/build/wasm -maxdepth 3 -type f
|
||
```
|
||
|
||
结果:
|
||
|
||
```text
|
||
find: ‘wasm-port/build/wasm’: No such file or directory
|
||
```
|
||
|
||
结论:
|
||
|
||
- 当前仓库没有已生成的 WASM artifact。
|
||
- 完整浏览器运行前必须先构建 WASM。
|
||
|
||
### 检查参数文件基线
|
||
|
||
```bash
|
||
ls -l wasm-port/vendor/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc.var linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc.var /home/mes123456/linuxcnc-master/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc.var
|
||
```
|
||
|
||
结果:
|
||
|
||
```text
|
||
/home/mes123456/linuxcnc-master/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc.var 存在
|
||
wasm-port/vendor/.../xyzbc.var 当前不存在
|
||
linuxcnc/.../xyzbc.var 当前不存在
|
||
```
|
||
|
||
结论:
|
||
|
||
- `xyzbc.var` 是需要补充导入的运行态参数文件基线。
|
||
- 历史轮次已从 `/home/mes123456/linuxcnc-master/.../xyzbc.var` 导入到 `wasm-port/vendor/linuxcnc/.../xyzbc.var`,并加入 `wasm-port/tools/source-manifest.txt`;后续若以 `/home/mes123456/cnc_wams/linuxcnc` 为新 native 基线,应重新核对该参数文件是否与当前运行树一致。
|
||
|
||
## 已运行验收
|
||
|
||
### native 基线切换验收
|
||
|
||
后续真实 LinuxCNC 对标基线统一为:
|
||
|
||
```text
|
||
/home/mes123456/cnc_wams/linuxcnc
|
||
```
|
||
|
||
必须先确认这些文件存在:
|
||
|
||
```bash
|
||
test -x /home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment
|
||
test -x /home/mes123456/cnc_wams/linuxcnc/bin/axis
|
||
test -x /home/mes123456/cnc_wams/linuxcnc/bin/xyzbc-trt-gui
|
||
test -f /home/mes123456/cnc_wams/linuxcnc/rtlib/xyzbc-trt-kins.so
|
||
test -f /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
|
||
```
|
||
|
||
本轮自动检查结果:
|
||
|
||
```text
|
||
scripts/rip-environment: ok
|
||
scripts/linuxcnc: ok
|
||
bin/axis: ok
|
||
bin/xyzbc-trt-gui: ok
|
||
bin/milltask: ok
|
||
bin/linuxcncsvr: ok
|
||
bin/halui: ok
|
||
rtlib/xyzbc-trt-kins.so: ok
|
||
rtlib/tpmod.so: ok
|
||
lib/python/linuxcnc.so: ok
|
||
xyzbc-trt.ini: ok
|
||
```
|
||
|
||
说明:
|
||
|
||
- native evidence 的 `sourceRoot` 后续必须写为 `/home/mes123456/cnc_wams/linuxcnc`。
|
||
- `/home/mes123456/linuxcnc-master` 只作为历史运行参考;新一轮 Web 对标和 compare 以 `/home/mes123456/cnc_wams/linuxcnc` 的真实执行结果为准。
|
||
|
||
### LinuxCNC RIP 编译证据
|
||
|
||
执行命令:
|
||
|
||
```bash
|
||
cd /home/mes123456/cnc_wams/linuxcnc/src
|
||
./autogen.sh
|
||
./configure --with-realtime=uspace --disable-build-documentation
|
||
env -u DEBUG make -j"$(nproc)"
|
||
sudo -n make setuid
|
||
```
|
||
|
||
关键过程:
|
||
|
||
- 首次直接执行 `make -j"$(nproc)"` 失败,原因是当前 shell 环境存在 `DEBUG=release`,LinuxCNC Makefile 将 `$(DEBUG)` 拼入编译参数,导致 `gcc/c++` 把裸参数 `release` 当作输入文件。
|
||
- 使用 `env -u DEBUG make -j"$(nproc)"` 重新编译通过。
|
||
- `sudo -n make setuid` 成功设置 `bin/rtapi_app` 和 `bin/linuxcnc_module_helper` 的 root/setuid 权限。
|
||
|
||
验证命令:
|
||
|
||
```bash
|
||
source /home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment >/dev/null
|
||
command -v linuxcnc
|
||
command -v axis
|
||
command -v halcmd
|
||
python3 - <<'PY'
|
||
import linuxcnc
|
||
print("python_linuxcnc_import=ok")
|
||
print("linuxcnc_module=", linuxcnc.__file__)
|
||
PY
|
||
```
|
||
|
||
验证结果:
|
||
|
||
```text
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/linuxcnc
|
||
/home/mes123456/cnc_wams/linuxcnc/bin/axis
|
||
/home/mes123456/cnc_wams/linuxcnc/bin/halcmd
|
||
python_linuxcnc_import=ok
|
||
linuxcnc_module= /home/mes123456/cnc_wams/linuxcnc/lib/python/linuxcnc.so
|
||
```
|
||
|
||
### `xyzbc-trt` 快捷方式与执行证据
|
||
|
||
快捷方式路径:
|
||
|
||
```text
|
||
/home/mes123456/cnc_wams/linuxcnc/linuxcnc-rtcp-5axis-shortcuts/table-rotary-tilting/xyzbc-trt.desktop
|
||
```
|
||
|
||
快捷方式内容:
|
||
|
||
```text
|
||
Exec=/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment linuxcnc /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
|
||
Icon=/home/mes123456/cnc_wams/linuxcnc/linuxcncicon.png
|
||
```
|
||
|
||
执行方式:
|
||
|
||
```bash
|
||
setsid bash -lc 'cd /home/mes123456/cnc_wams/linuxcnc && exec /home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment linuxcnc /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini' \
|
||
> /tmp/xyzbc-trt-cnc_wams-linuxcnc.log 2>&1 < /dev/null &
|
||
```
|
||
|
||
当前进程证据:
|
||
|
||
```text
|
||
/bin/bash /home/mes123456/cnc_wams/linuxcnc/scripts/linuxcnc .../xyzbc-trt.ini
|
||
linuxcncsvr -ini /home/mes123456/cnc_wams/linuxcnc/.../xyzbc-trt.ini
|
||
/home/mes123456/cnc_wams/linuxcnc/bin/rtapi_app load tpmod
|
||
milltask -ini /home/mes123456/cnc_wams/linuxcnc/.../xyzbc-trt.ini
|
||
halui -ini /home/mes123456/cnc_wams/linuxcnc/.../xyzbc-trt.ini
|
||
/usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/hal_manualtoolchange
|
||
/usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/xyzbc-trt-gui
|
||
/usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/axis -ini /home/mes123456/cnc_wams/linuxcnc/.../xyzbc-trt.ini
|
||
```
|
||
|
||
HAL/Python 验证:
|
||
|
||
```text
|
||
motion.switchkins-type = 0
|
||
loaded file = ./demos/xyzbc_switchkins.ngc
|
||
axis_mask = 55
|
||
position = [0.0, 0.0, 0.0, 0.0, 0.0]
|
||
```
|
||
|
||
目标 Node smoke:
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
|
||
```
|
||
|
||
实际输出:
|
||
|
||
```text
|
||
xyzbc_trt_web_app_smoke=ok
|
||
```
|
||
|
||
静态 diff 检查:
|
||
|
||
```bash
|
||
git diff --check -- web-rtcp-5axis-xyzbc-trt-sim-plan
|
||
```
|
||
|
||
实际结果:无输出,退出码为 0。
|
||
|
||
WASM artifact 检查:
|
||
|
||
```bash
|
||
find wasm-port/build/wasm -maxdepth 3 -type f
|
||
```
|
||
|
||
实际输出:
|
||
|
||
```text
|
||
find: ‘wasm-port/build/wasm’: No such file or directory
|
||
```
|
||
|
||
完整 WASM 验收:
|
||
|
||
```bash
|
||
wasm-port/tools/build_kinematics_wasm.sh
|
||
wasm-port/tools/build_wasm_core.sh
|
||
wasm-port/tools/build_tp_wasm.sh
|
||
wasm-port/tools/build_task_hal_wasm.sh
|
||
wasm-port/tests/wasm/node/verify_kinematics_wasm.sh
|
||
wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
wasm-port/tests/wasm/node/verify_task_hal_wasm.sh
|
||
```
|
||
|
||
### native/Web JSON 证据
|
||
|
||
真实 native 采集命令:
|
||
|
||
```bash
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment \
|
||
python3 web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 90
|
||
```
|
||
|
||
输出:
|
||
|
||
```text
|
||
native_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/native-xyzbc-trt-evidence.json
|
||
```
|
||
|
||
结果摘要:
|
||
|
||
```text
|
||
status=ok
|
||
executionMode=auto-run
|
||
commandResult.status=completed
|
||
commandResult.events=1462
|
||
```
|
||
|
||
Web 采集命令:
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
|
||
```
|
||
|
||
输出:
|
||
|
||
```text
|
||
web_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json
|
||
```
|
||
|
||
结果摘要:
|
||
|
||
```text
|
||
profileDefaultXyzbc=true
|
||
iniReady=true
|
||
opfsStaged=true
|
||
pyvcpXmlStaged=true
|
||
remapsStaged=true
|
||
toolTableStaged=true
|
||
parameterFileStaged=true
|
||
defaultProgramStaged=true
|
||
wasmArtifactsReady=false
|
||
```
|
||
|
||
对比命令:
|
||
|
||
```bash
|
||
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
|
||
```
|
||
|
||
输出:
|
||
|
||
```text
|
||
compare_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/compare-xyzbc-trt-evidence.json
|
||
compare_xyzbc_trt_status=fail fail_count=1
|
||
```
|
||
|
||
当前结论:
|
||
|
||
- 12 项对比中 11 项通过。
|
||
- 唯一失败项是 `required WASM artifacts available`。
|
||
- 当前环境已安装 `emcc 6.0.2`;剩余前置是执行 `wasm-port` 构建脚本生成 artifact,并重跑 evidence。
|
||
|
||
### 全量对标 JSON 验收要求
|
||
|
||
后续 native/Web evidence JSON 必须按 `07-全量对标追踪矩阵.md` 增加这些顶层或等效字段:
|
||
|
||
```text
|
||
startupSequence
|
||
iniDisplay
|
||
halNets
|
||
kinematicsPins
|
||
axisJointLimits
|
||
switchkinsTransitions
|
||
toolTable
|
||
toolOffsetFlow
|
||
uiEquivalence
|
||
vismachEquivalent
|
||
ngcguiSubroutines
|
||
demoPrograms
|
||
pathSampling
|
||
previewPath
|
||
executionPath
|
||
```
|
||
|
||
`compare-xyzbc-trt-evidence.json` 必须新增或扩展这些检查类别:
|
||
|
||
```text
|
||
startup-sequence
|
||
ini-display
|
||
hal-nets
|
||
kinematics-pins
|
||
axis-joint-limits
|
||
switchkins-transitions
|
||
tool-offset-flow
|
||
ui-equivalence
|
||
vismach-equivalence
|
||
ngcgui-subroutines
|
||
demo-programs
|
||
path-preview
|
||
path-execution
|
||
path-comparison
|
||
```
|
||
|
||
必须逐项验证:
|
||
|
||
- `.desktop/rip-environment/linuxcnc` 启动顺序在 Web 中有等效 `startupSequence`。
|
||
- `[DISPLAY]` 的 `DISPLAY`、`GEOMETRY`、`OPEN_FILE`、`PYVCP`、`JOG_AXES`、`POSITION_OFFSET`、`POSITION_FEEDBACK`、`MAX_*`、`TOOL_EDITOR`、`NGCGUI_*` 有 Web 等效字段或 UI。
|
||
- `[TRAJ]`、`[KINS]`、`[EMCMOT]`、`[TASK]`、`[EMCIO]` 的关键配置进入 JSON。
|
||
- `switchkins_postgui.hal` 中 `pyvcp.*` 到 `halui.mdi-command-*` 的连接进入 `halNets`。
|
||
- `basic_sim.tcl` 的模拟 joint/home/spindle/manualtoolchange 语义由 task/HAL evidence 证明。
|
||
- `xyzbc-trt-gui.py` 的 HAL pin 和模型层级由 `vismachEquivalent` 证明。
|
||
- `xyzbc-trt-kins` 的 offset、rot-point、conventional-directions、tool-offset pin 由 `kinematicsPins` 证明。
|
||
- `xyzbc_switchkins_sub.ngc`、`centering.ngc`、`helix_bc.ngc`、`xyzbc_switchkins.ngc`、`boat-xyzbc.ngc` 都进入 staging 和可执行验收。
|
||
- `xyzbc-trt.tbl` 的 `T1 P1 D1`、`T2 P2 Z10 D8` 解析后影响 tool offset、kinematics 和 Web 3D 刀具显示。
|
||
|
||
### 刀具预览/执行路径 JSON 验收要求
|
||
|
||
后续 native/Web evidence JSON 必须增加刀具预览路径和刀具执行路径:
|
||
|
||
```text
|
||
working/evidence/native-xyzbc-trt-evidence.json.pathSampling.samplePeriodMs = 50
|
||
working/evidence/web-xyzbc-trt-evidence.json.pathSampling.samplePeriodMs = 50
|
||
working/evidence/native-xyzbc-trt-evidence.json.previewPath.samples[]
|
||
working/evidence/native-xyzbc-trt-evidence.json.executionPath.samples[]
|
||
working/evidence/web-xyzbc-trt-evidence.json.previewPath.samples[]
|
||
working/evidence/web-xyzbc-trt-evidence.json.executionPath.samples[]
|
||
working/evidence/compare-xyzbc-trt-evidence.json.pathComparison
|
||
```
|
||
|
||
采样要求:
|
||
|
||
- `samplePeriodMs` 固定为 `50`,native/Web 两侧必须一致。
|
||
- 样本必须通过 `sampleIndex` 和 `timeMs` 对齐。
|
||
- 若原始采集周期不同,采集脚本或 compare 脚本必须重采样为 50ms 后再比较。
|
||
- `previewPath` 只能表示预览/planner 路径;`executionPath` 必须来自真实执行反馈或 Web WASM task/HAL 执行反馈,不能用预览路径替代。
|
||
|
||
每个样本必须包含:
|
||
|
||
```text
|
||
sampleIndex
|
||
timeMs
|
||
line
|
||
motionType
|
||
activeKinematics
|
||
tool.id/tool.length/tool.diameter
|
||
joint.x/joint.y/joint.z/joint.b/joint.c
|
||
tcp.x/tcp.y/tcp.z
|
||
toolAxis.i/toolAxis.j/toolAxis.k
|
||
feed
|
||
spindle
|
||
```
|
||
|
||
compare 验收项:
|
||
|
||
```text
|
||
pathComparison.previewVsPreview
|
||
pathComparison.executionVsExecution
|
||
pathComparison.semanticExecutionVsSemanticExecution
|
||
pathComparison.previewVsExecutionNative
|
||
pathComparison.previewVsExecutionWeb
|
||
lineExecutionComparison
|
||
axisValuesByLineComparison
|
||
gcodeExecutionProcessComparison
|
||
```
|
||
|
||
每个对比项至少输出:
|
||
|
||
```text
|
||
maxTcpErrorMm
|
||
rmsTcpErrorMm
|
||
maxJointError
|
||
rmsJointError
|
||
maxToolAxisAngleDeg
|
||
sampleCountDelta
|
||
missingSamples
|
||
```
|
||
|
||
当前状态:
|
||
|
||
- `web-xyzbc-trt-evidence.json` 已通过采集脚本重新生成,`wasmArtifactsReady=true`、`missing=[]`。
|
||
- Web preview path 已由 `linuxcnc_interp` WASM 生成 6174 个 20ms 样本。
|
||
- Web execution path 采集仍未实现,当前 blocker 为 `web-execution-path-unavailable`。
|
||
- native preview/execution path 仍需用 `/home/mes123456/cnc_wams/linuxcnc` 真实运行实例重采集。
|
||
- `compare-xyzbc-trt-evidence.json` 当前 17/23 通过,剩余 6 项均与 native path 样本或 Web execution path 样本缺失有关。
|
||
|
||
### WASM artifact 验收记录
|
||
|
||
本轮已生成并核对以下目标 artifact:
|
||
|
||
```text
|
||
wasm-port/build/wasm/core/linuxcnc_interp.js
|
||
wasm-port/build/wasm/core/linuxcnc_interp.wasm
|
||
wasm-port/build/wasm/kinematics/linuxcnc_xyzbc_trt_kinematics.js
|
||
wasm-port/build/wasm/kinematics/linuxcnc_xyzbc_trt_kinematics.wasm
|
||
wasm-port/build/wasm/tp/linuxcnc_tp.js
|
||
wasm-port/build/wasm/tp/linuxcnc_tp.wasm
|
||
wasm-port/build/wasm/task-hal/linuxcnc_task_hal.js
|
||
wasm-port/build/wasm/task-hal/linuxcnc_task_hal.wasm
|
||
```
|
||
|
||
验证命令结果:
|
||
|
||
```text
|
||
node tests/node/verify_xyzbc_trt_web_app.mjs -> xyzbc_trt_web_app_smoke=ok
|
||
SKIP_KINEMATICS_BUILD=1 wasm-port/tests/wasm/node/verify_kinematics_wasm.sh -> kinematics_wasm_node_smoke=ok
|
||
SKIP_TP_BUILD=1 wasm-port/tests/wasm/node/verify_tp_wasm.sh -> tp_wasm_node_smoke=ok
|
||
SKIP_TASK_HAL_BUILD=1 wasm-port/tests/wasm/node/verify_task_hal_wasm.sh -> linuxcnc_task_runtime_smoke=ok
|
||
```
|
||
|
||
补充 interpreter/remap 验收:
|
||
|
||
```text
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh -> interp_wasm_node_smoke=ok
|
||
wasm-port/tests/wasm/node/verify_interp_wasm.sh -> interp_wasm_node_smoke=ok
|
||
```
|
||
|
||
修复依据:`interp_g10_l11_wasm` 的实际 WASM 输出与 `wasm-port/vendor/linuxcnc/tests/interp/g10/g10-l11/expected` 一致,均为 `SET_G92_OFFSET x=-43.0622 y=-47.4282 z=-72`;原 Node 验收脚本中的 `x=-41.1962 y=-46.1962 z=-72` 为过期期望值。
|
||
|
||
## 页面证据
|
||
|
||
目标页面:
|
||
|
||
```text
|
||
web-rtcp-5axis-xyzbc-trt-sim-plan/app/index.html
|
||
```
|
||
|
||
开发服务:
|
||
|
||
```bash
|
||
cd web-rtcp-5axis-xyzbc-trt-sim-plan/app
|
||
npm run dev
|
||
```
|
||
|
||
URL:
|
||
|
||
```text
|
||
http://127.0.0.1:4174/
|
||
```
|
||
|
||
## AXIS 按钮级对标与逐按钮验证证据
|
||
|
||
本轮新增按钮级验收依据:
|
||
|
||
```text
|
||
/home/mes123456/cnc_wams/linuxcnc/src/emc/usr_intf/axis/scripts/axis.py
|
||
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.xml
|
||
configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal
|
||
```
|
||
|
||
Web 实现与证据位置:
|
||
|
||
```text
|
||
app/src/ui/axis-shell.js :: AXIS_BUTTON_PARITY
|
||
tests/node/verify_xyzbc_trt_web_app.mjs
|
||
tests/browser/xyzbc_trt_browser_smoke.html
|
||
tools/collect-web-xyzbc-trt-evidence.mjs
|
||
tools/compare-xyzbc-trt-evidence.mjs
|
||
working/evidence/web-xyzbc-trt-evidence.json
|
||
working/evidence/compare-xyzbc-trt-evidence.json
|
||
```
|
||
|
||
验证命令结果:
|
||
|
||
```text
|
||
npm run smoke:node -> xyzbc_trt_web_app_smoke=ok
|
||
npm run build -> gmoccapy_static_build=ok
|
||
npm run smoke:browser -> xyzbc_trt_browser_smoke=ok
|
||
npm run evidence:web -> web_xyzbc_trt_evidence=.../working/evidence/web-xyzbc-trt-evidence.json
|
||
npm run evidence:compare -> compare_xyzbc_trt_status=pass
|
||
```
|
||
|
||
按钮级 evidence 摘要:
|
||
|
||
```text
|
||
web.axisMainUi.axisButtonParity.buttonCount = 61
|
||
web.axisMainUi.axisButtonParity.sourceReferencedCount = 61
|
||
web.axisMainUi.axisButtonParity.missingActions = []
|
||
web.coverage.axisButtonParityCovered = true
|
||
compare.summary.checkCount = 30
|
||
compare.summary.passCount = 30
|
||
compare.summary.failCount = 0
|
||
compare.summary.blockers = []
|
||
```
|
||
|
||
## 刀具执行路径、实际轴值与逐行 G 代码对标证据
|
||
|
||
新增证据字段:
|
||
|
||
```text
|
||
native.semanticExecutionPath
|
||
native.lineExecutionTrace
|
||
native.axisValuesByLine
|
||
native.gcodeExecutionProcess
|
||
web.semanticExecutionPath
|
||
web.lineExecutionTrace
|
||
web.axisValuesByLine
|
||
web.gcodeExecutionProcess
|
||
compare.pathComparison.semanticExecutionVsSemanticExecution
|
||
compare.lineExecutionComparison
|
||
compare.axisValuesByLineComparison
|
||
compare.gcodeExecutionProcessComparison
|
||
```
|
||
|
||
验证命令结果:
|
||
|
||
```text
|
||
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 tools/collect-native-xyzbc-trt-evidence.py --run --timeout 90 --startup-timeout 35
|
||
npm run evidence:web
|
||
npm run evidence:compare -> compare_xyzbc_trt_status=pass
|
||
npm run smoke:node -> xyzbc_trt_web_app_smoke=ok
|
||
npm run build -> gmoccapy_static_build=ok
|
||
```
|
||
|
||
当前 compare 摘要:
|
||
|
||
```text
|
||
compare.summary.checkCount = 35
|
||
compare.summary.passCount = 35
|
||
compare.summary.failCount = 0
|
||
compare.summary.blockers = []
|
||
|
||
semanticExecution.nativeSampleCount = 3226
|
||
semanticExecution.webSampleCount = 3226
|
||
semanticExecution.sampleCountDelta = 0
|
||
semanticExecution.maxTcpErrorMm = 3.552713678800501e-15
|
||
semanticExecution.maxJointError = 3.552713678800501e-15
|
||
semanticExecution.maxToolAxisAngleDeg = 0
|
||
|
||
lineExecution.nativeTraceCount = 64
|
||
lineExecution.webTraceCount = 64
|
||
lineExecution.mismatchCount = 0
|
||
|
||
axisValues.nativeLineValueCount = 29
|
||
axisValues.webLineValueCount = 29
|
||
axisValues.maxTcpErrorMm = 0
|
||
axisValues.maxJointError = 0
|
||
axisValues.maxToolAxisAngleDeg = 0
|
||
axisValues.mismatchCount = 0
|
||
|
||
gcodeExecutionProcess.nativeExecutionStepCount = 128
|
||
gcodeExecutionProcess.webExecutionStepCount = 128
|
||
gcodeExecutionProcess.nativeSourceLineCoverageCount = 65
|
||
gcodeExecutionProcess.webSourceLineCoverageCount = 65
|
||
gcodeExecutionProcess.mismatchCount = 0
|
||
gcodeExecutionProcess.motionStepCount = 29
|
||
gcodeExecutionProcess.switchkinsStepCount = 21
|
||
gcodeExecutionProcess.parameterAssignmentStepCount = 41
|
||
gcodeExecutionProcess.workOffsetStepCount = 9
|
||
gcodeExecutionProcess.callStepCount = 5
|
||
gcodeExecutionProcess.finalJoint = {x:0, y:0, z:10, b:0, c:0}
|
||
gcodeExecutionProcess.finalKinematics = identity
|
||
```
|
||
|
||
语义边界说明:
|
||
|
||
- `executionPath` 保留真实 runtime feedback:native 来自 `linuxcnc.stat()` 采样,Web 来自 task/HAL WASM 反馈。
|
||
- `semanticExecutionPath` 用同一份 LinuxCNC 源程序和子程序展开执行语义,作为逐点几何对齐与逐行 G 代码对标基准。
|
||
- `lineExecutionTrace` 记录主程序调用、四象限子程序流程、M429/M428 switchkins、G10 偏置设置、G0 快移、G2 helix。
|
||
- `axisValuesByLine` 记录每条产生日志运动的 X/Y/Z/B/C、TCP、toolAxis、feed,用于实际轴值对标。
|
||
- `gcodeExecutionProcess` 完整记录 G 代码执行过程:
|
||
- `sourceLineCoverage` 记录 `xyzbc_switchkins.ngc`、`xyzbc_switchkins_sub.ngc`、`helix_bc.ngc` 每个源行的行号、语句、行类型、访问次数、产生运动次数和操作列表。
|
||
- `executionSteps` 按动态执行顺序记录源文件、行号、调用栈、执行状态、行类型和详细结果。
|
||
- `result.parametersChanged` 记录 `#<...>` 参数赋值结果。
|
||
- `result.modalChange` 记录 M428/M429、G10、M2 等模态变化。
|
||
- `result.motion` 记录运动行起止 joint、起止 TCP、toolAxis、feed、segmentIndex。
|
||
- `summary` 汇总运动步、switchkins、参数赋值、G10、call、无运动步、最终轴值和最终 kinematics。
|
||
|
||
浏览器真实点击覆盖:
|
||
|
||
```text
|
||
ESTOP/复位
|
||
上电
|
||
回零
|
||
MDI tab
|
||
M428 / M429 / M430 switchkins
|
||
Joint 4 / C 轴 Jog+
|
||
Feed override+
|
||
Spindle forward / stop
|
||
Flood coolant
|
||
Block delete
|
||
Optional stop
|
||
Ignore limits
|
||
View X/Y/Z/P
|
||
Clear preview
|
||
Run-ready menu
|
||
```
|