# Web Blender 全功能缺口盘点 盘点基线:`tests/golden/WBV2/dynamic-inventory.json`、 `tests/golden/WBV2/dynamic-coverage-bindings.json`、当前 WebEngine 协议/能力注册表。 ## 当前结论 直接 WebEngine 命令已经全部进入协议和原生分发:`96/96 web-command` 均有绑定。节点注册也已完成共享 reader 覆盖:`497/497 node`。因此 `16/16` 工作流完成只表示产品主路径已接通,不表示 Blender 的所有用户能力 已经迁移。 当前仍未绑定的源单元: | 类型 | 总量 | 已绑定 | 未绑定 | 处理策略 | | --- | ---: | ---: | ---: | --- | | 编辑器 operator | 2018 | 31 | 1987 | 按用户能力批量迁移;窗口/屏幕/文件浏览器改用 Web 等价流程 | | RNA struct | 979 | 306 | 673 | 建立 Main 数据块反射/读写批次,先覆盖用户可编辑数据 | | node | 497 | 497 | 0 | 共享图 reader 已覆盖,后续只补具体用户入口缺口 | | modifier source | 97 | 95 | 2 | 将剩余 modifier 接入统一栈参数模型 | | operator macro | 58 | 0 | 58 | 拆解为已有原生命令组合,不复制桌面上下文 | | WebEngine command | 96 | 96 | 0 | 保持现有协议/Worker/Main 契约 | ## Operator 缺口热点 未绑定 editor operator 按源码注册文件聚合后的最大缺口: | 源码区域 | 数量 | 后续批次 | | --- | ---: | --- | | `editors/object/object_ops.cc` | 212 | OBJECT-EDITOR-COVERAGE | | `editors/mesh/mesh_ops.cc` | 140 | MESH-EDITOR-COVERAGE | | `editors/space_sequencer/sequencer_ops.cc` | 98 | SEQUENCER-COMPOSITOR-COVERAGE | | `editors/physics/physics_ops.cc` | 82 | PHYSICS-SIMULATION-COVERAGE | | `editors/curve/curve_ops.cc` | 78 | CURVE-SURFACE-COVERAGE | | `editors/armature/armature_ops.cc` | 77 | ARMATURE-EDITOR-COVERAGE | | `editors/space_clip/space_clip.cc` | 77 | TRACKING-MASK-COVERAGE | | `editors/space_node/node_ops.cc` | 77 | SEQUENCER-COMPOSITOR-COVERAGE | | `editors/space_outliner/outliner_ops.cc` | 73 | ASSET-LIBRARY-COVERAGE | | `editors/sculpt_paint/paint_ops.cc` | 69 | SCULPT/PAINT follow-up | | `editors/space_graph/graph_ops.cc` | 66 | ANIMATION-FCURVE-DRIVER-COVERAGE | | `editors/space_view3d/view3d_ops.cc` | 63 | OBJECT/MESH/RENDER batches | | `editors/render/render_ops.cc` | 50 | RENDER-CAMERA-LIGHT-COVERAGE | | `editors/uvedit/uvedit_ops.cc` | 48 | MESH-EDITOR-COVERAGE | | `editors/grease_pencil/**` | 42 | GREASE-PENCIL-COVERAGE | Window manager, screen, interface, text editor and native file-browser operators remain explicit browser/OS boundaries. They are not claimed as missing Web features when a browser-native equivalent exists. ## Implementation order 1. User-visible authoring gaps that reuse existing Main transactions: object, mesh, curve, armature, animation, sequencer, physics. 2. Browser-native media/data workflows: tracking, masks, Grease Pencil, render, asset libraries and interchange. 3. Generic RNA reflection for the remaining data-block fields. 4. Macro decomposition and operator catalog expansion only where a real Web workflow exists; no arbitrary desktop-context emulation. Verification remains incremental and deferred to user operation. No completion claim is made from inventory counts alone. ## Source-unit route dashboard `featureRouteCoverage` publishes the complete route assignment for the current 3,745-unit source inventory. `featureRouteGaps` publishes route-assignment gaps, unavailable units, and the separate behavioral-evidence gap. The scheduler JSON summary exposes both command names under `progress`; its text view prints the same category counts. | execution route | source units | production boundary | | --- | ---: | --- | | `WEB_MAIN` | 1,698 | typed native Main/WASM or shared reflection route | | `SERVER_NATIVE` | 1,613 | bounded Blender background operator job | | `BROWSER_EQUIVALENT` | 434 | browser-native replacement for desktop UI/context | | `UNAVAILABLE` | 0 | no Web platform equivalent | | **total** | **3,745** | all source units have an explicit route classification | Route assignment is complete. Existing exact evidence remains `1,025` verified units, while `2,720` units retain explicit `UNVERIFIED` behavioral evidence until real user operation exercises the declared route. The dashboard does not convert classification into a completion claim. `WEB_MAIN` behavior must continue through existing typed Blender Main/WASM commands, and `SERVER_NATIVE` behavior through bounded Blender jobs.