Files
cnc_wams/text6.txt

1972 lines
75 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
项目整体完成情况与后续执行计划
生成时间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 fixtureNode/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 语义实现。