Files
cnc_wams/wasm-port/working/03-推进台账.md
2026-07-09 18:12:01 -04:00

133 KiB
Raw Blame History

03-推进台账

2026-07-08 10:18 EDT

本轮目标

按用户要求从源头 /home/mes123456/cnc_wams/wasm-port 取消旧字段输入兼容,不再让 task status JSON 输出旧顶层字段。

本轮做了什么

  1. 修改 linuxcnc_task_hal_wasm.cppstatus_json(),移除 taskTopLevelStatusrcsStatus、顶层 taskservoCycle 和顶层 motionStatus 输出。
  2. 将旧 taskmotionStatus.motion 中仍需要的字段收拢到 emcStatus.taskemcStatus.motion
  3. 更新 WASM、SDK、status contract 和 state matrix 测试,所有 task status 读取路径均只消费 emcStatus,并对旧顶层字段做负向断言。
  4. 同步更新 0102041112 文档口径,新增 T-056源头取消旧 status 字段兼容输出。
  5. 重建 task-hal wasm并运行四个直接相关 Node 验证。

影响文件

  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
  • wasm-port/tests/wasm/node/verify_task_status_json_contract.mjs
  • wasm-port/tests/wasm/node/verify_task_hal_sdk.mjs
  • wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
  • wasm-port/tests/wasm/node/verify_task_state_matrix.mjs
  • 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/11-WASM核心状态机边界与后续完善路线.md
  • wasm-port/working/12-status-json-LinuxCNC对标方案.md

当前结论

T-056 已完成。lctask_read_status_json() 的 task/motion/io/top 状态入口收口为 emcStatus,旧顶层字段不再输出;直接相关 Node 验证均通过。

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

本轮做了什么

  1. 读取两个目标文档,确认 12-status-json-LinuxCNC对标方案.md 中 SJ-1 到 SJ-5 已进入 04-任务矩阵.md 的 T-051 到 T-05511-WASM核心状态机边界与后续完善路线.md 已记录这些批次闭合。
  2. 复核 04-任务矩阵.md,确认 T-001 到 T-055 均为完成,当前推进指针为“下一条优先任务:无”。
  3. 检查 tools/verify_task_status_json_contract.shtools/verify_task_full_closure.sh,确认 status JSON contract gate 已纳入 full closure。
  4. 扫描 working、docs、tools、runtime、tests 中的 StandaloneEmcStatusemcStatus、SJ/T 编号和 contract gate 锚点,确认 runtime、测试、文档均有对应覆盖。
  5. 执行 ./tools/verify_task_full_closure.sh,验证 task-HAL WASM build、WASM smoke、SDK smoke、state matrix、motion sync、StandaloneEmcStatus、no-JSON 主路径、status JSON contract、working closure、source reuse/drift docs 和 readiness contract。
  6. 执行 git diff --check,确认当前差异无 whitespace error。

影响文件

  • wasm-port/working/03-推进台账.md
  • wasm-port/working/05-验收证据.md

当前结论

目标文件 1112 中定义的当前全部工作已完成并通过复核SJ-1 到 SJ-5 对应 T-051 到 T-055status JSON contract gate 已纳入 full closure全量闭合脚本最终输出 task_full_closure_status=okgit diff --check 无输出。

2026-07-08 09:26 EDT

本轮目标

按用户要求复核并完成 /home/mes123456/cnc_wams/wasm-port/working 全部工作,确认当前任务矩阵、闭合 gate 和执行证据均无未闭合项。

本轮做了什么

  1. 读取 wasm-port/working/README.md04-任务矩阵.md03-推进台账.md05-验收证据.md,确认当前文档声明 T-001 到 T-055 均为完成,下一条优先任务为“无”。
  2. 检查仓库根目录和 wasm-port/AGENTS.md,确认本轮同时受根目录中文日志规则和 wasm-port LinuxCNC source reuse / 额外日志规则约束。
  3. 扫描 wasm-port/workingtoolsdocsruntimetests 中的开放标记,确认出现的“后续”主要是已文档化的保守边界或新增任务入口,不是当前矩阵未完成任务;矩阵任务行均为“完成”。
  4. 执行 ./tools/verify_task_full_closure.sh,完成 task-HAL WASM 构建、WASM smoke、SDK smoke、state matrix、motion sync、StandaloneEmcStatus、no-JSON 主路径、status JSON contract、working closure、source reuse/drift docs 和 readiness contract 验证。
  5. 全量闭合脚本通过,最终输出 task_full_closure_status=ok

影响文件

  • wasm-port/working/03-推进台账.md
  • wasm-port/working/05-验收证据.md

当前结论

wasm-port/working 当前全部工作已完成并复核通过。任务矩阵无待办、进行中或阻塞项T-051 到 T-055 的 status JSON contract 已纳入 full closure全量闭合 gate 输出 task_full_closure_status=ok

2026-07-08 09:12 EDT

本轮目标

修正上一轮误判:11-WASM核心状态机边界与后续完善路线.md12-status-json-LinuxCNC对标方案.md 中的 SJ-1 到 SJ-5 是实际后续任务,不能只因 04-任务矩阵.md 显示“无”就判定全部完成。本轮将 SJ-1 到 SJ-5 补入矩阵并闭合。

本轮做了什么

  1. 重新读取 11-WASM核心状态机边界与后续完善路线.md12-status-json-LinuxCNC对标方案.md,确认 SJ-1 到 SJ-5 均有明确目标和验收标准。
  2. 更新 04-任务矩阵.md,新增并闭合 T-051 到 T-055
    • T-051 / SJ-1规范 emcStatus.motion.traj
    • T-052 / SJ-2规范 task current/read/motion line 和 callLevel。
    • T-053 / SJ-3规范 emcStatus.motion.axis[]joint[]
    • T-054 / SJ-4规范 IO/aux/tool/coolant 边界。
    • T-055 / SJ-5引入 status JSON contract gate。
  3. 修改 linuxcnc_task_hal_wasm.cpp
    • StandaloneEmcTaskStatus 新增 currentLine/readLine/motionLine/callLevel。
    • StandaloneEmcMotionStatus 新增 axis command/feedback 和 joint command/feedback 数组。
    • StandaloneEmcIoStatus 新增 reason。
    • status_json() 新增 schemaVersion=1emcStatus.motion.trajemcStatus.motion.axis[]emcStatus.motion.joint[]emcStatus.io.aux/tool/coolant
  4. 更新 WASM、SDK 和 state matrix 测试,断言新 emcStatus 字段与旧兼容字段同源。
  5. 新增 tests/wasm/node/verify_task_status_json_contract.mjstools/verify_task_status_json_contract.sh,并将该 gate 纳入 tools/verify_task_full_closure.sh
  6. 更新 1112、source reuse、drift、compatibility 文档和对应文档一致性 gate让 T-051 到 T-055 不再只是“后续路线”。
  7. 确认 direct ./tools/build_task_hal_wasm.sh 在未加载 emsdk 的 shell 中会因 emcc: command not found 失败;使用 source /home/mes123456/emsdk/emsdk_env.sh 后构建通过。
  8. 运行新增 contract gate、WASM smoke、SDK smoke、state matrix均通过。
  9. 运行 ./tools/verify_task_full_closure.sh,确认新增 status JSON contract gate 已纳入全量闭合链,最终输出 task_full_closure_status=ok

影响文件

  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
  • wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
  • wasm-port/tests/wasm/node/verify_task_hal_sdk.mjs
  • wasm-port/tests/wasm/node/verify_task_state_matrix.mjs
  • wasm-port/tests/wasm/node/verify_task_status_json_contract.mjs
  • wasm-port/tools/verify_task_status_json_contract.sh
  • wasm-port/tools/verify_task_full_closure.sh
  • wasm-port/tools/verify_task_source_reuse_drift_docs.sh
  • wasm-port/tools/verify_task_working_closure.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
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md
  • wasm-port/working/11-WASM核心状态机边界与后续完善路线.md
  • wasm-port/working/12-status-json-LinuxCNC对标方案.md

当前结论

T-051、T-052、T-053、T-054、T-055 已完成。上一轮“全部完成”的判断漏掉了 1112 中的 SJ 批次;本轮已将这些批次纳入矩阵、实现、测试、文档和 full closure gate且全量闭合通过。active G/M code、active settings、offsets 仍按 12 的字段映射表保留为后续 source-anchored 扩展,不在本轮 SJ-1 到 SJ-5 验收范围内。

2026-07-08 09:00 EDT

本轮目标

按用户要求完成 /home/mes123456/cnc_wams/wasm-port/working 全部工作,复核当前任务矩阵、闭合文档和全量 gate确认没有待办、进行中或阻塞项残留。

本轮做了什么

  1. 读取仓库和 wasm-port 的 AGENTS 规则,确认本轮需遵守 wasm-port 的 LinuxCNC source reuse 边界,并在结束后追加中文执行日志。
  2. 检查 wasm-port/working/README.md04-任务矩阵.md03-推进台账.md05-验收证据.md,确认当前文档声明 T-001 到 T-050 均已完成,下一条优先任务为“无”。
  3. 使用 rg 扫描 workingdocstoolsruntimetests 中的开放标记;结果只包含历史台账/决策记录中的旧记录、矩阵状态说明、vendor three.js TODO 和文档化的保守边界,没有当前矩阵开放任务。
  4. 执行 ./tools/verify_task_full_closure.sh,完成 task-HAL WASM 构建、WASM smoke、SDK smoke、state matrix、motion/HAL sync、StandaloneEmcStatus、no-JSON 主路径、working closure、source reuse/drift docs 和 readiness contract 验证。
  5. 执行 git diff --check -- wasm-port/working wasm-port/tools wasm-port/docs wasm-port/runtime wasm-port/tests,确认当前相关差异没有 whitespace error。

影响文件

  • wasm-port/working/03-推进台账.md
  • wasm-port/working/05-验收证据.md

当前结论

wasm-port/working 当前全部工作已闭合:任务矩阵无待办/进行中/阻塞项,下一条优先任务为“无”,全量闭合验证通过并输出 task_full_closure_status=ok。本轮没有修改 runtime 行为,只追加最终复核台账和验收证据。

2026-07-08 08:55 EDT

本轮目标

对标 /home/mes123456/cnc_wams/linuxcnc,完善 WASM 中解决 status JSON 的方案,明确 LinuxCNC EMC_STAT / status buffer 到 WASM StandaloneEmcStatus -> status JSON 的映射路线。

本轮做了什么

  1. 查阅上游 linuxcnc/src/emc/nml_intf/emc.hh,确认 task mode/state、exec/interp、traj mode 和 NML status type 等枚举来源。
  2. 查阅上游 linuxcnc/src/emc/nml_intf/emc_nml.hh,确认 EMC_STAT 聚合 EMC_TASK_STATEMC_MOTION_STATEMC_IO_STAT,其中 motion 再聚合 EMC_TRAJ_STAT、joint、axis、spindle、synch IO 等。
  3. 查阅当前 linuxcnc_task_hal_wasm.cpp 中的 StandaloneEmcStatussync_standalone_emc_status()status_json()write_status_snapshot()lctask_read_status_json()
  4. 新增 12-status-json-LinuxCNC对标方案.md
    • 固定 status JSON 是 status buffer 的 host/browser 序列化格式。
    • 明确禁止 motion JSON/status JSON 反向驱动 task/motion 状态机。
    • 定义 emcStatus 作为新增 LinuxCNC 对标字段的主对象。
    • 定义 LinuxCNC 字段到 WASM 事实源和 JSON 位置的映射表。
    • 拆分 SJ-1 到 SJ-5 后续实施批次。
  5. 更新 README.md01-项目功能内容.md02-项目程序开发详细步骤.md07-emctaskmain周期对标蓝图.md11-WASM核心状态机边界与后续完善路线.md,接入该方案。
  6. 更新 04-任务矩阵.md,新增并闭合 T-050。
  7. 更新 05-验收证据.md06-决策记录.md,记录本轮方案和验证。

影响文件

  • wasm-port/working/README.md
  • 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/11-WASM核心状态机边界与后续完善路线.md
  • wasm-port/working/12-status-json-LinuxCNC对标方案.md

当前结论

T-050 已完成。后续在 WASM 中解决 status JSON 时,应先扩展 C/C++ StandaloneEmcStatus 或后续 EMC_STAT 等价容器,再从最后一次 status write 导出 emcStatus JSONtaskmotionStatus 字段只作为兼容视图。后续实现按 SJ-1 到 SJ-5 拆任务推进。

2026-07-08 08:18 EDT

本轮目标

按用户要求完善 wasm-port/working 文档固定“WASM 程序作为核心状态机实现运行载体JSON 只作为边界通信格式”的后续开发口径。

本轮做了什么

  1. 新增 11-WASM核心状态机边界与后续完善路线.md,明确 WASM/C++、JS/SDK、JSON 三层职责。
  2. 更新 README.md,把新文档加入索引和使用规则,并记录后续 WASM 完善的默认边界。
  3. 更新 01-项目功能内容.md,新增 WASM 核心状态机边界表,明确 status JSON 不作为事实源。
  4. 更新 02-项目程序开发详细步骤.md,新增“阶段 7后续 WASM 核心状态机完善”。
  5. 更新 06-决策记录.md,新增 D-043记录该边界决策。
  6. 更新 05-验收证据.md,记录本轮文档验收命令。

影响文件

  • wasm-port/working/README.md
  • wasm-port/working/01-项目功能内容.md
  • wasm-port/working/02-项目程序开发详细步骤.md
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md
  • wasm-port/working/11-WASM核心状态机边界与后续完善路线.md

当前结论

文档已明确后续 WASM 程序完善方向:核心状态机在 WASM/C++JS/SDK 只做 host 边界JSON 只做输入/输出通信格式。当前 T-001 到 T-049 闭合状态不变;后续代码任务需先补入任务矩阵再实施。

2026-07-08 08:08 EDT

本轮目标

完成后续全部工作,推进 T-049建立 task-HAL 全量闭合验证入口,让后续验收不再依赖人工记忆多条命令组合。

本轮做了什么

  1. 确认前面中断后没有残留的 task-HAL 验证后台进程。
  2. 复核任务矩阵,确认 T-001 到 T-048 均完成,下一条优先任务为“无”。
  3. 新增 tools/verify_task_full_closure.sh
    • 自动加载 emsdk。
    • 构建 task-HAL WASM。
    • SKIP_TASK_HAL_BUILD=1 运行 verify_task_hal_wasm.shverify_task_hal_sdk.sh
    • 运行 state matrix、motion/HAL sync、T-007 StandaloneEmcStatus、T-046 no-JSON 主路径、T-047/T-048 working closure、source reuse/drift docs 和 readiness contract gates。
    • 通过后输出 task_full_closure_status=ok
  4. 更新 docs/source-reuse-map.md,将 tools/verify_task_full_closure.sh 加入 Task/motion/HAL simulation runtime 的 validation list。
  5. 更新 docs/compatibility-validation.md,新增 tools/verify_task_full_closure.sh 行,记录它覆盖 build、WASM smoke、SDK、state matrix、motion sync、T-007/T-046/T-047/T-048/docs/readiness gates。
  6. 更新 tools/verify_task_source_reuse_drift_docs.sh,要求 source reuse、compatibility 和任务矩阵都记录 T-049/full closure gate。
  7. 更新 working/04-任务矩阵.md,新增并闭合 T-049。
  8. 运行 ./tools/verify_task_source_reuse_drift_docs.sh,确认文档一致性 gate 已识别 full closure。
  9. 运行 ./tools/verify_task_full_closure.sh,全量闭合验证通过,输出 task_full_closure_status=ok

影响文件

  • wasm-port/tools/verify_task_full_closure.sh
  • wasm-port/docs/source-reuse-map.md
  • wasm-port/docs/compatibility-validation.md
  • wasm-port/tools/verify_task_source_reuse_drift_docs.sh
  • wasm-port/working/04-任务矩阵.md

当前结论

T-049 已完成。task-HAL 对标工作已有一个统一全量闭合入口,可一次性验证 build、核心 WASM/SDK/state matrix/motion sync、T-007/T-046/T-047/T-048/docs/readiness gates。本轮未改变 runtime 行为。

2026-07-08 05:51 EDT

本轮目标

