Files
cnc_wams/text14.txt

3671 lines
154 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.
项目整体完成情况与后续执行计划
生成时间2026-06-15 CST
本文件接替 `text13.txt`。后续工作按 `text14.txt` 执行;除非明确要求审计旧记录,
不要再回到 `text1/text2/text3/text4/text5/text6/text7/text8/text9/text10/text11/text12/text13`
扩展进度。`text13.txt` 作为历史归档保留。
一、第一原则:继续加快实质性推进
后续批次仍必须以“实质性能力优先”为第一遵守原则。
1. 优先级从高到低:
- OPFS/session persistence
- SDK/API surface
- browser/UI workflow
- sim config coverage promotion
- host/runtime boundary proof
- 文档化可执行工作流。
2. 每批默认应产出至少一种可直接复用的能力:
- 可调用 helper
- 可复用 API
- 可验证用户流程;
- 可执行 gate
- 可提升覆盖面的 runtime boundary proof
- 能直接指导下一步实现的设计/清单。
3. 暂停低收益推进:
- 不再把“局部常量化、路径变量收敛、断言分组整理”作为主目标;
- 只有当它支撑可复用 workflow/API/gate 时,才允许做测试胶水;
- 禁止为了推进而扩大 CNC 语义边界;
- 禁止启动性能测试,除非已有明确用户流程需要性能基线。
4. LinuxCNC 仍是唯一 CNC 语义来源:
- G-code、remap、tool、parameter、planner、kinematics、user-M、tool DB、Python remap
等语义必须来自 LinuxCNC upstream 或 vendored LinuxCNC C/C++/配置/脚本源码;
- JS/browser 只允许做 build、source sync、runtime shim、filesystem staging、OPFS、
WASM/browser boundary、测试胶水、文档和机器可读 gate/artifact
- 不在 JS 中重写 G-code 或 CNC 语义;
- 不修改 vendored LinuxCNC 源文件来让测试通过;
- 不把 full-process/HAL/UI/Python/tool DB 依赖伪装成 standalone pass
- 不把 expected failure 硬改成 pass除非已有 LinuxCNC-owned runtime proof并且
native、Node、browser gate 都按顺序通过;
- browser 不能依赖目录枚举。
二、续接状态与防重规则
1. 当前续接点。
`text13.txt` 已推进到:
```text
十九、2026-06-15 继续执行记录INI panel workflow overview embedding mount render-state
```
本文件从 `text14.txt` 重新开始记录后续进度。
2. 每轮开始前必须先执行:
```bash
git status --short
git log -5 --oneline
tail -n 120 text14.txt
awk '/^[一二三四五六七八九十百]+、/ {print}' text14.txt | sort | uniq -d
```
执行规则:
- 如果 `git status --short` 是 clean且最新提交已经包含当前建议工作不要重复追加记录
- 每轮只追加一个新的中文编号记录;
- 提交前再次检查标题唯一性;
- `text14.txt` 只记录新的后续进度,不复制 `text13.txt` 的长历史;
- 每批完成后,如果要写记录,先写 `text14.txt`,再提交该批代码和记录;
- 如果发现重复记录,先做 dedupe 清理并提交,再继续新功能或新 guard
- `text13.txt` 不再追加新进度,除非明确要求审计或修正历史记录。
三、当前完成情况摘要
1. 当前工作树状态。
切换到 `text14.txt` 时工作树为 clean。
2. 最近提交:
```text
1a863fa 推进 INI 面板 workflow overview embedding mount render state
fc9e6a3 推进 INI 面板 workflow overview embedding mount display
83df80d 推进 INI 面板 workflow overview embedding mount result
75f71c2 推进 INI 面板 workflow overview embedding DOM renderer
6856721 推进 INI 面板 workflow overview embedding DOM readiness
3cfd4b3 推进 INI 面板 workflow overview embedding DOM contract
f70fc09 推进 INI 面板 workflow overview embedding render-state
4fdbadd 推进 INI 面板 workflow overview embedding display view-model
```
3. 关键基线保持稳定。
- `linuxcnc/nc_files` native Layer 1
- `total 107`
- `pass 101`
- `expected_fail 6`
- `unexpected_fail 0`
- `linuxcnc/configs/sim` native Layer 2
- `total 159`
- `pass 151`
- `expected_fail 8`
- `unexpected_fail 0`
- Node sim-config inventory
- `executed=28`
- `passed=28`
- `skipped=131`
- `unexpected_fail=0`
4. blocked runtime family 仍未 promotion。
仍 blocked不允许 promotion
- `L4-USER-M-PROCESS`
- `L4-TOOL-DB`
- `L4-PYTHON-REMAP`
当前 host 仍按缺少 LinuxCNC host runtime 处理,不执行任何:
```bash
ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_millturn_user_m_runtime.sh
ENABLE_TOOL_DB_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_tool_db_runtime.sh
ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_python_remap_runtime.sh
```
四、当前实质能力进展
1. INI panel/UI helper 能力。
当前 UI helper 已覆盖:
- run summary
- run workflow
- session snapshot summary
- session load summary
- machine file save/load summary
- panel state summary
- session snapshot save/restore workflow
- entry manifest、launcher link view-model、shell view-model
- read-only control-page controller
- read-only control-page refresh workflow
- read-only control-page session readiness workflow
- shell integration readiness、workflow plan、session handoff summary
- shell session handoff summary schema、compatibility report、display view-model、snapshot
- shell handoff package、package report、package display/render state
- shell handoff package mount state、mount display/render state
- shell handoff mount DOM contract、DOM readiness、renderer、mount workflow
- shell handoff workflow summary、display/render state、DOM contract/readiness、renderer、mount workflow
- workflow overview surface
- workflow overview embedding report、display view-model、render-state
- workflow overview embedding DOM contract、DOM readiness、renderer
- workflow overview embedding mount workflow result、mount display view-model、mount render-state。
当前聚合验证入口:
```bash
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
```
2. Browser/UI workflow 验证。
当前 browser INI panel smoke 覆盖真实 OPFS/session persistence workflow、control page、
workflow overview surface 与外部 shell workflow
```bash
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
```
关键输出:
```text
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
```
五、当前必须保持通过的验证入口
每批后续改动至少运行:
```bash
git diff --check
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
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
wasm-port/tests/host/verify_host_smokes.sh
```
如果涉及 browser interpreter smoke再运行
```bash
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
```
涉及 native baseline 或大范围 source/staging 改动时,再运行:
```bash
wasm-port/tests/native/verify_nc_files.sh
wasm-port/tests/native/verify_sim_configs.sh
```
六、下一步建议
继续推进 browser/UI workflow。下一批建议新增只读
`createIniPanelShellWorkflowOverviewEmbeddingMountDomContract()` 或等价 helper为 mount render-state
定义 mount/status/rows selectors、dataset keys 与 render-result fields给后续 DOM readiness 和 renderer
提供稳定契约;仍保持只读,不新增控制按钮,不解析 G-code。
七、快速推进完成整个项目的详细工作内容和实现步骤
本节是后续按 `text14.txt` 执行的总路线图。目标不是继续堆叠零散 helper而是把当前
LinuxCNC WASM/browser port 推到“可交付、可验证、可接续维护”的完整状态。
总体完成定义:
- CNC 语义边界清晰所有解释器、G-code、tool、parameter、planner、kinematics、remap
语义仍来自 LinuxCNC upstream 或 vendored LinuxCNC C/C++/配置/脚本源码;
- Browser 可用INI panel、control page、workflow overview、外部 shell handoff、OPFS/session
persistence 都有真实 browser smoke
- SDK 可用:外部调用方能通过稳定 API 完成加载配置、保存/恢复 session、读取只读状态、
获取 workflow report/render-state、执行只读 mount
- Coverage 可解释sim config inventory、promotion/skip 原因、blocked runtime family 都有
机器可读输出和文档说明;
- Gate 可复现Node、browser、host 聚合 smoke 和 source/vendor guard 稳定通过;
- 文档可执行:新接手者只看 `text14.txt`、`README.md`、`docs/panel-entry.md`、coverage
docs 即可继续工作。
推进顺序必须按以下批次执行;每批完成后追加一个新的中文编号记录到 `text14.txt` 并提交。
1. Browser/UI workflow 收口批次。
目标:完成 workflow overview embedding mount render-state 的 DOM contract/readiness/renderer/mount
闭环,让外部 shell 无需手写 DOM 细节即可显示完整 embedding mount 结果。
实现步骤:
- 新增 `createIniPanelShellWorkflowOverviewEmbeddingMountDomContract()`
- 定义默认 selectors
- `[data-workflow-overview-embedding-mount]`
- `[data-workflow-overview-embedding-mount-status]`
- `[data-workflow-overview-embedding-mount-rows]`
- 定义 `mountDatasetKeys`
- `handoffPhase`
- `handoffReady`
- `handoffScope`
- 定义 row dataset prefix默认 `workflowOverviewEmbeddingMount`
- 定义 `renderResultFields`
- `rendered`
- `statusLine`
- `rowCount`
- `rowIds`
- `dataset`
- 新增 `createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness()`
- 检查 document、mount、status、rows、rowDatasetPrefix
- 返回 `apiName`、`readinessVersion`、`phase`、`ready`、`missing`、`checks`、`contract`
- 新增 `renderIniPanelShellWorkflowOverviewEmbeddingMountState()`
- 输入 mount render-state 与 DOM contract
- 写入 mount dataset
- 写入 status text
- 渲染 `dt/dd` rows
- 返回结构化 render result
- 新增 `mountIniPanelShellWorkflowOverviewEmbeddingMountState()`
- DOM 不 ready 时返回 blocked result
- render 异常时捕获到 `error` 字段;
- 成功时返回 `workflowVersion`、`phase`、`ready`、`statusLine`、`domReadiness`、
`renderState`、`renderResult`、`error`
- 在 `createIniPanelLaunchApiManifest().methods`、`createIniPanelShellViewModel()`、
`launch.html`、`workflow-overview.html` 暴露上述 API
- 更新:
- `verify_ini_panel_ui_shell.mjs`
- `verify_ini_panel_launch_api_manifest.mjs`
- `verify_ini_panel_shell_integration_manifest.mjs`
- `verify_ini_panel_entry_docs.mjs`
- `ini_panel_workflow_overview_smoke.html`
- `ini_panel_shell_integration_workflow_smoke.html`
- `ini_panel_launch_smoke.html`
- `docs/panel-entry.md`。
完成判定:
- 外部 shell 使用自定义 DOM contract 能拿到 ready DOM readiness
- mount render-state 能被真实 browser DOM renderer 渲染;
- mount workflow result 不抛异常,错误通过结构化 `error` 返回;
- `verify_ui_node_smokes.sh` 与 `verify_ini_panel_browser.sh` 通过。
2. SDK/API surface 收口批次。
目标:把当前分散的 UI helper/API 能力整理成外部调用方可稳定消费的 SDK surface。
实现步骤:
- 检查 `runtime/sdk/src/index.js`、`runtime/sdk/src/linuxcnc-ini.js`、
`runtime/sdk/src/linuxcnc-interp.js`、`runtime/sdk/src/sim-config-staging.js`
- 为浏览器 UI workflow 新增或整理 SDK export
- entry manifest helper
- launch API manifest/schema helper
- shell integration manifest/readiness/workflow plan
- session handoff summary/package/workflow helper
- workflow overview embedding report/display/render/mount helper
- OPFS file/session bridge helper
- 保持 SDK 只做 API 聚合、staging、OPFS/session、WASM/browser boundary不加入 CNC 语义;
- 增加 Node SDK smoke
- 验证 export 名称;
- 验证 manifest schema
- 验证 helper 返回稳定 shape
- 验证不依赖 browser 目录枚举;
- 更新 `runtime/sdk/README.md`
- 最小 browser 调用示例;
- Node smoke 命令;
- 不支持项和 blocked family 说明。
完成判定:
- SDK exports 与 UI/browser manifest 一致;
- Node SDK smoke 纳入 `verify_host_smokes.sh` 或明确纳入 UI node 聚合;
- `runtime/sdk/README.md` 可直接指导外部调用方使用。
3. OPFS/session persistence 收口批次。
目标:把 OPFS 文件、session snapshot、control page readonly status、workflow handoff 的真实
browser 使用路径收口为可复用 workflow。
实现步骤:
- 审查 `runtime/opfs/`
- `file-service.js`
- `machine-file-store.js`
- `snapshot-store.js`
- `linuxcnc-machine-session-bridge.js`
- tool/parameter bridge
- 为 UI workflow 增加一个只读 summary/report
- OPFS capability
- session snapshot availability
- loaded machine/session ids
- last save/load status
- readonly control status availability
- Browser smoke 增加一条端到端路径:
- 保存 machine file
- 保存 session snapshot
- reload/load session
- control page 读取 readonly status
- shell workflow 读取 handoff summary
- 不新增控制按钮,不模拟 LinuxCNC runtime不解析 G-code。
完成判定:
- `browser_ini_opfs_smoke=ok` 仍通过;
- 新增 OPFS/session workflow summary 的 Node 与 browser smoke
- 文档说明 browser OPFS 权限、scope、失败原因。
4. Sim config coverage promotion 批次。
目标:把当前 skipped sim configs 转为“有证据的 skip/promotion 矩阵”,能快速推进可 promotion
类别,同时明确 blocked 类别。
实现步骤:
- 读取并更新:
- `docs/sim-configs-coverage-matrix.md`
- `docs/sim-configs-completion-plan.md`
- `docs/compatibility-validation.md`
- `tests/wasm/node/verify_sim_configs_inventory_wasm.mjs`
- 将 skipped configs 按原因分组:
- `ASSET_ONLY`
- `L4_PYTHON_REMAP`
- `L4_TOOL_DB`
- `L4_USER_M_PROCESS`
- `NON_MAIN_CLASS`
- `UPSTREAM_DEMO`
- 对可 promotion 类别只做 LinuxCNC-owned boundary proof
- 先 native probe
- 再 Node/WASM inventory
- 最后 browser/host gate
- 不把 full-process/HAL/UI/Python/tool DB 依赖硬改成 pass
- 对仍 blocked 类别补齐机器可读 skip reason 与文档说明。
完成判定:
- `sim_configs_wasm_node_inventory_unexpected_fail=0`
- 每个 skip family 都有文档解释;
- 可 promotion 项有 native/Node/browser 顺序证据;
- blocked runtime family 不被误 promotion。
5. Host/runtime boundary proof 批次。
目标:把 host/runtime 能力边界从“能跑 smoke”提升为“能说明为什么 pass/skip/blocked”。
实现步骤:
- 审查 native probes
- `probe_millturn_user_m_runtime.sh`
- `probe_tool_db_runtime.sh`
- `probe_python_remap_runtime.sh`
- `verify_native_probes.sh`
- 在没有 LinuxCNC host runtime 的环境下保持 blocked不执行 ENABLE probe
- 如果环境提供真实 LinuxCNC host runtime
- 先单独执行 ENABLE probe
- 记录真实输出;
- 再决定是否 promotion
- 同步 Node/browser/host gate
- 增加或整理 boundary report
- runtime family
- native proof available
- wasm/browser support
- promotion status
- blocking reason。
完成判定:
- `verify_host_smokes.sh` 输出稳定;
- blocked family 有明确边界 report
- 没有把缺 runtime 的情况伪装成 pass。
6. Browser UX 最小完成批次。
目标:让当前 UI 不只是测试可用,也具备外部 shell 可嵌入、可诊断、可解释的最小完成度。
实现步骤:
- 保持现有页面结构:
- `launch.html`
- `index.html`
- `control-page.html`
- `workflow-overview.html`
- 不新增控制按钮;
- 不做营销 landing page
- 增加或收口只读显示:
- launch API manifest/status
- workflow overview embedding mount result
- OPFS/session summary
- blocked reasons
- 保证每个 browser namespace 都有:
- schema/manifest
- readiness
- display view-model
- render-state
- DOM contract/readiness
- renderer 或 mount workflow
- Playwright/browser smoke 验证真实 DOM 不缺节点、status text 与 rows 正确。
完成判定:
- `browser_ini_launch_smoke=ok`
- `browser_ini_workflow_overview_smoke=ok`
- `browser_ini_shell_integration_workflow_smoke=ok`
- 页面 API 与 docs 完全一致。
7. Documentation/release gate 批次。
目标:把项目收口为可交付状态,避免后续只能从聊天记录恢复上下文。
实现步骤:
- 更新 `README.md`
- 项目目标;
- 当前可用能力;
- 快速验证命令;
- 当前不支持/blocked 项;
- 更新 `docs/panel-entry.md`
- browser entry
- API namespace
- shell handoff/workflow overview
- embedding/mount render path
- 更新 `docs/source-reuse-map.md`
- LinuxCNC-owned semantic source
- JS/browser boundary
- 更新 `docs/drift-report.md`
- upstream sync 状态;
- local wrapper/shim 状态;
- 新增或更新最终 checklist
- source/vendor guard
- standalone CNC semantics guard
- Node smoke
- browser smoke
- host smoke
- native baseline 如适用。
完成判定:
- 新开发者可以只按 README/docs/text14 执行;
- 没有必须依赖旧 `text1` 到 `text13` 的隐性步骤;
- 所有命令可复制执行。
8. 最终验收批次。
目标:确认整个项目达到当前 scope 的完成状态。
最终验收命令:
```bash
git diff --check
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
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
wasm-port/tests/host/verify_host_smokes.sh
```
如涉及 native/source/staging 大范围改动,再执行:
```bash
wasm-port/tests/native/verify_nc_files.sh
wasm-port/tests/native/verify_sim_configs.sh
```
最终完成判定:
- 工作树 clean
- 最新提交包含最后一次 `text14.txt` 完成记录;
- 所有必须 gate 通过;
- sim config inventory `unexpected_fail=0`
- browser INI panel smoke 全部 `ok`
- host 聚合输出 `host_wasm_opfs_browser_smokes=ok`
- blocked runtime family 明确保留 blocked不误 promotion
- 文档中下一步建议只剩真实外部依赖或明确 scope 外事项。
八、2026-06-15 继续执行记录INI panel workflow overview embedding mount DOM contract
本轮按 `text14.txt` 执行,从 Browser/UI workflow 收口批次开始快速推进。新增只读
workflow-overview embedding mount DOM contract为 mount render-state 定义 mount/status/rows
selectors、dataset keys 与 render-result fields给后续 DOM readiness 和 renderer 提供稳定契约。
完成内容:
- `ui-shell.js` 新增
`createIniPanelShellWorkflowOverviewEmbeddingMountDomContract()`
- mount DOM contract 输出:
- `apiName: "ini-panel-shell-workflow-overview-embedding-mount-dom-contract"`
- `contractVersion: 1`
- `requiredNodeIds: ["mount", "status", "rows"]`
- 默认 selectors
- `[data-workflow-overview-embedding-mount]`
- `[data-workflow-overview-embedding-mount-status]`
- `[data-workflow-overview-embedding-mount-rows]`
- `mountDatasetKeys`
- `rowDatasetPrefix: "workflowOverviewEmbeddingMount"`
- `rowDatasetKeys`
- `renderResultFields`
- 支持自定义 `rowDatasetPrefix` 与 selectors
- `createIniPanelLaunchApiManifest().methods` 新增
`getWorkflowOverviewEmbeddingMountDomContract`
- `createIniPanelShellViewModel()` 暴露
`createWorkflowOverviewEmbeddingMountDomContract`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getWorkflowOverviewEmbeddingMountDomContract()`
- `workflow-overview.html` 的 `window.linuxCncIniPanelWorkflowOverviewApi` 新增真实 browser
入口 `getWorkflowOverviewEmbeddingMountDomContract()`
- `verify_ini_panel_ui_shell.mjs` 覆盖默认 contract 与自定义 prefix/selectors
- `verify_ini_panel_launch_api_manifest.mjs` 覆盖 launch manifest 与 launch 页面真实 API
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 helper export、launch method count 与文档记录;
- `verify_ini_panel_entry_docs.mjs` 与 `docs/panel-entry.md` 同步记录新 helper/API
- `ini_panel_workflow_overview_smoke.html` 校验 workflow overview iframe 自身 mount DOM contract
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell 自定义 mount DOM contract
- `ini_panel_launch_smoke.html` 校验 launch API 与 workflow overview iframe API 暴露新 contract helper
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
LinuxCNC-owned runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=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
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
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
host_wasm_opfs_browser_smokes=ok
```
下一步建议:
继续推进 Browser/UI workflow 收口批次。下一批建议新增只读
`createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness()` 或等价 helper检查 mount
render-state contract 所需 document/mount/status/rows 节点是否存在,输出 missing/checks
为后续 renderer 和 mount workflow 提供稳定前置 gate仍保持只读不新增控制按钮不解析 G-code。
九、2026-06-15 继续执行记录INI panel workflow overview embedding mount DOM readiness
本轮按 `text14.txt` 执行,继续推进 Browser/UI workflow 收口批次。新增只读
workflow-overview embedding mount DOM readiness检查 mount render-state contract 所需
document/mount/status/rows 节点是否存在,输出 missing/checks为后续 renderer 和 mount workflow
提供稳定前置 gate。
完成内容:
- `ui-shell.js` 新增
`createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness()`
- mount DOM readiness 输出:
- `apiName: "ini-panel-shell-workflow-overview-embedding-mount-dom-readiness"`
- `readinessVersion: 1`
- `phase: "ready" | "blocked"`
- `ready`
- `missing`
- `checks.document`
- `checks.mount`
- `checks.status`
- `checks.rows`
- `checks.rowDatasetPrefix`
- `contract`
- 支持传入自定义 contract、documentRef、mountNode、statusNode、rowsNode
- `createIniPanelLaunchApiManifest().methods` 新增
`getWorkflowOverviewEmbeddingMountDomReadiness`
- `createIniPanelShellViewModel()` 暴露
`createWorkflowOverviewEmbeddingMountDomReadiness`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getWorkflowOverviewEmbeddingMountDomReadiness()`
- `workflow-overview.html` 的 `window.linuxCncIniPanelWorkflowOverviewApi` 新增真实 browser
入口 `getWorkflowOverviewEmbeddingMountDomReadiness()`
- `verify_ini_panel_ui_shell.mjs` 覆盖 missing document/nodes 与 ready nodes 两种 shape
- `verify_ini_panel_launch_api_manifest.mjs` 覆盖 launch manifest 与 launch 页面真实 API
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 helper export、launch method count 与文档记录;
- `verify_ini_panel_entry_docs.mjs` 与 `docs/panel-entry.md` 同步记录新 helper/API
- `ini_panel_workflow_overview_smoke.html` 动态创建 mount render-state DOM 节点并校验 ready readiness
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell 自定义 mount DOM contract 的 blocked readiness
- `ini_panel_launch_smoke.html` 校验 launch API 与 workflow overview iframe API 暴露新 readiness helper
- `PROJECT_COMPLETION_TRACKER.md` 同步当前完成批次与下一步任务;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
LinuxCNC-owned runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=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
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
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
host_wasm_opfs_browser_smokes=ok
```
下一步建议:
继续推进 Browser/UI workflow 收口批次。下一批建议新增只读
`renderIniPanelShellWorkflowOverviewEmbeddingMountState()` 或等价 helper使用 mount render-state 与
mount DOM readiness/contract 渲染 status 与 rows并返回结构化 render result仍保持只读
不新增控制按钮,不解析 G-code。
十、2026-06-15 继续执行记录INI panel workflow overview embedding mount DOM renderer
本轮按 `text14.txt` 执行,继续推进 Browser/UI workflow 收口批次。新增只读
workflow-overview embedding mount DOM renderer使用 mount render-state 与 mount DOM
readiness/contract 渲染 status 与 rows并返回结构化 render result。
完成内容:
- `ui-shell.js` 新增
`renderIniPanelShellWorkflowOverviewEmbeddingMountState()`
- renderer 在 DOM readiness ready 时写入:
- mount dataset
`handoffPhase`、`handoffReady`、`handoffScope`
- status text
- rows `<dt>/<dd>` 与 contract 定义的 row dataset keys
- renderer 返回结构化 render result
- `rendered`
- `statusLine`
- `rowCount`
- `rowIds`
- `dataset`
- DOM readiness blocked 时保持抛错行为,与既有 workflow/embedding renderer 模式一致;
- `createIniPanelLaunchApiManifest().methods` 新增
`renderWorkflowOverviewEmbeddingMountState`
- `createIniPanelShellViewModel()` 暴露
`renderWorkflowOverviewEmbeddingMountState`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`renderWorkflowOverviewEmbeddingMountState()`
- `workflow-overview.html` 的 `window.linuxCncIniPanelWorkflowOverviewApi` 新增真实 browser
入口 `renderWorkflowOverviewEmbeddingMountState()`
- `verify_ini_panel_ui_shell.mjs` 覆盖 renderer 返回 shape、dataset 写入与 rows dataset
- `verify_ini_panel_launch_api_manifest.mjs` 覆盖 launch manifest 与 launch 页面真实 API
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 helper export、launch method count 与文档记录;
- `verify_ini_panel_entry_docs.mjs` 与 `docs/panel-entry.md` 同步记录新 helper/API
- `ini_panel_workflow_overview_smoke.html` 在真实 workflow overview browser 页面中执行 mount
render-state DOM 渲染并校验 render result、row count、dataset 与 status text
- `ini_panel_launch_smoke.html` 校验 launch API 与 workflow overview iframe API 暴露新 renderer
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell launch API 暴露新 renderer
- `PROJECT_COMPLETION_TRACKER.md` 同步当前完成批次与下一步任务;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
LinuxCNC-owned runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=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
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
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
host_wasm_opfs_browser_smokes=ok
```
下一步建议:
继续推进 Browser/UI workflow 收口批次。下一批建议新增只读
`mountIniPanelShellWorkflowOverviewEmbeddingMountState()` 或等价非抛错 wrapper将 mount DOM
readiness、render-state、renderer 与 render-result 聚合成稳定 mount workflow result供外部 shell
直接调用;仍保持只读,不新增控制按钮,不解析 G-code。
十一、2026-06-15 继续执行记录INI panel workflow overview embedding mount DOM wrapper
本轮按 `text14.txt` 执行,继续推进 Browser/UI workflow 收口批次。新增只读
workflow-overview embedding mount DOM wrapper将 mount DOM readiness、mount render-state、
renderer 与 render-result 聚合为非抛错 mount workflow result供外部 shell 直接调用。
完成内容:
- `ui-shell.js` 新增
`mountIniPanelShellWorkflowOverviewEmbeddingMountState()`
- wrapper 输出稳定 workflow result
- `apiName: "ini-panel-shell-workflow-overview-embedding-mount-dom-mount"`
- `workflowVersion: 1`
- `phase: "ready" | "blocked"`
- `ready`
- `statusLine`
- `contract`
- `domReadiness`
- `renderState`
- `renderResult`
- `error`
- DOM readiness blocked 时返回 structured blocked result不抛错
- renderer 抛错时捕获为 structured blocked result
- DOM ready 时调用
`renderIniPanelShellWorkflowOverviewEmbeddingMountState()` 并回填 `renderResult`
- `createIniPanelLaunchApiManifest().methods` 新增
`mountWorkflowOverviewEmbeddingMountState`
- `createIniPanelShellViewModel()` 暴露
`mountWorkflowOverviewEmbeddingMountState`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`mountWorkflowOverviewEmbeddingMountState()`
- `workflow-overview.html` 的 `window.linuxCncIniPanelWorkflowOverviewApi` 新增真实 browser
入口 `mountWorkflowOverviewEmbeddingMountState()`
- `verify_ini_panel_ui_shell.mjs` 覆盖 ready DOM wrapper result 与 missing document/nodes
blocked result
- `verify_ini_panel_launch_api_manifest.mjs` 覆盖 launch manifest 与 launch 页面真实 API
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 helper export、launch method count 与文档记录;
- `verify_ini_panel_entry_docs.mjs` 与 `docs/panel-entry.md` 同步记录新 helper/API
- `ini_panel_workflow_overview_smoke.html` 在真实 workflow overview browser 页面中执行 wrapper
校验 API、render row count、error 与 readiness
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell 自定义 mount DOM contract 的
missing DOM blocked wrapper result
- `ini_panel_launch_smoke.html` 校验 launch API 与 workflow overview iframe API 暴露新 wrapper
- `PROJECT_COMPLETION_TRACKER.md` 同步当前完成批次与下一步 SDK/API surface consolidation
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
LinuxCNC-owned runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=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
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
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
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
进入 SDK/API surface consolidation。下一批建议审计 `wasm-port/runtime/sdk/src/index.js` 与
`wasm-port/runtime/sdk/README.md`,确认外部调用方可复用的稳定 API 是否覆盖 INI panel shell
handoff、workflow overview embedding、OPFS/session persistence 与 sim-config staging优先补
SDK export/README 说明和 Node smoke不扩大 CNC 语义边界,不新增解释器语义。
十二、2026-06-15 继续执行记录SDK/API surface exports and smoke
本轮按 `text14.txt` 执行,进入 SDK/API surface consolidation。审计并扩展
`wasm-port/runtime/sdk/src/index.js`,让外部调用方可以从 SDK stable entrypoint 直接使用核心
LinuxCNC WASM wrappers、sim-config staging、OPFS/session persistence以及 INI panel shell
handoff / workflow overview embedding helper。
完成内容:
- `runtime/sdk/src/index.js` 保留既有 core exports
- `createLinuxCncIniSdk()`
- `createLinuxCncInterpSdk()`
- `planIniFileContextStaging()`
- `planSimConfigStaging()`
- `analyzeIniRuntimeBoundaries()`
- SDK stable entrypoint 新增 OPFS/path/file/session exports
- `getOpfsRoot()`
- `saveTextFile()`
- `loadTextFile()`
- `machineIniPath()`
- `toolTablePath()`
- `parameterFilePath()`
- `gcodeProgramPath()`
- `sessionSnapshotPath()`
- `defaultMachinePaths()`
- `normalizeOpfsPath()`
- session snapshot helpers
- machine text/G-code file helpers
- parameter/tool-table OPFS bridge helpers
- `loadMachineSessionFromOpfs()`
- SDK stable entrypoint 新增 INI panel shell/workflow overview helper exports
- launch API manifest/schema helpers
- shell integration manifest/readiness/schema/workflow helpers
- shell session handoff summary/package/mount helpers
- workflow overview contract/readiness helpers
- workflow overview embedding report/display/render/DOM/mount helpers
- `mountIniPanelShellWorkflowOverviewEmbeddingMountState()`
- 新增 `wasm-port/tests/sdk/node/verify_sdk_surface.mjs`
- 新增 `wasm-port/tests/sdk/node/verify_sdk_surface.sh`
- SDK surface smoke 覆盖:
- core exports
- OPFS/session persistence exports
- workflow overview embedding mount wrapper exports
- path helper runtime shape
- launch manifest compatibility
- shell view-model method exposure
- README/tracker 文档记录;
- `wasm-port/tests/host/verify_host_smokes.sh` 纳入
`wasm-port/tests/sdk/node/verify_sdk_surface.sh`
- `wasm-port/runtime/sdk/README.md` 增补 stable imports、OPFS/session persistence exports、
INI panel shell handoff exports、workflow overview embedding helper说明与边界说明
- `PROJECT_COMPLETION_TRACKER.md` 同步当前完成批次与下一步 OPFS/session persistence
project-level summary / release-gate docs
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未改变 LinuxCNC interpreter、tool、parameter、planner 或 LinuxCNC-owned runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
sdk_surface_node_smoke=ok
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=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
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
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
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续推进 OPFS/session persistence 与 release-gate 文档收口。下一批建议新增项目级
OPFS/session persistence summary 或 release workflow 文档,串联 SDK stable imports、browser
OPFS smoke、session snapshot/machine-file helpers、host gate 命令和 blocked runtime family 说明;
优先让新接手者能按文档复现支持面与验证入口,不扩大 CNC 语义边界。
十三、2026-06-15 继续执行记录OPFS/session persistence release-gate docs
本轮按 `text14.txt` 执行,继续推进 OPFS/session persistence 与 release-gate 文档收口。新增
项目级 OPFS/session persistence handoff 文档,串联 SDK stable imports、browser OPFS smoke、
session snapshot/machine-file helpers、host gate 命令和 blocked runtime family 说明。
完成内容:
- 新增 `wasm-port/docs/opfs-session-persistence.md`
- 文档定义项目级 OPFS/session persistence 支持面:
- OPFS text/file helpers
- OPFS path helpers
- session snapshot helpers
- machine file and G-code helpers
- parameter/tool-table OPFS bridge helpers
- `loadMachineSessionFromOpfs()`
- UI/session helper docs 入口;
- 文档记录 persistence workflow
- machine INI/parameter/tool-table OPFS 保存路径;
- optional G-code OPFS 保存路径;
- session snapshot OPFS 保存路径;
- `loadMachineSessionFromOpfs()` 如何使用 LinuxCNC-backed INI SDK 读取
`[RS274NGC]PARAMETER_FILE`、`[EMCIO]TOOL_TABLE` 与
`[EMCIO]RANDOM_TOOLCHANGER`
- parameter/tool-table bridge 如何复制 OPFS text 到 WASM FS 并调用 LinuxCNC-backed
interpreter SDK
- 文档记录 browser OPFS/session smoke
- `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`
- 文档记录 release gate 命令:
- `git diff --check`
- vendor/source guard
- SDK surface smoke
- OPFS file-service smoke
- UI Node smoke
- interpreter WASM smoke
- sim-config inventory WASM smoke
- browser INI panel smoke
- host aggregate smoke
- 文档记录仍 blocked 的 runtime families
- `L4-USER-M-PROCESS`
- `L4-TOOL-DB`
- `L4-PYTHON-REMAP`
- 文档明确 OPFS/session persistence 不解锁 full LinuxCNC runtime family不执行 opt-in runtime probes
- 文档记录 failure modes
- missing OPFS support
- invalid OPFS paths
- invalid snapshot format/version/session id/payload/machine id
- missing host files
- tool/parameter/remap/planner/kinematics 仍由 LinuxCNC-owned runtime semantics 提供;
- `wasm-port/README.md` 增加 `docs/opfs-session-persistence.md` 项目级入口;
- 新增 `wasm-port/tests/docs/node/verify_opfs_session_docs.mjs`
- 新增 `wasm-port/tests/docs/node/verify_opfs_session_docs.sh`
- docs smoke 覆盖:
- OPFS/session release-gate 文档存在;
- SDK stable entrypoint 记录;
- persistence helpers 记录;
- browser/host gate 输出记录;
- blocked runtime family 记录;
- README、SDK README、host smoke 与 browser smoke 交叉引用;
- `wasm-port/tests/host/verify_host_smokes.sh` 纳入
`wasm-port/tests/docs/node/verify_opfs_session_docs.sh`
- `PROJECT_COMPLETION_TRACKER.md` 同步当前完成批次与下一步 sim-config coverage/release-gate docs
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics 或 LinuxCNC-owned runtime
semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/docs/node/verify_opfs_session_docs.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
opfs_session_docs_node_smoke=ok
sdk_surface_node_smoke=ok
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=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
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
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
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续推进 sim-config coverage/release-gate 文档收口。下一批建议新增或收敛
sim-config coverage handoff 文档/测试,明确 `ASSET_ONLY`、`L4_PYTHON_REMAP`、`L4_TOOL_DB`、
`L4_USER_M_PROCESS`、`NON_MAIN_CLASS`、`UPSTREAM_DEMO` 等 skip reasons 与当前 inventory
输出之间的对应关系,并把 release gate 中的 `sim_configs_wasm_node_inventory_*` 输出作为
机器可审计基线;仍不 promotion blocked runtime family不扩大 CNC 语义边界。
十四、2026-06-15 继续执行记录sim-config coverage release-gate docs
本轮按 `text14.txt` 执行,继续推进 sim-config coverage/release-gate 文档收口。新增短版
sim-config coverage handoff 文档与 docs smoke明确 skip reason、inventory 输出、artifact 路径、
blocked runtime family policy 与 release gate 的对应关系。
完成内容:
- 新增 `wasm-port/docs/sim-configs-coverage-handoff.md`
- 文档记录当前 Node/WASM inventory gate
`SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh`
- 文档固定当前 machine-readable baseline
- `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`
- 文档记录关键 generated artifacts
- `summary.tsv`
- `skip-summary.tsv`
- `boundary-summary.tsv`
- `blocked-dependency-summary.tsv`
- `full-process-boundary-summary.tsv`
- `python-remap-boundary-summary.tsv`
- `runtime-boundary-promotion-blockers.tsv`
- `runtime-boundary-host-readiness-rollup.tsv`
- `runtime-boundary-opt-in-probe-dispatch-rollup.tsv`
- 文档明确 artifact reason 与 shell metric suffix 的映射:
- `ASSET-ONLY` -> `ASSET_ONLY`
- `L4-PYTHON-REMAP` -> `L4_PYTHON_REMAP`
- `L4-TOOL-DB` -> `L4_TOOL_DB`
- `L4-USER-M-PROCESS` -> `L4_USER_M_PROCESS`
- `NON_MAIN_CLASS` -> `NON_MAIN_CLASS`
- `UPSTREAM-DEMO` -> `UPSTREAM_DEMO`
- 文档记录 release promotion policy
- 必须有 LinuxCNC-owned runtime proof
- native proof 先通过;
- Node/WASM proof 后通过;
- browser/host proof 最后通过;
- standalone CNC semantics guard 仍通过;
- generated inventory artifacts 与 docs 一致;
- 文档重申不得从 JS glue promotion
- `L4-PYTHON-REMAP`
- `L4-TOOL-DB`
- `L4-USER-M-PROCESS`
- 文档记录 sim-config coverage release gate 与 host aggregate 必须输出;
- 文档记录 blocked runtime opt-in probes 仍非当前 release gate
- 新增 `wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.mjs`
- 新增 `wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh`
- docs smoke 覆盖:
- handoff 文档存在;
- inventory baseline 输出;
- skip reason map
- artifact path
- standalone CNC semantics guard
- blocked runtime family
- matrix/completion-plan/tracker/host gate 交叉引用;
- 若 `skip-summary.tsv` 已存在,则校验当前 skip reason counts
- `wasm-port/README.md` 增加 `docs/sim-configs-coverage-handoff.md` 项目级入口;
- `wasm-port/tests/host/verify_host_smokes.sh` 纳入
`wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh`
- `PROJECT_COMPLETION_TRACKER.md` 同步当前完成批次与下一步 host/runtime boundary reports
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh
wasm-port/tests/docs/node/verify_opfs_session_docs.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
sim_configs_coverage_docs_node_smoke=ok
opfs_session_docs_node_smoke=ok
sdk_surface_node_smoke=ok
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=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
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
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
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续推进 host/runtime boundary reports 与最终 release-gate 文档收口。下一批建议新增或收敛
host/runtime boundary handoff 文档/测试,聚合 blocked runtime family 的 host readiness、
promotion blockers、opt-in probe dispatch/skip evidence、native evidence acceptance gate以及
当前 host 为什么保持 `blocked_missing_host_runtime`;仍不运行 opt-in runtime probes不 promotion
`L4-USER-M-PROCESS`、`L4-TOOL-DB`、`L4-PYTHON-REMAP`。
十五、2026-06-15 继续执行记录host/runtime boundary release-gate docs
本轮按 `text14.txt` 执行,继续推进 host/runtime boundary reports 与最终 release-gate 文档收口。
新增短版 host/runtime boundary handoff 文档与 docs smoke聚合 blocked runtime family 的 host
readiness、promotion blockers、opt-in probe dispatch/skip evidence、native evidence acceptance gate
并明确当前 host 为什么保持 blocked。
完成内容:
- 新增 `wasm-port/docs/host-runtime-boundary-handoff.md`
- 文档记录当前 blocked runtime families
- `L4-USER-M-PROCESS`
- `L4-TOOL-DB`
- `L4-PYTHON-REMAP`
- 文档记录关键 generated artifacts
- `runtime-boundary-host-readiness-rollup.tsv`
- `runtime-boundary-promotion-blockers.tsv`
- `runtime-boundary-opt-in-probe-dispatch-rollup.tsv`
- `runtime-boundary-native-evidence-acceptance-gate.tsv`
- `runtime-boundary-opt-in-probe-skip-evidence-rollup.tsv`
- `blocked-runtime-promotion-lock.tsv`
- 文档固定当前 host readiness rollup
- `host_readiness_status=host_blocked_for_all_opt_in_native_probes`
- `family_count=3`
- `host_ready_family_count=0`
- `host_blocked_family_count=3`
- `blocked_families=L4-PYTHON-REMAP,L4-TOOL-DB,L4-USER-M-PROCESS`
- `missing_host_requirements=halcmd,halrun,linuxcnc,milltask`
- `ready_opt_in_command_count=0`
- `execution_enabled=0`
- `promotion_allowed=0`
- 文档记录 current promotion blockers
- `host_runtime_requirements_missing`
- `native_runtime_probe_not_passed`
- `native_pass_evidence_not_ready`
- `node_inventory_gate_not_complete`
- `browser_smoke_gate_not_complete`
- `promotion_lock_active`
- `manual_lock_update_required`
- 文档固定 opt-in probe dispatch state
- `dispatch_status=dispatch_blocked_for_all_opt_in_native_probes`
- `probe_count=3`
- `dispatch_allowed_count=0`
- `dispatch_blocked_count=3`
- `dispatch_actions=skip_missing_host_requirements`
- `execution_enabled=0`
- `promotion_allowed=0`
- 文档记录仍 blocked 的 opt-in probe commands
- `ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_millturn_user_m_runtime.sh`
- `ENABLE_TOOL_DB_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_tool_db_runtime.sh`
- `ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_python_remap_runtime.sh`
- 文档记录 native evidence acceptance gate 当前状态:
- `current_probe_status=skipped_missing_host_runtime`
- `native_evidence_status=pending_until_native_pass`
- `skip_evidence_status=skip_valid_until_host_requirements_available`
- `node_gate_status=blocked_until_native_pass_evidence`
- `browser_gate_status=blocked_until_node_gate_complete`
- `native_evidence_gate=blocked_until_host_requirements_available`
- `evidence_acceptance_allowed=0`
- 文档明确 skipped opt-in probe 不是 native pass只证明当前 host 正确 blocked
- 文档记录 release gate 与 promotion rule
- 新增 `wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.mjs`
- 新增 `wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.sh`
- docs smoke 覆盖:
- handoff 文档存在;
- host readiness artifact
- promotion blocker artifact
- opt-in dispatch artifact
- native evidence acceptance artifact
- blocked runtime family
- blocked opt-in commands
- full-process docs、sim-config handoff、inventory test、README、tracker、host gate 交叉引用;
- 若 generated host readiness / dispatch rollup artifacts 已存在,则校验当前 blocked 状态;
- `wasm-port/README.md` 增加 `docs/host-runtime-boundary-handoff.md` 项目级入口;
- `wasm-port/tests/host/verify_host_smokes.sh` 纳入
`wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.sh`
- `PROJECT_COMPLETION_TRACKER.md` 同步当前完成批次与下一步最终 README/docs acceptance checklist
- 修正 `verify_sim_configs_coverage_docs.mjs` 对 tracker 文案的断言,使其接受当前
`Sim config coverage` 表述;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.sh
wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh
wasm-port/tests/docs/node/verify_opfs_session_docs.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
host_runtime_boundary_docs_node_smoke=ok
sim_configs_coverage_docs_node_smoke=ok
opfs_session_docs_node_smoke=ok
sdk_surface_node_smoke=ok
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=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
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
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
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续推进最终 README/docs acceptance checklist 与项目完成 handoff。下一批建议刷新
`wasm-port/README.md`、`PROJECT_COMPLETION_TRACKER.md` 和必要 docs 索引,形成新接手者不阅读
`text1` 到 `text13` 也能完成验证的最终路径;重点是收敛 required gates、supported workflows、
blocked runtime families、SDK/API surface 与 browser/UI workflow 入口,不新增功能或 CNC 语义。
十六、2026-06-16 继续执行记录project release handoff docs
本轮按 `text14.txt` 执行,推进最终 README/docs acceptance checklist 与项目完成 handoff。
新增项目级 release handoff 文档和 docs smoke把 README、panel entry、SDK、OPFS/session、
sim-config coverage、host/runtime boundary、source reuse、drift report 与 tracker 串成新接手者可直接
执行的验收路径。
完成内容:
- 新增 `wasm-port/docs/project-release-handoff.md`
- 新增 `wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs`
- 新增 `wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh`
- `wasm-port/README.md` 增加当前 release handoff 入口、最小 release validation commands、
expected handoff smoke outputs、browser/UI 与 SDK 入口;
- `wasm-port/docs/panel-entry.md` 增加项目级 handoff 入口、SDK 稳定导入说明、
workflow overview embedding helpers 概括与 release validation 引用;
- `wasm-port/docs/source-reuse-map.md` 增加 project release handoff 交叉引用;
- `wasm-port/docs/drift-report.md` 增加 project release handoff 交叉引用;
- `wasm-port/tests/host/verify_host_smokes.sh` 纳入
`wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh`
- `PROJECT_COMPLETION_TRACKER.md` 同步:
- latest completed batch 更新为 `project release handoff docs`
- OPFS/session persistence、SDK/API surface、Browser/UI workflow、Workflow overview embedding、
Documentation/release gate 标记为 current scope stable
- Host/runtime boundary proof 标记为 stable blocked state
- Documentation/Release Gate 工作项标记完成;
- Final Acceptance Checklist 增加 project release handoff docs smoke
- 当前下一步收敛为 final required gate set、clean working tree 与最终 completion record
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tests/docs/node/verify_opfs_session_docs.sh
wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh
wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
project_release_handoff_docs_node_smoke=ok
opfs_session_docs_node_smoke=ok
sim_configs_coverage_docs_node_smoke=ok
host_runtime_boundary_docs_node_smoke=ok
sdk_surface_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
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
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
browser_interp_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
进入最终 clean-tree acceptance closeout。下一批建议在本批提交后从 clean working tree 重新执行
`docs/project-release-handoff.md` 的最小 release validation commands若全部通过则把
`PROJECT_COMPLETION_TRACKER.md` 的 Final Acceptance Checklist 勾选为当前 scope complete并在
`text14.txt` 追加最终完成记录。仍不新增功能、不扩大 CNC 语义、不 promotion blocked runtime family。
十七、2026-06-16 继续执行记录final clean-tree acceptance closeout
本轮按 `text14.txt` 执行,从 clean working tree 重新执行
`docs/project-release-handoff.md` 的最小 release validation commands。所有 required gates 均通过,
随后将 `PROJECT_COMPLETION_TRACKER.md` 的 Final Acceptance Checklist 勾选为当前 scope complete
并追加本最终完成记录。
完成内容:
- 从 clean working tree 重新执行 release validation commands
- `PROJECT_COMPLETION_TRACKER.md` 同步:
- latest completed batch 更新为 `final clean-tree acceptance closeout`
- current scope status 标记为 complete after final clean-tree release validation
- Remaining Work 标记为当前 scope 无剩余必需工作;
- Final Acceptance Checklist 全部勾选;
- `text14.txt` 追加当前 scope final completion record
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
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
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
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
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
ui_node_smokes=ok
project_release_handoff_docs_node_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
当前 scope 完成状态:
```text
complete_for_current_scope=1
working_tree_clean_after_commit_required=1
blocked_runtime_families=L4-USER-M-PROCESS,L4-TOOL-DB,L4-PYTHON-REMAP
blocked_runtime_promotion_allowed=0
```
下一步工作计划:
当前 scope 已完成。后续只在出现新范围请求或真实 LinuxCNC host runtime 可用时继续推进:
若 host runtime 可用,按 native -> Node/WASM -> browser/host 顺序验证
`L4-USER-M-PROCESS`、`L4-TOOL-DB`、`L4-PYTHON-REMAP`,否则保持 blocked若进入新功能范围
继续遵守 LinuxCNC 作为唯一 CNC 语义来源、JS/browser 只做边界 glue 与 UI/OPFS/SDK workflow。
十八、2026-06-16 继续执行记录project release gate wrapper
本轮在当前 scope complete 后继续快速推进可维护性,不新增运行时功能。新增单入口 project
release gate wrapper把 `docs/project-release-handoff.md` 中的最小 release validation commands
固化为可执行脚本,减少后续维护者手动拼命令的漂移风险。
完成内容:
- 新增 `wasm-port/tests/host/verify_project_release_gate.sh`
- 脚本执行当前 scope 最小 release validation commands
- `git diff --check`
- `wasm-port/tools/verify_vendor_sync.sh`
- `wasm-port/tools/verify_no_standalone_cnc_semantics.sh`
- `SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh`
- `SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh`
- `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`
- `wasm-port/tests/host/verify_host_smokes.sh`
- 脚本成功时输出 `project_release_gate=ok`
- `wasm-port/docs/project-release-handoff.md` 增加单入口 release gate 命令和输出;
- `wasm-port/README.md` 增加单入口 release gate 命令和输出;
- `PROJECT_COMPLETION_TRACKER.md` 增加 Project release gate wrapper 状态与 checklist 项;
- `wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs` 增加 release gate wrapper
文档/脚本漂移检查;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tests/host/verify_project_release_gate.sh
```
关键输出:
```text
project_release_handoff_docs_node_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
browser_ini_shell_integration_workflow_smoke=ok
ui_node_smokes=ok
host_wasm_opfs_browser_smokes=ok
project_release_gate=ok
```
下一步工作计划:
若本批验证通过并提交,后续可以继续做低风险可维护性推进:为 project release gate 增加短文档索引或
CI 入口说明;或者在真实 LinuxCNC host runtime 可用前,保持 blocked runtime family 不 promotion
只维护 guard、docs 和 workflow/API 边界。
二十、2026-06-16 继续执行记录OPFS machine session readiness SDK helper
本轮按“功能实质性推进为主”继续推进,新增可直接复用的 OPFS/session readiness helper。该 helper
允许外部 SDK/UI 调用方在真正加载 machine session 到 WASM 前,结构化检查 persisted INI、参数文件、
工具表、可选 G-code 和可选 session snapshot 是否存在且 snapshot envelope 有效。
完成内容:
- 新增 `wasm-port/runtime/opfs/machine-session-readiness.js`
- 新增 `readMachineSessionReadiness(machineId, options)`
- helper 返回:
- `machineId`
- `ready`
- `phase`
- `paths`
- `checks`
- `snapshotCheck`
- `snapshot`
- `missing`
- `errors`
- 支持默认 machine file paths
- 支持显式 `iniOpfsPath`、`parameterOpfsPath`、`toolTableOpfsPath`
- 支持 `gcodeFilename`、`gcodeOpfsPath` 和 `gcodeRequired`
- 支持 `sessionId` 与 `snapshotFilename`,并复用现有 `loadMachineSessionSnapshot()` 做 snapshot
envelope/machine id 校验;
- `wasm-port/runtime/sdk/src/index.js` re-export `readMachineSessionReadiness()`
- `wasm-port/tests/opfs/node/verify_file_service.mjs` 覆盖 ready session、missing session、
snapshot check、G-code check 与 invalid OPFS path
- `wasm-port/tests/sdk/node/verify_sdk_surface.mjs` 覆盖 SDK export
- `wasm-port/runtime/sdk/README.md` 记录新 SDK helper
- `wasm-port/docs/opfs-session-persistence.md` 记录 readiness workflow
- `wasm-port/tests/docs/node/verify_opfs_session_docs.mjs` 覆盖 docs drift
- `PROJECT_COMPLETION_TRACKER.md` 同步 OPFS/session 与 SDK/API surface 状态;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
已通过的定向验证:
```bash
git diff --check
wasm-port/tests/opfs/node/verify_file_service.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/docs/node/verify_opfs_session_docs.sh
```
关键输出:
```text
opfs_file_service_node_smoke=ok
sdk_surface_node_smoke=ok
opfs_session_docs_node_smoke=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批建议把 `readMachineSessionReadiness()` 接入 INI panel/session
workflow 或 external shell handoff view-model让 UI 在加载 session 前显示结构化 ready/blocked
原因;仍保持只读,不新增控制按钮,不解析 G-code不扩大 LinuxCNC 语义边界。
二十一、2026-06-16 继续执行记录INI panel session readiness workflow
本轮继续以功能实质性推进为主,把上一批新增的 `readMachineSessionReadiness()` 接入 INI panel/session
workflow 层。现在 UI/session workflow 和外部 shell 入口可以在加载 machine session 到 WASM 前获取
结构化 ready/blocked 原因。
完成内容:
- `wasm-port/runtime/ui/ini-panel/session-workflow.js` 新增:
- `createMachineSessionReadinessFieldState()`
- `machineSessionReadinessLogLines()`
- `readMachineSessionReadinessWorkflow()`
- `restoreMachineSessionSnapshotWorkflow()` 支持可选 `readReadiness`
- restore snapshot workflow 会把 readiness report 合并进:
- `readiness`
- `fields.sessionReadinessPhase`
- `fields.sessionReadinessReady`
- `fields.sessionReadinessMissing`
- `logLines`
- restore+load workflow 会在 load session 前保留 readiness log 与字段;
- `wasm-port/runtime/ui/ini-panel/app.js` 接入 `readMachineSessionReadiness()`
- restore session snapshot 时读取 readiness
- load session 时先读取 readiness 再加载 WASM session
- restore+load session 时读取 readiness
- panel state 中保存 `sessionReadiness`
- `wasm-port/runtime/ui/ini-panel/ui-shell.js` re-export session readiness workflow helpers
- `wasm-port/docs/panel-entry.md` 记录 external shell 可用的 session readiness workflow helper
- `wasm-port/tests/ui/node/verify_ini_panel_session_workflow.mjs` 覆盖 ready/blocked readiness、
restore readiness、restore+load readiness
- `wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs` 覆盖 ui-shell export 与 docs drift
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 与 Browser/UI workflow 状态;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/ui/node/verify_ini_panel_session_workflow.sh
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
```
关键输出:
```text
ini_panel_session_workflow_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ini_panel_ui_shell_node_smoke=ok
ui_node_smokes=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
```
下一步工作计划:
继续做实质能力推进。下一批建议把 session readiness report 纳入 read-only control page status 或
shell handoff package/display view-model让外部 shell 不进入 editor 页面也能读取 session
ready/blocked 原因;仍保持只读,不新增控制按钮,不解析 G-code不扩大 LinuxCNC 语义边界。
二十二、2026-06-16 继续执行记录INI panel readonly session readiness handoff
本轮继续以功能实质性推进为主,把上一批 session readiness report 纳入只读 control page status
和 external shell handoff contract。现在外部 shell 不进入 editor 页面,也能通过 read-only status
读取 machine-session ready/blocked 原因。
完成内容:
- `wasm-port/runtime/ui/ini-panel/panel-state-summary.js` 将 `sessionReadiness` 纳入:
- `createIniPanelStateSummary()`
- `createMachineSessionStateSnapshot()`
- `createMachineSessionStateReport()`
- `createMachineSessionWorkflowStatus()`
- `wasm-port/runtime/ui/ini-panel/readonly-status-api.js` 新增只读 `sessionReadiness` 字段;
- readonly status API manifest 的 `statusFields` 新增 `sessionReadiness`
- `wasm-port/runtime/ui/ini-panel/control-page-session-workflow.js` 在 waiting/ready session load state
中透出 `sessionReadiness`
- `wasm-port/docs/panel-entry.md` 记录外部 shell 可通过 read-only status 和 control-page session
workflow 获取 machine-session ready/blocked 状态;
- Node 测试覆盖 state summary、readonly status API、control-page session workflow、control-page
controller、shell control-page contract、shell integration manifest、entry docs、ui shell
- Browser smoke 覆盖真实 control page readonly status 和 shell handoff readonly status 中的
`sessionReadiness`
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
ui_node_smokes=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
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批可把 `sessionReadiness` 纳入 shell handoff workflow display/render rows
让外部 shell 的已挂载 handoff 面板直接展示 ready/blocked 原因;仍保持只读,不新增控制按钮,不解析
G-code不扩大 LinuxCNC 语义边界。
二十三、2026-06-16 继续执行记录INI panel shell workflow session readiness display
本轮继续以功能实质性推进为主,把 `sessionReadiness` 从只读 status 进一步接入 shell handoff
workflow summary/display/render rows。现在外部 shell 的已挂载 workflow 面板可以直接显示 machine-session
ready/blocked 状态与 missing 原因,不需要进入 editor 页面或读取底层 state bundle。
完成内容:
- `wasm-port/runtime/ui/ini-panel/ui-shell.js` 的
`createIniPanelShellSessionHandoffWorkflowSummary()` 新增:
- `sessionReadiness` 摘要;
- `session-readiness` display/render row
- ready 状态显示为 `ready`
- blocked 状态显示为 `blocked: <missing reasons>`
- workflow display view-model 与 render-state 自动继承新增 row
- workflow DOM renderer/mount result 的 row count 和 row ids 覆盖新增 `session-readiness` 行;
- workflow overview embedding report 记录新的 render row count
- `wasm-port/tests/browser/ini_panel_shell_integration_workflow_smoke.html` 覆盖真实 external shell
workflow summary、render-state 和 DOM mount 中的 session readiness 行;
- `wasm-port/docs/panel-entry.md` 记录 workflow summary rows 已包含 machine-session ready/blocked state
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 与 Browser/UI workflow 状态;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
ini_panel_ui_shell_node_smoke=ok
ui_node_smokes=ok
browser_ini_shell_integration_workflow_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批可为 `sessionReadiness` display row 增加独立 machine-readable
workflow report/helper或者把同一展示能力接入 workflow overview 页面自身;仍保持只读,不新增控制按钮,
不解析 G-code不扩大 LinuxCNC 语义边界。
二十四、2026-06-16 继续执行记录INI panel session readiness workflow report
本轮继续以功能实质性推进为主,为上一批 `sessionReadiness` display row 增加独立 machine-readable
workflow report/helper并暴露到 launch API 与 workflow overview 页面 API。外部 shell 现在可以直接读取
session readiness phase、missing reasons 和稳定 rows不需要解析 display row 文本。
完成内容:
- `wasm-port/runtime/ui/ini-panel/ui-shell.js` 新增
`createIniPanelShellSessionReadinessWorkflowReport()`
- report 返回:
- `apiName`
- `reportVersion`
- `phase`
- `ready`
- `statusLine`
- `sessionReadiness`
- `missing`
- `rows`
- report 支持从 `workflowSummary.sessionReadiness` 或
`readonlyStatusResult.readonlyStatus.sessionReadiness` 抽取 ready/blocked 状态;
- `createIniPanelShellViewModel()` 暴露:
- `shellSessionReadinessWorkflowReport`
- `createShellSessionReadinessWorkflowReport`
- `createIniPanelLaunchApiManifest().methods` 新增
`getShellSessionReadinessWorkflowReport`
- `runtime/ui/ini-panel/launch.html` 暴露
`linuxCncIniPanelLaunchApi.getShellSessionReadinessWorkflowReport()`
- `createIniPanelShellWorkflowOverviewContract().methodNames` 新增
`getWorkflowOverviewSessionReadinessReport`
- `runtime/ui/ini-panel/workflow-overview.html` 暴露
`linuxCncIniPanelWorkflowOverviewApi.getWorkflowOverviewSessionReadinessReport()`
- `docs/panel-entry.md` 记录新 helper 与两个 browser API 入口;
- Node 测试覆盖 ui-shell helper、launch manifest、shell integration manifest 和 docs drift
- Browser smoke 覆盖 launch API、workflow overview iframe API、shell integration workflow API
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
ui_node_smokes=ok
browser_ini_launch_smoke=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批可把 session readiness workflow report 纳入 SDK surface 或 release
handoff docs 的 API surface 表,方便外部调用者从 SDK/文档直接发现;仍保持只读,不新增控制按钮,
不解析 G-code不扩大 LinuxCNC 语义边界。
二十五、2026-06-16 继续执行记录INI panel session readiness workflow report SDK surface
本轮继续以功能实质性推进为主,把上一批新增的 session readiness workflow report 纳入 SDK/API
surface 和 release handoff 发现路径。外部调用者现在可以从 `runtime/sdk/src/index.js` 稳定导入
`createIniPanelShellSessionReadinessWorkflowReport()`,并在 SDK README 与 project release handoff 中发现该能力。
完成内容:
- `wasm-port/runtime/sdk/src/index.js` re-export
`createIniPanelShellSessionReadinessWorkflowReport()`
- `wasm-port/runtime/sdk/README.md` 的 stable imports 示例加入新 helper
- SDK README 的 INI panel shell handoff exports 记录新 helper 的用途:
- machine-readable session readiness workflow report
- phase
- missing reasons
- status line
- stable rows
- `wasm-port/tests/sdk/node/verify_sdk_surface.mjs` 覆盖:
- SDK export shape
- SDK README drift
- launch manifest 中 `getShellSessionReadinessWorkflowReport`
- helper API name
- `wasm-port/docs/project-release-handoff.md` 点名 SDK 调用者可用该 helper 获取 machine-readable
session readiness phase 与 missing reasons
- `wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs` 覆盖 release handoff docs drift
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 与 SDK/API surface 状态;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
sdk_surface_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
ui_node_smokes=ok
browser_ini_shell_integration_workflow_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批可为 session readiness workflow report 增加更高层的 release/API
inventory row 或 browser-visible summary row方便验收页面和外部 shell 快速列出当前稳定 API仍保持只读
不新增控制按钮,不解析 G-code不扩大 LinuxCNC 语义边界。
二十六、2026-06-16 继续执行记录INI panel shell API surface inventory
本轮继续以功能实质性推进为主,为 INI panel shell 增加更高层的 read-only API surface inventory。
外部 shell、workflow overview iframe 和 SDK 调用者现在可以一次读取 launch API、control-page API、
workflow overview API、persistence capabilities 与 session readiness report 的稳定计数和 rows。
完成内容:
- `wasm-port/runtime/ui/ini-panel/ui-shell.js` 新增 `createIniPanelShellApiSurfaceInventory()`
- inventory 返回:
- `apiName`
- `inventoryVersion`
- `phase`
- `ready`
- `counts`
- `apiNames`
- `entries`
- `rows`
- `createIniPanelLaunchApiManifest().methods` 新增 `getShellApiSurfaceInventory`
- `createIniPanelShellWorkflowOverviewContract().methodNames` 新增
`getWorkflowOverviewApiSurfaceInventory`
- `createIniPanelShellViewModel()` 暴露:
- `shellApiSurfaceInventory`
- `createShellApiSurfaceInventory`
- `runtime/ui/ini-panel/launch.html` 暴露
`linuxCncIniPanelLaunchApi.getShellApiSurfaceInventory()`
- `runtime/ui/ini-panel/workflow-overview.html` 暴露
`linuxCncIniPanelWorkflowOverviewApi.getWorkflowOverviewApiSurfaceInventory()`
- `wasm-port/runtime/sdk/src/index.js` re-export `createIniPanelShellApiSurfaceInventory()`
- `wasm-port/runtime/sdk/README.md`、`docs/panel-entry.md`、`docs/project-release-handoff.md`
记录该 inventory 能力;
- Node 测试覆盖 ui-shell、launch manifest、shell integration manifest、SDK surface、release handoff docs
- Browser smoke 覆盖 launch API、workflow overview iframe API、shell integration workflow API
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
ui_node_smokes=ok
browser_ini_launch_smoke=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批可把 shell API surface inventory 渲染为 browser-visible summary
row 或挂载到 workflow overview embedding report方便验收页面直接显示 API surface 覆盖;仍保持只读,
不新增控制按钮,不解析 G-code不扩大 LinuxCNC 语义边界。
二十七、2026-06-16 继续执行记录INI panel SDK shell/control-page negotiation surface
本轮继续以功能实质性推进为主,把已经稳定存在于 UI shell 的 entry manifest、launcher link、
control-page browser API、shell integration negotiation 与 workflow overview contract helper 纳入
`runtime/sdk/src/index.js` 稳定导出。外部调用者现在可以只从 SDK 入口完成 launch/control-page/shell
协商,不需要导入 `runtime/ui/ini-panel/` 私有路径。
完成内容:
- `wasm-port/runtime/sdk/src/index.js` re-export
- `INI_PANEL_ENTRIES`
- `getIniPanelEntryManifest()`
- `getIniPanelEntryByHref()`
- `getVisibleIniPanelEntries()`
- `createIniPanelLauncherLinkViewModel()`
- `createControlPageBrowserApiSchema()`
- `createControlPageBrowserApiManifest()`
- `createControlPageBrowserApiMethods()`
- `createIniPanelShellControlPageContract()`
- `isSupportedIniPanelControlPageApiManifest()`
- `createIniPanelShellIntegrationSchema()`
- `createIniPanelShellIntegrationManifest()`
- `createIniPanelShellIntegrationReadiness()`
- `createIniPanelShellIntegrationWorkflowPlan()`
- `isSupportedIniPanelShellIntegrationManifest()`
- `createIniPanelShellWorkflowOverviewContract()`
- `wasm-port/tests/sdk/node/verify_sdk_surface.mjs` 覆盖:
- 新 SDK export shape
- SDK README drift
- entry manifest 与 visible entries 一致;
- launcher link view-model shape
- control-page manifest/schema/methods 支持判断;
- shell integration manifest/readiness/workflow plan ready
- workflow overview contract 包含 API surface inventory method
- `wasm-port/runtime/sdk/README.md` 的 stable imports 示例和 INI panel shell handoff exports
记录新增 SDK surface
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 与 SDK/API surface 状态;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
sdk_surface_node_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
ui_node_smokes=ok
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
browser_ini_launch_smoke=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批可把 shell API surface inventory 渲染为 browser-visible summary
row 或接入 workflow overview embedding report让验收页面直接显示 API surface 覆盖;仍保持只读,
不新增控制按钮,不解析 G-code不扩大 LinuxCNC 语义边界。
二十八、2026-06-16 继续执行记录INI panel workflow overview API surface summary row
本轮继续以功能实质性推进为主,把上一批可调用的 shell API surface inventory 接入真实 workflow
overview 和外部 shell 可见的只读 summary/render path。验收页面现在不只能够通过 API 读取
`createIniPanelShellApiSurfaceInventory()`,还会在 workflow summary DOM rows 中显示
`api-surface-inventory` 行,直接暴露 API surface 覆盖状态。
完成内容:
- `createIniPanelShellSessionHandoffWorkflowSummary()` 新增可选 `apiSurfaceInventory` 输入;
- workflow summary 输出新增:
- `apiSurfaceInventory` 摘要对象;
- `api-surface-inventory` display row
- `createIniPanelShellViewModel()` 构建流程调整为:
- 先生成基础 workflow summary
- 生成 session readiness workflow report
- 生成 shell API surface inventory
- 再生成包含 API surface inventory 行的最终 workflow summary/display/render-state
- `workflow-overview.html` 现有渲染路径自动显示 `api-surface-inventory` row
- Browser smoke 覆盖真实 DOM
- workflow overview 主 DOM row count
- `data-handoff-workflow-value="api-surface-inventory"`
- launch iframe workflow overview embedding row count
- external shell workflow overview embedding row count
- external shell 手动注入 `apiSurfaceInventory` 后的 workflow DOM mount row count
- SDK smoke 覆盖 `createIniPanelShellViewModel()` 的 workflow summary 包含
`api-surface-inventory: ready: 5 rows`
- `runtime/sdk/README.md`、`docs/panel-entry.md`、`docs/project-release-handoff.md` 记录:
- API surface inventory 可以作为 workflow summary row
- browser overview 和外部 shell 可直接显示 API 覆盖;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
vendor sync up to date
standalone CNC semantics guard complete
ui_node_smokes=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
sdk_surface_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批可把 OPFS/session persistence 也做成类似的 browser-visible
summary row 或 report汇总 machine files、session snapshot、readonly status、handoff readiness
仍保持只读,不新增控制按钮,不解析 G-code不扩大 LinuxCNC 语义边界。
二十九、2026-06-16 继续执行记录INI panel OPFS/session persistence summary
本轮继续以功能实质性推进为主,为 OPFS/session persistence 增加可复用、可由浏览器真实流程读取的
只读 summary helper。外部调用者和 INI panel 页面现在可以通过稳定 API 一次查看 machine files、
session snapshot、session readiness、session load、readonly status、handoff readiness 的汇总 rows。
完成内容:
- `panel-state-summary.js` 新增 `createMachineSessionPersistenceSummary()`
- persistence summary 输出:
- `apiName: "machine-session-persistence-summary"`
- `summaryVersion`
- `phase`
- `ready`
- `checks`
- `missing`
- `counts`
- rows
- `opfs`
- `machine-files`
- `session-snapshot`
- `session-readiness`
- `session-load`
- `readonly-status`
- `handoff-readiness`
- `app.js` 暴露:
- `linuxCncIniPanelApi.getMachineSessionPersistenceSummary()`
- legacy `window.getMachineSessionPersistenceSummary()`
- `ui-shell.js` re-export `createMachineSessionPersistenceSummary()`
- `runtime/sdk/src/index.js` re-export `createMachineSessionPersistenceSummary()`
- `verify_ini_panel_state_summary.mjs` 覆盖 ready summary 与 missing summary
- `verify_ini_panel_ui_shell.mjs` 覆盖 ui-shell export
- `verify_sdk_surface.mjs` 覆盖 SDK export 与 session-load row
- `ini_panel_smoke.html` 覆盖真实 browser OPFS/session persistence workflow 后的 summary
- `ready === true`
- machine files row
- session load row
- `runtime/sdk/README.md`、`docs/panel-entry.md`、`docs/project-release-handoff.md` 记录该 helper 和
browser API
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 与 OPFS/session persistence 状态;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
wasm-port/tests/ui/node/verify_ini_panel_state_summary.sh
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
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
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
vendor sync up to date
standalone CNC semantics guard complete
ini_panel_state_summary_node_smoke=ok
ini_panel_ui_shell_node_smoke=ok
sdk_surface_node_smoke=ok
browser_ini_opfs_smoke=ok
ui_node_smokes=ok
ini_panel_entry_docs_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批可把 `createMachineSessionPersistenceSummary()` 接入 shell handoff
workflow summary 或 workflow overview API surface inventory让外部 shell 在一个 overview 中同时看到
API surface 与 OPFS/session persistence 状态;仍保持只读,不新增控制按钮,不解析 G-code不扩大
LinuxCNC 语义边界。
三十、2026-06-16 继续执行记录INI panel shell workflow persistence summary row
本轮继续以功能实质性推进为主,把 OPFS/session persistence summary 接入 shell handoff workflow
summary 和 workflow overview render path。外部 shell 现在可以在同一个 overview 中同时显示
`persistence-summary` 与 `api-surface-inventory` rows直接看到 OPFS/session persistence 状态和 API
surface 覆盖。
完成内容:
- `createIniPanelShellSessionHandoffWorkflowSummary()` 新增可选 `persistenceSummary` 输入;
- workflow summary 输出新增:
- `persistenceSummary` 摘要对象;
- `persistence-summary` display row
- `createIniPanelShellViewModel()` 默认生成 `shellPersistenceSummary`,并将其纳入最终
shell workflow summary/display/render-state
- `createIniPanelShellViewModel()` 暴露 `shellPersistenceSummary` 和
`createMachineSessionPersistenceSummary`
- Workflow overview browser DOM 默认显示:
- `persistence-summary: waiting: 5 missing`
- `api-surface-inventory: ready: 5 rows`
- External shell browser workflow smoke 在真实 panel/control-page workflow 后读取
`linuxCncIniPanelApi.getMachineSessionPersistenceSummary()`,再注入
`getShellSessionHandoffWorkflowSummary({ persistenceSummary })`,验证:
- `persistence-summary: ready: 7 rows`
- workflow DOM mount row count
- SDK smoke 覆盖 `createIniPanelShellViewModel()` 的 workflow summary 包含
`persistence-summary` row
- `runtime/sdk/README.md`、`docs/panel-entry.md`、`docs/project-release-handoff.md` 记录该 workflow
summary row
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 与 Browser/UI workflow 状态;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
ini_panel_entry_docs_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
ui_node_smokes=ok
sdk_surface_node_smoke=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批可补齐 release/project docs smoke 对 `persistence-summary` row 的显式
断言,或开始收口最终提交前的全量 project release gate仍保持只读不新增控制按钮不解析 G-code
不扩大 LinuxCNC 语义边界。
三十一、2026-06-16 继续执行记录INI panel launch/workflow persistence summary API
本轮继续以功能实质性推进为主,把 `createMachineSessionPersistenceSummary()` 从 SDK/UI helper 推进为
真实 launch API 和 workflow overview API surface。外部 shell 现在可以从页面 API 直接构造 OPFS/session
persistence summary不需要导入私有模块或绕过 browser namespace。
完成内容:
- `createIniPanelLaunchApiManifest().methods` 新增 `getMachineSessionPersistenceSummary`
- `createIniPanelShellWorkflowOverviewContract().methodNames` 新增
`getWorkflowOverviewPersistenceSummary`
- `launch.html` 暴露:
- `linuxCncIniPanelLaunchApi.getMachineSessionPersistenceSummary()`
- `workflow-overview.html` 暴露:
- `linuxCncIniPanelWorkflowOverviewApi.getWorkflowOverviewPersistenceSummary()`
- Browser launch smoke 覆盖 launch API persistence summary API name 与 rows
- Browser workflow overview smoke 覆盖 workflow overview API persistence summary API name 与 rows
- UI Node smoke 覆盖 launch manifest、workflow overview contract/readiness 和 shell integration manifest
- `docs/panel-entry.md`、`docs/project-release-handoff.md` 记录 launch/workflow overview API 暴露该 helper
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.sh
wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.sh
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
ini_panel_entry_docs_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ini_panel_ui_shell_node_smoke=ok
ui_node_smokes=ok
sdk_surface_node_smoke=ok
browser_ini_launch_smoke=ok
browser_ini_workflow_overview_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批建议运行完整 project release gate 并根据结果只修实质性 gate 缺口;
仍保持只读,不新增控制按钮,不解析 G-code不扩大 LinuxCNC 语义边界。
三十二、2026-06-16 继续执行记录INI panel API inventory persistence summary rows
本轮继续以功能实质性推进为主,把 OPFS/session persistence summary 纳入 shell API surface inventory。
外部 shell 现在通过 `getShellApiSurfaceInventory()` 或
`getWorkflowOverviewApiSurfaceInventory()` 可以同时看到 API 方法覆盖、session readiness report rows
和 persistence summary rows。
完成内容:
- `createIniPanelShellApiSurfaceInventory()` 新增可选 `persistenceSummary` 输入;
- inventory `counts` 新增 `persistenceSummaryRows`
- inventory `apiNames` 新增 `persistenceSummary`
- inventory `entries` 新增 `persistence-summary`
- inventory `rows` 新增 `persistence-summary`
- `createIniPanelShellViewModel()` 将 `shellPersistenceSummary` 注入 `shellApiSurfaceInventory`
- Browser launch smoke 覆盖 `shellApiSurfaceInventory.counts.persistenceSummaryRows`
- Browser workflow overview smoke 覆盖 workflow overview API inventory 的 persistence summary rows
- Browser shell integration workflow smoke 在真实 panel summary 下把 persistence summary 注入
`getShellApiSurfaceInventory()` 并验证 row count
- SDK/UI node smoke 覆盖 workflow summary 的 API inventory row 从 `ready: 5 rows` 推进为
`ready: 6 rows`
- `runtime/sdk/README.md`、`docs/panel-entry.md` 记录 inventory 包含 persistence summary row counts
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
ini_panel_entry_docs_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
ini_panel_ui_shell_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ui_node_smokes=ok
sdk_surface_node_smoke=ok
browser_ini_launch_smoke=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批建议运行完整 project release gate若通过则整理最终提交若失败
只修实质性 gate 缺口;仍保持只读,不新增控制按钮,不解析 G-code不扩大 LinuxCNC 语义边界。
三十三、2026-06-16 继续执行记录INI panel persistence summary display/render state
本轮继续以功能实质性推进为主,把 OPFS/session persistence summary 从数据 report 推进为可直接显示的
display view-model 和 render-state。外部 shell 现在可以拿到稳定标题、状态、明细、rows、statusLine
和 dataset 字段,不需要自行拼接 persistence 状态文案。
完成内容:
- `panel-state-summary.js` 新增:
- `createMachineSessionPersistenceDisplayViewModel()`
- `createMachineSessionPersistenceRenderState()`
- persistence render-state 输出:
- `apiName: "machine-session-persistence-render-state"`
- `renderStateVersion`
- `phase`
- `ready`
- `title`
- `statusText`
- `detailText`
- `statusLine`
- `rows`
- `dataset.persistencePhase`
- `dataset.persistenceReady`
- `dataset.persistenceScope`
- `app.js` 暴露:
- `linuxCncIniPanelApi.getMachineSessionPersistenceDisplayViewModel()`
- `linuxCncIniPanelApi.getMachineSessionPersistenceRenderState()`
- legacy window getters
- `ui-shell.js` re-export 新 display/render helpers
- `runtime/sdk/src/index.js` re-export 新 display/render helpers
- `verify_ini_panel_state_summary.mjs` 覆盖 ready display view-model、ready render-state 和 waiting
render-state
- `ini_panel_smoke.html` 覆盖真实 browser OPFS/session workflow 后的 display/render state
- `verify_sdk_surface.mjs` 覆盖 SDK export 和 render-state API name
- `docs/panel-entry.md`、`docs/project-release-handoff.md`、`runtime/sdk/README.md` 记录新 helper
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/ui/node/verify_ini_panel_state_summary.sh
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
project_release_handoff_docs_node_smoke=ok
ui_node_smokes=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
ini_panel_state_summary_node_smoke=ok
ini_panel_ui_shell_node_smoke=ok
sdk_surface_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
browser_ini_opfs_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续以实质能力推进为主。下一批建议运行完整 project release gate若通过则整理最终提交若失败
只修实质性 gate 缺口;仍保持只读,不新增控制按钮,不解析 G-code不扩大 LinuxCNC 语义边界。
三十四、2026-06-16 继续执行记录project release gate validation closure
本轮按上一批计划运行完整 project release gate把当前 OPFS/session persistence display/render helper、
SDK/API surface、browser/UI workflow、docs smoke、host/runtime boundary smoke 一次性收口到可交付验证状态。
完成内容:
- 运行 `wasm-port/tests/host/verify_project_release_gate.sh`
- 验证当前未提交实现可通过统一发布门禁;
- 确认 browser INI panel、control page、launch、workflow overview、shell integration workflow smoke 仍通过;
- 确认 SDK surface、OPFS/session docs、sim-config coverage docs、host/runtime boundary docs、project release handoff docs
均在 host aggregate gate 中通过;
- 确认 `browser_interp_smoke=ok` 仍通过;
- 确认 sim config inventory 仍为:
- `executed=28`
- `passed=28`
- `skipped=131`
- `unexpected_fail=0`
- 确认 blocked runtime family 未 promotion
- `L4-USER-M-PROCESS`
- `L4-TOOL-DB`
- `L4-PYTHON-REMAP`
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
wasm-port/tests/host/verify_project_release_gate.sh
```
关键输出:
```text
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
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
ui_node_smokes=ok
ini_wasm_node_smoke=ok
sim_configs_wasm_node_smoke=ok
nc_files_wasm_node_smoke=ok
tp_wasm_node_smoke=ok
opfs_file_service_node_smoke=ok
sdk_surface_node_smoke=ok
opfs_session_docs_node_smoke=ok
sim_configs_coverage_docs_node_smoke=ok
host_runtime_boundary_docs_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
browser_interp_smoke=ok
host_wasm_opfs_browser_smokes=ok
project_release_gate=ok
```
下一步工作计划:
整理并提交当前批次。提交后若工作树 clean则当前 scope 已达到 `PROJECT_COMPLETION_TRACKER.md`
定义的发布验证闭环;后续只在新 scope 请求或真实 LinuxCNC host runtime 可用时继续推进 blocked runtime family。
三十五、2026-06-16 继续执行记录project release readiness SDK report
本轮继续以功能实质性推进为主,把当前 release gate、sim-config baseline 和 blocked runtime family
从文档/脚本说明推进为 SDK 可调用的机器可读 readiness report方便 CI dashboard 或外部调用方在不解析
Markdown 的情况下判断当前 scope 是否具备发布证据。
完成内容:
- 新增 `runtime/sdk/src/project-release-readiness.js`
- 新增 `createProjectReleaseReadinessReport()`
- report 输出:
- `apiName: "project-release-readiness-report"`
- `reportVersion`
- `phase`
- `ready`
- `missing`
- `releaseGate.command`
- `releaseGate.expectedOutput`
- `simConfigInventory` baseline
- `blockedRuntimeFamilies`
- `promotedRuntimeFamilies`
- `promotedBlockedFamilies`
- `gates`
- `rows`
- 默认 report 不声称发布完成,只有调用方提供 `project_release_gate=ok` 等 observed output 或 gate result
时才会将 project release gate 判定为 passed
- 若调用方传入被阻塞 runtime family 的 promotionreport 会保留 `blocked-runtime-families` missing
- `runtime/sdk/src/index.js` re-export 新 helper
- `runtime/sdk/README.md` 新增 Project release readiness export 说明;
- `docs/project-release-handoff.md` 说明外部 CI/dashboard 使用方式;
- `verify_sdk_surface.mjs` 覆盖 waiting、ready、blocked promotion 三种 report
- `verify_project_release_handoff_docs.mjs` 覆盖文档中的新 helper
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 与 SDK/release gate 状态;
- 未新增控制按钮;
- 未执行 shell command helper
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
sdk_surface_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
ui_node_smokes=ok
browser_ini_shell_integration_workflow_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
整理并提交当前批次。提交后如果继续推进,可优先把 release readiness report 暴露给 project release gate
wrapper 或生成 artifact仍保持只读和证据驱动不执行 action-plan不扩大 CNC 语义边界。
三十六、2026-06-16 继续执行记录project release readiness gate artifact
本轮严格按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
把上一批 SDK readiness report 接入实际 project release gate。现在 `verify_project_release_gate.sh`
成功通过后会生成并验证机器可读 JSON artifactCI 或外部工具可以直接消费,不需要解析 Markdown 或 shell log。
完成内容:
- 新增 `tests/host/write_project_release_readiness_artifact.mjs`
- 新增 `tests/host/verify_project_release_readiness_artifact.mjs`
- 新增 `tests/host/verify_project_release_readiness_artifact.sh`
- `verify_project_release_gate.sh` 在所有 gate 通过后:
- 调用 SDK `createProjectReleaseReadinessReport()`
- 写入 `build/project-release-readiness.json`
- 校验 artifact `apiName/reportVersion/ready/phase/missing/releaseGate/simConfigInventory/blockedRuntimeFamilies/gates/rows`
- 输出 `project_release_readiness_artifact=...`
- 输出 `project_release_readiness_artifact_node_smoke=ok`
- `docs/project-release-handoff.md` 记录 release gate artifact 路径、生成时机和 smoke 输出;
- `runtime/sdk/README.md` 记录 release gate 会复用 SDK helper 生成 artifact
- `verify_project_release_handoff_docs.mjs` 覆盖 artifact path、writer、verifier 和 smoke
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch、release gate wrapper 状态;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
node wasm-port/tests/host/write_project_release_readiness_artifact.mjs
wasm-port/tests/host/verify_project_release_readiness_artifact.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/host/verify_project_release_gate.sh
```
关键输出:
```text
project_release_readiness_artifact=/home/cnc/桌面/cnc_wams/wasm-port/build/project-release-readiness.json
project_release_readiness_artifact_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
sdk_surface_node_smoke=ok
host_wasm_opfs_browser_smokes=ok
project_release_gate=ok
```
artifact 摘要:
```json
{
"apiName": "project-release-readiness-report",
"ready": true,
"phase": "ready",
"missing": [],
"gateCount": 9
}
```
下一步工作计划:
继续只做实质能力推进。下一批优先选择真实 browser/UI workflow 或外部 shell 可消费能力;
如果继续 release 路径,必须产出可执行 gate 或可消费 artifact不再只做文档/记录补强。
三十七、2026-06-16 继续执行记录project release readiness artifact validation workflow
本轮继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
把 release readiness artifact 从 host 测试里的硬编码断言推进为 SDK 可调用的 artifact parse/validation
workflow。外部工具现在可以直接复用 SDK 校验 `build/project-release-readiness.json`host gate verifier
也改为复用同一套 SDK workflow。
完成内容:
- `runtime/sdk/src/project-release-readiness.js` 新增:
- `parseProjectReleaseReadinessArtifactJson()`
- `createProjectReleaseReadinessArtifactValidation()`
- artifact validation 输出:
- `apiName: "project-release-readiness-artifact-validation"`
- `validationVersion`
- `phase`
- `ready`
- `missing`
- `artifactApiName`
- `artifactVersion`
- `gateCount`
- `blockedRuntimeFamilies`
- `rows`
- 修复 artifact validation 中空 `gates` 数组会因 `Array.every()` 空真值被误判为 passed 的问题;
- `runtime/sdk/src/index.js` re-export 新 parse/validation API
- `tests/host/verify_project_release_readiness_artifact.mjs` 改为调用 SDK parse/validation workflow
- `verify_sdk_surface.mjs` 覆盖:
- artifact JSON parse
- ready artifact validation
- 空 artifact blocked/missing
- blocked runtime family 不被误 promotion
- `runtime/sdk/README.md` 和 `docs/project-release-handoff.md` 记录外部工具如何复用 artifact validation API
- `verify_project_release_handoff_docs.mjs` 覆盖新 artifact validation API
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch、SDK/API surface 与 release gate wrapper 状态;
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/host/verify_project_release_readiness_artifact.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_project_release_gate.sh
```
关键输出:
```text
sdk_surface_node_smoke=ok
project_release_readiness_artifact_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_unexpected_fail=0
ui_node_smokes=ok
browser_ini_shell_integration_workflow_smoke=ok
project_release_readiness_artifact=/home/cnc/桌面/cnc_wams/wasm-port/build/project-release-readiness.json
host_wasm_opfs_browser_smokes=ok
project_release_gate=ok
```
下一步工作计划:
继续只做实质能力推进。优先选择真实 browser/UI workflow 或外部 shell 可消费能力;
如果继续 release 路径,必须继续产出可调用 API、可验证 workflow、可执行 gate 或可消费 artifact。
三十八、2026-06-16 继续执行记录workflow overview release readiness artifact browser API
本轮继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
把 project release readiness artifact validation 从 SDK/host workflow 推进到真实 browser workflow overview
iframe API。外部 shell 现在可以向 workflow overview iframe 传入 readiness artifact JSON并获得稳定的
只读 validation report。
完成内容:
- `ui-shell.js` 新增:
- `validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson()`
- `createIniPanelShellWorkflowOverviewContract().methodNames` 新增:
- `validateWorkflowOverviewReleaseReadinessArtifactJson`
- `workflow-overview.html` 的 `linuxCncIniPanelWorkflowOverviewApi` 暴露:
- `validateWorkflowOverviewReleaseReadinessArtifactJson()`
- 该 API
- 解析 project release readiness artifact JSON
- 复用 SDK `createProjectReleaseReadinessArtifactValidation()`
- 返回 `ini-panel-shell-workflow-overview-release-readiness-artifact-validation`
- 返回 `phase/ready/missing/error/artifactApiName/artifactVersion/gateCount/rows/validation`
- 对 malformed JSON 返回结构化 blocked result
- `runtime/sdk/src/index.js` re-export workflow overview artifact validation wrapper
- `verify_ini_panel_ui_shell.mjs` 覆盖 ready artifact 和 malformed JSON
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 contract/readiness 新 method
- `ini_panel_workflow_overview_smoke.html` 在真实 iframe 中调用新 API
- `ini_panel_shell_integration_workflow_smoke.html` 从外部 shell iframe 调用新 API
- `docs/panel-entry.md`、`docs/project-release-handoff.md`、`runtime/sdk/README.md` 记录外部调用方式;
- `verify_ini_panel_entry_docs.mjs`、`verify_project_release_handoff_docs.mjs`、`verify_sdk_surface.mjs`
覆盖新 API
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 和 Browser/UI workflow 状态;
- 未新增控制按钮;
- 未执行 release gate/action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.sh
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
wasm-port/tests/host/verify_project_release_gate.sh
```
关键输出:
```text
sdk_surface_node_smoke=ok
ini_panel_ui_shell_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
project_release_handoff_docs_node_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
project_release_readiness_artifact_node_smoke=ok
project_release_gate=ok
```
下一步工作计划:
继续只做实质能力推进。优先选择真实 browser/UI workflow 或外部 shell 可消费能力;
如果继续 release 路径,必须继续产出可调用 API、可验证 workflow、可执行 gate 或可消费 artifact。
三十九、2026-06-16 继续执行记录workflow overview release readiness artifact DOM workflow
本轮继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
把 workflow overview release readiness artifact validation 从“返回数据”推进到可直接渲染和挂载的
DOM workflow。外部 shell 现在可以把 release readiness artifact validation 渲染进 caller-owned DOM
并通过 browser smoke 验证真实 iframe 调用链。
完成内容:
- `ui-shell.js` 新增 release readiness artifact DOM workflow helpers
- `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel()`
- `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState()`
- `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract()`
- `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness()`
- `renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactState()`
- `mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactState()`
- `createIniPanelShellWorkflowOverviewContract().methodNames` 新增对应 workflow overview iframe API
- `workflow-overview.html` 的 `linuxCncIniPanelWorkflowOverviewApi` 暴露:
- `getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel()`
- `getWorkflowOverviewReleaseReadinessArtifactRenderState()`
- `getWorkflowOverviewReleaseReadinessArtifactDomContract()`
- `getWorkflowOverviewReleaseReadinessArtifactDomReadiness()`
- `renderWorkflowOverviewReleaseReadinessArtifactState()`
- `mountWorkflowOverviewReleaseReadinessArtifactState()`
- 新 DOM workflow 使用独立 scope
- `workflow-overview-release-readiness-artifact`
- 默认 selectors
- `[data-workflow-overview-release-readiness-artifact]`
- `[data-workflow-overview-release-readiness-artifact-status]`
- `[data-workflow-overview-release-readiness-artifact-rows]`
- `runtime/sdk/src/index.js` re-export 新 DOM workflow helpers
- `verify_ini_panel_ui_shell.mjs` 覆盖 display/render/DOM contract/readiness/render/mount
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 methodNames、missing method 和 helper exports
- `ini_panel_workflow_overview_smoke.html` 在真实 workflow overview iframe 中渲染 release artifact validation
- `ini_panel_shell_integration_workflow_smoke.html` 从外部 shell DOM 渲染并挂载 release artifact validation
- `verify_sdk_surface.mjs` 覆盖 SDK export 和 render-state scope
- `docs/panel-entry.md`、`docs/project-release-handoff.md`、`runtime/sdk/README.md` 记录新 DOM workflow
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 和 Browser/UI workflow 状态;
- 未新增控制按钮;
- 未执行 release gate/action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
wasm-port/tests/host/verify_project_release_gate.sh
```
关键输出:
```text
ini_panel_ui_shell_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
project_release_handoff_docs_node_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
project_release_readiness_artifact_node_smoke=ok
project_release_gate=ok
```
下一步工作计划:
继续只做实质能力推进。优先选择真实 browser/UI workflow 或外部 shell 可消费能力;
如果继续 release 路径,必须继续产出可调用 API、可验证 workflow、可执行 gate 或可消费 artifact。
四十、2026-06-16 继续执行记录workflow overview release readiness artifact URL workflow
本轮继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
把 release readiness artifact validation 从 JSON 字符串调用推进到真实 browser URL 加载 workflow。外部
shell 现在可以让 workflow overview iframe fetch artifact JSON URL、复用 validation/display/render/mount
链路,并得到结构化 ready/blocked workflow result。
完成内容:
- `ui-shell.js` 新增:
- `loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl()`
- `createIniPanelShellWorkflowOverviewContract().methodNames` 新增:
- `loadWorkflowOverviewReleaseReadinessArtifactUrl`
- `createIniPanelLaunchApiManifest().methods` 和 `launch.html` 暴露:
- `loadWorkflowOverviewReleaseReadinessArtifactUrl()`
- `workflow-overview.html` 的 `linuxCncIniPanelWorkflowOverviewApi` 暴露:
- `loadWorkflowOverviewReleaseReadinessArtifactUrl()`
- 新 workflow
- fetch artifact URL
- 复用 `validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson()`
- 生成 display view-model 和 render-state
- 可选 mount 到 caller-owned DOM
- 对缺 URL、缺 fetch、HTTP failure、DOM missing 和 validation blocked 返回结构化 blocked result
- `runtime/sdk/src/index.js` re-export 新 URL workflow helper
- 新增 `tests/fixtures/project-release-readiness-ready.json`,用于真实 browser HTTP fetch smoke
- `verify_ini_panel_ui_shell.mjs` 覆盖 ready URL workflow、missing DOM、HTTP blocked
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 workflow overview contract/readiness 新 method
- `verify_ini_panel_launch_api_manifest.mjs` 覆盖 launch API manifest 和 browser namespace 暴露;
- `verify_sdk_surface.mjs` 覆盖 SDK export 和可调用 URL workflow
- `ini_panel_workflow_overview_smoke.html` 在真实 workflow overview iframe 中 fetch fixture artifact 并 mount
- `ini_panel_shell_integration_workflow_smoke.html` 从外部 shell 验证 iframe URL workflow 和 launch API 转发;
- `docs/panel-entry.md`、`docs/project-release-handoff.md`、`runtime/sdk/README.md` 记录新 URL workflow
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch、SDK/API surface 和 Browser/UI workflow 状态;
- 未新增控制按钮;
- 未执行 release gate/action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过(先行 targeted
```bash
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.sh
wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.sh
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
```
关键输出:
```text
sdk_surface_node_smoke=ok
ini_panel_ui_shell_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
project_release_handoff_docs_node_smoke=ok
```
下一步工作计划:
继续只做实质能力推进。优先选择真实 browser/UI workflow、SDK/API surface、或可执行 release/host gate
不要做只整理断言或局部常量化的批次。
四十一、2026-06-16 继续执行记录release artifact URL browser workflow gate
本轮继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
把上一批 release readiness artifact URL workflow 提升为独立可执行 browser gate并纳入 project
release readiness artifact 的 required gates。外部 CI 现在可以单独验证 workflow overview iframe
从 URL fetch artifact、validate、render 和 mount 的真实 browser 能力。
完成内容:
- 新增真实 browser gate
- `tests/browser/release_artifact_url_workflow_smoke.html`
- `tests/browser/verify_release_artifact_url_workflow_browser.sh`
- 新 gate 验证:
- missing URL 返回结构化 blocked
- missing DOM 返回结构化 blocked 且 validation ready
- ready DOM 下 fetch `tests/fixtures/project-release-readiness-ready.json`
- validation gateCount 为 10
- render-state 和 mount result 为 ready
- 输出 `browser_release_artifact_url_workflow_smoke=ok`
- `runtime/sdk/src/project-release-readiness.js` 的 required release gates 新增:
- `release-artifact-url-browser`
- `verify_project_release_gate.sh` 在 browser INI smoke 后运行新 browser gate
- `write_project_release_readiness_artifact.mjs` 写入新 gate result 和 observed output
- `verify_project_release_readiness_artifact.mjs` 期望 `gateCount=10`
- `tests/fixtures/project-release-readiness-ready.json` 新增第 10 个 gate
- `verify_sdk_surface.mjs`、`verify_ini_panel_ui_shell.mjs`、workflow overview browser smoke、
shell integration browser smoke 同步 `gateCount=10`
- `docs/project-release-handoff.md` 和 `verify_project_release_handoff_docs.mjs` 记录新 gate
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 和 release gate wrapper 状态;
- 清理 `text14.txt` 尾部重复中文编号,使续接记录标题保持唯一;
- 未新增控制按钮;
- 未执行 release gate/action-plan 以外的 CNC 行为;
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过(先行 targeted
```bash
wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tests/host/verify_project_release_readiness_artifact.sh wasm-port/tests/fixtures/project-release-readiness-ready.json
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
git diff --check
```
关键输出:
```text
browser_release_artifact_url_workflow_smoke=ok
sdk_surface_node_smoke=ok
ini_panel_ui_shell_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
project_release_readiness_artifact_node_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
ui_node_smokes=ok
```
下一步工作计划:
继续只做实质能力推进。优先选择可执行 gate、SDK/API surface、或真实 browser workflow
不要做只整理断言或局部常量化的批次。
四十七、2026-06-16 继续执行记录project release readiness artifact validation summary view-model API
本轮继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
把 release readiness artifact validation 进一步封装为 dashboard/browser shell 可直接消费的 summary
view-model。外部调用方现在可以读取稳定 statusLine 和 rows而不需要自己解释 validation missing、
gateManifestReady、gateResultMatrixReady 或 gateActionPlanReady 字段。
完成内容:
- `runtime/sdk/src/project-release-readiness.js` 新增:
- `createProjectReleaseReadinessArtifactValidationSummaryViewModel()`
- 新 summary view-model 返回:
- `apiName: project-release-readiness-artifact-validation-summary-view-model`
- `viewModelVersion: 1`
- `phase/ready`
- `title/statusText/detailText/statusLine`
- rows`artifact`、`gate-count`、`gate-manifest`、`gate-result-matrix`、`gate-action-plan`、`missing`
- 支持 ready artifact 和 stale/missing artifact 两类显示状态;
- `runtime/sdk/src/index.js` re-export 新 summary API
- `verify_project_release_gate_manifest.mjs` 覆盖 ready artifact summary 和 stale artifact summary
- `verify_sdk_surface.mjs` 覆盖 SDK export 和 ready statusLine
- `runtime/sdk/README.md`、`docs/project-release-handoff.md`、`verify_project_release_handoff_docs.mjs`
记录 artifact validation summary API
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 和 SDK/API surface 状态;
- 未新增控制按钮;
- 未在 SDK 中执行 shell command
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过(先行 targeted
```bash
wasm-port/tests/sdk/node/verify_project_release_gate_manifest.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tests/host/verify_project_release_readiness_artifact.sh wasm-port/tests/fixtures/project-release-readiness-ready.json
```
关键输出:
```text
project_release_gate_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
project_release_readiness_artifact_node_smoke=ok
```
下一步工作计划:
继续只做实质能力推进。优先选择可执行 gate、SDK/API surface、或真实 browser workflow
不要做只整理断言或局部常量化的批次。
四十六、2026-06-16 继续执行记录project release readiness artifact embedded gate evidence validation
本轮继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
把 release readiness artifact validation 从基础 report 字段校验升级为 embedded gate evidence 校验。现在
旧 release JSON 如果缺少 gate manifest、gate result matrix 或 gate action plan会被同一个可执行 artifact
gate 阻断,外部 CI/SDK 不会误收过期工件。
完成内容:
- `createProjectReleaseReadinessArtifactValidation()` 现在校验 artifact 内嵌:
- `gateManifest`
- `gateResultMatrix`
- `gateActionPlan`
- validation 结果新增:
- `gateManifestReady`
- `gateResultMatrixReady`
- `gateActionPlanReady`
- missing reasons 新增:
- `gateManifest`
- `gateResultMatrix`
- `gateActionPlan`
- validation rows 新增:
- `gate-manifest`
- `gate-result-matrix`
- `gate-action-plan`
- 刷新 `tests/fixtures/project-release-readiness-ready.json`,让 fixture 携带 embedded gate evidence
- `verify_project_release_readiness_artifact.mjs` 现在断言 fixture/report 内嵌 manifest、matrix、action plan
- `verify_sdk_surface.mjs` 覆盖新 validation ready flags、rows 和 stale artifact missing reasons
- `runtime/sdk/README.md`、`docs/project-release-handoff.md`、`verify_project_release_handoff_docs.mjs`
记录 embedded gate evidence validation
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 和 project release gate wrapper 状态;
- 未新增控制按钮;
- 未在 SDK 中执行 shell command
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过(先行 targeted
```bash
wasm-port/tests/host/verify_project_release_readiness_artifact.sh wasm-port/tests/fixtures/project-release-readiness-ready.json
wasm-port/tests/sdk/node/verify_project_release_gate_manifest.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
```
关键输出:
```text
project_release_readiness_artifact_node_smoke=ok
project_release_gate_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
```
下一步工作计划:
继续只做实质能力推进。优先选择可执行 gate、SDK/API surface、或真实 browser workflow
不要做只整理断言或局部常量化的批次。
四十五、2026-06-16 继续执行记录project release gate action-plan SDK API
本轮继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
把 project release gate matrix 进一步提升为外部 CI/SDK 可直接消费的 action-plan API。外部工具现在可以
从 observed outputs、explicit gate results 或现成 matrix 得到 pending gate commands、next command、
display rows 和可展示/可执行的 shell script而不需要复制 release gate manifest 顺序或匹配逻辑。
完成内容:
- `runtime/sdk/src/project-release-readiness.js` 新增:
- `createProjectReleaseGateActionPlan()`
- 新 action plan 返回:
- `apiName: project-release-gate-action-plan`
- `planVersion: 1`
- `phase/ready`
- `gateCount/completedCount/pendingCount`
- `completedGateIds/pendingGateIds`
- `nextGateId/nextCommand`
- `commands[]`
- `rows[]`
- `shellScript`
- `createProjectReleaseReadinessReport()` 现在嵌入 `gateActionPlan`,与 `gateManifest` 和
`gateResultMatrix` 使用同一份 evidence
- `runtime/sdk/src/index.js` re-export 新 action-plan API
- `verify_project_release_gate_manifest.mjs` 覆盖 partial matrix action plan、next command、pending
commands 和 ready shellScript
- `verify_sdk_surface.mjs` 覆盖 SDK export、默认 waiting action plan、逐项 full-pass shellScript
- `runtime/sdk/README.md`、`docs/project-release-handoff.md`、`verify_project_release_handoff_docs.mjs`
记录 action-plan API
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 和 SDK/API surface 状态;
- 未新增控制按钮;
- 未在 SDK 中执行 shell command
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过(先行 targeted
```bash
wasm-port/tests/sdk/node/verify_project_release_gate_manifest.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
```
关键输出:
```text
project_release_gate_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
```
下一步工作计划:
继续只做实质能力推进。优先选择可执行 gate、SDK/API surface、或真实 browser workflow
不要做只整理断言或局部常量化的批次。
四十二、2026-06-16 继续执行记录project release gate manifest SDK API/gate
本轮继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
把 project release required gates 从 SDK 内部常量提升为外部可调用 manifest API并新增独立 Node gate
验证 manifest 与 readiness report/artifact validation 共用同一套 gate 定义。
完成内容:
- `runtime/sdk/src/project-release-readiness.js` 新增:
- `createProjectReleaseGateManifest()`
- 新 manifest 返回:
- `apiName: project-release-gate-manifest`
- `manifestVersion: 1`
- `gateCount: 10`
- `gateIds`
- `gates[]` 的 `id/label/command/expectedOutput`
- `createProjectReleaseReadinessReport()` 现在内嵌同一 `gateManifest`
- `createProjectReleaseReadinessArtifactValidation()` 现在返回:
- `expectedGateCount`
- `expectedGateIds`
- `runtime/sdk/src/index.js` re-export 新 manifest API
- 新增可执行 SDK gate
- `tests/sdk/node/verify_project_release_gate_manifest.mjs`
- `tests/sdk/node/verify_project_release_gate_manifest.sh`
- `verify_sdk_surface.sh` 聚合运行新 gate
- `verify_sdk_surface.mjs` 覆盖 SDK export、report.gateManifest 和 validation expected gate fields
- `verify_project_release_readiness_artifact.mjs` 覆盖 expected gate fields
- `runtime/sdk/README.md`、`docs/project-release-handoff.md`、`verify_project_release_handoff_docs.mjs`
记录 manifest API
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 和 SDK/API surface 状态;
- 未新增控制按钮;
- 未执行 release gate/action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过(先行 targeted
```bash
wasm-port/tests/sdk/node/verify_project_release_gate_manifest.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/host/verify_project_release_readiness_artifact.sh wasm-port/tests/fixtures/project-release-readiness-ready.json
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
```
关键输出:
```text
project_release_gate_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_readiness_artifact_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
```
下一步工作计划:
继续只做实质能力推进。优先选择可执行 gate、SDK/API surface、或真实 browser workflow
不要做只整理断言或局部常量化的批次。
四十三、2026-06-16 继续执行记录project release gate result matrix SDK API
本轮继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
把 project release gate evidence matching 从 report 内部实现提升为外部可调用 result matrix API。外部
CI 现在可以直接把 observed outputs 和 explicit gate results 归一化为每个 required gate 的 passed/unknown
行,不需要复制 SDK 内部匹配逻辑。
完成内容:
- `runtime/sdk/src/project-release-readiness.js` 新增:
- `createProjectReleaseGateResultMatrix()`
- 新 matrix 返回:
- `apiName: project-release-gate-result-matrix`
- `matrixVersion: 1`
- `phase/ready`
- `gateCount/passedCount/unknownCount`
- `missingGateIds`
- `manifest`
- `rows[]` 的 `id/label/command/expectedOutput/status/passed`
- `createProjectReleaseReadinessReport()` 现在复用该 matrix并返回 `gateResultMatrix`
- `runtime/sdk/src/index.js` re-export 新 matrix API
- `verify_project_release_gate_manifest.mjs` 覆盖 partial observed outputs、explicit gate result 和 unknown rows
- `verify_sdk_surface.mjs` 覆盖 SDK export、report.gateResultMatrix 和单 gate observed output matching
- `runtime/sdk/README.md`、`docs/project-release-handoff.md`、`verify_project_release_handoff_docs.mjs`
记录 result matrix API
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 和 SDK/API surface 状态;
- 未新增控制按钮;
- 未执行 release gate/action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过(先行 targeted
```bash
wasm-port/tests/sdk/node/verify_project_release_gate_manifest.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tests/host/verify_project_release_readiness_artifact.sh wasm-port/tests/fixtures/project-release-readiness-ready.json
```
关键输出:
```text
project_release_gate_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
project_release_readiness_artifact_node_smoke=ok
```
下一步工作计划:
继续只做实质能力推进。优先选择可执行 gate、SDK/API surface、或真实 browser workflow
不要做只整理断言或局部常量化的批次。
四十四、2026-06-16 继续执行记录project release readiness summary view-model API
本轮继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”推进,
把 project release readiness report 进一步封装成 dashboard/UI 可直接消费的 summary view-model。外部
CI 或页面现在可以直接读取稳定 statusLine 和 rows而不必自己解释 gate matrix、sim-config inventory
和 blocked runtime family 字段。
完成内容:
- `runtime/sdk/src/project-release-readiness.js` 新增:
- `createProjectReleaseReadinessSummaryViewModel()`
- 新 summary view-model 返回:
- `apiName: project-release-readiness-summary-view-model`
- `viewModelVersion: 1`
- `phase/ready`
- `title/statusText/detailText/statusLine`
- rows`gate-results`、`unknown-gates`、`sim-config-inventory`、`blocked-runtime-families`、`missing`
- 支持 ready、waiting、promoted blocked family 三类显示状态;
- `runtime/sdk/src/index.js` re-export 新 summary API
- `verify_project_release_gate_manifest.mjs` 覆盖 ready summary、default waiting summary、blocked promotion row
- `verify_sdk_surface.mjs` 覆盖 SDK export 和 ready statusLine
- `runtime/sdk/README.md`、`docs/project-release-handoff.md`、`verify_project_release_handoff_docs.mjs`
记录 summary API
- `PROJECT_COMPLETION_TRACKER.md` 同步 latest completed batch 和 SDK/API surface 状态;
- 未新增控制按钮;
- 未执行 release gate/action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过(先行 targeted
```bash
wasm-port/tests/sdk/node/verify_project_release_gate_manifest.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tests/host/verify_project_release_readiness_artifact.sh wasm-port/tests/fixtures/project-release-readiness-ready.json
```
关键输出:
```text
project_release_gate_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
project_release_readiness_artifact_node_smoke=ok
```
下一步工作计划:
继续只做实质能力推进。优先选择可执行 gate、SDK/API surface、或真实 browser workflow
不要做只整理断言或局部常量化的批次。