74 lines
3.8 KiB
Markdown
74 lines
3.8 KiB
Markdown
# 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.
|