all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe3d:d473
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: bd2bbb84-b039-4a1f-86af-f4f05e218eb1
        host_id: ec4f54fa666de9bc553bc59c41683f12345b665d0b1af00d715e7318
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe3d:d473
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.85
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.201
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe3d:d473
        region: null
        slot: null
      tox_environment:
        NOSE_HTML_OUT_FILE: nose_results.html
        NOSE_WITH_HTML_OUTPUT: 1
        NOSE_WITH_XUNIT: 1
      tox_envlist: drift-test
  vars:
    tox_environment:
      NOSE_HTML_OUT_FILE: nose_results.html
      NOSE_WITH_HTML_OUTPUT: 1
      NOSE_WITH_XUNIT: 1
    tox_envlist: drift-test
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job unittests explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: osism/openinfra-zuul-jobs/zuul.d/general-jobs.yaml@master#9>'
      - '<Job tox explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: osism/openinfra-zuul-jobs/zuul.d/python-jobs.yaml@master#1>'
      - '<Job release-tox-drift-test explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/release/.zuul.yaml@main#2>'
      - '<Job release-tox-drift-test explicit: None implied: None source: osism/release/.zuul.yaml@main#14>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: bd3adb6e83e34b39a32fe6013d684870
      build_refs:
      - branch: main
        change: '2605'
        change_message: "changelog: guarantee PR/issue references in generated entries\n\nThe
          changelog generator only asked the model to append a PR reference if it
          noticed one in the commit message, so entries could silently land in `CHANGELOG.md`
          without any pointer to the PR or issue they came from \u2014 in particular
          for commits without a `#N` in the subject (rebase-merged PRs, direct pushes).
          This makes the reference mandatory for every entry and verifies it deterministically.\n\n##
          Changes\n\n- **Per-commit reference resolution:** before the prompts are
          built, every commit in the release range is resolved to a reference \u2014
          `#N` from the commit subject (squash-merge convention), otherwise the pull
          request associated with the commit according to the GitHub API (`gh api
          repos/<repo>/commits/<sha>/pulls`), otherwise the commit hash itself (`org/repo@abc1234`).
          Only pure merge commits without a subject reference stay unreferenced and
          are ignored.\n- **References line in the batch prompts:** each commit block
          carries a `**References:**` line, so the model sees the correct reference
          even where the subject alone cannot provide it. The prompt rules now require
          every entry to end with the reference(s) of the commit(s) it covers, copied
          exactly as given.\n- **Full-form verification after the merge step:** the
          merged result is checked against the resolved references in their full `org/repo#N`
          form (digit-exact, so `#260` is not covered by `#2603`). Matching the full
          form instead of the bare number also catches garbled repository names the
          model sometimes produces (e.g. `osism/ansism-\u2026#265`).\n- **Fix pass:**
          missing references are listed with a warning and sent back to Claude, which
          attaches or corrects them on matching entries or adds new ones.\n- **Deterministic
          repair:** whatever is still missing afterwards is fixed without the model
          \u2014 a reference whose number is present but carries a wrong `org/repo`
          part is normalized in place, everything else is appended from the commit
          subject plus its reference.\n- **Reverse check:** any entry that still carries
          no reference at all is removed with a warning. Since every real change is
          covered by the resolved references at that point, such an entry is a duplicate
          or hallucinated. After this step no entry can reach `CHANGELOG.md` without
          a reference.\n- **Batch file fix:** commit blocks were glued together as
          `---## Commit: \u2026` because command substitution strips trailing newlines;
          the separator between blocks is restored.\n\nReferences are taken from commit
          subjects only (squash-merge convention), not bodies, because Renovate bodies
          often contain `#N` numbers of upstream repositories that would produce false
          matches. Without an authenticated `gh`, commits without a subject reference
          fall back to their commit hash; the script warns about this once.\n\nThe
          verification runs per tag in `--auto`/`--from` mode, before the entry is
          inserted into `CHANGELOG.md`, so it also applies before `--commit`/`--pr`.\n\n##
          Testing\n\nVerified end-to-end in a throwaway clone of `osism/ansible-collection-validations`
          with a fake `claude` binary returning a deliberately flawed changelog (an
          entry without a reference for the rebase-merged fork-PR fix, a garbled `osism/ansism-\u2026#265`
          reference, a hallucinated entry): the missing PR was resolved via the API
          to `#266` and appended, the garbled reference was normalized in place, and
          the unreferenced entries were removed. The happy path (correct model output)
          passes without any intervention, and with `gh` unavailable the commit-hash
          fallback kicks in.\n\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/release/pull/2605
        commit_id: b7aa388e517408e8fd08b39e9333b0a62fab36a2
        patchset: b7aa388e517408e8fd08b39e9333b0a62fab36a2
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/release
          name: osism/release
          short_name: release
        src_dir: src/github.com/osism/release
        topic: null
      buildset: 44f6ef159d3f48e286361399f238b5eb
      buildset_refs:
      - branch: main
        change: '2605'
        change_message: "changelog: guarantee PR/issue references in generated entries\n\nThe
          changelog generator only asked the model to append a PR reference if it
          noticed one in the commit message, so entries could silently land in `CHANGELOG.md`
          without any pointer to the PR or issue they came from \u2014 in particular
          for commits without a `#N` in the subject (rebase-merged PRs, direct pushes).
          This makes the reference mandatory for every entry and verifies it deterministically.\n\n##
          Changes\n\n- **Per-commit reference resolution:** before the prompts are
          built, every commit in the release range is resolved to a reference \u2014
          `#N` from the commit subject (squash-merge convention), otherwise the pull
          request associated with the commit according to the GitHub API (`gh api
          repos/<repo>/commits/<sha>/pulls`), otherwise the commit hash itself (`org/repo@abc1234`).
          Only pure merge commits without a subject reference stay unreferenced and
          are ignored.\n- **References line in the batch prompts:** each commit block
          carries a `**References:**` line, so the model sees the correct reference
          even where the subject alone cannot provide it. The prompt rules now require
          every entry to end with the reference(s) of the commit(s) it covers, copied
          exactly as given.\n- **Full-form verification after the merge step:** the
          merged result is checked against the resolved references in their full `org/repo#N`
          form (digit-exact, so `#260` is not covered by `#2603`). Matching the full
          form instead of the bare number also catches garbled repository names the
          model sometimes produces (e.g. `osism/ansism-\u2026#265`).\n- **Fix pass:**
          missing references are listed with a warning and sent back to Claude, which
          attaches or corrects them on matching entries or adds new ones.\n- **Deterministic
          repair:** whatever is still missing afterwards is fixed without the model
          \u2014 a reference whose number is present but carries a wrong `org/repo`
          part is normalized in place, everything else is appended from the commit
          subject plus its reference.\n- **Reverse check:** any entry that still carries
          no reference at all is removed with a warning. Since every real change is
          covered by the resolved references at that point, such an entry is a duplicate
          or hallucinated. After this step no entry can reach `CHANGELOG.md` without
          a reference.\n- **Batch file fix:** commit blocks were glued together as
          `---## Commit: \u2026` because command substitution strips trailing newlines;
          the separator between blocks is restored.\n\nReferences are taken from commit
          subjects only (squash-merge convention), not bodies, because Renovate bodies
          often contain `#N` numbers of upstream repositories that would produce false
          matches. Without an authenticated `gh`, commits without a subject reference
          fall back to their commit hash; the script warns about this once.\n\nThe
          verification runs per tag in `--auto`/`--from` mode, before the entry is
          inserted into `CHANGELOG.md`, so it also applies before `--commit`/`--pr`.\n\n##
          Testing\n\nVerified end-to-end in a throwaway clone of `osism/ansible-collection-validations`
          with a fake `claude` binary returning a deliberately flawed changelog (an
          entry without a reference for the rebase-merged fork-PR fix, a garbled `osism/ansism-\u2026#265`
          reference, a hallucinated entry): the missing PR was resolved via the API
          to `#266` and appended, the garbled reference was normalized in place, and
          the unreferenced entries were removed. The happy path (correct model output)
          passes without any intervention, and with `gh` unavailable the commit-hash
          fallback kicks in.\n\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/release/pull/2605
        commit_id: b7aa388e517408e8fd08b39e9333b0a62fab36a2
        patchset: b7aa388e517408e8fd08b39e9333b0a62fab36a2
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/release
          name: osism/release
          short_name: release
        src_dir: src/github.com/osism/release
        topic: null
      change: '2605'
      change_message: "changelog: guarantee PR/issue references in generated entries\n\nThe
        changelog generator only asked the model to append a PR reference if it noticed
        one in the commit message, so entries could silently land in `CHANGELOG.md`
        without any pointer to the PR or issue they came from \u2014 in particular
        for commits without a `#N` in the subject (rebase-merged PRs, direct pushes).
        This makes the reference mandatory for every entry and verifies it deterministically.\n\n##
        Changes\n\n- **Per-commit reference resolution:** before the prompts are built,
        every commit in the release range is resolved to a reference \u2014 `#N` from
        the commit subject (squash-merge convention), otherwise the pull request associated
        with the commit according to the GitHub API (`gh api repos/<repo>/commits/<sha>/pulls`),
        otherwise the commit hash itself (`org/repo@abc1234`). Only pure merge commits
        without a subject reference stay unreferenced and are ignored.\n- **References
        line in the batch prompts:** each commit block carries a `**References:**`
        line, so the model sees the correct reference even where the subject alone
        cannot provide it. The prompt rules now require every entry to end with the
        reference(s) of the commit(s) it covers, copied exactly as given.\n- **Full-form
        verification after the merge step:** the merged result is checked against
        the resolved references in their full `org/repo#N` form (digit-exact, so `#260`
        is not covered by `#2603`). Matching the full form instead of the bare number
        also catches garbled repository names the model sometimes produces (e.g. `osism/ansism-\u2026#265`).\n-
        **Fix pass:** missing references are listed with a warning and sent back to
        Claude, which attaches or corrects them on matching entries or adds new ones.\n-
        **Deterministic repair:** whatever is still missing afterwards is fixed without
        the model \u2014 a reference whose number is present but carries a wrong `org/repo`
        part is normalized in place, everything else is appended from the commit subject
        plus its reference.\n- **Reverse check:** any entry that still carries no
        reference at all is removed with a warning. Since every real change is covered
        by the resolved references at that point, such an entry is a duplicate or
        hallucinated. After this step no entry can reach `CHANGELOG.md` without a
        reference.\n- **Batch file fix:** commit blocks were glued together as `---##
        Commit: \u2026` because command substitution strips trailing newlines; the
        separator between blocks is restored.\n\nReferences are taken from commit
        subjects only (squash-merge convention), not bodies, because Renovate bodies
        often contain `#N` numbers of upstream repositories that would produce false
        matches. Without an authenticated `gh`, commits without a subject reference
        fall back to their commit hash; the script warns about this once.\n\nThe verification
        runs per tag in `--auto`/`--from` mode, before the entry is inserted into
        `CHANGELOG.md`, so it also applies before `--commit`/`--pr`.\n\n## Testing\n\nVerified
        end-to-end in a throwaway clone of `osism/ansible-collection-validations`
        with a fake `claude` binary returning a deliberately flawed changelog (an
        entry without a reference for the rebase-merged fork-PR fix, a garbled `osism/ansism-\u2026#265`
        reference, a hallucinated entry): the missing PR was resolved via the API
        to `#266` and appended, the garbled reference was normalized in place, and
        the unreferenced entries were removed. The happy path (correct model output)
        passes without any intervention, and with `gh` unavailable the commit-hash
        fallback kicks in.\n\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)\n"
      change_url: https://github.com/osism/release/pull/2605
      child_jobs: []
      commit_id: b7aa388e517408e8fd08b39e9333b0a62fab36a2
      event_id: f3e1e7a0-84ed-11f1-864d-4acf19812e4b
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/bd3adb6e83e34b39a32fe6013d684870/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/bd3adb6e83e34b39a32fe6013d684870/work/logs
        result_data_file: /var/lib/zuul/builds/bd3adb6e83e34b39a32fe6013d684870/work/results.json
        src_root: /var/lib/zuul/builds/bd3adb6e83e34b39a32fe6013d684870/work/src
        work_root: /var/lib/zuul/builds/bd3adb6e83e34b39a32fe6013d684870/work
      include_vars: []
      items:
      - branch: main
        change: '2605'
        change_message: "changelog: guarantee PR/issue references in generated entries\n\nThe
          changelog generator only asked the model to append a PR reference if it
          noticed one in the commit message, so entries could silently land in `CHANGELOG.md`
          without any pointer to the PR or issue they came from \u2014 in particular
          for commits without a `#N` in the subject (rebase-merged PRs, direct pushes).
          This makes the reference mandatory for every entry and verifies it deterministically.\n\n##
          Changes\n\n- **Per-commit reference resolution:** before the prompts are
          built, every commit in the release range is resolved to a reference \u2014
          `#N` from the commit subject (squash-merge convention), otherwise the pull
          request associated with the commit according to the GitHub API (`gh api
          repos/<repo>/commits/<sha>/pulls`), otherwise the commit hash itself (`org/repo@abc1234`).
          Only pure merge commits without a subject reference stay unreferenced and
          are ignored.\n- **References line in the batch prompts:** each commit block
          carries a `**References:**` line, so the model sees the correct reference
          even where the subject alone cannot provide it. The prompt rules now require
          every entry to end with the reference(s) of the commit(s) it covers, copied
          exactly as given.\n- **Full-form verification after the merge step:** the
          merged result is checked against the resolved references in their full `org/repo#N`
          form (digit-exact, so `#260` is not covered by `#2603`). Matching the full
          form instead of the bare number also catches garbled repository names the
          model sometimes produces (e.g. `osism/ansism-\u2026#265`).\n- **Fix pass:**
          missing references are listed with a warning and sent back to Claude, which
          attaches or corrects them on matching entries or adds new ones.\n- **Deterministic
          repair:** whatever is still missing afterwards is fixed without the model
          \u2014 a reference whose number is present but carries a wrong `org/repo`
          part is normalized in place, everything else is appended from the commit
          subject plus its reference.\n- **Reverse check:** any entry that still carries
          no reference at all is removed with a warning. Since every real change is
          covered by the resolved references at that point, such an entry is a duplicate
          or hallucinated. After this step no entry can reach `CHANGELOG.md` without
          a reference.\n- **Batch file fix:** commit blocks were glued together as
          `---## Commit: \u2026` because command substitution strips trailing newlines;
          the separator between blocks is restored.\n\nReferences are taken from commit
          subjects only (squash-merge convention), not bodies, because Renovate bodies
          often contain `#N` numbers of upstream repositories that would produce false
          matches. Without an authenticated `gh`, commits without a subject reference
          fall back to their commit hash; the script warns about this once.\n\nThe
          verification runs per tag in `--auto`/`--from` mode, before the entry is
          inserted into `CHANGELOG.md`, so it also applies before `--commit`/`--pr`.\n\n##
          Testing\n\nVerified end-to-end in a throwaway clone of `osism/ansible-collection-validations`
          with a fake `claude` binary returning a deliberately flawed changelog (an
          entry without a reference for the rebase-merged fork-PR fix, a garbled `osism/ansism-\u2026#265`
          reference, a hallucinated entry): the missing PR was resolved via the API
          to `#266` and appended, the garbled reference was normalized in place, and
          the unreferenced entries were removed. The happy path (correct model output)
          passes without any intervention, and with `gh` unavailable the commit-hash
          fallback kicks in.\n\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/release/pull/2605
        commit_id: b7aa388e517408e8fd08b39e9333b0a62fab36a2
        patchset: b7aa388e517408e8fd08b39e9333b0a62fab36a2
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/release
          name: osism/release
          short_name: release
          src_dir: src/github.com/osism/release
        topic: null
      job: release-tox-drift-test
      jobtags: []
      max_attempts: 3
      message: Y2hhbmdlbG9nOiBndWFyYW50ZWUgUFIvaXNzdWUgcmVmZXJlbmNlcyBpbiBnZW5lcmF0ZWQgZW50cmllcwoKVGhlIGNoYW5nZWxvZyBnZW5lcmF0b3Igb25seSBhc2tlZCB0aGUgbW9kZWwgdG8gYXBwZW5kIGEgUFIgcmVmZXJlbmNlIGlmIGl0IG5vdGljZWQgb25lIGluIHRoZSBjb21taXQgbWVzc2FnZSwgc28gZW50cmllcyBjb3VsZCBzaWxlbnRseSBsYW5kIGluIGBDSEFOR0VMT0cubWRgIHdpdGhvdXQgYW55IHBvaW50ZXIgdG8gdGhlIFBSIG9yIGlzc3VlIHRoZXkgY2FtZSBmcm9tIOKAlCBpbiBwYXJ0aWN1bGFyIGZvciBjb21taXRzIHdpdGhvdXQgYSBgI05gIGluIHRoZSBzdWJqZWN0IChyZWJhc2UtbWVyZ2VkIFBScywgZGlyZWN0IHB1c2hlcykuIFRoaXMgbWFrZXMgdGhlIHJlZmVyZW5jZSBtYW5kYXRvcnkgZm9yIGV2ZXJ5IGVudHJ5IGFuZCB2ZXJpZmllcyBpdCBkZXRlcm1pbmlzdGljYWxseS4KCiMjIENoYW5nZXMKCi0gKipQZXItY29tbWl0IHJlZmVyZW5jZSByZXNvbHV0aW9uOioqIGJlZm9yZSB0aGUgcHJvbXB0cyBhcmUgYnVpbHQsIGV2ZXJ5IGNvbW1pdCBpbiB0aGUgcmVsZWFzZSByYW5nZSBpcyByZXNvbHZlZCB0byBhIHJlZmVyZW5jZSDigJQgYCNOYCBmcm9tIHRoZSBjb21taXQgc3ViamVjdCAoc3F1YXNoLW1lcmdlIGNvbnZlbnRpb24pLCBvdGhlcndpc2UgdGhlIHB1bGwgcmVxdWVzdCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbW1pdCBhY2NvcmRpbmcgdG8gdGhlIEdpdEh1YiBBUEkgKGBnaCBhcGkgcmVwb3MvPHJlcG8+L2NvbW1pdHMvPHNoYT4vcHVsbHNgKSwgb3RoZXJ3aXNlIHRoZSBjb21taXQgaGFzaCBpdHNlbGYgKGBvcmcvcmVwb0BhYmMxMjM0YCkuIE9ubHkgcHVyZSBtZXJnZSBjb21taXRzIHdpdGhvdXQgYSBzdWJqZWN0IHJlZmVyZW5jZSBzdGF5IHVucmVmZXJlbmNlZCBhbmQgYXJlIGlnbm9yZWQuCi0gKipSZWZlcmVuY2VzIGxpbmUgaW4gdGhlIGJhdGNoIHByb21wdHM6KiogZWFjaCBjb21taXQgYmxvY2sgY2FycmllcyBhIGAqKlJlZmVyZW5jZXM6KipgIGxpbmUsIHNvIHRoZSBtb2RlbCBzZWVzIHRoZSBjb3JyZWN0IHJlZmVyZW5jZSBldmVuIHdoZXJlIHRoZSBzdWJqZWN0IGFsb25lIGNhbm5vdCBwcm92aWRlIGl0LiBUaGUgcHJvbXB0IHJ1bGVzIG5vdyByZXF1aXJlIGV2ZXJ5IGVudHJ5IHRvIGVuZCB3aXRoIHRoZSByZWZlcmVuY2Uocykgb2YgdGhlIGNvbW1pdChzKSBpdCBjb3ZlcnMsIGNvcGllZCBleGFjdGx5IGFzIGdpdmVuLgotICoqRnVsbC1mb3JtIHZlcmlmaWNhdGlvbiBhZnRlciB0aGUgbWVyZ2Ugc3RlcDoqKiB0aGUgbWVyZ2VkIHJlc3VsdCBpcyBjaGVja2VkIGFnYWluc3QgdGhlIHJlc29sdmVkIHJlZmVyZW5jZXMgaW4gdGhlaXIgZnVsbCBgb3JnL3JlcG8jTmAgZm9ybSAoZGlnaXQtZXhhY3QsIHNvIGAjMjYwYCBpcyBub3QgY292ZXJlZCBieSBgIzI2MDNgKS4gTWF0Y2hpbmcgdGhlIGZ1bGwgZm9ybSBpbnN0ZWFkIG9mIHRoZSBiYXJlIG51bWJlciBhbHNvIGNhdGNoZXMgZ2FyYmxlZCByZXBvc2l0b3J5IG5hbWVzIHRoZSBtb2RlbCBzb21ldGltZXMgcHJvZHVjZXMgKGUuZy4gYG9zaXNtL2Fuc2lzbS3igKYjMjY1YCkuCi0gKipGaXggcGFzczoqKiBtaXNzaW5nIHJlZmVyZW5jZXMgYXJlIGxpc3RlZCB3aXRoIGEgd2FybmluZyBhbmQgc2VudCBiYWNrIHRvIENsYXVkZSwgd2hpY2ggYXR0YWNoZXMgb3IgY29ycmVjdHMgdGhlbSBvbiBtYXRjaGluZyBlbnRyaWVzIG9yIGFkZHMgbmV3IG9uZXMuCi0gKipEZXRlcm1pbmlzdGljIHJlcGFpcjoqKiB3aGF0ZXZlciBpcyBzdGlsbCBtaXNzaW5nIGFmdGVyd2FyZHMgaXMgZml4ZWQgd2l0aG91dCB0aGUgbW9kZWwg4oCUIGEgcmVmZXJlbmNlIHdob3NlIG51bWJlciBpcyBwcmVzZW50IGJ1dCBjYXJyaWVzIGEgd3JvbmcgYG9yZy9yZXBvYCBwYXJ0IGlzIG5vcm1hbGl6ZWQgaW4gcGxhY2UsIGV2ZXJ5dGhpbmcgZWxzZSBpcyBhcHBlbmRlZCBmcm9tIHRoZSBjb21taXQgc3ViamVjdCBwbHVzIGl0cyByZWZlcmVuY2UuCi0gKipSZXZlcnNlIGNoZWNrOioqIGFueSBlbnRyeSB0aGF0IHN0aWxsIGNhcnJpZXMgbm8gcmVmZXJlbmNlIGF0IGFsbCBpcyByZW1vdmVkIHdpdGggYSB3YXJuaW5nLiBTaW5jZSBldmVyeSByZWFsIGNoYW5nZSBpcyBjb3ZlcmVkIGJ5IHRoZSByZXNvbHZlZCByZWZlcmVuY2VzIGF0IHRoYXQgcG9pbnQsIHN1Y2ggYW4gZW50cnkgaXMgYSBkdXBsaWNhdGUgb3IgaGFsbHVjaW5hdGVkLiBBZnRlciB0aGlzIHN0ZXAgbm8gZW50cnkgY2FuIHJlYWNoIGBDSEFOR0VMT0cubWRgIHdpdGhvdXQgYSByZWZlcmVuY2UuCi0gKipCYXRjaCBmaWxlIGZpeDoqKiBjb21taXQgYmxvY2tzIHdlcmUgZ2x1ZWQgdG9nZXRoZXIgYXMgYC0tLSMjIENvbW1pdDog4oCmYCBiZWNhdXNlIGNvbW1hbmQgc3Vic3RpdHV0aW9uIHN0cmlwcyB0cmFpbGluZyBuZXdsaW5lczsgdGhlIHNlcGFyYXRvciBiZXR3ZWVuIGJsb2NrcyBpcyByZXN0b3JlZC4KClJlZmVyZW5jZXMgYXJlIHRha2VuIGZyb20gY29tbWl0IHN1YmplY3RzIG9ubHkgKHNxdWFzaC1tZXJnZSBjb252ZW50aW9uKSwgbm90IGJvZGllcywgYmVjYXVzZSBSZW5vdmF0ZSBib2RpZXMgb2Z0ZW4gY29udGFpbiBgI05gIG51bWJlcnMgb2YgdXBzdHJlYW0gcmVwb3NpdG9yaWVzIHRoYXQgd291bGQgcHJvZHVjZSBmYWxzZSBtYXRjaGVzLiBXaXRob3V0IGFuIGF1dGhlbnRpY2F0ZWQgYGdoYCwgY29tbWl0cyB3aXRob3V0IGEgc3ViamVjdCByZWZlcmVuY2UgZmFsbCBiYWNrIHRvIHRoZWlyIGNvbW1pdCBoYXNoOyB0aGUgc2NyaXB0IHdhcm5zIGFib3V0IHRoaXMgb25jZS4KClRoZSB2ZXJpZmljYXRpb24gcnVucyBwZXIgdGFnIGluIGAtLWF1dG9gL2AtLWZyb21gIG1vZGUsIGJlZm9yZSB0aGUgZW50cnkgaXMgaW5zZXJ0ZWQgaW50byBgQ0hBTkdFTE9HLm1kYCwgc28gaXQgYWxzbyBhcHBsaWVzIGJlZm9yZSBgLS1jb21taXRgL2AtLXByYC4KCiMjIFRlc3RpbmcKClZlcmlmaWVkIGVuZC10by1lbmQgaW4gYSB0aHJvd2F3YXkgY2xvbmUgb2YgYG9zaXNtL2Fuc2libGUtY29sbGVjdGlvbi12YWxpZGF0aW9uc2Agd2l0aCBhIGZha2UgYGNsYXVkZWAgYmluYXJ5IHJldHVybmluZyBhIGRlbGliZXJhdGVseSBmbGF3ZWQgY2hhbmdlbG9nIChhbiBlbnRyeSB3aXRob3V0IGEgcmVmZXJlbmNlIGZvciB0aGUgcmViYXNlLW1lcmdlZCBmb3JrLVBSIGZpeCwgYSBnYXJibGVkIGBvc2lzbS9hbnNpc20t4oCmIzI2NWAgcmVmZXJlbmNlLCBhIGhhbGx1Y2luYXRlZCBlbnRyeSk6IHRoZSBtaXNzaW5nIFBSIHdhcyByZXNvbHZlZCB2aWEgdGhlIEFQSSB0byBgIzI2NmAgYW5kIGFwcGVuZGVkLCB0aGUgZ2FyYmxlZCByZWZlcmVuY2Ugd2FzIG5vcm1hbGl6ZWQgaW4gcGxhY2UsIGFuZCB0aGUgdW5yZWZlcmVuY2VkIGVudHJpZXMgd2VyZSByZW1vdmVkLiBUaGUgaGFwcHkgcGF0aCAoY29ycmVjdCBtb2RlbCBvdXRwdXQpIHBhc3NlcyB3aXRob3V0IGFueSBpbnRlcnZlbnRpb24sIGFuZCB3aXRoIGBnaGAgdW5hdmFpbGFibGUgdGhlIGNvbW1pdC1oYXNoIGZhbGxiYWNrIGtpY2tzIGluLgoK8J+kliBHZW5lcmF0ZWQgd2l0aCBbQ2xhdWRlIENvZGVdKGh0dHBzOi8vY2xhdWRlLmNvbS9jbGF1ZGUtY29kZSkK
      patchset: b7aa388e517408e8fd08b39e9333b0a62fab36a2
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 71b711c422c10c242a8f785dc6d41ed9d12e9cd3
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
          trusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 1d71e58c93442038e695a5d883d57a603182c7ae
          untrusted/project_0/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 71b711c422c10c242a8f785dc6d41ed9d12e9cd3
          untrusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 1d71e58c93442038e695a5d883d57a603182c7ae
        playbooks:
        - path: untrusted/project_0/github.com/osism/openinfra-zuul-jobs/playbooks/tox/run.yaml
          roles:
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_0/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_0/zuul-config/roles
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_1/openinfra-zuul-jobs
            link_target: untrusted/project_0/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_1/openinfra-zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_2/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
      post_review: false
      post_timeout: 1800
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/release
        name: osism/release
        short_name: release
        src_dir: src/github.com/osism/release
      projects:
        github.com/osism/release:
          canonical_hostname: github.com
          canonical_name: github.com/osism/release
          checkout: main
          checkout_description: zuul branch
          commit: 2040fe734c4d489fcb4888885e78cc9c78395bd4
          name: osism/release
          required: false
          short_name: release
          src_dir: src/github.com/osism/release
      ref: refs/pull/2605/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
