项目整体完成情况与后续执行铁律

生成时间：2026-06-17 CST

本文件接替 `text16.txt`，作为后续继续推进的接续文件。后续工作优先参考
`test17.txt`；除非明确要求审计旧记录，不再回到 `text1` 到 `text16` 扩展进度。

一、当前核心完成情况

1. LinuxCNC-backed WASM 核心仍是 CNC 语义来源。

- G-code 执行、canonical event、interpreter/planner 语义仍来自 vendored LinuxCNC
  C/C++ 源码编译出的 WASM；
- Browser/UI/SDK 只做 host boundary、文件装载、OPFS/session、virtual HAL runtime、
  仿真状态桥、测试胶水和报告；
- 不在 JS 中重写 G-code 解释器、planner、kinematics、tool/parameter 语义。

2. Web 数控仿真系统已经具备完整虚拟 HAL 闭环。

当前 virtual HAL 已提升为项目级 SDK/API 能力，并接入 browser simulation 页面。

已具备：

- source-derived HAL pin family registry；
- axisui / halui / iocontrol / motion / axis / joint / spindle / coolant / tool pin
  inventory；
- pin/signal/param/net store；
- HAL read/write API；
- virtual halcmd；
- virtual realtime HAL runtime report；
- virtual motion controller servo step；
- WASM HAL bridge snapshot；
- diagnostics artifact；
- browser page API；
- Node/browser smoke gate。

3. 仿真级 LinuxCNC realtime HAL / halcmd / motion controller 已由 virtual HAL 替代。

已新增/确认的核心 API：

- `VIRTUAL_HAL_SIMULATION_REPLACEMENT_TARGETS`：
  - `linuxcnc-realtime-hal`；
  - `halcmd`；
  - `motion-controller`；
- `VIRTUAL_HAL_SIMULATION_RUNTIME_CAPABILITIES`：
  - `realtime-hal-simulation-replacement`；
  - `halcmd-simulation-replacement`；
  - `motion-controller-simulation-replacement`；
  - `hal-pin-signal-param-store`；
  - `halcmd-setp-sets-net-show-getp-gets`；
  - `servo-period-motion-step`；
  - `axis-joint-position-feedback`；
- `executeVirtualHalcmd()`；
- `executeVirtualHalCommand()`；
- `stepVirtualHalMotion()`；
- `stepVirtualHalMotionController()`；
- `createVirtualHalSimulationRuntimeReport()`；
- `createVirtualHalSimulationReplacementReport()`；
- `createLinuxCncVirtualHalRuntime()`：
  - `executeHalcmd()`；
  - `stepMotion()`；
  - `stepMotionController()`；
  - `getSimulationRuntimeReport()`；
  - `getSimulationReplacementReport()`。

Browser simulation API 已暴露：

- `executeVirtualHalcmd()`；
- `executeVirtualHalCommand()`；
- `stepVirtualHalMotionController()`；
- `getVirtualHalSimulationRuntimeReport()`；
- `getVirtualHalSimulationReplacementReport()`；
- `getVirtualRealtimeHalRuntimeReport()`。

4. 当前 Web 仿真可满足数控系统仿真用途。

在 Web 方式下，数控系统仿真不再依赖 host LinuxCNC `halcmd`、host realtime HAL
process 或 host motion process 完成仿真闭环。当前 virtual HAL 可支撑：

- AXIS-style manual controls；
- ESTOP / power / home / jog；
- spindle / coolant / brake / override；
- HAL pin read/write；
- HAL net/signal/param；
- virtual halcmd 脚本执行；
- motion target stepping；
- DRO / limits-home / machine status；
- diagnostics / release report；
- browser smoke 和 Node smoke 自动验证。

二、虚拟 HAL 铁律

以下规则是后续推进的硬性约束，不能为了进度绕过。

1. 虚拟 HAL 功能来源铁律。

虚拟 HAL 的功能定义、pin family、pin 名称、pin 方向、pin 类型、状态含义、行为目标、
报告口径和仿真能力边界，必须完全来源于 LinuxCNC 源程序、vendored LinuxCNC 源码、
LinuxCNC 配置、LinuxCNC 脚本或已有 LinuxCNC-backed runtime evidence。

