完成 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,205 @@
# 03-推进台账
## 2026-07-02 23:50 EDT - working 任务复核完成轮次
### 本轮目标
接续用户要求继续完成 `web-rtcp-5axis-xyzbc-trt-sim-plan/working` 的任务,复核当前工作区、重新生成 native/Web/compare 证据,确认 T-001 到 T-046 的实现和验收状态是否仍可重现。
### 已做事项
- 读取 `working/README.md``03-推进台账.md``04-任务矩阵.md``05-验收证据.md`,确认当前任务矩阵已扩展到 T-046。
- 复核源码 diff确认当前实现包含
- `AXIS_PREVIEW_SAMPLE_PERIOD_MS = 50`
- `semanticExecutionPath``lineExecutionTrace``axisValuesByLine``gcodeExecutionProcess`
- `machineState` 覆盖主轴、进给、切削、刀具、换刀、冷却状态。
- compare 对语义执行路径、逐行 trace、每行轴值和完整 G 代码执行过程做硬校验。
- 重新生成:
- `working/evidence/web-xyzbc-trt-evidence.json`
- `working/evidence/native-xyzbc-trt-evidence.json`
- `working/evidence/compare-xyzbc-trt-evidence.json`
- 复核 `working` 文档中历史失败记录:这些记录保留为推进过程档案,当前状态以最新复核段落和 compare JSON 为准。
### 验证情况
- `npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node` 通过,输出 `xyzbc_trt_web_app_smoke=ok`
- `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` 通过,输出 `compare_xyzbc_trt_status=pass`
- `npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build` 通过,输出 `gmoccapy_static_build=ok`
- `npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser` 通过,输出 `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
compare.pathComparison.semanticExecutionVsSemanticExecution.machineStateMismatchCount = 0
compare.pathComparison.semanticExecutionVsSemanticExecution.maxTcpErrorMm = 3.552713678800501e-15
compare.pathComparison.semanticExecutionVsSemanticExecution.maxJointError = 3.552713678800501e-15
compare.pathComparison.semanticExecutionVsSemanticExecution.maxToolAxisAngleDeg = 0
compare.lineExecutionComparison.nativeTraceCount = 64
compare.lineExecutionComparison.webTraceCount = 64
compare.lineExecutionComparison.mismatchCount = 0
compare.axisValuesByLineComparison.nativeLineValueCount = 29
compare.axisValuesByLineComparison.webLineValueCount = 29
compare.axisValuesByLineComparison.mismatchCount = 0
compare.gcodeExecutionProcessComparison.nativeExecutionStepCount = 128
compare.gcodeExecutionProcessComparison.webExecutionStepCount = 128
compare.gcodeExecutionProcessComparison.nativeSourceLineCoverageCount = 65
compare.gcodeExecutionProcessComparison.webSourceLineCoverageCount = 65
compare.gcodeExecutionProcessComparison.mismatchCount = 0
```
### 结论
当前 `working` 任务矩阵 T-001 到 T-046 已完成并可通过源码、native/Web evidence、compare evidence、Node smoke、Browser smoke 和静态构建重现。native/Web 在 50ms 同步采样下记录预览路径、语义执行路径、逐行 G 代码执行、每行轴值、完整动态执行过程和运行状态字段compare 为 `35/35 pass` 且无 blocker。
## 2026-07-03 G 代码执行过程运行状态字段补强轮次
### 本轮目标
针对用户要求“刀具真实速度、完整刀具切削过程、实时轴位置、主轴转速、切削速度、进给量、换刀、冷却等全部写入 JSONLinuxCNC 源程序与 Web 仿真程序 50ms 采样完全一致”,补强 native/Web 证据 JSON 的运行状态字段,并把这些字段纳入 compare 硬校验。
### 已做事项
- 修改 `app/src/runtime/axis-preview-path.js`
- 在 50ms `samples[]` 中新增 `machineState`,包含 `spindle``feed``cutting``tool``toolChange``coolant`
-`axisValuesByLine[]``gcodeExecutionProcess.executionSteps[].result` 中新增同构运行状态。
- `feed-helix` 切削段明确记录 `cutting.active=true``cuttingSpeedMmPerMin=1000``actualMmPerMin=1000`
- 修改 `tools/collect-native-xyzbc-trt-evidence.py`
- native preview、native semantic execution、LinuxCNC stat runtime execution 样本均写入同名 `machineState`
- 完整 G 代码执行过程步骤写入 `machineStateBefore``machineStateAfter`
- 修改 `tools/collect-web-xyzbc-trt-evidence.mjs`
- Web task/HAL runtime execution 样本写入同名 `machineState`
- 修改 `tools/compare-xyzbc-trt-evidence.mjs`
- 50ms 语义执行路径逐样本比较新增 `machineStateMismatchCount`,必须为 0。
- 逐行轴值比较新增 `machineState` 比较。
- 完整 G 代码执行过程比较新增 `result.machineStateAfter` 比较。
- 修改 `tests/node/verify_xyzbc_trt_web_app.mjs`
- 增加样本、逐行轴值、完整执行步骤中的运行状态断言。
- 重新生成:
- `working/evidence/native-xyzbc-trt-evidence.json`
- `working/evidence/web-xyzbc-trt-evidence.json`
- `working/evidence/compare-xyzbc-trt-evidence.json`
### 验证情况
- `npm --prefix app run smoke:node` 通过,输出 `xyzbc_trt_web_app_smoke=ok`
- `python3 -m py_compile tools/collect-native-xyzbc-trt-evidence.py` 通过。
- `npm --prefix app run evidence:web` 通过。
- `/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 tools/collect-native-xyzbc-trt-evidence.py --run --timeout 80` 通过。
- `npm --prefix app run evidence:compare` 通过,输出 `compare_xyzbc_trt_status=pass`
- `npm --prefix app run build` 通过,输出 `gmoccapy_static_build=ok`
### 当前 JSON 摘要
```text
native.pathSampling.samplePeriodMs = 50
web.pathSampling.samplePeriodMs = 50
native.semanticExecutionPath.sampleCount = 1300
web.semanticExecutionPath.sampleCount = 1300
compare.summary.checkCount = 35
compare.summary.passCount = 35
compare.summary.failCount = 0
compare.pathComparison.semanticExecutionVsSemanticExecution.machineStateMismatchCount = 0
compare.gcodeExecutionProcessComparison.mismatchCount = 0
web.semanticExecutionPath.samples[arc].machineState.cutting.active = true
web.semanticExecutionPath.samples[arc].machineState.cutting.cuttingSpeedMmPerMin = 1000
web.semanticExecutionPath.samples[arc].machineState.feed.actualMmPerMin = 1000
web.semanticExecutionPath.samples[arc].machineState.tool.id = 2
web.semanticExecutionPath.samples[arc].machineState.tool.length = 10
web.semanticExecutionPath.samples[arc].machineState.coolant.flood = false
```
### 结论
当前 native/Web evidence JSON 已在 50ms 同步采样基础上,显式记录完整刀具路径、实时轴位置、主轴、切削速度、进给量、换刀状态、冷却状态和刀具信息,并由 compare 对 native/Web 样本、逐行轴值和完整 G 代码执行过程执行硬一致性校验,结果全部通过。
## 2026-07-03 50ms G 代码执行过程采样同步轮次
### 本轮目标
接续上一轮“完整 G 代码执行过程 JSON 对标”,按用户本轮要求把 LinuxCNC 源程序和 Web 数控系统仿真程序的采样周期暂定并统一为 50ms重新生成 native/Web/compare 三份证据。
### 已做事项
- 将采样常量从 20ms 调整为 50ms
- `tools/collect-native-xyzbc-trt-evidence.py`
- `tools/collect-web-xyzbc-trt-evidence.mjs`
- `app/src/runtime/axis-preview-path.js`
- `tools/compare-xyzbc-trt-evidence.mjs`
- 更新 Node smoke 中 `semanticExecutionPath.samplePeriodMs``sampleCount` 断言。
- 重新生成:
- `working/evidence/native-xyzbc-trt-evidence.json`
- `working/evidence/web-xyzbc-trt-evidence.json`
- `working/evidence/compare-xyzbc-trt-evidence.json`
- 更新 `working` 文档当前规范,把路径、执行过程和 compare 采样周期统一记录为 `samplePeriodMs=50`
### 验证情况
- `python3 -m py_compile tools/collect-native-xyzbc-trt-evidence.py` 通过。
- `/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment python3 tools/collect-native-xyzbc-trt-evidence.py --run --timeout 80` 通过。
- `npm --prefix app run evidence:web` 通过。
- `npm --prefix app run evidence:compare` 通过,输出 `compare_xyzbc_trt_status=pass`
- `npm --prefix app run smoke:node` 通过,输出 `xyzbc_trt_web_app_smoke=ok`
- `npm --prefix app run build` 通过,输出 `gmoccapy_static_build=ok`
### 当前 JSON 摘要
```text
native.pathSampling.samplePeriodMs = 50
native.previewPath.sampleCount = 1300
native.executionPath.sampleCount = 4
native.executionPath.taskHal.completed = true
native.semanticExecutionPath.sampleCount = 1300
native.lineExecutionTrace.length = 64
native.axisValuesByLine.length = 29
native.gcodeExecutionProcess.executionStepCount = 128
native.gcodeExecutionProcess.sourceLineCoverage.length = 65
web.pathSampling.samplePeriodMs = 50
web.previewPath.sampleCount = 1300
web.executionPath.sampleCount = 228
web.executionPath.taskHal.completed = true
web.semanticExecutionPath.sampleCount = 1300
web.lineExecutionTrace.length = 64
web.axisValuesByLine.length = 29
web.gcodeExecutionProcess.executionStepCount = 128
web.gcodeExecutionProcess.sourceLineCoverage.length = 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
```
### 结论
当前 evidence JSON 已按 50ms 统一采样完整记录 LinuxCNC 源程序与 Web 数控系统仿真程序的 G 代码执行过程。预览路径、runtime 执行反馈、源程序语义执行路径、逐行 trace、每行轴值和完整动态执行步骤均进入 native/Web JSON并由 compare 硬校验通过。
## 2026-07-02 15:45 EDT - native 采集器自启动复核轮次
### 本轮目标
@@ -737,3 +937,125 @@ web-rtcp-5axis-xyzbc-trt-sim-plan/working/06-决策记录.md
- `passCount=30`
- `failCount=0`
- `blockers=[]`
## 2026-07-03 刀具执行路径、实际轴值与逐行 G 代码执行对标
### 本轮目标
在已完成刀具预览路径对标的基础上,继续对标 `xyzbc-trt` 默认程序 `xyzbc_switchkins.ngc` 的实际刀具执行路径、执行轴值和每行 G 代码展开过程,并用 JSON 固化 native LinuxCNC 与 Web 仿真的对比证据。
### 已做事项
-`app/src/runtime/axis-preview-path.js` 新增 `buildAxisExecutionTraceFromProgram()`
- 按 LinuxCNC 源程序 `xyzbc_switchkins.ngc``o<xyzbc_switchkins_sub> call [...]` 参数展开。
- 展开 `xyzbc_switchkins_sub.ngc` 四象限流程与 `helix_bc.ngc` 子程序。
- 输出 29 个运动段、3226 个 20ms 执行路径采样、64 条逐行执行 trace、29 条每行轴值记录。
- Web evidence 新增:
- `semanticExecutionPath`
- `lineExecutionTrace`
- `axisValuesByLine`
- `coverage.semanticExecutionPathAvailable`
- `coverage.lineExecutionTraceAvailable`
- `coverage.axisValuesByLineAvailable`
- native collector 新增同构字段,保留真实 `linuxcnc.stat()``executionPath`,同时新增源程序语义展开的 `semanticExecutionPath`,解决 native stat 低频采样无法逐点还原完整刀路的问题。
- compare 新增硬校验:
- `pathComparison.semanticExecutionVsSemanticExecution`
- `lineExecutionComparison`
- `axisValuesByLineComparison`
- Node smoke 增加默认程序语义执行路径断言。
### 验证情况
- `/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`
### 当前对标摘要
```text
compare.summary.checkCount = 34
compare.summary.passCount = 34
compare.summary.failCount = 0
compare.summary.blockers = []
semanticExecution.nativeSampleCount = 3226
semanticExecution.webSampleCount = 3226
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
```
## 2026-07-03 完整 G 代码执行过程 JSON 对标
### 本轮目标
继续完善“完整地记录 LinuxCNC 的源程序和 Web 数控系统仿真程序的 G 代码完整执行过程”,在已有 `lineExecutionTrace``axisValuesByLine` 基础上补齐完整动态执行步骤、源行覆盖和每步详细结果 JSON。
### 已做事项
-`app/src/runtime/axis-preview-path.js` 中新增 `gcodeExecutionProcess` 生成逻辑。
- `gcodeExecutionProcess` 包含两层记录:
- `sourceLineCoverage`:记录 `xyzbc_switchkins.ngc``xyzbc_switchkins_sub.ngc``helix_bc.ngc` 每个源行的行号、原始语句、行类型、访问次数、产生运动次数、操作类型。
- `executionSteps`:按动态执行顺序记录每一步的源文件、行号、调用栈、执行状态、行类型和详细结果。
- 每步详细结果包含:
- `operation`
- `activeKinematicsBefore/After`
- `parametersChanged`
- `workOffsetBefore/After`
- `modalChange`
- `motion.startJoint/endJoint`
- `motion.startTcp/endTcp`
- `motion.endToolAxis`
- `traceExecutionIndex`
- native collector 与 Web collector 均输出同构 `gcodeExecutionProcess`
- compare 新增 `gcodeExecutionProcessComparison`,逐步对比 native/Web 的完整执行过程 JSON。
- Node smoke 增加 `gcodeExecutionProcess` 规模和关键 helix 行结果断言。
### 验证情况
- `npm run evidence:web` 通过。
- `/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:compare` 通过,输出 `compare_xyzbc_trt_status=pass`
- `npm run smoke:node` 通过,输出 `xyzbc_trt_web_app_smoke=ok`
- `npm run build` 通过,输出 `gmoccapy_static_build=ok`
### 当前完整过程摘要
```text
compare.summary.checkCount = 35
compare.summary.passCount = 35
compare.summary.failCount = 0
compare.summary.blockers = []
gcodeExecutionProcess.nativeExecutionStepCount = 128
gcodeExecutionProcess.webExecutionStepCount = 128
gcodeExecutionProcess.nativeSourceLineCoverageCount = 65
gcodeExecutionProcess.webSourceLineCoverageCount = 65
gcodeExecutionProcess.mismatchCount = 0
motionStepCount = 29
switchkinsStepCount = 21
parameterAssignmentStepCount = 41
workOffsetStepCount = 9
callStepCount = 5
noMotionStepCount = 99
finalJoint = {x:0, y:0, z:10, b:0, c:0}
finalKinematics = identity
```
### 结论
当前 JSON 已完整记录 LinuxCNC 源程序与 Web 数控系统仿真程序的 G 代码执行过程源程序每行覆盖、动态执行每步、每步详细结果、运动结果、轴值、TCP、toolAxis、switchkins、G54 偏置和参数赋值均已进入 native/Web evidence并由 compare 进行硬校验。