继续完成对标工作,推进 T-048verify_task_working_closure.sh 纳入全局文档一致性验证,避免 T-047 的 working closure gate 只存在于 working 文档而不受总文档 gate 保护。

本轮做了什么

  1. 检查 docs/source-reuse-map.mddocs/compatibility-validation.mdtools/verify_task_source_reuse_drift_docs.sh,确认 T-047 新增的 verify_task_working_closure.sh 尚未纳入 source reuse / compatibility 的总验证链。
  2. 更新 docs/source-reuse-map.md,在 Task/motion/HAL simulation runtime 的 validation 列加入 tools/verify_task_working_closure.sh
  3. 更新 docs/compatibility-validation.md
    • verify_task_source_reuse_drift_docs.sh 的说明扩展为包含 working closure gate。
    • 新增 tools/verify_task_working_closure.sh 行,说明它验证 T-047/T-048 working closure anchors。
  4. 更新 tools/verify_task_source_reuse_drift_docs.sh
    • 要求 source reuse map 包含 tools/verify_task_working_closure.sh
    • 要求 compatibility 文档包含 tools/verify_task_working_closure.sh 和 working closure gate 文案。
    • 要求任务矩阵包含 T-048 完成。
  5. 更新 working/04-任务矩阵.md,新增并闭合 T-048。
  6. 运行 ./tools/verify_task_source_reuse_drift_docs.sh,确认总文档一致性 gate 已覆盖 working closure。
  7. 运行 ./tools/verify_task_working_closure.sh./tools/verify_task_standalone_emc_status.sh,确认 T-047/T-007 gate 不回退。

影响文件

  • wasm-port/docs/source-reuse-map.md
  • wasm-port/docs/compatibility-validation.md
  • wasm-port/tools/verify_task_source_reuse_drift_docs.sh
  • wasm-port/working/04-任务矩阵.md

当前结论

T-048 已完成。verify_task_working_closure.sh 已进入 source reuse / compatibility 文档和 verify_task_source_reuse_drift_docs.sh 总 gateworking closure 状态现在由全局文档一致性验证保护。本轮未改变 runtime 行为。

2026-07-08 05:46 EDT

本轮目标

继续完成对标工作。由于 T-007 已完成且任务矩阵显示“下一条优先任务:无”,本轮推进 T-047收口 working 索引与闭合 gate修正过期现状描述固定当前矩阵已闭合状态。

本轮做了什么

  1. 扫描 wasm-port/workingdocstools 中的 待办进行中阻塞未完成 等标记,确认任务矩阵没有未闭合任务,但 working README 和功能内容文档仍保留早期 Phase 3/4 minimal adapter 口径。
  2. 更新 working/README.md
    • 将当前基线改为:lctask_run_cycles() 已具备 command read、plan、execute、motion update、subordinate sync、task update、status write 周期骨架。
    • 记录 task status 已由 LcmotStatusSnapshotStandaloneEmcStatus 导出。
    • 记录 host JSON motion plan 只保留为 timed-plan 兼容/调试入口。
    • 新增“当前闭合状态”,说明矩阵所有任务完成,后续扩展需先补矩阵。
  3. 更新 working/01-项目功能内容.md
    • 将“现状差距”改为“当前闭合状态”与“当前保守边界”。
    • 记录 StandaloneEmcStatus、no-JSON RUN path、周期 snapshot、state matrix、readiness contract 等当前事实。
  4. 更新 working/09-emc_nml复用评估.md
    • 将“还没有 T-007 的集中容器”修正为 T-007 已建立 StandaloneEmcStatus
    • 保持完整 emc_nml.hh 不直接 include 的决策不变。
  5. 更新 working/04-任务矩阵.md
    • 新增并闭合 T-047收口 working 索引与闭合 gate。
    • 保持下一条优先任务为“无”。
  6. 新增 tools/verify_task_working_closure.sh,验证:
    • T-007 和 T-047 均完成。
    • 矩阵没有 待办进行中阻塞 任务。
    • README、功能内容、NML 评估、台账、验收证据和决策记录均包含当前闭合口径。
  7. 给新脚本赋权并运行 closure gate。首次并行运行时脚本抢在 chmod 前执行,出现一次 Permission denied;随后单独重跑通过。

影响文件

  • wasm-port/working/README.md
  • wasm-port/working/01-项目功能内容.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/09-emc_nml复用评估.md
  • wasm-port/tools/verify_task_working_closure.sh

当前结论

T-047 已完成。working 索引、功能内容和 NML 评估文档已与 T-007/T-046 当前实现一致;新增 closure gate 固定“矩阵全完成、下一条为无”的收口状态。本轮未改变 runtime 行为。

2026-07-08 05:40 EDT

本轮目标

继续完成对标工作,推进 T-007建立 EMC_STAT 等价状态容器,让 task/motion/io 必需字段集中管理JSON status 从该状态导出。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-007T-008 到 T-046 已完成,因此 T-007 是当前矩阵最后一项待办。
  2. 复核 linuxcnc_task_hal_wasm.cpp 的既有状态结构,确认 TaskRuntime 中 task、motion snapshot、io、top-level RCS 字段仍分散保存,status_json() 直接从这些字段拼接兼容 JSON。
  3. linuxcnc_task_hal_wasm.cpp 新增当前阶段的 EMC_STAT 等价容器:
    • StandaloneEmcTaskStatus
    • StandaloneEmcMotionStatus
    • StandaloneEmcIoStatus
    • StandaloneEmcStatus
  4. 新增 sync_standalone_emc_status(),在每次 write_status_snapshot() 前集中同步:
    • task state/mode/interp/exec/status、cycle、program、plan、pending command、home/error 字段。
    • motion snapshot 的 program line、motion id、status、queue、axis、joint0、error/soft-limit、switchkins 字段。
    • io error/estop latch 和 top/task/motion/io RCS 聚合字段。
  5. 修改 status_json()
    • 新增顶层 statusSource=StandaloneEmcStatus
    • 新增 emcStatus JSON 对象,导出 top/task/motion/io 的集中状态。
    • 兼容字段 taskTopLevelStatusrcsStatustaskmotionStatus 改为从 StandaloneEmcStatus 容器读取。
  6. 修改 verify_task_hal_wasm.mjs,断言:
    • statusSourceemcStatus.sourceStandaloneEmcStatus
    • emcStatus.top/task/motion/io 与既有 taskTopLevelStatusrcsStatustaskmotionStatus 一致。
    • 新增输出 standalone_emc_status_container=ok
  7. 修改 verify_task_hal_sdk.mjs,让 SDK smoke 也验证 emcStatus 与兼容字段一致,并新增输出 task_hal_sdk_standalone_emc_status=ok
  8. 修改 verify_task_state_matrix.mjs,新增 assertStandaloneEmcStatus() helper验证 state matrix 中 emcStatus 与兼容字段一致,并新增输出 standalone_emc_status_matrix=ok
  9. 新增 tools/verify_task_standalone_emc_status.sh,固定 T-007 代码结构、测试输出、文档和矩阵状态。
  10. 更新 tools/verify_task_no_json_motion_plan_main_path.sh,让 T-046 gate 在 T-007 完成后检查 T-007 已完成。
  11. 更新 source reuse、drift、compatibility 文档和 verify_task_source_reuse_drift_docs.sh,记录 T-007 StandaloneEmcStatus 边界。
  12. 更新任务矩阵T-007 标为完成;当前矩阵所有任务已闭合,下一条优先任务改为“无”。

影响文件

  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
  • wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
  • wasm-port/tests/wasm/node/verify_task_hal_sdk.mjs
  • wasm-port/tests/wasm/node/verify_task_state_matrix.mjs
  • wasm-port/tools/verify_task_standalone_emc_status.sh
  • wasm-port/tools/verify_task_no_json_motion_plan_main_path.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

当前结论

T-007 已完成。task/motion/io/top 必需状态已集中到 StandaloneEmcStatusJSON status 的 taskmotionStatusrcsStatustaskTopLevelStatus 和新增 emcStatus 均由该容器导出。当前任务矩阵已全部闭合readiness 仍保持未提升。

2026-07-08 05:28 EDT

本轮目标

继续完成对标工作,推进 T-046移除主路径 JSON motion plan 依赖,让 RUN 文件主路径由 staged program、emcTaskPlanRead() / emcTaskPlanCommand() / emcTaskPlanExecute()emccanon.cc command envelope 和 taskintf.cc motion issue 驱动。

本轮做了什么

  1. 复核任务矩阵,确认 T-046 的验收边界是主 RUN 路径不再依赖 lctask_load_program_motion_plan_json(),但 loadProgramMotionPlan() 可以保留为调试/兼容入口。
  2. 修改 tests/wasm/node/verify_task_hal_wasm.mjs
    • 删除主 smoke 中对 lctask_load_program_motion_plan_json() 的预加载。
    • 删除不再需要的 callJson() helper。
    • 将主 RUN 断言改为 motionPlanLoaded=falseplanId=0,并要求 planReadCountplanExecuteCountplanCommandCount 等 staged-program 计数递增。
    • 根据无 JSON 主路径完成速度,放宽 pause/resume/step 中 READING / IDLE 的完成态断言。
    • 新增输出 task_hal_no_json_main_path_status=ok
  3. 修改 tests/wasm/node/verify_task_hal_sdk.mjs
    • 删除默认 status snapshot 前的 sdk.loadProgramMotionPlan() 调用。
    • 默认 SDK smoke 改为断言 motionPlanLoaded=falseplanId=0planReadCount>0
    • 保留后续 timed motion plan 场景作为兼容/调试覆盖,并将输出改为 task_hal_timed_motion_plan_compat=ok
  4. 修改 tests/wasm/node/verify_task_state_matrix.mjs
    • stageAndOpenProgram() 默认 loadPlan=false
    • homed/open RUN gate 改为接受 staged-program 无 JSON 路径。
    • 新增显式 loadPlan: true 兼容场景,证明 JSON timed-plan 入口仍可用。
    • 新增输出 run_gate_staged_program_executes_without_json_plan=okrun_gate_json_motion_plan_compat=ok
  5. 新增 tools/verify_task_no_json_motion_plan_main_path.sh,固定:
    • verify_task_hal_wasm.mjs 不包含 lctask_load_program_motion_plan_json()
    • SDK/state-matrix 中 loadProgramMotionPlan() 仅作为兼容入口存在。
    • T-046 已完成且下一条任务指向 T-007。
  6. 更新 tools/verify_task_emccanon_motion_output.sh 的矩阵期望,让 T-045 gate 接受 T-046 已完成。
  7. 更新 source reuse、drift、compatibility 文档和 verify_task_source_reuse_drift_docs.sh,记录 T-046 no-JSON main RUN path。
  8. 更新任务矩阵T-046 标为完成,下一条优先任务改为 T-007。

影响文件

  • wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
  • wasm-port/tests/wasm/node/verify_task_hal_sdk.mjs
  • wasm-port/tests/wasm/node/verify_task_state_matrix.mjs
  • wasm-port/tools/verify_task_no_json_motion_plan_main_path.sh
  • wasm-port/tools/verify_task_emccanon_motion_output.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

当前结论

T-046 已完成。主 RUN 文件路径已不再依赖 host JSON motion plan默认验证通过 staged program 的 plan read/command/execute、emccanon command envelope 和 taskintf motion issueloadProgramMotionPlan() 仍保留为 timed-plan 兼容/调试入口。下一步进入 T-007建立 EMC_STAT 等价状态容器。

2026-07-08 05:06 EDT

本轮目标

继续完成对标工作,推进 T-045实现 emccanon.cc motion output/switchkins 子集,让 M62-M68/M428-M430 通过 canon motion output 到 emcMotionSetAout(),移除字符串 special-case。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-045下一条为 T-046 移除主路径 JSON motion plan 依赖。
  2. 复核上游 linuxcnc/src/emc/task/emccanon.cc,确认:
    • SET_MOTION_OUTPUT_BIT()CLEAR_MOTION_OUTPUT_BIT()SET_AUX_OUTPUT_BIT()CLEAR_AUX_OUTPUT_BIT() 进入 EMC_MOTION_SET_DOUT / interp_list
    • SET_MOTION_OUTPUT_VALUE()SET_AUX_OUTPUT_VALUE() 进入 EMC_MOTION_SET_AOUT / interp_list
    • WAIT() 进入 EMC_AUX_INPUT_WAIT / interp_list
  3. 扩展 emccanon_wasm_subset.hh/.cc
    • 新增 LcEmcCanonSubsetOutputCommandTypeLcEmcCanonSubsetInputTypeLcEmcCanonSubsetOutputCommand
    • 新增 motion/aux digital output、motion/aux analog output 和 wait input 的 subset API。
    • 新增 lc_emccanon_subset_motion_output_anchor_list(),固定 output/wait message 和 interp_list anchors。
  4. 修改 linuxcnc_task_hal_wasm.cpp
    • TaskRuntime 新增 T-045 evidence 字段:motionOutputCountmotionOutputAppendCountmotionOutputTaskintfAoutCountwaitInputCount、last output/wait 详情和 motionOutputAnchors
    • 新增 issue_motion_output_from_line(),识别精确 M62M63M64M65M66M67M68M428M429M430
    • 删除 enqueue_mdi() 中旧的 mdi.find("M428/M429/M430") 字符串 special-case。
    • M428/M429/M430 现在先通过 canon SET_AUX_OUTPUT_VALUE() 记录 evidence再桥接到既有 taskintf.cc emcMotionSetAout() / lcmot_write_aout() 路径。
  5. 修改 tests/wasm/node/verify_task_hal_wasm.mjs
    • 更新 emccanon anchor 期望,纳入 output/wait 函数。
    • 验证 M428/M429/M430 仍能切换 switchkins。
    • 新增 M62/M63/M64/M65/M67/M68/M66 smoke断言 DOUT/AOUT/WAIT evidence。
    • 新增输出 emccanon_motion_output_status=ok
  6. 修改 tests/wasm/node/verify_task_hal_sdk.mjs
    • 将旧事件 task_mdi_switchkins:M429 断言替换为新的 canon output 事件。
    • 增加 SDK 可见的 motion output status evidence 断言。
  7. 新增 tools/verify_task_emccanon_motion_output.sh验证上游锚点、subset API、wrapper status、移除旧 M428 special-case、WASM smoke 和 T-045/T-046 矩阵状态。
  8. 更新 tools/verify_task_emccanon_spindle_tool.sh,让 T-044 gate 在 T-045 完成后检查 T-045 已完成。
  9. 更新 source reuse、drift、compatibility 文档和 verify_task_source_reuse_drift_docs.sh,固定 T-045 文档口径。
  10. 更新任务矩阵T-045 标为完成,下一条优先任务改为 T-046。

影响文件

  • 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/tests/wasm/node/verify_task_hal_sdk.mjs
  • wasm-port/tools/verify_task_emccanon_motion_output.sh
  • wasm-port/tools/verify_task_emccanon_spindle_tool.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

当前结论

T-045 已完成。M62-M68/M66 已有 EMC_MOTION_SET_DOUT / EMC_MOTION_SET_AOUT / EMC_AUX_INPUT_WAIT / interp_list evidenceM428-M430 已移除旧字符串 special-case改走 canon SET_AUX_OUTPUT_VALUE() 到 taskintf AOUT 路径。下一步进入 T-046移除主路径 JSON motion plan 依赖。

2026-07-08 04:50 EDT

本轮目标

