diff --git a/playbooks/legacy/releases-tox-list-changes/post.yaml b/playbooks/legacy/releases-tox-list-changes/post.yaml
deleted file mode 100644
index 68fbdf81..00000000
--- a/playbooks/legacy/releases-tox-list-changes/post.yaml
+++ /dev/null
@@ -1,67 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**/*nose_results.html
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**/*testr_results.html.gz
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/.testrepository/tmp*
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**/*testrepository.subunit.gz
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}/tox'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/.tox/*/log/*
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/releases-tox-list-changes/run.yaml b/playbooks/legacy/releases-tox-list-changes/run.yaml
deleted file mode 100644
index f5e4a7ed..00000000
--- a/playbooks/legacy/releases-tox-list-changes/run.yaml
+++ /dev/null
@@ -1,86 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-releases-tox-list-changes from old job gate-releases-tox-list-changes-ubuntu-xenial
-  tasks:
-
-    - name: Ensure legacy workspace directory
-      file:
-        path: '{{ ansible_user_dir }}/workspace'
-        state: directory
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          CLONEMAP=`mktemp`
-          REQS_DIR=`mktemp -d`
-          function cleanup {
-              mkdir -p $WORKSPACE
-              rm -rf $CLONEMAP $REQS_DIR
-          }
-          trap cleanup EXIT
-          cat > $CLONEMAP << EOF
-          clonemap:
-            - name: $ZUUL_PROJECT
-              dest: .
-          EOF
-          # zuul cloner works poorly if there are 2 names that are the
-          # same in here.
-          if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
-          cat >> $CLONEMAP << EOF
-            - name: openstack/requirements
-              dest: $REQS_DIR
-          EOF
-          fi
-          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
-              git://git.openstack.org $ZUUL_PROJECT openstack/requirements
-          # REQS_DIR is not set for openstack/requirements and there is also
-          # no need to copy in this case.
-          if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
-              cp $REQS_DIR/upper-constraints.txt ./
-          fi
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          if [ -x tools/test-setup.sh ] ; then
-            tools/test-setup.sh
-          fi
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -x
-          sudo rm -f /etc/sudoers.d/zuul
-          # Prove that general sudo access is actually revoked
-          ! sudo -n true
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/run-tox.sh list-changes
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          OUT=`git ls-files --other --exclude-standard --directory`
-          if [ -z "$OUT" ]; then
-              echo "No extra files created during test."
-              exit 0
-          else
-              echo "The following un-ignored files were created during the test:"
-              echo "$OUT"
-              exit 0  # TODO: change to 1 to fail tests.
-          fi
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
diff --git a/playbooks/legacy/releases-tox-validate/post.yaml b/playbooks/legacy/releases-tox-validate/post.yaml
deleted file mode 100644
index 68fbdf81..00000000
--- a/playbooks/legacy/releases-tox-validate/post.yaml
+++ /dev/null
@@ -1,67 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**/*nose_results.html
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**/*testr_results.html.gz
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/.testrepository/tmp*
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**/*testrepository.subunit.gz
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}/tox'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/.tox/*/log/*
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/releases-tox-validate/run.yaml b/playbooks/legacy/releases-tox-validate/run.yaml
deleted file mode 100644
index dafbd3e1..00000000
--- a/playbooks/legacy/releases-tox-validate/run.yaml
+++ /dev/null
@@ -1,86 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-releases-tox-validate from old job gate-releases-tox-validate-ubuntu-xenial
-  tasks:
-
-    - name: Ensure legacy workspace directory
-      file:
-        path: '{{ ansible_user_dir }}/workspace'
-        state: directory
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          CLONEMAP=`mktemp`
-          REQS_DIR=`mktemp -d`
-          function cleanup {
-              mkdir -p $WORKSPACE
-              rm -rf $CLONEMAP $REQS_DIR
-          }
-          trap cleanup EXIT
-          cat > $CLONEMAP << EOF
-          clonemap:
-            - name: $ZUUL_PROJECT
-              dest: .
-          EOF
-          # zuul cloner works poorly if there are 2 names that are the
-          # same in here.
-          if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
-          cat >> $CLONEMAP << EOF
-            - name: openstack/requirements
-              dest: $REQS_DIR
-          EOF
-          fi
-          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
-              git://git.openstack.org $ZUUL_PROJECT openstack/requirements
-          # REQS_DIR is not set for openstack/requirements and there is also
-          # no need to copy in this case.
-          if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
-              cp $REQS_DIR/upper-constraints.txt ./
-          fi
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          if [ -x tools/test-setup.sh ] ; then
-            tools/test-setup.sh
-          fi
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -x
-          sudo rm -f /etc/sudoers.d/zuul
-          # Prove that general sudo access is actually revoked
-          ! sudo -n true
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/run-tox.sh validate
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          OUT=`git ls-files --other --exclude-standard --directory`
-          if [ -z "$OUT" ]; then
-              echo "No extra files created during test."
-              exit 0
-          else
-              echo "The following un-ignored files were created during the test:"
-              echo "$OUT"
-              exit 0  # TODO: change to 1 to fail tests.
-          fi
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
diff --git a/playbooks/legacy/static-election-publish/post.yaml b/playbooks/legacy/static-election-publish/post.yaml
deleted file mode 100644
index d2d3520e..00000000
--- a/playbooks/legacy/static-election-publish/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: election/
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/static-election-publish/run.yaml b/playbooks/legacy/static-election-publish/run.yaml
deleted file mode 100644
index a81b6161..00000000
--- a/playbooks/legacy/static-election-publish/run.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-static-election-publish from old job static-election-publish
-  tasks:
-
-    - name: Ensure legacy workspace directory
-      file:
-        path: '{{ ansible_user_dir }}/workspace'
-        state: directory
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          CLONEMAP=`mktemp`
-          function cleanup {
-              # In cases where zuul-cloner is aborted during a git
-              # clone operation, git will remove the git work tree in
-              # its cleanup. The work tree in these jobs is the
-              # workspace directory, which means that subsequent
-              # jenkins post-build actions can not run because the
-              # workspace has been removed.
-              # To reduce the likelihood of this having an impact,
-              # recreate the workspace directory if needed
-              mkdir -p $WORKSPACE
-              rm -f $CLONEMAP
-          }
-          trap cleanup EXIT
-          cat > $CLONEMAP << EOF
-          clonemap:
-            - name: $ZUUL_PROJECT
-              dest: .
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
-              git://git.openstack.org $ZUUL_PROJECT
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -x
-          sudo rm -f /etc/sudoers.d/zuul
-          # Prove that general sudo access is actually revoked
-          ! sudo -n true
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/run-docs.sh venv
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          rm -rf ,content
-          mv doc/build/html ,content
-          rm -rf .[^.]* [^,]*
-          # Disable errexit here because there might not be any dotfiles.
-          set +e
-          mv ,content/.[^.]* ./
-          set -e
-          mv ,content/* ./
-          rm -r ,content
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
diff --git a/playbooks/legacy/static-governance-publish/post.yaml b/playbooks/legacy/static-governance-publish/post.yaml
deleted file mode 100644
index 0c7678ad..00000000
--- a/playbooks/legacy/static-governance-publish/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: tc/
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/static-governance-publish/run.yaml b/playbooks/legacy/static-governance-publish/run.yaml
deleted file mode 100644
index 397be9ee..00000000
--- a/playbooks/legacy/static-governance-publish/run.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-static-governance-publish from old job static-governance-publish
-  tasks:
-
-    - name: Ensure legacy workspace directory
-      file:
-        path: '{{ ansible_user_dir }}/workspace'
-        state: directory
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          CLONEMAP=`mktemp`
-          function cleanup {
-              # In cases where zuul-cloner is aborted during a git
-              # clone operation, git will remove the git work tree in
-              # its cleanup. The work tree in these jobs is the
-              # workspace directory, which means that subsequent
-              # jenkins post-build actions can not run because the
-              # workspace has been removed.
-              # To reduce the likelihood of this having an impact,
-              # recreate the workspace directory if needed
-              mkdir -p $WORKSPACE
-              rm -f $CLONEMAP
-          }
-          trap cleanup EXIT
-          cat > $CLONEMAP << EOF
-          clonemap:
-            - name: $ZUUL_PROJECT
-              dest: .
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
-              git://git.openstack.org $ZUUL_PROJECT
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -x
-          sudo rm -f /etc/sudoers.d/zuul
-          # Prove that general sudo access is actually revoked
-          ! sudo -n true
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/run-docs.sh venv
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          rm -rf ,content
-          mv doc/build/html ,content
-          rm -rf .[^.]* [^,]*
-          # Disable errexit here because there might not be any dotfiles.
-          set +e
-          mv ,content/.[^.]* ./
-          set -e
-          mv ,content/* ./
-          rm -r ,content
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
diff --git a/playbooks/legacy/static-governance-uc-publish/post.yaml b/playbooks/legacy/static-governance-uc-publish/post.yaml
deleted file mode 100644
index 99e93340..00000000
--- a/playbooks/legacy/static-governance-uc-publish/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: uc/
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/static-governance-uc-publish/run.yaml b/playbooks/legacy/static-governance-uc-publish/run.yaml
deleted file mode 100644
index 6eaa67de..00000000
--- a/playbooks/legacy/static-governance-uc-publish/run.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-static-governance-uc-publish from old job static-governance-uc-publish
-  tasks:
-
-    - name: Ensure legacy workspace directory
-      file:
-        path: '{{ ansible_user_dir }}/workspace'
-        state: directory
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          CLONEMAP=`mktemp`
-          function cleanup {
-              # In cases where zuul-cloner is aborted during a git
-              # clone operation, git will remove the git work tree in
-              # its cleanup. The work tree in these jobs is the
-              # workspace directory, which means that subsequent
-              # jenkins post-build actions can not run because the
-              # workspace has been removed.
-              # To reduce the likelihood of this having an impact,
-              # recreate the workspace directory if needed
-              mkdir -p $WORKSPACE
-              rm -f $CLONEMAP
-          }
-          trap cleanup EXIT
-          cat > $CLONEMAP << EOF
-          clonemap:
-            - name: $ZUUL_PROJECT
-              dest: .
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
-              git://git.openstack.org $ZUUL_PROJECT
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -x
-          sudo rm -f /etc/sudoers.d/zuul
-          # Prove that general sudo access is actually revoked
-          ! sudo -n true
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/run-docs.sh venv
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          rm -rf ,content
-          mv doc/build/html ,content
-          rm -rf .[^.]* [^,]*
-          # Disable errexit here because there might not be any dotfiles.
-          set +e
-          mv ,content/.[^.]* ./
-          set -e
-          mv ,content/* ./
-          rm -r ,content
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
diff --git a/playbooks/legacy/static-governance-website-publish/post.yaml b/playbooks/legacy/static-governance-website-publish/post.yaml
deleted file mode 100644
index be53d58a..00000000
--- a/playbooks/legacy/static-governance-website-publish/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: governance/
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/static-governance-website-publish/run.yaml b/playbooks/legacy/static-governance-website-publish/run.yaml
deleted file mode 100644
index ef5c9dc7..00000000
--- a/playbooks/legacy/static-governance-website-publish/run.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-static-governance-website-publish from old job static-governance-website-publish
-  tasks:
-
-    - name: Ensure legacy workspace directory
-      file:
-        path: '{{ ansible_user_dir }}/workspace'
-        state: directory
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          CLONEMAP=`mktemp`
-          function cleanup {
-              # In cases where zuul-cloner is aborted during a git
-              # clone operation, git will remove the git work tree in
-              # its cleanup. The work tree in these jobs is the
-              # workspace directory, which means that subsequent
-              # jenkins post-build actions can not run because the
-              # workspace has been removed.
-              # To reduce the likelihood of this having an impact,
-              # recreate the workspace directory if needed
-              mkdir -p $WORKSPACE
-              rm -f $CLONEMAP
-          }
-          trap cleanup EXIT
-          cat > $CLONEMAP << EOF
-          clonemap:
-            - name: $ZUUL_PROJECT
-              dest: .
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
-              git://git.openstack.org $ZUUL_PROJECT
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -x
-          sudo rm -f /etc/sudoers.d/zuul
-          # Prove that general sudo access is actually revoked
-          ! sudo -n true
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/run-docs.sh venv
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          rm -rf ,content
-          mv doc/build/html ,content
-          rm -rf .[^.]* [^,]*
-          # Disable errexit here because there might not be any dotfiles.
-          set +e
-          mv ,content/.[^.]* ./
-          set -e
-          mv ,content/* ./
-          rm -r ,content
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
diff --git a/playbooks/legacy/static-ossa-publish/post.yaml b/playbooks/legacy/static-ossa-publish/post.yaml
deleted file mode 100644
index e48ef19f..00000000
--- a/playbooks/legacy/static-ossa-publish/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: security/
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/static-ossa-publish/run.yaml b/playbooks/legacy/static-ossa-publish/run.yaml
deleted file mode 100644
index 43281518..00000000
--- a/playbooks/legacy/static-ossa-publish/run.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-static-ossa-publish from old job static-ossa-publish
-  tasks:
-
-    - name: Ensure legacy workspace directory
-      file:
-        path: '{{ ansible_user_dir }}/workspace'
-        state: directory
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          CLONEMAP=`mktemp`
-          function cleanup {
-              # In cases where zuul-cloner is aborted during a git
-              # clone operation, git will remove the git work tree in
-              # its cleanup. The work tree in these jobs is the
-              # workspace directory, which means that subsequent
-              # jenkins post-build actions can not run because the
-              # workspace has been removed.
-              # To reduce the likelihood of this having an impact,
-              # recreate the workspace directory if needed
-              mkdir -p $WORKSPACE
-              rm -f $CLONEMAP
-          }
-          trap cleanup EXIT
-          cat > $CLONEMAP << EOF
-          clonemap:
-            - name: $ZUUL_PROJECT
-              dest: .
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
-              git://git.openstack.org $ZUUL_PROJECT
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -x
-          sudo rm -f /etc/sudoers.d/zuul
-          # Prove that general sudo access is actually revoked
-          ! sudo -n true
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/run-docs.sh venv
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          rm -rf ,content
-          mv doc/build/html ,content
-          rm -rf .[^.]* [^,]*
-          # Disable errexit here because there might not be any dotfiles.
-          set +e
-          mv ,content/.[^.]* ./
-          set -e
-          mv ,content/* ./
-          rm -r ,content
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
diff --git a/playbooks/legacy/static-releases-publish/post.yaml b/playbooks/legacy/static-releases-publish/post.yaml
deleted file mode 100644
index 78627535..00000000
--- a/playbooks/legacy/static-releases-publish/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: releases/
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/static-releases-publish/run.yaml b/playbooks/legacy/static-releases-publish/run.yaml
deleted file mode 100644
index 9b0696e1..00000000
--- a/playbooks/legacy/static-releases-publish/run.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-static-releases-publish from old job static-releases-publish
-  tasks:
-
-    - name: Ensure legacy workspace directory
-      file:
-        path: '{{ ansible_user_dir }}/workspace'
-        state: directory
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          CLONEMAP=`mktemp`
-          function cleanup {
-              # In cases where zuul-cloner is aborted during a git
-              # clone operation, git will remove the git work tree in
-              # its cleanup. The work tree in these jobs is the
-              # workspace directory, which means that subsequent
-              # jenkins post-build actions can not run because the
-              # workspace has been removed.
-              # To reduce the likelihood of this having an impact,
-              # recreate the workspace directory if needed
-              mkdir -p $WORKSPACE
-              rm -f $CLONEMAP
-          }
-          trap cleanup EXIT
-          cat > $CLONEMAP << EOF
-          clonemap:
-            - name: $ZUUL_PROJECT
-              dest: .
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
-              git://git.openstack.org $ZUUL_PROJECT
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -x
-          sudo rm -f /etc/sudoers.d/zuul
-          # Prove that general sudo access is actually revoked
-          ! sudo -n true
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/run-docs.sh venv
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          rm -rf ,content
-          mv doc/build/html ,content
-          rm -rf .[^.]* [^,]*
-          # Disable errexit here because there might not be any dotfiles.
-          set +e
-          mv ,content/.[^.]* ./
-          set -e
-          mv ,content/* ./
-          rm -r ,content
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
diff --git a/playbooks/legacy/static-transparency-policy-publish/post.yaml b/playbooks/legacy/static-transparency-policy-publish/post.yaml
deleted file mode 100644
index e52b9d34..00000000
--- a/playbooks/legacy/static-transparency-policy-publish/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: transparency-policy/
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/static-transparency-policy-publish/run.yaml b/playbooks/legacy/static-transparency-policy-publish/run.yaml
deleted file mode 100644
index dd607452..00000000
--- a/playbooks/legacy/static-transparency-policy-publish/run.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-- hosts: all
-  name: Autoconverted job legacy-static-transparency-policy-publish from old job static-transparency-policy-publish
-  tasks:
-
-    - name: Ensure legacy workspace directory
-      file:
-        path: '{{ ansible_user_dir }}/workspace'
-        state: directory
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          CLONEMAP=`mktemp`
-          function cleanup {
-              # In cases where zuul-cloner is aborted during a git
-              # clone operation, git will remove the git work tree in
-              # its cleanup. The work tree in these jobs is the
-              # workspace directory, which means that subsequent
-              # jenkins post-build actions can not run because the
-              # workspace has been removed.
-              # To reduce the likelihood of this having an impact,
-              # recreate the workspace directory if needed
-              mkdir -p $WORKSPACE
-              rm -f $CLONEMAP
-          }
-          trap cleanup EXIT
-          cat > $CLONEMAP << EOF
-          clonemap:
-            - name: $ZUUL_PROJECT
-              dest: .
-          EOF
-          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
-              git://git.openstack.org $ZUUL_PROJECT
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/install-distro-packages.sh
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -x
-          sudo rm -f /etc/sudoers.d/zuul
-          # Prove that general sudo access is actually revoked
-          ! sudo -n true
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: /usr/local/jenkins/slave_scripts/run-docs.sh venv
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
-
-    - shell:
-        cmd: |
-          set -e
-          set -x
-          rm -rf ,content
-          mv doc/build/html ,content
-          rm -rf .[^.]* [^,]*
-          # Disable errexit here because there might not be any dotfiles.
-          set +e
-          mv ,content/.[^.]* ./
-          set -e
-          mv ,content/* ./
-          rm -r ,content
-        executable: /bin/bash
-        chdir: '{{ ansible_user_dir }}/workspace'
-      environment: '{{ zuul | zuul_legacy_vars }}'
diff --git a/zuul.d/zuul-legacy-jobs.yaml b/zuul.d/zuul-legacy-jobs.yaml
index 2e9eb8f0..72fefa80 100644
--- a/zuul.d/zuul-legacy-jobs.yaml
+++ b/zuul.d/zuul-legacy-jobs.yaml
@@ -10422,24 +10422,6 @@
     required-projects:
       - openstack/requirements
 
-- job:
-    name: legacy-releases-tox-list-changes
-    parent: legacy-base
-    run: playbooks/legacy/releases-tox-list-changes/run
-    post-run: playbooks/legacy/releases-tox-list-changes/post
-    timeout: 2400
-    required-projects:
-      - openstack/requirements
-
-- job:
-    name: legacy-releases-tox-validate
-    parent: legacy-base
-    run: playbooks/legacy/releases-tox-validate/run
-    post-run: playbooks/legacy/releases-tox-validate/post
-    timeout: 2400
-    required-projects:
-      - openstack/requirements
-
 - job:
     name: legacy-requests-mock-tox-keystoneclient-tip
     parent: legacy-base
@@ -11185,55 +11167,6 @@
     required-projects:
       - openstack/requirements
 
-- job:
-    name: legacy-static-election-publish
-    parent: legacy-base
-    run: playbooks/legacy/static-election-publish/run
-    post-run: playbooks/legacy/static-election-publish/post
-    timeout: 1800
-
-- job:
-    name: legacy-static-governance-publish
-    parent: legacy-base
-    run: playbooks/legacy/static-governance-publish/run
-    post-run: playbooks/legacy/static-governance-publish/post
-    timeout: 1800
-
-- job:
-    name: legacy-static-governance-uc-publish
-    parent: legacy-base
-    run: playbooks/legacy/static-governance-uc-publish/run
-    post-run: playbooks/legacy/static-governance-uc-publish/post
-    timeout: 1800
-
-- job:
-    name: legacy-static-governance-website-publish
-    parent: legacy-base
-    run: playbooks/legacy/static-governance-website-publish/run
-    post-run: playbooks/legacy/static-governance-website-publish/post
-    timeout: 1800
-
-- job:
-    name: legacy-static-ossa-publish
-    parent: legacy-base
-    run: playbooks/legacy/static-ossa-publish/run
-    post-run: playbooks/legacy/static-ossa-publish/post
-    timeout: 1800
-
-- job:
-    name: legacy-static-releases-publish
-    parent: legacy-base
-    run: playbooks/legacy/static-releases-publish/run
-    post-run: playbooks/legacy/static-releases-publish/post
-    timeout: 1800
-
-- job:
-    name: legacy-static-transparency-policy-publish
-    parent: legacy-base
-    run: playbooks/legacy/static-transparency-policy-publish/run
-    post-run: playbooks/legacy/static-transparency-policy-publish/post
-    timeout: 1800
-
 - job:
     name: legacy-storlets-functional
     parent: legacy-base