chore: close wasm status contract work

This commit is contained in:
wangdequan
2026-07-08 09:20:47 -04:00
parent 97732ceb0b
commit e69333972c
69 changed files with 20435 additions and 495 deletions

View File

@@ -1,5 +1,123 @@
# 03-推进台账
## 2026-07-07 19:03 EDT - working 全部工作收口复验
### 本轮目标
按用户要求完成 `/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working` 中全部工作。先复核最新 `working` 任务文档和现有差异,再用 native/Web/compare/smoke/build/Task-HAL 验证闭环确认是否仍有未完成项。
### 已做事项
- 读取 `working/README.md``04-任务矩阵.md``05-验收证据.md``20-20260707-AXIS按钮LinuxCNC真实C++对标实施步骤.md``21-20260707-AXIS按钮LinuxCNC真实C++对标验收测试.md`,确认当前显式任务为 T-001 到 T-079最新重点是 C++ 功能级硬验收。
- 使用 `rg` 搜索 `TODO/待办/未完成/fail/blocker/requiredImprovements`,确认历史失败均已被后续 pass 记录覆盖,当前收口依据为最新 evidence JSON 和任务矩阵。
- 重新执行 Web 侧语法检查、Node smoke、静态 build、Task/HAL 状态矩阵、Task/HAL WASM/SDK smoke、browser smoke。
- 重新执行 native LinuxCNC evidence 采集、Web evidence 采集和 compare。
- 新增 T-080 收口复验记录,保留 T-079 的功能级 compare 实现记录。
### 执行命令
```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
compare.surfaceSummary.passCount=60
compare.surfaceSummary.failCount=0
compare.functionalSummary.status=pass
compare.functionalSummary.passCount=8
compare.functionalSummary.failCount=0
compare.requiredImprovements=[]
```
### 结论
当前 `working` 中 T-001 到 T-080 均为完成状态。按最新 native/Web/compare evidence 和 smoke/build/Task-HAL/browser 验证,本轮没有发现新增 fail、blocker、required improvement 或未完成工作20/21 号文档要求的 C++ 功能级硬验收仍为真实通过。
## 2026-07-07 18:57 EDT - AXIS C++ 功能级 compare 硬验收轮次
### 本轮目标
`20-20260707-AXIS按钮LinuxCNC真实C++对标实施步骤.md``21-20260707-AXIS按钮LinuxCNC真实C++对标验收测试.md`,把“不能只看 `compare 60/60 pass`”落成机器可读验收compare 必须同时输出 `surfaceSummary``functionalSummary`,并让功能级硬规则参与顶层 `status` 判定。
### 已做事项
- 修改 `tools/compare-xyzbc-trt-evidence.mjs`
- 保留旧 `summary/checks` 的 60 项兼容检查,新增同值 `surfaceSummary`
- 新增 `functionalChecks``functionalSummary`,覆盖 8 项硬规则:`cppTaskStateMachineParity``cppModeGateParity``cppHomingParity``cppRunGateParity``cppPauseResumeParity``cppStepParity``illegalCommandParity``realProgramExecutionParity`
- 顶层 `status` 改为表面检查和功能检查全部通过才为 `pass``requiredImprovements` 合并表面失败项与功能失败项。
- 刷新 Web evidence 和 compare evidence
- `working/evidence/web-xyzbc-trt-evidence.json`
- `working/evidence/compare-xyzbc-trt-evidence.json`
- 更新 `README.md``04-任务矩阵.md``05-验收证据.md`,新增 T-079 并记录功能级验收结论。
### 验证情况
```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
```
最新 evidence 摘要:
```text
web.collectedAt=2026-07-07T22:56:59.101Z
compare.comparedAt=2026-07-07T22:56:59.718Z
compare.status=pass
compare.surfaceSummary.checkCount=60
compare.surfaceSummary.passCount=60
compare.surfaceSummary.failCount=0
compare.functionalSummary.status=pass
compare.functionalSummary.checkCount=8
compare.functionalSummary.passCount=8
compare.functionalSummary.failCount=0
compare.requiredImprovements=[]
```
### 结论
20/21 号文档要求已落成可执行验收。当前 `compare 60/60 pass` 只作为 `surfaceSummary`;真实通过以 `functionalSummary.status=pass` 为准。本轮功能级硬检查 8/8 通过T-001 到 T-079 均为完成。
## 2026-07-07 18:18 EDT - AXIS 主控制按钮状态链路收敛轮次
### 本轮目标
@@ -74,7 +192,7 @@ compare.requiredImprovements=[]
### 结论
AXIS 主控制按钮状态链路已从 Web 自定义 `runState` 主导收敛为 LinuxCNC task/motion/home 状态事实主导。当前 T-001 到 T-078 均为完成,最新 Web evidence 和 compare 通过,仍为 `60/60 pass`
AXIS 主控制按钮状态链路已从 Web 自定义 `runState` 主导收敛为 LinuxCNC task/motion/home 状态事实主导。截至该轮 T-001 到 T-078 均为完成Web evidence 和 compare 通过,仍为 `60/60 pass`
## 2026-07-05 18:57 EDT - Pause 按钮 LinuxCNC AXIS 严格对标修复轮次

