diff --git a/text6.txt b/text6.txt index 65cbce3..a76685e 100644 --- a/text6.txt +++ b/text6.txt @@ -977,3 +977,46 @@ wasm-port/tests/host/verify_host_smokes.sh 同时保留 `m98m99/14-o-expression-call` direct-file slice guard;如继续小批量, 也可处理 `m98m99/09`、`11` 后续文档索引。继续避免 blocked runtime promotion、 browser full inventory 扩面和 JS CNC 语义实现。 + +二十四、2026-06-13 继续执行记录:m98m99 named-program staging guard + +本批继续复用 `assertInterpRegressionStaging(...)`,把 +`m98m99/13-named-program` 从 final aggregate direct-file guard 中拆成 +per-directory staged path guard,同时保留 `m98m99/14-o-expression-call` 的 +direct-file slice guard。 + +完成内容: + +- Node 侧将 `13-named-program` 的 `test-named.ngc` 与 `test-numbered.ngc` 提成 + fixed manifest; +- Node 侧用 upstream vendored `.ngc` 文件清单与 fixed manifest 精确对账; +- Node 侧检查 staged path 与 `/work/interp/m98m99/13-named-program/...` 一致; +- Node 侧将 final direct-file slice 收缩为只覆盖 `14-o-expression-call/test.ngc`; +- browser 侧新增同名 fixed manifest guard; +- browser 侧检查 staged path 去掉 + `/work/browser-interp/m98m99/13-named-program/` 前缀后与 fixed manifest 一致; +- browser 侧仍不枚举目录; +- 仅整理 host/filesystem staging guard,不改变 named-program 或 o-expression call + 语义。 + +已运行验证: + +```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 +``` + +结果:全部通过。 + +下一步建议: + +m98m99 目录级 staged path guard 已基本收束。下一批建议扫描 `writeInterpRegressionFile(...)` +的剩余单文件 direct-file guard,优先选择仍由 aggregate slice 间接覆盖的短小 case, +把它们改成局部 fixed path guard;如果继续保持小步提交,可从 `g10` 之后的 +direct-file families 或 `writeInterpRegressionFiles(...)` 其他调用点继续收敛。仍不推进 +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 e685b47..20d1cb4 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -8373,14 +8373,23 @@ ); } - const m98m99NamedProgramNamedPath = await writeInterpRegressionFile( + const m98m99NamedProgramFiles = [ + "test-named.ngc", + "test-numbered.ngc", + ]; + const m98m99NamedProgramDir = await writeInterpRegressionFiles( interp, "m98m99/13-named-program", - "test-named.ngc", + m98m99NamedProgramFiles, + ); + assertInterpRegressionStaging( + "m98m99/13-named-program", + m98m99NamedProgramFiles, + m98m99NamedProgramDir, ); verifyExpectedOutput( "browser_interp_m98m99_13_named_program_named", - interp.runFile(m98m99NamedProgramNamedPath), + interp.runFile(`${m98m99NamedProgramDir}/test-named.ngc`), [ "file_open=0", "file_read_count=4", @@ -8392,14 +8401,9 @@ ].join("\n"), ); - const m98m99NamedProgramNumberedPath = await writeInterpRegressionFile( - interp, - "m98m99/13-named-program", - "test-numbered.ngc", - ); verifyExpectedOutput( "browser_interp_m98m99_13_named_program_numbered", - interp.runFile(m98m99NamedProgramNumberedPath), + interp.runFile(`${m98m99NamedProgramDir}/test-numbered.ngc`), [ "file_open=0", "file_read_count=4", @@ -8416,12 +8420,10 @@ "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(",")) { + const m98m99OExpressionCallStagedNgcFiles = [m98m99OExpressionCallPath].map((path) => + path.replace("/work/browser-interp/m98m99/", ""), + ); + if (m98m99OExpressionCallStagedNgcFiles.join(",") !== m98m99RegressionFiles.slice(23, 24).join(",")) { throw new Error("browser_interp_m98m99_final_staging_manifest: list drift"); } const m98m99OExpressionCallRun = runWithCapturedPrints(() => diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index 76f7623..554d9f9 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -3352,13 +3352,22 @@ for (const mainProgramErrorFixture of [ ); } -const m98m99NamedProgramNamedPath = writeInterpRegressionFile( - "m98m99/13-named-program", +const m98m99NamedProgramFiles = [ "test-named.ngc", + "test-numbered.ngc", +]; +const m98m99NamedProgramDir = writeInterpRegressionFiles( + "m98m99/13-named-program", + m98m99NamedProgramFiles, +); +assertInterpRegressionStaging( + "m98m99/13-named-program", + m98m99NamedProgramFiles, + m98m99NamedProgramDir, ); verifyExpectedOutput( "interp_m98m99_13_named_program_named_wasm", - interp.runFile(m98m99NamedProgramNamedPath), + interp.runFile(`${m98m99NamedProgramDir}/test-named.ngc`), [ "file_open=0", "file_read_count=4", @@ -3370,13 +3379,9 @@ verifyExpectedOutput( ].join("\n"), ); -const m98m99NamedProgramNumberedPath = writeInterpRegressionFile( - "m98m99/13-named-program", - "test-numbered.ngc", -); verifyExpectedOutput( "interp_m98m99_13_named_program_numbered_wasm", - interp.runFile(m98m99NamedProgramNumberedPath), + interp.runFile(`${m98m99NamedProgramDir}/test-numbered.ngc`), [ "file_open=0", "file_read_count=4", @@ -3393,15 +3398,11 @@ const m98m99OExpressionCallPath = writeInterpRegressionFile( "test.ngc", ); assert.deepEqual( - [ - m98m99NamedProgramNamedPath, - m98m99NamedProgramNumberedPath, - m98m99OExpressionCallPath, - ], + [m98m99OExpressionCallPath], m98m99RegressionFiles - .slice(21, 24) + .slice(23, 24) .map((file) => `/work/interp/m98m99/${file}`), - "interp m98m99 final direct-file staging manifest drift", + "interp m98m99 final o-expression direct-file staging manifest drift", ); const m98m99OExpressionCallRun = runWithCapturedPrints(() => interp.runFile(m98m99OExpressionCallPath),