项目整体完成情况与后续执行计划

生成时间：2026-06-16 CST

本文件接替 `text14.txt`。后续工作按 `text15.txt` 执行；除非明确要求审计旧记录，
不要再回到 `text1/text2/text3/text4/text5/text6/text7/text8/text9/text10/text11/text12/text13/text14`
扩展进度。`text14.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. 当前续接点。

`text14.txt` 已推进到：

```text
五十六、2026-06-16 继续执行记录：project release artifact URL workflow action-plan SDK API
```

该批已提交：

```text
e11c295 新增 release artifact URL workflow action plan API
```

本文件从 `text15.txt` 重新开始记录后续进度。

2. 每轮开始前必须先执行：

```bash
git status --short
git log -5 --oneline
tail -n 120 text15.txt
awk '/^[一二三四五六七八九十百]+、/ {print}' text15.txt | sort | uniq -d
```

执行规则：

- 如果 `git status --short` 是 clean，且最新提交已经包含当前建议工作，不要重复追加记录；
- 每轮只追加一个新的中文编号记录；
- 提交前再次检查标题唯一性；
- `text15.txt` 只记录新的后续进度，不复制 `text14.txt` 的长历史；
- 每批完成后，如果要写记录，先写 `text15.txt`，再提交该批代码和记录；
- 如果发现重复记录，先做 dedupe 清理并提交，再继续新功能或新 guard；
- `text14.txt` 不再追加新进度，除非明确要求审计或修正历史记录。

三、当前完成情况摘要

1. 当前工作树状态。

切换到 `text15.txt` 前已确认：

```text
git status --short: clean
```

当前最近提交：

```text
e11c295 新增 release artifact URL workflow action plan API
b7ec759 新增 release artifact URL workflow SDK gate
bee0500 新增 release artifact URL workflow summary API
9015de1 新增 release artifact URL workflow SDK API
d789920 新增 release artifact JSON workflow API
640f1e4 新增 release artifact validation action plan API
```

2. 关键基线保持稳定。

- `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`

3. 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. SDK/API surface 能力。

当前 SDK 已覆盖：

- LinuxCNC-backed INI/interpreter SDK；
- OPFS/session persistence path、file、snapshot、machine-file、parameter、tool-table、session readiness/load helpers；
- sim-config staging 和 host runtime boundary classifier；
- project release gate manifest；
- project release gate result matrix；
- project release gate action-plan；
- project release readiness report；
- project release readiness summary view-model；
- project release readiness artifact parse/validation；
- artifact validation summary view-model；
- artifact validation action-plan；
- artifact JSON non-throwing workflow；
- artifact URL non-throwing workflow；
- artifact URL workflow summary view-model；
- artifact URL workflow action-plan；
- INI panel entry/launcher/control-page/shell/workflow overview helpers；
- shell session readiness workflow report；
- shell API surface inventory。

当前 SDK 聚合验证入口：

```bash
wasm-port/tests/sdk/node/verify_sdk_surface.sh
```

关键输出：

```text
sdk_surface_node_smoke=ok
project_release_gate_manifest_node_smoke=ok
project_release_artifact_url_workflow_node_smoke=ok
```

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
```

当前 release artifact URL browser workflow gate：

```bash
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh
```

关键输出：

```text
browser_release_artifact_url_workflow_smoke=ok
```

3. Project release gate wrapper。

当前顶层 release gate：

```bash
wasm-port/tests/host/verify_project_release_gate.sh
```

该 wrapper 已显式运行：

- `git diff --check`；
- vendor sync guard；
- standalone CNC semantics guard；
- interpreter WASM Node smoke；
- sim-config inventory；
- INI panel browser smoke；
- release artifact URL browser workflow smoke；
- UI Node smokes；
- SDK release artifact URL workflow gate；
- host aggregate smoke；
- release readiness artifact writer；
- release readiness artifact validator。

关键输出：

```text
project_release_artifact_url_workflow_node_smoke=ok
host_wasm_opfs_browser_smokes=ok
project_release_readiness_artifact_node_smoke=ok
project_release_gate=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
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
wasm-port/tests/host/verify_host_smokes.sh
```

建议每批也运行当前顶层 wrapper：

```bash
wasm-port/tests/host/verify_project_release_gate.sh
```

若只改 SDK release readiness URL workflow，可先 targeted：

```bash
wasm-port/tests/sdk/node/verify_project_release_artifact_url_workflow.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.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
```

六、下一步建议

继续只做实质能力推进。优先选择可执行 gate、SDK/API surface、或真实 browser workflow；
不要做只整理断言或局部常量化的批次。

可选下一批方向：

- 把 project release readiness URL workflow 的 action-plan 或 summary 进一步暴露到 browser
  workflow overview API；
- 增加 machine-readable release gate execution manifest/artifact，供外部 CI 展示每个 gate 的
  command、expected output、observed output 和 pass/blocked 状态；
- 增加 OPFS/session persistence 的独立 SDK/browser gate，减少只依赖聚合 smoke 的排障成本；
- 若真实 LinuxCNC host runtime 可用，再按 native -> Node/WASM -> browser/host 顺序处理 blocked
  runtime family promotion。

五十七、2026-06-16 继续执行记录：project release gate execution manifest SDK API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，选择 `text15.txt` 下一步建议中的 machine-readable release gate execution manifest/artifact。

本批新增实质能力：

- 新增 SDK API：`createProjectReleaseGateExecutionManifest()`；
- 该 API 复用 release gate manifest，按 gate 输出每个 gate 的 `command`、`expectedOutput`、
  `observedOutput`、`evidence`、`passed/unknown` 状态、缺失 gate ID 与 pass/unknown 计数；
- `createProjectReleaseReadinessReport()` 现在嵌入 `gateExecutionManifest`，让外部 CI/browser
  dashboard 可直接展示 release gate 执行证据，而不需要解析 shell 脚本；
- `createProjectReleaseReadinessArtifactValidation()` 现在要求 ready artifact 包含
  `gateExecutionManifest`，并暴露 `gateExecutionManifestReady`；
- workflow overview release artifact validation summary/render rows 增加
  `gate-execution-manifest` evidence 行；
- 更新 `tests/fixtures/project-release-readiness-ready.json`，使 browser artifact URL workflow 使用
  新 schema；
- 更新 SDK README 与 `docs/project-release-handoff.md`，说明 execution manifest、artifact validation
  evidence chain 与外部 CI/browser dashboard 用法。

本批新增/更新可执行验证：

```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
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.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
project_release_gate_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
browser_release_artifact_url_workflow_smoke=ok
ui_node_smokes=ok
browser_ini_shell_integration_workflow_smoke=ok
project_release_readiness_artifact_node_smoke=ok
project_release_gate=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只属于 release gate evidence packaging、SDK/API surface、browser/UI artifact validation
  render rows、docs 和测试 gate；
- blocked runtime families 仍不 promotion。

五十八、2026-06-16 继续执行记录：OPFS/session persistence 独立 browser workflow gate

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，选择 `text15.txt` 下一步建议中的 OPFS/session persistence 独立 SDK/browser gate。

本批新增实质能力：

- 新增真实浏览器 workflow 页面：`tests/browser/opfs_session_workflow_smoke.html`；
- 新增独立 browser gate：`tests/browser/verify_opfs_session_workflow_browser.sh`；
- 该 gate 在真实 Chromium + OPFS 中验证：
  - 初始 `readMachineSessionReadiness()` blocked/missing 检查；
  - `saveMachineTextFiles()` 保存 INI、parameter、tool-table；
  - `saveGcodeProgram()` 保存 G-code；
  - `saveMachineSessionSnapshot()` 保存 machine session snapshot；
  - `loadMachineTextFiles()`、`loadGcodeProgram()`、`loadMachineSessionSnapshot()` 回读；
  - `readMachineSessionReadiness()` ready 检查；
  - `loadMachineSessionFromOpfs()` 把 OPFS machine session 加载到 WASM；
  - `createMachineSessionPersistenceSummary()` 输出 ready persistence summary。
- 顶层 release gate manifest 新增 `opfs-session-browser` gate；
- `createProjectReleaseGateManifest()`、release readiness artifact fixture、artifact writer/validator
  与 SDK/browser/UI tests 已同步到 11 个 release gates；
- `verify_project_release_gate.sh` 和 `verify_host_smokes.sh` 均纳入独立 OPFS/session browser gate；
- `docs/opfs-session-persistence.md` 与 `docs/project-release-handoff.md` 记录该独立 gate。

本批新增/更新可执行验证：

```bash
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_opfs_session_workflow_browser.sh
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_opfs_session_docs.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.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_project_release_gate.sh
```

关键通过输出：

```text
browser_opfs_session_workflow_smoke=ok
project_release_gate_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
opfs_session_docs_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
browser_release_artifact_url_workflow_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
ui_node_smokes=ok
project_release_readiness_artifact_node_smoke=ok
project_release_gate=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只验证 host OPFS/session persistence、WASM staging、SDK/browser workflow 和 release gate
  evidence；
