diff --git a/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs b/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs
index 25de1091d66b213f978c1bf6d311faa2843d015f..db5e9956aedde6d6d232311ef544a0bd189eee18 100644
--- a/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs
+++ b/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs
@@ -12,7 +12,7 @@ module Distribution.Solver.Types.ProjectConfigPath
 
     -- * Messages
     , docProjectConfigPath
-    , docProjectConfigFiles
+    , docProjectConfigPaths
     , cyclicalImportMsg
     , docProjectConfigPathFailReason
 
@@ -133,11 +133,11 @@ docProjectConfigPath (ProjectConfigPath (p :| ps)) = vcat $
 --              , ProjectConfigPath ("project-cabal/pkgs/integration-tests.config" :| ["project-cabal/pkgs.config","cabal.project"])
 --              , ProjectConfigPath ("project-cabal/pkgs/tests.config" :| ["project-cabal/pkgs.config","cabal.project"])
 --              ]
---     return . render $ docProjectConfigFiles ps
+--     return . render $ docProjectConfigPaths ps
 -- :}
 -- "- cabal.project\n- project-cabal/constraints.config\n- project-cabal/ghc-latest.config\n- project-cabal/ghc-options.config\n- project-cabal/pkgs.config\n- project-cabal/pkgs/benchmarks.config\n- project-cabal/pkgs/buildinfo.config\n- project-cabal/pkgs/cabal.config\n- project-cabal/pkgs/install.config\n- project-cabal/pkgs/integration-tests.config\n- project-cabal/pkgs/tests.config"
-docProjectConfigFiles :: [ProjectConfigPath] -> Doc
-docProjectConfigFiles ps = vcat
+docProjectConfigPaths :: [ProjectConfigPath] -> Doc
+docProjectConfigPaths ps = vcat
     [ text "-" <+> text p
     | p <- ordNub [ p | ProjectConfigPath (p :| _) <- ps ]
     ]
diff --git a/cabal-install/src/Distribution/Client/ProjectConfig.hs b/cabal-install/src/Distribution/Client/ProjectConfig.hs
index 042e5c9187a4da8f7f71b044381d34a7f28d3aee..1d44139fbf4561a8cd8ba13a4e885a0e4b9e1061 100644
--- a/cabal-install/src/Distribution/Client/ProjectConfig.hs
+++ b/cabal-install/src/Distribution/Client/ProjectConfig.hs
@@ -935,7 +935,7 @@ renderBadPackageLocations (BadPackageLocations provenance bpls)
 
     renderExplicit =
       "When using configuration from:\n"
-        ++ render (nest 2 . docProjectConfigFiles $ mapMaybe getExplicit (Set.toList provenance))
+        ++ render (nest 2 . docProjectConfigPaths $ mapMaybe getExplicit (Set.toList provenance))
         ++ "\nThe following errors occurred:\n"
         ++ render (nest 2 $ vcat ((text "-" <+>) . text <$> map renderBadPackageLocation bpls))
 
diff --git a/cabal-install/src/Distribution/Client/ProjectPlanning.hs b/cabal-install/src/Distribution/Client/ProjectPlanning.hs
index 521940392645314a3786daf7a2234d7ccf0554c5..644ff8326bafe349a058895a5a29b65995767c8b 100644
--- a/cabal-install/src/Distribution/Client/ProjectPlanning.hs
+++ b/cabal-install/src/Distribution/Client/ProjectPlanning.hs
@@ -2304,13 +2304,16 @@ elaborateInstallPlan
                 ]
                 <> perPkgOptionMapLast pkgid packageConfigProgramPaths
             elabProgramArgs =
-              Map.fromList
-                [ (programId prog, args)
-                | prog <- configuredPrograms compilerprogdb
-                , let args = programOverrideArgs $ addHaddockIfDocumentationEnabled prog
-                , not (null args)
-                ]
-                <> perPkgOptionMapMappend pkgid packageConfigProgramArgs
+              Map.unionWith
+                (++)
+                ( Map.fromList
+                    [ (programId prog, args)
+                    | prog <- configuredPrograms compilerprogdb
+                    , let args = programOverrideArgs $ addHaddockIfDocumentationEnabled prog
+                    , not (null args)
+                    ]
+                )
+                (perPkgOptionMapMappend pkgid packageConfigProgramArgs)
             elabProgramPathExtra = perPkgOptionNubList pkgid packageConfigProgramPathExtra
             elabConfigureScriptArgs = perPkgOptionList pkgid packageConfigConfigureArgs
             elabExtraLibDirs = perPkgOptionList pkgid packageConfigExtraLibDirs
diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/CHANGELOG.md b/cabal-testsuite/PackageTests/HaddockArgsCombine/CHANGELOG.md
new file mode 100644
index 0000000000000000000000000000000000000000..8f36ef2eceabdc8697826b274880b7bad3ecc289
--- /dev/null
+++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/CHANGELOG.md
@@ -0,0 +1,5 @@
+# Revision history for HaddockArgsCombine
+
+## 0.1.0.0 -- YYYY-mm-dd
+
+* First version. Released on an unsuspecting world.
diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/HaddockArgsCombine.cabal b/cabal-testsuite/PackageTests/HaddockArgsCombine/HaddockArgsCombine.cabal
new file mode 100644
index 0000000000000000000000000000000000000000..8a5eb8ffa6540750b1f0843d7d8e9fa354064313
--- /dev/null
+++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/HaddockArgsCombine.cabal
@@ -0,0 +1,14 @@
+cabal-version:   3.14
+name:            HaddockArgsCombine
+version:         0.1.0.0
+license:         NONE
+author:          Matthew Pickering
+maintainer:      matthewtpickering@gmail.com
+build-type:      Simple
+extra-doc-files: CHANGELOG.md
+
+executable HaddockArgsCombine
+    main-is:          Main.hs
+    build-depends:    base
+    hs-source-dirs:   app
+    default-language: Haskell2010
diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/app/Main.hs b/cabal-testsuite/PackageTests/HaddockArgsCombine/app/Main.hs
new file mode 100644
index 0000000000000000000000000000000000000000..9b1ce43a4813ed4193ff1aedf749b1f93dac06b0
--- /dev/null
+++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/app/Main.hs
@@ -0,0 +1,6 @@
+module Main where
+
+import Data.List
+
+main :: IO ()
+main = putStrLn "Hello, Haskell!"
diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.out b/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.out
new file mode 100644
index 0000000000000000000000000000000000000000..f7671fe3af4c7d92d7ef7ae0ce465ee0d0f41e07
--- /dev/null
+++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.out
@@ -0,0 +1,8 @@
+# cabal v2-run
+Resolving dependencies...
+Build profile: -w ghc-<GHCVER> -O1
+In order, the following will be built:
+ - HaddockArgsCombine-0.1.0.0 (exe:HaddockArgsCombine) (first run)
+Configuring executable 'HaddockArgsCombine' for HaddockArgsCombine-0.1.0.0...
+Preprocessing executable 'HaddockArgsCombine' for HaddockArgsCombine-0.1.0.0...
+Building executable 'HaddockArgsCombine' for HaddockArgsCombine-0.1.0.0...
diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.test.hs b/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.test.hs
new file mode 100644
index 0000000000000000000000000000000000000000..d04a4c940624a780c8c5a07789a713ec9df756b8
--- /dev/null
+++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.test.hs
@@ -0,0 +1,3 @@
+import Test.Cabal.Prelude
+main = cabalTest $ do
+        fails $ cabal "v2-run" ["--ghc-options=-Wall -Werror", "--enable-documentation"]
diff --git a/changelog.d/pr-10783 b/changelog.d/pr-10783
new file mode 100644
index 0000000000000000000000000000000000000000..a8efcf12cda56c7708925267b0eb37696981e99d
--- /dev/null
+++ b/changelog.d/pr-10783
@@ -0,0 +1,11 @@
+synopsis: GHC arguments are no longer swallowed by enabling documentation
+packages: Cabal
+prs: #10783
+issues: #10782
+significance: significant
+
+description: {
+
+- Arguments to GHC are now properly concatenated with `-haddock` if documentation is enabled.
+
+}
diff --git a/changelog.d/solver-api-change-fixup-3.14 b/changelog.d/solver-api-change-fixup-3.14
new file mode 100644
index 0000000000000000000000000000000000000000..05561d5f495726493cc1fe991e76ba6db6815881
--- /dev/null
+++ b/changelog.d/solver-api-change-fixup-3.14
@@ -0,0 +1,13 @@
+synopsis: Revert renaming from #10546
+packages: cabal-install-solver
+prs: #10546
+
+description: {
+
+https://github.com/haskell/cabal/pull/10546 changed the Solver API by
+renaming a function and was backported to 3.14 in
+https://github.com/haskell/cabal/pull/10753. In particular,
+`docProjectConfigPaths` was renamed to `docProjectConfigFiles`.
+This change reverts the renaming but not anything else from #10546.
+
+}
diff --git a/scripts/release/create-release-metadata-for-ghcup.sh b/scripts/release/create-release-metadata-for-ghcup.sh
index c8683c2b85ca4f59ac0f6d349e47a074f677d13e..6cf3415ce7542e7ddfd930d25be0fddee4f4901e 100755
--- a/scripts/release/create-release-metadata-for-ghcup.sh
+++ b/scripts/release/create-release-metadata-for-ghcup.sh
@@ -26,49 +26,42 @@ cat <<EOF > /dev/stdout
       viTags:
         - Latest
       viChangeLog: https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-$RELEASE.md
