Guard m98m99 mixed-sub-style staging

This commit is contained in:
2026-06-13 08:53:22 +08:00
parent 410e109e61
commit e953e5184c
3 changed files with 79 additions and 26 deletions

View File

@@ -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 语义实现。

View File

@@ -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,

View File

@@ -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);