Replace, render, observe.
The second memory test intentionally differs from the clean lifecycle lab: 100 meshes share one sphere geometry, but every render replaces each mesh material with a new ShaderMaterial. The newest materials are disposed after rendering; overwritten materials are counted as the source-shaped leak signal.
This route claims the installed WebGLRenderer, 100 shared SphereGeometry meshes, source-shaped vertex/fragment shader replacement, deterministic local color generation, per-cycle material overwrite → render → current-material disposal ordering, program-count observation, pause/manual sampling, reset, and teardown only. The official Math.random stream, exact page/pixel composition, unbounded 60 Hz stress behavior, broad device/compiler/backend/performance matrices, and whole-example fidelity remain separate.
The source example does not retain references to overwritten materials, so the counter is an observation of the source-shaped ownership bug rather than a claim that every driver retains identical GPU allocations. Renderer disposal is explicit on release. Source: official WebGL memory test II