Files
linuxcncWebWASM/nextTask-hardcoding.md

73 lines
9.0 KiB
Markdown
Raw Permalink 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.
# 配置驱动与恢复改造接续入口
最新教学交付(R09/E13):[工件坐标与RTCP初学者完整PDF](docs/teaching/rtcp-beginners/五轴RTCP与工件坐标-初学者完整讲义.pdf),72页A4,详解原点/方向/G54/G代码逐字逐行和关节运动;源稿、数据及复现命令见[教材索引](docs/teaching/rtcp-beginners/README.md)。原31页投影片保留。最近两轮仅新增教学资料和生成脚本,未改应用功能。
2026-09-20 保存接续:AC/BC 单文件 GLB、桁架模型、Jog 限位修复、RTCP 程序库、教学资料和部件级三维机床管理器已在功能提交 `8aab531` 中保存。三维管理器入口为 [`docs/glb-machine-manager/README.md`](docs/glb-machine-manager/README.md),旧整机入口为 [`docs/glb-machine/README.md`](docs/glb-machine/README.md)。两项已复核的旧测试失败见 E11;旧 event_sequence_gap 浏览器会话需刷新重建。远端状态以 `git ls-remote origin refs/heads/main` 为准。下文为原配置/恢复专项历史接续状态,本地 trace、LinuxCNC 子模块和临时文件继续保留。
更新时间:2026-09-18。用户已确认清理自有代码的机床参数、轴配置、路径、可调界面设置硬编码,保留数学/协议常量和上游 LinuxCNC;之后要求接续 CFG-R01、TRT-R01。以上专项均已收口。
## 当前状态
- 任务矩阵:`docs/trt-parametric/04-任务矩阵.md`;CFG-01/02/03、CFG-R01、TRT-R01 均为已验收。
- 最新台账 R09(重启接续准备)、证据 E08/E09/E10、决策 D13/D14/D15;R06 配置改造的历史证据仍保留。
- **R06 配置改造与 R07 精确恢复的完整依赖已提交并推送**:`4a568f1f4c7df43ce9f71e7646d1306957dc9367`,分支 `main`。已用 `git ls-remote origin refs/heads/main` 核验远端一致;随后提交只更新接续文档,最新 HEAD 以 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。
## 工作区与保存
- 工作目录:`/home/mes006/linuxcncWebWASM`;继续使用现有目录,原有未提交文件也在这里。
- 开发地址 `http://127.0.0.1:5174/`;不存在时运行 `npm --prefix web/react run dev -- --port 5174 --strictPort`。
- 本轮重启准备时该地址返回 HTTP 200;重启后重新检查,不假设服务进程仍然存活。浏览器 OPFS 与浏览器配置目录及 origin 绑定,要体验先前保存的状态,应使用相同浏览器配置及地址。
- 最新代码必须与重建的 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`。保存已获授权;账号口令不写入仓库或接续文件。
## 重启后的第一轮
1. 先读本文件,再读 `docs/trt-parametric/README.md`、`04-任务矩阵.md` 和 `03-推进台账.md` 最新记录;涉及方案变更时读 `06-决策记录.md`。
2. 执行 `git status --short --branch`、`git log -3 --oneline`、`git -C linuxcnc status --short`,核对现有改动。不要执行 `git reset --hard`、`git clean` 或覆盖子模块;不要用 `git add .` 混入原有文件。
3. 现有专项全部已验收,没有正在运行的开发任务或需要接着等的测试。用户只说“继续”而未给新目标时,先报告当前状态,再明确新目标;不要重新实现已验收任务。
4. 若要本地体验,先检查 5174 服务,再按需启动。仅重启 Codex 不需要重建;换环境或修改 C/WASM 源码后运行 `bash scripts/build-wasm.sh`。变更后只运行相关检查,原验收见 E07–E10。
5. 完成新任务后同步更新台账、任务矩阵、验收证据及本接续文件;功能修复与原有本地改动分别处理。
重启后可直接发送:
> 请在 /home/mes006/linuxcncWebWASM 接续工作。先读取 nextTask-hardcoding.md,再按 docs/trt-parametric/README.md 和任务矩阵核对状态。配置改造、三轴门控、五轴精确恢复已验收并推送;保留原有子模块、trace 和临时文件改动,不重复已完成任务。先报告接续状态,再按我提供的新目标执行。
## 本地保留项清单
主仓库:`coverage/xyzac-native-tick-trace.report.json`、`coverage/xyzac-wasm-tick-trace.report.json`、`docs/linuxcnc-axis-web-control-panel-source-logic (Copy).png`、`scripts/.tmp_test_nc_files_xyzac.mjs`,以及 dirty 的 `linuxcnc` 子模块。两份 trace 很大,检查时避免输出完整 diff。
子模块内原有修改包括三轴/XYZAC/XYZBC INI、`lib/hallib/sim_lib.tcl`、`control.c`、`emc.cc`、`emc_nml.hh`、`emctaskmain.cc`、`taskintf.cc`、`emcmodule.cc`;另有 corexy/tool.tbl、axis/tool.tbl、rotate/、3axis-tutorial.old/、scorbot/ 未跟踪文件或目录。以 `git -C linuxcnc status --short` 为准;它们未随专项推送,不要删除或自动提交。重启使用现有工作区能保留这些文件,远端仓库不能替代它们的本地副本。