all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe39:f4e5
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: b1c4682d-4fc5-4cb4-a642-651e56841a0f
        host_id: d2c528664e1bd332192bb574345deb0c6c7158061222e4a6c036b5ef
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe39:f4e5
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.3
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.226
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe39:f4e5
        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 mypy explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#42>'
      - '<Job mypy explicit: None implied: None source: osism/python-osism/.zuul.yaml@main#143>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 9d45454ff365469f834c9bbafde3111d
      build_refs:
      - branch: main
        change: '2411'
        change_message: "Integration test: API facts endpoints (FastAPI TestClient
          + Redis)\n\n## What\n\nIntegration coverage for the read-only inventory-facts
          HTTP endpoints, which\nread straight from Redis:\n\n- `GET /v1/inventory/hosts/{host}/facts`
          (`osism/api.py:927`)\n- `GET /v1/inventory/hosts/{host}/facts/{fact}` (`osism/api.py:966`)\n\nBoth
          call `utils.redis.get(\"ansible_facts{host}\")`. Driving them through\n`fastapi.testclient.TestClient`
          against the live Redis exercises the API\u2194Redis\nread path end-to-end.
          The suite is skipped automatically when Redis is not\nreachable, like the
          other modules under `tests/integration/`.\n\nPart of #2400. Follow-up to
          #2368.\n\n## Changes (in commit order)\n\n1. **Add httpx to dev dependencies
          for FastAPI TestClient** \u2014 `fastapi.testclient.TestClient`\n   needs
          `httpx` as its transport. Adds `httpx = \"==0.28.1\"` to `[dev-packages]`\n
          \  and regenerates `Pipfile.lock` so `pipenv install --dev --deploy` keeps\n
          \  verifying the lock in CI. The lock diff adds only `httpx` and its transitives\n
          \  (`httpcore`, `h11`, `anyio`, `sniffio`, `idna`, `certifi`, `typing-extensions`)\n
          \  to `develop`; no runtime pins move.\n\n2. **Add integration tests for
          inventory facts API endpoints** \u2014 new module\n   `tests/integration/test_api_facts.py`.
          Each test seeds the exact\n   `ansible_facts<host>` key (UUID-based host)
          and deletes it in teardown.\n   Covers every Scope item from the issue:\n
          \  - parsed facts returned with the correct `count` and `from_cache` flag;\n
          \  - a single fact value;\n   - unknown fact \u2192 404;\n   - unknown host
          \u2192 404 (both endpoints);\n   - malformed JSON in Redis \u2192 500.\n\n##
          Notes\n\n- Importing `osism.api` wires the event bridge to Redis at import
          time, so the\n  import is deferred into the `client` fixture \u2014 fine
          in the integration env\n  where Redis is up (and the suite is skipped without
          it).\n- The README \"Running integration tests\" overview sentence is shared
          by all\n  #2400 siblings; it is intentionally left untouched here to avoid
          per-issue\n  merge churn. The existing warning block already covers the
          per-run UUID keys.\n\n## Test plan\n\n- CI runs `tests/integration` with
          a live Redis (`playbooks/test-integration.yml`,\n  `OSISM_REQUIRE_REDIS=1`).
          Per repo convention the tests run in CI, not locally.\n- Verified locally:
          `pipenv verify` (lock in sync) and `flake8` on the new file.\n\nCloses #2406\n\n---\n\n_Implemented
          by [planwerk-review](https://github.com/planwerk/planwerk-review) f1c04d7
          with Claude:claude-opus-4-8_\n"
        change_url: https://github.com/osism/python-osism/pull/2411
        commit_id: 1845401cdf51503528994f91e374c9ab72fa9894
        patchset: 1845401cdf51503528994f91e374c9ab72fa9894
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
        src_dir: src/github.com/osism/python-osism
        topic: null
      buildset: 77a29bdb46d04a809b65d6d93c943810
      buildset_refs:
      - branch: main
        change: '2411'
        change_message: "Integration test: API facts endpoints (FastAPI TestClient
          + Redis)\n\n## What\n\nIntegration coverage for the read-only inventory-facts
          HTTP endpoints, which\nread straight from Redis:\n\n- `GET /v1/inventory/hosts/{host}/facts`
          (`osism/api.py:927`)\n- `GET /v1/inventory/hosts/{host}/facts/{fact}` (`osism/api.py:966`)\n\nBoth
          call `utils.redis.get(\"ansible_facts{host}\")`. Driving them through\n`fastapi.testclient.TestClient`
          against the live Redis exercises the API\u2194Redis\nread path end-to-end.
          The suite is skipped automatically when Redis is not\nreachable, like the
          other modules under `tests/integration/`.\n\nPart of #2400. Follow-up to
          #2368.\n\n## Changes (in commit order)\n\n1. **Add httpx to dev dependencies
          for FastAPI TestClient** \u2014 `fastapi.testclient.TestClient`\n   needs
          `httpx` as its transport. Adds `httpx = \"==0.28.1\"` to `[dev-packages]`\n
          \  and regenerates `Pipfile.lock` so `pipenv install --dev --deploy` keeps\n
          \  verifying the lock in CI. The lock diff adds only `httpx` and its transitives\n
          \  (`httpcore`, `h11`, `anyio`, `sniffio`, `idna`, `certifi`, `typing-extensions`)\n
          \  to `develop`; no runtime pins move.\n\n2. **Add integration tests for
          inventory facts API endpoints** \u2014 new module\n   `tests/integration/test_api_facts.py`.
          Each test seeds the exact\n   `ansible_facts<host>` key (UUID-based host)
          and deletes it in teardown.\n   Covers every Scope item from the issue:\n
          \  - parsed facts returned with the correct `count` and `from_cache` flag;\n
          \  - a single fact value;\n   - unknown fact \u2192 404;\n   - unknown host
          \u2192 404 (both endpoints);\n   - malformed JSON in Redis \u2192 500.\n\n##
          Notes\n\n- Importing `osism.api` wires the event bridge to Redis at import
          time, so the\n  import is deferred into the `client` fixture \u2014 fine
          in the integration env\n  where Redis is up (and the suite is skipped without
          it).\n- The README \"Running integration tests\" overview sentence is shared
          by all\n  #2400 siblings; it is intentionally left untouched here to avoid
          per-issue\n  merge churn. The existing warning block already covers the
          per-run UUID keys.\n\n## Test plan\n\n- CI runs `tests/integration` with
          a live Redis (`playbooks/test-integration.yml`,\n  `OSISM_REQUIRE_REDIS=1`).
          Per repo convention the tests run in CI, not locally.\n- Verified locally:
          `pipenv verify` (lock in sync) and `flake8` on the new file.\n\nCloses #2406\n\n---\n\n_Implemented
          by [planwerk-review](https://github.com/planwerk/planwerk-review) f1c04d7
          with Claude:claude-opus-4-8_\n"
        change_url: https://github.com/osism/python-osism/pull/2411
        commit_id: 1845401cdf51503528994f91e374c9ab72fa9894
        patchset: 1845401cdf51503528994f91e374c9ab72fa9894
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
        src_dir: src/github.com/osism/python-osism
        topic: null
      change: '2411'
      change_message: "Integration test: API facts endpoints (FastAPI TestClient +
        Redis)\n\n## What\n\nIntegration coverage for the read-only inventory-facts
        HTTP endpoints, which\nread straight from Redis:\n\n- `GET /v1/inventory/hosts/{host}/facts`
        (`osism/api.py:927`)\n- `GET /v1/inventory/hosts/{host}/facts/{fact}` (`osism/api.py:966`)\n\nBoth
        call `utils.redis.get(\"ansible_facts{host}\")`. Driving them through\n`fastapi.testclient.TestClient`
        against the live Redis exercises the API\u2194Redis\nread path end-to-end.
        The suite is skipped automatically when Redis is not\nreachable, like the
        other modules under `tests/integration/`.\n\nPart of #2400. Follow-up to #2368.\n\n##
        Changes (in commit order)\n\n1. **Add httpx to dev dependencies for FastAPI
        TestClient** \u2014 `fastapi.testclient.TestClient`\n   needs `httpx` as its
        transport. Adds `httpx = \"==0.28.1\"` to `[dev-packages]`\n   and regenerates
        `Pipfile.lock` so `pipenv install --dev --deploy` keeps\n   verifying the
        lock in CI. The lock diff adds only `httpx` and its transitives\n   (`httpcore`,
        `h11`, `anyio`, `sniffio`, `idna`, `certifi`, `typing-extensions`)\n   to
        `develop`; no runtime pins move.\n\n2. **Add integration tests for inventory
        facts API endpoints** \u2014 new module\n   `tests/integration/test_api_facts.py`.
        Each test seeds the exact\n   `ansible_facts<host>` key (UUID-based host)
        and deletes it in teardown.\n   Covers every Scope item from the issue:\n
        \  - parsed facts returned with the correct `count` and `from_cache` flag;\n
        \  - a single fact value;\n   - unknown fact \u2192 404;\n   - unknown host
        \u2192 404 (both endpoints);\n   - malformed JSON in Redis \u2192 500.\n\n##
        Notes\n\n- Importing `osism.api` wires the event bridge to Redis at import
        time, so the\n  import is deferred into the `client` fixture \u2014 fine in
        the integration env\n  where Redis is up (and the suite is skipped without
        it).\n- The README \"Running integration tests\" overview sentence is shared
        by all\n  #2400 siblings; it is intentionally left untouched here to avoid
        per-issue\n  merge churn. The existing warning block already covers the per-run
        UUID keys.\n\n## Test plan\n\n- CI runs `tests/integration` with a live Redis
        (`playbooks/test-integration.yml`,\n  `OSISM_REQUIRE_REDIS=1`). Per repo convention
        the tests run in CI, not locally.\n- Verified locally: `pipenv verify` (lock
        in sync) and `flake8` on the new file.\n\nCloses #2406\n\n---\n\n_Implemented
        by [planwerk-review](https://github.com/planwerk/planwerk-review) f1c04d7
        with Claude:claude-opus-4-8_\n"
      change_url: https://github.com/osism/python-osism/pull/2411
      child_jobs: []
      commit_id: 1845401cdf51503528994f91e374c9ab72fa9894
      event_id: f017af90-6e4c-11f1-8b5d-1df9514091f2
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/9d45454ff365469f834c9bbafde3111d/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/9d45454ff365469f834c9bbafde3111d/work/logs
        result_data_file: /var/lib/zuul/builds/9d45454ff365469f834c9bbafde3111d/work/results.json
        src_root: /var/lib/zuul/builds/9d45454ff365469f834c9bbafde3111d/work/src
        work_root: /var/lib/zuul/builds/9d45454ff365469f834c9bbafde3111d/work
      include_vars: []
      items:
      - branch: main
        change: '2411'
        change_message: "Integration test: API facts endpoints (FastAPI TestClient
          + Redis)\n\n## What\n\nIntegration coverage for the read-only inventory-facts
          HTTP endpoints, which\nread straight from Redis:\n\n- `GET /v1/inventory/hosts/{host}/facts`
          (`osism/api.py:927`)\n- `GET /v1/inventory/hosts/{host}/facts/{fact}` (`osism/api.py:966`)\n\nBoth
          call `utils.redis.get(\"ansible_facts{host}\")`. Driving them through\n`fastapi.testclient.TestClient`
          against the live Redis exercises the API\u2194Redis\nread path end-to-end.
          The suite is skipped automatically when Redis is not\nreachable, like the
          other modules under `tests/integration/`.\n\nPart of #2400. Follow-up to
          #2368.\n\n## Changes (in commit order)\n\n1. **Add httpx to dev dependencies
          for FastAPI TestClient** \u2014 `fastapi.testclient.TestClient`\n   needs
          `httpx` as its transport. Adds `httpx = \"==0.28.1\"` to `[dev-packages]`\n
          \  and regenerates `Pipfile.lock` so `pipenv install --dev --deploy` keeps\n
          \  verifying the lock in CI. The lock diff adds only `httpx` and its transitives\n
          \  (`httpcore`, `h11`, `anyio`, `sniffio`, `idna`, `certifi`, `typing-extensions`)\n
          \  to `develop`; no runtime pins move.\n\n2. **Add integration tests for
          inventory facts API endpoints** \u2014 new module\n   `tests/integration/test_api_facts.py`.
          Each test seeds the exact\n   `ansible_facts<host>` key (UUID-based host)
          and deletes it in teardown.\n   Covers every Scope item from the issue:\n
          \  - parsed facts returned with the correct `count` and `from_cache` flag;\n
          \  - a single fact value;\n   - unknown fact \u2192 404;\n   - unknown host
          \u2192 404 (both endpoints);\n   - malformed JSON in Redis \u2192 500.\n\n##
          Notes\n\n- Importing `osism.api` wires the event bridge to Redis at import
          time, so the\n  import is deferred into the `client` fixture \u2014 fine
          in the integration env\n  where Redis is up (and the suite is skipped without
          it).\n- The README \"Running integration tests\" overview sentence is shared
          by all\n  #2400 siblings; it is intentionally left untouched here to avoid
          per-issue\n  merge churn. The existing warning block already covers the
          per-run UUID keys.\n\n## Test plan\n\n- CI runs `tests/integration` with
          a live Redis (`playbooks/test-integration.yml`,\n  `OSISM_REQUIRE_REDIS=1`).
          Per repo convention the tests run in CI, not locally.\n- Verified locally:
          `pipenv verify` (lock in sync) and `flake8` on the new file.\n\nCloses #2406\n\n---\n\n_Implemented
          by [planwerk-review](https://github.com/planwerk/planwerk-review) f1c04d7
          with Claude:claude-opus-4-8_\n"
        change_url: https://github.com/osism/python-osism/pull/2411
        commit_id: 1845401cdf51503528994f91e374c9ab72fa9894
        patchset: 1845401cdf51503528994f91e374c9ab72fa9894
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
        topic: null
      job: mypy
      jobtags: []
      max_attempts: 3
      message: SW50ZWdyYXRpb24gdGVzdDogQVBJIGZhY3RzIGVuZHBvaW50cyAoRmFzdEFQSSBUZXN0Q2xpZW50ICsgUmVkaXMpCgojIyBXaGF0CgpJbnRlZ3JhdGlvbiBjb3ZlcmFnZSBmb3IgdGhlIHJlYWQtb25seSBpbnZlbnRvcnktZmFjdHMgSFRUUCBlbmRwb2ludHMsIHdoaWNoCnJlYWQgc3RyYWlnaHQgZnJvbSBSZWRpczoKCi0gYEdFVCAvdjEvaW52ZW50b3J5L2hvc3RzL3tob3N0fS9mYWN0c2AgKGBvc2lzbS9hcGkucHk6OTI3YCkKLSBgR0VUIC92MS9pbnZlbnRvcnkvaG9zdHMve2hvc3R9L2ZhY3RzL3tmYWN0fWAgKGBvc2lzbS9hcGkucHk6OTY2YCkKCkJvdGggY2FsbCBgdXRpbHMucmVkaXMuZ2V0KCJhbnNpYmxlX2ZhY3Rze2hvc3R9IilgLiBEcml2aW5nIHRoZW0gdGhyb3VnaApgZmFzdGFwaS50ZXN0Y2xpZW50LlRlc3RDbGllbnRgIGFnYWluc3QgdGhlIGxpdmUgUmVkaXMgZXhlcmNpc2VzIHRoZSBBUEnihpRSZWRpcwpyZWFkIHBhdGggZW5kLXRvLWVuZC4gVGhlIHN1aXRlIGlzIHNraXBwZWQgYXV0b21hdGljYWxseSB3aGVuIFJlZGlzIGlzIG5vdApyZWFjaGFibGUsIGxpa2UgdGhlIG90aGVyIG1vZHVsZXMgdW5kZXIgYHRlc3RzL2ludGVncmF0aW9uL2AuCgpQYXJ0IG9mICMyNDAwLiBGb2xsb3ctdXAgdG8gIzIzNjguCgojIyBDaGFuZ2VzIChpbiBjb21taXQgb3JkZXIpCgoxLiAqKkFkZCBodHRweCB0byBkZXYgZGVwZW5kZW5jaWVzIGZvciBGYXN0QVBJIFRlc3RDbGllbnQqKiDigJQgYGZhc3RhcGkudGVzdGNsaWVudC5UZXN0Q2xpZW50YAogICBuZWVkcyBgaHR0cHhgIGFzIGl0cyB0cmFuc3BvcnQuIEFkZHMgYGh0dHB4ID0gIj09MC4yOC4xImAgdG8gYFtkZXYtcGFja2FnZXNdYAogICBhbmQgcmVnZW5lcmF0ZXMgYFBpcGZpbGUubG9ja2Agc28gYHBpcGVudiBpbnN0YWxsIC0tZGV2IC0tZGVwbG95YCBrZWVwcwogICB2ZXJpZnlpbmcgdGhlIGxvY2sgaW4gQ0kuIFRoZSBsb2NrIGRpZmYgYWRkcyBvbmx5IGBodHRweGAgYW5kIGl0cyB0cmFuc2l0aXZlcwogICAoYGh0dHBjb3JlYCwgYGgxMWAsIGBhbnlpb2AsIGBzbmlmZmlvYCwgYGlkbmFgLCBgY2VydGlmaWAsIGB0eXBpbmctZXh0ZW5zaW9uc2ApCiAgIHRvIGBkZXZlbG9wYDsgbm8gcnVudGltZSBwaW5zIG1vdmUuCgoyLiAqKkFkZCBpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgaW52ZW50b3J5IGZhY3RzIEFQSSBlbmRwb2ludHMqKiDigJQgbmV3IG1vZHVsZQogICBgdGVzdHMvaW50ZWdyYXRpb24vdGVzdF9hcGlfZmFjdHMucHlgLiBFYWNoIHRlc3Qgc2VlZHMgdGhlIGV4YWN0CiAgIGBhbnNpYmxlX2ZhY3RzPGhvc3Q+YCBrZXkgKFVVSUQtYmFzZWQgaG9zdCkgYW5kIGRlbGV0ZXMgaXQgaW4gdGVhcmRvd24uCiAgIENvdmVycyBldmVyeSBTY29wZSBpdGVtIGZyb20gdGhlIGlzc3VlOgogICAtIHBhcnNlZCBmYWN0cyByZXR1cm5lZCB3aXRoIHRoZSBjb3JyZWN0IGBjb3VudGAgYW5kIGBmcm9tX2NhY2hlYCBmbGFnOwogICAtIGEgc2luZ2xlIGZhY3QgdmFsdWU7CiAgIC0gdW5rbm93biBmYWN0IOKGkiA0MDQ7CiAgIC0gdW5rbm93biBob3N0IOKGkiA0MDQgKGJvdGggZW5kcG9pbnRzKTsKICAgLSBtYWxmb3JtZWQgSlNPTiBpbiBSZWRpcyDihpIgNTAwLgoKIyMgTm90ZXMKCi0gSW1wb3J0aW5nIGBvc2lzbS5hcGlgIHdpcmVzIHRoZSBldmVudCBicmlkZ2UgdG8gUmVkaXMgYXQgaW1wb3J0IHRpbWUsIHNvIHRoZQogIGltcG9ydCBpcyBkZWZlcnJlZCBpbnRvIHRoZSBgY2xpZW50YCBmaXh0dXJlIOKAlCBmaW5lIGluIHRoZSBpbnRlZ3JhdGlvbiBlbnYKICB3aGVyZSBSZWRpcyBpcyB1cCAoYW5kIHRoZSBzdWl0ZSBpcyBza2lwcGVkIHdpdGhvdXQgaXQpLgotIFRoZSBSRUFETUUgIlJ1bm5pbmcgaW50ZWdyYXRpb24gdGVzdHMiIG92ZXJ2aWV3IHNlbnRlbmNlIGlzIHNoYXJlZCBieSBhbGwKICAjMjQwMCBzaWJsaW5nczsgaXQgaXMgaW50ZW50aW9uYWxseSBsZWZ0IHVudG91Y2hlZCBoZXJlIHRvIGF2b2lkIHBlci1pc3N1ZQogIG1lcmdlIGNodXJuLiBUaGUgZXhpc3Rpbmcgd2FybmluZyBibG9jayBhbHJlYWR5IGNvdmVycyB0aGUgcGVyLXJ1biBVVUlEIGtleXMuCgojIyBUZXN0IHBsYW4KCi0gQ0kgcnVucyBgdGVzdHMvaW50ZWdyYXRpb25gIHdpdGggYSBsaXZlIFJlZGlzIChgcGxheWJvb2tzL3Rlc3QtaW50ZWdyYXRpb24ueW1sYCwKICBgT1NJU01fUkVRVUlSRV9SRURJUz0xYCkuIFBlciByZXBvIGNvbnZlbnRpb24gdGhlIHRlc3RzIHJ1biBpbiBDSSwgbm90IGxvY2FsbHkuCi0gVmVyaWZpZWQgbG9jYWxseTogYHBpcGVudiB2ZXJpZnlgIChsb2NrIGluIHN5bmMpIGFuZCBgZmxha2U4YCBvbiB0aGUgbmV3IGZpbGUuCgpDbG9zZXMgIzI0MDYKCi0tLQoKX0ltcGxlbWVudGVkIGJ5IFtwbGFud2Vyay1yZXZpZXddKGh0dHBzOi8vZ2l0aHViLmNvbS9wbGFud2Vyay9wbGFud2Vyay1yZXZpZXcpIGYxYzA0ZDcgd2l0aCBDbGF1ZGU6Y2xhdWRlLW9wdXMtNC04Xwo=
      patchset: 1845401cdf51503528994f91e374c9ab72fa9894
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 3d5c7b5973754999f7005857a00ce9168944f0f1
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 038dd8b856c62af4433c8477c5cb3d0480847059
          trusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 0c74c57cedff2b36bb37ca68a5338d1c49991496
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 0c74c57cedff2b36bb37ca68a5338d1c49991496
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 3d5c7b5973754999f7005857a00ce9168944f0f1
          untrusted/project_2/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 038dd8b856c62af4433c8477c5cb3d0480847059
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/mypy/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: 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/python-osism
        name: osism/python-osism
        short_name: python-osism
        src_dir: src/github.com/osism/python-osism
      projects:
        github.com/osism/python-osism:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          checkout: main
          checkout_description: zuul branch
          commit: b4d8dea3a726596f62118799fd2349f0dd7cde5d
          name: osism/python-osism
          required: false
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      ref: refs/pull/2411/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
