Files
cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/06-决策记录.md
2026-07-02 08:01:34 -04:00

142 lines
6.6 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.
# 06-决策记录
## D-012DOCX 任务书整合为 working Markdown
日期2026-07-02
决策:将 `doc/xyzbc-trt-web-cnc-simulation-design-task-and-technical-plan.docx` 的正文、表格和图片引用整合为 `working/09-设计任务书与技术方案整合.md`,并把它加入 `working` 索引和任务矩阵。
理由:
- DOCX 不便于命令行检索、diff、逐项验收和后续增量维护。
- `working` 目录是当前项目的开发和验收入口,任务书内容必须进入该目录才能和 01-08 工作文档形成闭环。
- Markdown 版本可以保留 DOCX 的完整任务书、技术方案、程序逻辑分析和状态联锁内容,同时继续引用 `doc/assets` 中的原始图片证据。
## D-001以 `wasm-port` 为 CNC 语义来源
日期2026-07-02
决策Web 项目不在 JavaScript 中重写 G-code、remap、tool table、parameter、kinematics 或 planner 语义,继续通过 `wasm-port` 的 LinuxCNC-derived SDK/WASM 获取语义。
理由:
- `wasm-port/AGENTS.md` 明确要求 LinuxCNC 源码是语义真源。
- `wasm-port` 已经包含 `xyzbc-trt` kinematics、remap、interp、task/HAL 的边界设计。
## D-002复制参考 app 后改为 `xyzbc-trt` 默认机型
日期2026-07-02
决策:复用 `web-rtcp-5axis-sim-plan/app` 的结构,创建目标目录独立 app并只做 `xyzbc-trt` 默认化和项目命名空间隔离。
理由:
- 参考 app 已包含 OPFS、WASM SDK、五轴可视化、profile、task/HAL、tool DB、session 等大部分产品外壳。
- 局部改造比重写界面风险低,且保留 LinuxCNC source-derived 边界。
## D-003目标项目 OPFS 根路径独立
日期2026-07-02
决策:目标项目使用 `web-rtcp-5axis-xyzbc-trt-sim-plan/machines``sessions``tool-db`,不复用旧项目 `web-rtcp-5axis-sim-plan` 路径。
理由:
- 防止两个项目在 OPFS 中互相覆盖机器文件、会话、tool DB。
- 便于后续按项目清理和验收。
## D-004默认程序使用 `xyzbc_switchkins.ngc`
日期2026-07-02
决策:为 `xyzbc-trt` profile 增加 `machineFileStaging.defaultProgramFilename = "xyzbc_switchkins.ngc"`
理由:
- LinuxCNC INI `[DISPLAY]OPEN_FILE` 指向 `./demos/xyzbc_switchkins.ngc`
- 参考 app 的自动选择逻辑按 `${profileId}_switchkins.ngc` 推导时会得到不存在的 `xyzbc-trt_switchkins.ngc`,必须显式覆盖。
## D-005完整浏览器验收等待 WASM artifact
日期2026-07-02
决策:本轮先完成代码、工作文档和不依赖 artifact 的 Node smoke完整 browser/WASM 验收记录为后续前置任务。
理由:
- 当前 `wasm-port/build/wasm` 不存在。
- 页面 runtime 代码已接入 worker/WASM但缺少 `.js/.wasm` 产物时无法完成真实浏览器执行。
## D-006受控导入 `xyzbc.var` staging
日期2026-07-02
决策:从当前真实运行树 `/home/mes123456/linuxcnc-master/.../xyzbc.var` 导入 `xyzbc.var``wasm-port/vendor/linuxcnc/.../xyzbc.var`,并加入 `wasm-port/tools/source-manifest.txt`
理由:
- `xyzbc-trt.ini` 明确声明 `PARAMETER_FILE = xyzbc.var`
- 若不导入OPFS machine-file staging 无法覆盖完整 runtime files。
- 直接在 Web wrapper 中引用运行树绝对路径不可复现;纳入 vendor/manifest 后Node/Web staging 可重复。
## D-007native/Web JSON 对比作为验收主线
日期2026-07-02
决策:新增 native、Web、compare 三个 JSON 证据脚本,作为后续完善项目的主验收链路。
理由:
- 用户要求真实 `xyzbc-trt` 与 Web 仿真分别写入 JSON再通过比对 JSON 完善项目。
- JSON 证据比单次截图或口头结论更容易复跑、归档和定位差异。
- 当前比较报告已把差异收敛到唯一环境前置:缺 WASM artifact。
## D-008WASM artifact 缺失不伪造通过
日期2026-07-02
决策:当前 `wasm-port/build/wasm` 为空Web evidence 和 compare evidence 保持 `blocked/fail`,不伪造 WASM 执行完成。`emcc 6.0.2` 已安装后,下一步是构建 artifact而不是改写证据为通过。
理由:
- `wasm-port` 规则要求 LinuxCNC 源码语义和 WASM 边界真实可验证。
- 没有 `.js/.wasm` artifact 时,浏览器 worker runtime 无法完成真实执行。
- 保留失败项可以明确下一步是激活已安装的 Emscripten 并构建 artifact而不是继续堆叠 Web UI 假状态。
## D-009刀具路径按统一 20ms 周期采样后比较
日期2026-07-02
决策native/Web 的刀具预览路径和刀具执行路径进入 evidence JSON 前,统一按 `samplePeriodMs = 20` 重采样compare 只对同一 `sampleIndex/timeMs` 的样本做逐点比较。
理由:
- LinuxCNC 真实系统和 Web 仿真系统的内部刷新、planner、HAL/task 采样频率可能不同,直接比较原始样本会产生时间错位。
- 固定 20ms 可以覆盖人眼可见刀路和 UI 动画判断,同时让 JSON 体积可控。
- 统一 `sampleIndex/timeMs`TCP、XYZBC joint、toolAxis、feed、spindle 的误差统计可以稳定复跑。
- 如果 Web 缺少 WASM task/HAL 执行反馈不允许用预览路径冒充执行路径compare 必须显式 fail/blocker。
## D-010以全量对标追踪矩阵作为开发和验收主索引
日期2026-07-02
决策:新增 `working/07-全量对标追踪矩阵.md`,作为 Web `xyzbc-trt` 仿真界面后续开发、JSON 采集和 compare 验收的主索引。
理由:
- `doc/xyzbc-trt-runtime-files.md` 覆盖的范围超过单个 INI/staging 检查,还包括 AXIS、PyVCP、POSTGUI HAL、basic_sim、Vismach、kinematics HAL pins、Ngcgui、演示程序和加载顺序。
- 若没有追踪矩阵,后续容易只完成页面可见部分,而漏掉 HAL/task/kinematics/tool-offset 等运行语义。
- 追踪矩阵把每个 LinuxCNC 功能点映射到 Web 对标目标和 evidence 字段,便于自动化 compare 脚本逐步落地。
## D-011native 真实执行基线切换到 `/home/mes123456/cnc_wams/linuxcnc`
日期2026-07-02
决策:后续 Web 界面和逻辑设计以 `/home/mes123456/cnc_wams/linuxcnc` 编译后执行 `xyzbc-trt` 的真实行为为 native 基线;`/home/mes123456/linuxcnc-master` 只保留为历史运行参考。
理由:
- 用户明确要求以已编译成功并能执行 `xyzbc-trt``/home/mes123456/cnc_wams/linuxcnc` 为对标依据。
- `/home/mes123456/cnc_wams/linuxcnc` 是干净 Git 源码仓库,便于把 native 行为、Web WASM 构建和后续代码追踪关联到同一源码树。
- 该路径已完成 run-in-place 编译,`scripts/rip-environment``bin/axis``bin/xyzbc-trt-gui``rtlib/xyzbc-trt-kins.so` 已生成;因此后续第一步是用该路径重新生成 native evidence。