-      viPostInstall: *cabal-${RELEASE//./}-post-install
+      # uncomment viPostInstall if the release needs a post-install message
+      # viPostInstall: &cabal-${RELEASE//./}-post-install |
       viArch:
         A_64:
           Linux_UnknownLinux:
             unknown_versioning: &cabal-${RELEASE//./}-64
-            dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-alpine3_12.tar.xz
-            dlSubdir: cabal-install-$RELEASE
-            dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-alpine3_12.tar.xz" | awk '{ print $1 }')
+              dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-alpine3_12.tar.xz
+              dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-alpine3_12.tar.xz" | awk '{ print $1 }')
           Linux_Alpine:
-            unknown_versioning: &cabal-${RELEASE//./}-64
+            unknown_versioning: *cabal-${RELEASE//./}-64
           Linux_CentOS:
             unknown_versioning: &cabal-${RELEASE//./}-64-centos7
-            dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-centos7.tar.xz
-            dlSubdir: cabal-install-$RELEASE
-            dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-centos7.tar.xz" | awk '{ print $1 }')
+              dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-centos7.tar.xz
+              dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-centos7.tar.xz" | awk '{ print $1 }')
           Linux_Debian:
-            ' ( >= 9 && < 10)': &cabal-${RELEASE//./}-64-debian
+            '( >= 9 && < 10)': &cabal-${RELEASE//./}-64-debian
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-deb9.tar.xz
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-deb9.tar.xz" | awk '{ print $1 }')
-            ' ( == 10 && < 11)':
+            '( == 10 && < 11)':
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-deb10.tar.xz
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-deb10.tar.xz" | awk '{ print $1 }')
-            ' ( >= 11)':
+            '( >= 11)':
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-deb11.tar.xz
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-deb11.tar.xz" | awk '{ print $1 }')
-            unknown_versioning: &cabal-${RELEASE//./}-64-debian
+            unknown_versioning: *cabal-${RELEASE//./}-64-debian
           Linux_Fedora:
             '>= 33':
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-fedora33.tar.xz
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-fedora33.tar.xz" | awk '{ print $1 }')
-            unknown_versioning: &cabal-${RELEASE//./}-64-centos7
+            unknown_versioning: *cabal-${RELEASE//./}-64-centos7
           Linux_Ubuntu:
             '< 20': &cabal-${RELEASE//./}-64-ubuntu18
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-ubuntu18_04.tar.xz
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-ubuntu18_04.tar.xz" | awk '{ print $1 }')
             '>= 20': &cabal-${RELEASE//./}-64-ubuntu20
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-ubuntu20_04.tar.xz
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-ubuntu20_04.tar.xz" | awk '{ print $1 }')
             unknown_versioning: *cabal-${RELEASE//./}-64-ubuntu18
           Linux_Mint:
@@ -78,48 +71,44 @@ cat <<EOF > /dev/stdout
           Darwin:
             unknown_versioning:
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-darwin.tar.xz
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-darwin.tar.xz" | awk '{ print $1 }')
           Windows:
             unknown_versioning:
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-windows.zip
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-windows.zip" | awk '{ print $1 }')
           FreeBSD:
             unknown_versioning:
-              dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-freebsd.tar.xz
-              dlSubdir: cabal-install-$RELEASE
-              dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-freebsd.tar.xz" | awk '{ print $1 }')
+              dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-freebsd-14.tar.xz
+              dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-freebsd-14.tar.xz" | awk '{ print $1 }')
         A_32:
           Linux_UnknownLinux:
             unknown_versioning: &cabal-${RELEASE//./}-32
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-i386-linux-alpine3_12.tar.xz
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-i386-linux-alpine3_12.tar.xz" | awk '{ print $1 }')
           Linux_Alpine:
             unknown_versioning: *cabal-${RELEASE//./}-32
           Linux_Debian:
             '( >= 9 )':
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-i386-linux-deb9.tar.xz
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-i386-linux-deb9.tar.xz" | awk '{ print $1 }')
             unknown_versioning: *cabal-${RELEASE//./}-32
         A_ARM64:
           Darwin:
             unknown_versioning:
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-aarch64-darwin.tar.xz
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-aarch64-darwin.tar.xz" | awk '{ print $1 }')
           Linux_Debian:
-            '( >= 10 && < 11)': &cabal-31020-arm64
+            '( >= 10 && < 11)': &cabal-${RELEASE//./}-arm64
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-aarch64-linux-deb10.tar.xz
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-aarch64-linux-deb10.tar.xz" | awk '{ print $1 }')
             '( >= 11)':
               dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-aarch64-linux-deb11.tar.xz
-              dlSubdir: cabal-install-$RELEASE
               dlHash: $(sha256sum "cabal-install-$RELEASE-aarch64-linux-deb11.tar.xz" | awk '{ print $1 }')
             unknown_versioning: *cabal-${RELEASE//./}-arm64
+          Linux_Alpine:
+            unknown_versioning:
+              dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-aarch64-linux-alpine3_18.tar.xz
+              dlHash: $(sha256sum "cabal-install-$RELEASE-aarch64-linux-alpine3_18.tar.xz" | awk '{ print $1 }')
           Linux_UnknownLinux:
             unknown_versioning: *cabal-${RELEASE//./}-arm64
 EOF