diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml
index 4dbc94def3291f4f6a9f7697e768915e4a8b98a5..5a30dfed23377f6bc1c61538ff7f60f807df5520 100644
--- a/.github/workflows/validate.yml
+++ b/.github/workflows/validate.yml
@@ -49,7 +49,7 @@ jobs:
     strategy:
       matrix:
         os: ["ubuntu-latest", "macos-latest", "windows-latest"]
-        ghc: ["9.6.3", "9.4.7", "9.2.8", "9.0.2", "8.10.7", "8.8.4", "8.6.5", "8.4.4"]
+        ghc: ["9.8.1", "9.6.3", "9.4.8", "9.2.8", "9.0.2", "8.10.7", "8.8.4", "8.6.5", "8.4.4"]
         exclude:
           # corrupts GHA cache or the fabric of reality itself, see https://github.com/haskell/cabal/issues/8356
           - os: "windows-latest"
@@ -83,7 +83,7 @@ jobs:
         id: setup-haskell
         with:
           ghc-version: ${{ matrix.ghc }}
-          cabal-version: '3.10.1.0'
+          cabal-version: latest # latest is mandatory for cabal-testsuite, see https://github.com/haskell/cabal/issues/8133
 
       - name: Work around git problem https://bugs.launchpad.net/ubuntu/+source/git/+bug/1993586 (cabal PR #8546)
         run: |
@@ -117,11 +117,6 @@ jobs:
           fi
           echo "FLAGS=$FLAGS" >> $GITHUB_ENV
 
-      - name: Allow newer dependencies when built with latest GHC
-        if: ${{ matrix.ghc }} == '9.6.3'
-        run: |
-          echo "allow-newer: rere:base, rere:transformers" >> cabal.project.validate
-
       - name: Validate print-config
         run: sh validate.sh $FLAGS -s print-config
 
diff --git a/cabal.project b/cabal.project
index d0b2fbabc1f5603c0b0173fe64e2baba3c84f003..d506fe9b1172c8ab36ab6e21f152efc821a2eb47 100644
--- a/cabal.project
+++ b/cabal.project
@@ -1,3 +1,5 @@
+import: cabal.project.latest-ghc
+
 packages: Cabal/
 packages: cabal-testsuite/
 packages: Cabal-syntax/
diff --git a/cabal.project.latest-ghc b/cabal.project.latest-ghc
new file mode 100644
index 0000000000000000000000000000000000000000..5132415b48c5afcfc33fd2b02bf0f0ae9f361c98
--- /dev/null
+++ b/cabal.project.latest-ghc
@@ -0,0 +1,12 @@
+-- Usually, the latest GHC requires a few allow-newer's
+-- for some time after the release. This project file is meant to host these.
+-- The file is supposed to be included in the main project files used for
+-- Cabal development:
+--   - cabal.project (day-to-day development),
+--   - cabal.project.validate (Cabal CI),
+-- Commented out below are the usual suspects. Feel free to add more.
+
+-- NOTE: don't forget to update the compiler version in the conditional
+-- when upgrading to a newer GHC
+if impl(ghc >= 9.8.1)
+    -- allow-newer: windns:*
diff --git a/cabal.project.validate b/cabal.project.validate
index 66e823f62b172a6a88a8dc0aaba4b36834c2335b..d3583c31b0ee65eccc07791baece95a3be195228 100644
--- a/cabal.project.validate
+++ b/cabal.project.validate
@@ -1,3 +1,5 @@
+import: cabal.project.latest-ghc
+
 packages: Cabal-syntax/
 packages: Cabal/
 packages: cabal-testsuite/