Files
workinf_Blender_Wasm/docs/status/N-012.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

4.0 KiB
Raw Blame History

N-012 Geometry Nodes 与 Simulation

状态:in_progress资源/Simulation cache 安全层)

详细分解、GraphIR、字段/实例闭包、deterministic simulation cache、错误码和验收命令见 docs/UNDECLARED_CAPABILITIES_EXECUTION_PLAN.md

本轮已交付版本化 GeometryNodeGraphIR、node/socket/link/domain 校验、支持节点白名单、 循环依赖和自递归 group 检测。Object/Collection/Image Info 资源现在按 SceneIR stable ID、 资源类型、owner cycle 和 linked/missing/corrupt 沙箱校验。保存于 Blender Main 的 allowlist 图已启用有界 native evaluator任意图写回仍返回 CAPABILITY_MISSING

M10-01 已把真实 Blender Main 图拓扑、socket 默认值、link 和稳定 node/socket ID 发布到 SceneIRM10-02 将 16 项 allowlist 固定为 schema 1。M10-03 用 11 个 Blender 5.2 desktop fixture 覆盖全部 16 项节点,并在 Node full-Main WASM 与 Chromium Worker 打开、求值、保存、 重开路径逐项比较 topology、position、bounds 和 point float attribute。当前误差为 0门限为 position max 1e-5/RMS 1e-6、attribute 1e-6、bounds 1e-5。真实 Simulation Zone 节点 仍返回 GN_NODE_UNSUPPORTED 并保留原图、graph hash 和 Main revision。

M10-04 已冻结 field materialization schema 1POINT/EDGE/FACE/CORNER/CURVE/INSTANCE/LAYER 分别具有元素上限,单批最多 64 fields、32 次 domain conversion、4,000,000 个目标元素和 64 MiB单 field 超过 65,536 scalar 时禁止 JSON transport。Depsgraph 的真实 point Float attribute 回执携带 schema、domain cardinality、元素/scalar/byte 数并与 payload 交叉校验; 基数漂移、字节漂移、隐藏 JSON 数组和未知 domain 均 fail-closed。

M10-05 将 SimulationCacheManifestIR 升为 schema 2加入 committed sourceRevision 和可由 graph ID/hash、source blend hash、source revision、input hash、Blender 版本及 frame range 复算的完整 revisionHash。cache key 不再截取 hash 前缀,而是 sim2- 加完整 revision hash Storage Worker 的 put/read/frame/list 均在 project lock 内核对当前 committed revision/hash旧 revision 只保留在存储中、不进入当前列表且显式读取返回 SIMULATION_CACHE_REVISION_MISMATCH。 manifest/frame 未声明字段、legacy schema、graph/source/input/range 漂移均 fail-closed。

SimulationCacheManifestIR 已绑定 graph/source blend/input/revision hash、Blender 5.2、完整帧范围、 连续 byte range、总 payload 和逐帧 SHA-256。StorageWorker schema 7 使用 OPFS 内容寻址资产、 simulation_manifest 索引和 simulation_quarantine 隔离 store写入前核对当前 committed blend。 每个 Worker 生命周期必须先完整复验 cache 才允许逐帧播放;播放/写入支持 AbortSignal取消不发布 manifestLRU 按 lastAccessAt/createdAt/cacheKey 确定性淘汰并保护 active playbackWorker 重启 重新验证manifest 或 payload 损坏会从可播放索引移入 quarantine列表仍返回其他有效 cache。

M10-15 为 GN 和 Simulation 分别增加隔离 Chromium Worker 门GN 以 10 次 512-node parse/validate、超 node budget 和 dependency cycle 覆盖性能/OOM-prevention/恶意输入Simulation 以 64 帧逐帧 hash、16 GiB+1 manifest 和未声明字段覆盖同三类门。两域均在失败后由同 Worker 完成小输入恢复。

仍未声明:任意 field/domain 实际求值、完整 lazy-function runtime、图写回、浏览器生成 bake、 WASM Simulation Zone 求值、cache frame seek 接入 GN modifier 和任意实例图。验收: npm --prefix web run test:geometry-node-evaluator-goldennpm --prefix web run test:geometry-node-field-budgetnpm --prefix web run test:simulation-cache-identitynpm --prefix web run test:simulation-cachenpm --prefix web run test:simulation-cache-performancenpm --prefix web run test:simulation-cache-lifecyclenpm --prefix web run test:capability-gatesnpm --prefix web run test:m10-domain-gates