diff --git a/text6.txt b/text6.txt index fdd5cf6..da1e2b0 100644 --- a/text6.txt +++ b/text6.txt @@ -620,3 +620,45 @@ wasm-port/tests/host/verify_host_smokes.sh 组三项已有 fixed manifest,可补 staged path 对账;或者继续挑选短小单文件 direct-file case。仍不要推进 blocked runtime promotion、browser full inventory 扩面或 JS CNC 语义实现。 + +十六、2026-06-13 继续执行记录:rotation staging path guard + +本批按“已有 fixed manifest 的 direct-file fixture staged path guard”推进,完成 +`rotation` 组现有 Node/browser coverage 使用的 3 个 staged `.ngc` 文件: + +- `rotation/abs-pts/test.ngc` +- `rotation/g28/g28.ngc` +- `rotation/g53/g53.ngc` + +完成内容: + +- Node 侧复用既有 `rotationRegressionFiles` fixed manifest; +- Node 侧继续用 `interpRegressionNgcFilesRecursive("rotation")` 与 upstream + vendored `.ngc` fixture 精确对账; +- Node 侧检查实际 staged path 与 fixed manifest 一致; +- browser 侧复用既有 fixed-count 与 duplicate-free guard; +- browser 侧检查 staged path 去掉 `/work/browser-interp/rotation/` 前缀后与 + fixed manifest 一致; +- 不扩大 staging 到 `rotation/abs-pts/test.tbl`,保持现有 direct-file coverage; +- browser 仍不依赖目录枚举。 + +已运行验证: + +```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 +``` + +结果:全部通过。 + +下一步建议: + +继续选择已有 Node/browser coverage 且清单稳定的 fixture。优先候选:`g10`、`g52` +之外的 remaining direct-file 单项,或已经有 fixed list 的分组;若涉及工具表/INI, +只按现有 `writeInterpRegressionFiles(...)` 或 staging helper 输出做路径 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 985a179..257a437 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -7386,6 +7386,14 @@ } 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"); + } 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 18ff2d0..8342a92 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -2344,6 +2344,15 @@ 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", +); const rotationG53Output = interp.runFile(rotationG53Path); verifyExpectedOutput( "interp_rotation_g53_wasm",