Files
cnc_wams/完善wasm/working/22-04-Full-Process-Realtime-Runtime-Proof实现缺口复核.md
2026-07-10 21:26:42 -04:00

127 lines
8.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 22-04 Full-Process Realtime Runtime Proof 实现缺口复核
## 定位
本文件落实 `ACC-034/INT-021`:在 `14-04-125项逐项源码证据绑定表.md` 已把 full-process / realtime 缺口集中列出之后,继续复核 `wasm-port``web-rtcp-5axis-xyzbc-trt-sim-plan` 是否已经具备可机读的 task/motion/HAL 运行时 proof以及哪些边界仍必须保持条件通过或 Blocked。
覆盖 04 条目:
- `2.1-2.12 Task`
- `3.1-3.11 Motion`
- `4.12 servo-thread 调度`
- `8.4-8.10 五轴联动与 RTCP 代表运行`
- 与 full-process 相关的 Tool DB、User-M、硬件、实时内核、原生 LinuxCNC process topology
严格口径Web/WASM 可以晋级为 `linuxcnc_task_motion_hal_wasm_simulation_runtime`,但这不等于已经运行 LinuxCNC 原生实时内核、真实硬件驱动、任意宿主 User-M 外部进程或完整 native NML/process topology。只要 `hostRealtimeKernel=false``hardwareDrive=false``hostExternalUserMProcessReady=false``hostToolDbProcessReady=false`,这些宿主/硬件边界仍不得改写为无条件完成。
## LinuxCNC 源码对照
| 功能域 | LinuxCNC 源码或资产 | 对标含义 |
| --- | --- | --- |
| Task 状态机 | `linuxcnc/src/emc/task/emctaskmain.cc``taskintf.cc``emctask.cc` | 程序加载、run/pause/resume/step/abort、task state/mode/interp state |
| Motion/servo | `linuxcnc/src/emc/motion/control.c``command.c``motion.c` | motion command、servo cycle、joint/axis 状态、pause/abort/queue |
| TP/TC | `linuxcnc/src/emc/tp/tp.c``tc.c` | 轨迹队列、速度规划、暂停继续和采样 |
| HAL thread | `linuxcnc/src/hal/hal_lib.c``hal_priv.h``components/threads.c` | pin/signal/param、thread/addf/call 执行边界 |
| 五轴配置 | `linuxcnc/configs/sim/axis/vismach/5axis/*` | `xyzbc-trt`/`xyzac-trt`/switchkins 代表机床文件 |
## 当前实现复核
### `wasm-port`
当前可见实现资产:
| 资产 | 作用 |
| --- | --- |
| `runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp` | 导出 `lctask_*` C ABI组合 task subset、motion runtime、HAL runtime、状态 JSON |
| `runtime/core/linuxcnc_task_subset/emctask_wasm_subset.cc` | 对 `emcTaskAbort``emcTaskSetMode``emcTaskSetState``emcTaskPlan*` 等上游 task 关键语义做子集映射 |
| `runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.c` | 运动状态、servo step、motion ready JSON |
| `runtime/core/linuxcnc_wrap/linuxcnc_hal_runtime.cpp` | virtual HAL pin/signal/param/net/thread/addf/call 运行时 |
| `runtime/sdk/src/linuxcnc-task-hal.js` | JS SDK 只负责加载 WASM、传 JSON、读取 status/events不实现 CNC 语义 |
| `tests/wasm/node/verify_task_hal_wasm.sh` | task/HAL WASM 运行时 smoke |
| `tests/wasm/node/verify_hal_runtime.sh` | HAL registry、net propagation、thread scheduler、blocked user edge |
当前严格判断:
- 可作为 Web/WASM 仿真运行时 proof`lctask_*` C ABI、task/motion/HAL readiness、status JSON、HAL thread scheduler、Web 项目的 task/HAL store 集成。
- 不可作为宿主实时 proof浏览器或 Node 中的周期循环不是 LinuxCNC realtime kernel`servoCycle``taskCycle` 只能作为仿真周期证据。
- 不可作为完整 native process topology proof当前未声明原生 NML 多进程、rtapi_app、halcmd 动态模块加载和硬件驱动全链路已在浏览器复现。
### `web-rtcp-5axis-xyzbc-trt-sim-plan`
当前可见实现资产:
| 资产 | 作用 |
| --- | --- |
| `app/src/runtime/full-execution-boundary.js` | 汇总 kinematics、interpreter、planner、machine-file remap、task/HAL、Tool DB、User-M readiness并输出晋级/阻塞字段 |
| `app/src/runtime/linuxcnc-task-hal-runtime.js` | 包装 `wasm-port` task/HAL SDK归一化 task/motion/HAL status 到 Web store |
| `tests/node/verify_full_execution_boundary.mjs` | 验证 blocked、canonical、machine-file remap、task/HAL promoted 等阶段边界 |
| `tests/node/verify_linuxcnc_task_hal_runtime.mjs` | 验证真实 profile、machine file staging、task/HAL run、MDI switchkins、JOG、PAUSE、STOP |
| `tests/node/verify_native_task_hal_audit.mjs` | 生成 `build/readiness/native-task-hal-readiness.json`,锁定 Web simulation promotion 与宿主硬件/实时边界 |
| `tests/browser/gmoccapy_shell_smoke.html` | 浏览器层检查 full execution boundary、task/HAL runtime readiness、host realtime false 等 UI 字段 |
`full-execution-boundary.js` 的晋级字段可用于判定:
```text
semanticBoundary = linuxcnc_task_motion_hal_wasm_simulation_runtime
fullLinuxCncProgramExecutionReady = true
promotionAllowed = true
hardwareDrive = false
hostRealtimeKernel = false
hostExternalUserMProcessReady = false
hostToolDbProcessReady = false
arbitraryUserMExecution = false
```
上述组合的含义是Web/WASM 仿真运行时可晋级,但宿主实时/硬件/任意外部进程边界仍被显式关闭。
## 必须保持的降级禁止规则
| 风险 | 禁止做法 | 正确状态 |
| --- | --- | --- |
| full-process 降级 | 用普通解释器 canonical events 代替 task/motion/HAL runtime proof | 只能到 canonical boundary不能 full execution ready |
| 实时内核误报 | 把 `servoCycle`/Web Worker/Node loop 写成 Linux realtime kernel | `hostRealtimeKernel=false`,条件通过 |
| 硬件误报 | 把 virtual HAL 或 UI 状态写成真实硬件驱动 | `hardwareDrive=false`Blocked/非目标 |
| 外部进程误报 | 把 Web simulation Tool DB/User-M 写成宿主任意外部进程 | `hostExternalUserMProcessReady=false``hostToolDbProcessReady=false` |
| UI 伪通过 | 只看按钮/截图,不检查 task/motion/HAL status JSON | 不得晋级 |
| profile 继承 | 用 `xyzbc-trt` 一套证据宣称所有五轴 profile 完成 | 只能按 profile 逐项晋级 |
## 当前严格状态
| 04 范围 | 当前状态 | 原因 | 晋级或保持条件 |
| --- | --- | --- | --- |
| Task run/pause/resume/step/abort | 条件通过到 Web/WASM task runtime | 已有 `lctask_*`、task state/status 和 Web store gate | 继续跑 `verify_task_hal_wasm.sh``verify_linuxcnc_task_hal_runtime.mjs`、browser full boundary gate |
| Motion/TP runtime | 条件通过到 Web/WASM 仿真 runtime | 已有 motion runtime、TP gate、task/HAL status 和 sample proof | 不得宣称真实硬件 servo需保留 planner/runtime gate |
| HAL servo-thread 调度 | 条件通过到 virtual HAL thread | `verify_hal_runtime.sh` 覆盖 thread/addf/call但不是 Linux realtime kernel | `hostRealtimeKernel=false` 必须保留 |
| Full LinuxCNC Web 仿真执行 | 可按 `linuxcnc_task_motion_hal_wasm_simulation_runtime` 晋级 | `full-execution-boundary` 汇总 task/motion/HAL、Tool DB、User-M Web simulation readiness | 仅限 Web/WASM simulation boundary |
| 完整 native process topology | Blocked/非目标 | 浏览器未运行 LinuxCNC 原生 NML 多进程和 rtapi/halcmd 动态拓扑 | 不得从 Web smoke 自动晋级 |
| 硬件驱动 | Blocked/非目标 | 项目目标明确为全软件仿真 | 保持 `hardwareDrive=false` |
| 宿主实时内核 | 条件通过/Blocked | Web/Node 不具备 LinuxCNC realtime kernel | 保持 `hostRealtimeKernel=false` |
| 任意宿主 User-M/Tool DB 外部进程 | Blocked | 当前仅有 controlled Web simulation boundary | 保持 host process false除非新增 opt-in native gate |
## 后续专项 Gate
建议把以下命令作为 full-process/realtime proof 的最小复验包:
```bash
cd wasm-port && ./tests/wasm/node/verify_task_hal_wasm.sh
cd wasm-port && ./tests/wasm/node/verify_hal_runtime.sh
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_full_execution_boundary.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_native_task_hal_audit.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
```
通过标准:
- `full_execution_boundary_smoke=ok`
- `linuxcnc_task_hal_runtime_smoke=ok``task_hal_machine_file_smoke=ok``switchkins_remap_hal_sync_smoke=ok`
- `native_task_hal_source_artifact_audit=ok`
- readiness artifact 中 `promotion_scope=web_simulation_only`
- `hardware_drive=0``host_realtime_kernel=0``host_external_user_m_process_ready=0``host_tool_db_process_ready=0`
- 浏览器 full boundary 页面必须渲染 task/HAL readiness并保持 host realtime false。
## 结论
`ACC-034/INT-021` 已完成实现缺口复核。当前两个目标项目已经具备 Web/WASM task-motion-HAL 仿真运行时 proof 的关键实现和 gate但这只能支撑 `linuxcnc_task_motion_hal_wasm_simulation_runtime` 这个边界,不能把 04 中涉及实时内核、硬件驱动、完整 native process topology、任意宿主 User-M/Tool DB 外部进程的内容晋级为无条件完成。后续文档和验收必须同时记录 promotion 和保留的 host/hardware/realtime false 字段。