From 5f1d885d36e4118be5b4f8ee012adb2334c2489d Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sat, 13 Jun 2026 07:56:32 +0800 Subject: [PATCH] Guard cam-nisley staging paths --- text6.txt | 42 +++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 12 +++++- .../tests/wasm/node/verify_interp_wasm.mjs | 16 ++++++- 3 files changed, 67 insertions(+), 3 deletions(-) diff --git a/text6.txt b/text6.txt index 1182616..fdd5cf6 100644 --- a/text6.txt +++ b/text6.txt @@ -578,3 +578,45 @@ wasm-port/tests/host/verify_host_smokes.sh `test.tbl`,可按本批模式补 file-list guard;或者继续挑选短小单文件 direct-file case。仍不要推进 blocked runtime promotion、browser full inventory 扩面或 JS CNC 语义实现。 + +十五、2026-06-13 继续执行记录:cam-nisley file-list staging path guard + +本批按“已有明确 file list 的 fixture staged path guard”推进,完成 +`cam-nisley` 目录现有 Node/browser coverage 使用的 2 个 staged 文件: + +- `cam-nisley/cam.ngc` +- `cam-nisley/test.tbl` + +完成内容: + +- Node 侧新增 `camNisleyFiles` fixed manifest; +- Node 侧用 `interpRegressionNgcFilesRecursive("cam-nisley")` 与 upstream vendored + `.ngc` fixture 精确对账; +- Node 侧检查 `writeInterpRegressionFiles(...)` 目标 staged path 与 fixed manifest + 一致; +- browser 侧增加 fixed-count 与 duplicate-free guard; +- browser 侧检查 staged path 去掉 `/work/browser-interp/cam-nisley/` 前缀后与 + fixed manifest 一致; +- 仅校验文件清单与 staging 路径,不改变工具表/INI 语义; +- 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。优先候选:`rotation` +组三项已有 fixed manifest,可补 staged path 对账;或者继续挑选短小单文件 +direct-file case。仍不要推进 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 536d134..985a179 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -6536,10 +6536,18 @@ ].join("\n"), ); - const camNisleyDir = await writeInterpRegressionFiles(interp, "cam-nisley", [ + const camNisleyFiles = [ "cam.ngc", "test.tbl", - ]); + ]; + if (camNisleyFiles.length !== 2 || new Set(camNisleyFiles).size !== camNisleyFiles.length) { + throw new Error("browser_interp_cam_nisley_fixture_coverage: list drift"); + } + const camNisleyDir = await writeInterpRegressionFiles(interp, "cam-nisley", camNisleyFiles); + const camNisleyStagedRelativeFiles = camNisleyFiles.map((file) => `${camNisleyDir}/${file}`.replace("/work/browser-interp/cam-nisley/", "")); + if (camNisleyStagedRelativeFiles.join(",") !== camNisleyFiles.join(",")) { + throw new Error("browser_interp_cam_nisley_staging_manifest: list drift"); + } interp.writeTextFile( `${camNisleyDir}/test.ini`, [ diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index 5e356ae..18ff2d0 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -1491,7 +1491,21 @@ verifyExpectedOutput( ].join("\n"), ); -const camNisleyDir = writeInterpRegressionFiles("cam-nisley", ["cam.ngc", "test.tbl"]); +const camNisleyFiles = [ + "cam.ngc", + "test.tbl", +]; +assert.deepEqual( + camNisleyFiles.filter((file) => file.endsWith(".ngc")), + interpRegressionNgcFilesRecursive("cam-nisley"), + "interp cam-nisley fixture coverage drift", +); +const camNisleyDir = writeInterpRegressionFiles("cam-nisley", camNisleyFiles); +assert.deepEqual( + camNisleyFiles.map((file) => `${camNisleyDir}/${file}`), + camNisleyFiles.map((file) => `/work/interp/cam-nisley/${file}`), + "interp cam-nisley staging manifest drift", +); interp.writeTextFile( `${camNisleyDir}/test.ini`, [