An ECMAScript implementation of a Membrane, allowing users to dynamically hide, override, or extend objects in JavaScript with controlled effects on the original objects.
This might be achievable by revoking the "public" Membrane proxy, but that could also disable the ability to create new proxies in that membrane after the revocation.
If a Membrane object leaks out, there are several ways a bad actor could cause problems:
Membrane.prototype.preventModifications() should be defined to prevent:
The dogfood membrane can prevent some things:
Required for #5. Probably dependent on #6.