- blocked runtime families 仍不 promotion。

五十九、2026-06-16 继续执行记录：release gate execution summary view-model SDK API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，选择 release gate execution evidence 的 UI/CI 展示能力。

本批新增实质能力：

- 新增 SDK API：`createProjectReleaseGateExecutionSummaryViewModel()`；
- 该 API 复用 `createProjectReleaseGateExecutionManifest()` 输出，生成稳定 dashboard/view-model：
  - `statusLine`；
  - `passedCount`、`unknownCount`、`gateCount`；
  - `nextGateId`；
  - `evidenceCounts`；
  - summary rows；
  - normalized per-gate `gateRows`。
- `createProjectReleaseReadinessReport()` 现在嵌入 `gateExecutionSummaryViewModel`；
- `createProjectReleaseReadinessArtifactValidation()` 现在要求 artifact 包含 ready
  `gateExecutionSummaryViewModel`，并暴露 `gateExecutionSummaryReady`；
- release artifact validation summary/render rows 增加 `gate-execution-summary` evidence 行；
- SDK README 与 project release handoff docs 记录该 summary view-model；
- ready fixture 与 host artifact writer/validator 同步新 artifact schema。

本批新增/更新可执行验证：

```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/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.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
project_release_gate_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
ui_node_smokes=ok
browser_release_artifact_url_workflow_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
browser_opfs_session_workflow_smoke=ok
project_release_readiness_artifact_node_smoke=ok
project_release_gate=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装 release gate evidence 与 artifact validation display rows；
- blocked runtime families 仍不 promotion。

六十、2026-06-16 继续执行记录：workflow overview release artifact URL action-plan browser API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，把 release artifact URL workflow 的 action-plan 从 SDK 层接到 workflow overview/launch 真实
browser API。外部 shell 现在可以通过 iframe 或 launch API 读取 URL workflow 的 ordered next-action /
next-command plan，而不需要自己解释 validation missing fields，也不会执行 release gate。

本批新增实质能力：

- `ui-shell.js` 新增：
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlan()`；
- `loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl()` 的返回值新增 `actionPlan`；
- URL workflow summary rows 新增 `action-plan` 行；
- `createIniPanelLaunchApiManifest().methods` 和
  `createIniPanelShellWorkflowOverviewContract().methodNames` 新增
  `getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlan`；
- `createIniPanelShellViewModel()` 暴露
  `createWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlan`；
- `window.linuxCncIniPanelLaunchApi` 与
  `window.linuxCncIniPanelWorkflowOverviewApi` 暴露真实 browser API：
  - `getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowActionPlan()`；
- SDK re-export 新 INI panel workflow overview action-plan helper；
- SDK README、`docs/project-release-handoff.md`、`docs/panel-entry.md` 同步记录 browser workflow
  action-plan API；
- workflow overview browser smoke 与 shell integration browser smoke 覆盖 ready URL workflow
  action-plan shellScript，并比对 iframe API 与 launch API；
- 继续包含上一批 gate execution summary browser API 暴露与 smoke 覆盖。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs
node wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.mjs
node wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
node wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs
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
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.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
sdk_surface_node_smoke=ok
project_release_handoff_docs_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
browser_release_artifact_url_workflow_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装 release artifact URL workflow action-plan、browser API surface、docs 和测试；
- browser API 只返回 action-plan 数据，不执行 release gate command；
- blocked runtime families 仍不 promotion。

六十一、2026-06-16 继续执行记录：workflow overview release artifact validation action-plan browser API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，把直接 artifact JSON validation 的 action-plan 接到 workflow overview/launch browser API。上一批
完成 URL workflow action-plan；本批补齐直接 JSON validation 路径，使外部 shell 在已经持有 artifact JSON
或 validation result 时，也能读取 ordered next-command plan，而不需要走 URL fetch workflow。

本批新增实质能力：

- `ui-shell.js` 新增：
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationActionPlan()`；
- `validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson()` 的返回值新增 `actionPlan`；
- `createIniPanelLaunchApiManifest().methods` 和
  `createIniPanelShellWorkflowOverviewContract().methodNames` 新增
  `getWorkflowOverviewReleaseReadinessArtifactValidationActionPlan`；
- `createIniPanelShellViewModel()` 暴露
  `createWorkflowOverviewReleaseReadinessArtifactValidationActionPlan`；
- `window.linuxCncIniPanelLaunchApi` 与
  `window.linuxCncIniPanelWorkflowOverviewApi` 暴露真实 browser API：
  - `getWorkflowOverviewReleaseReadinessArtifactValidationActionPlan()`；
- SDK re-export 新 INI panel workflow overview validation action-plan helper；
- SDK README、`docs/project-release-handoff.md`、`docs/panel-entry.md` 同步记录 direct validation
  action-plan API；
- workflow overview browser smoke 与 shell integration browser smoke 覆盖 ready validation
  action-plan shellScript，并比对 iframe API 与 launch API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs
node wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.mjs
node wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
node wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs
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_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_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
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装 release artifact validation action-plan、browser API surface、docs 和测试；
- browser API 只返回 action-plan 数据，不执行 release gate command；
- blocked runtime families 仍不 promotion。

六十二、2026-06-16 继续执行记录：workflow overview release artifact JSON workflow browser API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，把已有 SDK `createProjectReleaseReadinessArtifactJsonWorkflow()` 接到 workflow overview/launch
真实 browser API。外部 shell 在已经持有 artifact JSON 时，现在可以一次调用获得 parse、validation、
summary、action-plan 与 gate execution summary，而不需要手动串多个 helper，也不需要走 URL fetch。

本批新增实质能力：

- `ui-shell.js` 新增：
  - `runIniPanelShellWorkflowOverviewReleaseReadinessArtifactJsonWorkflow()`；
- 新 workflow 返回：
  - `apiName: ini-panel-shell-workflow-overview-release-readiness-artifact-json-workflow`；
  - `phase/ready/parsed/parseError/artifactApiName/missing`；
  - SDK `jsonWorkflow`；
  - UI validation wrapper；
  - validation summary view-model；
  - gate execution summary view-model；
  - validation action-plan；
  - stable rows；
  - `statusLine`；
- `createIniPanelLaunchApiManifest().methods` 和
  `createIniPanelShellWorkflowOverviewContract().methodNames` 新增
  `runWorkflowOverviewReleaseReadinessArtifactJsonWorkflow`；
- `createIniPanelShellViewModel()` 暴露
  `runWorkflowOverviewReleaseReadinessArtifactJsonWorkflow`；
- `window.linuxCncIniPanelLaunchApi` 与
  `window.linuxCncIniPanelWorkflowOverviewApi` 暴露真实 browser API：
  - `runWorkflowOverviewReleaseReadinessArtifactJsonWorkflow()`；
- SDK re-export 新 INI panel workflow overview JSON workflow helper；
- SDK README、`docs/project-release-handoff.md`、`docs/panel-entry.md` 同步记录 JSON workflow API；
- workflow overview browser smoke 与 shell integration browser smoke 覆盖 ready JSON workflow、
  gate execution summary 和 action-plan，并比对 iframe API 与 launch API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs
node wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.mjs
node wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
node wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs
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_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_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
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装 release artifact JSON workflow、browser API surface、docs 和测试；
- browser API 只返回 workflow/action-plan 数据，不执行 release gate command；
- blocked runtime families 仍不 promotion。

六十三、2026-06-16 继续执行记录：workflow overview release artifact JSON workflow summary browser API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在上一批 JSON workflow browser API 之上，新增稳定 summary view-model。外部 shell 现在不需要
自己读取 workflow 的 `statusLine` 和内部 rows，可以直接调用 summary helper 获得 dashboard 友好的
status text 与 rows。

本批新增实质能力：

- `ui-shell.js` 新增：
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactJsonWorkflowSummaryViewModel()`；
- 新 summary view-model 返回：
  - `apiName: ini-panel-shell-workflow-overview-release-readiness-artifact-json-workflow-summary-view-model`；
  - `viewModelVersion: 1`；
  - `phase/ready/title/statusText/detailText/statusLine`；
  - rows：`parse`、`validation-summary`、`gate-execution-summary`、`action-plan`、`missing`；