继续完成对标工作,推进 T-044实现 emccanon.cc spindle/tool command 子集,让 spindle/tool commands append 到 interp_listruntime boundary 和 readiness 保守记录。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-044下一条为 T-045 motion output/switchkins。
  2. 复核上游 linuxcnc/src/emc/task/emccanon.cc 的 spindle/tool command 锚点,确认 SET_SPINDLE_SPEED()START_SPINDLE_CLOCKWISE()START_SPINDLE_COUNTERCLOCKWISE()STOP_SPINDLE_TURNING()SELECT_TOOL()CHANGE_TOOL()CHANGE_TOOL_NUMBER()RELOAD_TOOLDATA() 分别生成 EMC_SPINDLE_*EMC_TOOL_* command 并 append 到 interp_list
  3. 扩展 emccanon_wasm_subset.hh/.cc
    • 新增 LcEmcCanonSubsetSpindleCommandTypeLcEmcCanonSubsetToolCommandType
    • 新增 LcEmcCanonSubsetSpindleCommandLcEmcCanonSubsetToolCommand
    • 新增 spindle/tool command envelope API。
    • 新增 lc_emccanon_subset_spindle_tool_anchor_list(),固定 spindle/tool command、message 和 interp_list anchors。
  4. 修改 linuxcnc_task_hal_wasm.cpp
    • TaskRuntime 新增 T-044 evidence 字段:spindleCommandCountspindleAppendCountlastSpindleCommandlastSpindlelastSpindleSpeedlastSpindleWaittoolCommandCounttoolAppendCountlastToolCommandlastToolspindleToolAnchors
    • 新增精确 M code 解析,避免 M428/M429/M430 被误判为 M4
    • 在 staged program line 和 MDI 进入 dwell/path-control 与 straight motion 前识别 S...M3M4M5T...M6M61 Q...
    • 该分支只记录 canonical command envelope 和 interp_list evidence不提升真实 spindle control、tool DB、IO 或 NML readiness。
  5. 修改 tests/wasm/node/verify_task_hal_wasm.mjs
    • 更新 emccanon anchor 期望,纳入 spindle/tool command 锚点。
    • 新增 MDI smokeS1200 M3M5T7 M6M61 Q8
    • 断言 spindleAppendCounttoolAppendCount、last command/tool/speed 和 spindleToolAnchors
    • 新增输出 emccanon_spindle_tool_status=ok
  6. 新增 tools/verify_task_emccanon_spindle_tool.sh验证上游锚点、subset API、wrapper evidence、WASM smoke 和 T-044/T-045 矩阵状态。
  7. 更新 tools/verify_task_emccanon_dwell_path_control.sh,让 T-043 gate 在 T-044 完成后检查 T-044 已完成。
  8. 更新 source reuse、drift、compatibility 文档和 verify_task_source_reuse_drift_docs.sh,固定 T-044 文档口径。
  9. 更新任务矩阵T-044 标为完成,下一条优先任务改为 T-045。

影响文件

  • 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_spindle_tool.sh
  • wasm-port/tools/verify_task_emccanon_dwell_path_control.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

当前结论

T-044 已完成。spindle/tool command 子集已有 EMC_SPINDLE_* / EMC_TOOL_* / interp_list status evidencereadiness 仍保持未提升。下一步进入 T-045motion output/switchkins 子集。

2026-07-08 04:34 EDT

本轮目标

继续完成对标工作,推进 T-043实现 emccanon.cc dwell/path-control 子集,让 DWELL()SET_MOTION_CONTROL_MODE() 进入 task delay/path mode 语义。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-043下一条为 T-044 spindle/tool command。
  2. 读取上游 linuxcnc/src/emc/task/emccanon.cc,确认:
    • DWELL() 构造 EMC_TRAJ_DELAY,设置 delay 秒数,并 append 到 interp_list
    • SET_MOTION_CONTROL_MODE() 构造 EMC_TRAJ_SET_TERM_COND,将 CANON_CONTINUOUS 映射为 blendCANON_EXACT_PATH 映射为 exactCANON_EXACT_STOP 映射为 stop并 append 到 interp_list
  3. 扩展 emccanon_wasm_subset.hh/.cc
    • 新增 path mode 和 term condition 枚举。
    • 新增 LcEmcCanonSubsetDelayLcEmcCanonSubsetTermCond
    • 新增 lc_emccanon_subset_dwell()
    • 新增 lc_emccanon_subset_set_motion_control_mode()
    • 新增 lc_emccanon_subset_dwell_path_control_anchor_list(),固定 DWELL,EMC_TRAJ_DELAY,SET_MOTION_CONTROL_MODE,EMC_TRAJ_SET_TERM_COND,interp_list
  4. 修改 linuxcnc_task_hal_wasm.cpp
    • TaskRuntime 新增 T-043 evidence 字段:dwellCountdelayAppendCountlastDwellSecondspathControlCounttermCondAppendCountlastPathModelastTermConditionlastPathTolerancedwellPathControlAnchors
    • 新增 G-code helper大小写无关匹配和字母参数读取。
    • 新增 issue_dwell_or_path_control_from_line(),识别 G4G61G61.1G64
    • 在 staged program line 和 MDI 进入 straight motion 前拦截上述 non-motion canon command。
    • status JSON 的 emccanonSourceReuse 输出 T-043 evidence 字段。
  5. 修改 tests/wasm/node/verify_task_hal_wasm.mjs
    • 更新 emccanon anchor 期望,纳入 DWELLSET_MOTION_CONTROL_MODE
    • 通过 MDI G64 P0.01G4 P0.02 验证 path-control 和 dwell evidence。
    • 新增输出 emccanon_dwell_path_control_status=ok
  6. 新增 tools/verify_task_emccanon_dwell_path_control.sh验证上游锚点、subset API、wrapper evidence、WASM smoke 和 T-043/T-044 矩阵状态。
  7. 更新 tools/verify_task_emccanon_straight_motion.sh,让 T-042 gate 在 T-043 完成后检查 T-043 已完成。
  8. 更新 source reuse、drift、compatibility 文档和 verify_task_source_reuse_drift_docs.sh,固定 T-043 文档口径。
  9. 更新任务矩阵T-043 标为完成,下一条优先任务改为 T-044。
  10. 受当前沙箱影响,首次 task-HAL 构建失败在 Emscripten cache 只读;随后使用提升权限加载 emsdk 后完成 linuxcnc_task_hal_wasm_build=ok

影响文件

  • 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

当前结论

T-043 已完成。DWELL()SET_MOTION_CONTROL_MODE() 已通过 emccanon_wasm_subset 进入 task-HAL status evidence并保留 unpromoted readiness 合同。下一步进入 T-044spindle/tool command 子集。

2026-07-08 03:52 EDT

本轮目标

继续完成对标工作,推进 T-042实现 emccanon.cc straight traverse/feed 子集,让 STRAIGHT_TRAVERSE()STRAIGHT_FEED() 生成 LinuxCNC EMC_TRAJ_LINEAR_MOVEinterp_list

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-042下一条为 T-043 dwell/path-control。
  2. 读取上游 linuxcnc/src/emc/task/emccanon.cc,确认:
    • generate_fast_move() 构造 EMC_TRAJ_LINEAR_MOVE 并 append 到 interp_list
    • generate_move() 构造 feed EMC_TRAJ_LINEAR_MOVE 并 append 到 interp_list
    • STRAIGHT_TRAVERSE() 设置 line number 并通过 tag_and_send() 进入 linear move / interp_list 路径。
    • STRAIGHT_FEED() 进入 segment/feed linear move 路径。
  3. 扩展 emccanon_wasm_subset.hh/.cc
    • 新增 lc_emccanon_subset_straight_motion_anchor_list()
    • anchor 明确包含 generate_fast_move,generate_move,STRAIGHT_TRAVERSE,STRAIGHT_FEED,EMC_TRAJ_LINEAR_MOVE,interp_list
  4. 修改 linuxcnc_task_hal_wasm.cpp
    • TaskRuntime 新增 T-042 evidence 字段:straightTraverseCountstraightFeedCountlinearMoveAppendCountlastLinearMoveLinelastLinearMoveTypelastInterpListCommandstraightMotionAnchors
    • 新增 mark_emccanon_straight_linear_move()
    • taskintf_command_from_canon() 中记录 canon straight move 到 EMC_TRAJ_LINEAR_MOVE / interp_list 的证据。
    • status JSON 的 emccanonSourceReuse 输出上述字段。
  5. 修改 tests/wasm/node/verify_task_hal_wasm.mjs
    • 主 smoke 断言 straight traverse/feed 计数、linear move append、last line、lastInterpListCommand=EMC_TRAJ_LINEAR_MOVE 和 T-042 anchors。
    • no-json staged program RUN 断言 STRAIGHT_FEEDEMC_TRAJ_LINEAR_MOVE 证据。
    • 新增输出 emccanon_straight_motion_status=ok
  6. 新增 tools/verify_task_emccanon_straight_motion.sh验证上游锚点、subset API、wrapper evidence、WASM smoke 和 T-042/T-043 矩阵状态。
  7. 更新 tools/verify_task_emccanon_init_finish_unit.sh,让 T-041 gate 在 T-042 完成后检查 T-042 已完成,而不是旧的下一条指针。
  8. 更新 source reuse、drift、compatibility 文档和 verify_task_source_reuse_drift_docs.sh,固定 T-042 文档口径。
  9. 更新任务矩阵T-042 标为完成,下一条优先任务改为 T-043。

影响文件

  • 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

当前结论

T-042 已完成。emccanon.cc straight traverse/feed 已有明确 EMC_TRAJ_LINEAR_MOVE / interp_list evidence并继续通过 taskintf.cc structured linear move 边界进入 motion runtime。下一步进入 T-043DWELL()SET_MOTION_CONTROL_MODE() 对标。

2026-07-08 03:36 EDT

本轮目标

继续完成对标工作,推进 T-041实现 emccanon.cc canon init/finish/unit 子集,让 INIT_CANON()ON_RESET()FINISH()、单位/endpoint getter 接入 EMC_STAT 等价状态边界。

本轮做了什么

  1. 读取任务矩阵,确认 T-041 是当前推进目标T-042 为下一条 straight traverse/feed 子集。
  2. 扩展 emccanon_wasm_subset.hh/.cc
    • 新增 LcEmcCanonSubsetState 和长度单位枚举。
    • 新增 lc_emccanon_subset_init()lc_emccanon_subset_on_reset()lc_emccanon_subset_finish()
    • 新增 lc_emccanon_subset_use_length_units() 和 external length/angle/unit getter。
    • 新增 lc_emccanon_subset_update_endpoint()lc_emccanon_subset_get_external_position()
    • anchor list 纳入 INIT_CANON/ON_RESET/FINISH/USE_LENGTH_UNITS/GET_EXTERNAL_*
  3. 修改 linuxcnc_task_hal_wasm.cpp
    • TaskRuntime 新增 emccanon_state 以及 init/finish/reset/unit/position/endpoint evidence 计数。
    • session init 使用 motion config linear/angular units 初始化 canon subset。
    • motion snapshot 和 canon move issue 路径更新 external endpoint。
    • plan reset 调用 lc_emccanon_subset_on_reset()
    • status JSON 的 emccanonSourceReuse 输出 units、endpoint 和 initFinishUnitAnchors
  4. 修改 tests/wasm/node/verify_task_hal_wasm.mjs
    • 断言 T-041 anchors、init/finish/unit/position/endpoint/reset evidence。
    • 新增 smoke 输出 emccanon_init_finish_unit_status=ok
  5. 新增 tools/verify_task_emccanon_init_finish_unit.sh验证上游锚点、subset API、wrapper 使用、status JSON、WASM smoke 和 T-041/T-042 矩阵状态。
  6. 更新 source reuse、drift、compatibility 文档和 verify_task_source_reuse_drift_docs.sh,固定 T-041 文档口径。
  7. 修正两个跟推进指针老化有关的 gate
    • verify_task_emctask_plan_read_execute.sh 改为检查 T-041 已完成。
    • verify_task_taskintf_jog_home_switchkins.sh 改为检查 T-037 已完成。
  8. 更新任务矩阵T-041 标为完成,下一条优先任务改为 T-042。

影响文件

  • 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_emctask_plan_read_execute.sh
  • wasm-port/tools/verify_task_taskintf_jog_home_switchkins.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

当前结论

T-041 已完成。emccanon.cc 的 canon init/reset/finish/unit/external position getter 已进入 source-anchored subsettask-HAL status 可观测 T-041 evidencereadiness 仍保持未提升。下一步进入 T-042实现 STRAIGHT_TRAVERSE()STRAIGHT_FEED()EMC_TRAJ_LINEAR_MOVE/interp_list 的对标。

2026-07-08 03:14 EDT

本轮目标

继续完成对标工作,推进 T-040实现 emctask.cc plan read/execute 子集,让 PlanRead/Execute/Line/Level/Command 驱动 staged program 到 interp_list/taskintf 路径,并移除 RUN 对 host JSON motion plan 的硬依赖。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-040。
  2. 读取上游 linuxcnc/src/emc/task/emctask.ccemctaskmain.cc
    • emcTaskPlanRead() 调用 interp.read()
    • emcTaskPlanExecute() 调用 interp.execute()MDI 时可先 synch之后 FINISH()
    • emcTaskPlanLine()emcTaskPlanLevel()emcTaskPlanCommand() 暴露 read line、call level 和 command 文本。
    • readahead_reading() 通过 PlanRead -> PlanLine/Command -> PlanExecute -> interp_list 推进 interpreter。
  3. 扩展 emctask_wasm_subset.hh/.cc
    • 新增 LcEmcTaskSubsetPlanIoResult
    • 新增 lc_emctask_subset_plan_read()
    • 新增 lc_emctask_subset_plan_execute()
    • 新增 lc_emctask_subset_plan_line()
    • 新增 lc_emctask_subset_plan_level()
    • 新增 lc_emctask_subset_plan_command()
    • 新增 lc_emctask_subset_plan_read_execute_anchor_list()
    • lc_emctask_subset_anchor_list() 纳入 emcTaskPlanRead/Execute/Line/Level/Command
  4. 修改 linuxcnc_task_hal_wasm.cpp
    • TaskRuntime 新增 T-040 evidence 字段read/execute/line/level/command 计数、interpListAppendCount、last line/level/command、read/execute anchors。
    • 新增 mark_emctask_plan_read_execute()
    • 新增 emctask_plan_execute_command()
    • 新增 emctask_plan_read_execute_program_line()
    • 拆出 issue_linear_move_from_line(),让 PlanRead 返回的 line number 驱动 canon/taskintf motion issue。
    • task_accepts_plan_run() 不再要求 motion_plan_loaded,改为要求 staged program lines 存在。
    • wasm_emcTaskExecute() 的 program work 判断改为支持 staged program lines。
    • no-json path 通过 PlanRead/Line/Level/Command/Execute 读取 staged program line并 append 到当前 pending_execute_motion_commands/taskintf issue 等价路径。
    • MDI EMC_TASK_PLAN_EXECUTE 也进入 PlanExecute evidence 路径。
    • RUN 起点不再立即 set wait避免阻塞 PlanRead()staged program 行读完后记录并清理 wait。
  5. 修改 tests/wasm/node/verify_task_hal_wasm.mjs
    • 更新 emctask anchors。
    • 新增 no-json staged program smoke不调用 lctask_load_program_motion_plan_json()
    • 断言 planReadCountplanExecuteCountplanLineCountplanLevelCountplanCommandCountinterpListAppendCountplanReadExecuteAnchors
    • 新增输出 emctask_plan_read_execute_status=ok
  6. 修改 tests/wasm/node/verify_task_state_matrix.mjs
    • 将旧的 loadPlan:false 拒绝用例改为 staged program 可执行用例。
    • 输出改为 run_gate_staged_program_executes_without_json_plan=ok
  7. 新增 tools/verify_task_emctask_plan_read_execute.sh验证上游锚点、subset API、wrapper no-json RUN、WASM smoke、state matrix 和 T-040/T-041 矩阵状态。
  8. 更新 tools/verify_task_emctask_plan_open_wait.sh,适配 T-040 已完成后的矩阵状态。
  9. 更新 tools/verify_task_source_reuse_drift_docs.sh,把 T-040 文档和 gate 纳入 source reuse/drift/compatibility 检查。
  10. 更新 docs/source-reuse-map.mddocs/drift-report.mddocs/compatibility-validation.md,记录 T-040 plan read/execute/line/level/command 映射。
  11. 更新任务矩阵T-040 标为完成,下一推进指针改为 T-041。
  12. 新增决策 D-032记录 staged program 主路径接管、RUN wait 调整和 JSON motion plan 兼容入口保留。

