From 5918a3c573aa6b443486099fb42dbfdc93e51b5d Mon Sep 17 00:00:00 2001 From: wangdequan Date: Tue, 16 Jun 2026 04:11:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=20project=20release=20handof?= =?UTF-8?q?f=20=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROJECT_COMPLETION_TRACKER.md | 36 +++-- text14.txt | 96 ++++++++++++++ wasm-port/README.md | 37 ++++++ wasm-port/docs/drift-report.md | 4 + wasm-port/docs/panel-entry.md | 10 ++ wasm-port/docs/project-release-handoff.md | 124 ++++++++++++++++++ wasm-port/docs/source-reuse-map.md | 5 + .../verify_project_release_handoff_docs.mjs | 75 +++++++++++ .../verify_project_release_handoff_docs.sh | 6 + wasm-port/tests/host/verify_host_smokes.sh | 1 + 10 files changed, 380 insertions(+), 14 deletions(-) create mode 100644 wasm-port/docs/project-release-handoff.md create mode 100644 wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs create mode 100755 wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh diff --git a/PROJECT_COMPLETION_TRACKER.md b/PROJECT_COMPLETION_TRACKER.md index 667725c..8950793 100644 --- a/PROJECT_COMPLETION_TRACKER.md +++ b/PROJECT_COMPLETION_TRACKER.md @@ -1,6 +1,6 @@ # 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. 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 - 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 - Working tree at tracker creation: clean - 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. | | 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`. | -| 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. | -| 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. | -| Browser/UI workflow | In progress | Workflow overview embedding mount DOM closure is complete; current focus is SDK/docs/release gate consolidation. | -| Workflow overview embedding | In progress | 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. | -| 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. | +| 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 | 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 | Stable for current scope | Workflow overview embedding mount DOM closure is complete and documented for external shells. | +| 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 | 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 | 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 @@ -74,7 +74,9 @@ Execute these in order unless a later user request explicitly changes priority. 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: @@ -176,16 +178,21 @@ Completion criteria: Work items: -- Update `README.md`. -- Update `docs/panel-entry.md`. -- Update `docs/source-reuse-map.md`. -- Update `docs/drift-report.md`. -- Add or refresh final acceptance checklist. +- Update `README.md`. Done. +- Update `docs/panel-entry.md`. Done. +- Update `docs/source-reuse-map.md`. Done. +- Update `docs/drift-report.md`. Done. +- 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: - A new developer can run validation from README/docs without reading old `text1` through `text13`. +- `project_release_handoff_docs_node_smoke=ok` is included in the host + aggregate gate. ## Required Gates @@ -228,4 +235,5 @@ wasm-port/tests/native/verify_sim_configs.sh - [ ] Browser INI panel smoke passes. - [ ] Host aggregate smoke passes. - [ ] Runtime blocked families remain documented. +- [ ] Project release handoff docs smoke passes. - [ ] README/docs explain supported workflows and blocked items. diff --git a/text14.txt b/text14.txt index 86143ec..dc35c0b 100644 --- a/text14.txt +++ b/text14.txt @@ -1399,3 +1399,99 @@ host_wasm_opfs_browser_smokes=ok `wasm-port/README.md`、`PROJECT_COMPLETION_TRACKER.md` 和必要 docs 索引,形成新接手者不阅读 `text1` 到 `text13` 也能完成验证的最终路径;重点是收敛 required gates、supported workflows、 blocked runtime families、SDK/API surface 与 browser/UI workflow 入口,不新增功能或 CNC 语义。 + +十六、2026-06-16 继续执行记录:project release handoff docs + +本轮按 `text14.txt` 执行,推进最终 README/docs acceptance checklist 与项目完成 handoff。 +新增项目级 release handoff 文档和 docs smoke,把 README、panel entry、SDK、OPFS/session、 +sim-config coverage、host/runtime boundary、source reuse、drift report 与 tracker 串成新接手者可直接 +执行的验收路径。 + +完成内容: + +- 新增 `wasm-port/docs/project-release-handoff.md`; +- 新增 `wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs`; +- 新增 `wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh`; +- `wasm-port/README.md` 增加当前 release handoff 入口、最小 release validation commands、 + expected handoff smoke outputs、browser/UI 与 SDK 入口; +- `wasm-port/docs/panel-entry.md` 增加项目级 handoff 入口、SDK 稳定导入说明、 + workflow overview embedding helpers 概括与 release validation 引用; +- `wasm-port/docs/source-reuse-map.md` 增加 project release handoff 交叉引用; +- `wasm-port/docs/drift-report.md` 增加 project release handoff 交叉引用; +- `wasm-port/tests/host/verify_host_smokes.sh` 纳入 + `wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh`; +- `PROJECT_COMPLETION_TRACKER.md` 同步: + - latest completed batch 更新为 `project release handoff docs`; + - OPFS/session persistence、SDK/API surface、Browser/UI workflow、Workflow overview embedding、 + Documentation/release gate 标记为 current scope stable; + - Host/runtime boundary proof 标记为 stable blocked state; + - Documentation/Release Gate 工作项标记完成; + - Final Acceptance Checklist 增加 project release handoff docs smoke; + - 当前下一步收敛为 final required gate set、clean working tree 与最终 completion record; +- 未新增控制按钮; +- 未执行 action-plan; +- 未解析 G-code; +- 未解释 canonical events; +- 未新增 JS CNC 语义; +- 未运行 opt-in runtime probes; +- 未 promotion blocked runtime family; +- 未改变 LinuxCNC interpreter、tool、parameter、planner、kinematics、remap 或 LinuxCNC-owned + runtime semantics。 + +验证已通过: + +```bash +git diff --check +wasm-port/tools/verify_vendor_sync.sh +wasm-port/tools/verify_no_standalone_cnc_semantics.sh +SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh +SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh +wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh +wasm-port/tests/docs/node/verify_opfs_session_docs.sh +wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh +wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.sh +wasm-port/tests/sdk/node/verify_sdk_surface.sh +wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh +wasm-port/tests/ui/node/verify_ui_node_smokes.sh +SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh +wasm-port/tests/host/verify_host_smokes.sh +``` + +关键输出: + +```text +project_release_handoff_docs_node_smoke=ok +opfs_session_docs_node_smoke=ok +sim_configs_coverage_docs_node_smoke=ok +host_runtime_boundary_docs_node_smoke=ok +sdk_surface_node_smoke=ok +ini_panel_entry_docs_node_smoke=ok +ui_node_smokes=ok +vendor sync up to date +standalone CNC semantics guard complete +interp_wasm_node_smoke=ok +sim_configs_wasm_node_inventory_executed=28 +sim_configs_wasm_node_inventory_passed=28 +sim_configs_wasm_node_inventory_skipped=131 +sim_configs_wasm_node_inventory_unexpected_fail=0 +sim_configs_wasm_node_inventory_skip_ASSET_ONLY=65 +sim_configs_wasm_node_inventory_skip_L4_PYTHON_REMAP=53 +sim_configs_wasm_node_inventory_skip_L4_TOOL_DB=1 +sim_configs_wasm_node_inventory_skip_L4_USER_M_PROCESS=1 +sim_configs_wasm_node_inventory_skip_NON_MAIN_CLASS=10 +sim_configs_wasm_node_inventory_skip_UPSTREAM_DEMO=1 +browser_ini_opfs_smoke=ok +browser_ini_control_page_smoke=ok +browser_ini_launch_smoke=ok +browser_ini_workflow_overview_smoke=ok +browser_ini_shell_integration_workflow_smoke=ok +browser_interp_smoke=ok +host_wasm_opfs_browser_smokes=ok +``` + +下一步工作计划: + +进入最终 clean-tree acceptance closeout。下一批建议在本批提交后从 clean working tree 重新执行 +`docs/project-release-handoff.md` 的最小 release validation commands;若全部通过,则把 +`PROJECT_COMPLETION_TRACKER.md` 的 Final Acceptance Checklist 勾选为当前 scope complete,并在 +`text14.txt` 追加最终完成记录。仍不新增功能、不扩大 CNC 语义、不 promotion blocked runtime family。 diff --git a/wasm-port/README.md b/wasm-port/README.md index 21fed72..3057a3f 100644 --- a/wasm-port/README.md +++ b/wasm-port/README.md @@ -2,6 +2,41 @@ 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: 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`. Host/runtime boundary release-gate handoff is documented in `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 native LinuxCNC tree even though LinuxCNC remains the semantic source of truth. diff --git a/wasm-port/docs/drift-report.md b/wasm-port/docs/drift-report.md index 1de186f..88d820d 100644 --- a/wasm-port/docs/drift-report.md +++ b/wasm-port/docs/drift-report.md @@ -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 `../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: ```text diff --git a/wasm-port/docs/panel-entry.md b/wasm-port/docs/panel-entry.md index 8631373..96c0276 100644 --- a/wasm-port/docs/panel-entry.md +++ b/wasm-port/docs/panel-entry.md @@ -2,6 +2,12 @@ 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 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 does not parse G-code, infer canonical events, or implement LinuxCNC-owned 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`. diff --git a/wasm-port/docs/project-release-handoff.md b/wasm-port/docs/project-release-handoff.md new file mode 100644 index 0000000..685f23f --- /dev/null +++ b/wasm-port/docs/project-release-handoff.md @@ -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. diff --git a/wasm-port/docs/source-reuse-map.md b/wasm-port/docs/source-reuse-map.md index 445cfda..57bbb0f 100644 --- a/wasm-port/docs/source-reuse-map.md +++ b/wasm-port/docs/source-reuse-map.md @@ -29,6 +29,11 @@ Current validation is intentionally mechanical: documented Python/remap runtime-edge stubs in `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 | Capability | LinuxCNC source files | Port classification | Standalone boundary | Current validation | diff --git a/wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs b/wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs new file mode 100644 index 0000000..7d3b254 --- /dev/null +++ b/wasm-port/tests/docs/node/verify_project_release_handoff_docs.mjs @@ -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"); diff --git a/wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh b/wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh new file mode 100755 index 0000000..e87bc09 --- /dev/null +++ b/wasm-port/tests/docs/node/verify_project_release_handoff_docs.sh @@ -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" diff --git a/wasm-port/tests/host/verify_host_smokes.sh b/wasm-port/tests/host/verify_host_smokes.sh index 024db0c..ff04fae 100755 --- a/wasm-port/tests/host/verify_host_smokes.sh +++ b/wasm-port/tests/host/verify_host_smokes.sh @@ -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_sim_configs_coverage_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" 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"