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

@@ -1,5 +1,81 @@
# 03-推进台账
## 2026-07-07 18:18 EDT - AXIS 主控制按钮状态链路收敛轮次
### 本轮目标
按用户要求“按 working 完成全部工作”,依据 `18-20260707-AXIS主控制按钮调用链与Web完善指南.md`,把 Web 仿真的 `解除 ESTOP``上电/下电``Home All``Run``Pause/Resume``Step` 主控制链路收敛到 LinuxCNC AXIS/task/motion 的状态模型。
### 已做事项
- 修改 `app/src/state/linuxcnc-task-policy.js`
- 新增 `deriveLinuxCncTaskState()`,统一从 `estopActive + motionEnabled/powerOn` 派生 `estop``estop-reset``on`
- policy 状态补齐 `motionEnabled``homed[]``singleStepping``motionStepping``resumeInhibit``canPowerToggle``powerAction`
- 收紧 ESTOP 下 Power、Home、Run、Step、Resume 等按钮门禁Run 必须 AUTO/IDLE/已 Home/有程序。
- 修改 `app/src/state/store.js`
- 机器状态补齐 `motionEnabled``homed[]``singleStepping``motionStepping``resumeInhibit`
- ESTOP/RESET/Power/Home/Run/Stop/Pause/Resume/Step/RunFrame 统一清理或设置 pause/step/homing/home 状态。
- Home All 增加 `homing -> homed` 瞬态;下电映射到 `estop-reset` 并清 motion/home/pause/step。
- Task/HAL status 回写补齐 `motionEnabled``homed[]``singleStepping``motionStepping`
- 修改 `app/src/runtime/linuxcnc-task-hal-runtime.js``wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp`
- Task/HAL status 输出 `motionEnabled``homed[]`
- `EMC_JOINT_HOME` 产生 homing 状态并完成后设置每轴 homed。
- `EMC_TASK_SET_MODE MANUAL` 清 pause/step 并保持解释器 idle。
- `EMC_TASK_PLAN_RUN` 增加 ON/AUTO/IDLE/非 homing/已 Home/程序已打开/运动计划已加载门禁。
- 同步测试与 evidence
- 更新 Node/browser smoke 中 ESTOP+Power、ON->OFF、Home、Run、Step、Pause/Resume 断言。
- 新增/更新 Task/HAL 状态矩阵与 SDK 测试,覆盖 ESTOP、ESTOP_RESET、MANUAL、未 Home、homing、缺程序、缺 motion plan、合法 Run。
- 修复 Web evidence 采集里的 Task/HAL 运行前置序列,使其显式 `ON -> HOME -> cycle -> AUTO -> PLAN_RUN`
- impeller Task/HAL 测试改为基于实际 G93 逆时间 feed 段验证,而不是固定旧 feed 数值。
### 验证情况
```text
source /home/mes123456/emsdk/emsdk_env.sh && wasm-port/tools/build_task_hal_wasm.sh
linuxcnc_task_hal_wasm_build=ok
node wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
node wasm-port/tests/wasm/node/verify_task_state_matrix.mjs
node wasm-port/tests/wasm/node/verify_task_hal_sdk.mjs
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_run_feedback_loop.mjs
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_run_preconditions.mjs
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_linuxcnc_task_hal_runtime.mjs
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_gmoccapy_xyzab_gates.mjs
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_rtcp_store.mjs
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_impeller_feed_task_hal_run.mjs
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run build
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:browser
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:web
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run evidence:compare
compare_xyzbc_trt_status=pass
```
最新 evidence 摘要:
```text
web.collectedAt=2026-07-07T22:17:57.900Z
web.executionPath.sampleCount=228
web.basicSimEquivalent.ready=true
web.taskHalEquivalence.ready=true
web.axisMainUi.ready=true
web.blockers=[]
compare.comparedAt=2026-07-07T22:17:58.519Z
compare.status=pass
compare.summary.checkCount=60
compare.summary.passCount=60
compare.summary.failCount=0
compare.summary.blockers=[]
compare.requiredImprovements=[]
```
### 结论
AXIS 主控制按钮状态链路已从 Web 自定义 `runState` 主导收敛为 LinuxCNC task/motion/home 状态事实主导。当前 T-001 到 T-078 均为完成,最新 Web evidence 和 compare 通过,仍为 `60/60 pass`
## 2026-07-05 18:57 EDT - Pause 按钮 LinuxCNC AXIS 严格对标修复轮次
### 本轮目标