Files
cnc_wams/text13.txt

1588 lines
64 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
项目整体完成情况与后续执行计划
生成时间2026-06-15 CST
本文件接替 `text12.txt`。后续工作按 `text13.txt` 执行;除非明确要求审计旧记录,
不要再回到 `text1/text2/text3/text4/text5/text6/text7/text8/text9/text10/text11/text12`
扩展进度。`text12.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. 当前续接点。
`text12.txt` 已推进到:
```text
二十六、2026-06-15 继续执行记录INI panel shell session handoff summary schema gate
```
本文件从 `text13.txt` 重新开始记录后续进度。
2. 每轮开始前必须先执行:
```bash
git status --short
git log -5 --oneline
tail -n 120 text13.txt
awk '/^[一二三四五六七八九十百]+、/ {print}' text13.txt | sort | uniq -d
```
执行规则:
- 如果 `git status --short` 是 clean且最新提交已经包含当前建议工作不要重复追加记录
- 每轮只追加一个新的中文编号记录;
- 提交前再次检查标题唯一性;
- `text13.txt` 只记录新的后续进度,不复制 `text12.txt` 的长历史;
- 每批完成后,如果要写记录,先写 `text13.txt`,再提交该批代码和记录;
- 如果发现重复记录,先做 dedupe 清理并提交,再继续新功能或新 guard
- `text12.txt` 不再追加新进度,除非明确要求审计或修正历史记录。
三、当前完成情况摘要
1. 当前工作树状态。
切换到 `text13.txt` 时工作树包含上一批未提交改动:
```text
M text12.txt
M wasm-port/docs/panel-entry.md
M wasm-port/runtime/ui/ini-panel/launch.html
M wasm-port/runtime/ui/ini-panel/ui-shell.js
M wasm-port/tests/browser/ini_panel_launch_smoke.html
M wasm-port/tests/browser/ini_panel_shell_integration_workflow_smoke.html
M wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs
M wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.mjs
M wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.mjs
M wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs
```
上述改动对应 `text12.txt` 第 26 条shell session handoff summary schema gate。
2. 最近提交:
```text
01817f6 推进 INI 面板 shell handoff summary browser API
b31b9a2 推进 INI 面板 shell session handoff summary
ee665c4 推进 INI 面板 shell integration workflow plan
a663c8d 推进 INI 面板 shell integration browser workflow smoke
1f9a8c3 推进 INI 面板 shell integration readiness helper
```
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 versioned schema 与 compatibility predicate。
当前聚合验证入口:
```bash
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
```
2. Browser/UI workflow 验证。
当前 browser INI panel smoke 覆盖真实 OPFS/session persistence workflow 与外部 shell handoff
```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_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
```
六、下一步建议
继续推进 SDK/API surface 与 browser/UI workflow 的交界。下一批建议增加一个
`createIniPanelShellSessionHandoffCompatibilityReport()` 或等价 helper把 summary schema
支持状态、缺失字段、version/apiName mismatch 与 blocking reasons 合并成可显示报告,便于外部
shell 在 UI 中解释为什么不能消费 handoff summary仍保持只读不新增控制按钮不解析 G-code。
一、2026-06-15 继续执行记录INI panel shell session handoff compatibility report
本轮按“第一原则:加快实质性推进”创建 `text13.txt` 续接文件,并继续推进 SDK/API
surface 与 browser/UI workflow 的交界:新增 shell session handoff compatibility report让外部
shell 能读取 display-ready 诊断,判断 handoff summary 是否可消费以及失败原因。
完成内容:
- 新建 `text13.txt`,接替 `text12.txt` 作为后续执行记录;
- `ui-shell.js` 新增 `createIniPanelShellSessionHandoffCompatibilityReport()`
- compatibility report 输出:
- `apiName: "ini-panel-shell-session-handoff-compatibility-report"`
- `reportVersion: 1`
- `phase: "ready" | "blocked"`
- `compatible`
- `summarySupported`
- `handoffReady`
- `schema`
- `summary`
- `missingFields`
- `mismatchFields`
- `blockingReasons`
- `createIniPanelShellViewModel()` 新增:
- `shellSessionHandoffCompatibilityReport`
- `createShellSessionHandoffCompatibilityReport`
- `createIniPanelLaunchApiManifest().methods` 新增
`getShellSessionHandoffCompatibilityReport`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getShellSessionHandoffCompatibilityReport()`
- `ini_panel_launch_smoke.html` 校验真实 launch iframe 的 compatibility report
- `compatible === true`
- `summarySupported === true`
- `missingFields` 为空;
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell handoff workflow 能读取
compatibility report并确认当前 report 无 blocking reasons
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖:
- ready report 完整 shape
- 错误 `summaryVersion` 进入 `mismatchFields`
- 缺字段进入 `missingFields`
- `null` summary 返回完整缺字段列表;
- blocked workflow 的 `blockingReasons` 和 `compatible === false`
- `verify_ini_panel_launch_api_manifest.mjs`、`verify_ini_panel_ui_shell.mjs`、
`verify_ini_panel_entry_docs.mjs` 与 `docs/panel-entry.md` 同步记录和校验新 helper/API
- 未新增控制按钮;
- 未解析 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_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_ui_shell.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/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_shell_integration_manifest_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_ui_shell_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_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。下一批建议把 compatibility report 用到一个真实的外部 shell
display view-model 或 DOM smoke 中,让 launch 页面能直接展示 handoff 是否可消费、缺失字段和
blocking reasons仍保持只读不新增控制按钮不解析 G-code。
二、2026-06-15 继续执行记录INI panel shell handoff display view-model
本轮按“第一原则:加快实质性推进”继续推进 browser/UI workflow把上一批 compatibility
report 接入可复用 display view-model 与真实 launch DOM让外部 shell 能直接展示 handoff
是否可消费、缺失字段、mismatch fields 与 blocking reasons。
完成内容:
- `ui-shell.js` 新增 `createIniPanelShellSessionHandoffDisplayViewModel()`
- display view-model 输出:
- `phase: "ready" | "blocked"`
- `title`
- `statusText`
- `detailText`
- `rows`
- `rows` 固定覆盖:
- `summary-supported`
- `handoff-ready`
- `missing-fields`
- `mismatch-fields`
- `blocking-reasons`
- `createIniPanelShellViewModel()` 新增:
- `shellSessionHandoffDisplayViewModel`
- `createShellSessionHandoffDisplayViewModel`
- `createIniPanelLaunchApiManifest().methods` 新增
`getShellSessionHandoffDisplayViewModel`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getShellSessionHandoffDisplayViewModel()`
- `launch.html` 新增只读 DOM 展示区域:
- `[data-handoff-status]`
- `[data-handoff-rows]`
- `[data-handoff-value="missing-fields"]`
- `[data-handoff-value="blocking-reasons"]`
- `ini_panel_launch_smoke.html` 校验真实 launch iframe
- display view-model `statusText === "Ready"`
- display rows 数量为 5
- DOM status 为 `Ready: No blocking reasons`
- DOM missing fields 为 `none`
- DOM blocking reasons 为 `none`
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 能读取
display view-model并确认 display status/detail 与 compatibility report 一致;
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖:
- ready display view-model 完整 shape
- 错误 `summaryVersion` 显示到 `mismatch-fields` row
- `verify_ini_panel_ui_shell.mjs` 覆盖 shell view-model 的 display view-model shape
- `verify_ini_panel_launch_api_manifest.mjs`、`verify_ini_panel_entry_docs.mjs` 与
`docs/panel-entry.md` 同步记录和校验新 helper/API/DOM 节点;
- 未新增控制按钮;
- 未解析 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_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
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_shell_integration_manifest_node_smoke=ok
ini_panel_launch_api_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_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 与 browser/UI workflow 的交界。下一批建议新增一个只读
`createIniPanelShellSessionHandoffSnapshot()` 或等价 helper把 integration readiness、handoff
summary、compatibility report、display view-model 聚合成单次外部 shell snapshot API减少外部
shell 多次读取 launch API 的组合风险;仍保持只读,不新增控制按钮,不解析 G-code。
三、2026-06-15 继续执行记录INI panel shell handoff snapshot API
本轮按“第一原则:加快实质性推进”继续推进 OPFS/session persistence 与 browser/UI workflow
的交界,新增只读 shell handoff snapshot API把 integration readiness、handoff summary、
compatibility report 和 display view-model 聚合成单次外部 shell 读取。
完成内容:
- `ui-shell.js` 新增 `createIniPanelShellSessionHandoffSnapshot()`
- snapshot 输出:
- `apiName: "ini-panel-shell-session-handoff-snapshot"`
- `snapshotVersion: 1`
- `phase`
- `ready`
- `readiness`
- `summary`
- `compatibilityReport`
- `displayViewModel`
- `createIniPanelShellViewModel()` 新增:
- `shellSessionHandoffSnapshot`
- `createShellSessionHandoffSnapshot`
- `createIniPanelLaunchApiManifest().methods` 新增
`getShellSessionHandoffSnapshot`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getShellSessionHandoffSnapshot()`
- `ini_panel_launch_smoke.html` 校验真实 launch iframe
- snapshot version 为 1
- snapshot `ready === true`
- snapshot readiness 与独立 readiness API 一致;
- snapshot summary 与独立 summary API 一致;
- snapshot display view-model 与独立 display API 一致;
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 能读取 snapshot
并确认 snapshot display status 为 `Ready`
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖:
- ready snapshot 完整 shape
- default snapshot 包含 5 个 display rows
- `verify_ini_panel_ui_shell.mjs` 覆盖 shell view-model 的 snapshot 聚合关系;
- `verify_ini_panel_launch_api_manifest.mjs`、`verify_ini_panel_entry_docs.mjs` 与
`docs/panel-entry.md` 同步记录和校验新 helper/API
- 未新增控制按钮;
- 未解析 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_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_ui_shell.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/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_shell_integration_manifest_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_ui_shell_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_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。下一批建议在 launch 页面或等价外部 shell view 中增加一个只读
snapshot consumer helper把 snapshot 直接压成 launch-side render state并对 blocked snapshot
做 focused browser smoke仍保持只读不新增控制按钮不解析 G-code。
四、2026-06-15 继续执行记录INI panel shell handoff render-state consumer
本轮按“第一原则:加快实质性推进”继续推进 browser/UI workflow新增只读 shell handoff
render-state consumer把 handoff snapshot 压成 launch 页面和外部 shell 可直接渲染的稳定状态。
完成内容:
- `ui-shell.js` 新增 `createIniPanelShellSessionHandoffRenderState()`
- render-state 输出:
- `apiName: "ini-panel-shell-session-handoff-render-state"`
- `renderStateVersion: 1`
- `phase`
- `ready`
- `title`
- `statusText`
- `detailText`
- `statusLine`
- `rows`
- `dataset.handoffPhase`
- `dataset.handoffReady`
- `createIniPanelShellViewModel()` 新增:
- `shellSessionHandoffRenderState`
- `createShellSessionHandoffRenderState`
- `createIniPanelLaunchApiManifest().methods` 新增
`getShellSessionHandoffRenderState`
- `launch.html` 改为从 render-state 渲染 `[data-handoff-status]`、
`[data-handoff-rows]` 和 `[data-handoff-shell]` 的 phase/readiness dataset
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getShellSessionHandoffRenderState()`
- `ini_panel_launch_smoke.html` 校验真实 launch iframe
- render-state version 为 1
- render-state `ready === true`
- render-state status line 为 `Ready: No blocking reasons`
- render-state rows 与 display view-model rows 一致;
- DOM `[data-handoff-shell]` 输出 `handoffPhase=ready` 与 `handoffReady=true`
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 能读取
render-state并确认 status line 与 display rows 一致;
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖:
- ready render-state 完整 shape
- blocked snapshot render-state 的 `Blocked: summaryVersion` focused case
- `verify_ini_panel_ui_shell.mjs` 覆盖 shell view-model 的 render-state 聚合关系;
- `verify_ini_panel_launch_api_manifest.mjs`、`verify_ini_panel_entry_docs.mjs` 与
`docs/panel-entry.md` 同步记录和校验新 helper/API/DOM dataset
- 未新增控制按钮;
- 未解析 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_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_ui_shell.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/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_shell_integration_manifest_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_ui_shell_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_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 与 browser/UI workflow 的交界。下一批建议新增一个只读
`createIniPanelShellSessionHandoffActionPlan()` 或等价 helper把 render-state 的 ready/blocked
状态转成外部 shell 可执行的下一步计划(例如 target page、required methods、blocked reasons、
display rows但仍只描述流程不新增控制按钮不解析 G-code。
五、2026-06-15 继续执行记录INI panel shell handoff action plan
本轮按“第一原则:加快实质性推进”继续推进 SDK/API surface 与 browser/UI workflow 的交界,
新增只读 shell handoff action-plan helper把 snapshot/render-state 转成外部 shell 可消费的
下一步流程描述。
完成内容:
- `ui-shell.js` 新增 `createIniPanelShellSessionHandoffActionPlan()`
- action-plan 输出:
- `apiName: "ini-panel-shell-session-handoff-action-plan"`
- `planVersion: 1`
- `phase`
- `ready`
- `statusLine`
- `targetPage`
- `requiredMethods.loadSessionState`
- `requiredMethods.readStatus`
- `blockingReasons`
- `displayRows`
- `nextSteps`
- ready plan 输出两个只读流程步骤:
- `open-control-page`
- `read-readonly-status`
- blocked plan 输出一个诊断步骤:
- `resolve-blockers`
- `createIniPanelShellViewModel()` 新增:
- `shellSessionHandoffActionPlan`
- `createShellSessionHandoffActionPlan`
- `createIniPanelLaunchApiManifest().methods` 新增
`getShellSessionHandoffActionPlan`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getShellSessionHandoffActionPlan()`
- `ini_panel_launch_smoke.html` 校验真实 launch iframe
- action-plan version 为 1
- action-plan `ready === true`
- next step id 为 `open-control-page,read-readonly-status`
- `requiredMethods.readStatus === "readControlPageStatus"`
- `displayRows` 与 render-state rows 一致;
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 能读取
action-plan并确认 target page 与 next steps
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖:
- ready action-plan 完整 shape
- default action-plan next steps
- blocked/mismatch snapshot action-plan
- blocked manifest action-plan `blockingReasons`
- `verify_ini_panel_ui_shell.mjs` 覆盖 shell view-model 的 action-plan 聚合关系;
- `verify_ini_panel_launch_api_manifest.mjs`、`verify_ini_panel_entry_docs.mjs` 与
`docs/panel-entry.md` 同步记录和校验新 helper/API
- 未新增控制按钮;
- 未执行 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_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_ui_shell.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/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_shell_integration_manifest_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_ui_shell_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_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 与 browser/UI workflow 的交界。下一批建议新增一个只读
`createIniPanelShellSessionHandoffChecklist()` 或等价 helper把 action-plan、render-state、
required methods 和 blocking reasons 压成外部 shell 可显示的 checklist/health rows并补真实
browser workflow smoke仍保持只读不新增控制按钮不解析 G-code。
六、2026-06-15 继续执行记录INI panel shell handoff checklist
本轮按“第一原则:加快实质性推进”继续推进 OPFS/session persistence 与 browser/UI workflow
的交界,新增只读 shell handoff checklist helper把 action-plan、render-state、required
methods 和 blocking reasons 压成外部 shell 可显示的 health rows。
完成内容:
- `ui-shell.js` 新增 `createIniPanelShellSessionHandoffChecklist()`
- checklist 输出:
- `apiName: "ini-panel-shell-session-handoff-checklist"`
- `checklistVersion: 1`
- `phase`
- `ready`
- `statusLine`
- `checks`
- `displayRows`
- `nextStepIds`
- `blockingReasons`
- checklist checks 固定覆盖:
- `render-state`
- `target-page`
- `load-session-method`
- `read-status-method`
- `blocking-reasons`
- `createIniPanelShellViewModel()` 新增:
- `shellSessionHandoffChecklist`
- `createShellSessionHandoffChecklist`
- `createIniPanelLaunchApiManifest().methods` 新增
`getShellSessionHandoffChecklist`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getShellSessionHandoffChecklist()`
- `ini_panel_launch_smoke.html` 校验真实 launch iframe
- checklist version 为 1
- checklist `ready === true`
- 5 个 health checks 全部为 `pass`
- `nextStepIds` 为 `open-control-page,read-readonly-status`
- `displayRows` 与 render-state rows 一致;
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 能读取
checklist并确认 checks 与 nextStepIds
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖:
- ready checklist 完整 shape
- default checklist check 数量;
- blocked/mismatch checklist health rows
- `verify_ini_panel_ui_shell.mjs` 覆盖 shell view-model 的 checklist 聚合关系;
- `verify_ini_panel_launch_api_manifest.mjs`、`verify_ini_panel_entry_docs.mjs` 与
`docs/panel-entry.md` 同步记录和校验新 helper/API
- 未新增控制按钮;
- 未执行 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_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_ui_shell.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/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_shell_integration_manifest_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_ui_shell_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_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 与 OPFS/session persistence 的交界。下一批建议新增一个只读
`createIniPanelShellSessionHandoffPackage()` 或等价 helper把 snapshot、render-state、
action-plan、checklist 和 launch/control method manifests 打包成单次 browser shell 可读取的
handoff package并补真实 browser workflow smoke仍保持只读不新增控制按钮不解析 G-code。
七、2026-06-15 继续执行记录INI panel shell handoff package
本轮按“第一原则:加快实质性推进”继续推进 browser/UI workflow 与 OPFS/session persistence
的交界,新增只读 shell handoff package helper把外部 shell 需要的 handoff artifacts 和方法
manifest 聚合成单次 browser API 读取。
完成内容:
- `ui-shell.js` 新增 `createIniPanelShellSessionHandoffPackage()`
- package 输出:
- `apiName: "ini-panel-shell-session-handoff-package"`
- `packageVersion: 1`
- `phase`
- `ready`
- `statusLine`
- `manifests.shellIntegration`
- `manifests.launchApi`
- `manifests.controlPageApi`
- `manifests.launchMethods`
- `manifests.controlPageMethods`
- `snapshot`
- `renderState`
- `actionPlan`
- `checklist`
- `createIniPanelShellViewModel()` 新增:
- `shellSessionHandoffPackage`
- `createShellSessionHandoffPackage`
- `createIniPanelLaunchApiManifest().methods` 新增
`getShellSessionHandoffPackage`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getShellSessionHandoffPackage()`
- `ini_panel_launch_smoke.html` 校验真实 launch iframe
- package version 为 1
- package `ready === true`
- package launch methods 包含 `getShellSessionHandoffPackage`
- package control methods 包含 `readControlPageStatus`
- package checklist 与独立 checklist API 一致;
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 能单次读取
package并确认 checklist、action-plan 与 control-page methods
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖:
- ready package 完整 shape
- default package 包含新增 launch method
- `verify_ini_panel_ui_shell.mjs` 覆盖 shell view-model 的 package 聚合关系;
- `verify_ini_panel_launch_api_manifest.mjs`、`verify_ini_panel_entry_docs.mjs` 与
`docs/panel-entry.md` 同步记录和校验新 helper/API
- 未新增控制按钮;
- 未执行 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_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_ui_shell.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/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_shell_integration_manifest_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_ui_shell_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_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。下一批建议新增一个只读
`createIniPanelShellSessionHandoffPackageSchema()` 与
`isSupportedIniPanelShellSessionHandoffPackage()`,为 package 增加 versioned schema 与 focused
compatibility predicate便于外部 shell 在消费 package 前做单点兼容性检查;仍保持只读,不新增
控制按钮,不解析 G-code。
八、2026-06-15 继续执行记录INI panel shell handoff package schema gate
本轮按“第一原则:加快实质性推进”继续推进 browser/UI workflow为 shell handoff package
新增 versioned schema 与 focused compatibility predicate让外部 shell 能在消费 package 前做
单点 shape 兼容性检查。
完成内容:
- `ui-shell.js` 新增 `createIniPanelShellSessionHandoffPackageSchema()`
- package schema 输出:
- `apiName: "ini-panel-shell-session-handoff-package"`
- `packageVersion: 1`
- `fields`
- `manifestFields`
- `ui-shell.js` 新增 `isSupportedIniPanelShellSessionHandoffPackage()`
- predicate 检查:
- package 对象存在;
- `apiName` 匹配;
- `packageVersion` 匹配;
- package 顶层 required fields 存在;
- `manifests` 对象存在;
- manifest required fields 存在;
- `createIniPanelShellViewModel()` 新增:
- `shellSessionHandoffPackageSchema`
- `createShellSessionHandoffPackageSchema`
- `isSupportedShellSessionHandoffPackage`
- `createIniPanelLaunchApiManifest().methods` 新增:
- `getShellSessionHandoffPackageSchema`
- `isSupportedShellSessionHandoffPackage`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口:
- `getShellSessionHandoffPackageSchema()`
- `isSupportedShellSessionHandoffPackage()`
- `ini_panel_launch_smoke.html` 校验真实 launch iframe
- package schema version 为 1
- 当前 package 可支持;
- 错误 package version 被拒绝;
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 能读取
package schema并用 predicate 确认 package 可支持;
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖:
- package schema 完整 shape
- valid package 支持;
- 错误 version、错误 apiName、缺 package 字段、缺 manifest 字段、null 被拒绝;
- `verify_ini_panel_ui_shell.mjs` 覆盖 shell view-model 的 package schema 和 predicate
- `verify_ini_panel_launch_api_manifest.mjs`、`verify_ini_panel_entry_docs.mjs` 与
`docs/panel-entry.md` 同步记录和校验新 helper/API
- 未新增控制按钮;
- 未执行 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_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_ui_shell.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/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_shell_integration_manifest_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_ui_shell_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_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 与文档化可执行工作流。下一批建议新增一个只读
`createIniPanelShellSessionHandoffPackageReport()` 或等价 helper把 package schema support、
missing package fields、missing manifest fields、version/apiName mismatch 和 checklist blocking
reasons 合并成 display-ready report便于外部 shell 在拒绝 package 时显示原因;仍保持只读,
不新增控制按钮,不解析 G-code。
九、2026-06-15 继续执行记录INI panel shell handoff package report
本轮按“第一原则:加快实质性推进”继续推进 browser/UI workflow 与文档化可执行工作流,
新增只读 shell handoff package report把 package schema support、缺失字段、版本/API mismatch
和 checklist blocking reasons 合并成外部 shell 可直接显示的诊断。
完成内容:
- `ui-shell.js` 新增 `createIniPanelShellSessionHandoffPackageReport()`
- package report 输出:
- `apiName: "ini-panel-shell-session-handoff-package-report"`
- `reportVersion: 1`
- `phase`
- `ready`
- `packageSupported`
- `packageReady`
- `statusLine`
- `schema`
- `package`
- `missingPackageFields`
- `missingManifestFields`
- `mismatchFields`
- `blockingReasons`
- `rows`
- report rows 固定覆盖:
- `package-supported`
- `package-ready`
- `missing-package-fields`
- `missing-manifest-fields`
- `mismatch-fields`
- `blocking-reasons`
- `createIniPanelShellViewModel()` 新增:
- `shellSessionHandoffPackageReport`
- `createShellSessionHandoffPackageReport`
- `createIniPanelLaunchApiManifest().methods` 新增
`getShellSessionHandoffPackageReport`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getShellSessionHandoffPackageReport()`
- `ini_panel_launch_smoke.html` 校验真实 launch iframe
- package report `ready === true`
- report rows 数量为 6
- 当前 report 无 missing package fields
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 能读取
package report并确认 package supported 与 report rows
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖:
- ready package report 完整 shape
- version mismatch 输出 `mismatchFields`
- 缺 manifest field 输出 `missingManifestFields`
- null package 输出全部 missing package fields
- `verify_ini_panel_ui_shell.mjs` 覆盖 shell view-model 的 package report 聚合关系;
- `verify_ini_panel_launch_api_manifest.mjs`、`verify_ini_panel_entry_docs.mjs` 与
`docs/panel-entry.md` 同步记录和校验新 helper/API
- 未新增控制按钮;
- 未执行 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_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_ui_shell.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/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_shell_integration_manifest_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_ui_shell_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_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。下一批建议新增一个只读
`createIniPanelShellSessionHandoffPackageDisplayViewModel()` 或等价 helper把 package report
压成稳定 label/value rows 与 status text供 launch 页面或外部 shell 直接渲染 package report
仍保持只读,不新增控制按钮,不解析 G-code。
十、2026-06-15 继续执行记录INI panel workflow overview embedding contract
本轮按 `text13.txt` 执行,不再扩展 `text12.txt`。继续推进 browser/UI workflow
新增只读 workflow-overview embedding contract让外部 shell 可以先验证
`workflow-overview.html` iframe 的 API shape再用 launch API 挂载 workflow overview。
完成内容:
- `ui-shell.js` 新增:
- `createIniPanelShellWorkflowOverviewContract()`
- `createIniPanelShellWorkflowOverviewReadiness()`
- `mountIniPanelShellWorkflowOverviewEmbedding()`
- `createIniPanelLaunchApiManifest().methods` 新增:
- `getWorkflowOverviewContract`
- `getWorkflowOverviewReadiness`
- `mountWorkflowOverviewEmbedding`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口:
- `getWorkflowOverviewContract()`
- `getWorkflowOverviewReadiness()`
- `mountWorkflowOverviewEmbedding()`
- `workflow-overview.html` 的 `window.linuxCncIniPanelWorkflowOverviewApi` 新增自描述入口:
- `getWorkflowOverviewContract()`
- `getWorkflowOverviewReadinessFromApi()`
- `mountWorkflowOverviewEmbedding()`
- `verify_ini_panel_ui_shell.mjs` 覆盖:
- overview contract shape
- missing API readiness
- ready API readiness
- embedding result
- thrown mount error 转成 data error
- `verify_ini_panel_launch_api_manifest.mjs` 覆盖 launch manifest 与 launch 页面真实 API
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 overview contract/readiness helper
- `ini_panel_launch_smoke.html` 校验真实 launch iframe 加载真实 workflow-overview iframe 后,
能读取 readiness 并执行 embedding workflow
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 可通过 launch API
消费真实 workflow-overview iframe
- `docs/panel-entry.md` 与 `verify_ini_panel_entry_docs.mjs` 同步记录新 helper/API
- 未新增控制按钮;
- 未执行 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_ini_panel_ui_shell.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_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/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 与可执行 gate。下一批建议新增一个只读
`createIniPanelShellWorkflowOverviewEmbeddingReport()` 或等价 helper把 overview iframe
readiness、missing methods、mount phase、render row count 和 error 合并成 display-ready report
便于外部 shell 在不能嵌入 overview 时直接显示原因;仍保持只读,不新增控制按钮,不解析 G-code。
十一、2026-06-15 继续执行记录INI panel workflow overview embedding report
本轮按 `text13.txt` 执行,不扩展 `text12.txt`。继续推进 browser/UI workflow 与可执行
gate新增只读 workflow-overview embedding report把 iframe API readiness、缺失方法、
mount phase、render row count 和 error 合并成外部 shell 可直接显示的诊断。
完成内容:
- `ui-shell.js` 新增 `createIniPanelShellWorkflowOverviewEmbeddingReport()`
- embedding report 输出:
- `apiName: "ini-panel-shell-workflow-overview-embedding-report"`
- `reportVersion: 1`
- `phase`
- `ready`
- `overviewReady`
- `embeddingReady`
- `mountReady`
- `statusLine`
- `pageHref`
- `contract`
- `missingMethods`
- `mountPhase`
- `renderRowCount`
- `error`
- `blockingReasons`
- `rows`
- report rows 固定覆盖:
- `overview-api`
- `missing-methods`
- `embedding-ready`
- `mount-phase`
- `render-row-count`
- `error`
- `createIniPanelLaunchApiManifest().methods` 新增
`getWorkflowOverviewEmbeddingReport`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getWorkflowOverviewEmbeddingReport()`
- `workflow-overview.html` 的 `window.linuxCncIniPanelWorkflowOverviewApi` 新增
`getWorkflowOverviewEmbeddingReport()`
- `verify_ini_panel_ui_shell.mjs` 覆盖:
- blocked embedding report 完整 shape
- missing methods report
- thrown mount error report
- `verify_ini_panel_launch_api_manifest.mjs` 覆盖 launch manifest 与 launch 页面真实 API
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 helper export、默认 blocked report、
launch method count 与文档记录;
- `verify_ini_panel_entry_docs.mjs` 与 `docs/panel-entry.md` 同步记录新 helper/API
- `ini_panel_workflow_overview_smoke.html` 校验 workflow overview iframe 自身 report API
- `ini_panel_launch_smoke.html` 校验真实 launch iframe 读取真实 workflow overview iframe 的
embedding report
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 读取同一 report
- 未新增控制按钮;
- 未执行 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_ini_panel_ui_shell.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_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/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。下一批建议新增一个只读
`createIniPanelShellWorkflowOverviewEmbeddingDisplayViewModel()` 或等价 helper把 embedding
report 压成稳定 `title/statusText/detailText/rows`,供 launch 页面、workflow overview 页面或外部
shell 直接渲染该 report仍保持只读不新增控制按钮不解析 G-code。
十二、2026-06-15 继续执行记录INI panel workflow overview embedding display view-model
本轮按 `text13.txt` 执行,不扩展 `text12.txt`。继续推进 browser/UI workflow新增只读
workflow-overview embedding display view-model把 embedding report 压成稳定
`title/statusText/detailText/rows`,便于 launch 页面、workflow overview 页面和外部 shell
直接渲染 report。
完成内容:
- `ui-shell.js` 新增 `createIniPanelShellWorkflowOverviewEmbeddingDisplayViewModel()`
- display view-model 输出:
- `phase: "ready" | "blocked"`
- `title: "Workflow overview embedding"`
- `statusText: "Ready" | "Blocked"`
- `detailText`
- `rows`
- `createIniPanelLaunchApiManifest().methods` 新增
`getWorkflowOverviewEmbeddingDisplayViewModel`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getWorkflowOverviewEmbeddingDisplayViewModel()`
- `workflow-overview.html` 的 `window.linuxCncIniPanelWorkflowOverviewApi` 新增
`getWorkflowOverviewEmbeddingDisplayViewModel()`
- `verify_ini_panel_ui_shell.mjs` 覆盖 display view-model 的 blocked shape 与 view-model helper
聚合关系;
- `verify_ini_panel_launch_api_manifest.mjs` 覆盖 launch manifest 与 launch 页面真实 API
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 helper export、默认 display view-model、
launch method count 与文档记录;
- `verify_ini_panel_entry_docs.mjs` 与 `docs/panel-entry.md` 同步记录新 helper/API
- `ini_panel_workflow_overview_smoke.html` 校验 workflow overview iframe 自身 display view-model API
- `ini_panel_launch_smoke.html` 校验真实 launch iframe 读取真实 workflow overview iframe 的
embedding display view-model
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 读取同一 display
view-model
- 未新增控制按钮;
- 未执行 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_ini_panel_ui_shell.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_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/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。下一批建议新增只读
`createIniPanelShellWorkflowOverviewEmbeddingRenderState()` 或等价 helper把 embedding display
view-model 压成稳定 `statusLine/dataset/rows`,供 launch 页面或外部 shell 用同一 DOM renderer
显示 overview embedding report仍保持只读不新增控制按钮不解析 G-code。
十三、2026-06-15 继续执行记录INI panel workflow overview embedding render-state
本轮按 `text13.txt` 执行,不扩展 `text12.txt`。继续推进 browser/UI workflow新增只读
workflow-overview embedding render-state把 embedding display view-model 压成稳定
`statusLine/dataset/rows`,供 launch 页面、workflow overview 页面或外部 shell 复用同一种
DOM renderer 数据结构显示 overview embedding report。
完成内容:
- `ui-shell.js` 新增 `createIniPanelShellWorkflowOverviewEmbeddingRenderState()`
- render-state 输出:
- `apiName: "ini-panel-shell-workflow-overview-embedding-render-state"`
- `renderStateVersion: 1`
- `phase`
- `ready`
- `title`
- `statusText`
- `detailText`
- `statusLine`
- `rows`
- `dataset.handoffPhase`
- `dataset.handoffReady`
- `dataset.handoffScope: "workflow-overview-embedding"`
- `createIniPanelLaunchApiManifest().methods` 新增
`getWorkflowOverviewEmbeddingRenderState`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getWorkflowOverviewEmbeddingRenderState()`
- `workflow-overview.html` 的 `window.linuxCncIniPanelWorkflowOverviewApi` 新增
`getWorkflowOverviewEmbeddingRenderState()`
- `verify_ini_panel_ui_shell.mjs` 覆盖 render-state blocked shape 与 view-model helper 聚合关系;
- `verify_ini_panel_launch_api_manifest.mjs` 覆盖 launch manifest 与 launch 页面真实 API
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 helper export、默认 render-state、
launch method count 与文档记录;
- `verify_ini_panel_entry_docs.mjs` 与 `docs/panel-entry.md` 同步记录新 helper/API
- `ini_panel_workflow_overview_smoke.html` 校验 workflow overview iframe 自身 render-state API
- `ini_panel_launch_smoke.html` 校验真实 launch iframe 读取真实 workflow overview iframe 的
embedding render-state
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 读取同一 render-state
- 未新增控制按钮;
- 未执行 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_ini_panel_ui_shell.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_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/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。下一批建议新增只读
`createIniPanelShellWorkflowOverviewEmbeddingDomContract()` 或等价 helper定义 embedding
report 渲染所需 mount/status/rows selectors、dataset keys 和 render-result fields并为后续
真实 DOM renderer 做准备;仍保持只读,不新增控制按钮,不解析 G-code。
十四、2026-06-15 继续执行记录INI panel workflow overview embedding DOM contract
本轮按 `text13.txt` 执行,不扩展 `text12.txt`。继续推进 browser/UI workflow新增只读
workflow-overview embedding DOM contract定义 embedding report 渲染所需的 mount/status/rows
selectors、dataset keys 和 render-result fields为后续真实 DOM renderer 做准备。
完成内容:
- `ui-shell.js` 新增 `createIniPanelShellWorkflowOverviewEmbeddingDomContract()`
- DOM contract 输出:
- `apiName: "ini-panel-shell-workflow-overview-embedding-dom-contract"`
- `contractVersion: 1`
- `requiredNodeIds: ["mount", "status", "rows"]`
- 默认 selectors
- `[data-workflow-overview-embedding]`
- `[data-workflow-overview-embedding-status]`
- `[data-workflow-overview-embedding-rows]`
- `mountDatasetKeys`
- `rowDatasetPrefix`
- `rowDatasetKeys`
- `renderResultFields`
- 支持外部 shell 传入自定义 `rowDatasetPrefix` 与 selectors
- `createIniPanelLaunchApiManifest().methods` 新增
`getWorkflowOverviewEmbeddingDomContract`
- `launch.html` 的 `window.linuxCncIniPanelLaunchApi` 新增真实 browser 入口
`getWorkflowOverviewEmbeddingDomContract()`
- `workflow-overview.html` 的 `window.linuxCncIniPanelWorkflowOverviewApi` 新增
`getWorkflowOverviewEmbeddingDomContract()`
- `verify_ini_panel_ui_shell.mjs` 覆盖默认 contract 完整 shape 与自定义 prefix/selectors
- `verify_ini_panel_launch_api_manifest.mjs` 覆盖 launch manifest 与 launch 页面真实 API
- `verify_ini_panel_shell_integration_manifest.mjs` 覆盖 helper export、默认 contract、
launch method count 与文档记录;
- `verify_ini_panel_entry_docs.mjs` 与 `docs/panel-entry.md` 同步记录新 helper/API
- `ini_panel_workflow_overview_smoke.html` 校验 workflow overview iframe 自身 DOM contract API
- `ini_panel_launch_smoke.html` 校验真实 launch iframe 读取真实 workflow overview iframe 的
embedding DOM contract
- `ini_panel_shell_integration_workflow_smoke.html` 校验外部 shell workflow 可读取自定义
rowDatasetPrefix 的 DOM contract
- 未新增控制按钮;
- 未执行 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_ini_panel_ui_shell.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_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/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。下一批建议新增只读
`createIniPanelShellWorkflowOverviewEmbeddingDomReadiness()` 或等价 helper检查 embedding
report DOM contract 需要的 document/mount/status/rows 节点是否存在,输出 missing/checks
为真实 DOM renderer 做最后前置 gate仍保持只读不新增控制按钮不解析 G-code。