- `createIniPanelLaunchApiManifest().methods` 和
  `createIniPanelShellWorkflowOverviewContract().methodNames` 新增
  `getWorkflowOverviewReleaseReadinessArtifactJsonWorkflowSummaryViewModel`；
- `createIniPanelShellViewModel()` 暴露
  `createWorkflowOverviewReleaseReadinessArtifactJsonWorkflowSummaryViewModel`；
- `window.linuxCncIniPanelLaunchApi` 与
  `window.linuxCncIniPanelWorkflowOverviewApi` 暴露真实 browser API：
  - `getWorkflowOverviewReleaseReadinessArtifactJsonWorkflowSummaryViewModel()`；
- SDK re-export 新 INI panel workflow overview JSON workflow summary helper；
- SDK README、`docs/project-release-handoff.md`、`docs/panel-entry.md` 同步记录 JSON workflow
  summary view-model API；
- workflow overview browser smoke 与 shell integration browser smoke 覆盖 ready JSON workflow summary，
  并比对 iframe API 与 launch API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs
node wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.mjs
node wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
node wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs
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_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_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
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装 release artifact JSON workflow summary、browser API surface、docs 和测试；
- browser API 只返回 workflow summary 数据，不执行 release gate command；
- blocked runtime families 仍不 promotion。

六十四、2026-06-16 继续执行记录：workflow overview release artifact JSON workflow action-plan browser API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在 JSON workflow 和 JSON workflow summary 之上，新增对称的 JSON workflow action-plan helper。
外部 shell 现在可以直接读取 JSON workflow 的 next-command plan，而不需要知道 workflow 内部字段。

本批新增实质能力：

- `ui-shell.js` 新增：
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactJsonWorkflowActionPlan()`；
- 新 helper 返回 workflow 自带 `actionPlan`，或从 workflow validation wrapper 生成 validation
  action-plan；
- `createIniPanelLaunchApiManifest().methods` 和
  `createIniPanelShellWorkflowOverviewContract().methodNames` 新增
  `getWorkflowOverviewReleaseReadinessArtifactJsonWorkflowActionPlan`；
- `createIniPanelShellViewModel()` 暴露
  `createWorkflowOverviewReleaseReadinessArtifactJsonWorkflowActionPlan`；
- `window.linuxCncIniPanelLaunchApi` 与
  `window.linuxCncIniPanelWorkflowOverviewApi` 暴露真实 browser API：
  - `getWorkflowOverviewReleaseReadinessArtifactJsonWorkflowActionPlan()`；
- SDK re-export 新 INI panel workflow overview JSON workflow action-plan helper；
- SDK README、`docs/project-release-handoff.md`、`docs/panel-entry.md` 同步记录 JSON workflow
  action-plan API；
- workflow overview browser smoke 与 shell integration browser smoke 覆盖 ready JSON workflow
  action-plan，并比对 iframe API 与 launch API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs
node wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.mjs
node wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
node wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs
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_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_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
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装 release artifact JSON workflow action-plan、browser API surface、docs 和测试；
- browser API 只返回 action-plan 数据，不执行 release gate command；
- blocked runtime families 仍不 promotion。

六十五、2026-06-16 继续执行记录：workflow overview release artifact JSON workflow DOM mount browser API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在 JSON workflow render-state 之上新增真实 DOM contract/readiness/render/mount 能力。外部
shell 现在不只可以读取 JSON workflow 数据，也可以把该 workflow 状态块挂载到 caller-owned DOM。

本批新增实质能力：

- `ui-shell.js` 新增：
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactJsonWorkflowDomContract()`；
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactJsonWorkflowDomReadiness()`；
  - `renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactJsonWorkflowState()`；
  - `mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactJsonWorkflowState()`；
- 新 DOM contract 默认 selectors：
  - `[data-workflow-overview-release-readiness-artifact-json-workflow]`；
  - `[data-workflow-overview-release-readiness-artifact-json-workflow-status]`；
  - `[data-workflow-overview-release-readiness-artifact-json-workflow-rows]`；
- render/mount result 返回 `statusLine`、`rowCount`、`rowIds` 与 handoff dataset；
- `createIniPanelLaunchApiManifest().methods` 和
  `createIniPanelShellWorkflowOverviewContract().methodNames` 新增四个 JSON workflow DOM 方法；
- `createIniPanelShellViewModel()` 暴露四个 JSON workflow DOM helper；
- `window.linuxCncIniPanelLaunchApi` 与
  `window.linuxCncIniPanelWorkflowOverviewApi` 暴露真实 browser API：
  - `getWorkflowOverviewReleaseReadinessArtifactJsonWorkflowDomContract()`；
  - `getWorkflowOverviewReleaseReadinessArtifactJsonWorkflowDomReadiness()`；
  - `renderWorkflowOverviewReleaseReadinessArtifactJsonWorkflowState()`；
  - `mountWorkflowOverviewReleaseReadinessArtifactJsonWorkflowState()`；
- SDK re-export 新 INI panel workflow overview JSON workflow DOM helpers；
- SDK README、`docs/project-release-handoff.md`、`docs/panel-entry.md` 同步记录 JSON workflow DOM
  render/mount API；
- workflow overview browser smoke 与 shell integration browser smoke 创建真实 DOM 节点，覆盖
  ready JSON workflow render/mount，并比对 iframe API 与 launch API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs
node wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.mjs
node wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
node wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh
node wasm-port/tests/sdk/node/verify_project_release_artifact_url_workflow.mjs
git diff --check
```

关键通过输出：

```text
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_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
browser_release_artifact_url_workflow_smoke=ok
project_release_artifact_url_workflow_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装 release artifact JSON workflow render-state DOM contract/readiness/render/mount、
  browser API surface、docs 和测试；
- browser API 只渲染/mount 已有 workflow 状态，不执行 release gate command；
- blocked runtime families 仍不 promotion。

六十六、2026-06-16 继续执行记录：workflow overview release artifact URL workflow DOM mount browser API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在上一批 JSON workflow DOM mount 之上补齐 URL workflow 对称能力。外部 shell 现在可以把
artifact URL fetch/validate/render/mount workflow 的整体状态渲染到 caller-owned DOM，而不需要自己解释
URL workflow result 字段。

本批新增实质能力：

- `ui-shell.js` 新增：
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowRenderState()`；
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowDomContract()`；
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowDomReadiness()`；
  - `renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowState()`；
  - `mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrlWorkflowState()`；
