补充 project release handoff 文档

This commit is contained in:
2026-06-16 04:11:55 +08:00
parent 67a4a69698
commit 5918a3c573
10 changed files with 380 additions and 14 deletions

View File

@@ -1,6 +1,6 @@
# Project Completion Tracker # Project Completion Tracker
Last updated: 2026-06-15 CST Last updated: 2026-06-16 CST
This file tracks the overall completion state of the LinuxCNC WASM/browser port. This file tracks the overall completion state of the LinuxCNC WASM/browser port.
Use it for project-level status and acceptance tracking. Use `text14.txt` for Use it for project-level status and acceptance tracking. Use `text14.txt` for
@@ -9,7 +9,7 @@ turn-by-turn continuation notes and next-batch execution records.
## Current Status ## Current Status
- Active continuation file: `text14.txt` - Active continuation file: `text14.txt`
- Latest completed batch: host/runtime boundary release-gate docs - Latest completed batch: project release handoff docs
- Latest relevant commit: use `git log -1 --oneline` after each committed batch - Latest relevant commit: use `git log -1 --oneline` after each committed batch
- Working tree at tracker creation: clean - Working tree at tracker creation: clean
- Required policy: LinuxCNC remains the only CNC semantic source - Required policy: LinuxCNC remains the only CNC semantic source
@@ -41,12 +41,12 @@ The project is complete for the current scope when all of the following are true
| Sim config inventory | Stable with skips | `executed=28`, `passed=28`, `skipped=131`, `unexpected_fail=0`; `docs/sim-configs-coverage-handoff.md` records the release-gate baseline. | | Sim config inventory | Stable with skips | `executed=28`, `passed=28`, `skipped=131`, `unexpected_fail=0`; `docs/sim-configs-coverage-handoff.md` records the release-gate baseline. |
| Native nc_files baseline | Stable | Last recorded Layer 1: `total 107`, `pass 101`, `expected_fail 6`, `unexpected_fail 0`. | | Native nc_files baseline | Stable | Last recorded Layer 1: `total 107`, `pass 101`, `expected_fail 6`, `unexpected_fail 0`. |
| Native sim configs baseline | Stable | Last recorded Layer 2: `total 159`, `pass 151`, `expected_fail 8`, `unexpected_fail 0`. | | Native sim configs baseline | Stable | Last recorded Layer 2: `total 159`, `pass 151`, `expected_fail 8`, `unexpected_fail 0`. |
| OPFS/session persistence | In progress | Browser smoke passes, SDK re-exports OPFS/session helpers, and `docs/opfs-session-persistence.md` defines the project-level release gate. | | OPFS/session persistence | Stable for current scope | Browser smoke passes, SDK re-exports OPFS/session helpers, and `docs/opfs-session-persistence.md` defines the project-level release gate. |
| SDK/API surface | In progress | SDK re-exports core, OPFS/session, sim-config staging, and INI panel shell/workflow overview helpers with a Node surface smoke. | | SDK/API surface | Stable for current scope | SDK re-exports core, OPFS/session, sim-config staging, and INI panel shell/workflow overview helpers with a Node surface smoke. |
| Browser/UI workflow | In progress | Workflow overview embedding mount DOM closure is complete; current focus is SDK/docs/release gate consolidation. | | Browser/UI workflow | Stable for current scope | Workflow overview embedding mount DOM closure is complete and documented for external shells. |
| Workflow overview embedding | In progress | Report/display/render, DOM contract/readiness/renderer, mount result/display/render, mount DOM contract/readiness/renderer/wrapper exist. | | Workflow overview embedding | Stable for current scope | Report/display/render, DOM contract/readiness/renderer, mount result/display/render, mount DOM contract/readiness/renderer/wrapper exist. |
| Host/runtime boundary proof | In progress | Host smoke passes; runtime families remain blocked and `docs/host-runtime-boundary-handoff.md` records host readiness, promotion blockers, dispatch, and evidence gates. | | Host/runtime boundary proof | Stable blocked state | Host smoke passes; runtime families remain blocked and `docs/host-runtime-boundary-handoff.md` records host readiness, promotion blockers, dispatch, and evidence gates. |
| Documentation/release gate | In progress | OPFS/session, sim-config, and host/runtime release gates are documented and smoke-tested; final README/docs pass still pending. | | Documentation/release gate | Stable for current scope | `docs/project-release-handoff.md` links README, panel entry, SDK, OPFS/session, sim-config, host/runtime, source reuse, drift, and tracker acceptance paths. |
## Blocked Runtime Families ## Blocked Runtime Families
@@ -74,7 +74,9 @@ Execute these in order unless a later user request explicitly changes priority.
Current next task: Current next task:
- Refresh final README/docs acceptance checklist and project completion handoff. - Run the final required gate set from `docs/project-release-handoff.md`, keep
the working tree clean, and add the final `text14.txt` completion record if
all gates pass.
Then complete the closure: Then complete the closure:
@@ -176,16 +178,21 @@ Completion criteria:
Work items: Work items:
- Update `README.md`. - Update `README.md`. Done.
- Update `docs/panel-entry.md`. - Update `docs/panel-entry.md`. Done.
- Update `docs/source-reuse-map.md`. - Update `docs/source-reuse-map.md`. Done.
- Update `docs/drift-report.md`. - Update `docs/drift-report.md`. Done.
- Add or refresh final acceptance checklist. - Add or refresh final acceptance checklist. Done via
`docs/project-release-handoff.md`.
- Add docs smoke for project release handoff. Done via
`tests/docs/node/verify_project_release_handoff_docs.sh`.
Completion criteria: Completion criteria:
- A new developer can run validation from README/docs without reading old - A new developer can run validation from README/docs without reading old
`text1` through `text13`. `text1` through `text13`.
- `project_release_handoff_docs_node_smoke=ok` is included in the host
aggregate gate.
## Required Gates ## Required Gates
@@ -228,4 +235,5 @@ wasm-port/tests/native/verify_sim_configs.sh
- [ ] Browser INI panel smoke passes. - [ ] Browser INI panel smoke passes.
- [ ] Host aggregate smoke passes. - [ ] Host aggregate smoke passes.
- [ ] Runtime blocked families remain documented. - [ ] Runtime blocked families remain documented.
- [ ] Project release handoff docs smoke passes.
- [ ] README/docs explain supported workflows and blocked items. - [ ] README/docs explain supported workflows and blocked items.

