完成 xyzbc-trt working 任务复核

This commit is contained in:
mes123456
2026-07-02 23:53:51 -04:00
parent b279fa17fd
commit 2722fe7f3c
33 changed files with 376795 additions and 171883 deletions

View File

@@ -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 feedbacknative 来自 `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