补充 host runtime boundary release gate 文档

This commit is contained in:
2026-06-15 22:51:51 +08:00
parent d16003b67a
commit 67a4a69698
8 changed files with 410 additions and 7 deletions

View File

@@ -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: sim-config coverage release-gate docs - Latest completed batch: host/runtime boundary release-gate 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
@@ -45,8 +45,8 @@ The project is complete for the current scope when all of the following are true
| 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 | 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. | | 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. | | 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 below remain blocked. | | 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 and sim-config release gates are documented and smoke-tested; final README/docs pass still pending. | | 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. |
## Blocked Runtime Families ## Blocked Runtime Families
@@ -74,7 +74,7 @@ Execute these in order unless a later user request explicitly changes priority.
Current next task: Current next task:
- Consolidate host/runtime boundary reports and final release-gate documentation. - Refresh final README/docs acceptance checklist and project completion handoff.
Then complete the closure: Then complete the closure:
@@ -161,14 +161,16 @@ Completion criteria:
Work items: Work items:
- Consolidate runtime family proof reports. - Consolidate runtime family proof reports. Done via `docs/host-runtime-boundary-handoff.md`.
- Keep missing host runtime as blocked. - Keep missing host runtime as blocked. Done; current status remains `host_blocked_for_all_opt_in_native_probes`.
- If real runtime becomes available, validate in native -> Node/WASM -> browser/host order. - If real runtime becomes available, validate in native -> Node/WASM -> browser/host order.
- Add docs smoke for host/runtime boundary handoff. Done via `tests/docs/node/verify_host_runtime_boundary_docs.sh`.
Completion criteria: Completion criteria:
- `verify_host_smokes.sh` remains stable. - `verify_host_smokes.sh` remains stable.
- Boundaries are documented and machine-readable. - Boundaries are documented and machine-readable.
- `host_runtime_boundary_docs_node_smoke=ok` is included in the host aggregate gate.
### 6. Documentation/Release Gate ### 6. Documentation/Release Gate

View File

