Files
cnc_wams/textbak/text18.txt
wangdequan 626bcfe8e3 继续完成 web-rtcp-5axis-sim-plan
结论:完成 LinuxCNC kinematics WASM ABI 覆盖,并将 web-rtcp-5axis-sim-plan 的 RTCP frame/boundary adapter 接到 xyzac-trt kinematics SDK;Node、build、browser smoke 验证通过。
2026-06-21 16:44:29 +08:00

2346 lines
106 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 的机器可读 evidence
把 promotion candidate 从“逐 row 断言”推进为 family-level browser diagnostics
summary便于后续 release gate 和 URL workflow 直接判断整组是否 ready。
新增实质能力:
- `VIRTUAL_HAL_SIM_CONFIG_PROMOTION_CANDIDATES` 中 8 个 Tier 1 candidate 的
`currentMatrixBrowserStatus` 统一更新为 `explicit-browser-diagnostics`
- 6 个 QtDragon / QTVCP on-abort row
- `puma-seam-weld`
- `rose-engine-rcone-demo`
- `createVirtualHalSimConfigPromotionCandidateReport()` 新增 `familyRows`
- 按 `simConfigTarget` 聚合;
- 对无 `simConfigTarget` 的 row 使用自身 id 聚合;
- 输出 `candidateIds`、`candidateCount`、`completeCount`、
`explicitBrowserDiagnosticsCount`、`explicitBrowserDiagnosticsReady`、
`sourceFiles`
- QtDragon family 现在有机器可读 6/6 evidence
- `id === "qtdragon-on-abort"`
- `candidateCount === 6`
- `completeCount === 6`
- `explicitBrowserDiagnosticsCount === 6`
- `explicitBrowserDiagnosticsReady === true`
- PUMA 与 rose_engine 也进入 family summary
- `vismach-remap-sims` 覆盖 `puma-seam-weld`
- `rose-engine-rcone-demo` 覆盖 rose engine main diagnostics candidate
- release readiness fixture 重新生成,静态 JSON artifact 现在包含 `familyRows`
- SDK smoke、browser real simulation smoke、release readiness artifact smoke 同步验证:
- every candidate row `currentMatrixBrowserStatus === "explicit-browser-diagnostics"`
- QtDragon family 6/6 ready
- PUMA 与 rose_engine family explicit browser diagnostics ready。
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpected_fail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- candidate report 仍只把已有 Node `PASS` / LinuxCNC source-derived virtual HAL
evidence 推进到 browser diagnostics / release validation
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 为 `boundaryEvidence` 增加 freshness gate记录 generated inventory artifact 的
summary/hash避免过期 TSV 继续作为 release evidence。
2. 将 positive non-main fixtures 的 declaration evidence 扩展到
`axis/rose_engine/rcone.ngc`,显式证明它来自 `rose_engine.ini` 的 macro/load 声明。
3. 将 `familyRows` 接入 release URL / ini-panel workflow 的可视摘要,让使用者可以直接看到
QtDragon、PUMA、rose_engine 三个 promotion family 的 ready 状态。
本批接续上一批 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。
### 六、2026-06-18 UI-Family Macro Load Candidate Audit
本批接续上一节建议,把 UI-family macro/load 候选先纳入机器可读 audit rows而不是
positive fixture promotion。结论是这批仍不能由 virtual HAL 直接解锁。
新增实质能力:
- 新增 `VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_AUDIT_CANDIDATES`
- `createVirtualHalSimConfigMacroLoadFixtureReport()` 新增:
- `auditRows`
- `auditPromotionViolations`
- summary row`ui-family-audit`
- 首批 audit candidate
- `gscreen-industrial-lathe-wear-toolchange-audit`
- `fixturePath` 为
`linuxcnc/configs/sim/gscreen/industrial_lathe_wear/toolchange.ngc`
- `owningIniPath` 为
`linuxcnc/configs/sim/gscreen/industrial_lathe_wear/industrial_lathe_wear.ini`
- `auditStatus` 为 `blocked-missing-owning-ini`
- `promotionAllowed === false`
- 必须 `excludedFromPositiveFixtures === true`
- `qtvcp-industrial-lathe-wear-toolchange-audit`
- `fixturePath` 为
`linuxcnc/configs/sim/qtvcp_screens/industrial_lathe_wear/toolchange.ngc`
- `owningIniPath` 为
`linuxcnc/configs/sim/qtvcp_screens/industrial_lathe_wear/industrial_lathe_wear.ini`
- `auditStatus` 为 `blocked-missing-owning-ini`
- `promotionAllowed === false`
- 必须 `excludedFromPositiveFixtures === true`
- release diagnostics validation 新增 required audit evidence
- `auditPromotionViolations.length === 0`
- 两个 industrial lathe wear `toolchange.ngc` audit rows 必须存在;
- 两者不能出现在 positive macro/load fixture rows
- SDK index、browser simulation re-export 同步导出 audit candidate 常量;
- SDK smoke 与 real browser simulation smoke 同步验证 audit rows
- SDK README 与 promotion analysis 文档同步说明 UI-family audit gate。
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpected_fail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- industrial lathe wear `toolchange.ngc` 只作为 audit negative evidence不作为
standalone browser main program也不作为 positive macro/load fixture
- 只有 owning INI、machine files、tool table、UI/process declaration 都有 LinuxCNC
source evidence且不需要 Python UI process emulation 时,才允许后续 positive
promotion
- 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. 将 UI-family audit 与 generated boundary inventory 对齐,补一份 machine-readable
“owning INI missing / UI process boundary”来源说明避免 audit row 靠手工判断。
2. 继续增加 release diagnostics negative fixtures缺失 `auditRows`、audit row 被误放入
positive fixtures、`promotionAllowed === true` 但证据不足时必须 fail。
3. 暂不降低 inventory baseline后续 promotion 只从已有 Node `PASS` 且无 blocked
runtime family 的 main program 或明确 non-main fixture 中推进。
### 七、2026-06-18 UI-Family Audit Boundary Evidence Gate
本批接续上一节建议,把 UI-family macro/load audit rows 与 generated boundary inventory
对齐,补齐机器可读来源说明,并增加 release diagnostics 负向 gate。
新增实质能力:
- `VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_AUDIT_CANDIDATES` 的两个 industrial lathe
`toolchange.ngc` audit rows 新增 `boundaryEvidence`
- source artifacts
- `wasm-port/build/wasm/sim-configs-inventory/boundary-summary.tsv`
- `wasm-port/build/wasm/sim-configs-inventory/ini-boundary-summary.tsv`
- `boundarySummary` 必须记录:
- 对应 `fixturePath`
- 对应 `owningIniPath`
- `recommendedBlocked === "UNAVAILABLE"`
- `dependencies` 包含 `missing_vendored_ini:`
- `iniBoundarySummary` 必须记录:
- 对应 `owningIniPath`
- `vendored === 0`
- `reportAvailable === 0`
- `recommendedBlocked === "UNAVAILABLE"`
- `dependencies` 包含 `missing_vendored_ini:`
- `createVirtualHalSimConfigMacroLoadFixtureReport()` 新增:
- `missingAuditRows`
- `auditBoundaryEvidenceViolations`
- `auditPromotionAllowedViolations`
- audit row 字段 `boundaryEvidenceReady`
- report `complete` 现在要求:
- audit rows 存在;
- audit rows 未进入 positive fixture
- generated boundary evidence ready
- `promotionAllowed === true` 不能在证据不足时出现;
- release diagnostics validation 同步要求:
- `missingAuditRows.length === 0`
- `auditBoundaryEvidenceViolations.length === 0`
- `auditPromotionAllowedViolations.length === 0`
- audit rows 的 boundary evidence 必须与 generated inventory 缺失 owning INI 证据一致;
- SDK smoke 新增负向 fixtures
- 缺失 generated boundary evidence 必须 fail
- audit candidate 被误放入 positive fixtures 必须 fail
- `promotionAllowed === true` 但证据不足必须 fail
- browser diagnostics artifact 缺失 audit rows / boundary evidence violations /
promotionAllowed violations 必须 fail
- real browser simulation smoke 与 release readiness artifact smoke 同步验证 audit row
的 boundary evidence
- promotion analysis 文档新增 UI-Family Audit Boundary Evidence 小节。
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpected_fail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- industrial lathe wear `toolchange.ngc` 仍只是 audit negative evidence不是
positive fixture不是 browser main program
- generated boundary evidence 只证明 owning INI 在当前 vendored inventory 中缺失,
不把 virtual HAL 扩展为 Python UI process emulation
- 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. 把 SilverDragon blocked fixture 也接入同样的 generated boundary evidence 字段,
让 `tool_sensor.ngc` 的 blocked lock 不再只依赖手工 reason。
2. 为 `boundaryEvidence` 增加 manifest/source artifact freshness gate避免使用过期的
`build/wasm/sim-configs-inventory/*.tsv` 证据。
3. 继续保持 inventory baseline 不变;后续只推进已具备 LinuxCNC source/runtime
evidence 的 non-main fixture 或 main program diagnostics evidence。
### 八、2026-06-18 SilverDragon Blocked Boundary Evidence Gate
本批接续上一节建议,把 SilverDragon blocked fixture 接入 generated boundary evidence
让 `tool_sensor.ngc` 的 blocked lock 不再只依赖手工 reason。
新增实质能力:
- `VIRTUAL_HAL_SIM_CONFIG_MACRO_LOAD_BLOCKED_FIXTURES` 新增 `boundaryEvidence`
- `silverdragon-tool-sensor-python-ui-boundary`
- `fixturePath` 为
`linuxcnc/configs/sim/gscreen/silverdragon/macros/tool_sensor.ngc`
- `owningIniPath` 为 `linuxcnc/configs/sim/gscreen/silverdragon/silverdragon.ini`
- generated boundary evidence 来自:
- `wasm-port/build/wasm/sim-configs-inventory/boundary-summary.tsv`
- `wasm-port/build/wasm/sim-configs-inventory/ini-boundary-summary.tsv`
- evidence 必须证明 `recommendedBlocked === "UNAVAILABLE"` 且 dependencies
包含 `missing_vendored_ini:configs/sim/gscreen/silverdragon/silverdragon.ini`
- `gmoccapy-on-abort-python-remap-boundary` 同步补齐 generated boundary evidence
- 新增 helper `isGeneratedBoundaryEvidenceReady()`blocked rows 与 audit rows 复用同一
generated boundary evidence 校验;
- `createVirtualHalSimConfigMacroLoadFixtureReport()` 新增:
- blocked row 字段 `boundaryEvidence`
- blocked row 字段 `boundaryEvidenceReady`
- `blockedBoundaryEvidenceViolations`
- report `complete` 现在要求 blocked fixture 也具备 generated boundary evidence
- release diagnostics validation 同步要求:
- `blockedBoundaryEvidenceViolations.length === 0`
- blockedRows 的 boundary evidence 必须证明 owning INI missing
- SDK smoke 新增负向 fixture
- blocked row 缺失 generated boundary evidence 必须 fail
- real browser simulation smoke 与 release readiness artifact smoke 同步验证 blocked row
boundary evidence
- promotion analysis 文档新增 SilverDragon Blocked Boundary Evidence 小节。
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpected_fail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- SilverDragon `tool_sensor.ngc` 仍是 blocked negative fixture不是 positive
macro/load fixture不是 browser main program
- generated boundary evidence 只证明 owning INI 在当前 vendored inventory 中缺失,
不把 virtual HAL 扩展为 Python UI process emulation
- 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. 为 `boundaryEvidence` 增加 freshness gate记录 generated inventory artifact 的
baseline summary 或 timestamp/hash避免使用过期 TSV。
2. 将 `axis/external_offsets/queuebuster.ngc` 的 declared-only fixture 也补充
declaration-level evidence显式指向 `eoffsets.ini` 的 `NGCGUI_SUBFILE`。
3. 继续保持 inventory baseline 不变,只推进 evidence/report/gate 层面的 Web
simulation readiness。
### 九、2026-06-18 Queuebuster Declaration Evidence Gate
本批接续上一节建议,把 `axis/external_offsets/queuebuster.ngc` 的 declared-only
non-main fixture 补充 declaration-level evidence显式证明它来自 LinuxCNC
`eoffsets.ini` 的 `NGCGUI_SUBFILE` 声明。
新增实质能力:
- `external-offsets-queuebuster-macro-load` 新增 `declarationEvidence`
- `sourceFile`
`linuxcnc/configs/sim/axis/external_offsets/eoffsets.ini`
- `section``DISPLAY`
- `key``NGCGUI_SUBFILE`
- `value``queuebuster.ngc`
- `line``40`
- `sourceLine``NGCGUI_SUBFILE = queuebuster.ngc`
- `createVirtualHalSimConfigMacroLoadFixtureReport()` 新增:
- row 字段 `declarationEvidence`
- row 字段 `declarationEvidenceReady`
- `declarationEvidenceViolations`
- declared-only fixture 的 `complete` 现在要求 declaration evidence ready
- release diagnostics validation 同步要求:
- `declarationEvidenceViolations.length === 0`
- `external-offsets-queuebuster-macro-load` 必须携带 `NGCGUI_SUBFILE =
queuebuster.ngc` evidence
- SDK smoke 新增负向 fixture
- queuebuster declared-only fixture 缺失 declaration evidence 必须 fail
- real browser simulation smoke 与 release readiness artifact smoke 同步验证
queuebuster declaration evidence
- promotion analysis 文档新增 Queuebuster Declaration Evidence 小节。
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpected_fail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- `queuebuster.ngc` 仍是 declared-only non-main fixture不是 browser main program
- declaration evidence 只证明 LinuxCNC INI source 声明,不把 virtual HAL 扩展为
Python remap runtime 或 external user-M process execution
- 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. 为 `boundaryEvidence` 增加 freshness gate记录 generated inventory artifact 的
summary/hash避免过期 TSV 继续作为 release evidence。
2. 将 positive non-main fixtures 的 declaration evidence 扩展到
`axis/rose_engine/rcone.ngc`,显式证明它来自 `rose_engine.ini` 的 macro/load 声明。
3. 继续保持 inventory baseline 不变,只推进 source-derived evidence/report/gate。
### 十、2026-06-18 Rose Engine Declaration Evidence Gate
本批接续上一节建议,把 positive non-main fixture
`axis/rose_engine/rcone.ngc` 也补充 declaration-level evidence显式证明它来自
LinuxCNC `rose_engine.ini` 的 `NGCGUI_SUBFILE` 声明。
新增实质能力:
- `rose-engine-rcone-macro-load` 新增 `declarationEvidence`
- `sourceFile``linuxcnc/configs/sim/axis/rose_engine/rose_engine.ini`
- `section``DISPLAY`
- `key``NGCGUI_SUBFILE`
- `value``rcone.ngc`
- `line``34`
- `sourceLine``NGCGUI_SUBFILE = rcone.ngc`
- `createVirtualHalSimConfigMacroLoadFixtureReport()` 的 declaration gate 从
`declaredOnly === true` 扩展为所有声明了 `declarationSource` 的 positive fixture
- positive non-main fixture row 新增 `requiresDeclarationEvidence`
- release diagnostics validation 同步要求 `rose-engine-rcone-macro-load` 携带
`rose_engine.ini` 第 34 行 declaration evidence
- SDK smoke 新增负向 fixture
- `rose-engine-rcone-macro-load` 缺失 declaration evidence 必须 fail
- real browser simulation smoke 与 release readiness artifact smoke 同步验证 rcone 与
queuebuster 两个 positive non-main fixture 的 declaration evidence
- promotion analysis 文档新增 Rose Engine Declaration Evidence 小节。
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpected_fail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- `rcone.ngc` 仍是 LinuxCNC INI 声明的 non-main macro/load support asset不是
browser main program
- declaration evidence 只证明 LinuxCNC INI source 声明,不把 virtual HAL 扩展为
Python remap runtime、tool DB process protocol 或 external user-M process execution
- 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. 为 `boundaryEvidence` 增加 freshness gate记录 generated inventory artifact 的
summary/hash避免过期 TSV 继续作为 release evidence。
2. 将 `familyRows` 接入 release URL / ini-panel workflow 的可视摘要,让使用者可以直接看到
QtDragon、PUMA、rose_engine 三个 promotion family 的 ready 状态。
3. 继续保持 inventory baseline 不变,只推进 source-derived evidence/report/gate。
### 十一、2026-06-18 Boundary Evidence Freshness Gate
本批接续上一节建议,为 blocked/audit macro-load `boundaryEvidence` 增加 freshness
gate避免过期 generated inventory TSV 继续作为 release evidence。
新增实质能力:
- 新增 `VIRTUAL_HAL_SIM_CONFIG_INVENTORY_BASELINE`
- `executed: 28`
- `passed: 28`
- `skipped: 131`
- `unexpectedFail: 0`
- SDK index 与 README 同步导出/记录该 baseline 常量;
- blocked fixtures 与 audit candidates 的 `boundaryEvidence` 新增 `baselineSummary`
- `isGeneratedBoundaryEvidenceReady()` 现在要求:
- `sourceArtifacts` 包含 `boundary-summary.tsv` 与 `ini-boundary-summary.tsv`
- `baselineSummary` 与当前 inventory baseline 完全一致;
- `boundarySummary` 与 `iniBoundarySummary` 仍证明 owning INI missing
- release diagnostics validation 新增 baseline freshness 校验:
- blocked rows 必须携带 fresh `baselineSummary`
- audit rows 必须携带 fresh `baselineSummary`
- SDK smoke 新增负向 fixture
- blocked boundary evidence 的 `skipped` 伪造为 `130` 时必须 fail
- real browser simulation smoke 与 release readiness artifact smoke 同步验证
`baselineSummary`
- release readiness fixture 重新生成,静态 JSON artifact 现在携带 fresh baseline
evidence
- promotion analysis 文档新增 Boundary Evidence Freshness Gate 小节。
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- freshness gate 只约束 generated boundary evidence 与当前 inventory artifact
baseline 对齐;
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 将 `familyRows` 接入 release URL / ini-panel workflow 的可视摘要,让使用者可以直接看到
QtDragon、PUMA、rose_engine 三个 promotion family 的 ready 状态。
2. 为 freshness gate 增加 artifact hash 字段,进一步证明 `boundary-summary.tsv` 与
`ini-boundary-summary.tsv` 不是旧文件。
3. 继续保持 inventory baseline 不变,只推进 source-derived evidence/report/gate。
### 十二、2026-06-18 Promotion Family URL Workflow Summary
本批接续上一节建议,把 `familyRows` 接入 release URL / ini-panel workflow 的可视摘要,
让使用者可以直接看到 QtDragon、PUMA、rose_engine 三个 promotion family 的 ready 状态。
新增实质能力:
- 新增 helper `createPromotionFamilySummaryText()`
- 从 promotion candidate report 的 `familyRows` 生成摘要;
- 当前 ready artifact 输出:
`qtdragon-on-abort: 6/6 ready; vismach-remap-sims: 1/1 ready; rose-engine-rcone-demo: 1/1 ready`
- `createProjectReleaseReadinessReport()` 新增:
- `virtualHalPromotionFamilySummary`
- rows 中新增 `virtual-hal-promotion-families`
- `createProjectReleaseReadinessArtifactValidation()` 新增:
- `virtualHalPromotionFamilySummary`
- validation rows 中新增 `virtual-hal-promotion-families`
- `createProjectReleaseReadinessArtifactValidationSummaryViewModel()` 显示 promotion
family summary
- `createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel()` 显示 promotion
family summary
- ini-panel workflow overview URL summary 同步显示 promotion family summary
- ini-panel 测试 fixture 补齐 release artifact 内的 promotion candidate report 和
macro/load fixture report避免 URL workflow 只显示局部 release evidence
- release readiness fixture 重新生成,静态 JSON artifact 现在携带
`virtualHalPromotionFamilySummary`
- SDK smoke、release artifact URL workflow smoke、project release gate manifest smoke、
ini-panel UI shell smoke 同步验证可视摘要;
- promotion analysis 文档新增 Promotion Family URL Workflow Summary 小节。
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- 本批只把已有 source-derived candidate family evidence 暴露到 release URL /
ini-panel workflow summary
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 为 freshness gate 增加 artifact hash 字段,进一步证明 `boundary-summary.tsv` 与
`ini-boundary-summary.tsv` 不是旧文件。
2. 将 promotion family summary 扩展为结构化 rows分别展示 QtDragon、PUMA、
rose_engine 的 source file count 与 diagnostics ready 状态。
3. 继续保持 inventory baseline 不变,只推进 source-derived evidence/report/gate。
### 十三、2026-06-18 Structured Promotion Family Rows
本批接续上一节建议,把 promotion family summary 扩展为结构化 rows分别展示
QtDragon、PUMA、rose_engine 的 source file count 与 diagnostics ready 状态。
新增实质能力:
- 新增 helper `createPromotionFamilySummaryRows()`
- 从 promotion candidate report 的 `familyRows` 生成结构化摘要;
- 每行包含 `id`、`candidateCount`、`completeCount`、`sourceFileCount`、
`explicitBrowserDiagnosticsReady`、`ready`、`value`
- `createProjectReleaseReadinessReport()` 新增:
- `virtualHalPromotionFamilyRows`
- rows 中新增每个 family 的结构化展示行;
- `createProjectReleaseReadinessArtifactValidation()` 新增:
- `virtualHalPromotionFamilyRows`
- validation rows 中新增每个 family 的结构化展示行;
- `createProjectReleaseReadinessArtifactValidationSummaryViewModel()` 显示结构化
promotion family rows
- `createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel()` 显示结构化
promotion family rows
- ini-panel workflow overview URL summary 同步显示结构化 promotion family rows
- 当前结构化输出:
- `qtdragon-on-abort: 6/6 ready; sources=12; diagnostics=ready`
- `vismach-remap-sims: 1/1 ready; sources=3; diagnostics=ready`
- `rose-engine-rcone-demo: 1/1 ready; sources=2; diagnostics=ready`
- release readiness fixture 重新生成,静态 JSON artifact 现在携带
`virtualHalPromotionFamilyRows`
- SDK smoke、release artifact URL workflow smoke、project release gate manifest smoke、
ini-panel UI shell smoke、release readiness artifact smoke 同步验证结构化 rows
- promotion analysis 文档新增 Structured Promotion Family Rows 小节。
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- 本批只把已有 source-derived candidate family evidence 进一步结构化;
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 为 freshness gate 增加 artifact hash 字段,进一步证明 `boundary-summary.tsv` 与
`ini-boundary-summary.tsv` 不是旧文件。
2. 将 structured promotion family rows 接入浏览器页面 DOM 渲染层,形成可见 UI 行而不仅是
view-model row。
3. 继续保持 inventory baseline 不变,只推进 source-derived evidence/report/gate。
### 十四、2026-06-18 Boundary Evidence Artifact Hash Gate
本批接续上一节建议,为 freshness gate 增加 artifact hash 字段,进一步证明
`boundary-summary.tsv` 与 `ini-boundary-summary.tsv` 不是旧文件或替代文件。
新增实质能力:
- 新增 `VIRTUAL_HAL_SIM_CONFIG_INVENTORY_ARTIFACT_HASHES`
- `boundary-summary.tsv`
`de6cf57b7c07182e3bcb32e22dbdf202b618cabc14620d6dff1ef815587950b9`
- `ini-boundary-summary.tsv`
`b0afe27224e97a82fbecbbd75a7c86233c98fe957d9c1ba20f0656f8745a5eae`
- SDK index 与 README 同步导出/记录该 hash 常量;
- blocked fixtures 与 audit candidates 的 `boundaryEvidence` 新增 `sourceArtifactHashes`
- `isGeneratedBoundaryEvidenceReady()` 现在要求:
- artifact path 存在;
- `baselineSummary` 与 inventory baseline 一致;
- `sourceArtifactHashes` 与当前两个 generated TSV 的 SHA-256 一致;
- `boundarySummary` 与 `iniBoundarySummary` 仍证明 owning INI missing
- release diagnostics validation 同步检查 artifact hash freshness
- SDK smoke 新增负向 fixture
- blocked boundary evidence 的 `boundary-summary.tsv` hash 伪造为 `stale` 时必须 fail
- real browser simulation smoke 与 release readiness artifact smoke 同步验证 hash
- release readiness fixture 重新生成,静态 JSON artifact 现在携带 source artifact hash
evidence
- promotion analysis 文档新增 Boundary Evidence Artifact Hash Gate 小节。
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- hash gate 只约束 generated boundary evidence 的来源与当前 build artifact 一致;
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 将 structured promotion family rows 接入浏览器页面 DOM 渲染层,形成可见 UI 行而不仅是
view-model row。
2. 为 artifact hash gate 增加自动生成脚本,避免 generated TSV 变更后手工更新 hash。
3. 继续保持 inventory baseline 不变,只推进 source-derived evidence/report/gate。
### 十五、2026-06-18 Browser Promotion Family DOM Rows
本批接续上一节建议,将 structured promotion family rows 接入 real simulation 浏览器页面
DOM 渲染层,形成可见 diagnostics UI 行,而不仅停留在 view-model / report 数据。
新增实质能力:
- real simulation diagnostics panel 新增 `data-promotion-family-rows` DOM 容器;
- 新增 `renderPromotionFamilyRows()`
- 从 `createVirtualHalSimConfigPromotionCandidateReport().familyRows` 渲染可见行;
- 写入 `document.body.dataset.promotionFamilyReady`
- 写入 `document.body.dataset.promotionFamilyCount`
- 每行暴露 `data-promotion-family-row`、`data-promotion-family-ready` 与
`data-promotion-family-value`
- browser API 新增:
- `getVirtualHalPromotionFamilyRows()`
- 当前浏览器可见行:
- `qtdragon-on-abort: 6/6 ready; sources=12`
- `vismach-remap-sims: 1/1 ready; sources=3`
- `rose-engine-rcone-demo: 1/1 ready; sources=2`
- real browser simulation smoke 新增断言:
- API 暴露 `getVirtualHalPromotionFamilyRows()`
- `promotionFamilyReady === "true"`
- `promotionFamilyCount === "3"`
- QtDragon、PUMA、rose_engine 三个 DOM row 均 ready
- DOM 文本与 promotion candidate report 的结构化 family evidence 对齐;
- promotion analysis 文档新增 Browser Promotion Family DOM Rows 小节。
关键验证:
```text
git diff --check 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
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- 本批只把已有 source-derived candidate family evidence 渲染为浏览器可见 diagnostics
UI 行;
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 为 artifact hash gate 增加自动生成脚本,避免 generated TSV 变更后手工更新 hash。
2. 将 promotion family DOM rows 扩展到 ini-panel workflow overview 的实际挂载 DOM
让 release URL workflow 和 real simulation 页面具备一致可见证据。
3. 继续保持 inventory baseline 不变,只推进 source-derived evidence/report/gate。
### 十六、2026-06-18 Fast Follow: Hash Tool And INI Panel Promotion DOM
按“减少测试、快速大幅度推进”的要求,本批只跑少量贴近改动的 gate同时完成两个高杠杆
交付artifact hash 自动更新工具,以及 ini-panel workflow overview 的 promotion family
可见 DOM 挂载能力。
新增实质能力:
- 新增 hash 工具:
- `wasm-port/tools/update_sim_config_boundary_hashes.mjs`
- `wasm-port/tools/update_sim_config_boundary_hashes.sh`
- hash 工具能力:
- 读取 `boundary-summary.tsv` 与 `ini-boundary-summary.tsv`
- 计算 SHA-256
- `--check` 校验 SDK / release validation 中的 hash 常量是否同步;
- `--write` 自动更新 hash 常量;
- 避免 generated TSV 变更后手工改 hash
- ini-panel workflow overview 新增 promotion family rows DOM 能力:
- `createIniPanelShellWorkflowOverviewPromotionFamilyRowsRenderState()`
- `createIniPanelShellWorkflowOverviewPromotionFamilyRowsDomContract()`
- `createIniPanelShellWorkflowOverviewPromotionFamilyRowsDomReadiness()`
- `renderIniPanelShellWorkflowOverviewPromotionFamilyRowsState()`
- `mountIniPanelShellWorkflowOverviewPromotionFamilyRowsState()`
- SDK index 同步导出上述 ini-panel promotion family DOM API
- `createIniPanelShellViewModel()` 的 workflow overview API 同步暴露 create/render/mount
方法;
- workflow overview contract 纳入对应 `getWorkflowOverviewPromotionFamilyRows*` 方法;
- UI shell smoke 覆盖:
- 从 release URL workflow summary 生成 promotion family rows render state
- 三行 ready
- `virtual-hal-promotion-family-qtdragon-on-abort`
- `virtual-hal-promotion-family-vismach-remap-sims`
- `virtual-hal-promotion-family-rose-engine-rcone-demo`
- DOM-like mount rowCount 为 3
- render/mount result 均 ready
- promotion analysis 文档新增 Fast Follow: Hash Tool And INI Panel Promotion DOM 小节。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tools/update_sim_config_boundary_hashes.sh --check ok
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- hash 工具只维护 generated boundary artifact 的 evidence hash
- ini-panel DOM 只展示已有 source-derived promotion family evidence
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 把 hash 工具接入 release readiness / SDK smoke使 generated TSV drift 能在常规 gate
中自动暴露。
2. 将 ini-panel promotion family DOM rows 接入 browser workflow overview smoke验证真实浏览器
页面也能看到三条 family row。
3. 继续推进下一个 source-derived evidence为 promotion family rows 增加 per-family source
file drilldown DOM。
### 十七、2026-06-18 Promotion Family Source Drilldown DOM
继续按“减少测试、快速大幅度推进功能实现”推进,本批实现 promotion family 的 source file
drilldownini-panel 不再只显示 family ready 状态和 source file count而是能把每个 family
对应的 LinuxCNC source evidence 展开为 DOM 行。
新增实质能力:
- `createPromotionFamilySummaryRows()` 输出新增:
- `sourceFiles`
- release readiness report / validation summary / URL workflow summary 保留 promotion family
source file metadata
- `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel()` 新增:
- `promotionFamilyRows` 结构字段;
- `createIniPanelShellWorkflowOverviewPromotionFamilyRowsRenderState()` 新增:
- `sourceRows`
- `sourceFileCount`
- `renderIniPanelShellWorkflowOverviewPromotionFamilyRowsState()` 现在渲染:
- 3 条 promotion family row
- 17 条 per-family source file drilldown row
- 每条 source row 携带 `workflowOverviewPromotionFamilyFamily` dataset指向所属 family
- 当前 source drilldown
- `qtdragon-on-abort`12 个 source files
- `vismach-remap-sims`3 个 source files
- `rose-engine-rcone-demo`2 个 source files
- UI shell smoke 新增关键 source evidence 断言:
- `qtdragon_multi_joint/qtdragon_xyyz.ini`
- `axis/vismach/puma/remap_subs/428remap.ngc`
- `axis/rose_engine/rcone_demo.ngc`
- promotion analysis 文档新增 Promotion Family Source Drilldown 小节。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- source drilldown 只展示已有 source-derived promotion family evidence
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 将 ini-panel promotion family source drilldown 接入 browser workflow overview smoke确认真实
DOM 中可见 3 个 family 与 17 个 source rows。
2. 给 source drilldown 增加 per-source status 字段,区分 INI、G-code、remap subroutine 与
manifest-backed source。
3. 把 hash 工具接入 release readiness / SDK smoke使 generated TSV drift 能在常规 gate
中自动暴露。
### 十八、2026-06-18 Promotion Family Source Status
继续减少测试并快速推进功能。本批在上一批 source drilldown 基础上增加 per-source status
让 ini-panel workflow overview 能区分每条 source evidence 的类型与 manifest-backed 状态。
新增实质能力:
- 新增 source 分类 helper
- `.ini` 标记为 `ini`
- `.ngc` 标记为 `gcode`
- `remap_subs` / `nc_subroutines` 下的 source 标记为 `remap-subroutine`
- 其他 source 标记为 `source`
- promotion family source drilldown row 新增:
- `sourceKind`
- `manifestBacked`
- `status: "manifest-backed"`
- DOM dataset 新增:
- `workflowOverviewPromotionFamilySourceKind`
- `workflowOverviewPromotionFamilyManifestBacked`
- `workflowOverviewPromotionFamilySourceStatus`
- UI shell smoke 覆盖:
- QtDragon INI source 为 `ini` + `manifest-backed`
- QtDragon on_abort `.ngc` 为 `gcode` + `manifest-backed`
- PUMA `remap_subs/428remap.ngc` 为 `remap-subroutine` + `manifest-backed`
- DOM row dataset 与 render state source status 一致;
- promotion analysis 文档新增 Promotion Family Source Status 小节。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- source status 只标注已有 source-derived promotion family evidence 的文件类型;
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 将 ini-panel promotion family source status 接入 browser workflow overview smoke确认真实
DOM dataset 可见。
2. 把 source status 聚合成 family-level source-kind counts例如 `ini=6 gcode=6`。
3. 把 hash 工具接入 release readiness / SDK smoke使 generated TSV drift 能在常规 gate
中自动暴露。
### 十九、2026-06-18 Promotion Family Source Kind Counts
继续减少测试并快速推进功能。本批把 source drilldown 的 per-source status 聚合到 family
层级,让 ini-panel workflow overview 的 family 行直接展示 source-kind counts。
新增实质能力:
- 新增 source kind 聚合 helper
- `countPromotionFamilySourceKinds()`
- `formatPromotionFamilySourceKindCounts()`
- promotion family row 新增:
- `sourceKindCounts`
- `sourceKindSummary`
- DOM family row 新增 dataset
- `workflowOverviewPromotionFamilySourceKindCounts`
- family row 显示文本追加 source-kind summary
- 当前聚合结果:
- `qtdragon-on-abort``ini=6 gcode=6`
- `vismach-remap-sims``ini=1 gcode=1 remap-subroutine=1`
- `rose-engine-rcone-demo``ini=1 gcode=1`
- UI shell smoke 覆盖:
- render state family counts
- DOM family row dataset
- DOM family row text
- promotion analysis 文档新增 Promotion Family Source Kind Counts 小节。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- source-kind counts 只聚合已有 source-derived promotion family evidence
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 将 ini-panel promotion family source-kind counts 接入 browser workflow overview smoke
确认真实 DOM dataset 可见。
2. 增加 source drilldown filter/view-model让 UI 可以按 `ini`、`gcode`、
`remap-subroutine` 过滤 evidence。
3. 把 hash 工具接入 release readiness / SDK smoke使 generated TSV drift 能在常规 gate
中自动暴露。
### 二十、2026-06-18 Promotion Family Source Filter ViewModel
继续减少测试并快速推进功能。本批把 source drilldown 从“只能展示”推进到“可按类型过滤”,
让 ini-panel workflow overview 能直接按 `ini`、`gcode`、`remap-subroutine` 查看
promotion family evidence。
新增实质能力:
- 新增 source kind filter helper
- `normalizePromotionFamilySourceKindFilter()`
- `createIniPanelShellWorkflowOverviewPromotionFamilySourceFilterViewModel()`
- shell workflow overview contract 新增:
- `getWorkflowOverviewPromotionFamilySourceFilterViewModel`
- SDK 入口导出新增 filter view-model API
- filter view-model 输出:
- `sourceKindFilters`
- `sourceKindCounts`
- `totalSourceFileCount`
- `filteredSourceFileCount`
- `familyRows`
- `sourceRows`
- 当前过滤结果:
- `all=17`
- `ini=8`
- `gcode=8`
- `remap-subroutine=1`
- `remap-subroutine` 过滤当前只命中:
- `linuxcnc/configs/sim/axis/vismach/puma/remap_subs/428remap.ngc`
- UI shell smoke 覆盖:
- 默认 `all` filter
- `remap-subroutine` filter
- family row 过滤结果;
- workflow overview API surface。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- source filter 只过滤已有 source-derived promotion family evidence
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 将 promotion family source filter 接入真实 browser workflow overview smoke确认浏览器
DOM/控制入口可以切换 `ini`、`gcode`、`remap-subroutine`。
2. 给 filter view-model 增加 family selector让用户可同时按 family 与 source kind 缩小
evidence。
3. 把 hash 工具接入 release readiness / SDK smoke使 generated TSV drift 能在常规 gate
中自动暴露。
### 二十一、2026-06-18 Promotion Family Source Family Filter
继续减少测试并快速推进功能。本批在 source kind filter 基础上增加 family selector
ini-panel workflow overview 可以同时按 promotion family 与 source kind 缩小 evidence。
新增实质能力:
- 新增 family filter helper
- `normalizePromotionFamilyFilter()`
- `createIniPanelShellWorkflowOverviewPromotionFamilySourceFilterViewModel()` 新增参数:
- `familyId`
- `sourceKind`
- filter view-model 新增输出:
- `selectedFamilyId`
- `familyFilters`
- `scopedSourceFileCount`
- 当前 family filter totals
- `all=17`
- `virtual-hal-promotion-family-qtdragon-on-abort=12`
- `virtual-hal-promotion-family-vismach-remap-sims=3`
- `virtual-hal-promotion-family-rose-engine-rcone-demo=2`
- 当前组合过滤示例:
- `familyId=virtual-hal-promotion-family-qtdragon-on-abort`
- `sourceKind=gcode`
- 结果为 `6/17 source files selected`
- scoped family source count 为 `12`
- family row summary 为 `gcode=6`
- UI shell smoke 覆盖:
- family filter 列表;
- QtDragon + G-code 组合过滤;
- scoped count
- filtered source rows 均属于所选 family 和 source kind。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- family filter 只过滤已有 source-derived promotion family evidence
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 将 family + source kind filter 接入真实 browser workflow overview smoke确认 DOM 控件或
dataset 能驱动组合过滤。
2. 增加 source filter render/mount DOM surface让过滤结果不只停留在 view-model。
3. 把 hash 工具接入 release readiness / SDK smoke使 generated TSV drift 能在常规 gate
中自动暴露。
### 二十二、2026-06-18 Promotion Family Source Filter DOM Surface
继续减少测试并快速推进功能。本批把 family + source kind filter 从 view-model 推进到可
挂载 DOM surface让 ini-panel workflow overview 可以直接渲染过滤器与过滤后的 source
evidence。
新增实质能力:
- 新增 source filter DOM contract
- `createIniPanelShellWorkflowOverviewPromotionFamilySourceFilterDomContract()`
- 新增 DOM readiness
- `createIniPanelShellWorkflowOverviewPromotionFamilySourceFilterDomReadiness()`
- 新增 DOM render/mount
- `renderIniPanelShellWorkflowOverviewPromotionFamilySourceFilterState()`
- `mountIniPanelShellWorkflowOverviewPromotionFamilySourceFilterState()`
- shell workflow overview contract 新增:
- `getWorkflowOverviewPromotionFamilySourceFilterDomContract`
- `getWorkflowOverviewPromotionFamilySourceFilterDomReadiness`
- `renderWorkflowOverviewPromotionFamilySourceFilterState`
- `mountWorkflowOverviewPromotionFamilySourceFilterState`
- SDK 入口导出新增 4 个 source filter DOM API
- DOM mount dataset 新增:
- `handoffScope=workflow-overview-promotion-family-source-filter`
- `selectedFamilyId`
- `selectedSourceKind`
- DOM rows 覆盖:
- family filter rows
- source-kind filter rows
- filtered source rows
- 当前 QtDragon + `gcode` 组合过滤 DOM 输出:
- `filterRowCount=7`
- `sourceFileCount=6`
- `rowCount=13`
- selected family 为 `virtual-hal-promotion-family-qtdragon-on-abort`
- selected source kind 为 `gcode`。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh ok
SDK export smoke ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- source filter DOM 只渲染已有 source-derived promotion family evidence
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 将 source filter DOM surface 接入真实 browser workflow overview smoke确认浏览器 DOM
能渲染 selected family/source kind 和 filtered source rows。
2. 给 source filter DOM 增加用户可操作的 selector 控件,而不只是渲染当前 view-model。
3. 把 hash 工具接入 release readiness / SDK smoke使 generated TSV drift 能在常规 gate
中自动暴露。
### 二十三、2026-06-18 Promotion Family Source Filter Selector Controls
继续减少测试并快速推进功能。本批把 source filter DOM surface 从“只渲染过滤结果”
推进到“同时渲染 selector 控件”,为后续 browser workflow overview 交互接入提供直接
DOM contract。
新增实质能力:
- source filter DOM contract 新增 controls 节点:
- selector`[data-workflow-overview-promotion-family-source-filter-controls]`
- required node`controls`
- DOM readiness 新增 `controlsNode` 检查;
- DOM render/mount 新增 `controlsNode` 参数;
- source filter DOM render 新增两个 selector controls
- family selector
- source-kind selector
- selector controls dataset 新增:
- `workflowOverviewPromotionFamilySourceFilterControl`
- `workflowOverviewPromotionFamilySourceFilterControlValue`
- `workflowOverviewPromotionFamilySourceFilterSelect`
- `workflowOverviewPromotionFamilySourceFilterOption`
- `workflowOverviewPromotionFamilySourceFilterCount`
- `workflowOverviewPromotionFamilySourceFilterSelected`
- render result 新增:
- `controlCount=2`
- 当前 QtDragon + `gcode` 组合 selector 输出:
- family control value 为 `virtual-hal-promotion-family-qtdragon-on-abort`
- source-kind select value 为 `gcode`
- selected `gcode` option count 为 `6`
- rows 仍为 `filterRowCount=7`、`sourceFileCount=6`、`rowCount=13`。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- selector controls 只承载已有 source-derived promotion family evidence 的过滤状态;
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 给 source filter selector controls 增加 change handler/action-plan让控件选择能生成新的
filtered view-model。
2. 将 source filter selector controls 接入真实 browser workflow overview smoke确认真实 DOM
中可见 family/source-kind selector 与 filtered rows。
3. 把 hash 工具接入 release readiness / SDK smoke使 generated TSV drift 能在常规 gate
中自动暴露。
### 二十四、2026-06-18 Promotion Family Source Filter Selection Workflow
继续减少测试并快速推进功能。本批把 source filter selector controls 从“可显示选择状态”
推进到“可读取控件选择并生成新的 filtered view-model”为后续真实 browser 交互接入
补齐 workflow 层。
新增实质能力:
- 新增 selector action-plan
- `createIniPanelShellWorkflowOverviewPromotionFamilySourceFilterSelectionActionPlan()`
- 新增 selector change workflow
- `handleIniPanelShellWorkflowOverviewPromotionFamilySourceFilterSelectionChange()`
- shell workflow overview contract 新增:
- `getWorkflowOverviewPromotionFamilySourceFilterSelectionActionPlan`
- `handleWorkflowOverviewPromotionFamilySourceFilterSelectionChange`
- shell view-model 新增:
- `createWorkflowOverviewPromotionFamilySourceFilterSelectionActionPlan`
- `handleWorkflowOverviewPromotionFamilySourceFilterSelectionChange`
- SDK 入口导出新增 2 个 selector workflow API
- selection change workflow 能从 controls DOM 读取:
- family select value
- source-kind select value
- selection change workflow 输出:
- `actionPlan`
- 新 `viewModel`
- 可选 `renderResult`
- 当前 smoke 路径:
- 原状态:`virtual-hal-promotion-family-qtdragon-on-abort` + `gcode`
- 新选择:`virtual-hal-promotion-family-rose-engine-rcone-demo` + `all`
- 新结果:`2/17 source files selected`
- scoped family source count 为 `2`
- DOM re-render 后包含 `linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc`。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh ok
SDK export smoke ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- selector workflow 只读取/重渲染已有 source-derived promotion family evidence
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 将 selector change workflow 接入真实 browser workflow overview smoke确认真实 DOM
change 后能重渲染 filtered rows。
2. 给 selector controls 增加 browser event binding helper封装 `change` 事件与 action-plan
workflow。
3. 把 hash 工具接入 release readiness / SDK smoke使 generated TSV drift 能在常规 gate
中自动暴露。
### 二十五、2026-06-18 Promotion Family Source Filter Event Binding
继续减少测试并快速推进功能。本批把 selector change workflow 推进到可复用 browser event
binding helper让 source filter controls 的 `change` 事件可以直接触发 action-plan workflow
并重渲染 filtered rows。
新增实质能力:
- 新增 event binding helper
- `bindIniPanelShellWorkflowOverviewPromotionFamilySourceFilterSelectionControls()`
- shell workflow overview contract 新增:
- `bindWorkflowOverviewPromotionFamilySourceFilterSelectionControls`
- shell view-model 新增:
- `bindWorkflowOverviewPromotionFamilySourceFilterSelectionControls`
- SDK 入口导出新增 binding helper
- binding helper 输出:
- `boundControlCount`
- `controlIds`
- `lastChange`
- `triggerChange()`
- `unbind()`
- 当前 smoke 路径:
- 绑定 family 与 source-kind 两个 select
- 将 family select 改为 `virtual-hal-promotion-family-rose-engine-rcone-demo`
- 将 source-kind select 改为 `all`
- 触发 `change`
- DOM re-render 后 source row count 为 `2`
- `lastChange.selectedSourceKind=all`
- `unbind()` 返回 `{ unbound: 2 }`。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh ok
SDK export smoke ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- event binding 只绑定 UI controls 到已有 source-derived promotion family evidence
filter workflow
- 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、tool DB process
protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked
- G-code/interpreter/planner/canonical motion 语义仍来自 LinuxCNC-backed WASM。
下一步工作建议:
1. 将 source filter event binding 接入真实 browser workflow overview smoke确认真实 DOM
change 后能重渲染 filtered rows。
2. 把 source filter controls 放进实际 workflow overview 页面结构,而不只是在 helper 层验证。
3. 把 hash 工具接入 release readiness / SDK smoke使 generated TSV drift 能在常规 gate
中自动暴露。
### 二十六、2026-06-18 真实仿真页 Promotion Candidate 可见证据
继续按“减少测试、快速大幅度推进功能实现”推进。本批把 sim config promotion
candidate report 从 SDK / release artifact 层推进到真实 browser simulation 页面,让操作员可在
AXIS-style diagnostics 区直接看到 candidate evidence 摘要。
新增实质能力:
- 真实仿真页 diagnostics 区新增 promotion candidate summary panel
- 新增 browser summary API
- `getVirtualHalPromotionCandidateSummary()`
- `exportDiagnosticsArtifact()` 新增:
- `virtualHalPromotionCandidateSummary`
- summary 明确暴露:
- 首选推进案例:`qtdragon-multi-joint-on-abort`
- 首选 INI`linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini`
- 首选 G-code`linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc`
- candidate ready count`8/8`
- family count`3`
- source file count`17`
- browser diagnostics evidence`8/8 explicit`
- inventory baseline`executed=28 passed=28 skipped=131 unexpected_fail=0`
- 页面 body dataset 新增:
- `promotionCandidateReady`
- `promotionCandidateCount`
- `promotionCandidatePreferred`
- 真实 browser smoke 新增 DOM/API/artifact 断言,确认 candidate summary 可见且首选
QtDragon multi-joint 案例已进入 browser evidence
- SDK smoke 期望同步接受 promotion family rows 携带 `sourceFiles`,保留更强的 source
evidence。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tests/sdk/node/verify_sdk_surface.sh ok
SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- candidate summary 只汇总已有 LinuxCNC source-derived virtual HAL report
- virtual HAL 仍只作为 Web 仿真替代层,不提供 Linux kernel hard-realtime ABI、外部硬件
驱动 ABI、native HAL module ABI、Python UI process emulation、Python remap runtime、
tool DB process protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked。
下一步工作建议:
1. 把 promotion candidate summary 接入 release artifact URL workflow 页面展示,让外部 URL
验证也能直接看到首选 candidate、source files 和 baseline。
2. 在真实 workflow overview browser smoke 中验证 source filter event binding 的 DOM
change 交互,闭合 helper 到页面的链路。
3. 将 `qtdragon-multi-joint-on-abort` 扩展为可点击的 diagnostics drilldown显示 INI、
G-code、required virtual HAL reports 和 blocked-family exclusion 明细。
### 二十七、2026-06-18 Release URL Workflow Candidate Summary
继续按“减少测试、快速大幅度推进功能实现”推进。本批把上一轮真实仿真页导出的
`virtualHalPromotionCandidateSummary` 接入 release artifact URL workflow让外部 URL
验证和 INI-panel workflow overview 都能直接显示首选 promotion candidate 证据。
新增实质能力:
- `loadProjectReleaseReadinessArtifactUrlWorkflow()` 现在保留 fetched diagnostics artifact
- 新字段:`diagnosticsArtifact`
- 来源为 diagnostics URL 返回的
`real-browser-simulation-diagnostics-artifact`
- `createProjectReleaseReadinessArtifactUrlWorkflowSummaryViewModel()` 新增 rows
- `virtual-hal-promotion-candidate-summary`
- `virtual-hal-promotion-candidate`
- `virtual-hal-promotion-candidate-ini`
- `virtual-hal-promotion-candidate-gcode`
- `virtual-hal-promotion-candidate-count`
- `virtual-hal-promotion-candidate-baseline`
- `loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl()` 同步透传:
- `diagnosticsArtifact`
- `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowSummaryViewModel()`
同步显示 candidate summary rows
- release URL workflow 现在可以直接展示:
- 首选推进案例:`qtdragon-multi-joint-on-abort`
- INI`linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini`
- G-code`linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc`
- candidate readiness`8/8 ready`
- baseline`executed=28 passed=28 skipped=131 unexpected_fail=0`
- SDK URL workflow smoke 和 INI-panel UI shell smoke 同步验证这些 rows。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tests/sdk/node/verify_project_release_artifact_url_workflow.sh ok
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- URL workflow 只透传并展示 diagnostics artifact 中已有 source-derived candidate
summary
- virtual HAL 仍只作为 Web 仿真替代层,不提供 Linux kernel hard-realtime ABI、外部硬件
驱动 ABI、native HAL module ABI、Python UI process emulation、Python remap runtime、
tool DB process protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked。
下一步工作建议:
1. 在真实 workflow overview browser smoke 中验证 release URL workflow 页面能渲染新增
candidate summary rows。
2. 将 `qtdragon-multi-joint-on-abort` 做成 drilldown view展示 INI、G-code、
required virtual HAL reports、source files 和 blocked-family exclusion。
3. 把 source filter event binding 接入真实 browser workflow overview smoke确认真实 DOM
change 后能重渲染 filtered source rows。
### 二十八、2026-06-18 Workflow Overview Browser Candidate Summary
继续按“减少测试、快速大幅度推进功能实现”推进。本批把 release artifact URL workflow
中的 promotion candidate summary 推进到真实 workflow overview browser smoke确认真实
页面 DOM 能渲染并展示首选 candidate 证据。
新增实质能力:
- `ini_panel_workflow_overview_smoke.html` 的 diagnostics artifact fixture 新增:
- `virtualHalPromotionCandidateSummary`
- 真实 workflow overview browser 路径现在验证:
- diagnostics artifact 中 candidate summary ready
- URL workflow render rows 包含 `virtual-hal-promotion-candidate-summary`
- summary view-model 暴露首选 candidate
- 真实 DOM 中可读取:
- `virtual-hal-promotion-candidate`
- `virtual-hal-promotion-candidate-count`
- 真实页面可见证据保持:
- 首选推进案例:`qtdragon-multi-joint-on-abort`
- INI`linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/qtdragon_xyyz.ini`
- G-code`linuxcnc/configs/sim/qtdragon/qtdragon_multi_joint/on_abort.ngc`
- candidate readiness`8/8 ready`
- baseline`executed=28 passed=28 skipped=131 unexpected_fail=0`。
本批减少测试,只执行贴近改动的验证:
```text
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh ok
git diff --check ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- 真实 browser smoke 只验证已有 source-derived candidate summary 被 URL workflow 页面
渲染;
- virtual HAL 仍只作为 Web 仿真替代层,不提供 Linux kernel hard-realtime ABI、外部硬件
驱动 ABI、native HAL module ABI、Python UI process emulation、Python remap runtime、
tool DB process protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked。
下一步工作建议:
1. 将 `qtdragon-multi-joint-on-abort` 做成 drilldown view展示 INI、G-code、
required virtual HAL reports、source files 和 blocked-family exclusion。
2. 把 source filter event binding 接入真实 browser workflow overview smoke确认真实 DOM
change 后能重渲染 filtered source rows。
3. 给 release URL workflow 增加 candidate summary 缺失的 negative fixture防止后续
diagnostics artifact 回退时仍被误判 ready。
### 二十九、2026-06-18 Workflow Overview Source Filter 真实交互
继续按“减少测试、快速大幅度推进功能实现”推进。本批把已存在的 promotion family
source filter helper 接入真实 workflow overview 页面,而不只停留在 UI helper / Node
smoke 层。
新增实质能力:
- `workflow-overview.html` 新增真实 Promotion family source filter 面板:
- `data-workflow-overview-promotion-family-source-filter`
- `data-workflow-overview-promotion-family-source-filter-controls`
- `data-workflow-overview-promotion-family-source-filter-rows`
- release artifact URL workflow 成功后自动生成:
- promotion family rows render state
- source filter view-model
- source filter DOM mount result
- source filter select change binding
- 页面 API 新增真实 source filter helper 暴露:
- `getWorkflowOverviewPromotionFamilyRowsRenderState()`
- `getWorkflowOverviewPromotionFamilySourceFilterViewModel()`
- `getWorkflowOverviewPromotionFamilySourceFilterDomContract()`
- `getWorkflowOverviewPromotionFamilySourceFilterDomReadiness()`
- `getWorkflowOverviewPromotionFamilySourceFilterSelectionActionPlan()`
- `handleWorkflowOverviewPromotionFamilySourceFilterSelectionChange()`
- `bindWorkflowOverviewPromotionFamilySourceFilterSelectionControls()`
- `renderWorkflowOverviewPromotionFamilySourceFilterState()`
- `mountWorkflowOverviewPromotionFamilySourceFilterState()`
- 真实 browser smoke 现在验证:
- 默认 source filter 为 `all / all`,展示 `17` 个 source file
- 两个 select 控件已绑定;
- 将 family select 改为
`virtual-hal-promotion-family-rose-engine-rcone-demo` 后,真实 DOM 重渲染为该 family
的 2 个 source file
- body dataset 同步记录 selected family 和 filtered source count
- 可从真实 DOM 读取
`linuxcnc/configs/sim/axis/rose_engine/rcone_demo.ngc` source row。
本批减少测试,只执行贴近改动的验证:
```text
git diff --check ok
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh ok
```
语义边界:
- 本批没有降低 inventory skip count
- 当前 baseline 仍是 `executed=28`、`passed=28`、`skipped=131`、
`unexpectedFail=0`
- 本批没有新增 G-code/interpreter/planner/kinematics/remap 语义;
- source filter 只筛选 release diagnostics 中已有的 source-derived promotion family
evidence
- virtual HAL 仍只作为 Web 仿真替代层,不提供 Linux kernel hard-realtime ABI、外部硬件
驱动 ABI、native HAL module ABI、Python UI process emulation、Python remap runtime、
tool DB process protocol 或 external user-M process execution
- `L4-PYTHON-REMAP`、`L4-TOOL-DB`、`L4-USER-M-PROCESS`、`UPSTREAM-DEMO` 仍保持
locked。
下一步工作建议:
1. 给 release URL workflow 增加 candidate summary 缺失的 negative fixture防止后续
diagnostics artifact 回退时仍被误判 ready。
2. 把 source filter 当前选中状态持久化到 URL hash 或 session state让刷新页面后仍保留
family/source-kind 筛选。
3. 将 source filter 与 candidate drilldown 联动:点击 source row 时自动切换
`qtdragon-multi-joint-on-abort`、PUMA 或 rose-engine 对应 drilldown。
### 三十、2026-06-18 virtual HAL 实质功能收尾
按“尽快结束 virtual HAL 相关实质性功能”的要求,本批不再扩展新的 virtual HAL UI 或
runtime 能力,只补最后一个 release diagnostics 防回退 gate然后将 virtual HAL 工作从
“功能推进”转为“维护冻结”。
新增收尾能力:
- release browser diagnostics validation 现在强制要求
`virtualHalPromotionCandidateSummary`
- summary 必须完整匹配当前 source-derived promotion evidence
- `apiName=real-browser-simulation-promotion-candidate-summary`
- `ready=true`
- `candidateCount=8`
- `readyCandidateCount=8`
- `familyCount=3`
- `sourceFileCount=17`
- `preferredCandidateId=qtdragon-multi-joint-on-abort`
- `explicitBrowserDiagnosticsCount=8`
- inventory baseline 仍为
`executed=28 passed=28 skipped=131 unexpected_fail=0`
- release URL workflow negative fixture 已覆盖缺失
`virtualHalPromotionCandidateSummary` 的情况;
- SDK surface negative fixture 已覆盖 summary 缺失和 ready count 回退;
- release gate manifest URL workflow summary 期望已同步新 rows。
本批减少测试,只执行贴近改动的验证:
```text
wasm-port/tests/sdk/node/verify_project_release_artifact_url_workflow.sh ok
wasm-port/tests/sdk/node/verify_sdk_surface.sh ok
git diff --check ok
```
virtual HAL 结论:
- virtual HAL 的实质功能推进到此结束;
- 后续不再建议继续增加 virtual HAL runtime/UI 功能;
- virtual HAL 后续只做 bugfix、fixture drift 修复、release gate 回归维护;
- 后续主线应转向非 virtual HAL 任务,例如真实 LinuxCNC-backed interpreter / simulation
workflows、release packaging、业务 UI、文档交付或其他项目目标。
后续工作建议:
1. 暂停 virtual HAL 新功能,只保留现有 smoke/gate 维护。
2. 选择下一个非 virtual HAL 主线任务,优先做能直接提升产品完成度的功能。
3. 如必须碰 virtual HAL只处理 failing gate 或 source manifest drift不再扩展能力边界。