Files
cnc_wams/work/working8-暂停按钮/03-推进台账.md
2026-07-07 16:46:39 -04:00

152 lines
6.7 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.
# 03-推进台账
## 记录规则
每轮推进必须记录:
- 时间;
- 用户目标;
- 本轮做了什么;
- 改了哪些文件;
- 验证了什么;
- 遗留问题;
- 下一步。
## 2026-07-07 轮次 1暂停功能 wasm 补齐方案建档
### 用户目标
根据 `AXIS暂停按钮LinuxCNC调用链分析.md`,实现暂停功能,完善 `wasm-port` 中 LinuxCNC 的 WASM 功能,最终实现 `web-rtcp-5axis-xyzbc-trt-sim-plan` 的暂停按钮正确功能;把完善方法和详细步骤写入 `work/working8`,并包含项目内容、开发步骤、推进台账、任务矩阵、验收证据、决策记录和 README 索引。
### 本轮做了什么
1. 阅读 AXIS 暂停按钮调用链分析文档,确认暂停必须同时覆盖 task/interpreter 与 motion/trajectory 两层。
2. 检查 `wasm-port` 结构,确认已有 task-hal、motion runtime、TP wasm、SDK 和 WASM Node 测试。
3. 检查 `web-rtcp-5axis-xyzbc-trt-sim-plan` 暂停按钮、task policy、store 分发逻辑和已有暂停测试报告。
4. 识别当前主要差距:
- task wrapper 没有完整保存和输出 `interpResumeState`
- motion pause 仍偏普通队列命令,缺少 GUI immediate pause 语义;
- STEP 缺少 LinuxCNC 式自动回暂停;
- Web resume gate 仍需以 motion paused 为优先依据;
- TP pause/resume 需要补可观测测试。
5. 创建 `work/working8` 文档体系。
### 本轮新增或修改文件
- `work/working8/README.md`
- `work/working8/01-项目功能内容.md`
- `work/working8/02-项目程序开发详细步骤.md`
- `work/working8/03-推进台账.md`
- `work/working8/04-任务矩阵.md`
- `work/working8/05-验收证据.md`
- `work/working8/06-决策记录.md`
### 本轮验证
本轮是方案与推进文档建档,未修改业务代码,未运行构建和测试。
已完成的静态核对:
- 确认 `wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp` 已有 `EMC_TASK_PLAN_PAUSE/RESUME/STEP` 分支。
- 确认 `wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.c` 已有 `paused` 字段和 pause/resume 命令识别。
- 确认 `wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs` 已有最低限度 pause/resume smoke。
- 确认 Web 侧已有 `trace-pause-position-json.mjs``verify-estop-power-home-run-pause-50ms.mjs` 暂停冻结验证工具。
### 下一步
`04-任务矩阵.md``W8-001` 开始:
1. 修改 task runtime增加 `interpResumeState`
2. 扩展 WASM status JSON 和 SDK 映射。
3. 增加 Node WASM 测试,证明 pause/resume 恢复暂停前解释器状态。
## 2026-07-07 轮次 2暂停语义代码实现、回归验证与任务关闭
### 用户目标
完成 `/home/mes123456/cnc_wams/work/working8` 的全部任务。
### 本轮做了什么
1. 补齐 `wasm-port` task runtime 的 LinuxCNC 风格暂停恢复状态:
- 增加 `interpResumeState`
- pause 保存暂停前解释器状态;
- resume 按保存状态恢复;
- abort/home/program complete 同步清理状态。
2. 补齐 motion runtime immediate pause/resume/step
- pause/resume/step/abort 改为即时命令;
- pause 不清空 queue
- paused 时不消费普通 move
- STEP 只消费一个普通 motion 后自动恢复 paused
- status JSON 输出 `motion.stepping``motion.idForStep``motion.motionId``commandQueueDepth`
3. 增加 TP pause/resume probe
- 直接调用 vendored LinuxCNC `tpPause()``tpResume()`
- 验证暂停速度归零、位置保持、恢复后队列完成。
4. Web 侧接入 motion paused
- runtime normalize 输出 `ui.interpResumeState``ui.taskPaused``ui.singleStepping``ui.motionPaused``ui.motionStepping``ui.motionQueueDepth`
- task policy 的 resume gate 接受 motion paused/task paused/interp paused
- store 的 `PAUSE_RESUME` 优先用 `machine.motionPaused` 判断 resume
- UI pause 按钮 active/title/data-paused 接入 `motionPaused`
5. 扩展测试:
- WASM task-hal Node 覆盖 pause freeze、resume restore、step returns paused、motion queue preserved
- Web Node 覆盖 motion paused gate 和暂停期间 active line/motion line 不推进;
- 50ms 截图 manifest 增加 `motionPaused` 证据字段。
6. 运行全部验收命令并关闭 `W8-001``W8-014`
### 本轮新增或修改文件
- `wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp`
- `wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.c`
- `wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_tp_wasm.c`
- `wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs`
- `wasm-port/tests/wasm/node/verify_tp_wasm.mjs`
- `web-rtcp-5axis-xyzbc-trt-sim-plan/app/src/runtime/linuxcnc-task-hal-runtime.js`
- `web-rtcp-5axis-xyzbc-trt-sim-plan/app/src/state/linuxcnc-task-policy.js`
- `web-rtcp-5axis-xyzbc-trt-sim-plan/app/src/state/store.js`
- `web-rtcp-5axis-xyzbc-trt-sim-plan/app/src/ui/axis-shell.js`
- `web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_run_feedback_loop.mjs`
- `web-rtcp-5axis-xyzbc-trt-sim-plan/tools/verify-estop-power-home-run-pause-50ms.mjs`
- `web-rtcp-5axis-xyzbc-trt-sim-plan/app/dist/**` 中本轮重新构建的静态产物和 WASM artifact
- `work/working8/03-推进台账.md`
- `work/working8/04-任务矩阵.md`
- `work/working8/05-验收证据.md`
- `work/working8/06-决策记录.md`
### 本轮验证
已通过:
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
task_status_from_linuxcnc_runtime=ok
task_commands_drive_motion_runtime=ok
mdi_jog_task_motion_hal_sync=ok
pause_freezes_motion_queue=ok
resume_restores_interp_resume_state=ok
step_returns_to_paused=ok
tp_wasm_node_smoke=ok
tp_pause_resume_smoke=ok
gmoccapy_static_build=ok
run_feedback_status_loop_smoke=ok
run_ready_sequence_smoke=ok
pause_uses_motion_paused_gate=ok
pause_freezes_task_hal_status_loop=ok
pause_position_status=passed-position-frozen
verification_status=passed
```
生成证据:
- trace`/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/pause-position-traces/pause-position-20260707T140646Z/trace.json`
- screenshots`/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/screenshots/estop-power-home-run-pause-50ms-20260707T141219Z`
- manifest`/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/screenshots/estop-power-home-run-pause-50ms-20260707T141219Z/manifest.json`
### 遗留问题
本轮 `working8` 任务矩阵内任务均已完成。底层 task-hal motion runtime 仍是 wrapper 级可观测语义补齐,完整将 task-hal motion 执行迁移到 vendored TP runtime 仍属于后续架构演进,不再阻塞本轮 AXIS 暂停按钮验收。
### 下一步
无本轮阻塞项。后续如果继续推进,可把 task-hal motion runtime 的手写队列逐步替换为 vendored TP 队列执行路径。