For my grid layout I use a Reusable Block. This works fine except for queries that are set to Frontend Rendering. In this case the query will be empty.
As a quick test to verify there are no other factors affecting it - if you haven’t already done so, you can quickly convert the reusable block back to regular blocks and check if the exact same set of blocks works:
I did something similar. I duplicated the div inside the Reusable Block and moved it outside of it and removed the Reusable Block after that. So I had exactly the same structure I had with the Reusable Block.
This way it did work without any issues. So the cause seems to be the Reusable Block.