改了哪些文件

  • wasm-port/vendor/linuxcnc/src/emc/task/emctask_wasm_subset.hh
  • wasm-port/vendor/linuxcnc/src/emc/task/emctask_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/tests/wasm/node/verify_task_state_matrix.mjs
  • wasm-port/tools/verify_task_emctask_plan_read_execute.sh
  • wasm-port/tools/verify_task_emctask_plan_open_wait.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/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过。
  • ./tools/verify_task_emctask_plan_read_execute.sh:通过,验证 T-040 plan read/execute/line/level/command 和 no-json staged program RUN。
  • ./tools/verify_task_source_reuse_drift_docs.sh:通过。
  • ./tools/verify_task_emctask_plan_open_wait.sh:通过,确认 T-039 gate 适配 T-040 已完成后的矩阵状态。
  • node ./tests/wasm/node/verify_task_state_matrix.mjs:通过,确认 staged program 不依赖 JSON motion plan。
  • ./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:通过,确认 readiness 不提升。
  • git diff --check -- ...:通过。

下一步

推进 T-041实现 emccanon.cc canon init/finish/unit 子集,让 INIT_CANON()ON_RESET()FINISH()、单位/endpoint getter 接入 EMC_STAT 等价状态边界。

2026-07-08 02:30 EDT

本轮目标

继续完成对标工作,推进 T-039实现 emctask.cc plan wait/synch/open/close 子集,让 PlanSetWait/IsWait/ClearWait/Synch/Open/Close/Reset 接入 vendored emctask_wasm_subset 和 staged FS 边界。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-039。
  2. 读取上游 linuxcnc/src/emc/task/emctask.cc
    • emcTaskPlanSetWait() / emcTaskPlanIsWait() / emcTaskPlanClearWait() 操作 waitFlag
    • emcTaskPlanSynch() 调用 interp.synch(),错误时触发 abort。
    • emcTaskPlanOpen() 清零 motion/current/read line调用 interp.open(file),成功后设置 taskplanopen=1
    • emcTaskPlanClose() 调用 interp.close() 并清 taskplanopen
    • emcTaskPlanReset() 调用 interp.reset()
  3. 扩展 emctask_wasm_subset.hh/.cc
    • 新增 LcEmcTaskSubsetPlanState
    • 新增 LcEmcTaskSubsetPlanResult
    • 新增 lc_emctask_subset_plan_set_wait()lc_emctask_subset_plan_is_wait()lc_emctask_subset_plan_clear_wait()
    • 新增 lc_emctask_subset_plan_synch()lc_emctask_subset_plan_open()lc_emctask_subset_plan_close()lc_emctask_subset_plan_reset()
    • 新增 lc_emctask_subset_plan_anchor_list()
  4. 修改 linuxcnc_task_hal_wasm.cpp
    • TaskRuntime 新增 plan wait/open 状态和 T-039 evidence 计数字段。
    • 新增 emctask_plan_state_from_runtime()apply_emctask_plan_result()emctask_plan_set_wait()emctask_plan_clear_wait()emctask_plan_synch()emctask_plan_close()emctask_plan_reset()
    • apply_emctask_command_result()should_plan_synch 调用 emctask_plan_synch()
    • lctask_open_program() 改为通过 lc_emctask_subset_plan_open() 处理 open 决策,并继续由 wrapper 管理 staged FS 文本。
    • EMC_TASK_PLAN_RUN 接受前要求 task_plan_open=true,开始 RUN 时通过 PlanSetWait 设置 wait flag。
    • 程序完成和 motion wait done 路径通过 PlanClearWait 清 wait flag。
    • 新增 EMC_TASK_PLAN_CLOSEEMC_TASK_PLAN_RESET 的 task-cycle command 分支。
    • status JSON 的 task 新增 taskPlanOpentaskPlanWaitemctaskSourceReuse 新增 plan evidence 字段。
  5. 修改 tests/wasm/node/verify_task_hal_wasm.mjs,断言 T-039 plan anchors、plan open、plan wait set、plan synch 等 evidence。
  6. 新增 tools/verify_task_emctask_plan_open_wait.sh验证上游锚点、subset plan state/result、wrapper staged FS/open/wait/synch/close/reset 使用、WASM smoke 断言和 T-039/T-040 矩阵状态。
  7. 更新 tools/verify_task_emctask_update_snapshot.sh,适配 T-039 已完成后的矩阵状态。
  8. 更新 tools/verify_task_source_reuse_drift_docs.sh,把 T-039 文档和 gate 纳入 source reuse/drift/compatibility 检查。
  9. 更新 docs/source-reuse-map.mddocs/drift-report.mddocs/compatibility-validation.md,记录 T-039 plan wait/open/synch/reset 映射。
  10. 更新任务矩阵T-039 标为完成,下一推进指针改为 T-040。
  11. 新增决策 D-031记录 plan wait/open/synch/reset 采用窄 plan-result 子集readiness 不提升。

改了哪些文件

  • wasm-port/vendor/linuxcnc/src/emc/task/emctask_wasm_subset.hh
  • wasm-port/vendor/linuxcnc/src/emc/task/emctask_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_emctask_plan_open_wait.sh
  • wasm-port/tools/verify_task_emctask_update_snapshot.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/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过。
  • ./tools/verify_task_emctask_plan_open_wait.sh:通过,验证 T-039 plan wait/open/synch/reset 输入边界。
  • ./tools/verify_task_source_reuse_drift_docs.sh:通过,确认 source reuse / drift / compatibility 文档已记录 T-039。
  • ./tools/verify_task_emctask_update_snapshot.sh:通过,确认 T-038 gate 适配 T-039 已完成后的矩阵状态。
  • ./tools/verify_task_emctask_state_mode.sh:通过。
  • ./tools/verify_task_emctask_subset.sh:通过。
  • node ./tests/wasm/node/verify_task_state_matrix.mjs:通过,确认 command 仍由 task cycle 消费。
  • ./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:通过,确认 readiness 不提升。
  • git diff --check -- ...:通过。

下一步

推进 T-040实现 emctask.cc plan read/execute 子集,让 PlanRead/Execute/Line/Level/Command 驱动 interp_list,继续减少 JSON motion plan 主路径依赖。

2026-07-08 01:57 EDT

本轮目标

继续完成对标工作,推进 T-038实现 emctask.cc determine/update 子集,让 determineMode()determineState()emcTaskUpdate() 从 motion/io snapshot 推导 task status减少 task wrapper 自有状态字符串推导。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-038。
  2. 复核上游 linuxcnc/src/emc/task/emctask.ccdetermineMode()determineState()emcTaskUpdate() 的输入边界:
    • task mode 由 traj mode/teleop/free 状态推导。
    • task state 由 traj enabled 和 IO estop 推导。
    • status update 汇总 motion id、task mode、task state 等字段。
  3. 修改 linuxcnc_task_hal_wasm.cpp
    • emctask_subset_traj_mode() 优先读取 LcmotStatusSnapshot.coord_modeteleop_mode
    • 新增 emctask_subset_traj_enabled(),优先读取 LcmotStatusSnapshot.motion_enabled
    • 新增 emctask_subset_io_estop(),聚合 ESTOP latch 与 IO error。
    • wasm_emcTaskUpdate() 改为用 motion/io snapshot 构造 LcEmcTaskSubsetUpdateInput
    • emctaskSourceReuse 新增 snapshotUpdateCountupdateInputSource,记录正常路径为 motionSnapshot,ioSnapshot
  4. 修改 tests/wasm/node/verify_task_hal_wasm.mjs,断言 task-HAL smoke 中 snapshot-fed update 已执行。
  5. 新增 tools/verify_task_emctask_update_snapshot.sh验证上游锚点、wrapper snapshot 输入、status evidence、WASM smoke 断言和 T-038/T-039 矩阵状态。
  6. 更新 tools/verify_task_source_reuse_drift_docs.sh,把 T-038 文档和 gate 纳入 source reuse/drift/compatibility 检查。
  7. 更新 docs/source-reuse-map.mddocs/drift-report.mddocs/compatibility-validation.md,记录 T-038 determine/update snapshot mapping。
  8. 更新 tools/verify_task_emctask_state_mode.sh,将矩阵检查从“下一步 T-038”调整为“T-038 已完成”,避免 T-037 gate 在矩阵推进后误报。
  9. 更新任务矩阵T-038 标为完成,下一推进指针改为 T-039。
  10. 新增决策 D-030记录 update 输入改由 motion/io snapshot 提供readiness 不提升。

改了哪些文件

  • 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_emctask_update_snapshot.sh
  • wasm-port/tools/verify_task_emctask_state_mode.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/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过。
  • ./tools/verify_task_emctask_update_snapshot.sh:通过,验证 T-038 determine/update snapshot 输入边界。
  • ./tools/verify_task_source_reuse_drift_docs.sh:通过,确认 source reuse / drift / compatibility 文档已记录 T-038。
  • ./tools/verify_task_emctask_state_mode.sh:通过,确认 T-037 gate 适配 T-038 已完成后的矩阵状态。
  • ./tools/verify_task_emctask_subset.sh:通过,确认 emctask subset source reuse 不回退。
  • node ./tests/wasm/node/verify_task_state_matrix.mjs:通过,确认 command 仍由 task cycle 消费。
  • ./tests/wasm/node/verify_task_hal_sdk.sh:通过,确认 SDK wrapper 不回退。
  • SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh:通过,确认 low-level motion/HAL sync 不回退。
  • ./tools/verify_task_hal_readiness_contract.sh:通过,确认 readiness 不提升。
  • git diff --check -- ...:通过。

下一步

推进 T-039实现 emctask.cc plan wait/synch/open/close 子集,让 PlanSetWait/IsWait/ClearWait/Synch/Open/Close/Reset 接入 vendored interpreter 和 staged FS。

2026-07-08 01:49 EDT

本轮目标

继续完成对标工作,推进 T-037实现 emctask.cc abort/state/mode 子集,让 emcTaskAbort()emcTaskSetMode()emcTaskSetState() 替换当前 wrapper 自有逻辑,并保持语义由 task cycle 触发。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-037。
  2. 读取上游 linuxcnc/src/emc/task/emctask.cc
    • emcTaskAbort() 清理 interpreter/task execution 状态并 plan synch。
    • emcTaskSetMode() 切换 MANUAL/MDI/AUTO并按模式同步 traj mode。
    • emcTaskSetState() 切换 OFF/ON/ESTOP_RESET/ESTOP并触发 traj enable/disable、motion abort、unhome、cleanup、plan synch。
  3. 扩展 emctask_wasm_subset.hh/.cc
    • 新增 LC_EMC_TASK_SUBSET_STATE_OFF
    • 新增 LcEmcTaskSubsetCommandResult
    • 新增 lc_emctask_subset_abort()
    • 新增 lc_emctask_subset_set_mode()
    • 新增 lc_emctask_subset_set_state()
    • 新增 lc_emctask_subset_state_mode_anchor_list()
    • lc_emctask_subset_anchor_list() 扩展为 emcTaskAbort,emcTaskSetMode,emcTaskSetState,determineMode,determineState,emcTaskUpdate
  4. 修改 linuxcnc_task_hal_wasm.cpp
    • 新增 mode/state 字符串与 emctask subset enum 的转换。
    • 新增 apply_emctask_command_result(),统一执行 clear interpreter、traj enable/disable、unhome、motion abort、homing reset 等 wrapper 动作。
    • TaskCommandType::SetState 改为调用 lc_emctask_subset_set_state()
    • TaskCommandType::SetMode 改为调用 lc_emctask_subset_set_mode()
    • TaskCommandType::Abort 改为调用 lc_emctask_subset_abort()
    • status JSON 的 emctaskSourceReuse 新增 stateModeIssueCountabortIssueCountstateModeAnchors
  5. 更新 tests/wasm/node/verify_task_hal_wasm.mjs,断言新的 emctask anchors 和 state/mode/abort 状态字段。
  6. 更新 tools/verify_task_emctask_subset.sh,把 abort/set-mode/set-state 纳入 source reuse 检查。
  7. 新增 tools/verify_task_emctask_state_mode.sh,验证 T-037 的上游锚点、subset command-result、wrapper 使用、state matrix gate 和矩阵状态。
  8. 更新 tools/verify_task_source_reuse_drift_docs.sh
  9. 更新 docs/source-reuse-map.mddocs/drift-report.mddocs/compatibility-validation.md,记录 T-037 abort/state/mode command-result 映射和验证 gate。
  10. 更新任务矩阵T-037 标为完成,下一推进指针改为 T-038。
  11. 新增决策 D-029记录 T-037 采用窄 command-result 子集,以及 set-mode 不直接下发 motion abort 的 runtime-edge 降级理由。

改了哪些文件

  • wasm-port/vendor/linuxcnc/src/emc/task/emctask_wasm_subset.hh
  • wasm-port/vendor/linuxcnc/src/emc/task/emctask_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_emctask_subset.sh
  • wasm-port/tools/verify_task_emctask_state_mode.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/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过。
  • ./tools/verify_task_emctask_state_mode.sh:通过,验证 T-037 abort/state/mode 实现和矩阵状态。
  • ./tools/verify_task_emctask_subset.sh:通过,确认 emctask subset source reuse 不回退。
  • ./tools/verify_task_source_reuse_drift_docs.sh:通过,确认 source reuse / drift / compatibility 文档已记录 T-037。
  • node ./tests/wasm/node/verify_task_state_matrix.mjs:通过,确认 command 仍由 task cycle 消费。
  • ./tests/wasm/node/verify_task_hal_sdk.sh:通过,确认 SDK wrapper 不回退。
  • SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh:通过,确认 low-level motion/HAL sync 不回退。
  • ./tools/verify_task_hal_readiness_contract.sh:通过,确认 readiness 不提升。
  • git diff --check -- ...:通过。

下一步

推进 T-038实现 emctask.cc determine/update 子集,让 determineMode()determineState()emcTaskUpdate() 从 motion/io snapshot 推导 task status并进一步收敛当前 wrapper 推导逻辑。

2026-07-08 01:39 EDT

本轮目标

继续完成对标工作,推进 T-036实现 taskintf.cc jog/home/switchkins 子集,让 emcJogIncr()emcJointHome/Unhome()emcMotionSetAout() 接入结构化 taskintf/lcmot bridge并保持 Home/Jog/M428-M430 验收通过。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-036。
  2. 读取上游 linuxcnc/src/emc/task/taskintf.cc
    • emcJogIncr() 填充 EMCMOT_JOG_INCR、axis/joint、vel、offset。
    • emcJointHome() 填充 EMCMOT_JOINT_HOME 和 joint。
    • emcJointUnhome() 填充 EMCMOT_JOINT_UNHOME 和 joint。
    • emcMotionSetAout() 填充 EMCMOT_SET_AOUT、index、now、start/end。
  3. 扩展 linuxcnc_motion_runtime.h/.c
    • 新增 lcmot_write_jog_incr()
    • 新增 lcmot_write_joint_home()
    • 新增 lcmot_write_joint_unhome()
    • 新增 lcmot_write_aout()
    • 新增 LCMOT_CMD_JOINT_HOMELCMOT_CMD_JOINT_UNHOME,并扩展 LcmotCommand 的 joint/aout 字段。
    • 保留 JSON 兼容解析,但 taskintf 主路径改走结构化 ABI。
  4. 扩展 taskintf_wasm_subset.hh/.cc
    • 新增 LC_TASKINTF_SUBSET_COMMAND_JOINT_UNHOME
    • 新增 lc_taskintf_subset_joint_unhome()
    • 新增 lc_taskintf_subset_jog_incr_ex(),保留 axis/joint jog mode 和 motion id。
    • 新增 lc_taskintf_subset_jog_home_switchkins_anchor_list()
    • anchor list 纳入 emcJointUnhome()
  5. 修改 linuxcnc_task_hal_wasm.cpp
    • issue_taskintf_motion_command() 对 jog/home/unhome/aout 分别调用结构化 lcmot_write_*
    • taskintfSourceReuse 新增 jogHomeSwitchkinsIssueCountjogHomeSwitchkinsStructuredIssueCountjogHomeSwitchkinsAnchors
  6. 修改 tools/build_task_hal_wasm.sh,导出 _lcmot_write_jog_incr_lcmot_write_joint_home_lcmot_write_joint_unhome_lcmot_write_aout
  7. 更新 tests/wasm/node/verify_task_hal_wasm.mjs
    • taskintf anchors 增加 emcJointUnhome
    • 断言 jogHomeSwitchkins* 状态字段。
    • MDI smoke 覆盖 M428、M429、M430。
    • 直接 ABI smoke 覆盖 lcmot_write_aout()lcmot_write_jog_incr()lcmot_write_joint_home()lcmot_write_joint_unhome()
    • 新增输出 taskintf_jog_home_switchkins_status=ok
  8. 新增 tools/verify_task_taskintf_jog_home_switchkins.sh,验证 T-036 的上游锚点、subset envelope、结构化 lcmot ABI、WASM export、smoke 输出和矩阵状态。
  9. 更新 tools/verify_task_taskintf_subset.shtools/verify_task_taskintf_linear_move.shtools/verify_task_source_reuse_drift_docs.sh
  10. 更新 docs/source-reuse-map.mddocs/drift-report.mddocs/compatibility-validation.md,记录 T-036 jog/home/switchkins 映射和验证 gate。
  11. 更新任务矩阵T-036 标为完成,下一推进指针改为 T-037。
  12. 新增决策 D-028记录 jog/home/switchkins 采用结构化 lcmot_write_* 下发readiness 不提升。

