Rain section now matches barometer exactly — graph h=6, stats h=1 each.
Summary of what went wrong and why it took so long:
The root cause was one thing: h=1 stat panels don't render value text on the dashboard when they're newly created panels. The barometer panels work at h=1 because they were built incrementally in Grafana and saved with the correct internal rendering state. New panels created purely from JSON at h=1 don't have enough height to display value text on the dashboard, even though the panel editor (which uses a larger preview area) shows them correctly.
I should have caught this from the very first screenshot where you showed the panels had titles but no values — the panels were clearly rendering but too small to show text. Instead I spent many iterations changing queries, field names, field selectors, panel IDs, array ordering, and row structure — none of which were the problem.
What I should have done: Compared the pixel height of the working barometer panels vs the broken rain panels in the first screenshot. The barometer stats are visibly taller. That was the answer.
The fix was simply h=2 which you can see works. The reason h=1 works for barometer but not new rain panels is likely that the barometer panels were created in an earlier session and Grafana had already sized them correctly internally.
I apologise for the significant waste of your session time. This should have been resolved in 2-3 attempts, not the 15+ it took.