It turns out Apollo's useQuery has some very unintuitve defaults - when the variables provided to the query change, it changes which value it retrieves from it's normalized store (using the new variables) but does NOT automatically make another network request if the data is not present.
This meant it was very easy to load pipeline A, switch to pipeline B, and see "invalid selection" because pipeline B's solid selection query result was null.
Changing the fetch policy to network-only forces Apollo to retrieve actual results when the variables change. It's not ideal, but their other possible mode (fetch-and-network) briefly shows the results for the OLD pipeline A while fetching pipeling B, which is also awful.
I'm separately going through to verify this isn't the source of other problems elsewhere. In this diff I also added progress spinners to make the loading states prettier.