改了哪些文件

  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.h
  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.c
  • wasm-port/vendor/linuxcnc/src/emc/task/taskintf_wasm_subset.hh
  • wasm-port/vendor/linuxcnc/src/emc/task/taskintf_wasm_subset.cc
  • 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_task_hal_wasm.mjs
  • wasm-port/tools/verify_task_taskintf_jog_home_switchkins.sh
  • wasm-port/tools/verify_task_taskintf_subset.sh
  • wasm-port/tools/verify_task_taskintf_linear_move.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/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,输出 taskintf_jog_home_switchkins_status=ok
  • ./tools/verify_task_taskintf_jog_home_switchkins.sh:通过,验证 T-036 jog/home/switchkins 实现和矩阵状态。
  • ./tools/verify_task_taskintf_subset.sh:通过,确认 taskintf subset source reuse 不回退。
  • ./tools/verify_task_source_reuse_drift_docs.sh:通过,确认 source reuse / drift / compatibility 文档已记录 T-036。
  • ./tools/verify_task_taskintf_linear_move.sh:通过,确认 T-035 gate 按当前矩阵口径不回退。
  • ./tools/verify_task_taskintf_traj_control.sh:通过,确认 T-034 gate 不回退。
  • ./tools/verify_task_taskintf_motion_bridge.sh:通过,确认 T-033 bridge gate 不回退。
  • ./tools/verify_task_hal_readiness_contract.sh:通过,确认 readiness 不提升。
  • ./tests/wasm/node/verify_task_hal_sdk.sh:通过,确认 SDK wrapper 不回退。
  • SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh:通过,确认 low-level motion/HAL sync 不回退。
  • git diff --check -- ...:通过。

下一步

推进 T-037实现 emctask.cc abort/state/mode 子集,让 emcTaskAbort()emcTaskSetMode()emcTaskSetState() 替换当前自有逻辑,并保持语义由 task cycle 触发。

2026-07-08 01:27 EDT

本轮目标

继续完成对标工作,推进 T-035实现 taskintf.cc linear move issue 子集,让 emcTrajLinearMove() 替换 task JSON linear move 拼接,并保持 G0/G1 smoke 通过。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-035。
  2. 读取上游 linuxcnc/src/emc/task/taskintf.ccemcTrajLinearMove(),确认上游行为是填充 EMCMOT_SET_LINE、目标 pose、motion id、motion type、vel、ini maxvel、acc、ini maxjerk并通过 usrmotWriteEmcmotCommand() 写给 motion。
  3. 扩展 linuxcnc_motion_runtime.h/.c
    • 新增结构化 ABI lcmot_write_linear_move()
    • LcmotCommand 增加 motion_idmotion_typeini_maxvelaccelerationini_maxjerk
    • linear/circular/jog issue 时优先使用 command motion id其次消费 SET_MOTION_ID 的 next id否则递增。
    • 保留 lcmot_write_command_json() 兼容路径,并补充解析 motionTypeiniMaxVelaccelerationiniMaxJerk
  4. 扩展 taskintf_wasm_subset.hh/.cc
    • 新增 lc_taskintf_subset_linear_move_ex()
    • linear command envelope 保留 line、motion type、motion id、velocity、ini maxvel、acceleration、ini maxjerk 和 pose。
    • 新增 lc_taskintf_subset_linear_move_anchor_list(),固定 emcTrajLinearMove,EMCMOT_SET_LINE,usrmotWriteEmcmotCommand
  5. 修改 linuxcnc_task_hal_wasm.cpp
    • pending_execute_motion_commands 从纯 JSON 字符串改为 PendingMotionCommand
    • linear move 主路径和 pending execute flush 都调用 lcmot_write_linear_move()
    • 非 linear 的 jog/home/switchkins/traj control 暂保留现有 JSON 兼容路径,留给 T-036。
    • status JSON 新增 linearMoveIssueCountlinearMoveStructuredIssueCountlinearMoveAnchors
  6. 更新 tools/build_task_hal_wasm.sh,导出 _lcmot_write_linear_move
  7. 更新 tests/wasm/node/verify_task_hal_wasm.mjs
    • 第一段 motion plan 改为 STRAIGHT_TRAVERSE,后续仍覆盖 STRAIGHT_FEED
    • 断言 linearMoveIssueCountlinearMoveStructuredIssueCountlinearMoveAnchors
    • 增加直接 _lcmot_write_linear_move() smoke。
    • 新增输出 taskintf_linear_move_status=ok
  8. 新增 tools/verify_task_taskintf_linear_move.sh,验证 T-035 的上游锚点、subset envelope、结构化 lcmot ABI、WASM export、smoke 输出和矩阵状态。
  9. 更新 tools/verify_task_taskintf_subset.shtools/verify_task_taskintf_traj_control.shtools/verify_task_source_reuse_drift_docs.sh
  10. 更新 docs/source-reuse-map.mddocs/drift-report.mddocs/compatibility-validation.md,记录 T-035 linear move 映射和验证 gate。
  11. 更新任务矩阵T-035 标为完成,下一推进指针改为 T-036。
  12. 新增决策 D-027记录 linear move 采用结构化 lcmot_write_linear_move() 下发readiness 不提升。

改了哪些文件

  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.h
  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.c
  • wasm-port/vendor/linuxcnc/src/emc/task/taskintf_wasm_subset.hh
  • wasm-port/vendor/linuxcnc/src/emc/task/taskintf_wasm_subset.cc
  • 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_task_hal_wasm.mjs
  • wasm-port/tools/verify_task_taskintf_linear_move.sh
  • wasm-port/tools/verify_task_taskintf_subset.sh
  • wasm-port/tools/verify_task_taskintf_traj_control.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/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,输出 taskintf_linear_move_status=ok
  • ./tools/verify_task_taskintf_linear_move.sh:通过,验证 T-035 linear move 实现和矩阵状态。
  • ./tools/verify_task_taskintf_subset.sh:通过,确认 taskintf subset source reuse 不回退。
  • ./tools/verify_task_source_reuse_drift_docs.sh:通过,确认 source reuse / drift / compatibility 文档已记录 T-035。
  • ./tools/verify_task_taskintf_traj_control.sh:通过,确认 T-034 gate 按当前矩阵口径不回退。
  • ./tools/verify_task_hal_readiness_contract.sh:通过,确认 readiness 不提升。
  • ./tools/verify_task_taskintf_motion_bridge.sh:通过,确认 T-033 bridge gate 不回退。
  • ./tests/wasm/node/verify_task_hal_sdk.sh:通过,确认 SDK wrapper 不回退。
  • SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh:通过,确认 low-level motion/HAL sync 不回退。
  • git diff --check -- ...:通过。

下一步

推进 T-036实现 taskintf.cc jog/home/switchkins 子集,让 emcJogIncr()emcJointHome/Unhome()emcMotionSetAout() 从现有 JSON 兼容路径继续收拢到结构化 taskintf/lcmot bridge。

2026-07-08 01:13 EDT

本轮目标

继续完成对标工作,推进 T-034实现 taskintf.cc traj control 子集,让 emcTrajEnable/Disable/Abort/Pause/Step/Resume/SetMotionId 接入 lcmot,并保持 pause/step/resume smoke 不回退。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-034。
  2. 读取上游 linuxcnc/src/emc/task/taskintf.ccemcTrajSetMotionId()emcTrajEnable()emcTrajDisable()emcTrajAbort()emcTrajPause()emcTrajStep()emcTrajResume()
  3. 读取上游 linuxcnc/src/emc/motion/motion.hcommand.c,确认 EMCMOT_ENABLE / EMCMOT_DISABLE / EMCMOT_ABORT / EMCMOT_PAUSE / EMCMOT_STEP / EMCMOT_RESUME 的 motion command 边界。
  4. 扩展 LcmotStatusSnapshot,在结构尾部追加 motion_enablednext_motion_id,不改变既有字段偏移。
  5. 扩展 linuxcnc_motion_runtime.c
    • 新增 LCMOT_CMD_ENABLELCMOT_CMD_DISABLELCMOT_CMD_SET_MOTION_ID
    • 新增 runtime 状态 motion_enablednext_motion_idhas_next_motion_id
    • EMC_TRAJ_ENABLE / EMCMOT_ENABLE 设置 enabled。
    • EMC_TRAJ_DISABLE / EMCMOT_DISABLE 清 enabled 并清 current velocity。
    • EMC_TRAJ_SET_MOTION_ID / EMCMOT_SET_MOTION_ID 设置下一条 motion id。
    • linear/jog motion issue 时优先使用已设置 motion id否则保持原有递增行为。
  6. 扩展 taskintf_wasm_subset.hh/.cc
    • 新增 LC_TASKINTF_SUBSET_COMMAND_TRAJ_ENABLE
    • 新增 LC_TASKINTF_SUBSET_COMMAND_TRAJ_DISABLE
    • 新增 LC_TASKINTF_SUBSET_COMMAND_TRAJ_SET_MOTION_ID
    • 新增 lc_taskintf_subset_traj_enable()lc_taskintf_subset_traj_disable()lc_taskintf_subset_traj_set_motion_id()
    • 新增 lc_taskintf_subset_traj_control_anchor_list()
  7. 修改 linuxcnc_task_hal_wasm.cpp
    • taskintf_motion_json() 支持 enable/disable/set-motion-id command JSON。
    • 新增 taskintf_traj_control_issue_counttaskintf_traj_control_anchors
    • state ON 时通过 taskintf traj enable 接入 lcmot
    • state OFF/ESTOP 时通过 taskintf traj disable 和 abort 接入 lcmot
    • program line、timed motion sample、MDI linear move issue 前先通过 lc_taskintf_subset_traj_set_motion_id() 设置 motion id。
    • status JSON 导出 trajControlIssueCounttrajControlAnchors、motion enablednextMotionId
  8. 更新 tests/wasm/node/verify_task_hal_wasm.mjs
    • 更新 taskintf source reuse anchors。
    • 断言 trajControlIssueCounttrajControlAnchors
    • 断言 motion enablednextMotionId
    • 新增输出 taskintf_traj_control_status=ok
  9. 更新 tools/verify_task_taskintf_subset.sh,把 SetMotionId/Enable/Disable 纳入 source reuse 验证。
  10. 新增 tools/verify_task_taskintf_traj_control.sh,验证 T-034 的上游锚点、subset command envelope、lcmot 状态、wrapper JSON、smoke 输出和矩阵状态。
  11. 更新 docs/source-reuse-map.mddocs/drift-report.mddocs/compatibility-validation.md,记录 T-034 traj control 映射和验证 gate。
  12. 更新任务矩阵T-034 标为完成,下一推进指针改为 T-035。

改了哪些文件

  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.h
  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.c
  • wasm-port/vendor/linuxcnc/src/emc/task/taskintf_wasm_subset.hh
  • wasm-port/vendor/linuxcnc/src/emc/task/taskintf_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_taskintf_subset.sh
  • wasm-port/tools/verify_task_taskintf_traj_control.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/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,输出 taskintf_traj_control_status=ok
  • ./tools/verify_task_taskintf_traj_control.sh:验证 T-034 traj control 实现和矩阵状态。
  • ./tools/verify_task_taskintf_subset.sh:验证 taskintf subset source reuse 不回退。
  • ./tools/verify_task_source_reuse_drift_docs.sh:验证 source reuse / drift / compatibility 文档已记录 T-034。
  • ./tools/verify_task_hal_readiness_contract.sh:通过,确认 readiness 不提升。
  • ./tools/verify_task_taskintf_motion_bridge.sh:通过,确认 T-033 bridge gate 在 T-034 后仍稳定。
  • ./tests/wasm/node/verify_task_hal_sdk.sh:通过,确认 SDK wrapper 不回退。
  • SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh:通过,确认 low-level motion/HAL sync 不回退。
  • git diff --check -- ...:通过。

下一步

推进 T-035实现 taskintf.cc linear move issue 子集,让 emcTrajLinearMove() 替换 task JSON linear move 拼接。

2026-07-08 01:00 EDT

本轮目标

继续完成对标工作,推进 T-033实现 taskintf.cc motion init/update/abort 子集,让 emcMotionInit()emcMotionUpdate()emcMotionAbort() 通过 WASM usrmot/lcmot bridge 工作。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-033。
  2. 读取上游 linuxcnc/src/emc/task/taskintf.cc
    • emcMotionInit() 调用 traj/joint/axis/spindle init并由 usrmot 初始化 motion edge。
    • emcMotionAbort() 对 joint jog abort 和 traj abort 发 command。
    • emcMotionUpdate() 依次读取 usrmot status、config、internal、error再更新 traj/joint/axis/spindle status。
  3. 读取上游 linuxcnc/src/emc/motion/usrmotintf.cc,确认 status/config/internal 是 split-read shared-memory copyerror read 是 motion error queue 消费。
  4. 扩展 runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.h/.c
    • 新增 LcmotConfigSnapshot
    • 新增 lcmot_read_config_snapshot()
    • 新增 lcmot_read_error_message()
    • 在 abort、motion error、soft-limit 注入时写入窄 error message queue。
    • 从 staged INI 的 COORDINATES 计算 axes/joints供 config snapshot 使用。
  5. 扩展 vendor/linuxcnc/src/emc/task/taskintf_wasm_subset.hh/.cc
    • 新增 lc_taskintf_subset_motion_init()
    • 新增 lc_taskintf_subset_motion_update(),通过 lcmot_read_status_snapshot()lcmot_read_config_snapshot()lcmot_read_error_message() 获取 motion 状态。
    • 新增 lc_taskintf_subset_motion_abort()
    • 新增 motion bridge anchor listemcMotionInit,emcMotionUpdate,emcMotionAbort,usrmotReadEmcmotStatus,usrmotReadEmcmotConfig,usrmotReadEmcmotError
  6. 修改 runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
    • lctask_init_session() 改为通过 lc_taskintf_subset_motion_init() 初始化 motion。
    • wasm_emcMotionUpdate() 改为通过 lc_taskintf_subset_motion_update() 读取 status/config/error。
    • task abort 路径改为通过 lc_taskintf_subset_motion_abort() 生成 abort command。
    • status JSON 新增 taskintfMotionBridge,暴露 source path、anchors、init/update/abort count、config snapshot 和 last error text。
  7. 更新 tools/build_task_hal_wasm.sh,导出 _lcmot_read_config_snapshot_lcmot_read_error_message
  8. 更新 tests/wasm/node/verify_task_hal_wasm.mjs
    • 断言 taskintfMotionBridge 的 source path、anchors、init/update count、config snapshot。
    • 断言 task abort、motion error、soft-limit 的 last error text。
    • 新增输出 taskintf_motion_bridge_status=ok
  9. 更新 tools/verify_task_taskintf_subset.sh,把 emcMotionInit()emcMotionUpdate()emcMotionAbort() 纳入上游/source subset 检查。
  10. 新增 tools/verify_task_taskintf_motion_bridge.sh,验证 T-033 的上游锚点、subset bridge、lcmot config/error ABI、WASM export、status JSON、smoke 输出和任务矩阵状态。
  11. 更新 docs/source-reuse-map.mddocs/drift-report.mddocs/compatibility-validation.md,记录 T-033 窄 motion bridge 和验证 gate同时保持 readiness false。
  12. 更新 10-taskintf-usrmot-shim设计.md,把 config/error read 从 T-032 缺口更新为 T-033 窄 ABI 已实现。
  13. 更新任务矩阵T-033 标为完成,下一推进指针改为 T-034。

