diff --git a/text6.txt b/text6.txt new file mode 100644 index 0000000..daeedb4 --- /dev/null +++ b/text6.txt @@ -0,0 +1,248 @@ +项目整体完成情况与后续执行计划 + +生成时间: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` 无重复标题,再执行第五部分第一候选批次。