feat: sync axis task state parity work
This commit is contained in:
@@ -3428,3 +3428,191 @@ Pause 修复已提交并推送到云仓库 `master`,提交号为 `58854f9`。
|
||||
|
||||
### 结论
|
||||
主工作提交 `39b495c docs: add axis run process working set` 已成功推送到云仓库 `origin/master`。本次推送包含当前工作区成果:暂停按钮实现相关代码和证据、working8 重命名目录、working9 执行过程按钮文档体系、AXIS 按钮调用链分析文档、备忘文件和过程日志。随后会将本条日志作为独立记录提交并推送。
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-07 17:43 EDT 执行日志
|
||||
|
||||
### 提问
|
||||
用户要求:
|
||||
1. 分析 `/home/mes123456/cnc_wams/linuxcnc` 源程序中 AXIS 主界面的“急停、上电、Home、执行、暂停、单步执行”的详细调用链条和状态机制。
|
||||
2. 覆盖 C++ task、motion、状态记录方式,以及 LinuxCNC 系统中这些功能的实现链条。
|
||||
3. 分析每个按钮的先决条件、执行后的状态记录方式。
|
||||
4. 指导完善 `/home/mes123456/cnc_wams/wasm-port` 的 LinuxCNC WASM。
|
||||
5. 指导完善 `/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan` 程序。
|
||||
6. 参考 `项目分析/AXIS主控制按钮调用链与WASM完善指南.md` 和 `项目分析/AXIS主界面按钮调用链与WASM完善建议.md`,再创建新的单独文档指导完善 `web-rtcp-5axis-xyzbc-trt-sim-plan` 项目。
|
||||
|
||||
### 执行过程
|
||||
1. 读取根目录 `AGENTS.md`,确认本次必须在执行结束后将完整过程日志用中文追加到 `gptlog-process/gpdlog.md`,时间戳精确到分钟。
|
||||
2. 使用 `rg --files` 检查 `linuxcnc`、`wasm-port`、`web-rtcp-5axis-xyzbc-trt-sim-plan`、`项目分析` 的文件结构,确认已有两份 AXIS 分析文档和 Web 项目 working 文档体系。
|
||||
3. 读取 `项目分析/AXIS主控制按钮调用链与WASM完善指南.md`,确认已有总体调用链、状态字段、急停和上电分析。
|
||||
4. 读取 `项目分析/AXIS主界面按钮调用链与WASM完善建议.md`,确认已有 AXIS Tcl/Python、emcmodule、task、motion、homing 的分层说明和按钮可执行条件。
|
||||
5. 检索并读取 `linuxcnc/share/axis/tcl/axis.tcl` 的 `update_state()`,确认 AXIS UI 层对急停、上电、Home、Run、Step、Pause、Resume、Stop 的可点条件。
|
||||
6. 检索并读取 `linuxcnc/bin/axis` 中 `manual_ok()`、`ensure_mode()`、`estop_clicked()`、`onoff_clicked()`、`task_run()`、`task_step()`、`task_pause()`、`task_resume()`、`task_pauseresume()`、`home_all_joints()`、`home_joint()`,确认 Python 回调二次门禁和 `linuxcnc.command()` 调用方式。
|
||||
7. 检索并读取 `linuxcnc/src/emc/usr_intf/axis/extensions/emcmodule.cc` 中 `mode()`、`state()`、`home()`、`emcauto()`,确认 Python API 到 `EMC_TASK_SET_MODE`、`EMC_TASK_SET_STATE`、`EMC_JOINT_HOME`、`EMC_TASK_PLAN_RUN/PAUSE/RESUME/STEP` 的 NML 命令映射。
|
||||
8. 检索并读取 `linuxcnc/src/emc/task/emctask.cc` 中 `emcTaskAbort()`、`emcTaskSetMode()`、`emcTaskSetState()`、`determineMode()`、`determineState()`、`emcTaskUpdate()`,确认 task 状态并不是按钮直接保存,而是由 IO 急停和 motion enable 状态周期推导。
|
||||
9. 检索并读取 `linuxcnc/src/emc/task/emctaskmain.cc` 中 `emcTaskPlan()`、`emcTaskIssueCommand()`、`EMC_TASK_PLAN_RUN/PAUSE/RESUME/STEP` 分支和 `STEPPING_CHECK()`,确认 ON/MANUAL、ON/AUTO/IDLE、ON/AUTO/READING、ON/AUTO/PAUSED、ON/AUTO/WAITING 下的命令门禁。
|
||||
10. 读取 `linuxcnc/src/emc/task/taskintf.cc` 中 `emcJointHome()`、`emcTrajEnable()`、`emcTrajDisable()`、`emcTrajPause()`、`emcTrajStep()`、`emcTrajResume()`,确认 task 到 motion 的 `EMCMOT_*` 命令写入点。
|
||||
11. 读取 `linuxcnc/src/emc/motion/command.c` 中 `EMCMOT_PAUSE`、`EMCMOT_RESUME`、`EMCMOT_STEP`、`EMCMOT_ENABLE`、`EMCMOT_DISABLE`、`EMCMOT_JOINT_HOME`、`EMCMOT_JOINT_UNHOME`,确认 motion 层暂停、恢复、单步、使能、回零的实际状态位。
|
||||
12. 读取 `linuxcnc/src/emc/motion/control.c` 与 `linuxcnc/src/emc/motion/homing.c` 的关键片段,确认 homing 的 `H[jno].home_state`、`homing`、`homed`、`homing_active` 状态机,以及 motion status 对 `homing/homed` 和 `motion.is-all-homed` 的记录方式。
|
||||
13. 读取 `web-rtcp-5axis-xyzbc-trt-sim-plan/working/README.md` 和 `working/15-20260706-AXIS主控制按钮严格对标补齐.md`,确认 Web 项目已有按钮对标任务和暂停修复记录。
|
||||
14. 检查 Web 项目文件结构,读取 `app/src/state/linuxcnc-task-policy.js`,确认当前已有 `taskState`、`taskMode`、`interpState`、`canHome`、`canRunAuto`、`canPause`、`canResume` 等策略字段。
|
||||
15. 读取 `app/src/state/store.js` 的初始状态和 `TOGGLE_POWER`、`ESTOP`、`RESET`、`PAUSE`、`PAUSE_RESUME`、`RESUME`、`STEP`、`HOME` 等 dispatch 分支,确认当前 Web 状态已有 `taskPaused`、`motionPaused`、`interpResumeState`,但仍需要补齐更严格的 `singleStepping`、`homed[]`、task/motion 派生状态。
|
||||
16. 读取 `app/src/runtime/linuxcnc-task-hal-runtime.js`,确认 Task/HAL runtime 已标准化 `interpResumeState`、`taskPaused`、`singleStepping`、`motionPaused`、`allHomed`、`homing` 等 status 字段,是后续对齐 LinuxCNC task/motion 状态的核心位置。
|
||||
17. 读取 `tools/verify-estop-power-home-run-pause-50ms.mjs`、`tests/node/verify_xyzbc_trt_web_app.mjs`、`tests/node/verify_rtcp_store.mjs` 关键片段,确认已有 ESTOP、上电、Home、Run、Pause/Resume 的浏览器与 Node 验证基础。
|
||||
18. 读取 `wasm-port/README.md` 和 `wasm-port/SKILL.md`,确认 WASM port 的原则是 LinuxCNC 源码为语义真源,JS/SDK 只能做适配,不能重写 G-code、planner、kinematics、task/motion 语义。
|
||||
19. 使用 `apply_patch` 新增文档 `web-rtcp-5axis-xyzbc-trt-sim-plan/working/18-20260707-AXIS主控制按钮调用链与Web完善指南.md`。
|
||||
20. 新文档按“文档目标、总体结论、AXIS UI 按钮门禁、急停、上电/下电、Home、Run、暂停/恢复、Step、WASM-port 完善方向、web-rtcp 落地清单、验收矩阵、推荐实施顺序、当前判断”组织,共 449 行。
|
||||
21. 使用 `apply_patch` 更新 `web-rtcp-5axis-xyzbc-trt-sim-plan/working/README.md`,在 working 索引中加入新文档说明。
|
||||
22. 使用 `sed` 检查新文档开头和 README 索引,确认内容可读且索引已更新。
|
||||
23. 使用 `wc -l` 确认新文档为 449 行。
|
||||
24. 使用 `git status --short` 检查本次相关变更,确认新增新指南文档并修改 working README。
|
||||
25. 使用 `date '+%Y-%m-%d %H:%M %Z'` 获取日志时间戳为 `2026-07-07 17:43 EDT`。
|
||||
26. 使用 `apply_patch` 将本次中文执行日志追加到 `gptlog-process/gpdlog.md`。
|
||||
|
||||
### 结论
|
||||
已创建新的单独指导文档:
|
||||
|
||||
`/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/18-20260707-AXIS主控制按钮调用链与Web完善指南.md`
|
||||
|
||||
该文档详细整理了 LinuxCNC AXIS “急停、上电、Home、执行、暂停、单步执行”的 UI、Python、C++ task、taskintf、motion、homing 调用链和状态机制,并给出了 `wasm-port` 与 `web-rtcp-5axis-xyzbc-trt-sim-plan` 后续完善清单、状态字段建议、核心文件责任和验收矩阵。同时已更新 `working/README.md` 索引,便于后续继续实施。
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-07 18:21 EDT 执行日志
|
||||
|
||||
### 提问
|
||||
|
||||
用户要求:“按 `/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working` 完成全部工作”。
|
||||
|
||||
### 执行过程
|
||||
|
||||
1. 读取根目录 `AGENTS.md` 和 `wasm-port/AGENTS.md`,确认本轮结束后需要分别追加中文执行日志到根目录日志和 `web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md`。
|
||||
2. 读取 `working/README.md` 与 `18-20260707-AXIS主控制按钮调用链与Web完善指南.md`,确认本轮目标是完成 AXIS 主控制按钮状态链路收敛。
|
||||
3. 检查工作区,确认已有前序或用户改动,未回退无关文件。
|
||||
4. 修改 `app/src/state/linuxcnc-task-policy.js`,新增 `deriveLinuxCncTaskState()`,由 `estopActive + motionEnabled/powerOn` 派生 `estop`、`estop-reset`、`on`。
|
||||
5. 在 policy 中补齐 `motionEnabled`、`homed[]`、`singleStepping`、`motionStepping`、`resumeInhibit`、`canPowerToggle`、`powerAction`、`canStepStrict`,并收紧 ESTOP、Power、Home、Run、Step、Resume 门禁。
|
||||
6. 修改 `app/src/state/store.js`,补齐 machine 状态字段,并重整 `ESTOP`、`RESET`、`TOGGLE_POWER`、`SET_MODE`、`LOAD_PROGRAM`、`RUN`、`STOP/ABORT`、`PAUSE`、`RESUME`、`STEP`、`RUN_FRAME`、`HOME`、`UNHOME` 的状态清理和设置。
|
||||
7. 为 Home All 增加 `homing -> homed` 瞬态;下电映射为 `estop-reset`,并清理 motion/home/pause/step 状态。
|
||||
8. 修改 `app/src/runtime/linuxcnc-task-hal-runtime.js`,标准化 Task/HAL status 中的 `motionEnabled`、`homed[]`、`resumeInhibit`。
|
||||
9. 修改 `wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp`,TaskRuntime 增加 `homed` 数组,status JSON 输出 `motionEnabled` 和 `homed[]`。
|
||||
10. 在 Task/HAL WASM 中让 `EMC_JOINT_HOME` 产生 homing 到 homed 的状态变化,并让 `EMC_TASK_PLAN_RUN` 增加 ON、AUTO、IDLE、非 homing、已 Home、程序打开、motion plan 已加载门禁。
|
||||
11. 更新 WASM 测试,`verify_task_hal_wasm.mjs` 增加 `homed[]` 断言,并新增 `verify_task_state_matrix.mjs` 覆盖非法和合法 Run 状态矩阵。
|
||||
12. 更新 Web Node/browser 测试,覆盖 ESTOP+Power 阻断、ON->OFF、Home、Run、Step、Pause/Resume 等新语义。
|
||||
13. 首次构建 Task/HAL WASM 时发现 `emcc` 不在 PATH;加载 `/home/mes123456/emsdk/emsdk_env.sh` 后重新执行 `wasm-port/tools/build_task_hal_wasm.sh`,输出 `linuxcnc_task_hal_wasm_build=ok`。
|
||||
14. 执行 WASM 测试、状态矩阵、SDK 测试、Node 专项、build、Node smoke、browser smoke,均通过。
|
||||
15. 执行 Web evidence/compare 时首次出现 `fail_count=7`,定位为 evidence 采集仍按旧的 `ON -> AUTO -> PLAN_RUN` 运行序列,被新门禁拒绝。
|
||||
16. 修改 `tools/collect-web-xyzbc-trt-evidence.mjs`,将 Task/HAL evidence 采集前置改为 `ON -> EMC_JOINT_HOME -> runCycles -> AUTO -> PLAN_RUN`。
|
||||
17. 重新执行 Web evidence/compare,输出 `compare_xyzbc_trt_status=pass`。
|
||||
18. 检索旧测试中直接 `PLAN_RUN` 的路径,更新 `verify_task_hal_sdk.mjs`,增加 `prepareHomedAuto()` 并为首个程序补 motion plan。
|
||||
19. 更新 `verify_impeller_feed_task_hal_run.mjs`,增加 Home 前置,并把固定 `F159/F636` 断言改为基于实际 G93 逆时间 feed 段的动态验证。
|
||||
20. 最终回归执行 Task/HAL WASM、状态矩阵、SDK、Node 专项、build、Node smoke、browser smoke、Web evidence、compare,全部通过。
|
||||
21. 使用 `jq` 确认 `web.executionPath.sampleCount=228`、`taskHalEquivalence.ready=true`、`basicSimEquivalent.ready=true`、`compare.failCount=0`、`blockers=[]`、`requiredImprovements=[]`。
|
||||
22. 更新 `working/README.md`、`03-推进台账.md`、`04-任务矩阵.md`、`05-验收证据.md` 和 `18-20260707-AXIS主控制按钮调用链与Web完善指南.md`,记录本轮完成结果,并新增完成任务 T-078。
|
||||
23. 执行 `git diff --check`,无空白错误;检查 `git status --short` 和 `git diff --stat`,确认最终变更包括源码、WASM、测试、dist、evidence 和 working 文档。
|
||||
|
||||
### 结论
|
||||
|
||||
已按 `working` 完成 AXIS 主控制按钮状态链路收敛。Web 仿真的 `ESTOP/RESET/Power/Home/Run/Pause/Resume/Step` 已统一到 LinuxCNC `task.state + task.mode + interpState + motion/home status` 事实来源;Task/HAL WASM 暴露并验证 `motionEnabled`、`homed[]`、`singleStepping`、`motionStepping`;Web evidence 采集已使用合法 LinuxCNC 运行前置。最终 build、Node smoke、browser smoke、WASM 测试、专项 Node 测试、Web evidence 和 compare 均成功,最新 compare 为 `60/60 pass`、`blockers=[]`、`requiredImprovements=[]`。working 任务矩阵已新增并完成 T-078。
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-07 18:29 EDT 执行日志
|
||||
|
||||
### 提问
|
||||
|
||||
用户要求项目 `/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan` 完全对标 `/home/mes123456/cnc_wams/linuxcnc`,并详细分析 LinuxCNC AXIS 主界面“急停、上电、Home、执行、暂停、单步执行”的调用链条、C++ task/motion 状态机制、状态记录方式、每个按钮的先决条件以及执行后如何记录状态。
|
||||
|
||||
### 执行过程
|
||||
|
||||
1. 读取并遵守根目录 `AGENTS.md` 要求:每次执行后需要把完整过程以中文追加到 `gptlog-process/gpdlog.md`,时间戳精确到分钟。
|
||||
2. 检查仓库结构,确认源码目录为 `/home/mes123456/cnc_wams/linuxcnc`,目标 Web 项目目录为 `/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan`。
|
||||
3. 使用 `rg` 检索 AXIS UI 中 `estop`、`home`、`AUTO_RUN`、`AUTO_PAUSE`、`AUTO_STEP`、`STATE_ON`、`STATE_ESTOP` 等关键符号,定位到 `src/emc/usr_intf/axis/scripts/axis.py` 和 `src/emc/usr_intf/axis/extensions/emcmodule.cc`。
|
||||
4. 阅读 `axis.py` 中 `manual_ok()`、`ensure_mode()`、`go_home()`、`estop_clicked()`、`onoff_clicked()`、`task_run()`、`task_step()`、`task_pause()`、`task_resume()`、`task_pauseresume()`、`home_all_joints()`、`home_joint()` 和快捷键绑定,确认 AXIS UI 层的按钮先决条件和命令入口。
|
||||
5. 阅读 `emcmodule.cc` 中 `Stat_members`、`mode()`、`state()`、`home()`、`emcauto()` 和常量导出,确认 Python 调用如何转换为 `EMC_TASK_SET_STATE`、`EMC_TASK_SET_MODE`、`EMC_JOINT_HOME`、`EMC_TASK_PLAN_RUN/PAUSE/RESUME/STEP`。
|
||||
6. 阅读 `src/emc/nml_intf/emc.hh` 与 `src/emc/nml_intf/emc_nml.hh`,确认 `EMC_TASK_STATE`、`EMC_TASK_MODE`、`EMC_TASK_INTERP`、`EMC_TASK_EXEC` 枚举,以及 NML 命令对象和 task status 字段。
|
||||
7. 阅读 `src/emc/task/emctaskmain.cc`,重点分析 `all_homed()`、`emcTaskPlan()`、`emcTaskIssueCommand()`、`EMC_TASK_SET_MODE`、`EMC_TASK_SET_STATE`、`EMC_TASK_PLAN_RUN`、`EMC_TASK_PLAN_PAUSE`、`EMC_TASK_PLAN_RESUME`、`EMC_TASK_PLAN_STEP`、`STEPPING_CHECK()`、`emcTaskExecute()`、状态发布和 `emcStatusBuffer->write(emcStatus)`。
|
||||
8. 阅读 `src/emc/task/emctask.cc`,确认 `emcTaskSetMode()` 和 `emcTaskSetState()` 对 MANUAL/AUTO/MDI、ESTOP/ESTOP_RESET/OFF/ON 的实际动作,包含 abort、traj enable/disable、IO abort、spindle abort、volatile home 清理和解释器同步。
|
||||
9. 阅读 `src/emc/task/taskintf.cc`,确认 `emcJointHome()`、`emcTrajPause()`、`emcTrajStep()`、`emcTrajResume()` 如何封装为 `EMCMOT_*` motion 命令。
|
||||
10. 阅读 `src/emc/motion/command.c`,确认 `EMCMOT_PAUSE`、`EMCMOT_RESUME`、`EMCMOT_STEP`、`EMCMOT_ENABLE`、`EMCMOT_JOINT_HOME` 的实时 motion 处理逻辑和硬门禁。
|
||||
11. 阅读 `src/emc/motion/control.c` 与 `src/emc/motion/homing.c`,确认 servo 周期如何推进 homing、如何写 HAL/motion status、如何把 `homing/homed` 状态从 `H[jno]` 写回 joint status,以及单步如何在 motion id 改变后再次暂停。
|
||||
12. 检索目标 Web 项目,确认已有 `app/src/state/linuxcnc-task-policy.js`、`app/src/state/store.js`、`app/src/runtime/linuxcnc-task-hal-runtime.js` 等文件承担 LinuxCNC 状态门禁和 Task/HAL 回写职责。
|
||||
13. 发现目标项目已有未跟踪文档 `working/18-20260707-AXIS主控制按钮调用链与Web完善指南.md`,先阅读其内容,确认它已覆盖总体 Web 完善清单,但对 C++ task/motion 状态记录、NML、`execState`、`determineState`、motion/homing 发布链条仍可补充。
|
||||
14. 为避免覆盖既有未跟踪文档,新增 `web-rtcp-5axis-xyzbc-trt-sim-plan/working/19-20260707-AXIS按钮LinuxCNC-task-motion状态机制源码分析.md`。
|
||||
15. 新文档按章节整理了统一调用链、状态记录与发布机制、急停、上电/下电、Home、Run、暂停/恢复、单步 Step、按钮先决条件汇总、Web 对标状态字段和源码索引。
|
||||
16. 检查新增文档,确认文件 560 行,包含用户要求的 AXIS UI、Python C++ 扩展、C++ task、motion、homing、状态记录和 Web 对标要求。
|
||||
17. 检查 `git status --short`,确认本次新增文件为 `working/19-20260707-AXIS按钮LinuxCNC-task-motion状态机制源码分析.md`,并按要求追加本日志到根目录 `gptlog-process/gpdlog.md`。
|
||||
|
||||
### 结论
|
||||
|
||||
已完成本次源码分析并形成中文文档:`/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/19-20260707-AXIS按钮LinuxCNC-task-motion状态机制源码分析.md`。文档明确说明 AXIS 主界面按钮从 Python/Tk 进入 `linuxcnc.command()`,再经 `emcmodule.cc` 发送 NML 命令,由 C++ `emctaskmain.cc`、`emctask.cc`、`taskintf.cc` 和 motion 层 `command.c/control.c/homing.c` 完成状态判定、执行和发布。每个按钮的先决条件、执行后 task/motion 状态记录、Web 项目必须对标的状态字段也已整理完成。本轮未修改业务代码,未运行测试,属于源码分析和文档补充工作。
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-07 18:35 EDT 执行日志
|
||||
|
||||
### 提问
|
||||
|
||||
用户要求:
|
||||
|
||||
1. 将 `/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/19-20260707-AXIS按钮LinuxCNC-task-motion状态机制源码分析.md` 拆分成详细的实施步骤和验收测试文档。
|
||||
2. 明确“compare 仍是 60/60 pass 只是表面 pass”,必须以真实程序功能为准,真实对标“linuxcnc 系统的 C++ 都是如何实现”。
|
||||
|
||||
### 执行过程
|
||||
|
||||
1. 读取 `19-20260707-AXIS按钮LinuxCNC-task-motion状态机制源码分析.md`,确认其中已经包含 AXIS、emcmodule、NML、C++ task、taskintf、motion、homing、按钮先决条件和 Web 对标字段。
|
||||
2. 读取 `working/README.md`,确认当前索引已有 18 号文档但未登记 19 号文档,也没有将“60/60 pass 只是表面 pass”写成后续验收原则。
|
||||
3. 检查当前时间为 `2026-07-07 18:35 EDT`,并检查工作区状态,确认已有前序/用户改动,未回退任何无关文件。
|
||||
4. 新增 `working/20-20260707-AXIS按钮LinuxCNC真实C++对标实施步骤.md`,把 19 号源码分析拆成可执行实施步骤。
|
||||
5. 20 号文档明确写入实施原则:不能以 `compare 60/60 pass` 作为功能完成依据,真实合格标准必须是 Web 项目的按钮、状态、Task/HAL/WASM、evidence 和 UI 行为逐项符合 LinuxCNC C++ task/motion/homing 的真实实现。
|
||||
6. 20 号文档按阶段拆分:固定 LinuxCNC C++ 源码事实、建立状态字段对应关系、实现 Task/HAL/WASM 真实状态机、实现 Home 状态机、实现 Pause/Resume/Step 真实 motion 语义、收敛 Web 状态与 UI 门禁、重构 evidence 与 compare、测试实现顺序和完成判定。
|
||||
7. 在 20 号文档中明确核心 C++ 权威文件:`emctaskmain.cc`、`emctask.cc`、`taskintf.cc`、`motion/command.c`、`motion/control.c`、`motion/homing.c`、`emc.hh`、`emc_nml.hh`。
|
||||
8. 在 20 号文档中明确 compare 必须新增 `surfaceSummary` 和 `functionalSummary`,且 `surfaceSummary 60/60 pass` 但 `functionalSummary` 失败时,结论必须是失败。
|
||||
9. 新增 `working/21-20260707-AXIS按钮LinuxCNC真实C++对标验收测试.md`,把 19 号源码分析拆成验收测试文档。
|
||||
10. 21 号文档明确写入验收原则:`compare 60/60 pass` 不是最终验收结论,只是旧 compare 摘要;只有 `functionalSummary.status == "pass"` 才允许写“真实通过”。
|
||||
11. 21 号文档定义 Native LinuxCNC、Web、Compare 的准备命令和必须采集字段,包括 `task.state/mode/interpState/execState/currentLine/readLine/motionLine`、motion enabled/paused/single stepping/queue、joint homing/homed、真实 G-code line、motion id、axis pose、tcp pose、tool axis。
|
||||
12. 21 号文档按功能拆分验收:基础状态枚举、急停、上电/下电、Home、Run、Pause/Resume、Step、非法命令矩阵、真实程序功能验收、Compare 硬通过标准和验收记录模板。
|
||||
13. 21 号文档新增硬规则名称:`cppTaskStateMachineParity`、`cppModeGateParity`、`cppHomingParity`、`cppRunGateParity`、`cppPauseResumeParity`、`cppStepParity`、`illegalCommandParity`、`realProgramExecutionParity`。
|
||||
14. 21 号文档明确最终判定规则:legacy compare `60/60 pass` 但任一 `cpp*Parity` 或 `realProgramExecutionParity` 失败,则整体验收失败;截图正常或 smoke 通过也不能替代 C++ 状态机验收。
|
||||
15. 更新 `working/README.md`,新增 19、20、21 号文档索引。
|
||||
16. 在 `working/README.md` 当前关注点中新增说明:后续结论必须区分 `surfaceSummary` 与 `functionalSummary`,`compare 60/60 pass` 只代表表面规则通过,真实通过必须证明 Web 行为符合 LinuxCNC C++ 状态机和真实程序执行结果。
|
||||
17. 检查新增文档:20 号文档 294 行,21 号文档 576 行;使用 `rg` 确认 `60/60`、`functionalSummary`、`真实通过`、`LinuxCNC C++`、`非法命令`、`realProgramExecutionParity` 等关键要求均已落入文档。
|
||||
18. 检查 `git status --short`,确认本次新增 20、21 号文档并修改 README,同时按规则追加本日志。
|
||||
|
||||
### 结论
|
||||
|
||||
已将 19 号源码分析拆分成两份详细文档:
|
||||
|
||||
- `/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/20-20260707-AXIS按钮LinuxCNC真实C++对标实施步骤.md`
|
||||
- `/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/21-20260707-AXIS按钮LinuxCNC真实C++对标验收测试.md`
|
||||
|
||||
两份文档均明确:`compare 60/60 pass` 只是表面通过,不是最终完成依据。真实对标必须以 LinuxCNC C++ `emctaskmain.cc`、`emctask.cc`、`taskintf.cc`、`motion/command.c`、`control.c`、`homing.c` 的状态机、命令门禁、状态记录和真实 G-code 程序执行结果为准。README 已同步新增索引和当前关注点。本轮未修改业务代码,未运行测试,属于文档拆分和验收标准强化工作。
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-07 18:42 EDT 执行日志
|
||||
|
||||
### 提问
|
||||
|
||||
用户要求:分析 `/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working` 还有哪些工作需要做。
|
||||
|
||||
### 执行过程
|
||||
|
||||
1. 按工作目录 `/home/mes123456/cnc_wams` 执行检查,使用 `rg --files` 列出 `web-rtcp-5axis-xyzbc-trt-sim-plan/working` 下的文档、证据、截图和 trace 文件。
|
||||
2. 查找 README、TODO、PLAN、STATUS、NOTES 类文件,确认核心入口是 `working/README.md`,并且目录中已有 18、19、20、21 号最新文档。
|
||||
3. 执行 `git status --short -- web-rtcp-5axis-xyzbc-trt-sim-plan/working gptlog-process/gpdlog.md`,确认工作区已有未提交修改和未跟踪文档;本轮只读取分析并追加日志,不回退、不覆盖这些改动。
|
||||
4. 阅读 `working/README.md`,确认当前索引写明 T-001 到 T-078 已完成,但新增关注点明确要求后续区分 `surfaceSummary` 和 `functionalSummary`,并说明 `compare 60/60 pass` 只代表表面规则通过。
|
||||
5. 使用 `rg` 检索 `TODO`、`待办`、`未完成`、`缺失`、`差异`、`失败`、`下一步`、`functionalSummary`、`cppTaskStateMachineParity` 等关键词,定位主要后续工作集中在 20 号实施步骤和 21 号验收测试,而不是旧 T-001 到 T-078。
|
||||
6. 阅读 `working/20-20260707-AXIS按钮LinuxCNC真实C++对标实施步骤.md`,确认其中要求补齐 C++ 源码行为映射、Web 状态字段、Task/HAL/WASM 命令 ABI、硬门禁测试、真实程序执行证据和 compare 功能级硬检查。
|
||||
7. 阅读 `working/21-20260707-AXIS按钮LinuxCNC真实C++对标验收测试.md`,确认最终硬检查包括 `cppTaskStateMachineParity`、`cppModeGateParity`、`cppHomingParity`、`cppRunGateParity`、`cppPauseResumeParity`、`cppStepParity`、`illegalCommandParity`、`realProgramExecutionParity`,并要求输出 `surfaceSummary` 与 `functionalSummary`。
|
||||
8. 阅读 `working/04-任务矩阵.md`,确认当前任务矩阵只登记到 T-078,且 T-001 到 T-078 均标记完成;20/21 号文档提出的新功能级验收尚未作为后续任务编号落入矩阵。
|
||||
9. 阅读 `working/03-推进台账.md`,确认最近完成轮次是 2026-07-07 18:18 EDT 的 AXIS 主控制按钮状态链路收敛,结论仍是旧 compare `60/60 pass`。
|
||||
10. 使用 Node 读取 `working/evidence/compare-xyzbc-trt-evidence.json`,确认当前 compare 顶层字段包含旧 `summary/checks/strictComparison`,状态为 pass、60 项检查全通过,但没有 `surfaceSummary` 和 `functionalSummary` 字段。
|
||||
11. 使用 Node 读取 `working/evidence/web-xyzbc-trt-evidence.json` 和 `native-xyzbc-trt-evidence.json`,确认二者没有 20 号文档要求的 `taskMotionStateTrace`、`buttonCommandTrace`、`homingTrace`、`pauseFreezeTrace`、`stepMotionIdTrace`、`illegalCommandTrace`、`cppParityAssertions` 等新证据段。
|
||||
12. 使用 `rg` 在项目源码中检索 `functionalSummary`、`surfaceSummary`、`cppTaskStateMachineParity`、`taskMotionStateTrace` 等符号,确认这些符号目前只出现在 working 文档中,尚未落入采集脚本、compare 脚本或业务代码。
|
||||
13. 检索 `tools/collect-native-xyzbc-trt-evidence.py`、`tools/collect-web-xyzbc-trt-evidence.mjs`、`tools/compare-xyzbc-trt-evidence.mjs` 相关输出,确认现有 compare 脚本仍围绕旧 60 项 summary 和 strictComparison 工作。
|
||||
14. 根据以上证据归纳剩余工作:将 20/21 号文档转成任务矩阵项;补 native/Web 功能级状态 trace;补 compare 的 `surfaceSummary/functionalSummary` 与 C++ 硬规则;补非法命令矩阵、Home/Run/Pause/Resume/Step 真实程序执行验收;最后重新跑 native/Web/compare/build/smoke/browser 并按 21 号模板形成验收结论。
|
||||
|
||||
### 结论
|
||||
|
||||
当前 `working` 目录中旧任务 T-001 到 T-078 已标记完成,旧证据为 `compare.status=pass`、`60/60 pass`、`blockers=[]`。但最新 20/21 号文档已经把旧 `60/60 pass` 明确降级为表面通过,真正还需要做的是落地 LinuxCNC C++ task/motion/homing 状态机的功能级验收:采集 native/Web 同名 C++ 行为 trace,新增 `functionalSummary` 和八项硬检查,验证非法命令、Home、Run、Pause/Resume、Step、真实 G-code line/motion/path/status 对齐。由于当前 evidence 和 compare JSON 尚无这些字段,现阶段不能宣称“真实通过”,只能说“旧矩阵完成,新增 C++ 功能级验收待实现和复验”。
|
||||
|
||||
Reference in New Issue
Block a user