2122 lines
80 KiB
Plaintext
2122 lines
80 KiB
Plaintext
项目整体完成情况与后续执行计划
|
||
|
||
生成时间:2026-06-13 CST
|
||
|
||
本文件接替 `text5.txt`。后续工作按 `text6.txt` 执行;除非明确要求审计旧记录,
|
||
不要再回到 `text1/text2/text3/text4/text5` 扩展进度。`text5.txt` 作为历史归档
|
||
保留。
|
||
|
||
一、text5 重复记录问题处理结果
|
||
|
||
1. 问题原因。
|
||
|
||
`text5.txt` 后段出现过重复进度记录,主要发生在快速连续执行时:
|
||
|
||
- 工作已经在提交中完成,但继续轮次又根据旧上下文重复追加同名记录;
|
||
- 未先核对 `git status --short`、`git log -n`、`tail text5.txt` 和标题唯一性;
|
||
- 在记录 `m98m99`、`g10`、`g52`、early direct-file guard 时,曾出现同编号或同主题
|
||
重复段。
|
||
|
||
2. 已完成清理。
|
||
|
||
当前 `text5.txt` 已完成重复记录清理:
|
||
|
||
- 当前记录范围到 `八十三、2026-06-13 继续执行记录:more direct-file staging path guard`;
|
||
- 标题唯一性核查命令:
|
||
|
||
```bash
|
||
awk '/^[一二三四五六七八九十百]+、/ {print}' text5.txt | sort | uniq -d
|
||
```
|
||
|
||
当前输出为空,表示没有重复标题。
|
||
|
||
3. 后续防重规则。
|
||
|
||
从 `text6.txt` 开始,每轮执行必须先做下面四步:
|
||
|
||
```bash
|
||
git status --short
|
||
git log -5 --oneline
|
||
tail -n 120 text6.txt
|
||
awk '/^[一二三四五六七八九十百]+、/ {print}' text6.txt | sort | uniq -d
|
||
```
|
||
|
||
执行规则:
|
||
|
||
- 如果 `git status --short` 是 clean,且最新提交已经包含当前建议工作,不要重复追加记录。
|
||
- 每轮只追加一个新的中文编号记录;提交前再次检查标题唯一性。
|
||
- `text6.txt` 只记录新的后续进度,不复制 `text5.txt` 的长历史。
|
||
- 每批完成后,如果要写记录,先写 `text6.txt`,再提交该批代码和记录。
|
||
- 如果发现重复记录,先做 dedupe 清理并提交,再继续新功能或新 guard。
|
||
|
||
二、当前项目纪律
|
||
|
||
1. LinuxCNC 仍是唯一 CNC 语义来源。
|
||
|
||
G-code、remap、tool、parameter、planner、kinematics、user-M、tool DB、Python
|
||
remap 等语义必须来自 LinuxCNC upstream 或 vendored LinuxCNC C/C++/配置/脚本源码。
|
||
|
||
2. 本项目允许实现的范围仍限于:
|
||
|
||
- build;
|
||
- source sync;
|
||
- runtime shim;
|
||
- filesystem staging;
|
||
- OPFS;
|
||
- WASM/browser boundary;
|
||
- 测试胶水;
|
||
- 文档;
|
||
- 机器可读 gate/artifact。
|
||
|
||
3. 禁止事项继续有效:
|
||
|
||
- 不在 JS 中重写 G-code 或 CNC 语义;
|
||
- 不修改 vendored LinuxCNC 源文件来让测试通过;
|
||
- 不把 full-process/HAL/UI/Python/tool DB 依赖伪装成 standalone pass;
|
||
- 不把 expected failure 硬改成 pass,除非已有 LinuxCNC-owned runtime proof,并且
|
||
native、Node、browser gate 都按顺序通过;
|
||
- browser 不能依赖目录枚举。
|
||
|
||
三、当前完成情况
|
||
|
||
1. WASM port 基础架构已稳定。
|
||
|
||
`wasm-port` 已按独立移植工作区组织,包含 vendor、runtime/core、runtime/sdk、
|
||
runtime/opfs、runtime/ui、native/wasm/browser tests、docs 和 tools。
|
||
|
||
2. 关键基线保持稳定。
|
||
|
||
- `linuxcnc/nc_files` native Layer 1:
|
||
- `total 107`
|
||
- `pass 101`
|
||
- `expected_fail 6`
|
||
- `unexpected_fail 0`
|
||
- `linuxcnc/configs/sim` native Layer 2:
|
||
- `total 159`
|
||
- `pass 151`
|
||
- `expected_fail 8`
|
||
- `unexpected_fail 0`
|
||
- Node sim-config inventory:
|
||
- `executed=28`
|
||
- `passed=28`
|
||
- `skipped=131`
|
||
- `unexpected_fail=0`
|
||
|
||
3. blocked runtime family 仍未 promotion。
|
||
|
||
仍 blocked,不允许 promotion:
|
||
|
||
- `L4-USER-M-PROCESS`
|
||
- `L4-TOOL-DB`
|
||
- `L4-PYTHON-REMAP`
|
||
|
||
当前 host 仍按缺少 LinuxCNC host runtime 处理,不执行任何:
|
||
|
||
```bash
|
||
ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_millturn_user_m_runtime.sh
|
||
ENABLE_TOOL_DB_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_tool_db_runtime.sh
|
||
ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_python_remap_runtime.sh
|
||
```
|
||
|
||
4. 近期已完成的 staged path guard。
|
||
|
||
已完成并提交的近期批次包括:
|
||
|
||
- `m98m99` 24 项 fixed `.ngc` manifest 的 staged path guard;
|
||
- `g10` 5 项 fixed `.ngc` manifest 的 staged path guard;
|
||
- `g52/g92` direct-file staged path guard;
|
||
- early direct-file staged path guard:
|
||
- `do-while-break`
|
||
- `exists`
|
||
- `return-value`
|
||
- `subs-follow-main`
|
||
- `fractional-linenumbers`
|
||
- `crazy-paths`
|
||
- INI-context/staging helper guard:
|
||
- `oword-unwind`
|
||
- `sequence-number`
|
||
- `nested-sub-error`
|
||
- `abort-hot-comment`
|
||
- `m19`
|
||
- `iniparam`
|
||
- `iniparam-failassign`
|
||
|
||
5. 当前最新提交。
|
||
|
||
当前最近提交包括:
|
||
|
||
```text
|
||
6899195 Guard more direct-file staging paths
|
||
4e9ca73 Deduplicate early fixture progress note
|
||
675ee5f Guard early direct-file staging paths
|
||
17df47d Guard g52 staging path
|
||
bf17469 Guard final g10 staging paths
|
||
```
|
||
|
||
四、当前必须保持通过的验证入口
|
||
|
||
每批后续改动至少运行:
|
||
|
||
```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
|
||
```
|
||
|
||
涉及 native baseline 或大范围 source/staging 改动时,再运行:
|
||
|
||
```bash
|
||
wasm-port/tests/native/verify_nc_files.sh
|
||
wasm-port/tests/native/verify_sim_configs.sh
|
||
wasm-port/tests/native/verify_native_probes.sh
|
||
```
|
||
|
||
五、下一步执行计划
|
||
|
||
1. 当前第一候选批次。
|
||
|
||
继续 early direct-file fixture staged path guard,小批量选择:
|
||
|
||
```text
|
||
oword-bug315/test.ngc
|
||
oword-bug315-p2/test.ngc
|
||
namedparam-bug424/test.ngc
|
||
```
|
||
|
||
执行目标:
|
||
|
||
- Node 侧增加 fixed `.ngc` manifest;
|
||
- Node 侧与 `interpRegressionNgcFilesRecursive(...)` 精确对账;
|
||
- Node 侧检查 staged path 与 fixed manifest 一致;
|
||
- browser 侧增加 fixed-count 和 duplicate-free guard;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-interp/.../` 前缀后与 fixed manifest
|
||
一致;
|
||
- browser 仍不枚举目录。
|
||
|
||
2. 第一候选批次验证。
|
||
|
||
执行:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
如果通过,提交建议:
|
||
|
||
```text
|
||
Guard oword/namedparam staging paths
|
||
```
|
||
|
||
3. 后续候选原则。
|
||
|
||
继续只选:
|
||
|
||
- 已有 Node/browser coverage;
|
||
- 不依赖 HAL/task/tool DB/Python remap/user-M process;
|
||
- direct-file 或 staging helper 已成型;
|
||
- 每批 2 到 3 个 case;
|
||
- 只做 host/filesystem staging guard,不新增 CNC 语义。
|
||
|
||
暂不推进:
|
||
|
||
- blocked runtime promotion;
|
||
- browser full 159 sim-config inventory;
|
||
- full-process/HAL/UI/Python/tool DB 执行;
|
||
- upstream intake 大批量扩面。
|
||
|
||
六、下一次开始执行时的第一条命令
|
||
|
||
从这里继续:
|
||
|
||
```bash
|
||
git status --short
|
||
git log -5 --oneline
|
||
tail -n 120 text6.txt
|
||
awk '/^[一二三四五六七八九十百]+、/ {print}' text6.txt | sort | uniq -d
|
||
```
|
||
|
||
如果输出显示工作区 clean 且 `text6.txt` 无重复标题,再执行第五部分第一候选批次。
|
||
|
||
七、2026-06-13 继续执行记录:oword/namedparam staging path guard
|
||
|
||
本批按第五部分第一候选批次完成 3 个 early direct-file fixture 的 staged path guard:
|
||
|
||
- `oword-bug315/test.ngc`
|
||
- `oword-bug315-p2/test.ngc`
|
||
- `namedparam-bug424/test.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧为上述 3 个 fixture 增加 fixed `.ngc` manifest;
|
||
- Node 侧用 `interpRegressionNgcFilesRecursive(...)` 与 upstream vendored fixture
|
||
精确对账;
|
||
- Node 侧检查 staged path 与 fixed manifest 一致;
|
||
- browser 侧增加 fixed-count 与 duplicate-free guard;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-interp/.../` 前缀后与 fixed
|
||
manifest 一致;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续按“小批量 direct-file/staging helper guard”原则推进。优先从已有 Node/browser
|
||
coverage、且不依赖 HAL/task/tool DB/Python remap/user-M process 的 interp fixture 中,
|
||
再选择 2 到 3 个只需要 host/filesystem staging 对账的 case。不要推进 blocked runtime
|
||
promotion,也不要扩展 browser full 159 sim-config inventory。
|
||
|
||
八、2026-06-13 继续执行记录:flowsnake/inside-corners staging path guard
|
||
|
||
本批继续按“小批量 direct-file fixture staged path guard”推进,完成 3 个已有
|
||
Node/browser coverage 的 interp fixture:
|
||
|
||
- `flowsnake/flowsnake.ngc`
|
||
- `inside-corners/test.ngc`
|
||
- `inverse-time-with-comp/inverse.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧为上述 3 个 fixture 增加 fixed `.ngc` manifest;
|
||
- Node 侧用 `interpRegressionNgcFilesRecursive(...)` 与 upstream vendored fixture
|
||
精确对账;
|
||
- Node 侧检查 staged path 与 fixed manifest 一致;
|
||
- browser 侧增加 fixed-count 与 duplicate-free guard;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-interp/.../` 前缀后与 fixed
|
||
manifest 一致;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续沿 interp direct-file coverage 向后补 guard,但优先选择短小、单文件、
|
||
无 INI/工具表依赖的 case。下一批可考虑 `g33.1/g33.1.ngc`、`g6164/test.ngc`,
|
||
再搭配一个已明确 expected-error 或 direct-file loop case;如果 case 属于目录集合
|
||
或带参数化循环,先检查是否已有固定 manifest 风格,避免扩大执行面。
|
||
|
||
九、2026-06-13 继续执行记录:g33/g6164 staging path guard
|
||
|
||
本批继续按“小批量 direct-file fixture staged path guard”推进,完成 2 个短小、
|
||
单文件、无 INI/工具表依赖的 interp fixture:
|
||
|
||
- `g33.1/g33.1.ngc`
|
||
- `g6164/test.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧为上述 2 个 fixture 增加 fixed `.ngc` manifest;
|
||
- Node 侧用 `interpRegressionNgcFilesRecursive(...)` 与 upstream vendored fixture
|
||
精确对账;
|
||
- Node 侧检查 staged path 与 fixed manifest 一致;
|
||
- browser 侧增加 fixed-count 与 duplicate-free guard;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-interp/.../` 前缀后与 fixed
|
||
manifest 一致;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
本批没有纳入 `g72` loop 组;该组在测试代码中是参数化循环,后续应按整组或
|
||
明确固定 manifest 风格处理,避免为了凑数量拆出不自然的单项 guard。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续推进时优先处理已经有固定 manifest 或自然成组的 direct-file fixtures。候选:
|
||
`good` arc 6 项可按已有 fixed fixture list 补 staged path 对账;或者 `g72` 两项、
|
||
`g71` 四项按 loop manifest 成组补 guard。继续避免 blocked runtime promotion、
|
||
browser full inventory 扩面,以及任何 JS CNC 语义实现。
|
||
|
||
十、2026-06-13 继续执行记录:good arc staging path guard
|
||
|
||
本批按“自然成组 direct-file fixture staged path guard”推进,完成 `good` arc 目录
|
||
6 个已有 Node/browser coverage 的 `.ngc` fixture:
|
||
|
||
- `good/good-arc.big.imperial.center-format.ngc`
|
||
- `good/good-arc.big.metric.center-format.ngc`
|
||
- `good/good-arc.medium.imperial.center-format.ngc`
|
||
- `good/good-arc.medium.metric.center-format.ngc`
|
||
- `good/good-arc.small.imperial.center-format.ngc`
|
||
- `good/good-arc.small.metric.center-format.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧复用既有 `goodArcFixtures` fixed manifest;
|
||
- Node 侧继续用 `interpRegressionNgcFiles("good")` 与 upstream vendored fixture
|
||
精确对账;
|
||
- Node 侧收集实际 staged path,并检查与 fixed manifest 一致;
|
||
- browser 侧复用既有 fixed-count 与 duplicate-free guard;
|
||
- browser 侧收集实际 staged path,去掉 `/work/browser-interp/good/` 前缀后与
|
||
fixed manifest 一致;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理自然成组 direct-file fixtures。优先候选:`g72` 两项或 `g71` 四项按
|
||
loop manifest 成组补 staged path guard;如果选择 `bad` expected-error 目录,
|
||
需要按现有 `badInterpFixtures` fixed list 做 staged path 对账,不改变 expected-error
|
||
语义。继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC
|
||
语义实现。
|
||
|
||
十一、2026-06-13 继续执行记录:g72 staging path guard
|
||
|
||
本批按“自然成组 direct-file fixture staged path guard”推进,完成 `g72` loop 组
|
||
2 个已有 Node/browser coverage 的 `.ngc` fixture:
|
||
|
||
- `g72-facing/g72-iterations-present.ngc`
|
||
- `g72-missing-iteration/g72-iterations-missing.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 `g72` inline loop 提成 `g72Fixtures` fixed manifest;
|
||
- Node 侧用 `interpRegressionNgcFilesRecursive(...)` 分别与 upstream vendored
|
||
fixture 目录精确对账;
|
||
- Node 侧检查 staged path 与 fixed manifest 一致;
|
||
- browser 侧增加 fixed-count 与 duplicate-free guard;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-interp/` 前缀后与
|
||
`dir/file` fixed manifest 一致;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理自然成组 direct-file fixtures。优先候选:`g71` 四项按现有 loop manifest
|
||
补 staged path guard;或者处理 `bad` expected-error 目录,只做 fixed list 与
|
||
staged path 对账,不改变 expected-error 语义。继续避免 blocked runtime promotion、
|
||
browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
十二、2026-06-13 继续执行记录:g71 staging path guard
|
||
|
||
本批按“自然成组 direct-file fixture staged path guard”推进,完成 `g71` loop 组
|
||
4 个已有 Node/browser coverage 的 `.ngc` fixture:
|
||
|
||
- `g71-endless-loop/g71-endless-loop.ngc`
|
||
- `g71-endless-loop2/g71-endless-loop2.ngc`
|
||
- `g71-endless-loop_2/g71-endless-loop_2.ngc`
|
||
- `g71-with-g70/g71-with-g70.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 `g71` inline loop 提成 `g71Fixtures` fixed manifest;
|
||
- Node 侧用 `interpRegressionNgcFilesRecursive(...)` 分别与 upstream vendored
|
||
fixture 目录精确对账;
|
||
- Node 侧检查 staged path 与 fixed manifest 一致;
|
||
- browser 侧增加 fixed-count 与 duplicate-free guard;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-interp/` 前缀后与
|
||
`dir/file` fixed manifest 一致;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理已有 fixed manifest 的 direct-file fixtures。优先候选:`bad` expected-error
|
||
目录,按现有 `badInterpFixtures` fixed list 补 staged path 对账;只校验文件清单
|
||
和 staging 路径,不改变 expected-error 语义。也可以继续找短小单文件 case,但仍需
|
||
保持每批 2 到 3 个或自然成组,不推进 blocked runtime promotion。
|
||
|
||
十三、2026-06-13 继续执行记录:bad expected-error staging path guard
|
||
|
||
本批按“已有 fixed manifest 的 direct-file fixture staged path guard”推进,完成
|
||
`bad` expected-error 目录 21 个已有 Node/browser coverage 的 `.ngc` fixture。
|
||
|
||
完成内容:
|
||
|
||
- Node 侧复用既有 `badInterpFixtures` fixed manifest;
|
||
- Node 侧继续用 `interpRegressionNgcFiles("bad")` 与 upstream vendored fixture
|
||
精确对账;
|
||
- Node 侧收集实际 staged path,并检查与 fixed manifest 一致;
|
||
- browser 侧复用既有 fixed-count 与 duplicate-free guard;
|
||
- browser 侧收集实际 staged path,去掉 `/work/browser-interp/bad/` 前缀后与
|
||
fixed manifest 一致;
|
||
- 仅校验文件清单与 staging 路径,不改变 expected-error 语义;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续找已有 Node/browser coverage 且可自然成组的 fixture。优先候选:`g76` 这种
|
||
需要工具表/INI 的目录可按 `writeInterpRegressionFiles(...)` 现有 file list 做 staged
|
||
path 对账;或者继续挑选短小单文件 direct-file case。仍不要推进 blocked runtime
|
||
promotion、browser full inventory 扩面或任何 JS CNC 语义实现。
|
||
|
||
十四、2026-06-13 继续执行记录:g76 file-list staging path guard
|
||
|
||
本批按“已有明确 file list 的 fixture staged path guard”推进,完成 `g76` 目录
|
||
现有 Node/browser coverage 使用的 2 个 staged 文件:
|
||
|
||
- `g76/g76only.ngc`
|
||
- `g76/test.tbl`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧新增 `g76Files` fixed manifest;
|
||
- Node 侧用 `interpRegressionNgcFilesRecursive("g76")` 与 upstream vendored `.ngc`
|
||
fixture 精确对账;
|
||
- Node 侧检查 `writeInterpRegressionFiles(...)` 目标 staged path 与 fixed manifest
|
||
一致;
|
||
- browser 侧增加 fixed-count 与 duplicate-free guard;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-interp/g76/` 前缀后与 fixed
|
||
manifest 一致;
|
||
- 仅校验文件清单与 staging 路径,不改变工具表/INI 语义;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理已有 Node/browser coverage 且 file list 明确的 fixture。优先候选:
|
||
`cam-nisley` 同样使用 `writeInterpRegressionFiles(...)` staging `cam.ngc` 与
|
||
`test.tbl`,可按本批模式补 file-list guard;或者继续挑选短小单文件 direct-file
|
||
case。仍不要推进 blocked runtime promotion、browser full inventory 扩面或 JS CNC
|
||
语义实现。
|
||
|
||
十五、2026-06-13 继续执行记录:cam-nisley file-list staging path guard
|
||
|
||
本批按“已有明确 file list 的 fixture staged path guard”推进,完成
|
||
`cam-nisley` 目录现有 Node/browser coverage 使用的 2 个 staged 文件:
|
||
|
||
- `cam-nisley/cam.ngc`
|
||
- `cam-nisley/test.tbl`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧新增 `camNisleyFiles` fixed manifest;
|
||
- Node 侧用 `interpRegressionNgcFilesRecursive("cam-nisley")` 与 upstream vendored
|
||
`.ngc` fixture 精确对账;
|
||
- Node 侧检查 `writeInterpRegressionFiles(...)` 目标 staged path 与 fixed manifest
|
||
一致;
|
||
- browser 侧增加 fixed-count 与 duplicate-free guard;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-interp/cam-nisley/` 前缀后与
|
||
fixed manifest 一致;
|
||
- 仅校验文件清单与 staging 路径,不改变工具表/INI 语义;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续选择已有 Node/browser coverage 且清单稳定的 fixture。优先候选:`rotation`
|
||
组三项已有 fixed manifest,可补 staged path 对账;或者继续挑选短小单文件
|
||
direct-file case。仍不要推进 blocked runtime promotion、browser full inventory
|
||
扩面或 JS CNC 语义实现。
|
||
|
||
十六、2026-06-13 继续执行记录:rotation staging path guard
|
||
|
||
本批按“已有 fixed manifest 的 direct-file fixture staged path guard”推进,完成
|
||
`rotation` 组现有 Node/browser coverage 使用的 3 个 staged `.ngc` 文件:
|
||
|
||
- `rotation/abs-pts/test.ngc`
|
||
- `rotation/g28/g28.ngc`
|
||
- `rotation/g53/g53.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧复用既有 `rotationRegressionFiles` fixed manifest;
|
||
- Node 侧继续用 `interpRegressionNgcFilesRecursive("rotation")` 与 upstream
|
||
vendored `.ngc` fixture 精确对账;
|
||
- Node 侧检查实际 staged path 与 fixed manifest 一致;
|
||
- browser 侧复用既有 fixed-count 与 duplicate-free guard;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-interp/rotation/` 前缀后与
|
||
fixed manifest 一致;
|
||
- 不扩大 staging 到 `rotation/abs-pts/test.tbl`,保持现有 direct-file coverage;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续选择已有 Node/browser coverage 且清单稳定的 fixture。优先候选:`g10`、`g52`
|
||
之外的 remaining direct-file 单项,或已经有 fixed list 的分组;若涉及工具表/INI,
|
||
只按现有 `writeInterpRegressionFiles(...)` 或 staging helper 输出做路径 guard。
|
||
继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
十七、2026-06-13 继续执行记录:ccomp staging path guard
|
||
|
||
本批按“已有 staging helper 的 fixture staged path guard”推进,完成现有
|
||
Node/browser ccomp coverage 使用的 4 个目录:
|
||
|
||
- `ccomp/lathe-comp`
|
||
- `ccomp/mill-g90g91g92`
|
||
- `ccomp/mill-line-arc-entry`
|
||
- `ccomp/mill-zchanges`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧新增 `ccompRegressionFiles` fixed manifest:`test.ngc`、`test.tbl`;
|
||
- Node 侧新增 `assertCcompRegressionStaging(...)`,与 upstream vendored
|
||
`.ngc/.tbl` fixture 精确对账;
|
||
- Node 侧检查 `writeCcompRegressionFiles(...)` 目标 staged path 与 fixed manifest
|
||
一致;
|
||
- browser 侧新增同名 fixed manifest 与 staged path guard;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-ccomp/<name>/` 前缀后与 fixed
|
||
manifest 一致;
|
||
- 仅校验文件清单与 staging 路径,不改变 cutter-comp、工具表或 INI 语义;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续选择已有 Node/browser coverage 且 staging helper/file list 明确的 fixture。
|
||
优先候选:继续扫描剩余 `write*RegressionFiles(...)` helper 输出,或挑选短小单文件
|
||
direct-file case。仍不要推进 blocked runtime promotion、browser full inventory
|
||
扩面或 JS CNC 语义实现。
|
||
|
||
十八、2026-06-13 继续执行记录:initial remap file-list staging path guard
|
||
|
||
本批按“已有明确 file list 的 remap fixture staged path guard”推进,完成现有
|
||
Node/browser remap coverage 的 6 个小目录:
|
||
|
||
- `remap/duplicate-o-word`
|
||
- `remap/fail/args.0`
|
||
- `remap/fail/args.1`
|
||
- `remap/fail/args.2`
|
||
- `remap/fail/body-ngc`
|
||
- `remap/m30-interaction`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧新增 `assertRemapRegressionStaging(...)`;
|
||
- Node 侧将上述 6 个 inline remap file list 提成 fixed manifest;
|
||
- Node 侧用 upstream vendored `.ini/.ngc` 文件清单与 fixed manifest 精确对账;
|
||
- Node 侧检查 `writeRemapRegressionFiles(...)` 目标 staged path 与 fixed manifest
|
||
一致;
|
||
- browser 侧新增同名 staged path guard;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-remap/<name>/` 前缀后与 fixed
|
||
manifest 一致;
|
||
- 仅校验文件清单与 staging 路径,不改变 remap 执行语义;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续按小批量处理剩余 `writeRemapRegressionFiles(...)` file list,例如
|
||
`nested-remaps-oword`、`posargs.0`、`sequencing`、`remap-io`。注意 `remap-io`
|
||
会额外生成 `simpockets.tbl`,如处理该项应明确区分 vendored file list 与运行时
|
||
生成文件。继续避免 blocked runtime promotion、browser full inventory 扩面和
|
||
JS CNC 语义实现。
|
||
|
||
十九、2026-06-13 继续执行记录:posargs/sequencing remap staging path guard
|
||
|
||
本批继续按“小批量 remap file-list staged path guard”推进,完成现有 Node/browser
|
||
remap coverage 的 2 个目录:
|
||
|
||
- `remap/posargs.0`
|
||
- `remap/sequencing`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 `posargs.0` 与 `sequencing` 的 inline remap file list 提成 fixed
|
||
manifest;
|
||
- Node 侧复用 `assertRemapRegressionStaging(...)`,用 upstream vendored `.ini/.ngc`
|
||
文件清单与 fixed manifest 精确对账;
|
||
- Node 侧检查 `writeRemapRegressionFiles(...)` 目标 staged path 与 fixed manifest
|
||
一致;
|
||
- browser 侧复用同名 staged path guard;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-remap/<name>/` 前缀后与 fixed
|
||
manifest 一致;
|
||
- 未处理 `nested-remaps-oword`,因为该目录含当前 smoke 未 staging 的
|
||
`testsub.ngc`,应单独判断是否扩展 file list;
|
||
- 仅校验文件清单与 staging 路径,不改变 remap 执行语义;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理剩余 remap file-list guard。优先候选:`remap-io`,但需要明确把 vendored
|
||
file list 与运行时生成的 `simpockets.tbl` 分开校验;`nested-remaps-oword` 也可处理,
|
||
但需先决定是否把未 staging 的 `testsub.ngc` 纳入 fixed manifest。继续避免 blocked
|
||
runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
二十、2026-06-13 继续执行记录:remap-io staging path guard
|
||
|
||
本批继续按“remap file-list staged path guard”推进,完成现有 Node/browser
|
||
`remap-io` coverage:
|
||
|
||
- vendored staged files:
|
||
- `remap-io/test-ngc.ini`
|
||
- `remap-io/io_input_m66.ngc`
|
||
- `remap-io/io_output_m62.ngc`
|
||
- `remap-io/io_output_m63.ngc`
|
||
- `remap-io/io_output_m64.ngc`
|
||
- `remap-io/io_output_m65.ngc`
|
||
- `remap-io/io_output_m67.ngc`
|
||
- `remap-io/io_output_m68.ngc`
|
||
- runtime generated file:
|
||
- `remap-io/simpockets.tbl`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 `remap-io` inline remap file list 提成 `remapIoFiles` fixed manifest;
|
||
- Node 侧复用 `assertRemapRegressionStaging(...)` 校验 vendored `.ini/.ngc` 文件清单
|
||
与 staged path;
|
||
- Node 侧单独检查运行时生成的 `simpockets.tbl` staged path;
|
||
- browser 侧复用同名 staged path guard;
|
||
- browser 侧同样单独检查运行时生成的 `simpockets.tbl` staged path;
|
||
- 明确区分 vendored file list 与运行时生成文件,不改变 remap-io 执行语义;
|
||
- browser 仍不依赖目录枚举。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
`nested-remaps-oword` 是剩余 remap 候选,但目录包含当前 smoke 未 staging 的
|
||
`testsub.ngc`,下一步应先判断是否应扩展 file list;若不扩展,则需要专门记录
|
||
“vendored extra fixture intentionally unstaged”的 guard。继续避免 blocked runtime
|
||
promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
二十一、2026-06-13 继续执行记录:nested remaps oword unstaged fixture guard
|
||
|
||
本批继续按“remap file-list staged path guard”推进,完成剩余
|
||
`nested-remaps-oword` coverage 的 staged/unstaged 文件清单对账。
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 `nested-remaps-oword` inline remap file list 提成
|
||
`nestedRemapsOwordFiles` fixed manifest;
|
||
- Node 侧新增 `expectedUnstagedFiles` 参数,用 upstream vendored `.ini/.ngc`
|
||
文件清单与 staged manifest 加 expected-unstaged manifest 精确对账;
|
||
- Node 侧显式记录 `testsub.ngc` 为 vendored extra fixture、当前 smoke 不 staging;
|
||
- Node 侧检查 expected-unstaged 文件不得与 staged manifest 重叠;
|
||
- browser 侧新增同名 fixed manifest 与 expected-unstaged overlap guard;
|
||
- browser 侧继续只校验 fixed staged path,不依赖目录枚举;
|
||
- 仅校验文件清单与 staging 路径,不改变 remap 执行语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
remap file-list guard 的当前显性剩余项已基本收束。下一批建议回到
|
||
`write*RegressionFiles(...)` helper 扫描,优先选择已有 Node/browser coverage、
|
||
文件清单固定且不涉及 HAL/task/tool DB/Python remap/user-M process 的 2 到 3 个
|
||
fixture;若没有合适小批次,转向补齐 staging guard 的文档索引或生成一个
|
||
machine-readable fixture coverage manifest。继续避免 blocked runtime promotion、
|
||
browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
二十二、2026-06-13 继续执行记录:interp fixture staging helper guard
|
||
|
||
本批回到 `writeInterpRegressionFiles(...)` helper,先整理已有 Node/browser coverage
|
||
里的两个固定 `.ngc/.tbl` fixture:
|
||
|
||
- `interp/cam-nisley`
|
||
- `interp/g76`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧新增 `assertInterpRegressionStaging(...)`;
|
||
- Node 侧对 upstream vendored `.ini/.ngc/.tbl` 文件清单与 fixed manifest 精确对账;
|
||
- Node 侧检查 staged path 与 `/work/interp/<name>/...` fixed manifest 一致;
|
||
- browser 侧新增同名 `assertInterpRegressionStaging(...)`;
|
||
- browser 侧检查 fixed manifest duplicate-free,并检查 staged path 去掉
|
||
`/work/browser-interp/<name>/` 前缀后与 fixed manifest 一致;
|
||
- `cam-nisley` 与 `g76` 改用该 helper,去掉内联重复 guard;
|
||
- 仅整理 host/filesystem staging guard,不改变 G-code、tool table 或 threading 语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续复用 `assertInterpRegressionStaging(...)` 处理已有 `writeInterpRegressionFiles(...)`
|
||
调用里的小批次。优先候选:
|
||
|
||
- `m98m99/09-disable-fanuc-subs`
|
||
- `m98m99/11-main-program-oword`
|
||
|
||
这两个已有固定 file list 和 Node/browser coverage,适合把现有 m98m99 aggregate
|
||
slice guard 拆出更直接的 per-directory staged path guard。仍不推进 blocked runtime
|
||
promotion、browser full inventory 扩面或 JS CNC 语义实现。
|
||
|
||
二十三、2026-06-13 继续执行记录:m98m99 interp directory staging guard
|
||
|
||
本批继续复用 `assertInterpRegressionStaging(...)`,把两个已有 m98m99 目录从
|
||
aggregate slice guard 拆成更直接的 per-directory staged path guard:
|
||
|
||
- `m98m99/09-disable-fanuc-subs`
|
||
- `m98m99/11-main-program-oword`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧对 `09-disable-fanuc-subs` 的 `.ini/.ngc` fixed manifest 与 vendored
|
||
文件清单精确对账;
|
||
- Node 侧对 `11-main-program-oword` 的 `.ngc` fixed manifest 与 vendored 文件清单
|
||
精确对账;
|
||
- Node 侧保留相邻 direct-file smoke 的 slice guard,但不再让该 slice 夹带目录
|
||
file-list 对账;
|
||
- browser 侧复用同名 helper 检查 fixed manifest duplicate-free;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-interp/<name>/` 前缀后与 fixed
|
||
manifest 一致;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 Fanuc sub、main-program oword 或
|
||
interpreter 语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续扫描 `writeInterpRegressionFiles(...)` 与 m98m99 剩余 direct-file aggregate guard。
|
||
优先候选是把 `m98m99/13-named-program` 的 fixed file list 提成 per-directory guard,
|
||
同时保留 `m98m99/14-o-expression-call` direct-file slice guard;如继续小批量,
|
||
也可处理 `m98m99/09`、`11` 后续文档索引。继续避免 blocked runtime promotion、
|
||
browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
二十四、2026-06-13 继续执行记录:m98m99 named-program staging guard
|
||
|
||
本批继续复用 `assertInterpRegressionStaging(...)`,把
|
||
`m98m99/13-named-program` 从 final aggregate direct-file guard 中拆成
|
||
per-directory staged path guard,同时保留 `m98m99/14-o-expression-call` 的
|
||
direct-file slice guard。
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 `13-named-program` 的 `test-named.ngc` 与 `test-numbered.ngc` 提成
|
||
fixed manifest;
|
||
- Node 侧用 upstream vendored `.ngc` 文件清单与 fixed manifest 精确对账;
|
||
- Node 侧检查 staged path 与 `/work/interp/m98m99/13-named-program/...` 一致;
|
||
- Node 侧将 final direct-file slice 收缩为只覆盖 `14-o-expression-call/test.ngc`;
|
||
- browser 侧新增同名 fixed manifest guard;
|
||
- browser 侧检查 staged path 去掉
|
||
`/work/browser-interp/m98m99/13-named-program/` 前缀后与 fixed manifest 一致;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 named-program 或 o-expression call
|
||
语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
m98m99 目录级 staged path guard 已基本收束。下一批建议扫描 `writeInterpRegressionFile(...)`
|
||
的剩余单文件 direct-file guard,优先选择仍由 aggregate slice 间接覆盖的短小 case,
|
||
把它们改成局部 fixed path guard;如果继续保持小步提交,可从 `g10` 之后的
|
||
direct-file families 或 `writeInterpRegressionFiles(...)` 其他调用点继续收敛。仍不推进
|
||
blocked runtime promotion、browser full inventory 扩面或 JS CNC 语义实现。
|
||
|
||
二十五、2026-06-13 继续执行记录:m98m99 direct-file staging helper guard
|
||
|
||
本批按“剩余单文件 direct-file guard 收敛”推进,新增 single-file staging helper,
|
||
并先替换 m98m99 里短小且已由 aggregate slice 间接覆盖的 4 个 direct-file case:
|
||
|
||
- `m98m99/01-basics/test.ngc`
|
||
- `m98m99/02-variables/test.ngc`
|
||
- `m98m99/03-error-M98-no-P-word/test.ngc`
|
||
- `m98m99/14-o-expression-call/test.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧新增 `assertInterpRegressionFileStaging(...)`;
|
||
- Node 侧检查 staged path 与 `/work/interp/<name>/<filename>` 精确一致;
|
||
- Node 侧将 m98m99 initial aggregate slice 替换为 3 个局部 direct-file guard;
|
||
- Node 侧将 final `14-o-expression-call` aggregate slice 替换为局部 direct-file guard;
|
||
- browser 侧新增同名 single-file staging helper;
|
||
- browser 侧检查 staged path 与 `/work/browser-interp/<name>/<filename>` 精确一致;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 Fanuc sub、变量作用域、M98 error 或
|
||
o-expression call 语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续复用 `assertInterpRegressionFileStaging(...)` 收敛 m98m99 剩余 direct-file slice。
|
||
优先候选:
|
||
|
||
- `m98m99/04-M98-but-no-sub/test.ngc`
|
||
- `m98m99/05-M98-loops/test.ngc`
|
||
- `m98m99/07-nested-subs/test.ngc`
|
||
- `m98m99/08-sub-follows-main/test.ngc`
|
||
- `m98m99/10-M98-P001/test.ngc`
|
||
|
||
其中 `06-error-mixed-sub-styles` 有 4 个同目录文件,可单独作为一批继续处理。继续避免
|
||
blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
二十六、2026-06-13 继续执行记录:m98m99 remaining direct-file staging guard
|
||
|
||
本批继续复用 `assertInterpRegressionFileStaging(...)`,收敛 m98m99 剩余短小
|
||
single-file direct-file guard:
|
||
|
||
- `m98m99/04-M98-but-no-sub/test.ngc`
|
||
- `m98m99/05-M98-loops/test.ngc`
|
||
- `m98m99/07-nested-subs/test.ngc`
|
||
- `m98m99/08-sub-follows-main/test.ngc`
|
||
- `m98m99/10-M98-P001/test.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧为上述 5 个 direct-file case 增加局部 staged path guard;
|
||
- Node 侧将 `06-error-mixed-sub-styles` 的 aggregate slice 收缩为只覆盖该目录
|
||
4 个 mixed-sub-style 文件;
|
||
- Node 侧移除 `07/08` 和 `10` 的临近 aggregate slice guard;
|
||
- browser 侧同步增加 5 个局部 staged path guard;
|
||
- browser 侧同步收缩 mixed-sub-style slice,并移除 `07/08` 和 `10` 的临近 slice;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 M98 no-sub、loop、nested sub、
|
||
sub-follows-main 或 M98-P001 执行语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
`m98m99` 剩余显性 aggregate slice 只剩 `06-error-mixed-sub-styles`。下一批可把这
|
||
4 个文件改成固定 manifest 加 per-directory guard,或逐个使用 single-file helper;
|
||
完成后 m98m99 direct-file staging guard 基本收束。之后建议转向其他
|
||
`writeInterpRegressionFile(...)` families,例如 `bad`、`good`、`g71/g72` 或
|
||
`rotation` 的 aggregate direct-file guard。继续避免 blocked runtime promotion、
|
||
browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
二十七、2026-06-13 继续执行记录:m98m99 mixed-sub-style staging guard
|
||
|
||
本批完成 m98m99 最后一个显性 aggregate slice 的收束,将
|
||
`m98m99/06-error-mixed-sub-styles` 改为 fixed manifest 加 per-directory staged path
|
||
guard。
|
||
|
||
完成内容:
|
||
|
||
- Node 侧新增 `m98m99MixedSubStyleFiles` fixed manifest,包含该目录 4 个 `.ngc`
|
||
fixture;
|
||
- Node 侧改用 `writeInterpRegressionFiles(...)` 一次 staging 该目录;
|
||
- Node 侧复用 `assertInterpRegressionStaging(...)`,用 upstream vendored `.ngc`
|
||
文件清单与 fixed manifest 精确对账;
|
||
- Node 侧移除最后的 m98m99 mixed aggregate slice;
|
||
- browser 侧新增同名 fixed manifest;
|
||
- browser 侧复用 `assertInterpRegressionStaging(...)` 检查 duplicate-free 与 staged path;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 mixed Fanuc/RS274NGC sub-style 错误语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
m98m99 direct-file 与目录级 staging guard 已基本收束。下一批建议转向其他
|
||
`writeInterpRegressionFile(...)` aggregate direct-file family,小批量优先候选:
|
||
|
||
- `rotation/abs-pts`
|
||
- `rotation/g28`
|
||
- `rotation/g53`
|
||
|
||
这三个已有 Node/browser coverage 且属于同一 direct-file family,适合复用
|
||
`assertInterpRegressionFileStaging(...)` 替换当前 rotation aggregate slice。继续避免
|
||
blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
二十八、2026-06-13 继续执行记录:rotation direct-file staging guard
|
||
|
||
本批转向 `rotation` direct-file family,复用 `assertInterpRegressionFileStaging(...)`
|
||
替换当前 rotation aggregate staged path guard:
|
||
|
||
- `rotation/abs-pts/test.ngc`
|
||
- `rotation/g28/g28.ngc`
|
||
- `rotation/g53/g53.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧为上述 3 个 direct-file case 增加局部 staged path guard;
|
||
- Node 侧保留 `rotationRegressionFiles` 对 upstream `.ngc` manifest 的覆盖检查;
|
||
- Node 侧移除 aggregate staged path 对账;
|
||
- browser 侧同步增加 3 个局部 staged path guard;
|
||
- browser 侧保留 fixed `.ngc` manifest duplicate-free 检查;
|
||
- browser 侧移除 aggregate staged path 对账,仍不枚举目录;
|
||
- 注意 `rotation/abs-pts` vendored 目录含 `test.tbl`,但当前 smoke 未 staging 该
|
||
文件;本批只收敛现有 `.ngc` direct-file path guard,不扩大工具表语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理其他 `writeInterpRegressionFile(...)` aggregate direct-file family。优先候选:
|
||
|
||
- `g71/g72` direct-file loop;
|
||
- 或 `good`/`bad` arc/error fixture loop。
|
||
|
||
建议先选 `g71/g72`,因为 file list 较短且已有 Node/browser coverage,适合继续复用
|
||
single-file helper 收敛 staging path guard。继续避免 blocked runtime promotion、
|
||
browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
二十九、2026-06-13 继续执行记录:g71/g72 direct-file staging guard
|
||
|
||
本批按上一条建议处理 `g71/g72` direct-file loop,复用
|
||
`assertInterpRegressionFileStaging(...)` 替换 loop 内联 staged path 检查:
|
||
|
||
- `g72-facing/g72-iterations-present.ngc`
|
||
- `g72-missing-iteration/g72-iterations-missing.ngc`
|
||
- `g71-endless-loop/g71-endless-loop.ngc`
|
||
- `g71-endless-loop2/g71-endless-loop2.ngc`
|
||
- `g71-endless-loop_2/g71-endless-loop_2.ngc`
|
||
- `g71-with-g70/g71-with-g70.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧保留每个 fixture 目录的 upstream `.ngc` coverage check;
|
||
- Node 侧将 loop 内联 staged path `deepEqual` 替换为
|
||
`assertInterpRegressionFileStaging(...)`;
|
||
- browser 侧保留 fixed fixture list duplicate-free guard;
|
||
- browser 侧将 loop 内联 `replace("/work/browser-interp/", "")` 对账替换为
|
||
`assertInterpRegressionFileStaging(...)`;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 G71/G72 canned cycle 执行语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理 `writeInterpRegressionFile(...)` aggregate direct-file loop。优先候选:
|
||
|
||
- `good` arc fixture loop;
|
||
- `bad` error fixture loop。
|
||
|
||
建议先选 `good`,因为固定 6 个 arc fixture,Node/browser coverage 已成型,适合继续
|
||
用 single-file helper 替换 aggregate staged path guard。继续避免 blocked runtime
|
||
promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
三十、2026-06-13 继续执行记录:good arc direct-file staging guard
|
||
|
||
本批处理 `good` arc fixture loop,复用 `assertInterpRegressionFileStaging(...)`
|
||
替换 aggregate staged path guard:
|
||
|
||
- `good/good-arc.big.imperial.center-format.ngc`
|
||
- `good/good-arc.big.metric.center-format.ngc`
|
||
- `good/good-arc.medium.imperial.center-format.ngc`
|
||
- `good/good-arc.medium.metric.center-format.ngc`
|
||
- `good/good-arc.small.imperial.center-format.ngc`
|
||
- `good/good-arc.small.metric.center-format.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧保留 `goodArcFixtures` 与 upstream `.ngc` manifest 的覆盖检查;
|
||
- Node 侧删除 `goodArcStagedNgcFiles` aggregate staged path 对账;
|
||
- Node 侧在 loop 内为每个 fixture 调用 `assertInterpRegressionFileStaging(...)`;
|
||
- browser 侧保留 fixed fixture list duplicate-free guard;
|
||
- browser 侧删除 `goodArcStagedRelativeNgcFiles` aggregate staged path 对账;
|
||
- browser 侧在 loop 内为每个 fixture 调用 single-file staging helper;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 arc interpreter 语义或 expected output。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理 `bad` error fixture loop。它已有 Node/browser coverage 和 fixed fixture list,
|
||
适合复用 `assertInterpRegressionFileStaging(...)` 替换当前 aggregate staged path
|
||
guard。继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC
|
||
语义实现。
|
||
|
||
三十一、2026-06-13 继续执行记录:bad error direct-file staging guard
|
||
|
||
本批处理 `bad` error fixture loop,复用 `assertInterpRegressionFileStaging(...)`
|
||
替换 aggregate staged path guard。
|
||
|
||
完成内容:
|
||
|
||
- Node 侧保留 `badInterpFixtures` 与 upstream `.ngc` manifest 的覆盖检查;
|
||
- Node 侧删除 `badStagedNgcFiles` aggregate staged path 对账;
|
||
- Node 侧在 loop 内为 21 个 bad fixture 调用 single-file staging helper;
|
||
- browser 侧保留 fixed fixture list duplicate-free guard;
|
||
- browser 侧删除 `badStagedRelativeNgcFiles` aggregate staged path 对账;
|
||
- browser 侧在 loop 内为 21 个 bad fixture 调用 single-file staging helper;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 bad fixture error expected output。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续收敛剩余 direct-file aggregate guard。优先候选:
|
||
|
||
- `g33.1/g33.1.ngc`
|
||
- `g6164/test.ngc`
|
||
- `g52/offsets.ngc`
|
||
|
||
这些都是小型 single-file case,适合复用 `assertInterpRegressionFileStaging(...)`
|
||
替换内联 staged path 对账。之后再处理 `g10` 初始/最终 aggregate guard。继续避免
|
||
blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
三十二、2026-06-13 继续执行记录:small single-file staging guard
|
||
|
||
本批处理 3 个小型 single-file fixture,复用 `assertInterpRegressionFileStaging(...)`
|
||
替换内联 staged path 对账:
|
||
|
||
- `g33.1/g33.1.ngc`
|
||
- `g6164/test.ngc`
|
||
- `g52/g52-g92-interaction/g52-g92-interaction.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧保留各 fixture 的 upstream `.ngc` manifest coverage check;
|
||
- Node 侧将 3 处内联 staged path `deepEqual` 替换为 single-file helper;
|
||
- browser 侧保留 fixed manifest duplicate-free guard;
|
||
- browser 侧将 3 处 `replace(...)` staged path 对账替换为 single-file helper;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 rigid tap、G61/G64 或 G52/G92 语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理剩余 aggregate staged path guard。优先候选:
|
||
|
||
- `g10` initial/final aggregate guard;
|
||
- 或继续收敛 earlier direct-file guards(如 `do-while-break`、`oword-bug315`、
|
||
`exists`、`return-value` 等)。
|
||
|
||
建议先处理 `g10`,因为 fixed manifest 已存在,当前只需把 initial/final aggregate
|
||
path guard 拆到每个 `writeG10RegressionFiles(...)` 调用附近。继续避免 blocked
|
||
runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
三十三、2026-06-13 继续执行记录:g10 directory staging guard
|
||
|
||
本批处理 `g10` initial/final aggregate staged path guard,将其拆到每个
|
||
`writeG10RegressionFiles(...)` 调用附近。
|
||
|
||
完成内容:
|
||
|
||
- Node 侧新增 `assertG10RegressionStaging(...)`;
|
||
- Node 侧对每个 g10 fixture 目录的 vendored `.ngc/.tbl` 文件清单与 fixed manifest
|
||
精确对账;
|
||
- Node 侧检查 staged path 与 `/work/interp/g10/<name>/...` fixed manifest 一致;
|
||
- Node 侧移除 `g10` initial/final aggregate staged path guard;
|
||
- browser 侧新增同名 helper,检查 fixed manifest duplicate-free;
|
||
- browser 侧检查 staged path 去掉 `/work/browser-interp/g10/<name>/` 前缀后与 fixed
|
||
manifest 一致;
|
||
- browser 侧移除 `g10` initial/final aggregate staged path guard,仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 G10、G92 或 tool table 语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续收敛 earlier direct-file guard。优先候选:
|
||
|
||
- `do-while-break`
|
||
- `oword-bug315`
|
||
- `oword-bug315-p2`
|
||
- `exists`
|
||
- `return-value`
|
||
|
||
这些已有 Node/browser coverage 和 fixed `.ngc` manifest,适合逐步复用
|
||
`assertInterpRegressionFileStaging(...)` 或小型 per-directory helper 替换内联 staged
|
||
path 对账。继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC
|
||
语义实现。
|
||
|
||
三十四、2026-06-13 继续执行记录:early direct-file staging guard
|
||
|
||
本批继续收敛 earlier direct-file guard,处理 5 个已有 Node/browser coverage 的 fixture:
|
||
|
||
- `do-while-break/bug.ngc`
|
||
- `do-while-break/test.ngc`
|
||
- `oword-bug315/test.ngc`
|
||
- `oword-bug315-p2/test.ngc`
|
||
- `exists/test.ngc`
|
||
- `return-value/test.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 `do-while-break` 改为 `writeInterpRegressionFiles(...)` 加
|
||
`assertInterpRegressionStaging(...)`,对该目录 2 个 `.ngc` fixture 精确对账;
|
||
- Node 侧将 `oword-bug315`、`oword-bug315-p2`、`exists`、`return-value` 的内联
|
||
staged path 对账替换为 `assertInterpRegressionFileStaging(...)`;
|
||
- browser 侧同步将 `do-while-break` 改为 fixed manifest 加 directory staging guard;
|
||
- browser 侧同步将其余 4 个单文件 fixture 改为 single-file staging helper;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 O-word control-flow、exists 或 return
|
||
value 语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续收敛后续 earlier direct-file guard。优先候选:
|
||
|
||
- `subs-follow-main`
|
||
- `fractional-linenumbers`
|
||
- `crazy-paths`
|
||
- `namedparam-bug424`
|
||
- `flowsnake`
|
||
|
||
这些已有 Node/browser coverage 和 fixed `.ngc` manifest,可继续用
|
||
`assertInterpRegressionFileStaging(...)` 替换内联 staged path 对账。继续避免 blocked
|
||
runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
三十五、2026-06-13 继续执行记录:more earlier direct-file staging guard
|
||
|
||
本批继续收敛 earlier direct-file guard,处理 5 个已有 Node/browser coverage 的
|
||
single-file fixture:
|
||
|
||
- `subs-follow-main/test.ngc`
|
||
- `fractional-linenumbers/test.ngc`
|
||
- `crazy-paths/test.ngc`
|
||
- `namedparam-bug424/test.ngc`
|
||
- `flowsnake/flowsnake.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧保留各 fixture 的 upstream `.ngc` manifest coverage check;
|
||
- Node 侧将 5 处内联 staged path 对账替换为
|
||
`assertInterpRegressionFileStaging(...)`;
|
||
- browser 侧保留 fixed manifest duplicate-free guard;
|
||
- browser 侧将 5 处 `replace(...)` staged path 对账替换为 single-file helper;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 subs-follow-main、fractional line
|
||
number、cutter-comp/crazy-path、namedparam 或 flowsnake 执行语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理相邻的 single-file direct-file guard。优先候选:
|
||
|
||
- `inside-corners/test.ngc`
|
||
- `inverse-time-with-comp/test.ngc`
|
||
- `iniparam/test.ngc`
|
||
- `iniparam-failassign/test.ngc`
|
||
|
||
其中 `iniparam` 与 `iniparam-failassign` 可能有 INI/context staging 细节,下一批可先处理
|
||
`inside-corners` 和 `inverse-time-with-comp` 两个简单 direct-file case。继续避免 blocked
|
||
runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
三十六、2026-06-13 继续执行记录:ccomp edge direct-file staging guard
|
||
|
||
本批按上一条建议处理两个简单 direct-file case:
|
||
|
||
- `inside-corners/test.ngc`
|
||
- `inverse-time-with-comp/inverse.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧保留两个 fixture 的 upstream `.ngc` manifest coverage check;
|
||
- Node 侧将 2 处内联 staged path 对账替换为
|
||
`assertInterpRegressionFileStaging(...)`;
|
||
- browser 侧保留 fixed manifest duplicate-free guard;
|
||
- browser 侧将 2 处 `replace(...)` staged path 对账替换为 single-file helper;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 cutter-comp、inside-corner 或
|
||
inverse-time feed 语义。
|
||
|
||
已运行验证:
|
||
|
||
```bash
|
||
git diff --check
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
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_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理带 INI/context staging 的 direct-file guard。优先候选:
|
||
|
||
- `iniparam/test.ngc`
|
||
- `iniparam-failassign/test.ngc`
|
||
|
||
这两个已有 Node/browser coverage,但涉及 INI/context staging,建议单独小批量处理,
|
||
先核对当前 helper 和 staged path 结构,再替换内联 path 对账。继续避免 blocked
|
||
runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
三十七、2026-06-13 继续执行记录:INI-context ngc staging guard
|
||
|
||
本批继续处理带 INI/context staging 的 direct-file guard:
|
||
|
||
- `iniparam/test.ngc`
|
||
- `iniparam-failassign/test.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧新增 `assertInterpIniContextNgcStaging(...)`,直接检查
|
||
`plan.files[*].wasmPath` 去掉 `/work/interp/<name>/` 前缀后与 fixed `.ngc`
|
||
manifest 一致;
|
||
- Node 侧将 `iniparam` 与 `iniparam-failassign` 的内联 `sourceRel` staged path
|
||
对账替换为该 helper;
|
||
- browser 侧新增同名 INI-context `.ngc` staging helper,检查
|
||
`/work/browser-interp/<name>/` staged path 前缀;
|
||
- browser 侧同步替换两个 fixture 的内联 `sourceRel` staged path 对账;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 INI named parameter、read-only
|
||
assignment 或 interpreter 语义。
|
||
|
||
已运行验证:
|
||
|
||
```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_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
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续收敛相邻 INI/context staging guard。优先候选:
|
||
|
||
- `sub-call-from-sub/test.ngc`
|
||
- `sequence-number/test.ngc`
|
||
- `nested-sub-error/test.ngc`
|
||
- `nested-sub-in-file-error/test.ngc`
|
||
|
||
这些已有 Node/browser coverage,并且当前仍存在类似 `plan.files -> sourceRel` 的内联
|
||
staged path 对账,可继续复用 `assertInterpIniContextNgcStaging(...)` 小批量替换。
|
||
继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
三十八、2026-06-13 继续执行记录:more INI-context ngc staging guard
|
||
|
||
本批继续收敛相邻 INI/context staging guard:
|
||
|
||
- `sub-call-from-sub/test.ngc`
|
||
- `sequence-number/test.ngc`
|
||
- `nested-sub-error/test.ngc`
|
||
- `nested-sub-in-file-error/test.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 4 处内联 `plan.files -> sourceRel -> replace(...)` `.ngc` staging
|
||
对账替换为 `assertInterpIniContextNgcStaging(...)`;
|
||
- browser 侧同步将 4 处内联 `.ngc` staged path 对账替换为同名 helper;
|
||
- Node/browser 侧保留 fixed `.ngc` manifest coverage 和 duplicate-free guard;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 sub-call、sequence-number、
|
||
nested-sub error 或 interpreter 语义。
|
||
|
||
已运行验证:
|
||
|
||
```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_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
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理剩余 INI/context `.ngc` staging 内联对账。优先候选:
|
||
|
||
- `oword-unwind/test.ngc`
|
||
- `abort-hot-comment/test.ngc`
|
||
- `m19/test.ngc`
|
||
|
||
这三个当前仍存在类似 `plan.files -> sourceRel -> replace(...)` 的内联 staged path
|
||
对账,可继续复用 `assertInterpIniContextNgcStaging(...)` 小批量替换。继续避免
|
||
blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
三十九、2026-06-13 继续执行记录:final INI-context ngc staging guard
|
||
|
||
本批继续处理剩余 INI/context `.ngc` staging 内联对账:
|
||
|
||
- `oword-unwind/test.ngc`
|
||
- `abort-hot-comment/test.ngc`
|
||
- `m19/test.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 3 处内联 `plan.files -> sourceRel -> replace(...)` `.ngc` staging
|
||
对账替换为 `assertInterpIniContextNgcStaging(...)`;
|
||
- browser 侧同步将 3 处内联 `.ngc` staged path 对账替换为同名 helper;
|
||
- Node/browser 侧保留 fixed `.ngc` manifest coverage 和 duplicate-free guard;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 oword unwind、abort hot comment、
|
||
M19 spindle orientation 或 interpreter 语义。
|
||
|
||
已运行验证:
|
||
|
||
```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_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
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续收敛最后可见的 fixed `.ngc` staged path 对账。优先候选:
|
||
|
||
- `magic_comments/param_format_printing/test.ngc`
|
||
|
||
当前 Node 侧已有 fixed path manifest 对账,browser 侧仍有本地数组 staged path 对账;
|
||
可小批量抽成 single-file 或 fixed-list helper,继续检查 staged path 与 manifest 一致。
|
||
继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
四十、2026-06-13 继续执行记录:magic comments single-file staging guard
|
||
|
||
本批继续收敛最后可见的 fixed `.ngc` staged path 对账:
|
||
|
||
- `magic_comments/param_format_printing/test.ngc`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 `magic_comments` 的 inline staged path `deepEqual` 替换为
|
||
`assertInterpRegressionFileStaging(...)`;
|
||
- browser 侧移除本地 `magicCommentsStagedNgcFiles` 数组与 `replace(...)` 对账,
|
||
改为同一个 single-file staging helper;
|
||
- Node/browser 侧保留 fixed `.ngc` manifest coverage 和 browser duplicate-free guard;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 magic comment、parameter formatting 或
|
||
interpreter 语义。
|
||
|
||
已运行验证:
|
||
|
||
```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_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
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
先做 remaining staging guard inventory,确认是否还存在非 helper 的 inline staged path
|
||
对账。当前可见的 `replace(...)` staged path 检查主要集中在通用 helper 内部;
|
||
如果继续做小步代码收敛,优先候选是固定 manifest 且已有 Node/browser coverage 的
|
||
目录级 helper case,例如:
|
||
|
||
- `m98m99/06-error-mixed-sub-styles`
|
||
- `m98m99/09-disable-fanuc-subs`
|
||
- `m98m99/11-main-program-oword`
|
||
|
||
下一批可以决定是否继续把这些目录级 aggregate guard 拆成更细的 per-file staging
|
||
helper,或仅提交一次 inventory 说明。继续避免 blocked runtime promotion、browser
|
||
full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
四十一、2026-06-13 继续执行记录:m98m99 per-file staging helper guard
|
||
|
||
本批继续按第 40 批建议处理固定 manifest 且已有 Node/browser coverage 的目录级
|
||
aggregate guard:
|
||
|
||
- `m98m99/06-error-mixed-sub-styles`
|
||
- `m98m99/09-disable-fanuc-subs`
|
||
- `m98m99/11-main-program-oword`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧新增 `assertInterpRegressionFilesCoverage(...)`,把 vendored
|
||
`.ini/.ngc/.tbl` manifest coverage 与 staged path 对账分离;
|
||
- Node 侧新增 `assertInterpRegressionFilesStaging(...)`,逐个文件复用
|
||
`assertInterpRegressionFileStaging(...)` 检查 staged path;
|
||
- Node 侧将上述 3 个 `m98m99` 目录从 aggregate staged path 对账切换为
|
||
coverage helper 加 per-file staging helper;
|
||
- browser 侧新增同名 per-file staging helper,保留 fixed manifest duplicate-free
|
||
guard;
|
||
- browser 侧同步将上述 3 个目录从 `assertInterpRegressionStaging(...)` 切换到
|
||
per-file helper;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 Fanuc/Rs274NGC subroutine、
|
||
INI context、main-program oword 或 interpreter 语义。
|
||
|
||
已运行验证:
|
||
|
||
```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_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
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续收敛剩余 directory aggregate staging guard。当前可见候选:
|
||
|
||
- `do-while-break`
|
||
- `cam-nisley`
|
||
- `g76`
|
||
- `m98m99/13-named-program`
|
||
|
||
建议下一批优先处理 `m98m99/13-named-program`,它只有 2 个 `.ngc` 文件,已经有
|
||
fixed manifest 和 Node/browser coverage,适合直接切换到 per-file helper。其后再按
|
||
小批量处理 `do-while-break`、`cam-nisley`、`g76`。继续避免 blocked runtime promotion、
|
||
browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
四十二、2026-06-13 继续执行记录:final interp directory per-file staging guard
|
||
|
||
本批继续收敛剩余 ordinary interp directory aggregate staging guard:
|
||
|
||
- `m98m99/13-named-program`
|
||
- `do-while-break`
|
||
- `cam-nisley`
|
||
- `g76`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 `m98m99/13-named-program` 从 `assertInterpRegressionStaging(...)`
|
||
切换为 `assertInterpRegressionFilesCoverage(...)` 加
|
||
`assertInterpRegressionFilesStaging(...)`;
|
||
- Node 侧同步将 `do-while-break`、`cam-nisley`、`g76` 切换到 coverage helper 加
|
||
per-file staging helper;
|
||
- browser 侧将上述 4 组切换为 `assertInterpRegressionFilesStaging(...)`;
|
||
- 删除 Node/browser 侧已无调用的 ordinary `assertInterpRegressionStaging(...)`
|
||
aggregate helper;
|
||
- `cam-nisley` 和 `g76` 运行时生成的 `test.ini` 仍保持测试内生成,不纳入 vendored
|
||
staged manifest;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 do-while、CAM、G76 threading、
|
||
named-program 或 interpreter 语义。
|
||
|
||
已运行验证:
|
||
|
||
```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_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
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
ordinary interp directory aggregate guard 已清空。下一批建议继续按专用域收敛 staged
|
||
path helper,优先候选:
|
||
|
||
- ccomp 专用 helper:`lathe-comp`、`mill-g90g91g92`、`mill-line-arc-entry`、
|
||
`mill-zchanges`
|
||
- g10 专用 helper:`g10-l1-l10`、`g10-l11`、`g10-l2-while-active`、
|
||
`g10-l20-while-active`、`g10-with-g92`
|
||
- remap 专用 helper保留 expected-unstaged 语义,需单独小心处理
|
||
|
||
建议下一批先处理 ccomp 4 组,因为 file manifest 固定为 `test.ngc`、`test.tbl`,
|
||
且 Node/browser coverage 已成型。继续避免 blocked runtime promotion、browser full
|
||
inventory 扩面和 JS CNC 语义实现。
|
||
|
||
四十三、2026-06-13 继续执行记录:ccomp per-file staging helper guard
|
||
|
||
本批按第 42 批建议处理 ccomp 专用 staged path helper:
|
||
|
||
- `lathe-comp`
|
||
- `mill-g90g91g92`
|
||
- `mill-line-arc-entry`
|
||
- `mill-zchanges`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 `assertCcompRegressionStaging(...)` 拆分为
|
||
`assertCcompRegressionCoverage(...)` 和 `assertCcompRegressionFilesStaging(...)`;
|
||
- Node 侧保留 vendored `test.ngc`、`test.tbl` manifest coverage;
|
||
- Node 侧将 4 个 ccomp fixture 切换为 coverage helper 加 per-file staging helper;
|
||
- browser 侧将 ccomp helper 改为逐个文件检查
|
||
`/work/browser-ccomp/<name>/<file>` staged path;
|
||
- browser 侧同步替换 4 个 ccomp fixture 调用;
|
||
- `test.ini` 仍由 `writeCcompRegressionFiles(...)` 运行时生成,不纳入 vendored
|
||
staged manifest;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 cutter compensation、tool table、
|
||
generated INI 或 interpreter 语义。
|
||
|
||
已运行验证:
|
||
|
||
```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_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
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理 g10 专用 helper。当前候选:
|
||
|
||
- `g10-l1-l10`
|
||
- `g10-l11`
|
||
- `g10-l2-while-active`
|
||
- `g10-l20-while-active`
|
||
- `g10-with-g92`
|
||
|
||
这些已有 fixed file list 和 Node/browser coverage,可按 ccomp 模式将
|
||
`assertG10RegressionStaging(...)` 拆成 coverage helper 与 per-file staging helper。
|
||
注意 `test.tbl` 存在时 `test.ini` 仍由 `writeG10RegressionFiles(...)` 运行时生成,
|
||
不要纳入 vendored staged manifest。继续避免 blocked runtime promotion、browser full
|
||
inventory 扩面和 JS CNC 语义实现。
|
||
|
||
四十四、2026-06-13 继续执行记录:g10 per-file staging helper guard
|
||
|
||
本批按第 43 批建议处理 g10 专用 staged path helper:
|
||
|
||
- `g10-l1-l10`
|
||
- `g10-l11`
|
||
- `g10-l2-while-active`
|
||
- `g10-l20-while-active`
|
||
- `g10-with-g92`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 `assertG10RegressionStaging(...)` 拆分为
|
||
`assertG10RegressionCoverage(...)` 和 `assertG10RegressionFilesStaging(...)`;
|
||
- Node 侧保留 vendored `.ngc/.tbl` manifest coverage;
|
||
- Node 侧将 5 个 g10 fixture 切换为 coverage helper 加 per-file staging helper;
|
||
- browser 侧将 g10 helper 改为逐个文件检查
|
||
`/work/browser-interp/g10/<name>/<file>` staged path;
|
||
- browser 侧同步替换 5 个 g10 fixture 调用;
|
||
- `test.tbl` 存在时,`test.ini` 仍由 `writeG10RegressionFiles(...)` 运行时生成,
|
||
不纳入 vendored staged manifest;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 G10 coordinate/tool offset、G92、
|
||
generated INI 或 interpreter 语义。
|
||
|
||
已运行验证:
|
||
|
||
```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_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
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理剩余 remap 专用 helper,但必须保留 expected-unstaged 语义。优先小批量候选:
|
||
|
||
- `duplicate-o-word`
|
||
- `fail/args.0`
|
||
- `fail/args.1`
|
||
|
||
这些 remap fixture file list 较短、没有 expected-unstaged 额外清单,适合先将
|
||
`assertRemapRegressionStaging(...)` 拆成 coverage helper 与 per-file staging helper。
|
||
`nested-remaps-oword` 含 expected-unstaged 文件,应留到后续单独处理。继续避免
|
||
blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
四十五、2026-06-13 继续执行记录:initial remap per-file staging helper guard
|
||
|
||
本批开始处理 remap 专用 staged path helper,并只选择没有 expected-unstaged 额外清单的
|
||
短小 fixture:
|
||
|
||
- `duplicate-o-word`
|
||
- `fail/args.0`
|
||
- `fail/args.1`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧新增 `assertRemapRegressionCoverage(...)`,保留 vendored `.ini/.ngc`
|
||
manifest coverage 与 expected-unstaged overlap 检查;
|
||
- Node 侧新增 `assertRemapRegressionFilesStaging(...)`,逐个文件检查
|
||
`/work/remap/<name>/<file>` staged path;
|
||
- Node 侧保留原 `assertRemapRegressionStaging(...)` 给尚未拆分的 remap fixture 使用;
|
||
- Node 侧将上述 3 个 remap fixture 切换为 coverage helper 加 per-file staging helper;
|
||
- browser 侧新增同名 per-file staging helper,逐个文件检查
|
||
`/work/browser-remap/<name>/<file>` staged path;
|
||
- browser 侧同步替换上述 3 个 remap fixture;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 remap、O-word、argument validation、
|
||
expected-error 或 interpreter 语义。
|
||
|
||
已运行验证:
|
||
|
||
```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_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
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理没有 expected-unstaged 额外清单的 remap fixture。优先候选:
|
||
|
||
- `fail/args.2`
|
||
- `fail/body-ngc`
|
||
- `m30-interaction`
|
||
|
||
这三组 file list 均为 `test.ini`、`test.ngc`、`rm400.ngc`,适合继续切换到
|
||
`assertRemapRegressionCoverage(...)` 加 `assertRemapRegressionFilesStaging(...)`。
|
||
仍暂缓 `nested-remaps-oword`,因为它含 expected-unstaged 文件,需要单独保留
|
||
staged/unstaged overlap guard。继续避免 blocked runtime promotion、browser full
|
||
inventory 扩面和 JS CNC 语义实现。
|
||
|
||
四十六、2026-06-13 继续执行记录:more remap per-file staging helper guard
|
||
|
||
本批继续处理没有 expected-unstaged 额外清单的 remap fixture:
|
||
|
||
- `fail/args.2`
|
||
- `fail/body-ngc`
|
||
- `m30-interaction`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将上述 3 个 fixture 从 `assertRemapRegressionStaging(...)` 切换为
|
||
`assertRemapRegressionCoverage(...)` 加
|
||
`assertRemapRegressionFilesStaging(...)`;
|
||
- browser 侧同步将上述 3 个 fixture 切换为
|
||
`assertRemapRegressionFilesStaging(...)`;
|
||
- 这三组 fixed file list 均为 `test.ini`、`test.ngc`、`rm400.ngc`;
|
||
- Node 侧继续用 coverage helper 对 vendored `.ini/.ngc` manifest 做精确对账;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 remap argument error、body-ngc
|
||
failure、M30 interaction 或 interpreter 语义。
|
||
|
||
已运行验证:
|
||
|
||
```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_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
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
继续处理剩余 remap fixture。优先候选:
|
||
|
||
- `posargs.0`
|
||
- `sequencing`
|
||
|
||
这两组没有 expected-unstaged 额外清单,可继续切换到 coverage helper 加 per-file
|
||
staging helper。暂缓:
|
||
|
||
- `remap-io`,因为它还有运行时生成的 `simpockets.tbl` 单独 staged path guard;
|
||
- `nested-remaps-oword`,因为它含 expected-unstaged `testsub.ngc`,需要单独保留
|
||
staged/unstaged overlap guard。
|
||
|
||
继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|
||
|
||
四十七、2026-06-13 继续执行记录:final simple remap per-file staging helper guard
|
||
|
||
本批继续处理剩余没有 expected-unstaged 额外清单的 remap fixture:
|
||
|
||
- `posargs.0`
|
||
- `sequencing`
|
||
|
||
完成内容:
|
||
|
||
- Node 侧将 `posargs.0` 从 `assertRemapRegressionStaging(...)` 切换为
|
||
`assertRemapRegressionCoverage(...)` 加
|
||
`assertRemapRegressionFilesStaging(...)`;
|
||
- Node 侧将 `sequencing` 同步切换为 coverage helper 加 per-file staging helper;
|
||
- browser 侧同步将上述 2 个 fixture 切换为
|
||
`assertRemapRegressionFilesStaging(...)`;
|
||
- `sequencing/permute.py` 不是 `.ini/.ngc` staged manifest,继续不纳入 staged path
|
||
对账;
|
||
- browser 侧仍不枚举目录;
|
||
- 仅整理 host/filesystem staging guard,不改变 remap positional args、sequencing、
|
||
generated permutations 或 interpreter 语义。
|
||
|
||
已运行验证:
|
||
|
||
```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_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
|
||
```
|
||
|
||
结果:全部通过。
|
||
|
||
下一步建议:
|
||
|
||
remap aggregate helper 仅剩两个特殊 case:
|
||
|
||
- `nested-remaps-oword`:含 expected-unstaged `testsub.ngc`,下一批建议优先处理,
|
||
但必须保留 coverage helper 的 staged + expected-unstaged manifest 精确对账和
|
||
overlap guard;
|
||
- `remap-io`:除 vendored file list 外,还有运行时生成的 `simpockets.tbl` 单独
|
||
staged path guard,建议留到最后单独处理。
|
||
|
||
继续避免 blocked runtime promotion、browser full inventory 扩面和 JS CNC 语义实现。
|