Guard m98m99 named-program staging

This commit is contained in:
2026-06-13 08:41:48 +08:00
parent 2bb0cf9904
commit 8ff0fe25d4
3 changed files with 76 additions and 30 deletions

View File

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

View File

@@ -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(() =>

View File

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