3671 lines
154 KiB
Plaintext
3671 lines
154 KiB
Plaintext
项目整体完成情况与后续执行计划
|
||
|
||
生成时间: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 的 promotion,report 会保留 `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 artifact,CI 或外部工具可以直接消费,不需要解析 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;
|
||
不要做只整理断言或局部常量化的批次。
|