feat: sync axis task state parity work

This commit is contained in:
wangdequan
2026-07-07 18:45:26 -04:00
parent 16484afce6
commit 8ef67f94c2
562 changed files with 175971 additions and 248 deletions

View File

@@ -41,3 +41,30 @@
- 决策Run 所需 motion plan 应来自 LinuxCNC interpreter canonical output 或受控 WASM 适配层。没有 plan 时返回明确错误,不把 JS 正则解析作为长期执行路径。
- 理由Run 按钮的验收对象是 LinuxCNC task/interpreter/motion 链,不是 Web 播放 G-code 文本。
- 后续影响:`W9-003` 必须明确 program open 与 canonical plan 边界;关闭任务前要有无 plan 拒绝 Run 的测试证据。
## DR-W9-004 - WASM Run 硬门禁优先于 Web 预判
- 日期2026-07-07
- 状态:已采纳
- 背景Web policy 可以提前禁用按钮,但最终能否 Run 必须由 task/HAL runtime 决定,否则会重新出现 UI running 假状态。
- 决策:`EMC_TASK_PLAN_RUN` 在 WASM 中硬性检查 `ON``AUTO``IDLE`、非 homing、已 Home 或 `noForceHoming`、program open、motion plan loaded。拒绝时通过 `task.errorText` 输出原因。
- 理由:这与 LinuxCNC task 层门禁一致,且能被 Node 矩阵测试直接验证。
- 后续影响Web 可做预判,但不能绕过 WASM 拒绝;测试必须覆盖 `PROGRAM_OPEN_REQUIRED``INTERPRETER_PLAN_REQUIRED`
## DR-W9-005 - Web Run 可执行 ensure AUTO但 running 只能来自 status
- 日期2026-07-07
- 状态:已采纳
- 背景AXIS 的 Run 会先 `ensure_mode(MODE_AUTO)`,但 Web 之前存在点击 Run 立即写 `runState=running` 的风险。
- 决策Web 点击 Run 可以发起 `EMC_TASK_SET_MODE AUTO`,再发 `EMC_TASK_PLAN_RUN`;但 `runState=running` 只能由 task/HAL status 的 `interpState=READING/WAITING` 投影产生。
- 理由:这样兼容 AXIS 的 ensure-mode 操作链,同时保留 WASM task 层作为真实状态源。
- 后续影响Home 过程中允许 Auto 请求排队,但 Run 在 `homing=true` 时仍被拒绝;`run_feedback_status_loop_smoke` 用于防止回退。
## DR-W9-006 - Home 必须有可观测过程态
- 日期2026-07-07
- 状态:已采纳
- 背景:直接把 `allHomed=true` 会让 Run 无法区分未 Home、正在 Home、已 Home。
- 决策WASM Home 命令先输出 `homing=true/homeState=HOMING`task cycle 后输出 `allHomed=true/homeState=HOMED`Web policy 将 `homing` 作为 Run 拒绝条件。
- 理由:满足 working9 对 Home 过程态的要求,也让浏览器和 Node 测试能观察 Run 前置条件。
- 后续影响:后续若接入真实 joint homing需要保留同名 status 字段并由真实 joint status 驱动。