View File

@@ -1399,3 +1399,99 @@ host_wasm_opfs_browser_smokes=ok
`wasm-port/README.md`、`PROJECT_COMPLETION_TRACKER.md` 和必要 docs 索引,形成新接手者不阅读 `wasm-port/README.md`、`PROJECT_COMPLETION_TRACKER.md` 和必要 docs 索引,形成新接手者不阅读
`text1` 到 `text13` 也能完成验证的最终路径;重点是收敛 required gates、supported workflows、 `text1` 到 `text13` 也能完成验证的最终路径;重点是收敛 required gates、supported workflows、
blocked runtime families、SDK/API surface 与 browser/UI workflow 入口,不新增功能或 CNC 语义。 blocked runtime families、SDK/API surface 与 browser/UI workflow 入口,不新增功能或 CNC 语义。
十六、2026-06-16 继续执行记录project release handoff docs
本轮按 `text14.txt` 执行,推进最终 README/docs acceptance checklist 与项目完成 handoff。
新增项目级 release handoff 文档和 docs smoke把 README、panel entry、SDK、OPFS/session、
sim-config coverage、host/runtime boundary、source reuse、drift report 与 tracker 串成新接手者可直接
执行的验收路径。
完成内容:
- 新增 `wasm-port/docs/project-release-handoff.md`
- 新增 `wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs`
- 新增 `wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh`
- `wasm-port/README.md` 增加当前 release handoff 入口、最小 release validation commands、
expected handoff smoke outputs、browser/UI 与 SDK 入口;
- `wasm-port/docs/panel-entry.md` 增加项目级 handoff 入口、SDK 稳定导入说明、
workflow overview embedding helpers 概括与 release validation 引用;
- `wasm-port/docs/source-reuse-map.md` 增加 project release handoff 交叉引用;
- `wasm-port/docs/drift-report.md` 增加 project release handoff 交叉引用;
- `wasm-port/tests/host/verify_host_smokes.sh` 纳入
`wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh`
- `PROJECT_COMPLETION_TRACKER.md` 同步:
- latest completed batch 更新为 `project release handoff docs`
- OPFS/session persistence、SDK/API surface、Browser/UI workflow、Workflow overview embedding、
Documentation/release gate 标记为 current scope stable
- Host/runtime boundary proof 标记为 stable blocked state
- Documentation/Release Gate 工作项标记完成;
- Final Acceptance Checklist 增加 project release handoff docs smoke
- 当前下一步收敛为 final required gate set、clean working tree 与最终 completion record
- 未新增控制按钮;
- 未执行 action-plan
- 未解析 G-code
- 未解释 canonical events
- 未新增 JS CNC 语义;
- 未运行 opt-in runtime probes
- 未 promotion blocked runtime family
- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned
runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh
wasm-port/tests/docs/node/verify_opfs_session_docs.sh
wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh
wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
project_release_handoff_docs_node_smoke=ok
opfs_session_docs_node_smoke=ok
sim_configs_coverage_docs_node_smoke=ok
host_runtime_boundary_docs_node_smoke=ok
sdk_surface_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_executed=28
sim_configs_wasm_node_inventory_passed=28
sim_configs_wasm_node_inventory_skipped=131
sim_configs_wasm_node_inventory_unexpected_fail=0
sim_configs_wasm_node_inventory_skip_ASSET_ONLY=65
sim_configs_wasm_node_inventory_skip_L4_PYTHON_REMAP=53
sim_configs_wasm_node_inventory_skip_L4_TOOL_DB=1
sim_configs_wasm_node_inventory_skip_L4_USER_M_PROCESS=1
sim_configs_wasm_node_inventory_skip_NON_MAIN_CLASS=10
sim_configs_wasm_node_inventory_skip_UPSTREAM_DEMO=1
browser_ini_opfs_smoke=ok
browser_ini_control_page_smoke=ok
browser_ini_launch_smoke=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
browser_interp_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
进入最终 clean-tree acceptance closeout。下一批建议在本批提交后从 clean working tree 重新执行
`docs/project-release-handoff.md` 的最小 release validation commands若全部通过则把
`PROJECT_COMPLETION_TRACKER.md` 的 Final Acceptance Checklist 勾选为当前 scope complete并在
`text14.txt` 追加最终完成记录。仍不新增功能、不扩大 CNC 语义、不 promotion blocked runtime family。