- 新 render-state 返回：
  - `apiName: ini-panel-shell-workflow-overview-release-readiness-artifact-url-workflow-render-state`；
  - `renderStateVersion: 1`；
  - `phase/ready/title/statusText/detailText/statusLine/rows/dataset`；
  - dataset `handoffScope: workflow-overview-release-readiness-artifact-url-workflow`；
- 新 DOM contract 默认 selectors：
  - `[data-workflow-overview-release-readiness-artifact-url-workflow]`；
  - `[data-workflow-overview-release-readiness-artifact-url-workflow-status]`；
  - `[data-workflow-overview-release-readiness-artifact-url-workflow-rows]`；
- `createIniPanelLaunchApiManifest().methods` 和
  `createIniPanelShellWorkflowOverviewContract().methodNames` 新增五个 URL workflow render/mount 方法；
- `createIniPanelShellViewModel()` 暴露五个 URL workflow render/mount helper；
- `window.linuxCncIniPanelLaunchApi` 与
  `window.linuxCncIniPanelWorkflowOverviewApi` 暴露真实 browser API：
  - `getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowRenderState()`；
  - `getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowDomContract()`；
  - `getWorkflowOverviewReleaseReadinessArtifactUrlWorkflowDomReadiness()`；
  - `renderWorkflowOverviewReleaseReadinessArtifactUrlWorkflowState()`；
  - `mountWorkflowOverviewReleaseReadinessArtifactUrlWorkflowState()`；
- SDK re-export 新 INI panel workflow overview URL workflow render/mount helpers；
- SDK README、`docs/project-release-handoff.md`、`docs/panel-entry.md` 同步记录 URL workflow
  render/mount API；
- workflow overview browser smoke 与 shell integration browser smoke 创建真实 DOM 节点，覆盖
  ready URL workflow render/mount，并比对 iframe API 与 launch API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs
node wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.mjs
node wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
node wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh
node wasm-port/tests/sdk/node/verify_project_release_artifact_url_workflow.mjs
git diff --check
```

关键通过输出：

```text
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_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
browser_release_artifact_url_workflow_smoke=ok
project_release_artifact_url_workflow_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装 release artifact URL workflow render-state DOM contract/readiness/render/mount、
  browser API surface、docs 和测试；
- browser API 只渲染/mount 已有 URL workflow 状态，不执行 release gate command；
- blocked runtime families 仍不 promotion。

六十七、2026-06-16 继续执行记录：workflow overview release gate execution summary DOM mount browser API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在已有 gate execution summary view-model 之上新增 render-state 与 DOM mount 能力。外部 shell
现在可以直接把 release gate execution summary 和每个 gate row 渲染到 caller-owned DOM。

本批新增实质能力：

- `ui-shell.js` 新增：
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactGateExecutionSummaryRenderState()`；
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactGateExecutionSummaryDomContract()`；
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactGateExecutionSummaryDomReadiness()`；
  - `renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactGateExecutionSummaryState()`；
  - `mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactGateExecutionSummaryState()`；
- 新 render-state 返回：
  - `apiName: ini-panel-shell-workflow-overview-release-readiness-artifact-gate-execution-summary-render-state`；
  - `renderStateVersion: 1`；
  - summary rows + normalized per-gate rows；
  - dataset `handoffScope: workflow-overview-release-readiness-artifact-gate-execution-summary`；
- 新 DOM contract 默认 selectors：
  - `[data-workflow-overview-release-readiness-artifact-gate-execution-summary]`；
  - `[data-workflow-overview-release-readiness-artifact-gate-execution-summary-status]`；
  - `[data-workflow-overview-release-readiness-artifact-gate-execution-summary-rows]`；
- `createIniPanelLaunchApiManifest().methods` 和
  `createIniPanelShellWorkflowOverviewContract().methodNames` 新增五个 gate execution summary
  render/mount 方法；
- `createIniPanelShellViewModel()` 暴露五个 gate execution summary render/mount helper；
- `window.linuxCncIniPanelLaunchApi` 与
  `window.linuxCncIniPanelWorkflowOverviewApi` 暴露真实 browser API：
  - `getWorkflowOverviewReleaseReadinessArtifactGateExecutionSummaryRenderState()`；
  - `getWorkflowOverviewReleaseReadinessArtifactGateExecutionSummaryDomContract()`；
  - `getWorkflowOverviewReleaseReadinessArtifactGateExecutionSummaryDomReadiness()`；
  - `renderWorkflowOverviewReleaseReadinessArtifactGateExecutionSummaryState()`；
  - `mountWorkflowOverviewReleaseReadinessArtifactGateExecutionSummaryState()`；
- SDK re-export 新 INI panel workflow overview gate execution summary render/mount helpers；
- SDK README、`docs/project-release-handoff.md`、`docs/panel-entry.md` 同步记录 gate execution
  summary render/mount API；
- workflow overview browser smoke 与 shell integration browser smoke 创建真实 DOM 节点，覆盖
  gate execution summary render/mount，并比对 iframe API 与 launch API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs
node wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.mjs
node wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
node wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh
node wasm-port/tests/sdk/node/verify_project_release_artifact_url_workflow.mjs
git diff --check
```

关键通过输出：

```text
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_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
browser_release_artifact_url_workflow_smoke=ok
project_release_artifact_url_workflow_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装 release gate execution summary render-state DOM contract/readiness/render/mount、
  browser API surface、docs 和测试；
- browser API 只渲染/mount 已有 gate execution summary，不执行 release gate command；
- blocked runtime families 仍不 promotion。

六十八、2026-06-16 继续执行记录：workflow overview release artifact validation action-plan DOM mount browser API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在已有 artifact validation action-plan 之上新增 render-state 与 DOM mount 能力。外部 shell
现在可以直接把直接 JSON validation 的 next-command plan 渲染到 caller-owned DOM，而不需要自己解释
`actionPlan.rows`、`commands` 或 `shellScript`。

本批新增实质能力：

- `ui-shell.js` 新增：
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationActionPlanRenderState()`；
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationActionPlanDomContract()`；
  - `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationActionPlanDomReadiness()`；
  - `renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationActionPlanState()`；
  - `mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationActionPlanState()`；
- 新 render-state 返回：
  - `apiName: ini-panel-shell-workflow-overview-release-readiness-artifact-validation-action-plan-render-state`；
  - `renderStateVersion: 1`；
  - action-plan rows + command rows；
  - `nextActionId`、`nextCommand`、`shellScript`；
  - dataset `handoffScope: workflow-overview-release-readiness-artifact-validation-action-plan`；
- 新 DOM contract 默认 selectors：
  - `[data-workflow-overview-release-readiness-artifact-validation-action-plan]`；
  - `[data-workflow-overview-release-readiness-artifact-validation-action-plan-status]`；
  - `[data-workflow-overview-release-readiness-artifact-validation-action-plan-rows]`；
- `createIniPanelLaunchApiManifest().methods` 和
  `createIniPanelShellWorkflowOverviewContract().methodNames` 新增五个 validation action-plan
  render/mount 方法；
- `createIniPanelShellViewModel()` 暴露五个 validation action-plan render/mount helper；
- `window.linuxCncIniPanelLaunchApi` 与
  `window.linuxCncIniPanelWorkflowOverviewApi` 暴露真实 browser API：
  - `getWorkflowOverviewReleaseReadinessArtifactValidationActionPlanRenderState()`；
  - `getWorkflowOverviewReleaseReadinessArtifactValidationActionPlanDomContract()`；
  - `getWorkflowOverviewReleaseReadinessArtifactValidationActionPlanDomReadiness()`；
  - `renderWorkflowOverviewReleaseReadinessArtifactValidationActionPlanState()`；
  - `mountWorkflowOverviewReleaseReadinessArtifactValidationActionPlanState()`；
- SDK re-export 新 INI panel workflow overview validation action-plan render/mount helpers；
- SDK README、`docs/project-release-handoff.md`、`docs/panel-entry.md` 同步记录 validation
  action-plan render/mount API；
- workflow overview browser smoke 与 shell integration browser smoke 创建真实 DOM 节点，覆盖
  validation action-plan render/mount，并比对 iframe API 与 launch API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs
node wasm-port/tests/ui/node/verify_ini_panel_launch_api_manifest.mjs
node wasm-port/tests/ui/node/verify_ini_panel_shell_integration_manifest.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
node wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh
node wasm-port/tests/sdk/node/verify_project_release_artifact_url_workflow.mjs
git diff --check
```

