Files
linuxcncWebWASM/nextTask-hardcoding.md

49 lines
5.4 KiB
Markdown
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-09-18。用户已确认清理自有代码的机床参数、轴配置、路径、可调界面设置硬编码,保留数学/协议常量和上游 LinuxCNC;之后要求接续 CFG-R01、TRT-R01。以上专项均已收口。
## 当前状态
- 任务矩阵:`docs/trt-parametric/04-任务矩阵.md`;CFG-01/02/03、CFG-R01、TRT-R01 均为已验收。
- 最新台账 R08(仓库保存)、证据 E08/E09/E10、决策 D13/D14/D15;R06 配置改造的历史证据仍保留。
- 用户已于 2026-09-18 授权将 **R06 配置改造与 R07 精确恢复的完整依赖** 保存到指定仓库 main;本轮为该保存提交,实际提交 ID 以 Git 记录为准。
- 验收汇总:`coverage/recovery/acceptance.report.json`;包含真实 WASM SHA、native 构建指纹和证据文件 SHA。
- 本专项暂无未完成任务。后续按新需求推进;不要重跑已通过整轮测试,也不要自动认领其他历史发布轨道的阻塞任务。
## 实现与验证落点
1. 配置:`web/workspace/machine-catalog.json`、`simulation-resources.json`、`web-settings.json` 和 `trt-configuration.mjs`;完整说明见 `07-配置驱动改造.md`。INI 输入包含运行参数及回零信息的完整 hash;Worker 从文件重新解析。
2. 三轴:`web/app/axis-contract.mjs` 和 `test_axis3_selected_case.mjs`。工具准备/换刀在开机、空闲、操作者模式、队列为空时交由 IO 状态机处理;运行、急停、故障等拒绝,未删除旧断言。
3. 恢复:自有 C 适配层新增 TP/TC、解释器/程序、HAL、核心及协议/事件快照 API;`web/worker/native-checkpoint.mjs` 做带构建指纹、长度/hash 校验的稀疏块编解码;数学计算仍来自 WASM。
4. 程序恢复:保存参数、调用栈及冻结子程序源,验证候选程序后替换;TP 原生队列/进度/混合状态直接恢复。`sim-session.mjs` 保存待处理运动/切换等交接信息;HAL 不再重复 step。
5. 幂等/内存:checkpoint 回执剔除递归旧快照,保留操作身份;恢复后重复 M428 不重新执行,返回当前机床投影。
6. 浏览器:OPFS 按机型隔离,只有冷启动自动采用兼容缓存;配置重载不覆盖当前输入。省去可重建预览,重建后验证 hash;App 保留恢复出来的程序而非重新加载船体示例。
7. 新发现并修复:identity Jog 的增量响应使用当前 WASM 规划器关节,避免最后采样落后。
## 已完成验证
- `bash scripts/build-wasm.sh`:WASM 测试通过,native 23/23;native TP 保存后继续 100 个伺服步逐步对比,HAL tick/函数计数和字节恢复验证。日志 `coverage/recovery/build.log`。
- `node web/worker/test_trt_checkpoint_exact.mjs`:两机型五阶段共120个连续任务tick全状态hash一致,另12个 Jog 样本;覆盖不同堆地址、暂停/子程序/圆弧/结束、空程序、trace、新传输会话、冻结子程序、损坏块和不同构建拒绝。
- `node web/worker/test_xyzac_recovery.mjs`:同一恢复点完整hash相同,实际重发 M428 不重复切换。
- `node web/worker/test_axis3_selected_case.mjs`、`node web/app/test_axis_contract.mjs`、`node web/worker/test_wasm_motion_checkpoint.mjs`:通过。
- `node web/worker/test_xyzac_runtime_followups.mjs`、`node web/worker/test_opfs_ui_state.mjs`、`node web/worker/test_opfs_worker_bridge.mjs`、`node web/worker/test_trt_configuration.mjs`:通过。
- `scripts/test_checkpoint_reload_browser.mjs`:真实 OPFS 关机保存/页面重载恢复,两机型位置严格相同,原程序/预览保留,之后 Jog 正常。XYZBC 使用 `RECOVERY_MACHINE=xyzbc-trt`。
- `scripts/test_trt_rtcp_jog_browser.mjs`:两机型 A/B/C Jog 回归通过;产物已归档 `coverage/recovery/`。
- `npm --prefix web/react run build`:通过,已有大 chunk 提示保留。
- Playwright 环境:`PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs`;Chrome `/usr/bin/google-chrome`。
## 已确定的恢复边界
- 原生记录只允许匹配构建和配置。旧缺失原生状态的记录不能近似恢复;自动缓存不兼容时提示并按当前配置启动,原缓存不删除。
- TRT checkpoint 后的事件不能静默忽略:须恢复后显式执行后续命令。公开 RECOVER 向更早逻辑tick回退需要新传输会话,避免改写历史;原生状态可在新会话重设传输序号后继续执行。
- OPFS 原有1MiB限制仍在,超限须报告quota;不宣称物理断电崩溃和全浏览器矩阵完成。
- 本次是专项验收,不等于全 LinuxCNC parity,不更改历史 release gate/context lock。
## 工作区与保存
- 开发地址 `http://127.0.0.1:5174/`;不存在时运行 `npm --prefix web/react run dev -- --port 5174 --strictPort`。
- 最新代码必须与重建的 WASM 配套;构建产物在 Git ignore 中,保存源码后其他环境需运行 build-wasm.sh。
- `coverage/configuration/`、`coverage/recovery/` 是本轮证据;`coverage/trt-parametric/` 保持先前已提交历史版本,不破坏历史哈希。
- 两份大型 tick trace、linuxcnc 子模块原有本地改动、`scripts/.tmp_test_nc_files_xyzac.mjs`、用户 Copy.png 不属于本轮,保留原样,不混入提交。
- 指定远程为 `https://gitea.meswork.com/wangdequan/linuxcncWebWASM.git`。本轮保存已获授权,推送后核验远端 main 与本地 HEAD 一致;账号口令不写入仓库。