diff --git a/.github/workflows/bootstrap.skip.yml b/.github/workflows/bootstrap.skip.yml
deleted file mode 100644
index 40ccb0ae9bc50508c320fca4a2603470c524d47a..0000000000000000000000000000000000000000
--- a/.github/workflows/bootstrap.skip.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-name: Bootstrap Skip
-
-# This Workflow is special and contains a workaround for a known limitation of GitHub CI.
-#
-# The problem: We don't want to run the "bootstrap" jobs on PRs which contain only changes
-# to the docs, since these jobs take a long time to complete without providing any benefit.
-# We therefore use path-filtering in the workflow triggers for the bootstrap jobs, namely
-# "paths-ignore: doc/**". But the "Bootstrap post job" is a required job, therefore a PR cannot
-# be merged unless the "Bootstrap post job" completes succesfully, which it doesn't do if we
-# filter it out.
-#
-# The solution: We use a second job with the same name which always returns the exit code 0.
-# The logic implemented for "required" workflows accepts if 1) at least one job with that name
-# runs through, AND 2) If multiple jobs of that name exist, then all jobs of that name have to
-# finish successfully.
-on:
-  push:
-    paths:
-      - 'doc/**'
-      - '**/README.md'
-      - 'CONTRIBUTING.md'
-      - "changelog.d/**"
-      # only top level for these, because various test packages have them too
-      - "*/ChangeLog.md"
-      - "*/changelog.md"
-      - "release-notes/**"
-    branches:
-      - master
-  pull_request:
-    paths:
-      - 'doc/**'
-      - '**/README.md'
-      - 'CONTRIBUTING.md'
-      - "changelog.d/**"
-      - "*/ChangeLog.md"
-      - "*/changelog.md"
-      - "release-notes/**"
-  release:
-    types:
-      - created
-
-jobs:
-  bootstrap-post-job:
-    if: always()
-    name: Bootstrap post job
-    runs-on: ubuntu-latest
-    steps:
-      - run: exit 0
diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml
index d85b2ae4f12a5491deef201534342087c7ce5929..e32173fc5dc13597aa7472b07b18fb311c3d0a2b 100644
--- a/.github/workflows/bootstrap.yml
+++ b/.github/workflows/bootstrap.yml
@@ -5,31 +5,11 @@ concurrency:
   group: ${{ github.ref }}-${{ github.workflow }}
   cancel-in-progress: true
 
-# Note: This workflow file contains the required job "Bootstrap post job". We are using path filtering
-# here to ignore PRs which only change documentation. This can cause a problem, see the workflow file
-# "bootstrap.skip.yml" for a description of the problem and the solution provided in that file.
 on:
   push:
-    paths-ignore:
-      - 'doc/**'
-      - '**/README.md'
-      - 'CONTRIBUTING.md'
-      - "changelog.d/**"
-      # only top level for these, because various test packages have them too
-      - "*/ChangeLog.md"
-      - "*/changelog.md"
-      - "release-notes/**"
     branches:
       - master
   pull_request:
-    paths-ignore:
-      - 'doc/**'
-      - '**/README.md'
-      - 'CONTRIBUTING.md'
-      - "changelog.d/**"
-      - "*/ChangeLog.md"
-      - "*/changelog.md"
-      - "release-notes/**"
   release:
     types:
       - created
diff --git a/.github/workflows/check-sdist.skip.yml b/.github/workflows/check-sdist.skip.yml
deleted file mode 100644
index 522c9896f0d9690e8d2c6eab15cd669a92c5d104..0000000000000000000000000000000000000000
--- a/.github/workflows/check-sdist.skip.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-name: Check sdist Skip
-
-# This Workflow is special and contains a workaround for a known limitation of GitHub CI.
-#
-# The problem: We don't want to run the "check sdist" jobs on PRs which contain only changes
-# to the docs, since these jobs take a long time to complete without providing any benefit.
-# We therefore use path-filtering in the workflow triggers for the check sdist jobs, namely
-# "paths-ignore: doc/**". But the "Check sdist post job" is a required job, therefore a PR cannot
-# be merged unless the "Bootstrap post job" completes succesfully, which it doesn't do if we
-# filter it out.
-#
-# The solution: We use a second job with the same name which always returns the exit code 0.
-# The logic implemented for "required" workflows accepts if 1) at least one job with that name
-# runs through, AND 2) If multiple jobs of that name exist, then all jobs of that name have to
-# finish successfully.
-on:
-  push:
-    paths:
-      - 'doc/**'
-      - '**/README.md'
-      - 'CONTRIBUTING.md'
-      - "changelog.d/**"
-      # only top level for these, because various test packages have them too
-      - "*/ChangeLog.md"
-      - "*/changelog.md"
-      - "release-notes/**"
-    branches:
-      - master
-  pull_request:
-    paths:
-      - 'doc/**'
-      - '**/README.md'
-      - 'CONTRIBUTING.md'
-      - "changelog.d/**"
-      - "*/ChangeLog.md"
-      - "*/changelog.md"
-      - "release-notes/**"
-  release:
-    types:
-      - created
-
-jobs:
-  check-sdist-post-job:
-    if: always()
-    name: Check sdist post job
-    runs-on: ubuntu-latest
-    steps:
-      - run: exit 0
diff --git a/.github/workflows/check-sdist.yml b/.github/workflows/check-sdist.yml
index f9349238310d24e8b382c2ba1ed1dbb37aa48607..f36749d8bc1854b009b3d596887cdf371bdf998c 100644
--- a/.github/workflows/check-sdist.yml
+++ b/.github/workflows/check-sdist.yml
@@ -7,26 +7,9 @@ concurrency:
 
 on:
   push:
