# wasm-port task 主循环完全对标推进索引 ## 目标 本目录用于推进 `wasm-port` 对标 LinuxCNC `linuxcnc/src/emc/task/emctaskmain.cc` 的 task 主循环,重点补齐每个 task 周期读取 motion 状态并驱动 task 状态机的结构。 当前基线结论: - 上游 LinuxCNC task 主循环每周期执行 command read、`emcTaskPlan()`、`emcTaskExecute()`、`emcMotionUpdate(&emcStatus->motion)`、subordinate sync、`emcTaskUpdate()`、status write。 - `wasm-port` 当前 task-HAL runtime 已闭合本目录任务矩阵:`lctask_run_cycles()` 具备 command read、plan、execute、motion update、subordinate sync、task update、status write 的 LinuxCNC 式周期骨架。 - task status 已由周期内 `LcmotStatusSnapshot` 和 `StandaloneEmcStatus` 导出,`lctask_read_status_json()` 只读取最后一次 status write,不推进或重新同步 motion。 - RUN 文件主路径已由 staged program 的 plan read/command/execute、`emccanon.cc` command envelope 和 `taskintf.cc` motion issue 驱动;host JSON motion plan 仅保留为 timed-plan 兼容/调试入口。 - vendored/upstream `emctask.cc`、`taskintf.cc`、`emccanon.cc` 的窄子集已按 T-033 到 T-046 分阶段接入;完整 `emctaskmain.cc`/NML/native HAL/native motion process topology 仍未 promoted。 ## 文档索引 | 文件 | 用途 | | --- | --- | | `01-项目功能内容.md` | 定义本阶段要实现的功能边界和 LinuxCNC 对标范围。 | | `02-项目程序开发详细步骤.md` | 拆解从当前 minimal adapter 到 LinuxCNC task 主循环对标的开发步骤。 | | `03-推进台账.md` | 记录每轮做了什么、改了哪些文件、验证了什么、下一步是什么。 | | `04-任务矩阵.md` | 维护任务编号、状态、验收标准,防止重复做和口径漂移。 | | `05-验收证据.md` | 记录命令、报告、截图、页面、job/report id 等证据。 | | `06-决策记录.md` | 记录关键技术决策和理由,后续变更避免重复争论。 | | `07-emctaskmain周期对标蓝图.md` | 把上游 `emctaskmain.cc` 周期拆成 WASM 可执行阶段、字段映射和验收要求。 | | `08-上游task源码替换分解.md` | 拆解 `emctask.cc`、`taskintf.cc`、`emccanon.cc` 的函数族迁移顺序、shim 和验收。 | | `09-emc_nml复用评估.md` | 记录完整 `emc_nml.hh` 直接复用评估、依赖清单和当前窄 status 容器路线。 | | `10-taskintf-usrmot-shim设计.md` | 设计 `taskintf.cc` usrmot shim 到 `lcmot_*` 的 command/status/config/error 映射。 | | `11-WASM核心状态机边界与后续完善路线.md` | 固定 WASM/C++、JS/SDK、JSON 的职责边界,并给出后续完善 WASM 核心状态机的任务拆分规则。 | | `12-status-json-LinuxCNC对标方案.md` | 对标 LinuxCNC `EMC_STAT` / status buffer,定义 WASM 中 `StandaloneEmcStatus -> status JSON` 的字段映射、禁止链路和后续实施批次。 | ## 使用方式 1. 每轮实施前先看 `04-任务矩阵.md`,选择 `待办` 或 `进行中` 任务。 2. 修改代码或文档后同步更新 `03-推进台账.md`。 3. 每条任务完成前,把可复现命令和关键输出写入 `05-验收证据.md`。 4. 如改变迁移路线、边界或验收口径,先更新 `06-决策记录.md`。 5. 涉及 task 主循环实现时,必须同步查看 `07-emctaskmain周期对标蓝图.md`。 6. 涉及上游 task 源码替换时,必须同步查看 `08-上游task源码替换分解.md`。 7. 涉及完整 `emc_nml.hh` 复用或 status 容器时,必须同步查看 `09-emc_nml复用评估.md`。 8. 涉及 `taskintf.cc` motion bridge 或 usrmot shim 时,必须同步查看 `10-taskintf-usrmot-shim设计.md`。 9. 涉及 WASM 程序核心状态机、JS/SDK 边界或 status JSON 时,必须同步查看 `11-WASM核心状态机边界与后续完善路线.md`。 10. 涉及 status JSON 字段、SDK status API 或 UI status 展示时,必须同步查看 `12-status-json-LinuxCNC对标方案.md`。 11. 每轮结束后遵守仓库 `AGENTS.md`,追加中文执行日志。 ## 当前闭合状态 `04-任务矩阵.md` 当前所有任务均为完成,下一条优先任务为“无”。后续继续扩展对标范围时,先在矩阵中新增任务编号、验收标准和 gate,再实施代码或文档变更。 后续 WASM 程序完善的默认方向是:WASM/C++ 承载核心状态机和 LinuxCNC 语义,JS/SDK 承担加载、命令传递、状态读取和文件/OPFS 边界,JSON 仅作为 host/browser 通信格式,不作为核心状态机事实源。