Files
workinf_Blender_Wasm/docs/status/M10-03.md
mes123456 0fe8d2bb56
Some checks are pending
M6 deployable RC / quick (push) Waiting to run
M6 deployable RC / chromium (push) Blocked by required conditions
M6 deployable RC / release (push) Blocked by required conditions
Advance M8-M11 parity workflows
2026-08-17 04:37:07 -04:00

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 position 1e-6, Float point attribute 1e-6, and bounds 1e-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 --check passed.

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_UNSUPPORTED without 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.