项目接续文件:sim config coverage promotion 后续推进计划 生成时间:2026-06-18 CST 本文件接替 `text17.txt`,作为后续继续推进的接续文件。后续工作优先参考 `text18.txt`;除非明确要求审计旧记录,不再回到 `text1` 到 `text17` 扩展进度。 一、当前完成情况摘要 1. LinuxCNC-backed WASM 核心仍是 CNC 语义来源。 - G-code / interpreter / planner / kinematics / canonical motion 语义仍来自 vendored LinuxCNC C/C++ 源码; - Browser / UI / SDK 只做 host boundary、文件装载、OPFS/session、virtual HAL runtime、 仿真状态桥、测试胶水和报告; - 不在 JS 中重写 G-code 解释器、planner、kinematics、tool/parameter 语义。 2. virtual HAL 已完全满足 Web 方式数控系统仿真系统。 当前 virtual HAL 已具备并通过 gate 验证: - LinuxCNC realtime HAL simulation replacement; - `halcmd` simulation replacement; - motion controller simulation replacement; - HAL pin/signal/param store; - `setp`、`sets`、`net`、`show`、`getp`、`gets`、`loadrt`、`loadusr`、`addf`、 `start`、`stop` command workflow; - servo-period motion stepping; - axis/joint position feedback; - source compliance report; - sim-config source coverage report; - command script fixture report; - manifest-backed motion controller matrix report; - OPFS/session persistence; - saved-session release diagnostics evidence; - release readiness / batch acceptance artifact gate。 3. release gate 已接入 virtual HAL motion matrix。 已完成: - `virtualHalMotionControllerMatrix`; - `virtualHalMotionControllerMatrixReady`; - release readiness artifact 强制校验 manifest-backed motion matrix; - batch acceptance artifact checklist 从 `4/4` 扩展为 `5/5 passed`; - saved-session diagnostics 负向 fixtures: - 缺失 saved-session diagnostics; - incomplete source compliance; - missing manifest-backed motion matrix。 4. sim config coverage promotion 已先形成分析文档。 新增分析文档: ```text wasm-port/docs/sim-config-coverage-promotion-analysis.md ``` 该文档已纳入: ```text wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh ``` 当前结论: - 当前 generated inventory 中没有“hard block 已清空但仍 SKIP 的 main program”; - 因此不应因为 virtual HAL 完善就直接降低 `skipped=131`; - 下一步应推进“case promotion”:把已有 Node `INV` 或代表覆盖案例推进到 browser diagnostics / release evidence; - blocked runtime families 仍不能由 virtual HAL 或 JS glue 直接解锁。 二、当前 sim config inventory baseline 当前必须保持的 baseline: ```text sim_configs_wasm_node_inventory_executed=28 sim_configs_wasm_node_inventory_passed=28 sim_configs_wasm_node_inventory_skipped=131 sim_configs_wasm_node_inventory_unexpected_fail=0 sim_configs_wasm_node_inventory_skip_ASSET_ONLY=65 sim_configs_wasm_node_inventory_skip_L4_PYTHON_REMAP=53 sim_configs_wasm_node_inventory_skip_L4_TOOL_DB=1 sim_configs_wasm_node_inventory_skip_L4_USER_M_PROCESS=1 sim_configs_wasm_node_inventory_skip_NON_MAIN_CLASS=10 sim_configs_wasm_node_inventory_skip_UPSTREAM_DEMO=1 ``` 后续任何改动,只要涉及 inventory baseline,必须明确说明: - 哪些 row 从何种状态变更; - 为什么 LinuxCNC source/runtime evidence 已满足; - 为什么不是 JS/browser 自行补语义; - 为什么没有破坏 blocked runtime promotion lock。 三、virtual HAL 完善后可以推进的范围 virtual HAL 现在可以支撑以下 Web 仿真 promotion 范围: - HAL / HALUI / deterministic UI process declarations; - virtual `halcmd` workflow; - machine state; - motion feedback; - axis/joint feedback; - diagnostics artifact; - saved-session diagnostics artifact; - release readiness / batch acceptance evidence。 virtual HAL 仍不能解锁: - 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。 四、promotion 铁律 后续 sim config coverage promotion 必须满足: 1. LinuxCNC source/config evidence owns the behavior。 2. Native 或当前 Node inventory evidence 已经通过;或者 row 是 macro/load / remap_subroutine,且有明确非主程序验证计划。 3. 依赖仅限于 virtual HAL、HALUI、deterministic UI process declarations、machine files、tool tables、remap subroutine assets 或已由 LinuxCNC-backed runtime 覆盖的 motion/kinematics evidence。 4. Browser evidence 必须能导出: - virtual HAL source compliance; - sim-config source coverage; - command script fixtures; - manifest-backed motion matrix; - diagnostics artifact; - 如涉及 session,必须导出 saved-session diagnostics。 5. row 不能属于: - `L4-PYTHON-REMAP`; - `L4-TOOL-DB`; - `L4-USER-M-PROCESS`; - `UPSTREAM-DEMO`; - standalone-main 执行语境下的 `ASSET-ONLY`。 6. `verify_no_standalone_cnc_semantics.sh` 必须保持通过。 五、继续推进计划 ### 1. 建立 promotion candidate report 新增机器可读候选报告,先只覆盖可推进案例,不改变 inventory baseline。 首批候选: - `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`。 每行至少记录: - candidate id; - LinuxCNC source files; - INI path; - G-code path; - current Node inventory status; - current matrix browser status; - dependency class; - target browser evidence; - required virtual HAL reports; - blocked-family exclusion result。 建议 API / report 名称: - `VIRTUAL_HAL_SIM_CONFIG_PROMOTION_CANDIDATES`; - `createVirtualHalSimConfigPromotionCandidateReport()`; - report `apiName`: `linuxcnc-wasm-virtual-hal-sim-config-promotion-candidate-report`。 ### 2. 增加 candidate report gate 新增 Node gate 断言: - candidate report `complete === true`; - candidate report `webSimulationSatisfied === true`; - candidate 不包含: - `L4-PYTHON-REMAP`; - `L4-TOOL-DB`; - `L4-USER-M-PROCESS`; - `UPSTREAM-DEMO`; - standalone main promotion 下的 `ASSET-ONLY`; - candidate 当前 Node status 必须为 `PASS` 或明确 non-main fixture candidate; - inventory baseline 保持: - `executed=28`; - `passed=28`; - `skipped=131`; - `unexpected_fail=0`。 建议接入: - `verify_sdk_surface.mjs`; - `verify_sim_configs_coverage_docs.mjs`; - 后续可接入 release readiness artifact,但第一批先作为 SDK/docs gate。 ### 3. 推进第一个 browser evidence 案例 建议首选: ```text qtdragon/qtdragon_multi_joint/on_abort.ngc ``` 选择原因: - 当前 Node `INV`; - 无 hard runtime block; - 依赖 HAL/UI declarations 与 multi-joint machine context; - virtual HAL motion matrix 已映射 `qtdragon-on-abort`; - source evidence 已包含: `linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini`; - 可验证 virtual HAL 对 Web CNC 仿真系统的完整满足性。 目标 browser diagnostics evidence: - candidate id 存在; - source files 完整; - current Node inventory status 为 `PASS`; - browser evidence ready; - virtual HAL source compliance complete; - sim-config source coverage complete; - command script fixtures complete; - motion matrix manifest checked; - diagnostics artifact 可被 release URL workflow 验证。 ### 4. 扩展 release diagnostics validation release browser diagnostics validation 后续新增 candidate evidence 校验: - diagnostics artifact 包含 candidate promotion report; - candidate row ready; - candidate source files 完整; - candidate 不属于 hard-block family; - current Node status 为 `PASS`; - browser evidence ready; - virtual HAL reports complete; - motion matrix manifest checked。 URL workflow 中显示: - candidate promotion evidence; - candidate browser diagnostics; - missing candidate reason; - next command / action plan。 ### 5. 更新 coverage matrix 注释 只在 browser gate 通过后更新 matrix。 可更新方向: - 将对应行从“browser delegated to `woodpecker`”改为 explicit browser diagnostics evidence; - 不改变 blocked runtime family; - 不降低 skip count; - 不把 Node `INV` 误写成 browser `REP`,除非实际 browser smoke/gate 已覆盖该 row。 首批可能更新: ```text qtdragon/qtdragon_multi_joint/on_abort.ngc ``` ### 6. 推进 QtDragon family 全组 在第一个 QtDragon multi-joint candidate 通过后,继续推进: - `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`。 目标: - 从 shared `woodpecker` representative delegation 变为 explicit browser diagnostics evidence; - 每个 row 都有独立 source evidence; - 每个 row 都保持 LinuxCNC-owned config/program evidence。 ### 7. 推进 vismach / rose_engine 案例 后续候选: - `axis/vismach/puma/puma_seam_weld.ngc` - 当前 Node `INV`; - 与 `puma_cube.ngc` 共用 PUMA machine context; - 目标是形成 PUMA 双案例 browser diagnostics evidence。 - `axis/rose_engine/rcone_demo.ngc` - 当前 Node `INV`; - HAL process only; - 适合作为非 Qt、非复杂 vismach remap 的轻量 browser diagnostics 案例。 ### 8. 设计 macro/load 非主程序 promotion 不要把 macro/load 当 browser main program 执行。 候选只作为 non-main fixture evidence: - `axis/external_offsets/queuebuster.ngc`; - `axis/rose_engine/rcone.ngc`; - `gscreen/silverdragon/macros/tool_sensor.ngc`; - `gscreen/industrial_lathe_wear/toolchange.ngc`; - `qtvcp_screens/industrial_lathe_wear/toolchange.ngc`。 需要新增独立报告,而不是复用 main-program promotion: - `createVirtualHalSimConfigMacroLoadFixtureReport()`; - 或将其作为 promotion candidate report 的 `nonMainFixture` 分类。 ### 9. 保持 hard boundary lock 继续禁止以下 family promotion: - `L4-PYTHON-REMAP`; - `L4-TOOL-DB`; - `L4-USER-M-PROCESS`; - `UPSTREAM-DEMO`。 这些只能通过 LinuxCNC-owned runtime proof 解锁,不能由 virtual HAL、browser UI、 SDK glue 或 JS fixture 解锁。 六、建议下一批实际执行目标 下一批建议只做一个完整闭环: 1. 新增 promotion candidate report; 2. 新增 candidate report Node gate; 3. 将 `qtdragon/qtdragon_multi_joint/on_abort.ngc` 纳入 browser diagnostics evidence; 4. release diagnostics validation 增加 candidate evidence ready 校验; 5. docs / matrix 只做最小同步; 6. inventory baseline 不变。 七、建议验证命令 每批至少运行: ```bash git diff --check wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.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 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh ``` 如涉及 release artifact / URL workflow,再运行: ```bash wasm-port/tests/sdk/node/verify_project_release_artifact_url_workflow.sh wasm-port/tests/host/verify_project_release_readiness_artifact.sh wasm-port/tests/sdk/node/verify_project_batch_acceptance_artifact.sh ``` 如涉及 ini-panel workflow overview,再运行: ```bash SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh wasm-port/tests/ui/node/verify_ui_node_smokes.sh ``` 八、后续记录规则 - 后续进度只追加到 `text18.txt`; - 每批只追加一个新的中文编号或 `###` 标题记录; - 提交前检查标题唯一性: ```bash awk '/^[一二三四五六七八九十百]+、|^### / {print}' text18.txt | sort | uniq -d ``` - 不复制 `text17.txt` 的长历史; - 不把局部重排、断言挪动、路径整理作为主目标; - 每批必须产出至少一种可复用能力、可执行 gate、可验证 workflow 或明确 runtime boundary proof; - 对外表述必须同时说明: - 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。 ### 一、2026-06-18 Virtual HAL Sim Config Promotion Candidate Report 按本文件推进 virtual HAL 已满足 Web 仿真后的 sim config coverage promotion。本批完成 “下一批实际执行目标”的第 1 到第 4 项:新增 source-derived promotion candidate report, 新增 Node/browser gate,并把 `qtdragon/qtdragon_multi_joint/on_abort.ngc` 纳入 browser diagnostics / release validation evidence。inventory baseline 保持不变。 新增实质能力: - 新增 `VIRTUAL_HAL_SIM_CONFIG_PROMOTION_CANDIDATES`: - `qtdragon-multi-joint-on-abort`; - `qtdragon-xyz-on-abort`; - `qtdragon-xyz45-on-abort`; - `qtdragon-hd-xyz-on-abort`; - `qtdragon-hd-z-compensation-on-abort`; - `qtvcp-screens-qtdragon-on-abort`; - `puma-seam-weld`; - `rose-engine-rcone-demo`; - 每个 candidate row 记录: - LinuxCNC INI source file; - LinuxCNC G-code source file; - current Node inventory status; - current matrix browser status; - dependency class; - target browser evidence; - required virtual HAL reports; - blocked-family exclusion; - 新增 `createVirtualHalSimConfigPromotionCandidateReport()`: - 输出 `linuxcnc-wasm-virtual-hal-sim-config-promotion-candidate-report`; - 校验 source manifest; - 校验 candidate 不属于 `L4-PYTHON-REMAP` / `L4-TOOL-DB` / `L4-USER-M-PROCESS` / `UPSTREAM-DEMO`; - 校验 current Node inventory status 为 `PASS`; - 校验 required virtual HAL reports complete: source compliance、sim-config source coverage、command fixtures、 manifest-backed motion matrix; - 显式输出 `inventoryBaselineUnchanged === true`; - `createLinuxCncVirtualHalRuntime()` 新增: - `getSimConfigPromotionCandidateReport()`; - SDK index、SDK README、browser simulation re-export 同步导出新常量和新 report API; - real simulation page 新增: - `getVirtualHalSimConfigPromotionCandidateReport()`; - diagnostics artifact 字段 `virtualHalSimConfigPromotionCandidates`; - release diagnostics validation 新增 candidate evidence 识别: - `hasPromotionCandidates`; - `promotionCandidatesReady`; - validation row:`sim-config-promotion-candidates`; - 如果 diagnostics artifact 携带 candidate report,则必须 complete; - 首批要求 `qtdragon-multi-joint-on-abort` candidate ready,且包含 `qtdragon_xyyz.ini` 与 `on_abort.ngc` source evidence; - release URL workflow fixtures、ini-panel workflow fixtures 同步携带 candidate evidence。 新增/扩展验证: - `verify_sdk_surface.mjs` 覆盖: - 新常量导出; - 新 report API 导出; - SDK README 文档化; - candidate report complete; - `inventoryBaselineUnchanged === true`; - blocked candidate 为 0; - missing manifest files 为 0; - missing required virtual HAL reports 为 0; - `qtdragon-multi-joint-on-abort` row ready; - runtime wrapper 可读取 candidate report; - release browser diagnostics validation 识别 candidate evidence ready; - `real_simulation_page_smoke.html` 覆盖: - browser API 暴露 `getVirtualHalSimConfigPromotionCandidateReport()`; - diagnostics artifact 内嵌 complete candidate report; - candidate report 包含 `qtdragon-multi-joint-on-abort`; - candidate row current Node status 为 `PASS`; - candidate row target browser evidence 为 `explicit-browser-diagnostics`; - `verify_project_release_artifact_url_workflow.mjs` 覆盖: - diagnostics artifact 携带 candidate evidence; - URL workflow diagnostics validation `hasPromotionCandidates === true`; - URL workflow diagnostics validation `promotionCandidatesReady === true`; - `verify_ini_panel_ui_shell.mjs` 覆盖: - ini-panel URL workflow diagnostics validation 识别 candidate evidence; - diagnostics validation candidate evidence ready; - `ini_panel_workflow_overview_smoke.html` 使用带 candidate evidence 的 diagnostics fixture。 关键验证: ```text sim_configs_coverage_docs_node_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 browser_real_simulation_page_smoke=ok 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 git diff --check ok ``` 语义边界: - 本批没有降低 inventory skip count; - 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、 `unexpected_fail=0`; - 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义; - candidate report 只把已有 Node `PASS` / source-derived virtual HAL evidence 推进到 browser diagnostics / release validation; - `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持 locked,不能由 virtual HAL 或 JS glue 解锁; - virtual HAL 仍不声称提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native HAL module ABI; - G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。 下一步工作内容: 1. 将 `qtdragon/qtdragon_multi_joint/on_abort.ngc` 的 explicit browser diagnostics evidence 同步到 coverage matrix 注释,把它从 delegated representative 记录为已具备 browser diagnostics evidence。 2. 推进 QtDragon family 其余 candidate: `qtdragon_xyz`、`qtdragon_xyz45`、`qtdragon_hd_xyz`、 `qtdragon_hd_z_compensation`、`qtvcp_screens/qtdragon`。 3. 将 `axis/vismach/puma/puma_seam_weld.ngc` 与 `axis/rose_engine/rcone_demo.ngc` 纳入 browser diagnostics candidate evidence,形成非 QtDragon 的 promotion 案例。 ### 二、2026-06-18 QtDragon Family Browser Diagnostics Promotion 本批接续上一批 candidate report,完成 QtDragon family 全组 browser diagnostics evidence 推进,并保持 inventory baseline 不变。 新增实质能力: - `VIRTUAL_HAL_SIM_CONFIG_SOURCE_TARGETS` 的 `qtdragon-on-abort` target 补齐: - `qtdragon/qtdragon_xyz45/qtdragon_xyza.ini`; - `qtdragon/qtdragon_xyz45/on_abort.ngc`; - `qtdragon_hd/qtdragon_hd_z_compensation/qtdragon_hd_z_compensation.ini`; - `qtdragon_hd/qtdragon_hd_z_compensation/on_abort.ngc`; - release diagnostics validation 从只要求 `qtdragon-multi-joint-on-abort` 扩展为要求 QtDragon family 6 个 candidate 全部 ready: - `qtdragon-multi-joint-on-abort`; - `qtdragon-xyz-on-abort`; - `qtdragon-xyz45-on-abort`; - `qtdragon-hd-xyz-on-abort`; - `qtdragon-hd-z-compensation-on-abort`; - `qtvcp-screens-qtdragon-on-abort`; - 每个 QtDragon candidate 必须满足: - `complete === true`; - `currentNodeInventoryStatus === "PASS"`; - `blockedKind === "-"`; - `targetBrowserEvidence === "explicit-browser-diagnostics"`; - source files 同时包含对应 LinuxCNC INI 与 G-code 文件; - real browser simulation diagnostics artifact 同步要求 QtDragon family 全组 candidate evidence; - coverage matrix 注释从“browser representative delegated to woodpecker”同步为 virtual HAL promotion candidate gate 已导出 explicit browser diagnostics evidence; - promotion analysis 文档新增本批 QtDragon family promotion evidence 小节。 语义边界: - 本批没有降低 inventory skip count; - 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、 `unexpected_fail=0`; - 本批只推进 source-derived diagnostics evidence,不新增 G-code/interpreter/planner/kinematics/remap 语义; - virtual HAL 已满足 Web 方式数控系统仿真系统,并在仿真范围内替代 LinuxCNC realtime HAL、`halcmd`、motion controller; - virtual HAL 仍不提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native HAL module ABI; - `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持 locked; - G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。 下一步工作建议: 1. 推进非 QtDragon browser diagnostics promotion: `axis/vismach/puma/puma_seam_weld.ngc` 与 `axis/rose_engine/rcone_demo.ngc`。 2. 为 PUMA / rose engine 增加 release diagnostics validation 中的 required candidate gate,形成非 Qt、非 on-abort family 的 promotion proof。 3. 之后再设计 macro/load non-main fixture report,不把 macro/load 误作为 standalone browser main program 执行。 ### 三、2026-06-18 Non-Qt Virtual HAL Promotion Evidence 本批接续 QtDragon family promotion,将非 QtDragon Tier 1 candidate 纳入 release diagnostics required candidate gate,形成非 Qt、非 on-abort family 的 virtual HAL browser diagnostics proof。 新增实质能力: - release diagnostics validation 的 required promotion candidate gate 从 QtDragon 6 项扩展为 Tier 1 全量 8 项: - QtDragon family 6 个 on-abort candidate; - `puma-seam-weld`; - `rose-engine-rcone-demo`; - `puma-seam-weld` required evidence 必须包含: - `linuxcnc/configs/sim/axis/vismach/puma/puma.ini`; - `linuxcnc/configs/sim/axis/vismach/puma/puma_seam_weld.ngc`; - `linuxcnc/configs/sim/axis/vismach/puma/remap_subs/428remap.ngc`; - `rose-engine-rcone-demo` required evidence 必须包含: - `linuxcnc/configs/sim/axis/rose_engine/rose_engine.ini`; - `linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc`; - SDK smoke 与 real browser simulation smoke 同步要求上述 8 个 candidate 全部 ready; - coverage matrix 对 `puma_seam_weld.ngc` 与 `rcone_demo.ngc` 注释更新为 explicit browser diagnostics evidence; - promotion analysis 文档新增 Non-Qt Promotion Evidence 小节。 语义边界: - 本批没有降低 inventory skip count; - 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、 `unexpected_fail=0`; - PUMA / rose engine promotion 只推进 source-derived diagnostics evidence,不新增 G-code/interpreter/planner/kinematics/remap 语义; - PUMA remap subroutine 作为 LinuxCNC source evidence 引用,不把 ASSET-ONLY subroutine 当 standalone browser main program 执行; - virtual HAL 已满足 Web 方式数控系统仿真系统,并在仿真范围内替代 LinuxCNC realtime HAL、`halcmd`、motion controller; - virtual HAL 仍不提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native HAL module ABI; - `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持 locked; - G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。 下一步工作建议: 1. 设计 macro/load non-main fixture report,首选 `axis/rose_engine/rcone.ngc` 与 `axis/external_offsets/queuebuster.ngc`。 2. gate 必须明确 `nonMainFixture === true`,避免把 macro/load 误作为 standalone browser main program 执行。 3. 将 macro/load fixture evidence 接入 release diagnostics validation,但不改变当前 inventory baseline。 ### 四、2026-06-18 Macro Load Non-Main Fixture Evidence 本批接续 Non-Qt promotion evidence,完成 macro/load non-main fixture report 首批闭环。 新增实质能力: - 新增 `VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_FIXTURES`; - 新增 `createVirtualHalSimConfigMacroLoadFixtureReport()`: - 输出 `linuxcnc-wasm-virtual-hal-sim-config-macro-load-fixture-report`; - 显式输出 `inventoryBaselineUnchanged === true`; - 每个 row 必须 `nonMainFixture === true`; - 每个 row 的 `targetBrowserEvidence` 必须为 `non-main-fixture-diagnostics`; - `standaloneMainViolations` 必须为空; - source manifest 只校验 LinuxCNC source evidence,不把 declared-only fixture path 误当成 manifest 文件; - 首批 fixture: - `rose-engine-rcone-macro-load`: - `fixturePath` 为 `linuxcnc/configs/sim/axis/rose_engine/rcone.ngc`; - source evidence 包含 `rose_engine.ini`、`rcone.ngc`、`rcone_demo.ngc`; - 与 `rcone_demo.ngc` 配对作为 rose engine non-main macro/load evidence; - `external-offsets-queuebuster-macro-load`: - `fixturePath` 为 `linuxcnc/configs/sim/axis/external_offsets/queuebuster.ngc`; - source evidence 包含 `eoffsets.ini` 与 `eoffsets.ngc`; - `declaredOnly === true`,通过 `eoffsets.ini` 的 `NGCGUI_SUBFILE` 声明保留 fixture path,不声明它是 standalone browser main program; - `createLinuxCncVirtualHalRuntime()` 新增: - `getSimConfigMacroLoadFixtureReport()`; - SDK index、SDK README、browser simulation re-export 同步导出新常量和新 report API; - real simulation diagnostics artifact 新增: - `virtualHalSimConfigMacroLoadFixtures`; - browser API `getVirtualHalSimConfigMacroLoadFixtureReport()`; - OPFS/session virtual HAL payload 新增: - `simConfigPromotionCandidates`; - `simConfigMacroLoadFixtures`; - saved-session diagnostics nested artifact 同步携带两类 evidence; - release diagnostics validation 新增 required evidence: - `hasMacroLoadFixtures`; - `macroLoadFixturesReady`; - validation row:`sim-config-macro-load-fixtures`; - 缺少 `virtualHalSimConfigMacroLoadFixtures` 时 release diagnostics validation 不再 ready; - coverage matrix 对 `axis/rose_engine/rcone.ngc` 与 `axis/external_offsets/queuebuster.ngc` 注释更新为 non-main fixture diagnostics evidence; - promotion analysis 文档新增 Macro/Load Non-Main Fixture Evidence 小节。 语义边界: - 本批没有降低 inventory skip count; - 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、 `unexpected_fail=0`; - 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义; - macro/load fixture evidence 只证明 LinuxCNC-owned source/config declaration 与 virtual HAL diagnostics readiness; - `queuebuster.ngc` 只作为 `eoffsets.ini` 的 `NGCGUI_SUBFILE` declared-only fixture path 记录,不作为 manifest-backed standalone file,也不作为 browser main program 执行; - virtual HAL 已满足 Web 方式数控系统仿真系统,并在仿真范围内替代 LinuxCNC realtime HAL、`halcmd`、motion controller; - virtual HAL 仍不提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI 或 native HAL module ABI; - `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持 locked; - G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。 下一步工作建议: 1. 扩展 macro/load fixture report 到一个 UI-family non-main 案例,优先评估 `gscreen/silverdragon/macros/tool_sensor.ngc`。 2. 推进前必须确认 owning machine files、UI process declaration 和 source evidence, 不能把 Python UI process emulation 纳入 virtual HAL 范围。 3. 如 UI-family 边界不清晰,先增加 negative fixture gate:证明 `L4-PYTHON-REMAP` / Python UI process 相关 macro/load 不会被 macro/load fixture report 误解锁。 ### 五、2026-06-18 Macro Load Blocked Fixture Lock 本批按上一节建议先评估 `gscreen/silverdragon/macros/tool_sensor.ngc`。结论是不能直接 作为 positive macro/load fixture 推进:当前 generated boundary evidence 显示 owning machine file `gscreen/silverdragon/silverdragon.ini` 在 vendored manifest 中不可用,且该 family 涉及 Python UI/process 边界风险。为避免 virtual HAL 误解锁 Python UI 或 Python remap family,本批新增 negative fixture gate。 新增实质能力: - 新增 `VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_BLOCKED_FIXTURES`; - `createVirtualHalSimConfigMacroLoadFixtureReport()` 新增: - `blockedRows`; - `blockedFixturePromotionViolations`; - summary row:`blocked-fixture-lock`; - 首批 blocked fixture: - `silverdragon-tool-sensor-python-ui-boundary`: - `fixturePath` 为 `linuxcnc/configs/sim/gscreen/silverdragon/macros/tool_sensor.ngc`; - `owningIniPath` 为 `linuxcnc/configs/sim/gscreen/silverdragon/silverdragon.ini`; - `blockedKind` 为 `PYTHON-UI-PROCESS`; - 必须 `excludedFromPositiveFixtures === true`; - `gmoccapy-on-abort-python-remap-boundary`: - `fixturePath` 为 `linuxcnc/configs/sim/gmoccapy/macros/on_abort.ngc`; - `owningIniPath` 为 `linuxcnc/configs/sim/gmoccapy/6_axis.ini`; - `blockedKind` 为 `L4-PYTHON-REMAP`; - 必须 `excludedFromPositiveFixtures === true`; - release diagnostics validation 新增 required negative evidence: - `blockedFixturePromotionViolations.length === 0`; - SilverDragon `tool_sensor.ngc` 与 gmoccapy `on_abort.ngc` 必须存在于 `blockedRows`; - 两者不能出现在 positive macro/load fixture rows; - real simulation smoke 与 SDK smoke 同步验证 blocked fixture lock; - coverage matrix 对 `gscreen/silverdragon/macros/tool_sensor.ngc` 注释更新为 blocked negative fixture; - promotion analysis 文档新增 Macro/Load Blocked Fixture Lock 小节。 语义边界: - 本批没有降低 inventory skip count; - 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、 `unexpected_fail=0`; - 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义; - 本批没有把 SilverDragon、gmoccapy 或任何 Python UI / Python remap family 作为 virtual HAL positive fixture 推进; - virtual HAL 已满足 Web 方式数控系统仿真系统,并在仿真范围内替代 LinuxCNC realtime HAL、`halcmd`、motion controller; - virtual HAL 仍不提供 Linux kernel hard-realtime ABI、外部硬件驱动 ABI、native HAL module ABI、Python UI process emulation 或 Python remap runtime; - `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持 locked; - G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。 下一步工作建议: 1. 为 macro/load fixture report 增加 UI-family candidate audit,将 `gscreen/industrial_lathe_wear/toolchange.ngc` 与 `qtvcp_screens/industrial_lathe_wear/toolchange.ngc` 先作为 audit rows 评估。 2. 只有 owning INI、machine files、tool table、UI/process declaration 都有 LinuxCNC source evidence,且不需要 Python UI process emulation 时,才允许转为 positive non-main fixture。 3. 如证据仍不完整,继续扩展 blocked fixture lock,不降低 inventory baseline。