关键通过输出：

```text
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_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
browser_release_artifact_url_workflow_smoke=ok
project_release_artifact_url_workflow_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装 release artifact validation action-plan render-state DOM contract/readiness/render/mount、
  browser API surface、docs 和测试；
- browser API 只渲染/mount 已有 validation action-plan，不执行 release gate command；
- blocked runtime families 仍不 promotion。

六十九、2026-06-16 继续执行记录：project batch acceptance workflow SDK gate

本批直接响应“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”，
把该规则转成机器可读 workflow 和可执行 gate，而不是只停留在文字约束。

本批新增实质能力：

- 新增 SDK API：
  - `createProjectBatchAcceptanceWorkflow()`；
  - `createProjectBatchAcceptanceSummaryViewModel()`；
  - `createProjectBatchAcceptanceActionPlan()`；
- batch acceptance workflow 接收 `batchId`、`capabilities`、`gateResults`、`observedOutputs`，
  只接受 `api`、`workflow`、`gate`、`browser` 四类实质能力；
- workflow ready 条件为：
  - 至少一个 accepted capability；
  - release gate manifest 中 `project-batch-acceptance` gate 有通过证据；
- blocked workflow 会返回 `missing: ["batch-capability", "project-batch-acceptance"]`
  或相应缺失项，并通过 action-plan 给出下一步 gate command；
- 新增可执行 SDK gate：
  `wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh`，
  输出 `project_batch_acceptance_workflow_node_smoke=ok`；
- `createProjectReleaseGateManifest()` 新增 `project-batch-acceptance` gate；
- `verify_project_release_gate.sh` 在 UI/browser gates 后运行 batch acceptance gate；
- `write_project_release_readiness_artifact.mjs` 和
  `tests/fixtures/project-release-readiness-ready.json` 已同步到 12 个 release gates；
- SDK surface、SDK README、project release handoff docs、tracker、artifact validation 和
  workflow overview/browser smoke 断言同步到新 gate。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.mjs
wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh
node wasm-port/tests/sdk/node/verify_project_release_gate_manifest.mjs
wasm-port/tests/sdk/node/verify_sdk_surface.sh
node wasm-port/tests/host/verify_project_release_readiness_artifact.mjs wasm-port/tests/fixtures/project-release-readiness-ready.json
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/browser/verify_release_artifact_url_workflow_browser.sh
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
```

关键通过输出：

```text
project_batch_acceptance_workflow_node_smoke=ok
project_release_gate_manifest_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_readiness_artifact_node_smoke=ok
ui_node_smokes=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
browser_release_artifact_url_workflow_smoke=ok
project_release_handoff_docs_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装项目批次验收 evidence、SDK API、release gate manifest、docs 和测试；
- batch acceptance gate 不执行 CNC runtime，不改变 blocked runtime family promotion 状态。

七十、2026-06-16 继续执行记录：project batch acceptance capability matrix SDK API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在上一批 batch acceptance workflow 之上新增可独立调用的 capability matrix。

本批新增实质能力：

- 新增 SDK API：`createProjectBatchAcceptanceCapabilityMatrix()`；
- capability matrix 负责规范化每批 `capabilities`，只接受：
  - `api`；
  - `workflow`；
  - `gate`；
  - `browser`；
- docs-only 或 unknown type 会进入 `rejectedCapabilities`，不会让批次通过；
- matrix 输出：
  - `acceptedCapabilityTypes`；
  - `capabilityTypes`；
  - `countsByType`；
  - `acceptedCount` / `rejectedCount`；
  - `missing: ["batch-capability"]`；
  - dashboard rows；
- `createProjectBatchAcceptanceWorkflow()` 现在复用 capability matrix，外部工具可以先独立判断
  能力证据，再结合 `project-batch-acceptance` gate 判断 workflow ready；
- SDK README、project release handoff docs、tracker 和 docs smoke 同步记录新 API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
wasm-port/tests/sdk/node/verify_sdk_surface.sh
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
```

关键通过输出：

```text
project_batch_acceptance_workflow_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_gate_manifest_node_smoke=ok
project_release_artifact_url_workflow_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装项目批次能力证据分类、SDK API、docs 和测试；
- capability matrix 不执行 CNC runtime，不改变 blocked runtime family promotion 状态。

七十一、2026-06-16 继续执行记录：project batch acceptance checklist SDK API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在 batch acceptance capability matrix/workflow 之上新增可直接展示的 checklist API。

本批新增实质能力：

- 新增 SDK API：`createProjectBatchAcceptanceChecklist()`；
- checklist 接收 batch acceptance workflow 与 action plan，输出：
  - `accepted-capability`；
  - `batch-acceptance-gate`；
  - `next-action`；
- 每个 checklist item 都包含 `status: pass|blocked`、`passed` 与 `detail`；
- ready workflow 返回 3 个 pass item；
- blocked workflow 返回缺少 capability、缺少 batch gate、存在 next action 的 blocked item；
- SDK surface、SDK README、project release handoff docs、tracker 和 docs smoke 同步记录新 API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
wasm-port/tests/sdk/node/verify_sdk_surface.sh
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
```

关键通过输出：

```text
project_batch_acceptance_workflow_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_gate_manifest_node_smoke=ok
project_release_artifact_url_workflow_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装项目批次验收 checklist、SDK API、docs 和测试；
- checklist 不执行 CNC runtime，不改变 blocked runtime family promotion 状态。

七十二、2026-06-16 继续执行记录：project batch acceptance report SDK API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在 batch acceptance matrix/workflow/summary/action-plan/checklist 之上新增单对象 report。

本批新增实质能力：

- 新增 SDK API：`createProjectBatchAcceptanceReport()`；
- report 聚合：
  - `capabilityMatrix`；
  - `workflow`；
  - `summaryViewModel`；
  - `actionPlan`；
  - `checklist`；
- ready report 输出 `summary`、`capabilities`、`checklist`、`next-command` dashboard rows；
- blocked report 保留 workflow missing reasons，并把下一步 gate command 放在 rows 中；
- SDK surface、SDK README、project release handoff docs、tracker 和 docs smoke 同步记录新 API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
wasm-port/tests/sdk/node/verify_sdk_surface.sh
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
```

关键通过输出：

```text
project_batch_acceptance_workflow_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_gate_manifest_node_smoke=ok
project_release_artifact_url_workflow_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装项目批次验收 report、SDK API、docs 和测试；
- report 不执行 CNC runtime，不改变 blocked runtime family promotion 状态。

七十三、2026-06-16 继续执行记录：project batch acceptance report validation JSON workflow SDK API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在 batch acceptance report 之上新增可验证 report 与 JSON workflow。

本批新增实质能力：

- 新增 SDK API：
  - `createProjectBatchAcceptanceReportValidation()`；
  - `createProjectBatchAcceptanceReportJsonWorkflow()`；
- report validation 校验：
  - `apiName` / `reportVersion`；
  - ready phase；
  - capability matrix；
  - workflow；
  - summary view-model；
  - action plan；
  - checklist；
  - checklist row；
- JSON workflow 对外提供非抛错解析：
  - valid ready report 返回 `parsed: true`、`ready: true`；
  - blocked report 返回 missing evidence；
  - invalid JSON 返回 `parsed: false` 和 `report-json` missing；
- SDK surface、SDK README、project release handoff docs、tracker 和 docs smoke 同步记录新 API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
wasm-port/tests/sdk/node/verify_sdk_surface.sh
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
```