改了哪些文件

  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.h
  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.c
  • wasm-port/vendor/linuxcnc/src/emc/task/taskintf_wasm_subset.hh
  • wasm-port/vendor/linuxcnc/src/emc/task/taskintf_wasm_subset.cc
  • 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_task_hal_wasm.mjs
  • wasm-port/tools/verify_task_taskintf_subset.sh
  • wasm-port/tools/verify_task_taskintf_motion_bridge.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/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md
  • wasm-port/working/10-taskintf-usrmot-shim设计.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,输出 taskintf_motion_bridge_status=ok
  • ./tools/verify_task_taskintf_motion_bridge.sh:验证 T-033 motion bridge 实现和矩阵状态。
  • ./tools/verify_task_taskintf_subset.sh:验证 taskintf subset 上游锚点不回退。
  • ./tools/verify_task_source_reuse_drift_docs.sh:验证 source reuse / drift / compatibility 文档已记录 T-033。
  • ./tools/verify_task_hal_readiness_contract.sh:通过,确认 readiness 仍不提升。
  • ./tools/verify_task_usrmot_shim_design.sh:通过,确认 T-032 usrmot shim 设计仍一致。
  • ./tests/wasm/node/verify_task_hal_sdk.sh:通过,确认 SDK wrapper 不受新增 export/bridge 影响。
  • git diff --check -- ...:通过。

下一步

推进 T-034实现 taskintf.cc traj control 子集,让 emcTrajEnable/Disable/Abort/Pause/Step/Resume/SetMotionId 接入 lcmot

2026-07-08 00:52 EDT

本轮目标

继续完成对标工作,推进 T-032设计 taskintf.cc usrmot shim明确 usrmot*lcmot_* 的 command write、status read、config read、error read 映射。

本轮做了什么

  1. 读取任务矩阵,确认当前推进指针为 T-032。
  2. 读取上游 linuxcnc/src/emc/motion/usrmotintf.husrmotintf.cclinuxcnc/src/emc/task/taskintf.cc
    • usrmotWriteEmcmotCommand() 写 command slot 并等待 commandNumEcho / commandStatus
    • usrmotReadEmcmotStatus()usrmotReadEmcmotConfig()usrmotReadEmcmotInternal() 都是 shared-memory copy + split-read 稳定性检查。
    • usrmotReadEmcmotError() 从 motion error ring 取最早错误字符串。
    • emcMotionUpdate() 按 status、config、internal、error 顺序读取 motion 侧数据。
  3. 读取当前 WASM lcmot_* C ABI确认已有
    • lcmot_init_from_ini()
    • lcmot_write_command_json()
    • lcmot_read_status_snapshot()
    • lcmot_read_status_json()
    • lcmot_read_hal_snapshot_json()
    • lcmot_reset()
  4. 确认当前没有 lcmot_read_config_snapshot()lcmot_read_error_message(),因此 config read/error read 不能被声明为已实现。
  5. 新增 10-taskintf-usrmot-shim设计.md
    • 明确不直接复用完整 usrmotintf.cc
    • 明确 usrmotIniLoad()usrmotInit()usrmotExit()lcmot_init_from_ini() / lcmot_reset() 的初始化映射。
    • 明确 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()
  6. 新增 tools/verify_task_usrmot_shim_design.sh
    • 校验上游 usrmot/taskintf 锚点存在。
    • 校验现有 lcmot_* ABI 能覆盖 init、reset、command write、status snapshot。
    • 校验设计文档包含 command/status/config/error 四类映射和禁止路线。
    • 校验任务矩阵 T-032 已完成且下一推进指针为 T-033。
  7. 更新 README.md,把 09-emc_nml复用评估.md10-taskintf-usrmot-shim设计.md 加入工作文档索引。
  8. 更新任务矩阵T-032 标为完成,下一推进指针改为 T-033。

改了哪些文件

  • wasm-port/working/10-taskintf-usrmot-shim设计.md
  • wasm-port/tools/verify_task_usrmot_shim_design.sh
  • wasm-port/working/README.md
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tools/verify_task_usrmot_shim_design.sh:验证 T-032 usrmot shim 设计、上游锚点、lcmot_* ABI 和矩阵状态。
  • ./tools/verify_task_taskintf_subset.sh:验证既有 taskintf_wasm_subset 仍锚定上游 taskintf.cc
  • ./tools/verify_task_source_reuse_drift_docs.sh:验证 T-030 文档一致性不回退。
  • ./tools/verify_task_hal_readiness_contract.sh:通过,确认 T-032 设计没有提升 readiness 口径。
  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,确认 task-HAL smoke 不回退。
  • git diff --check -- ...:通过。

下一步

推进 T-033实现 taskintf.cc motion init/update/abort 子集,让 emcMotionInit()emcMotionUpdate()emcMotionAbort() 经 WASM usrmot/lcmot bridge 工作。

2026-07-08 00:43 EDT

本轮目标

继续完成对标工作,推进 T-030更新 source reuse map 与 drift/compatibility 文档,反映 task 主循环迁移阶段和 readiness 真实状态。

本轮做了什么

  1. 更新 docs/source-reuse-map.md
    • 将 phase0 行中“Web simulation promotion”改为“Web simulation validation”避免误读为 readiness 提升。
    • 扩展 Task/motion/HAL simulation runtime 行,记录 T-027 motion ERROR/soft-limit、T-028 top/task/motion/io RCS DONE/EXEC/ERROR 聚合、T-029 emc_nml.hh 不直接 include 的决策。
    • 保持 readiness contracttask_hal_runtime_promoted=0nativeTaskReady=falsenativeHalSyncReady=falsefullLinuxCncProgramExecutionReady=false
    • 增加 tools/verify_task_emc_nml_reuse_plan.shtools/verify_task_source_reuse_drift_docs.sh 为 validation gate。
  2. 更新 docs/drift-report.md
    • 新增 Task/motion/HAL WASM runtime runtime-edge boundary。
    • 新增 emc_nml.hh status container boundary明确完整上游头文件只评估、不 vendored、不直接 include。
    • Known Gaps 中补充 task-cycle motion snapshot、motion abort/error/soft-limit、RCS 聚合和 readiness 不提升口径。
  3. 更新 docs/compatibility-validation.md
    • 在 WASM harness 列表中新增 verify_task_hal_wasm.shverify_task_hal_sdk.sh
    • 新增 readiness、emc_nml 复用评估和 source/drift 文档一致性 gate。
  4. 新增 tools/verify_task_source_reuse_drift_docs.sh
    • 验证 source reuse、drift、compatibility 三份文档都包含 readiness false、RCS 聚合、emc_nml.hh 决策和验证脚本。
    • 拒绝 source reuse 中重新出现 nativeTaskReady=truenativeHalSyncReady=true
    • 验证任务矩阵 T-030 已完成。
  5. 更新任务矩阵T-030 标为完成,下一推进指针改为 T-032。

改了哪些文件

  • wasm-port/docs/source-reuse-map.md
  • wasm-port/docs/drift-report.md
  • wasm-port/docs/compatibility-validation.md
  • wasm-port/tools/verify_task_source_reuse_drift_docs.sh
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tools/verify_task_source_reuse_drift_docs.sh:验证 source reuse、drift、compatibility 文档一致性。
  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,确认 task-HAL smoke 不回退。
  • ./tools/verify_task_hal_readiness_contract.sh:通过,确认 readiness 口径不回退。
  • ./tools/verify_task_emc_nml_reuse_plan.sh:通过,确认 T-029 复用评估仍一致。
  • git diff --check -- ...:通过。
  • ./tests/docs/node/verify_project_release_handoff_docs.sh:未完成,失败原因是工作树缺失 /home/mes123456/cnc_wams/PROJECT_COMPLETION_TRACKER.md,不是本轮文档断言失败。

下一步

推进 T-032设计 taskintf.cc usrmot shim明确 usrmot*lcmot_* 的 command write、status read、config read、error read 映射。

2026-07-08 00:36 EDT

本轮目标

继续完成对标工作,推进 T-029评估 vendored emc_nml.hh 直接复用可行性,形成直接 include、窄 shim或分阶段 typedef 的选择记录。

本轮做了什么

  1. 读取当前 runtime/core/shims/nml_intf/emc.hh,确认现有 shim 只覆盖 EmcJointTypeEMC_STAT.motion.traj.linearUnitsextern EMC_STAT *emcStatus
  2. 检查 wasm-port/vendor/linuxcnc/src/emc/nml_intf/,确认当前未 vendored emc_nml.hh
  3. 读取上游 linuxcnc/src/emc/nml_intf/emc_nml.hh,确认完整头文件会拉入:
    • linuxcnc.h
    • emcpos.h
    • emc.hh
    • libnml/rcs/rcs.hh
    • libnml/nml/cmd_msg.hh
    • libnml/nml/stat_msg.hh
    • rs274ngc/modal_state.hh
    • canon.hh
    • rs274ngc/rs274ngc.hh
  4. 确认 emc_nml.hh 中的 EMC_TRAJ_STATEMC_MOTION_STATEMC_TASK_STATEMC_IO_STATEMC_STAT 都继承 NML/RCS message 基类,并包含 update(CMS *) hooks。
  5. 形成 T-029 结论:当前不直接 include 完整 emc_nml.hh;先采用分阶段 typedef / 窄 StandaloneEmcStatus 路线。
  6. 新增 09-emc_nml复用评估.md,记录:
    • 直接 include 依赖清单。
    • 阻塞项。
    • 当前需要的状态子集。
    • 采用分阶段 typedef / 窄 status 容器的原因。
    • 后续 T-007/T-030/T-032/T-033/T-038 入口。
  7. 新增 tools/verify_task_emc_nml_reuse_plan.sh,固定 T-029 结论和验收:
    • 上游 emc_nml.hh 存在。
    • 当前 vendor tree 未声称完整 emc_nml.hh 已 vendored。
    • 文档包含直接 include 依赖、选择、阻塞和后续入口。
    • 任务矩阵将 T-029 标为完成。
  8. 更新任务矩阵T-029 标为完成,下一推进指针改为 T-030。

改了哪些文件

  • wasm-port/working/09-emc_nml复用评估.md
  • wasm-port/tools/verify_task_emc_nml_reuse_plan.sh
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tools/verify_task_emc_nml_reuse_plan.sh:验证 T-029 复用评估记录和矩阵状态。

下一步

推进 T-030更新 source reuse map 与 drift 文档,反映 task 主循环迁移阶段和 readiness 真实状态。

2026-07-08 00:33 EDT

本轮目标

继续完成对标工作,推进 T-028对齐 top-level RCS_STATUS 聚合,让 task/motion/io 三方 DONE/EXEC/ERROR 聚合逻辑与 emctaskmain.cc 更接近。

本轮做了什么

  1. 读取上游 linuxcnc/src/emc/task/emctaskmain.cc
    • WAITING_FOR_MOTION / WAITING_FOR_IO / WAITING_FOR_MOTION_AND_IO 分支中motion/io RCS_STATUS::ERROR 会驱动 task exec errormotion/io DONE 会驱动等待完成。
    • 顶层 status write 前的聚合逻辑task exec error、motion error、io error 任一存在则 top/task ERRORtask exec done、motion done、io done、command/list 为空且 interp idle 则 top/task DONE;否则 top/task EXEC
  2. 将 T-027 的临时 taskTopLevelStatus helper 升级为显式聚合字段:
    • task_rcs_status
    • motion_rcs_status
    • io_rcs_status
    • top_level_rcs_status
  3. 实现 update_top_level_status()
    • motion snapshot status 2 -> ERROR0 -> DONE,其它 -> EXEC
    • IO error shim -> ERROR,否则 DONE
    • task exec ERROR、motion ERROR、io ERROR 任一存在 -> top/task ERROR
    • task exec DONE、interp IDLE、pending command 为空、pending execute motion 为空、motion DONE、io DONE -> top/task DONE
    • 其它状态 -> top/task EXEC
  4. 修改 write_status_snapshot(),每次写 status buffer 前都调用 update_top_level_status(),保证 send/status/read path 不绕过聚合。
  5. 更新 status JSON
    • 顶层 taskTopLevelStatus 来自 top_level_rcs_status
    • 新增 rcsStatus.top/task/motion/io
    • task 对象新增 task.status
  6. 更新 verify_task_hal_wasm.mjs
    • RUN 后 interp 仍未 idle 时断言 top/task 为 EXECmotion 为 DONEio 为 DONE
    • motion queue 完成后断言 top/task/motion/io 全部为 DONE
    • motion abort、motion ERROR、soft-limit、IO error 均断言聚合为 ERROR,并区分 motion/io 子状态。
    • 新增输出 task_top_level_rcs_status_aggregation=ok
  7. 更新任务矩阵T-028 标为完成,下一推进指针改为 T-029。

改了哪些文件

  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
  • wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,新增 task_top_level_rcs_status_aggregation=ok

下一步

推进 T-029评估 vendored emc_nml.hh 直接复用可行性,形成直接 include、窄 shim 或分阶段 typedef 的选择记录。

2026-07-08 00:22 EDT

本轮目标

继续完成对标工作,推进 T-027新增 motion error/soft-limit 注入测试,让 subordinate sync 对 motion ERROR 和 soft-limit 的 task 状态影响有专门覆盖。

本轮做了什么

  1. 复核 linuxcnc_motion_runtime.c/.h,确认当前 motion snapshot 只有 aborted 和聚合 status,没有独立 motion error 或 soft-limit 字段。
  2. LcmotRuntime 中新增、在 LcmotStatusSnapshot 尾部追加:
    • motion_error
    • on_soft_limit
  3. 在 motion command parser 中新增两个测试注入命令:
    • EMCMOT_INJECT_ERROR
    • EMCMOT_INJECT_SOFT_LIMIT
  4. 在 motion runtime 中将上述两个注入命令作为即时 control 命令处理,并在 error/soft-limit 后停止继续消费 motion queue。
  5. 更新 lcmot_read_status_snapshot(),当 aborted、motion error 或 soft-limit 任一存在时输出 status=2
  6. 更新 motion JSON 和 task status JSON暴露 statusmotionErroronSoftLimit
  7. 更新 sync_subordinate_states()
    • on_soft_limit 驱动 task execState=ERRORerrorText=MOTION_SOFT_LIMIT
    • motion_error 或 motion status=2 驱动 task execState=ERRORerrorText=MOTION_ERROR
    • 保留 task 自己发起 abort 的 cleanup 分支,避免用户主动 abort 被误报。
  8. 新增最小 taskTopLevelStatus 导出T-027 先覆盖 ERROR/DONE/EXEC 的保守状态表面,完整 RCS 聚合仍留给 T-028。
  9. 更新 verify_task_hal_wasm.mjs
    • 新增 motion ERROR 注入断言。
    • 新增 soft-limit 注入断言。
    • 断言 motion abort、motion ERROR、soft-limit、IO error 均驱动 taskTopLevelStatus=ERROR
    • 新增输出 motion_error_drives_task_error=okmotion_soft_limit_drives_task_error=ok
  10. 初次回归 verify_motion_hal_sync.sh 时发现 LcmotStatusSnapshot 是 C ABI 固定 offset 结构;新增字段插入中间会破坏现有 Node struct 读取。随后将新增字段移动到结构尾部,保留已有字段 offset 不变。
  11. 更新任务矩阵T-027 标为完成,下一推进指针改为 T-028。

改了哪些文件

  • 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/tests/wasm/node/verify_task_hal_wasm.mjs
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,新增 motion_error_drives_task_error=okmotion_soft_limit_drives_task_error=ok
  • SKIP_TASK_HAL_BUILD=1 ./tests/wasm/node/verify_motion_hal_sync.sh:通过,确认 snapshot struct 固定 offset 不回退。
  • 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:通过。
  • git diff --check -- ...:通过。

下一步

推进 T-028对齐 top-level RCS_STATUS 聚合,让 task/motion/io 三方 DONE/EXEC/ERROR 聚合逻辑与 emctaskmain.cc 更接近。

2026-07-08 00:13 EDT

本轮目标

继续完成对标工作,推进 T-015修正 readiness 文档和实现口径,确保 nativeTaskReadynativeHalSyncReadyfullLinuxCncProgramExecutionReady 与当前能力边界一致。

