From 17df47d68d107af28e60a25059b5bdf58359e3fe Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sat, 13 Jun 2026 07:02:00 +0800 Subject: [PATCH] Guard g52 staging path --- text5.txt | 84 +++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 12 +++ .../tests/wasm/node/verify_interp_wasm.mjs | 15 ++++ 3 files changed, 111 insertions(+) diff --git a/text5.txt b/text5.txt index 9ba5cb6..2a64f4f 100644 --- a/text5.txt +++ b/text5.txt @@ -7663,3 +7663,87 @@ Guard final g10 staging paths 建议继续选择已有 Node/browser coverage、且不依赖 blocked runtime 的 small fixture family;优先检查 direct-file 或 staging helper 已成型的 case,仍只做 host/filesystem staging guard,不新增 CNC 语义。 + +八十一、2026-06-13 继续执行记录:g52/g92 staging path guard + +本轮继续选择已有 Node/browser coverage、且不依赖 blocked runtime 的 small +fixture family。当前 host 仍按 blocked runtime 规则处理,不执行任何 +`ENABLE_*_RUNTIME_PROBE=1` opt-in native probe。 + +1. 候选选择。 + +选择 `tests/interp/g52` 当前唯一 vendored `.ngc`: + +- `g52/g52-g92-interaction/g52-g92-interaction.ngc` + +该 case 已在 Node/browser 单独执行,不需要 INI/HAL/task/tool DB/Python +remap/user-M process runtime。本轮只固定 fixed manifest 与 staged path 一致性, +不新增 CNC 语义。 + +2. 覆盖对账。 + +`tests/interp/g52` 当前 upstream `.ngc` manifest: + +```text +g52-g92-interaction/g52-g92-interaction.ngc +``` + +3. 更新。 + +更新: + +- `wasm-port/tests/wasm/node/verify_interp_wasm.mjs` +- `wasm-port/tests/browser/interp_smoke.html` + +Node 新增: + +- 新增 `g52RegressionFiles` fixed list; +- 与 `interpRegressionNgcFilesRecursive("g52")` 精确对账; +- 检查 `writeInterpRegressionFile(...)` 返回的 staged path 与 + `/work/interp/g52/...` fixed manifest path 一致。 + +Browser 新增: + +- 新增 fixed-count 和 duplicate-free guard; +- 检查 browser staged `.ngc` path 去掉 `/work/browser-interp/g52/` 前缀后, + 与 fixed manifest 一致; +- browser 仍不枚举目录。 + +4. 已执行验证。 + +```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_interp_browser.sh +wasm-port/tests/host/verify_host_smokes.sh +``` + +结果: + +- `git diff --check` clean。 +- `vendor sync up to date` +- `standalone CNC semantics guard complete` +- `interp_wasm_node_smoke=ok` +- Node inventory 保持: + - `executed=28` + - `passed=28` + - `skipped=131` + - `unexpected_fail=0` +- `browser_interp_smoke=ok` +- `host_wasm_opfs_browser_smokes=ok` + +5. 下一步工作建议。 + +当前测试工作集已稳定。建议先做小提交,message: + +```text +Guard g52 staging path +``` + +提交后继续选择已有 Node/browser coverage、且不依赖 blocked runtime 的 direct-file +fixture。下一步可优先检查早期单文件 cases,例如 `do-while-break`、`exists`、 +`return-value` 或 `subs-follow-main`,按 2 到 3 个 case 一批补 fixed manifest 与 +staged path guard。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index fcdcd96..02fd135 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -8295,6 +8295,18 @@ "g52/g52-g92-interaction", "g52-g92-interaction.ngc", ); + const g52RegressionFiles = [ + "g52-g92-interaction/g52-g92-interaction.ngc", + ]; + if (g52RegressionFiles.length !== 1 || new Set(g52RegressionFiles).size !== g52RegressionFiles.length) { + throw new Error("browser_interp_g52_fixture_coverage: list drift"); + } + const g52StagedNgcFiles = [ + g52G92InteractionPath, + ].map((path) => path.replace("/work/browser-interp/g52/", "")); + if (g52StagedNgcFiles.join(",") !== g52RegressionFiles.join(",")) { + throw new Error("browser_interp_g52_staging_manifest: list drift"); + } verifyExpectedOutput( "browser_interp_g52_g92_interaction", interp.runFile(g52G92InteractionPath), diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index a1014d8..745421f 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -3184,6 +3184,21 @@ const g52G92InteractionPath = writeInterpRegressionFile( "g52/g52-g92-interaction", "g52-g92-interaction.ngc", ); +const g52RegressionFiles = [ + "g52-g92-interaction/g52-g92-interaction.ngc", +]; +assert.deepEqual( + g52RegressionFiles, + interpRegressionNgcFilesRecursive("g52"), + "interp g52 fixture coverage drift", +); +assert.deepEqual( + [ + g52G92InteractionPath, + ], + g52RegressionFiles.map((file) => `/work/interp/g52/${file}`), + "interp g52 staging manifest drift", +); const g52G92InteractionRun = runWithCapturedPrints(() => interp.runFile(g52G92InteractionPath), );