diff --git a/text6.txt b/text6.txt index 8bdaedb..19a6875 100644 --- a/text6.txt +++ b/text6.txt @@ -1070,3 +1070,49 @@ wasm-port/tests/host/verify_host_smokes.sh 其中 `06-error-mixed-sub-styles` 有 4 个同目录文件,可单独作为一批继续处理。继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。 + +二十六、2026-06-13 继续执行记录:m98m99 remaining direct-file staging guard + +本批继续复用 `assertInterpRegressionFileStaging(...)`,收敛 m98m99 剩余短小 +single-file direct-file guard: + +- `m98m99/04-M98-but-no-sub/test.ngc` +- `m98m99/05-M98-loops/test.ngc` +- `m98m99/07-nested-subs/test.ngc` +- `m98m99/08-sub-follows-main/test.ngc` +- `m98m99/10-M98-P001/test.ngc` + +完成内容: + +- Node 侧为上述 5 个 direct-file case 增加局部 staged path guard; +- Node 侧将 `06-error-mixed-sub-styles` 的 aggregate slice 收缩为只覆盖该目录 + 4 个 mixed-sub-style 文件; +- Node 侧移除 `07/08` 和 `10` 的临近 aggregate slice guard; +- browser 侧同步增加 5 个局部 staged path guard; +- browser 侧同步收缩 mixed-sub-style slice,并移除 `07/08` 和 `10` 的临近 slice; +- browser 侧仍不枚举目录; +- 仅整理 host/filesystem staging guard,不改变 M98 no-sub、loop、nested sub、 + sub-follows-main 或 M98-P001 执行语义。 + +已运行验证: + +```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` 剩余显性 aggregate slice 只剩 `06-error-mixed-sub-styles`。下一批可把这 +4 个文件改成固定 manifest 加 per-directory guard,或逐个使用 single-file helper; +完成后 m98m99 direct-file staging guard 基本收束。之后建议转向其他 +`writeInterpRegressionFile(...)` families,例如 `bad`、`good`、`g71/g72` 或 +`rotation` 的 aggregate direct-file guard。继续避免 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 46a1ef1..f8b675c 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -7939,6 +7939,11 @@ "m98m99/04-M98-but-no-sub", "test.ngc", ); + assertInterpRegressionFileStaging( + "m98m99/04-M98-but-no-sub", + "test.ngc", + m98m99M98ButNoSubPath, + ); verifyExpectedOutput( "browser_interp_m98m99_04_m98_but_no_sub", interp.runFile(m98m99M98ButNoSubPath), @@ -7960,6 +7965,7 @@ "m98m99/05-M98-loops", "test.ngc", ); + assertInterpRegressionFileStaging("m98m99/05-M98-loops", "test.ngc", m98m99M98LoopsPath); const m98m99M98LoopsRun = runWithCapturedPrints(() => interp.runFile(m98m99M98LoopsPath), ); @@ -8064,11 +8070,9 @@ } } const m98m99MixedStagedNgcFiles = [ - m98m99M98ButNoSubPath, - m98m99M98LoopsPath, ...m98m99MixedSubStylePaths, ].map((path) => path.replace("/work/browser-interp/m98m99/", "")); - if (m98m99MixedStagedNgcFiles.join(",") !== m98m99RegressionFiles.slice(3, 9).join(",")) { + if (m98m99MixedStagedNgcFiles.join(",") !== m98m99RegressionFiles.slice(5, 9).join(",")) { throw new Error("browser_interp_m98m99_mixed_staging_manifest: list drift"); } @@ -8077,6 +8081,7 @@ "m98m99/07-nested-subs", "test.ngc", ); + assertInterpRegressionFileStaging("m98m99/07-nested-subs", "test.ngc", m98m99NestedSubsPath); const m98m99NestedSubsRun = runWithCapturedPrints(() => interp.runFile(m98m99NestedSubsPath), ); @@ -8106,6 +8111,11 @@ "m98m99/08-sub-follows-main", "test.ngc", ); + assertInterpRegressionFileStaging( + "m98m99/08-sub-follows-main", + "test.ngc", + m98m99SubFollowsMainPath, + ); const m98m99SubFollowsMainRun = runWithCapturedPrints(() => interp.runFile(m98m99SubFollowsMainPath), ); @@ -8143,13 +8153,6 @@ m98m99DisableFanucSubsFiles, m98m99DisableFanucSubsDir, ); - const m98m99NestedStagedNgcFiles = [ - m98m99NestedSubsPath, - m98m99SubFollowsMainPath, - ].map((path) => path.replace("/work/browser-interp/m98m99/", "")); - if (m98m99NestedStagedNgcFiles.join(",") !== m98m99RegressionFiles.slice(9, 11).join(",")) { - throw new Error("browser_interp_m98m99_nested_staging_manifest: list drift"); - } for (const disableFanucCase of [ { name: "fanuc_ini", @@ -8236,6 +8239,7 @@ "m98m99/10-M98-P001", "test.ngc", ); + assertInterpRegressionFileStaging("m98m99/10-M98-P001", "test.ngc", m98m99M98P001Path); const m98m99M98P001Run = runWithCapturedPrints(() => interp.runFile(m98m99M98P001Path), ); @@ -8279,12 +8283,6 @@ m98m99MainProgramOwordFiles, m98m99MainProgramOwordDir, ); - const m98m99M98P001StagedNgcFiles = [m98m99M98P001Path].map((path) => - path.replace("/work/browser-interp/m98m99/", ""), - ); - if (m98m99M98P001StagedNgcFiles.join(",") !== m98m99RegressionFiles.slice(13, 14).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 21feebd..efc7d34 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -2934,6 +2934,7 @@ const m98m99M98ButNoSubPath = writeInterpRegressionFile( "m98m99/04-M98-but-no-sub", "test.ngc", ); +assertInterpRegressionFileStaging("m98m99/04-M98-but-no-sub", "test.ngc", m98m99M98ButNoSubPath); verifyExpectedOutput( "interp_m98m99_04_m98_but_no_sub_wasm", interp.runFile(m98m99M98ButNoSubPath), @@ -2951,6 +2952,7 @@ verifyExpectedOutput( ); const m98m99M98LoopsPath = writeInterpRegressionFile("m98m99/05-M98-loops", "test.ngc"); +assertInterpRegressionFileStaging("m98m99/05-M98-loops", "test.ngc", m98m99M98LoopsPath); const m98m99M98LoopsRun = runWithCapturedPrints(() => interp.runFile(m98m99M98LoopsPath)); verifyExpectedOutput( "interp_m98m99_05_m98_loops_wasm", @@ -3050,18 +3052,15 @@ for (const mixedSubStyleFixture of [ } } assert.deepEqual( - [ - m98m99M98ButNoSubPath, - m98m99M98LoopsPath, - ...m98m99MixedSubStylePaths, - ], + m98m99MixedSubStylePaths, m98m99RegressionFiles - .slice(3, 9) + .slice(5, 9) .map((file) => `/work/interp/m98m99/${file}`), "interp m98m99 mixed direct-file staging manifest drift", ); const m98m99NestedSubsPath = writeInterpRegressionFile("m98m99/07-nested-subs", "test.ngc"); +assertInterpRegressionFileStaging("m98m99/07-nested-subs", "test.ngc", m98m99NestedSubsPath); const m98m99NestedSubsRun = runWithCapturedPrints(() => interp.runFile(m98m99NestedSubsPath)); verifyExpectedOutput( "interp_m98m99_07_nested_subs_wasm", @@ -3088,6 +3087,11 @@ const m98m99SubFollowsMainPath = writeInterpRegressionFile( "m98m99/08-sub-follows-main", "test.ngc", ); +assertInterpRegressionFileStaging( + "m98m99/08-sub-follows-main", + "test.ngc", + m98m99SubFollowsMainPath, +); const m98m99SubFollowsMainRun = runWithCapturedPrints(() => interp.runFile(m98m99SubFollowsMainPath), ); @@ -3124,16 +3128,6 @@ assertInterpRegressionStaging( m98m99DisableFanucSubsFiles, m98m99DisableFanucSubsDir, ); -assert.deepEqual( - [ - m98m99NestedSubsPath, - m98m99SubFollowsMainPath, - ], - m98m99RegressionFiles - .slice(9, 11) - .map((file) => `/work/interp/m98m99/${file}`), - "interp m98m99 nested direct-file staging manifest drift", -); for (const disableFanucCase of [ { name: "fanuc_ini", @@ -3216,6 +3210,7 @@ verifyExpectedOutput( ); const m98m99M98P001Path = writeInterpRegressionFile("m98m99/10-M98-P001", "test.ngc"); +assertInterpRegressionFileStaging("m98m99/10-M98-P001", "test.ngc", m98m99M98P001Path); const m98m99M98P001Run = runWithCapturedPrints(() => interp.runFile(m98m99M98P001Path)); verifyExpectedOutput( "interp_m98m99_10_m98_p001_wasm", @@ -3256,13 +3251,6 @@ assertInterpRegressionStaging( m98m99MainProgramOwordFiles, m98m99MainProgramOwordDir, ); -assert.deepEqual( - [m98m99M98P001Path], - m98m99RegressionFiles - .slice(13, 14) - .map((file) => `/work/interp/m98m99/${file}`), - "interp m98m99 m98-p001 direct-file staging manifest drift", -); for (const mainProgramFixture of [ { name: "legal_m2",