Files
cnc_wams/text18.txt

768 lines
31 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
项目接续文件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。