Validate AXIS task state flow

This commit is contained in:
wangdequan
2026-07-09 18:12:01 -04:00
parent f99ba2bbe8
commit f4b9911d45
57 changed files with 195248 additions and 647 deletions

View File

@@ -2405,3 +2405,101 @@ T-034 已标为完成,下一推进指针改为 T-035。
13. 将本轮中文执行日志追加到 `gptlog-process/gpdlog.md`
14. 将同一轮中文执行日志追加到 `web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md`
15. 接下来会将日志追加作为单独提交推送,确保云仓库包含本轮过程记录。
## 2026-07-08 09:26 EDT
### 提问
用户要求完成 `/home/mes123456/cnc_wams/wasm-port/working` 全部工作。
### 结论
已完成并复核 `wasm-port/working` 当前全部工作。任务矩阵 T-001 到 T-055 均为完成,下一条优先任务为“无”;全量闭合脚本 `./tools/verify_task_full_closure.sh` 通过,最终输出 `task_full_closure_status=ok`。本轮未修改 runtime 或测试逻辑,只追加 working 台账、验收证据和执行日志。
### 完整执行过程
1. 从仓库根目录 `/home/mes123456/cnc_wams` 开始,列出 `wasm-port/working` 文件,确认存在 README、项目功能内容、开发步骤、推进台账、任务矩阵、验收证据、决策记录、周期蓝图、源码替换分解、NML 评估、usrmot shim 设计、WASM 核心状态机边界和 status JSON 对标方案。
2. 执行 `git status --short`,确认本轮开始时工作树没有待处理输出。
3. 读取 `wasm-port/working/README.md`,确认当前基线说明 task-HAL runtime 已具备 LinuxCNC 式周期骨架RUN 文件主路径已由 staged program、`emccanon.cc` command envelope 和 `taskintf.cc` motion issue 驱动,并声明当前全部任务完成。
4. 读取 `wasm-port/working/04-任务矩阵.md`,确认 T-001 到 T-055 均标记为“完成”,当前推进指针为“下一条优先任务:无”。
5. 读取 `wasm-port/working/03-推进台账.md``05-验收证据.md`,确认上一轮已记录 T-051 到 T-055 status JSON contract 的实现与验收证据。
6. 使用 `find .. -name AGENTS.md -print` 查找作用域规则,发现仓库根目录和 `wasm-port/AGENTS.md` 都适用。
7. 读取根目录 `AGENTS.md`,确认每次执行结束后必须把中文完整执行过程日志追加到 `gptlog-process/gpdlog.md`
8. 读取 `wasm-port/AGENTS.md`,确认本轮还必须遵守 LinuxCNC source reuse 边界,并把执行日志追加到 `/home/mes123456/cnc_wams/web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md`
9. 扫描 `wasm-port/working``wasm-port/tools``wasm-port/docs``wasm-port/runtime``wasm-port/tests` 中的 `待办``进行中``阻塞``TODO``FIXME``未完成``后续``SJ-*``T-*` 等标记。扫描结果包含已闭合矩阵行、保守边界和后续新增任务入口,也包含 vendored three.js 自带 TODO但没有当前任务矩阵中的未闭合任务行。
10. 检查 `wasm-port/tools/verify_task_full_closure.sh``verify_task_working_closure.sh``verify_task_status_json_contract.sh` 的执行权限,确认均可执行。
11. 读取 `wasm-port/tools/verify_task_full_closure.sh`,确认它会加载 emsdk依次运行 task-HAL WASM build、WASM smoke、SDK smoke、state matrix、motion/HAL sync、StandaloneEmcStatus、no-JSON 主路径、status JSON contract、working closure、source reuse/drift docs 和 readiness contract。
12.`/home/mes123456/cnc_wams/wasm-port` 执行 `./tools/verify_task_full_closure.sh`
13. 验证脚本自动加载 `/home/mes123456/emsdk/emsdk_env.sh`,随后构建通过,输出 `linuxcnc_task_hal_wasm_build=ok`
14. WASM runtime smoke、SDK smoke、state matrix、motion/HAL sync、StandaloneEmcStatus、no-JSON 主路径、status JSON contract、working closure、source reuse/drift docs 和 readiness contract 均输出 `ok`
15. 全量闭合脚本最终输出 `task_full_closure_status=ok`
16. 执行 `git status --short`,确认验证脚本没有产生新的工作树差异。
17. 执行 `TZ=America/New_York date '+%Y-%m-%d %H:%M %Z'`,得到本轮日志时间戳 `2026-07-08 09:26 EDT`
18.`wasm-port/working/03-推进台账.md` 顶部追加本轮复核台账,记录读取文档、检查 AGENTS、扫描开放标记、运行 full closure 和当前结论。
19.`wasm-port/working/05-验收证据.md` 顶部追加本轮验收证据,记录 full closure 命令和关键输出摘要。
20. 将本轮完整中文执行日志追加到 `gptlog-process/gpdlog.md`
21. 将同一轮完整中文执行日志追加到 `web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md`,满足 `wasm-port/AGENTS.md` 的额外日志要求。
## 2026-07-08 09:30 EDT
### 提问
用户要求完成 `/home/mes123456/cnc_wams/wasm-port/working/11-WASM核心状态机边界与后续完善路线.md``/home/mes123456/cnc_wams/wasm-port/working/12-status-json-LinuxCNC对标方案.md` 的全部工作。
### 结论
已完成并复核这两个目标文件定义的当前全部工作。`12-status-json-LinuxCNC对标方案.md` 的 SJ-1 到 SJ-5 已对应 `04-任务矩阵.md` 的 T-051 到 T-055状态均为完成`11-WASM核心状态机边界与后续完善路线.md` 已记录这些 status JSON 子任务闭合。全量闭合脚本通过,最终输出 `task_full_closure_status=ok``git diff --check` 无输出。
### 完整执行过程
1.`/home/mes123456/cnc_wams` 开始执行本轮任务。
2. 读取用户指定的 `wasm-port/working/11-WASM核心状态机边界与后续完善路线.md`,确认该文件要求 WASM/C++ 作为核心状态机事实源JS/SDK 和 JSON 只作为 host/browser 边界,并记录 SJ-1 到 SJ-5 已闭合。
3. 读取用户指定的 `wasm-port/working/12-status-json-LinuxCNC对标方案.md`,确认 `status JSON` 定位为 `StandaloneEmcStatus -> write_status_snapshot() -> lctask_read_status_json()` 的外部通信格式,不承担 task/motion 状态机语义。
4. 读取 `wasm-port/working/04-任务矩阵.md`,确认 T-051 到 T-055 分别对应 SJ-1 到 SJ-5且均标记为完成当前推进指针为“下一条优先任务无”。
5. 读取 `wasm-port/working/03-推进台账.md``wasm-port/working/05-验收证据.md`,确认此前已记录 SJ-1 到 SJ-5 的实现与验收证据。
6. 读取 `wasm-port/tools/verify_task_status_json_contract.sh``wasm-port/tools/verify_task_full_closure.sh`,确认 status JSON contract gate 已纳入 full closure。
7. 执行 `git status --short`,看到当前已有日志、台账和验收证据差异,未回退任何已有修改。
8. 使用 `rg` 扫描 working、docs、tools、runtime、tests 中的 `T-051``T-055``SJ-1``SJ-5``StandaloneEmcStatus``emcStatus``verify_task_status_json_contract` 锚点,确认 runtime、测试、文档和 gate 均有覆盖。
9.`/home/mes123456/cnc_wams/wasm-port` 执行 `./tools/verify_task_full_closure.sh`
10. 脚本自动加载 emsdk构建 task-HAL WASM 成功,输出 `linuxcnc_task_hal_wasm_build=ok`
11. WASM runtime smoke、SDK smoke、state matrix、motion/HAL sync、StandaloneEmcStatus、no-JSON 主路径、status JSON contract、working closure、source reuse/drift docs 和 readiness contract 均通过。
12. 全量闭合脚本最终输出 `task_full_closure_status=ok`
13. 在仓库根目录执行 `git diff --check`,无输出,以 0 退出。
14. 执行 `date '+%Y-%m-%d %H:%M %Z'`,得到日志时间戳 `2026-07-08 09:30 EDT`
15.`wasm-port/working/03-推进台账.md` 顶部追加本轮 09:30 EDT 复核台账,记录目标、执行内容、影响文件和结论。
16.`wasm-port/working/05-验收证据.md` 顶部追加本轮 09:30 EDT 验收证据,记录 full closure 和 `git diff --check` 的输出摘要。
17. 将本轮完整中文执行日志追加到 `gptlog-process/gpdlog.md`
18. 将同一轮完整中文执行日志追加到 `web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md`,满足 `wasm-port/AGENTS.md` 的额外日志要求。
## 2026-07-08 10:25 EDT
### 提问
用户要求:从源头 `/home/mes123456/cnc_wams/wasm-port` 取消“旧字段输入兼容”,且不保留旧字段兼容。
### 执行过程
1. 读取并遵守根目录和 `wasm-port` 的 AGENTS 规则,确认本轮涉及 `wasm-port`,需要同步追加中文日志。
2. 复核并修改 `wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp`,让 `status_json()` 只通过 `emcStatus` 导出 task/motion/io/top 状态。
3. 从源头移除旧顶层字段输出:`taskTopLevelStatus``rcsStatus`、顶层 `task``servoCycle`、顶层 `motionStatus`
4. 将仍需要的 task/motion 状态字段补入 `emcStatus.task``emcStatus.motion`
5. 更新 `verify_task_status_json_contract.mjs``verify_task_hal_sdk.mjs``verify_task_hal_wasm.mjs``verify_task_state_matrix.mjs`,所有 task status 读取均改为 `emcStatus`,并对旧字段做负向断言。
6. 重建 task-HAL wasm输出 `linuxcnc_task_hal_wasm_build=ok`
7. 运行直接相关 Node 验证,均通过:
- `node wasm-port/tests/wasm/node/verify_task_status_json_contract.mjs`
- `node wasm-port/tests/wasm/node/verify_task_hal_sdk.mjs`
- `node wasm-port/tests/wasm/node/verify_task_state_matrix.mjs`
- `node wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs`
8. 更新 `wasm-port/working` 文档,新增 T-056新增 D-046修正 status JSON 方案为 `emcStatus` 唯一状态入口。
9. 更新 source reuse / drift / compatibility 文档及 gate
- `verify_task_working_closure.sh`
- `verify_task_source_reuse_drift_docs.sh`
- `verify_task_standalone_emc_status.sh`
10. 运行脚本级验证,均通过:
- `SKIP_TASK_HAL_BUILD=1 ./tools/verify_task_status_json_contract.sh`
- `./tools/verify_task_standalone_emc_status.sh`
- `SKIP_TASK_HAL_BUILD=1 ./tools/verify_task_working_closure.sh`
- `./tools/verify_task_source_reuse_drift_docs.sh`
- `SKIP_TASK_HAL_BUILD=1 ./tools/verify_task_full_closure.sh`
- `git diff --check -- wasm-port`
### 结论
`wasm-port` 源头已取消旧 task status 顶层字段兼容输出;状态读取统一为 `emcStatus`。全量闭合验证通过,最终输出 `task_full_closure_status=ok`