Implement configuration, runtime, frontend, and task governance closure
This commit is contained in:
@@ -249,10 +249,10 @@ OPFS 只保存已提交工程、journal、checkpoint、日志和可删除缓存
|
||||
|
||||
## 11. 当前立即执行顺序
|
||||
|
||||
1. 按 `nextTask.md` 执行 `K0-INV-01`,处理旧 `M2-CORE-04` 的 kinematics 输入阻塞,先确认锁定提交中不存在声明路径,并保留报告。
|
||||
2. 若要采用替代 oracle,先创建可审查的契约变更和新的 context lock;否则保持 blocked,不推进 HAL 节点。
|
||||
3. 在 kinematics 契约闭合后,完成静态模块注册、`forward/inverse/limits` ABI、确定性状态哈希和失败路径测试。
|
||||
4. 继续 `M2-CORE-05` 前,先让 native runner、WASM runner 和 `sim_step` 共享同一 tick/golden schema。
|
||||
5. 只有 M2 核心条目达到 `verified`,才进入 HAL/数字孪生/OPFS 恢复;只有 M3 通过,才把 mock UI 替换成真实 Worker 工作流。
|
||||
1. 按 `nextTask.md` 执行 `M3-CFG-01`,把 264 个仿真配置入口和 16,093 条资源边从静态索引推进为确定性启动解析;保留 missing/unresolved/host path,禁止静默同名替换。
|
||||
2. 完成 `M3-RT-02`,将 HAL pin/signal/thread/function、`.comp` 元数据和配置图接入可执行 preflight;运动学只作为已完成的注册/调用依赖,不再重复解析。
|
||||
3. 完成 `M3-RT-03`,把 spindle/tool/probe/limit/estop 数字孪生接入 Worker command path,并让故障注入可录制、回放和恢复。
|
||||
4. 完成 `M3-FS-01` 与 `M3-PY-01`,将 workspace recovery/migration 和实际 Pyodide 虚拟 API 接入真实 session;保持现有 schema 和宿主能力拒绝契约。
|
||||
5. 完成 `FE-M1` 最小真实前端垂直切片,再运行 `REG-01/03/04` 的配置、恢复、浏览器和性能矩阵;K8 release owner blocker 只在真实 owner 输入或新 lock context 到位后单独刷新。
|
||||
|
||||
本文件完成的是实施规则和证据闭环,不改变当前任务指针,也不把尚未实现的 LinuxCNC 功能标为完成。
|
||||
|
||||
43
docs/linuxcnc-web-wasm-next-work.md
Normal file
43
docs/linuxcnc-web-wasm-next-work.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# LinuxCNC Web/WASM 后续工作基线
|
||||
|
||||
更新时间:2026-08-21
|
||||
|
||||
## 当前判断
|
||||
|
||||
运动学实现主线 K0-K6 已完成代码和 native/WASM 回归:trivkins、耦合运动学、5 轴/TRT、机器人、GenSer、Delta、Tripod、Hexapod、Pentapod、switchkins、userk/registry、TP→IK→motion、FK feedback、home/limit 均已有实现、ABI、固定边界和测试产物。对应报告仍为 `partial` 或 `blocked` 的原因是锁定 LinuxCNC 来源没有 `linuxcnc/unit_tests/kinematics/**` 官方 oracle;这限制发布验收,不应继续重复实现运动学解析。
|
||||
|
||||
已验证的其它基础包括:posemath、解释器、motion queue、HAL 核心、IO 核心、Worker protocol、replay、workspace recovery/migration、Python runtime manifest 和 native CTest。当前仓库没有前端应用壳,也没有把 INI/HAL 资源图接入真实 Worker 启动路径。
|
||||
|
||||
发布状态仍为 `blocked_not_release_candidate`/`STOP_RELEASE`。六项发布 blocker(manifest ownership、accepted entries、official oracle、configuration resources、browser matrix、implementation license)必须保留;owner review 是外部输入,不再作为当前开发任务反复重跑。
|
||||
|
||||
## 执行顺序
|
||||
|
||||
| 顺序 | 任务 | 目标 | 主要产物 | 依赖 |
|
||||
|---|---|---|---|---|
|
||||
| 1 | `M3-CFG-01` | 已完成:把 INI/HAL/资源引用从静态索引推进到确定性启动解析;支持相对路径、`LIB:`、参数尾缀、目录和变量/宿主路径的显式错误 | `web/workspace/configuration.mjs`、`coverage/configuration-startup-closure.report.json`、生成器和单测 | 当前 config graph/resource index |
|
||||
| 2 | `M3-RT-02` | 已完成:将 HAL pin/signal/thread/function 和 `.comp` 元数据接成可执行配置图,保留类型、重复注册、周期和失败边界 | `coverage/hal-component-manifest.report.json`、HAL preflight、native/WASM/Worker test | `M3-CFG-01`、`sim_hal` |
|
||||
| 3 | `M3-RT-03` | 已完成:将 spindle、tool、probe、limit、estop 数字孪生接入 Worker command path,并让故障注入可录制/回放 | `coverage/virtual-device-fault-matrix.report.json`、event/state golden、Worker tests | `M3-RT-02`、`sim_io` |
|
||||
| 4 | `M3-FS-01` | 已完成:将 workspace recovery/migration 从独立模块接入真实 session 和配置加载,验证 OPFS 适配边界 | `coverage/workspace-session-integration.report.json`、Worker workspace integration report | `M3-CFG-01`、M3-RT-02/03、现有 recovery/migration |
|
||||
| 5 | `M3-PY-01` | 已完成:用固定 Pyodide artifact 建立实际 Worker bridge;虚拟 `linuxcnc`/`hal`/`INI` API 和宿主能力拒绝路径可执行 | `coverage/python-worker-bridge.report.json`、Worker tests | `M3-CFG-01`、FS-01 |
|
||||
| 6 | `FE-M1` | 已完成:建立最小真实前端垂直切片:AppShell、WorkerClient、工程加载、能力协商、step/snapshot/error | `coverage/frontend-m1.report.json`、`web/app`、browser smoke/e2e report | protocol v1、M3-CFG-01、Worker |
|
||||
| 7 | `FE-M2` | 已完成:核心操作 controls 和权威状态面板 | `coverage/frontend-m2.report.json`、browser operation smoke、state panel report | FE-M1、M3-RT-03 |
|
||||
| 8 | `FE-M3` | 项目和恢复工作流:导入/导出、journal/checkpoint、Worker 重启恢复、离线冲突状态 | `coverage/frontend-m3.report.json`、project/recovery browser smoke | FE-M2、M3-FS-01 |
|
||||
| 9 | `FE-M4` | 已完成:HAL/tool/IO/3D frontend workflows | `coverage/frontend-m4.report.json`、device/HAL/machine browser smoke | FE-M3、M3-RT-02/03 |
|
||||
| 10 | `REG-01` | 运行 233 个 sim entrypoint 的启动矩阵,分类 ready/blocked/error 并生成首个差异定位 | full configuration matrix report | M3-CFG-01..03、M3-PY-01、FE-M4 |
|
||||
| 10 | `REG-03/04` | 完成恢复、断网、浏览器和性能矩阵;再回到 K8 release gate | recovery/browser/performance reports | FE-M1、REG-01 |
|
||||
|
||||
## 当前任务边界:REG-01
|
||||
|
||||
允许创建全配置 startup matrix 生成器、结果分类和 source/resource/component 差异定位测试;不修改 kinematics 算法、ABI/protocol/schema/context lock,不替 owner 作许可证、浏览器或官方 oracle 决定。
|
||||
|
||||
完成条件:
|
||||
|
||||
- M3-CFG/RT/FS/PY、FE-M1..M4 已完成;当前执行 233 个 sim entrypoint 全量启动矩阵。
|
||||
- 矩阵必须保留每个 blocked/error source ID,不得删除样本或把资源/组件阻断重分类为 REAL-EXCLUDED。
|
||||
- native CTest、Worker replay/recovery/migration 和全部脚本单测保持通过,六项发布 blocker 与 `STOP_RELEASE` 不被清除。
|
||||
|
||||
## 不再重复的工作
|
||||
|
||||
- 不重新实现 K0-K6 运动学解析或重新生成同一组 blocked oracle 报告。
|
||||
- 不因官方 oracle 缺失而伪造 golden、把派生 fixture 标为官方输入或升级 `accepted`。
|
||||
- 不因 owner 输入缺失而循环刷新 K8-REL-16;收到真实 owner decision 或新 lock 输入时再单独创建 release context。
|
||||
45
docs/linuxcnc-web-wasm-task-map.md
Normal file
45
docs/linuxcnc-web-wasm-task-map.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# LinuxCNC Web/WASM 任务地图
|
||||
|
||||
更新时间:2026-08-21
|
||||
|
||||
## 任务分层
|
||||
|
||||
### 已完成实现主线
|
||||
|
||||
| 任务 | 证据 | 结论 |
|
||||
|---|---|---|
|
||||
| `M3-CFG-01` | `coverage/configuration-startup-closure.report.json` | 16,093 条资源全部分类;15,112 resolved、981 blocked;`LIB:`/路径/host path 策略确定性 |
|
||||
| `M3-RT-02` | `coverage/hal-component-manifest.report.json` | 145 `.comp`、1,220 pins、140 params、530 functions、4,566 HAL graph records |
|
||||
| `M3-RT-03` | `coverage/virtual-device-fault-matrix.report.json` | 26 个虚拟设备故障/replay 场景,连续与重放 hash 一致 |
|
||||
| `M3-FS-01` | `coverage/workspace-session-integration.report.json` | 配置/HAL/设备/session checkpoint、recovery、package migration 闭合 |
|
||||
| `M3-PY-01` | `coverage/python-worker-bridge.report.json` | Worker-only Python bridge、虚拟 API、宿主能力拒绝、Python checkpoint/replay |
|
||||
| `FE-M1..M4` | `coverage/frontend-m1.report.json` 到 `frontend-m4.report.json` | AppShell、WorkerClient、controls、state/recovery、device/HAL/machine view |
|
||||
| `REG-01` | `coverage/full-configuration-startup-matrix.report.json` | 264 registered entries、233 entrypoints,56 ready、208 blocked |
|
||||
| `REG-03` | `coverage/recovery-offline-fault-matrix.report.json` | half-commit、坏 checkpoint、event gap、offline missing/network-required |
|
||||
| `REG-04` | `coverage/browser-performance-matrix.report.json` | 当前范围仅 Chromium;Firefox/Safari `out_of_scope`;稳定资源性能样例 |
|
||||
|
||||
这些任务的 `implementation_status` 均为 `verified`。报告整体为 `partial` 是因为配置资源、官方 oracle 或 release gate blocker 仍真实存在,不代表实现代码未完成。
|
||||
|
||||
### 外部输入阻塞
|
||||
|
||||
K8 release gate 当前仍是 `candidate_eligible=false`、`STOP_RELEASE`,六项 blocker 不由本地代码自动解决:
|
||||
|
||||
- manifest feature owner 尚未批准;
|
||||
- 没有 accepted release entries;
|
||||
- 锁定来源没有官方 kinematics/recovery oracle;
|
||||
- 配置资源仍有 missing/unresolved/unindexed rows;
|
||||
- browser minimum/context policy 尚未 owner 锁定;当前实现矩阵只测试 Chromium;
|
||||
- 57 个 Web/WASM 条目没有批准 SPDX/NOTICE 决定。
|
||||
|
||||
`coverage/owner-review-gate-refresh.report.json` 明确记录 `owner_inputs=0` 和 `gate_refresh=blocked`。在真实 owner decision 或新 context lock 到位前,不得创建新 context、刷新 gate、清除 blocker 或重复执行同一 release retry。
|
||||
|
||||
### 正确接续
|
||||
|
||||
当前本地可执行任务是 `GOV-01`:生成一次任务图和 blocker readiness 审计,确认已完成实现不会被重复认领,确认 release wait 是单向 external wait。完成后进入 `WAIT-OWNER-01`,该节点没有自动重试;只有收到外部输入才重新打开 K8 release task。
|
||||
|
||||
## 不允许的状态转换
|
||||
|
||||
- `partial`/`blocked oracle` 不得改成 `accepted`。
|
||||
- `WAIT-OWNER-01` 不得自动转回 `K8-REL-17`。
|
||||
- Firefox/Safari 不得因为当前 out-of-scope 而被伪装成已验证;历史 K8 browser audit 保持只读证据。
|
||||
- context lock 不得就地覆盖;源、schema、manifest 或 owner 决策变化必须建立新 context。
|
||||
@@ -64,6 +64,18 @@
|
||||
| `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` |
|
||||
| `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` |
|
||||
|
||||
## 追溯规则
|
||||
|
||||
|
||||
Reference in New Issue
Block a user