Guard user-M helper staging

This commit is contained in:
2026-06-13 15:48:50 +08:00
parent d5138c0953
commit 24a8f92fb0
2 changed files with 79 additions and 0 deletions

View File

@@ -891,3 +891,67 @@ Guard G92 persistence staging
```bash
git status --short && git log -5 --oneline && tail -n 120 text7.txt && awk '/^[一二三四五六七八九十百]+、/ {print}' text7.txt | sort | uniq -d
```
十七、2026-06-13 继续执行记录user-M helper staging manifest guard
1. 本批目标。
继续 staged path guard inventory 第十二轮,处理 Node 侧 generated user-M helper
staging
```text
writeUserMCodeFixture(...)
```
2. 已完成改动。
- Node 侧新增 `assertUserMCodeFixtureStaging(...)`
- generated user-M fixture 增加 fixed manifest、duplicate-free 和 root/path parity
guard
- `test.ini`
- `test.ngc`
- `M110` / `M111`
- `writeUserMCodeFixture(...)` 写入前先校验 staging root 与 manifest
- 未修改 generated INI、G-code、M-code 内容、expected output 或 interpreter 语义;
- 未提升 `L4-USER-M-PROCESS`,也未改变 blocked runtime promotion 状态。
涉及文件:
```text
wasm-port/tests/wasm/node/verify_interp_wasm.mjs
```
3. 已完成的目标验证。
```bash
git diff --check
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
```
4. 本批剩余建议验证。
```bash
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
如果通过,提交建议:
```text
Guard user-M helper staging
```
5. 下一步工作建议。
继续 staged path guard inventory 第十三轮,优先扫描剩余 generated/direct staging
点;较安全候选是 restore-parameter negative fixtures 的 path guard但仍需明确只做
filesystem staging guard不改变 parameter runtime semantics。
下一轮第一条命令仍保持:
```bash
git status --short && git log -5 --oneline && tail -n 120 text7.txt && awk '/^[一二三四五六七八九十百]+、/ {print}' text7.txt | sort | uniq -d
```

View File

@@ -588,8 +588,23 @@ function assertG10RegressionFilesStaging(name, files, wasmDir) {
}
}
function assertUserMCodeFixtureStaging(name, code, wasmDir) {
const expectedWasmDir = `/work/user-m/${name}`;
const files = ["test.ini", "test.ngc", code];
assert.equal(wasmDir, expectedWasmDir, `user-m ${name} staging root drift`);
assert.equal(new Set(files).size, files.length, `user-m ${name} staging manifest duplicate`);
for (const file of files) {
assert.equal(
`${wasmDir}/${file}`,
`${expectedWasmDir}/${file}`,
`user-m ${name}/${file} staging path drift`,
);
}
}
function writeUserMCodeFixture(name, code) {
const wasmDir = `/work/user-m/${name}`;
assertUserMCodeFixtureStaging(name, code, wasmDir);
const iniPath = `${wasmDir}/test.ini`;
const programPath = `${wasmDir}/test.ngc`;
const mcodePath = `${wasmDir}/${code}`;