允许的来源包括但不限于：

- `linuxcnc/bin/axis`；
- `linuxcnc/src/emc/usr_intf/axis/scripts/axis.py`；
- `linuxcnc/src/emc/usr_intf/halui.cc`；
- `linuxcnc/src/emc/task/taskclass.cc`；
- `linuxcnc/src/emc/motion/motion.c`；
- `linuxcnc/src/emc/motion/axis.c`；
- `linuxcnc/src/emc/motion/homing.c`；
- `linuxcnc/src/emc/motion/motion.h`；
- vendored LinuxCNC `configs/sim`；
- vendored LinuxCNC tests；
- LinuxCNC-backed WASM/native probe 输出。

禁止：

- 凭空创造 LinuxCNC 不存在的 HAL pin、G-code 语义、planner 行为或 machine semantics；
- 为了 UI 便利修改 LinuxCNC CNC 语义；
- 用 JS/browser 重新解释 G-code；
- 把未由 LinuxCNC 源码或 runtime evidence 支撑的行为标成 LinuxCNC 兼容；
- 把 browser virtual HAL 伪装成 Linux kernel hard-realtime ABI。

2. Web 仿真满足性铁律。

在 Web 数控系统仿真范围内，virtual HAL 必须作为完整替代层满足：

- LinuxCNC realtime HAL 仿真替代；
- `halcmd` 仿真替代；
- motion controller 仿真替代；
- AXIS-style UI/manual control 仿真；
- diagnostics/report/gate 可验证性；
- SDK/API 可复用性。

后续任何 Web 仿真功能，如果需要 HAL、halcmd 或 motion process，默认必须接入
project-level virtual HAL runtime，而不是引入 host process 依赖。

3. 边界表述铁律。

对外描述必须同时满足：

- 可以明确说：virtual HAL 已完全满足 Web 方式数控系统仿真系统；
- 可以明确说：在仿真范围内，virtual HAL 已替代 LinuxCNC realtime HAL / halcmd /
  motion controller；
- 必须同时说明：它不是 Linux kernel hard-realtime ABI；
- 必须同时说明：它不替代外部硬件驱动 ABI、native HAL module ABI；
- 必须同时说明：G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed
  WASM。

三、当前已通过验证

最近关键验证：

```text
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_real_simulation_programs.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh
git diff --check
```

关键输出：

```text
sdk_surface_node_smoke=ok
project_release_gate_manifest_node_smoke=ok
project_release_artifact_url_workflow_node_smoke=ok
project_batch_acceptance_workflow_node_smoke=ok
project_batch_acceptance_artifact_node_smoke=ok
real_simulation_programs_node_smoke=ok
browser_real_simulation_page_smoke=ok
git diff --check ok
```

四、后续执行规则

1. 每轮开始前建议执行：

```bash
git status --short
git log -5 --oneline
tail -n 160 test17.txt
awk '/^[一二三四五六七八九十百]+、|^### / {print}' test17.txt | sort | uniq -d
```

2. 后续记录规则：

- 新进度只追加到 `test17.txt`；
- 每批只追加一个新的中文编号或 `###` 标题记录；
- 提交前检查标题唯一性；
- 不复制 `text16.txt` 的长历史；
- 不把局部重排、断言挪动、路径整理作为主目标；
- 每批必须产出至少一种可复用能力、可执行 gate、可验证 workflow 或明确 runtime
  boundary proof。

3. 后续优先级。

优先推进：

- virtual HAL 与更多 LinuxCNC sim configs 的 source-derived 覆盖；
- Web simulation 的完整 machine/session workflow；
- Browser diagnostics artifact 和 release gate；
- OPFS/session persistence 与 virtual HAL runtime state 的整合；
- HAL command script fixtures；
- motion controller 仿真测试矩阵；
- project release handoff 文档与 gate。

暂不推进：

- 原生 Linux kernel realtime ABI；
- 外部硬件驱动；
- native HAL module ABI；
- Python/Tcl UI process emulation；
- standalone JS G-code interpreter；
- 未有 LinuxCNC 源码证据的 CNC 语义扩展。
