Files
cnc_wams/wasm-port/working/05-验收证据.md
2026-07-09 18:12:01 -04:00

3042 lines
99 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.
# 05-验收证据
## 2026-07-08 10:18 EDT T-056 旧 status 字段源头收口
### 验收对象
`lctask_read_status_json()` 输出契约和直接消费 task status JSON 的 WASM/SDK/state matrix 测试。
### 证据命令
```bash
source /home/mes123456/emsdk/emsdk_env.sh >/dev/null && bash wasm-port/tools/build_task_hal_wasm.sh
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
```
### 实际输出摘要
```text
linuxcnc_task_hal_wasm_build=ok
task_status_json_contract=ok
linuxcnc_task_hal_sdk=ok
task_hal_sdk_status_json_contract=ok
task_state_matrix=ok
task_status_json_contract_matrix=ok
linuxcnc_task_runtime_smoke=ok
task_status_json_contract=ok
```
### 结论
T-056 验收通过。task status JSON 不再输出 `taskTopLevelStatus``rcsStatus`、顶层 `task``servoCycle`、顶层 `motionStatus`;测试读取路径均从 `emcStatus` 取值,并对旧字段做负向断言。
## 2026-07-08 09:30 EDT 目标文件 11/12 全部工作复核
### 验收对象
- `11-WASM核心状态机边界与后续完善路线.md`
- `12-status-json-LinuxCNC对标方案.md`
- T-051 到 T-055 / SJ-1 到 SJ-5 当前闭合状态。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_full_closure.sh
cd /home/mes123456/cnc_wams
git diff --check
```
### 实际输出摘要
`./tools/verify_task_full_closure.sh`
```text
linuxcnc_task_hal_wasm_build=ok
task_status_json_contract=ok
linuxcnc_task_hal_sdk=ok
task_state_matrix=ok
motion_hal_sync_smoke=ok
task_standalone_emc_status_status=ok
task_no_json_motion_plan_main_path_status=ok
task_status_json_contract_status=ok
task_working_closure_status=ok
task_source_reuse_drift_docs_status=ok
task_hal_readiness_contract_status=ok
task_full_closure_status=ok
```
`git diff --check`:无输出,以 0 退出。
### 结论
目标文件 `11``12` 当前定义的全部可执行工作已闭合。后续新增状态或 LinuxCNC 对标字段仍需先补入任务矩阵、验收标准和 gate。
## 2026-07-08 09:26 EDT working 全部工作闭合复核
### 验收对象
`/home/mes123456/cnc_wams/wasm-port/working` 当前全部任务闭合状态。
### 验收目标
- `04-任务矩阵.md` 中 T-001 到 T-055 均为完成。
- 当前推进指针为“下一条优先任务:无”。
- T-051 到 T-055 的 status JSON contract gate 已纳入 full closure。
- 全量闭合验证通过。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_full_closure.sh
```
### 实际输出摘要
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
linuxcnc_task_hal_sdk=ok
task_state_matrix=ok
motion_hal_sync_smoke=ok
task_standalone_emc_status_status=ok
task_no_json_motion_plan_main_path_status=ok
task_status_json_contract_status=ok
task_working_closure_status=ok
task_source_reuse_drift_docs_status=ok
task_hal_readiness_contract_status=ok
task_full_closure_status=ok
```
### 结论
`wasm-port/working` 全部工作闭合复核通过。后续新增对标项仍需先补入任务矩阵、验收标准和 gate再实施代码或文档变更。
## 2026-07-08 09:12 EDT SJ-1 到 SJ-5 status JSON contract 验收
### 验收对象
T-051、T-052、T-053、T-054、T-055。
### 验收目标
- `emcStatus.motion.traj` 导出 LinuxCNC `EMC_TRAJ_STAT` 风格字段,并与兼容 `motionStatus` 同源。
- `emcStatus.task.currentLine/readLine/motionLine/callLevel``StandaloneEmcStatus` 导出,并与 `task` 兼容视图同源。
- `emcStatus.motion.axis[]``joint[]` 导出结构化数组,旧 `motionStatus.axis``joint0` 与其一致。
- `emcStatus.io.aux/tool/coolant` 显式表达 shim/unsupported 边界readiness 不提升。
- `tools/verify_task_status_json_contract.sh` 纳入 full closure。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
source /home/mes123456/emsdk/emsdk_env.sh >/dev/null && ./tools/build_task_hal_wasm.sh
SKIP_TASK_HAL_BUILD=1 ./tools/verify_task_status_json_contract.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_wasm.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_sdk.sh
node tests/wasm/node/verify_task_state_matrix.mjs
./tools/verify_task_full_closure.sh
```
### 实际输出摘要
构建:
```text
linuxcnc_task_hal_wasm_build=ok
```
新增 contract gate
```text
task_status_json_contract_runtime=ok
task_status_json_contract_schema=ok
task_status_json_contract=ok
task_status_json_contract_status_read_no_motion_json=ok
task_status_json_contract_sdk_no_motion_semantics=absent
task_status_json_contract_sdk_no_task_semantics=absent
task_status_json_contract_status=ok
```
回归 smoke
```text
task_status_json_contract=ok
task_hal_sdk_status_json_contract=ok
task_status_json_contract_matrix=ok
```
全量闭合:
```text
task_status_json_contract_status=ok
task_working_closure_status=ok
task_source_reuse_drift_docs_status=ok
task_hal_readiness_contract_status=ok
task_full_closure_status=ok
```
### 结论
T-051 到 T-055 验收通过。`status JSON` 新增字段均从 `StandaloneEmcStatus` 或同一 C/C++ status buffer 导出JSON 仍是 host/browser 通信格式,不是 task/motion 事实源。
## 2026-07-08 09:00 EDT working 全部工作最终复核
### 验收对象
`/home/mes123456/cnc_wams/wasm-port/working` 当前全部任务闭合状态。
### 验收目标
- `04-任务矩阵.md``待办``进行中``阻塞` 任务行。
- README、台账、验收证据、决策记录与 T-007/T-046/T-047/T-048/T-049/T-050 当前闭合口径一致。
- task-HAL 全量闭合 gate 通过。
- 当前相关差异无 whitespace error。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_full_closure.sh
git diff --check -- working tools docs runtime tests
```
### 实际输出摘要
`./tools/verify_task_full_closure.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
linuxcnc_task_hal_sdk=ok
task_state_matrix=ok
motion_hal_sync_smoke=ok
task_standalone_emc_status_status=ok
task_no_json_motion_plan_main_path_status=ok
task_working_closure_status=ok
task_source_reuse_drift_docs_status=ok
task_hal_readiness_contract_status=ok
task_full_closure_status=ok
```
`git diff --check -- working tools docs runtime tests`:无输出,以 0 退出。
### 结论
`wasm-port/working` 全部工作最终复核通过。当前矩阵闭合、全量 gate 通过,后续新增对标范围需先在任务矩阵新增任务编号、验收标准和 gate。
## 2026-07-08 08:55 EDT status JSON LinuxCNC 对标方案验收
### 验收对象
T-050。
### 验收目标
- `12-status-json-LinuxCNC对标方案.md` 存在。
- 方案明确 LinuxCNC `EMC_STAT` / status buffer 与 WASM `StandaloneEmcStatus -> status JSON` 的关系。
- README、功能内容、开发步骤、周期蓝图、核心状态机路线、任务矩阵、台账和决策记录均接入该方案。
- 既有 working closure gate 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_working_closure.sh
test -f working/12-status-json-LinuxCNC对标方案.md
git diff --check -- working
```
### 实际输出摘要
`./tools/verify_task_working_closure.sh`
```text
task_working_closure_status=ok
```
`test -f working/12-status-json-LinuxCNC对标方案.md`:以 0 退出。
`git diff --check -- working`:无输出,以 0 退出。
### 结论
T-050 验收通过。status JSON 后续完善方案已固定WASM/C++ status 容器是事实源,`emcStatus` 是新增 LinuxCNC 对标字段的 JSON 主对象,旧兼容字段只从同一 status buffer 导出。
## 2026-07-08 08:18 EDT WASM核心状态机边界文档验收
### 验收对象
本轮文档完善。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_working_closure.sh
git diff --check -- working
```
### 实际输出摘要
`./tools/verify_task_working_closure.sh`
```text
task_working_closure_status=ok
```
`git diff --check -- working`:无输出,以 0 退出。
### 结论
文档已固定 WASM/C++、JS/SDK、JSON 的职责边界。后续实现时,核心状态机应继续进入 WASM/C++ 结构体、枚举、队列和周期函数JSON 只作为外部通信格式。
## 2026-07-08 08:08 EDT task-HAL 全量闭合验证入口验收
### 验收对象
T-049。
本轮验收目标是证明:
- `tools/verify_task_full_closure.sh` 存在且可执行。
- 该脚本能一次性运行 task-HAL build、WASM smoke、SDK smoke、state matrix、motion sync、T-007/T-046/T-047/T-048/docs/readiness gates。
- source reuse / compatibility 文档记录该 full closure gate。
- `verify_task_source_reuse_drift_docs.sh` 检查该 full closure gate 和 T-049 矩阵状态。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_full_closure.sh
git diff --check
```
### 实际输出摘要
`./tools/verify_task_source_reuse_drift_docs.sh`
```text
task_source_reuse_drift_docs_source_full_closure_gate=ok
task_source_reuse_drift_docs_compat_full_closure_gate=ok
task_source_reuse_drift_docs_compat_full_closure=ok
task_source_reuse_drift_docs_matrix_t049_done=ok
task_source_reuse_drift_docs_status=ok
```
`./tools/verify_task_full_closure.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
linuxcnc_task_hal_sdk=ok
task_state_matrix=ok
motion_hal_sync_smoke=ok
task_standalone_emc_status_status=ok
task_no_json_motion_plan_main_path_status=ok
task_working_closure_status=ok
task_source_reuse_drift_docs_status=ok
task_hal_readiness_contract_status=ok
task_full_closure_status=ok
```
### 结论
T-049 验收通过。task-HAL 对标工作已有统一全量闭合验证入口;后续可用 `./tools/verify_task_full_closure.sh` 一次性验证当前闭合状态。本轮不改变 runtime 行为。
## 2026-07-08 05:51 EDT working closure 全局文档 gate 验收
### 验收对象
T-048。
本轮验收目标是证明:
- `verify_task_working_closure.sh` 已记录到 source reuse map。
- `verify_task_working_closure.sh` 已记录到 compatibility validation。
- `verify_task_source_reuse_drift_docs.sh` 会检查 working closure gate。
- 任务矩阵记录 T-048 已完成。
- T-047 working closure 和 T-007 StandaloneEmcStatus gate 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_working_closure.sh
./tools/verify_task_standalone_emc_status.sh
git diff --check
```
### 实际输出摘要
`./tools/verify_task_source_reuse_drift_docs.sh`
```text
task_source_reuse_drift_docs_source_working_closure_gate=ok
task_source_reuse_drift_docs_compat_working_closure_gate=ok
task_source_reuse_drift_docs_compat_working_closure=ok
task_source_reuse_drift_docs_matrix_t048_done=ok
task_source_reuse_drift_docs_status=ok
```
回归 gate
```text
task_working_closure_status=ok
task_standalone_emc_status_status=ok
```
### 结论
T-048 验收通过。working closure gate 已纳入 source reuse / compatibility 文档和总文档一致性 gate后续文档 drift 会检查该收口 gate 是否仍被记录。本轮不改变 runtime 行为。
## 2026-07-08 05:46 EDT working closure 验收
### 验收对象
T-047。
本轮验收目标是证明:
- 任务矩阵所有任务均为完成。
- 当前推进指针为“无”。
- working README、功能内容和 NML 评估文档不再保留 T-007 完成前的过期口径。
- 新增 closure gate 能防止后续 working 索引与矩阵闭合状态漂移。
- T-007、文档一致性和 no-JSON 主路径 gate 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_working_closure.sh
./tools/verify_task_standalone_emc_status.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_no_json_motion_plan_main_path.sh
git diff --check
```
### 实际输出摘要
`./tools/verify_task_working_closure.sh`
```text
task_working_closure_matrix_t007_done=ok
task_working_closure_matrix_t047_done=ok
task_working_closure_matrix_next_none=ok
task_working_closure_matrix_unclosed_tasks=absent
task_working_closure_readme_closed=ok
task_working_closure_readme_status_source=ok
task_working_closure_readme_no_json=ok
task_working_closure_functions_closed=ok
task_working_closure_functions_standalone_status=ok
task_working_closure_functions_readiness=ok
task_working_closure_nml_t007_done=ok
task_working_closure_status=ok
```
回归 gate
```text
task_standalone_emc_status_status=ok
task_source_reuse_drift_docs_status=ok
task_no_json_motion_plan_main_path_status=ok
```
### 结论
T-047 验收通过。working 索引与当前实现口径一致,任务矩阵无待办/进行中/阻塞项,下一条优先任务为“无”。本轮为文档和 gate 收口,不改变 runtime 行为。
## 2026-07-08 05:40 EDT StandaloneEmcStatus 验收
### 验收对象
T-007。
本轮验收目标是证明:
- task/motion/io/top 必需状态集中到 `StandaloneEmcStatus`
- `write_status_snapshot()` 在写 status buffer 前同步该容器。
- JSON status 从该容器导出 `taskTopLevelStatus``rcsStatus``task``motionStatus``emcStatus`
- WASM、SDK、state matrix 均验证 `emcStatus` 与兼容 JSON 字段一致。
- T-046 no-JSON 主路径、source reuse/drift 文档、readiness contract 和 motion sync 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
source /home/mes123456/emsdk/emsdk_env.sh >/dev/null && ./tools/build_task_hal_wasm.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_wasm.sh
./tests/wasm/node/verify_task_hal_sdk.sh
node tests/wasm/node/verify_task_state_matrix.mjs
./tools/verify_task_standalone_emc_status.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_no_json_motion_plan_main_path.sh
./tools/verify_task_hal_readiness_contract.sh
./tests/wasm/node/verify_motion_hal_sync.sh
```
### 实际输出摘要
构建:
```text
linuxcnc_task_hal_wasm_build=ok
```
`SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_runtime_smoke=ok
task_top_level_rcs_status_aggregation=ok
standalone_emc_status_container=ok
task_hal_no_json_main_path_status=ok
```
`./tests/wasm/node/verify_task_hal_sdk.sh`
```text
linuxcnc_task_hal_sdk=ok
task_hal_sdk_status_snapshot=ok
task_hal_sdk_standalone_emc_status=ok
task_hal_timed_motion_plan_compat=ok
```
`node tests/wasm/node/verify_task_state_matrix.mjs`
```text
task_state_matrix=ok
standalone_emc_status_matrix=ok
```
`./tools/verify_task_standalone_emc_status.sh`
```text
task_standalone_emc_status_wrapper_status_struct=ok
task_standalone_emc_status_wrapper_task_struct=ok
task_standalone_emc_status_wrapper_motion_struct=ok
task_standalone_emc_status_wrapper_io_struct=ok
task_standalone_emc_status_wrapper_sync=ok
task_standalone_emc_status_wasm_status=ok
task_standalone_emc_status_sdk_status=ok
task_standalone_emc_status_state_matrix_status=ok
task_standalone_emc_status_matrix_t007_done=ok
task_standalone_emc_status_matrix_next_none=ok
task_standalone_emc_status_status=ok
```
回归 gate
```text
task_source_reuse_drift_docs_status=ok
task_no_json_motion_plan_main_path_status=ok
task_hal_readiness_contract_status=ok
motion_hal_sync_smoke=ok
```
### 结论
T-007 验收通过。`StandaloneEmcStatus` 已作为当前阶段 `EMC_STAT` 等价容器集中管理 task/motion/io/top 必需字段JSON status 从该容器导出并保持兼容字段一致。任务矩阵当前已全部闭合readiness 仍未提升。
## 2026-07-08 05:28 EDT no-JSON 主 RUN 路径验收
### 验收对象
T-046。
本轮验收目标是证明:
-`verify_task_hal_wasm.sh` smoke 不再调用 `lctask_load_program_motion_plan_json()`
- staged program RUN 可通过 `emcTaskPlanRead()``emcTaskPlanCommand()``emcTaskPlanExecute()``emccanon.cc` command envelope 和 `taskintf.cc` motion issue 完成。
- 主状态保持 `motionPlanLoaded=false``planId=0`
- `loadProgramMotionPlan()` 仍作为 timed motion plan 兼容/调试入口保留,且有单独验证。
- T-040/T-041/T-042/T-043/T-044/T-045、SDK、motion sync、readiness contract 和文档 gate 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
source /home/mes123456/emsdk/emsdk_env.sh >/dev/null && ./tools/build_task_hal_wasm.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_wasm.sh
./tests/wasm/node/verify_task_hal_sdk.sh
node tests/wasm/node/verify_task_state_matrix.mjs
./tools/verify_task_no_json_motion_plan_main_path.sh
./tools/verify_task_emccanon_motion_output.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_emctask_plan_read_execute.sh
./tools/verify_task_hal_readiness_contract.sh
./tests/wasm/node/verify_motion_hal_sync.sh
```
### 实际输出摘要
构建:
```text
linuxcnc_task_hal_wasm_build=ok
```
`SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_runtime_smoke=ok
emctask_plan_read_execute_status=ok
emccanon_motion_output_status=ok
task_hal_no_json_main_path_status=ok
```
`./tests/wasm/node/verify_task_hal_sdk.sh`
```text
linuxcnc_task_hal_sdk=ok
task_hal_sdk_status_snapshot=ok
task_hal_timed_motion_plan_compat=ok
task_hal_comment_source_line_numbers=ok
```
`node tests/wasm/node/verify_task_state_matrix.mjs`
```text
task_state_matrix=ok
run_gate_staged_program_executes_without_json_plan=ok
run_gate_accepts_homed_open_plan=ok
run_gate_json_motion_plan_compat=ok
```
`./tools/verify_task_no_json_motion_plan_main_path.sh`
```text
task_no_json_motion_plan_main_path_wasm_test_main_load_plan=absent
task_no_json_motion_plan_main_path_wasm_test_main_false=ok
task_no_json_motion_plan_main_path_wasm_test_plan_zero=ok
task_no_json_motion_plan_main_path_sdk_compat_call=ok
task_no_json_motion_plan_main_path_state_default_no_json=ok
task_no_json_motion_plan_main_path_matrix_t046_done=ok
task_no_json_motion_plan_main_path_matrix_next_t007=ok
task_no_json_motion_plan_main_path_status=ok
```
回归 gate
```text
task_emccanon_motion_output_status=ok
task_source_reuse_drift_docs_status=ok
task_emctask_plan_read_execute_status=ok
task_hal_readiness_contract_status=ok
motion_hal_sync_smoke=ok
```
### 结论
T-046 验收通过。主 RUN 路径已从 JSON timed motion plan 预加载切换为 staged program plan read/execute + emccanon + taskintf`loadProgramMotionPlan()` 仍保留为兼容/调试入口。readiness 仍保持未提升。
## 2026-07-08 05:06 EDT emccanon motion output/switchkins 验收
### 验收对象
T-045。
本轮验收目标是证明:
- motion output / wait command 已进入 `emccanon_wasm_subset` 的窄 command envelope。
- task-HAL runtime 可观测 `EMC_MOTION_SET_DOUT` / `EMC_MOTION_SET_AOUT` / `EMC_AUX_INPUT_WAIT` append 到 `interp_list` 的 evidence。
- M428/M429/M430 不再走 MDI 字符串 special-case而是通过 canon `SET_AUX_OUTPUT_VALUE()` 到 taskintf AOUT 边界,仍保持 switchkins HAL 同步。
- T-040/T-041/T-042/T-043/T-044、taskintf、SDK、motion sync 和 readiness contract 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
source /home/mes123456/emsdk/emsdk_env.sh >/dev/null && ./tools/build_task_hal_wasm.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_emccanon_motion_output.sh
./tools/verify_task_emccanon_spindle_tool.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_emccanon_dwell_path_control.sh
./tools/verify_task_emccanon_straight_motion.sh
./tools/verify_task_emccanon_init_finish_unit.sh
./tools/verify_task_hal_readiness_contract.sh
node ./tests/wasm/node/verify_task_state_matrix.mjs
./tests/wasm/node/verify_task_hal_sdk.sh
./tests/wasm/node/verify_motion_hal_sync.sh
./tools/verify_task_taskintf_jog_home_switchkins.sh
./tools/verify_task_emctask_plan_read_execute.sh
./tools/verify_task_emctask_plan_open_wait.sh
```
### 实际输出摘要
构建:
```text
linuxcnc_task_hal_wasm_build=ok
```
`SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_runtime_smoke=ok
emccanon_spindle_tool_status=ok
emccanon_motion_output_status=ok
```
`./tools/verify_task_emccanon_motion_output.sh`
```text
task_emccanon_motion_output_upstream_SET_MOTION_OUTPUT_BIT=ok
task_emccanon_motion_output_upstream_CLEAR_MOTION_OUTPUT_BIT=ok
task_emccanon_motion_output_upstream_SET_AUX_OUTPUT_BIT=ok
task_emccanon_motion_output_upstream_CLEAR_AUX_OUTPUT_BIT=ok
task_emccanon_motion_output_upstream_SET_MOTION_OUTPUT_VALUE=ok
task_emccanon_motion_output_upstream_SET_AUX_OUTPUT_VALUE=ok
task_emccanon_motion_output_upstream_WAIT=ok
task_emccanon_motion_output_upstream_dout=ok
task_emccanon_motion_output_upstream_aout=ok
task_emccanon_motion_output_upstream_wait=ok
task_emccanon_motion_output_wrapper_old_m428_special=absent
task_emccanon_motion_output_matrix_t045_done=ok
task_emccanon_motion_output_matrix_next_t046=ok
task_emccanon_motion_output_status=ok
```
`./tools/verify_task_source_reuse_drift_docs.sh`
```text
task_source_reuse_drift_docs_source_emccanon_motion_output=ok
task_source_reuse_drift_docs_drift_emccanon_motion_output=ok
task_source_reuse_drift_docs_compat_emccanon_motion_output_gate=ok
task_source_reuse_drift_docs_compat_emccanon_motion_output_status=ok
task_source_reuse_drift_docs_status=ok
```
回归 gate
```text
task_emccanon_spindle_tool_status=ok
task_emccanon_dwell_path_control_status=ok
task_emccanon_straight_motion_status=ok
task_emccanon_init_finish_unit_status=ok
task_hal_readiness_contract_status=ok
task_state_matrix=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
task_taskintf_jog_home_switchkins_status=ok
task_emctask_plan_read_execute_status=ok
task_emctask_plan_open_wait_status=ok
```
### 结论
T-045 验收通过。canon motion output/switchkins 已有 `EMC_MOTION_SET_DOUT` / `EMC_MOTION_SET_AOUT` / `EMC_AUX_INPUT_WAIT` / `interp_list` status evidenceM428-M430 已通过 canon output 到 taskintf AOUT 边界,旧 MDI 字符串 special-case 已移除readiness 仍未提升。
## 2026-07-08 04:50 EDT emccanon spindle/tool 验收
### 验收对象
T-044。
本轮验收目标是证明:
- spindle/tool command 已进入 `emccanon_wasm_subset` 的窄 command envelope。
- task-HAL runtime 可观测 `EMC_SPINDLE_*` / `EMC_TOOL_*` append 到 `interp_list` 的 evidence。
- MDI `S1200 M3``M5``T7 M6``M61 Q8` 可记录 spindle/tool evidence不误发 motion command。
- T-040/T-041/T-042/T-043、taskintf、SDK、motion sync 和 readiness contract 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
source /home/mes123456/emsdk/emsdk_env.sh >/dev/null && ./tools/build_task_hal_wasm.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_emccanon_spindle_tool.sh
./tools/verify_task_emccanon_dwell_path_control.sh
./tools/verify_task_emccanon_straight_motion.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_emccanon_init_finish_unit.sh
./tools/verify_task_emctask_plan_read_execute.sh
./tools/verify_task_emctask_plan_open_wait.sh
./tools/verify_task_hal_readiness_contract.sh
node ./tests/wasm/node/verify_task_state_matrix.mjs
./tests/wasm/node/verify_task_hal_sdk.sh
./tests/wasm/node/verify_motion_hal_sync.sh
./tools/verify_task_taskintf_jog_home_switchkins.sh
./tools/verify_task_taskintf_linear_move.sh
```
### 实际输出摘要
构建:
```text
linuxcnc_task_hal_wasm_build=ok
```
`SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_runtime_smoke=ok
emccanon_init_finish_unit_status=ok
emccanon_straight_motion_status=ok
emccanon_dwell_path_control_status=ok
emccanon_spindle_tool_status=ok
```
`./tools/verify_task_emccanon_spindle_tool.sh`
```text
task_emccanon_spindle_tool_upstream_SET_SPINDLE_SPEED=ok
task_emccanon_spindle_tool_upstream_START_SPINDLE_CLOCKWISE=ok
task_emccanon_spindle_tool_upstream_START_SPINDLE_COUNTERCLOCKWISE=ok
task_emccanon_spindle_tool_upstream_STOP_SPINDLE_TURNING=ok
task_emccanon_spindle_tool_upstream_SELECT_TOOL=ok
task_emccanon_spindle_tool_upstream_CHANGE_TOOL=ok
task_emccanon_spindle_tool_upstream_CHANGE_TOOL_NUMBER=ok
task_emccanon_spindle_tool_upstream_RELOAD_TOOLDATA=ok
task_emccanon_spindle_tool_subset_anchor=ok
task_emccanon_spindle_tool_wrapper_spindle_append=ok
task_emccanon_spindle_tool_wrapper_tool_append=ok
task_emccanon_spindle_tool_wasm_test_status=ok
task_emccanon_spindle_tool_matrix_t044_done=ok
task_emccanon_spindle_tool_matrix_next_t045=ok
task_emccanon_spindle_tool_status=ok
```
`./tools/verify_task_source_reuse_drift_docs.sh`
```text
task_source_reuse_drift_docs_source_emccanon_spindle_tool=ok
task_source_reuse_drift_docs_drift_emccanon_spindle_tool=ok
task_source_reuse_drift_docs_compat_emccanon_spindle_tool_gate=ok
task_source_reuse_drift_docs_compat_emccanon_spindle_tool_status=ok
task_source_reuse_drift_docs_status=ok
```
回归 gate
```text
task_emccanon_dwell_path_control_status=ok
task_emccanon_straight_motion_status=ok
task_emccanon_init_finish_unit_status=ok
task_emctask_plan_read_execute_status=ok
task_emctask_plan_open_wait_status=ok
task_hal_readiness_contract_status=ok
task_state_matrix=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
task_taskintf_jog_home_switchkins_status=ok
task_taskintf_linear_move_status=ok
```
### 结论
T-044 验收通过。canon spindle/tool command 已有 `EMC_SPINDLE_*` / `EMC_TOOL_*` / `interp_list` status evidencereadiness 仍未提升。
## 2026-07-08 04:34 EDT emccanon dwell/path-control 验收
### 验收对象
T-043。
本轮验收目标是证明:
- `DWELL()``SET_MOTION_CONTROL_MODE()` 已进入 `emccanon_wasm_subset` 的窄 command envelope。
- task-HAL runtime 可观测 `EMC_TRAJ_DELAY` / `EMC_TRAJ_SET_TERM_COND` append 到 `interp_list` 的 evidence。
- MDI `G64 P...``G4 P...` 可进入 path-control / dwell evidence不误发 motion command。
- T-040/T-041/T-042、taskintf、SDK、motion sync 和 readiness contract 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
source /home/mes123456/emsdk/emsdk_env.sh >/dev/null && ./tools/build_task_hal_wasm.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_emccanon_dwell_path_control.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_emccanon_straight_motion.sh
./tools/verify_task_emccanon_init_finish_unit.sh
./tools/verify_task_emctask_plan_read_execute.sh
node ./tests/wasm/node/verify_task_state_matrix.mjs
./tools/verify_task_hal_readiness_contract.sh
./tests/wasm/node/verify_task_hal_sdk.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh
./tools/verify_task_emctask_update_snapshot.sh
./tools/verify_task_emctask_plan_open_wait.sh
./tools/verify_task_emctask_state_mode.sh
./tools/verify_task_emctask_subset.sh
./tools/verify_task_taskintf_motion_bridge.sh
./tools/verify_task_taskintf_traj_control.sh
./tools/verify_task_taskintf_linear_move.sh
./tools/verify_task_taskintf_jog_home_switchkins.sh
git diff --check -- wasm-port/vendor/linuxcnc/src/emc/task/emccanon_wasm_subset.hh wasm-port/vendor/linuxcnc/src/emc/task/emccanon_wasm_subset.cc wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs wasm-port/tools/verify_task_emccanon_dwell_path_control.sh wasm-port/tools/verify_task_emccanon_straight_motion.sh wasm-port/tools/verify_task_source_reuse_drift_docs.sh wasm-port/docs/source-reuse-map.md wasm-port/docs/drift-report.md wasm-port/docs/compatibility-validation.md wasm-port/working/04-任务矩阵.md
```
### 实际输出摘要
构建:
```text
linuxcnc_task_hal_wasm_build=ok
```
`SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_runtime_smoke=ok
emccanon_init_finish_unit_status=ok
emccanon_straight_motion_status=ok
emccanon_dwell_path_control_status=ok
```
`./tools/verify_task_emccanon_dwell_path_control.sh`
```text
task_emccanon_dwell_path_control_upstream_DWELL=ok
task_emccanon_dwell_path_control_upstream_SET_MOTION_CONTROL_MODE=ok
task_emccanon_dwell_path_control_upstream_delay=ok
task_emccanon_dwell_path_control_upstream_term_cond=ok
task_emccanon_dwell_path_control_subset_dwell_impl=ok
task_emccanon_dwell_path_control_subset_path_impl=ok
task_emccanon_dwell_path_control_wrapper_dwell_count=ok
task_emccanon_dwell_path_control_wrapper_term_append=ok
task_emccanon_dwell_path_control_matrix_t043_done=ok
task_emccanon_dwell_path_control_matrix_next_t044=ok
task_emccanon_dwell_path_control_status=ok
```
`./tools/verify_task_source_reuse_drift_docs.sh`
```text
task_source_reuse_drift_docs_source_emccanon_dwell_path_control=ok
task_source_reuse_drift_docs_drift_emccanon_dwell_path_control=ok
task_source_reuse_drift_docs_compat_emccanon_dwell_path_control_gate=ok
task_source_reuse_drift_docs_compat_emccanon_dwell_path_control_status=ok
task_source_reuse_drift_docs_status=ok
```
回归 gate
```text
task_emccanon_straight_motion_status=ok
task_emccanon_init_finish_unit_status=ok
task_emctask_plan_read_execute_status=ok
task_state_matrix=ok
task_hal_readiness_contract_status=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
task_emctask_update_snapshot_status=ok
task_emctask_plan_open_wait_status=ok
task_emctask_state_mode_status=ok
task_emctask_subset_source_reuse=ok
task_taskintf_motion_bridge_status=ok
task_taskintf_traj_control_status=ok
task_taskintf_linear_move_status=ok
task_taskintf_jog_home_switchkins_status=ok
```
### 结论
T-043 验收通过。canon dwell/path-control 已有 `EMC_TRAJ_DELAY` / `EMC_TRAJ_SET_TERM_COND` / `interp_list` status evidencereadiness 仍未提升。
## 2026-07-08 03:52 EDT emccanon straight traverse/feed 验收
### 验收对象
T-042。
本轮验收目标是证明:
- `generate_fast_move()``generate_move()``STRAIGHT_TRAVERSE()``STRAIGHT_FEED()` 已进入 `emccanon_wasm_subset` 的 straight linear move 边界。
- task-HAL runtime 可观测 canon straight move 生成 `EMC_TRAJ_LINEAR_MOVE` 并进入 `interp_list` 路径的 evidence。
- no-json staged program RUN 仍能通过 PlanRead/Execute 后进入 canon straight feed 和 structured taskintf linear move。
- T-041 init/finish/unit、T-040 plan read/execute、taskintf linear move、SDK、motion sync 和 readiness contract 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_emccanon_straight_motion.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_emccanon_init_finish_unit.sh
./tools/verify_task_emctask_plan_read_execute.sh
./tools/verify_task_emccanon_subset.sh
node ./tests/wasm/node/verify_task_state_matrix.mjs
./tools/verify_task_hal_readiness_contract.sh
./tests/wasm/node/verify_task_hal_sdk.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh
./tools/verify_task_emctask_update_snapshot.sh
./tools/verify_task_emctask_plan_open_wait.sh
./tools/verify_task_emctask_state_mode.sh
./tools/verify_task_emctask_subset.sh
./tools/verify_task_taskintf_motion_bridge.sh
./tools/verify_task_taskintf_traj_control.sh
./tools/verify_task_taskintf_linear_move.sh
./tools/verify_task_taskintf_jog_home_switchkins.sh
git diff --check -- wasm-port/vendor/linuxcnc/src/emc/task/emccanon_wasm_subset.hh wasm-port/vendor/linuxcnc/src/emc/task/emccanon_wasm_subset.cc wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs wasm-port/tools/verify_task_emccanon_straight_motion.sh wasm-port/tools/verify_task_emccanon_init_finish_unit.sh wasm-port/tools/verify_task_source_reuse_drift_docs.sh wasm-port/docs/source-reuse-map.md wasm-port/docs/drift-report.md wasm-port/docs/compatibility-validation.md wasm-port/working/04-任务矩阵.md
```
### 实际输出摘要
`./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
emctask_plan_read_execute_status=ok
emccanon_subset_source_reuse_status=ok
emccanon_init_finish_unit_status=ok
emccanon_straight_motion_status=ok
```
`./tools/verify_task_emccanon_straight_motion.sh`
```text
task_emccanon_straight_motion_upstream_generate_fast_move=ok
task_emccanon_straight_motion_upstream_generate_move=ok
task_emccanon_straight_motion_upstream_STRAIGHT_TRAVERSE=ok
task_emccanon_straight_motion_upstream_STRAIGHT_FEED=ok
task_emccanon_straight_motion_upstream_linear_move=ok
task_emccanon_straight_motion_upstream_interp_list=ok
task_emccanon_straight_motion_subset_linear_anchor=ok
task_emccanon_straight_motion_wrapper_append_count=ok
task_emccanon_straight_motion_wrapper_last_command=ok
task_emccanon_straight_motion_matrix_t042_done=ok
task_emccanon_straight_motion_matrix_next_t043=ok
task_emccanon_straight_motion_status=ok
```
`./tools/verify_task_source_reuse_drift_docs.sh`
```text
task_source_reuse_drift_docs_source_emccanon_straight_motion=ok
task_source_reuse_drift_docs_drift_emccanon_straight_motion=ok
task_source_reuse_drift_docs_compat_emccanon_straight_motion_gate=ok
task_source_reuse_drift_docs_compat_emccanon_straight_motion_status=ok
task_source_reuse_drift_docs_status=ok
```
回归 gate
```text
task_emccanon_init_finish_unit_status=ok
task_emctask_plan_read_execute_status=ok
task_emccanon_subset_source_reuse=ok
task_state_matrix=ok
task_hal_readiness_contract_status=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
task_emctask_update_snapshot_status=ok
task_emctask_plan_open_wait_status=ok
task_emctask_state_mode_status=ok
task_emctask_subset_source_reuse=ok
task_taskintf_motion_bridge_status=ok
task_taskintf_traj_control_status=ok
task_taskintf_linear_move_status=ok
task_taskintf_jog_home_switchkins_status=ok
```
### 结论
T-042 验收通过。canon straight traverse/feed 已有 `EMC_TRAJ_LINEAR_MOVE` / `interp_list` status evidence且 no-json staged program RUN、taskintf structured linear move 和 readiness contract 均未回退。
## 2026-07-08 03:36 EDT emccanon init/finish/unit 验收
### 验收对象
T-041。
本轮验收目标是证明:
- `INIT_CANON()``ON_RESET()``FINISH()``USE_LENGTH_UNITS()``GET_EXTERNAL_LENGTH_UNITS()``GET_EXTERNAL_ANGLE_UNITS()``GET_EXTERNAL_POSITION*()` 已进入 `emccanon_wasm_subset` 的窄状态边界。
- task-HAL runtime 可通过 motion/config snapshot 更新 canon unit 和 endpoint evidence。
- `emccanonSourceReuse` status JSON 可观测 init/finish/reset/unit/position/endpoint 状态。
- T-039/T-040 plan gate、taskintf gate、SDK、motion sync 和 readiness contract 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_emccanon_init_finish_unit.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_emctask_plan_read_execute.sh
./tools/verify_task_emccanon_subset.sh
node ./tests/wasm/node/verify_task_state_matrix.mjs
./tests/wasm/node/verify_task_hal_sdk.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh
./tools/verify_task_hal_readiness_contract.sh
./tools/verify_task_emctask_update_snapshot.sh
./tools/verify_task_emctask_plan_open_wait.sh
./tools/verify_task_emctask_state_mode.sh
./tools/verify_task_emctask_subset.sh
./tools/verify_task_taskintf_motion_bridge.sh
./tools/verify_task_taskintf_traj_control.sh
./tools/verify_task_taskintf_linear_move.sh
./tools/verify_task_taskintf_jog_home_switchkins.sh
git diff --check -- wasm-port/vendor/linuxcnc/src/emc/task/emccanon_wasm_subset.hh wasm-port/vendor/linuxcnc/src/emc/task/emccanon_wasm_subset.cc wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs wasm-port/tools/verify_task_emccanon_init_finish_unit.sh wasm-port/tools/verify_task_source_reuse_drift_docs.sh wasm-port/tools/verify_task_taskintf_jog_home_switchkins.sh wasm-port/tools/verify_task_emctask_plan_read_execute.sh wasm-port/docs/source-reuse-map.md wasm-port/docs/drift-report.md wasm-port/docs/compatibility-validation.md wasm-port/working/04-任务矩阵.md
```
### 实际输出摘要
`./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
emctask_plan_read_execute_status=ok
emccanon_subset_source_reuse_status=ok
emccanon_init_finish_unit_status=ok
```
`./tools/verify_task_emccanon_init_finish_unit.sh`
```text
task_emccanon_init_finish_unit_upstream_INIT_CANON=ok
task_emccanon_init_finish_unit_upstream_ON_RESET=ok
task_emccanon_init_finish_unit_upstream_FINISH=ok
task_emccanon_init_finish_unit_upstream_USE_LENGTH_UNITS=ok
task_emccanon_init_finish_unit_upstream_GET_EXTERNAL_LENGTH_UNITS=ok
task_emccanon_init_finish_unit_upstream_GET_EXTERNAL_ANGLE_UNITS=ok
task_emccanon_init_finish_unit_upstream_GET_EXTERNAL_POSITION=ok
task_emccanon_init_finish_unit_subset_state=ok
task_emccanon_init_finish_unit_wrapper_status_endpoint=ok
task_emccanon_init_finish_unit_matrix_t041_done=ok
task_emccanon_init_finish_unit_matrix_next_t042=ok
task_emccanon_init_finish_unit_status=ok
```
`./tools/verify_task_source_reuse_drift_docs.sh`
```text
task_source_reuse_drift_docs_source_emccanon_init_finish_unit=ok
task_source_reuse_drift_docs_drift_emccanon_init_finish_unit=ok
task_source_reuse_drift_docs_compat_emccanon_init_finish_unit_gate=ok
task_source_reuse_drift_docs_compat_emccanon_init_finish_unit_status=ok
task_source_reuse_drift_docs_status=ok
```
回归 gate
```text
task_emctask_plan_read_execute_status=ok
task_emccanon_subset_source_reuse=ok
task_state_matrix=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
task_hal_readiness_contract_status=ok
task_emctask_update_snapshot_status=ok
task_emctask_plan_open_wait_status=ok
task_emctask_state_mode_status=ok
task_emctask_subset_source_reuse=ok
task_taskintf_motion_bridge_status=ok
task_taskintf_traj_control_status=ok
task_taskintf_linear_move_status=ok
task_taskintf_jog_home_switchkins_status=ok
```
### 结论
T-041 验收通过。canon init/reset/finish/unit/endpoint 状态已由 `emccanon_wasm_subset` 驱动并进入 task-HAL status evidenceT-042 可继续推进 straight traverse/feed 子集。
## 2026-07-08 03:14 EDT emctask plan read/execute 验收
### 验收对象
T-040。
本轮验收目标是证明:
- `emcTaskPlanRead()``emcTaskPlanExecute()``emcTaskPlanLine()``emcTaskPlanLevel()``emcTaskPlanCommand()` 已进入 `emctask_wasm_subset` 的 plan IO result 边界。
- staged program 不再必须依赖 host JSON motion plan 才能 RUN。
- no-json staged program RUN 可通过 PlanRead/Command/Execute 进入 `interp_list`/taskintf issue 等价路径。
- MDI execute 也记录 PlanExecute evidence。
- 现有 task-HAL smoke、state matrix、source reuse/drift 文档和 readiness 均不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_emctask_plan_read_execute.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_emctask_plan_open_wait.sh
node ./tests/wasm/node/verify_task_state_matrix.mjs
./tools/verify_task_emctask_update_snapshot.sh
./tools/verify_task_emctask_state_mode.sh
./tools/verify_task_emctask_subset.sh
./tests/wasm/node/verify_task_hal_sdk.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh
./tools/verify_task_hal_readiness_contract.sh
```
### 实际输出摘要
`./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
task_commands_drive_motion_runtime=ok
emctask_subset_source_reuse_status=ok
emctask_plan_read_execute_status=ok
taskintf_motion_bridge_status=ok
emccanon_subset_source_reuse_status=ok
```
`./tools/verify_task_emctask_plan_read_execute.sh`
```text
task_emctask_plan_read_execute_upstream_emcTaskPlanRead=ok
task_emctask_plan_read_execute_upstream_emcTaskPlanExecute=ok
task_emctask_plan_read_execute_upstream_emcTaskPlanLine=ok
task_emctask_plan_read_execute_upstream_emcTaskPlanLevel=ok
task_emctask_plan_read_execute_upstream_emcTaskPlanCommand=ok
task_emctask_plan_read_execute_upstream_interp_list=ok
task_emctask_plan_read_execute_subset_plan_io_result=ok
task_emctask_plan_read_execute_wrapper_read_execute_helper=ok
task_emctask_plan_read_execute_wrapper_no_json_run=ok
task_emctask_plan_read_execute_wrapper_status_interp_list=ok
task_emctask_plan_read_execute_state_matrix_no_json=ok
task_emctask_plan_read_execute_matrix_t040_done=ok
task_emctask_plan_read_execute_matrix_next_t041=ok
task_emctask_plan_read_execute_status=ok
```
补充回归:
```text
task_source_reuse_drift_docs_status=ok
task_emctask_plan_open_wait_status=ok
task_state_matrix=ok
run_gate_staged_program_executes_without_json_plan=ok
task_emctask_update_snapshot_status=ok
task_emctask_state_mode_status=ok
task_emctask_subset_source_reuse=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
task_hal_readiness_contract_status=ok
```
### 结论
T-040 通过。`emctask.cc` plan read/execute/line/level/command 子集已接入 staged program 主路径RUN 不再硬依赖 host JSON motion plan。完整 canon init/finish/unit 和更完整 `interp_list` 命令类型迁移留给 T-041 之后继续推进。
## 2026-07-08 02:30 EDT emctask plan wait/open/synch/reset 验收
### 验收对象
T-039。
本轮验收目标是证明:
- `emcTaskPlanSetWait()``emcTaskPlanIsWait()``emcTaskPlanClearWait()``emcTaskPlanSynch()``emcTaskPlanOpen()``emcTaskPlanClose()``emcTaskPlanReset()` 已进入 `emctask_wasm_subset` 的 plan state/result 边界。
- `lctask_open_program()` 正常路径通过 plan open 处理 staged FS program open。
- `EMC_TASK_PLAN_RUN` 设置 plan wait程序完成和 motion wait done 路径清理 plan wait。
- `should_plan_synch` 通过 `emctask_plan_synch()` 记录 source-anchored plan synch。
- 现有 task-HAL smoke、state matrix、source reuse/drift 文档和 readiness 均不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_emctask_plan_open_wait.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_emctask_update_snapshot.sh
./tools/verify_task_emctask_state_mode.sh
./tools/verify_task_emctask_subset.sh
node ./tests/wasm/node/verify_task_state_matrix.mjs
./tests/wasm/node/verify_task_hal_sdk.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh
./tools/verify_task_hal_readiness_contract.sh
```
### 实际输出摘要
`./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
task_commands_drive_motion_runtime=ok
emctask_subset_source_reuse_status=ok
taskintf_motion_bridge_status=ok
taskintf_jog_home_switchkins_status=ok
emccanon_subset_source_reuse_status=ok
```
`./tools/verify_task_emctask_plan_open_wait.sh`
```text
task_emctask_plan_open_wait_upstream_emcTaskPlanSetWait=ok
task_emctask_plan_open_wait_upstream_emcTaskPlanIsWait=ok
task_emctask_plan_open_wait_upstream_emcTaskPlanClearWait=ok
task_emctask_plan_open_wait_upstream_emcTaskPlanSynch=ok
task_emctask_plan_open_wait_upstream_emcTaskPlanOpen=ok
task_emctask_plan_open_wait_upstream_emcTaskPlanClose=ok
task_emctask_plan_open_wait_upstream_emcTaskPlanReset=ok
task_emctask_plan_open_wait_subset_plan_state=ok
task_emctask_plan_open_wait_subset_plan_result=ok
task_emctask_plan_open_wait_wrapper_plan_open=ok
task_emctask_plan_open_wait_wrapper_plan_wait=ok
task_emctask_plan_open_wait_wrapper_plan_clear=ok
task_emctask_plan_open_wait_wrapper_plan_synch=ok
task_emctask_plan_open_wait_wrapper_plan_close=ok
task_emctask_plan_open_wait_wrapper_plan_reset=ok
task_emctask_plan_open_wait_matrix_t039_done=ok
task_emctask_plan_open_wait_matrix_next_t040=ok
task_emctask_plan_open_wait_status=ok
```
补充回归:
```text
task_source_reuse_drift_docs_status=ok
task_emctask_update_snapshot_status=ok
task_emctask_state_mode_status=ok
task_emctask_subset_source_reuse=ok
task_state_matrix=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
task_hal_readiness_contract_status=ok
```
### 结论
T-039 通过。`emctask.cc` plan wait/open/synch/reset 子集已接入 staged FS 和 task-cycle command 边界;完整 `PlanRead/Execute/Line/Level/Command``interp_list` 驱动留给 T-040。readiness 仍保持未 promoted。
## 2026-07-08 01:57 EDT emctask determine/update snapshot 验收
### 验收对象
T-038。
本轮验收目标是证明:
- `determineMode()``determineState()``emcTaskUpdate()` 已进入 `emctask_wasm_subset` 的 update 边界。
- `wasm_emcTaskUpdate()` 正常路径从 task cycle 的 `LcmotStatusSnapshot` 和 IO latch 构造 update 输入。
- status JSON 能记录 snapshot-fed update 证据。
- 现有 task-HAL smoke、state matrix、source reuse/drift 文档和 readiness 均不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_emctask_update_snapshot.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_emctask_state_mode.sh
./tools/verify_task_emctask_subset.sh
node ./tests/wasm/node/verify_task_state_matrix.mjs
./tests/wasm/node/verify_task_hal_sdk.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh
./tools/verify_task_hal_readiness_contract.sh
```
### 实际输出摘要
`./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
emctask_subset_source_reuse_status=ok
taskintf_motion_bridge_status=ok
taskintf_jog_home_switchkins_status=ok
```
`./tools/verify_task_emctask_update_snapshot.sh`
```text
task_emctask_update_snapshot_upstream_determineMode=ok
task_emctask_update_snapshot_upstream_determineState=ok
task_emctask_update_snapshot_upstream_emcTaskUpdate=ok
task_emctask_update_snapshot_wrapper_motion_coord=ok
task_emctask_update_snapshot_wrapper_motion_enabled=ok
task_emctask_update_snapshot_wrapper_io_estop=ok
task_emctask_update_snapshot_wrapper_status_source=ok
task_emctask_update_snapshot_wasm_assertion=ok
task_emctask_update_snapshot_matrix_t038_done=ok
task_emctask_update_snapshot_matrix_next_t039=ok
task_emctask_update_snapshot_status=ok
```
补充回归:
```text
task_source_reuse_drift_docs_status=ok
task_emctask_state_mode_status=ok
task_emctask_subset_source_reuse=ok
task_state_matrix=ok
task_command_json_host_boundary=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
task_hal_readiness_contract_status=ok
```
### 结论
T-038 通过。`emctask.cc` determine/update 子集已由 motion/io snapshot 驱动task cycle command 触发语义保持稳定readiness 仍保持未 promoted。下一步进入 T-039。
## 2026-07-08 01:49 EDT emctask abort/state/mode 验收
### 验收对象
T-037。
本轮验收目标是证明:
- `emcTaskAbort()``emcTaskSetMode()``emcTaskSetState()` 已进入 `emctask_wasm_subset` 的 command-result 边界。
- wrapper 的 SetState/SetMode/Abort 分支通过 `lc_emctask_subset_*()` 决策结果执行。
- command 仍由 task cycle 消费,不在 send 阶段改变 task 语义状态。
- 现有 task-HAL smoke、state matrix、readiness 均不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_emctask_state_mode.sh
./tools/verify_task_emctask_subset.sh
./tools/verify_task_source_reuse_drift_docs.sh
node ./tests/wasm/node/verify_task_state_matrix.mjs
./tests/wasm/node/verify_task_hal_sdk.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh
./tools/verify_task_hal_readiness_contract.sh
```
### 实际输出摘要
`./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
task_commands_drive_motion_runtime=ok
emctask_subset_source_reuse_status=ok
taskintf_motion_bridge_status=ok
taskintf_jog_home_switchkins_status=ok
```
`./tools/verify_task_emctask_state_mode.sh`
```text
task_emctask_state_mode_upstream_emcTaskAbort=ok
task_emctask_state_mode_upstream_emcTaskSetMode=ok
task_emctask_state_mode_upstream_emcTaskSetState=ok
task_emctask_state_mode_subset_result_type=ok
task_emctask_state_mode_wrapper_result_apply=ok
task_emctask_state_mode_wrapper_status_count=ok
task_emctask_state_mode_matrix_t037_done=ok
task_emctask_state_mode_matrix_next_t038=ok
task_emctask_state_mode_status=ok
```
`node ./tests/wasm/node/verify_task_state_matrix.mjs`
```text
task_state_matrix=ok
run_gate_estop_rejected=ok
run_gate_estop_reset_rejected=ok
run_gate_manual_rejected=ok
run_gate_unhomed_rejected=ok
run_gate_homing_rejected=ok
run_gate_program_open_required=ok
run_gate_interpreter_plan_required=ok
run_gate_accepts_homed_open_plan=ok
task_command_send_queues_until_cycle=ok
task_command_json_host_boundary=ok
```
补充回归:
```text
task_emctask_subset_source_reuse=ok
task_source_reuse_drift_docs_status=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
task_hal_readiness_contract_status=ok
```
### 结论
T-037 通过。`emctask.cc` abort/state/mode 子集已通过结构化 command-result 接入task cycle command 触发语义保持稳定readiness 仍保持未 promoted。下一步进入 T-038。
## 2026-07-08 01:39 EDT taskintf jog/home/switchkins 验收
### 验收对象
T-036。
本轮验收目标是证明:
- `emcJogIncr()``emcJointHome()``emcJointUnhome()``emcMotionSetAout()` 已进入 `taskintf_wasm_subset` 的结构化 command envelope。
- task runtime 的 jog/home/switchkins 主路径不再依赖 task wrapper 拼接 motion JSON而是调用结构化 `lcmot_write_*()`
- Home/Jog/M428/M429/M430 smoke 均通过,且 readiness 不提升。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_taskintf_jog_home_switchkins.sh
./tools/verify_task_taskintf_subset.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_taskintf_linear_move.sh
./tools/verify_task_taskintf_traj_control.sh
./tools/verify_task_taskintf_motion_bridge.sh
./tools/verify_task_hal_readiness_contract.sh
./tests/wasm/node/verify_task_hal_sdk.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh
```
### 实际输出摘要
`./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
mdi_jog_home_motion_issue_from_execute=ok
mdi_jog_task_motion_hal_sync=ok
taskintf_subset_source_reuse_status=ok
taskintf_motion_bridge_status=ok
taskintf_traj_control_status=ok
taskintf_linear_move_status=ok
taskintf_jog_home_switchkins_status=ok
```
`./tools/verify_task_taskintf_jog_home_switchkins.sh`
```text
task_taskintf_jog_home_switchkins_upstream_taskintf_emcJogIncr=ok
task_taskintf_jog_home_switchkins_upstream_taskintf_emcJointHome=ok
task_taskintf_jog_home_switchkins_upstream_taskintf_emcJointUnhome=ok
task_taskintf_jog_home_switchkins_upstream_taskintf_emcMotionSetAout=ok
task_taskintf_jog_home_switchkins_lcmot_jog_abi=ok
task_taskintf_jog_home_switchkins_lcmot_home_abi=ok
task_taskintf_jog_home_switchkins_lcmot_unhome_abi=ok
task_taskintf_jog_home_switchkins_lcmot_aout_abi=ok
task_taskintf_jog_home_switchkins_wrapper_status_count=ok
task_taskintf_jog_home_switchkins_matrix_t036_done=ok
task_taskintf_jog_home_switchkins_matrix_next_t037=ok
task_taskintf_jog_home_switchkins_status=ok
```
补充回归:
```text
task_taskintf_subset_source_reuse=ok
task_source_reuse_drift_docs_status=ok
task_taskintf_linear_move_status=ok
task_taskintf_traj_control_status=ok
task_taskintf_motion_bridge_status=ok
task_hal_readiness_contract_status=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
```
### 结论
T-036 通过。`taskintf.cc` jog/home/switchkins 子集已通过结构化 `lcmot_write_*()` 接入Home/Jog/M428-M430 smoke 通过readiness 仍保持未 promoted。下一步进入 T-037。
## 2026-07-08 01:27 EDT taskintf linear move 验收
### 验收对象
T-035。
本轮验收目标是证明:
- `emcTrajLinearMove()` 已进入 `taskintf_wasm_subset` 的结构化 linear move envelope。
- task runtime 的 linear move 主路径不再依赖 task wrapper 拼接 linear move JSON而是调用 `lcmot_write_linear_move()`
- pending execute flush 也能携带结构化 `LcTaskIntfSubsetMotionCommand`
- G0/G1 smoke 均通过,且 readiness 不提升。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_taskintf_linear_move.sh
./tools/verify_task_taskintf_subset.sh
./tools/verify_task_source_reuse_drift_docs.sh
./tools/verify_task_taskintf_traj_control.sh
./tools/verify_task_hal_readiness_contract.sh
./tools/verify_task_taskintf_motion_bridge.sh
./tests/wasm/node/verify_task_hal_sdk.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh
```
### 实际输出摘要
`./tests/wasm/node/verify_task_hal_wasm.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
taskintf_subset_source_reuse_status=ok
taskintf_motion_bridge_status=ok
taskintf_traj_control_status=ok
taskintf_linear_move_status=ok
emccanon_subset_source_reuse_status=ok
```
`./tools/verify_task_taskintf_linear_move.sh`
```text
task_taskintf_linear_move_upstream_emcTrajLinearMove=ok
task_taskintf_linear_move_upstream_sets_line=ok
task_taskintf_linear_move_upstream_writes_command=ok
task_taskintf_linear_move_subset_linear_move_ex_decl=ok
task_taskintf_linear_move_lcmot_linear_abi=ok
task_taskintf_linear_move_wrapper_structured_issue=ok
task_taskintf_linear_move_wrapper_pending_struct=ok
task_taskintf_linear_move_build_exports_linear=ok
task_taskintf_linear_move_wasm_test_prints_linear=ok
task_taskintf_linear_move_matrix_t035_done=ok
task_taskintf_linear_move_matrix_next_t036=ok
task_taskintf_linear_move_status=ok
```
补充回归:
```text
task_taskintf_subset_source_reuse=ok
task_source_reuse_drift_docs_status=ok
task_taskintf_traj_control_status=ok
task_hal_readiness_contract_status=ok
task_taskintf_motion_bridge_status=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
```
### 结论
T-035 通过。`taskintf.cc` linear move issue 子集已通过结构化 `lcmot_write_linear_move()` 接入G0/G1 smoke 通过readiness 仍保持未 promoted。下一步进入 T-036。
## 2026-07-08 01:13 EDT taskintf traj control 验收
### 验收对象
T-034。
本轮验收目标是证明:
- `emcTrajEnable()` / `emcTrajDisable()` / `emcTrajAbort()` / `emcTrajPause()` / `emcTrajStep()` / `emcTrajResume()` / `emcTrajSetMotionId()` 已进入 `taskintf_wasm_subset`
- enable/disable/set-motion-id 已接入 `lcmot` runtime 状态。
- task state ON/OFF、pause/step/resume、program/MDI motion issue 都能通过 taskintf traj control 入口。
- 现有 pause/step/resume smoke 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_taskintf_traj_control.sh
```
### 实际输出摘要
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
pause_freezes_motion_queue=ok
resume_restores_interp_resume_state=ok
step_returns_to_paused=ok
pause_resume_step_motion_issue_from_execute=ok
taskintf_subset_source_reuse_status=ok
taskintf_motion_bridge_status=ok
taskintf_traj_control_status=ok
```
`./tools/verify_task_taskintf_traj_control.sh`
```text
task_taskintf_traj_control_upstream_taskintf=ok
task_taskintf_traj_control_upstream_motion=ok
task_taskintf_traj_control_subset_source=ok
task_taskintf_traj_control_subset_header=ok
task_taskintf_traj_control_lcmot_header=ok
task_taskintf_traj_control_lcmot_source=ok
task_taskintf_traj_control_task_wrapper=ok
task_taskintf_traj_control_wasm_test=ok
task_taskintf_traj_control_matrix=ok
task_taskintf_traj_control_subset_has_enable_fn=ok
task_taskintf_traj_control_subset_has_disable_fn=ok
task_taskintf_traj_control_subset_has_motion_id_fn=ok
task_taskintf_traj_control_lcmot_enable_command=ok
task_taskintf_traj_control_lcmot_disable_command=ok
task_taskintf_traj_control_lcmot_motion_id_command=ok
task_taskintf_traj_control_wrapper_exports_traj_count=ok
task_taskintf_traj_control_wasm_test_prints_traj=ok
task_taskintf_traj_control_matrix_t034_done=ok
task_taskintf_traj_control_matrix_next_t035=ok
task_taskintf_traj_control_status=ok
```
补充回归:
```text
task_taskintf_subset_source_reuse=ok
task_source_reuse_drift_docs_status=ok
task_hal_readiness_contract_status=ok
task_taskintf_motion_bridge_status=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
```
### 结论
T-034 通过。`taskintf.cc` traj control 子集已接入 `lcmot`,并通过 smoke 证明 pause/step/resume 不回退readiness 仍保持未 promoted。
## 2026-07-08 01:00 EDT taskintf motion bridge 验收
### 验收对象
T-033。
本轮验收目标是证明:
- `emcMotionInit()` 通过 `taskintf_wasm_subset` 的 motion bridge 初始化 `lcmot`
- `emcMotionUpdate()` 通过 bridge 读取 status/config/error而不是 task wrapper 直接读取 motion snapshot。
- `emcMotionAbort()` 通过 bridge 生成 abort command。
- `lcmot_read_config_snapshot()``lcmot_read_error_message()` 已作为窄 runtime-edge ABI 存在。
- task cycle snapshot smoke 继续通过readiness 不提升。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
./tools/verify_task_taskintf_motion_bridge.sh
```
### 实际输出摘要
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
task_status_updates_from_cycle_snapshot=ok
motion_abort_drives_task_error=ok
motion_error_drives_task_error=ok
motion_soft_limit_drives_task_error=ok
task_top_level_rcs_status_aggregation=ok
taskintf_subset_source_reuse_status=ok
taskintf_motion_bridge_status=ok
```
`./tools/verify_task_taskintf_motion_bridge.sh`
```text
task_taskintf_motion_bridge_upstream_taskintf=ok
task_taskintf_motion_bridge_upstream_usrmot=ok
task_taskintf_motion_bridge_subset_source=ok
task_taskintf_motion_bridge_subset_header=ok
task_taskintf_motion_bridge_lcmot_header=ok
task_taskintf_motion_bridge_lcmot_source=ok
task_taskintf_motion_bridge_task_wrapper=ok
task_taskintf_motion_bridge_wasm_test=ok
task_taskintf_motion_bridge_build_script=ok
task_taskintf_motion_bridge_matrix=ok
task_taskintf_motion_bridge_subset_has_motion_init=ok
task_taskintf_motion_bridge_subset_has_motion_update=ok
task_taskintf_motion_bridge_subset_has_motion_abort=ok
task_taskintf_motion_bridge_lcmot_has_config_read=ok
task_taskintf_motion_bridge_lcmot_has_error_read=ok
task_taskintf_motion_bridge_wrapper_status_exports_bridge=ok
task_taskintf_motion_bridge_wasm_test_prints_bridge=ok
task_taskintf_motion_bridge_matrix_t033_done=ok
task_taskintf_motion_bridge_matrix_next_t034=ok
task_taskintf_motion_bridge_status=ok
```
补充回归:
```text
task_taskintf_subset_source_reuse=ok
task_source_reuse_drift_docs_status=ok
task_hal_readiness_contract_status=ok
task_usrmot_shim_design_status=ok
linuxcnc_task_hal_sdk=ok
task_hal_sdk_status_snapshot=ok
```
### 结论
T-033 通过。task cycle 的 motion init/update/abort 已经走 `taskintf.cc` 窄 motion bridgeconfig/error read 有窄 `lcmot_*` ABI完整 native usrmot/shared-memory/NML 拓扑仍未 promoted。
## 2026-07-08 00:52 EDT taskintf usrmot shim 设计验收
### 验收对象
T-032。
本轮验收目标是证明:
- 已明确 `taskintf.cc` 侧 usrmot shim 不直接复用完整 `usrmotintf.cc`
- command write 映射到 `lcmot_write_command_json()`
- status read 映射到 `lcmot_read_status_snapshot()`,并保持不推进 servo、不消费队列、不反解析 JSON。
- config read 明确需要新增 `lcmot_read_config_snapshot()`,当前不能声明已支持。
- error read 明确需要新增 `lcmot_read_error_message()`,当前不能把 boolean error flag 当作错误队列。
- T-032 已完成,下一步进入 T-033。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_usrmot_shim_design.sh
```
### 实际输出摘要
```text
task_usrmot_shim_design_doc=ok
task_usrmot_shim_design_matrix=ok
task_usrmot_shim_design_upstream_header=ok
task_usrmot_shim_design_upstream_source=ok
task_usrmot_shim_design_upstream_taskintf=ok
task_usrmot_shim_design_lcmot_header=ok
task_usrmot_shim_design_lcmot_source=ok
task_usrmot_shim_design_taskintf_subset_header=ok
task_usrmot_shim_design_lcmot_has_command_write=ok
task_usrmot_shim_design_lcmot_has_status_snapshot=ok
task_usrmot_shim_design_lcmot_has_init=ok
task_usrmot_shim_design_lcmot_has_reset=ok
task_usrmot_shim_design_doc_command_write=ok
task_usrmot_shim_design_doc_command_maps_lcmot=ok
task_usrmot_shim_design_doc_status_read=ok
task_usrmot_shim_design_doc_status_maps_lcmot=ok
task_usrmot_shim_design_doc_config_read=ok
task_usrmot_shim_design_doc_config_gap=ok
task_usrmot_shim_design_doc_error_read=ok
task_usrmot_shim_design_doc_error_gap=ok
task_usrmot_shim_design_doc_no_json_status_parse=ok
task_usrmot_shim_design_doc_no_hal_config=ok
task_usrmot_shim_design_doc_no_readiness_promotion=ok
task_usrmot_shim_design_readme_lists_doc=ok
task_usrmot_shim_design_matrix_t032_done=ok
task_usrmot_shim_design_matrix_next_t033=ok
task_usrmot_shim_design_status=ok
```
补充回归:
```text
task_taskintf_subset_source_reuse=ok
task_source_reuse_drift_docs_status=ok
task_hal_readiness_contract_status=ok
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
task_top_level_rcs_status_aggregation=ok
taskintf_subset_source_reuse_status=ok
```
### 结论
T-032 通过。`taskintf.cc` usrmot shim 的四类核心边界已经设计闭合command write/status read 有当前 `lcmot_*` 落点config read/error read 作为 T-033 之前必须补齐的底层 ABI 缺口被明确记录。
## 2026-07-08 00:43 EDT source reuse / drift 文档验收
### 验收对象
T-030。
本轮验收目标是证明:
- `docs/source-reuse-map.md` 反映 T-027/T-028/T-029 后的 task 主循环迁移阶段。
- `docs/drift-report.md` 记录 task/motion/HAL WASM runtime-edge 和 `emc_nml.hh` status container 边界。
- `docs/compatibility-validation.md` 记录 task-HAL WASM/SDK、readiness、`emc_nml` 复用评估和文档一致性验证 gate。
- readiness 仍保持未 promoted不出现 `nativeTaskReady=true``nativeHalSyncReady=true`
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_source_reuse_drift_docs.sh
```
### 实际输出摘要
```text
task_source_reuse_drift_docs_source_reuse=ok
task_source_reuse_drift_docs_drift=ok
task_source_reuse_drift_docs_compatibility=ok
task_source_reuse_drift_docs_matrix=ok
task_source_reuse_drift_docs_source_task_row=ok
task_source_reuse_drift_docs_source_readiness_promoted=ok
task_source_reuse_drift_docs_source_native_task_false=ok
task_source_reuse_drift_docs_source_native_hal_false=ok
task_source_reuse_drift_docs_source_full_program_false=ok
task_source_reuse_drift_docs_source_rcs_aggregation=ok
task_source_reuse_drift_docs_source_emc_nml_decision=ok
task_source_reuse_drift_docs_source_readiness_gate=ok
task_source_reuse_drift_docs_source_emc_nml_gate=ok
task_source_reuse_drift_docs_source_docs_gate=ok
task_source_reuse_drift_docs_source_native_task_true=absent
task_source_reuse_drift_docs_source_native_hal_true=absent
task_source_reuse_drift_docs_drift_task_boundary=ok
task_source_reuse_drift_docs_drift_emc_nml_boundary=ok
task_source_reuse_drift_docs_drift_rcs_aggregation=ok
task_source_reuse_drift_docs_drift_readiness_false=ok
task_source_reuse_drift_docs_drift_runtime_promoted_false=ok
task_source_reuse_drift_docs_drift_no_promotion=ok
task_source_reuse_drift_docs_compat_task_hal_wasm=ok
task_source_reuse_drift_docs_compat_task_hal_sdk=ok
task_source_reuse_drift_docs_compat_readiness_gate=ok
task_source_reuse_drift_docs_compat_emc_nml_gate=ok
task_source_reuse_drift_docs_compat_docs_gate=ok
task_source_reuse_drift_docs_compat_rcs_status=ok
task_source_reuse_drift_docs_compat_readiness_false=ok
task_source_reuse_drift_docs_matrix_t030_done=ok
task_source_reuse_drift_docs_status=ok
```
补充回归:
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_runtime_smoke=ok
task_hal_readiness_contract_status=ok
task_emc_nml_reuse_plan_status=ok
```
未完成验证:
```text
./tests/docs/node/verify_project_release_handoff_docs.sh
```
该 docs gate 当前因 `/home/mes123456/cnc_wams/PROJECT_COMPLETION_TRACKER.md` 缺失而失败,失败发生在读取 tracker 文件阶段,未进入本轮修改的 source reuse / drift / compatibility 断言。
### 结论
T-030 通过。source reuse、drift、compatibility 文档已同步当前 task 主循环迁移阶段、readiness false 口径、RCS 聚合和 `emc_nml.hh` 复用决策。
## 2026-07-08 00:36 EDT emc_nml 复用评估验收
### 验收对象
T-029。
本轮验收目标是证明:
- 已评估上游 `emc_nml.hh` 的直接 include 依赖。
- 已明确当前 vendor tree 未包含完整 `emc_nml.hh`
- 已形成选择记录:当前不直接 include 完整 `emc_nml.hh`,先走分阶段 typedef / 窄 `StandaloneEmcStatus`
- 已记录后续 T-007/T-030/T-032/T-033/T-038 入口。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_emc_nml_reuse_plan.sh
```
### 实际输出摘要
```text
task_emc_nml_reuse_plan_upstream=ok
task_emc_nml_reuse_plan_doc=ok
task_emc_nml_reuse_plan_matrix=ok
task_emc_nml_reuse_plan_vendor_emc_nml_hh=absent
task_emc_nml_reuse_plan_upstream_has_emc_stat=ok
task_emc_nml_reuse_plan_upstream_has_task_stat=ok
task_emc_nml_reuse_plan_upstream_has_motion_stat=ok
task_emc_nml_reuse_plan_upstream_has_io_stat=ok
task_emc_nml_reuse_plan_doc_choice=ok
task_emc_nml_reuse_plan_doc_strategy=ok
task_emc_nml_reuse_plan_doc_standalone=ok
task_emc_nml_reuse_plan_doc_dependency_nml=ok
task_emc_nml_reuse_plan_doc_dependency_rs274=ok
task_emc_nml_reuse_plan_doc_boundary=ok
task_emc_nml_reuse_plan_doc_next_t032=ok
task_emc_nml_reuse_plan_matrix_t029_done=ok
task_emc_nml_reuse_plan_status=ok
```
### 结论
T-029 通过。当前阶段选择分阶段 typedef / 窄 `StandaloneEmcStatus`,不直接 include 完整 `emc_nml.hh`;完整 NML/CMS 依赖和 vendor 提升留给后续 T-032+ 以及 source reuse map 更新。
## 2026-07-08 00:33 EDT top-level RCS_STATUS 聚合验收
### 验收对象
T-028。
本轮验收目标是证明:
- task/motion/io 三方状态聚合顺序与 `emctaskmain.cc` 的顶层 status write 口径一致。
- JSON status 明确导出 `rcsStatus.top/task/motion/io``task.status`
- task/motion/io 任一 ERROR 会驱动 top/task `ERROR`
- task exec done、interp idle、pending 为空、motion done、io done 时 top/task 为 `DONE`
- 其它运行中状态为 `EXEC`
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
```
### 实际输出摘要
```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
task_status_updates_from_cycle_snapshot=ok
mdi_jog_home_motion_issue_from_execute=ok
task_waits_on_motion_snapshot_queue=ok
motion_abort_drives_task_error=ok
motion_error_drives_task_error=ok
motion_soft_limit_drives_task_error=ok
io_error_drives_task_error=ok
task_top_level_rcs_status_aggregation=ok
pause_resume_step_motion_issue_from_execute=ok
task_hal_readiness_status_contract=ok
emctask_subset_source_reuse_status=ok
taskintf_subset_source_reuse_status=ok
emccanon_subset_source_reuse_status=ok
```
### 结论
T-028 通过。status JSON 现在导出 top/task/motion/io 四个 RCS 聚合状态,聚合顺序与上游 `emctaskmain.cc` 的 ERROR -> DONE -> EXEC 口径一致。
## 2026-07-08 00:22 EDT motion error/soft-limit 注入验收
### 验收对象
T-027。
本轮验收目标是证明:
- motion runtime 可以通过测试命令注入独立 motion ERROR。
- motion runtime 可以通过测试命令注入 soft-limit。
- task 周期内的 subordinate sync 会消费 motion snapshot把上述状态转成 task `ERROR`
- 最小 `taskTopLevelStatus` 会同步反映 motion ERROR 和 soft-limit 的 `ERROR` 状态。
- 用户主动 task abort cleanup 语义不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_sdk.sh
node tests/wasm/node/verify_task_state_matrix.mjs
./tests/native/verify_task_hal_phase0.sh
./tools/verify_task_hal_readiness_contract.sh
```
### 实际输出摘要
```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
task_status_updates_from_cycle_snapshot=ok
mdi_jog_home_motion_issue_from_execute=ok
task_waits_on_motion_snapshot_queue=ok
motion_abort_drives_task_error=ok
motion_error_drives_task_error=ok
motion_soft_limit_drives_task_error=ok
io_error_drives_task_error=ok
pause_resume_step_motion_issue_from_execute=ok
task_hal_readiness_status_contract=ok
emctask_subset_source_reuse_status=ok
taskintf_subset_source_reuse_status=ok
emccanon_subset_source_reuse_status=ok
```
补充回归:
```text
motion_hal_sync_smoke=ok
linuxcnc_task_hal_sdk=ok
task_state_matrix=ok
task_hal_phase0_native_probe_gate=ok
task_hal_readiness_contract_status=ok
```
### 结论
T-027 通过。motion ERROR 和 soft-limit 现在都有独立注入路径、snapshot 字段和 task subordinate sync 覆盖,均能驱动 task 进入 `ERROR`,并让最小 `taskTopLevelStatus` 反映 `ERROR`。新增 snapshot 字段追加在 `LcmotStatusSnapshot` 尾部,保留已有 C ABI struct offset既有 abort/io/wait/readiness smoke 未回退。
## 2026-07-08 00:13 EDT readiness contract 验收
### 验收对象
T-015。
本轮验收目标是证明:
- `nativeTaskReady``nativeHalSyncReady``fullLinuxCncProgramExecutionReady` 与当前能力边界一致,均保持 false。
- `task_hal_runtime_promoted=0` 仍是 task-HAL source manifest 的真实口径。
- `docs/source-reuse-map.md` 不再声称 task/motion/HAL Web simulation runtime 已 promoted 或 readiness 为 true。
- WASM smoke 明确断言 `fullLinuxCncProgramExecutionReady=false`
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_hal_readiness_contract.sh
./tests/wasm/node/verify_task_hal_wasm.sh
./tests/native/verify_task_hal_phase0.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_task_hal_sdk.sh
SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh
```
### 实际输出摘要
```text
task_hal_readiness_task_hal_runtime_promoted=0
task_hal_readiness_nativeTaskReady=false
task_hal_readiness_nativeHalSyncReady=false
task_hal_readiness_doc_runtime_promoted_false=ok
task_hal_readiness_doc_native_task_false=ok
task_hal_readiness_doc_native_hal_false=ok
task_hal_readiness_doc_full_program_false=ok
task_hal_readiness_doc_unpromoted_classification=ok
task_hal_readiness_doc_native_task_true=absent
task_hal_readiness_doc_native_hal_true=absent
task_hal_readiness_doc_full_boundary_promoted_claim=absent
task_hal_readiness_doc_complete_claim=absent
task_hal_readiness_runtime_native_task_false=ok
task_hal_readiness_runtime_native_hal_false=ok
task_hal_readiness_runtime_full_program_false=ok
task_hal_readiness_wasm_test_full_program_false=ok
task_hal_readiness_contract_status=ok
```
`./tests/wasm/node/verify_task_hal_wasm.sh`
```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
task_status_updates_from_cycle_snapshot=ok
mdi_jog_home_motion_issue_from_execute=ok
task_waits_on_motion_snapshot_queue=ok
motion_abort_drives_task_error=ok
io_error_drives_task_error=ok
pause_resume_step_motion_issue_from_execute=ok
task_hal_readiness_status_contract=ok
emctask_subset_source_reuse_status=ok
taskintf_subset_source_reuse_status=ok
emccanon_subset_source_reuse_status=ok
```
补充回归:
```text
task_hal_phase0_native_probe_gate=ok
linuxcnc_task_hal_sdk=ok
motion_hal_sync_smoke=ok
```
### 结论
T-015 通过。readiness 的文档、manifest、runtime、WASM test 口径已经统一为未 promoted`docs/source-reuse-map.md` 不再与代码中的 false readiness 状态矛盾。
## 2026-07-07 23:59 EDT emccanon 可编译子集验收
### 验收对象
T-014。
本轮验收目标是证明:
- task-HAL WASM build 已纳入 vendored `emccanon_wasm_subset.cc`
- 该子集有明确上游 source path 和锚点:`src/emc/task/emccanon.cc``generate_fast_move()``generate_move()``STRAIGHT_TRAVERSE()``STRAIGHT_FEED()`
- task runtime 的 linear motion 生成先通过 emccanon canonical linear-move envelope再进入 taskintf command envelope 和 `lcmot_*` runtime edge。
- 完整 `emccanon.cc``CanonConfig_t``interp_list`、offset/unit conversion、NURBS、spindle/tool 等边界仍未 promotedreadiness 保持保守。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_emccanon_subset.sh
./tests/wasm/node/verify_task_hal_wasm.sh
```
### 实际输出摘要
`./tools/verify_task_emccanon_subset.sh`
```text
task_emccanon_subset_upstream=ok
task_emccanon_subset_source=ok
task_emccanon_subset_header=ok
task_emccanon_subset_upstream_generate_fast_move=ok
task_emccanon_subset_origin_generate_fast_move=ok
task_emccanon_subset_upstream_generate_move=ok
task_emccanon_subset_origin_generate_move=ok
task_emccanon_subset_upstream_STRAIGHT_TRAVERSE=ok
task_emccanon_subset_origin_STRAIGHT_TRAVERSE=ok
task_emccanon_subset_upstream_STRAIGHT_FEED=ok
task_emccanon_subset_origin_STRAIGHT_FEED=ok
task_emccanon_subset_origin_path=ok
task_emccanon_subset_build_included=ok
task_emccanon_subset_source_reuse=ok
```
`./tests/wasm/node/verify_task_hal_wasm.sh`
```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
task_status_updates_from_cycle_snapshot=ok
mdi_jog_home_motion_issue_from_execute=ok
task_waits_on_motion_snapshot_queue=ok
motion_abort_drives_task_error=ok
io_error_drives_task_error=ok
pause_resume_step_motion_issue_from_execute=ok
emctask_subset_source_reuse_status=ok
taskintf_subset_source_reuse_status=ok
emccanon_subset_source_reuse_status=ok
```
### 结论
T-014 通过。task-HAL WASM build 已编译 vendored `emccanon_wasm_subset.cc`linear motion 生成现在经由 emccanon canonical envelope再经 taskintf envelope issue 到 standalone motion runtime。完整 `emccanon.cc` 仍未 promoted。
## 2026-07-07 23:51 EDT taskintf 可编译子集验收
### 验收对象
T-013。
本轮验收目标是证明:
- task-HAL WASM build 已纳入 vendored `taskintf_wasm_subset.cc`
- 该子集有明确上游 source path 和锚点:`src/emc/task/taskintf.cc` 的 traj control、linear move、jog、home、aout 函数族。
- task runtime 的 motion command issuing 已通过该子集生成 command envelope再转交现有 `lcmot_*` runtime edge。
- 完整 `taskintf.cc` 的 usrmot/NML/INI/native motion process 仍未 promotedreadiness 保持保守。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_taskintf_subset.sh
./tests/wasm/node/verify_task_hal_wasm.sh
```
### 实际输出摘要
`./tools/verify_task_taskintf_subset.sh`
```text
task_taskintf_subset_upstream=ok
task_taskintf_subset_source=ok
task_taskintf_subset_header=ok
task_taskintf_subset_upstream_emcTrajAbort=ok
task_taskintf_subset_origin_emcTrajAbort=ok
task_taskintf_subset_upstream_emcTrajPause=ok
task_taskintf_subset_origin_emcTrajPause=ok
task_taskintf_subset_upstream_emcTrajStep=ok
task_taskintf_subset_origin_emcTrajStep=ok
task_taskintf_subset_upstream_emcTrajResume=ok
task_taskintf_subset_origin_emcTrajResume=ok
task_taskintf_subset_upstream_emcTrajLinearMove=ok
task_taskintf_subset_origin_emcTrajLinearMove=ok
task_taskintf_subset_upstream_emcJogIncr=ok
task_taskintf_subset_origin_emcJogIncr=ok
task_taskintf_subset_upstream_emcJointHome=ok
task_taskintf_subset_origin_emcJointHome=ok
task_taskintf_subset_upstream_emcMotionSetAout=ok
task_taskintf_subset_origin_emcMotionSetAout=ok
task_taskintf_subset_origin_path=ok
task_taskintf_subset_build_included=ok
task_taskintf_subset_source_reuse=ok
```
`./tests/wasm/node/verify_task_hal_wasm.sh`
```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
task_status_updates_from_cycle_snapshot=ok
mdi_jog_home_motion_issue_from_execute=ok
task_waits_on_motion_snapshot_queue=ok
motion_abort_drives_task_error=ok
io_error_drives_task_error=ok
pause_resume_step_motion_issue_from_execute=ok
emctask_subset_source_reuse_status=ok
taskintf_subset_source_reuse_status=ok
```
### 结论
T-013 通过。task-HAL WASM build 已编译 vendored `taskintf_wasm_subset.cc`,当前 motion command issuing 经由该子集生成 task-to-motion command envelope再序列化到 standalone `lcmot_*` runtime edge。完整 `taskintf.cc` 仍未 promoted。
## 2026-07-07 23:42 EDT emctask 可编译子集验收
### 验收对象
T-012。
本轮验收目标是证明:
- task-HAL WASM build 已纳入 vendored `emctask_wasm_subset.cc`
- 该子集有明确上游 source path 和锚点:`src/emc/task/emctask.cc``determineMode()``determineState()``emcTaskUpdate()`
- task runtime 在 `wasm_emcTaskUpdate()` 阶段实际调用该子集,并把 source reuse 证据写入 status JSON。
- readiness 仍保持保守 false该子集不代表完整 `emctask.cc`、interpreter/NML/native process 已迁移完成。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_emctask_subset.sh
./tests/wasm/node/verify_task_hal_wasm.sh
node tests/wasm/node/verify_task_state_matrix.mjs
```
### 实际输出摘要
`./tools/verify_task_emctask_subset.sh`
```text
task_emctask_subset_upstream=ok
task_emctask_subset_source=ok
task_emctask_subset_header=ok
task_emctask_subset_upstream_determine_mode=ok
task_emctask_subset_upstream_determine_state=ok
task_emctask_subset_upstream_update=ok
task_emctask_subset_origin_path=ok
task_emctask_subset_origin_determine_mode=ok
task_emctask_subset_origin_determine_state=ok
task_emctask_subset_origin_update=ok
task_emctask_subset_build_included=ok
task_emctask_subset_source_reuse=ok
```
`./tests/wasm/node/verify_task_hal_wasm.sh`
```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
task_status_updates_from_cycle_snapshot=ok
mdi_jog_home_motion_issue_from_execute=ok
task_waits_on_motion_snapshot_queue=ok
motion_abort_drives_task_error=ok
io_error_drives_task_error=ok
pause_resume_step_motion_issue_from_execute=ok
emctask_subset_source_reuse_status=ok
```
`node tests/wasm/node/verify_task_state_matrix.mjs`
```text
task_state_matrix=ok
run_gate_estop_rejected=ok
run_gate_estop_reset_rejected=ok
run_gate_manual_rejected=ok
run_gate_unhomed_rejected=ok
run_gate_homing_rejected=ok
run_gate_program_open_required=ok
run_gate_interpreter_plan_required=ok
run_gate_accepts_homed_open_plan=ok
task_command_send_queues_until_cycle=ok
task_command_json_host_boundary=ok
```
### 结论
T-012 通过。task-HAL WASM build 已编译 vendored `emctask_wasm_subset.cc`runtime update 阶段实际调用该子集并在 status JSON 中暴露 source reuse 证据。该子集只覆盖 `emctask.cc` 的状态推导锚点;完整 task 源码迁移和 readiness promotion 仍保持后续任务。
## 2026-07-07 23:34 EDT JSON command host boundary 验收
### 验收对象
T-011。
本轮验收目标是证明:
- `lctask_send_command_json()` 只解析 host JSON command envelope 并入队内部 `TaskCommand`
- `wasm_emcTaskPlan()` 直接处理内部 command不再通过递归调用 C ABI send 函数执行 task 语义。
- 未知 host JSON command 在 C ABI 边界被拒绝,不进入 pending command queue。
- 现有 task/motion/HAL smoke 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
node tests/wasm/node/verify_task_state_matrix.mjs
./tests/native/verify_task_hal_phase0.sh
```
### 实际输出摘要
`./tests/wasm/node/verify_task_hal_wasm.sh`
```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
task_status_updates_from_cycle_snapshot=ok
mdi_jog_home_motion_issue_from_execute=ok
task_waits_on_motion_snapshot_queue=ok
motion_abort_drives_task_error=ok
io_error_drives_task_error=ok
pause_resume_step_motion_issue_from_execute=ok
```
`node tests/wasm/node/verify_task_state_matrix.mjs`
```text
task_state_matrix=ok
run_gate_estop_rejected=ok
run_gate_estop_reset_rejected=ok
run_gate_manual_rejected=ok
run_gate_unhomed_rejected=ok
run_gate_homing_rejected=ok
run_gate_program_open_required=ok
run_gate_interpreter_plan_required=ok
run_gate_accepts_homed_open_plan=ok
task_command_send_queues_until_cycle=ok
task_command_json_host_boundary=ok
```
`./tests/native/verify_task_hal_phase0.sh`
```text
task_hal_phase0_native_probe_gate=ok
```
### 结论
T-011 通过。host JSON command 已被限制在 C ABI 边界解析pending command queue 保存内部 `TaskCommand`plan 阶段不再回调 `lctask_send_command_json()` 执行 task 语义。未知 host command 会被拒绝且不污染 command queue。
## 2026-07-07 23:10 EDT phase0 native probe 与 pause/resume/step 验收
### 验收对象
T-016、T-010。
本轮验收目标是证明:
- `verify_task_hal_phase0.sh` 不再因为缺失 `xyzac-trt_cmds.hal` 失败。
- 缺失文件来源有明确修复路径native probe 使用运行目录 overlay优先引用只读上游 `../linuxcnc`,仅对缺失顶层条目从 `wasm-port/vendor/linuxcnc` 补齐。
- pause/resume/step 不在 command send 时直接 issue motion command而是在 task cycle 的 execute 阶段发给 motion runtime。
- 现有 task/motion/HAL smoke 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/native/probe_trt_task_hal_runtime.sh
./tests/native/verify_task_hal_phase0.sh
./tests/wasm/node/verify_task_hal_wasm.sh
node tests/wasm/node/verify_task_state_matrix.mjs
./tests/wasm/node/verify_task_hal_sdk.sh
./tests/wasm/node/verify_motion_hal_sync.sh
./tools/verify_task_hal_source_manifest.sh
```
### 实际输出摘要
`./tests/native/probe_trt_task_hal_runtime.sh`
```text
trt_task_hal_source_proof_ready=1
trt_task_hal_probe_result=ready_disabled_by_default
```
`./tests/native/verify_task_hal_phase0.sh`
```text
task_hal_phase0_native_probe_gate=ok
```
`./tests/wasm/node/verify_task_hal_wasm.sh`
```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
task_status_updates_from_cycle_snapshot=ok
mdi_jog_home_motion_issue_from_execute=ok
task_waits_on_motion_snapshot_queue=ok
motion_abort_drives_task_error=ok
io_error_drives_task_error=ok
pause_resume_step_motion_issue_from_execute=ok
```
`node tests/wasm/node/verify_task_state_matrix.mjs`
```text
task_state_matrix=ok
run_gate_estop_rejected=ok
run_gate_estop_reset_rejected=ok
run_gate_manual_rejected=ok
run_gate_unhomed_rejected=ok
run_gate_homing_rejected=ok
run_gate_program_open_required=ok
run_gate_interpreter_plan_required=ok
run_gate_accepts_homed_open_plan=ok
task_command_send_queues_until_cycle=ok
```
`./tests/wasm/node/verify_task_hal_sdk.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_hal_sdk=ok
task_hal_sdk_status_snapshot=ok
task_hal_feed_timed_motion_plan=ok
task_hal_comment_source_line_numbers=ok
```
`./tests/wasm/node/verify_motion_hal_sync.sh`
```text
linuxcnc_task_hal_wasm_build=ok
motion_hal_servo_cycle=ok
motion_program_line_hal_sync=ok
switchkins_type_hal_sync=ok
jog_motion_status_sync=ok
motion_status_snapshot_struct=ok
motion_hal_sync_smoke=ok
```
`./tools/verify_task_hal_source_manifest.sh`
```text
task_hal_source_manifest_status=ok
task_hal_source_manifest_ready=1
task_hal_runtime_promoted=0
nativeTaskReady=false
nativeHalSyncReady=false
```
### 结论
T-016、T-010 通过。phase0 native probe 的 `xyzac-trt_cmds.hal` 缺失问题已通过运行目录 overlay 闭合,未修改只读上游 `../linuxcnc`。pause/resume/step 已与 MDI/JOG/HOME 一样进入 execute 阶段 motion issue 队列,并由周期 snapshot 断言证明 send command 本身不直接改变 motion 状态。
## 2026-07-07 21:32 EDT wait/error subordinate sync 验收
### 验收对象
T-008、T-009。
本轮验收目标是证明:
- `WAITING_FOR_MOTION_QUEUE` 由周期 `motion_snapshot.queue_full` 驱动。
- queueFull 时 task 不继续向 motion runtime issue execute motion command。
- queueFull 解除后 task 由 `WAITING_FOR_MOTION_QUEUE` 回到 `WAITING_FOR_MOTION`
- motion queue/active depth 清空且 in-position 后task 由 `WAITING_FOR_MOTION` 收敛到 `DONE`
- 外部 motion abort/error 通过 subordinate sync 驱动 task `ERROR`
- IO runtime-edge 注入错误通过 subordinate sync 驱动 task `ERROR`
- task 自己发起的 abort 保持 cleanup 到 `DONE`,不误报为外部 motion error。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
node tests/wasm/node/verify_task_state_matrix.mjs
./tests/wasm/node/verify_task_hal_sdk.sh
./tests/wasm/node/verify_motion_hal_sync.sh
./tools/verify_task_hal_source_manifest.sh
git diff --check -- wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.h wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.c wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp wasm-port/tools/build_task_hal_wasm.sh wasm-port/tests/wasm/node/verify_motion_hal_sync.mjs wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs wasm-port/tests/wasm/node/verify_task_state_matrix.mjs wasm-port/working
```
### 实际输出摘要
`./tests/wasm/node/verify_task_hal_wasm.sh`
```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
task_status_updates_from_cycle_snapshot=ok
mdi_jog_home_motion_issue_from_execute=ok
task_waits_on_motion_snapshot_queue=ok
motion_abort_drives_task_error=ok
io_error_drives_task_error=ok
```
`node tests/wasm/node/verify_task_state_matrix.mjs`
```text
task_state_matrix=ok
run_gate_estop_rejected=ok
run_gate_estop_reset_rejected=ok
run_gate_manual_rejected=ok
run_gate_unhomed_rejected=ok
run_gate_homing_rejected=ok
run_gate_program_open_required=ok
run_gate_interpreter_plan_required=ok
run_gate_accepts_homed_open_plan=ok
task_command_send_queues_until_cycle=ok
```
`./tests/wasm/node/verify_task_hal_sdk.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_hal_sdk=ok
task_hal_sdk_status_snapshot=ok
task_hal_feed_timed_motion_plan=ok
task_hal_comment_source_line_numbers=ok
```
`./tests/wasm/node/verify_motion_hal_sync.sh`
```text
linuxcnc_task_hal_wasm_build=ok
motion_hal_servo_cycle=ok
motion_program_line_hal_sync=ok
switchkins_type_hal_sync=ok
jog_motion_status_sync=ok
motion_status_snapshot_struct=ok
motion_hal_sync_smoke=ok
```
`./tools/verify_task_hal_source_manifest.sh`
```text
task_hal_source_manifest_status=ok
task_hal_source_manifest_ready=1
task_hal_runtime_promoted=0
nativeTaskReady=false
nativeHalSyncReady=false
```
`git diff --check -- ...`:无输出,表示无空白错误。
`./tests/native/verify_task_hal_phase0.sh`:本条为 21:32 时的历史失败记录23:10 已通过上方 phase0 native probe 验收闭合。
```text
trt_task_hal_source_proof_ready expected 1, got 0
from /home/mes123456/cnc_wams/wasm-port/build/task-hal/probe_trt_task_hal_runtime.stdout.log
```
### 结论
T-008、T-009 通过。task 的 `WAITING_FOR_MOTION` / `WAITING_FOR_MOTION_QUEUE` 已依赖周期 motion snapshotqueueFull 场景会阻止 execute 阶段继续 issue motion command并在 motion queue 可用后恢复等待、最终收敛到 `DONE`。外部 motion abort 和 IO shim error 均能通过 subordinate sync 驱动 task `ERROR`task 自己发起的 abort cleanup 仍保持 `DONE`
## 2026-07-07 21:21 EDT task 周期阶段拆分验收
### 验收对象
T-006、T-023、T-024、T-025。
本轮验收目标是证明:
- `lctask_run_cycles()` 已拆成 LinuxCNC `emctaskmain.cc` 式周期阶段。
- command read、plan、execute、motion update、subordinate sync、task update、top-level status、status write 在代码中有明确函数边界。
- state/mode/home/run gate 由 task cycle 消费 command 后触发,不由 send API 直接触发。
- MDI/JOG/HOME 的 motion issue 从 plan command handler 移到 execute 阶段队列。
- 现有 task/motion/HAL smoke 不回退。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tests/wasm/node/verify_task_hal_wasm.sh
node tests/wasm/node/verify_task_state_matrix.mjs
./tests/wasm/node/verify_task_hal_sdk.sh
./tests/wasm/node/verify_motion_hal_sync.sh
```
### 实际输出摘要
`./tests/wasm/node/verify_task_hal_wasm.sh`
```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
task_status_updates_from_cycle_snapshot=ok
mdi_jog_home_motion_issue_from_execute=ok
```
`node tests/wasm/node/verify_task_state_matrix.mjs`
```text
task_state_matrix=ok
run_gate_estop_rejected=ok
run_gate_estop_reset_rejected=ok
run_gate_manual_rejected=ok
run_gate_unhomed_rejected=ok
run_gate_homing_rejected=ok
run_gate_program_open_required=ok
run_gate_interpreter_plan_required=ok
run_gate_accepts_homed_open_plan=ok
task_command_send_queues_until_cycle=ok
```
`./tests/wasm/node/verify_task_hal_sdk.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_hal_sdk=ok
task_hal_sdk_status_snapshot=ok
task_hal_feed_timed_motion_plan=ok
task_hal_comment_source_line_numbers=ok
```
`./tests/wasm/node/verify_motion_hal_sync.sh`
```text
linuxcnc_task_hal_wasm_build=ok
motion_hal_servo_cycle=ok
motion_program_line_hal_sync=ok
switchkins_type_hal_sync=ok
jog_motion_status_sync=ok
motion_status_snapshot_struct=ok
motion_hal_sync_smoke=ok
```
### 结论
T-006、T-023、T-024、T-025 通过。`lctask_run_cycles()` 已形成可继续替换上游源码的周期骨架。MDI/JOG/HOME motion issue 已通过 `pending_execute_motion_commands``wasm_emcTaskExecute()` 阶段发出。
## 2026-07-07 21:01 EDT task 周期 motion snapshot 与 status buffer 验收
### 验收对象
T-002、T-003、T-004、T-005、T-018、T-019、T-020、T-021、T-022、T-026。
本轮验收目标是证明:
- 当前 task/motion/HAL 基线已重新固定。
- motion runtime 已提供结构化 `LcmotStatusSnapshot`task 周期不再解析 motion JSON。
- `lctask_run_cycles()` 会刷新 task 持有的 motion snapshot。
- `lctask_read_status_json()` 只导出最后一次 task status write不因读取而同步最新 low-level motion。
- `lctask_send_command_json()` 只入队 command不调用 `runCycles()` 时 task 语义状态不变化。
### 证据命令
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_hal_source_manifest.sh
./tests/wasm/node/verify_motion_hal_sync.sh
./tests/wasm/node/verify_task_hal_wasm.sh
./tests/wasm/node/verify_task_hal_sdk.sh
node tests/wasm/node/verify_task_state_matrix.mjs
./tests/native/verify_task_hal_phase0.sh
```
### 实际输出摘要
`./tools/verify_task_hal_source_manifest.sh`
```text
task_hal_source_manifest_status=ok
task_hal_source_manifest_ready=1
task_hal_source_count=20
task_source_count=7
hal_source_count=4
motion_source_count=6
task_hal_reference_source_ready=1
task_hal_vendor_source_ready=0
task_hal_runtime_promoted=0
nativeTaskReady=false
nativeHalSyncReady=false
```
`./tests/wasm/node/verify_motion_hal_sync.sh`
```text
linuxcnc_task_hal_wasm_build=ok
motion_hal_servo_cycle=ok
motion_program_line_hal_sync=ok
switchkins_type_hal_sync=ok
jog_motion_status_sync=ok
motion_status_snapshot_struct=ok
motion_hal_sync_smoke=ok
```
`./tests/wasm/node/verify_task_hal_wasm.sh`
```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
task_status_updates_from_cycle_snapshot=ok
```
`./tests/wasm/node/verify_task_hal_sdk.sh`
```text
linuxcnc_task_hal_wasm_build=ok
linuxcnc_task_hal_sdk=ok
task_hal_sdk_status_snapshot=ok
task_hal_feed_timed_motion_plan=ok
task_hal_comment_source_line_numbers=ok
```
`node tests/wasm/node/verify_task_state_matrix.mjs`
```text
task_state_matrix=ok
run_gate_estop_rejected=ok
run_gate_estop_reset_rejected=ok
run_gate_manual_rejected=ok
run_gate_unhomed_rejected=ok
run_gate_homing_rejected=ok
run_gate_program_open_required=ok
run_gate_interpreter_plan_required=ok
run_gate_accepts_homed_open_plan=ok
task_command_send_queues_until_cycle=ok
```
`./tests/native/verify_task_hal_phase0.sh`:本条为 21:01 时的历史失败记录23:10 已通过上方 phase0 native probe 验收闭合。
```text
trt_task_hal_source_proof_ready expected 1, got 0
from /home/mes123456/cnc_wams/wasm-port/build/task-hal/probe_trt_task_hal_runtime.stdout.log
```
对应 stdout log 关键内容:
```text
trt_task_hal_missing_source_xyzac_trt_cmds_hal=/home/mes123456/cnc_wams/wasm-port/../linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt_cmds.hal
trt_task_hal_source_proof_ready=0
trt_task_hal_runtime_ready=1
nativeTaskReady=false
nativeHalSyncReady=false
native_probe_status=blocked_missing_source
```
### 结论
T-002、T-003、T-004、T-005、T-018、T-019、T-020、T-021、T-022、T-026 通过。task status 的 motion 部分已经来自 task 周期写入的结构化 snapshotlow-level motion 单独 step 后task status 不会自动同步,必须等待下一次 `lctask_run_cycles()`。task command 发送也已改为入队,状态变化必须等待 task cycle 消费 command。
T-016 在 21:01 时仍阻塞;后续 23:10 已通过运行目录 overlay 修复 `xyzac-trt_cmds.hal` 缺失输入并闭合。
## 2026-07-07 19:45 EDT 上游 task 源码替换分解验收
### 验收对象
`emctask.cc``taskintf.cc``emccanon.cc` 的具体实施步骤拆解到函数族、shim、验收和任务矩阵。
### 证据命令
```bash
find wasm-port/working -maxdepth 1 -type f | sort
rg -n "T-031|D-007|emctask.cc|taskintf.cc|emccanon.cc|B1|B6" wasm-port/working
git diff --check -- wasm-port/working
```
### 实际输出摘要
`find wasm-port/working -maxdepth 1 -type f | sort`
```text
wasm-port/working/01-项目功能内容.md
wasm-port/working/02-项目程序开发详细步骤.md
wasm-port/working/03-推进台账.md
wasm-port/working/04-任务矩阵.md
wasm-port/working/05-验收证据.md
wasm-port/working/06-决策记录.md
wasm-port/working/07-emctaskmain周期对标蓝图.md
wasm-port/working/08-上游task源码替换分解.md
wasm-port/working/README.md
```
`rg -n "T-031|D-007|emctask.cc|taskintf.cc|emccanon.cc|B1|B6" wasm-port/working` 命中摘要:
```text
wasm-port/working/04-任务矩阵.md: T-031
wasm-port/working/06-决策记录.md: D-007
wasm-port/working/08-上游task源码替换分解.md: emctask.cc
wasm-port/working/08-上游task源码替换分解.md: taskintf.cc
wasm-port/working/08-上游task源码替换分解.md: emccanon.cc
wasm-port/working/08-上游task源码替换分解.md: B1
wasm-port/working/08-上游task源码替换分解.md: B6
```
`git diff --check -- wasm-port/working`:无输出,表示无空白错误。
### 结论
T-031 通过。后续源码替换不再只停留在泛泛“引入上游文件”,而是按 `taskintf.cc` minimal bridge、`emctask.cc` state/update/plan、`emccanon.cc` straight/spindle/tool/io 子集逐批实施。
## 2026-07-07 19:29 EDT 实施文档细化验收
### 验收对象
继续完善 `wasm-port/working` 实施文档,使其完全对标“把 `emctaskmain.cc` 周期结构迁到 `wasm-port`”这一目标。
### 证据命令
```bash
find wasm-port/working -maxdepth 1 -type f | sort
rg -n "T-017|D-005|emctaskmain 周期对标蓝图|LcmotStatusSnapshot|command read" wasm-port/working
git status --short wasm-port/working
```
### 实际输出摘要
`find wasm-port/working -maxdepth 1 -type f | sort`
```text
wasm-port/working/01-项目功能内容.md
wasm-port/working/02-项目程序开发详细步骤.md
wasm-port/working/03-推进台账.md
wasm-port/working/04-任务矩阵.md
wasm-port/working/05-验收证据.md
wasm-port/working/06-决策记录.md
wasm-port/working/07-emctaskmain周期对标蓝图.md
wasm-port/working/README.md
```
`rg -n "T-017|D-005|emctaskmain 周期对标蓝图|LcmotStatusSnapshot|command read" wasm-port/working` 命中摘要:
```text
wasm-port/working/04-任务矩阵.md: T-017
wasm-port/working/04-任务矩阵.md: LcmotStatusSnapshot
wasm-port/working/06-决策记录.md: D-005
wasm-port/working/07-emctaskmain周期对标蓝图.md: command read
```
`git status --short wasm-port/working`
```text
?? wasm-port/working/
```
### 结论
T-017 通过。实施文档已新增独立周期对标蓝图,并把后续实现拆分到 T-018 到 T-030。后续代码实施应从 T-002 基线证据开始,再进入 snapshot/status buffer/command buffer 周期骨架。
## 2026-07-07 19:17 EDT 文档创建验收
### 验收对象
创建 `wasm-port/working` 推进文档,用于后续推进 LinuxCNC `emctaskmain.cc` task 主循环完全对标。
### 证据命令
```bash
find wasm-port/working -maxdepth 1 -type f | sort
git status --short wasm-port/working
```
### 实际输出摘要
`find wasm-port/working -maxdepth 1 -type f | sort`
```text
wasm-port/working/01-项目功能内容.md
wasm-port/working/02-项目程序开发详细步骤.md
wasm-port/working/03-推进台账.md
wasm-port/working/04-任务矩阵.md
wasm-port/working/05-验收证据.md
wasm-port/working/06-决策记录.md
wasm-port/working/README.md
```
`git status --short wasm-port/working`
```text
?? wasm-port/working/
```
### 结论
T-001 通过。README 和 01-06 号推进文档均已创建;任务矩阵、推进台账、验收证据和决策记录具备初始内容。`git status` 显示 `wasm-port/working/` 为新增未跟踪目录,符合本轮只创建文档的预期。
### 当前已知基线命令
后续 `T-002` 需要正式运行并记录完整输出:
```bash
cd /home/mes123456/cnc_wams/wasm-port
./tools/verify_task_hal_source_manifest.sh
./tests/wasm/node/verify_motion_hal_sync.sh
./tests/wasm/node/verify_task_hal_wasm.sh
./tests/wasm/node/verify_task_hal_sdk.sh
./tests/native/verify_task_hal_phase0.sh
```
### 已知结果口径
上一轮分析已确认:
- `verify_task_hal_source_manifest.sh` 可通过,但显示 `task_hal_runtime_promoted=0``nativeTaskReady=false``nativeHalSyncReady=false`
- `verify_motion_hal_sync.sh` 可通过。
- `verify_task_hal_wasm.sh` 可通过。
- `verify_task_hal_phase0.sh` 当前失败,原因是缺少 `linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt_cmds.hal`
正式推进时,以每轮重新运行结果为准,不沿用旧输出冒充新证据。
## 待补证据类型
- 命令输出。
- Node/WASM 测试报告。
- Browser smoke 页面或截图。
- 如后续接入 CI/job 系统,记录 `job_id`
- 如后续生成对标报告,记录 `report_id` 和报告路径。
- 如后续生成 PDF 或截图,记录文件路径。