52 lines
2.7 KiB
Markdown
52 lines
2.7 KiB
Markdown
# M10-01 Status
|
|
|
|
status: done
|
|
task: 从 Blender Main 读取 Geometry Nodes 图拓扑、socket 默认值、link 和稳定 node ID
|
|
updated: 2026-08-16 America/New_York
|
|
|
|
## Scope
|
|
|
|
The WebEngine authoritative Main reader publishes a bounded `GeometryNodeGraphIR`
|
|
snapshot for every `GeometryNodeTree`. It preserves unsupported nodes as metadata,
|
|
uses Blender node identifiers and socket identifiers rather than display names, and
|
|
does not evaluate Geometry Nodes. The existing `web/protocol/schema-version` remains
|
|
`1`: `geometryNodeGraphs` is an additive optional SceneIR field and no existing field
|
|
meaning or persisted storage schema changed.
|
|
|
|
## Evidence
|
|
|
|
- Fixture: `tests/files/web/modifier_geometry_nodes_scene.blend`.
|
|
- Fixture SHA-256: `f3820511f791769837d75be092934130c397cf46ee0acf79db28efca9a7948c9`.
|
|
- Desktop reference: `tests/golden/W-075/modifier_geometry_nodes_scene.json`.
|
|
- Desktop reference SHA-256: `93c21e5158daefce10f2d4df674e636bf3f6ed3dd43e1576c45a02a8592f5886`.
|
|
- Golden manifest: `tests/golden/M10-01/geometry-node-main-reader.json`.
|
|
- Protocol/unit check: `node --test web/tests/unit/geometry-nodes.test.mjs` (3/3).
|
|
- Native/WASM reader check: `node tools/web/check-geometry-node-main-reader.mjs`;
|
|
3 graphs, 10 nodes, 7 links, 9 defaults, stable IDs, graph hashes, desktop
|
|
comparison, save/reopen and unsupported Simulation-node preservation all passed.
|
|
- Chromium Worker check: `WEB_TEST_PORT=5440 npm --prefix web run test:geometry-node-main-reader`
|
|
(unit 3/3, reader 1/1, Chromium 1/1).
|
|
- `source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine -- -j8`:
|
|
passed (`ninja: no work to do`).
|
|
- `npm --prefix web run typecheck`, `npm --prefix web run lint`,
|
|
`npm --prefix web run build`, and `git diff --check`: passed.
|
|
|
|
## Contract
|
|
|
|
- Per-graph budgets are fixed at 4,096 graphs, 4,096 nodes, 16,384 links,
|
|
65,536 node sockets, and 4,096 interface sockets.
|
|
- Graphs, nodes, links, and socket arrays are deterministically ordered before the
|
|
graph SHA-256 is emitted.
|
|
- Socket data types and finite defaults are read from Blender's native `bNodeSocket`
|
|
storage; ID-valued defaults are serialized as stable typed IDs.
|
|
- `__extend__` sockets are omitted because they are UI extension sockets, not graph
|
|
data. Missing/duplicate identifiers, invalid links, and budget overflow fail closed.
|
|
- Unsupported node types remain in the graph and are available to the later M10-02
|
|
allowlist gate; this task does not claim Geometry Nodes evaluation.
|
|
|
|
## Rollback
|
|
|
|
Remove the M10-01 reader, protocol field, golden, unit/E2E checks, package script and
|
|
this status file together. Existing SceneIR consumers continue to accept snapshots
|
|
without the optional `geometryNodeGraphs` field.
|