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

181 lines
9.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.
# 06-决策记录
## D-013缺 WASM artifact 时 build 与 path compare 继续显式失败
日期2026-07-02
决策:本轮补齐 Web/native evidence 字段和 compare 规则,但在缺少 `wasm-port/build/wasm` artifact 时,`npm run build`、Web preview path、Web task/HAL execution path 和 compare path 检查继续显式失败或 blocked不通过占位样本伪造通过。
理由:
- `xyzbc-trt` 的 G-code、remap、kinematics、planner、task/HAL 语义必须来自 LinuxCNC-derived WASM 或真实 LinuxCNC evidence。
- 当前仓库缺少 `wasm-port/build/wasm/kinematics`、core、tp、task-hal artifact浏览器 worker/runtime 不具备真实执行条件。
- compare JSON 的失败项已经精确指向 artifact 与 path 样本缺口,保留失败状态比静默降级更利于后续验收。
## 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刀具路径按统一 50ms 周期采样后比较
日期2026-07-02
决策native/Web 的刀具预览路径和刀具执行路径进入 evidence JSON 前,统一按用户本轮要求暂定的 `samplePeriodMs = 50` 重采样compare 只对同一 `sampleIndex/timeMs` 的样本做逐点比较。
理由:
- LinuxCNC 真实系统和 Web 仿真系统的内部刷新、planner、HAL/task 采样频率可能不同,直接比较原始样本会产生时间错位。
- 固定 50ms 可以覆盖当前对标所需的刀路、轴值、进给、主轴和 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。
## D-012WASM artifact 已生成,后续 blocker 改为路径采集与 interpreter 回归
日期2026-07-02
决策:`wasm-port/build/wasm` artifact 已通过 `emcc 6.0.2` 生成Web evidence 不再把缺 artifact 作为 blocker后续开发重点转向 native/Web path 采集闭环、Web task/HAL execution path collector以及 `verify_interp_wasm.sh` 的 G10 L11 回归断言差异。
理由:
- core、kinematics、TP、task/HAL 所需 `.js/.wasm` 均已存在,`web-xyzbc-trt-evidence.json.wasm.missing=[]`
- kinematics、TP、task/HAL 的 Node WASM smoke 已通过,说明主要 runtime artifact 可加载执行。
- Web preview path 已由 `linuxcnc_interp` WASM 生成样本,证明 Web evidence 已越过原先缺 artifact 的前置阻塞。
- compare 剩余失败项均指向 native path 样本和 Web execution path 样本缺失;这是采集能力缺口,不再是构建产物缺口。
- 历史状态:当时 `verify_interp_wasm.sh` 仍有 `interp_g10_l11_wasm` 断言失败,完整 interpreter/remap WASM 验收不能标记为完成。
## D-013G10 L11 验收期望对齐 vendored LinuxCNC expected
日期2026-07-02
决策:将 `verify_interp_wasm.mjs``interp_g10_l11_wasm``SET_G92_OFFSET` 期望值调整为 `x=-43.0622 y=-47.4282 z=-72`,与 `wasm-port/vendor/linuxcnc/tests/interp/g10/g10-l11/expected` 保持一致。
理由:
- 单独复现 `g10-l11`WASM 实际 canonical 输出为 `SET_G92_OFFSET x=-43.0622 y=-47.4282 z=-72`
- vendored LinuxCNC 当前 expected 文件同样记录 `SET_G92_OFFSET(-43.0622, -47.4282, -72.0000)`
- 因此失败原因是 Node 验收脚本中的期望值过期,不是 WASM interpreter/remap 行为偏离 vendored LinuxCNC。
- 修正后,`SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh` 和完整 `wasm-port/tests/wasm/node/verify_interp_wasm.sh` 均通过,输出 `interp_wasm_node_smoke=ok`