完成 xyzbc-trt working 任务复核
This commit is contained in:
@@ -1,5 +1,204 @@
|
||||
# 05-验收证据
|
||||
|
||||
## 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 复核补充
|
||||
@@ -54,25 +253,25 @@ xyzbc_trt_browser_smoke=ok
|
||||
### JSON 摘要
|
||||
|
||||
```text
|
||||
native.previewPath.samplePeriodMs = 20
|
||||
native.previewPath.sampleCount = 3226
|
||||
native.executionPath.samplePeriodMs = 20
|
||||
native.executionPath.sampleCount = 7
|
||||
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 = 20
|
||||
web.previewPath.sampleCount = 3074
|
||||
web.executionPath.samplePeriodMs = 20
|
||||
web.executionPath.sampleCount = 569
|
||||
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 = 29
|
||||
compare.summary.passCount = 29
|
||||
compare.summary.checkCount = 35
|
||||
compare.summary.passCount = 35
|
||||
compare.summary.failCount = 0
|
||||
compare.summary.blockers = []
|
||||
compare.pathComparison.previewVsPreview.comparable = true
|
||||
@@ -83,7 +282,7 @@ compare.pathComparison.previewVsExecutionWeb.comparable = true
|
||||
|
||||
结论:
|
||||
|
||||
- native/Web 刀具预览路径和执行路径均使用 20ms 采样周期,compare 已进入可比误差统计。
|
||||
- native/Web 刀具预览路径和执行路径均使用 50ms 采样周期,compare 已进入可比误差统计。
|
||||
- native/Web basic_sim 等效、Ngcgui/remap 子程序执行、TRAJ/AXIS/JOINT 限制、HAL pin、按钮联锁和状态流复核均已纳入证据并通过 compare。
|
||||
- `04-任务矩阵.md` 中 T-001 到 T-040 均为完成。
|
||||
|
||||
@@ -266,9 +465,9 @@ web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/compare-xyzbc-trt-evidence.js
|
||||
当前 Web evidence 已包含:
|
||||
|
||||
```text
|
||||
pathSampling.samplePeriodMs = 20
|
||||
previewPath.samplePeriodMs = 20
|
||||
executionPath.samplePeriodMs = 20
|
||||
pathSampling.samplePeriodMs = 50
|
||||
previewPath.samplePeriodMs = 50
|
||||
executionPath.samplePeriodMs = 50
|
||||
startupSequence
|
||||
iniDisplay
|
||||
halNets
|
||||
@@ -323,10 +522,10 @@ gmoccapy_static_build=ok
|
||||
```text
|
||||
web.wasm.ready = true
|
||||
web.blockers = []
|
||||
web.previewPath.samplePeriodMs = 20
|
||||
web.previewPath.sampleCount = 3074
|
||||
web.executionPath.samplePeriodMs = 20
|
||||
web.executionPath.sampleCount = 569
|
||||
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
|
||||
@@ -749,8 +948,8 @@ path-comparison
|
||||
后续 native/Web evidence JSON 必须增加刀具预览路径和刀具执行路径:
|
||||
|
||||
```text
|
||||
working/evidence/native-xyzbc-trt-evidence.json.pathSampling.samplePeriodMs = 20
|
||||
working/evidence/web-xyzbc-trt-evidence.json.pathSampling.samplePeriodMs = 20
|
||||
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[]
|
||||
@@ -760,9 +959,9 @@ working/evidence/compare-xyzbc-trt-evidence.json.pathComparison
|
||||
|
||||
采样要求:
|
||||
|
||||
- `samplePeriodMs` 固定为 `20`,native/Web 两侧必须一致。
|
||||
- `samplePeriodMs` 固定为 `50`,native/Web 两侧必须一致。
|
||||
- 样本必须通过 `sampleIndex` 和 `timeMs` 对齐。
|
||||
- 若原始采集周期不同,采集脚本或 compare 脚本必须重采样为 20ms 后再比较。
|
||||
- 若原始采集周期不同,采集脚本或 compare 脚本必须重采样为 50ms 后再比较。
|
||||
- `previewPath` 只能表示预览/planner 路径;`executionPath` 必须来自真实执行反馈或 Web WASM task/HAL 执行反馈,不能用预览路径替代。
|
||||
|
||||
每个样本必须包含:
|
||||
@@ -786,8 +985,12 @@ compare 验收项:
|
||||
```text
|
||||
pathComparison.previewVsPreview
|
||||
pathComparison.executionVsExecution
|
||||
pathComparison.semanticExecutionVsSemanticExecution
|
||||
pathComparison.previewVsExecutionNative
|
||||
pathComparison.previewVsExecutionWeb
|
||||
lineExecutionComparison
|
||||
axisValuesByLineComparison
|
||||
gcodeExecutionProcessComparison
|
||||
```
|
||||
|
||||
每个对比项至少输出:
|
||||
@@ -909,6 +1112,89 @@ 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
|
||||
|
||||
Reference in New Issue
Block a user