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; ShaderSHADER_NODE_UNSUPPORTED/SHADER_GRAPH_CYCLE; NLANLA_BUDGET_EXCEEDED/NLA_INVALID_STACK; SimulationSIMULATION_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:88119782307cb9a61e131f2d5e2e25127256c1e68a333fc7fc3206158b8a1019web/protocol/nla.ts:96ae7cf9ca3fadbaf98ca15a38937329f203b0bc4a9c39ef685987e7f55353ddweb/protocol/simulation-cache.ts:a1302e42129420a96416e363cbc857d082d4646655685520c9e81f877ce3d9b8web/tests/unit/nla.test.mjs:e11aa1f395970613cee5d37a9eb21c3fac3422f0080c75c78eb8777effb77adcweb/tests/unit/simulation-cache.test.mjs:2be82cdda991b47fbf8955cfbf2f92cb1fdc7b7c0debb0c8102d4f35e8fce8e3web/app/src/workers/m10-domain-gate-test.worker.ts:bc508e1c81ca6efefd67b5c572f93c27dd71bd602319ae887c50e27f8a309a31web/tests/e2e/m10-domain-browser-gates.spec.ts:2973a596df8613a9cfdb0bd4d300d95b71a8e818e615278a39fb777db6c5cf03tests/golden/M10-15/domain-browser-gates.json:580051434ec6673251bac755cc189939de1f887aad088497e16a7657f3a83963web/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.