8.8 KiB
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 Task3.1-3.11 Motion4.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 的晋级字段可用于判定:
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 的最小复验包:
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 字段。