diff --git a/text6.txt b/text6.txt index 19a6875..5f77a1f 100644 --- a/text6.txt +++ b/text6.txt @@ -1116,3 +1116,49 @@ wasm-port/tests/host/verify_host_smokes.sh `writeInterpRegressionFile(...)` families,例如 `bad`、`good`、`g71/g72` 或 `rotation` 的 aggregate direct-file guard。继续避免 blocked runtime promotion、 browser full inventory 扩面和 JS CNC 语义实现。 + +二十七、2026-06-13 继续执行记录:m98m99 mixed-sub-style staging guard + +本批完成 m98m99 最后一个显性 aggregate slice 的收束,将 +`m98m99/06-error-mixed-sub-styles` 改为 fixed manifest 加 per-directory staged path +guard。 + +完成内容: + +- Node 侧新增 `m98m99MixedSubStyleFiles` fixed manifest,包含该目录 4 个 `.ngc` + fixture; +- Node 侧改用 `writeInterpRegressionFiles(...)` 一次 staging 该目录; +- Node 侧复用 `assertInterpRegressionStaging(...)`,用 upstream vendored `.ngc` + 文件清单与 fixed manifest 精确对账; +- Node 侧移除最后的 m98m99 mixed aggregate slice; +- browser 侧新增同名 fixed manifest; +- browser 侧复用 `assertInterpRegressionStaging(...)` 检查 duplicate-free 与 staged path; +- browser 侧仍不枚举目录; +- 仅整理 host/filesystem staging guard,不改变 mixed Fanuc/RS274NGC sub-style 错误语义。 + +已运行验证: + +```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 direct-file 与目录级 staging guard 已基本收束。下一批建议转向其他 +`writeInterpRegressionFile(...)` aggregate direct-file family,小批量优先候选: + +- `rotation/abs-pts` +- `rotation/g28` +- `rotation/g53` + +这三个已有 Node/browser coverage 且属于同一 direct-file family,适合复用 +`assertInterpRegressionFileStaging(...)` 替换当前 rotation aggregate slice。继续避免 +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 f8b675c..5b266e1 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -7992,7 +7992,22 @@ ].join("\n"), ); - const m98m99MixedSubStylePaths = []; + const m98m99MixedSubStyleFiles = [ + "O...-called-with-O..._call.ngc", + "O...-ended-with-O..._endsub.ngc", + "O...-sub-called-with-M98.ngc", + "O...-sub-ended-with-M99.ngc", + ]; + const m98m99MixedSubStyleDir = await writeInterpRegressionFiles( + interp, + "m98m99/06-error-mixed-sub-styles", + m98m99MixedSubStyleFiles, + ); + assertInterpRegressionStaging( + "m98m99/06-error-mixed-sub-styles", + m98m99MixedSubStyleFiles, + m98m99MixedSubStyleDir, + ); for (const mixedSubStyleFixture of [ { name: "called_with_o_call", @@ -8037,12 +8052,7 @@ print: "X FANUC", }, ]) { - const mixedSubStylePath = await writeInterpRegressionFile( - interp, - "m98m99/06-error-mixed-sub-styles", - mixedSubStyleFixture.file, - ); - m98m99MixedSubStylePaths.push(mixedSubStylePath); + const mixedSubStylePath = `${m98m99MixedSubStyleDir}/${mixedSubStyleFixture.file}`; const mixedSubStyleRun = runWithCapturedPrints(() => interp.runFile(mixedSubStylePath), ); @@ -8069,12 +8079,6 @@ ); } } - const m98m99MixedStagedNgcFiles = [ - ...m98m99MixedSubStylePaths, - ].map((path) => path.replace("/work/browser-interp/m98m99/", "")); - if (m98m99MixedStagedNgcFiles.join(",") !== m98m99RegressionFiles.slice(5, 9).join(",")) { - throw new Error("browser_interp_m98m99_mixed_staging_manifest: list drift"); - } const m98m99NestedSubsPath = await writeInterpRegressionFile( interp, diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index efc7d34..2c5d3c5 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -2977,7 +2977,21 @@ verifyExpectedOutput( ].join("\n"), ); -const m98m99MixedSubStylePaths = []; +const m98m99MixedSubStyleFiles = [ + "O...-called-with-O..._call.ngc", + "O...-ended-with-O..._endsub.ngc", + "O...-sub-called-with-M98.ngc", + "O...-sub-ended-with-M99.ngc", +]; +const m98m99MixedSubStyleDir = writeInterpRegressionFiles( + "m98m99/06-error-mixed-sub-styles", + m98m99MixedSubStyleFiles, +); +assertInterpRegressionStaging( + "m98m99/06-error-mixed-sub-styles", + m98m99MixedSubStyleFiles, + m98m99MixedSubStyleDir, +); for (const mixedSubStyleFixture of [ { name: "called_with_o_call", @@ -3022,11 +3036,7 @@ for (const mixedSubStyleFixture of [ print: "X FANUC", }, ]) { - const mixedSubStylePath = writeInterpRegressionFile( - "m98m99/06-error-mixed-sub-styles", - mixedSubStyleFixture.file, - ); - m98m99MixedSubStylePaths.push(mixedSubStylePath); + const mixedSubStylePath = `${m98m99MixedSubStyleDir}/${mixedSubStyleFixture.file}`; const mixedSubStyleRun = runWithCapturedPrints(() => interp.runFile(mixedSubStylePath)); verifyExpectedOutput( `interp_m98m99_06_${mixedSubStyleFixture.name}_wasm`, @@ -3051,13 +3061,6 @@ for (const mixedSubStyleFixture of [ ); } } -assert.deepEqual( - m98m99MixedSubStylePaths, - m98m99RegressionFiles - .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);