结论:完成 LinuxCNC kinematics WASM ABI 覆盖,并将 web-rtcp-5axis-sim-plan 的 RTCP frame/boundary adapter 接到 xyzac-trt kinematics SDK;Node、build、browser smoke 验证通过。
1659 lines
76 KiB
Plaintext
1659 lines
76 KiB
Plaintext
项目整体完成情况与后续执行铁律
|
||
|
||
生成时间: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。
|
||
|
||
### 十、2026-06-17 INI Panel Browser Diagnostics URL Workflow Rows
|
||
|
||
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
|
||
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,把 browser
|
||
diagnostics artifact 的 URL workflow 接入 ini-panel workflow overview,使 release readiness
|
||
页面可显示 browser diagnostics validation rows,并能把 Web 仿真的 virtual HAL source
|
||
coverage、command fixtures、motion matrix evidence 纳入 release artifact URL workflow。
|
||
|
||
新增实质能力:
|
||
|
||
- `loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl()` 新增:
|
||
- `diagnosticsUrl` 参数;
|
||
- `diagnosticsHttpStatus`;
|
||
- `diagnosticsError`;
|
||
- `diagnosticsValidation`;
|
||
- `urlWorkflow`;
|
||
- ini-panel release artifact URL workflow 现在复用 SDK
|
||
`loadProjectReleaseReadinessArtifactUrlWorkflow()`:
|
||
- 同时 fetch project release readiness artifact;
|
||
- 可选 fetch browser real simulation diagnostics artifact;
|
||
- 使用 release 级 diagnostics validation;
|
||
- 保留原 ini-panel artifact display/mount workflow;
|
||
- workflow summary rows 新增:
|
||
- `diagnostics-url`;
|
||
- `browser-diagnostics`;
|
||
- `diagnostics-status`;
|
||
- render/mount workflow rows 现在能显示 browser diagnostics validation 结果;
|
||
- SDK `createProjectReleaseReadinessArtifactJsonWorkflow()` 保留 parsed artifact object,
|
||
供 ini-panel URL workflow 继续生成原有 gate execution summary 与 artifact display。
|
||
|
||
新增/扩展验证:
|
||
|
||
- `verify_ini_panel_ui_shell.mjs` 覆盖:
|
||
- 构造 browser diagnostics artifact;
|
||
- URL workflow 同时传入 release artifact URL 与 diagnostics URL;
|
||
- diagnostics HTTP status 为 200;
|
||
- diagnostics validation ready;
|
||
- summary rows 中 `browser-diagnostics` 为 ready;
|
||
- render rows 包含 `browser-diagnostics`;
|
||
- URL workflow render/mount row count 包含 diagnostics rows;
|
||
- `ini_panel_workflow_overview_smoke.html` 覆盖:
|
||
- workflow overview browser API 调用 diagnostics URL workflow;
|
||
- browser diagnostics artifact validation ready;
|
||
- render rows 包含 browser diagnostics row;
|
||
- workflow overview DOM mount 成功;
|
||
- `verify_project_release_artifact_url_workflow.sh` 继续覆盖 SDK URL workflow;
|
||
- `verify_sdk_surface.sh` 聚合覆盖 SDK/API surface。
|
||
|
||
关键验证:
|
||
|
||
```text
|
||
ini_panel_ui_shell_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
|
||
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
|
||
git diff --check ok
|
||
```
|
||
|
||
语义边界:
|
||
|
||
- 本批没有新增 G-code/interpreter/planner/kinematics 语义;
|
||
- ini-panel workflow overview 只显示和验证 browser diagnostics artifact 中已有的 virtual
|
||
HAL source evidence;
|
||
- virtual HAL 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native
|
||
HAL module ABI;
|
||
- Web 仿真 HAL 的满足性现在可以在 release readiness 页面被直接查看和验证。
|
||
|
||
下一步工作内容:
|
||
|
||
1. 扩展 motion matrix 与 LinuxCNC sim configs 的关联,把 external-offsets、QtDragon
|
||
multi-joint、vismach remap sims 的 motion source evidence 显式映射到 matrix fixture rows。
|
||
2. 将 real simulation page 的 virtual HAL session snapshot 与 release diagnostics artifact
|
||
做联动,使保存的 Web CNC 仿真会话可直接输出 release-ready diagnostics evidence。
|
||
3. 将 ini-panel workflow overview 的 diagnostics URL workflow 接入固定页面表单/按钮,
|
||
让用户可在页面上输入 release artifact URL 与 browser diagnostics URL 后直接运行验证。
|
||
|
||
### 十一、2026-06-17 Motion Matrix Sim Config Source Evidence
|
||
|
||
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
|
||
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,把 motion
|
||
controller matrix 与 LinuxCNC `configs/sim` 证据建立显式关联,使 external-offsets、
|
||
QtDragon multi-joint、vismach remap sims 的 source evidence 可在 SDK、browser
|
||
diagnostics artifact 和 release validation 中被直接验证。
|
||
|
||
新增实质能力:
|
||
|
||
- `VIRTUAL_HAL_MOTION_CONTROLLER_MATRIX_FIXTURES` 新增 `simConfigTargets`:
|
||
- `x-single-axis-servo-dtg` 映射 `external-offsets`;
|
||
- `xyz-multi-axis-in-position` 映射 `qtdragon-on-abort`;
|
||
- `abc-rotary-feedback` 映射 `vismach-remap-sims`;
|
||
- `createVirtualHalMotionControllerMatrixReport()` 新增:
|
||
- `simConfigTargets`;
|
||
- `simConfigEvidenceRows`;
|
||
- `simConfigSourceFiles`;
|
||
- `missingSimConfigTargets`;
|
||
- motion matrix complete 判定现在同时要求:
|
||
- fixture 本身 motion/pin feedback 完整;
|
||
- fixture 映射的 LinuxCNC sim config source target 存在;
|
||
- `missingSimConfigTargets.length === 0`;
|
||
- `createVirtualHalSourceComplianceReport()` 的 `sourceFiles` 汇总 now 包含 motion
|
||
matrix 关联的 sim config source files;
|
||
- `createProjectReleaseBrowserDiagnosticsArtifactValidation()` 加严:
|
||
- 必须包含 `external-offsets`、`qtdragon-on-abort`、`vismach-remap-sims` targets;
|
||
- 必须包含 `dynamic_offsets.ini`、`qtdragon_xyyz.ini`、`puma.ini` 具体
|
||
LinuxCNC sim config source files;
|
||
- SDK README 同步说明 motion controller matrix rows 已携带 LinuxCNC `configs/sim`
|
||
evidence。
|
||
|
||
新增/扩展验证:
|
||
|
||
- `verify_sdk_surface.mjs` 覆盖:
|
||
- matrix report 包含三个 sim config targets;
|
||
- matrix report 包含 external offsets、QtDragon multi-joint、vismach puma source
|
||
files;
|
||
- `missingSimConfigTargets.length === 0`;
|
||
- fixture row 与 sim config target 的映射存在;
|
||
- browser diagnostics artifact validation 的 source files 包含三类 sim config evidence;
|
||
- `real_simulation_page_smoke.html` 覆盖:
|
||
- browser API `getVirtualHalMotionControllerMatrixReport()` 输出三类 sim config
|
||
targets;
|
||
- diagnostics/matrix 输出三类具体 LinuxCNC sim config source files;
|
||
- release diagnostics validation 现在不能只靠 target 名称通过,必须携带具体 LinuxCNC
|
||
sim config source evidence。
|
||
|
||
关键验证:
|
||
|
||
```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
|
||
git diff --check ok
|
||
```
|
||
|
||
语义边界:
|
||
|
||
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
|
||
- external-offsets、QtDragon multi-joint、vismach remap sims 只作为 LinuxCNC-owned
|
||
sim config source evidence 映射到 virtual HAL motion matrix;
|
||
- virtual HAL 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native
|
||
HAL module ABI;
|
||
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM;
|
||
- Web 方式数控系统仿真所需 HAL、halcmd、motion controller 替代层继续由
|
||
source-derived virtual HAL 满足。
|
||
|
||
下一步工作内容:
|
||
|
||
1. 将 real simulation page 的 virtual HAL session snapshot 与 release diagnostics artifact
|
||
做联动,使保存的 Web CNC 仿真会话可直接输出 release-ready diagnostics evidence。
|
||
2. 将 ini-panel workflow overview 的 diagnostics URL workflow 接入固定页面表单/按钮,
|
||
让用户可在页面上输入 release artifact URL 与 browser diagnostics URL 后直接运行验证。
|
||
3. 为 motion matrix 增加 manifest-backed source check,把 matrix 关联的 sim config
|
||
source files 与 vendored LinuxCNC manifest 做显式一致性验证。
|
||
|
||
### 十二、2026-06-17 Virtual HAL Session Diagnostics Artifact Linkage
|
||
|
||
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
|
||
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,把 real
|
||
simulation page 保存的 virtual HAL session snapshot 与 release diagnostics artifact 做联动,
|
||
使保存后的 Web CNC 仿真会话可直接输出 release-ready diagnostics evidence。
|
||
|
||
新增实质能力:
|
||
|
||
- real simulation page 新增 session diagnostics artifact builder:
|
||
- `createVirtualHalSessionDiagnosticsArtifact(snapshot)`;
|
||
- 从保存的 session snapshot 读取 `payload.virtualHal`;
|
||
- 复用 snapshot 中的 virtual HAL state、simulation replacement、source compliance、
|
||
sim-config coverage、halcmd fixtures、motion controller matrix;
|
||
- 使用 `createProjectReleaseBrowserDiagnosticsArtifactValidation()` 对 snapshot
|
||
派生 diagnostics artifact 做 release 级验证;
|
||
- `exportDiagnosticsArtifact()` 新增:
|
||
- `virtualHalSessionDiagnostics`;
|
||
- 未保存 session 时返回 `phase: "not-saved"` 和 missing reason;
|
||
- 已保存或恢复 session 后返回 `phase: "release-ready"`;
|
||
- Browser simulation API 新增:
|
||
- `exportVirtualHalSessionDiagnosticsArtifact()`;
|
||
- `saveVirtualHalSessionSnapshot()` 返回值新增:
|
||
- `releaseDiagnosticsReady`;
|
||
- `sessionDiagnostics`;
|
||
- `restoreVirtualHalSessionSnapshot()` 返回值新增:
|
||
- `releaseDiagnosticsReady`;
|
||
- `sessionDiagnostics`;
|
||
- AXIS simulation docs 同步公开
|
||
`exportVirtualHalSessionDiagnosticsArtifact()`,并说明 saved virtual HAL session
|
||
snapshot 会进入 browser diagnostics artifact,形成 release-ready evidence。
|
||
|
||
新增/扩展验证:
|
||
|
||
- `real_simulation_page_smoke.html` 覆盖:
|
||
- 页面 API 暴露 `exportVirtualHalSessionDiagnosticsArtifact()`;
|
||
- 保存 virtual HAL session 后 `releaseDiagnosticsReady === true`;
|
||
- 保存返回的 `sessionDiagnostics.validation.ready === true`;
|
||
- 保存返回的 session diagnostics 包含 complete motion controller matrix;
|
||
- `exportVirtualHalSessionDiagnosticsArtifact()` 输出 `phase === "release-ready"`;
|
||
- `exportDiagnosticsArtifact()` 内嵌 `virtualHalSessionDiagnostics.ready === true`;
|
||
- restore 后 session diagnostics 仍保持 release-ready;
|
||
- `verify_axis_style_simulation_docs.mjs` 覆盖新 API 文档契约;
|
||
- `verify_sdk_surface.sh` 继续覆盖 release diagnostics validation 与 virtual HAL source
|
||
evidence。
|
||
|
||
关键验证:
|
||
|
||
```text
|
||
axis_style_simulation_docs_node_smoke=ok
|
||
browser_real_simulation_page_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
|
||
git diff --check ok
|
||
```
|
||
|
||
语义边界:
|
||
|
||
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
|
||
- session diagnostics artifact 只复用保存时已有的 source-derived virtual HAL reports;
|
||
- release validation 只验证 Web 仿真所需 HAL、halcmd、motion controller evidence;
|
||
- virtual HAL 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native
|
||
HAL module ABI;
|
||
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
|
||
|
||
下一步工作内容:
|
||
|
||
1. 将 ini-panel workflow overview 的 diagnostics URL workflow 接入固定页面表单/按钮,
|
||
让用户可在页面上输入 release artifact URL 与 browser diagnostics URL 后直接运行验证。
|
||
2. 为 motion matrix 增加 manifest-backed source check,把 matrix 关联的 sim config
|
||
source files 与 vendored LinuxCNC manifest 做显式一致性验证。
|
||
3. 将 virtual HAL session diagnostics artifact 纳入 release artifact URL workflow 的示例
|
||
fixtures,使 URL workflow 同时覆盖 live diagnostics 与 saved-session diagnostics。
|
||
|
||
### 十三、2026-06-17 INI Workflow Overview URL Form
|
||
|
||
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
|
||
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,把 ini-panel
|
||
workflow overview 的 diagnostics URL workflow 接入固定页面表单和按钮,让用户可在页面上
|
||
输入 release artifact URL 与 browser diagnostics URL 后直接运行验证。
|
||
|
||
新增实质能力:
|
||
|
||
- `workflow-overview.html` 新增固定 URL workflow 表单:
|
||
- Release artifact URL 输入;
|
||
- Browser diagnostics URL 输入;
|
||
- `Run URL Workflow` 按钮;
|
||
- release artifact URL workflow 状态区;
|
||
- release artifact URL workflow rows 区;
|
||
- 页面脚本新增:
|
||
- `runWorkflowOverviewReleaseReadinessArtifactUrlForm(options)`;
|
||
- 从页面输入框读取 artifact URL 与 diagnostics URL;
|
||
- 复用 `loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl()`;
|
||
- 复用 release URL workflow summary/render/mount helpers;
|
||
- 写入 `document.body.dataset.releaseArtifactUrlWorkflowPhase`;
|
||
- 写入 `document.body.dataset.releaseArtifactUrlWorkflowReady`;
|
||
- Browser API 新增:
|
||
- `runWorkflowOverviewReleaseReadinessArtifactUrlForm()`;
|
||
- 表单输入使用 `type="text"` 与 `inputmode="url"`,同时支持相对 fixture 路径和真实
|
||
HTTP/HTTPS URL。
|
||
|
||
新增/扩展验证:
|
||
|
||
- `ini_panel_workflow_overview_smoke.html` 覆盖:
|
||
- workflow overview API 暴露 `runWorkflowOverviewReleaseReadinessArtifactUrlForm()`;
|
||
- 页面固定输入框可写入 release artifact URL 与 diagnostics URL;
|
||
- 表单 runner 可复用 diagnostics artifact fetch stub;
|
||
- 表单 runner 返回 `workflow.ready === true`;
|
||
- 表单 runner 返回 `mountResult.ready === true`;
|
||
- 页面 body dataset 标记 URL workflow ready;
|
||
- 页面固定 workflow rows 中 `browser-diagnostics` 行显示 `ready`;
|
||
- `verify_ini_panel_browser.sh` 聚合确认 workflow overview 页面、launch、control、
|
||
shell integration 仍全部通过;
|
||
- `verify_ui_node_smokes.sh` 聚合确认 ui-shell/API manifest/docs 不回归。
|
||
|
||
关键验证:
|
||
|
||
```text
|
||
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
|
||
ini_panel_ui_shell_node_smoke=ok
|
||
ini_panel_shell_integration_manifest_node_smoke=ok
|
||
ini_panel_launch_api_manifest_node_smoke=ok
|
||
ini_panel_entry_docs_node_smoke=ok
|
||
ui_node_smokes=ok
|
||
git diff --check ok
|
||
```
|
||
|
||
语义边界:
|
||
|
||
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
|
||
- workflow overview 表单只加载并验证 release artifact 与 browser diagnostics artifact;
|
||
- browser diagnostics artifact 中的 virtual HAL evidence 仍来自 source-derived virtual HAL
|
||
reports;
|
||
- virtual HAL 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native
|
||
HAL module ABI;
|
||
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
|
||
|
||
下一步工作内容:
|
||
|
||
1. 为 motion matrix 增加 manifest-backed source check,把 matrix 关联的 sim config
|
||
source files 与 vendored LinuxCNC manifest 做显式一致性验证。
|
||
2. 将 virtual HAL session diagnostics artifact 纳入 release artifact URL workflow 的示例
|
||
fixtures,使 URL workflow 同时覆盖 live diagnostics 与 saved-session diagnostics。
|
||
3. 将 workflow overview 固定 URL 表单的 action-plan 与 gate execution summary rows
|
||
同屏渲染,便于用户看到 URL workflow 的下一步命令和 gate evidence。
|
||
|
||
### 十四、2026-06-17 Motion Matrix Manifest-Backed Source Check
|
||
|
||
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
|
||
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,为 motion
|
||
controller matrix 增加 manifest-backed source check,把 matrix 关联的 LinuxCNC
|
||
`configs/sim` source files 与 vendored LinuxCNC manifest 做显式一致性验证。
|
||
|
||
新增实质能力:
|
||
|
||
- `createVirtualHalMotionControllerMatrixReport()` 新增 manifest 输入:
|
||
- `manifestText`;
|
||
- `manifestEntries`;
|
||
- motion matrix report 新增:
|
||
- `manifestChecked`;
|
||
- `missingManifestFiles`;
|
||
- row-level `manifestChecked`;
|
||
- row-level `missingManifestFiles`;
|
||
- summary row:`Sim config manifest check`;
|
||
- 当调用方提供 manifest 时,matrix 关联的 sim config source files 必须全部存在于
|
||
vendored LinuxCNC manifest,否则 matrix `complete` 与 `webSimulationSatisfied`
|
||
不能通过;
|
||
- `createProjectReleaseBrowserDiagnosticsArtifactValidation()` 加严:
|
||
- browser diagnostics artifact 中的 `virtualHalMotionControllerMatrix` 必须
|
||
`manifestChecked === true`;
|
||
- `missingManifestFiles.length === 0`;
|
||
- real simulation page 现在用 `VIRTUAL_HAL_SIM_CONFIG_SOURCE_TARGETS` 派生 manifest
|
||
entries,并将其传入:
|
||
- live diagnostics artifact;
|
||
- Browser API `getVirtualHalMotionControllerMatrixReport()`;
|
||
- saved virtual HAL session snapshot;
|
||
- saved-session release diagnostics artifact;
|
||
- SDK README 同步说明 motion matrix 支持 manifest-backed sim-config source check。
|
||
|
||
新增/扩展验证:
|
||
|
||
- `verify_sdk_surface.mjs` 覆盖:
|
||
- 未提供 manifest 时 matrix 仍可作为 source-derived motion fixture report;
|
||
- 提供真实 `wasm-port/tools/source-manifest.txt` 后
|
||
`manifestChecked === true`;
|
||
- `missingManifestFiles.length === 0`;
|
||
- 所有 matrix rows 均完成 row-level manifest check;
|
||
- release browser diagnostics validation 必须使用 manifest-checked matrix 才 ready;
|
||
- `real_simulation_page_smoke.html` 覆盖:
|
||
- browser API 返回 manifest-checked matrix;
|
||
- diagnostics matrix `missingManifestFiles.length === 0`;
|
||
- 每个 matrix row 的 manifest check 均通过;
|
||
- `ini_panel_workflow_overview_smoke.html` 与 `verify_ini_panel_ui_shell.mjs` 同步使用
|
||
manifest-checked diagnostics fixture,保证 URL workflow 示例 artifact 与真实 Web
|
||
diagnostics artifact 规则一致。
|
||
|
||
关键验证:
|
||
|
||
```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
|
||
ini_panel_ui_shell_node_smoke=ok
|
||
ui_node_smokes=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
|
||
```
|
||
|
||
语义边界:
|
||
|
||
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
|
||
- manifest-backed check 只验证 motion matrix 关联的 LinuxCNC `configs/sim` source
|
||
files 存在于 vendored manifest;
|
||
- virtual HAL 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或
|
||
native HAL module ABI;
|
||
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM;
|
||
- Web 方式数控系统仿真所需 HAL、halcmd、motion controller 替代层继续由
|
||
source-derived virtual HAL 满足。
|
||
|
||
下一步工作内容:
|
||
|
||
1. 将 virtual HAL session diagnostics artifact 纳入 release artifact URL workflow 的示例
|
||
fixtures,使 URL workflow 同时覆盖 live diagnostics 与 saved-session diagnostics。
|
||
2. 将 workflow overview 固定 URL 表单的 action-plan 与 gate execution summary rows
|
||
同屏渲染,便于用户看到 URL workflow 的下一步命令和 gate evidence。
|
||
3. 将 manifest-backed motion matrix check 接入 project release readiness / batch
|
||
acceptance artifact,使 release gate 不仅检查 sim-config source coverage,也检查
|
||
motion matrix 关联 source files 的 manifest 一致性。
|
||
|
||
### 十五、2026-06-17 Release URL Workflow Saved-Session Diagnostics
|
||
|
||
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
|
||
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,把 saved-session
|
||
diagnostics artifact 纳入 release artifact URL workflow 示例 fixtures,使 URL workflow
|
||
同时覆盖 live diagnostics 与 saved virtual HAL session diagnostics。
|
||
|
||
新增实质能力:
|
||
|
||
- `createProjectReleaseBrowserDiagnosticsArtifactValidation()` 新增 saved-session
|
||
diagnostics 识别:
|
||
- `hasSessionDiagnostics`;
|
||
- `sessionDiagnosticsReady`;
|
||
- validation rows 新增 `session-diagnostics`;
|
||
- 当 browser diagnostics artifact 携带 `virtualHalSessionDiagnostics` 时,release
|
||
validation 会检查:
|
||
- session diagnostics API 名称;
|
||
- `ready === true`;
|
||
- `phase === "release-ready"`;
|
||
- 内嵌 validation ready;
|
||
- 内嵌 diagnostics artifact 为 real browser diagnostics artifact;
|
||
- 内嵌 source compliance complete;
|
||
- 内嵌 motion matrix manifest-backed check ready;
|
||
- 当 browser diagnostics artifact 尚未携带 saved-session diagnostics 时,live diagnostics
|
||
validation 仍可通过,避免未保存会话的页面初始诊断被误判 blocked;
|
||
- `createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel()` 新增 summary row:
|
||
- `saved-session-diagnostics`;
|
||
- INI panel workflow overview URL workflow summary 同步新增:
|
||
- `saved-session-diagnostics`;
|
||
- URL workflow 示例 fixtures 现在同时包含:
|
||
- live virtual HAL diagnostics evidence;
|
||
- saved virtual HAL session diagnostics evidence;
|
||
- manifest-checked motion matrix evidence。
|
||
|
||
新增/扩展验证:
|
||
|
||
- `verify_project_release_artifact_url_workflow.mjs` 覆盖:
|
||
- diagnostics artifact 携带 `virtualHalSessionDiagnostics`;
|
||
- URL workflow `diagnosticsValidation.hasSessionDiagnostics === true`;
|
||
- URL workflow `diagnosticsValidation.sessionDiagnosticsReady === true`;
|
||
- summary row `saved-session-diagnostics` 显示 `ready`;
|
||
- `verify_sdk_surface.mjs` 覆盖:
|
||
- browser diagnostics validation 可识别 saved-session diagnostics;
|
||
- session diagnostics ready 后整体 validation ready;
|
||
- `verify_ini_panel_ui_shell.mjs` 覆盖:
|
||
- INI panel URL workflow diagnostics validation 识别 saved-session evidence;
|
||
- summary/render rows 中包含 `saved-session-diagnostics`;
|
||
- `ini_panel_workflow_overview_smoke.html` 覆盖:
|
||
- 固定 URL workflow 页面使用包含 saved-session diagnostics 的 browser diagnostics
|
||
fixture;
|
||
- 页面 URL workflow validation 中 saved-session diagnostics ready;
|
||
- DOM render rows 包含 saved-session diagnostics row。
|
||
|
||
关键验证:
|
||
|
||
```text
|
||
project_release_artifact_url_workflow_node_smoke=ok
|
||
project_release_gate_manifest_node_smoke=ok
|
||
sdk_surface_node_smoke=ok
|
||
project_batch_acceptance_workflow_node_smoke=ok
|
||
project_batch_acceptance_artifact_node_smoke=ok
|
||
ini_panel_ui_shell_node_smoke=ok
|
||
ui_node_smokes=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/remap 语义;
|
||
- saved-session diagnostics artifact 只复用保存时已有的 source-derived virtual HAL
|
||
reports;
|
||
- URL workflow 只验证 browser diagnostics evidence 与 saved-session diagnostics
|
||
evidence,不把 browser virtual HAL 声称为 Linux kernel hard-realtime ABI;
|
||
- virtual HAL 仍不声称提供外部硬件驱动 ABI 或 native HAL module ABI;
|
||
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM;
|
||
- Web 方式数控系统仿真所需 HAL、halcmd、motion controller 替代层继续由
|
||
source-derived virtual HAL 满足。
|
||
|
||
下一步工作内容:
|
||
|
||
1. 将 workflow overview 固定 URL 表单的 action-plan 与 gate execution summary rows
|
||
同屏渲染,便于用户看到 URL workflow 的下一步命令和 gate evidence。
|
||
2. 将 manifest-backed motion matrix check 接入 project release readiness / batch
|
||
acceptance artifact,使 release gate 不仅检查 sim-config source coverage,也检查
|
||
motion matrix 关联 source files 的 manifest 一致性。
|
||
3. 增加 saved-session diagnostics 的负向 fixtures,验证缺失 session diagnostics、
|
||
incomplete source compliance 或缺失 manifest-backed motion matrix 时 URL workflow
|
||
会给出明确 blocked reason。
|
||
|
||
### 十六、2026-06-17 Workflow Overview URL Action Plan Gate Rows
|
||
|
||
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
|
||
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项,将 workflow
|
||
overview 固定 URL 表单的 action-plan 与 gate execution summary rows 同屏渲染,让用户
|
||
在页面输入 release artifact URL 与 browser diagnostics URL 后,可以同时看到 URL
|
||
workflow 状态、下一步命令和 release gate evidence。
|
||
|
||
新增实质能力:
|
||
|
||
- `workflow-overview.html` 固定 URL workflow 表单下新增两个渲染区:
|
||
- `data-workflow-overview-release-readiness-artifact-url-workflow-action-plan`;
|
||
- `data-workflow-overview-release-readiness-artifact-gate-execution-summary`;
|
||
- `runWorkflowOverviewReleaseReadinessArtifactUrlForm()` 现在在完成 URL workflow 后
|
||
同屏 mount:
|
||
- URL workflow summary rows;
|
||
- URL workflow action-plan rows;
|
||
- URL workflow gate execution summary rows;
|
||
- `runWorkflowOverviewReleaseReadinessArtifactUrlForm()` 返回值新增:
|
||
- `actionPlan`;
|
||
- `actionPlanRenderState`;
|
||
- `actionPlanMountResult`;
|
||
- `gateExecutionSummary`;
|
||
- `gateExecutionSummaryRenderState`;
|
||
- `gateExecutionSummaryMountResult`;
|
||
- Browser workflow overview API 新增 URL workflow action-plan DOM helpers:
|
||
- `getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlanRenderState()`;
|
||
- `getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlanDomContract()`;
|
||
- `getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlanDomReadiness()`;
|
||
- `renderWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlanState()`;
|
||
- `mountWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlanState()`;
|
||
- SDK README 同步说明 fixed workflow overview URL form 可将 URL workflow action plan
|
||
与 URL workflow rows 同屏渲染。
|
||
|
||
新增/扩展验证:
|
||
|
||
- `ini_panel_workflow_overview_smoke.html` 覆盖:
|
||
- 新增 browser API 方法存在;
|
||
- 固定 URL 表单执行后 `actionPlanMountResult.ready === true`;
|
||
- 固定 URL 表单执行后 action-plan render state 包含 `next-command`;
|
||
- 固定 URL 表单执行后 `gateExecutionSummaryMountResult.ready === true`;
|
||
- 固定 URL 表单执行后 gate execution summary render state 包含
|
||
`gate-ui-node-smokes`;
|
||
- DOM 中 action-plan `next-command` 行显示 `none`;
|
||
- DOM 中 gate execution summary 行显示 observed output matched;
|
||
- `verify_ini_panel_browser.sh` 聚合确认 workflow overview、launch、control、
|
||
shell integration browser flows 仍全部通过;
|
||
- `verify_ui_node_smokes.sh` 聚合确认 UI shell/API manifest/docs 不回归;
|
||
- `verify_sdk_surface.sh` 聚合确认 SDK surface 与 release URL workflow 不回归。
|
||
|
||
关键验证:
|
||
|
||
```text
|
||
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
|
||
ini_panel_run_summary_node_smoke=ok
|
||
ini_panel_run_workflow_node_smoke=ok
|
||
ini_panel_session_summary_node_smoke=ok
|
||
ini_panel_session_workflow_node_smoke=ok
|
||
ini_panel_machine_file_summary_node_smoke=ok
|
||
ini_panel_state_summary_node_smoke=ok
|
||
ini_panel_control_page_controller_node_smoke=ok
|
||
ini_panel_control_page_refresh_workflow_node_smoke=ok
|
||
ini_panel_control_page_session_workflow_node_smoke=ok
|
||
ini_panel_readonly_status_api_node_smoke=ok
|
||
ini_panel_entry_manifest_node_smoke=ok
|
||
ini_panel_launch_api_manifest_node_smoke=ok
|
||
ini_panel_shell_integration_manifest_node_smoke=ok
|
||
ini_panel_ui_shell_node_smoke=ok
|
||
ini_panel_shell_control_page_contract_node_smoke=ok
|
||
ini_panel_entry_docs_node_smoke=ok
|
||
real_simulation_programs_node_smoke=ok
|
||
ui_node_smokes=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
|
||
```
|
||
|
||
语义边界:
|
||
|
||
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
|
||
- workflow overview 固定 URL 表单只显示和验证 release artifact、browser diagnostics、
|
||
saved-session diagnostics、action-plan 与 gate execution evidence;
|
||
- browser diagnostics artifact 中的 virtual HAL evidence 仍来自 source-derived virtual
|
||
HAL reports;
|
||
- virtual HAL 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或
|
||
native HAL module ABI;
|
||
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM;
|
||
- Web 方式数控系统仿真所需 HAL、halcmd、motion controller 替代层继续由
|
||
source-derived virtual HAL 满足。
|
||
|
||
下一步工作内容:
|
||
|
||
1. 将 manifest-backed motion matrix check 接入 project release readiness / batch
|
||
acceptance artifact,使 release gate 不仅检查 sim-config source coverage,也检查
|
||
motion matrix 关联 source files 的 manifest 一致性。
|
||
2. 增加 saved-session diagnostics 的负向 fixtures,验证缺失 session diagnostics、
|
||
incomplete source compliance 或缺失 manifest-backed motion matrix 时 URL workflow
|
||
会给出明确 blocked reason。
|
||
3. 将 workflow overview 固定 URL 表单的 saved-session diagnostics readiness 明确显示为
|
||
独立状态行,便于用户区分 live diagnostics 与 saved-session diagnostics evidence。
|
||
|
||
### 十七、2026-06-17 Release Gate Motion Matrix And Saved-Session Negative Fixtures
|
||
|
||
继续按本文件铁律推进:虚拟 HAL 的功能完全来源于 LinuxCNC 源程序,并且虚拟 HAL
|
||
完全满足 Web 方式数控系统仿真系统。本批完成上一节下一步第 1 项和第 2 项,把
|
||
manifest-backed motion matrix check 接入 project release readiness / batch acceptance
|
||
artifact,并为 saved-session diagnostics 增加 URL workflow 负向 fixtures。
|
||
|
||
新增实质能力:
|
||
|
||
- `project-release-readiness.js` 统一新增/使用 `isVirtualHalMotionControllerMatrixReady()`:
|
||
- 要求 motion matrix `complete === true`;
|
||
- 要求 `webSimulationSatisfied === true`;
|
||
- 要求 `manifestChecked === true`;
|
||
- 要求 `missingFixtures`、`missingSimConfigTargets`、`missingManifestFiles` 均为空;
|
||
- 要求包含 `motion.distance-to-go`、`motion.in-position`;
|
||
- 要求包含 LinuxCNC motion source:
|
||
`linuxcnc/src/emc/motion/motion.c`、`linuxcnc/src/emc/motion/axis.c`;
|
||
- 要求包含 external-offsets、QtDragon multi-joint、vismach puma sim config source
|
||
evidence;
|
||
- `createProjectReleaseReadinessReport()` 新增 release 级 gate evidence:
|
||
- `virtualHalMotionControllerMatrix`;
|
||
- `virtualHalMotionControllerMatrixReady`;
|
||
- missing reason:`virtual-hal-motion-controller-matrix`;
|
||
- summary row:`Virtual HAL motion controller matrix`;
|
||
- `createProjectReleaseReadinessArtifactValidation()` 新增强制校验:
|
||
- artifact 必须携带 manifest-backed motion matrix;
|
||
- artifact 必须显式标记 `virtualHalMotionControllerMatrixReady === true`;
|
||
- artifact validation rows 显示 motion matrix ready/missing;
|
||
- `createProjectBatchAcceptanceWorkflow()` / `createProjectBatchAcceptanceReport()` 新增:
|
||
- `virtualHalMotionControllerMatrix`;
|
||
- `virtualHalMotionControllerMatrixReady`;
|
||
- checklist 项:`virtual-hal-motion-controller-matrix`;
|
||
- batch checklist 从 `4/4` 扩展为 `5/5 passed`;
|
||
- release readiness artifact writer 与 batch acceptance artifact writer 均使用真实
|
||
`wasm-port/tools/source-manifest.txt` 生成 manifest-backed motion matrix;
|
||
- `loadProjectReleaseReadinessArtifactUrlWorkflow()` 新增可选:
|
||
- `requireSavedSessionDiagnostics`;
|
||
- 默认仍允许 live diagnostics artifact 在未保存 session 时通过;
|
||
- 严格模式下,缺失 saved-session diagnostics 会输出
|
||
`diagnostics.virtualHalSessionDiagnostics` blocked reason;
|
||
- URL workflow saved-session diagnostics 负向 fixtures 覆盖:
|
||
- live diagnostics 可通过,但严格要求 saved-session 时被 blocked;
|
||
- saved-session diagnostics 内嵌 source compliance incomplete 时被 blocked;
|
||
- saved-session diagnostics 内嵌 motion matrix 未 manifest-backed check 时被 blocked。
|
||
|
||
新增/扩展验证:
|
||
|
||
- `verify_project_release_readiness_artifact.mjs` 覆盖:
|
||
- release readiness artifact 包含 manifest-backed motion matrix;
|
||
- `virtualHalMotionControllerMatrixReady === true`;
|
||
- matrix source evidence 包含 external offsets 与 QtDragon multi-joint sim config;
|
||
- `verify_project_batch_acceptance_artifact.mjs` 覆盖:
|
||
- batch artifact 携带 motion matrix;
|
||
- matrix `manifestChecked === true`;
|
||
- workflow motion matrix ready;
|
||
- `verify_sdk_surface.mjs` 覆盖:
|
||
- release readiness ready 需要 manifest-backed motion matrix;
|
||
- batch acceptance report validation 需要 motion matrix;
|
||
- report checklist 为 `5/5 passed`;
|
||
- `verify_project_release_artifact_url_workflow.mjs` 覆盖:
|
||
- 默认 URL workflow 同时支持 live diagnostics 与 saved-session diagnostics ready;
|
||
- 严格 saved-session diagnostics 模式下,缺失 saved-session diagnostics 被 blocked;
|
||
- incomplete source compliance 被 blocked;
|
||
- missing manifest-backed motion matrix 被 blocked;
|
||
- blocked reason 明确包含 `diagnostics.virtualHalSessionDiagnostics`。
|
||
|
||
关键验证:
|
||
|
||
```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
|
||
git diff --check ok
|
||
```
|
||
|
||
语义边界:
|
||
|
||
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
|
||
- release readiness / batch acceptance 只校验 Web virtual HAL motion matrix 的
|
||
source-derived evidence 与 manifest 一致性;
|
||
- saved-session diagnostics 负向 fixtures 只验证 release evidence 缺失时的 blocked
|
||
reason,不改变 LinuxCNC CNC 语义;
|
||
- virtual HAL 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或
|
||
native HAL module ABI;
|
||
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM;
|
||
- Web 方式数控系统仿真所需 HAL、halcmd、motion controller 替代层继续由
|
||
source-derived virtual HAL 满足。
|
||
|
||
下一步工作内容:
|
||
|
||
1. 将 workflow overview 固定 URL 表单的 saved-session diagnostics readiness 明确显示为
|
||
独立状态行,便于用户区分 live diagnostics 与 saved-session diagnostics evidence。
|
||
2. 将 saved-session diagnostics 负向 fixtures 扩展到 ini-panel workflow overview browser
|
||
smoke,验证页面 DOM 会显示 saved-session blocked/not provided。
|
||
3. 将 release readiness / batch acceptance artifact 的 motion matrix manifest check 输出
|
||
加入 README/handoff 文档,形成发布交接可读说明。
|