Files
linuxcncWebWASM/nextTask-hardcoding.md

9.0 KiB
Raw Blame History

配置驱动与恢复改造接续入口

最新教学交付(R09/E13):工件坐标与RTCP初学者完整PDF,72页A4,详解原点/方向/G54/G代码逐字逐行和关节运动;源稿、数据及复现命令见教材索引。原31页投影片保留。最近两轮仅新增教学资料和生成脚本,未改应用功能。

2026-09-20 保存接续:AC/BC 单文件 GLB、桁架模型、Jog 限位修复、RTCP 程序库、教学资料和部件级三维机床管理器已在功能提交 8aab531 中保存。三维管理器入口为 docs/glb-machine-manager/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 为准;它们未随专项推送,不要删除或自动提交。重启使用现有工作区能保留这些文件,远端仓库不能替代它们的本地副本。