diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,15 @@
 
 All notable changes to `moonlight-pale` are documented here.
 
+## 0.1.0.2 - 2026-08-21
+
+- Compatibility: make the public `test` and `test-laws` components, with their
+  own test suites, portable across GHC 9.10.3, 9.12.4, and 9.14.1
+  (`base >= 4.20`).
+- Mark only the five test suites whose owning libraries remain GHC 9.14-only
+  as unavailable below that compiler floor, so enabling Pale tests yields a
+  valid portable component plan rather than a solver contradiction.
+
 ## 0.1.0.1 - 2026-08-20
 
 - Compatibility: the public `test-laws` component now supports GHC 9.10.3,
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -26,6 +26,14 @@
 higher foundation package, so it introduces no cycle. The `diagnostic` sublibrary
 pays for nothing but `base` + `containers`; only `ghc-surface` pulls `ghc`.
 
+## Compiler support
+
+`moonlight-pale:test` and `moonlight-pale:test-laws`, including their own test
+suites, support GHC 9.10.3, 9.12.4, and 9.14.1 (`base >= 4.20`).
+The remaining explicitly GHC 9.14-only components retain their existing floors
+rather than making ordinary test support unavailable to the advertised consumer
+matrix.
+
 ## Test
 
 ```bash
diff --git a/moonlight-pale.cabal b/moonlight-pale.cabal
--- a/moonlight-pale.cabal
+++ b/moonlight-pale.cabal
@@ -1,6 +1,6 @@
 cabal-version:       3.0
 name:                moonlight-pale
-version:             0.1.0.1
+version:             0.1.0.2
 homepage:            https://github.com/PaleRoses/moonlight
 bug-reports:         https://github.com/PaleRoses/moonlight/issues
 synopsis:            Shared diagnostics, law testing, and GHC/HIE tooling for Moonlight.
@@ -121,15 +121,13 @@
   import: shared-properties
   visibility: public
   hs-source-dirs: src-test
-  if impl(ghc < 9.14)
-    buildable: False
   exposed-modules:
     Moonlight.Pale.Test.Core
     Moonlight.Pale.Test.Assertions
     Moonlight.Pale.Test.Resources
     Moonlight.Pale.Test.Recursion
   build-depends:
-    base >= 4.22 && < 5
+    base >= 4.20 && < 5
     , containers >= 0.8 && < 0.9
     , directory >= 1.3 && < 1.4
     , filepath >= 1.5 && < 1.6
@@ -152,6 +150,8 @@
   type: exitcode-stdio-1.0
   hs-source-dirs: test/bench-measure
   main-is: Main.hs
+  if impl(ghc < 9.14)
+    buildable: False
   ghc-options: -threaded -rtsopts -with-rtsopts=-T
   build-depends:
     base >= 4.22 && < 5
@@ -226,6 +226,8 @@
   type: exitcode-stdio-1.0
   hs-source-dirs: test/ghc-surface
   main-is: Main.hs
+  if impl(ghc < 9.14)
+    buildable: False
   other-modules:
     Hie.OracleSpec
     Hie.TypeWordsSpec
@@ -255,6 +257,8 @@
   type: exitcode-stdio-1.0
   hs-source-dirs: test/diagnostic
   main-is: Main.hs
+  if impl(ghc < 9.14)
+    buildable: False
   other-modules:
     WriterSpec
     OutcomeSpec
@@ -279,7 +283,7 @@
     RestrictionSpec
     SuiteSpec
   build-depends:
-    base >= 4.22 && < 5
+    base >= 4.20 && < 5
     , containers >= 0.8 && < 0.9
     , moonlight-core >= 0.1 && < 0.2
     , tasty >= 1.5 && < 1.6
@@ -297,7 +301,7 @@
     Recursion.RecursionSpec
     Resources.ResourceSpec
   build-depends:
-    base >= 4.22 && < 5
+    base >= 4.20 && < 5
     , containers >= 0.8 && < 0.9
     , hedgehog >= 1.7 && < 1.8
     , tasty >= 1.5 && < 1.6
@@ -311,6 +315,8 @@
   type: exitcode-stdio-1.0
   hs-source-dirs: test/import-discipline
   main-is: Main.hs
+  if impl(ghc < 9.14)
+    buildable: False
   other-modules:
     DisciplineSpec
     RegistrySpec
@@ -326,6 +332,8 @@
   type: exitcode-stdio-1.0
   hs-source-dirs: test/compile-diagnostics
   main-is: Main.hs
+  if impl(ghc < 9.14)
+    buildable: False
   other-modules:
     CompileDiagnosticsSpec
   build-depends:
@@ -446,5 +454,5 @@
 source-repository this
   type:     git
   location: https://github.com/PaleRoses/moonlight.git
-  tag:      moonlight-pale-0.1.0.1
+  tag:      moonlight-pale-0.1.0.2
   subdir:   moonlight-pale