关键通过输出：

```text
project_batch_acceptance_workflow_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_gate_manifest_node_smoke=ok
project_release_artifact_url_workflow_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装项目批次验收 report validation/JSON workflow、SDK API、docs 和测试；
- JSON workflow 不执行 CNC runtime，不改变 blocked runtime family promotion 状态。

七十四、2026-06-16 继续执行记录：project batch acceptance report URL workflow SDK API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在 batch acceptance report JSON workflow 之上新增可拉取 hosted report 的 URL workflow。

本批新增实质能力：

- 新增 SDK API：
  - `loadProjectBatchAcceptanceReportUrlWorkflow()`；
  - `createProjectBatchAcceptanceReportUrlWorkflowSummaryViewModel()`；
  - `createProjectBatchAcceptanceReportUrlWorkflowActionPlan()`；
- URL workflow 通过调用方提供的 `fetch` 拉取 batch acceptance report JSON；
- ready fetch 返回 `fetched: true`、`httpStatus`、JSON workflow、validation 与 missing evidence；
- 缺少 URL、缺少 fetch、HTTP failure、fetch throw 都返回结构化 blocked workflow，不向外抛错；
- action-plan 区分 input、fetch、command action，并在需要时给出
  `wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh`；
- SDK surface、SDK README、project release handoff docs、tracker 和 docs smoke 同步记录新 API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.mjs
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
wasm-port/tests/sdk/node/verify_sdk_surface.sh
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
```

关键通过输出：

```text
project_batch_acceptance_workflow_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_gate_manifest_node_smoke=ok
project_release_artifact_url_workflow_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装项目批次验收 report URL workflow、SDK API、docs 和测试；
- URL workflow 只处理项目级验收 JSON，不执行 CNC runtime，不改变 blocked runtime family promotion 状态。

七十五、2026-06-16 继续执行记录：project batch acceptance artifact SDK gate

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在 batch acceptance report/JSON/URL workflow 之上新增真实落盘 artifact gate。

本批新增实质能力：

- 新增可执行 artifact writer：
  - `tests/sdk/node/write_project_batch_acceptance_artifact.mjs`；
- 新增可执行 artifact validator：
  - `tests/sdk/node/verify_project_batch_acceptance_artifact.mjs`；
  - `tests/sdk/node/verify_project_batch_acceptance_artifact.sh`；
- `verify_project_batch_acceptance_workflow.sh` 现在会：
  - 运行 batch acceptance workflow smoke；
  - 写出 `build/project-batch-acceptance.json`；
  - 通过 JSON workflow/report validation 验证该 artifact；
- artifact 验证覆盖 report api/version、ready phase、capability matrix、workflow、summary、
  action-plan、checklist 和 dashboard rows；
- SDK README、project release handoff docs、tracker 和 docs smoke 同步记录 artifact gate。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.mjs
wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh
wasm-port/tests/sdk/node/verify_project_batch_acceptance_artifact.sh build/project-batch-acceptance.json
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
```

关键通过输出：

```text
project_batch_acceptance_workflow_node_smoke=ok
project_batch_acceptance_artifact=/home/cnc/桌面/cnc_wams/wasm-port/build/project-batch-acceptance.json
project_batch_acceptance_artifact_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装项目批次验收 artifact 写入/验证、SDK gate、docs 和测试；
- artifact gate 只处理项目级验收 JSON，不执行 CNC runtime，不改变 blocked runtime family promotion 状态。

七十六、2026-06-16 继续执行记录：project batch acceptance report validation summary/action-plan SDK API

本批继续按“每批必须产出可调用 API、可验证 workflow、可执行 gate、或真实 UI/browser 能力”
推进，在 batch acceptance report validation 之上新增可直接给 CI/UI 使用的 summary 与 action-plan。

本批新增实质能力：

- 新增 SDK API：
  - `createProjectBatchAcceptanceReportValidationSummaryViewModel()`；
  - `createProjectBatchAcceptanceReportValidationActionPlan()`；
- validation summary 输出 stable dashboard rows：
  - report；
  - batch；
  - validation；
  - missing；
- validation action-plan 对 ready validation 返回 no-op shell script；
- blocked validation 返回下一步可执行命令：
  - `wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh`；
  - expected output: `project_batch_acceptance_artifact_node_smoke=ok`；
- artifact validator 现在会校验 summary/action-plan 输出，确保真实 artifact gate 覆盖新 API；
- SDK surface、SDK README、project release handoff docs、tracker 和 docs smoke 同步记录新 API。

本批新增/更新可执行验证：

```bash
node wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.mjs
wasm-port/tests/sdk/node/verify_project_batch_acceptance_workflow.sh
wasm-port/tests/sdk/node/verify_project_batch_acceptance_artifact.sh build/project-batch-acceptance.json
node wasm-port/tests/sdk/node/verify_sdk_surface.mjs
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
```

关键通过输出：

```text
project_batch_acceptance_workflow_node_smoke=ok
project_batch_acceptance_artifact_node_smoke=ok
sdk_surface_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 未修改 vendored LinuxCNC 源码；
- 未在 JS/browser 中实现 G-code、tool、parameter、planner、kinematics、remap 或 canonical motion
  语义；
- 新增内容只包装项目批次验收 validation summary/action-plan、SDK API、docs 和测试；
- validation action-plan 只指向项目级 artifact gate，不执行 CNC runtime，不改变 blocked runtime family promotion 状态。

七十七、2026-06-16 继续执行记录：real browser simulation priority docs gate

本批响应新的后续工作方向，把“真实 UI/browser 数控仿真页面优先”写入项目约束文档，
并新增可执行 docs gate，确保后续批次不能继续只偏向低收益 metadata/API 工作。

本批新增实质能力：

- 新增约束文档：
  - `docs/real-browser-simulation-priority.md`；
- 明确后续第一要务：
  - 尽快实现真实 browser CNC simulation page；
  - 页面应具备 machine/session loader；
  - G-code program view；
  - LinuxCNC-backed interpreter execution；
  - machine readiness/status panels；
  - toolpath/preview area；
  - browser smoke coverage；
- 明确批次优先级：
  1. real UI/browser simulation page capability；
  2. browser workflow smoke；
  3. UI APIs；
  4. OPFS/session integration；
  5. 只在直接 unblock 仿真页面时做 SDK/API helper；
  6. 只在创建 executable gate 或保护仿真方向时做文档/release metadata；
- 新增可执行 docs gate：
  - `tests/docs/node/verify_real_browser_simulation_priority_docs.mjs`；
  - `tests/docs/node/verify_real_browser_simulation_priority_docs.sh`；
- 将新 gate 接入：
  - `tests/host/verify_host_smokes.sh`；
  - `tests/host/verify_project_release_gate.sh`；
  - `tests/docs/node/verify_project_release_handoff_docs.mjs`；
- README、project release handoff、PROJECT_COMPLETION_TRACKER 同步记录该约束。

本批新增/更新可执行验证：

```bash
wasm-port/tests/docs/node/verify_real_browser_simulation_priority_docs.sh
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
wasm-port/tests/host/verify_host_smokes.sh
wasm-port/tests/host/verify_project_release_gate.sh
```

关键通过输出：

```text
real_browser_simulation_priority_docs_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
host_wasm_opfs_browser_smokes=ok
project_release_gate=ok
```

本批仍保持 LinuxCNC 语义边界：

- 明确真实 browser simulation page 不能在 JS/browser 中实现 G-code、tool、parameter、
  kinematics、remap、planner 或 canonical motion 语义；