@@ -1253,3 +1253,149 @@ host/runtime boundary handoff 文档/测试,聚合 blocked runtime family 的
promotion blockers、opt-in probe dispatch/skip evidence、native evidence acceptance gate以及 promotion blockers、opt-in probe dispatch/skip evidence、native evidence acceptance gate以及
当前 host 为什么保持 `blocked_missing_host_runtime`;仍不运行 opt-in runtime probes不 promotion 当前 host 为什么保持 `blocked_missing_host_runtime`;仍不运行 opt-in runtime probes不 promotion
`L4-USER-M-PROCESS`、`L4-TOOL-DB`、`L4-PYTHON-REMAP`。 `L4-USER-M-PROCESS`、`L4-TOOL-DB`、`L4-PYTHON-REMAP`。
十五、2026-06-15 继续执行记录host/runtime boundary release-gate docs
本轮按 `text14.txt` 执行,继续推进 host/runtime boundary reports 与最终 release-gate 文档收口。
新增短版 host/runtime boundary handoff 文档与 docs smoke聚合 blocked runtime family 的 host
readiness、promotion blockers、opt-in probe dispatch/skip evidence、native evidence acceptance gate
并明确当前 host 为什么保持 blocked。
完成内容:
- 新增 `wasm-port/docs/host-runtime-boundary-handoff.md`
- 文档记录当前 blocked runtime families
- `L4-USER-M-PROCESS`
- `L4-TOOL-DB`
- `L4-PYTHON-REMAP`
- 文档记录关键 generated artifacts
- `runtime-boundary-host-readiness-rollup.tsv`
- `runtime-boundary-promotion-blockers.tsv`
- `runtime-boundary-opt-in-probe-dispatch-rollup.tsv`
- `runtime-boundary-native-evidence-acceptance-gate.tsv`
- `runtime-boundary-opt-in-probe-skip-evidence-rollup.tsv`
- `blocked-runtime-promotion-lock.tsv`
- 文档固定当前 host readiness rollup
- `host_readiness_status=host_blocked_for_all_opt_in_native_probes`
- `family_count=3`
- `host_ready_family_count=0`
- `host_blocked_family_count=3`
- `blocked_families=L4-PYTHON-REMAP,L4-TOOL-DB,L4-USER-M-PROCESS`
- `missing_host_requirements=halcmd,halrun,linuxcnc,milltask`
- `ready_opt_in_command_count=0`
- `execution_enabled=0`
- `promotion_allowed=0`
- 文档记录 current promotion blockers
- `host_runtime_requirements_missing`
- `native_runtime_probe_not_passed`
- `native_pass_evidence_not_ready`
- `node_inventory_gate_not_complete`
- `browser_smoke_gate_not_complete`
- `promotion_lock_active`
- `manual_lock_update_required`
- 文档固定 opt-in probe dispatch state
- `dispatch_status=dispatch_blocked_for_all_opt_in_native_probes`
- `probe_count=3`
- `dispatch_allowed_count=0`
- `dispatch_blocked_count=3`
- `dispatch_actions=skip_missing_host_requirements`
- `execution_enabled=0`
- `promotion_allowed=0`
- 文档记录仍 blocked 的 opt-in probe commands
- `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`
- 文档记录 native evidence acceptance gate 当前状态:
- `current_probe_status=skipped_missing_host_runtime`
- `native_evidence_status=pending_until_native_pass`
- `skip_evidence_status=skip_valid_until_host_requirements_available`
- `node_gate_status=blocked_until_native_pass_evidence`
- `browser_gate_status=blocked_until_node_gate_complete`
- `native_evidence_gate=blocked_until_host_requirements_available`
- `evidence_acceptance_allowed=0`
- 文档明确 skipped opt-in probe 不是 native pass只证明当前 host 正确 blocked
- 文档记录 release gate 与 promotion rule
- 新增 `wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.mjs`
- 新增 `wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.sh`
- docs smoke 覆盖:
- handoff 文档存在;
- host readiness artifact
- promotion blocker artifact
- opt-in dispatch artifact
- native evidence acceptance artifact
- blocked runtime family
- blocked opt-in commands
- full-process docs、sim-config handoff、inventory test、README、tracker、host gate 交叉引用;
- 若 generated host readiness / dispatch rollup artifacts 已存在,则校验当前 blocked 状态;
- `wasm-port/README.md` 增加 `docs/host-runtime-boundary-handoff.md` 项目级入口;
- `wasm-port/tests/host/verify_host_smokes.sh` 纳入
`wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.sh`
- `PROJECT_COMPLETION_TRACKER.md` 同步当前完成批次与下一步最终 README/docs acceptance checklist
- 修正 `verify_sim_configs_coverage_docs.mjs` 对 tracker 文案的断言,使其接受当前
`Sim config coverage` 表述;
- 未新增控制按钮;
- 未执行 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_sim_configs_inventory_wasm.sh
wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.sh
wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh
wasm-port/tests/docs/node/verify_opfs_session_docs.sh
wasm-port/tests/sdk/node/verify_sdk_surface.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.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
host_runtime_boundary_docs_node_smoke=ok
sim_configs_coverage_docs_node_smoke=ok
opfs_session_docs_node_smoke=ok
sdk_surface_node_smoke=ok
ini_panel_ui_shell_node_smoke=ok
ini_panel_launch_api_manifest_node_smoke=ok
ini_panel_shell_integration_manifest_node_smoke=ok
ini_panel_entry_docs_node_smoke=ok
ui_node_smokes=ok
browser_ini_opfs_smoke=ok
browser_ini_control_page_smoke=ok
browser_ini_launch_smoke=ok
browser_ini_workflow_overview_smoke=ok
browser_ini_shell_integration_workflow_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_executed=28
sim_configs_wasm_node_inventory_passed=28
sim_configs_wasm_node_inventory_skipped=131
sim_configs_wasm_node_inventory_unexpected_fail=0
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
host_wasm_opfs_browser_smokes=ok
```
下一步工作计划:
继续推进最终 README/docs acceptance checklist 与项目完成 handoff。下一批建议刷新
`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 语义。

View File