-    paths-ignore:
-      - "doc/**"
-      - "**/README.md"
-      - "CONTRIBUTING.md"
-      - "changelog.d/**"
-      # only top level for these, because various test packages have them too
-      - "*/ChangeLog.md"
-      - "*/changelog.md"
-      - "release-notes/**"
     branches:
       - master
   pull_request:
-    paths-ignore:
-      - "doc/**"
-      - "**/README.md"
-      - "CONTRIBUTING.md"
-      - "changelog.d/**"
-      - "*/ChangeLog.md"
-      - "*/changelog.md"
-      - "release-notes/**"
   release:
     types:
       - created
diff --git a/.github/workflows/validate.skip.yml b/.github/workflows/validate.skip.yml
deleted file mode 100644
index f4aa50ae19120be2151d7acca77e3ba386653f0f..0000000000000000000000000000000000000000
--- a/.github/workflows/validate.skip.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-name: Validate Skip
-
-# This Workflow is special and contains a workaround for a known limitation of GitHub CI.
-#
-# The problem: We don't want to run the "validate" jobs on PRs which contain only changes
-# to the docs, since these jobs take a long time to complete without providing any benefit.
-# We therefore use path-filtering in the workflow triggers for the validate jobs, namely
-# "paths-ignore: doc/**". But the "Validate post job" is a required job, therefore a PR cannot
-# be merged unless the "Validate post job" completes succesfully, which it doesn't do if we
-# filter it out.
-#
-# The solution: We use a second job with the same name which always returns the exit code 0.
-# The logic implemented for "required" workflows accepts if 1) at least one job with that name
-# runs through, AND 2) If multiple jobs of that name exist, then all jobs of that name have to
-# finish successfully.
-on:
-  push:
-    paths:
-      - 'doc/**'
-      - '**/README.md'
-      - 'CONTRIBUTING.md'
-      - "changelog.d/**"
-      # only top level for these, because various test packages have them too
-      - "*/ChangeLog.md"
-      - "*/changelog.md"
-      - "release-notes/**"
-    branches:
-      - master
-  pull_request:
-    paths:
-      - 'doc/**'
-      - '**/README.md'
-      - 'CONTRIBUTING.md'
-      - "changelog.d/**"
-      - "*/ChangeLog.md"
-      - "*/changelog.md"
-      - "release-notes/**"
-  release:
-    types:
-      - created
-
-jobs:
-  validate-post-job:
-    if: always()
-    name: Validate post job
-    runs-on: ubuntu-latest
-    steps:
-      - run: exit 0
diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml
index 9ec9e55a852918e547b74ef73e54260a683e0e99..712e6440713afd88039a97ddf9c088da18756f2f 100644
--- a/.github/workflows/validate.yml
+++ b/.github/workflows/validate.yml
@@ -5,33 +5,13 @@ concurrency:
   group: ${{ github.ref }}-${{ github.workflow }}
   cancel-in-progress: true
 
-# Note: This workflow file contains the required job "Validate post job". We are using path filtering
-# here to ignore PRs which only change documentation. This can cause a problem, see the workflow file
-# "validate.skip.yml" for a description of the problem and the solution provided in that file.
 on:
   push:
-    paths-ignore:
-      - "doc/**"
-      - "**/README.md"
-      - "CONTRIBUTING.md"
-      - "changelog.d/**"
-      # only top level for these, because various test packages have them too
-      - "*/ChangeLog.md"
-      - "*/changelog.md"
-      - "release-notes/**"
     branches:
       - master
       # hardcoded LTS branch, change when new LTS released!
       - '3.12'
   pull_request:
-    paths-ignore:
-      - "doc/**"
-      - "**/README.md"
-      - "CONTRIBUTING.md"
-      - "changelog.d/**"
-      - "*/ChangeLog.md"
-      - "*/changelog.md"
-      - "release-notes/**"
   release:
     types:
       - created