本轮做了什么

  1. 复核 docs/source-reuse-map.md,确认其中仍有旧口径:声称 Task/motion/HAL simulation runtime 已 promoted并把 native task/HAL readiness 误写为 true。
  2. 更新 docs/source-reuse-map.md
    • 将 Task/motion/HAL simulation runtime classification 改为 runtime-edge adapter明确不是 full native task/HAL promotion。
    • 记录当前 readiness contracttask_hal_runtime_promoted=0nativeTaskReady=falsenativeHalSyncReady=falsefullLinuxCncProgramExecutionReady=false
    • 将 Known Gaps 中“task/motion/HAL sync 已完整覆盖 deterministic Web simulation”的旧表述改为 partial Web simulation adapter。
  3. 更新 tests/wasm/node/verify_task_hal_wasm.mjs,增加 fullLinuxCncProgramExecutionReady=false 断言,并输出 task_hal_readiness_status_contract=ok
  4. 新增 tools/verify_task_hal_readiness_contract.sh
    • 调用 verify_task_hal_source_manifest.sh 验证 manifest readiness 仍为未 promoted。
    • 检查 source-reuse-map.md 包含 false readiness contract。
    • 检查文档中不再包含 native task/HAL readiness true 或 full boundary promoted claim。
    • 检查 runtime 和 WASM test 均固定 fullLinuxCncProgramExecutionReady=false
  5. 更新任务矩阵T-015 标为完成,下一推进指针改为 T-027。

改了哪些文件

  • wasm-port/docs/source-reuse-map.md
  • wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
  • wasm-port/tools/verify_task_hal_readiness_contract.sh
  • 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

验证了什么

  • ./tools/verify_task_hal_readiness_contract.sh:通过,输出 task_hal_readiness_contract_status=ok
  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,新增输出 task_hal_readiness_status_contract=ok
  • ./tests/native/verify_task_hal_phase0.sh:通过,输出 task_hal_phase0_native_probe_gate=ok
  • 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:通过。
  • git diff --check -- ...:通过。
  • rg 检查 source-reuse-map.mdworking 文档中不再存在 native task/HAL readiness true 或 full boundary promoted 旧表述。

下一步

推进 T-027新增 motion error/soft-limit 注入测试,让 subordinate sync 对 motion ERROR 和 soft-limit 的 task/top-level 状态影响有专门覆盖。

2026-07-07 23:59 EDT

本轮目标

继续完成对标工作,推进 T-014引入 vendored/upstream emccanon.cc 的可编译 canonical linear motion 子集,让 linear motion command 生成继续减少 standalone 自有语义。

本轮做了什么

  1. 读取上游 /home/mes123456/cnc_wams/linuxcnc/src/emc/task/emccanon.cc 中的 canonical motion 函数:
    • generate_fast_move()
    • generate_move()
    • STRAIGHT_TRAVERSE()
    • STRAIGHT_FEED()
  2. 确认完整 emccanon.cc 依赖 CanonConfig_t、offset/unit conversion、interp_list、state tags、NURBS、spindle/tool/coolant 等大量 canonical callback 边界,不适合在 T-014 直接完整编译。
  3. 新增 vendor/linuxcnc/src/emc/task/emccanon_wasm_subset.hhemccanon_wasm_subset.cc
    • 定义 LcEmcCanonSubsetPoseLcEmcCanonSubsetLinearMove
    • 实现 lc_emccanon_subset_straight_traverse()lc_emccanon_subset_straight_feed()
    • 保留 source path 和 anchor listsrc/emc/task/emccanon.ccgenerate_fast_move,generate_move,STRAIGHT_TRAVERSE,STRAIGHT_FEED
  4. 更新 tools/build_task_hal_wasm.sh,将 emccanon_wasm_subset.cc 纳入 task-HAL WASM 构建。
  5. 更新 linuxcnc_task_hal_wasm.cpp
    • 新增 canonical pose/linear move helper。
    • 将 program line move、timed motion sample、MDI linear move 改为先经 emccanon subset 生成 canonical linear move envelope再交给 taskintf subset 生成 task-to-motion command envelope。
    • 在 status JSON 中新增 emccanonSourceReuse,暴露 source path、anchors 和 issue count。
  6. 更新 verify_task_hal_wasm.mjs,断言 emccanonSourceReuse 字段来自 src/emc/task/emccanon.cc,并新增输出 emccanon_subset_source_reuse_status=ok
  7. 新增 tools/verify_task_emccanon_subset.sh,验证上游 anchors、vendor subset、build script inclusion。
  8. 更新任务矩阵T-014 标为完成,下一推进指针改为 T-015。

改了哪些文件

  • 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/tools/build_task_hal_wasm.sh
  • wasm-port/tools/verify_task_emccanon_subset.sh
  • wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tools/verify_task_emccanon_subset.sh:通过,输出 task_emccanon_subset_source_reuse=ok
  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,新增 emccanon_subset_source_reuse_status=ok

下一步

推进 T-015修正 readiness 文档和实现口径,确保 nativeTaskReadynativeHalSyncReadyfullLinuxCncProgramExecutionReady 与当前能力边界一致。

2026-07-07 23:51 EDT

本轮目标

继续完成对标工作,推进 T-013引入 vendored/upstream taskintf.cc 的可编译 motion command issuing 子集,让 task-to-motion command 边界更接近上游。

本轮做了什么

  1. 读取上游 /home/mes123456/cnc_wams/linuxcnc/src/emc/task/taskintf.cc 中的 motion bridge 函数:
    • emcTrajAbort/Pause/Step/Resume()
    • emcTrajLinearMove()
    • emcJogIncr()
    • emcJointHome()
    • emcMotionSetAout()
  2. 确认完整 taskintf.cc 直接依赖 usrmot、NML、INI config 和 native motion process edge不适合在 T-013 直接完整编译。
  3. 新增 vendor/linuxcnc/src/emc/task/taskintf_wasm_subset.hhtaskintf_wasm_subset.cc
    • 定义 LcTaskIntfSubsetMotionCommand 作为 task-to-motion command envelope。
    • 实现 traj control、linear move、jog incr、joint home、set aout 的最小 command envelope 生成函数。
    • 保留 source path 和 anchor listsrc/emc/task/taskintf.cc 及对应函数族。
  4. 更新 tools/build_task_hal_wasm.sh,将 taskintf_wasm_subset.cc 纳入 task-HAL WASM 构建。
  5. 更新 linuxcnc_task_hal_wasm.cpp
    • 新增 taskintf_motion_json(),把 LcTaskIntfSubsetMotionCommand 序列化为现有 lcmot_* 可接受的 motion JSON。
    • 新增 queue_taskintf_motion_command() / forward_taskintf_motion_command()
    • 将 pause/resume/step/abort、MDI switchkins、MDI linear move、JOG、HOME、program linear move 和 timed motion sample 的 issue 边界改为经 taskintf subset 生成 command envelope。
    • 在 status JSON 中新增 taskintfSourceReuse,暴露 source path、anchors 和 issue count。
  6. 修正 JOG axis index 到轴字母的映射,避免 A/B/C 被错误映射为 ASCII 连续字符。
  7. 更新 verify_task_hal_wasm.mjs,断言 taskintfSourceReuse 字段来自 src/emc/task/taskintf.cc,并新增输出 taskintf_subset_source_reuse_status=ok
  8. 新增 tools/verify_task_taskintf_subset.sh,验证上游 anchors、vendor subset、build script inclusion。
  9. 更新任务矩阵T-013 标为完成,下一推进指针改为 T-014。

改了哪些文件

  • wasm-port/vendor/linuxcnc/src/emc/task/taskintf_wasm_subset.hh
  • wasm-port/vendor/linuxcnc/src/emc/task/taskintf_wasm_subset.cc
  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
  • wasm-port/tools/build_task_hal_wasm.sh
  • wasm-port/tools/verify_task_taskintf_subset.sh
  • wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tools/verify_task_taskintf_subset.sh:通过,输出 task_taskintf_subset_source_reuse=ok
  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,新增 taskintf_subset_source_reuse_status=ok

下一步

推进 T-014引入 vendored/upstream emccanon.cc 可编译子集,让 canonical motion command 生成继续向 LinuxCNC 源码锚点收敛。

2026-07-07 23:42 EDT

本轮目标

继续完成对标工作,推进 T-012引入 vendored/upstream emctask.cc 的可编译子集,并新增 source reuse 验证。

本轮做了什么

  1. 复核 T-012 要求,确认当前 wasm-port/vendor/linuxcnc/src/emc/task 尚不存在完整 task 源码,verify_task_hal_source_manifest.sh 仍显示 task 源码 vendor-ready 为 false。
  2. 读取上游 /home/mes123456/cnc_wams/linuxcnc/src/emc/task/emctask.ccdetermineMode()determineState()emcTaskUpdate() 锚点,确认这组状态推导逻辑可以先做窄子集,不拉入 interpreter、NML、dlopen、IO/native process 边界。
  3. 新增 wasm-port/vendor/linuxcnc/src/emc/task/emctask_wasm_subset.hhemctask_wasm_subset.cc
    • 暴露 LcEmcTaskSubsetUpdateInput / LcEmcTaskSubsetUpdateResult
    • 实现上游 determineMode()determineState()emcTaskUpdate() 的最小状态推导子集。
    • 保留 source path 和 anchor listsrc/emc/task/emctask.ccdetermineMode,determineState,emcTaskUpdate
  4. 更新 tools/build_task_hal_wasm.sh
    • 增加 vendor/linuxcnc/src include。
    • vendor/linuxcnc/src/emc/task/emctask_wasm_subset.cc 纳入 task-HAL WASM 构建。
  5. 更新 linuxcnc_task_hal_wasm.cpp
    • wasm_emcTaskUpdate() 阶段调用 lc_emctask_subset_update()
    • 在 status JSON 中新增 emctaskSourceReuse,暴露 emctaskSubsetCompiled、source path、anchors、derived mode/state、motion line 等证据。
  6. 更新 verify_task_hal_wasm.mjs,断言 emctaskSourceReuse 字段来自 src/emc/task/emctask.cc 锚点,并新增输出 emctask_subset_source_reuse_status=ok
  7. 新增 tools/verify_task_emctask_subset.sh
    • 验证上游 emctask.cc 存在。
    • 验证上游 anchor 存在。
    • 验证 vendor subset 文件存在并记录同一 source path/anchors。
    • 验证 build script 已纳入 emctask_wasm_subset.cc
  8. 更新任务矩阵T-012 标为完成,下一推进指针改为 T-013。

改了哪些文件

  • wasm-port/vendor/linuxcnc/src/emc/task/emctask_wasm_subset.hh
  • wasm-port/vendor/linuxcnc/src/emc/task/emctask_wasm_subset.cc
  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
  • wasm-port/tools/build_task_hal_wasm.sh
  • wasm-port/tools/verify_task_emctask_subset.sh
  • wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tools/verify_task_emctask_subset.sh:通过,输出 task_emctask_subset_source_reuse=ok
  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,新增 emctask_subset_source_reuse_status=ok
  • node tests/wasm/node/verify_task_state_matrix.mjs:通过。

下一步

推进 T-013引入 vendored/upstream taskintf.cc 可编译子集,优先把 motion command issuing 的边界从 JSON 拼接继续迁向 LinuxCNC 式 task-to-motion bridge。

2026-07-07 23:34 EDT

本轮目标

继续完成对标工作,推进 T-011收缩 JSON command 自有状态机,使 lctask_send_command_json() 只作为 C ABI host 边界task 语义继续转入 LinuxCNC 式 plan/execute 周期层。

本轮做了什么

  1. 复核当前 linuxcnc_task_hal_wasm.cpp,确认 wasm_emcTaskPlan() 仍通过重新调用 lctask_send_command_json() 消费 pending command。
  2. 新增内部 TaskCommandTypeTaskCommand,把 TaskRuntime.pending_commandsstd::vector<std::string> 改为 std::vector<TaskCommand>
  3. 新增 parse_task_command():在 C ABI host 边界把 JSON command envelope 解析为内部 command 类型;未知 command 直接返回 -1,不进入队列。
  4. 新增 apply_task_command():把原先 lctask_send_command_json() 中的 state/mode/run/pause/resume/step/abort/MDI/JOG/HOME/IO shim 语义迁入 task plan 阶段。
  5. 修改 wasm_emcTaskPlan():直接遍历内部 TaskCommand 并调用 apply_task_command(),不再回调 lctask_send_command_json()
  6. 简化 lctask_send_command_json():只负责解析 host JSON、入队 TaskCommand、记录 task_command_queued、写 status buffer。
  7. 保持已有语义兼容run gate/home gate 等被拒绝时写 errorText,但 task cycle 本身不失败。
  8. 更新 verify_task_state_matrix.mjs:新增未知 host command 被拒绝且不增加 pending queue 的断言,输出 task_command_json_host_boundary=ok
  9. 更新任务矩阵T-011 标为完成,下一推进指针改为 T-012。

改了哪些文件

  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
  • wasm-port/tests/wasm/node/verify_task_state_matrix.mjs
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过。
  • node tests/wasm/node/verify_task_state_matrix.mjs:通过,新增 task_command_json_host_boundary=ok
  • ./tests/native/verify_task_hal_phase0.sh:通过,确认 phase0 gate 不回退。

下一步

推进 T-012引入 vendored/upstream emctask.cc 可编译子集,先做可编译边界和 source reuse 验证,再继续替换 standalone task 语义。

2026-07-07 23:10 EDT

本轮目标

先解决 verify_task_hal_phase0.sh 因缺失 xyzac-trt_cmds.hal 失败的问题,再继续推进对标工作中的 T-010把 pause/resume/step 的 motion issue 放到 execute 阶段,并用周期 snapshot 断言其行为。

本轮做了什么

  1. 复核 verify_task_hal_phase0.sh 调用链,确认失败来自 probe_trt_task_hal_runtime.sh 检查 TRT 机器目录时找不到 xyzac-trt_cmds.hal
  2. 确认 ../linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/ 是只读上游输入,不直接补文件。
  3. probe_trt_task_hal_runtime.sh 中新增 RUN_DIR/machine overlay
    • 优先把上游 ../linuxcnc 机器目录的条目 symlink 到 overlay。
    • 对上游缺失的顶层条目,从 wasm-port/vendor/linuxcnc/.../table-rotary-tilting/ 补 symlink。
    • 输出 trt_task_hal_vendor_overlay_* 证据,标明哪些文件来自 vendor fallback。
  4. 运行 native probe 和 phase0 gate确认 xyzac-trt_cmds.hal 缺失问题闭合,./tests/native/verify_task_hal_phase0.sh 通过。
  5. 继续推进 T-010EMC_TASK_PLAN_PAUSEEMC_TASK_PLAN_STEPEMC_TASK_PLAN_RESUME 从直接 forward_motion_command() 改为 queue_execute_motion_command()
  6. 更新 verify_task_hal_wasm.mjs
    • pause/resume/step 发送后,先断言 pendingCommandDepth 增加且 motion snapshot 尚未变化。
    • task cycle 执行后,再断言 motion paused、resume、step 等状态变化。
    • 新增输出 pause_resume_step_motion_issue_from_execute=ok
  7. 更新任务矩阵T-016、T-010 标为完成,下一推进指针改为 T-011。

改了哪些文件

  • wasm-port/tests/native/probe_trt_task_hal_runtime.sh
  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
  • wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/native/probe_trt_task_hal_runtime.sh:通过,输出 trt_task_hal_source_proof_ready=1trt_task_hal_probe_result=ready_disabled_by_default
  • ./tests/native/verify_task_hal_phase0.sh:通过,输出 task_hal_phase0_native_probe_gate=ok
  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,包含新增 pause_resume_step_motion_issue_from_execute=ok
  • 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通过readiness 仍保持保守 false。

下一步

推进 T-011继续收缩 JSON command 自有状态机,把 host JSON 进一步限制为 C ABI 边界task 语义继续向 LinuxCNC 式 plan/execute 层迁移。

2026-07-07 21:32 EDT

本轮目标

继续完成对标工作,推进 T-008WAITING_FOR_MOTIONWAITING_FOR_MOTION_QUEUE 和 queueFull 语义迁移为依赖周期 motion snapshot。