@@ -134,6 +134,8 @@ Project-level OPFS/session persistence and release-gate handoff is documented in
`docs/opfs-session-persistence.md`. `docs/opfs-session-persistence.md`.
Sim-config inventory coverage and release-gate handoff is documented in 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
`docs/host-runtime-boundary-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

@@ -0,0 +1,146 @@
# Host/runtime boundary release handoff
This document is the short release-gate handoff for blocked LinuxCNC runtime
families in the WASM/browser port. It summarizes current host readiness,
promotion blockers, opt-in probe dispatch state, native evidence acceptance, and
the rule that blocked runtime families remain blocked on this host.
Detailed references:
- `docs/full-process-boundary-design.md`
- `docs/sim-configs-coverage-matrix.md`
- `docs/sim-configs-coverage-handoff.md`
- `tests/wasm/node/verify_sim_configs_inventory_wasm.mjs`
## Current blocked runtime families
The current hard blocked families are:
- `L4-USER-M-PROCESS`
- `L4-TOOL-DB`
- `L4-PYTHON-REMAP`
Current host readiness is summarized by:
- `build/wasm/sim-configs-inventory/runtime-boundary-host-readiness-rollup.tsv`
- `build/wasm/sim-configs-inventory/runtime-boundary-promotion-blockers.tsv`
- `build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-dispatch-rollup.tsv`
- `build/wasm/sim-configs-inventory/runtime-boundary-native-evidence-acceptance-gate.tsv`
- `build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-skip-evidence-rollup.tsv`
- `build/wasm/sim-configs-inventory/blocked-runtime-promotion-lock.tsv`
Current rollup state:
```text
host_readiness_status=host_blocked_for_all_opt_in_native_probes
family_count=3
host_ready_family_count=0
host_blocked_family_count=3
blocked_families=L4-PYTHON-REMAP,L4-TOOL-DB,L4-USER-M-PROCESS
missing_host_requirements=halcmd,halrun,linuxcnc,milltask
ready_opt_in_command_count=0
execution_enabled=0
promotion_allowed=0
```
## Promotion blockers
Each blocked family currently has `promotion_ready=0`, `execution_enabled=0`,
and `promotion_allowed=0`.
The current blocker keys are:
```text
host_runtime_requirements_missing
native_runtime_probe_not_passed
native_pass_evidence_not_ready
node_inventory_gate_not_complete
browser_smoke_gate_not_complete
promotion_lock_active
manual_lock_update_required
```
The next unblock action is to provide the missing host runtime requirements for
the relevant family. Providing host commands is not enough to promote a row; it
only allows the next opt-in probe gate to be considered.
## Opt-in probe dispatch
The current dispatch rollup is:
```text
dispatch_status=dispatch_blocked_for_all_opt_in_native_probes
probe_count=3
dispatch_allowed_count=0
dispatch_blocked_count=3
dispatch_actions=skip_missing_host_requirements
execution_enabled=0
promotion_allowed=0
```
These commands remain blocked on this host:
```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
```
Do not run them unless the generated preflight, family readiness, dispatch
plan, and dispatch rollup all permit the specific family.
## Native evidence acceptance
`runtime-boundary-native-evidence-acceptance-gate.tsv` currently records:
- `current_probe_status=skipped_missing_host_runtime`
- `native_evidence_status=pending_until_native_pass`
- `skip_evidence_status=skip_valid_until_host_requirements_available`
- `node_gate_status=blocked_until_native_pass_evidence`
- `browser_gate_status=blocked_until_node_gate_complete`
- `native_evidence_gate=blocked_until_host_requirements_available`
- `evidence_acceptance_allowed=0`
A skipped opt-in probe is not a native pass. It only proves that this host is
correctly blocked until the required LinuxCNC runtime commands are available.
## Release gate
Use this gate when touching blocked runtime family reports, host readiness, or
promotion policy:
```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_sim_configs_inventory_wasm.sh
wasm-port/tests/docs/node/verify_host_runtime_boundary_docs.sh
wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh
wasm-port/tests/host/verify_host_smokes.sh
```
The host aggregate must include:
```text
sim_configs_wasm_node_inventory=ok
host_runtime_boundary_docs_node_smoke=ok
sim_configs_coverage_docs_node_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
## Promotion rule
No blocked family may be promoted until all of these are true:
1. Host readiness allows the family-specific opt-in probe.
2. The explicit opt-in probe passes natively with LinuxCNC-owned runtime
behavior.
3. Native evidence acceptance allows the pass evidence.
4. Node/WASM inventory proof passes after native evidence.
5. Browser/host proof passes after Node/WASM proof.
6. `verify_no_standalone_cnc_semantics.sh` still passes.
7. `blocked-runtime-promotion-lock.tsv`, docs, and tracker records are updated
deliberately.
Until then, `L4-USER-M-PROCESS`, `L4-TOOL-DB`, and `L4-PYTHON-REMAP` remain
blocked, inventory-only runtime families.

View File

