From 25d90efda610b8af20f9582c94ac0116b1e48a3a Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sat, 13 Jun 2026 06:46:00 +0800 Subject: [PATCH] Guard final m98m99 staging paths --- text5.txt | 88 +++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 8 ++ .../tests/wasm/node/verify_interp_wasm.mjs | 11 +++ 3 files changed, 107 insertions(+) diff --git a/text5.txt b/text5.txt index 9504f1b..3053c8d 100644 --- a/text5.txt +++ b/text5.txt @@ -7396,3 +7396,91 @@ Guard main-program m98m99 staging paths 这将覆盖 `m98m99` fixed manifest 的最后 3 个 `.ngc`。本批仍只做 staged path 与 fixed manifest 对账,不扩大到 blocked runtime。 + +七十八、2026-06-13 继续执行记录:m98m99 final direct-file staging path guard + +本轮完成 `tests/interp/m98m99` fixed manifest 的最后一小批 staging guard。当前 +host 仍按 blocked runtime 规则处理,不执行任何 `ENABLE_*_RUNTIME_PROBE=1` +opt-in native probe。 + +1. 候选选择。 + +选择上一节建议的最后 3 个 `.ngc`: + +- `m98m99/13-named-program/test-named.ngc` +- `m98m99/13-named-program/test-numbered.ngc` +- `m98m99/14-o-expression-call/test.ngc` + +这些 case 已在 Node/browser 单独执行,不需要 INI/HAL/task/tool DB/Python +remap/user-M process runtime。本轮只固定 staged path 与既有 fixed `.ngc` +manifest 最后 3 项的一致性,不新增 CNC 语义。 + +2. 覆盖对账。 + +`tests/interp/m98m99` 当前 upstream `.ngc` manifest 已由既有 fixed list 覆盖, +本轮新增对账的 manifest slice 为: + +```text +13-named-program/test-named.ngc +13-named-program/test-numbered.ngc +14-o-expression-call/test.ngc +``` + +3. 更新。 + +更新: + +- `wasm-port/tests/wasm/node/verify_interp_wasm.mjs` +- `wasm-port/tests/browser/interp_smoke.html` + +Node 新增: + +- 在创建 `13` 两个 direct-file staged path 和 `14` direct-file staged path 后, + 检查实际 path 与 `m98m99RegressionFiles.slice(21, 24)` 推导出的 + `/work/interp/m98m99/...` path 一致。 + +Browser 新增: + +- 同步检查 `13` 和 `14` staged `.ngc` path 去掉 + `/work/browser-interp/m98m99/` 前缀后,与 + `m98m99RegressionFiles.slice(21, 24)` 一致; +- 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 final m98m99 staging paths +``` + +提交后 `m98m99` 的 24 条 fixed `.ngc` manifest 已完成分批 staged path guard。 +下一步建议转向下一个已有 Node/browser 覆盖、且不依赖 blocked runtime 的 fixture +family,例如 `g10`。先从 `g10` 现有 fixed manifest 和 staging helper 对账开始, +仍保持每批只做 host/filesystem staging guard,不新增 CNC 语义。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index e96f463..c089e25 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -8126,6 +8126,14 @@ "m98m99/14-o-expression-call", "test.ngc", ); + const m98m99FinalStagedNgcFiles = [ + m98m99NamedProgramNamedPath, + m98m99NamedProgramNumberedPath, + m98m99OExpressionCallPath, + ].map((path) => path.replace("/work/browser-interp/m98m99/", "")); + if (m98m99FinalStagedNgcFiles.join(",") !== m98m99RegressionFiles.slice(21, 24).join(",")) { + throw new Error("browser_interp_m98m99_final_staging_manifest: list drift"); + } const m98m99OExpressionCallRun = runWithCapturedPrints(() => interp.runFile(m98m99OExpressionCallPath), ); diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index df65815..ef012fc 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -3022,6 +3022,17 @@ const m98m99OExpressionCallPath = writeInterpRegressionFile( "m98m99/14-o-expression-call", "test.ngc", ); +assert.deepEqual( + [ + m98m99NamedProgramNamedPath, + m98m99NamedProgramNumberedPath, + m98m99OExpressionCallPath, + ], + m98m99RegressionFiles + .slice(21, 24) + .map((file) => `/work/interp/m98m99/${file}`), + "interp m98m99 final direct-file staging manifest drift", +); const m98m99OExpressionCallRun = runWithCapturedPrints(() => interp.runFile(m98m99OExpressionCallPath), );