From 880810e5c0ca3ded9a9487d151b919eeb4726cb0 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sat, 13 Jun 2026 08:56:13 +0800 Subject: [PATCH] Guard rotation direct-file staging --- text6.txt | 45 +++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 11 ++--- .../tests/wasm/node/verify_interp_wasm.mjs | 12 ++--- 3 files changed, 51 insertions(+), 17 deletions(-) diff --git a/text6.txt b/text6.txt index 5f77a1f..c3c46ac 100644 --- a/text6.txt +++ b/text6.txt @@ -1162,3 +1162,48 @@ m98m99 direct-file 与目录级 staging guard 已基本收束。下一批建议 这三个已有 Node/browser coverage 且属于同一 direct-file family,适合复用 `assertInterpRegressionFileStaging(...)` 替换当前 rotation aggregate slice。继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。 + +二十八、2026-06-13 继续执行记录:rotation direct-file staging guard + +本批转向 `rotation` direct-file family,复用 `assertInterpRegressionFileStaging(...)` +替换当前 rotation aggregate staged path guard: + +- `rotation/abs-pts/test.ngc` +- `rotation/g28/g28.ngc` +- `rotation/g53/g53.ngc` + +完成内容: + +- Node 侧为上述 3 个 direct-file case 增加局部 staged path guard; +- Node 侧保留 `rotationRegressionFiles` 对 upstream `.ngc` manifest 的覆盖检查; +- Node 侧移除 aggregate staged path 对账; +- browser 侧同步增加 3 个局部 staged path guard; +- browser 侧保留 fixed `.ngc` manifest duplicate-free 检查; +- browser 侧移除 aggregate staged path 对账,仍不枚举目录; +- 注意 `rotation/abs-pts` vendored 目录含 `test.tbl`,但当前 smoke 未 staging 该 + 文件;本批只收敛现有 `.ngc` direct-file path 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 +``` + +结果:全部通过。 + +下一步建议: + +继续处理其他 `writeInterpRegressionFile(...)` aggregate direct-file family。优先候选: + +- `g71/g72` direct-file loop; +- 或 `good`/`bad` arc/error fixture loop。 + +建议先选 `g71/g72`,因为 file list 较短且已有 Node/browser coverage,适合继续复用 +single-file helper 收敛 staging path 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 5b266e1..4a9c86d 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -7396,6 +7396,7 @@ "rotation/abs-pts", "test.ngc", ); + assertInterpRegressionFileStaging("rotation/abs-pts", "test.ngc", rotationAbsPtsPath); const rotationRegressionFiles = [ "abs-pts/test.ngc", "g28/g28.ngc", @@ -7432,6 +7433,7 @@ } const rotationG28Path = await writeInterpRegressionFile(interp, "rotation/g28", "g28.ngc"); + assertInterpRegressionFileStaging("rotation/g28", "g28.ngc", rotationG28Path); const rotationG28Output = interp.runFile(rotationG28Path); verifyExpectedOutput( "browser_interp_rotation_g28", @@ -7454,14 +7456,7 @@ } const rotationG53Path = await writeInterpRegressionFile(interp, "rotation/g53", "g53.ngc"); - const rotationStagedNgcFiles = [ - rotationAbsPtsPath, - rotationG28Path, - rotationG53Path, - ].map((path) => path.replace("/work/browser-interp/rotation/", "")); - if (rotationStagedNgcFiles.join(",") !== rotationRegressionFiles.join(",")) { - throw new Error("browser_interp_rotation_staging_manifest: list drift"); - } + assertInterpRegressionFileStaging("rotation/g53", "g53.ngc", rotationG53Path); const rotationG53Output = interp.runFile(rotationG53Path); verifyExpectedOutput( "browser_interp_rotation_g53", diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index 2c5d3c5..8ae3de9 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -2373,6 +2373,7 @@ verifyExpectedOutput( ); const rotationAbsPtsPath = writeInterpRegressionFile("rotation/abs-pts", "test.ngc"); +assertInterpRegressionFileStaging("rotation/abs-pts", "test.ngc", rotationAbsPtsPath); const rotationRegressionFiles = [ "abs-pts/test.ngc", "g28/g28.ngc", @@ -2409,6 +2410,7 @@ assert.equal( ); const rotationG28Path = writeInterpRegressionFile("rotation/g28", "g28.ngc"); +assertInterpRegressionFileStaging("rotation/g28", "g28.ngc", rotationG28Path); const rotationG28Output = interp.runFile(rotationG28Path); verifyExpectedOutput( "interp_rotation_g28_wasm", @@ -2433,15 +2435,7 @@ assert.match( ); const rotationG53Path = writeInterpRegressionFile("rotation/g53", "g53.ngc"); -assert.deepEqual( - [ - rotationAbsPtsPath, - rotationG28Path, - rotationG53Path, - ], - rotationRegressionFiles.map((file) => `/work/interp/rotation/${file}`), - "interp rotation staging manifest drift", -); +assertInterpRegressionFileStaging("rotation/g53", "g53.ngc", rotationG53Path); const rotationG53Output = interp.runFile(rotationG53Path); verifyExpectedOutput( "interp_rotation_g53_wasm",