Files
cnc_wams/text10.txt

339 lines
12 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-14 CST
本文件接替 `text9.txt`。后续工作按 `text10.txt` 执行;除非明确要求审计旧记录,
不要再回到 `text1/text2/text3/text4/text5/text6/text7/text8/text9` 扩展进度。
`text9.txt` 作为历史归档保留。
一、续接状态与防重规则
1. 当前续接点。
`text9.txt` 已推进到:
```text
五十一、2026-06-14 继续执行记录browser ini-named readback path groups guard
```
该批已提交并推送:
```text
0b7771b 继续推进浏览器 ini-named readback path 组 guard
```
本文件从 `text10.txt` 重新开始记录后续进度。
2. 每轮开始前必须先执行。
```bash
git status --short
git log -5 --oneline
tail -n 120 text10.txt
awk '/^[一二三四五六七八九十百]+、/ {print}' text10.txt | sort | uniq -d
```
执行规则:
- 如果 `git status --short` 是 clean且最新提交已经包含当前建议工作不要重复追加记录
- 每轮只追加一个新的中文编号记录;提交前再次检查标题唯一性;
- `text10.txt` 只记录新的后续进度,不复制 `text9.txt` 的长历史;
- 每批完成后,如果要写记录,先写 `text10.txt`,再提交该批代码和记录;
- 如果发现重复记录,先做 dedupe 清理并提交,再继续新功能或新 guard
- `text9.txt` 不再追加新进度,除非明确要求审计或修正历史记录。
二、当前项目纪律
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. 当前工作树状态。
切换到 `text10.txt` 前已确认:
```text
git status --short: clean
text9.txt duplicate Chinese headings: none
```
当前最近提交:
```text
0b7771b 继续推进浏览器 ini-named readback path 组 guard
c0bce74 继续推进浏览器 custom saved staging 断言组 guard
32aeba7 继续推进浏览器 saved staging 断言组 guard
7d9cf88 继续推进浏览器 random session path 断言组 guard
cba210b 继续推进浏览器 session path 断言组 guard
```
2. WASM port 基础架构稳定。
`wasm-port` 仍按独立移植工作区组织,包含 vendor、runtime/core、runtime/sdk、
runtime/opfs、runtime/ui、native/wasm/browser tests、docs 和 tools。
3. 关键基线保持稳定。
- `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`
4. 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
```
5. `text9.txt` 最新收敛方向。
`text9.txt` 后半段继续沿 browser/OPFS boundary guard 小批量推进,最近完成的重点包括:
- browser-random/direct-random saved tool-table expected line groups
- browser-random/direct-random tool-table load/save result line groups
- browser-interp/direct tool-table load/save result line groups
- browser-interp/direct parameter restore/save/readback/backup groups
- ini-named/explicit session parameter/tool-table result/backing text groups
- invalid INI session reject input/error groups
- browser-interp、browser-random、ini-named、explicit session path assertion groups
- browser-interp/browser-random saved file staging groups
- ini-named/explicit custom session saved file staging groups
- ini-named parameter/tool-table readback path groups。
这些改动均只收敛 browser/OPFS test glue 与 boundary guard未改变 OPFS bridge
behavior、file-service、path-model、SDK planner、interpreter、INI、tool、parameter
或 LinuxCNC-owned runtime semantics。
四、当前必须保持通过的验证入口
每批后续改动至少运行:
```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. 当前第一候选批次。
继续小批量 browser test glue guard。优先扫描 explicit session saved readback path groups
看是否能像 ini-named session 一样局部常量化:
- `loadedIniOverrideSession.parameters.opfsPath`
- `savedExplicitParameters.backupOpfsPath`
- `loadedIniOverrideSession.toolTable.opfsPath`。
执行目标:
- 只处理 `wasm-port/tests/browser/interp_smoke.html` 内的 browser/OPFS test glue
- 优先让 explicit session saved parameter/tool-table readback path groups 使用局部常量;
- 保持 expected readback text、OPFS path、WASM path、machine id、filename 与 save/load
行为不变;
- 不改变参数值、tool-table 值、INI 内容、OPFS path、WASM path 字符串;
- 不改变 OPFS bridge behavior、file-service、path-model、SDK planner、interpreter、
INI、tool、parameter 或 LinuxCNC-owned runtime semantics。
2. 第一候选批次验证。
执行:
```bash
git diff --check
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_interp_wasm.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
继续推进浏览器 explicit readback path 组 guard
```
3. 后续候选。
如果 explicit readback path group 收益不明显,转向 machine text store path assertion
groups重点检查 `saveMachineTextFiles(...)` 相关输入是否已有可复用局部常量或 helper。
继续只选:
- browser/OPFS test glue
- path/readback/staging/result/expected line 的局部常量化;
- 已有 helper 的复用;
- 不改变行为的小批量 guard。
避免:
- 新增抽象过度包装;
- 把 save API 输入对象提成无用常量;
- 触碰 runtime、SDK、OPFS bridge 或 LinuxCNC-owned semantics。
二、2026-06-14 继续执行记录browser OPFS session snapshot manifest helper
本轮按“暂停性能测试,进行实质性功能推进”的要求,补充了一个新的 OPFS/runtime
能力:生成可恢复的机器会话快照清单,范围仍局限在 `runtime/opfs` 与对应 smoke。
完成内容:
- 在 `wasm-port/runtime/opfs/snapshot-store.js` 新增
`createMachineSessionSnapshotPayload(machineId, options)`
- 该 helper 基于现有 `path-model` 生成机器级 session snapshot payload默认包含
`ini`、`parameters`、`toolTable`,可选包含 `gcode`
- 支持自定义 `iniOpfsPath`、`parameterOpfsPath`、`toolTableOpfsPath`、`gcodeOpfsPath`
- 支持自定义 `iniFilename`、`parameterFilename`、`toolTableFilename`、`gcodeFilename`
- 在 Node OPFS smoke 与 browser INI panel smoke 中补了覆盖,验证默认路径、自定义
文件名和 G-code 路径均能按预期生成;
- 未改变 session snapshot 的格式、版本、存储位置或既有 save/load 行为;
- 未改变 OPFS bridge behavior、file-service、SDK planner、interpreter、INI、tool、
parameter 或 LinuxCNC-owned runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/opfs/node/verify_file_service.sh
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_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_interp_wasm.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
opfs_file_service_node_smoke=ok
browser_ini_opfs_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_executed=28
sim_configs_wasm_node_inventory_passed=28
sim_configs_wasm_node_inventory_skipped=131
sim_configs_wasm_node_inventory_unexpected_fail=0
browser_interp_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
下一步建议:
继续把这个 helper 扩到更明确的实际入口,优先扫描 browser/Node 里已有的 session
snapshot 调用是否能复用它,或者把 machine session 生成入口整理到更显式的 API
只做 OPFS/filesystem/browser boundary 相关功能推进,不碰 CNC 语义。
一、2026-06-14 继续执行记录browser explicit readback path groups guard
本轮按 `text10.txt` 第一候选批次继续收敛 explicit session saved readback path groups
范围仍只触及 `wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
完成内容:
- 新增 `explicitSavedParameterTextPath` 局部常量,承载 explicit parameter saved text
readback path
- 新增 `explicitSavedParameterBackupPath` 局部常量,承载 explicit parameter backup
text readback path
- 新增 `explicitSavedToolTableTextPath` 局部常量,承载 explicit tool-table saved text
readback path
- explicit parameter/tool-table saved readback 断言改为复用上述 path groups
- 保持 explicit saved file expected OPFS path、WASM path、machine id、filename 与
readback text 不变;
- 未改变任何 expected 字符串、输入、OPFS path、WASM path 字符串或 load/save/read
行为;
- 未改变 staging path 模型、OPFS bridge behavior、file-service、SDK planner、
interpreter、INI、tool、parameter 或 LinuxCNC-owned runtime semantics。
验证已通过:
```bash
git diff --check
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_interp_wasm.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
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_executed=28
sim_configs_wasm_node_inventory_passed=28
sim_configs_wasm_node_inventory_skipped=131
sim_configs_wasm_node_inventory_unexpected_fail=0
browser_interp_smoke=ok
host_wasm_opfs_browser_smokes=ok
```
下一步建议:
继续小批量 browser test glue guard。优先扫描 machine text store path assertion groups
或剩余 OPFS readback path groups 是否还能进一步局部常量化或复用 existing helpers
只改测试胶水不改变输入、OPFS path、WASM path 字符串或保存/读取行为。