Implement AXIS parity UI and execution baseline

This commit is contained in:
2026-08-23 07:28:37 +08:00
parent 1325504544
commit 06f96f85e5
463 changed files with 84893 additions and 692 deletions

View File

@@ -2,20 +2,38 @@
本仓库的目标是将 LinuxCNC `2.10.0~pre0` 的仿真行为移植到浏览器。当前已完成 posemath/TP、rs274ngc interpreter 和 fixed-tick motion queue 核心切片;这仍不是 LinuxCNC 全功能完成声明。
恢复或开始工作时,首先读取 [`nextTask.md`](nextTask.md)。它是唯一接续入口,刻意限制在 8 KiB 以内,不包含聊天记录、完整日志或历史证据。只有定位旧证据时才按需读取 [`docs/task-history.md`](docs/task-history.md) 和其中引用的产物。
完整仿真功能范围、任务分解和 M0-M8 里程碑见 [`完整仿真移植实施计划`](docs/linuxcnc-web-wasm-complete-simulation-plan.md);技术实施接续入口为 [`nextTask1.md`](nextTask1.md)。
恢复或开始工作时,首先读取 [`nextTask1.md`](nextTask1.md)。它是当前仿真轨道的唯一接续入口,刻意限制在 8 KiB 以内,不包含聊天记录、完整日志或历史证据。只有定位旧证据时才按需读取 [`docs/task-history.md`](docs/task-history.md) 和其中引用的产物。
项目整体流程、LinuxCNC 案例到 WASM/Worker/前端的映射,以及后续任务起点见
[`系统流程与后续执行基线`](docs/linuxcnc-web-wasm-system-flow-and-execution-baseline.md)。
持续认领、依赖顺序、阻塞转移和逐项验收规则见
[`连续执行计划`](docs/linuxcnc-web-wasm-continuation-plan.md)。
持续执行时只需输入“按 `nextTask1.md` 接续执行”;完整操作提示词和停止边界见
[`持续执行提示词`](docs/linuxcnc-web-wasm-autonomous-execution-prompt.md)。
## 当前状态
- LinuxCNC 来源基线:`linuxcnc/VERSION` 与 `context-lock.json`。
- 来源索引:`coverage/source-index.jsonl`,由 `scripts/generate_source_inventory.py` 生成。
- 覆盖种子:`coverage/manifest.jsonl`。所有条目初始为 `planned/needs_owner`,没有来源会被静默忽略。
- WASM ABI 骨架:`wasm-core/include/sim_api.h`;当前实现只验证生命周期、固定 tick、快照和状态导入导出。
- 前端 AppShell、真实 WorkerClient、配置/HAL preflight、虚拟设备、Python bridge 和 FE-M1..M4 初始工作流已有实现证据;真正的 LinuxCNC Task 固定 tick、完整配置启动、真实 OPFS/浏览器矩阵和全量 UI 融合仍未完成。当前正式下一任务是 `WAIT-OWNER-01`;owner 输入和新 context 后的第一个技术实现起点为 `INT-01`,详见 [`系统流程与后续执行基线`](docs/linuxcnc-web-wasm-system-flow-and-execution-baseline.md)。
- K0-K6 运动学实现主线已完成代码、ABI、固定边界和 native/WASM 回归,覆盖 trivkins、耦合运动学、5 轴/TRT、机器人、GenSer、Delta、Tripod、Hexapod、Pentapod、switchkins、userk/registry、TP→IK→motion、FK feedback、home/limit。对应报告仍可能是 `partial`,因为锁定来源没有 `linuxcnc/unit_tests/kinematics/**` 官方 oracle;这是发布验收阻塞,不是继续重复解析的理由。
- K8 配置/发布审计已生成 264 个配置注册入口、233 个 sim entrypoint 和 16,093 条资源边;当前配置启动闭包仍有 997 missing、91 unresolved、59 unindexed 和 3 unregistered startup 条目。K8 release gate 保持 `candidate_eligible=false`、`release_action=STOP_RELEASE`,六项 owner/release blocker 不得被误报为运动学未完成。
- 覆盖种子:`coverage/manifest.jsonl`。所有条目都必须保留来源、实现状态、测试和差异记录;没有来源的条目进入仿真 `BLOCKED`,不会静默忽略。
- WASM 核心和 Worker 已支持生命周期、固定 tick、快照/恢复、G-code `PROGRAM_LOAD/RUN/PAUSE/RESUME/ABORT/STEP/SEEK` 以及 `MDI_EXECUTE`;G-code 行通过 WASM `sim_interpreter_*` 执行,程序状态随 tick 返回。完整 LinuxCNC 仿真(配置全量启动、完整 TP/IK/motion 串联、HAL/Python/remap、恢复和 UI 融合)仍在持续移植,硬件驱动保持浏览器虚拟设备边界。
- 前端 AppShell、真实 WorkerClient、配置/HAL preflight、虚拟设备、Python bridge、恢复、浏览器兼容和全量回归均已有独立仿真证据。后续仿真任务只按 [`nextTask1.md`](nextTask1.md) 接续,不等待 owner 或发布审批。
- K0-K6 运动学实现主线已完成代码、ABI、固定边界和 native/WASM 回归,覆盖 trivkins、耦合运动学、5 轴/TRT、机器人、GenSer、Delta、Tripod、Hexapod、Pentapod、switchkins、userk/registry、TP→IK→motion、FK feedback、home/limit。缺少官方 oracle 的项目保留为 `BLOCKED_ORACLE`,不伪造结果,但不阻止其它仿真实现继续执行。
- 配置批量 runtime 已生成 264 个配置注册入口、233 个 sim entrypoint 和 16,093 条资源边;缺失、未解析和未索引资源均输出可定位诊断并继续作为仿真输入闭包处理。
- 路线对齐的 React 前端位于 `web/react`:React + TypeScript + Vite + Tailwind + Radix UI + Three.js,React 只通过 protocol.v1/WorkerClient 访问 Dedicated Worker;FE-M1 构建证据见 `coverage/react-frontend-m1.report.json`。
- AXIS 主界面完全对标的源程序功能清单、菜单/工具栏/状态门控、严格差异流程、任务分解和 M0-M7 验收门槛见 [`LinuxCNC AXIS 完全对标规范与执行计划`](docs/linuxcnc-axis-complete-parity-spec.md)。该文档以锁定的 `linuxcnc/share/axis/tcl/axis.tcl`、Gremlin/GLCanon、原始 bitmap 和 `configs/sim/axis` 为唯一 source oracle。
React 前端构建和预览:
```bash
cd web/react
npm install --registry=https://registry.npmmirror.com
npm run typecheck
npm run build
npm run preview -- --port 5174
```
## 重建 M0