Guard more direct-file staging paths

This commit is contained in:
2026-06-13 07:17:03 +08:00
parent 4e9ca73fee
commit 68991951f5
3 changed files with 174 additions and 0 deletions

View File

@@ -7844,3 +7844,96 @@ subs-follow-main/test.ngc
```
仍只做 fixed manifest 与 staged path guard不扩大到 blocked runtime。
八十三、2026-06-13 继续执行记录more direct-file staging path guard
本轮继续 early direct-file fixture。当前 host 仍按 blocked runtime 规则处理,不执行
任何 `ENABLE_*_RUNTIME_PROBE=1` opt-in native probe。
1. 候选选择。
选择 3 个已在 Node/browser 执行的 direct-file fixture
- `tests/interp/subs-follow-main/test.ngc`
- `tests/interp/fractional-linenumbers/test.ngc`
- `tests/interp/crazy-paths/test.ngc`
这些 case 不需要 INI/HAL/task/tool DB/Python remap/user-M process runtime。本轮只
固定 upstream `.ngc` manifest 与 staged path 一致性,不新增 CNC 语义。
2. 覆盖对账。
当前 upstream `.ngc` manifest
```text
subs-follow-main/test.ngc
fractional-linenumbers/test.ngc
crazy-paths/test.ngc
```
3. 更新。
更新:
- `wasm-port/tests/wasm/node/verify_interp_wasm.mjs`
- `wasm-port/tests/browser/interp_smoke.html`
Node 新增:
- `subsFollowMainNgcFiles` 固定 `test.ngc`
- `fractionalLinenumbersNgcFiles` 固定 `test.ngc`
- `crazyPathsNgcFiles` 固定 `test.ngc`
- 分别与 `interpRegressionNgcFilesRecursive(...)` 精确对账;
- 检查 `writeInterpRegressionFile(...)` 返回的 staged path 与 fixed manifest
path 一致。
Browser 新增:
- fixed-count 和 duplicate-free guard
- 检查 browser staged `.ngc` path 去掉对应 `/work/browser-interp/.../` 前缀后,
与 fixed manifest 一致;
- browser 仍不枚举目录。
4. 已执行验证。
```bash
git diff --check
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_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
结果:
- `git diff --check` clean。
- `vendor sync up to date`
- `standalone CNC semantics guard complete`
- `interp_wasm_node_smoke=ok`
- Node inventory 保持:
- `executed=28`
- `passed=28`
- `skipped=131`
- `unexpected_fail=0`
- `browser_interp_smoke=ok`
- `host_wasm_opfs_browser_smokes=ok`
5. 下一步工作建议。
当前工作集已稳定。建议先做小提交message
```text
Guard more direct-file staging paths
```
提交后继续 early direct-file fixture小批量选择
```text
oword-bug315/test.ngc
oword-bug315-p2/test.ngc
namedparam-bug424/test.ngc
```
仍只做 fixed manifest 与 staged path guard不扩大到 blocked runtime。

View File