本轮做了什么

  1. wasm_emcTaskExecute() 中读取上一周期 state.motion_snapshot.queue_full
  2. 当 motion queue full 且存在待发 execute motion command 时,不再继续 forward motion而是保留 pending_execute_motion_commands 并将 exec_state 置为 WAITING_FOR_MOTION_QUEUE
  3. 当 AUTO/program work 仍需 issue motion 但上一周期 motion queue full 时,将 exec_state 置为 WAITING_FOR_MOTION_QUEUE 并等待下一周期。
  4. sync_subordinate_states() 中使用本周期 motion_snapshot 完成状态收敛:
    • WAITING_FOR_MOTION_QUEUE 且 queue 不再 full 时切回 WAITING_FOR_MOTION
    • WAITING_FOR_MOTION 且 motion queue/active depth 清空、in-position 为 true 时切到 DONE
    • MDI motion 完成后同步把 interpreter 状态收敛到 IDLE
  5. 更新 verify_task_hal_wasm.mjs
    • 断言 MDI/JOG motion 完成后 execStateWAITING_FOR_MOTION 收敛到 DONE
    • 构造 paused motion queue 填满 64 条命令的场景,证明 task 进入 WAITING_FOR_MOTION_QUEUE
    • resume 后证明 queueFull 解除时 task 回到 WAITING_FOR_MOTION,最终 motion drain 后进入 DONE
    • 新增输出 task_waits_on_motion_snapshot_queue=ok
  6. 更新任务矩阵T-008 标为完成。
  7. 继续推进 T-009TaskRuntime 中新增 task_abort_requested,区分 task 自己发起的 abort cleanup 与外部 motion abort/error。
  8. sync_subordinate_states() 中处理外部 motion abort如果 motion snapshot 显示 aborted 且不是 task 发起的 abort则将 exec_state 置为 ERRORerror_text 置为 MOTION_ABORTED
  9. 为 standalone IO runtime edge 增加窄测试 shim支持 EMC_IO_INJECT_ERROR command进入周期后由 subordinate sync 将 task 置为 ERRORerror_text 置为 IO_ERROR
  10. 更新 verify_task_hal_wasm.mjs,新增 motion_abort_drives_task_error=okio_error_drives_task_error=ok
  11. 更新任务矩阵T-009 标为完成,下一推进指针改为 T-010。

改了哪些文件

  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
  • wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过,新增 task_waits_on_motion_snapshot_queue=ok
  • ./tests/wasm/node/verify_task_hal_wasm.sh 继续新增 motion_abort_drives_task_error=okio_error_drives_task_error=ok
  • 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通过readiness 仍保持保守 false。
  • git diff --check -- ...:无输出,通过。

下一步

推进 T-010迁移 pause/resume/step 到 snapshot 驱动,并保持现有 pause/step/resume smoke 不回退。

2026-07-07 21:21 EDT

本轮目标

继续完成对标工作,从当前推进指针 T-023 开始,把 lctask_run_cycles() 拆成 LinuxCNC emctaskmain.cc 式周期阶段,并让 state/mode/home/run gate 在 task cycle 的 plan 阶段触发。

本轮做了什么

  1. 复核 04-任务矩阵.md,确认 T-023 为当前推进指针T-025 仍要求后续把 MDI/JOG/HOME motion issue 拆到 execute 阶段。
  2. linuxcnc_task_hal_wasm.cpp 中新增周期阶段函数:
    • task_cycle_begin()
    • task_read_commands()
    • wasm_emcTaskPlan()
    • wasm_emcTaskExecute()
    • sync_subordinate_states()
    • wasm_emcTaskUpdate()
    • update_top_level_status()
    • 复用既有 wasm_emcMotionUpdate()write_status_snapshot()
  3. 重排 lctask_run_cycles(),使每个周期按 cycle begin、command read、plan、execute、standalone servo step、motion update、subordinate sync、task update、top-level status、status write 的顺序执行。
  4. 保留当前 command handler 作为 Phase 4 adapterwasm_emcTaskPlan() 在 task cycle 内通过 processing 标志调用;这样 state/mode/home/run gate 已由 cycle 触发,而不是 send API 直接触发。
  5. 明确 T-025 尚未完成MDI/JOG/HOME motion issue 仍在 plan command handler 中 forward motion后续需要拆到 execute 阶段。
  6. 更新任务矩阵T-006、T-023、T-024 标为完成。
  7. 继续推进 T-025TaskRuntime 中新增 pending_execute_motion_commands
  8. 将 MDI switchkins、普通 MDI linear move、JOG、HOME 的 motion command 改为排入 execute motion queue。
  9. wasm_emcTaskExecute() 开头统一 flush pending_execute_motion_commands,并记录 task_execute_motion_issue:<count> 事件。
  10. 在 task status 中新增 pendingExecuteMotionDepth,用于证明 plan 阶段只是排队execute 阶段负责 issue motion。
  11. 更新 verify_task_hal_wasm.mjs,断言 MDI/JOG send 后 motion 不立即变化run cycle 后 execute issue 生效,并新增 mdi_jog_home_motion_issue_from_execute=ok
  12. 更新任务矩阵T-025 标为完成,下一推进指针改为 T-008。

改了哪些文件

  • wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp
  • wasm-port/working/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过。
  • ./tests/wasm/node/verify_task_hal_wasm.sh 新增输出 mdi_jog_home_motion_issue_from_execute=ok
  • node tests/wasm/node/verify_task_state_matrix.mjs:通过,继续覆盖 command send 入队、run cycle 后才改变状态。
  • ./tests/wasm/node/verify_task_hal_sdk.sh:通过。
  • ./tests/wasm/node/verify_motion_hal_sync.sh:通过。

下一步

推进 T-008WAITING_FOR_MOTIONWAITING_FOR_MOTION_QUEUE 和 queueFull 语义迁移为依赖周期 motion snapshot。随后继续 T-027/T-028 的 subordinate error sync 和 top-level RCS_STATUS 聚合。

2026-07-07 21:01 EDT

本轮目标

执行 T-002 基线固定,并完成 task 周期内结构化 motion snapshot、wasm_emcMotionUpdate()、task status buffer 和对应验证,避免 lctask_read_status_json() 继续把 motion JSON 当作 task 事实源。

本轮做了什么

  1. 运行 T-002 要求的四个基线命令:
    • ./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
  2. 额外运行 ./tests/native/verify_task_hal_phase0.sh,确认 native probe 仍因缺失 xyzac-trt_cmds.hal 保持阻塞。
  3. linuxcnc_motion_runtime.h 定义 LcmotStatusSnapshot 和 queue/axis 常量,字段覆盖 cycle、program line、motion id、status、in-position、paused、stepping、aborted、queue、axis/joint、velocity、switchkins/analog output。
  4. linuxcnc_motion_runtime.c 实现 lcmot_read_status_snapshot(),该函数只复制 motion runtime 状态,不 step servo、不消费队列lcmot_read_status_json() 改为从同一 snapshot 派生。
  5. linuxcnc_task_hal_wasm.cpp 增加 task 持有的 motion_snapshotmotion_snapshot_validstatus_buffer
  6. 实现 wasm_emcMotionUpdate(),由 task 周期读取 LcmotStatusSnapshot 并写入 task runtime。
  7. lctask_read_status_json() 改为导出最后一次 write_status_snapshot() 写出的 status buffer读取 status 不再调用 motion runtime 同步最新 motion。
  8. lctask_run_cycles() 每个 task cycle 的 servo step 后执行 wasm_emcMotionUpdate()write_status_snapshot(),形成 WASM standalone 边界下的周期 snapshot。
  9. 更新 build_task_hal_wasm.sh,导出 _lcmot_read_status_snapshot
  10. 更新 verify_motion_hal_sync.mjs,直接调用 _lcmot_read_status_snapshot 并断言结构字段。
  11. 更新 verify_task_hal_wasm.mjs新增测试low-level lcmot_step_servo() 后 task status 不自动同步,直到下一次 lctask_run_cycles()
  12. 更新任务矩阵,把 T-002、T-003、T-004、T-005、T-018、T-019、T-020、T-021、T-026 标为完成。
  13. 继续推进 T-022TaskRuntime 中新增 pending_commands,把 lctask_send_command_json() 改为默认只验证并入队;lctask_run_cycles() 在每个 task cycle 开始消费 command queue。
  14. 在 task status 中新增 pendingCommandDepth,用于证明 command send 后状态不立即变化。
  15. 更新 verify_task_state_matrix.mjs,新增 task_command_send_queues_until_cycle=ok,并把 run gate 测试改为 send 后 run cycle 再读取拒绝结果。
  16. 将任务矩阵 T-022 标为完成,并把下一推进指针移到 T-023。

改了哪些文件

  • 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/03-推进台账.md
  • wasm-port/working/04-任务矩阵.md
  • wasm-port/working/05-验收证据.md
  • wasm-port/working/06-决策记录.md

验证了什么

  • ./tools/verify_task_hal_source_manifest.sh:通过;仍显示 task_hal_runtime_promoted=0nativeTaskReady=falsenativeHalSyncReady=false
  • ./tests/wasm/node/verify_motion_hal_sync.sh:通过;新增 motion_status_snapshot_struct=ok
  • ./tests/wasm/node/verify_task_hal_wasm.sh:通过;新增 task_status_updates_from_cycle_snapshot=ok
  • ./tests/wasm/node/verify_task_hal_sdk.sh:通过。
  • node tests/wasm/node/verify_task_state_matrix.mjs:通过;新增 task_command_send_queues_until_cycle=ok
  • ./tests/native/verify_task_hal_phase0.sh:仍失败,原因保持为缺失 xyzac-trt_cmds.hal,属于既有 T-016 阻塞。

下一步

推进 T-023/T-024/T-025把当前 command queue 消费逻辑继续拆成明确的 command read、plan、execute 阶段,并将 state/mode/home/run/MDI/JOG/HOME 语义逐步迁入对应阶段。

2026-07-07 19:45 EDT

本轮目标

继续分解 emctask.cctaskintf.ccemccanon.cc 的具体实施步骤,保证后续不是只搭 lctask_run_cycles() 骨架,而是逐步用上游 task 源码替换当前 JSON 自有状态机。

本轮做了什么

  1. 使用 rg 提取 linuxcnc/src/emc/task/emctask.cctaskintf.ccemccanon.cc 中的函数列表。
  2. 阅读 emctask.ccemcTaskAbort()emcTaskSetMode()emcTaskSetState()determineMode()determineState()emcTaskPlan*()emcTaskUpdate(),确认其负责 task 状态、interpreter plan wrapper 和 status update。
  3. 阅读 taskintf.ccemcTrajSetMotionId()emcTrajEnable/Disable/Abort/Pause/Step/Resume()emcTrajLinearMove()emcTrajCircularMove()emcMotionInit()emcMotionAbort()emcMotionUpdate(),确认其负责 task 到 motion 的 command/status 边界。
  4. 阅读 emccanon.ccFINISH()ON_RESET()generate_fast_move()generate_move()STRAIGHT_TRAVERSE()STRAIGHT_FEED()DWELL()、spindle/tool canonical functions确认其负责 canon API 到 interp_list 的 command 生成。
  5. 新增 08-上游task源码替换分解.md,按 emctask.cctaskintf.ccemccanon.cc 分别拆出优先函数、WASM 实施、依赖 shim、验收要求、迁移批次和禁止路线。
  6. 更新 README将 08 文档加入索引和使用规则。
  7. 更新 02-项目程序开发详细步骤.md,把阶段 5 的替换顺序细化为 taskintf bridge、emctask state/update、emctask plan wrapper、emccanon straight motion、emctask execute、emccanon spindle/tool/io。
  8. 更新 04-任务矩阵.md,新增 T-031 到 T-046覆盖三份上游 task 源码的函数族迁移任务。
  9. 更新 05-验收证据.md,新增本轮文档细化证据。
  10. 更新 06-决策记录.md,新增 D-007明确先迁 taskintf.cc minimal bridge再迁 emctask.ccemccanon.cc

改了哪些文件

  • wasm-port/working/README.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/08-上游task源码替换分解.md

验证了什么

本轮是文档分解轮,未修改 runtime 源码。验证重点:

  • 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

下一步

先执行 T-002 固定最新基线证据;代码实施时按 T-018/T-019/T-020/T-021/T-022/T-023 建立周期基础,然后进入 T-031/T-034 的 taskintf.cc minimal bridge。

2026-07-07 19:29 EDT

本轮目标

继续完善 wasm-port/working 实施文档,使其完全围绕“把 emctaskmain.cc 周期结构迁到 wasm-port”展开,并达到后续可以按任务矩阵实施的粒度。

本轮做了什么

  1. 复核现有 01、02、04、06 文档,确认已有方向但缺少上游代码锚点、字段映射和可验收子任务。
  2. 重新对照上游:
    • linuxcnc/src/emc/task/emctaskmain.cc 主循环 3296-3484
    • emcTaskExecute() motion/io wait 分支 2551-2700
    • emctask_startup() motion 初始化与首次 emcMotionUpdate() 2992-3054
    • linuxcnc/src/emc/nml_intf/emc_nml.hhEMC_TRAJ_STATEMC_MOTION_STATEMC_TASK_STATEMC_STAT 字段定义。
  3. 新增 07-emctaskmain周期对标蓝图.md写入上游周期锚点、WASM 周期骨架、EMC_STAT 字段映射、command read/plan/execute/motion update/subordinate sync/status write 对标要求和源码替换路线。
  4. 更新 README将 07 蓝图加入索引,并要求涉及 task 主循环实现时同步查看该蓝图。
  5. 更新 01-项目功能内容.md,补充 emc_nml.hh 为状态字段对标源,增加最小字段闭环和 status/command 行为完成定义。
  6. 更新 02-项目程序开发详细步骤.md,把 motion snapshot、周期函数拆分、EMC_STAT 容器、JSON command 收缩等步骤细化。
  7. 更新 04-任务矩阵.md,新增 T-017 到 T-030把设计、实现、测试、status buffer、command buffer、plan/execute/subordinate sync、上游源码替换等工作拆成可验收任务。
  8. 更新 05-验收证据.md,记录本轮文档完善的验证命令、预期输出和 T-017 通过结论。
  9. 更新 06-决策记录.md,新增 D-005 和 D-006固定 status read 不同步 motion、command send 不直接改变 task 语义。

改了哪些文件

  • wasm-port/working/README.md
  • 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

验证了什么

本轮仍是文档完善轮,未修改 runtime 源码。验证重点:

  • 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

下一步

执行 T-002 固定最新 task/motion/HAL 基线证据,然后进入 T-003/T-018/T-019:设计并实现结构化 LcmotStatusSnapshot,为 task 周期内 wasm_emcMotionUpdate() 做准备。

2026-07-07 19:17 EDT

本轮目标

创建 wasm-port/working 推进文档,支撑后续按任务矩阵推进 LinuxCNC emctaskmain.cc task 主循环完全对标。

本轮做了什么

  1. 确认 wasm-port/working 目录已存在且暂无推进文档。
  2. 创建 README 索引和 01-06 号文档。
  3. 将当前差距固化为文档基线:
    • 上游 emctaskmain.cc 每周期调用 emcMotionUpdate(&emcStatus->motion)
    • 当前 wasm-port lctask_run_cycles() 只推进 minimal TaskRuntimelcmot_step_servo()
    • 当前 motion 状态主要在 status API 拼接输出,不是 task 周期控制输入。
  4. 制定阶段化开发路线:
    • 建立 task 周期内 motion snapshot。
    • 重排 lctask_run_cycles() 为 LinuxCNC 式周期顺序。
    • 建立 EMC_STAT 等价状态容器。
    • 迁移 wait/execute 语义。
    • 逐步替换自有状态机。
    • 收口 readiness 和文档。

改了哪些文件

  • wasm-port/working/README.md
  • 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

验证了什么

本轮是文档创建轮,未修改 runtime 源码,验证方式为:

  • find wasm-port/working -maxdepth 1 -type f | sort
  • 抽查新建文档内容。
  • git status --short wasm-port/working

下一步

T-002 开始,新增 task 周期内 motion snapshot 设计和测试,先证明每个 lctask_run_cycles() 周期读取 motion而不是只在 lctask_read_status_json() 时拼接 motion。