- 页面只能负责 layout、interaction state、OPFS/session、file staging、SDK/WASM calls、
  以及 LinuxCNC-produced output / validated runtime summary rendering；
- 下一批开始应优先实现真实仿真页面能力，而不是继续扩展 dashboard-only helper。

七十八、2026-06-16 继续执行记录：real browser simulation page MVP

本批按新的第一要务推进，直接新增真实 browser CNC simulation page MVP，而不是继续扩展
dashboard-only helper。

本批新增实质能力：

- 新增真实仿真页面入口：
  - `runtime/ui/simulation/index.html`；
- 新增页面 runtime：
  - `runtime/ui/simulation/simulation-app.js`；
- 页面加载后会直接调用 LinuxCNC-backed interpreter WASM：
  - `createLinuxCncInterpSdk()`；
  - `interp.runProgram(DEFAULT_SIMULATION_PROGRAM)`；
- 页面渲染真实运行结果：
  - G-code program view；
  - LinuxCNC canonical output；
  - active line / statement；
  - final axis readout；
  - motion event table；
  - SVG toolpath preview；
- 新增 browser gate：
  - `tests/browser/real_simulation_page_smoke.html`；
  - `tests/browser/verify_real_simulation_browser.sh`；
- 新 gate 验证页面在 Chromium 中真实加载，WASM interpreter 执行成功，DOM 暴露 ready state，
  toolpath polyline 非空，motion rows 与 LinuxCNC canonical motion count 一致；
- launch 页面新增 “Open real browser simulation” 链接；
- host smoke、project release gate、priority docs、README、handoff docs、tracker 同步接入新页面和 gate。

本批新增/更新可执行验证：

```bash
SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh
wasm-port/tests/docs/node/verify_real_browser_simulation_priority_docs.sh
node wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs
```

关键通过输出：

```text
browser_real_simulation_page_smoke=ok
real_browser_simulation_priority_docs_node_smoke=ok
project_release_handoff_docs_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 页面没有在 JS/browser 中实现 G-code、tool、parameter、kinematics、remap、planner 或
  canonical motion 语义；
- JS 只调用 LinuxCNC-backed WASM SDK，并把 LinuxCNC-produced canonical output 渲染成
  program state、axis readout、motion table 和 SVG preview；
- canonical output 中坐标字段的读取只用于 UI 渲染，不作为 CNC 解释或运动规划来源。

七十九、2026-06-16 继续执行记录：real browser simulation 多测试程序

本批继续围绕真实 browser CNC simulation page 推进，把页面从单一内置程序扩展为可选择
多组 LinuxCNC-backed 测试程序的仿真入口。

本批新增实质能力：

- `runtime/ui/simulation/simulation-app.js` 新增 `SIMULATION_TEST_PROGRAMS`；
- 当前测试程序覆盖：
  - square contour；
  - pocket with Z moves；
  - incremental loop；
  - G2/G3 arc path；
  - G81 drill pattern；
- `runtime/ui/simulation/index.html` 新增程序选择器和 Run 按钮；
- 页面 API 新增：
  - `linuxCncRealSimulationApi.getPrograms()`；
  - `linuxCncRealSimulationApi.runProgramById(programId)`；
  - `linuxCncRealSimulationApi.getState()`；
- browser smoke 现在会逐个运行所有测试程序，验证每个程序都经由 LinuxCNC WASM 执行，
  DOM program rows、motion rows、canonical output、toolpath polyline 和 motion types 与
  LinuxCNC-produced output 保持一致；
- 增强 canonical motion 渲染解析：`ARC_FEED` 使用 LinuxCNC canonical arc endpoint 字段映射
  到当前 active plane 的坐标轴，只作为 UI toolpath 渲染输入；
- 新增 UI Node smoke：
  - `tests/ui/node/verify_real_simulation_programs.mjs`；
  - `tests/ui/node/verify_real_simulation_programs.sh`；
- `tests/ui/node/verify_ui_node_smokes.sh` 接入该 smoke；
- README、real-browser priority docs、PROJECT_COMPLETION_TRACKER 同步记录多测试程序能力。

本批新增/更新可执行验证：

```bash
wasm-port/tests/ui/node/verify_real_simulation_programs.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh
```

关键通过输出：

```text
real_simulation_programs_node_smoke=ok
ui_node_smokes=ok
browser_real_simulation_page_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 新增测试程序均通过 `createLinuxCncInterpSdk()` / `interp.runProgram()` 执行；
- JS 没有解释 G-code，也没有实现 planner、kinematics、tool、parameter、remap 语义；
- JS 只保存测试程序文本、调用 LinuxCNC WASM、解析 LinuxCNC-produced canonical output 以渲染
  UI 状态和刀路终点。

八十、2026-06-16 继续执行记录：G-code 和刀具执行过程可视化

用户反馈当前页面只能看到执行后的结果，看不到 G-code 执行过程和刀具执行过程。本批直接补齐
真实 browser simulation page 的回放能力。

本批新增实质能力：

- `runtime/ui/simulation/index.html` 新增 playback controls：
  - Reset；
  - Step Back；
  - Play/Pause；
  - Step Forward；
  - Finish；
  - Speed；
- `runtime/ui/simulation/simulation-app.js` 新增 playback frame API：
  - `createPlaybackFrame(state, index)`；
  - `renderSimulationPlaybackFrame(documentRef, state, index)`；
  - `clampPlaybackIndex(motion, index)`；
- 页面现在按 LinuxCNC canonical motion event 逐帧渲染执行过程：
  - 当前 G-code 行高亮；
  - 当前 motion row 高亮；
  - 已执行 motion row 标记；
  - XYZ/ABC live readout 随 frame 更新；
  - SVG 中全路径为浅色预览；
  - 已执行路径逐步增长；
  - toolhead 圆点随当前 motion frame 移动；
- 页面 API 新增：
  - `linuxCncRealSimulationApi.getPlaybackFrame()`；
  - `linuxCncRealSimulationApi.resetPlayback()`；
  - `linuxCncRealSimulationApi.stepPlayback(delta)`；
  - `linuxCncRealSimulationApi.play()`；
  - `linuxCncRealSimulationApi.pause()`；
  - `linuxCncRealSimulationApi.finishPlayback()`；
- browser smoke 新增回放验证：
  - reset 后 playback index 为 0；
  - step 后 executed toolpath 增长；
  - toolhead 坐标变化；
  - G-code line 和 motion row active 状态同步变化；
  - finish 后 playback complete；
- Node smoke 新增 playback frame contract 验证。

本批新增/更新可执行验证：

```bash
wasm-port/tests/ui/node/verify_real_simulation_programs.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh
wasm-port/tests/docs/node/verify_real_browser_simulation_priority_docs.sh
```

关键通过输出：