View File

@@ -80,6 +80,8 @@
| T-076 | 2026-07-04 18:12 EDT 真实执行复验与缺失功能工作计划 | 完成 | 重新执行 native LinuxCNC、Web evidence、Node smoke、browser smoke 和 compare`compare.status=pass``60/60 pass``blockers=[]`,缺失功能清单为空,后续按 `12-20260704-真实执行复验与缺失功能工作计划.md` 做变更后强制复验 |
| T-077 | 2026-07-05 用户要求完全对标复验与文档修订 | 完成 | 明确硬件相关排除边界;以 `/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini` 为 native 权威基线重新执行 native/Web/compare/build/smoke`compare.status=pass``60/60 pass``blockers=[]``requiredImprovements=[]` |
| T-078 | 2026-07-07 AXIS 主控制按钮状态链路收敛 | 完成 | 按 `18-20260707-AXIS主控制按钮调用链与Web完善指南.md` 完成 ESTOP、Power、Home、Run、Pause/Resume、Step 的 LinuxCNC task/motion/home 状态收敛Task/HAL WASM 暴露 `motionEnabled``homed[]``singleStepping``motionStepping`policy 统一门禁build、Node/WASM/browser smoke、Web evidence 和 compare 均通过,最新 `compare.status=pass``60/60 pass``blockers=[]``requiredImprovements=[]` |
| T-079 | 2026-07-07 AXIS 按钮 LinuxCNC C++ 功能级 compare 硬验收 | 完成 | 按 `20-20260707-AXIS按钮LinuxCNC真实C++对标实施步骤.md``21-20260707-AXIS按钮LinuxCNC真实C++对标验收测试.md` 增强 `tools/compare-xyzbc-trt-evidence.mjs`compare 输出 `surfaceSummary``functionalSummary`,并硬检查 `cppTaskStateMachineParity``cppModeGateParity``cppHomingParity``cppRunGateParity``cppPauseResumeParity``cppStepParity``illegalCommandParity``realProgramExecutionParity`;最新 `surfaceSummary=60/60 pass``functionalSummary=8/8 pass``requiredImprovements=[]` |
| T-080 | 2026-07-07 19:03 EDT working 全部工作收口复验 | 完成 | 重新执行 native LinuxCNC evidence、Web evidence、compare、Node smoke、build、Task/HAL 状态矩阵、Task/HAL WASM/SDK smoke、browser smoke最新 `compare.status=pass``surfaceSummary=60/60 pass``functionalSummary=8/8 pass``requiredImprovements=[]` |
状态说明:
@@ -87,7 +89,7 @@
- 待前置:代码已接入,但仍依赖未完成的外部或运行环境步骤。
- 待实现:已记录验收要求,仍需修改采集或对比脚本。
当前 T-001 到 T-078 均已完成T-047/T-048/T-049/T-050 是用户指出 `working/screenshots/web-simulation-full-process-20260703T051258Z` 截图问题后的页面/截图层真实执行闭环项。
当前 T-001 到 T-080 均已完成T-047/T-048/T-049/T-050 是用户指出 `working/screenshots/web-simulation-full-process-20260703T051258Z` 截图问题后的页面/截图层真实执行闭环项。
T-051 到 T-075 是 2026-07-04 新增的严格完整对标任务:以 `/home/mes123456/cnc_wams/linuxcnc` 源树和 LinuxCNC `xyzbc-trt` 真实执行为唯一 native 权威基线,当前已完成,最新 compare 为 60/60 passblockers=[]。
@@ -96,3 +98,7 @@ T-076 是 2026-07-04 18:12 EDT 的重新真实执行复验和缺失功能分析
T-077 是 2026-07-05 用户再次要求“除了硬件相关,在仿真的所有方面完全对标”后的复验与文档修订任务:最新 native/Web/compare/build/smoke 全部通过compare 为 60/60 passblockers=[]requiredImprovements=[]。
T-078 是 2026-07-07 按 AXIS 主控制按钮调用链完善指南完成的状态链路收敛任务Web 主控制按钮已统一到 LinuxCNC task/motion/home 状态事实,最新 Web evidence/compare/build/smoke 均通过compare 为 60/60 passblockers=[]requiredImprovements=[]。
T-079 是 2026-07-07 按 20/21 号文档完成的功能级硬验收任务:旧 `summary/checks` 保持 60 项表面兼容检查,新增 `functionalChecks/functionalSummary` 作为真实通过判定;最新 compare 为 `surfaceSummary=60/60 pass``functionalSummary=8/8 pass`
T-080 是 2026-07-07 19:03 EDT 针对用户“完成 working 中全部工作”的收口复验任务:重新采集 native/Web evidence 并重跑 compare、smoke、build、Task/HAL 状态矩阵和浏览器验证,确认所有 working 任务仍处于完成状态。

