项目接续文件:利用 virtual HAL 成果推进 sim config baseline promotion 生成时间:2026-06-18 CST 本文件接替 `text18.txt`。后续继续推进时优先参考 `text19.txt`;除非明确要求审计 旧记录,不再回到 `text1` 到 `text18` 扩展历史实现。 一、方向纠偏 上一版表述容易被误读为“转向非 virtual HAL,不再使用 virtual HAL 成果”。正确方向是: ```text virtual HAL runtime capability 已收尾;后续不继续扩展 virtual HAL 新功能, 但要利用已完成的 virtual HAL source-derived evidence、browser diagnostics、 release gate 和 motion matrix,继续推进 sim config coverage / baseline promotion。 ``` 执行含义: - 不新增 virtual HAL runtime capability; - 不新增 unrelated virtual HAL UI 面板、filter、drilldown 类功能; - 不把 virtual HAL 当成 JS CNC 语义替代品; - 允许并且应该复用 virtual HAL 已有成果作为 promotion evidence: - source compliance; - sim-config source coverage; - promotion candidate report; - macro/load fixture report; - command script fixtures; - manifest-backed motion controller matrix; - browser diagnostics artifact; - release readiness / URL workflow / batch acceptance evidence。 二、当前 baseline 当前 Node inventory baseline 仍为: ```text executed=28 passed=28 skipped=131 unexpected_fail=0 ``` 当前已经完成的 virtual HAL promotion evidence 不等同于 inventory skip count 下降。它已经把 一批 Node `INV` / representative rows 推进到了 browser diagnostics / release evidence 层, 但如果要让 `executed/passed/skipped` 变化,仍必须修改并运行真实 inventory execution path。 三、已具备的 promotion evidence 当前 SDK / browser / release gate 已覆盖 Tier 1 promotion candidate report: - `qtdragon/qtdragon_multi_joint/on_abort.ngc` - `qtdragon/qtdragon_xyz/on_abort.ngc` - `qtdragon/qtdragon_xyz45/on_abort.ngc` - `qtdragon_hd/qtdragon_hd_xyz/on_abort.ngc` - `qtdragon_hd/qtdragon_hd_z_compensation/on_abort.ngc` - `qtvcp_screens/qtdragon/on_abort.ngc` - `axis/vismach/puma/puma_seam_weld.ngc` - `axis/rose_engine/rcone_demo.ngc` 这些 row 的当前性质: - LinuxCNC source/config evidence 完整; - current Node inventory status 为 `PASS`; - blocked kind 为 `-`; - target browser evidence 为 `explicit-browser-diagnostics`; - release diagnostics validation 已要求 promotion candidate summary; - inventory baseline 保持不变。 当前 macro/load 非主程序 evidence 已覆盖: - `axis/rose_engine/rcone.ngc` - `axis/external_offsets/queuebuster.ngc` 这些只能作为 non-main fixture diagnostics evidence,不作为 standalone main program promotion。 四、不可突破边界 以下 family 仍不能靠 virtual HAL、JS glue 或 browser UI 伪装解锁: - Linux kernel hard-realtime ABI; - 外部硬件驱动 ABI; - native HAL module ABI; - Python UI process emulation; - Python remap runtime; - tool database process protocol; - external user-M process execution; - upstream-invalid demo code。 因此以下 blocked kind 仍保持 locked: - `L4-PYTHON-REMAP` - `L4-TOOL-DB` - `L4-USER-M-PROCESS` - `UPSTREAM-DEMO` - standalone-main 语境下的 `ASSET-ONLY` 五、下一步主线目标 目标仍是从: ```text executed=28 passed=28 skipped=131 ``` 推进到更高完成度。第一阶段建议目标: ```text executed >= 35 passed == executed skipped <= 124 unexpected_fail=0 ``` 但推进方式应是: 1. 先复用 virtual HAL 已建立的 source-derived evidence,确认候选 family 的 browser/release evidence 已 ready; 2. 再找出当前 inventory 中还没有执行、但依赖已被 virtual HAL / HALUI / deterministic UI declarations / machine files / tool tables / remap asset staging 覆盖的 main program; 3. 只把 LinuxCNC-backed runtime 能真实执行通过的 row 纳入 inventory; 4. 同步更新 docs、release artifact fixture、SDK/host gate baseline 断言。 六、候选选择原则 优先方向: - Tier 1 已有 promotion evidence 周边 family: - QtDragon on-abort family; - PUMA / vismach remap family; - rose-engine family; - 当前 matrix 中 `blocked=-`、`class=main`、native `PASS`、但尚未进入 browser explicit evidence 或 inventory execution 的 row; - 已有 tool-table fallback、vendored INI/G-code/source evidence、无 Python/process hard block 的 row; - 已有 virtual HAL command/motion matrix 可以解释 HAL/UI/motion 依赖的 row。 禁止方向: - 不把 Python remap pass 当作 browser/Node full promotion; - 不把 tool DB native pass 当作 WASM process protocol pass; - 不把 external user-M process pass 当作 virtual HAL deterministic M110/M111 边界; - 不把 macro/load asset 当 standalone main; - 不靠改 docs 声称 skipped 降低。 七、建议执行步骤 ### 第一步:复核当前 virtual HAL promotion gate 最小命令: ```text wasm-port/tests/sdk/node/verify_sdk_surface.sh wasm-port/tests/sdk/node/verify_project_release_gate_manifest.sh ``` 确认: - `VIRTUAL_HAL_SIM_CONFIG_PROMOTION_CANDIDATES` 仍包含 8 个 Tier 1 row; - candidate report `complete === true`; - `webSimulationSatisfied === true`; - `inventoryBaselineUnchanged === true`; - blocked candidate count 为 0; - release gate / URL workflow 仍要求 candidate summary。 ### 第二步:生成真实 inventory promotion candidate 清单 不要只列 hard-block skipped main row;应输出两个层级: - evidence-ready candidates:已有 virtual HAL/browser/release evidence,适合继续升 browser/release 覆盖; - inventory-ready candidates:确实可从 skipped 推进到 executed 的 main program。 建议输出: ```text wasm-port/build/wasm/sim-configs-inventory/promotion-candidates.tsv ``` 字段至少包含: - path; - ini; - current inventory status; - matrix layer4 node/browser status; - class; - native status; - blocked kind; - dependency class; - virtual HAL evidence ready; - inventory promotion allowed; - block reason; - recommended next command。 ### 第三步:推进第一批真实 inventory rows 一次只推进 5 到 8 个 row。每个 row 必须说明: - LinuxCNC source/config/runtime evidence; - 为什么已有 virtual HAL evidence 能覆盖 HAL/UI/motion 依赖; - 为什么不是 JS/browser 自行补 CNC 语义; - 为什么不属于 `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、 `UPSTREAM-DEMO` 或 standalone `ASSET-ONLY`; - 执行后 baseline 如何变化。 ### 第四步:同步 release packaging baseline 真变化后,同步更新: - generated sim-config inventory artifact; - `wasm-port/docs/sim-configs-coverage-matrix.md`; - `wasm-port/docs/sim-config-coverage-promotion-analysis.md`; - release readiness artifact fixture; - SDK / host gate 的 baseline 断言; - browser diagnostics / URL workflow 中的 baseline 文案。 八、验收标准 一次真实 baseline promotion 完成条件: 1. 新 baseline artifact 真实生成; 2. `executed` 和 `passed` 同步增加; 3. `skipped` 同步减少; 4. `unexpected_fail` 仍为 `0`; 5. 新增 rows 不属于 blocked family; 6. virtual HAL evidence 是 source-derived support,不是 CNC 语义替代; 7. `verify_no_standalone_cnc_semantics.sh` 仍通过; 8. 最小相关 gate 通过; 9. 文档记录变更前/后 baseline、新增 rows、blocked family lock 状态和验证命令。 建议最小验证命令: ```text git diff --check wasm-port/tools/verify_no_standalone_cnc_semantics.sh SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh wasm-port/tests/sdk/node/verify_sdk_surface.sh wasm-port/tests/sdk/node/verify_project_release_gate_manifest.sh ``` 如改动涉及 browser/release 页面,再额外运行: ```text SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh ``` 九、下一步工作内容 下一轮建议直接做: ```text 基于现有 virtual HAL promotion candidate report,生成 evidence-ready / inventory-ready 双层 promotion-candidates.tsv;然后从 blocked=-、native PASS、class=main 的 row 中筛出 第一批 5-8 个可真实进入 inventory execution 的候选,试运行并更新 baseline。 ``` 优先候选 family: - QtDragon on-abort family 周边; - PUMA / vismach remap family; - rose-engine family; - 其他已 vendored、无 Python/process hard block、可由 virtual HAL 解释 HAL/UI/motion 依赖的 main program。