all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:feb2:e58a
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 44532c02-1ead-4785-bef8-271e78bed55e
        host_id: 5afd8fc909abddfe2ce3a956a91bbe56629648b7209fd0acfa541862
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:feb2:e58a
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.110
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.112
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:feb2:e58a
        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: 31c15d473ea64c65b0b8b2f7116484b4
      build_refs:
      - branch: main
        change: '2608'
        change_message: "changelog: strip model meta-commentary from generated entries\n\nIn
          osism/ansible-collection-commons#868 two `Note: \u2026` lines leaked into
          the generated `CHANGELOG.md`, in which the model commented on its own merge
          process (\"only one batch existed \u2014 there was no Batch 2 to merge against\",
          \"batch1 had a typo \u2014 I corrected it\"). Two gaps let them through:
          the preamble strip only removes text *before* the first `## [v` header,
          not trailing commentary, and the reference checks only inspect `- ` entry
          lines, so free-standing paragraphs pass unnoticed. This makes sure such
          meta-commentary can never reach `CHANGELOG.md` again.\n\n## Changes\n\n-
          **Deterministic sanitize filter (the hard guarantee):** before `CHANGELOG.md`
          is touched, the final entry is reduced to pure changelog lines \u2014 version
          header, `### ` category headers, `- ` entries, blank lines. Anything else
          is model commentary, is reported with a warning and removed; leftover double
          blank lines are squeezed with `cat -s`.\n- **Prompt hardening:** the batch,
          merge and fix prompts now explicitly forbid notes or remarks about the input,
          the batches, or the model's own corrections \u2014 not before, between,
          or after the entries \u2014 and require every non-empty line to be a category
          header or an entry.\n- **Skip the merge pass for a single batch:** with
          only one batch there is nothing to merge; the version header is prepended
          deterministically instead (any stray `## [v` line in the batch output is
          dropped first). A merge call with nothing to merge is exactly the situation
          that produced the \"there was no Batch 2\" remark, and the extra Claude
          call served no purpose.\n\n## Testing\n\n`bash -n` passes. The sanitize
          filter was run against the actual generated content of osism/ansible-collection-commons#868:
          it removes exactly the two `Note:` lines and keeps all 58 legitimate lines
          (headers, entries, blanks) untouched.\n\n\U0001F916 Generated with [Claude
          Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/release/pull/2608
        commit_id: 1054a9e5c99d2c79ab95381eee07e449e7554a68
        patchset: 1054a9e5c99d2c79ab95381eee07e449e7554a68
        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: a7f82b95e91b4a9f98bcbf8c7d2c7fe3
      buildset_refs:
      - branch: main
        change: '2608'
        change_message: "changelog: strip model meta-commentary from generated entries\n\nIn
          osism/ansible-collection-commons#868 two `Note: \u2026` lines leaked into
          the generated `CHANGELOG.md`, in which the model commented on its own merge
          process (\"only one batch existed \u2014 there was no Batch 2 to merge against\",
          \"batch1 had a typo \u2014 I corrected it\"). Two gaps let them through:
          the preamble strip only removes text *before* the first `## [v` header,
          not trailing commentary, and the reference checks only inspect `- ` entry
          lines, so free-standing paragraphs pass unnoticed. This makes sure such
          meta-commentary can never reach `CHANGELOG.md` again.\n\n## Changes\n\n-
          **Deterministic sanitize filter (the hard guarantee):** before `CHANGELOG.md`
          is touched, the final entry is reduced to pure changelog lines \u2014 version
          header, `### ` category headers, `- ` entries, blank lines. Anything else
          is model commentary, is reported with a warning and removed; leftover double
          blank lines are squeezed with `cat -s`.\n- **Prompt hardening:** the batch,
          merge and fix prompts now explicitly forbid notes or remarks about the input,
          the batches, or the model's own corrections \u2014 not before, between,
          or after the entries \u2014 and require every non-empty line to be a category
          header or an entry.\n- **Skip the merge pass for a single batch:** with
          only one batch there is nothing to merge; the version header is prepended
          deterministically instead (any stray `## [v` line in the batch output is
          dropped first). A merge call with nothing to merge is exactly the situation
          that produced the \"there was no Batch 2\" remark, and the extra Claude
          call served no purpose.\n\n## Testing\n\n`bash -n` passes. The sanitize
          filter was run against the actual generated content of osism/ansible-collection-commons#868:
          it removes exactly the two `Note:` lines and keeps all 58 legitimate lines
          (headers, entries, blanks) untouched.\n\n\U0001F916 Generated with [Claude
          Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/release/pull/2608
        commit_id: 1054a9e5c99d2c79ab95381eee07e449e7554a68
        patchset: 1054a9e5c99d2c79ab95381eee07e449e7554a68
        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: '2608'
      change_message: "changelog: strip model meta-commentary from generated entries\n\nIn
        osism/ansible-collection-commons#868 two `Note: \u2026` lines leaked into
        the generated `CHANGELOG.md`, in which the model commented on its own merge
        process (\"only one batch existed \u2014 there was no Batch 2 to merge against\",
        \"batch1 had a typo \u2014 I corrected it\"). Two gaps let them through: the
        preamble strip only removes text *before* the first `## [v` header, not trailing
        commentary, and the reference checks only inspect `- ` entry lines, so free-standing
        paragraphs pass unnoticed. This makes sure such meta-commentary can never
        reach `CHANGELOG.md` again.\n\n## Changes\n\n- **Deterministic sanitize filter
        (the hard guarantee):** before `CHANGELOG.md` is touched, the final entry
        is reduced to pure changelog lines \u2014 version header, `### ` category
        headers, `- ` entries, blank lines. Anything else is model commentary, is
        reported with a warning and removed; leftover double blank lines are squeezed
        with `cat -s`.\n- **Prompt hardening:** the batch, merge and fix prompts now
        explicitly forbid notes or remarks about the input, the batches, or the model's
        own corrections \u2014 not before, between, or after the entries \u2014 and
        require every non-empty line to be a category header or an entry.\n- **Skip
        the merge pass for a single batch:** with only one batch there is nothing
        to merge; the version header is prepended deterministically instead (any stray
        `## [v` line in the batch output is dropped first). A merge call with nothing
        to merge is exactly the situation that produced the \"there was no Batch 2\"
        remark, and the extra Claude call served no purpose.\n\n## Testing\n\n`bash
        -n` passes. The sanitize filter was run against the actual generated content
        of osism/ansible-collection-commons#868: it removes exactly the two `Note:`
        lines and keeps all 58 legitimate lines (headers, entries, blanks) untouched.\n\n\U0001F916
        Generated with [Claude Code](https://claude.com/claude-code)\n"
      change_url: https://github.com/osism/release/pull/2608
      child_jobs: []
      commit_id: 1054a9e5c99d2c79ab95381eee07e449e7554a68
      event_id: 5d3c5e00-84f4-11f1-9100-4ddb8b8ce588
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/31c15d473ea64c65b0b8b2f7116484b4/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/31c15d473ea64c65b0b8b2f7116484b4/work/logs
        result_data_file: /var/lib/zuul/builds/31c15d473ea64c65b0b8b2f7116484b4/work/results.json
        src_root: /var/lib/zuul/builds/31c15d473ea64c65b0b8b2f7116484b4/work/src
        work_root: /var/lib/zuul/builds/31c15d473ea64c65b0b8b2f7116484b4/work
      include_vars: []
      items:
      - branch: main
        change: '2608'
        change_message: "changelog: strip model meta-commentary from generated entries\n\nIn
          osism/ansible-collection-commons#868 two `Note: \u2026` lines leaked into
          the generated `CHANGELOG.md`, in which the model commented on its own merge
          process (\"only one batch existed \u2014 there was no Batch 2 to merge against\",
          \"batch1 had a typo \u2014 I corrected it\"). Two gaps let them through:
          the preamble strip only removes text *before* the first `## [v` header,
          not trailing commentary, and the reference checks only inspect `- ` entry
          lines, so free-standing paragraphs pass unnoticed. This makes sure such
          meta-commentary can never reach `CHANGELOG.md` again.\n\n## Changes\n\n-
          **Deterministic sanitize filter (the hard guarantee):** before `CHANGELOG.md`
          is touched, the final entry is reduced to pure changelog lines \u2014 version
          header, `### ` category headers, `- ` entries, blank lines. Anything else
          is model commentary, is reported with a warning and removed; leftover double
          blank lines are squeezed with `cat -s`.\n- **Prompt hardening:** the batch,
          merge and fix prompts now explicitly forbid notes or remarks about the input,
          the batches, or the model's own corrections \u2014 not before, between,
          or after the entries \u2014 and require every non-empty line to be a category
          header or an entry.\n- **Skip the merge pass for a single batch:** with
          only one batch there is nothing to merge; the version header is prepended
          deterministically instead (any stray `## [v` line in the batch output is
          dropped first). A merge call with nothing to merge is exactly the situation
          that produced the \"there was no Batch 2\" remark, and the extra Claude
          call served no purpose.\n\n## Testing\n\n`bash -n` passes. The sanitize
          filter was run against the actual generated content of osism/ansible-collection-commons#868:
          it removes exactly the two `Note:` lines and keeps all 58 legitimate lines
          (headers, entries, blanks) untouched.\n\n\U0001F916 Generated with [Claude
          Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/release/pull/2608
        commit_id: 1054a9e5c99d2c79ab95381eee07e449e7554a68
        patchset: 1054a9e5c99d2c79ab95381eee07e449e7554a68
        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: Y2hhbmdlbG9nOiBzdHJpcCBtb2RlbCBtZXRhLWNvbW1lbnRhcnkgZnJvbSBnZW5lcmF0ZWQgZW50cmllcwoKSW4gb3Npc20vYW5zaWJsZS1jb2xsZWN0aW9uLWNvbW1vbnMjODY4IHR3byBgTm90ZTog4oCmYCBsaW5lcyBsZWFrZWQgaW50byB0aGUgZ2VuZXJhdGVkIGBDSEFOR0VMT0cubWRgLCBpbiB3aGljaCB0aGUgbW9kZWwgY29tbWVudGVkIG9uIGl0cyBvd24gbWVyZ2UgcHJvY2VzcyAoIm9ubHkgb25lIGJhdGNoIGV4aXN0ZWQg4oCUIHRoZXJlIHdhcyBubyBCYXRjaCAyIHRvIG1lcmdlIGFnYWluc3QiLCAiYmF0Y2gxIGhhZCBhIHR5cG8g4oCUIEkgY29ycmVjdGVkIGl0IikuIFR3byBnYXBzIGxldCB0aGVtIHRocm91Z2g6IHRoZSBwcmVhbWJsZSBzdHJpcCBvbmx5IHJlbW92ZXMgdGV4dCAqYmVmb3JlKiB0aGUgZmlyc3QgYCMjIFt2YCBoZWFkZXIsIG5vdCB0cmFpbGluZyBjb21tZW50YXJ5LCBhbmQgdGhlIHJlZmVyZW5jZSBjaGVja3Mgb25seSBpbnNwZWN0IGAtIGAgZW50cnkgbGluZXMsIHNvIGZyZWUtc3RhbmRpbmcgcGFyYWdyYXBocyBwYXNzIHVubm90aWNlZC4gVGhpcyBtYWtlcyBzdXJlIHN1Y2ggbWV0YS1jb21tZW50YXJ5IGNhbiBuZXZlciByZWFjaCBgQ0hBTkdFTE9HLm1kYCBhZ2Fpbi4KCiMjIENoYW5nZXMKCi0gKipEZXRlcm1pbmlzdGljIHNhbml0aXplIGZpbHRlciAodGhlIGhhcmQgZ3VhcmFudGVlKToqKiBiZWZvcmUgYENIQU5HRUxPRy5tZGAgaXMgdG91Y2hlZCwgdGhlIGZpbmFsIGVudHJ5IGlzIHJlZHVjZWQgdG8gcHVyZSBjaGFuZ2Vsb2cgbGluZXMg4oCUIHZlcnNpb24gaGVhZGVyLCBgIyMjIGAgY2F0ZWdvcnkgaGVhZGVycywgYC0gYCBlbnRyaWVzLCBibGFuayBsaW5lcy4gQW55dGhpbmcgZWxzZSBpcyBtb2RlbCBjb21tZW50YXJ5LCBpcyByZXBvcnRlZCB3aXRoIGEgd2FybmluZyBhbmQgcmVtb3ZlZDsgbGVmdG92ZXIgZG91YmxlIGJsYW5rIGxpbmVzIGFyZSBzcXVlZXplZCB3aXRoIGBjYXQgLXNgLgotICoqUHJvbXB0IGhhcmRlbmluZzoqKiB0aGUgYmF0Y2gsIG1lcmdlIGFuZCBmaXggcHJvbXB0cyBub3cgZXhwbGljaXRseSBmb3JiaWQgbm90ZXMgb3IgcmVtYXJrcyBhYm91dCB0aGUgaW5wdXQsIHRoZSBiYXRjaGVzLCBvciB0aGUgbW9kZWwncyBvd24gY29ycmVjdGlvbnMg4oCUIG5vdCBiZWZvcmUsIGJldHdlZW4sIG9yIGFmdGVyIHRoZSBlbnRyaWVzIOKAlCBhbmQgcmVxdWlyZSBldmVyeSBub24tZW1wdHkgbGluZSB0byBiZSBhIGNhdGVnb3J5IGhlYWRlciBvciBhbiBlbnRyeS4KLSAqKlNraXAgdGhlIG1lcmdlIHBhc3MgZm9yIGEgc2luZ2xlIGJhdGNoOioqIHdpdGggb25seSBvbmUgYmF0Y2ggdGhlcmUgaXMgbm90aGluZyB0byBtZXJnZTsgdGhlIHZlcnNpb24gaGVhZGVyIGlzIHByZXBlbmRlZCBkZXRlcm1pbmlzdGljYWxseSBpbnN0ZWFkIChhbnkgc3RyYXkgYCMjIFt2YCBsaW5lIGluIHRoZSBiYXRjaCBvdXRwdXQgaXMgZHJvcHBlZCBmaXJzdCkuIEEgbWVyZ2UgY2FsbCB3aXRoIG5vdGhpbmcgdG8gbWVyZ2UgaXMgZXhhY3RseSB0aGUgc2l0dWF0aW9uIHRoYXQgcHJvZHVjZWQgdGhlICJ0aGVyZSB3YXMgbm8gQmF0Y2ggMiIgcmVtYXJrLCBhbmQgdGhlIGV4dHJhIENsYXVkZSBjYWxsIHNlcnZlZCBubyBwdXJwb3NlLgoKIyMgVGVzdGluZwoKYGJhc2ggLW5gIHBhc3Nlcy4gVGhlIHNhbml0aXplIGZpbHRlciB3YXMgcnVuIGFnYWluc3QgdGhlIGFjdHVhbCBnZW5lcmF0ZWQgY29udGVudCBvZiBvc2lzbS9hbnNpYmxlLWNvbGxlY3Rpb24tY29tbW9ucyM4Njg6IGl0IHJlbW92ZXMgZXhhY3RseSB0aGUgdHdvIGBOb3RlOmAgbGluZXMgYW5kIGtlZXBzIGFsbCA1OCBsZWdpdGltYXRlIGxpbmVzIChoZWFkZXJzLCBlbnRyaWVzLCBibGFua3MpIHVudG91Y2hlZC4KCvCfpJYgR2VuZXJhdGVkIHdpdGggW0NsYXVkZSBDb2RlXShodHRwczovL2NsYXVkZS5jb20vY2xhdWRlLWNvZGUpCg==
      patchset: 1054a9e5c99d2c79ab95381eee07e449e7554a68
      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: 2b190755d41f03319558e1798b362481ae8e3f1a
          name: osism/release
          required: false
          short_name: release
          src_dir: src/github.com/osism/release
      ref: refs/pull/2608/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
