From 3555b47c9176c7d54bb5de952a7ee7215aae1f37 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Fri, 12 Jun 2026 23:21:49 +0800 Subject: [PATCH] Guard oword-unwind staging manifest --- text5.txt | 56 +++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 15 +++++ .../tests/wasm/node/verify_interp_wasm.mjs | 18 ++++++ 3 files changed, 89 insertions(+) diff --git a/text5.txt b/text5.txt index a40de35..5f29498 100644 --- a/text5.txt +++ b/text5.txt @@ -6577,3 +6577,59 @@ wasm-port/tests/native/verify_native_probes.sh 2. 或暂停新增 coverage,保持当前 native/Node/browser gate 绿色; 3. 若 `verify_nc_files.sh` 再次出现 `comp-g1.ngc` unexpected failure,再单独调查 tool-table staging/build cache 顺序,而不是改 expected baseline。 + +六十九、2026-06-12 继续执行记录:oword-unwind staging manifest guard + +本轮继续当前 host 可执行路线,选择已有 INI-context 覆盖的 +`tests/interp/oword-unwind` 做小范围 staging manifest guard。不新增 runtime 面, +不执行任何 `ENABLE_*_RUNTIME_PROBE=1` opt-in native probe。 + +1. 覆盖对账。 + +`tests/interp/oword-unwind` 当前 upstream `.ngc` 文件: + +```text +fail.ngc +test.ngc +``` + +该 family 已通过 `stageInterpIniContext("oword-unwind")` 在 Node/browser 中执行 +覆盖,并依赖 `[RS274NGC]SUBROUTINE_PATH=.` staging `fail.ngc`。 + +2. 更新。 + +更新: + +- `wasm-port/tests/wasm/node/verify_interp_wasm.mjs` +- `wasm-port/tests/browser/interp_smoke.html` + +Node 新增: + +- `owordUnwindNgcFiles` 固定 `fail.ngc` 和 `test.ngc`; +- 与 `interpRegressionNgcFilesRecursive("oword-unwind")` 精确对账; +- 检查 `stageInterpIniContext()` 返回的 `plan.files` 中 `.ngc` 文件集合与该 + fixed list 一致。 + +Browser 新增: + +- fixed-count 和 duplicate-free guard; +- 检查 browser `stageInterpIniContext()` 返回的 `plan.files` 中 `.ngc` 文件集合 + 与 fixed list 一致; +- browser 仍不枚举目录。 + +3. 下一步工作建议。 + +先复跑: + +```bash +git diff --check +wasm-port/tests/wasm/node/verify_interp_wasm.sh +wasm-port/tests/browser/verify_interp_browser.sh +wasm-port/tests/host/verify_host_smokes.sh +``` + +如果通过,做小提交,建议 message: + +```text +Guard oword-unwind staging manifest +``` diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index 740056f..33f4772 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -7344,6 +7344,21 @@ ); const owordUnwindPlan = await stageInterpIniContext(interp, "oword-unwind"); + const owordUnwindNgcFiles = [ + "fail.ngc", + "test.ngc", + ]; + if (owordUnwindNgcFiles.length !== 2 || new Set(owordUnwindNgcFiles).size !== owordUnwindNgcFiles.length) { + throw new Error("browser_interp_oword_unwind_fixture_coverage: list drift"); + } + const owordUnwindStagedNgcFiles = owordUnwindPlan.files + .map((file) => file.sourceRel) + .filter((sourceRel) => sourceRel.endsWith(".ngc")) + .map((sourceRel) => sourceRel.replace("tests/interp/oword-unwind/", "")) + .sort(); + if (owordUnwindStagedNgcFiles.join(",") !== owordUnwindNgcFiles.join(",")) { + throw new Error("browser_interp_oword_unwind_staging_manifest: list drift"); + } verifyExpectedOutput( "browser_interp_oword_unwind", interp.runFileWithIniContinueOnError( diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index 48c7f3d..2f33749 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -2242,6 +2242,24 @@ verifyExpectedOutput( ); const owordUnwindPlan = stageInterpIniContext("oword-unwind"); +const owordUnwindNgcFiles = [ + "fail.ngc", + "test.ngc", +]; +assert.deepEqual( + owordUnwindNgcFiles, + interpRegressionNgcFilesRecursive("oword-unwind"), + "interp oword-unwind fixture coverage drift", +); +assert.deepEqual( + owordUnwindPlan.files + .map((file) => file.sourceRel) + .filter((sourceRel) => sourceRel.endsWith(".ngc")) + .map((sourceRel) => sourceRel.replace("tests/interp/oword-unwind/", "")) + .sort(), + owordUnwindNgcFiles, + "interp oword-unwind staging manifest drift", +); verifyExpectedOutput( "interp_oword_unwind_wasm", interp.runFileWithIniContinueOnError(