Nodes That Did Nothing
Eighteen nodes in the browser produced no pixels, no matter how you wired them. They are gone. Three more that cannot draw yet now say so out loud, in red, instead of failing politely. The Shadertoy node, which had quietly stopped compiling anything at all, works again.

Search the node browser for “GI” and you used to find seven ways to light a scene with global illumination. Cascades, probes, a signed-distance variant, DDGI, a hybrid, a raytraced one, a cache. Each had a summary. Each had tags. Each had a tidy paragraph of documentation explaining the technique.
None of them did anything. Wire one up, and it emitted nothing at all. The documentation was describing an intention.
There were eighteen of these in total: eleven global-illumination nodes, six screen-space effects (horizon and raytraced ambient occlusion, screen-space and raytraced reflections, a denoiser, a motion blur) that either passed their input straight through or returned nothing, and a duplicate ShaderToy node kept around next to the real one. They are all deleted. Not hidden, not disabled, not marked experimental. Deleted, along with the code behind them.
The kindest thing a broken node can do is look broken
Three nodes survived the cull because their pins are real and worth authoring
against even before the renderer can draw them: GaussianSplatField, Strands
and MorphTargets. A splat cloud loads. A hair curve resolves. A blendshape
weight arrives. None of them reaches the screen yet.
The old behaviour was to accept your wire and return silence, which is indistinguishable from a patch you have subtly misconfigured. You would spend twenty minutes checking your transform. Now they light up red and stay red, and the editor paints them accordingly:

Their descriptions changed too. GaussianSplatField used to promise a two-pass
16-bit radix sort into a 256 MiB scratch pool, which was a very specific
description of a thing it was not doing. It now opens with “renders nothing
until the splat render wiring lands,” and then describes what it will be. The
red border and the text agree with each other, and both agree with the pixels.
MorphTargets is the one that nearly got away. It looked wired up from the
node’s side, dutifully assembling a weight vector and caching it, and the weight
vector was always empty and nothing downstream ever read it. Its description
confidently explained that the blending ran on the GPU and that forty
blendshapes cost essentially nothing, which was true only in the sense that
doing nothing is cheap.
The Shadertoy node had stopped compiling
Somewhere along the way the GLSL that Shadertoy authors actually write stopped
surviving the trip into WGSL. Declarations came through with their types
translated and their let missing. fragColor was never declared. iTime and
iResolution were left dangling. The result was not a warning, it was a shader
that failed to compose and a texture that stayed empty, which meant the
hello_shadertoy sample greeted new users with a black square, and every fresh
Shadertoy node you dropped did the same.
Pasting a shader from shadertoy.com works again, and rather more of it than
before: loop counters, swizzled writes like fragColor.rgb = c, const
globals, and the uniforms beyond iTime that nobody had wired up.
The translator’s test had been asserting that its output contained the string
fn mainImage, which invalid WGSL does too. It now hands the output to the same
parser the renderer uses. That test found a bug in the first fix within seconds
of being switched on, which is roughly the expected return on making a test
capable of failing.
Documentation that cannot lie
The interesting part is not the deletion. It is that the same nodes could grow back next week.
So the node docs are now gated by a test. Descriptions, summaries, tags and pin tooltips are checked for the things that leak out of an engineering process and into an artist’s tooltip: ticket numbers, internal phase references like “P16”, source file paths, mentions of “Phase 2b”, the word “migrator”. A node that tells you it runs the P32 tile-based EWA raster is telling you about our directory structure. The gate has its own test that seeds one violation of each rule and fails if the gate misses it, because a doc-truth check that cannot fail is decoration.
A second gate holds the census. The eighteen deleted names are on a list, and if any of them returns to the registry the build stops. The fenced nodes are on a separate list which is allowed to shrink and never to grow, and each entry must actually report an error and actually say so in its description. Wiring a node up for real is what removes it from that list.
That gate is honest about its own limits. It reads descriptions, so it catches a
node that claims to do nothing. It cannot yet catch a node that simply does
nothing while claiming otherwise, which is exactly how MorphTargets sailed
through the first pass. Finding that one still took a person reading the code.
Three hundred and sixteen nodes became two hundred and ninety-eight. The browser got smaller and got honest, which is the better trade. The GI work itself is not cancelled, it is just no longer pretending to have shipped.