Files
cnc_wams/text17.txt
wangdequan 0a33f0f7c1 接入虚拟HAL会话保存恢复
结论:real simulation page 已提供显式 Save/Restore HAL Session 按钮与 browser API,使用 OPFS session snapshot 保存和恢复 virtual HAL runtime state,并随 payload 校验 source compliance、sim-config coverage、halcmd fixtures 与 motion controller matrix,证明虚拟HAL可恢复地满足Web方式数控系统仿真范围。
2026-06-17 22:32:23 +08:00

953 lines
42 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
项目整体完成情况与后续执行铁律
生成时间2026-06-17 CST
本文件接替 `text16.txt`,作为后续继续推进的接续文件。后续工作优先参考
`text17.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 text17.txt
awk '/^[一二三四五六七八九十百]+、|^### / {print}' text17.txt | sort | uniq -d
```
2. 后续记录规则:
- 新进度只追加到 `text17.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 语义扩展。
### 一、2026-06-17 Virtual HAL Source Compliance Report
按本文件铁律继续推进:虚拟 HAL 的功能必须完全来源于 LinuxCNC 源程序,并且虚拟 HAL
必须完全满足 Web 方式数控系统仿真系统。本批把该铁律从文档声明提升为 SDK 可验证报告。
新增实质能力:
- 新增 `VIRTUAL_HAL_SOURCE_DERIVED_CAPABILITIES`
- 将每个 virtual HAL simulation capability 映射到 LinuxCNC 源文件证据;
- 覆盖 realtime HAL replacement、halcmd replacement、motion-controller replacement、
pin/signal/param store、halcmd verbs、load command stubs、servo-period motion step、
axis/joint feedback、spindle/coolant/tool status、interpreter HAL bridge snapshot
- `VIRTUAL_HAL_SOURCE_FILES` 新增 halcmd 来源:
- `linuxcnc/src/hal/utils/halcmd.c`
- `linuxcnc/src/hal/utils/halcmd_commands.cc`
- `linuxcnc/src/hal/utils/halcmd_main.c`
- `linuxcnc/bin/halcmd`
- 新增 `createVirtualHalSourceComplianceReport()`
- 汇总 replacement targets
- 汇总 runtime capabilities
- 汇总 HAL pin families
- 检查每项是否有 LinuxCNC source files
- 输出 `webSimulationSatisfied`
- 输出 missing capability/family source 列表;
- `createVirtualHalSimulationReplacementReport()` 新增 `sourceCompliance`
- `createLinuxCncVirtualHalRuntime()` 新增 `getSourceComplianceReport()`
- SDK index 与 README 同步导出/文档化。
本批验证重点:
- `verify_sdk_surface.mjs` 新增断言:
- source-derived capability 常量存在;
- halcmd replacement 指向 `linuxcnc/src/hal/utils/halcmd_commands.cc`
- motion-controller replacement 指向 `linuxcnc/src/emc/motion/motion.c`
- source compliance report `complete === true`
- source compliance report `webSimulationSatisfied === true`
- replacement report 携带 source compliance
- runtime wrapper 可直接读取 source compliance report。
关键验证:
```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
```
语义边界:
- 本批没有新增 CNC/G-code/planner 语义;
- 本批只把现有 virtual HAL 能力与 LinuxCNC 源程序来源建立机器可读关联;
- Web 仿真 HAL 满足性现在可通过 `createVirtualHalSourceComplianceReport()` 自动验证;
- 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native HAL module ABI。
### 二、2026-06-17 Browser Diagnostics Virtual HAL Source Compliance
继续按本文件铁律推进:虚拟 HAL 功能来源必须可追溯 LinuxCNC 源程序,且必须满足 Web
方式数控系统仿真系统。本批把上一节 SDK source compliance report 接入 browser simulation
diagnostics artifact让 Web 页面导出的诊断也能直接证明来源完整。
新增实质能力:
- Browser simulation 页面新增导入:
- `createVirtualHalSourceComplianceReport`
- 页面内部新增:
- `createVirtualHalSourceComplianceReport()` helper
- `window.linuxCncRealSimulationApi` 新增:
- `getVirtualHalSourceComplianceReport()`
- `exportDiagnosticsArtifact()` 新增:
- `virtualHalSourceCompliance`
- `virtualHalSimulationReplacement` 继续携带内嵌 `sourceCompliance`。
新增/扩展验证:
- `real_simulation_page_smoke.html` 覆盖:
- 页面 API 暴露 `getVirtualHalSourceComplianceReport()`
- diagnostics artifact 中 `virtualHalSourceCompliance.complete === true`
- diagnostics artifact 中 `virtualHalSourceCompliance.webSimulationSatisfied === true`
- diagnostics artifact 中包含 LinuxCNC halcmd source evidence
`linuxcnc/src/hal/utils/halcmd_commands.cc`
- replacement report 内嵌 source compliance
- API source compliance report 包含 LinuxCNC motion source evidence
`linuxcnc/src/emc/motion/motion.c`。
关键验证:
```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
```
语义边界:
- 本批只把 SDK source compliance report 穿透到 browser diagnostics
- 没有新增 G-code/interpreter/planner/kinematics 语义;
- Web 仿真 HAL 的来源完整性现在可通过 browser artifact 和 SDK API 双路径验证;
- 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native HAL module ABI。
### 三、2026-06-17 Virtual HAL Sim Config Source Coverage Report
继续按本文件铁律推进:虚拟 HAL 功能完全来源于 LinuxCNC 源程序,并且必须完全满足
Web 方式数控系统仿真系统。本批把 virtual HAL 覆盖范围进一步连接到 vendored
LinuxCNC `configs/sim` 代表配置,形成 SDK/browser 双路径可验证来源覆盖报告。
新增实质能力:
- 新增 `VIRTUAL_HAL_SIM_CONFIG_SOURCE_TARGETS`
- 覆盖 AXIS foam
- 覆盖 AXIS geometry USER_M_PATH / `M110`
- 覆盖 external offsets / `M111`
- 覆盖 gladevcp probe
- 覆盖 woodpecker
- 覆盖 qtdragon / qtdragon_hd / qtvcp_screens on-abort family
- 覆盖 vismach melfa-sim / puma remap sim family
- 新增 `createVirtualHalSimConfigSourceCoverageReport()`
- 输出 sim-config target rows
- 输出每个 target 的 LinuxCNC `configs/sim` source files
- 汇总 covered virtual HAL capabilities
- 支持 `source-manifest.txt` 校验 vendored source file 是否存在;
- 输出 `webSimulationSatisfied`
- `createVirtualHalSourceComplianceReport()` 新增内嵌 `simConfigSourceCoverage`
- `createVirtualHalSimulationReplacementReport()` 新增内嵌 `simConfigSourceCoverage`
- `createLinuxCncVirtualHalRuntime()` 新增 `getSimConfigSourceCoverageReport()`
- SDK index、SDK README、browser simulation re-export 同步新增该 API
- Browser simulation API 新增:
- `getVirtualHalSimConfigSourceCoverageReport()`
- `exportDiagnosticsArtifact()` 新增:
- `virtualHalSimConfigSourceCoverage`。
新增/扩展验证:
- `verify_sdk_surface.mjs` 覆盖:
- `VIRTUAL_HAL_SIM_CONFIG_SOURCE_TARGETS` 导出;
- `createVirtualHalSimConfigSourceCoverageReport()` 导出;
- `axis-foam`、`external-offsets`、`qtdragon-on-abort` 代表目标存在;
- 用真实 `wasm-port/tools/source-manifest.txt` 校验所有代表 source files
- sim-config source coverage `complete === true`
- sim-config source coverage `webSimulationSatisfied === true`
- runtime wrapper 可直接读取 sim-config source coverage report
- source compliance report 内嵌 sim-config source coverage
- `real_simulation_page_smoke.html` 覆盖:
- 页面 API 暴露 `getVirtualHalSimConfigSourceCoverageReport()`
- diagnostics artifact 中 `virtualHalSimConfigSourceCoverage.complete === true`
- diagnostics artifact 中包含 LinuxCNC foam sim source evidence
- API report 中包含 qtdragon on-abort sim source evidence
- replacement report 内嵌 sim-config source coverage。
关键验证:
```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
```
语义边界:
- 本批没有新增 CNC/G-code/interpreter/planner/kinematics 语义;
- 本批只把 virtual HAL 仿真覆盖与 vendored LinuxCNC `configs/sim` source evidence
建立机器可读关联;
- `source-manifest.txt` 校验只证明 source asset 存在和覆盖归属,不把 browser virtual HAL
伪装成 Linux kernel hard-realtime ABI
- Web 仿真 HAL 的满足性现在同时可由 runtime capability、source compliance、browser
diagnostics artifact 和 sim-config source coverage 四条路径验证。
下一步工作内容:
1. 将 `virtualHalSimConfigSourceCoverage` 接入 project release readiness / batch
acceptance artifact使 release gate 直接检查 Web virtual HAL 的 LinuxCNC sim-config
来源覆盖。
2. 增加 HAL command script fixtures把典型 `halcmd` 脚本作为 source-derived workflow
gate覆盖 `setp`、`sets`、`net`、`show`、`getp`、`gets`、`loadrt`、`loadusr`、`addf`
和 `start/stop`。
3. 推进 OPFS/session persistence 与 virtual HAL runtime state 整合,把 HAL pin/signal/param、
motion target、machine status、diagnostics artifact 一并纳入可恢复 Web 仿真会话。
### 四、2026-06-17 Release Artifact Virtual HAL Sim Config Source Gate
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,把
`virtualHalSimConfigSourceCoverage` 从 SDK/browser report 接入 release readiness 与 batch
acceptance artifact使 release gate 能直接检查 Web virtual HAL 的 LinuxCNC sim-config
来源覆盖。
新增实质能力:
- `createProjectReleaseReadinessReport()` 新增:
- `virtualHalSimConfigSourceCoverage`
- `virtualHalSimConfigSourceCoverageReady`
- missing reason`virtual-hal-sim-config-source-coverage`
- summary row`Virtual HAL sim-config source coverage`
- `createProjectReleaseReadinessArtifactValidation()` 新增强制校验:
- artifact 必须携带 `linuxcnc-wasm-virtual-hal-sim-config-source-coverage-report`
- `complete === true`
- `webSimulationSatisfied === true`
- `missingTargets.length === 0`
- `missingCapabilities.length === 0`
- 必须包含 LinuxCNC foam sim source evidence
- 必须包含 qtdragon on-abort sim source evidence
- `createProjectReleaseReadinessArtifactValidationSummaryViewModel()` 新增对应 summary row
- `createProjectBatchAcceptanceWorkflow()` / `createProjectBatchAcceptanceReport()` 新增可选
`virtualHalSimConfigSourceCoverage`
- `createProjectBatchAcceptanceReportValidation()` 新增可选 coverage 校验;
- `write_project_release_readiness_artifact.mjs` 生成 artifact 时读取
`wasm-port/tools/source-manifest.txt`,并写入 manifest-checked coverage report
- `write_project_batch_acceptance_artifact.mjs` 生成 artifact 时写入同一 coverage report
并新增 accepted capability
`virtual-hal-sim-config-source-coverage`。
新增/扩展验证:
- SDK surface gate 覆盖:
- release readiness 默认缺少 coverage 时不 ready
- 传入 coverage 后 release readiness ready
- release readiness artifact validation 返回
`virtualHalSimConfigSourceCoverageReady === true`
- batch acceptance artifact 携带 coverage 后 checklist 为 `4/4 passed`
- release gate manifest gate 覆盖:
- summary view-model 显示 virtual HAL sim-config source coverage ready
- artifact URL workflow 读取带 coverage 的 release readiness artifact
- batch acceptance artifact gate 覆盖:
- JSON artifact 内含 virtual HAL sim-config source coverage
- source evidence 包含 LinuxCNC foam sim
- checklist 为 `4/4 passed`
- release readiness artifact gate 覆盖:
- JSON artifact 内含 virtual HAL sim-config source coverage
- source evidence 包含 LinuxCNC foam sim 与 qtdragon on-abort sim。
关键验证:
```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
project_release_readiness_artifact_node_smoke=ok
```
语义边界:
- 本批没有新增 G-code/interpreter/planner/kinematics 语义;
- release artifact 只校验 virtual HAL 仿真来源覆盖,不把 browser virtual HAL 声称为
Linux kernel hard-realtime ABI
- Web 仿真 HAL 的 LinuxCNC `configs/sim` 来源覆盖现在成为 release readiness 与 batch
acceptance artifact 的一等 gate evidence。
下一步工作内容:
1. 增加 HAL command script fixtures把典型 `halcmd` 脚本作为 source-derived workflow
gate覆盖 `setp`、`sets`、`net`、`show`、`getp`、`gets`、`loadrt`、`loadusr`、`addf`
和 `start/stop`。
2. 推进 OPFS/session persistence 与 virtual HAL runtime state 整合,把 HAL pin/signal/param、
motion target、machine status、diagnostics artifact 一并纳入可恢复 Web 仿真会话。
3. 将 browser diagnostics artifact 与 project release readiness artifact 做 URL workflow
联动,让 release 页面能直接读取 Web 仿真诊断中的 virtual HAL source coverage。
### 五、2026-06-17 Virtual HAL Command Script Fixtures
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,把典型 `halcmd`
脚本固化为 source-derived fixture report使 Web 仿真的 HAL command workflow 可由 SDK
和 browser diagnostics artifact 双路径验证。
新增实质能力:
- 新增 `VIRTUAL_HAL_COMMAND_SCRIPT_FIXTURES`
- `pin-signal-net-show`
- `newsig`
- `setp`
- `sets`
- `net`
- `show pin`
- `show sig`
- `getp`
- `gets`
- `load-thread-start-stop`
- `loadrt`
- `loadusr`
- `addf`
- `start`
- `show function`
- `stop`
- 新增 `createVirtualHalCommandScriptFixtureReport()`
- 执行 fixture command script
- 汇总 covered halcmd actions
- 检查 missing actions
- 检查 expected output
- 输出 `webSimulationSatisfied`
- 输出 LinuxCNC halcmd source files
- `createVirtualHalSourceComplianceReport()` 新增内嵌:
- `commandScriptFixtures`
- `createVirtualHalSimulationReplacementReport()` 新增内嵌:
- `commandScriptFixtures`
- `createLinuxCncVirtualHalRuntime()` 新增:
- `getCommandScriptFixtureReport()`
- `createVirtualHalShowRows()` 新增:
- `show function`
- `show thread`
- SDK index、SDK README、browser simulation re-export 同步新增该 API
- Browser simulation API 新增:
- `getVirtualHalCommandScriptFixtureReport()`
- `exportDiagnosticsArtifact()` 新增:
- `virtualHalCommandScriptFixtures`。
新增/扩展验证:
- `verify_sdk_surface.mjs` 覆盖:
- `VIRTUAL_HAL_COMMAND_SCRIPT_FIXTURES` 导出;
- `createVirtualHalCommandScriptFixtureReport()` 导出;
- fixture report `complete === true`
- fixture report `webSimulationSatisfied === true`
- `missingActions.length === 0`
- `missingFixtures.length === 0`
- source evidence 包含 `linuxcnc/src/hal/utils/halcmd_commands.cc`
- covered actions 覆盖:
`setp`、`sets`、`net`、`show`、`getp`、`gets`、`loadrt`、`loadusr`、`addf`、
`start`、`stop`
- runtime wrapper 可读取 command fixture report
- replacement report 内嵌 command fixture report
- source compliance report 内嵌 command fixture report
- `real_simulation_page_smoke.html` 覆盖:
- 页面 API 暴露 `getVirtualHalCommandScriptFixtureReport()`
- diagnostics artifact 中 `virtualHalCommandScriptFixtures.complete === true`
- diagnostics artifact 中 covered actions 包含 `loadusr`
- API report 包含 `setp`、`stop` 和 LinuxCNC halcmd source evidence
- replacement/source compliance report 内嵌 command fixture report。
关键验证:
```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
browser_real_simulation_page_smoke=ok
```
语义边界:
- 本批没有新增 G-code/interpreter/planner/kinematics 语义;
- 本批只把 Web virtual HAL 的 `halcmd` workflow 与 LinuxCNC halcmd source evidence
建立可执行 fixture 关联;
- `loadrt`、`loadusr`、`addf`、`start`、`stop` 在 browser virtual HAL 中仍是 Web 仿真
workflow 的可记录替代层,不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI
或 native HAL module ABI
- Web 仿真 HAL 的满足性现在可由 runtime capability、source compliance、sim-config
source coverage、release artifact gate、command script fixture report 和 browser
diagnostics artifact 共同验证。
下一步工作内容:
1. 推进 OPFS/session persistence 与 virtual HAL runtime state 整合,把 HAL pin/signal/param、
motion target、machine status、diagnostics artifact 一并纳入可恢复 Web 仿真会话。
2. 将 browser diagnostics artifact 与 project release readiness artifact 做 URL workflow
联动,让 release 页面能直接读取 Web 仿真诊断中的 virtual HAL source coverage。
3. 扩展 motion controller 仿真测试矩阵,把多轴 target、servo period、distance-to-go、
in-position 与 HAL pin feedback 的关系做成 source-derived report/gate。
### 六、2026-06-17 OPFS Session Virtual HAL Runtime State Persistence
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,把 virtual HAL
runtime state 接入 OPFS/session snapshot payload使 HAL pin/signal/param、motion target、
machine status、diagnostics/source reports 能随 Web 仿真会话保存和恢复。
新增实质能力:
- `runtime/opfs/snapshot-store.js` 新增:
- `createVirtualHalSessionPayload()`
- `restoreVirtualHalStateFromSessionSnapshot()`
- `createMachineSessionSnapshotPayload()` 新增可选:
- `virtualHal`
- `virtualHalState`
- `virtualHalOptions`
- virtual HAL session payload 内容包括:
- `state`:完整 browser virtual HAL state
- `diagnostics`simulation replacement report
- `sourceCompliance`LinuxCNC source compliance report
- `simConfigSourceCoverage`LinuxCNC `configs/sim` source coverage report
- `commandScriptFixtures`LinuxCNC halcmd source-derived command fixture report
- snapshot validation 新增 virtual HAL payload 校验:
- state source 必须为 `browser-virtual-hal`
- source compliance 必须 complete
- sim-config source coverage 必须 complete
- command script fixtures 必须 complete
- SDK index 与 README 同步导出:
- `createVirtualHalSessionPayload()`
- `restoreVirtualHalStateFromSessionSnapshot()`。
新增/扩展验证:
- `verify_file_service.mjs` 覆盖:
- 通过 virtual halcmd 建立 signal/net/pin/component/thread state
- `createVirtualHalSessionPayload()` 写入 HAL signal/net/loadusr state
- payload 内嵌 source compliance、sim-config source coverage、command script fixtures
- `createMachineSessionSnapshotPayload()` 可携带 virtual HAL payload
- `createSessionSnapshot()` 可封装 virtual HAL session payload
- `restoreVirtualHalStateFromSessionSnapshot()` 可恢复 signal/net/loadusr state
- `saveSessionSnapshot()` / `loadSessionSnapshot()` 可 OPFS roundtrip virtual HAL state
- `ini_panel_smoke.html` 覆盖 browser OPFS
- browser 侧创建 virtual HAL state
- browser 侧保存 virtual HAL session snapshot
- browser 侧恢复 HAL net 与 `loadusr halui` state
- `verify_sdk_surface.mjs` 覆盖:
- SDK index/README 导出新 API
- virtual HAL session payload 包含 complete source reports
- session snapshot 可恢复 HAL net。
关键验证:
```text
opfs_file_service_node_smoke=ok
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
browser_ini_opfs_smoke=ok
browser_ini_control_page_smoke=ok
browser_ini_launch_smoke=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
browser_real_simulation_page_smoke=ok
```
语义边界:
- 本批没有新增 G-code/interpreter/planner/kinematics 语义;
- OPFS/session snapshot 只保存和恢复 Web virtual HAL 仿真状态与来源报告;
- virtual HAL 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native
HAL module ABI
- Web 仿真 HAL 的满足性现在可以随 OPFS/session snapshot 持久化,并在恢复后继续由
source compliance、sim-config source coverage、command script fixture report 验证。
下一步工作内容:
1. 将 browser diagnostics artifact 与 project release readiness artifact 做 URL workflow
联动,让 release 页面能直接读取 Web 仿真诊断中的 virtual HAL source coverage。
2. 扩展 motion controller 仿真测试矩阵,把多轴 target、servo period、distance-to-go、
in-position 与 HAL pin feedback 的关系做成 source-derived report/gate。
3. 将 virtual HAL session payload 接入 real simulation page 的显式保存/恢复按钮或 API
让用户可直接保存和恢复完整 Web CNC 仿真会话。
### 七、2026-06-17 Browser Diagnostics Artifact Release URL Workflow
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,把 browser
diagnostics artifact 与 project release readiness artifact 做成 URL workflow 联动,使 release
工作流可以直接读取 Web 仿真诊断中的 virtual HAL source coverage、source compliance 和
halcmd command fixture evidence。
新增实质能力:
- `project-release-readiness.js` 新增:
- `createProjectReleaseBrowserDiagnosticsArtifactValidation()`
- 对 real browser simulation diagnostics artifact 的 release 级验证;
- browser diagnostics artifact validation 覆盖:
- `apiName === "real-browser-simulation-diagnostics-artifact"`
- `virtualHal.source === "browser-virtual-hal"`
- `virtualHalSimulationReplacement.replacesHostRuntimeForSimulation === true`
- `virtualHalSourceCompliance.complete === true`
- `virtualHalSimConfigSourceCoverage.complete === true`
- `virtualHalCommandScriptFixtures.complete === true`
- LinuxCNC halcmd source evidence 包含
`linuxcnc/src/hal/utils/halcmd_commands.cc`
- LinuxCNC sim config source evidence 包含
`linuxcnc/configs/sim/axis/foam/axis_foam.ini` 与
`linuxcnc/configs/sim/qtdragon/qtdragon_xyz/on_abort.ngc`
- `loadProjectReleaseReadinessArtifactUrlWorkflow()` 新增可选:
- `diagnosticsUrl`
- `diagnosticsFetched`
- `diagnosticsHttpStatus`
- `diagnosticsFetchError`
- `diagnosticsValidation`
- URL workflow 现在在传入 `diagnosticsUrl` 时同时验证:
- project release readiness artifact
- browser real simulation diagnostics artifact
- diagnostics artifact 中的 virtual HAL source coverage
- URL workflow summary/action-plan 新增 browser diagnostics 状态;
- `verify_project_release_gate_manifest.mjs` 同步接受未请求 diagnostics URL 时的
`diagnostics-workflow: not requested` 合约;
- SDK index 已导出 `createProjectReleaseBrowserDiagnosticsArtifactValidation()`。
新增/扩展验证:
- `verify_project_release_artifact_url_workflow.mjs` 覆盖:
- 构造 browser diagnostics artifact
- 验证 diagnostics artifact release validation `ready === true`
- URL workflow 同时 fetch release artifact 与 diagnostics artifact
- `diagnosticsFetched === true`
- `diagnosticsHttpStatus === 200`
- `diagnosticsValidation.ready === true`
- summary view model 输出 `browser-diagnostics: ready`
- `verify_sdk_surface.sh` 聚合覆盖:
- SDK surface
- release gate manifest
- release artifact URL workflow
- batch acceptance workflow
- batch acceptance artifact
- `verify_real_simulation_browser.sh` 覆盖:
- real simulation page diagnostics artifact 仍可导出完整 virtual HAL source reports
- 页面 browser API 未因 release URL workflow 联动发生退化。
关键验证:
```text
project_release_artifact_url_workflow_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_gate_manifest_node_smoke=ok
project_batch_acceptance_workflow_node_smoke=ok
project_batch_acceptance_artifact_node_smoke=ok
project_release_readiness_artifact_node_smoke=ok
browser_real_simulation_page_smoke=ok
```
语义边界:
- 本批没有新增 G-code/interpreter/planner/kinematics 语义;
- browser diagnostics artifact 只作为 Web virtual HAL 仿真来源与满足性的 release evidence
- virtual HAL 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native
HAL module ABI
- Web 仿真 HAL 的满足性现在可由 release artifact URL workflow 联动验证,结论仍限定在
Web 方式数控系统仿真范围内。
下一步工作内容:
1. 扩展 motion controller 仿真测试矩阵,把多轴 target、servo period、distance-to-go、
in-position 与 HAL pin feedback 的关系做成 source-derived report/gate。
2. 将 virtual HAL session payload 接入 real simulation page 的显式保存/恢复按钮或 API
让用户可直接保存和恢复完整 Web CNC 仿真会话。
3. 将 browser diagnostics artifact 的 URL workflow 接入 ini-panel workflow overview 页面,
让 release readiness 页面能显示 browser diagnostics validation rows。
### 八、2026-06-17 Virtual HAL Motion Controller Matrix Report
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,把 motion controller
仿真测试矩阵提升为 SDK/API/report/gate 能力,使多轴 target、servo period、distance-to-go、
in-position 与 HAL pin feedback 的关系可由 LinuxCNC motion source evidence 验证。
新增实质能力:
- 新增 `VIRTUAL_HAL_MOTION_CONTROLLER_MATRIX_FIXTURES`
- `x-single-axis-servo-dtg`
- 单轴 X target
- servo period `dt`
- velocity limit
- `motion.distance-to-go`
- `motion.in-position`
- `axis.x.pos-cmd`
- `joint.0.pos-fb`
- `xyz-multi-axis-in-position`
- XYZ 多轴 target
- 多周期 servo stepping
- final `in-position`
- axis feedback 与 joint feedback 一致性;
- `abc-rotary-feedback`
- ABC rotary axes target
- rotary axis command/feedback
- joint 3/4/5 feedback
- 新增 `createVirtualHalMotionControllerMatrixReport()`
- 执行每个 motion matrix fixture
- 读取 virtual HAL WASM bridge snapshot
- 验证 required motion/axis/joint pins
- 验证 `distanceToGo`
- 验证 `inPosition`
- 验证 axis command、joint feedback、HALUI feedback 一致;
- 输出 `webSimulationSatisfied`
- 输出 LinuxCNC motion source files
- `createVirtualHalSourceComplianceReport()` 新增内嵌:
- `motionControllerMatrix`
- source compliance complete 现在要求 motion matrix complete
- `createVirtualHalSimulationReplacementReport()` 新增内嵌:
- `motionControllerMatrix`
- replacement ready 现在要求 motion matrix complete
- `createLinuxCncVirtualHalRuntime()` 新增:
- `getMotionControllerMatrixReport()`
- SDK index、SDK README、browser simulation re-export 同步新增:
- `VIRTUAL_HAL_MOTION_CONTROLLER_MATRIX_FIXTURES`
- `createVirtualHalMotionControllerMatrixReport()`
- Browser simulation API 新增:
- `getVirtualHalMotionControllerMatrixReport()`
- `exportDiagnosticsArtifact()` 新增:
- `virtualHalMotionControllerMatrix`
- `createProjectReleaseBrowserDiagnosticsArtifactValidation()` 新增 release 级校验:
- diagnostics artifact 必须包含 complete motion controller matrix
- required pins 必须包含 `motion.distance-to-go` 与 `motion.in-position`
- source evidence 必须包含 `linuxcnc/src/emc/motion/motion.c` 与
`linuxcnc/src/emc/motion/axis.c`。
新增/扩展验证:
- `verify_sdk_surface.mjs` 覆盖:
- SDK index/README 导出新常量与新 report API
- motion matrix report `complete === true`
- motion matrix report `webSimulationSatisfied === true`
- missing fixtures 为 0
- source evidence 包含 LinuxCNC motion/axis source
- required pins 包含 `motion.distance-to-go` 与 `motion.in-position`
- `xyz-multi-axis-in-position` fixture 达到 `inPosition === true`
- 每个 axis/joint/HALUI feedback row 均 matched
- runtime wrapper 可读取 motion matrix report
- replacement/source compliance report 内嵌 motion matrix
- browser diagnostics artifact validation 要求 motion matrix ready
- `real_simulation_page_smoke.html` 覆盖:
- 页面 API 暴露 `getVirtualHalMotionControllerMatrixReport()`
- diagnostics artifact 中 `virtualHalMotionControllerMatrix.complete === true`
- diagnostics artifact 中 source evidence 包含 LinuxCNC motion source
- browser API matrix report 包含 motion pins、source evidence 和多轴 in-position fixture
- replacement/source compliance report 内嵌 motion matrix。
关键验证:
```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
browser_real_simulation_page_smoke=ok
project_release_readiness_artifact_node_smoke=ok
git diff --check ok
```
语义边界:
- 本批没有新增 G-code/interpreter/planner/kinematics 语义;
- motion matrix 只验证 Web virtual HAL motion controller 的仿真替代状态与 HAL pin
feedback不把 browser virtual HAL 声称为 Linux kernel hard-realtime ABI
- `stepVirtualHalMotionController()` 仍是 Web 仿真范围内的 deterministic servo-period
stepping不替代外部硬件驱动 ABI 或 native HAL module ABI
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作内容:
1. 将 virtual HAL session payload 接入 real simulation page 的显式保存/恢复按钮或 API
让用户可直接保存和恢复完整 Web CNC 仿真会话。
2. 将 browser diagnostics artifact 的 URL workflow 接入 ini-panel workflow overview 页面,
让 release readiness 页面能显示 browser diagnostics validation rows。
3. 扩展 motion matrix 与 LinuxCNC sim configs 的关联,把 external-offsets、QtDragon
multi-joint、vismach remap sims 的 motion source evidence 显式映射到 matrix fixture rows。
### 九、2026-06-17 Real Simulation Virtual HAL Session Save/Restore
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,把 virtual HAL
session payload 接入 real simulation page 的显式保存/恢复按钮与 browser API让用户可在
Web CNC 仿真页面直接保存和恢复完整 virtual HAL runtime state。
新增实质能力:
- `runtime/opfs/snapshot-store.js` 扩展 virtual HAL session payload
- 新增 `motionControllerMatrix`
- payload validation 要求 motion controller matrix complete
- `createVirtualHalSessionPayload()` 默认生成 motion matrix evidence
- real simulation page 新增 Machine Session 面板控件:
- `Save HAL Session`
- `Restore HAL Session`
- `Virtual HAL session` 状态行;
- Browser simulation API 新增:
- `getVirtualHalSessionState()`
- `saveVirtualHalSessionSnapshot(options)`
- `restoreVirtualHalSessionSnapshot(options)`
- 保存流程:
- 使用当前 `virtualHalState` 创建 `createVirtualHalSessionPayload()`
- 使用 `createMachineSessionSnapshotPayload()` 封装 machine/session payload
- 使用 `saveSessionSnapshot()` 写入 OPFS
- snapshot metadata 记录 `real-browser-simulation-virtual-hal-session` 与 HAL revision
- 恢复流程:
- 使用 `loadSessionSnapshot()` 读取 OPFS snapshot
- 使用 `restoreVirtualHalStateFromSessionSnapshot()` 恢复 virtual HAL state
- 重新渲染 HAL machine state、statusbar 和 session 状态;
- SDK README OPFS/session persistence section 同步说明:
- `createVirtualHalSessionPayload()`
- `restoreVirtualHalStateFromSessionSnapshot()`
- payload 包含 source compliance、sim-config coverage、halcmd fixtures、motion
controller matrix evidence。
新增/扩展验证:
- `verify_file_service.mjs` 覆盖:
- virtual HAL session payload 内含 motion controller matrix complete
- machine session snapshot payload 内含 motion matrix LinuxCNC source evidence
- `verify_sdk_surface.mjs` 覆盖:
- virtual HAL session payload 内含 motion controller matrix complete
- `real_simulation_page_smoke.html` 覆盖:
- 页面存在显式保存/恢复按钮;
- browser API 暴露保存/恢复方法;
- 保存当前 HAL net、loaded component、function、source reports、motion matrix
- 保存后修改 HAL pin 与 loadusr state
- 恢复后 `axis.x.pos-cmd` 回到保存值;
- 恢复后临时 `post-save-component` 不再存在;
- 恢复后 `motion-controller` function 仍存在;
- DOM/body dataset 显示 saved/restored 状态。
关键验证:
```text
opfs_file_service_node_smoke=ok
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
browser_real_simulation_page_smoke=ok
git diff --check ok
```
语义边界:
- 本批没有新增 G-code/interpreter/planner/kinematics 语义;
- session snapshot 只保存和恢复 Web virtual HAL runtime state、source reports 和
diagnostics evidence
- virtual HAL 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native
HAL module ABI
- Web 仿真 HAL 的满足性现在可在 real simulation page 中由用户显式保存、恢复并继续验证。
下一步工作内容:
1. 将 browser diagnostics artifact 的 URL workflow 接入 ini-panel workflow overview 页面,
让 release readiness 页面能显示 browser diagnostics validation rows。
2. 扩展 motion matrix 与 LinuxCNC sim configs 的关联,把 external-offsets、QtDragon
multi-joint、vismach remap sims 的 motion source evidence 显式映射到 matrix fixture rows。
3. 将 real simulation page 的 virtual HAL session snapshot 与 release diagnostics artifact
做联动,使保存的 Web CNC 仿真会话可直接输出 release-ready diagnostics evidence。