@@ -0,0 +1,100 @@
import assert from "node:assert/strict";
import { existsSync, 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, "\\$&"));
}
function parseTsv(text) {
const [headerLine, ...lines] = text.trim().split(/\r?\n/);
const headers = headerLine.split("\t");
return lines.map((line) => {
const cells = line.split("\t");
return Object.fromEntries(headers.map((header, index) => [header, cells[index] ?? ""]));
});
}
const docText = readFileSync(resolve(root, "docs/host-runtime-boundary-handoff.md"), "utf8");
const fullProcessText = readFileSync(resolve(root, "docs/full-process-boundary-design.md"), "utf8");
const simHandoffText = readFileSync(resolve(root, "docs/sim-configs-coverage-handoff.md"), "utf8");
const inventoryTestText = readFileSync(
resolve(root, "tests/wasm/node/verify_sim_configs_inventory_wasm.mjs"),
"utf8",
);
const hostSmokeText = readFileSync(resolve(root, "tests/host/verify_host_smokes.sh"), "utf8");
const readmeText = readFileSync(resolve(root, "README.md"), "utf8");
const trackerText = readFileSync(resolve(root, "../PROJECT_COMPLETION_TRACKER.md"), "utf8");
for (const phrase of [
"Host/runtime boundary release handoff",
"runtime-boundary-host-readiness-rollup.tsv",
"runtime-boundary-promotion-blockers.tsv",
"runtime-boundary-opt-in-probe-dispatch-rollup.tsv",
"runtime-boundary-native-evidence-acceptance-gate.tsv",
"blocked-runtime-promotion-lock.tsv",
"host_readiness_status=host_blocked_for_all_opt_in_native_probes",
"missing_host_requirements=halcmd,halrun,linuxcnc,milltask",
"dispatch_status=dispatch_blocked_for_all_opt_in_native_probes",
"current_probe_status=skipped_missing_host_runtime",
"native_evidence_status=pending_until_native_pass",
"evidence_acceptance_allowed=0",
"ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1",
"ENABLE_TOOL_DB_RUNTIME_PROBE=1",
"ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1",
"L4-USER-M-PROCESS",
"L4-TOOL-DB",
"L4-PYTHON-REMAP",
"host_runtime_boundary_docs_node_smoke=ok",
]) {
assert.match(docText, literalRegExp(phrase));
}
for (const phrase of [
"runtime-boundary-host-readiness-rollup.tsv",
"runtime-boundary-opt-in-probe-dispatch-rollup.tsv",
"runtime-boundary-native-evidence-acceptance-gate.tsv",
]) {
assert.match(fullProcessText, literalRegExp(phrase));
assert.match(inventoryTestText, literalRegExp(phrase));
assert.match(docText, literalRegExp(phrase));
}
assert.match(simHandoffText, /L4-PYTHON-REMAP/);
assert.match(hostSmokeText, /verify_host_runtime_boundary_docs\.sh/);
assert.match(readmeText, /docs\/host-runtime-boundary-handoff\.md/);
assert.match(trackerText, /Host\/runtime boundary/);
const hostRollupPath = resolve(
root,
"build/wasm/sim-configs-inventory/runtime-boundary-host-readiness-rollup.tsv",
);
if (existsSync(hostRollupPath)) {
const [row] = parseTsv(readFileSync(hostRollupPath, "utf8"));
assert.equal(row.host_readiness_status, "host_blocked_for_all_opt_in_native_probes");
assert.equal(row.family_count, "3");
assert.equal(row.host_ready_family_count, "0");
assert.equal(row.host_blocked_family_count, "3");
assert.equal(row.missing_host_requirements, "halcmd,halrun,linuxcnc,milltask");
assert.equal(row.execution_enabled, "0");
assert.equal(row.promotion_allowed, "0");
}
const dispatchRollupPath = resolve(
root,
"build/wasm/sim-configs-inventory/runtime-boundary-opt-in-probe-dispatch-rollup.tsv",
);
if (existsSync(dispatchRollupPath)) {
const [row] = parseTsv(readFileSync(dispatchRollupPath, "utf8"));
assert.equal(row.dispatch_status, "dispatch_blocked_for_all_opt_in_native_probes");
assert.equal(row.dispatch_allowed_count, "0");
assert.equal(row.dispatch_blocked_count, "3");
assert.equal(row.execution_enabled, "0");
assert.equal(row.promotion_allowed, "0");
}
console.log("host_runtime_boundary_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_host_runtime_boundary_docs.mjs"

View File

@@ -68,7 +68,7 @@ for (const reason of [
assert.match(inventoryTestText, /sim_configs_wasm_node_inventory_skip_/); assert.match(inventoryTestText, /sim_configs_wasm_node_inventory_skip_/);
assert.match(hostSmokeText, /verify_sim_configs_inventory_wasm\.sh/); assert.match(hostSmokeText, /verify_sim_configs_inventory_wasm\.sh/);
assert.match(hostSmokeText, /verify_sim_configs_coverage_docs\.sh/); assert.match(hostSmokeText, /verify_sim_configs_coverage_docs\.sh/);
assert.match(trackerText, /sim-config coverage/); assert.match(trackerText, /Sim config coverage|sim-config coverage/);
const skipSummaryPath = resolve(root, "build/wasm/sim-configs-inventory/skip-summary.tsv"); const skipSummaryPath = resolve(root, "build/wasm/sim-configs-inventory/skip-summary.tsv");
if (existsSync(skipSummaryPath)) { if (existsSync(skipSummaryPath)) {

View File

@@ -16,6 +16,7 @@ SKIP_TP_BUILD=1 "$ROOT_DIR/tests/wasm/node/verify_tp_wasm.sh"
"$ROOT_DIR/tests/sdk/node/verify_sdk_surface.sh" "$ROOT_DIR/tests/sdk/node/verify_sdk_surface.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/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"