9.0 KiB
配置驱动与恢复改造接续入口
最新教学交付(R09/E13):工件坐标与RTCP初学者完整PDF,72页A4,详解原点/方向/G54/G代码逐字逐行和关节运动;源稿、数据及复现命令见教材索引。原31页投影片保留。最近两轮仅新增教学资料和生成脚本,未改应用功能。
2026-09-18 新需求接续:AC/BC 单文件 GLB + URDF 机床导入已在独立子项目实现并专项验收。新入口为 docs/glb-machine/README.md,最新台账 R07(Jog 限位后的事件序列和反向恢复、阴影警告;R06 桁架示例,R05 参数编辑保留GLB,R04 切换不跳动);两项已复核的旧测试失败见 E11,本轮改动尚未提交/推送。旧 event_sequence_gap 浏览器会话需刷新重建。下文为原配置/恢复专项历史接续状态,原有本地改动继续保留。
更新时间: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。 - 本专项暂无未完成任务。后续按新需求推进;不要重跑已通过整轮测试,也不要自动认领其他历史发布轨道的阻塞任务。
实现与验证落点
- 配置:
web/workspace/machine-catalog.json、simulation-resources.json、web-settings.json和trt-configuration.mjs;完整说明见07-配置驱动改造.md。INI 输入包含运行参数及回零信息的完整 hash;Worker 从文件重新解析。 - 三轴:
web/app/axis-contract.mjs和test_axis3_selected_case.mjs。工具准备/换刀在开机、空闲、操作者模式、队列为空时交由 IO 状态机处理;运行、急停、故障等拒绝,未删除旧断言。 - 恢复:自有 C 适配层新增 TP/TC、解释器/程序、HAL、核心及协议/事件快照 API;
web/worker/native-checkpoint.mjs做带构建指纹、长度/hash 校验的稀疏块编解码;数学计算仍来自 WASM。 - 程序恢复:保存参数、调用栈及冻结子程序源,验证候选程序后替换;TP 原生队列/进度/混合状态直接恢复。
sim-session.mjs保存待处理运动/切换等交接信息;HAL 不再重复 step。 - 幂等/内存:checkpoint 回执剔除递归旧快照,保留操作身份;恢复后重复 M428 不重新执行,返回当前机床投影。
- 浏览器:OPFS 按机型隔离,只有冷启动自动采用兼容缓存;配置重载不覆盖当前输入。省去可重建预览,重建后验证 hash;App 保留恢复出来的程序而非重新加载船体示例。
- 新发现并修复: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。保存已获授权;账号口令不写入仓库或接续文件。
重启后的第一轮
- 先读本文件,再读
docs/trt-parametric/README.md、04-任务矩阵.md和03-推进台账.md最新记录;涉及方案变更时读06-决策记录.md。 - 执行
git status --short --branch、git log -3 --oneline、git -C linuxcnc status --short,核对现有改动。不要执行git reset --hard、git clean或覆盖子模块;不要用git add .混入原有文件。 - 现有专项全部已验收,没有正在运行的开发任务或需要接着等的测试。用户只说“继续”而未给新目标时,先报告当前状态,再明确新目标;不要重新实现已验收任务。
- 若要本地体验,先检查 5174 服务,再按需启动。仅重启 Codex 不需要重建;换环境或修改 C/WASM 源码后运行
bash scripts/build-wasm.sh。变更后只运行相关检查,原验收见 E07–E10。 - 完成新任务后同步更新台账、任务矩阵、验收证据及本接续文件;功能修复与原有本地改动分别处理。
重启后可直接发送:
请在 /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 为准;它们未随专项推送,不要删除或自动提交。重启使用现有工作区能保留这些文件,远端仓库不能替代它们的本地副本。