```text
real_simulation_programs_node_smoke=ok
ui_node_smokes=ok
browser_real_simulation_page_smoke=ok
real_browser_simulation_priority_docs_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 回放基于 LinuxCNC WASM 输出的 canonical motion events；
- JS 不解释 G-code，不规划刀路，不计算 CNC 语义；
- JS 只做播放索引、DOM 高亮、坐标显示、已执行路径和 toolhead 渲染。

八十一、2026-06-16 继续执行记录：AXIS 风格仿真实现文档

用户给出 LinuxCNC AXIS 界面截图，要求参考该界面编写程序，并先创建实现文档。本批只创建
实现文档和文档 gate，不改 simulation 页面行为。

本批新增：

- `wasm-port/docs/axis-style-simulation-implementation.md`；
- 文档定义 AXIS-style browser simulation 的目标布局：
  - menu/toolbar/status badges；
  - Manual Control / MDI tabs；
  - Preview / DRO tabs；
  - G-code source pane；
  - bottom status bar；
  - 参考 AXIS 的 spindle/coolant/override/jog/active G-code/DRO/toolpath 结构；
- 文档定义阶段：
  - Phase 1 AXIS-style shell；
  - Phase 2 program execution workflow；
  - Phase 3 DRO and modal display；
  - Phase 4 preview upgrade；
  - Phase 5 machine/session integration；
- 文档明确下一批立即任务：在不移除当前功能的前提下，重构
  `runtime/ui/simulation/index.html` 为 AXIS-inspired shell，并扩展 browser smoke；
- README、real-browser priority docs、PROJECT_COMPLETION_TRACKER 链接该实现计划；
- 新增文档 smoke：
  - `wasm-port/tests/docs/node/verify_axis_style_simulation_docs.mjs`；
  - `wasm-port/tests/docs/node/verify_axis_style_simulation_docs.sh`；
- host smoke 和 project release gate 接入该文档 smoke。

本批保持 LinuxCNC 语义边界：

- 文档明确 LinuxCNC 仍是唯一 CNC semantic source；
- Browser JS 只能负责 UI、OPFS/session、SDK/WASM 调用、LinuxCNC-produced output 渲染和播放；
- 禁止在 JS 中实现 G-code、modal、tool compensation、parameter、kinematics、remap、planner 或
  canonical motion 语义。

八十二、2026-06-16 继续执行记录：AXIS-style browser simulation shell Phase 1

本批按 `wasm-port/docs/axis-style-simulation-implementation.md` 的 Immediate Next Batch
实现 Phase 1，不移除当前 LinuxCNC-backed execution 和 playback API。

本批新增实质 UI：

- `runtime/ui/simulation/index.html` 从三列 MVP 改为 AXIS-inspired shell；
- 新增/调整区域：
  - titlebar：`axis.ngc - AXIS 2.9.8 on LinuxCNC-BROWSER-SIM`；
  - menubar：File / Machine / View / Help；
  - toolbar：open/reload/run/playback/status/program selector；
  - Manual Control / MDI tabs；
  - Preview / DRO tabs；
  - AXIS-like dark preview viewport；
  - lower G-code pane；
  - machine-state pane；
  - bottom status bar：ESTOP / No tool / Position: Relative Actual；
- 保留并复用当前 data attributes：
  - `data-program-selector`；
  - `data-run-program`；
  - playback buttons；
  - `data-program-lines`；
  - toolpath SVG / executed polyline / toolhead；
  - motion rows；
  - canonical output；
- `simulation-app.js` 的 `setText()` 改为同步所有匹配节点，支持 AXIS shell 中多个 DRO/状态显示；
- 页面脚本新增 Manual/MDI 和 Preview/DRO tab 切换；
- browser smoke 扩展验证：
  - AXIS shell regions；
  - File/Machine/View/Help menubar；
  - Manual/MDI tab switching；
  - Preview/DRO tab switching；
  - statusbar；
  - toolbar Step Forward 与 playback API 同步；
  - 原有 LinuxCNC WASM program execution、多测试程序、回放、toolhead、executed path 仍通过。

本批新增/更新可执行验证：

```bash
SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh
wasm-port/tests/ui/node/verify_real_simulation_programs.sh
wasm-port/tests/docs/node/verify_axis_style_simulation_docs.sh
wasm-port/tests/docs/node/verify_real_browser_simulation_priority_docs.sh
```

关键通过输出：

```text
browser_real_simulation_page_smoke=ok
real_simulation_programs_node_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- 新 shell 只是 UI layout 和 display state；
- Program execution 仍通过 `createLinuxCncInterpSdk()` / LinuxCNC WASM；
- Preview、DRO、G-code active line 和 playback 都来自 LinuxCNC-produced canonical motion event；
- 禁用的 manual/spindle/coolant/jog 控件只显示 blocked/readiness 状态，不伪造机器动作。

八十三、2026-06-16 继续执行记录：仿真测试程序目录化

用户要求把程序移动到新目录，方便后续新增其它测试程序。本批把 simulation 内置 G-code 程序
从 `simulation-app.js` 拆出，建立独立程序库目录。

本批新增/调整：

- 新增目录：
  - `runtime/ui/simulation/programs/`；
- 每个测试程序独立一个模块：
  - `square-linear.js`；
  - `pocket-z.js`；
  - `incremental-loop.js`；
  - `arc-g2-g3.js`；
  - `drill-g81.js`；
- 新增 `runtime/ui/simulation/programs/index.js` 统一导出：
  - `SIMULATION_TEST_PROGRAMS`；
  - `DEFAULT_SIMULATION_PROGRAM_ID`；
  - `DEFAULT_SIMULATION_PROGRAM`；
  - `getSimulationTestPrograms()`；
  - `getSimulationTestProgram(programId)`；
- `simulation-app.js` 改为从 `programs/index.js` 导入并 re-export，保持原有页面/API/test import
  兼容；
- `verify_real_simulation_programs.mjs` 新增目录化校验：
  - `programs/*.js` 文件数必须等于程序数量；
  - simulation-app re-export 必须与 directory-backed inventory 一致；
  - 默认程序和 ID 唯一性保持不变；
- README、AXIS-style implementation docs、PROJECT_COMPLETION_TRACKER 同步记录程序目录约定。

后续新增测试程序规则：

1. 在 `runtime/ui/simulation/programs/` 新增一个 `*.js` 模块；
2. 模块导出 `{ id, label, category, text, expectedMotionTypes }`；
3. 在 `programs/index.js` 导入并加入 `SIMULATION_TEST_PROGRAMS`；
4. 跑 `wasm-port/tests/ui/node/verify_real_simulation_programs.sh` 和
   `SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh`。

本批仍保持 LinuxCNC 语义边界：

- 程序目录只保存 G-code fixture text 和 expected LinuxCNC canonical motion type 断言；
- 执行仍通过 LinuxCNC-backed WASM SDK；
- JS 没有新增 G-code 解释、planner 或 machine semantics。

八十四、2026-06-16 继续执行记录：真实 G-code 文本/文件执行

用户要求程序实现跑真实的 G-code 程序。本批在保留内置测试程序库的基础上，新增 operator-provided
G-code text 和 browser File 的执行入口。

本批新增实质能力：

- 页面工具栏新增 Open Program 文件入口：
  - `data-open-program`；
  - `data-open-program-file`；
- `window.linuxCncRealSimulationApi` 新增：
  - `runProgramText(programText, metadata)`；
  - `loadProgramFile(file)`；
- `runProgramText()` 会直接调用 `runRealBrowserSimulation({ programText })`，因此仍通过
  LinuxCNC-backed WASM interpreter 执行；
- `loadProgramFile(file)` 读取浏览器 File 文本，再走同一个 LinuxCNC WASM 执行路径；
- simulation state 新增 program source metadata：
  - `program.source`；
  - `program.sourceLabel`；
  - `program.filename`；
  - `document.body.dataset.simulationProgramSource`；
- UI 显示程序来源：
  - G-code pane header；
  - bottom status bar；
- browser smoke 新增真实 G-code 验证：
  - `runProgramText()` 执行非内置 G-code，验证 canonical output 中出现对应坐标；
  - `loadProgramFile()` 使用 browser `File` 对象加载 `.ngc` 文本，验证修改后的 G-code 坐标
    通过 LinuxCNC WASM 输出；
- Node smoke 新增 custom `programText` 直接执行验证。

本批新增/更新可执行验证：

```bash
wasm-port/tests/ui/node/verify_real_simulation_programs.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh
```

关键通过输出：

```text
real_simulation_programs_node_smoke=ok
browser_real_simulation_page_smoke=ok
```

本批仍保持 LinuxCNC 语义边界：

- JS 只读取用户提供的 G-code 文本/文件；
- G-code 执行仍交给 LinuxCNC-backed WASM；
- JS 不解释 G-code、不规划刀路、不推导 CNC 语义。
