Files
linuxcncWebWASM/docs/task-history.md

127 lines
47 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 任务证据索引
本文件是按需读取的历史索引,不是启动上下文。完整日志和大型 JSONL 产物只通过路径、大小和 SHA-256 追溯;不要把它们复制回 `nextTask.md` 或新的 context packet。
当前指针:`nextTask.md`;当前 context:`linuxcnc-2.10.0-pre0-wasm-m1-py-c1`(与 `context-lock.json` 一致)。
## 已验证节点
| 节点 | 结果摘要 | 主要产物 |
|---|---|---|
| `BOOTSTRAP-M0-01` | 基线、下载索引、ABI bootstrap 和上下文包测试通过 | `coverage/source-index.jsonl`, `coverage/manifest.jsonl` |
| `INV-01a..d` | 文档能力、源码符号、配置资源、测试入口索引确定性生成 | `coverage/document-capabilities.jsonl`, `coverage/source-symbols.jsonl`, `coverage/config-resources.jsonl`, `coverage/test-entries.jsonl` |
| `INV-02a..b` | 规范化 source ID、依赖闭包和 unresolved/orphan 报告生成 | `coverage/normalized-sources.jsonl`, `coverage/dependency-closure.jsonl` |
| `INV-03a` | native runner、golden schema 和严格 oracle 通过 | `scripts/native_runner.py`, `coverage/golden-schema.json` |
| `M1-CORE-01` | 最小 protocol、Worker session 和真实 WASM smoke 通过 | `wasm-core/src/sim_protocol.c`, `web/worker/sim-session.mjs` |
| `M1-CORE-02` | 事件容量、回放、快照完整性和序列约束通过 | `wasm-core/src/sim_event.c`, `web/worker/replay.mjs` |
| `M1-FS-01` | workspace journal/recovery prepare/commit/abort 和损坏记录阻断通过 | `web/workspace/journal.mjs`, `web/workspace/recovery.mjs` |
| `M1-RT-01` | runtime error/capability mapping fail-closed 通过 | `web/worker/error-map.mjs`, `web/worker/capabilities.mjs` |
| `M1-RT-02` | 当前最近验证点;报告和脚本单测通过 | `coverage/runtime-mapping.report.json` |
| `M2-CORE-01` | posemath/TP adapter、固定浮点、segment error boundary 和 state hash 通过 | `coverage/posemath-runtime.report.json` |
| `M2-CORE-02` | 固定 ASCII 数值解析、G/M 模态、canonical 输出和失败边界通过 | `coverage/interpreter-runtime.report.json` |
| `M2-CORE-03` | 固定容量 motion queue、连续性、fixed tick 和 canonical state 通过 | `coverage/motion-runtime.report.json` |
| `M2-CORE-04` | blocked:锁定任务声明的 `linuxcnc/unit_tests/kinematics/**` 不存在 | `nextTask.md` |
| `K0-INV-01` | 35 个实现/头文件、262 个去重 KINEMATICS 入口、111 个 HAL/切换入口和 11 个实现族已登记;所有族因官方 unit-test 根缺失显式 blocked | `coverage/kinematics-source-closure.report.json` |
| `K0-INV-02` | 262 个去重后的 KINEMATICS 条目与 111 个 HAL/切换条目闭合为 373 个入口节点、2,774 条边;11 个固定 FK/IK 样本定义全部保留 blocked | `coverage/kinematics-config-graph.report.json`, `coverage/kinematics-oracle-samples.jsonl` |
| `K0-ORACLE-01` | native kinematics smoke 通过;11 个样本严格按 golden schema 输出并因缺失官方 oracle 全部 blocked,无伪造 golden | `coverage/kinematics-oracle.report.json`, `coverage/kinematics-golden-schema.json` |
| `K1-CONTRACT-01` | sim_kinematics ABI、错误码、结构体、导出集合和数值策略生成 contract 并验证;native/WASM/CTest 通过 | `coverage/kinematics-abi-contract.json` |
| `K1-CONTRACT-02` | flags、pose、duplicate-axis、home、limits、axis-to-joint mapping 和 state hash 行为已登记并由 native CTest 覆盖 | `coverage/kinematics-mapping-contract.json` |
| `K1-NUM-01` | 浮点编译、角度单位、迭代上限、容差、exact 字段和六类边界错误已固定 | `coverage/kinematics-numeric-policy.json` |
| `K2-TRIV-01` | trivkins 四种 mode、coordinates case-fold、XYZ/XYZABCUVW、重复轴和 extra-joint 行为已接入现有 slice;245 个真实配置候选已映射,官方 oracle 仍 blocked | `coverage/trivkins-integration.report.json` |
| `K2-TRIV-02` | 明确并实现 kinematics joint 前缀与 extra-joint 分离;重复轴 first-wins、joint_count mismatch、home、limit、state hash native/WASM 回归通过 | `coverage/kinematics-mapping-contract.json`, `wasm-core/tests/sim_kinematics_test.c` |
| `K2-COUPLED-01` | CoreXY、Rose、MaxKins、RotateKins 统一接入;三项 shipped 配置加一个明确标注的 rotatekins 工作区派生候选、FK/IK round-trip、CoreXY HAL/kins 入口区分、Rose quadrant/revolution continuity、Max pivot 和 Rotate 90°边界、native/WASM JSON 与 state hash 对照通过;官方 oracle 继续显式 blocked | `coverage/coupled-kinematics.report.json`, `wasm-core/src/sim_kinematics.c` |
| `K2-HAL-01` | 静态 `corexy_by_hal` 注册到 SimHAL;命令/反馈 8-pin 矩阵、servo tick 调度、alpha/beta 方向、Cartesian home 信号与 `corexykins` 入口区别由 native/WASM 对照通过;官方 oracle 继续显式 blocked | `coverage/corexy-hal.report.json`, `coverage/hal-runtime.report.json`, `wasm-core/src/sim_hal.c` |
| `K3-5AXIS-01` | `5axiskins` 接入统一 XYZBCW spherical pivot 变换;bridgemill 真实配置、`xyzbcwy` 重复 Y 映射、pivot length、FK/IK round-trip、缺必需坐标边界和 native/WASM state hash 对照通过;官方 oracle 继续显式 blocked | `coverage/fiveaxis-kinematics.report.json`, `wasm-core/src/sim_kinematics.c` |
| `K3-TRT-01` | XYZAC/XYZBC TRT 统一接入;table-rotary-tilting 两个真实 `identityfirst` 配置、旋转顺序和 offset 参数、FK/IK round-trip、B=90 奇异边界、native/WASM state hash 对照通过;switchkins 动态切换和官方 oracle 保持后续/blocked | `coverage/trt-kinematics.report.json`, `wasm-core/src/sim_kinematics.c` |
| `K3-ROBOT-01` | SCARA、PUMA、Scorbot 统一接入;scara/puma shipped 配置加 scorbot 工作区派生候选、几何参数、FK/IK 分支 round-trip、不可达/奇异边界和 native/WASM 对照通过;state hash 使用 1e-9 浮点规范化,官方 oracle 继续显式 blocked | `coverage/robot-kinematics.report.json`, `wasm-core/src/sim_kinematics.c` |
| `K3-GENSER-01` | Genser DH 六链 forward 与固定零初值阻尼 Jacobian inverse 接入;melfa/puma560 真实 DH 配置、迭代 residual/iteration、固定上限不收敛、非有限 DH 边界和 native/WASM 对照通过;官方 oracle 继续显式 blocked | `coverage/genser-kinematics.report.json`, `wasm-core/src/sim_kinematics.c` |
| `K4-DELTA-01` | Linear/rotary Delta 统一 forward/inverse/mapping;四个真实配置候选、默认/alternate root、工作空间无解、关节限位、rotary z=0 奇异、固定零迭代和 native/WASM state hash 对照通过;缺失 HAL 资源与官方 oracle 均显式 blocked | `coverage/delta-kinematics.report.json`, `wasm-core/src/sim_kinematics.c`, `scripts/generate_delta_kinematics_report.py` |
| `K4-TRIPOD-01` | Point-vertex tripod 统一 forward/inverse/mapping;真实 `tripod.ini`/`tripodsim.hal`、XYZ/AD-BD-CD 映射、above/below 根分支、无解/基面奇异/限位/退化几何边界、固定零迭代和 native/WASM state hash 对照通过;官方 oracle 因锁定来源缺少 `linuxcnc/unit_tests/kinematics/**` 继续 blocked | `coverage/tripod-kinematics.report.json`, `wasm-core/src/sim_kinematics.c`, `scripts/generate_tripod_kinematics_report.py` |
| `K4-HEX-01` | Genhex 六腿 Stewart 平台统一 forward/inverse/mapping;真实 `hexapod.ini`/`kinematics.hal`、六腿闭式逆解、Newton 6x6 正解、alternate seed、非正 strut、迭代上限、最大误差、奇异 Jacobian、限位、HAL GUI/迭代 pin 和 native/WASM state hash 对照通过;官方 oracle 因锁定来源缺少 `linuxcnc/unit_tests/kinematics/**` 继续 blocked | `coverage/genhex-kinematics.report.json`, `wasm-core/src/sim_kinematics.c`, `scripts/generate_genhex_kinematics_report.py` |
| `K4-PENTA-01` | Pentakins 五腿并联统一 forward/inverse/mapping;真实 `pentapod.ini`/`kinematics.hal` 与派生非零姿态 seed、XYZAB 映射、roll/pitch 约束、tool-offset 双端几何、Newton 5x5 收敛/迭代上限/最大误差/奇异/非正杆长/限位、native/WASM JSON 和 state hash 对照通过;官方 oracle 因锁定来源缺少 `linuxcnc/unit_tests/kinematics/**` 继续 blocked | `coverage/pentapod-kinematics.report.json`, `wasm-core/src/sim_kinematics.c`, `scripts/generate_pentapod_kinematics_report.py` |
| `K5-SWITCH-01` | switchkins 三槽位动态切换;真实 `xyzac-trt.ini`/`identityfirst` 配置、identity/xyzac-trt/userk 注册、pose 连续、状态保持、非法模式/缺模块/切换中断/abort 边界、native/WASM runner 与 state hash 对照通过;官方 oracle 因锁定来源缺少 `linuxcnc/unit_tests/kinematics/**` 继续显式 blocked | `coverage/switchkins-kinematics.report.json`, `wasm-core/src/sim_switchkins.c`, `wasm-core/tests/sim_switchkins_test.c` |
| `K5-USER-01` | userk identity 模板与 ugenser/genser 构建期静态描述符;ABI v1、forward/inverse/static capability、switchkins type 2 绑定、FK/IK 调用状态、路径/`.so` 禁止、版本/能力/缺模块边界和 native/WASM state hash 对照通过;旧 ugenser CLI 明确排除,官方 oracle 继续 blocked | `coverage/userkins-kinematics.report.json`, `wasm-core/src/sim_userkins.c`, `wasm-core/tests/sim_userkins_test.c` |
| `K5-CFG-01` | 18 个内建运动学类型的 ABI v1 构建期注册表;稳定名称/type、必需坐标、关节范围、7 类能力位、8 类参数掩码、18/18 实际 init、能力/参数/type/坐标/关节/未知/路径错误和 native/WASM registry hash 对照通过;官方 oracle 继续 blocked | `coverage/kinematics-registry.report.json`, `wasm-core/src/sim_kinematics_registry.c`, `wasm-core/tests/sim_kinematics_registry_test.c` |
| `K6-MOTION-01` | 固定 tick TP→IK→motion adapter;复用 `sim_tp` 和 `sim_kinematics_inverse_ex`,64 槽关节样本队列、pause/resume、IK 奇异、非有限、容量满、planner/kinematics 事务回滚、native/WASM JSON 和 state hash 对照通过;官方 oracle 继续 blocked | `coverage/kinematics-motion.report.json`, `wasm-core/src/sim_kinematics_motion.c`, `wasm-core/tests/sim_kinematics_motion_test.c` |
| `K6-MOTION-02` | actual-joint→FK feedback adapter;pose/joint/flags/tick/valid/error 状态、stale/nonfinite/joint-count/unsupported-forward 边界、错误时不覆盖有效 pose、native/WASM JSON 和 state hash 对照通过;官方 oracle 继续 blocked | `coverage/kinematics-feedback.report.json`, `wasm-core/src/sim_kinematics_feedback.c`, `wasm-core/tests/sim_kinematics_feedback_test.c` |
| `K6-HOME-01` | fixed home sequence、`sim_kinematics_home`、joint limit/FK check;未 home、非法 sequence、越界、非有限、joint-count、失败保持有效 pose/joints、native/WASM JSON 和 state hash 对照通过;官方 oracle 继续 blocked | `coverage/kinematics-home-limit.report.json`, `wasm-core/src/sim_kinematics_home_limit.c`, `wasm-core/tests/sim_kinematics_home_limit_test.c` |
| `K6-IO-01` | 固定 tick spindle/tool/probe IO;motion/iocontrol pins、主轴限速/到速/定向、prepare/change/abort/fault、probe pose latch、停主轴互锁、非法 pin/超限/未 ready/急停/恢复边界和 native/WASM JSON/hash 对照通过;官方 IO/kinematics oracle 继续 blocked | `coverage/io-runtime.report.json`, `wasm-core/include/sim_io.h`, `wasm-core/src/sim_io.c`, `wasm-core/tests/sim_io_test.c` |
| `K7-RECOVERY-01` | 固定 tick checkpoint/replay 与 workspace recovery 已接入;checkpoint 携带 context、cursor、snapshot/state hash 和 operation ledger;损坏 checkpoint、未知 schema、缺号/重复事件、未确认操作、abort 和恢复边界均 fail-closed;恢复终点与连续运行状态 hash 一致;native `sim_event_import` 与 Worker 对照通过,官方 recovery oracle 继续显式 blocked | `coverage/workspace-recovery.report.json`, `web/worker/replay.mjs`, `web/worker/sim-session.mjs`, `web/workspace/recovery.mjs`, `wasm-core/src/sim_event.c` |
| `K8-REG-01` | 统一配置图确定性枚举 264 个运动学入口和 233 个 sim INI 入口;逐项资源/INI/注册表启动预检、缺失与未解析引用保留;图谱孤儿和未拥有模板为零;native/WASM kinematics/motion/feedback/home/IO 与 Worker replay/recovery 重复摘要稳定;官方 kinematics/recovery oracle 继续显式 blocked | `coverage/configuration-regression.report.json`, `scripts/generate_configuration_regression.py`, `scripts/test_configuration_regression.py`, `coverage/manifest.jsonl`, `context-lock.json` |
| `K8-REL-01` | 兼容性、来源/许可证和发布闭合审计完成;ABI/protocol/schema/context lock 哈希一致;1,804 个已影响 manifest 条目在 evidence index 中保留 owner、输入、输出、测试、差异和 oracle 状态;6,249 个未分配种子、资源缺失、官方 oracle、浏览器矩阵、逐项许可证和迁移/回滚继续显式 blocked,不升级为发布候选 | `coverage/release-closure.report.json`, `coverage/compatibility-matrix.report.json`, `coverage/license-closure.report.json`, `coverage/release-evidence-index.json`, `docs/linuxcnc-web-wasm-release-closure.md`, `scripts/generate_release_closure.py`, `scripts/test_release_closure.py` |
| `K8-REL-02` | workspace-package v1↔v2 封套迁移双向 hash 闭合;旧 event/snapshot/checkpoint/journal schema 保持不变且损坏、版本、上下文不兼容均 fail-closed;回滚包只生成新目标包,失败注入后恢复到最近已提交 seq=1;离线资源完整缓存 ready、缺件阻断、联网降级显式;迁移项在 release evidence index 标记 verified,K8-REL-01 的官方 oracle/资源/浏览器/许可证阻塞保留 | `coverage/workspace-migration.report.json`, `coverage/workspace-rollback.package.json`, `coverage/offline-cache.package.json`, `web/workspace/migration.mjs`, `web/workspace/test_migration.mjs`, `coverage/release-evidence-index.json`, `coverage/compatibility-matrix.report.json` |
| `K8-REL-03` | 生成 8,053 条确定性 license/source index;全部来源 hash、审计责任人和证据状态完整;7,996 条 LinuxCNC 条目按最具体 Debian copyright scope 映射 SPDX,57 条 wasm-core/web 条目明确保持 `blocked_unassigned`;实现许可证决策写入独立文档,release 仍保留实现许可证阻塞,不升级为发布候选 | `coverage/license-source-index.jsonl`, `coverage/license-closure.report.json`, `docs/linuxcnc-web-wasm-license-decision.md`, `coverage/release-evidence-index.json`, `scripts/test_license_source_closure.py` |
| `K8-REL-04` | 最终 release-candidate gate 独立汇总 closure 报告、context lock、schema contracts、license/source index、恢复和迁移证据;context/recovery hash、ABI/protocol/schema、license index、migration/rollback/offline checks verified;6 个硬阻塞保留,明确 `candidate_eligible=false`、`release_action=STOP_RELEASE`,不升级为发布候选 | `coverage/release-candidate-gate.report.json`, `coverage/release-closure.report.json`, `scripts/generate_release_closure.py`, `scripts/test_release_candidate_gate.py` |
| `K8-REL-05` | post-release audit 逐项比较 gate 的 11 个输入哈希、closure 交叉引用和 context/schema/recovery/migration 检查;审计检查全部 verified,6 个 blocker 均有 owner、review owner、证据路径和 remediation;整体仍明确 `blocked`/`STOP_RELEASE`,未清除或重分类阻塞 | `coverage/post-release-audit.report.json`, `scripts/generate_post_release_audit.py`, `scripts/test_post_release_audit.py` |
| `K8-REL-06` | K8 milestone closeout 冻结 post-release audit、release gate、closure、evidence index 和 context lock;输入哈希、审计自校验、context/schema、六项 blocker 保留和 `STOP_RELEASE` 均 verified;里程碑以 `closed_with_release_blockers` 结束,不升级为发布候选 | `coverage/k8-milestone-closeout.report.json`, `scripts/generate_k8_milestone_closeout.py`, `scripts/test_k8_milestone_closeout.py`, `coverage/post-release-audit.report.json` |
| `K8-REL-07` | remediation intake 校验 closeout、audit、gate、closure、evidence index 和 context lock 的输入哈希与 context;六个 blocker identity、owner/evidence/review trigger 和 `STOP_RELEASE` 均 verified;生成 `K8-REL-08..13` 有序后续工作项,但全部保持 blocked,不升级为发布候选 | `coverage/release-remediation-intake.report.json`, `scripts/generate_release_remediation_intake.py`, `scripts/test_release_remediation_intake.py`, `docs/linuxcnc-web-wasm-release-remediation-intake.md` |
| `K8-REL-08` | 为全部 6,249 个 `needs_owner` manifest seed 生成确定性 WS-0/WS-1/WS-2/WS-6 workstream owner 和 review owner;源哈希、唯一覆盖、context 与 `STOP_RELEASE` 均 verified;assignment 保持 `proposed_blocked_review`,不修改 manifest/context lock、不升级 accepted,下一步处理 acceptance evidence | `coverage/manifest-ownership-remediation.report.json`, `scripts/generate_manifest_ownership_remediation.py`, `scripts/test_manifest_ownership_remediation.py`, `docs/linuxcnc-web-wasm-manifest-ownership-remediation.md` |
| `K8-REL-09` | acceptance readiness 审计覆盖全部 1,804 affected entry;owner/inputs/outputs/test 字段虽可追踪,但 oracle/context 阻塞导致 eligible=0,manifest accepted=0;6 项检查与 `STOP_RELEASE` verified,不 promotion 或重分类,下一步处理 official oracle | `coverage/release-acceptance-remediation.report.json`, `scripts/generate_release_acceptance_remediation.py`, `scripts/test_release_acceptance_remediation.py`, `docs/linuxcnc-web-wasm-release-acceptance-remediation.md` |
| `K8-REL-10` | 锁定 source commit 与 context 匹配;`linuxcnc/unit_tests/kinematics`、recovery roots 缺失,6 个 matrixkins 文件明确非官方,11 个 kinematics samples/recovery scenarios 保持 blocked;未新增官方输入或 golden,`STOP_RELEASE` verified,下一步处理 configuration resources | `coverage/official-oracle-remediation.report.json`, `scripts/generate_official_oracle_remediation.py`, `scripts/test_official_oracle_remediation.py`, `docs/linuxcnc-web-wasm-official-oracle-remediation.md` |
| `K8-REL-11` | 配置资源 remediation 保留 16,093 rows:997 missing、91 unresolved、59 unindexed、3 unregistered startup;956 basename candidates 仅作只读审查,实际 resolve=0,资源图 orphan=0,`STOP_RELEASE` verified,下一步处理 browser matrix | `coverage/configuration-resource-remediation.report.json`, `scripts/generate_configuration_resource_remediation.py`, `scripts/test_configuration_resource_remediation.py`, `docs/linuxcnc-web-wasm-configuration-resource-remediation.md` |
| `K8-REL-12` | browser matrix remediation 读取锁定 TBD minimums;Chromium 151/Firefox 154 headless smoke passed,Safari 在 Linux 环境 unavailable,时间戳输出归一化且所有结果显式;`STOP_RELEASE` verified,不就地修改 context lock,下一步处理 implementation license | `coverage/browser-matrix-remediation.report.json`, `scripts/generate_browser_matrix_remediation.py`, `scripts/test_browser_matrix_remediation.py`, `docs/linuxcnc-web-wasm-browser-matrix-remediation.md` |
| `K8-REL-13` | implementation license remediation 覆盖 57/57 wasm-core/web entries;源哈希与 audit evidence verified,blocked_unassigned=57、approved_spdx=0、未批准声明=0,上游 license 不继承,`STOP_RELEASE` verified,下一步汇总 remediation evidence | `coverage/implementation-license-remediation.report.json`, `scripts/generate_implementation_license_remediation.py`, `scripts/test_implementation_license_remediation.py`, `docs/linuxcnc-web-wasm-implementation-license-remediation.md` |
| `K8-REL-14` | remediation evidence roundup 汇总 K8-REL-08..13;6 份报告 self-hash/context、六个 blocker identity、无 promotion/fabrication 和 gate/audit/closeout/intake 的 `STOP_RELEASE` 均 verified;状态为 `blocked_pending_owner_actions`,下一步 owner review 与新 context/gate refresh | `coverage/remediation-evidence-roundup.report.json`, `scripts/generate_remediation_evidence_roundup.py`, `scripts/test_remediation_evidence_roundup.py`, `docs/linuxcnc-web-wasm-remediation-evidence-roundup.md` |
| `K8-REL-15` | owner-review gate refresh 定位六项 owner decision,但 workspace 没有批准输入或新 context;owner_inputs=0、gate_refresh=blocked,`STOP_RELEASE` verified,任务保持 blocked,后续仅在 owner 决策后创建新 context 并刷新 gate | `coverage/owner-review-gate-refresh.report.json`, `scripts/generate_owner_review_gate_refresh.py`, `scripts/test_owner_review_gate_refresh.py`, `docs/linuxcnc-web-wasm-owner-review-gate-refresh.md` |
| `K8-REL-16` | 在没有 owner 决定或新锁定输入时重建 closure/audit/remediation/owner-review 证据;六项 blocker identity、context consistency 和 `STOP_RELEASE` 均 verified,owner_inputs=0、gate_refresh=blocked,context lock 未修改,任务保持 blocked | `coverage/owner-review-gate-refresh.report.json`, `coverage/release-candidate-gate.report.json`, `coverage/post-release-audit.report.json`, `scripts/generate_owner_review_gate_refresh.py`, `scripts/test_owner_review_gate_refresh.py` |
| `PROJECT-AUDIT-01` | 整体审计确认 K0-K6 运动学实现和 15 项 native CTest 已通过;运动学 `partial/blocked` 仅因锁定来源缺少官方 oracle;当前开发瓶颈转为配置启动闭包,下一任务为 M3-CFG-01,K8 release 六项 blocker/`STOP_RELEASE` 独立保留 | `docs/linuxcnc-web-wasm-next-work.md`, `coverage/kinematics-registry.report.json`, `coverage/kinematics-motion.report.json`, `coverage/kinematics-feedback.report.json`, `coverage/kinematics-home-limit.report.json`, `coverage/configuration-regression.report.json` |
| `PROJECT-AUDIT-02` | 重新梳理任务图确认 M3/FE/REG 实现证据均已 verified;K8-REL-17 owner_inputs=0、gate_refresh=blocked,发现旧 Next 自引用风险;生成 GOV-01 readiness 后进入不自动重试的 WAIT-OWNER-01,六项 blocker 和 `STOP_RELEASE` 保持 verified | `docs/linuxcnc-web-wasm-task-map.md`, `coverage/project-task-readiness.report.json`, `nextTask.md` |
| `OWNER-INTAKE-01` | 建立六项 owner decision 输入模板、结构/identity/context/evidence hash 验证器和 blocked report;当前输入文件缺失,验证结果为 blocked,gate refresh 永远 blocked,不修改 context lock 或 release gate | `coverage/owner-decision-intake.template.json`, `coverage/owner-decision-intake.report.json`, `docs/linuxcnc-web-wasm-owner-decision-intake.md`, `scripts/validate_owner_decision_intake.py`, `scripts/test_owner_decision_intake.py` |
| `GOV-INTAKE-01` | 强化 owner decision intake 的持续接续门禁;非 approve、缺少 decision_set_id、仓库外/缺失证据路径、非十六进制或实际 hash 不匹配均 fail-closed;当前 owner 输入仍缺失,release gate 和 context lock 未修改 | `scripts/validate_owner_decision_intake.py`, `scripts/test_owner_decision_intake.py`, `docs/linuxcnc-web-wasm-continuation-plan.md` |
| `M3-CFG-01` | 确定性配置 resolver 和 Worker preflight 完成;16,093 条资源全部分类,15,112 resolved、981 blocked;显式 `LIB:`、参数尾缀、相对路径、仓库外路径和宿主路径均有明确策略;原始索引 hash、context lock、187 个脚本测试、15 个 native CTest 和 Worker/workspace 测试通过 | `web/workspace/configuration.mjs`, `web/worker/sim-session.mjs`, `coverage/configuration-startup-closure.report.json`, `scripts/generate_configuration_startup_closure.py`, `scripts/test_configuration_startup_closure.py`, `web/workspace/test_configuration.mjs`, `web/worker/test_configuration_preflight.mjs` |
| `M3-RT-02` | 生成 145 个 `.comp` 组件 manifest、1,220 pins、140 params、530 functions 和 193 个 HAL 文件的 4,566 条配置图记录;manifest、容量、资源边和动态加载拒绝检查 verified,29 个 `loadusr` 与 124 个变量化/未声明 `loadrt` 保持 blocked;190 个脚本测试、15 个 native CTest 和 Worker/workspace 测试通过 | `coverage/hal-component-manifest.report.json`, `scripts/generate_hal_component_manifest.py`, `scripts/test_hal_component_manifest.py`, `web/workspace/hal-configuration.mjs`, `web/worker/sim-session.mjs`, `web/worker/test_hal_preflight.mjs` |
| `M3-RT-03` | 虚拟设备故障矩阵完成;26 个 spindle/tool/probe/limit/estop/非有限/恢复场景进入 EventLog,连续执行与 replay state hash 一致,设备 checkpoint 增量恢复通过;192 个脚本测试、15 个 native CTest 和 Worker/workspace 测试通过 | `coverage/virtual-device-fault-matrix.report.json`, `scripts/generate_virtual_device_fault_matrix.py`, `scripts/test_virtual_device_fault_matrix.py`, `web/worker/virtual-devices.mjs`, `web/worker/test_virtual_devices.mjs`, `web/worker/test_device_recovery.mjs` |
| `M3-FS-01` | 配置/HAL/虚拟设备/session 状态统一到 checkpoint;设备事件增量恢复后 session state hash 一致,workspace package v1↔v2 round-trip 通过;194 个脚本测试、15 个 native CTest 和 Worker/workspace 测试通过 | `coverage/workspace-session-integration.report.json`, `scripts/generate_workspace_session_integration.py`, `scripts/test_workspace_session_integration.py`, `web/worker/test_workspace_session_integration.mjs`, `web/worker/sim-session.mjs` |
| `M3-PY-01` | Worker-only Python bridge 完成;固定 Pyodide manifest/artifact hash、虚拟模块 import、能力拒绝、Python API 调用、异常/资源限制和 Python session checkpoint/replay 均通过;196 个脚本测试、15 个 native CTest 和 Worker/workspace 测试通过 | `coverage/python-worker-bridge.report.json`, `scripts/generate_python_worker_bridge.py`, `scripts/test_python_worker_bridge.py`, `web/worker/python-bridge.mjs`, `web/worker/test_python_bridge.mjs`, `web/worker/test_python_session.mjs` |
| `FE-M1` | 建立真实 WorkerClient/AppShell;capabilities、session attach、workspace load、step、snapshot、error 和 operation 去重 smoke 通过;198 个脚本测试、15 个 native CTest 和 Worker/workspace/Python 回归通过 | `coverage/frontend-m1.report.json`, `scripts/generate_frontend_m1.py`, `scripts/test_frontend_m1.py`, `web/app/index.html`, `web/app/app.mjs`, `web/app/worker-client.mjs`, `web/app/test_frontend_m1.mjs` |
| `FE-M2` | 完成核心 operation controls 和权威 state panel;run/pause/resume/abort/home/estop/recover 控制、operation 去重、错误/报警状态和窄屏布局 smoke 通过;200 个脚本测试、15 个 native CTest 和 Worker/workspace/Python 回归通过 | `coverage/frontend-m2.report.json`, `scripts/generate_frontend_m2.py`, `scripts/test_frontend_m2.py`, `web/app/controls.mjs`, `web/app/state-panel.mjs`, `web/app/test_frontend_m2.mjs` |
| `FE-M3` | 项目/恢复 workflow 完成;journal 导入导出、checkpoint/package、v1↔v2 migration、offline ready 和 half-commit 状态展示 smoke 通过;202 个脚本测试、15 个 native CTest 和 Worker/workspace/Python 回归通过 | `coverage/frontend-m3.report.json`, `scripts/generate_frontend_m3.py`, `scripts/test_frontend_m3.py`, `web/app/project-workflow.mjs`, `web/app/recovery-panel.mjs`, `web/app/test_frontend_m3.mjs` |
| `FE-M4` | 完成 HAL/tool/IO/3D frontend workflows;设备命令、HAL diagnostics、稳定 canvas machine view 和故障状态展示 smoke 通过;204 个脚本测试、15 个 native CTest 和 Worker/workspace/Python 回归通过 | `coverage/frontend-m4.report.json`, `scripts/generate_frontend_m4.py`, `scripts/test_frontend_m4.py`, `web/app/device-panel.mjs`, `web/app/hal-panel.mjs`, `web/app/machine-view.mjs`, `web/app/test_frontend_m4.mjs` |
| `S5-02` | 真实 LinuxCNC `runtests` 代表性纯仿真基线 12/12 native 通过;abort/G64 超时不伪造为回归通过,明确保留 Worker Task/motion 适配边界 | `coverage/linuxcnc-source-test-execution-s5.report.json`, `scripts/test_linuxcnc_source_test_execution.py` |
| `S5-03` | `unit_tests/interp` 与 `unit_tests/tp` 的 9 个可移植源断言由同一 native/WASM adapter 执行,CTest 通过且 JSON golden 字节一致;上游 Meson oracle 缺失标记 `SOURCE_BLOCKED`,G64/abort 保持 `WORKER_TASK_MOTION_PENDING` | `coverage/linuxcnc-source-unit-execution-s5.report.json`, `wasm-core/tests/source_unit_adapter_test.c`, `scripts/test_linuxcnc_source_unit_s5.py` |
| `S5-04` | `tests/interp`、`tests/oword` 与 `tests/remap` 的 8 个真实 fixture 由 WASM-backed Worker 执行;6 项 block/error/canonical/callback 适配通过,DO/G64 2 项明确保持 `WORKER_TASK_MOTION_PENDING`,26 个源/expected/checkresult/config 文件哈希闭合;源 canonical logger 继续 `SOURCE_BLOCKED` | `coverage/linuxcnc-source-interp-s5.report.json`, `web/worker/test_source_interpreter_s5.mjs`, `scripts/test_linuxcnc_source_interpreter_s5.py` |
| `S5-05` | HAL `abs`/`edge` 与 starting-high 边界由 Worker 静态运行时执行通过;native/WASM `sim_hal_test` golden 字节一致;自定义 `.comp`、相对头文件和 userspace/RTAPI 路径分别保留 `SOURCE_BLOCKED`/`HOST_EXCLUDED`,8 个源案例和 23 个 fixture 文件均有哈希 | `coverage/linuxcnc-source-hal-s5.report.json`, `web/worker/test_source_hal_s5.mjs`, `scripts/test_linuxcnc_source_hal_s5.py` |
| `S5-06` | IO/limit/tool ack Worker 适配 3 项通过;native/WASM `sim_io` 与 `sim_device_io` golden 字节一致;startup tool table 2 项 `SOURCE_BLOCKED`、ClassicLadder 1 项 `HOST_EXCLUDED`、motion-logger abort 1 项 `WORKER_TASK_MOTION_PENDING`,30 个 fixture 文件哈希闭合 | `coverage/linuxcnc-source-io-s5.report.json`, `web/worker/test_source_io_s5.mjs`, `scripts/test_linuxcnc_source_io_s5.py` |
| `S5-07` | 批量读取并哈希全部 264 个配置矩阵条目(216 个 `configs/sim`、48 个 tests 配置);56 READY、208 BLOCKED,逐项保留资源/诊断状态;batch checkpoint/restore、native/WASM/Worker startup probes 通过,静态 preflight 不提升为官方 runtime oracle | `coverage/linuxcnc-source-config-s5.report.json`, `web/worker/test_source_config_s5.mjs`, `scripts/test_linuxcnc_source_config_s5.py` |
| `S5-08` | 汇总 S5-01..S5-07 源证据;关键适配器重复运行稳定,native/WASM 静态 golden 全部一致,1x/fast/recovery/trace import 终点一致且 `first_divergence=null`;SOURCE_BLOCKED/HOST_EXCLUDED/WORKER_TASK_MOTION_PENDING 与官方 oracle 阻塞均保留 | `coverage/linuxcnc-source-parity-s5.report.json`, `web/worker/test_source_parity_s5.mjs`, `scripts/test_linuxcnc_source_parity_s5.py` |
| `S6-01` | 对完整仿真计划 P0-P8 的 39 个任务逐项对齐证据;S5 源测试链全部 verified;识别 authoritative sim_task tick integration、官方 native oracle、配置资源、source adapter 和浏览器/OPFS 五类开放 gap;创建下一执行任务 S6-02 | `coverage/full-linuxcnc-simulation-gap-audit.report.json`, `scripts/generate_full_linuxcnc_simulation_gap_audit.py`, `scripts/test_full_linuxcnc_simulation_gap_audit.py`, `nextTask1.md` |
| `S6-02` | 新增 authoritative runtime:程序行在 task phase 执行,XYZ/trivkins planner 在 tp/kinematics phase 更新,motion/HAL/IO 共用固定 tick;state 纳入 snapshot/checkpoint/trace/endpoint,1x/fast、recovery/trace import parity 通过;非 trivkins和完整 canonical oracle 保持后续/blocked | `coverage/authoritative-sim-task-s6.report.json`, `web/worker/authoritative-runtime.mjs`, `web/worker/test_authoritative_sim_task_s6.mjs`, `scripts/test_authoritative_sim_task_s6.py` |
| `S6-03` | authoritative runtime 扩展 CoreXY:XYZ pose `[4,2,3]` 映射到 joints `[6,2,3]`;native/WASM kinematics 与 kinematics-motion golden、1x/fast/recovery endpoint parity 通过;unsupported `puma` 稳定拒绝,其他 families 和官方 oracle 保留后续/blocked | `coverage/authoritative-kinematics-s6.report.json`, `web/worker/test_authoritative_kinematics_s6.mjs`, `scripts/test_authoritative_kinematics_s6.py` |
| `S6-04` | authoritative runtime 接入一个可验证的并联 Tripod family:真实 `tripodkins` 配置/几何 `[0,0],[10,0],[5,7.071]`,pose `[2,3,4]` 逆映射为三支杆 `[5.385164807,9.433981132,6.447715952]`;native/WASM kinematics 与 kinematics-motion golden、1x/fast/recovery endpoint parity 和首差诊断通过;TRT、机器人、Delta/Hexapod/Pentapod、switch/user 与官方 oracle 明确保留 queued/blocked | `coverage/authoritative-kinematics-s6-04.report.json`, `web/worker/test_authoritative_kinematics_s6_04.mjs`, `scripts/test_authoritative_kinematics_s6_04.py`, `web/worker/authoritative-runtime.mjs` |
| `S6-05` | 新增 OPFS Dedicated Worker 探针、逻辑 journal/offline integrity 测试和确定性报告;Playwright headed Chromium 140 两次完成 sync-access-handle 写入/读取/清理并稳定一致,headless timeout 作为边界保留;Safari/Firefox 明确 OUT_OF_SCOPE,物理 crash/restart oracle 和 release/oracle blocker 不被升级为闭合 | `coverage/authoritative-browser-s6-05.report.json`, `web/workspace/opfs-runtime.mjs`, `scripts/test_browser_opfs_playwright_s6_05.mjs`, `web/app/test_opfs_runtime_s6_05.mjs`, `scripts/test_authoritative_browser_s6_05.py` |
| `S6-06` | 使用同一 headed Chromium 140 persistent profile:第一阶段提交 OPFS record 后关闭 browser context,第二阶段重开 profile 读取相同 content hash 并清理;两次运行稳定,profile restart slice verified;真实进程 crash/power-loss oracle 和 release blocker 保留,Safari/Firefox 明确 OUT_OF_SCOPE | `coverage/authoritative-browser-restart-s6-06.report.json`, `scripts/test_browser_opfs_restart_s6_06.mjs`, `scripts/test_authoritative_browser_restart_s6_06.py`, `web/workspace/opfs-runtime.mjs` |
| `S6-07` | 使用 Playwright BrowserServer kill 真实终止 Chromium 进程,再以同一 profile 重开并读取 committed OPFS record;两次运行 process-kill、hash continuity 和 cleanup 均 verified;power-loss/filesystem-corruption 与 release/oracle blocker 保留,Safari/Firefox 明确 OUT_OF_SCOPE | `coverage/authoritative-browser-crash-s6-07.report.json`, `scripts/test_browser_opfs_crash_s6_07.mjs`, `scripts/test_authoritative_browser_crash_s6_07.py`, `web/workspace/opfs-runtime.mjs` |
| `S7-AUDIT` | 重新梳理 LinuxCNC 完整仿真计划、264 配置入口、S5 source parity、S6 authoritative/runtime/browser evidence;确认配置 `56 READY/208 BLOCKED`、DO/ENDDO 与 G64/G61 pending、剩余 kinematics queued、官方 oracle/release blocked;创建并认领 S7-01 | `coverage/simulation-alignment-s7.report.json`, `scripts/generate_simulation_alignment_audit_s7.py`, `scripts/test_simulation_alignment_s7.py` |
| `S7-01` | 接入锁定 `linuxcnc/tests/interp/do-while-break/test.ngc` 的 DO/ENDDO/BREAK 后测循环 slice;嵌套 BREAK、named parameters、pause/resume、malformed ENDDO、depth budget 和 checkpoint recovery parity 通过;上游 canonical expected 保持 `SOURCE_BLOCKED` | `coverage/source-do-s7-01.report.json`, `web/worker/test_source_do_s7_01.mjs`, `scripts/test_source_do_s7_01.py`, `web/worker/program-runner.mjs`, `web/worker/sim-session.mjs` |
| `S7-02` | 接入锁定 `linuxcnc/tests/interp/g6164/test.ngc` 的 G64 continuous/P/Q、G61 exact-path、G61.1 exact-stop modal state;负 tolerance/unsupported code、pause/recovery parity 通过;S5-04 pending 清零,canonical logger 与 TP numeric parity 仍保持明确边界 | `coverage/source-g6164-s7-02.report.json`, `web/worker/test_source_g6164_s7_02.mjs`, `scripts/test_source_g6164_s7_02.py`, `web/worker/program-runner.mjs`, `web/worker/sim-session.mjs` |
| `S7-03` | 选择有真实配置/native-WASM 样本且保持 XYZ/3-joint 形状的 `lineardeltakins`,接入 authoritative fixed tick;pose `[0,0,64.636584194]` 映射三 carriage joints `[300,300,300]`,1x/fast/recovery parity、无解 fail-closed 和 unsupported TRT boundary 通过 | `coverage/authoritative-kinematics-s7-03.report.json`, `web/worker/test_authoritative_kinematics_s7_03.mjs`, `scripts/test_authoritative_kinematics_s7_03.py`, `web/worker/authoritative-runtime.mjs` |
| `S7-04` | 接入 `rotarydeltakins` authoritative fixed tick;pose `[0,0,-3.793360169]` 映射 rotary joints `[10,10,10]`,1x/fast/recovery parity、z=0 singular fail-closed 和 unsupported TRT boundary 通过;缺失 rdelta HAL 与官方 oracle 保持边界 | `coverage/authoritative-kinematics-s7-04.report.json`, `web/worker/test_authoritative_kinematics_s7_04.mjs`, `scripts/test_authoritative_kinematics_s7_04.py`, `web/worker/authoritative-runtime.mjs` |
| `S7-05` | 对齐真实 `corexy_by_kins.ini` 的 LinuxCNC `#INCLUDE`、HAL 变量和反斜杠续行;HAL 72 条 preflight records 全部 ready,但 runtime 正确 BLOCKED 在缺失 `linuxcnc.var/tool.tbl`,未提升 static READY | `coverage/configuration-corexy-s7-05.report.json`, `web/worker/test_configuration_corexy_s7_05.mjs`, `scripts/test_configuration_corexy_s7_05.py`, `web/workspace/ini-parser.mjs`, `web/workspace/hal-configuration.mjs`, `web/workspace/configuration-startup.mjs` |
| `S7-06` | verified:依据 `stepconf/build_INI.py` 的精确 `INTRO_GRAPHIC = linuxcnc.gif` 约定,将 `linuxcnc/linuxcnc.gif` 作为 DISPLAY-only shared simulation asset;同 basename 的 tool/parameter/HAL/program 和非 DISPLAY 键保持 blocked;资源图 state hash、source fixture、self-hash 和 native/Worker/App 全量回归通过。S7 后续技术任务未定义,指针保持 `next_task: none` | `coverage/resource-intro-graphic-s7-06.report.json`, `web/worker/test_resource_intro_graphic_s7_06.mjs`, `scripts/test_resource_intro_graphic_s7_06.py`, `web/workspace/resource-resolver.mjs`, `nextTask1.md` |
| `S8-01` | verified:从真实 `linuxcnc/configs/sim` 生成 235 个 INI 案例和 2,080 个精确文件索引;递归 INI/HAL/resource loader 保留缺失诊断并把 static READY 与 runtime READY 分开;AppShell 提供案例筛选、Worker startup、G-code、MDI、Run/Pause/Step、Home/Jog、倍率、主轴/刀具/探针/急停和 machine view。235 个案例中 4 个 loader-ready、其余保留实际资源/HAL blockers | `coverage/sim-case-catalog.report.json`, `scripts/generate_sim_case_catalog.py`, `scripts/test_sim_case_catalog.py`, `web/workspace/sim-case-catalog.mjs`, `web/workspace/sim-case-loader.mjs`, `web/workspace/test_sim_case_loader.mjs`, `web/app/app.mjs`, `web/app/styles.css` |
| `S8-02` | verified:用户授权从真实 LinuxCNC 仿真执行复制 runtime fixtures;`minimal_xyz` 的 `sim.var`/生成 HAL 和 CoreXY 的 `linuxcnc.var`/`tool.tbl` 均 exact-path hash-lock;预加载 `corexykins/motmod/pid/stepgen` 与虚拟 `hal_manualtoolchange` 适配通过,两个案例 Worker startup 均达到 `TASK_READY`,未知 `loadusr` 仍 blocked | `coverage/sim-case-startup-s8-02.report.json`, `web/worker/test_sim_case_startup_s8_02.mjs`, `scripts/generate_sim_case_startup_s8_02.py`, `scripts/test_sim_case_startup_s8_02.py`, `web/workspace/hal-configuration.mjs`, `web/workspace/sim-case-loader.mjs` |
| `S8-03` | verified:真实执行 `xz.ini`、`xz_both.ini`、`xz_both_auto.ini` 取得 `xz.var` 和三份生成 HAL fixture;同案例 `xz.tbl` 精确复用;三案 Worker startup 均 `TASK_READY`、HAL blocked_count=0,identity/BOTH/AUTO state hash 分别保留 | `coverage/sim-case-batch-s8-03.report.json`, `web/worker/test_sim_case_batch_s8_03.mjs`, `scripts/generate_sim_case_batch_s8_03.py`, `scripts/test_sim_case_batch_s8_03.py` |
| `S8-04` | verified:minimal_xyz 真实 fixture 达到 TASK_READY;固定 tick 覆盖 Home/Jog/override、G-code Run/Pause/Resume/Abort/Restart、MDI、estop/recover 和 checkpoint recovery endpoint parity;前端 AppShell/state panel/machine view 继续消费 Worker 权威状态 | `coverage/minimal-xyz-vertical-s8-04.report.json`, `web/worker/test_minimal_xyz_vertical_s8_04.mjs`, `scripts/generate_minimal_xyz_vertical_s8_04.py`, `scripts/test_minimal_xyz_vertical_s8_04.py` |
| `S8-05` | verified:`corexy_by_kins.ini` 与 `corexy_by_hal.ini` 均使用真实 fixtures 达到 TASK_READY;同一 pose `[4,2,3]` 映射 joints `[6,2,3]`,HAL records 72/100,1x/fast/recovery parity 均通过;kins path 与 HAL-trivkins transform path 保持明确区分,未知 HAL 命令仍 fail-closed | `coverage/corexy-dual-path-s8-05.report.json`, `web/worker/test_corexy_dual_path_s8_05.mjs`, `scripts/generate_corexy_dual_path_s8_05.py`, `scripts/test_corexy_dual_path_s8_05.py`, `web/workspace/hal-configuration.mjs` |
| `S8-06` | verified:235 个真实 `configs/sim` 案例全部执行 exact-path loader/startup 两次;分类为 TASK_READY=7、BLOCKED_RESOURCE=221、BLOCKED_HAL=4、BLOCKED_INI=3;每案保留 fixture、missing、first diagnostic、resource/HAL counts 和 deterministic state hash,不把 blocked 提升为 ready | `coverage/sim-case-matrix-s8-06.report.json`, `web/worker/test_sim_case_matrix_s8_06.mjs`, `scripts/generate_sim_case_matrix_s8_06.py`, `scripts/test_sim_case_matrix_s8_06.py` |
| `S8-07` | verified:从真实 INI/include declarations 生成 235-case display family catalog;Axis 85、QtVCP 61、Gscreen 14、VisMach 21、GladeVCP 6、Touchy 6、PyVCP 5、other 37;AppShell 按案例显示 family capabilities/host plugin boundaries,未改变 Worker 权威状态或 blocked 语义 | `coverage/sim-display-families-s8-07.report.json`, `web/app/sim-display-families.mjs`, `web/app/display-family.mjs`, `web/app/test_display_family_s8_07.mjs`, `scripts/generate_sim_display_families_s8_07.py`, `scripts/test_sim_display_families_s8_07.py` |
| `S8-08` | verified:ldelta/rdelta 真实案例通过 HALLIB exact resolution、sim.var/sim.tbl fixtures、lineardelta/rotarydelta virtual adapters;nominal joints `[300,300,300]`/`[10,10,10]`、1x/fast/recovery parity 和 TASK_READY 通过,official oracle 与其它机床族边界保留 | `coverage/machine-families-s8-08.report.json`, `web/worker/test_machine_families_s8_08.mjs`, `scripts/generate_machine_families_s8_08.py`, `scripts/test_machine_families_s8_08.py` |
| `S8-09` | verified:10 个真实 Worker runtime extension runners 全部通过,覆盖 remap/O-word/filter、Python callbacks、tool/probe/IO ack、virtual devices 和 PLC;固定 tick、能力拒绝和 recovery/ack 边界保留,host Python/dynamic loader 不被误报为浏览器 parity | `coverage/runtime-extensions-s8-09.report.json`, `scripts/generate_runtime_extensions_s8_09.py`, `scripts/test_runtime_extensions_s8_09.py` |
| `S8-10` | blocked(正式停止条件):新增最终 235-case acceptance 聚合;WASM/native/Worker/App 构建与回归 72/72 通过,10 个案例 TASK_READY、225 个案例保留 resource/HAL/INI/STARTUP blockers,display/machine family 与 runtime extension 证据已汇总;official full LinuxCNC oracle 仍 source-gated,Chromium/Firefox/Safari minimums 仍 TBD/Safari unavailable;implementation coverage=verified、acceptance=blocked、`STOP_RELEASE`,不宣称 LinuxCNC 全功能 release | `coverage/full-case-acceptance-s8-10.report.json`, `scripts/generate_full_case_acceptance_s8_10.py`, `scripts/test_full_case_acceptance_s8_10.py`, `nextTask1.md` |
| `FE-M1-REACT` | verified:按技术路线新增 React 19/TypeScript/Vite/Tailwind/Radix/Three.js 前端入口;Dedicated Worker/WASM bundle、protocol.v1 reducer、exact-path `configs/sim` loader、LinuxCNC AXIS source icons 和 Three.js r185 三轴 viewer 通过 typecheck/build/preview;OPFS 仍 Worker-owned | `coverage/react-frontend-m1.report.json`, `web/react`, `scripts/generate_react_frontend_m1.py`, `scripts/test_react_frontend_m1.py` |
| `FE-M4-GUI-01` | verified:扫描 LinuxCNC AXIS/Gmoccapy/Touchy/Gscreen/QtVCP/PyVCP/GladeVCP/Vismach/NGCGUI/QtPlasmaC 等 GUI 源码、Python 库、sim descriptors/assets,1837 条文件记录、12 个 family、source hash/path 通过;341 条 manifest 反向归属缺口保留审计,许可证不阻塞技术移植 | `coverage/gui-source-inventory-fe-m4.report.json`, `scripts/generate_gui_source_inventory.py`, `scripts/test_gui_source_inventory.py`, `nextTask1.md` |
| `FE-M4-GUI-02` | verified:集中 React GUI domain model,定义 12 family、23 个 protocol.v1 Worker command、panel/capability/boundary 映射;PY-WASM、SIM-DEVICE、WEB-EQUIV、REAL-EXCLUDED 和 Worker/OPFS ownership 均有 contract evidence | `coverage/react-gui-domain-fe-m4.report.json`, `web/react/src/gui-domain.ts`, `scripts/generate_react_gui_domain_report.py`, `scripts/test_react_gui_domain_report.py` |
| `FE-M4-GUI-03` | verified:对照 LinuxCNC AXIS/Gremlin/glcanon 完成 React AXIS Web-equivalent workflow;program/MDI/run/pause/step/restart/abort/jog/home/override/spindle/tool/probe/coolant/estop/recover/DRO/Three.js 由 Worker 驱动,minimal_xyz Worker regression 和 React build 通过 | `coverage/axis-web-workflow-fe-m4.report.json`, `web/react/src/App.tsx`, `web/react/src/worker-client.ts`, `scripts/generate_axis_web_workflow_report.py`, `scripts/test_axis_web_workflow_report.py` |
| `FE-M4-GUI-04` | verified:将 Gmoccapy/Touchy/Gscreen/QtVCP/QtDragon/PyVCP/GladeVCP/Vismach/NGCGUI/QtPlasmaC/Plasma 转为 family descriptor;Web Component、Three.js、PY-WASM 和 REAL-EXCLUDED 边界集中定义,12 family contract 通过 | `coverage/gui-family-adapter-fe-m4.report.json`, `web/react/src/gui-family-adapter.ts`, `scripts/generate_gui_family_adapter_report.py`, `scripts/test_gui_family_adapter_report.py` |
| `FE-M4-GUI-05` | verified:建立 vismach/glcanon/NGCGUI/QtPlasmaC 的 Three.js visual workflow mapping;pose/joints/toolpath/stock/material/torch 只读 Worker snapshot,PY-WASM/真实硬件边界保留 | `coverage/gui-visual-workflow-fe-m4.report.json`, `web/react/src/visual-workflow.ts`, `scripts/generate_gui_visual_workflow_report.py`, `scripts/test_gui_visual_workflow_report.py` |
| `FE-M4-GUI-06` | blocked(正式停止条件):现有 Chromium production preview desktop/mobile DOM、截图、Three.js canvas smoke verified;三浏览器 minimum matrix仍 TBD,Safari/Firefox 和 OPFS recovery 保持 blocked/STOP_RELEASE,不把 Chromium smoke 误报为全 GUI release | `coverage/gui-browser-visual-fe-m4.report.json`, `scripts/generate_gui_browser_visual_report.py`, `scripts/test_gui_browser_visual_report.py`, `nextTask1.md` |
| `REAL-CASE-CONDITIONS-01` | 真实 LinuxCNC `linuxcnc -r` 临时目录执行 verified:minimal_xyz 和 CoreXY 均进入真实 TASK tick;当前环境使用 `linuxcnc-uspace 2.10.0~pre1`、非 `PREEMPT_RT` 内核的 POSIX fallback、X11 DISPLAY;CoreXY 缺 tool.tbl 时出现官方 tool-table error,补入临时 linuxcnc.var/tool.tbl 后持续运行;参数文件会在可写目录中生成/更新,临时 fixture 不纳入 source parity | `coverage/native-linuxcnc-case-conditions.report.json`, `scripts/generate_native_linuxcnc_case_conditions.py`, `scripts/test_native_linuxcnc_case_conditions.py`, `linuxcnc/docs/src/getting-started/system-requirements.adoc` |
| `CASE-PARITY-PLAN-01` | 建立以真实 `configs/sim` 案例为中心的 S8-03..S8-10 执行队列;定义每案例 native/Worker/frontend parity contract、资源生成条件、Axis/QtVCP/Gscreen/Touchy/GladeVCP/PyVCP/VisMach 家族和 235-case full acceptance;S8-02 blocker 未被绕过 | `docs/linuxcnc-web-wasm-case-parity-plan.md`, `nextTask1.md` |
## 追溯规则
- 需要精确命令时读取对应提交或 CI 产物,不把完整 stdout/stderr 粘贴进任务指针。
- 需要验证哈希时读取 `context-lock.json` 和相应 `coverage/*.report.json`;二进制和大型 JSONL 默认不进入模型上下文。
- 新交接只替换当前节点摘要;旧摘要保留在本索引或版本历史中,不能累积到指针文件。