Surely it would be easier for e.g. the HF to nominate the oldest supported version of GHC which all tools, libraries etc can be expected to work with.
Unless this comes with committed funding to help said tools and libraries comply with that support window, I don’t see that this is very viable. A major determinant of how wide a range of GHC versions a library or tool supports is how much work this is for the maintainers, and how willing they are to do that.
HLS, for example, supports a comparatively smaller range of GHCs than other tools mentioned here. This is partly just because it is so exposed to the GHC API that it is extra-painful to support more versions, making us less willing to have a wide support window.
If there was going to be a centralised policy, I’d be more keen to see the promotion of a few GHC versions to LTS status (perhaps as part of a wider LTS strategy joining up with Stackage, which has led the way here). Then it would be reasonable to request that people consider keeping support for LTS versions. In practice this happens informally: 8.10 was implicitly treated this way because of its popularity and stability, and my read is that 9.2 has recently replaced it in this position.
This is more of a positive vision: if the GHC team is committing to support a version long-term (and maybe even keep doing minor releases), then it is much more motivating for a tool or library to join in with that plan.
If the HF wanted to coordinate a LTS plan that would be nice. The other useful thing they could do would be to look after Taylor’s State of Haskell survey, which is one of the only ways we find out who is actually using which versions of GHC!