完善五轴 RTCP 仿真与验证资料

This commit is contained in:
2026-07-01 21:49:58 -04:00
parent ac4e855b2b
commit d0d58998ac
159 changed files with 6771594 additions and 339 deletions

View File

@@ -186,7 +186,7 @@ plannerRuntimeReady=false
fullLinuxCncProgramExecutionReady=false
```
这只提升普通 G-code canonical execution source不代表 Python remap、tool DBexternal user-M process 或完整 planner 已 promoted。
这只提升普通 G-code canonical execution source不代表任意 Python remap、host tool DB process、host external user-M process 或完整 planner 已 promoted。`tool.tbl` 读取/编辑/保存使用 Web/WASM tool DB 仿真边界:按 LinuxCNC `CANON_TOOL_TABLE` 字段、非随机刀库内部 `idx` 与真实 `pocketno`、spindle pocket `idx=0``Tn/M6/G43/M61``read_tool_inputs()` 语义运行;白名单 user-M 行为同样只能在 `web_simulation_only` 边界内声明 ready。
### Step 3gmoccapy UI 组件
@@ -493,7 +493,8 @@ readiness
HAL runtime、HAL sync 和 task/HAL comparison artifact 都通过时,才允许在 Web
simulation boundary 内标记 `nativeTaskReady=true``nativeHalSyncReady=true`
`fullLinuxCncProgramExecutionReady=true`。该提升仍不代表 hardware drive、host realtime
kernel、external user-M process 或 tool DB process ready
kernel、host external user-M process 或 host tool DB process ready;受控 user-M 和
tool DB 只能以 `web_simulation_only` 进入 full boundary。
当前边界:
@@ -507,7 +508,11 @@ nativeHalSyncReady=true for Web simulation boundary
fullLinuxCncProgramExecutionReady=true when machine-file remap and task/HAL gates also pass
hardwareDrive=false
hostRealtimeKernel=false
externalUserMProcessReady=false
externalUserMProcessReady=true for web_simulation_only
toolDbProcessReady=true for web_simulation_only
hostExternalUserMProcessReady=false
hostToolDbProcessReady=false
arbitraryUserMExecution=false
```
### Step 10Native task/HAL readiness artifact
@@ -539,6 +544,8 @@ nativeHostAndHardware.hardwareDrive=false
nativeHostAndHardware.hostRealtimeKernel=false
nativeHostAndHardware.externalUserMProcessReady=false
nativeHostAndHardware.toolDbProcessReady=false
toolUserWebSimulation.externalUserMProcessReady=true
toolUserWebSimulation.toolDbProcessReady=true
gates.promotion_scope=web_simulation_only
```
@@ -550,8 +557,10 @@ task_hal_web_simulation_boundary_consistent=1
native_task_hal_host_probe_status=passed_or_ready_disabled_by_default_or_skipped_missing_host_runtime
hardware_drive=0
host_realtime_kernel=0
external_user_m_process_ready=0
tool_db_process_ready=0
external_user_m_process_ready=1
tool_db_process_ready=1
host_external_user_m_process_ready=0
host_tool_db_process_ready=0
promotion_scope=web_simulation_only
```
@@ -612,20 +621,23 @@ real_linuxcnc_5axis_program_cases_smoke=ok
- 不在 JavaScript 中实现 G-code 解释器。
- 不在 JavaScript 中实现 LinuxCNC 五轴运动学公式作为最终语义源。
- 不把 gmoccapy Python/GTK runtime 移植进浏览器。
- 不把 Python remap/tool DB/external user-M process 伪装成已支持。
- 不把任意 Python remap、host tool DB process、host external user-M process 伪装成已支持;只允许 staged `tool.tbl` 和白名单 user-M 在 Web/WASM 仿真边界内声明 ready
- 不用 UI fixture 结果冒充 LinuxCNC runtime proof。
- 用于 5 轴 machine-file backed run 的 G-code 必须来自 LinuxCNC 源程序目录
`configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc`
- 用于 5 轴 machine-file backed run 的 G-code 必须来自当前 profile 对应的 LinuxCNC 源程序目录
`configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc`
`configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/*.ngc`
用户上传或手写的 G-code 只能作为 operator file/普通 interpreter 输入,不得标记为
`linuxcnc-vendored-5axis-gcode` 或用于 5 轴源程序边界证明。
## 6. 开工建议
当前已完成 Step 1 到 Step 9 的 Node/browser LinuxCNC kinematics proof、浏览器 Worker kinematics 隔离、浏览器 Worker interpreter canonical execution source、`xyzac-trt`/`xyzbc-trt` profile 切换、OPFS 五轴会话保存/恢复、OPFS machine-file staging、machine-file backed `fiveAxisRemap` C ABI run、程序级 `M428/M429` switchkins RTCP 自动切换、LinuxCNC TP queue timing runtime、full execution boundary audit以及真实 LinuxCNC TRT 5 轴 `.ngc` 源程序 staging/选择/运行路径。native task/HAL 执行文档的 Phase 0-8 已建立 Web simulation boundarysource manifest、默认禁用的 native TRT probe、HAL registry/thread scheduler、minimal motion/HAL servo-cycle C ABI、`lctask_*` task shim、SDK wrapper、machine-file session、store/UI diagnostics 和 full boundary gate。`M428/M429/M430` 当前既可作为 Web runtime switchkins 事件驱动 `lckins_switch()`,也可在 staged machine-file run 中交给 vendored LinuxCNC five-axis remap C ABI 验证,还可通过 task/HAL runtime 的 MDI path 写入 `motion.switchkins-type` HAL snapshot只有 LinuxCNC source manifest 中的 `configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc` 可作为 `linuxcnc-vendored-5axis-gcode` 进入 UI 和 machine-file run。`web-rtcp-5axis-full-linuxcnc-execution-boundary` 可以在 kinematics/interpreter/machine-file-remap/TP/task-HAL gates 同时通过时报告 `promotionAllowed=true`,但该提升仅限 Web simulation boundary仍必须显示 `hardwareDrive=false``hostRealtimeKernel=false``externalUserMProcessReady=false``toolDbProcessReady=false`
当前已完成 Step 1 到 Step 10 的 Node/browser LinuxCNC kinematics proof、浏览器 Worker kinematics 隔离、浏览器 Worker interpreter canonical execution source、`xyzac-trt`/`xyzbc-trt`/`gmoccapy-xyzac-trt` profile 切换、OPFS 五轴会话保存/恢复、OPFS machine-file staging、machine-file backed `fiveAxisRemap` C ABI run、程序级 `M428/M429` switchkins RTCP 自动切换、LinuxCNC TP queue timing runtime、full execution boundary audit、受控 tool DB/user-M Web 仿真,以及真实 LinuxCNC TRT 5 轴 `.ngc` 源程序 staging/选择/运行路径。native task/HAL 执行文档的 Phase 0-8 已建立 Web simulation boundarysource manifest、默认禁用的 native TRT probe、HAL registry/thread scheduler、minimal motion/HAL servo-cycle C ABI、`lctask_*` task shim、SDK wrapper、machine-file session、store/UI diagnostics 和 full boundary gate。`M428/M429/M430` 当前既可作为 Web runtime switchkins 事件驱动 `lckins_switch()`,也可在 staged machine-file run 中交给 vendored LinuxCNC five-axis remap C ABI 验证,还可通过受控 user-M Web 仿真输出可追溯 HAL/state patch。staged `tool.tbl` 当前可被 Web tool DB 读取、编辑、保存到 OPFS/memory fallback并按 LinuxCNC `CANON_TOOL_TABLE`、非随机刀库 `idx/pocketno`、spindle pocket `idx=0``Tn/M6/G43/M61``read_tool_inputs()`#5400/#5401-#5413 语义更新仿真状态store/browser API 暴露 `queryToolDb()``editToolDb()``saveToolDb()` 供查询、编辑和保存。只有 LinuxCNC source manifest 中当前 profile 对应`configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc``configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/examples/*.ngc` 可作为 `linuxcnc-vendored-5axis-gcode` 进入 UI 和 machine-file run。`web-rtcp-5axis-full-linuxcnc-execution-boundary` 可以在 kinematics/interpreter/machine-file-remap/TP/task-HAL/tool-DB/user-M gates 同时通过时报告 `promotionAllowed=true`,但该提升仅限 Web simulation boundary仍必须显示 `hardwareDrive=false``hostRealtimeKernel=false``hostExternalUserMProcessReady=false``hostToolDbProcessReady=false``arbitraryUserMExecution=false`
M24 已把 LinuxCNC kinematics runtime Node direct proof 从 `xyzac-trt` 扩展到 `xyzbc-trt`,并以 `switchkinsType=1` 验证两个 TRT WASM 模块的正解/逆解闭环。`rtcpFrame.tcpPose` 和 Three.js `data-three-tcp-pose` 现在同时输出 `a/b/c`,其中 XYZBC 的 B 轴姿态可被 store smoke 和浏览器诊断链路追溯,不再只依赖 C 轴或默认 A 轴字段。
OPFS session 和 machine-file staging 当前具备 capability 检测。安全上下文且 `navigator.storage.getDirectory()` 可用时使用 OPFS公网 HTTP/IP 或浏览器禁用 OPFS 时切换到 memory fallback。memory fallback 只保证当前页面生命周期内的保存、恢复、staging 和 full boundary audit 可继续运行不声明跨刷新持久化。UI diagnostics 必须显示 storage mode、OPFS unavailable 状态和原因,公共 HTTP smoke 必须验证无 uncaught exception且不依赖 OPFS 的预览、DRO、G-code 加载、运行和 Three.js 显示继续通过。
gmoccapy info tabs 当前还必须显示 Host/native boundary`hardwareDrive=false``hostRealtimeKernel=false``externalUserMProcessReady=false``toolDbProcessReady=false`。browser smoke 需要同时检查 DOM 和 `fullExecutionBoundary` state避免把 Web simulation promoted 误读为 host-native 或硬件能力 ready。
gmoccapy info tabs 当前还必须显示 Host/native boundary`hardwareDrive=false``hostRealtimeKernel=false``externalUserMProcessReady=true for web_simulation_only``toolDbProcessReady=true for web_simulation_only``hostExternalUserMProcessReady=false``hostToolDbProcessReady=false``arbitraryUserMExecution=false`。browser smoke 需要同时检查 DOM 和 `fullExecutionBoundary` state避免把 Web simulation promoted 误读为 host-native 或硬件能力 ready。
注意:`wasm-port/tests/wasm/node/verify_hal_runtime.sh``wasm-port/tests/wasm/node/verify_motion_hal_sync.sh``wasm-port/tests/wasm/node/verify_task_hal_wasm.sh``wasm-port/tests/wasm/node/verify_task_hal_sdk.sh` 会写同一个 `build/wasm/task-hal/linuxcnc_task_hal.*` 输出,验证时应串行运行,避免并发构建竞争造成无效 WASM 产物。