all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 162.253.55.167
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: yul2
        cloud: public
        external_id: 1a593aac-cc0f-4eb0-b444-7dd8fa86c8ab
        host_id: c3e8ca29246a1ecab67f48b7a3961d6a6b6d42e4a1646ddd3e849c9c
        interface_ip: 162.253.55.167
        label: ubuntu-noble
        node_properties: {}
        private_ipv4: 162.253.55.167
        private_ipv6: null
        provider: yul1
        public_ipv4: 162.253.55.167
        public_ipv6: 2604:e100:1:0:f816:3eff:fef0:d7f4
        region: ca-ymq-1
        slot: null
      zuul_node:
        az: yul2
        cloud: public
        external_id: 1a593aac-cc0f-4eb0-b444-7dd8fa86c8ab
        host_id: c3e8ca29246a1ecab67f48b7a3961d6a6b6d42e4a1646ddd3e849c9c
        interface_ip: 162.253.55.167
        label: ubuntu-noble
        node_properties: {}
        private_ipv4: 162.253.55.167
        private_ipv6: null
        provider: yul1
        public_ipv4: 162.253.55.167
        public_ipv6: 2604:e100:1:0:f816:3eff:fef0:d7f4
        region: ca-ymq-1
        slot: null
        uuid: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/zuul-config/zuul.d/jobs.yaml@main#1>'
      - '<Job pre-commit explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/zuul-jobs/zuul.d/general-jobs.yaml@main#1>'
      - '<Job pre-commit explicit: None implied: None source: vexxhost/atmosphere-zuul-jobs/zuul.d/project.yaml@main#1>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 522ae2e57301496f872431e4e6df6c95
      build_refs:
      - branch: main
        change: '7'
        change_message: 'feat(molecule): deploy from one release manifest per buildset


          The molecule jobs deploy whatever tags `roles/defaults/vars/main.yml` points
          at when each job runs, while releases ship digest-pinned images. With vexxhost/atmosphere#4420,
          Atmosphere publishes a digest-pinned release manifest per commit; this makes
          CI generate that manifest once per buildset and deploy exactly it, through
          the same registry path customers use.


          - **`atmosphere-release-manifest` job** (`atmosphere-build-manifest` role):
          builds `atmosphere-release` from the change under test, generates the manifest
          (resolving tags through `harbor.atmosphere.dev/` to avoid upstream rate
          limits; the manifest records the original references) and returns the manifest
          and the binary as Zuul artifacts, with the digest of the artifact that pushing
          the manifest produces.

          - **Molecule jobs** depend on it. Their pre-run uses the new `atmosphere-use-manifest`
          role: it starts a CNCF Distribution registry on the node (pinned, checksum-verified)
          with TLS from a throwaway CA and password authentication (user created with
          `community.general.htpasswd`), pushes the manifest, and fails unless the
          pushed artifact has the digest the build job reported. Atmosphere then reads
          it by reference (`atmosphere_release_manifest`, `atmosphere_release_manifest_ca_file`,
          and a mirror rule that keeps `atmosphere_image_prefix` away from that registry).

          - Every job therefore deploys the same manifest, and after merge `atmosphere-release
          publish` finds this buildset''s manifest through the Zuul API and publishes
          it unchanged.


          **Linting:** every change to this repository now runs the existing `pre-commit`
          job with the latest `ansible-lint` (v26.10.1, with ansible-core 2.21; passes
          the `production` profile) and whitespace checks from `pre-commit-hooks`
          v6.0.0, the same setup as the Ansible collection repositories. The hook
          pins Python 3.14, so the config overrides it to Python 3.12, which the job''s
          Ubuntu 24.04 nodes have and current ansible-core supports. `.ansible-lint`
          mocks the roles and `zuul_return` that only exist in Zuul and skips `role-name`,
          since Zuul roles use hyphens; `requirements.yml` lets ansible-lint install
          `community.general` to validate module arguments. This replaces the `noop`
          job.


          This calls `cmd/atmosphere-release` on every branch these jobs run against,
          so it must merge **after** vexxhost/atmosphere#4420 and its backports.


          Tested through `Depends-On` from vexxhost/atmosphere#4420 and by the role
          tests in #8.

          '
        change_url: https://github.com/vexxhost/atmosphere-zuul-jobs/pull/7
        commit_id: f8e5cca7a07250774081debc91d03ab48c7bf9fe
        patchset: f8e5cca7a07250774081debc91d03ab48c7bf9fe
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere-zuul-jobs
          name: vexxhost/atmosphere-zuul-jobs
          short_name: atmosphere-zuul-jobs
          src_dir: src/github.com/vexxhost/atmosphere-zuul-jobs
        src_dir: src/github.com/vexxhost/atmosphere-zuul-jobs
        topic: null
      buildset: d7c28343e7e64a95b44790f4ebc7343f
      buildset_refs:
      - branch: main
        change: '7'
        change_message: 'feat(molecule): deploy from one release manifest per buildset


          The molecule jobs deploy whatever tags `roles/defaults/vars/main.yml` points
          at when each job runs, while releases ship digest-pinned images. With vexxhost/atmosphere#4420,
          Atmosphere publishes a digest-pinned release manifest per commit; this makes
          CI generate that manifest once per buildset and deploy exactly it, through
          the same registry path customers use.


          - **`atmosphere-release-manifest` job** (`atmosphere-build-manifest` role):
          builds `atmosphere-release` from the change under test, generates the manifest
          (resolving tags through `harbor.atmosphere.dev/` to avoid upstream rate
          limits; the manifest records the original references) and returns the manifest
          and the binary as Zuul artifacts, with the digest of the artifact that pushing
          the manifest produces.

          - **Molecule jobs** depend on it. Their pre-run uses the new `atmosphere-use-manifest`
          role: it starts a CNCF Distribution registry on the node (pinned, checksum-verified)
          with TLS from a throwaway CA and password authentication (user created with
          `community.general.htpasswd`), pushes the manifest, and fails unless the
          pushed artifact has the digest the build job reported. Atmosphere then reads
          it by reference (`atmosphere_release_manifest`, `atmosphere_release_manifest_ca_file`,
          and a mirror rule that keeps `atmosphere_image_prefix` away from that registry).

          - Every job therefore deploys the same manifest, and after merge `atmosphere-release
          publish` finds this buildset''s manifest through the Zuul API and publishes
          it unchanged.


          **Linting:** every change to this repository now runs the existing `pre-commit`
          job with the latest `ansible-lint` (v26.10.1, with ansible-core 2.21; passes
          the `production` profile) and whitespace checks from `pre-commit-hooks`
          v6.0.0, the same setup as the Ansible collection repositories. The hook
          pins Python 3.14, so the config overrides it to Python 3.12, which the job''s
          Ubuntu 24.04 nodes have and current ansible-core supports. `.ansible-lint`
          mocks the roles and `zuul_return` that only exist in Zuul and skips `role-name`,
          since Zuul roles use hyphens; `requirements.yml` lets ansible-lint install
          `community.general` to validate module arguments. This replaces the `noop`
          job.


          This calls `cmd/atmosphere-release` on every branch these jobs run against,
          so it must merge **after** vexxhost/atmosphere#4420 and its backports.


          Tested through `Depends-On` from vexxhost/atmosphere#4420 and by the role
          tests in #8.

          '
        change_url: https://github.com/vexxhost/atmosphere-zuul-jobs/pull/7
        commit_id: f8e5cca7a07250774081debc91d03ab48c7bf9fe
        patchset: f8e5cca7a07250774081debc91d03ab48c7bf9fe
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere-zuul-jobs
          name: vexxhost/atmosphere-zuul-jobs
          short_name: atmosphere-zuul-jobs
          src_dir: src/github.com/vexxhost/atmosphere-zuul-jobs
        src_dir: src/github.com/vexxhost/atmosphere-zuul-jobs
        topic: null
      change: '7'
      change_message: 'feat(molecule): deploy from one release manifest per buildset


        The molecule jobs deploy whatever tags `roles/defaults/vars/main.yml` points
        at when each job runs, while releases ship digest-pinned images. With vexxhost/atmosphere#4420,
        Atmosphere publishes a digest-pinned release manifest per commit; this makes
        CI generate that manifest once per buildset and deploy exactly it, through
        the same registry path customers use.


        - **`atmosphere-release-manifest` job** (`atmosphere-build-manifest` role):
        builds `atmosphere-release` from the change under test, generates the manifest
        (resolving tags through `harbor.atmosphere.dev/` to avoid upstream rate limits;
        the manifest records the original references) and returns the manifest and
        the binary as Zuul artifacts, with the digest of the artifact that pushing
        the manifest produces.

        - **Molecule jobs** depend on it. Their pre-run uses the new `atmosphere-use-manifest`
        role: it starts a CNCF Distribution registry on the node (pinned, checksum-verified)
        with TLS from a throwaway CA and password authentication (user created with
        `community.general.htpasswd`), pushes the manifest, and fails unless the pushed
        artifact has the digest the build job reported. Atmosphere then reads it by
        reference (`atmosphere_release_manifest`, `atmosphere_release_manifest_ca_file`,
        and a mirror rule that keeps `atmosphere_image_prefix` away from that registry).

        - Every job therefore deploys the same manifest, and after merge `atmosphere-release
        publish` finds this buildset''s manifest through the Zuul API and publishes
        it unchanged.


        **Linting:** every change to this repository now runs the existing `pre-commit`
        job with the latest `ansible-lint` (v26.10.1, with ansible-core 2.21; passes
        the `production` profile) and whitespace checks from `pre-commit-hooks` v6.0.0,
        the same setup as the Ansible collection repositories. The hook pins Python
        3.14, so the config overrides it to Python 3.12, which the job''s Ubuntu 24.04
        nodes have and current ansible-core supports. `.ansible-lint` mocks the roles
        and `zuul_return` that only exist in Zuul and skips `role-name`, since Zuul
        roles use hyphens; `requirements.yml` lets ansible-lint install `community.general`
        to validate module arguments. This replaces the `noop` job.


        This calls `cmd/atmosphere-release` on every branch these jobs run against,
        so it must merge **after** vexxhost/atmosphere#4420 and its backports.


        Tested through `Depends-On` from vexxhost/atmosphere#4420 and by the role
        tests in #8.

        '
      change_url: https://github.com/vexxhost/atmosphere-zuul-jobs/pull/7
      child_jobs: []
      commit_id: f8e5cca7a07250774081debc91d03ab48c7bf9fe
      event_id: e255ef30-c9cc-11f1-839a-64986a48df73
      executor:
        hostname: 2d72f0692154
        inventory_file: /var/lib/zuul/builds/522ae2e57301496f872431e4e6df6c95/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/522ae2e57301496f872431e4e6df6c95/work/logs
        result_data_file: /var/lib/zuul/builds/522ae2e57301496f872431e4e6df6c95/work/results.json
        src_root: /var/lib/zuul/builds/522ae2e57301496f872431e4e6df6c95/work/src
        work_root: /var/lib/zuul/builds/522ae2e57301496f872431e4e6df6c95/work
      include_vars: []
      items:
      - branch: main
        change: '7'
        change_message: 'feat(molecule): deploy from one release manifest per buildset


          The molecule jobs deploy whatever tags `roles/defaults/vars/main.yml` points
          at when each job runs, while releases ship digest-pinned images. With vexxhost/atmosphere#4420,
          Atmosphere publishes a digest-pinned release manifest per commit; this makes
          CI generate that manifest once per buildset and deploy exactly it, through
          the same registry path customers use.


          - **`atmosphere-release-manifest` job** (`atmosphere-build-manifest` role):
          builds `atmosphere-release` from the change under test, generates the manifest
          (resolving tags through `harbor.atmosphere.dev/` to avoid upstream rate
          limits; the manifest records the original references) and returns the manifest
          and the binary as Zuul artifacts, with the digest of the artifact that pushing
          the manifest produces.

          - **Molecule jobs** depend on it. Their pre-run uses the new `atmosphere-use-manifest`
          role: it starts a CNCF Distribution registry on the node (pinned, checksum-verified)
          with TLS from a throwaway CA and password authentication (user created with
          `community.general.htpasswd`), pushes the manifest, and fails unless the
          pushed artifact has the digest the build job reported. Atmosphere then reads
          it by reference (`atmosphere_release_manifest`, `atmosphere_release_manifest_ca_file`,
          and a mirror rule that keeps `atmosphere_image_prefix` away from that registry).

          - Every job therefore deploys the same manifest, and after merge `atmosphere-release
          publish` finds this buildset''s manifest through the Zuul API and publishes
          it unchanged.


          **Linting:** every change to this repository now runs the existing `pre-commit`
          job with the latest `ansible-lint` (v26.10.1, with ansible-core 2.21; passes
          the `production` profile) and whitespace checks from `pre-commit-hooks`
          v6.0.0, the same setup as the Ansible collection repositories. The hook
          pins Python 3.14, so the config overrides it to Python 3.12, which the job''s
          Ubuntu 24.04 nodes have and current ansible-core supports. `.ansible-lint`
          mocks the roles and `zuul_return` that only exist in Zuul and skips `role-name`,
          since Zuul roles use hyphens; `requirements.yml` lets ansible-lint install
          `community.general` to validate module arguments. This replaces the `noop`
          job.


          This calls `cmd/atmosphere-release` on every branch these jobs run against,
          so it must merge **after** vexxhost/atmosphere#4420 and its backports.


          Tested through `Depends-On` from vexxhost/atmosphere#4420 and by the role
          tests in #8.

          '
        change_url: https://github.com/vexxhost/atmosphere-zuul-jobs/pull/7
        commit_id: f8e5cca7a07250774081debc91d03ab48c7bf9fe
        patchset: f8e5cca7a07250774081debc91d03ab48c7bf9fe
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere-zuul-jobs
          name: vexxhost/atmosphere-zuul-jobs
          short_name: atmosphere-zuul-jobs
          src_dir: src/github.com/vexxhost/atmosphere-zuul-jobs
        topic: null
      job: pre-commit
      jobtags: []
      max_attempts: 3
      message: ZmVhdChtb2xlY3VsZSk6IGRlcGxveSBmcm9tIG9uZSByZWxlYXNlIG1hbmlmZXN0IHBlciBidWlsZHNldAoKVGhlIG1vbGVjdWxlIGpvYnMgZGVwbG95IHdoYXRldmVyIHRhZ3MgYHJvbGVzL2RlZmF1bHRzL3ZhcnMvbWFpbi55bWxgIHBvaW50cyBhdCB3aGVuIGVhY2ggam9iIHJ1bnMsIHdoaWxlIHJlbGVhc2VzIHNoaXAgZGlnZXN0LXBpbm5lZCBpbWFnZXMuIFdpdGggdmV4eGhvc3QvYXRtb3NwaGVyZSM0NDIwLCBBdG1vc3BoZXJlIHB1Ymxpc2hlcyBhIGRpZ2VzdC1waW5uZWQgcmVsZWFzZSBtYW5pZmVzdCBwZXIgY29tbWl0OyB0aGlzIG1ha2VzIENJIGdlbmVyYXRlIHRoYXQgbWFuaWZlc3Qgb25jZSBwZXIgYnVpbGRzZXQgYW5kIGRlcGxveSBleGFjdGx5IGl0LCB0aHJvdWdoIHRoZSBzYW1lIHJlZ2lzdHJ5IHBhdGggY3VzdG9tZXJzIHVzZS4KCi0gKipgYXRtb3NwaGVyZS1yZWxlYXNlLW1hbmlmZXN0YCBqb2IqKiAoYGF0bW9zcGhlcmUtYnVpbGQtbWFuaWZlc3RgIHJvbGUpOiBidWlsZHMgYGF0bW9zcGhlcmUtcmVsZWFzZWAgZnJvbSB0aGUgY2hhbmdlIHVuZGVyIHRlc3QsIGdlbmVyYXRlcyB0aGUgbWFuaWZlc3QgKHJlc29sdmluZyB0YWdzIHRocm91Z2ggYGhhcmJvci5hdG1vc3BoZXJlLmRldi9gIHRvIGF2b2lkIHVwc3RyZWFtIHJhdGUgbGltaXRzOyB0aGUgbWFuaWZlc3QgcmVjb3JkcyB0aGUgb3JpZ2luYWwgcmVmZXJlbmNlcykgYW5kIHJldHVybnMgdGhlIG1hbmlmZXN0IGFuZCB0aGUgYmluYXJ5IGFzIFp1dWwgYXJ0aWZhY3RzLCB3aXRoIHRoZSBkaWdlc3Qgb2YgdGhlIGFydGlmYWN0IHRoYXQgcHVzaGluZyB0aGUgbWFuaWZlc3QgcHJvZHVjZXMuCi0gKipNb2xlY3VsZSBqb2JzKiogZGVwZW5kIG9uIGl0LiBUaGVpciBwcmUtcnVuIHVzZXMgdGhlIG5ldyBgYXRtb3NwaGVyZS11c2UtbWFuaWZlc3RgIHJvbGU6IGl0IHN0YXJ0cyBhIENOQ0YgRGlzdHJpYnV0aW9uIHJlZ2lzdHJ5IG9uIHRoZSBub2RlIChwaW5uZWQsIGNoZWNrc3VtLXZlcmlmaWVkKSB3aXRoIFRMUyBmcm9tIGEgdGhyb3dhd2F5IENBIGFuZCBwYXNzd29yZCBhdXRoZW50aWNhdGlvbiAodXNlciBjcmVhdGVkIHdpdGggYGNvbW11bml0eS5nZW5lcmFsLmh0cGFzc3dkYCksIHB1c2hlcyB0aGUgbWFuaWZlc3QsIGFuZCBmYWlscyB1bmxlc3MgdGhlIHB1c2hlZCBhcnRpZmFjdCBoYXMgdGhlIGRpZ2VzdCB0aGUgYnVpbGQgam9iIHJlcG9ydGVkLiBBdG1vc3BoZXJlIHRoZW4gcmVhZHMgaXQgYnkgcmVmZXJlbmNlIChgYXRtb3NwaGVyZV9yZWxlYXNlX21hbmlmZXN0YCwgYGF0bW9zcGhlcmVfcmVsZWFzZV9tYW5pZmVzdF9jYV9maWxlYCwgYW5kIGEgbWlycm9yIHJ1bGUgdGhhdCBrZWVwcyBgYXRtb3NwaGVyZV9pbWFnZV9wcmVmaXhgIGF3YXkgZnJvbSB0aGF0IHJlZ2lzdHJ5KS4KLSBFdmVyeSBqb2IgdGhlcmVmb3JlIGRlcGxveXMgdGhlIHNhbWUgbWFuaWZlc3QsIGFuZCBhZnRlciBtZXJnZSBgYXRtb3NwaGVyZS1yZWxlYXNlIHB1Ymxpc2hgIGZpbmRzIHRoaXMgYnVpbGRzZXQncyBtYW5pZmVzdCB0aHJvdWdoIHRoZSBadXVsIEFQSSBhbmQgcHVibGlzaGVzIGl0IHVuY2hhbmdlZC4KCioqTGludGluZzoqKiBldmVyeSBjaGFuZ2UgdG8gdGhpcyByZXBvc2l0b3J5IG5vdyBydW5zIHRoZSBleGlzdGluZyBgcHJlLWNvbW1pdGAgam9iIHdpdGggdGhlIGxhdGVzdCBgYW5zaWJsZS1saW50YCAodjI2LjEwLjEsIHdpdGggYW5zaWJsZS1jb3JlIDIuMjE7IHBhc3NlcyB0aGUgYHByb2R1Y3Rpb25gIHByb2ZpbGUpIGFuZCB3aGl0ZXNwYWNlIGNoZWNrcyBmcm9tIGBwcmUtY29tbWl0LWhvb2tzYCB2Ni4wLjAsIHRoZSBzYW1lIHNldHVwIGFzIHRoZSBBbnNpYmxlIGNvbGxlY3Rpb24gcmVwb3NpdG9yaWVzLiBUaGUgaG9vayBwaW5zIFB5dGhvbiAzLjE0LCBzbyB0aGUgY29uZmlnIG92ZXJyaWRlcyBpdCB0byBQeXRob24gMy4xMiwgd2hpY2ggdGhlIGpvYidzIFVidW50dSAyNC4wNCBub2RlcyBoYXZlIGFuZCBjdXJyZW50IGFuc2libGUtY29yZSBzdXBwb3J0cy4gYC5hbnNpYmxlLWxpbnRgIG1vY2tzIHRoZSByb2xlcyBhbmQgYHp1dWxfcmV0dXJuYCB0aGF0IG9ubHkgZXhpc3QgaW4gWnV1bCBhbmQgc2tpcHMgYHJvbGUtbmFtZWAsIHNpbmNlIFp1dWwgcm9sZXMgdXNlIGh5cGhlbnM7IGByZXF1aXJlbWVudHMueW1sYCBsZXRzIGFuc2libGUtbGludCBpbnN0YWxsIGBjb21tdW5pdHkuZ2VuZXJhbGAgdG8gdmFsaWRhdGUgbW9kdWxlIGFyZ3VtZW50cy4gVGhpcyByZXBsYWNlcyB0aGUgYG5vb3BgIGpvYi4KClRoaXMgY2FsbHMgYGNtZC9hdG1vc3BoZXJlLXJlbGVhc2VgIG9uIGV2ZXJ5IGJyYW5jaCB0aGVzZSBqb2JzIHJ1biBhZ2FpbnN0LCBzbyBpdCBtdXN0IG1lcmdlICoqYWZ0ZXIqKiB2ZXh4aG9zdC9hdG1vc3BoZXJlIzQ0MjAgYW5kIGl0cyBiYWNrcG9ydHMuCgpUZXN0ZWQgdGhyb3VnaCBgRGVwZW5kcy1PbmAgZnJvbSB2ZXh4aG9zdC9hdG1vc3BoZXJlIzQ0MjAgYW5kIGJ5IHRoZSByb2xlIHRlc3RzIGluICM4Lgo=
      patchset: f8e5cca7a07250774081debc91d03ab48c7bf9fe
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/vexxhost/zuul-config:
            canonical_name: github.com/vexxhost/zuul-config
            checkout: main
            commit: 298983cd1253e6833abdb49d87d912527e0e6597
          trusted/project_1/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: be52461cd48abccbf95b13a58b2551ac673d8ad7
          trusted/project_2/github.com/vexxhost/zuul-jobs:
            canonical_name: github.com/vexxhost/zuul-jobs
            checkout: main
            commit: c286bf94224b5660b8e49e9a058289e61062a9a0
          untrusted/project_0/github.com/vexxhost/zuul-jobs:
            canonical_name: github.com/vexxhost/zuul-jobs
            checkout: main
            commit: c286bf94224b5660b8e49e9a058289e61062a9a0
          untrusted/project_1/github.com/vexxhost/zuul-config:
            canonical_name: github.com/vexxhost/zuul-config
            checkout: main
            commit: 298983cd1253e6833abdb49d87d912527e0e6597
          untrusted/project_2/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: be52461cd48abccbf95b13a58b2551ac673d8ad7
        playbooks:
        - path: untrusted/project_0/github.com/vexxhost/zuul-jobs/playbooks/pre-commit/run.yaml
          roles:
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_1/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_0/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_0/github.com/vexxhost/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
        post_playbooks:
        - path: trusted/project_0/github.com/vexxhost/zuul-config/playbooks/base/post.yaml
          roles:
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/post_playbook_0/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_0/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_0/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_0/role_2/zuul-jobs/roles
        - path: trusted/project_0/github.com/vexxhost/zuul-config/playbooks/base/post-logs.yaml
          roles:
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/post_playbook_1/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_1/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_1/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_1/role_2/zuul-jobs/roles
        pre_playbooks:
        - path: trusted/project_0/github.com/vexxhost/zuul-config/playbooks/base/pre.yaml
          roles:
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/pre_playbook_0/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/pre_playbook_0/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_0/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/pre_playbook_0/role_2/zuul-jobs/roles
        - path: untrusted/project_0/github.com/vexxhost/zuul-jobs/playbooks/pre-commit/pre.yaml
          roles:
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/pre_playbook_1/role_1/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/pre_playbook_1/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_1/role_2/zuul-jobs
            link_target: untrusted/project_0/github.com/vexxhost/zuul-jobs
            role_path: ansible/pre_playbook_1/role_2/zuul-jobs/roles
      post_review: false
      post_timeout: null
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/vexxhost/atmosphere-zuul-jobs
        name: vexxhost/atmosphere-zuul-jobs
        short_name: atmosphere-zuul-jobs
        src_dir: src/github.com/vexxhost/atmosphere-zuul-jobs
      projects:
        github.com/vexxhost/atmosphere-zuul-jobs:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere-zuul-jobs
          checkout: main
          checkout_description: zuul branch
          commit: f8e5cca7a07250774081debc91d03ab48c7bf9fe
          name: vexxhost/atmosphere-zuul-jobs
          required: false
          short_name: atmosphere-zuul-jobs
          src_dir: src/github.com/vexxhost/atmosphere-zuul-jobs
      ref: refs/pull/7/head
      resources: {}
      tenant: oss
      timeout: 1800
      topic: null
      voting: true