@@ -6420,6 +6420,18 @@
"subs-follow-main",
"test.ngc",
);
const subsFollowMainNgcFiles = [
"test.ngc",
];
if (subsFollowMainNgcFiles.length !== 1 || new Set(subsFollowMainNgcFiles).size !== subsFollowMainNgcFiles.length) {
throw new Error("browser_interp_subs_follow_main_fixture_coverage: list drift");
}
const subsFollowMainStagedNgcFiles = [
subsFollowMainPath,
].map((path) => path.replace("/work/browser-interp/subs-follow-main/", ""));
if (subsFollowMainStagedNgcFiles.join(",") !== subsFollowMainNgcFiles.join(",")) {
throw new Error("browser_interp_subs_follow_main_staging_manifest: list drift");
}
verifyExpectedOutput(
"browser_interp_subs_follow_main",
interp.runFile(subsFollowMainPath),
@@ -6438,6 +6450,18 @@
"fractional-linenumbers",
"test.ngc",
);
const fractionalLinenumbersNgcFiles = [
"test.ngc",
];
if (fractionalLinenumbersNgcFiles.length !== 1 || new Set(fractionalLinenumbersNgcFiles).size !== fractionalLinenumbersNgcFiles.length) {
throw new Error("browser_interp_fractional_linenumbers_fixture_coverage: list drift");
}
const fractionalLinenumbersStagedNgcFiles = [
fractionalLinenumbersPath,
].map((path) => path.replace("/work/browser-interp/fractional-linenumbers/", ""));
if (fractionalLinenumbersStagedNgcFiles.join(",") !== fractionalLinenumbersNgcFiles.join(",")) {
throw new Error("browser_interp_fractional_linenumbers_staging_manifest: list drift");
}
verifyExpectedOutput(
"browser_interp_fractional_linenumbers",
interp.runFile(fractionalLinenumbersPath),
@@ -6457,6 +6481,18 @@
"crazy-paths",
"test.ngc",
);
const crazyPathsNgcFiles = [
"test.ngc",
];
if (crazyPathsNgcFiles.length !== 1 || new Set(crazyPathsNgcFiles).size !== crazyPathsNgcFiles.length) {
throw new Error("browser_interp_crazy_paths_fixture_coverage: list drift");
}
const crazyPathsStagedNgcFiles = [
crazyPathsPath,
].map((path) => path.replace("/work/browser-interp/crazy-paths/", ""));
if (crazyPathsStagedNgcFiles.join(",") !== crazyPathsNgcFiles.join(",")) {
throw new Error("browser_interp_crazy_paths_staging_manifest: list drift");
}
verifyExpectedOutput(
"browser_interp_crazy_paths",
interp.runFile(crazyPathsPath),

View File

@@ -1365,6 +1365,21 @@ verifyExpectedOutput(
);
const subsFollowMainPath = writeInterpRegressionFile("subs-follow-main", "test.ngc");
const subsFollowMainNgcFiles = [
"test.ngc",
];
assert.deepEqual(
subsFollowMainNgcFiles,
interpRegressionNgcFilesRecursive("subs-follow-main"),
"interp subs-follow-main fixture coverage drift",
);
assert.deepEqual(
[
subsFollowMainPath,
],
subsFollowMainNgcFiles.map((file) => `/work/interp/subs-follow-main/${file}`),
"interp subs-follow-main staging manifest drift",
);
verifyExpectedOutput(
"interp_subs_follow_main_wasm",
interp.runFile(subsFollowMainPath),
@@ -1382,6 +1397,21 @@ const fractionalLinenumbersPath = writeInterpRegressionFile(
"fractional-linenumbers",
"test.ngc",
);
const fractionalLinenumbersNgcFiles = [
"test.ngc",
];
assert.deepEqual(
fractionalLinenumbersNgcFiles,
interpRegressionNgcFilesRecursive("fractional-linenumbers"),
"interp fractional-linenumbers fixture coverage drift",
);
assert.deepEqual(
[
fractionalLinenumbersPath,
],
fractionalLinenumbersNgcFiles.map((file) => `/work/interp/fractional-linenumbers/${file}`),
"interp fractional-linenumbers staging manifest drift",
);
verifyExpectedOutput(
"interp_fractional_linenumbers_wasm",
interp.runFile(fractionalLinenumbersPath),
@@ -1397,6 +1427,21 @@ verifyExpectedOutput(
);
const crazyPathsPath = writeInterpRegressionFile("crazy-paths", "test.ngc");
const crazyPathsNgcFiles = [
"test.ngc",
];
assert.deepEqual(
crazyPathsNgcFiles,
interpRegressionNgcFilesRecursive("crazy-paths"),
"interp crazy-paths fixture coverage drift",
);
assert.deepEqual(
[
crazyPathsPath,
],
crazyPathsNgcFiles.map((file) => `/work/interp/crazy-paths/${file}`),
"interp crazy-paths staging manifest drift",
);
verifyExpectedOutput(
"interp_crazy_paths_wasm",
interp.runFile(crazyPathsPath),