The grass was in the scene, the count was right, and the screen showed nothing
Free Medieval Enviro: Free Fantasy Medieval Houses and Props Pack - Godot Asset Store
Free grass shader: Godot Stylized Vegetation Wind Shader - Godot Asset Store
Slavica Free, my free Slavic village pack, now has a Godot version. It came with the largest update this pack has had: water in the river, a cloud sky, retuned lighting and grass on the meadows. The shaders and the scattering scripts were written together with an AI; the calls on how it should look stayed on my side.
The grass took the most attempts, and the least of that was modelling.
The scatter places blades around the clumps that already stand in the scene. Those clumps are a ready-made mask for grassy ground: there are none under the buildings, on the paths or in the river, so no grass goes there either. I saved the scene, opened it in the editor - empty meadow. Nodes in place, blades counted to the last one, material assigned, everything matching, and the view exactly as it was before the scatter.
The grass was sitting a few metres below the terrain. Blade transforms were stored relative to the centre of their tile, and the position of the tile node itself did not survive the scene save, so the whole thing slid down near the origin. Checking whether the nodes are in the file will not catch that, because the nodes were there the whole time.
What caught it was a test that should have been there from the start: the same shot rendered twice, once with the grass and once with the grass hidden, then both images compared as a number. A difference of zero means there is no grass, whatever the file says. Blade transforms are absolute now and the tile node stays at the origin - there is nothing left to lose.

One more thing from the same job: the first scatter built a tight ball around every clump, because the blades stood right next to it. Two rings instead of one, the outer one pushed out to 1.10-1.80 metres, spread it across the meadow.
The code went fast. A few days went into hunting a bug that was not in the code.