View File

@@ -2,6 +2,41 @@
This directory is the standalone workspace for the WASM-based simulation port. This directory is the standalone workspace for the WASM-based simulation port.
## Current Release Handoff
Start from `docs/project-release-handoff.md` for the current project-level
handoff. It links the browser/UI workflow surface, SDK surface,
OPFS/session persistence scope, sim-config coverage baseline, blocked
host/runtime families, source reuse rules, drift rules, and acceptance tracker.
The minimum release validation commands for the current scope are:
```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
```
Expected handoff smoke outputs include:
```text
project_release_handoff_docs_node_smoke=ok
opfs_session_docs_node_smoke=ok
sim_configs_coverage_docs_node_smoke=ok
host_runtime_boundary_docs_node_smoke=ok
sdk_surface_node_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
Browser/UI entry points are documented in `docs/panel-entry.md`. Stable SDK
imports are documented in `runtime/sdk/README.md` and should come from
`runtime/sdk/src/index.js`.
Rules: Rules:
1. `linuxcnc/` is treated as the upstream source tree. 1. `linuxcnc/` is treated as the upstream source tree.
@@ -136,6 +171,8 @@ Sim-config inventory coverage and release-gate handoff is documented in
`docs/sim-configs-coverage-handoff.md`. `docs/sim-configs-coverage-handoff.md`.
Host/runtime boundary release-gate handoff is documented in Host/runtime boundary release-gate handoff is documented in
`docs/host-runtime-boundary-handoff.md`. `docs/host-runtime-boundary-handoff.md`.
Project-level release acceptance and next-maintainer handoff is documented in
`docs/project-release-handoff.md`.
The presence of this directory means the port is managed independently of the The presence of this directory means the port is managed independently of the
native LinuxCNC tree even though LinuxCNC remains the semantic source of truth. native LinuxCNC tree even though LinuxCNC remains the semantic source of truth.

View File

@@ -6,6 +6,10 @@ As of the current upstream baseline, no byte-level drift is allowed between
files listed in `tools/source-manifest.txt` and the matching files under files listed in `tools/source-manifest.txt` and the matching files under
`../linuxcnc/`. `../linuxcnc/`.
The project-level release handoff in `docs/project-release-handoff.md` includes
this drift report in the final acceptance path alongside source reuse,
OPFS/session, sim-config coverage, host/runtime boundary, SDK, and UI docs.
The enforced upstream baseline is: The enforced upstream baseline is:
```text ```text

View File

@@ -2,6 +2,12 @@
This page is the short entry map for the INI panel UI shell. This page is the short entry map for the INI panel UI shell.
For the project-level acceptance path that references this UI surface, start
with `docs/project-release-handoff.md`. Stable SDK imports for external callers
are documented in `runtime/sdk/README.md` and should come from
`runtime/sdk/src/index.js`. The workflow overview embedding helpers below are
the read-only external-shell path for embedding and mounting overview state.
## Shell Module ## Shell Module
Use the shell-facing module when an outer UI needs entry links or a read-only Use the shell-facing module when an outer UI needs entry links or a read-only
@@ -428,3 +434,7 @@ read-only readiness snapshot for the embedded panel API and first control view.
The entry shell only links pages and renders already-observed panel state. It The entry shell only links pages and renders already-observed panel state. It
does not parse G-code, infer canonical events, or implement LinuxCNC-owned does not parse G-code, infer canonical events, or implement LinuxCNC-owned
tool, parameter, planner, or kinematics behavior. tool, parameter, planner, or kinematics behavior.
Release validation for this surface is covered by `verify_ui_node_smokes.sh`,
`verify_ini_panel_browser.sh`, and the project handoff docs smoke
`verify_project_release_handoff_docs.sh`.

View File

@@ -0,0 +1,124 @@
# Project release handoff
This is the short project-level handoff for the current LinuxCNC WASM/browser
port scope. It points a new maintainer to the supported workflow surfaces, the
required release gates, and the boundaries that must remain blocked until real
LinuxCNC-owned runtime proof exists.
## Start here
Use these documents as the current handoff set:
- `README.md` for the workspace layout and release validation commands.
- `docs/panel-entry.md` for browser/UI entry points and shell handoff helpers.
- `runtime/sdk/README.md` for stable SDK imports from `runtime/sdk/src/index.js`.
- `docs/opfs-session-persistence.md` for OPFS/session persistence scope.
- `docs/sim-configs-coverage-handoff.md` for sim-config inventory status.
- `docs/host-runtime-boundary-handoff.md` for blocked runtime families.
- `docs/source-reuse-map.md` and `docs/drift-report.md` for LinuxCNC source
reuse and non-drift rules.
- `../PROJECT_COMPLETION_TRACKER.md` for project-level acceptance tracking.
Old turn logs `text1.txt` through `text13.txt` are historical context. Current
continuation records are in `../text14.txt`.
## Supported current workflows
- INI panel launch, edit/run page, read-only control page, workflow overview,
and external shell handoff are exposed from `runtime/ui/ini-panel/`.
- External shells should use the read-only helpers documented in
`docs/panel-entry.md`, including workflow overview embedding mount DOM
contract/readiness/renderer/wrapper helpers.
- SDK callers should import stable helpers from `runtime/sdk/src/index.js`.
- OPFS/session persistence is host-side storage glue. Parameter and tool-table
behavior still comes from the LinuxCNC-backed interpreter SDK calls.
- Sim-config inventory promotion remains evidence-driven and must keep
`unexpected_fail=0`.
## Required release gates
Run these before claiming the current scope is release-ready:
```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
```
The host aggregate gate includes SDK, OPFS, docs, UI Node, WASM Node, and
browser smoke coverage. A passing aggregate ends with:
```text
host_wasm_opfs_browser_smokes=ok
```
## Expected baseline outputs
The current sim-config inventory release baseline is:
```text
sim_configs_wasm_node_inventory_executed=28
sim_configs_wasm_node_inventory_passed=28
sim_configs_wasm_node_inventory_skipped=131
sim_configs_wasm_node_inventory_unexpected_fail=0
```
The expected docs and SDK smoke outputs include:
```text
project_release_handoff_docs_node_smoke=ok
opfs_session_docs_node_smoke=ok
sim_configs_coverage_docs_node_smoke=ok
host_runtime_boundary_docs_node_smoke=ok
sdk_surface_node_smoke=ok
```
The expected browser INI panel smoke outputs include:
```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
```
## Blocked runtime families
These runtime families remain blocked:
- `L4-USER-M-PROCESS`
- `L4-TOOL-DB`
- `L4-PYTHON-REMAP`
Do not promote them from skipped/blocked state without LinuxCNC-owned native
runtime proof followed by Node/WASM and browser/host validation. The opt-in
runtime probes are documented in `docs/host-runtime-boundary-handoff.md`; they
must not be run on hosts that do not provide the required LinuxCNC runtime.
## Acceptance checklist
- `git diff --check` passes.
- Vendor sync and standalone CNC semantic guards pass.
- Interpreter WASM Node smoke passes.
- Sim-config inventory has `unexpected_fail=0`.
- UI Node smoke passes.
- Browser INI panel smoke passes.
- Host aggregate smoke passes.
- SDK exports match `runtime/sdk/README.md`.
- `docs/panel-entry.md` documents the external shell workflow surface.
- OPFS/session, sim-config coverage, host/runtime boundary, source reuse, and
drift docs all point to the current validation gates.
- Blocked runtime families remain documented and are not falsely promoted.
## Next maintainer rule
Add new CNC behavior only by reusing vendored LinuxCNC source or a documented
runtime-edge adapter. JavaScript may stage files, mount UI state, manage OPFS,
load WASM modules, and call C ABI functions; it must not implement G-code,
tool, parameter, planner, kinematics, remap, or canonical motion semantics.

View File

@@ -29,6 +29,11 @@ Current validation is intentionally mechanical:
documented Python/remap runtime-edge stubs in documented Python/remap runtime-edge stubs in
`runtime/core/linuxcnc_wrap/linuxcnc_interp_edge_stubs.cpp`. `runtime/core/linuxcnc_wrap/linuxcnc_interp_edge_stubs.cpp`.
The project-level release handoff in `docs/project-release-handoff.md` links
this source reuse map to the README, panel entry documentation, SDK surface,
OPFS/session release gate, sim-config coverage gate, host/runtime blocked
families, and drift report.
## Reuse Matrix ## Reuse Matrix
| Capability | LinuxCNC source files | Port classification | Standalone boundary | Current validation | | Capability | LinuxCNC source files | Port classification | Standalone boundary | Current validation |

View File

@@ -0,0 +1,75 @@
import assert from "node:assert/strict";
import { readFileSync } from "node:fs";
import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";
const __dirname = dirname(fileURLToPath(import.meta.url));
const root = resolve(__dirname, "../../..");
function literalRegExp(text) {
return new RegExp(text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
}
const handoffText = readFileSync(resolve(root, "docs/project-release-handoff.md"), "utf8");
const readmeText = readFileSync(resolve(root, "README.md"), "utf8");
const panelEntryText = readFileSync(resolve(root, "docs/panel-entry.md"), "utf8");
const sdkReadmeText = readFileSync(resolve(root, "runtime/sdk/README.md"), "utf8");
const sourceReuseText = readFileSync(resolve(root, "docs/source-reuse-map.md"), "utf8");
const driftText = readFileSync(resolve(root, "docs/drift-report.md"), "utf8");
const hostSmokeText = readFileSync(resolve(root, "tests/host/verify_host_smokes.sh"), "utf8");
const trackerText = readFileSync(resolve(root, "../PROJECT_COMPLETION_TRACKER.md"), "utf8");
for (const phrase of [
"Project release handoff",
"docs/panel-entry.md",
"runtime/sdk/README.md",
"docs/opfs-session-persistence.md",
"docs/sim-configs-coverage-handoff.md",
"docs/host-runtime-boundary-handoff.md",
"docs/source-reuse-map.md",
"docs/drift-report.md",
"PROJECT_COMPLETION_TRACKER.md",
"runtime/sdk/src/index.js",
"workflow overview embedding mount DOM",
"verify_no_standalone_cnc_semantics.sh",
"verify_host_smokes.sh",
"host_wasm_opfs_browser_smokes=ok",
"sim_configs_wasm_node_inventory_unexpected_fail=0",
"browser_ini_shell_integration_workflow_smoke=ok",
"project_release_handoff_docs_node_smoke=ok",
"L4-USER-M-PROCESS",
"L4-TOOL-DB",
"L4-PYTHON-REMAP",
]) {
assert.match(handoffText, literalRegExp(phrase));
}
for (const phrase of [
"docs/project-release-handoff.md",
"project_release_handoff_docs_node_smoke=ok",
]) {
assert.match(readmeText, literalRegExp(phrase));
assert.match(hostSmokeText, literalRegExp("verify_project_release_handoff_docs.sh"));
}
for (const phrase of [
"docs/project-release-handoff.md",
"runtime/sdk/src/index.js",
"workflow overview embedding",
]) {
assert.match(panelEntryText, literalRegExp(phrase));
}
for (const phrase of [
"OPFS/session persistence exports",
"INI panel shell handoff exports",
]) {
assert.match(sdkReadmeText, literalRegExp(phrase));
}
assert.match(sourceReuseText, literalRegExp("docs/project-release-handoff.md"));
assert.match(driftText, literalRegExp("docs/project-release-handoff.md"));
assert.match(trackerText, /Documentation\/release gate/);
assert.match(trackerText, /Final Acceptance Checklist/);
console.log("project_release_handoff_docs_node_smoke=ok");

View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/../../.." && pwd)"
node "$ROOT_DIR/tests/docs/node/verify_project_release_handoff_docs.mjs"

View File

@@ -17,6 +17,7 @@ SKIP_TP_BUILD=1 "$ROOT_DIR/tests/wasm/node/verify_tp_wasm.sh"
"$ROOT_DIR/tests/docs/node/verify_opfs_session_docs.sh" "$ROOT_DIR/tests/docs/node/verify_opfs_session_docs.sh"
"$ROOT_DIR/tests/docs/node/verify_sim_configs_coverage_docs.sh" "$ROOT_DIR/tests/docs/node/verify_sim_configs_coverage_docs.sh"
"$ROOT_DIR/tests/docs/node/verify_host_runtime_boundary_docs.sh" "$ROOT_DIR/tests/docs/node/verify_host_runtime_boundary_docs.sh"
"$ROOT_DIR/tests/docs/node/verify_project_release_handoff_docs.sh"
"$ROOT_DIR/tests/ui/node/verify_ui_node_smokes.sh" "$ROOT_DIR/tests/ui/node/verify_ui_node_smokes.sh"
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/browser/verify_ini_panel_browser.sh" SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/browser/verify_ini_panel_browser.sh"
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/browser/verify_interp_browser.sh" SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/browser/verify_interp_browser.sh"