From f27793abe7f31be646d38cca76097b803aeb1a05 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sat, 13 Jun 2026 07:34:29 +0800 Subject: [PATCH] Guard g33 and g6164 staging paths --- text6.txt | 43 +++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 24 +++++++++++ .../tests/wasm/node/verify_interp_wasm.mjs | 30 +++++++++++++ 3 files changed, 97 insertions(+) diff --git a/text6.txt b/text6.txt index b02bf11..5d72293 100644 --- a/text6.txt +++ b/text6.txt @@ -327,3 +327,46 @@ wasm-port/tests/host/verify_host_smokes.sh 无 INI/工具表依赖的 case。下一批可考虑 `g33.1/g33.1.ngc`、`g6164/test.ngc`, 再搭配一个已明确 expected-error 或 direct-file loop case;如果 case 属于目录集合 或带参数化循环,先检查是否已有固定 manifest 风格,避免扩大执行面。 + +九、2026-06-13 继续执行记录:g33/g6164 staging path guard + +本批继续按“小批量 direct-file fixture staged path guard”推进,完成 2 个短小、 +单文件、无 INI/工具表依赖的 interp fixture: + +- `g33.1/g33.1.ngc` +- `g6164/test.ngc` + +完成内容: + +- Node 侧为上述 2 个 fixture 增加 fixed `.ngc` manifest; +- Node 侧用 `interpRegressionNgcFilesRecursive(...)` 与 upstream vendored fixture + 精确对账; +- Node 侧检查 staged path 与 fixed manifest 一致; +- browser 侧增加 fixed-count 与 duplicate-free guard; +- browser 侧检查 staged path 去掉 `/work/browser-interp/.../` 前缀后与 fixed + manifest 一致; +- browser 仍不依赖目录枚举。 + +本批没有纳入 `g72` loop 组;该组在测试代码中是参数化循环,后续应按整组或 +明确固定 manifest 风格处理,避免为了凑数量拆出不自然的单项 guard。 + +已运行验证: + +```bash +git diff --check +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_interp_browser.sh +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/host/verify_host_smokes.sh +``` + +结果:全部通过。 + +下一步建议: + +继续推进时优先处理已经有固定 manifest 或自然成组的 direct-file fixtures。候选: +`good` arc 6 项可按已有 fixed fixture list 补 staged path 对账;或者 `g72` 两项、 +`g71` 四项按 loop manifest 成组补 guard。继续避免 blocked runtime promotion、 +browser full inventory 扩面,以及任何 JS CNC 语义实现。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index f2fd337..3128b65 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -7012,6 +7012,18 @@ } const g33_1Path = await writeInterpRegressionFile(interp, "g33.1", "g33.1.ngc"); + const g33_1NgcFiles = [ + "g33.1.ngc", + ]; + if (g33_1NgcFiles.length !== 1 || new Set(g33_1NgcFiles).size !== g33_1NgcFiles.length) { + throw new Error("browser_interp_g33_1_fixture_coverage: list drift"); + } + const g33_1StagedNgcFiles = [ + g33_1Path, + ].map((path) => path.replace("/work/browser-interp/g33.1/", "")); + if (g33_1StagedNgcFiles.join(",") !== g33_1NgcFiles.join(",")) { + throw new Error("browser_interp_g33_1_staging_manifest: list drift"); + } verifyExpectedOutput( "browser_interp_g33_1", interp.runFile(g33_1Path), @@ -7096,6 +7108,18 @@ } const g6164Path = await writeInterpRegressionFile(interp, "g6164", "test.ngc"); + const g6164NgcFiles = [ + "test.ngc", + ]; + if (g6164NgcFiles.length !== 1 || new Set(g6164NgcFiles).size !== g6164NgcFiles.length) { + throw new Error("browser_interp_g6164_fixture_coverage: list drift"); + } + const g6164StagedNgcFiles = [ + g6164Path, + ].map((path) => path.replace("/work/browser-interp/g6164/", "")); + if (g6164StagedNgcFiles.join(",") !== g6164NgcFiles.join(",")) { + throw new Error("browser_interp_g6164_staging_manifest: list drift"); + } verifyExpectedOutput( "browser_interp_g6164", interp.runFile(g6164Path), diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index af12d58..b91e7cd 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -1947,6 +1947,21 @@ for (const badFixture of badInterpFixtures) { } const g33_1Path = writeInterpRegressionFile("g33.1", "g33.1.ngc"); +const g33_1NgcFiles = [ + "g33.1.ngc", +]; +assert.deepEqual( + g33_1NgcFiles, + interpRegressionNgcFilesRecursive("g33.1"), + "interp g33.1 fixture coverage drift", +); +assert.deepEqual( + [ + g33_1Path, + ], + g33_1NgcFiles.map((file) => `/work/interp/g33.1/${file}`), + "interp g33.1 staging manifest drift", +); verifyExpectedOutput( "interp_g33_1_wasm", interp.runFile(g33_1Path), @@ -2033,6 +2048,21 @@ for (const goodArcFixture of goodArcFixtures) { } const g6164Path = writeInterpRegressionFile("g6164", "test.ngc"); +const g6164NgcFiles = [ + "test.ngc", +]; +assert.deepEqual( + g6164NgcFiles, + interpRegressionNgcFilesRecursive("g6164"), + "interp g6164 fixture coverage drift", +); +assert.deepEqual( + [ + g6164Path, + ], + g6164NgcFiles.map((file) => `/work/interp/g6164/${file}`), + "interp g6164 staging manifest drift", +); verifyExpectedOutput( "interp_g6164_wasm", interp.runFile(g6164Path),