57 lines
2.7 KiB
Markdown
57 lines
2.7 KiB
Markdown
# 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.
|