新增 project release gate wrapper

This commit is contained in:
2026-06-16 04:33:06 +08:00
parent efbcf8b9bf
commit d076763ef4
6 changed files with 125 additions and 3 deletions

View File

@@ -9,7 +9,13 @@ 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:
The project release gate for the current scope is:
```bash
wasm-port/tests/host/verify_project_release_gate.sh
```
It executes these minimum release validation commands:
```bash
git diff --check
@@ -31,6 +37,7 @@ 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
project_release_gate=ok
```
Browser/UI entry points are documented in `docs/panel-entry.md`. Stable SDK

View File

@@ -37,7 +37,14 @@ continuation records are in `../text14.txt`.
## Required release gates
Run these before claiming the current scope is release-ready:
Run the single project release gate before claiming the current scope is
release-ready:
```bash
wasm-port/tests/host/verify_project_release_gate.sh
```
It executes the same minimum release validation commands:
```bash
git diff --check
@@ -55,6 +62,7 @@ browser smoke coverage. A passing aggregate ends with:
```text
host_wasm_opfs_browser_smokes=ok
project_release_gate=ok
```
## Expected baseline outputs
@@ -110,6 +118,7 @@ must not be run on hosts that do not provide the required LinuxCNC runtime.
- UI Node smoke passes.
- Browser INI panel smoke passes.
- Host aggregate smoke passes.
- `verify_project_release_gate.sh` 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

View File

@@ -17,6 +17,7 @@ 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 projectReleaseGateText = readFileSync(resolve(root, "tests/host/verify_project_release_gate.sh"), "utf8");
const trackerText = readFileSync(resolve(root, "../PROJECT_COMPLETION_TRACKER.md"), "utf8");
for (const phrase of [
@@ -33,7 +34,9 @@ for (const phrase of [
"workflow overview embedding mount DOM",
"verify_no_standalone_cnc_semantics.sh",
"verify_host_smokes.sh",
"verify_project_release_gate.sh",
"host_wasm_opfs_browser_smokes=ok",
"project_release_gate=ok",
"sim_configs_wasm_node_inventory_unexpected_fail=0",
"browser_ini_shell_integration_workflow_smoke=ok",
"project_release_handoff_docs_node_smoke=ok",
@@ -52,6 +55,20 @@ for (const phrase of [
assert.match(hostSmokeText, literalRegExp("verify_project_release_handoff_docs.sh"));
}
for (const phrase of [
"git diff --check",
"verify_vendor_sync.sh",
"verify_no_standalone_cnc_semantics.sh",
"verify_interp_wasm.sh",
"verify_sim_configs_inventory_wasm.sh",
"verify_ini_panel_browser.sh",
"verify_ui_node_smokes.sh",
"verify_host_smokes.sh",
"project_release_gate=ok",
]) {
assert.match(projectReleaseGateText, literalRegExp(phrase));
}
for (const phrase of [
"docs/project-release-handoff.md",
"runtime/sdk/src/index.js",
@@ -70,6 +87,7 @@ for (const phrase of [
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, /Project release gate wrapper/);
assert.match(trackerText, /Final Acceptance Checklist/);
console.log("project_release_handoff_docs_node_smoke=ok");

View File

@@ -0,0 +1,18 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
REPO_ROOT="$(cd "$ROOT_DIR/.." && pwd)"
cd "$REPO_ROOT"
git diff --check
"$ROOT_DIR/tools/verify_vendor_sync.sh"
"$ROOT_DIR/tools/verify_no_standalone_cnc_semantics.sh"
SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/wasm/node/verify_interp_wasm.sh"
SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/wasm/node/verify_sim_configs_inventory_wasm.sh"
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 "$ROOT_DIR/tests/browser/verify_ini_panel_browser.sh"
"$ROOT_DIR/tests/ui/node/verify_ui_node_smokes.sh"
"$ROOT_DIR/tests/host/verify_host_smokes.sh"
echo "project_release_gate=ok"