# M10-02 Status status: done task: Geometry Nodes allowlist 与未支持节点无损阻断 updated: 2026-08-16 America/New_York ## Scope `GEOMETRY_NODE_ALLOWLIST_SCHEMA` and `GEOMETRY_NODE_ALLOWLIST` freeze the only node types that may proceed past the Geometry Nodes protocol gate. The gate validates the complete graph before any Main writer call. A node outside the list returns `GN_NODE_UNSUPPORTED`; a structurally valid allowlisted graph still returns `CAPABILITY_MISSING` from the production Worker until its evaluator and desktop/WASM golden are completed by M10-03. Neither failure mutates Main or replaces the graph read by M10-01. ## Allowlist Schema 1 contains 16 node types: Group Input/Output, Transform Geometry, Set Position, Join/Separate Geometry, Realize Instances, Store Named Attribute, integer/ vector input, Value, Compare, Math, and Object/Collection/Image Info. External resource nodes remain subject to stable-ID, missing-resource, linked-resource and owner-cycle checks. ## Evidence - Golden: `tests/golden/M10-02/geometry-node-allowlist.json`. - Fixture: `tests/files/web/modifier_geometry_nodes_scene.blend`, SHA-256 `f3820511f791769837d75be092934130c397cf46ee0acf79db28efca9a7948c9`. - `WEB_TEST_PORT=5441 npm --prefix web run test:geometry-node-allowlist`: unit 4/4 and Chromium 1/1 passed. - The real Main graph `WebGeometryNodesSimulation` preserved `GeometryNodeSimulationInput` and `GeometryNodeSimulationOutput`; an attempted graph transaction returned `GN_NODE_UNSUPPORTED` and retained the graph JSON, graph SHA-256 and Main revision. - The allowlisted `WebGeometryNodes` graph returned `CAPABILITY_MISSING` while the evaluator is still closed; it also retained graph identity and Main revision. - M10-01 regression: `WEB_TEST_PORT=5442 npm --prefix web run test:geometry-node-main-reader` passed (unit 4/4, reader 1/1, Chromium 1/1). - Full unit suite: 131/131 passed. - `npm --prefix web run typecheck`, `npm --prefix web run lint`, `npm --prefix web run build` (73 modules), and `git diff --check`: passed. ## Implementation Hashes - Protocol: `23c2289ec2acbdce0beba47c0b6539bc3f14f5a71ce29927df86cf6c705d6ec3`. - Unit: `e60933ed0f946bdaa96f5322ba8d80b26c8425c623dd6e87da33016a1592c299`. - Chromium: `ff2c838b5c16d86eff13699586a0cd1121ee1a86d5ea52d7b89c01d35632bb77`. - Golden: `471fec9c5382ab7522b6c18ab580a6926eaa59eb5a8b72d23968670b9b9ab37a`. - Production Worker: `4a65547e6b1fea16a120b4e72eb37d4d9f7c7ced4342f535796535262ff65fcc`. ## Rollback Remove the exported allowlist schema/list, M10-02 unit/E2E assertions, golden, package script and this status file together. The older private allowlist behavior is otherwise unchanged; no persisted schema migration is required.