结论:完成 LinuxCNC kinematics WASM ABI 覆盖,并将 web-rtcp-5axis-sim-plan 的 RTCP frame/boundary adapter 接到 xyzac-trt kinematics SDK;Node、build、browser smoke 验证通过。
217 lines
6.6 KiB
Plaintext
217 lines
6.6 KiB
Plaintext
项目接续文件:LinuxCNC 移植到数控系统仿真工作的完成度结论
|
||
|
||
生成时间:2026-06-20 CST
|
||
|
||
本文件接替 `text29.txt`,用于回答:
|
||
|
||
```text
|
||
将 “linuxcnc” 移植到数控系统仿真工作,是否全部完成?
|
||
```
|
||
|
||
一、总结论
|
||
|
||
```text
|
||
没有全部完成。
|
||
```
|
||
|
||
更准确地说:
|
||
|
||
```text
|
||
当前已经完成了可交付的 WASM/browser 数控仿真主路径和大量 LinuxCNC-owned
|
||
语义 proof,包括 interpreter、INI、tool DB、Python remap、OPFS/session、
|
||
virtual HAL、浏览器仿真页面和 release gate 证据链。
|
||
|
||
但如果“全部完成”定义为完整移植 LinuxCNC 的全部 sim configs、外部进程模型、
|
||
UI 进程、native HAL module ABI、硬实时 motion/HAL 运行时和所有上游演示行为,
|
||
则仍未完成。
|
||
```
|
||
|
||
因此当前状态应记录为:
|
||
|
||
```text
|
||
阶段性可用 / 当前仿真主范围基本完成;
|
||
完整 LinuxCNC 全量移植未完成;
|
||
不得宣称 100% 完成。
|
||
```
|
||
|
||
二、当前已经完成的关键结果
|
||
|
||
1. Node/WASM sim-config inventory baseline 已提升到:
|
||
|
||
```text
|
||
sim_configs_wasm_node_inventory_executed=82
|
||
sim_configs_wasm_node_inventory_passed=82
|
||
sim_configs_wasm_node_inventory_skipped=77
|
||
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||
```
|
||
|
||
2. `L4-PYTHON-REMAP` 已从当前 skip summary 中清除。
|
||
|
||
```text
|
||
53 个 Python-remap inventory rows 已完成:
|
||
- row_runtime_transcript_ready=1;
|
||
- native_pass_ready=1;
|
||
- wasm_node_pass_ready=1;
|
||
- browser_pass_ready=1;
|
||
- baseline promotion 已进入 PASS=82 / SKIP=77。
|
||
```
|
||
|
||
对应最新记录见 `text29.txt`。
|
||
|
||
3. `L4-TOOL-DB` 已不再计入当前 skip summary。
|
||
|
||
`axis/db_demo/base.ngc` 的 tool DB proof chain 已完成接入,当前
|
||
`wasm-port/docs/sim-configs-coverage-handoff.md` 记录:
|
||
|
||
```text
|
||
L4-TOOL-DB is no longer counted in the current skip summary
|
||
```
|
||
|
||
4. 当前 skip summary 仍为:
|
||
|
||
```text
|
||
ASSET-ONLY=65
|
||
L4-USER-M-PROCESS=1
|
||
NON_MAIN_CLASS=10
|
||
UPSTREAM-DEMO=1
|
||
```
|
||
|
||
这说明剩余 77 个 skipped rows 不再是 Python-remap / tool DB 批量阻塞。
|
||
|
||
5. 浏览器仿真主路径已具备可用能力:
|
||
|
||
```text
|
||
- AXIS 风格 simulation UI;
|
||
- LinuxCNC-backed interpreter WASM 执行;
|
||
- canonical events / toolpath / playback;
|
||
- OPFS/session persistence;
|
||
- virtual HAL 状态和基础 halcmd/motion 仿真;
|
||
- 多个 browser smoke / Node smoke / host gate 证据。
|
||
```
|
||
|
||
三、仍未完成或不能宣称完成的部分
|
||
|
||
1. `L4-USER-M-PROCESS` 的 Web/virtual HAL 仿真状态 proof 已完成,但
|
||
inventory promotion 仍未完成。
|
||
|
||
当前剩余 hard block:
|
||
|
||
```text
|
||
path=axis/vismach/millturn/example.ngc
|
||
ini=axis/vismach/millturn/millturn.ini
|
||
blocked=L4-USER-M-PROCESS
|
||
boundary_kind=external_user_m_process
|
||
execution_enabled=0
|
||
promotion_allowed=0
|
||
notes=keep_blocked_until_m128_m129_state_proof
|
||
```
|
||
|
||
该 row 依赖 M128 / M129 external user-M process 边界。当前
|
||
`runRealBrowserSimulation()` 已接入受控的 source-derived virtual HAL proof:
|
||
|
||
```text
|
||
apiName=real-browser-simulation-millturn-user-m-process-proof
|
||
M429 -> M129 -> turn
|
||
M428 -> M128 -> mill
|
||
motion.switchkins-type / motion.analog-out-03
|
||
kinstype.is-0 / kinstype.is-1
|
||
ini.x.* / ini.z.* limit pins
|
||
```
|
||
|
||
但浏览器仍不承诺 arbitrary external process execution,且该 proof 不等于
|
||
sim-config inventory promotion。当前仍需要独占 LinuxCNC native runtime opt-in probe
|
||
达到:
|
||
|
||
```text
|
||
millturn_user_m_runtime_probe_status=runtime_state_probe_passed
|
||
```
|
||
|
||
之后才允许继续 Node inventory promotion gate、browser/host promotion proof 和
|
||
manual promotion lock review。
|
||
|
||
2. `ASSET-ONLY=65` 不代表可执行主程序未做完,而是资产/子程序类行。
|
||
|
||
这类 row 多为 remap subroutine、macro asset、辅助文件,不能被当作 standalone main
|
||
program 直接执行,也不应为了降低 skip 数字而伪 promotion。
|
||
|
||
3. `NON_MAIN_CLASS=10` 仍是非主程序类别。
|
||
|
||
这类 row 需要继续保持分类边界,不能作为主程序执行完成度计算。
|
||
|
||
4. `UPSTREAM-DEMO=1` 仍是上游演示行为边界。
|
||
|
||
除非有 LinuxCNC-owned runtime proof 和明确 promotion gate,否则不能强行转 PASS。
|
||
|
||
5. 完整 LinuxCNC native runtime 没有被完整搬进浏览器。
|
||
|
||
以下仍不是当前项目已经完成的范围:
|
||
|
||
```text
|
||
- Linux kernel hard-realtime ABI;
|
||
- native HAL module ABI;
|
||
- arbitrary external hardware driver ABI;
|
||
- arbitrary LinuxCNC UI process emulation;
|
||
- arbitrary external user-M executable process;
|
||
- 完整 native milltask / halcmd / halrun / realtime process graph;
|
||
- 全部上游 sim configs 的完整运行时等价。
|
||
```
|
||
|
||
四、应如何对外表述当前完成度
|
||
|
||
推荐表述:
|
||
|
||
```text
|
||
LinuxCNC 到 WASM/browser 数控仿真的当前可交付主范围已经基本完成,
|
||
并且 inventory baseline 已提升到 PASS=82 / SKIP=77 / unexpected_fail=0。
|
||
核心 interpreter、INI、tool DB、Python remap、OPFS/session、virtual HAL 和
|
||
浏览器仿真页面已有 LinuxCNC-owned proof 链路。
|
||
|
||
但完整移植尚未全部完成。剩余明确边界包括 L4-USER-M-PROCESS=1,以及
|
||
ASSET-ONLY、NON_MAIN_CLASS、UPSTREAM_DEMO 等不能被当作可执行主程序直接 promotion
|
||
的分类。当前不得宣称 LinuxCNC 全量 100% 移植完成。
|
||
```
|
||
|
||
不推荐表述:
|
||
|
||
```text
|
||
LinuxCNC 已全部移植完成。
|
||
全部 sim configs 已完成。
|
||
浏览器已完整替代 LinuxCNC native runtime。
|
||
external user-M process 已完成并已 promotion。
|
||
```
|
||
|
||
五、下一步建议
|
||
|
||
如果继续推进“全部完成”方向,优先顺序应为:
|
||
|
||
```text
|
||
1. 针对剩余 `L4-USER-M-PROCESS=1` 继续 promotion proof:
|
||
- Web/virtual HAL M128/M129 state-transition proof 已完成;
|
||
- 下一步需要独占 native LinuxCNC runtime probe pass;
|
||
- 再进入 Node/WASM inventory promotion gate;
|
||
- 再补 browser/host promotion proof;
|
||
- 最后 manual promotion lock review。
|
||
|
||
2. 保持 `ASSET-ONLY` 和 `NON_MAIN_CLASS` 分类,不为降低 skip 数字而伪执行。
|
||
|
||
3. 若要继续减少 skip,只能逐 row 判断是否存在真实 main-program promotion path。
|
||
|
||
4. 更新旧的 tracker/文档中仍写 `L4-PYTHON-REMAP` 或 `L4-TOOL-DB` locked 的过期描述,
|
||
使它们与当前 PASS=82 / SKIP=77 baseline 对齐。
|
||
|
||
5. 在宣称当前范围完成前,重新运行项目 release gate:
|
||
`wasm-port/tests/host/verify_project_release_gate.sh`
|
||
```
|
||
|
||
六、本文件结论
|
||
|
||
```text
|
||
结论:未全部完成。
|
||
|
||
当前可以视为“LinuxCNC-backed WASM/browser 数控仿真主路径阶段性完成”,
|
||
但不能视为“LinuxCNC 全量移植完成”。
|
||
|
||
下一轮若继续实质推进,应优先处理唯一剩余 inventory promotion hard runtime block:
|
||
`L4-USER-M-PROCESS=1` / `axis/vismach/millturn/example.ngc`。
|
||
```
|