Files
workinf_Blender_Wasm/docs/status/M10-15.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

2.9 KiB

M10-15 Status

status: done task: Browser performance, OOM-prevention and malicious-input gates for GN, Shader, NLA and Simulation updated: 2026-08-16 America/New_York

Scope

GN, Shader, NLA and Simulation now run in four isolated Chromium Worker sessions. Each session executes a representative bounded workload, rejects an over-budget input before evaluator/payload allocation, rejects a domain-specific malicious graph or manifest, and then proves that a small valid input still succeeds in the same Worker.

NLA gains explicit track/strip/string budgets and exact declared-field checks. Simulation cache total/frame/range overages now return the dedicated SIMULATION_CACHE_BUDGET_EXCEEDED code. This is a deterministic OOM-prevention gate; it does not claim that arbitrary browser heap exhaustion is recoverable inside a domain evaluator.

Evidence

  • WEB_TEST_PORT=5536 npm --prefix web run test:m10-domain-gates: Node 23/23 and Chromium 1/1. Measured Worker times were GN 54 ms (10 x 512 nodes), Shader 17 ms (100 compiles), NLA 62 ms (20 x 256 strips), and Simulation 2 ms (64 frame hashes), all below their 5/5/5/10 second gates.
  • Stable OOM/malicious codes: GN GN_GRAPH_BUDGET_EXCEEDED/ GN_DEPENDENCY_CYCLE; Shader SHADER_NODE_UNSUPPORTED/SHADER_GRAPH_CYCLE; NLA NLA_BUDGET_EXCEEDED/NLA_INVALID_STACK; Simulation SIMULATION_CACHE_BUDGET_EXCEEDED/SIMULATION_CACHE_INVALID.
  • Existing GN field budget (unit 6/6 + Chromium 1/1), Shader compiler (7/7 + 3/3), NLA operator (4/4 + 1/1), and Simulation lifecycle (6/6 + 1/1) all passed.
  • Typecheck, lint, production build (74 modules), status consistency and git diff --check: passed.

Implementation Hashes

  • web/protocol/error.ts: 88119782307cb9a61e131f2d5e2e25127256c1e68a333fc7fc3206158b8a1019
  • web/protocol/nla.ts: 96ae7cf9ca3fadbaf98ca15a38937329f203b0bc4a9c39ef685987e7f55353dd
  • web/protocol/simulation-cache.ts: a1302e42129420a96416e363cbc857d082d4646655685520c9e81f877ce3d9b8
  • web/tests/unit/nla.test.mjs: e11aa1f395970613cee5d37a9eb21c3fac3422f0080c75c78eb8777effb77adc
  • web/tests/unit/simulation-cache.test.mjs: 2be82cdda991b47fbf8955cfbf2f92cb1fdc7b7c0debb0c8102d4f35e8fce8e3
  • web/app/src/workers/m10-domain-gate-test.worker.ts: bc508e1c81ca6efefd67b5c572f93c27dd71bd602319ae887c50e27f8a309a31
  • web/tests/e2e/m10-domain-browser-gates.spec.ts: 2973a596df8613a9cfdb0bd4d300d95b71a8e818e615278a39fb777db6c5cf03
  • tests/golden/M10-15/domain-browser-gates.json: 580051434ec6673251bac755cc189939de1f887aad088497e16a7657f3a83963
  • web/package.json: 092931cebf9cb14814951703af26e2d0e4c5e0295c1ba4cb748bfe4ee49448c2

Rollback

Remove the NLA stack budgets/exact-field checks, restore the former Simulation cache budget error mapping, remove the domain Worker/E2E/golden/package command and this status file, then restore M10 to 14/15. Keep all M10-01 through M10-14 behavior.