项目接续文件: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 drilldown:ini-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,不再扩展能力边界。