Guard sequence subroutine staging manifests
This commit is contained in:
78
text5.txt
78
text5.txt
@@ -6633,3 +6633,81 @@ wasm-port/tests/host/verify_host_smokes.sh
|
||||
```text
|
||||
Guard oword-unwind staging manifest
|
||||
```
|
||||
|
||||
七十、2026-06-12 继续执行记录:sequence/nested subroutine staging manifest guard
|
||||
|
||||
本轮继续当前 host 可执行路线。提交后轻量守门通过:
|
||||
|
||||
```text
|
||||
vendor sync up to date
|
||||
standalone CNC semantics guard complete
|
||||
```
|
||||
|
||||
当前 host 仍缺 `halcmd`、`halrun`、`linuxcnc`、`milltask`,因此不执行任何
|
||||
`ENABLE_*_RUNTIME_PROBE=1` opt-in native probe。
|
||||
|
||||
1. 候选选择。
|
||||
|
||||
选择已有 Node/browser 执行覆盖、且依赖 `[RS274NGC]SUBROUTINE_PATH` staging 的
|
||||
两个 INI-context family:
|
||||
|
||||
- `tests/interp/sequence-number`
|
||||
- `tests/interp/nested-sub-error`
|
||||
|
||||
这两个 family 不需要 HAL/task/tool DB/user-M process,只需要确认 staging helper
|
||||
不会遗漏 INI subroutine 文件。
|
||||
|
||||
2. 覆盖对账。
|
||||
|
||||
`tests/interp/sequence-number` 当前 upstream `.ngc` 文件:
|
||||
|
||||
```text
|
||||
rm400.ngc
|
||||
test.ngc
|
||||
```
|
||||
|
||||
`tests/interp/nested-sub-error` 当前 upstream `.ngc` 文件:
|
||||
|
||||
```text
|
||||
subs/nested.ngc
|
||||
test.ngc
|
||||
```
|
||||
|
||||
3. 更新。
|
||||
|
||||
更新:
|
||||
|
||||
- `wasm-port/tests/wasm/node/verify_interp_wasm.mjs`
|
||||
- `wasm-port/tests/browser/interp_smoke.html`
|
||||
|
||||
Node 新增:
|
||||
|
||||
- `sequenceNumberNgcFiles` 固定 `rm400.ngc` 和 `test.ngc`;
|
||||
- `nestedSubErrorNgcFiles` 固定 `subs/nested.ngc` 和 `test.ngc`;
|
||||
- 分别与 `interpRegressionNgcFilesRecursive(...)` 精确对账;
|
||||
- 检查 `stageInterpIniContext()` 返回的 `plan.files` 中 `.ngc` 文件集合与
|
||||
fixed list 一致。
|
||||
|
||||
Browser 新增:
|
||||
|
||||
- fixed-count 和 duplicate-free guard;
|
||||
- 检查 browser `stageInterpIniContext()` 返回的 `plan.files` 中 `.ngc` 文件集合
|
||||
与 fixed list 一致;
|
||||
- browser 仍不枚举目录。
|
||||
|
||||
4. 下一步工作建议。
|
||||
|
||||
先复跑:
|
||||
|
||||
```bash
|
||||
git diff --check
|
||||
wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||||
wasm-port/tests/browser/verify_interp_browser.sh
|
||||
wasm-port/tests/host/verify_host_smokes.sh
|
||||
```
|
||||
|
||||
如果通过,做小提交,建议 message:
|
||||
|
||||
```text
|
||||
Guard sequence subroutine staging manifests
|
||||
```
|
||||
|
||||
@@ -7271,6 +7271,21 @@
|
||||
);
|
||||
|
||||
const sequenceNumberPlan = await stageInterpIniContext(interp, "sequence-number");
|
||||
const sequenceNumberNgcFiles = [
|
||||
"rm400.ngc",
|
||||
"test.ngc",
|
||||
];
|
||||
if (sequenceNumberNgcFiles.length !== 2 || new Set(sequenceNumberNgcFiles).size !== sequenceNumberNgcFiles.length) {
|
||||
throw new Error("browser_interp_sequence_number_fixture_coverage: list drift");
|
||||
}
|
||||
const sequenceNumberStagedNgcFiles = sequenceNumberPlan.files
|
||||
.map((file) => file.sourceRel)
|
||||
.filter((sourceRel) => sourceRel.endsWith(".ngc"))
|
||||
.map((sourceRel) => sourceRel.replace("tests/interp/sequence-number/", ""))
|
||||
.sort();
|
||||
if (sequenceNumberStagedNgcFiles.join(",") !== sequenceNumberNgcFiles.join(",")) {
|
||||
throw new Error("browser_interp_sequence_number_staging_manifest: list drift");
|
||||
}
|
||||
verifyExpectedOutput(
|
||||
"browser_interp_sequence_number",
|
||||
interp.runFileWithIni(
|
||||
@@ -7289,6 +7304,21 @@
|
||||
);
|
||||
|
||||
const nestedSubErrorPlan = await stageInterpIniContext(interp, "nested-sub-error");
|
||||
const nestedSubErrorNgcFiles = [
|
||||
"subs/nested.ngc",
|
||||
"test.ngc",
|
||||
];
|
||||
if (nestedSubErrorNgcFiles.length !== 2 || new Set(nestedSubErrorNgcFiles).size !== nestedSubErrorNgcFiles.length) {
|
||||
throw new Error("browser_interp_nested_sub_error_fixture_coverage: list drift");
|
||||
}
|
||||
const nestedSubErrorStagedNgcFiles = nestedSubErrorPlan.files
|
||||
.map((file) => file.sourceRel)
|
||||
.filter((sourceRel) => sourceRel.endsWith(".ngc"))
|
||||
.map((sourceRel) => sourceRel.replace("tests/interp/nested-sub-error/", ""))
|
||||
.sort();
|
||||
if (nestedSubErrorStagedNgcFiles.join(",") !== nestedSubErrorNgcFiles.join(",")) {
|
||||
throw new Error("browser_interp_nested_sub_error_staging_manifest: list drift");
|
||||
}
|
||||
verifyExpectedOutput(
|
||||
"browser_interp_nested_sub_error",
|
||||
interp.runFileWithIni(
|
||||
|
||||
@@ -2169,6 +2169,24 @@ verifyExpectedOutput(
|
||||
);
|
||||
|
||||
const sequenceNumberPlan = stageInterpIniContext("sequence-number");
|
||||
const sequenceNumberNgcFiles = [
|
||||
"rm400.ngc",
|
||||
"test.ngc",
|
||||
];
|
||||
assert.deepEqual(
|
||||
sequenceNumberNgcFiles,
|
||||
interpRegressionNgcFilesRecursive("sequence-number"),
|
||||
"interp sequence-number fixture coverage drift",
|
||||
);
|
||||
assert.deepEqual(
|
||||
sequenceNumberPlan.files
|
||||
.map((file) => file.sourceRel)
|
||||
.filter((sourceRel) => sourceRel.endsWith(".ngc"))
|
||||
.map((sourceRel) => sourceRel.replace("tests/interp/sequence-number/", ""))
|
||||
.sort(),
|
||||
sequenceNumberNgcFiles,
|
||||
"interp sequence-number staging manifest drift",
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"interp_sequence_number_wasm",
|
||||
interp.runFileWithIni(
|
||||
@@ -2187,6 +2205,24 @@ verifyExpectedOutput(
|
||||
);
|
||||
|
||||
const nestedSubErrorPlan = stageInterpIniContext("nested-sub-error");
|
||||
const nestedSubErrorNgcFiles = [
|
||||
"subs/nested.ngc",
|
||||
"test.ngc",
|
||||
];
|
||||
assert.deepEqual(
|
||||
nestedSubErrorNgcFiles,
|
||||
interpRegressionNgcFilesRecursive("nested-sub-error"),
|
||||
"interp nested-sub-error fixture coverage drift",
|
||||
);
|
||||
assert.deepEqual(
|
||||
nestedSubErrorPlan.files
|
||||
.map((file) => file.sourceRel)
|
||||
.filter((sourceRel) => sourceRel.endsWith(".ngc"))
|
||||
.map((sourceRel) => sourceRel.replace("tests/interp/nested-sub-error/", ""))
|
||||
.sort(),
|
||||
nestedSubErrorNgcFiles,
|
||||
"interp nested-sub-error staging manifest drift",
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"interp_nested_sub_error_wasm",
|
||||
interp.runFileWithIni(
|
||||
|
||||
Reference in New Issue
Block a user