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
|
```text
|
||||||
Guard oword-unwind staging manifest
|
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 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(
|
verifyExpectedOutput(
|
||||||
"browser_interp_sequence_number",
|
"browser_interp_sequence_number",
|
||||||
interp.runFileWithIni(
|
interp.runFileWithIni(
|
||||||
@@ -7289,6 +7304,21 @@
|
|||||||
);
|
);
|
||||||
|
|
||||||
const nestedSubErrorPlan = await stageInterpIniContext(interp, "nested-sub-error");
|
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(
|
verifyExpectedOutput(
|
||||||
"browser_interp_nested_sub_error",
|
"browser_interp_nested_sub_error",
|
||||||
interp.runFileWithIni(
|
interp.runFileWithIni(
|
||||||
|
|||||||
@@ -2169,6 +2169,24 @@ verifyExpectedOutput(
|
|||||||
);
|
);
|
||||||
|
|
||||||
const sequenceNumberPlan = stageInterpIniContext("sequence-number");
|
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(
|
verifyExpectedOutput(
|
||||||
"interp_sequence_number_wasm",
|
"interp_sequence_number_wasm",
|
||||||
interp.runFileWithIni(
|
interp.runFileWithIni(
|
||||||
@@ -2187,6 +2205,24 @@ verifyExpectedOutput(
|
|||||||
);
|
);
|
||||||
|
|
||||||
const nestedSubErrorPlan = stageInterpIniContext("nested-sub-error");
|
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(
|
verifyExpectedOutput(
|
||||||
"interp_nested_sub_error_wasm",
|
"interp_nested_sub_error_wasm",
|
||||||
interp.runFileWithIni(
|
interp.runFileWithIni(
|
||||||
|
|||||||
Reference in New Issue
Block a user