View File

@@ -1,5 +1,138 @@
# 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` 完成主控制按钮状态链路收敛,覆盖:

View File

@@ -22,6 +22,8 @@
当前新增关注点:
- 2026-07-07 19:03 EDT 已按“完成 working 中全部工作”重新执行当前收口复验native LinuxCNC evidence、Web evidence、compare、Node smoke、build、Task/HAL 状态矩阵、Task/HAL WASM/SDK smoke、browser smoke 均通过;最新 `compare.status=pass``surfaceSummary=60/60 pass``functionalSummary=8/8 pass``requiredImprovements=[]`
- 2026-07-07 18:57 EDT 已完成 20/21 号文档要求的功能级 compare 增强:`compare-xyzbc-trt-evidence.json` 现在同时输出 `surfaceSummary``functionalSummary`;最新结果为 `surfaceSummary=60/60 pass``functionalSummary=8/8 pass``requiredImprovements=[]`,硬规则覆盖 `cppTaskStateMachineParity``cppModeGateParity``cppHomingParity``cppRunGateParity``cppPauseResumeParity``cppStepParity``illegalCommandParity``realProgramExecutionParity`
- 2026-07-07 18:35 EDT 已将 19 号源码分析拆分为 20 号实施步骤和 21 号验收测试。后续结论必须区分 `surfaceSummary``functionalSummary``compare 60/60 pass` 只代表表面规则通过,真实通过必须证明 Web 行为符合 LinuxCNC C++ `emctaskmain.cc``emctask.cc``taskintf.cc``motion/command.c``control.c``homing.c` 的状态机和真实程序执行结果。
- 2026-07-07 18:18 EDT 已完成 AXIS 主控制按钮状态链路收敛:`ESTOP/RESET/Power/Home/Run/Pause/Resume/Step` 统一以 LinuxCNC `task.state + task.mode + interpState + motion/home status` 为事实来源Web policy、store、Task/HAL WASM、evidence 采集和 smoke/compare 已同步,最新 compare 为 `60/60 pass``blockers=[]``requiredImprovements=[]`
- 2026-07-06 00:22 EDT 新任务:完全对标 `/home/mes123456/cnc_wams/linuxcnc``xyzbc-trt` 的 AXIS/task 状态联锁,重整 Web 仿真系统 `解除 ESTOP``上电``Home All``Run``暂停/继续` 功能逻辑;要求修复当前混乱状态流,并通过源码对照、自动化 smoke、browser 验证和 evidence/compare 严格复验。

View File

