# 06-决策记录 ## DR-W5-001:以 gmoccapy_XYZAB 执行流程作为本轮验收主线 日期:2026-06-26 决策: - 本轮不只验证图形 RTCP 轨迹,而是按 LinuxCNC 启动、INI/HAL、task/NML、interpreter、gmoccapy UI 通信和互锁全链路推进。 原因: - 用户指定的基准文件覆盖了 `gmoccapy_XYZAB.ini` 五轴仿真从启动到界面通信的完整执行流程。 - 若只看轨迹显示,容易遗漏回零、状态机、换刀、主轴到速、冷却、UI gate 等数控系统仿真关键行为。 影响: - 任务矩阵按 LinuxCNC 行为拆分。 - 任何实现修改都需要补充对应测试或验收证据。 ## DR-W5-002:模式按钮门控前移到 `SET_MODE` 和 UI disabled 状态 日期:2026-06-26 决策: - Web 侧 `SET_MODE` 统一按 LinuxCNC/gmoccapy 状态门控。 - `STATE_OFF` 或未上电时,Manual/Jog/MDI/Auto 都禁止切换。 - `STATE_ON` 但未全轴回零且 `NO_FORCE_HOMING = 0` 时,只允许 Manual/Jog,禁止 MDI/Auto。 - 回零后 MDI/Auto 恢复可用;Auto 解释器非 idle 时仍禁止离开 Auto。 原因: - LinuxCNC `gmoccapy.py` 的 `on_hal_status_state_off()` 会禁用 `rbt_manual`、`rbt_mdi`、`rbt_auto`。 - `on_hal_status_state_on()` 先只启用 `rbt_manual`,退出设置页时也明确区分“未回零只 Manual 可用”和“已回零三种模式可用”。 - 旧 Web 实现主要在 `RUN` 和 `RUN_MDI` 时拦截,模式按钮本身仍可点击,不符合 gmoccapy 的按钮敏感状态。 影响: - `app/src/state/linuxcnc-task-policy.js` 成为模式切换和执行动作的统一互锁入口。 - `app/src/ui/gmoccapy-shell.js` 侧边模式按钮使用同一 gate 输出 disabled、`data-command-ready` 和 `aria-disabled`。 - Node 和浏览器测试增加下电、未回零、已回零三个阶段的断言。