Files
workinf_Blender_Wasm/docs/status/N-012.md
mes123456 0fe8d2bb56
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
Advance M8-M11 parity workflows
2026-08-17 04:37:07 -04:00

53 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# N-012 Geometry Nodes 与 Simulation
状态:`in_progress资源/Simulation cache 安全层)`
详细分解、GraphIR、字段/实例闭包、deterministic simulation cache、错误码和验收命令见
[`docs/UNDECLARED_CAPABILITIES_EXECUTION_PLAN.md`](../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-golden`
`npm --prefix web run test:geometry-node-field-budget``npm --prefix web run
test:simulation-cache-identity``npm --prefix web run test:simulation-cache`
`npm --prefix web run test:simulation-cache-performance``npm --prefix web run
test:simulation-cache-lifecycle``npm --prefix web run test:capability-gates`
`npm --prefix web run test:m10-domain-gates`