all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:feda:f4d5
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 1aaa6aae-27c6-4768-bc54-6465434f4cb4
        host_id: 5afd8fc909abddfe2ce3a956a91bbe56629648b7209fd0acfa541862
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:feda:f4d5
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.101
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.34
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:feda:f4d5
        region: null
        slot: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job python-black explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#54>'
      - '<Job python-black explicit: None implied: None source: osism/release/.zuul.yaml@main#14>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: c7457e82717d47f0bd400719b39dfc7d
      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. This makes the reference
          mandatory and, more importantly, verifies it deterministically.\n\n## Changes\n\n-
          **Prompt rules (batch + merge):** every entry that originates from a PR/issue
          must end with its reference in parentheses (`org/repo#123`); an entry covering
          several PRs lists all references (`org/repo#123, org/repo#456`); merging
          batches must never drop a reference.\n- **Deterministic verification after
          the merge step:** the script extracts all `#N` references from the commit
          subjects of the release range and checks that each number appears in the
          generated entry. The check is digit-exact, so `#260` is not considered covered
          by `#2603`.\n- **Fix pass:** missing references are listed with a warning
          and sent back to Claude, which attaches them to matching entries or adds
          new ones.\n- **Deterministic fallback:** if references are still missing
          after the fix pass, the script appends them itself from the commit subject
          plus `(org/repo#N)` \u2014 the guarantee holds no matter what the model
          returns.\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.\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\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/release/pull/2605
        commit_id: 9bf39d2e44444fc719f06a6498ff70d8cf800f73
        patchset: 9bf39d2e44444fc719f06a6498ff70d8cf800f73
        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: 0b3e50d74534445e9b55cb17f23e65d6
      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. This makes the reference
          mandatory and, more importantly, verifies it deterministically.\n\n## Changes\n\n-
          **Prompt rules (batch + merge):** every entry that originates from a PR/issue
          must end with its reference in parentheses (`org/repo#123`); an entry covering
          several PRs lists all references (`org/repo#123, org/repo#456`); merging
          batches must never drop a reference.\n- **Deterministic verification after
          the merge step:** the script extracts all `#N` references from the commit
          subjects of the release range and checks that each number appears in the
          generated entry. The check is digit-exact, so `#260` is not considered covered
          by `#2603`.\n- **Fix pass:** missing references are listed with a warning
          and sent back to Claude, which attaches them to matching entries or adds
          new ones.\n- **Deterministic fallback:** if references are still missing
          after the fix pass, the script appends them itself from the commit subject
          plus `(org/repo#N)` \u2014 the guarantee holds no matter what the model
          returns.\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.\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\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/release/pull/2605
        commit_id: 9bf39d2e44444fc719f06a6498ff70d8cf800f73
        patchset: 9bf39d2e44444fc719f06a6498ff70d8cf800f73
        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. This makes the reference
        mandatory and, more importantly, verifies it deterministically.\n\n## Changes\n\n-
        **Prompt rules (batch + merge):** every entry that originates from a PR/issue
        must end with its reference in parentheses (`org/repo#123`); an entry covering
        several PRs lists all references (`org/repo#123, org/repo#456`); merging batches
        must never drop a reference.\n- **Deterministic verification after the merge
        step:** the script extracts all `#N` references from the commit subjects of
        the release range and checks that each number appears in the generated entry.
        The check is digit-exact, so `#260` is not considered covered by `#2603`.\n-
        **Fix pass:** missing references are listed with a warning and sent back to
        Claude, which attaches them to matching entries or adds new ones.\n- **Deterministic
        fallback:** if references are still missing after the fix pass, the script
        appends them itself from the commit subject plus `(org/repo#N)` \u2014 the
        guarantee holds no matter what the model returns.\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.\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\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)\n"
      change_url: https://github.com/osism/release/pull/2605
      child_jobs: []
      commit_id: 9bf39d2e44444fc719f06a6498ff70d8cf800f73
      event_id: 9ee87f10-84da-11f1-9991-9fc1eb2a132d
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/c7457e82717d47f0bd400719b39dfc7d/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/c7457e82717d47f0bd400719b39dfc7d/work/logs
        result_data_file: /var/lib/zuul/builds/c7457e82717d47f0bd400719b39dfc7d/work/results.json
        src_root: /var/lib/zuul/builds/c7457e82717d47f0bd400719b39dfc7d/work/src
        work_root: /var/lib/zuul/builds/c7457e82717d47f0bd400719b39dfc7d/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. This makes the reference
          mandatory and, more importantly, verifies it deterministically.\n\n## Changes\n\n-
          **Prompt rules (batch + merge):** every entry that originates from a PR/issue
          must end with its reference in parentheses (`org/repo#123`); an entry covering
          several PRs lists all references (`org/repo#123, org/repo#456`); merging
          batches must never drop a reference.\n- **Deterministic verification after
          the merge step:** the script extracts all `#N` references from the commit
          subjects of the release range and checks that each number appears in the
          generated entry. The check is digit-exact, so `#260` is not considered covered
          by `#2603`.\n- **Fix pass:** missing references are listed with a warning
          and sent back to Claude, which attaches them to matching entries or adds
          new ones.\n- **Deterministic fallback:** if references are still missing
          after the fix pass, the script appends them itself from the commit subject
          plus `(org/repo#N)` \u2014 the guarantee holds no matter what the model
          returns.\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.\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\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/release/pull/2605
        commit_id: 9bf39d2e44444fc719f06a6498ff70d8cf800f73
        patchset: 9bf39d2e44444fc719f06a6498ff70d8cf800f73
        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: python-black
      jobtags: []
      max_attempts: 3
      message: Y2hhbmdlbG9nOiBndWFyYW50ZWUgUFIvaXNzdWUgcmVmZXJlbmNlcyBpbiBnZW5lcmF0ZWQgZW50cmllcwoKVGhlIGNoYW5nZWxvZyBnZW5lcmF0b3Igb25seSBhc2tlZCB0aGUgbW9kZWwgdG8gYXBwZW5kIGEgUFIgcmVmZXJlbmNlIGlmIGl0IG5vdGljZWQgb25lIGluIHRoZSBjb21taXQgbWVzc2FnZSwgc28gZW50cmllcyBjb3VsZCBzaWxlbnRseSBsYW5kIGluIGBDSEFOR0VMT0cubWRgIHdpdGhvdXQgYW55IHBvaW50ZXIgdG8gdGhlIFBSIG9yIGlzc3VlIHRoZXkgY2FtZSBmcm9tLiBUaGlzIG1ha2VzIHRoZSByZWZlcmVuY2UgbWFuZGF0b3J5IGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgdmVyaWZpZXMgaXQgZGV0ZXJtaW5pc3RpY2FsbHkuCgojIyBDaGFuZ2VzCgotICoqUHJvbXB0IHJ1bGVzIChiYXRjaCArIG1lcmdlKToqKiBldmVyeSBlbnRyeSB0aGF0IG9yaWdpbmF0ZXMgZnJvbSBhIFBSL2lzc3VlIG11c3QgZW5kIHdpdGggaXRzIHJlZmVyZW5jZSBpbiBwYXJlbnRoZXNlcyAoYG9yZy9yZXBvIzEyM2ApOyBhbiBlbnRyeSBjb3ZlcmluZyBzZXZlcmFsIFBScyBsaXN0cyBhbGwgcmVmZXJlbmNlcyAoYG9yZy9yZXBvIzEyMywgb3JnL3JlcG8jNDU2YCk7IG1lcmdpbmcgYmF0Y2hlcyBtdXN0IG5ldmVyIGRyb3AgYSByZWZlcmVuY2UuCi0gKipEZXRlcm1pbmlzdGljIHZlcmlmaWNhdGlvbiBhZnRlciB0aGUgbWVyZ2Ugc3RlcDoqKiB0aGUgc2NyaXB0IGV4dHJhY3RzIGFsbCBgI05gIHJlZmVyZW5jZXMgZnJvbSB0aGUgY29tbWl0IHN1YmplY3RzIG9mIHRoZSByZWxlYXNlIHJhbmdlIGFuZCBjaGVja3MgdGhhdCBlYWNoIG51bWJlciBhcHBlYXJzIGluIHRoZSBnZW5lcmF0ZWQgZW50cnkuIFRoZSBjaGVjayBpcyBkaWdpdC1leGFjdCwgc28gYCMyNjBgIGlzIG5vdCBjb25zaWRlcmVkIGNvdmVyZWQgYnkgYCMyNjAzYC4KLSAqKkZpeCBwYXNzOioqIG1pc3NpbmcgcmVmZXJlbmNlcyBhcmUgbGlzdGVkIHdpdGggYSB3YXJuaW5nIGFuZCBzZW50IGJhY2sgdG8gQ2xhdWRlLCB3aGljaCBhdHRhY2hlcyB0aGVtIHRvIG1hdGNoaW5nIGVudHJpZXMgb3IgYWRkcyBuZXcgb25lcy4KLSAqKkRldGVybWluaXN0aWMgZmFsbGJhY2s6KiogaWYgcmVmZXJlbmNlcyBhcmUgc3RpbGwgbWlzc2luZyBhZnRlciB0aGUgZml4IHBhc3MsIHRoZSBzY3JpcHQgYXBwZW5kcyB0aGVtIGl0c2VsZiBmcm9tIHRoZSBjb21taXQgc3ViamVjdCBwbHVzIGAob3JnL3JlcG8jTilgIOKAlCB0aGUgZ3VhcmFudGVlIGhvbGRzIG5vIG1hdHRlciB3aGF0IHRoZSBtb2RlbCByZXR1cm5zLgoKUmVmZXJlbmNlcyBhcmUgdGFrZW4gZnJvbSBjb21taXQgc3ViamVjdHMgb25seSAoc3F1YXNoLW1lcmdlIGNvbnZlbnRpb24pLCBub3QgYm9kaWVzLCBiZWNhdXNlIFJlbm92YXRlIGJvZGllcyBvZnRlbiBjb250YWluIGAjTmAgbnVtYmVycyBvZiB1cHN0cmVhbSByZXBvc2l0b3JpZXMgdGhhdCB3b3VsZCBwcm9kdWNlIGZhbHNlIG1hdGNoZXMuCgpUaGUgdmVyaWZpY2F0aW9uIHJ1bnMgcGVyIHRhZyBpbiBgLS1hdXRvYC9gLS1mcm9tYCBtb2RlLCBiZWZvcmUgdGhlIGVudHJ5IGlzIGluc2VydGVkIGludG8gYENIQU5HRUxPRy5tZGAsIHNvIGl0IGFsc28gYXBwbGllcyBiZWZvcmUgYC0tY29tbWl0YC9gLS1wcmAuCgrwn6SWIEdlbmVyYXRlZCB3aXRoIFtDbGF1ZGUgQ29kZV0oaHR0cHM6Ly9jbGF1ZGUuY29tL2NsYXVkZS1jb2RlKQo=
      patchset: 9bf39d2e44444fc719f06a6498ff70d8cf800f73
      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/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 1d71e58c93442038e695a5d883d57a603182c7ae
          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/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/python-black/run.yml
          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: project default branch
            link_name: ansible/playbook_0/role_1/openinfra-zuul-jobs
            link_target: untrusted/project_2/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_1/openinfra-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/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: 0323e470e5229a88517a8792e5bb436463e853c2
          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
