项目接续文件：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`。
```
