# 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 发布到 SceneIR;M10-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 1:POINT/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,取消不发布 manifest;LRU 按 `lastAccessAt/createdAt/cacheKey` 确定性淘汰并保护 active playback;Worker 重启 重新验证,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`。