From 1e72dc150e3f0b00168af83b43399832ec10f00c Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sat, 13 Jun 2026 06:39:23 +0800 Subject: [PATCH] Guard main-program m98m99 staging paths --- text5.txt | 107 ++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 26 +++-- .../tests/wasm/node/verify_interp_wasm.mjs | 25 ++-- 3 files changed, 142 insertions(+), 16 deletions(-) diff --git a/text5.txt b/text5.txt index 7bb7f8f..9504f1b 100644 --- a/text5.txt +++ b/text5.txt @@ -7289,3 +7289,110 @@ Guard nested m98m99 staging paths `11-main-program-oword` 有 7 个 `.ngc`,已在 Node/browser 分组执行;下一批仍只 做 staged path 与 fixed manifest 对账,不扩大到 blocked runtime。 + +七十七、2026-06-13 继续执行记录:m98m99 main-program staging path guard + +本轮继续拆 `tests/interp/m98m99`,仍保持小批量 staging guard。当前 host 仍按 +blocked runtime 规则处理,不执行任何 `ENABLE_*_RUNTIME_PROBE=1` opt-in native +probe。 + +1. 候选选择。 + +选择上一节建议的第四小批: + +- `m98m99/10-M98-P001/test.ngc` +- `m98m99/11-main-program-oword/test-illegal-end-main-with-eof.ngc` +- `m98m99/11-main-program-oword/test-illegal-no-m30-before-osub.ngc` +- `m98m99/11-main-program-oword/test-illegal-sub-after-percent.ngc` +- `m98m99/11-main-program-oword/test-legal-end-main-with-m02.ngc` +- `m98m99/11-main-program-oword/test-legal-end-main-with-m2.ngc` +- `m98m99/11-main-program-oword/test-legal-end-main-with-m30.ngc` +- `m98m99/11-main-program-oword/test-legal-end-main-with-percent.ngc` + +这些 case 已在 Node/browser 单独执行,不需要 INI/HAL/task/tool DB/Python +remap/user-M process runtime。本轮只固定 staged path 与既有 fixed `.ngc` +manifest 第 14 到第 21 项的一致性,不新增 CNC 语义。 + +2. 覆盖对账。 + +`tests/interp/m98m99` 当前 upstream `.ngc` manifest 已由既有 fixed list 覆盖, +本轮新增对账的 manifest slice 为: + +```text +10-M98-P001/test.ngc +11-main-program-oword/test-illegal-end-main-with-eof.ngc +11-main-program-oword/test-illegal-no-m30-before-osub.ngc +11-main-program-oword/test-illegal-sub-after-percent.ngc +11-main-program-oword/test-legal-end-main-with-m02.ngc +11-main-program-oword/test-legal-end-main-with-m2.ngc +11-main-program-oword/test-legal-end-main-with-m30.ngc +11-main-program-oword/test-legal-end-main-with-percent.ngc +``` + +3. 更新。 + +更新: + +- `wasm-port/tests/wasm/node/verify_interp_wasm.mjs` +- `wasm-port/tests/browser/interp_smoke.html` + +Node 新增: + +- 将 `11-main-program-oword` staged file list 提成 + `m98m99MainProgramOwordFiles`,并按 fixed manifest 顺序排列; +- 检查 `10-M98-P001` direct-file staged path,加上 `11` staged `.ngc` path, + 与 `m98m99RegressionFiles.slice(13, 21)` 推导出的 + `/work/interp/m98m99/...` path 一致。 + +Browser 新增: + +- 同步提取 `m98m99MainProgramOwordFiles`; +- 检查 `10` 和 `11` staged `.ngc` path 去掉 + `/work/browser-interp/m98m99/` 前缀后,与 + `m98m99RegressionFiles.slice(13, 21)` 一致; +- browser 仍不枚举目录。 + +4. 已执行验证。 + +```bash +git diff --check +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_interp_wasm.sh +SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh +SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh +wasm-port/tests/host/verify_host_smokes.sh +``` + +结果: + +- `git diff --check` clean。 +- `vendor sync up to date` +- `standalone CNC semantics guard complete` +- `interp_wasm_node_smoke=ok` +- Node inventory 保持: + - `executed=28` + - `passed=28` + - `skipped=131` + - `unexpected_fail=0` +- `browser_interp_smoke=ok` +- `host_wasm_opfs_browser_smokes=ok` + +5. 下一步工作建议。 + +当前工作集已稳定。建议先做小提交,message: + +```text +Guard main-program m98m99 staging paths +``` + +提交后继续拆 `m98m99`,下一小批建议选择: + +```text +13-named-program/test-named.ngc +13-named-program/test-numbered.ngc +14-o-expression-call/test.ngc +``` + +这将覆盖 `m98m99` fixed manifest 的最后 3 个 `.ngc`。本批仍只做 staged path +与 fixed manifest 对账,不扩大到 blocked runtime。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index 4659950..e96f463 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -7969,19 +7969,27 @@ ].join("\n"), ); + const m98m99MainProgramOwordFiles = [ + "test-illegal-end-main-with-eof.ngc", + "test-illegal-no-m30-before-osub.ngc", + "test-illegal-sub-after-percent.ngc", + "test-legal-end-main-with-m02.ngc", + "test-legal-end-main-with-m2.ngc", + "test-legal-end-main-with-m30.ngc", + "test-legal-end-main-with-percent.ngc", + ]; const m98m99MainProgramOwordDir = await writeInterpRegressionFiles( interp, "m98m99/11-main-program-oword", - [ - "test-legal-end-main-with-m2.ngc", - "test-legal-end-main-with-m02.ngc", - "test-legal-end-main-with-m30.ngc", - "test-legal-end-main-with-percent.ngc", - "test-illegal-end-main-with-eof.ngc", - "test-illegal-no-m30-before-osub.ngc", - "test-illegal-sub-after-percent.ngc", - ], + m98m99MainProgramOwordFiles, ); + const m98m99MainProgramStagedNgcFiles = [ + m98m99M98P001Path, + ...m98m99MainProgramOwordFiles.map((file) => `${m98m99MainProgramOwordDir}/${file}`), + ].map((path) => path.replace("/work/browser-interp/m98m99/", "")); + if (m98m99MainProgramStagedNgcFiles.join(",") !== m98m99RegressionFiles.slice(13, 21).join(",")) { + throw new Error("browser_interp_m98m99_main_program_staging_manifest: list drift"); + } for (const mainProgramFixture of [ { name: "legal_m2", diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index 13fb548..df65815 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -2866,17 +2866,28 @@ verifyExpectedOutput( ].join("\n"), ); +const m98m99MainProgramOwordFiles = [ + "test-illegal-end-main-with-eof.ngc", + "test-illegal-no-m30-before-osub.ngc", + "test-illegal-sub-after-percent.ngc", + "test-legal-end-main-with-m02.ngc", + "test-legal-end-main-with-m2.ngc", + "test-legal-end-main-with-m30.ngc", + "test-legal-end-main-with-percent.ngc", +]; const m98m99MainProgramOwordDir = writeInterpRegressionFiles( "m98m99/11-main-program-oword", + m98m99MainProgramOwordFiles, +); +assert.deepEqual( [ - "test-legal-end-main-with-m2.ngc", - "test-legal-end-main-with-m02.ngc", - "test-legal-end-main-with-m30.ngc", - "test-legal-end-main-with-percent.ngc", - "test-illegal-end-main-with-eof.ngc", - "test-illegal-no-m30-before-osub.ngc", - "test-illegal-sub-after-percent.ngc", + m98m99M98P001Path, + ...m98m99MainProgramOwordFiles.map((file) => `${m98m99MainProgramOwordDir}/${file}`), ], + m98m99RegressionFiles + .slice(13, 21) + .map((file) => `/work/interp/m98m99/${file}`), + "interp m98m99 main-program staging manifest drift", ); for (const mainProgramFixture of [ {