diff --git a/text5.txt b/text5.txt index ee75056..16685a2 100644 --- a/text5.txt +++ b/text5.txt @@ -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。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index eb878ca..e8c2df7 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -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), diff --git a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs index e5f42d5..a9a4d2c 100644 --- a/wasm-port/tests/wasm/node/verify_interp_wasm.mjs +++ b/wasm-port/tests/wasm/node/verify_interp_wasm.mjs @@ -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),