3.8 KiB
M10-03 Status
status: done task: Geometry Nodes allowlist 逐节点 Blender 5.2 desktop/WASM golden updated: 2026-08-16 America/New_York
Scope
The headless Web modifier evaluates the saved Blender Main graph only through the 16-node schema-1 allowlist. Eleven minimal Blender 5.2 fixtures make every allowlisted node affect a measured output. The same fixture is evaluated by the full-Main WASM in Node and by the production Chromium Worker before and after save/reopen.
This is a bounded constant-scalar, topology, attribute, and same-file resource closure. It does not claim arbitrary Blender field/domain conversion, complete lazy-function semantics, Geometry Nodes graph writing, linked resources, or Simulation Zones.
Coverage
- Graph boundary: Group Input and Group Output.
- Geometry: Transform, Set Position, Join/Separate Geometry, Realize Instances, and Store Named Attribute with a constant Float point-domain value.
- Scalar/vector: Integer, Vector, Value, Compare, and Math nodes on the bounded operations accepted by the native evaluator.
- Same-file resources: Object Info, Collection Info with separate children, and Image Info dimensions. Missing, recursive, linked, or otherwise unverified resources stay behind the M10-02 resource gate.
Evidence
- Fixture:
tests/files/web/geometry_node_allowlist_evaluator.blend. - Golden:
tests/golden/M10-03/geometry-node-evaluator.json. - Desktop generator:
tools/web/generate-geometry-node-evaluator-golden.py; Blender 5.2.0 LTS emitted 11 cases, and a clean temporary regeneration matched every semantic golden field after excluding output-path-dependent fixture path/hash fields. - Node full-Main WASM:
node tools/web/check-geometry-node-evaluator-golden.mjs; 16 nodes, 11 cases, maximum position error 0, RMS position error 0, and attributes passed. - Chromium:
WEB_TEST_PORT=5443 npm --prefix web run test:geometry-node-evaluator-golden; unit 4/4, Node golden 1/1, and Worker open/evaluate/save/reopen 1/1 passed. - Tolerances: maximum position
1e-5, RMS position1e-6, Float point attribute1e-6, and bounds1e-5. - M10-01 regression on port 5444 and M10-02 regression on port 5445 passed.
- Full unit suite 131/131, typecheck, lint, production build (73 modules), local
dependency checks, and
git diff --checkpassed.
Implementation Hashes
- Native evaluator:
b896c5c52a611e7a309f80ca4bf8323ccded458584f65ab8f6841df24d70cc42. - Desktop generator:
f42ba309e4935a4534eabcb8ab1978abc08d863e2d18d80a70607f31dd3a3066. - WASM checker:
76a02d4aae70a597f0c26c12de3104d56e3f1cc9fded1d4824a05d7ddc59c1b5. - Fixture:
0cb3e33df570b436e32d783eef0a6c2daad04ca5bb4ccb4f0286b3d723ff7978. - Golden:
363ae47cfb50b8c95d0a55116e8663e41d27c7aa332cffe9b702bbe9b8cbfe1c. - Chromium spec:
83b1c96518eb64bef2c8830c778a84eb13d8da0ea62c2488471ed5fefea975c8. - Full-Main WASM:
432c5c9efb03b23a506c1b8f57f0d06ee683274bbdfe415f894f0d3c29db0b77.
Contract
- Evaluation is demand-driven from the active Group Output and is capped at 4,096
node-output evaluations. Unsupported nodes, sockets, operations, cycles, or resource
states return
GEOMETRY_NODES_EVALUATOR_UNSUPPORTEDwithout claiming evaluation. - The evaluator uses Blender
GeometrySet, geometry join/realize/transform helpers, evaluated dependency graph resources, and Blender mesh attributes. Three.js does not execute or approximate Geometry Nodes semantics. - The fixture and golden inventory must cover every schema-1 allowlist entry before the check starts; missing coverage fails before numeric comparison.
Rollback
Remove the bounded evaluator expansion, M10-03 generator/fixture/golden/checker, Chromium spec, package script, and this status file together. Revert the M10 count to 2/15 and restore the previous Transform/Set Position-only modifier evaluator.