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

8.8 KiB
Raw Permalink Blame History

22-04 Full-Process Realtime Runtime Proof 实现缺口复核

定位

本文件落实 ACC-034/INT-021:在 14-04-125项逐项源码证据绑定表.md 已把 full-process / realtime 缺口集中列出之后,继续复核 wasm-portweb-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=falsehardwareDrive=falsehostExternalUserMProcessReady=falsehostToolDbProcessReady=false,这些宿主/硬件边界仍不得改写为无条件完成。

LinuxCNC 源码对照

功能域 LinuxCNC 源码或资产 对标含义
Task 状态机 linuxcnc/src/emc/task/emctaskmain.cctaskintf.ccemctask.cc 程序加载、run/pause/resume/step/abort、task state/mode/interp state
Motion/servo linuxcnc/src/emc/motion/control.ccommand.cmotion.c motion command、servo cycle、joint/axis 状态、pause/abort/queue
TP/TC linuxcnc/src/emc/tp/tp.ctc.c 轨迹队列、速度规划、暂停继续和采样
HAL thread linuxcnc/src/hal/hal_lib.chal_priv.hcomponents/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 emcTaskAbortemcTaskSetModeemcTaskSetStateemcTaskPlan* 等上游 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 仿真运行时 prooflctask_* C ABI、task/motion/HAL readiness、status JSON、HAL thread scheduler、Web 项目的 task/HAL store 集成。
  • 不可作为宿主实时 proof浏览器或 Node 中的周期循环不是 LinuxCNC realtime kernelservoCycletaskCycle 只能作为仿真周期证据。
  • 不可作为完整 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=falseBlocked/非目标
外部进程误报 把 Web simulation Tool DB/User-M 写成宿主任意外部进程 hostExternalUserMProcessReady=falsehostToolDbProcessReady=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.shverify_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=oktask_hal_machine_file_smoke=okswitchkins_remap_hal_sync_smoke=ok
  • native_task_hal_source_artifact_audit=ok
  • readiness artifact 中 promotion_scope=web_simulation_only
  • hardware_drive=0host_realtime_kernel=0host_external_user_m_process_ready=0host_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 字段。