@@ -1,17 +1,36 @@
{
"apiName": "xyzbc-trt-native-web-evidence-comparison",
"status": "pass",
"comparedAt": "2026-07-07T22:17:58.519Z",
"comparedAt": "2026-07-07T23:03:43.547Z",
"nativePath": "/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/native-xyzbc-trt-evidence.json",
"webPath": "/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json",
"summary": {
"checkCount": 60,
"passCount": 60,
"failCount": 0,
"legacyComparePassCount": 60,
"legacyCompareFailCount": 0,
"blockers": [],
"nativeStatus": "ok",
"webStatus": "ready-for-wasm-runtime"
},
"surfaceSummary": {
"checkCount": 60,
"passCount": 60,
"failCount": 0,
"legacyComparePassCount": 60,
"legacyCompareFailCount": 0,
"blockers": [],
"nativeStatus": "ok",
"webStatus": "ready-for-wasm-runtime"
},
"functionalSummary": {
"status": "pass",
"checkCount": 8,
"passCount": 8,
"failCount": 0,
"requiredImprovements": []
},
"checks": [
{
"category": "profile",
@@ -1733,10 +1752,10 @@
"states": [
{
"name": "before",
"taskState": 4,
"taskMode": 1,
"interpState": 1,
"execState": 2,
"taskState": 0,
"taskMode": 0,
"interpState": 0,
"execState": 0,
"homed": [
false,
false,
@@ -1744,7 +1763,7 @@
false,
false
],
"file": "/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc"
"file": ""
},
{
"name": "after",
@@ -2343,6 +2362,223 @@
}
}
],
"functionalChecks": [
{
"category": "functional",
"requirement": "cppTaskStateMachineParity",
"status": "pass",
"evidence": {
"linuxCncRules": [
"emcTaskSetState",
"determineState",
"EMC_STAT.task"
],
"nativeReady": true,
"webReady": true,
"taskPolicy": {
"taskState": "estop-reset",
"taskMode": "manual",
"interpState": "idle",
"canJog": false,
"canHome": false,
"canRunAuto": false,
"canExecuteMdi": false,
"canPause": false,
"canResume": false,
"canSpindle": false,
"canOverride": false
}
}
},
{
"category": "functional",
"requirement": "cppModeGateParity",
"status": "pass",
"evidence": {
"linuxCncRules": [
"emcTaskSetMode",
"AUTO non-idle/manual gate",
"AXIS manual_ok/mdi gate"
],
"nativeWrongModeRepresented": true,
"webWrongModeRepresented": true,
"taskPolicy": {
"taskState": "estop-reset",
"taskMode": "manual",
"interpState": "idle",
"canJog": false,
"canHome": false,
"canRunAuto": false,
"canExecuteMdi": false,
"canPause": false,
"canResume": false,
"canSpindle": false,
"canOverride": false
}
}
},
{
"category": "functional",
"requirement": "cppHomingParity",
"status": "pass",
"evidence": {
"linuxCncRules": [
"EMC_JOINT_HOME",
"EMCMOT_JOINT_HOME",
"homing.c HOME_START/HOME_FINISHED"
],
"nativeTaskStateFlowReady": true,
"webHoming": {
"allConfiguredAxesHomed": true,
"taskPolicyCanHome": false
}
}
},
{
"category": "functional",
"requirement": "cppRunGateParity",
"status": "pass",
"evidence": {
"linuxCncRules": [
"EMC_TASK_PLAN_RUN",
"all_homed",
"program open",
"motion plan loaded"
],
"nativeErrorPaths": [
"missing-hal-pin",
"bad-switchkins-type",
"run-while-estop",
"run-before-homed",
"wrong-mode",
"missing-file",
"remap-stop",
"toolchange-not-confirmed"
],
"webErrorPaths": [
"missing-hal-pin",
"bad-switchkins-type",
"run-while-estop",
"run-before-homed",
"wrong-mode",
"missing-file",
"remap-stop",
"toolchange-not-confirmed"
],
"webExecution": {
"semanticBoundary": "linuxcnc_task_motion_hal_wasm_simulation_runtime",
"sessionProgramPath": "/work/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt/demos/xyzbc_switchkins.ngc",
"completed": true,
"eventCount": 30
},
"executionPath": {
"nativeSampleCount": 4,
"webSampleCount": 228
}
}
},
{
"category": "functional",
"requirement": "cppPauseResumeParity",
"status": "pass",
"evidence": {
"linuxCncRules": [
"EMC_TASK_PLAN_PAUSE",
"EMC_TASK_PLAN_RESUME",
"EMCMOT_PAUSE",
"EMCMOT_RESUME"
],
"taskPolicy": {
"canPause": false,
"canResume": false,
"interpState": "idle"
},
"semanticExecutionMachineStateMismatchCount": 0
}
},
{
"category": "functional",
"requirement": "cppStepParity",
"status": "pass",
"evidence": {
"linuxCncRules": [
"EMC_TASK_PLAN_STEP",
"EMCMOT_STEP",
"motion id/current line progression"
],
"lineExecution": {
"nativeTraceCount": 64,
"webTraceCount": 64
},
"gcodeExecution": {
"nativeExecutionStepCount": 128,
"webExecutionStepCount": 128
}
}
},
{
"category": "functional",
"requirement": "illegalCommandParity",
"status": "pass",
"evidence": {
"linuxCncRules": [
"runtime command rejection",
"UI policy gate consistency",
"operator error parity"
],
"requiredIllegalPaths": [
"run-while-estop",
"run-before-homed",
"wrong-mode",
"missing-file",
"bad-switchkins-type",
"remap-stop"
],
"nativeErrorPaths": [
"missing-hal-pin",
"bad-switchkins-type",
"run-while-estop",
"run-before-homed",
"wrong-mode",
"missing-file",
"remap-stop",
"toolchange-not-confirmed"
],
"webErrorPaths": [
"missing-hal-pin",
"bad-switchkins-type",
"run-while-estop",
"run-before-homed",
"wrong-mode",
"missing-file",
"remap-stop",
"toolchange-not-confirmed"
],
"limitInterlocksStatus": "pass"
}
},
{
"category": "functional",
"requirement": "realProgramExecutionParity",
"status": "pass",
"evidence": {
"linuxCncRules": [
"real G-code line/currentLine/motion/path/status parity"
],
"runtimeExecutionStatus": "pass",
"semanticExecution": {
"nativeSampleCount": 1300,
"webSampleCount": 1300,
"maxTcpErrorMm": 3.552713678800501e-15,
"maxJointError": 3.552713678800501e-15,
"maxToolAxisAngleDeg": 0
},
"lineExecutionStatus": "pass",
"axisValuesStatus": "pass",
"gcodeExecutionStatus": "pass"
}
}
],
"pathComparison": {
"samplePeriodMs": 50,
"previewVsPreview": {

View File

@@ -1,7 +1,7 @@
{
"apiName": "xyzbc-trt-native-linuxcnc-evidence",
"status": "ok",
"collectedAt": "2026-07-05T18:56:53-0400",
"collectedAt": "2026-07-07T19:03:34-0400",
"executionMode": "auto-run",
"sourceRoot": "/home/mes123456/cnc_wams/linuxcnc",
"iniPath": "/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
@@ -11,30 +11,33 @@
"linuxcncRuntime": {
"pythonApi": true,
"processes": [
"mes1234+ 10220 1852 0 18:06 ? 00:00:00 linuxcncsvr -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 10231 1852 0 18:06 ? 00:00:23 milltask -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 10233 1852 0 18:06 ? 00:00:10 halui -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 10270 1852 2 18:06 ? 00:01:14 /usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/xyzbc-trt-gui",
"mes1234+ 10394 1852 5 18:06 ? 00:02:52 /usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/axis -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 18832 3067 20 18:56 ? 00:00:00 python3 /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 90",
"mes1234+ 18840 18823 0 18:56 ? 00:00:00 sh -c node ../tools/collect-web-xyzbc-trt-evidence.mjs",
"mes1234+ 18841 18840 99 18:56 ? 00:00:00 node ../tools/collect-web-xyzbc-trt-evidence.mjs"
"mes1234+ 51279 3515 1 19:03 ? 00:00:00 python3 /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 90",
"mes1234+ 51359 1884 0 19:03 ? 00:00:00 linuxcncsvr -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 51370 1884 1 19:03 ? 00:00:00 milltask -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 51372 1884 0 19:03 ? 00:00:00 halui -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 51409 1884 4 19:03 ? 00:00:00 /usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/xyzbc-trt-gui",
"mes1234+ 51539 1884 10 19:03 ? 00:00:00 /usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/axis -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini"
],
"startup": {
"autostartRequested": true,
"startedByCollector": false,
"logPath": "/tmp/xyzbc-trt-native-evidence-linuxcnc.log"
"startedByCollector": true,
"logPath": "/tmp/xyzbc-trt-native-evidence-linuxcnc.log",
"pid": 51286,
"command": [
"/home/mes123456/cnc_wams/linuxcnc/scripts/linuxcnc",
"/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini"
]
}
},
"before": {
"taskState": 4,
"taskMode": 1,
"interpState": 1,
"execState": 2,
"file": "/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc",
"taskState": 0,
"taskMode": 0,
"interpState": 0,
"execState": 0,
"file": "",
"currentLine": 0,
"readLine": 0,
"axisMask": 55,
"axisMask": 0,
"homed": [
0,
0,
@@ -101,93 +104,93 @@
"w": 0.0
},
"velocity": 0.0,
"feedrate": 1.0,
"rapidrate": 1.0,
"feedrate": 0.0,
"rapidrate": 0.0,
"spindle": [
{
"brake": 1,
"brake": 0,
"direction": 0,
"enabled": 0,
"override_enabled": true,
"override_enabled": false,
"speed": 0.0,
"override": 1.0,
"override": 0.0,
"homed": false,
"orient_state": 0,
"orient_fault": 0
},
{
"brake": 1,
"brake": 0,
"direction": 0,
"enabled": 0,
"override_enabled": false,
"speed": 0.0,
"override": 1.0,
"override": 0.0,
"homed": false,
"orient_state": 0,
"orient_fault": 0
},
{
"brake": 1,
"brake": 0,
"direction": 0,
"enabled": 0,
"override_enabled": false,
"speed": 0.0,
"override": 1.0,
"override": 0.0,
"homed": false,
"orient_state": 0,
"orient_fault": 0
},
{
"brake": 1,
"brake": 0,
"direction": 0,
"enabled": 0,
"override_enabled": false,
"speed": 0.0,
"override": 1.0,
"override": 0.0,
"homed": false,
"orient_state": 0,
"orient_fault": 0
},
{
"brake": 1,
"brake": 0,
"direction": 0,
"enabled": 0,
"override_enabled": false,
"speed": 0.0,
"override": 1.0,
"override": 0.0,
"homed": false,
"orient_state": 0,
"orient_fault": 0
},
{
"brake": 1,
"brake": 0,
"direction": 0,
"enabled": 0,
"override_enabled": false,
"speed": 0.0,
"override": 1.0,
"override": 0.0,
"homed": false,
"orient_state": 0,
"orient_fault": 0
},
{
"brake": 1,
"brake": 0,
"direction": 0,
"enabled": 0,
"override_enabled": false,
"speed": 0.0,
"override": 1.0,
"override": 0.0,
"homed": false,
"orient_state": 0,
"orient_fault": 0
},
{
"brake": 1,
"brake": 0,
"direction": 0,
"enabled": 0,
"override_enabled": false,
"speed": 0.0,
"override": 1.0,
"override": 0.0,
"homed": false,
"orient_state": 0,
"orient_fault": 0
@@ -1011,7 +1014,12 @@
}
]
},
"errors": [],
"errors": [
[
11,
"all joints must be homed before going into coordinated mode"
]
],
"pathSampling": {
"samplePeriodMs": 50,
"timeBase": "program-relative-ms",
@@ -205684,10 +205692,10 @@
"states": [
{
"name": "before",
"taskState": 4,
"taskMode": 1,
"interpState": 1,
"execState": 2,
"taskState": 0,
"taskMode": 0,
"interpState": 0,
"execState": 0,
"homed": [
false,
false,
@@ -205695,7 +205703,7 @@
false,
false
],
"file": "/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc"
"file": ""
},
{
"name": "after",
@@ -205814,8 +205822,8 @@
"absolutePath": "/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt_cmds.hal",
"exists": true,
"bytes": 8447,
"mtime": "2026-07-05T22:06:52Z",
"sha256": "762ab7234e5f89ba04596ef97aea471a6e3b4f2decf10a66b958502fa7612059"
"mtime": "2026-07-07T23:03:25Z",
"sha256": "a660ffc40895329ecd85e859a8998b334d433fb023a240e0c46b698fa495a0bd"
},
{
"role": "tool-table",
@@ -205834,7 +205842,7 @@
"absolutePath": "/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc.var",
"exists": true,
"bytes": 1666,
"mtime": "2026-07-05T22:56:53Z",
"mtime": "2026-07-07T23:03:26Z",
"sha256": "163bbf80485fe2fe12700c1acb4b05eff774df68176d17e4eef5de8a7024c1ae"
},
{
@@ -206039,8 +206047,13 @@
"ini": "/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"startup": {
"autostartRequested": true,
"startedByCollector": false,
"logPath": "/tmp/xyzbc-trt-native-evidence-linuxcnc.log"
"startedByCollector": true,
"logPath": "/tmp/xyzbc-trt-native-evidence-linuxcnc.log",
"pid": 51286,
"command": [
"/home/mes123456/cnc_wams/linuxcnc/scripts/linuxcnc",
"/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini"
]
},
"environmentSnapshot": {
"LINUXCNC_HOME": null,
@@ -206050,14 +206063,12 @@
"PYTHONPATH": "/home/mes123456/cnc_wams/linuxcnc/lib/python"
},
"processes": [
"mes1234+ 10220 1852 0 18:06 ? 00:00:00 linuxcncsvr -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 10231 1852 0 18:06 ? 00:00:23 milltask -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 10233 1852 0 18:06 ? 00:00:10 halui -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 10270 1852 2 18:06 ? 00:01:14 /usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/xyzbc-trt-gui",
"mes1234+ 10394 1852 5 18:06 ? 00:02:52 /usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/axis -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 18832 3067 21 18:56 ? 00:00:00 python3 /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 90",
"mes1234+ 18840 18823 0 18:56 ? 00:00:00 sh -c node ../tools/collect-web-xyzbc-trt-evidence.mjs",
"mes1234+ 18841 18840 99 18:56 ? 00:00:00 node ../tools/collect-web-xyzbc-trt-evidence.mjs"
"mes1234+ 51279 3515 1 19:03 ? 00:00:00 python3 /home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/tools/collect-native-xyzbc-trt-evidence.py --run --timeout 90",
"mes1234+ 51359 1884 0 19:03 ? 00:00:00 linuxcncsvr -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 51370 1884 1 19:03 ? 00:00:00 milltask -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 51372 1884 0 19:03 ? 00:00:00 halui -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini",
"mes1234+ 51409 1884 4 19:03 ? 00:00:00 /usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/xyzbc-trt-gui",
"mes1234+ 51539 1884 10 19:03 ? 00:00:00 /usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/axis -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini"
],
"semanticBoundary": "native_launch_entrypoints_environment_process_snapshot"
},
@@ -206769,7 +206780,7 @@
{
"path": "/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt_cmds.hal",
"exists": true,
"sha256": "762ab7234e5f89ba04596ef97aea471a6e3b4f2decf10a66b958502fa7612059",
"sha256": "a660ffc40895329ecd85e859a8998b334d433fb023a240e0c46b698fa495a0bd",
"commands": [
{
"line": 30,
@@ -208711,15 +208722,15 @@
"ready": true,
"fields": {
"estopPower": {
"beforeTaskState": 4,
"beforeTaskState": 0,
"afterTaskState": 4
},
"mode": {
"before": 1,
"before": 0,
"after": 1
},
"interpTask": {
"before": 1,
"before": 0,
"after": 1,
"runtimeFinal": 1
},
@@ -209168,7 +209179,7 @@
"absolutePath": "/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc.var",
"exists": true,
"bytes": 1666,
"mtime": "2026-07-05T22:56:53Z",
"mtime": "2026-07-07T23:03:26Z",
"sha256": "163bbf80485fe2fe12700c1acb4b05eff774df68176d17e4eef5de8a7024c1ae"
},
"toolOffsetPins": [
@@ -209701,7 +209712,7 @@
},
"strictAcceptance": {
"ready": true,
"frozenManifestSha256": "e9864f23dff8ca31f0f2060c704dfff235d42e6ea60c5f4034c85ebca036eecc",
"frozenManifestSha256": "6539677d13048f1d57380d80dc70675591810710083d87cd36dffd9d6952e9f4",
"evidenceFiles": [
"working/evidence/native-xyzbc-trt-evidence.json",
"working/evidence/web-xyzbc-trt-evidence.json",

View File

@@ -1,7 +1,7 @@
{
"apiName": "xyzbc-trt-web-opfs-wasm-evidence",
"status": "ready-for-wasm-runtime",
"collectedAt": "2026-07-07T22:17:57.900Z",
"collectedAt": "2026-07-07T23:03:42.947Z",
"profile": {
"id": "xyzbc-trt",
"machineName": "sim-xyzbc-trt-kins (switchkins)",