[
{
    "branch": "main",
    "index": "0",
    "phase": "pre",
    "playbook": "github.com/osism/zuul-config/playbooks/base/pre.yaml",
    "plays": [
        {
            "play": {
                "duration": {
                    "end": "2026-10-04T03:01:00.269449Z",
                    "start": "2026-10-04T03:00:30.645404Z"
                },
                "id": "0242ac1f-6606-9524-6157-000000000002",
                "name": "Base pre"
            },
            "tasks": [
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_role",
                            "changed": false,
                            "include_args": {
                                "name": "set-zuul-log-path-fact"
                            }
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-00000000000d",
                        "name": "emit-job-header",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/emit-job-header"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:30.686897Z",
                            "start": "2026-10-04T03:00:30.660177Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-00000000000f",
                        "name": "Setup log path fact"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "ansible_facts": {
                                "zuul_log_path": "2ef/osism/2ef661d5b6f243b492001d6498c6c1e4"
                            },
                            "changed": false
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-0000000000c1",
                        "name": "set-zuul-log-path-fact",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/set-zuul-log-path-fact"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:30.736724Z",
                            "start": "2026-10-04T03:00:30.699919Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-0000000000c3",
                        "name": "Set log path for a build"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "debug",
                            "changed": false,
                            "msg": "# Job Information\nAnsible Version: 2.16.14\nJob: release-tox-drift-test\nPipeline: periodic-daily\nExecutor: 521e9411259a\nTriggered by: https://github.com/osism/release\nEvent ID: 36391d9dfbb4487aa1240155af863663\n"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-00000000000d",
                        "name": "emit-job-header",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/emit-job-header"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:30.787425Z",
                            "start": "2026-10-04T03:00:30.744455Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000010",
                        "name": "Print job information"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "debug",
                            "changed": false,
                            "msg": "All items completed",
                            "results": [
                                {
                                    "ansible_loop_var": "zj_item",
                                    "changed": false,
                                    "failed": false,
                                    "msg": "# Node Information\nInventory Hostname: debian-bookworm\nHostname: debian\nUsername: zuul\nDistro: Debian 12.15\nProvider: regiocloud-a\nRegion: \nLabel: debian-bookworm\nProduct Name: OpenStack Nova\nInterface IP: 2a13:1a81:8000:3124:f816:3eff:fef5:1f1c\n",
                                    "zj_item": "debian-bookworm"
                                }
                            ]
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-00000000000d",
                        "name": "emit-job-header",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/emit-job-header"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:30.939231Z",
                            "start": "2026-10-04T03:00:30.792439Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000011",
                        "name": "Print node information"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "file",
                            "changed": true,
                            "diff": {
                                "after": {
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info",
                                    "state": "directory"
                                },
                                "before": {
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info",
                                    "state": "absent"
                                }
                            },
                            "gid": 0,
                            "group": "root",
                            "invocation": {
                                "module_args": {
                                    "_diff_peek": null,
                                    "_original_basename": null,
                                    "access_time": null,
                                    "access_time_format": "%Y%m%d%H%M.%S",
                                    "attributes": null,
                                    "follow": true,
                                    "force": false,
                                    "group": null,
                                    "mode": 493,
                                    "modification_time": null,
                                    "modification_time_format": "%Y%m%d%H%M.%S",
                                    "owner": null,
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info",
                                    "recurse": false,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": null,
                                    "state": "directory",
                                    "unsafe_writes": false
                                }
                            },
                            "mode": "0755",
                            "owner": "root",
                            "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info",
                            "size": 4096,
                            "state": "directory",
                            "uid": 0
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000014",
                        "name": "log-inventory",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/log-inventory"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:31.904050Z",
                            "start": "2026-10-04T03:00:30.946927Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000016",
                        "name": "Ensure Zuul Ansible directory exists"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "copy",
                            "changed": true,
                            "checksum": "df18b8acc24117e2315901ab6d232cef3f75a456",
                            "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info/inventory.yaml",
                            "diff": [],
                            "gid": 0,
                            "group": "root",
                            "invocation": {
                                "module_args": {
                                    "_original_basename": "inventory.yaml",
                                    "attributes": null,
                                    "backup": false,
                                    "checksum": "df18b8acc24117e2315901ab6d232cef3f75a456",
                                    "content": null,
                                    "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info",
                                    "directory_mode": null,
                                    "follow": false,
                                    "force": true,
                                    "group": null,
                                    "local_follow": null,
                                    "mode": 420,
                                    "owner": null,
                                    "remote_src": null,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/.ansible/tmp/ansible-tmp-1791082831.9791708-34-165591590016363/source",
                                    "unsafe_writes": false,
                                    "validate": null
                                }
                            },
                            "md5sum": "6171bd068d8a77c9af59849de58d286e",
                            "mode": "0644",
                            "owner": "root",
                            "size": 6775,
                            "src": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/.ansible/tmp/ansible-tmp-1791082831.9791708-34-165591590016363/source",
                            "state": "file",
                            "uid": 0
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000014",
                        "name": "log-inventory",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/log-inventory"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:33.569311Z",
                            "start": "2026-10-04T03:00:31.913870Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000017",
                        "name": "Copy ansible inventory to logs dir"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "stat",
                            "changed": false,
                            "failed_when_result": false,
                            "invocation": {
                                "module_args": {
                                    "checksum_algorithm": "sha1",
                                    "follow": false,
                                    "get_attributes": true,
                                    "get_checksum": true,
                                    "get_mime": true,
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/2ef661d5b6f243b492001d6498c6c1e4_id_rsa"
                                }
                            },
                            "stat": {
                                "exists": false
                            }
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:33.918425Z",
                            "start": "2026-10-04T03:00:33.577748Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-00000000001b",
                        "name": "Check to see if ssh key was already created for this build"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "include": "create-key-and-replace.yaml",
                            "include_args": {}
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:33.966518Z",
                            "start": "2026-10-04T03:00:33.926131Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-00000000001c",
                        "name": "Create a new key in workspace based on build UUID"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": true,
                            "cmd": [
                                "ssh-keygen",
                                "-t",
                                "rsa",
                                "-N",
                                "",
                                "-C",
                                "zuul-build-sshkey",
                                "-f",
                                "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/2ef661d5b6f243b492001d6498c6c1e4_id_rsa",
                                "-b",
                                "3072"
                            ],
                            "delta": "0:00:00.662168",
                            "end": "2026-10-04 03:00:35.594704",
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "ssh-keygen -t rsa -N '' -C 'zuul-build-sshkey' -f /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/2ef661d5b6f243b492001d6498c6c1e4_id_rsa -b 3072",
                                    "_uses_shell": false,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-9524-6157-0000000000e4-0-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:00:34.932536",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "Generating public/private rsa key pair.\nYour identification has been saved in /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/2ef661d5b6f243b492001d6498c6c1e4_id_rsa\nYour public key has been saved in /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/2ef661d5b6f243b492001d6498c6c1e4_id_rsa.pub\nThe key fingerprint is:\nSHA256:nZex7gQpzLlyuxn0559LrjrfpIQ9kmpMIgmFb4SqvFM zuul-build-sshkey\nThe key's randomart image is:\n+---[RSA 3072]----+\n|   o             |\n|  o o            |\n| . +        .    |\n|. . o  o o o +   |\n|o  o .  S = +    |\n|.. Eo ...+ B     |\n|  o  ..++ = B o  |\n| o     oo=.B B . |\n|  .    .=..+*o*. |\n+----[SHA256]-----+",
                            "stdout_lines": [
                                "Generating public/private rsa key pair.",
                                "Your identification has been saved in /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/2ef661d5b6f243b492001d6498c6c1e4_id_rsa",
                                "Your public key has been saved in /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/2ef661d5b6f243b492001d6498c6c1e4_id_rsa.pub",
                                "The key fingerprint is:",
                                "SHA256:nZex7gQpzLlyuxn0559LrjrfpIQ9kmpMIgmFb4SqvFM zuul-build-sshkey",
                                "The key's randomart image is:",
                                "+---[RSA 3072]----+",
                                "|   o             |",
                                "|  o o            |",
                                "| . +        .    |",
                                "|. . o  o o o +   |",
                                "|o  o .  S = +    |",
                                "|.. Eo ...+ B     |",
                                "|  o  ..++ = B o  |",
                                "| o     oo=.B B . |",
                                "|  .    .=..+*o*. |",
                                "+----[SHA256]-----+"
                            ],
                            "zuul_log_id": "0242ac1f-6606-9524-6157-0000000000e4-0-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:35.701079Z",
                            "start": "2026-10-04T03:00:33.999921Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-0000000000e4",
                        "name": "Create Temp SSH key"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "include": "remote-linux.yaml",
                            "include_args": {}
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:35.751770Z",
                            "start": "2026-10-04T03:00:35.713353Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-0000000000e5",
                        "name": "Remote setup ssh keys (linux)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "lineinfile",
                            "changed": false,
                            "false_condition": "zuul_build_sshkey_cleanup",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:35.871611Z",
                            "start": "2026-10-04T03:00:35.797535Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000104",
                        "name": "Remove previously added zuul-build-sshkey"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "authorized_key",
                            "changed": true,
                            "comment": null,
                            "exclusive": false,
                            "follow": false,
                            "invocation": {
                                "module_args": {
                                    "changed": true,
                                    "comment": null,
                                    "exclusive": false,
                                    "follow": false,
                                    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCcPG4LwN2BLSiUtoncgOQcp2o1KZ7S81aOh9/xiYIXZXERMyQABNv3obRhrfyZRh+mQaQEaTQ7804TA21T2I92U3g+fFbYUdaipi39f/jlJj6USLGGTV4mVDSy193FIuQW02KDKQ3bvr7oAa5VyWaJLXhWK4vn2ziHB6FILDnFQRdHTozRCPI1HXBIm5lQs6uLEk/3ZjGXQv90svqYDSMXPZscnruUgFU1efKyc0U7OJanDA+UKVGlRe1ko5oO6ZaTdyg3SvrwGlUGfNekiR2a7f6y9TsSeV29iODSRbMzXQ5faw8Q+3kZYE+y7sYrVkK+Da3BeyHxxUQiFYbXqug0a1IJ4tgnSzQZqrYwC6TZkuFnZ4SB0nuThMJb9FfmbBLVEmA2QyF7BaAW0Ti80wZ/PorBjXPbv31vlQLSeJkpKtsvZIhX/Tf9BV9CNL39ziAIpvGK86vo6quotlOMxvGQ2PKo6BpLscDcLZ1R4lmT8/fwCJ61sq8aFpj2D4zV3jU= zuul-build-sshkey",
                                    "key_options": null,
                                    "keyfile": "/home/zuul/.ssh/authorized_keys",
                                    "manage_dir": true,
                                    "path": null,
                                    "state": "present",
                                    "user": "zuul",
                                    "validate_certs": true
                                }
                            },
                            "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCcPG4LwN2BLSiUtoncgOQcp2o1KZ7S81aOh9/xiYIXZXERMyQABNv3obRhrfyZRh+mQaQEaTQ7804TA21T2I92U3g+fFbYUdaipi39f/jlJj6USLGGTV4mVDSy193FIuQW02KDKQ3bvr7oAa5VyWaJLXhWK4vn2ziHB6FILDnFQRdHTozRCPI1HXBIm5lQs6uLEk/3ZjGXQv90svqYDSMXPZscnruUgFU1efKyc0U7OJanDA+UKVGlRe1ko5oO6ZaTdyg3SvrwGlUGfNekiR2a7f6y9TsSeV29iODSRbMzXQ5faw8Q+3kZYE+y7sYrVkK+Da3BeyHxxUQiFYbXqug0a1IJ4tgnSzQZqrYwC6TZkuFnZ4SB0nuThMJb9FfmbBLVEmA2QyF7BaAW0Ti80wZ/PorBjXPbv31vlQLSeJkpKtsvZIhX/Tf9BV9CNL39ziAIpvGK86vo6quotlOMxvGQ2PKo6BpLscDcLZ1R4lmT8/fwCJ61sq8aFpj2D4zV3jU= zuul-build-sshkey",
                            "key_options": null,
                            "keyfile": "/home/zuul/.ssh/authorized_keys",
                            "manage_dir": true,
                            "path": null,
                            "state": "present",
                            "user": "zuul",
                            "validate_certs": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:36.485822Z",
                            "start": "2026-10-04T03:00:35.876866Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000105",
                        "name": "Enable access via build key on all nodes"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "file",
                            "changed": false,
                            "diff": {
                                "after": {
                                    "path": "/home/zuul/.ssh"
                                },
                                "before": {
                                    "path": "/home/zuul/.ssh"
                                }
                            },
                            "gid": 1000,
                            "group": "zuul",
                            "invocation": {
                                "module_args": {
                                    "_diff_peek": null,
                                    "_original_basename": null,
                                    "access_time": null,
                                    "access_time_format": "%Y%m%d%H%M.%S",
                                    "attributes": null,
                                    "follow": true,
                                    "force": false,
                                    "group": null,
                                    "mode": 448,
                                    "modification_time": null,
                                    "modification_time_format": "%Y%m%d%H%M.%S",
                                    "owner": null,
                                    "path": "/home/zuul/.ssh",
                                    "recurse": false,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": null,
                                    "state": "directory",
                                    "unsafe_writes": false
                                }
                            },
                            "mode": "0700",
                            "owner": "zuul",
                            "path": "/home/zuul/.ssh",
                            "size": 4096,
                            "state": "directory",
                            "uid": 1000
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:36.797093Z",
                            "start": "2026-10-04T03:00:36.490849Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000106",
                        "name": "Make sure user has a .ssh"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "copy",
                            "changed": true,
                            "checksum": "97861d26848f9e9e69b2d88daf4b174bc689fa3b",
                            "dest": "/home/zuul/.ssh/id_rsa",
                            "diff": [],
                            "gid": 1000,
                            "group": "zuul",
                            "invocation": {
                                "module_args": {
                                    "_original_basename": "2ef661d5b6f243b492001d6498c6c1e4_id_rsa",
                                    "attributes": null,
                                    "backup": false,
                                    "checksum": "97861d26848f9e9e69b2d88daf4b174bc689fa3b",
                                    "content": null,
                                    "dest": "/home/zuul/.ssh/id_rsa",
                                    "directory_mode": null,
                                    "follow": false,
                                    "force": false,
                                    "group": null,
                                    "local_follow": null,
                                    "mode": 384,
                                    "owner": null,
                                    "remote_src": null,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": "/home/zuul/.ansible/tmp/ansible-tmp-1791082836.8979182-139-221686305050867/source",
                                    "unsafe_writes": false,
                                    "validate": null
                                }
                            },
                            "md5sum": "1f6c9a3572fb07529a78d7b13bdaba5c",
                            "mode": "0600",
                            "owner": "zuul",
                            "size": 2602,
                            "src": "/home/zuul/.ansible/tmp/ansible-tmp-1791082836.8979182-139-221686305050867/source",
                            "state": "file",
                            "uid": 1000
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:37.614591Z",
                            "start": "2026-10-04T03:00:36.809932Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000107",
                        "name": "Install build private key as SSH key on all nodes"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "copy",
                            "changed": true,
                            "checksum": "9e560db3cb613db4fa238c1f642f865d4baf8405",
                            "dest": "/home/zuul/.ssh/id_rsa.pub",
                            "diff": [],
                            "gid": 1000,
                            "group": "zuul",
                            "invocation": {
                                "module_args": {
                                    "_original_basename": "2ef661d5b6f243b492001d6498c6c1e4_id_rsa.pub",
                                    "attributes": null,
                                    "backup": false,
                                    "checksum": "9e560db3cb613db4fa238c1f642f865d4baf8405",
                                    "content": null,
                                    "dest": "/home/zuul/.ssh/id_rsa.pub",
                                    "directory_mode": null,
                                    "follow": false,
                                    "force": false,
                                    "group": null,
                                    "local_follow": null,
                                    "mode": 420,
                                    "owner": null,
                                    "remote_src": null,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": "/home/zuul/.ansible/tmp/ansible-tmp-1791082837.6857374-149-202259003899334/source",
                                    "unsafe_writes": false,
                                    "validate": null
                                }
                            },
                            "md5sum": "10c7e91080b105945b6d6f651bf5bb62",
                            "mode": "0644",
                            "owner": "zuul",
                            "size": 571,
                            "src": "/home/zuul/.ansible/tmp/ansible-tmp-1791082837.6857374-149-202259003899334/source",
                            "state": "file",
                            "uid": 1000
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:38.322359Z",
                            "start": "2026-10-04T03:00:37.621151Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000108",
                        "name": "Install build public key as SSH key on all nodes"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "false_condition": "ansible_os_family == \"Windows\"",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:38.340978Z",
                            "start": "2026-10-04T03:00:38.327408Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-0000000000e6",
                        "name": "Remote setup ssh keys (windows)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "sshagent_remove_keys",
                            "changed": true,
                            "invocation": {
                                "module_args": {
                                    "remove": "^(?!\\(stdin\\)).*"
                                }
                            },
                            "removed": [
                                "/var/ssh/nodepool"
                            ]
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-0000000000eb",
                        "name": "remove-zuul-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/remove-zuul-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:39.019154Z",
                            "start": "2026-10-04T03:00:38.347054Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-0000000000ed",
                        "name": "Remove master key from local agent"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": true,
                            "cmd": [
                                "ssh-add",
                                "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/2ef661d5b6f243b492001d6498c6c1e4_id_rsa"
                            ],
                            "delta": "0:00:00.008132",
                            "end": "2026-10-04 03:00:39.509898",
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "ssh-add /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/2ef661d5b6f243b492001d6498c6c1e4_id_rsa",
                                    "_uses_shell": false,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-9524-6157-0000000000f3-0-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:00:39.501766",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "Identity added: /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/2ef661d5b6f243b492001d6498c6c1e4_id_rsa (zuul-build-sshkey)",
                            "stdout_lines": [
                                "Identity added: /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/2ef661d5b6f243b492001d6498c6c1e4_id_rsa (zuul-build-sshkey)"
                            ],
                            "zuul_log_id": "0242ac1f-6606-9524-6157-0000000000f3-0-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:39.574091Z",
                            "start": "2026-10-04T03:00:39.040725Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-0000000000f3",
                        "name": "Add back temp key"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ping",
                            "changed": false,
                            "invocation": {
                                "module_args": {
                                    "data": "pong"
                                }
                            },
                            "ping": "pong"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:39.971411Z",
                            "start": "2026-10-04T03:00:39.580197Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-0000000000f4",
                        "name": "Verify we can still SSH to all nodes"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": false,
                            "false_condition": "ansible_os_family == \"Windows\"",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000019",
                        "name": "add-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/add-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:40.013389Z",
                            "start": "2026-10-04T03:00:39.978597Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-0000000000f5",
                        "name": "Verify we can still SSH to all nodes (windows)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "zuul_console",
                            "changed": false,
                            "invocation": {
                                "module_args": {
                                    "path": "/tmp/console-{log_uuid}.log",
                                    "port": 19885,
                                    "state": "present"
                                }
                            }
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-00000000001e",
                        "name": "start-zuul-console",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/start-zuul-console"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:40.489997Z",
                            "start": "2026-10-04T03:00:40.025169Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000020",
                        "name": "Start zuul_console daemon."
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "ansible_facts": {
                                "zuul_info_dir": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info"
                            },
                            "changed": false
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000022",
                        "name": "validate-host",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/validate-host"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:40.549399Z",
                            "start": "2026-10-04T03:00:40.501189Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000024",
                        "name": "Define zuul_info_dir fact"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "file",
                            "changed": false,
                            "diff": {
                                "after": {
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info"
                                },
                                "before": {
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info"
                                }
                            },
                            "gid": 0,
                            "group": "root",
                            "invocation": {
                                "module_args": {
                                    "_diff_peek": null,
                                    "_original_basename": null,
                                    "access_time": null,
                                    "access_time_format": "%Y%m%d%H%M.%S",
                                    "attributes": null,
                                    "follow": true,
                                    "force": false,
                                    "group": null,
                                    "mode": 493,
                                    "modification_time": null,
                                    "modification_time_format": "%Y%m%d%H%M.%S",
                                    "owner": null,
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info",
                                    "recurse": false,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": null,
                                    "state": "directory",
                                    "unsafe_writes": false
                                }
                            },
                            "mode": "0755",
                            "owner": "root",
                            "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info",
                            "size": 4096,
                            "state": "directory",
                            "uid": 0
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000022",
                        "name": "validate-host",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/validate-host"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:40.815119Z",
                            "start": "2026-10-04T03:00:40.557183Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000025",
                        "name": "Ensure Zuul Ansible directory exists"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "setup",
                            "ansible_facts": {
                                "ansible_all_ipv4_addresses": [
                                    "10.128.7.52"
                                ],
                                "ansible_all_ipv6_addresses": [
                                    "2a13:1a81:8000:3124:f816:3eff:fef5:1f1c",
                                    "fe80::f816:3eff:fef5:1f1c"
                                ],
                                "ansible_apparmor": {
                                    "status": "enabled"
                                },
                                "ansible_architecture": "x86_64",
                                "ansible_bios_date": "04/01/2014",
                                "ansible_bios_vendor": "SeaBIOS",
                                "ansible_bios_version": "1.15.0-1",
                                "ansible_board_asset_tag": "NA",
                                "ansible_board_name": "NA",
                                "ansible_board_serial": "NA",
                                "ansible_board_vendor": "NA",
                                "ansible_board_version": "NA",
                                "ansible_chassis_asset_tag": "NA",
                                "ansible_chassis_serial": "NA",
                                "ansible_chassis_vendor": "QEMU",
                                "ansible_chassis_version": "pc-i440fx-6.2",
                                "ansible_cmdline": {
                                    "BOOT_IMAGE": "/boot/vmlinuz-6.1.0-53-amd64",
                                    "console": "ttyS0,115200",
                                    "gfxpayload": "text",
                                    "no_timer_check": true,
                                    "nofb": true,
                                    "nomodeset": true,
                                    "ro": true,
                                    "root": "LABEL=cloudimg-rootfs"
                                },
                                "ansible_date_time": {
                                    "date": "2026-10-04",
                                    "day": "04",
                                    "epoch": "1791082841",
                                    "epoch_int": "1791082841",
                                    "hour": "03",
                                    "iso8601": "2026-10-04T03:00:41Z",
                                    "iso8601_basic": "20261004T030041629162",
                                    "iso8601_basic_short": "20261004T030041",
                                    "iso8601_micro": "2026-10-04T03:00:41.629162Z",
                                    "minute": "00",
                                    "month": "10",
                                    "second": "41",
                                    "time": "03:00:41",
                                    "tz": "UTC",
                                    "tz_dst": "UTC",
                                    "tz_offset": "+0000",
                                    "weekday": "Sunday",
                                    "weekday_number": "0",
                                    "weeknumber": "39",
                                    "year": "2026"
                                },
                                "ansible_default_ipv4": {
                                    "address": "10.128.7.52",
                                    "alias": "ens3",
                                    "broadcast": "10.128.7.255",
                                    "gateway": "10.128.7.1",
                                    "interface": "ens3",
                                    "macaddress": "fa:16:3e:f5:1f:1c",
                                    "mtu": 1500,
                                    "netmask": "255.255.255.0",
                                    "network": "10.128.7.0",
                                    "prefix": "24",
                                    "type": "ether"
                                },
                                "ansible_default_ipv6": {
                                    "address": "2a13:1a81:8000:3124:f816:3eff:fef5:1f1c",
                                    "gateway": "fe80::f816:3eff:fe92:ad10",
                                    "interface": "ens3",
                                    "macaddress": "fa:16:3e:f5:1f:1c",
                                    "mtu": 1500,
                                    "prefix": "64",
                                    "scope": "global",
                                    "type": "ether"
                                },
                                "ansible_device_links": {
                                    "ids": {},
                                    "labels": {
                                        "vda1": [
                                            "cloudimg-rootfs"
                                        ]
                                    },
                                    "masters": {},
                                    "uuids": {
                                        "vda1": [
                                            "2d18317d-ed9f-4cd2-a6b5-58d1e912f88d"
                                        ]
                                    }
                                },
                                "ansible_devices": {
                                    "loop0": {
                                        "holders": [],
                                        "host": "",
                                        "links": {
                                            "ids": [],
                                            "labels": [],
                                            "masters": [],
                                            "uuids": []
                                        },
                                        "model": null,
                                        "partitions": {},
                                        "removable": "0",
                                        "rotational": "1",
                                        "sas_address": null,
                                        "sas_device_handle": null,
                                        "scheduler_mode": "none",
                                        "sectors": "0",
                                        "sectorsize": "512",
                                        "size": "0.00 Bytes",
                                        "support_discard": "0",
                                        "vendor": null,
                                        "virtual": 1
                                    },
                                    "loop1": {
                                        "holders": [],
                                        "host": "",
                                        "links": {
                                            "ids": [],
                                            "labels": [],
                                            "masters": [],
                                            "uuids": []
                                        },
                                        "model": null,
                                        "partitions": {},
                                        "removable": "0",
                                        "rotational": "1",
                                        "sas_address": null,
                                        "sas_device_handle": null,
                                        "scheduler_mode": "none",
                                        "sectors": "0",
                                        "sectorsize": "512",
                                        "size": "0.00 Bytes",
                                        "support_discard": "0",
                                        "vendor": null,
                                        "virtual": 1
                                    },
                                    "loop2": {
                                        "holders": [],
                                        "host": "",
                                        "links": {
                                            "ids": [],
                                            "labels": [],
                                            "masters": [],
                                            "uuids": []
                                        },
                                        "model": null,
                                        "partitions": {},
                                        "removable": "0",
                                        "rotational": "1",
                                        "sas_address": null,
                                        "sas_device_handle": null,
                                        "scheduler_mode": "none",
                                        "sectors": "0",
                                        "sectorsize": "512",
                                        "size": "0.00 Bytes",
                                        "support_discard": "0",
                                        "vendor": null,
                                        "virtual": 1
                                    },
                                    "loop3": {
                                        "holders": [],
                                        "host": "",
                                        "links": {
                                            "ids": [],
                                            "labels": [],
                                            "masters": [],
                                            "uuids": []
                                        },
                                        "model": null,
                                        "partitions": {},
                                        "removable": "0",
                                        "rotational": "1",
                                        "sas_address": null,
                                        "sas_device_handle": null,
                                        "scheduler_mode": "none",
                                        "sectors": "0",
                                        "sectorsize": "512",
                                        "size": "0.00 Bytes",
                                        "support_discard": "0",
                                        "vendor": null,
                                        "virtual": 1
                                    },
                                    "loop4": {
                                        "holders": [],
                                        "host": "",
                                        "links": {
                                            "ids": [],
                                            "labels": [],
                                            "masters": [],
                                            "uuids": []
                                        },
                                        "model": null,
                                        "partitions": {},
                                        "removable": "0",
                                        "rotational": "1",
                                        "sas_address": null,
                                        "sas_device_handle": null,
                                        "scheduler_mode": "none",
                                        "sectors": "0",
                                        "sectorsize": "512",
                                        "size": "0.00 Bytes",
                                        "support_discard": "0",
                                        "vendor": null,
                                        "virtual": 1
                                    },
                                    "loop5": {
                                        "holders": [],
                                        "host": "",
                                        "links": {
                                            "ids": [],
                                            "labels": [],
                                            "masters": [],
                                            "uuids": []
                                        },
                                        "model": null,
                                        "partitions": {},
                                        "removable": "0",
                                        "rotational": "1",
                                        "sas_address": null,
                                        "sas_device_handle": null,
                                        "scheduler_mode": "none",
                                        "sectors": "0",
                                        "sectorsize": "512",
                                        "size": "0.00 Bytes",
                                        "support_discard": "0",
                                        "vendor": null,
                                        "virtual": 1
                                    },
                                    "loop6": {
                                        "holders": [],
                                        "host": "",
                                        "links": {
                                            "ids": [],
                                            "labels": [],
                                            "masters": [],
                                            "uuids": []
                                        },
                                        "model": null,
                                        "partitions": {},
                                        "removable": "0",
                                        "rotational": "1",
                                        "sas_address": null,
                                        "sas_device_handle": null,
                                        "scheduler_mode": "none",
                                        "sectors": "0",
                                        "sectorsize": "512",
                                        "size": "0.00 Bytes",
                                        "support_discard": "0",
                                        "vendor": null,
                                        "virtual": 1
                                    },
                                    "loop7": {
                                        "holders": [],
                                        "host": "",
                                        "links": {
                                            "ids": [],
                                            "labels": [],
                                            "masters": [],
                                            "uuids": []
                                        },
                                        "model": null,
                                        "partitions": {},
                                        "removable": "0",
                                        "rotational": "1",
                                        "sas_address": null,
                                        "sas_device_handle": null,
                                        "scheduler_mode": "none",
                                        "sectors": "0",
                                        "sectorsize": "512",
                                        "size": "0.00 Bytes",
                                        "support_discard": "0",
                                        "vendor": null,
                                        "virtual": 1
                                    },
                                    "vda": {
                                        "holders": [],
                                        "host": "",
                                        "links": {
                                            "ids": [],
                                            "labels": [],
                                            "masters": [],
                                            "uuids": []
                                        },
                                        "model": null,
                                        "partitions": {
                                            "vda1": {
                                                "holders": [],
                                                "links": {
                                                    "ids": [],
                                                    "labels": [
                                                        "cloudimg-rootfs"
                                                    ],
                                                    "masters": [],
                                                    "uuids": [
                                                        "2d18317d-ed9f-4cd2-a6b5-58d1e912f88d"
                                                    ]
                                                },
                                                "sectors": "20969439",
                                                "sectorsize": 512,
                                                "size": "10.00 GB",
                                                "start": "2048",
                                                "uuid": "2d18317d-ed9f-4cd2-a6b5-58d1e912f88d"
                                            }
                                        },
                                        "removable": "0",
                                        "rotational": "1",
                                        "sas_address": null,
                                        "sas_device_handle": null,
                                        "scheduler_mode": "none",
                                        "sectors": "20971520",
                                        "sectorsize": "512",
                                        "size": "10.00 GB",
                                        "support_discard": "512",
                                        "vendor": "0x1af4",
                                        "virtual": 1
                                    }
                                },
                                "ansible_distribution": "Debian",
                                "ansible_distribution_file_parsed": true,
                                "ansible_distribution_file_path": "/etc/os-release",
                                "ansible_distribution_file_variety": "Debian",
                                "ansible_distribution_major_version": "12",
                                "ansible_distribution_minor_version": "15",
                                "ansible_distribution_release": "bookworm",
                                "ansible_distribution_version": "12.15",
                                "ansible_dns": {
                                    "domain": "a.customers.regiocloud.tech.",
                                    "nameservers": [
                                        "81.163.194.9",
                                        "81.163.194.10"
                                    ],
                                    "search": [
                                        "a.customers.regiocloud.tech."
                                    ]
                                },
                                "ansible_domain": "",
                                "ansible_effective_group_id": 1000,
                                "ansible_effective_user_id": 1000,
                                "ansible_ens3": {
                                    "active": true,
                                    "device": "ens3",
                                    "ipv4": {
                                        "address": "10.128.7.52",
                                        "broadcast": "10.128.7.255",
                                        "netmask": "255.255.255.0",
                                        "network": "10.128.7.0",
                                        "prefix": "24"
                                    },
                                    "ipv6": [
                                        {
                                            "address": "2a13:1a81:8000:3124:f816:3eff:fef5:1f1c",
                                            "prefix": "64",
                                            "scope": "global"
                                        },
                                        {
                                            "address": "fe80::f816:3eff:fef5:1f1c",
                                            "prefix": "64",
                                            "scope": "link"
                                        }
                                    ],
                                    "macaddress": "fa:16:3e:f5:1f:1c",
                                    "module": "virtio_net",
                                    "mtu": 1500,
                                    "pciid": "virtio1",
                                    "promisc": false,
                                    "speed": -1,
                                    "type": "ether"
                                },
                                "ansible_env": {
                                    "DBUS_SESSION_BUS_ADDRESS": "unix:path=/run/user/1000/bus",
                                    "HOME": "/home/zuul",
                                    "LANG": "C.UTF-8",
                                    "LC_ALL": "C.UTF-8",
                                    "LOGNAME": "zuul",
                                    "MOTD_SHOWN": "pam",
                                    "PATH": "/usr/local/bin:/usr/bin:/bin:/usr/games",
                                    "PWD": "/home/zuul",
                                    "SHELL": "/bin/bash",
                                    "SHLVL": "0",
                                    "SSH_CLIENT": "2a13:1a81:8000:2::38d 44884 22",
                                    "SSH_CONNECTION": "2a13:1a81:8000:2::38d 44884 2a13:1a81:8000:3124:f816:3eff:fef5:1f1c 22",
                                    "USER": "zuul",
                                    "XDG_RUNTIME_DIR": "/run/user/1000",
                                    "XDG_SESSION_CLASS": "user",
                                    "XDG_SESSION_ID": "2",
                                    "XDG_SESSION_TYPE": "tty",
                                    "_": "/bin/sh"
                                },
                                "ansible_fibre_channel_wwn": [],
                                "ansible_fips": false,
                                "ansible_form_factor": "Other",
                                "ansible_fqdn": "debian",
                                "ansible_hostname": "debian",
                                "ansible_hostnqn": "",
                                "ansible_interfaces": [
                                    "lo",
                                    "ens3"
                                ],
                                "ansible_is_chroot": false,
                                "ansible_iscsi_iqn": "",
                                "ansible_kernel": "6.1.0-53-amd64",
                                "ansible_kernel_version": "#1 SMP PREEMPT_DYNAMIC Debian 6.1.187-1 (2026-09-07)",
                                "ansible_lo": {
                                    "active": true,
                                    "device": "lo",
                                    "ipv4": {
                                        "address": "127.0.0.1",
                                        "broadcast": "",
                                        "netmask": "255.0.0.0",
                                        "network": "127.0.0.0",
                                        "prefix": "8"
                                    },
                                    "ipv6": [
                                        {
                                            "address": "::1",
                                            "prefix": "128",
                                            "scope": "host"
                                        }
                                    ],
                                    "mtu": 65536,
                                    "promisc": false,
                                    "type": "loopback"
                                },
                                "ansible_loadavg": {
                                    "15m": 0.00390625,
                                    "1m": 0.0615234375,
                                    "5m": 0.01513671875
                                },
                                "ansible_local": {},
                                "ansible_locally_reachable_ips": {
                                    "ipv4": [
                                        "10.128.7.52",
                                        "127.0.0.0/8",
                                        "127.0.0.1"
                                    ],
                                    "ipv6": [
                                        "::1",
                                        "2a13:1a81:8000:3124:f816:3eff:fef5:1f1c",
                                        "fe80::f816:3eff:fef5:1f1c"
                                    ]
                                },
                                "ansible_lsb": {
                                    "codename": "bookworm",
                                    "description": "Debian GNU/Linux 12 (bookworm)",
                                    "id": "Debian",
                                    "major_release": "12",
                                    "release": "12"
                                },
                                "ansible_lvm": "N/A",
                                "ansible_machine": "x86_64",
                                "ansible_machine_id": "9b7517fd7be44f929da3a59f9e40b45d",
                                "ansible_memfree_mb": 3662,
                                "ansible_memory_mb": {
                                    "nocache": {
                                        "free": 3748,
                                        "used": 165
                                    },
                                    "real": {
                                        "free": 3662,
                                        "total": 3913,
                                        "used": 251
                                    },
                                    "swap": {
                                        "cached": 0,
                                        "free": 0,
                                        "total": 0,
                                        "used": 0
                                    }
                                },
                                "ansible_memtotal_mb": 3913,
                                "ansible_mounts": [
                                    {
                                        "block_available": 1943703,
                                        "block_size": 4096,
                                        "block_total": 2443380,
                                        "block_used": 499677,
                                        "device": "/dev/vda1",
                                        "fstype": "ext4",
                                        "inode_available": 2497369,
                                        "inode_total": 2533680,
                                        "inode_used": 36311,
                                        "mount": "/",
                                        "options": "rw,relatime",
                                        "size_available": 7961407488,
                                        "size_total": 10008084480,
                                        "uuid": "2d18317d-ed9f-4cd2-a6b5-58d1e912f88d"
                                    }
                                ],
                                "ansible_nodename": "debian",
                                "ansible_os_family": "Debian",
                                "ansible_pkg_mgr": "apt",
                                "ansible_proc_cmdline": {
                                    "BOOT_IMAGE": "/boot/vmlinuz-6.1.0-53-amd64",
                                    "console": [
                                        "tty0",
                                        "ttyS0,115200"
                                    ],
                                    "gfxpayload": "text",
                                    "no_timer_check": true,
                                    "nofb": true,
                                    "nomodeset": true,
                                    "ro": true,
                                    "root": "LABEL=cloudimg-rootfs"
                                },
                                "ansible_processor": [
                                    "0",
                                    "GenuineIntel",
                                    "Intel Xeon Processor (Icelake)",
                                    "1",
                                    "GenuineIntel",
                                    "Intel Xeon Processor (Icelake)"
                                ],
                                "ansible_processor_cores": 1,
                                "ansible_processor_count": 2,
                                "ansible_processor_nproc": 2,
                                "ansible_processor_threads_per_core": 1,
                                "ansible_processor_vcpus": 2,
                                "ansible_product_name": "OpenStack Nova",
                                "ansible_product_serial": "NA",
                                "ansible_product_uuid": "NA",
                                "ansible_product_version": "29.2.1",
                                "ansible_python": {
                                    "executable": "/usr/bin/python3",
                                    "has_sslcontext": true,
                                    "type": "cpython",
                                    "version": {
                                        "major": 3,
                                        "micro": 2,
                                        "minor": 11,
                                        "releaselevel": "final",
                                        "serial": 0
                                    },
                                    "version_info": [
                                        3,
                                        11,
                                        2,
                                        "final",
                                        0
                                    ]
                                },
                                "ansible_python_version": "3.11.2",
                                "ansible_real_group_id": 1000,
                                "ansible_real_user_id": 1000,
                                "ansible_selinux": {
                                    "status": "disabled"
                                },
                                "ansible_selinux_python_present": true,
                                "ansible_service_mgr": "systemd",
                                "ansible_ssh_host_key_dsa_public": "AAAAB3NzaC1kc3MAAACBALWuRUPoUXA1+zqu0XtZa/LwV9GrbCnv4MazMG1micLg2RkqnIE9ScupE/3vr8NoIFk4xLAVz6yS213NCzZhjZ78fWvexFRFRZqn3kcIAt+Lo74KG1855iK+zPLDza+X94lEF+W36nXI2/fdAePdIzHkO0lj1HMJQzVnh5LAHXSpAAAAFQChR/dk++mqfEvZWPMwiXBndnn4TQAAAIA9u6YCe0YqJj7wmqYN5SDpj63l7DLmurnPXB4OHYFgeAVw7YAJj2ngkFolsVDfJv/R85PYZQOSUb8woba2F6zkxvoo3GGU4pXCs/Yw5TL/5FuLXkSQCglPWBCoEDyPI6pbBHqZOQt6+PzBbSxWAH82luQjQ3NICRP+CFU47FuEYgAAAIBQ/tYKa/ul81RKZqU0CNCENe3Qt2RcNATeRQnu+Hm0n8YVFyLRuBR26f6uXkRjoHeolPNoxkyJIYUP99I9LYepoXNpjx8sAHJcDLgJWJz3apU8wnLLaam1XqMMNBt2dbjnJCh4eLx30ZCKdq2AZ6vWWiE4b6io0cSgL0PP3uUAVg==",
                                "ansible_ssh_host_key_dsa_public_keytype": "ssh-dss",
                                "ansible_ssh_host_key_ecdsa_public": "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKYUIsdOjzB1ByCYrZmWauwc3spMWTK3f9IzmToLVSeUlMi3GjmB41Ou6UZJSLGmZ1TKe1M/zuSmHcPEYpfXaeg=",
                                "ansible_ssh_host_key_ecdsa_public_keytype": "ecdsa-sha2-nistp256",
                                "ansible_ssh_host_key_ed25519_public": "AAAAC3NzaC1lZDI1NTE5AAAAIMmg54gCaV/LS3SgTo/X+Qh6CaQwHYiXKGLrjfokrynb",
                                "ansible_ssh_host_key_ed25519_public_keytype": "ssh-ed25519",
                                "ansible_ssh_host_key_rsa_public": "AAAAB3NzaC1yc2EAAAADAQABAAABgQCy5d2VsB98d1SBTNMp0PRFfr/IObNQlZW3JPAgVlXEQ1oAN4FVaDxD3AwyB2HHs3qiuAdEG3pwp49mPG51TTNBcIXXhqLoWZzfJkK2O1F4+brZRmrCfjxpPI47OneDP7pVsEpa+LzafqCmM3q+fmN8xStxEMa+C/KhE/oi+Jzv2v8/51wRuWm1K2SqsskpJI7a4rK6b5SYw4ZWAjbBGcr/LNkIZRBXUi6lqp55kqsg3sSXkTOolu9bqUwMhJOxH6mllV22DxWdsxIhebxmbUQUByOsO7nfDKqrtXChfauiUwlsOydZj8QbEqd4kZqixIlft4FaA281xZ1Zb4sBDXAlV/bBsbxWcpqXv/3djOzsLJX5tvRbvVMPbzTibd+9UJL80jELon4/hV6HKFprpyFp6vDHr1PejXOtX59puW1DewI0vU0sWcUEBoq8Rv1iDf40ev7og3ALBzKvSHyPDXQIM+NeF2UNm4qvXNswRLeem3+j8MSqvyxxtIIENbJ2N9k=",
                                "ansible_ssh_host_key_rsa_public_keytype": "ssh-rsa",
                                "ansible_swapfree_mb": 0,
                                "ansible_swaptotal_mb": 0,
                                "ansible_system": "Linux",
                                "ansible_system_capabilities": [
                                    ""
                                ],
                                "ansible_system_capabilities_enforced": "True",
                                "ansible_system_vendor": "OpenStack Foundation",
                                "ansible_uptime_seconds": 5010,
                                "ansible_user_dir": "/home/zuul",
                                "ansible_user_gecos": "",
                                "ansible_user_gid": 1000,
                                "ansible_user_id": "zuul",
                                "ansible_user_shell": "/bin/bash",
                                "ansible_user_uid": 1000,
                                "ansible_userspace_architecture": "x86_64",
                                "ansible_userspace_bits": "64",
                                "ansible_virtualization_role": "guest",
                                "ansible_virtualization_tech_guest": [
                                    "openstack"
                                ],
                                "ansible_virtualization_tech_host": [
                                    "kvm"
                                ],
                                "ansible_virtualization_type": "openstack",
                                "gather_subset": [
                                    "all"
                                ],
                                "module_setup": true
                            },
                            "changed": false,
                            "invocation": {
                                "module_args": {
                                    "fact_path": "/etc/ansible/facts.d",
                                    "filter": [],
                                    "gather_subset": [
                                        "all"
                                    ],
                                    "gather_timeout": 10
                                }
                            }
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000022",
                        "name": "validate-host",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/validate-host"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:42.040465Z",
                            "start": "2026-10-04T03:00:40.825362Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000026",
                        "name": "Collect information about the host"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "ansible_facts": {
                                "validate_host_hostname_sanitized": "debian-bookworm"
                            },
                            "changed": false
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000022",
                        "name": "validate-host",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/validate-host"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:42.175439Z",
                            "start": "2026-10-04T03:00:42.049060Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000027",
                        "name": "Sanitize hostname"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "template",
                            "changed": true,
                            "checksum": "7859b6b24ea2add6ffd791e698ff59c0a2d522a3",
                            "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info/host-info.debian-bookworm.yaml",
                            "diff": [],
                            "gid": 0,
                            "group": "root",
                            "invocation": {
                                "module_args": {
                                    "_original_basename": "host-info.j2",
                                    "attributes": null,
                                    "backup": false,
                                    "checksum": "7859b6b24ea2add6ffd791e698ff59c0a2d522a3",
                                    "content": null,
                                    "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info/host-info.debian-bookworm.yaml",
                                    "directory_mode": null,
                                    "follow": false,
                                    "force": true,
                                    "group": null,
                                    "local_follow": null,
                                    "mode": 420,
                                    "owner": null,
                                    "remote_src": null,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/.ansible/tmp/ansible-tmp-1791082842.2016904-246-121968766248429/source",
                                    "unsafe_writes": false,
                                    "validate": null
                                }
                            },
                            "md5sum": "afd337d85986d40965ea08f61bc252d6",
                            "mode": "0644",
                            "owner": "root",
                            "size": 13282,
                            "src": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/.ansible/tmp/ansible-tmp-1791082842.2016904-246-121968766248429/source",
                            "state": "file",
                            "uid": 0
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000022",
                        "name": "validate-host",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/validate-host"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:42.684688Z",
                            "start": "2026-10-04T03:00:42.182796Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000028",
                        "name": "Write out all ansible variables/facts known for each host"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "_zuul_nolog_return": true,
                            "action": "zuul_debug_info",
                            "changed": false,
                            "df_i": "Filesystem      Inodes IUsed   IFree IUse% Mounted on\nudev            495370   343  495027    1% /dev\ntmpfs           500889   458  500431    1% /run\n/dev/vda1      2533680 36311 2497369    2% /\ntmpfs           500889     1  500888    1% /dev/shm\ntmpfs           500889     3  500886    1% /run/lock\ntmpfs           100177    20  100157    1% /run/user/1000\n",
                            "df_m": "Filesystem     1M-blocks  Used Available Use% Mounted on\nudev                1936     0      1936   0% /dev\ntmpfs                392     1       391   1% /run\n/dev/vda1           9545  1506      7593  17% /\ntmpfs               1957     0      1957   0% /dev/shm\ntmpfs                  5     0         5   0% /run/lock\ntmpfs                392     0       392   0% /run/user/1000\n",
                            "image_manifest_files": [],
                            "invocation": {
                                "module_args": {
                                    "image_manifest": null,
                                    "image_manifest_files": [
                                        "/etc/dib-builddate.txt",
                                        "/etc/image-hostname.txt"
                                    ],
                                    "ipv4_route_required": false,
                                    "ipv6_route_required": false,
                                    "traceroute_host": null
                                }
                            },
                            "network_interfaces": "1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1/128 scope host noprefixroute \n       valid_lft forever preferred_lft forever\n2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000\n    link/ether fa:16:3e:f5:1f:1c brd ff:ff:ff:ff:ff:ff\n    altname enp0s3\n    inet 10.128.7.52/24 brd 10.128.7.255 scope global dynamic ens3\n       valid_lft 38194sec preferred_lft 38194sec\n    inet6 2a13:1a81:8000:3124:f816:3eff:fef5:1f1c/64 scope global dynamic mngtmpaddr \n       valid_lft forever preferred_lft forever\n    inet6 fe80::f816:3eff:fef5:1f1c/64 scope link \n       valid_lft forever preferred_lft forever\n",
                            "network_neighbors": "10.128.7.1 dev ens3 lladdr fa:16:3e:ef:4b:9b REACHABLE \nfe80::f816:3eff:fe92:ad10 dev ens3 lladdr fa:16:3e:92:ad:10 router REACHABLE \n",
                            "network_routing_v4": "default via 10.128.7.1 dev ens3 \n10.128.7.0/24 dev ens3 proto kernel scope link src 10.128.7.52 \n169.254.169.254 via 10.128.7.2 dev ens3 \n",
                            "network_routing_v6": "2a13:1a81:8000:3124::/64 dev ens3 proto kernel metric 256 pref medium\nfe80::/64 dev ens3 proto kernel metric 256 pref medium\ndefault via fe80::f816:3eff:fe92:ad10 dev ens3 proto ra metric 1024 expires 65208sec hoplimit 255 pref medium\n",
                            "proc_cpuinfo": "processor\t: 0\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 134\nmodel name\t: Intel Xeon Processor (Icelake)\nstepping\t: 0\nmicrocode\t: 0x1\ncpu MHz\t\t: 2299.998\ncache size\t: 16384 KB\nphysical id\t: 0\nsiblings\t: 1\ncore id\t\t: 0\ncpu cores\t: 1\napicid\t\t: 0\ninitial apicid\t: 0\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 13\nwp\t\t: yes\nflags\t\t: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc pebs bts rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq dtes64 vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves wbnoinvd arat avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq la57 rdpid fsrm md_clear arch_capabilities\nvmx flags\t: vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid shadow_vmcs\nbugs\t\t: spectre_v1 spectre_v2 spec_store_bypass swapgs taa mmio_stale_data rfds bhi ibpb_no_ret its\nbogomips\t: 4599.99\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 57 bits virtual\npower management:\n\nprocessor\t: 1\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 134\nmodel name\t: Intel Xeon Processor (Icelake)\nstepping\t: 0\nmicrocode\t: 0x1\ncpu MHz\t\t: 2299.998\ncache size\t: 16384 KB\nphysical id\t: 1\nsiblings\t: 1\ncore id\t\t: 0\ncpu cores\t: 1\napicid\t\t: 1\ninitial apicid\t: 1\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 13\nwp\t\t: yes\nflags\t\t: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc pebs bts rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq dtes64 vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves wbnoinvd arat avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq la57 rdpid fsrm md_clear arch_capabilities\nvmx flags\t: vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid shadow_vmcs\nbugs\t\t: spectre_v1 spectre_v2 spec_store_bypass swapgs taa mmio_stale_data rfds bhi ibpb_no_ret its\nbogomips\t: 4599.99\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 57 bits virtual\npower management:\n\n",
                            "traceroute": null,
                            "uname": "Linux debian 6.1.0-53-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.187-1 (2026-09-07) x86_64 GNU/Linux\n"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000022",
                        "name": "validate-host",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/validate-host"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:43.107279Z",
                            "start": "2026-10-04T03:00:42.690460Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-00000000002a",
                        "name": "Collect information about zuul worker"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "template",
                            "changed": true,
                            "checksum": "0f6b10422dfeaf008c759be032e5a4f7cb8a9247",
                            "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info/zuul-info.debian-bookworm.txt",
                            "diff": [],
                            "gid": 0,
                            "group": "root",
                            "invocation": {
                                "module_args": {
                                    "_original_basename": "zuul-info.j2",
                                    "attributes": null,
                                    "backup": false,
                                    "checksum": "0f6b10422dfeaf008c759be032e5a4f7cb8a9247",
                                    "content": null,
                                    "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/zuul-info/zuul-info.debian-bookworm.txt",
                                    "directory_mode": null,
                                    "follow": false,
                                    "force": true,
                                    "group": null,
                                    "local_follow": null,
                                    "mode": 420,
                                    "owner": null,
                                    "remote_src": null,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/.ansible/tmp/ansible-tmp-1791082843.141262-285-103441028578357/source",
                                    "unsafe_writes": false,
                                    "validate": null
                                }
                            },
                            "md5sum": "9d90b6f96561d4f18ba70daac06e59e9",
                            "mode": "0644",
                            "owner": "root",
                            "size": 2518,
                            "src": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/.ansible/tmp/ansible-tmp-1791082843.141262-285-103441028578357/source",
                            "state": "file",
                            "uid": 0
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000022",
                        "name": "validate-host",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/validate-host"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:43.668217Z",
                            "start": "2026-10-04T03:00:43.113058Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-00000000002b",
                        "name": "Write out all zuul information for each host"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "zuul_console",
                            "changed": false,
                            "invocation": {
                                "module_args": {
                                    "path": "/tmp/console-{log_uuid}.log",
                                    "port": 19885,
                                    "state": "present"
                                }
                            }
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-00000000002d",
                        "name": "prepare-workspace-log",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/prepare-workspace-log"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:43.975758Z",
                            "start": "2026-10-04T03:00:43.676794Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-00000000002f",
                        "name": "Start zuul_console daemon."
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "synchronize",
                            "changed": true,
                            "cmd": "/usr/bin/rsync --compress --delete-after --archive --no-owner --no-group --rsh='/usr/bin/ssh -S none -o Port=22 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' --out-format='<<CHANGED>>%i %n%L' /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/src '[zuul@2a13:1a81:8000:3124:f816:3eff:fef5:1f1c]:.'",
                            "invocation": {
                                "module_args": {
                                    "_local_rsync_password": null,
                                    "_local_rsync_path": "rsync",
                                    "_ssh_args": null,
                                    "_substitute_controller": false,
                                    "archive": true,
                                    "checksum": false,
                                    "compress": true,
                                    "copy_links": false,
                                    "delay_updates": false,
                                    "delete": true,
                                    "dest": "[zuul@2a13:1a81:8000:3124:f816:3eff:fef5:1f1c]:.",
                                    "dest_port": 22,
                                    "dirs": false,
                                    "existing_only": false,
                                    "group": false,
                                    "link_dest": null,
                                    "links": null,
                                    "mode": "push",
                                    "owner": false,
                                    "partial": false,
                                    "perms": null,
                                    "private_key": null,
                                    "recursive": true,
                                    "rsync_opts": [],
                                    "rsync_path": null,
                                    "rsync_timeout": 0,
                                    "set_remote_user": true,
                                    "src": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/src",
                                    "ssh_connection_multiplexing": false,
                                    "times": null,
                                    "use_ssh_args": false,
                                    "verify_host": false
                                }
                            },
                            "msg": "cd+++++++++ src/\ncd+++++++++ src/github.com/\ncd+++++++++ src/github.com/osism/\ncd+++++++++ src/github.com/osism/release/\n<f+++++++++ src/github.com/osism/release/.flake8\n<f+++++++++ src/github.com/osism/release/.gitignore\n<f+++++++++ src/github.com/osism/release/.yamllint.yml\n<f+++++++++ src/github.com/osism/release/.zuul.yaml\n<f+++++++++ src/github.com/osism/release/LICENSE\n<f+++++++++ src/github.com/osism/release/README.md\n<f+++++++++ src/github.com/osism/release/requirements.txt\n<f+++++++++ src/github.com/osism/release/tox.ini\ncd+++++++++ src/github.com/osism/release/.git/\n<f+++++++++ src/github.com/osism/release/.git/HEAD\n<f+++++++++ src/github.com/osism/release/.git/ORIG_HEAD\n<f+++++++++ src/github.com/osism/release/.git/config\n<f+++++++++ src/github.com/osism/release/.git/config.worktree\n<f+++++++++ src/github.com/osism/release/.git/description\n<f+++++++++ src/github.com/osism/release/.git/index\n<f+++++++++ src/github.com/osism/release/.git/packed-refs\ncd+++++++++ src/github.com/osism/release/.git/branches/\ncd+++++++++ src/github.com/osism/release/.git/hooks/\n<f+++++++++ src/github.com/osism/release/.git/hooks/applypatch-msg.sample\n<f+++++++++ src/github.com/osism/release/.git/hooks/commit-msg.sample\n<f+++++++++ src/github.com/osism/release/.git/hooks/fsmonitor-watchman.sample\n<f+++++++++ src/github.com/osism/release/.git/hooks/post-update.sample\n<f+++++++++ src/github.com/osism/release/.git/hooks/pre-applypatch.sample\n<f+++++++++ src/github.com/osism/release/.git/hooks/pre-commit.sample\n<f+++++++++ src/github.com/osism/release/.git/hooks/pre-merge-commit.sample\n<f+++++++++ src/github.com/osism/release/.git/hooks/pre-push.sample\n<f+++++++++ src/github.com/osism/release/.git/hooks/pre-rebase.sample\n<f+++++++++ src/github.com/osism/release/.git/hooks/pre-receive.sample\n<f+++++++++ src/github.com/osism/release/.git/hooks/prepare-commit-msg.sample\n<f+++++++++ src/github.com/osism/release/.git/hooks/push-to-checkout.sample\n<f+++++++++ src/github.com/osism/release/.git/hooks/update.sample\ncd+++++++++ src/github.com/osism/release/.git/info/\n<f+++++++++ src/github.com/osism/release/.git/info/exclude\ncd+++++++++ src/github.com/osism/release/.git/logs/\n<f+++++++++ src/github.com/osism/release/.git/logs/HEAD\ncd+++++++++ src/github.com/osism/release/.git/logs/refs/\ncd+++++++++ src/github.com/osism/release/.git/logs/refs/heads/\n<f+++++++++ src/github.com/osism/release/.git/logs/refs/heads/main\ncd+++++++++ src/github.com/osism/release/.git/logs/refs/remotes/\ncd+++++++++ src/github.com/osism/release/.git/logs/refs/remotes/origin/\n<f+++++++++ src/github.com/osism/release/.git/logs/refs/remotes/origin/HEAD\ncd+++++++++ src/github.com/osism/release/.git/objects/\ncd+++++++++ src/github.com/osism/release/.git/objects/00/\n<f+++++++++ src/github.com/osism/release/.git/objects/00/56ea701bc40724cae2f63d956c25a0e9f9358b\n<f+++++++++ src/github.com/osism/release/.git/objects/00/88f5b8d0111705d894946be916b4e928a14d5d\ncd+++++++++ src/github.com/osism/release/.git/objects/04/\n<f+++++++++ src/github.com/osism/release/.git/objects/04/3f2f236531ebab98c1e240f626f312804a8119\ncd+++++++++ src/github.com/osism/release/.git/objects/05/\n<f+++++++++ src/github.com/osism/release/.git/objects/05/b09404aa26521892e087a2388a9ea1c719c1ef\ncd+++++++++ src/github.com/osism/release/.git/objects/09/\n<f+++++++++ src/github.com/osism/release/.git/objects/09/85b926ec36bf4106b4e586a58fc9e5efdd5327\ncd+++++++++ src/github.com/osism/release/.git/objects/0b/\n<f+++++++++ src/github.com/osism/release/.git/objects/0b/00a3ae7dbc87b39aad683c0876c7704dcc8981\n<f+++++++++ src/github.com/osism/release/.git/objects/0b/79899afad36dfd975e5a0e7c31c63e9b9e95a2\ncd+++++++++ src/github.com/osism/release/.git/objects/0c/\n<f+++++++++ src/github.com/osism/release/.git/objects/0c/1613cd894ec2ce0ff13a7ddd2355b7dfcaf0a5\n<f+++++++++ src/github.com/osism/release/.git/objects/0c/c73a0eb86651210eb553799cf389c9b4328105\ncd+++++++++ src/github.com/osism/release/.git/objects/0d/\n<f+++++++++ src/github.com/osism/release/.git/objects/0d/ac83dc490a2eae54edf299e700547eaaceb0a2\ncd+++++++++ src/github.com/osism/release/.git/objects/10/\n<f+++++++++ src/github.com/osism/release/.git/objects/10/29185a5f914b1e608dc2c05b207e39020be6f2\ncd+++++++++ src/github.com/osism/release/.git/objects/11/\n<f+++++++++ src/github.com/osism/release/.git/objects/11/68b010232db2994457f39b2577960cd631a18e\ncd+++++++++ src/github.com/osism/release/.git/objects/12/\n<f+++++++++ src/github.com/osism/release/.git/objects/12/360d2733fc883633df8090e58ec2500c428b06\n<f+++++++++ src/github.com/osism/release/.git/objects/12/442850b4a0e64348b70ddbeb7b768bf78476ff\n<f+++++++++ src/github.com/osism/release/.git/objects/12/f36ad11efdbaafb4a056473bbfd40d3ea26800\ncd+++++++++ src/github.com/osism/release/.git/objects/13/\n<f+++++++++ src/github.com/osism/release/.git/objects/13/9bf3be4b1ae775c89967816ad441340e7a3005\ncd+++++++++ src/github.com/osism/release/.git/objects/14/\n<f+++++++++ src/github.com/osism/release/.git/objects/14/2a2fdea91fc4b4edf57eda91172a756ba3132f\ncd+++++++++ src/github.com/osism/release/.git/objects/15/\n<f+++++++++ src/github.com/osism/release/.git/objects/15/788f1fc382c7460303e6488f6b69cd648a1186\n<f+++++++++ src/github.com/osism/release/.git/objects/15/89b871cc5ab6c6b54f17e1c64e9ea7f15ef64f\n<f+++++++++ src/github.com/osism/release/.git/objects/15/8ed6e09d5d2c3c83f028a6e0827b91bc2e16e5\n<f+++++++++ src/github.com/osism/release/.git/objects/15/b629bd98b62caa8fc3fcf409764a4b01cbbe70\n<f+++++++++ src/github.com/osism/release/.git/objects/15/da2464b2da063d8333aa45415ea0a8553b5b40\ncd+++++++++ src/github.com/osism/release/.git/objects/16/\n<f+++++++++ src/github.com/osism/release/.git/objects/16/759034c3075c764d8e1b06b82b50d6e8004569\ncd+++++++++ src/github.com/osism/release/.git/objects/17/\n<f+++++++++ src/github.com/osism/release/.git/objects/17/207fdd8a77f4ab06c4156ab3a71cfd72a60ce0\ncd+++++++++ src/github.com/osism/release/.git/objects/19/\n<f+++++++++ src/github.com/osism/release/.git/objects/19/1c26436030e02671b29849c7d1942a94a5044c\n<f+++++++++ src/github.com/osism/release/.git/objects/19/8ab9049ec91cfb59439fd9bc437d9f915ed8d2\ncd+++++++++ src/github.com/osism/release/.git/objects/1b/\n<f+++++++++ src/github.com/osism/release/.git/objects/1b/1cce7f9c9c3346354a89be2a59c8e2857061f8\n<f+++++++++ src/github.com/osism/release/.git/objects/1b/90335a42e2443bb9a4bf8a6053a4c7acde74bf\ncd+++++++++ src/github.com/osism/release/.git/objects/1c/\n<f+++++++++ src/github.com/osism/release/.git/objects/1c/09993ba1d64277209e427759baa29b4393f0a2\ncd+++++++++ src/github.com/osism/release/.git/objects/1d/\n<f+++++++++ src/github.com/osism/release/.git/objects/1d/0c49f1192fe882be0c0263db92ef6ba38582b6\ncd+++++++++ src/github.com/osism/release/.git/objects/1e/\n<f+++++++++ src/github.com/osism/release/.git/objects/1e/65444427828feb9785d158c49ffd7181f07ab2\n<f+++++++++ src/github.com/osism/release/.git/objects/1e/9917ceab28a1e2e9dbbb068ac09dfd8b2111c9\ncd+++++++++ src/github.com/osism/release/.git/objects/1f/\n<f+++++++++ src/github.com/osism/release/.git/objects/1f/e9cb94815c7f4997160addc9802aa35772ed88\ncd+++++++++ src/github.com/osism/release/.git/objects/20/\n<f+++++++++ src/github.com/osism/release/.git/objects/20/f998ec99deeb66da4b2726ead8397799fcfcd7\ncd+++++++++ src/github.com/osism/release/.git/objects/21/\n<f+++++++++ src/github.com/osism/release/.git/objects/21/0bc42945514846ca4d043e56c589da017c874c\ncd+++++++++ src/github.com/osism/release/.git/objects/22/\n<f+++++++++ src/github.com/osism/release/.git/objects/22/c829b80776c39f0db0351fdf15162a4a987428\ncd+++++++++ src/github.com/osism/release/.git/objects/23/\n<f+++++++++ src/github.com/osism/release/.git/objects/23/14cbe7aa60bea7d980e17f73aa350bf8fbdf0b\ncd+++++++++ src/github.com/osism/release/.git/objects/24/\n<f+++++++++ src/github.com/osism/release/.git/objects/24/4cb6cc7bd53f93215cba432db42f7fffe83cb3\n<f+++++++++ src/github.com/osism/release/.git/objects/24/b39b7d8d984faabe7290ae52eca67d206c7de6\n<f+++++++++ src/github.com/osism/release/.git/objects/24/cbd22ac590399de7f650e2cb4ce5eb2f237459\ncd+++++++++ src/github.com/osism/release/.git/objects/26/\n<f+++++++++ src/github.com/osism/release/.git/objects/26/55f6d835ba8cb028ba86430a26e26686e8c894\n<f+++++++++ src/github.com/osism/release/.git/objects/26/5697b1e96102b527cf8e129f8eac06a5a6c632\n<f+++++++++ src/github.com/osism/release/.git/objects/26/771ba5e97a8c194f09d3b25bfb0a77aa08b49e\ncd+++++++++ src/github.com/osism/release/.git/objects/28/\n<f+++++++++ src/github.com/osism/release/.git/objects/28/387de2c2aa94ba8091b7bdffb3dedc51778792\n<f+++++++++ src/github.com/osism/release/.git/objects/28/def72ce3e278b0789fb22f4d92c566b96e4ea8\ncd+++++++++ src/github.com/osism/release/.git/objects/2a/\n<f+++++++++ src/github.com/osism/release/.git/objects/2a/9c0da348b4696f06bed31244e165b3c8e26db6\n<f+++++++++ src/github.com/osism/release/.git/objects/2a/a2ece357a42a48cd2a1064f7748c9fb7a31fba\ncd+++++++++ src/github.com/osism/release/.git/objects/2b/\n<f+++++++++ src/github.com/osism/release/.git/objects/2b/c872bccf994f8be3f35003582f6f5909a92e05\ncd+++++++++ src/github.com/osism/release/.git/objects/2d/\n<f+++++++++ src/github.com/osism/release/.git/objects/2d/09af9553549f613e15fe846037b16c59bbda0e\ncd+++++++++ src/github.com/osism/release/.git/objects/2f/\n<f+++++++++ src/github.com/osism/release/.git/objects/2f/47a3987ecaa93addfa84be990c8d1c052fa9f1\n<f+++++++++ src/github.com/osism/release/.git/objects/2f/6a32ed06058ba9ddabb051eef98ba2099bc9d7\n<f+++++++++ src/github.com/osism/release/.git/objects/2f/e0edca2e5d84a36eec17dfc1fe7b88e66b66f2\ncd+++++++++ src/github.com/osism/release/.git/objects/30/\n<f+++++++++ src/github.com/osism/release/.git/objects/30/3f35b926c83aa36bd81538e0ca258466f1ba94\ncd+++++++++ src/github.com/osism/release/.git/objects/32/\n<f+++++++++ src/github.com/osism/release/.git/objects/32/422dd7d9b96bde718f980609fbb383000eb42a\ncd+++++++++ src/github.com/osism/release/.git/objects/33/\n<f+++++++++ src/github.com/osism/release/.git/objects/33/05f727c418cf4712ae86a91311808e7c74e676\n<f+++++++++ src/github.com/osism/release/.git/objects/33/edee4f70cbac121413dc534077c38e75deeffd\ncd+++++++++ src/github.com/osism/release/.git/objects/35/\n<f+++++++++ src/github.com/osism/release/.git/objects/35/c60f5a47e4088d05fca83e6a7550e856026788\ncd+++++++++ src/github.com/osism/release/.git/objects/36/\n<f+++++++++ src/github.com/osism/release/.git/objects/36/8dfb20c2f319569a8d17b121f5362025dab6e7\n<f+++++++++ src/github.com/osism/release/.git/objects/36/ce1800792f639956c7b01127727e8a443f1b08\ncd+++++++++ src/github.com/osism/release/.git/objects/37/\n<f+++++++++ src/github.com/osism/release/.git/objects/37/51a420a063745347f45664fc64f2940afbe8c5\ncd+++++++++ src/github.com/osism/release/.git/objects/38/\n<f+++++++++ src/github.com/osism/release/.git/objects/38/0171ac066865c02b1c214aa5297a2aecc41903\n<f+++++++++ src/github.com/osism/release/.git/objects/38/5ad2dc3e53d3ad763724bda538b39049df4036\n<f+++++++++ src/github.com/osism/release/.git/objects/38/8d690ee6aa3a070d0099cc862fec205d61a689\n<f+++++++++ src/github.com/osism/release/.git/objects/38/cef6a7703e6c91fe61e4c31d37f3d079f46f58\n<f+++++++++ src/github.com/osism/release/.git/objects/38/f4aa670d79187f63bed11313e1cf37f4944974\ncd+++++++++ src/github.com/osism/release/.git/objects/39/\n<f+++++++++ src/github.com/osism/release/.git/objects/39/6c59b1e341fd30ec25d5ec3dbbf5b1ca752f5c\n<f+++++++++ src/github.com/osism/release/.git/objects/39/9233a780a8678605315b0f6dc67733a57bdcf8\n<f+++++++++ src/github.com/osism/release/.git/objects/39/d51bb75695a3e89fffb53365e7a5ced43e2333\ncd+++++++++ src/github.com/osism/release/.git/objects/3a/\n<f+++++++++ src/github.com/osism/release/.git/objects/3a/10c59650b038379db2b98d582cd40c9be4f291\n<f+++++++++ src/github.com/osism/release/.git/objects/3a/6be8121e4ba5099a516fe760331662439095b8\n<f+++++++++ src/github.com/osism/release/.git/objects/3a/9c69eebf52eb5dbba56b86bc507d4661e6883b\n<f+++++++++ src/github.com/osism/release/.git/objects/3a/b91de62815c84479837c6c67435fe7589c761f\ncd+++++++++ src/github.com/osism/release/.git/objects/3b/\n<f+++++++++ src/github.com/osism/release/.git/objects/3b/66116de97790ae61f8ac46f46ef58650efe719\n<f+++++++++ src/github.com/osism/release/.git/objects/3b/9e1f7d9c33cb90633b1590f55e099622cd6666\ncd+++++++++ src/github.com/osism/release/.git/objects/3c/\n<f+++++++++ src/github.com/osism/release/.git/objects/3c/be643f25e2a27acf57f5877f960ad2cb826296\ncd+++++++++ src/github.com/osism/release/.git/objects/3e/\n<f+++++++++ src/github.com/osism/release/.git/objects/3e/226b33a3c6471001ef37c803ef2327ae8f72e7\n<f+++++++++ src/github.com/osism/release/.git/objects/3e/75d3d3fe25d7f97ab594ebbdedb4cb2873b146\ncd+++++++++ src/github.com/osism/release/.git/objects/3f/\n<f+++++++++ src/github.com/osism/release/.git/objects/3f/5f08a22dbb54bc4972124460c1d56f4d31c187\n<f+++++++++ src/github.com/osism/release/.git/objects/3f/b3b35d4857d63161d2e2ce1d4e8e55b5d8ff5c\ncd+++++++++ src/github.com/osism/release/.git/objects/41/\n<f+++++++++ src/github.com/osism/release/.git/objects/41/cf6a0e938fcc37aad42c539d18b9b2e34e9ec0\ncd+++++++++ src/github.com/osism/release/.git/objects/44/\n<f+++++++++ src/github.com/osism/release/.git/objects/44/e2b2339d6406ca82a089e7810ee2ab0f859416\n<f+++++++++ src/github.com/osism/release/.git/objects/44/f701bacc348f1de26509657799a2c8c3de24a4\ncd+++++++++ src/github.com/osism/release/.git/objects/45/\n<f+++++++++ src/github.com/osism/release/.git/objects/45/eabd6cffe10f4e21844417118fe1c2896ee3bf\ncd+++++++++ src/github.com/osism/release/.git/objects/46/\n<f+++++++++ src/github.com/osism/release/.git/objects/46/32dffd19e83295a0be0673930ebba9a2ae88d7\ncd+++++++++ src/github.com/osism/release/.git/objects/49/\n<f+++++++++ src/github.com/osism/release/.git/objects/49/08c676928d037466ea52e231cd96a4777bb3b5\ncd+++++++++ src/github.com/osism/release/.git/objects/4b/\n<f+++++++++ src/github.com/osism/release/.git/objects/4b/dbf30a19cf0d5080fdc45fc8b1fd216dcf2098\ncd+++++++++ src/github.com/osism/release/.git/objects/4c/\n<f+++++++++ src/github.com/osism/release/.git/objects/4c/0563b16c6097a9a7339246922223d0cb96f67b\ncd+++++++++ src/github.com/osism/release/.git/objects/4e/\n<f+++++++++ src/github.com/osism/release/.git/objects/4e/b951e17dc9dd15843c7a4b13825d93ca00a3c3\ncd+++++++++ src/github.com/osism/release/.git/objects/50/\n<f+++++++++ src/github.com/osism/release/.git/objects/50/60ffb57aaccc2232c25bc8c9bdb537a215bb2e\ncd+++++++++ src/github.com/osism/release/.git/objects/51/\n<f+++++++++ src/github.com/osism/release/.git/objects/51/060f9d4cf9e98b703315715c6954af68d1a963\ncd+++++++++ src/github.com/osism/release/.git/objects/52/\n<f+++++++++ src/github.com/osism/release/.git/objects/52/cf1a2eaf2e7faa92fdb36b857e13d3a2fd6a9d\ncd+++++++++ src/github.com/osism/release/.git/objects/56/\n<f+++++++++ src/github.com/osism/release/.git/objects/56/27e0c927b00db765bea1a08394bd85e6c54139\n<f+++++++++ src/github.com/osism/release/.git/objects/56/b021ae7cb8681df9b3bd8413962cfdd64cf181\ncd+++++++++ src/github.com/osism/release/.git/objects/58/\n<f+++++++++ src/github.com/osism/release/.git/objects/58/1e55b563da17ba26ded68217ad80a575e97a3f\n<f+++++++++ src/github.com/osism/release/.git/objects/58/9aef27b1abbedb995fd41bbe7d504520f7661c\ncd+++++++++ src/github.com/osism/release/.git/objects/59/\n<f+++++++++ src/github.com/osism/release/.git/objects/59/f80430f203b5fffe678e209ff809f1def0dbae\ncd+++++++++ src/github.com/osism/release/.git/objects/5b/\n<f+++++++++ src/github.com/osism/release/.git/objects/5b/3b4d2251d9d7532b65505998d2988b3b666a0b\n<f+++++++++ src/github.com/osism/release/.git/objects/5b/a3d30e48e2cce9a8aba6dfeaafa1980d566b5b\n<f+++++++++ src/github.com/osism/release/.git/objects/5b/d70a9f2e5b3fb3df9ebc6cfce0052f2854403a\ncd+++++++++ src/github.com/osism/release/.git/objects/5c/\n<f+++++++++ src/github.com/osism/release/.git/objects/5c/5da0a60ff325a008d1571ccb1fe1121e5c3fe5\n<f+++++++++ src/github.com/osism/release/.git/objects/5c/8b0d82bebaf70c42a2edf4290f8b448ad46ca6\ncd+++++++++ src/github.com/osism/release/.git/objects/5d/\n<f+++++++++ src/github.com/osism/release/.git/objects/5d/361e116a4d79fc19b1af36d9108850c0bf1a32\n<f+++++++++ src/github.com/osism/release/.git/objects/5d/4713225168d14a98f6f093ad97b17435737518\n<f+++++++++ src/github.com/osism/release/.git/objects/5d/fdf9660d058fc6e58120d772ac44b6a5b6d8e7\ncd+++++++++ src/github.com/osism/release/.git/objects/5e/\n<f+++++++++ src/github.com/osism/release/.git/objects/5e/9bdbb799931637c00149aefb591c397915e6e9\ncd+++++++++ src/github.com/osism/release/.git/objects/5f/\n<f+++++++++ src/github.com/osism/release/.git/objects/5f/1df72702bc980e1a5ee09b145a27c6f3415670\ncd+++++++++ src/github.com/osism/release/.git/objects/60/\n<f+++++++++ src/github.com/osism/release/.git/objects/60/2d6b2f40d64584379519543db8e4d7e9296e61\ncd+++++++++ src/github.com/osism/release/.git/objects/61/\n<f+++++++++ src/github.com/osism/release/.git/objects/61/b15a07c331209f24f3f86d405b07c0a8dca28a\ncd+++++++++ src/github.com/osism/release/.git/objects/62/\n<f+++++++++ src/github.com/osism/release/.git/objects/62/3c1ffe830f73d5ed84da62950f65e06d2118a7\ncd+++++++++ src/github.com/osism/release/.git/objects/64/\n<f+++++++++ src/github.com/osism/release/.git/objects/64/deb072e9280032e905c0a59d43e1c7c37bde43\ncd+++++++++ src/github.com/osism/release/.git/objects/65/\n<f+++++++++ src/github.com/osism/release/.git/objects/65/927425a333a73c78a9b0faf0b839bd992f4624\n<f+++++++++ src/github.com/osism/release/.git/objects/65/a830b31f080401f5635144f208692de8b780eb\ncd+++++++++ src/github.com/osism/release/.git/objects/66/\n<f+++++++++ src/github.com/osism/release/.git/objects/66/6ca6bc348f249902f2918c10b19a9711e7483b\n<f+++++++++ src/github.com/osism/release/.git/objects/66/ff617e299bad0c2f2de41a8798af8fe7e985f6\ncd+++++++++ src/github.com/osism/release/.git/objects/67/\n<f+++++++++ src/github.com/osism/release/.git/objects/67/88850225e78e45517779059c5ee2931e0caee7\ncd+++++++++ src/github.com/osism/release/.git/objects/68/\n<f+++++++++ src/github.com/osism/release/.git/objects/68/0d7bbffd9435f89114c55846086f43255e9a85\n<f+++++++++ src/github.com/osism/release/.git/objects/68/e593f9b39955787489ac4adcd151d88661016f\ncd+++++++++ src/github.com/osism/release/.git/objects/69/\n<f+++++++++ src/github.com/osism/release/.git/objects/69/0dd2abc4702c1c4aaeb92834386b7c25138de8\n<f+++++++++ src/github.com/osism/release/.git/objects/69/8474378e25c39304b0dc1e4e4c8f55f6e359c6\ncd+++++++++ src/github.com/osism/release/.git/objects/6a/\n<f+++++++++ src/github.com/osism/release/.git/objects/6a/e621af96555ac6a9c07ecdd1b00c2b2bac814e\ncd+++++++++ src/github.com/osism/release/.git/objects/6b/\n<f+++++++++ src/github.com/osism/release/.git/objects/6b/1a1f07e9f1624a3f083d175f3ebc8fabac04a6\n<f+++++++++ src/github.com/osism/release/.git/objects/6b/c44fbe2ef8c32fca3370d656ba649dad693b60\n<f+++++++++ src/github.com/osism/release/.git/objects/6b/c7447dd1baa6fc59c428aa64989a40d4d06bbb\n<f+++++++++ src/github.com/osism/release/.git/objects/6b/d2776cc509e56bd3a828ae3de0fd9e32f791d3\ncd+++++++++ src/github.com/osism/release/.git/objects/6c/\n<f+++++++++ src/github.com/osism/release/.git/objects/6c/98137e66633fce716bb354f43a9958175b1e01\ncd+++++++++ src/github.com/osism/release/.git/objects/6d/\n<f+++++++++ src/github.com/osism/release/.git/objects/6d/806b44ad01616aa628c83087574c24dd75a338\ncd+++++++++ src/github.com/osism/release/.git/objects/6f/\n<f+++++++++ src/github.com/osism/release/.git/objects/6f/1d57119e42a98e015bcb901f0b7230da9053f3\ncd+++++++++ src/github.com/osism/release/.git/objects/70/\n<f+++++++++ src/github.com/osism/release/.git/objects/70/5752654b376c4d1e3efae86545de9fe9e8aae2\n<f+++++++++ src/github.com/osism/release/.git/objects/70/99744f9b1c1e6030ef5487a576444c8a4634f5\n<f+++++++++ src/github.com/osism/release/.git/objects/70/a57a695630fdad1603a295d31a439a18dbe382\ncd+++++++++ src/github.com/osism/release/.git/objects/71/\n<f+++++++++ src/github.com/osism/release/.git/objects/71/6a673ed6b1493b5a28bedf34c7958dc035eaaf\ncd+++++++++ src/github.com/osism/release/.git/objects/72/\n<f+++++++++ src/github.com/osism/release/.git/objects/72/de929275f1225e37a4522e696618b03435d2a0\ncd+++++++++ src/github.com/osism/release/.git/objects/73/\n<f+++++++++ src/github.com/osism/release/.git/objects/73/0fa4e030d5cc7b82de3b089e85c5b65a2da9c1\n<f+++++++++ src/github.com/osism/release/.git/objects/73/503b932fe3b367965c9e1276a9207993c511b1\ncd+++++++++ src/github.com/osism/release/.git/objects/75/\n<f+++++++++ src/github.com/osism/release/.git/objects/75/5a70318a0da1eb6cd61407e98818e54a7a5036\n<f+++++++++ src/github.com/osism/release/.git/objects/75/637fefc09b785b2dab1a92438134115fe1b280\n<f+++++++++ src/github.com/osism/release/.git/objects/75/bc075887a9f6c2bae3073a7c193011eb6bb403\ncd+++++++++ src/github.com/osism/release/.git/objects/76/\n<f+++++++++ src/github.com/osism/release/.git/objects/76/58c0d690c990a581e8a0d25244c2585574659c\ncd+++++++++ src/github.com/osism/release/.git/objects/78/\n<f+++++++++ src/github.com/osism/release/.git/objects/78/3af4081727d11321c267676545b47745770fdd\ncd+++++++++ src/github.com/osism/release/.git/objects/79/\n<f+++++++++ src/github.com/osism/release/.git/objects/79/664c3153c1deae6739a6e561966dd5851df684\ncd+++++++++ src/github.com/osism/release/.git/objects/7e/\n<f+++++++++ src/github.com/osism/release/.git/objects/7e/73752d7d6023f869375a71c156c3ff2cfe8946\n<f+++++++++ src/github.com/osism/release/.git/objects/7e/a3446f0e8c26ce6f79ca35d49e7590e2b5ee06\ncd+++++++++ src/github.com/osism/release/.git/objects/80/\n<f+++++++++ src/github.com/osism/release/.git/objects/80/5248fa5f86dce5b2d9307fee897e4b3d2a948c\ncd+++++++++ src/github.com/osism/release/.git/objects/84/\n<f+++++++++ src/github.com/osism/release/.git/objects/84/3de685b712db34d94ec8845a3428406fcf8d39\n<f+++++++++ src/github.com/osism/release/.git/objects/84/79054cada21512a1d515560c8ece3873a5228b\ncd+++++++++ src/github.com/osism/release/.git/objects/85/\n<f+++++++++ src/github.com/osism/release/.git/objects/85/620aedaad7d222c2cd66444e7819ec1014edb4\ncd+++++++++ src/github.com/osism/release/.git/objects/86/\n<f+++++++++ src/github.com/osism/release/.git/objects/86/03b722065eb721ef3a271a59a6952c16fe32bd\n<f+++++++++ src/github.com/osism/release/.git/objects/86/19cf02b15b94ed3a28fb929be36a2da31d7e24\n<f+++++++++ src/github.com/osism/release/.git/objects/86/2f9e50fbb97f8bcd20dce691d5ecf4b2ddef40\n<f+++++++++ src/github.com/osism/release/.git/objects/86/5c253df5c0e429283cff09404c68b93c30c7f9\ncd+++++++++ src/github.com/osism/release/.git/objects/88/\n<f+++++++++ src/github.com/osism/release/.git/objects/88/0c94cab4a499bb1568166be11d0d313454a2ac\n<f+++++++++ src/github.com/osism/release/.git/objects/88/51fa5e6a0a409dabc538d513f7f64378ff978a\ncd+++++++++ src/github.com/osism/release/.git/objects/89/\n<f+++++++++ src/github.com/osism/release/.git/objects/89/5764c47f879d4f496c749954da45db029d046b\n<f+++++++++ src/github.com/osism/release/.git/objects/89/de0166cdda3b9def7b6829f3add7dbbcb51da3\ncd+++++++++ src/github.com/osism/release/.git/objects/8b/\n<f+++++++++ src/github.com/osism/release/.git/objects/8b/4731e220ce9838e39783aa4cc626eabeaf09b6\n<f+++++++++ src/github.com/osism/release/.git/objects/8b/77e0b80266c716f53582fc0c69ebed1b0332e5\n<f+++++++++ src/github.com/osism/release/.git/objects/8b/7de765b4baa7a08ce01fb19e4214fd9c6ef53f\n<f+++++++++ src/github.com/osism/release/.git/objects/8b/ae319c9ece25e30ad01215508ed66e29276293\n<f+++++++++ src/github.com/osism/release/.git/objects/8b/e2494ee4777b8ee6e7edff93f5ae426a8098a2\ncd+++++++++ src/github.com/osism/release/.git/objects/8c/\n<f+++++++++ src/github.com/osism/release/.git/objects/8c/0b2fbe889c3986b5bef6404b60c59af8438504\ncd+++++++++ src/github.com/osism/release/.git/objects/8d/\n<f+++++++++ src/github.com/osism/release/.git/objects/8d/2a0f275de57ee59db120d5dcf9885c0a016adb\ncd+++++++++ src/github.com/osism/release/.git/objects/8e/\n<f+++++++++ src/github.com/osism/release/.git/objects/8e/98355fc2be241fa9078278b63f49b7d3046ecf\ncd+++++++++ src/github.com/osism/release/.git/objects/8f/\n<f+++++++++ src/github.com/osism/release/.git/objects/8f/7164a2e2a455c09753ab8e45ec65a016468278\ncd+++++++++ src/github.com/osism/release/.git/objects/90/\n<f+++++++++ src/github.com/osism/release/.git/objects/90/b0c57071d810087ae696783fb3d185626a9c02\ncd+++++++++ src/github.com/osism/release/.git/objects/96/\n<f+++++++++ src/github.com/osism/release/.git/objects/96/1f56bb76c16a8fd5aa8f1aa7a90e9be5462de9\n<f+++++++++ src/github.com/osism/release/.git/objects/96/710eebf4d6d372e50277c6da208d9778522736\ncd+++++++++ src/github.com/osism/release/.git/objects/97/\n<f+++++++++ src/github.com/osism/release/.git/objects/97/1c3b97b2822d662dc2652e0ff10d8ce2407c56\n<f+++++++++ src/github.com/osism/release/.git/objects/97/9392bec97f60b2fc6ea4605ec05e08abc8b990\ncd+++++++++ src/github.com/osism/release/.git/objects/98/\n<f+++++++++ src/github.com/osism/release/.git/objects/98/7c9341da15f390bf629693fc659430785eb7cd\n<f+++++++++ src/github.com/osism/release/.git/objects/98/d77e231e3d2c8d3a79e7fb09763b5b5468d370\ncd+++++++++ src/github.com/osism/release/.git/objects/99/\n<f+++++++++ src/github.com/osism/release/.git/objects/99/c3832849b134f1aaebe85c9d21492d26b25f87\n<f+++++++++ src/github.com/osism/release/.git/objects/99/f71d7c51260d4e58663090e8ac6a88bf0d367e\ncd+++++++++ src/github.com/osism/release/.git/objects/9a/\n<f+++++++++ src/github.com/osism/release/.git/objects/9a/81afab1a1151c049c6b24ae6e66cb81a12d5d1\ncd+++++++++ src/github.com/osism/release/.git/objects/9b/\n<f+++++++++ src/github.com/osism/release/.git/objects/9b/82f84647c582c2f965b46dbc163902679f1690\n<f+++++++++ src/github.com/osism/release/.git/objects/9b/ab682c25989c160c69662878db69a354ff6712\ncd+++++++++ src/github.com/osism/release/.git/objects/9d/\n<f+++++++++ src/github.com/osism/release/.git/objects/9d/1be2cc597e77b009b7bb2127eaba008b278863\n<f+++++++++ src/github.com/osism/release/.git/objects/9d/5bf9e3a040c68394215e994fc9cdcdeb85d7e8\n<f+++++++++ src/github.com/osism/release/.git/objects/9d/a9e44e59afa52a8cbed0caea25ed970f39791e\ncd+++++++++ src/github.com/osism/release/.git/objects/9e/\n<f+++++++++ src/github.com/osism/release/.git/objects/9e/bc1bd8da76f0c3555a0e7323d6f533527570c5\ncd+++++++++ src/github.com/osism/release/.git/objects/9f/\n<f+++++++++ src/github.com/osism/release/.git/objects/9f/3099c172e1522077be2dd78085bebc3e6d704e\n<f+++++++++ src/github.com/osism/release/.git/objects/9f/5476e2cdcdba2026dce6f12db35351e03d8d35\n<f+++++++++ src/github.com/osism/release/.git/objects/9f/f8f3706598f31456f233ab3c8be911b311e01c\ncd+++++++++ src/github.com/osism/release/.git/objects/a1/\n<f+++++++++ src/github.com/osism/release/.git/objects/a1/8d4d8ab04935b63965ec54692a9eb1d14c7b54\n<f+++++++++ src/github.com/osism/release/.git/objects/a1/f88fa235216e0837fe10ef0d19028b8ee76d28\ncd+++++++++ src/github.com/osism/release/.git/objects/a2/\n<f+++++++++ src/github.com/osism/release/.git/objects/a2/493af6aa3b9a485a50bf7f125a81e4bdd74385\ncd+++++++++ src/github.com/osism/release/.git/objects/a3/\n<f+++++++++ src/github.com/osism/release/.git/objects/a3/2a9582ee2bc948706621372f62780fb0a676ce\n<f+++++++++ src/github.com/osism/release/.git/objects/a3/b2464e395eb78adfab2ab6aa95b221701e61d4\n<f+++++++++ src/github.com/osism/release/.git/objects/a3/b3f606b11e412aa96ff735603ee36725a906c5\ncd+++++++++ src/github.com/osism/release/.git/objects/a4/\n<f+++++++++ src/github.com/osism/release/.git/objects/a4/17704c64775b3f4488e51a751620ccb43ac2d8\ncd+++++++++ src/github.com/osism/release/.git/objects/a5/\n<f+++++++++ src/github.com/osism/release/.git/objects/a5/0da0331b8f78b69f6d063acbf8e05b37530052\n<f+++++++++ src/github.com/osism/release/.git/objects/a5/9f1345c4408693bb5c98eb3597725627a0061d\ncd+++++++++ src/github.com/osism/release/.git/objects/a6/\n<f+++++++++ src/github.com/osism/release/.git/objects/a6/e24ca71ce9badebbdf3d8adad9ba2a354aae34\n<f+++++++++ src/github.com/osism/release/.git/objects/a6/e9ad070338a075b2d4d58c969f749e9f5a79c7\ncd+++++++++ src/github.com/osism/release/.git/objects/a7/\n<f+++++++++ src/github.com/osism/release/.git/objects/a7/8ce8dd195e7f6e513aafbf9d9fb7dafc14cbca\ncd+++++++++ src/github.com/osism/release/.git/objects/a8/\n<f+++++++++ src/github.com/osism/release/.git/objects/a8/6523ec17ab18d73cacadca4d1c6be92b43ea36\ncd+++++++++ src/github.com/osism/release/.git/objects/a9/\n<f+++++++++ src/github.com/osism/release/.git/objects/a9/0d32ffa14904f7b8995c6328677a63a2ce1aaf\ncd+++++++++ src/github.com/osism/release/.git/objects/ab/\n<f+++++++++ src/github.com/osism/release/.git/objects/ab/9a5896b4f70ab9e24f6be9eede0d4860a54698\n<f+++++++++ src/github.com/osism/release/.git/objects/ab/e704a8de8f116f943bdd71f5304a23b3825526\ncd+++++++++ src/github.com/osism/release/.git/objects/ae/\n<f+++++++++ src/github.com/osism/release/.git/objects/ae/61367a44d39b3eb73e6c74dc16bda5fcd43ac0\n<f+++++++++ src/github.com/osism/release/.git/objects/ae/8c9b0199c29707da7a5bd776286e8d05f4d223\ncd+++++++++ src/github.com/osism/release/.git/objects/b0/\n<f+++++++++ src/github.com/osism/release/.git/objects/b0/6ce6c2185bf279993a4f43f52b800db8efeea4\ncd+++++++++ src/github.com/osism/release/.git/objects/b1/\n<f+++++++++ src/github.com/osism/release/.git/objects/b1/f7fdd773869a1c3515ffdf58444b25475f54ce\ncd+++++++++ src/github.com/osism/release/.git/objects/b2/\n<f+++++++++ src/github.com/osism/release/.git/objects/b2/6202c727a18e5b21f1b745ac1181e60ccdd47a\n<f+++++++++ src/github.com/osism/release/.git/objects/b2/e69aed3b774d68d5f8033cd9aaa38539dc8b79\ncd+++++++++ src/github.com/osism/release/.git/objects/b3/\n<f+++++++++ src/github.com/osism/release/.git/objects/b3/36bd3addb954c7d8a2ea50cf15380a82cb91d3\n<f+++++++++ src/github.com/osism/release/.git/objects/b3/b3401a49f9c44e3f03a6efc5584d23819b7261\ncd+++++++++ src/github.com/osism/release/.git/objects/b4/\n<f+++++++++ src/github.com/osism/release/.git/objects/b4/cfb5ab87c59e30a6acf066ee1e7b9f0c332975\n<f+++++++++ src/github.com/osism/release/.git/objects/b4/ec9beaa05198abecfd275fbc4f602a425cb971\ncd+++++++++ src/github.com/osism/release/.git/objects/b5/\n<f+++++++++ src/github.com/osism/release/.git/objects/b5/1eba8b6b898cabc11c5ca2d4da30d056edd72a\n<f+++++++++ src/github.com/osism/release/.git/objects/b5/3934e15908077602cbc4bad3a262cb33603241\n<f+++++++++ src/github.com/osism/release/.git/objects/b5/4cc11245ab9e77bc03deb92d45960e92d29b8e\n<f+++++++++ src/github.com/osism/release/.git/objects/b5/599899d3f4d13c56086e3370fad320ca6d36aa\ncd+++++++++ src/github.com/osism/release/.git/objects/b6/\n<f+++++++++ src/github.com/osism/release/.git/objects/b6/2a975e147305cd2277c5391d0800f934d20ee3\n<f+++++++++ src/github.com/osism/release/.git/objects/b6/5c061ad32c99067a59903fce07364f9ccf2e8a\ncd+++++++++ src/github.com/osism/release/.git/objects/b7/\n<f+++++++++ src/github.com/osism/release/.git/objects/b7/6b51a66bab0328c3c947cb85ba53a3f1158099\n<f+++++++++ src/github.com/osism/release/.git/objects/b7/cc5a0dd3a5e3d796e036943b43d2d06b0229e6\ncd+++++++++ src/github.com/osism/release/.git/objects/b8/\n<f+++++++++ src/github.com/osism/release/.git/objects/b8/94c6ab473f936ec2d513e4142dd0e775ab4419\n<f+++++++++ src/github.com/osism/release/.git/objects/b8/c7dcda26cc419eb7cbeca49189c1428d41f261\ncd+++++++++ src/github.com/osism/release/.git/objects/b9/\n<f+++++++++ src/github.com/osism/release/.git/objects/b9/1edf9e945050463df0c605bf26dd76e6059476\ncd+++++++++ src/github.com/osism/release/.git/objects/ba/\n<f+++++++++ src/github.com/osism/release/.git/objects/ba/b548cf483d863823ab54bf9907a2d787e5293f\ncd+++++++++ src/github.com/osism/release/.git/objects/bc/\n<f+++++++++ src/github.com/osism/release/.git/objects/bc/25d9a4d363f281c20694d3c6542519d17089c8\ncd+++++++++ src/github.com/osism/release/.git/objects/bd/\n<f+++++++++ src/github.com/osism/release/.git/objects/bd/31bc3a56ccebf34b28316ba6837a1c5403a901\n<f+++++++++ src/github.com/osism/release/.git/objects/bd/3e11fe6bbb6cd98b1ca99a0f60673bd6a233b6\n<f+++++++++ src/github.com/osism/release/.git/objects/bd/5ec4856562281ad1705dc4d4f6ce1d85730ca3\ncd+++++++++ src/github.com/osism/release/.git/objects/c1/\n<f+++++++++ src/github.com/osism/release/.git/objects/c1/61b60f8d1b066c3304120ad2f2dc31e0993cd3\ncd+++++++++ src/github.com/osism/release/.git/objects/c2/\n<f+++++++++ src/github.com/osism/release/.git/objects/c2/04cfca36c47c4dfb02eb3650d4cd9862546ba3\ncd+++++++++ src/github.com/osism/release/.git/objects/c7/\n<f+++++++++ src/github.com/osism/release/.git/objects/c7/17cadc32a4b37d0bf08e61873f1bf4f275853e\ncd+++++++++ src/github.com/osism/release/.git/objects/c8/\n<f+++++++++ src/github.com/osism/release/.git/objects/c8/6a5b7af45dde41c09d326f67cea1715048e179\ncd+++++++++ src/github.com/osism/release/.git/objects/c9/\n<f+++++++++ src/github.com/osism/release/.git/objects/c9/35761e045486fb4c39e69dfcf64731d6efdeac\ncd+++++++++ src/github.com/osism/release/.git/objects/ca/\n<f+++++++++ src/github.com/osism/release/.git/objects/ca/337de53485888f6d994c61cc5eab5fe84f9576\n<f+++++++++ src/github.com/osism/release/.git/objects/ca/6eca9006447442b16c8ce4df8b8b1c1fafa425\ncd+++++++++ src/github.com/osism/release/.git/objects/cb/\n<f+++++++++ src/github.com/osism/release/.git/objects/cb/b79c675b8a9847b3ab161716d7477e0f8bcdf3\ncd+++++++++ src/github.com/osism/release/.git/objects/cc/\n<f+++++++++ src/github.com/osism/release/.git/objects/cc/d4050f4c7d3d71d51b3c42c003fb448abe040c\ncd+++++++++ src/github.com/osism/release/.git/objects/ce/\n<f+++++++++ src/github.com/osism/release/.git/objects/ce/6f2d147f694da3a3aca08114fbd33f9b6f52b1\ncd+++++++++ src/github.com/osism/release/.git/objects/cf/\n<f+++++++++ src/github.com/osism/release/.git/objects/cf/5237adfa1ce0a5c7302e3a8964ca0a7ae91f9c\n<f+++++++++ src/github.com/osism/release/.git/objects/cf/9c97ae7be4e79cf8fa48482e0ba1c64e9e0189\ncd+++++++++ src/github.com/osism/release/.git/objects/d0/\n<f+++++++++ src/github.com/osism/release/.git/objects/d0/2956a62446b34b342b79bfb733f3c0384c02d8\n<f+++++++++ src/github.com/osism/release/.git/objects/d0/8dc819e85cd090ae3961db2201c4fbf81653a8\ncd+++++++++ src/github.com/osism/release/.git/objects/d1/\n<f+++++++++ src/github.com/osism/release/.git/objects/d1/373cec372ec0f56af2231a0214ede1a1a76a37\ncd+++++++++ src/github.com/osism/release/.git/objects/d2/\n<f+++++++++ src/github.com/osism/release/.git/objects/d2/3aa0022f7188bc2abff2a8ee3debebf820e8c1\n<f+++++++++ src/github.com/osism/release/.git/objects/d2/73626a895e4a2ee3d6327f4a13871e8cbbfa1c\ncd+++++++++ src/github.com/osism/release/.git/objects/d3/\n<f+++++++++ src/github.com/osism/release/.git/objects/d3/5c9f56c1d69f1be31e7fdc6b81ae30c20cb161\n<f+++++++++ src/github.com/osism/release/.git/objects/d3/bd1d4abe742de275d65cca01a921ba0c0a4811\ncd+++++++++ src/github.com/osism/release/.git/objects/d4/\n<f+++++++++ src/github.com/osism/release/.git/objects/d4/43a1061e8f3b1cc86fa8c1e0f63b4103bddc35\n<f+++++++++ src/github.com/osism/release/.git/objects/d4/a41cf9aa1e3fc2e874ee72f0da24e470f8a259\ncd+++++++++ src/github.com/osism/release/.git/objects/d5/\n<f+++++++++ src/github.com/osism/release/.git/objects/d5/f36b815c3317db70a95d9634d5002d67b45453\ncd+++++++++ src/github.com/osism/release/.git/objects/d7/\n<f+++++++++ src/github.com/osism/release/.git/objects/d7/822775a0e1d17649bcd20723af10bb6201c331\n<f+++++++++ src/github.com/osism/release/.git/objects/d7/b84781a4e3118b581b3c733191f8f1edab69b0\ncd+++++++++ src/github.com/osism/release/.git/objects/d8/\n<f+++++++++ src/github.com/osism/release/.git/objects/d8/b96f14f124595d807537aed0ccb56df4f2bd8e\ncd+++++++++ src/github.com/osism/release/.git/objects/d9/\n<f+++++++++ src/github.com/osism/release/.git/objects/d9/6972e14776fa741ef9e6fb3933acc9b780d8ce\ncd+++++++++ src/github.com/osism/release/.git/objects/da/\n<f+++++++++ src/github.com/osism/release/.git/objects/da/08d89f521d083b03cd1fa5e54732f98e456cfc\n<f+++++++++ src/github.com/osism/release/.git/objects/da/5e5d3d3f53e8eadccda977490738e0bc80dc23\ncd+++++++++ src/github.com/osism/release/.git/objects/dc/\n<f+++++++++ src/github.com/osism/release/.git/objects/dc/7b4ebc1f17b2aef5404ed81ce040a913142e9c\n<f+++++++++ src/github.com/osism/release/.git/objects/dc/a010dfe643db82dc8664fd105a232d5d12fd22\n<f+++++++++ src/github.com/osism/release/.git/objects/dc/f6806e39c2d398dbc9ab47f72e453016eb80fb\ncd+++++++++ src/github.com/osism/release/.git/objects/de/\n<f+++++++++ src/github.com/osism/release/.git/objects/de/e46e22475d4e50bee919e4bc0b7651132ef745\ncd+++++++++ src/github.com/osism/release/.git/objects/df/\n<f+++++++++ src/github.com/osism/release/.git/objects/df/7af65ed482693857706c4238f4b4e447918b23\n<f+++++++++ src/github.com/osism/release/.git/objects/df/f7b60c597ec0926bad97168b89df6d7717cc0b\ncd+++++++++ src/github.com/osism/release/.git/objects/e1/\n<f+++++++++ src/github.com/osism/release/.git/objects/e1/2d59af27bf770a4ffd3e7a2fd652ec8ac50f7c\ncd+++++++++ src/github.com/osism/release/.git/objects/e2/\n<f+++++++++ src/github.com/osism/release/.git/objects/e2/66141c06ab96dd8b027b90b117dba991bae365\ncd+++++++++ src/github.com/osism/release/.git/objects/e4/\n<f+++++++++ src/github.com/osism/release/.git/objects/e4/1f711d43cfa26ff0a38cd5595ae929533d576e\n<f+++++++++ src/github.com/osism/release/.git/objects/e4/5ccc6452f75f25baa0f66032cf5eda80a552b2\n<f+++++++++ src/github.com/osism/release/.git/objects/e4/68b3b49e0b28c84b437c03683c7049eef95d4d\ncd+++++++++ src/github.com/osism/release/.git/objects/e7/\n<f+++++++++ src/github.com/osism/release/.git/objects/e7/81edbaed19f0807d4ef91f25c2cfb0f4b94bd4\ncd+++++++++ src/github.com/osism/release/.git/objects/e8/\n<f+++++++++ src/github.com/osism/release/.git/objects/e8/10190c8947f8184239a2a5a5b5bb69f5b0ea4c\ncd+++++++++ src/github.com/osism/release/.git/objects/e9/\n<f+++++++++ src/github.com/osism/release/.git/objects/e9/2ad47791cfe74a0bbd35c65fd9bfff229212ad\n<f+++++++++ src/github.com/osism/release/.git/objects/e9/dc809db3d88877831738fef6cfb0c2a65eeb1d\ncd+++++++++ src/github.com/osism/release/.git/objects/ec/\n<f+++++++++ src/github.com/osism/release/.git/objects/ec/acdb0afec16d994af0cae20ddd0c18eedf2fe4\ncd+++++++++ src/github.com/osism/release/.git/objects/ee/\n<f+++++++++ src/github.com/osism/release/.git/objects/ee/0309b86fb3fa9f48d2942abf7bfd6eb7ce9353\n<f+++++++++ src/github.com/osism/release/.git/objects/ee/52b9c484b684052c82c6fd8cb3b45e76e411b4\ncd+++++++++ src/github.com/osism/release/.git/objects/f1/\n<f+++++++++ src/github.com/osism/release/.git/objects/f1/68da6944123783cc1fae333ea2548932c7c37b\n<f+++++++++ src/github.com/osism/release/.git/objects/f1/97d18733e746daf8a849c936d48e2562d8c04a\n<f+++++++++ src/github.com/osism/release/.git/objects/f1/e6534932aff7c7c5f6966d1289fc0537c9eed7\ncd+++++++++ src/github.com/osism/release/.git/objects/f2/\n<f+++++++++ src/github.com/osism/release/.git/objects/f2/59fd2098ac4c036f05d59616641013d190ff43\n<f+++++++++ src/github.com/osism/release/.git/objects/f2/b3484663cce6497a44d78a6522248279a72e2c\ncd+++++++++ src/github.com/osism/release/.git/objects/f3/\n<f+++++++++ src/github.com/osism/release/.git/objects/f3/15e573cbd4e155e87e6bdec746594036897b9c\n<f+++++++++ src/github.com/osism/release/.git/objects/f3/b1b2528d075cc99a0d54148c7a3e779263bc0b\n<f+++++++++ src/github.com/osism/release/.git/objects/f3/b43d242ea69e16b8bcba8ec0980f6052104fa9\n<f+++++++++ src/github.com/osism/release/.git/objects/f3/ebe084122c84b87fabd1e86323c67dd6ee9042\ncd+++++++++ src/github.com/osism/release/.git/objects/f4/\n<f+++++++++ src/github.com/osism/release/.git/objects/f4/83ba8e47116fa1a53c717928cb2dbc7dcacde9\ncd+++++++++ src/github.com/osism/release/.git/objects/f5/\n<f+++++++++ src/github.com/osism/release/.git/objects/f5/c061c0b56adf92191b00032c9b7476c2ffdf57\n<f+++++++++ src/github.com/osism/release/.git/objects/f5/e49d6336a8b867d80ba3e1115ab1bf7eced14c\ncd+++++++++ src/github.com/osism/release/.git/objects/f6/\n<f+++++++++ src/github.com/osism/release/.git/objects/f6/59647013a0413063e8ffbb9ed7b1c9f2917341\ncd+++++++++ src/github.com/osism/release/.git/objects/f7/\n<f+++++++++ src/github.com/osism/release/.git/objects/f7/716036f2e5f3f73da4d4e1d6b212a0959fafd2\ncd+++++++++ src/github.com/osism/release/.git/objects/f8/\n<f+++++++++ src/github.com/osism/release/.git/objects/f8/3b4a3e0a6fc16f31c548631b75255f9371b193\ncd+++++++++ src/github.com/osism/release/.git/objects/f9/\n<f+++++++++ src/github.com/osism/release/.git/objects/f9/85e3cd8ddc2e1410b14e0e5dc4b3643cbf8050\ncd+++++++++ src/github.com/osism/release/.git/objects/fb/\n<f+++++++++ src/github.com/osism/release/.git/objects/fb/4f94cb053becf2de38feed16ca0affbfc619bf\n<f+++++++++ src/github.com/osism/release/.git/objects/fb/ab4b75ec213e2a9f7706e37cc96471db6b5280\ncd+++++++++ src/github.com/osism/release/.git/objects/fc/\n<f+++++++++ src/github.com/osism/release/.git/objects/fc/5e52e744916b3b5112f19492195471189074bb\n<f+++++++++ src/github.com/osism/release/.git/objects/fc/c36c5f704e19958534f359bd20a42c39e74b59\n<f+++++++++ src/github.com/osism/release/.git/objects/fc/db2852212b935e80e0d3caff443942d6edfa28\ncd+++++++++ src/github.com/osism/release/.git/objects/fd/\n<f+++++++++ src/github.com/osism/release/.git/objects/fd/de60b925689d421a012a6d53b1a0557f453b40\ncd+++++++++ src/github.com/osism/release/.git/objects/fe/\n<f+++++++++ src/github.com/osism/release/.git/objects/fe/31ff1c9046ebd9edf7539d4e9b840e2d18e2e8\ncd+++++++++ src/github.com/osism/release/.git/objects/info/\n<f+++++++++ src/github.com/osism/release/.git/objects/info/commit-graph\n<f+++++++++ src/github.com/osism/release/.git/objects/info/packs\ncd+++++++++ src/github.com/osism/release/.git/objects/pack/\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-130d1e552e57b7ae54fae5f7555b1d837f87812e.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-130d1e552e57b7ae54fae5f7555b1d837f87812e.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-1e9f52a2ad739b13d0ecb046d64da9add41d93e6.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-1e9f52a2ad739b13d0ecb046d64da9add41d93e6.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-2bf810a2a8516110bc54eb2fdc2471977924ec9a.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-2bf810a2a8516110bc54eb2fdc2471977924ec9a.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-356fe8c4bfecdf0202a316331f823700972b9626.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-356fe8c4bfecdf0202a316331f823700972b9626.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-3b923046fff831cd54a81ba23aafc86f1af14feb.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-3b923046fff831cd54a81ba23aafc86f1af14feb.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-40bb0cda8af460160c45ec0f2f9f7f1d3b902f8e.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-40bb0cda8af460160c45ec0f2f9f7f1d3b902f8e.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-47c046e90652abe405e3871b704cd4877a4df076.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-47c046e90652abe405e3871b704cd4877a4df076.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-4c7fdaa2a6ca9f9ba35fa2dc1cd4c6f801fd62a2.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-4c7fdaa2a6ca9f9ba35fa2dc1cd4c6f801fd62a2.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-4d83873a842a7c3b8975e5970788254e990deb6a.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-4d83873a842a7c3b8975e5970788254e990deb6a.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-553e2657db8dda9df930b41b1dfb812ef0cb1885.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-553e2657db8dda9df930b41b1dfb812ef0cb1885.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-5af86b8821e09c208de1fd993b177d2d8295bf50.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-5af86b8821e09c208de1fd993b177d2d8295bf50.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-5c912ed0929f2133b540f20a79b61d69a4179d53.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-5c912ed0929f2133b540f20a79b61d69a4179d53.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-68d1ee1a41cc00fd77f03cb7f4f8487ff55b2e8f.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-68d1ee1a41cc00fd77f03cb7f4f8487ff55b2e8f.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-8d71237dff082e08c1d45a4f25197f32988eb819.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-8d71237dff082e08c1d45a4f25197f32988eb819.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-9fec2cf063f197c1bff7306cd4d4f27ca8293f7e.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-9fec2cf063f197c1bff7306cd4d4f27ca8293f7e.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-a94642828d9fc3933f6b8d3e677b0a265013fd7f.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-a94642828d9fc3933f6b8d3e677b0a265013fd7f.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-b2c099119050a8b5f7c0530f54e58bea4bf9e64b.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-b2c099119050a8b5f7c0530f54e58bea4bf9e64b.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-b73a0c65c4f591ed931308b3c3072f1033ceca4e.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-b73a0c65c4f591ed931308b3c3072f1033ceca4e.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-d8c49277c4d8ffa7e810e3810603a61d971c11c1.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-d8c49277c4d8ffa7e810e3810603a61d971c11c1.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-e62eebe78bd586c98c484bb32d5e9e216c08607f.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-e62eebe78bd586c98c484bb32d5e9e216c08607f.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-e798c7d6e7dd8eea2e5b6c8c395a5dcafc44bcc6.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-e798c7d6e7dd8eea2e5b6c8c395a5dcafc44bcc6.pack\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-eddc5710712c3a96490bedcfe2b35ed912072da7.idx\n<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-eddc5710712c3a96490bedcfe2b35ed912072da7.pack\ncd+++++++++ src/github.com/osism/release/.git/refs/\ncd+++++++++ src/github.com/osism/release/.github/\n<f+++++++++ src/github.com/osism/release/.github/renovate.json\ncd+++++++++ src/github.com/osism/release/.github/workflows/\n<f+++++++++ src/github.com/osism/release/.github/workflows/add-to-project.yml\ncd+++++++++ src/github.com/osism/release/1.0.0/\n<f+++++++++ src/github.com/osism/release/1.0.0/base.yml\n<f+++++++++ src/github.com/osism/release/1.0.0/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/1.0.0/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/1.0.0/openstack-wallaby.yml\ncL+++++++++ src/github.com/osism/release/1.0.0/openstack.yml -> openstack-wallaby.yml\ncd+++++++++ src/github.com/osism/release/10.0.0/\n<f+++++++++ src/github.com/osism/release/10.0.0/base.yml\ncd+++++++++ src/github.com/osism/release/10.1.0/\n<f+++++++++ src/github.com/osism/release/10.1.0/base.yml\ncd+++++++++ src/github.com/osism/release/10.2.0/\n<f+++++++++ src/github.com/osism/release/10.2.0/base.yml\ncd+++++++++ src/github.com/osism/release/10.3.0/\n<f+++++++++ src/github.com/osism/release/10.3.0/base.yml\ncd+++++++++ src/github.com/osism/release/2.0.0/\n<f+++++++++ src/github.com/osism/release/2.0.0/base.yml\n<f+++++++++ src/github.com/osism/release/2.0.0/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/2.0.0/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/2.0.0/openstack-wallaby.yml\ncL+++++++++ src/github.com/osism/release/2.0.0/openstack.yml -> openstack-wallaby.yml\ncd+++++++++ src/github.com/osism/release/3.0.0/\n<f+++++++++ src/github.com/osism/release/3.0.0/base.yml\n<f+++++++++ src/github.com/osism/release/3.0.0/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/3.0.0/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/3.0.0/openstack-xena.yml\ncL+++++++++ src/github.com/osism/release/3.0.0/openstack.yml -> openstack-xena.yml\ncd+++++++++ src/github.com/osism/release/3.1.0/\n<f+++++++++ src/github.com/osism/release/3.1.0/base.yml\n<f+++++++++ src/github.com/osism/release/3.1.0/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/3.1.0/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/3.1.0/openstack-xena.yml\ncL+++++++++ src/github.com/osism/release/3.1.0/openstack.yml -> openstack-xena.yml\ncd+++++++++ src/github.com/osism/release/3.2.0/\n<f+++++++++ src/github.com/osism/release/3.2.0/base.yml\n<f+++++++++ src/github.com/osism/release/3.2.0/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/3.2.0/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/3.2.0/openstack-xena.yml\ncL+++++++++ src/github.com/osism/release/3.2.0/openstack.yml -> openstack-xena.yml\ncd+++++++++ src/github.com/osism/release/4.0.0/\n<f+++++++++ src/github.com/osism/release/4.0.0/base.yml\n<f+++++++++ src/github.com/osism/release/4.0.0/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/4.0.0/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/4.0.0/openstack-yoga.yml\ncL+++++++++ src/github.com/osism/release/4.0.0/openstack.yml -> openstack-yoga.yml\ncd+++++++++ src/github.com/osism/release/4.1.0/\n<f+++++++++ src/github.com/osism/release/4.1.0/base.yml\n<f+++++++++ src/github.com/osism/release/4.1.0/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/4.1.0/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/4.1.0/openstack-yoga.yml\ncL+++++++++ src/github.com/osism/release/4.1.0/openstack.yml -> openstack-yoga.yml\ncd+++++++++ src/github.com/osism/release/4.2.0/\n<f+++++++++ src/github.com/osism/release/4.2.0/base.yml\n<f+++++++++ src/github.com/osism/release/4.2.0/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/4.2.0/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/4.2.0/openstack-yoga.yml\ncL+++++++++ src/github.com/osism/release/4.2.0/openstack.yml -> openstack-yoga.yml\ncd+++++++++ src/github.com/osism/release/4.3.0/\n<f+++++++++ src/github.com/osism/release/4.3.0/base.yml\n<f+++++++++ src/github.com/osism/release/4.3.0/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/4.3.0/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/4.3.0/openstack-yoga.yml\ncL+++++++++ src/github.com/osism/release/4.3.0/openstack.yml -> openstack-yoga.yml\ncd+++++++++ src/github.com/osism/release/5.0.0/\n<f+++++++++ src/github.com/osism/release/5.0.0/base.yml\n<f+++++++++ src/github.com/osism/release/5.0.0/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/5.0.0/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/5.0.0/openstack-zed.yml\ncL+++++++++ src/github.com/osism/release/5.0.0/openstack.yml -> openstack-zed.yml\ncd+++++++++ src/github.com/osism/release/5.1.0/\n<f+++++++++ src/github.com/osism/release/5.1.0/base.yml\n<f+++++++++ src/github.com/osism/release/5.1.0/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/5.1.0/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/5.1.0/openstack-zed.yml\ncL+++++++++ src/github.com/osism/release/5.1.0/openstack.yml -> openstack-zed.yml\ncd+++++++++ src/github.com/osism/release/5.2.0/\n<f+++++++++ src/github.com/osism/release/5.2.0/base.yml\n<f+++++++++ src/github.com/osism/release/5.2.0/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/5.2.0/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/5.2.0/openstack-zed.yml\ncL+++++++++ src/github.com/osism/release/5.2.0/openstack.yml -> openstack-zed.yml\ncd+++++++++ src/github.com/osism/release/5.3.0/\n<f+++++++++ src/github.com/osism/release/5.3.0/base.yml\n<f+++++++++ src/github.com/osism/release/5.3.0/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/5.3.0/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/5.3.0/openstack-zed.yml\ncL+++++++++ src/github.com/osism/release/5.3.0/openstack.yml -> openstack-zed.yml\ncd+++++++++ src/github.com/osism/release/6.0.0/\n<f+++++++++ src/github.com/osism/release/6.0.0/base.yml\n<f+++++++++ src/github.com/osism/release/6.0.0/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/6.0.0/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/6.0.0/openstack-2023.1.yml\ncL+++++++++ src/github.com/osism/release/6.0.0/openstack.yml -> openstack-2023.1.yml\ncd+++++++++ src/github.com/osism/release/6.0.1/\n<f+++++++++ src/github.com/osism/release/6.0.1/base.yml\n<f+++++++++ src/github.com/osism/release/6.0.1/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/6.0.1/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/6.0.1/openstack-2023.1.yml\ncL+++++++++ src/github.com/osism/release/6.0.1/openstack.yml -> openstack-2023.1.yml\ncd+++++++++ src/github.com/osism/release/6.0.2/\n<f+++++++++ src/github.com/osism/release/6.0.2/base.yml\n<f+++++++++ src/github.com/osism/release/6.0.2/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/6.0.2/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/6.0.2/openstack-2023.1.yml\ncL+++++++++ src/github.com/osism/release/6.0.2/openstack.yml -> openstack-2023.1.yml\ncd+++++++++ src/github.com/osism/release/7.0.0/\n<f+++++++++ src/github.com/osism/release/7.0.0/base.yml\n<f+++++++++ src/github.com/osism/release/7.0.0/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/7.0.0/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/7.0.0/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/7.0.0/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/7.0.1/\n<f+++++++++ src/github.com/osism/release/7.0.1/base.yml\n<f+++++++++ src/github.com/osism/release/7.0.1/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/7.0.1/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/7.0.1/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/7.0.1/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/7.0.2/\n<f+++++++++ src/github.com/osism/release/7.0.2/base.yml\n<f+++++++++ src/github.com/osism/release/7.0.2/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/7.0.2/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/7.0.2/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/7.0.2/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/7.0.3/\n<f+++++++++ src/github.com/osism/release/7.0.3/base.yml\n<f+++++++++ src/github.com/osism/release/7.0.3/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/7.0.3/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/7.0.3/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/7.0.3/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/7.0.4/\n<f+++++++++ src/github.com/osism/release/7.0.4/base.yml\n<f+++++++++ src/github.com/osism/release/7.0.4/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/7.0.4/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/7.0.4/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/7.0.4/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/7.0.5/\n<f+++++++++ src/github.com/osism/release/7.0.5/base.yml\n<f+++++++++ src/github.com/osism/release/7.0.5/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/7.0.5/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/7.0.5/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/7.0.5/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/7.1.0/\n<f+++++++++ src/github.com/osism/release/7.1.0/base.yml\n<f+++++++++ src/github.com/osism/release/7.1.0/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/7.1.0/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/7.1.0/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/7.1.0/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/7.1.1/\n<f+++++++++ src/github.com/osism/release/7.1.1/base.yml\n<f+++++++++ src/github.com/osism/release/7.1.1/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/7.1.1/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/7.1.1/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/7.1.1/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/7.1.2/\n<f+++++++++ src/github.com/osism/release/7.1.2/base.yml\n<f+++++++++ src/github.com/osism/release/7.1.2/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/7.1.2/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/7.1.2/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/7.1.2/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/7.1.3/\n<f+++++++++ src/github.com/osism/release/7.1.3/base.yml\n<f+++++++++ src/github.com/osism/release/7.1.3/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/7.1.3/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/7.1.3/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/7.1.3/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/8.0.0/\n<f+++++++++ src/github.com/osism/release/8.0.0/base.yml\n<f+++++++++ src/github.com/osism/release/8.0.0/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/8.0.0/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/8.0.0/openstack-2024.1.yml\ncL+++++++++ src/github.com/osism/release/8.0.0/openstack.yml -> openstack-2024.1.yml\ncd+++++++++ src/github.com/osism/release/8.0.1/\n<f+++++++++ src/github.com/osism/release/8.0.1/base.yml\n<f+++++++++ src/github.com/osism/release/8.0.1/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/8.0.1/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/8.0.1/openstack-2024.1.yml\ncL+++++++++ src/github.com/osism/release/8.0.1/openstack.yml -> openstack-2024.1.yml\ncd+++++++++ src/github.com/osism/release/8.0.2/\n<f+++++++++ src/github.com/osism/release/8.0.2/base.yml\n<f+++++++++ src/github.com/osism/release/8.0.2/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/8.0.2/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/8.0.2/openstack-2024.1.yml\ncL+++++++++ src/github.com/osism/release/8.0.2/openstack.yml -> openstack-2024.1.yml\ncd+++++++++ src/github.com/osism/release/8.1.0/\n<f+++++++++ src/github.com/osism/release/8.1.0/base.yml\n<f+++++++++ src/github.com/osism/release/8.1.0/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/8.1.0/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/8.1.0/openstack-2024.1.yml\ncL+++++++++ src/github.com/osism/release/8.1.0/openstack.yml -> openstack-2024.1.yml\n<f+++++++++ src/github.com/osism/release/8.1.0/sbom-openstack-2024.1.yml\ncL+++++++++ src/github.com/osism/release/8.1.0/sbom-openstack.yml -> sbom-openstack-2024.1.yml\ncd+++++++++ src/github.com/osism/release/9.0.0/\n<f+++++++++ src/github.com/osism/release/9.0.0/base.yml\n<f+++++++++ src/github.com/osism/release/9.0.0/ceph-reef.yml\ncL+++++++++ src/github.com/osism/release/9.0.0/ceph.yml -> ceph-reef.yml\n<f+++++++++ src/github.com/osism/release/9.0.0/openstack-2024.2.yml\ncL+++++++++ src/github.com/osism/release/9.0.0/openstack.yml -> openstack-2024.2.yml\n<f+++++++++ src/github.com/osism/release/9.0.0/sbom-openstack-2024.2.yml\ncL+++++++++ src/github.com/osism/release/9.0.0/sbom-openstack.yml -> sbom-openstack-2024.2.yml\ncd+++++++++ src/github.com/osism/release/9.1.0/\n<f+++++++++ src/github.com/osism/release/9.1.0/base.yml\ncd+++++++++ src/github.com/osism/release/9.2.0/\n<f+++++++++ src/github.com/osism/release/9.2.0/base.yml\ncd+++++++++ src/github.com/osism/release/9.3.0/\n<f+++++++++ src/github.com/osism/release/9.3.0/base.yml\ncd+++++++++ src/github.com/osism/release/9.3.1/\n<f+++++++++ src/github.com/osism/release/9.3.1/base.yml\ncd+++++++++ src/github.com/osism/release/9.4.0/\n<f+++++++++ src/github.com/osism/release/9.4.0/base.yml\ncd+++++++++ src/github.com/osism/release/9.5.0/\n<f+++++++++ src/github.com/osism/release/9.5.0/base.yml\ncd+++++++++ src/github.com/osism/release/archive/\n<f+++++++++ src/github.com/osism/release/archive/ok-20171004-0.yml\n<f+++++++++ src/github.com/osism/release/archive/ok-20171013-0.yml\n<f+++++++++ src/github.com/osism/release/archive/ol-20171013-0.yml\ncd+++++++++ src/github.com/osism/release/archive/10.0.0-rc.1/\n<f+++++++++ src/github.com/osism/release/archive/10.0.0-rc.1/base.yml\ncd+++++++++ src/github.com/osism/release/archive/10.0.0-rc.2/\n<f+++++++++ src/github.com/osism/release/archive/10.0.0-rc.2/base.yml\ncd+++++++++ src/github.com/osism/release/archive/20171120-0/\n<f+++++++++ src/github.com/osism/release/archive/20171120-0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/20171120-0/ceph-kraken.yml\n<f+++++++++ src/github.com/osism/release/archive/20171120-0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/20171120-0/openstack-ocata.yml\ncd+++++++++ src/github.com/osism/release/archive/20180103-0/\n<f+++++++++ src/github.com/osism/release/archive/20180103-0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/20180103-0/ceph-kraken.yml\n<f+++++++++ src/github.com/osism/release/archive/20180103-0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/20180103-0/openstack-ocata.yml\ncd+++++++++ src/github.com/osism/release/archive/20180212-0/\n<f+++++++++ src/github.com/osism/release/archive/20180212-0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/20180212-0/ceph-kraken.yml\n<f+++++++++ src/github.com/osism/release/archive/20180212-0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/20180212-0/openstack-ocata.yml\ncd+++++++++ src/github.com/osism/release/archive/20180213-0/\n<f+++++++++ src/github.com/osism/release/archive/20180213-0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/20180213-0/ceph-kraken.yml\n<f+++++++++ src/github.com/osism/release/archive/20180213-0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/20180213-0/openstack-ocata.yml\n<f+++++++++ src/github.com/osism/release/archive/20180213-0/openstack-pike.yml\ncd+++++++++ src/github.com/osism/release/archive/20180306-0/\n<f+++++++++ src/github.com/osism/release/archive/20180306-0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/20180306-0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/20180306-0/openstack-ocata.yml\n<f+++++++++ src/github.com/osism/release/archive/20180306-0/openstack-pike.yml\ncd+++++++++ src/github.com/osism/release/archive/20180806-0/\n<f+++++++++ src/github.com/osism/release/archive/20180806-0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/20180806-0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/20180806-0/openstack-ocata.yml\n<f+++++++++ src/github.com/osism/release/archive/20180806-0/openstack-pike.yml\ncd+++++++++ src/github.com/osism/release/archive/20180807-0/\n<f+++++++++ src/github.com/osism/release/archive/20180807-0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/20180807-0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/20180807-0/openstack-ocata.yml\n<f+++++++++ src/github.com/osism/release/archive/20180807-0/openstack-pike.yml\ncd+++++++++ src/github.com/osism/release/archive/20181001-0/\n<f+++++++++ src/github.com/osism/release/archive/20181001-0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/20181001-0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/20181001-0/openstack-pike.yml\n<f+++++++++ src/github.com/osism/release/archive/20181001-0/openstack-queens.yml\ncd+++++++++ src/github.com/osism/release/archive/20181015-0/\n<f+++++++++ src/github.com/osism/release/archive/20181015-0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/20181015-0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/20181015-0/openstack-pike.yml\n<f+++++++++ src/github.com/osism/release/archive/20181015-0/openstack-queens.yml\ncd+++++++++ src/github.com/osism/release/archive/20181101-0/\n<f+++++++++ src/github.com/osism/release/archive/20181101-0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/20181101-0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/20181101-0/openstack-pike.yml\n<f+++++++++ src/github.com/osism/release/archive/20181101-0/openstack-queens.yml\ncd+++++++++ src/github.com/osism/release/archive/20181201-0/\n<f+++++++++ src/github.com/osism/release/archive/20181201-0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/20181201-0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/20181201-0/openstack-pike.yml\n<f+++++++++ src/github.com/osism/release/archive/20181201-0/openstack-queens.yml\ncd+++++++++ src/github.com/osism/release/archive/2019.1.0/\n<f+++++++++ src/github.com/osism/release/archive/2019.1.0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/2019.1.0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/2019.1.0/openstack-queens.yml\ncd+++++++++ src/github.com/osism/release/archive/2019.2.0/\n<f+++++++++ src/github.com/osism/release/archive/2019.2.0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/2019.2.0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/2019.2.0/openstack-queens.yml\n<f+++++++++ src/github.com/osism/release/archive/2019.2.0/openstack-rocky.yml\ncd+++++++++ src/github.com/osism/release/archive/2019.3.0/\n<f+++++++++ src/github.com/osism/release/archive/2019.3.0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/2019.3.0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/2019.3.0/openstack-queens.yml\n<f+++++++++ src/github.com/osism/release/archive/2019.3.0/openstack-rocky.yml\ncd+++++++++ src/github.com/osism/release/archive/2019.4.0/\n<f+++++++++ src/github.com/osism/release/archive/2019.4.0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/2019.4.0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/2019.4.0/openstack-queens.yml\n<f+++++++++ src/github.com/osism/release/archive/2019.4.0/openstack-rocky.yml\ncd+++++++++ src/github.com/osism/release/archive/2020.1.0/\n<f+++++++++ src/github.com/osism/release/archive/2020.1.0/base.yml\n<f+++++++++ src/github.com/osism/release/archive/2020.1.0/ceph-luminous.yml\n<f+++++++++ src/github.com/osism/release/archive/2020.1.0/ceph-nautilus.yml\n<f+++++++++ src/github.com/osism/release/archive/2020.1.0/openstack-rocky.yml\n<f+++++++++ src/github.com/osism/release/archive/2020.1.0/openstack-train.yml\ncd+++++++++ src/github.com/osism/release/archive/4.0.0a/\n<f+++++++++ src/github.com/osism/release/archive/4.0.0a/base.yml\n<f+++++++++ src/github.com/osism/release/archive/4.0.0a/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/archive/4.0.0a/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/archive/4.0.0a/openstack-yoga.yml\ncL+++++++++ src/github.com/osism/release/archive/4.0.0a/openstack.yml -> openstack-yoga.yml\ncd+++++++++ src/github.com/osism/release/archive/4.0.0b/\n<f+++++++++ src/github.com/osism/release/archive/4.0.0b/base.yml\n<f+++++++++ src/github.com/osism/release/archive/4.0.0b/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/archive/4.0.0b/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/archive/4.0.0b/openstack-yoga.yml\ncL+++++++++ src/github.com/osism/release/archive/4.0.0b/openstack.yml -> openstack-yoga.yml\ncd+++++++++ src/github.com/osism/release/archive/5.0.0a/\n<f+++++++++ src/github.com/osism/release/archive/5.0.0a/base.yml\n<f+++++++++ src/github.com/osism/release/archive/5.0.0a/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/archive/5.0.0a/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/archive/5.0.0a/openstack-zed.yml\ncL+++++++++ src/github.com/osism/release/archive/5.0.0a/openstack.yml -> openstack-zed.yml\ncd+++++++++ src/github.com/osism/release/archive/5.0.0b/\n<f+++++++++ src/github.com/osism/release/archive/5.0.0b/base.yml\n<f+++++++++ src/github.com/osism/release/archive/5.0.0b/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/archive/5.0.0b/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/archive/5.0.0b/openstack-zed.yml\ncL+++++++++ src/github.com/osism/release/archive/5.0.0b/openstack.yml -> openstack-zed.yml\ncd+++++++++ src/github.com/osism/release/archive/5.0.0c/\n<f+++++++++ src/github.com/osism/release/archive/5.0.0c/base.yml\n<f+++++++++ src/github.com/osism/release/archive/5.0.0c/ceph-pacific.yml\ncL+++++++++ src/github.com/osism/release/archive/5.0.0c/ceph.yml -> ceph-pacific.yml\n<f+++++++++ src/github.com/osism/release/archive/5.0.0c/openstack-zed.yml\ncL+++++++++ src/github.com/osism/release/archive/5.0.0c/openstack.yml -> openstack-zed.yml\ncd+++++++++ src/github.com/osism/release/archive/6.0.0a/\n<f+++++++++ src/github.com/osism/release/archive/6.0.0a/base.yml\n<f+++++++++ src/github.com/osism/release/archive/6.0.0a/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/archive/6.0.0a/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/archive/6.0.0a/openstack-2023.1.yml\ncL+++++++++ src/github.com/osism/release/archive/6.0.0a/openstack.yml -> openstack-2023.1.yml\ncd+++++++++ src/github.com/osism/release/archive/6.0.0b/\n<f+++++++++ src/github.com/osism/release/archive/6.0.0b/base.yml\n<f+++++++++ src/github.com/osism/release/archive/6.0.0b/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/archive/6.0.0b/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/archive/6.0.0b/openstack-2023.1.yml\ncL+++++++++ src/github.com/osism/release/archive/6.0.0b/openstack.yml -> openstack-2023.1.yml\ncd+++++++++ src/github.com/osism/release/archive/7.0.0a/\n<f+++++++++ src/github.com/osism/release/archive/7.0.0a/base.yml\n<f+++++++++ src/github.com/osism/release/archive/7.0.0a/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/archive/7.0.0a/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/archive/7.0.0a/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/archive/7.0.0a/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/archive/7.0.0b/\n<f+++++++++ src/github.com/osism/release/archive/7.0.0b/base.yml\n<f+++++++++ src/github.com/osism/release/archive/7.0.0b/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/archive/7.0.0b/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/archive/7.0.0b/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/archive/7.0.0b/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/archive/7.0.0c/\n<f+++++++++ src/github.com/osism/release/archive/7.0.0c/base.yml\n<f+++++++++ src/github.com/osism/release/archive/7.0.0c/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/archive/7.0.0c/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/archive/7.0.0c/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/archive/7.0.0c/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/archive/7.0.0d/\n<f+++++++++ src/github.com/osism/release/archive/7.0.0d/base.yml\n<f+++++++++ src/github.com/osism/release/archive/7.0.0d/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/archive/7.0.0d/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/archive/7.0.0d/openstack-2023.2.yml\ncL+++++++++ src/github.com/osism/release/archive/7.0.0d/openstack.yml -> openstack-2023.2.yml\ncd+++++++++ src/github.com/osism/release/archive/8.0.0-rc.1/\n<f+++++++++ src/github.com/osism/release/archive/8.0.0-rc.1/base.yml\n<f+++++++++ src/github.com/osism/release/archive/8.0.0-rc.1/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/archive/8.0.0-rc.1/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/archive/8.0.0-rc.1/openstack-2024.1.yml\ncL+++++++++ src/github.com/osism/release/archive/8.0.0-rc.1/openstack.yml -> openstack-2024.1.yml\ncd+++++++++ src/github.com/osism/release/archive/8.0.0-rc.2/\n<f+++++++++ src/github.com/osism/release/archive/8.0.0-rc.2/base.yml\n<f+++++++++ src/github.com/osism/release/archive/8.0.0-rc.2/ceph-quincy.yml\ncL+++++++++ src/github.com/osism/release/archive/8.0.0-rc.2/ceph.yml -> ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/archive/8.0.0-rc.2/openstack-2024.1.yml\ncL+++++++++ src/github.com/osism/release/archive/8.0.0-rc.2/openstack.yml -> openstack-2024.1.yml\ncd+++++++++ src/github.com/osism/release/docs/\n<f+++++++++ src/github.com/osism/release/docs/check-drift-catalog.md\n<f+++++++++ src/github.com/osism/release/docs/check-drift-image.md\n<f+++++++++ src/github.com/osism/release/docs/check-drift-kolla.md\n<f+++++++++ src/github.com/osism/release/docs/sync-mirror-tutorial.md\n<f+++++++++ src/github.com/osism/release/docs/sync-mirror.md\ncd+++++++++ src/github.com/osism/release/etc/\n<f+++++++++ src/github.com/osism/release/etc/changelog-repositories.yml\n<f+++++++++ src/github.com/osism/release/etc/collections.yml\n<f+++++++++ src/github.com/osism/release/etc/images.yml\n<f+++++++++ src/github.com/osism/release/etc/other.yml\n<f+++++++++ src/github.com/osism/release/etc/roles-manager.yml\n<f+++++++++ src/github.com/osism/release/etc/roles.yml\ncd+++++++++ src/github.com/osism/release/latest/\n<f+++++++++ src/github.com/osism/release/latest/base.yml\n<f+++++++++ src/github.com/osism/release/latest/ceph-quincy.yml\n<f+++++++++ src/github.com/osism/release/latest/ceph-reef.yml\n<f+++++++++ src/github.com/osism/release/latest/ceph-squid.yml\n<f+++++++++ src/github.com/osism/release/latest/ceph-tentacle.yml\ncL+++++++++ src/github.com/osism/release/latest/ceph.yml -> ceph-tentacle.yml\n<f+++++++++ src/github.com/osism/release/latest/openstack-2024.1.yml\n<f+++++++++ src/github.com/osism/release/latest/openstack-2024.2.yml\n<f+++++++++ src/github.com/osism/release/latest/openstack-2025.1.yml\n<f+++++++++ src/github.com/osism/release/latest/openstack-2025.2.yml\n<f+++++++++ src/github.com/osism/release/latest/openstack-2026.1.yml\ncL+++++++++ src/github.com/osism/release/latest/openstack.yml -> openstack-2025.1.yml\ncd+++++++++ src/github.com/osism/release/next/\n<f+++++++++ src/github.com/osism/release/next/kolla-ansible-v0.20250920.0.yml\n<f+++++++++ src/github.com/osism/release/next/kolla-ansible-v0.20260129.0.yml\n<f+++++++++ src/github.com/osism/release/next/kolla-v0.20250725.0.yml\ncd+++++++++ src/github.com/osism/release/scripts/\n<f+++++++++ src/github.com/osism/release/scripts/create-tags.sh\n<f+++++++++ src/github.com/osism/release/scripts/generate-changelog-input.sh\n<f+++++++++ src/github.com/osism/release/scripts/generate-release-changelog.sh\ncd+++++++++ src/github.com/osism/release/src/\n<f+++++++++ src/github.com/osism/release/src/check-drift.py\n<f+++++++++ src/github.com/osism/release/src/create-version.py\n<f+++++++++ src/github.com/osism/release/src/drift-allowlist.yml\n<f+++++++++ src/github.com/osism/release/src/drift-config.yml\n<f+++++++++ src/github.com/osism/release/src/git-diff-log.py\n<f+++++++++ src/github.com/osism/release/src/release-notes.py\n<f+++++++++ src/github.com/osism/release/src/remove-images-from-quay.py\n<f+++++++++ src/github.com/osism/release/src/sync-mirror.py\ncd+++++++++ src/github.com/osism/release/src/osism_drift/\n<f+++++++++ src/github.com/osism/release/src/osism_drift/__init__.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/archive.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/catalog.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/config.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/demo.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/driver.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/enablement.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/http.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/inventory_sections.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/kolla_docker.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/manager.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/manager_template.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/model.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/override_template.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/playbooks.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/release.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/report.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/role_defaults.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/role_scan.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/sbom_map.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/secrets_map.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/source.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/versions_template.py\ncd+++++++++ src/github.com/osism/release/src/osism_drift/drift/\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/__init__.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/catalog_role_missing.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/image_orphan.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_enablement_build.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_enablement_orphan.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_groupvars_missing.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_image_orphan.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_inventory.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_mirror_verbatim.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_orphan_config.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_retired_patch_orphan.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_secrets_orphan.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_source_ref_phase.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_version_chain_inner.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_version_chain_upstream.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_version_gate_orphan.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/plugin.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/release_vs_manager.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/role_registry_orphan.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/role_shadows.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/role_unpinned.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/rolling_pin.py\ncd+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/\n<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/__init__.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/attribute.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/classify.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/commit.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/detail.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/effective.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/gate.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/layers.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/model.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/render.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/worktree.py\n<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/write.py\ncd+++++++++ src/github.com/osism/release/tests/\n<f+++++++++ src/github.com/osism/release/tests/test_driver_groups.py\n<f+++++++++ src/github.com/osism/release/tests/test_release_notes_defaults.py\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/__init__.py\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_catalog_extract.py\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_catalog_role_missing.py\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_integration_real_repos.py\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_playbooks_constants.py\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_playbooks_kolla.py\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_playbooks_resolution.py\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_playbooks_runtimes.py\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_plugin_registry.py\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/playbooks/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/playbooks/ceph-configure-lvm-volumes.yml\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/playbooks/squid/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/playbooks/squid/ceph-pools.yml\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/playbooks/squid/ceph-purge-cluster.yml\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/playbooks/squid/ceph-purge-storage-node.yml\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/src/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/src/render-playbooks.py\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/playbooks/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/playbooks/kolla-facts.yml\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/playbooks/A/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/playbooks/A/kolla-common.yml\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/playbooks/B/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/playbooks/B/kolla-common.yml\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/scripts/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/scripts/split-kolla-ansible-site.py\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/src/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/src/render-playbooks.py\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/files/\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/files/playbooks/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/files/playbooks/.gitkeep\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/files/src/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/files/src/generate-playbook-symlinks.py\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/files/src/render-playbooks.py\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/kolla-ansible/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/kolla-ansible/.gitkeep\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/files/\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/files/src/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/files/src/render-playbooks.py\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/playbooks/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/playbooks/kubernetes-k3s.yml\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/playbooks/kubernetes-kubeconfig.yml\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/release/\ncd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/release/latest/\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/release/latest/base.yml\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/release/latest/ceph-squid.yml\n<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/release/latest/ceph.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/__init__.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/conftest.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_demo.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_driver.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_image_orphan.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_manager_parser.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_manager_template_parser.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_override_template_parser.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_plugin_registry.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_release_parser.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_release_vs_manager.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_report.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_role_defaults_parser.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_role_registry_orphan.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_role_shadows.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_role_unpinned.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_rolling_pin.py\n<f+++++++++ src/github.com/osism/release/tests/image_drift/test_source_list_tree.py\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/adminer/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/adminer/defaults/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/adminer/defaults/main.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/ceph_ansible/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/ceph_ansible/defaults/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/ceph_ansible/defaults/main.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/ciinternal/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/ciinternal/defaults/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/ciinternal/defaults/main.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/docker/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/docker/defaults/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/docker/defaults/main.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/docker/templates/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/docker/templates/daemon.json.j2\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/floatdemo/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/floatdemo/defaults/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/floatdemo/defaults/main.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/manager/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/manager/defaults/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/manager/defaults/main.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/netbox/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/netbox/defaults/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/netbox/defaults/main.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/shellcons/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/shellcons/defaults/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/shellcons/defaults/main.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/shellcons/files/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/shellcons/files/entrypoint.sh\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/streamdemo/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/streamdemo/defaults/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/streamdemo/defaults/main.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/widget/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/widget/defaults/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/widget/defaults/main.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-playbooks-manager/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-playbooks-manager/playbooks/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-playbooks-manager/playbooks/pull.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/container-image-osism-ansible/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/container-image-osism-ansible/files/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/container-image-osism-ansible/files/src/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/container-image-osism-ansible/files/src/templates/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/container-image-osism-ansible/files/src/templates/images.yml.j2\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/generics/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/generics/environments/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/generics/environments/manager/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/generics/environments/manager/images.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/release/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/release/latest/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/release/latest/base.yml\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/testbed/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/testbed/environments/\ncd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/testbed/environments/manager/\n<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/testbed/environments/manager/images.yml\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/__init__.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/conftest.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_archive.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_config.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_dir_helpers.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_driver.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_driver_stale.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_enablement.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_enablement_source_refs.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_enablement_values.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_enablement_version_gates.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_http_head.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_inventory_sections.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_docker.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_enablement_build.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_enablement_orphan.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_groupvars_missing.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_image_orphan.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_inventory.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_mirror_verbatim.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_orphan_config.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_retired_patch_orphan.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_secrets_orphan.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_source_ref_phase.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_version_chain_inner.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_version_chain_upstream.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_version_gate_orphan.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_model.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_plugin_registry.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_report.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_sbom_map.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_secrets_map.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_source.py\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_versions_template.py\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/cfg-cookiecutter/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/cfg-cookiecutter/{{cookiecutter.project_name}}/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/cfg-cookiecutter/{{cookiecutter.project_name}}/environments/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/cfg-cookiecutter/{{cookiecutter.project_name}}/environments/kolla/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/cfg-cookiecutter/{{cookiecutter.project_name}}/environments/kolla/secrets.yml.A\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/cfg-cookiecutter/{{cookiecutter.project_name}}/environments/kolla/secrets.yml.B\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-image-kolla-ansible/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-image-kolla-ansible/files/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-image-kolla-ansible/files/src/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-image-kolla-ansible/files/src/templates/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-image-kolla-ansible/files/src/templates/versions.yml.j2\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-images-kolla/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-images-kolla/src/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-images-kolla/src/tag-images-with-the-version.py\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/defaults/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/defaults/all/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/defaults/all/050-images.yml\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/defaults/all/099-kolla.yml\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/generics/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/generics/inventory/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/generics/inventory/50-kolla\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/generics/inventory/51-kolla\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla-ansible/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla-ansible/ansible/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla-ansible/ansible/inventory/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla-ansible/ansible/inventory/multinode\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/macros.j2\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/foo/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/foo/.gitkeep\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/ignored-svc/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/ignored-svc/.gitkeep\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/newsvc/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/newsvc/.gitkeep\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/off/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/off/.gitkeep\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/present_a/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/present_a/.gitkeep\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/release/\ncd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/release/latest/\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/release/latest/openstack-A.yml\n<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/release/latest/openstack-B.yml\ncd+++++++++ src/github.com/osism/release/tests/mirror_sync/\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/__init__.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/conftest.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_attribute.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_classify.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_cli.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_commit.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_detail.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_effective.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_enablement_additions.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_gate.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_layers.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_model.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_render.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_source_commits.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_worktree.py\n<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_write.py\n",
                            "rc": 0,
                            "stdout_lines": [
                                "cd+++++++++ src/",
                                "cd+++++++++ src/github.com/",
                                "cd+++++++++ src/github.com/osism/",
                                "cd+++++++++ src/github.com/osism/release/",
                                "<f+++++++++ src/github.com/osism/release/.flake8",
                                "<f+++++++++ src/github.com/osism/release/.gitignore",
                                "<f+++++++++ src/github.com/osism/release/.yamllint.yml",
                                "<f+++++++++ src/github.com/osism/release/.zuul.yaml",
                                "<f+++++++++ src/github.com/osism/release/LICENSE",
                                "<f+++++++++ src/github.com/osism/release/README.md",
                                "<f+++++++++ src/github.com/osism/release/requirements.txt",
                                "<f+++++++++ src/github.com/osism/release/tox.ini",
                                "cd+++++++++ src/github.com/osism/release/.git/",
                                "<f+++++++++ src/github.com/osism/release/.git/HEAD",
                                "<f+++++++++ src/github.com/osism/release/.git/ORIG_HEAD",
                                "<f+++++++++ src/github.com/osism/release/.git/config",
                                "<f+++++++++ src/github.com/osism/release/.git/config.worktree",
                                "<f+++++++++ src/github.com/osism/release/.git/description",
                                "<f+++++++++ src/github.com/osism/release/.git/index",
                                "<f+++++++++ src/github.com/osism/release/.git/packed-refs",
                                "cd+++++++++ src/github.com/osism/release/.git/branches/",
                                "cd+++++++++ src/github.com/osism/release/.git/hooks/",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/applypatch-msg.sample",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/commit-msg.sample",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/fsmonitor-watchman.sample",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/post-update.sample",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/pre-applypatch.sample",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/pre-commit.sample",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/pre-merge-commit.sample",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/pre-push.sample",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/pre-rebase.sample",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/pre-receive.sample",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/prepare-commit-msg.sample",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/push-to-checkout.sample",
                                "<f+++++++++ src/github.com/osism/release/.git/hooks/update.sample",
                                "cd+++++++++ src/github.com/osism/release/.git/info/",
                                "<f+++++++++ src/github.com/osism/release/.git/info/exclude",
                                "cd+++++++++ src/github.com/osism/release/.git/logs/",
                                "<f+++++++++ src/github.com/osism/release/.git/logs/HEAD",
                                "cd+++++++++ src/github.com/osism/release/.git/logs/refs/",
                                "cd+++++++++ src/github.com/osism/release/.git/logs/refs/heads/",
                                "<f+++++++++ src/github.com/osism/release/.git/logs/refs/heads/main",
                                "cd+++++++++ src/github.com/osism/release/.git/logs/refs/remotes/",
                                "cd+++++++++ src/github.com/osism/release/.git/logs/refs/remotes/origin/",
                                "<f+++++++++ src/github.com/osism/release/.git/logs/refs/remotes/origin/HEAD",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/00/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/00/56ea701bc40724cae2f63d956c25a0e9f9358b",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/00/88f5b8d0111705d894946be916b4e928a14d5d",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/04/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/04/3f2f236531ebab98c1e240f626f312804a8119",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/05/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/05/b09404aa26521892e087a2388a9ea1c719c1ef",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/09/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/09/85b926ec36bf4106b4e586a58fc9e5efdd5327",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/0b/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/0b/00a3ae7dbc87b39aad683c0876c7704dcc8981",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/0b/79899afad36dfd975e5a0e7c31c63e9b9e95a2",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/0c/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/0c/1613cd894ec2ce0ff13a7ddd2355b7dfcaf0a5",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/0c/c73a0eb86651210eb553799cf389c9b4328105",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/0d/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/0d/ac83dc490a2eae54edf299e700547eaaceb0a2",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/10/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/10/29185a5f914b1e608dc2c05b207e39020be6f2",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/11/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/11/68b010232db2994457f39b2577960cd631a18e",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/12/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/12/360d2733fc883633df8090e58ec2500c428b06",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/12/442850b4a0e64348b70ddbeb7b768bf78476ff",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/12/f36ad11efdbaafb4a056473bbfd40d3ea26800",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/13/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/13/9bf3be4b1ae775c89967816ad441340e7a3005",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/14/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/14/2a2fdea91fc4b4edf57eda91172a756ba3132f",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/15/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/15/788f1fc382c7460303e6488f6b69cd648a1186",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/15/89b871cc5ab6c6b54f17e1c64e9ea7f15ef64f",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/15/8ed6e09d5d2c3c83f028a6e0827b91bc2e16e5",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/15/b629bd98b62caa8fc3fcf409764a4b01cbbe70",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/15/da2464b2da063d8333aa45415ea0a8553b5b40",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/16/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/16/759034c3075c764d8e1b06b82b50d6e8004569",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/17/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/17/207fdd8a77f4ab06c4156ab3a71cfd72a60ce0",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/19/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/19/1c26436030e02671b29849c7d1942a94a5044c",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/19/8ab9049ec91cfb59439fd9bc437d9f915ed8d2",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/1b/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/1b/1cce7f9c9c3346354a89be2a59c8e2857061f8",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/1b/90335a42e2443bb9a4bf8a6053a4c7acde74bf",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/1c/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/1c/09993ba1d64277209e427759baa29b4393f0a2",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/1d/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/1d/0c49f1192fe882be0c0263db92ef6ba38582b6",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/1e/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/1e/65444427828feb9785d158c49ffd7181f07ab2",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/1e/9917ceab28a1e2e9dbbb068ac09dfd8b2111c9",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/1f/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/1f/e9cb94815c7f4997160addc9802aa35772ed88",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/20/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/20/f998ec99deeb66da4b2726ead8397799fcfcd7",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/21/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/21/0bc42945514846ca4d043e56c589da017c874c",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/22/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/22/c829b80776c39f0db0351fdf15162a4a987428",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/23/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/23/14cbe7aa60bea7d980e17f73aa350bf8fbdf0b",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/24/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/24/4cb6cc7bd53f93215cba432db42f7fffe83cb3",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/24/b39b7d8d984faabe7290ae52eca67d206c7de6",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/24/cbd22ac590399de7f650e2cb4ce5eb2f237459",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/26/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/26/55f6d835ba8cb028ba86430a26e26686e8c894",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/26/5697b1e96102b527cf8e129f8eac06a5a6c632",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/26/771ba5e97a8c194f09d3b25bfb0a77aa08b49e",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/28/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/28/387de2c2aa94ba8091b7bdffb3dedc51778792",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/28/def72ce3e278b0789fb22f4d92c566b96e4ea8",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/2a/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/2a/9c0da348b4696f06bed31244e165b3c8e26db6",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/2a/a2ece357a42a48cd2a1064f7748c9fb7a31fba",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/2b/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/2b/c872bccf994f8be3f35003582f6f5909a92e05",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/2d/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/2d/09af9553549f613e15fe846037b16c59bbda0e",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/2f/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/2f/47a3987ecaa93addfa84be990c8d1c052fa9f1",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/2f/6a32ed06058ba9ddabb051eef98ba2099bc9d7",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/2f/e0edca2e5d84a36eec17dfc1fe7b88e66b66f2",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/30/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/30/3f35b926c83aa36bd81538e0ca258466f1ba94",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/32/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/32/422dd7d9b96bde718f980609fbb383000eb42a",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/33/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/33/05f727c418cf4712ae86a91311808e7c74e676",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/33/edee4f70cbac121413dc534077c38e75deeffd",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/35/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/35/c60f5a47e4088d05fca83e6a7550e856026788",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/36/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/36/8dfb20c2f319569a8d17b121f5362025dab6e7",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/36/ce1800792f639956c7b01127727e8a443f1b08",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/37/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/37/51a420a063745347f45664fc64f2940afbe8c5",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/38/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/38/0171ac066865c02b1c214aa5297a2aecc41903",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/38/5ad2dc3e53d3ad763724bda538b39049df4036",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/38/8d690ee6aa3a070d0099cc862fec205d61a689",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/38/cef6a7703e6c91fe61e4c31d37f3d079f46f58",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/38/f4aa670d79187f63bed11313e1cf37f4944974",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/39/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/39/6c59b1e341fd30ec25d5ec3dbbf5b1ca752f5c",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/39/9233a780a8678605315b0f6dc67733a57bdcf8",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/39/d51bb75695a3e89fffb53365e7a5ced43e2333",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/3a/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/3a/10c59650b038379db2b98d582cd40c9be4f291",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/3a/6be8121e4ba5099a516fe760331662439095b8",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/3a/9c69eebf52eb5dbba56b86bc507d4661e6883b",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/3a/b91de62815c84479837c6c67435fe7589c761f",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/3b/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/3b/66116de97790ae61f8ac46f46ef58650efe719",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/3b/9e1f7d9c33cb90633b1590f55e099622cd6666",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/3c/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/3c/be643f25e2a27acf57f5877f960ad2cb826296",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/3e/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/3e/226b33a3c6471001ef37c803ef2327ae8f72e7",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/3e/75d3d3fe25d7f97ab594ebbdedb4cb2873b146",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/3f/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/3f/5f08a22dbb54bc4972124460c1d56f4d31c187",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/3f/b3b35d4857d63161d2e2ce1d4e8e55b5d8ff5c",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/41/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/41/cf6a0e938fcc37aad42c539d18b9b2e34e9ec0",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/44/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/44/e2b2339d6406ca82a089e7810ee2ab0f859416",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/44/f701bacc348f1de26509657799a2c8c3de24a4",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/45/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/45/eabd6cffe10f4e21844417118fe1c2896ee3bf",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/46/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/46/32dffd19e83295a0be0673930ebba9a2ae88d7",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/49/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/49/08c676928d037466ea52e231cd96a4777bb3b5",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/4b/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/4b/dbf30a19cf0d5080fdc45fc8b1fd216dcf2098",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/4c/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/4c/0563b16c6097a9a7339246922223d0cb96f67b",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/4e/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/4e/b951e17dc9dd15843c7a4b13825d93ca00a3c3",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/50/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/50/60ffb57aaccc2232c25bc8c9bdb537a215bb2e",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/51/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/51/060f9d4cf9e98b703315715c6954af68d1a963",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/52/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/52/cf1a2eaf2e7faa92fdb36b857e13d3a2fd6a9d",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/56/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/56/27e0c927b00db765bea1a08394bd85e6c54139",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/56/b021ae7cb8681df9b3bd8413962cfdd64cf181",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/58/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/58/1e55b563da17ba26ded68217ad80a575e97a3f",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/58/9aef27b1abbedb995fd41bbe7d504520f7661c",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/59/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/59/f80430f203b5fffe678e209ff809f1def0dbae",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/5b/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/5b/3b4d2251d9d7532b65505998d2988b3b666a0b",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/5b/a3d30e48e2cce9a8aba6dfeaafa1980d566b5b",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/5b/d70a9f2e5b3fb3df9ebc6cfce0052f2854403a",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/5c/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/5c/5da0a60ff325a008d1571ccb1fe1121e5c3fe5",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/5c/8b0d82bebaf70c42a2edf4290f8b448ad46ca6",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/5d/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/5d/361e116a4d79fc19b1af36d9108850c0bf1a32",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/5d/4713225168d14a98f6f093ad97b17435737518",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/5d/fdf9660d058fc6e58120d772ac44b6a5b6d8e7",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/5e/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/5e/9bdbb799931637c00149aefb591c397915e6e9",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/5f/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/5f/1df72702bc980e1a5ee09b145a27c6f3415670",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/60/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/60/2d6b2f40d64584379519543db8e4d7e9296e61",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/61/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/61/b15a07c331209f24f3f86d405b07c0a8dca28a",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/62/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/62/3c1ffe830f73d5ed84da62950f65e06d2118a7",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/64/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/64/deb072e9280032e905c0a59d43e1c7c37bde43",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/65/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/65/927425a333a73c78a9b0faf0b839bd992f4624",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/65/a830b31f080401f5635144f208692de8b780eb",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/66/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/66/6ca6bc348f249902f2918c10b19a9711e7483b",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/66/ff617e299bad0c2f2de41a8798af8fe7e985f6",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/67/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/67/88850225e78e45517779059c5ee2931e0caee7",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/68/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/68/0d7bbffd9435f89114c55846086f43255e9a85",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/68/e593f9b39955787489ac4adcd151d88661016f",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/69/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/69/0dd2abc4702c1c4aaeb92834386b7c25138de8",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/69/8474378e25c39304b0dc1e4e4c8f55f6e359c6",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/6a/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/6a/e621af96555ac6a9c07ecdd1b00c2b2bac814e",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/6b/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/6b/1a1f07e9f1624a3f083d175f3ebc8fabac04a6",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/6b/c44fbe2ef8c32fca3370d656ba649dad693b60",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/6b/c7447dd1baa6fc59c428aa64989a40d4d06bbb",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/6b/d2776cc509e56bd3a828ae3de0fd9e32f791d3",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/6c/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/6c/98137e66633fce716bb354f43a9958175b1e01",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/6d/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/6d/806b44ad01616aa628c83087574c24dd75a338",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/6f/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/6f/1d57119e42a98e015bcb901f0b7230da9053f3",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/70/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/70/5752654b376c4d1e3efae86545de9fe9e8aae2",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/70/99744f9b1c1e6030ef5487a576444c8a4634f5",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/70/a57a695630fdad1603a295d31a439a18dbe382",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/71/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/71/6a673ed6b1493b5a28bedf34c7958dc035eaaf",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/72/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/72/de929275f1225e37a4522e696618b03435d2a0",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/73/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/73/0fa4e030d5cc7b82de3b089e85c5b65a2da9c1",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/73/503b932fe3b367965c9e1276a9207993c511b1",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/75/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/75/5a70318a0da1eb6cd61407e98818e54a7a5036",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/75/637fefc09b785b2dab1a92438134115fe1b280",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/75/bc075887a9f6c2bae3073a7c193011eb6bb403",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/76/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/76/58c0d690c990a581e8a0d25244c2585574659c",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/78/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/78/3af4081727d11321c267676545b47745770fdd",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/79/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/79/664c3153c1deae6739a6e561966dd5851df684",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/7e/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/7e/73752d7d6023f869375a71c156c3ff2cfe8946",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/7e/a3446f0e8c26ce6f79ca35d49e7590e2b5ee06",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/80/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/80/5248fa5f86dce5b2d9307fee897e4b3d2a948c",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/84/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/84/3de685b712db34d94ec8845a3428406fcf8d39",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/84/79054cada21512a1d515560c8ece3873a5228b",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/85/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/85/620aedaad7d222c2cd66444e7819ec1014edb4",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/86/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/86/03b722065eb721ef3a271a59a6952c16fe32bd",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/86/19cf02b15b94ed3a28fb929be36a2da31d7e24",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/86/2f9e50fbb97f8bcd20dce691d5ecf4b2ddef40",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/86/5c253df5c0e429283cff09404c68b93c30c7f9",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/88/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/88/0c94cab4a499bb1568166be11d0d313454a2ac",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/88/51fa5e6a0a409dabc538d513f7f64378ff978a",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/89/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/89/5764c47f879d4f496c749954da45db029d046b",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/89/de0166cdda3b9def7b6829f3add7dbbcb51da3",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/8b/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/8b/4731e220ce9838e39783aa4cc626eabeaf09b6",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/8b/77e0b80266c716f53582fc0c69ebed1b0332e5",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/8b/7de765b4baa7a08ce01fb19e4214fd9c6ef53f",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/8b/ae319c9ece25e30ad01215508ed66e29276293",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/8b/e2494ee4777b8ee6e7edff93f5ae426a8098a2",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/8c/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/8c/0b2fbe889c3986b5bef6404b60c59af8438504",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/8d/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/8d/2a0f275de57ee59db120d5dcf9885c0a016adb",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/8e/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/8e/98355fc2be241fa9078278b63f49b7d3046ecf",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/8f/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/8f/7164a2e2a455c09753ab8e45ec65a016468278",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/90/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/90/b0c57071d810087ae696783fb3d185626a9c02",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/96/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/96/1f56bb76c16a8fd5aa8f1aa7a90e9be5462de9",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/96/710eebf4d6d372e50277c6da208d9778522736",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/97/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/97/1c3b97b2822d662dc2652e0ff10d8ce2407c56",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/97/9392bec97f60b2fc6ea4605ec05e08abc8b990",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/98/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/98/7c9341da15f390bf629693fc659430785eb7cd",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/98/d77e231e3d2c8d3a79e7fb09763b5b5468d370",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/99/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/99/c3832849b134f1aaebe85c9d21492d26b25f87",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/99/f71d7c51260d4e58663090e8ac6a88bf0d367e",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/9a/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/9a/81afab1a1151c049c6b24ae6e66cb81a12d5d1",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/9b/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/9b/82f84647c582c2f965b46dbc163902679f1690",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/9b/ab682c25989c160c69662878db69a354ff6712",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/9d/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/9d/1be2cc597e77b009b7bb2127eaba008b278863",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/9d/5bf9e3a040c68394215e994fc9cdcdeb85d7e8",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/9d/a9e44e59afa52a8cbed0caea25ed970f39791e",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/9e/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/9e/bc1bd8da76f0c3555a0e7323d6f533527570c5",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/9f/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/9f/3099c172e1522077be2dd78085bebc3e6d704e",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/9f/5476e2cdcdba2026dce6f12db35351e03d8d35",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/9f/f8f3706598f31456f233ab3c8be911b311e01c",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/a1/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a1/8d4d8ab04935b63965ec54692a9eb1d14c7b54",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a1/f88fa235216e0837fe10ef0d19028b8ee76d28",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/a2/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a2/493af6aa3b9a485a50bf7f125a81e4bdd74385",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/a3/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a3/2a9582ee2bc948706621372f62780fb0a676ce",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a3/b2464e395eb78adfab2ab6aa95b221701e61d4",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a3/b3f606b11e412aa96ff735603ee36725a906c5",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/a4/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a4/17704c64775b3f4488e51a751620ccb43ac2d8",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/a5/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a5/0da0331b8f78b69f6d063acbf8e05b37530052",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a5/9f1345c4408693bb5c98eb3597725627a0061d",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/a6/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a6/e24ca71ce9badebbdf3d8adad9ba2a354aae34",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a6/e9ad070338a075b2d4d58c969f749e9f5a79c7",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/a7/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a7/8ce8dd195e7f6e513aafbf9d9fb7dafc14cbca",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/a8/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a8/6523ec17ab18d73cacadca4d1c6be92b43ea36",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/a9/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/a9/0d32ffa14904f7b8995c6328677a63a2ce1aaf",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/ab/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/ab/9a5896b4f70ab9e24f6be9eede0d4860a54698",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/ab/e704a8de8f116f943bdd71f5304a23b3825526",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/ae/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/ae/61367a44d39b3eb73e6c74dc16bda5fcd43ac0",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/ae/8c9b0199c29707da7a5bd776286e8d05f4d223",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/b0/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b0/6ce6c2185bf279993a4f43f52b800db8efeea4",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/b1/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b1/f7fdd773869a1c3515ffdf58444b25475f54ce",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/b2/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b2/6202c727a18e5b21f1b745ac1181e60ccdd47a",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b2/e69aed3b774d68d5f8033cd9aaa38539dc8b79",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/b3/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b3/36bd3addb954c7d8a2ea50cf15380a82cb91d3",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b3/b3401a49f9c44e3f03a6efc5584d23819b7261",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/b4/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b4/cfb5ab87c59e30a6acf066ee1e7b9f0c332975",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b4/ec9beaa05198abecfd275fbc4f602a425cb971",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/b5/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b5/1eba8b6b898cabc11c5ca2d4da30d056edd72a",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b5/3934e15908077602cbc4bad3a262cb33603241",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b5/4cc11245ab9e77bc03deb92d45960e92d29b8e",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b5/599899d3f4d13c56086e3370fad320ca6d36aa",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/b6/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b6/2a975e147305cd2277c5391d0800f934d20ee3",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b6/5c061ad32c99067a59903fce07364f9ccf2e8a",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/b7/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b7/6b51a66bab0328c3c947cb85ba53a3f1158099",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b7/cc5a0dd3a5e3d796e036943b43d2d06b0229e6",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/b8/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b8/94c6ab473f936ec2d513e4142dd0e775ab4419",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b8/c7dcda26cc419eb7cbeca49189c1428d41f261",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/b9/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/b9/1edf9e945050463df0c605bf26dd76e6059476",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/ba/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/ba/b548cf483d863823ab54bf9907a2d787e5293f",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/bc/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/bc/25d9a4d363f281c20694d3c6542519d17089c8",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/bd/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/bd/31bc3a56ccebf34b28316ba6837a1c5403a901",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/bd/3e11fe6bbb6cd98b1ca99a0f60673bd6a233b6",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/bd/5ec4856562281ad1705dc4d4f6ce1d85730ca3",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/c1/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/c1/61b60f8d1b066c3304120ad2f2dc31e0993cd3",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/c2/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/c2/04cfca36c47c4dfb02eb3650d4cd9862546ba3",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/c7/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/c7/17cadc32a4b37d0bf08e61873f1bf4f275853e",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/c8/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/c8/6a5b7af45dde41c09d326f67cea1715048e179",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/c9/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/c9/35761e045486fb4c39e69dfcf64731d6efdeac",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/ca/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/ca/337de53485888f6d994c61cc5eab5fe84f9576",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/ca/6eca9006447442b16c8ce4df8b8b1c1fafa425",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/cb/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/cb/b79c675b8a9847b3ab161716d7477e0f8bcdf3",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/cc/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/cc/d4050f4c7d3d71d51b3c42c003fb448abe040c",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/ce/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/ce/6f2d147f694da3a3aca08114fbd33f9b6f52b1",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/cf/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/cf/5237adfa1ce0a5c7302e3a8964ca0a7ae91f9c",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/cf/9c97ae7be4e79cf8fa48482e0ba1c64e9e0189",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/d0/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d0/2956a62446b34b342b79bfb733f3c0384c02d8",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d0/8dc819e85cd090ae3961db2201c4fbf81653a8",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/d1/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d1/373cec372ec0f56af2231a0214ede1a1a76a37",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/d2/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d2/3aa0022f7188bc2abff2a8ee3debebf820e8c1",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d2/73626a895e4a2ee3d6327f4a13871e8cbbfa1c",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/d3/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d3/5c9f56c1d69f1be31e7fdc6b81ae30c20cb161",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d3/bd1d4abe742de275d65cca01a921ba0c0a4811",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/d4/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d4/43a1061e8f3b1cc86fa8c1e0f63b4103bddc35",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d4/a41cf9aa1e3fc2e874ee72f0da24e470f8a259",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/d5/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d5/f36b815c3317db70a95d9634d5002d67b45453",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/d7/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d7/822775a0e1d17649bcd20723af10bb6201c331",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d7/b84781a4e3118b581b3c733191f8f1edab69b0",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/d8/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d8/b96f14f124595d807537aed0ccb56df4f2bd8e",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/d9/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/d9/6972e14776fa741ef9e6fb3933acc9b780d8ce",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/da/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/da/08d89f521d083b03cd1fa5e54732f98e456cfc",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/da/5e5d3d3f53e8eadccda977490738e0bc80dc23",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/dc/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/dc/7b4ebc1f17b2aef5404ed81ce040a913142e9c",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/dc/a010dfe643db82dc8664fd105a232d5d12fd22",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/dc/f6806e39c2d398dbc9ab47f72e453016eb80fb",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/de/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/de/e46e22475d4e50bee919e4bc0b7651132ef745",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/df/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/df/7af65ed482693857706c4238f4b4e447918b23",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/df/f7b60c597ec0926bad97168b89df6d7717cc0b",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/e1/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/e1/2d59af27bf770a4ffd3e7a2fd652ec8ac50f7c",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/e2/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/e2/66141c06ab96dd8b027b90b117dba991bae365",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/e4/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/e4/1f711d43cfa26ff0a38cd5595ae929533d576e",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/e4/5ccc6452f75f25baa0f66032cf5eda80a552b2",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/e4/68b3b49e0b28c84b437c03683c7049eef95d4d",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/e7/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/e7/81edbaed19f0807d4ef91f25c2cfb0f4b94bd4",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/e8/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/e8/10190c8947f8184239a2a5a5b5bb69f5b0ea4c",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/e9/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/e9/2ad47791cfe74a0bbd35c65fd9bfff229212ad",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/e9/dc809db3d88877831738fef6cfb0c2a65eeb1d",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/ec/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/ec/acdb0afec16d994af0cae20ddd0c18eedf2fe4",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/ee/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/ee/0309b86fb3fa9f48d2942abf7bfd6eb7ce9353",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/ee/52b9c484b684052c82c6fd8cb3b45e76e411b4",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/f1/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f1/68da6944123783cc1fae333ea2548932c7c37b",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f1/97d18733e746daf8a849c936d48e2562d8c04a",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f1/e6534932aff7c7c5f6966d1289fc0537c9eed7",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/f2/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f2/59fd2098ac4c036f05d59616641013d190ff43",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f2/b3484663cce6497a44d78a6522248279a72e2c",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/f3/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f3/15e573cbd4e155e87e6bdec746594036897b9c",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f3/b1b2528d075cc99a0d54148c7a3e779263bc0b",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f3/b43d242ea69e16b8bcba8ec0980f6052104fa9",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f3/ebe084122c84b87fabd1e86323c67dd6ee9042",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/f4/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f4/83ba8e47116fa1a53c717928cb2dbc7dcacde9",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/f5/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f5/c061c0b56adf92191b00032c9b7476c2ffdf57",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f5/e49d6336a8b867d80ba3e1115ab1bf7eced14c",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/f6/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f6/59647013a0413063e8ffbb9ed7b1c9f2917341",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/f7/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f7/716036f2e5f3f73da4d4e1d6b212a0959fafd2",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/f8/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f8/3b4a3e0a6fc16f31c548631b75255f9371b193",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/f9/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/f9/85e3cd8ddc2e1410b14e0e5dc4b3643cbf8050",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/fb/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/fb/4f94cb053becf2de38feed16ca0affbfc619bf",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/fb/ab4b75ec213e2a9f7706e37cc96471db6b5280",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/fc/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/fc/5e52e744916b3b5112f19492195471189074bb",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/fc/c36c5f704e19958534f359bd20a42c39e74b59",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/fc/db2852212b935e80e0d3caff443942d6edfa28",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/fd/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/fd/de60b925689d421a012a6d53b1a0557f453b40",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/fe/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/fe/31ff1c9046ebd9edf7539d4e9b840e2d18e2e8",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/info/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/info/commit-graph",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/info/packs",
                                "cd+++++++++ src/github.com/osism/release/.git/objects/pack/",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-130d1e552e57b7ae54fae5f7555b1d837f87812e.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-130d1e552e57b7ae54fae5f7555b1d837f87812e.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-1e9f52a2ad739b13d0ecb046d64da9add41d93e6.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-1e9f52a2ad739b13d0ecb046d64da9add41d93e6.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-2bf810a2a8516110bc54eb2fdc2471977924ec9a.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-2bf810a2a8516110bc54eb2fdc2471977924ec9a.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-356fe8c4bfecdf0202a316331f823700972b9626.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-356fe8c4bfecdf0202a316331f823700972b9626.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-3b923046fff831cd54a81ba23aafc86f1af14feb.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-3b923046fff831cd54a81ba23aafc86f1af14feb.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-40bb0cda8af460160c45ec0f2f9f7f1d3b902f8e.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-40bb0cda8af460160c45ec0f2f9f7f1d3b902f8e.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-47c046e90652abe405e3871b704cd4877a4df076.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-47c046e90652abe405e3871b704cd4877a4df076.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-4c7fdaa2a6ca9f9ba35fa2dc1cd4c6f801fd62a2.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-4c7fdaa2a6ca9f9ba35fa2dc1cd4c6f801fd62a2.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-4d83873a842a7c3b8975e5970788254e990deb6a.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-4d83873a842a7c3b8975e5970788254e990deb6a.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-553e2657db8dda9df930b41b1dfb812ef0cb1885.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-553e2657db8dda9df930b41b1dfb812ef0cb1885.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-5af86b8821e09c208de1fd993b177d2d8295bf50.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-5af86b8821e09c208de1fd993b177d2d8295bf50.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-5c912ed0929f2133b540f20a79b61d69a4179d53.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-5c912ed0929f2133b540f20a79b61d69a4179d53.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-68d1ee1a41cc00fd77f03cb7f4f8487ff55b2e8f.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-68d1ee1a41cc00fd77f03cb7f4f8487ff55b2e8f.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-8d71237dff082e08c1d45a4f25197f32988eb819.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-8d71237dff082e08c1d45a4f25197f32988eb819.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-9fec2cf063f197c1bff7306cd4d4f27ca8293f7e.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-9fec2cf063f197c1bff7306cd4d4f27ca8293f7e.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-a94642828d9fc3933f6b8d3e677b0a265013fd7f.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-a94642828d9fc3933f6b8d3e677b0a265013fd7f.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-b2c099119050a8b5f7c0530f54e58bea4bf9e64b.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-b2c099119050a8b5f7c0530f54e58bea4bf9e64b.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-b73a0c65c4f591ed931308b3c3072f1033ceca4e.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-b73a0c65c4f591ed931308b3c3072f1033ceca4e.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-d8c49277c4d8ffa7e810e3810603a61d971c11c1.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-d8c49277c4d8ffa7e810e3810603a61d971c11c1.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-e62eebe78bd586c98c484bb32d5e9e216c08607f.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-e62eebe78bd586c98c484bb32d5e9e216c08607f.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-e798c7d6e7dd8eea2e5b6c8c395a5dcafc44bcc6.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-e798c7d6e7dd8eea2e5b6c8c395a5dcafc44bcc6.pack",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-eddc5710712c3a96490bedcfe2b35ed912072da7.idx",
                                "<f+++++++++ src/github.com/osism/release/.git/objects/pack/pack-eddc5710712c3a96490bedcfe2b35ed912072da7.pack",
                                "cd+++++++++ src/github.com/osism/release/.git/refs/",
                                "cd+++++++++ src/github.com/osism/release/.github/",
                                "<f+++++++++ src/github.com/osism/release/.github/renovate.json",
                                "cd+++++++++ src/github.com/osism/release/.github/workflows/",
                                "<f+++++++++ src/github.com/osism/release/.github/workflows/add-to-project.yml",
                                "cd+++++++++ src/github.com/osism/release/1.0.0/",
                                "<f+++++++++ src/github.com/osism/release/1.0.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/1.0.0/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/1.0.0/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/1.0.0/openstack-wallaby.yml",
                                "cL+++++++++ src/github.com/osism/release/1.0.0/openstack.yml -> openstack-wallaby.yml",
                                "cd+++++++++ src/github.com/osism/release/10.0.0/",
                                "<f+++++++++ src/github.com/osism/release/10.0.0/base.yml",
                                "cd+++++++++ src/github.com/osism/release/10.1.0/",
                                "<f+++++++++ src/github.com/osism/release/10.1.0/base.yml",
                                "cd+++++++++ src/github.com/osism/release/10.2.0/",
                                "<f+++++++++ src/github.com/osism/release/10.2.0/base.yml",
                                "cd+++++++++ src/github.com/osism/release/10.3.0/",
                                "<f+++++++++ src/github.com/osism/release/10.3.0/base.yml",
                                "cd+++++++++ src/github.com/osism/release/2.0.0/",
                                "<f+++++++++ src/github.com/osism/release/2.0.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/2.0.0/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/2.0.0/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/2.0.0/openstack-wallaby.yml",
                                "cL+++++++++ src/github.com/osism/release/2.0.0/openstack.yml -> openstack-wallaby.yml",
                                "cd+++++++++ src/github.com/osism/release/3.0.0/",
                                "<f+++++++++ src/github.com/osism/release/3.0.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/3.0.0/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/3.0.0/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/3.0.0/openstack-xena.yml",
                                "cL+++++++++ src/github.com/osism/release/3.0.0/openstack.yml -> openstack-xena.yml",
                                "cd+++++++++ src/github.com/osism/release/3.1.0/",
                                "<f+++++++++ src/github.com/osism/release/3.1.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/3.1.0/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/3.1.0/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/3.1.0/openstack-xena.yml",
                                "cL+++++++++ src/github.com/osism/release/3.1.0/openstack.yml -> openstack-xena.yml",
                                "cd+++++++++ src/github.com/osism/release/3.2.0/",
                                "<f+++++++++ src/github.com/osism/release/3.2.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/3.2.0/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/3.2.0/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/3.2.0/openstack-xena.yml",
                                "cL+++++++++ src/github.com/osism/release/3.2.0/openstack.yml -> openstack-xena.yml",
                                "cd+++++++++ src/github.com/osism/release/4.0.0/",
                                "<f+++++++++ src/github.com/osism/release/4.0.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/4.0.0/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/4.0.0/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/4.0.0/openstack-yoga.yml",
                                "cL+++++++++ src/github.com/osism/release/4.0.0/openstack.yml -> openstack-yoga.yml",
                                "cd+++++++++ src/github.com/osism/release/4.1.0/",
                                "<f+++++++++ src/github.com/osism/release/4.1.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/4.1.0/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/4.1.0/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/4.1.0/openstack-yoga.yml",
                                "cL+++++++++ src/github.com/osism/release/4.1.0/openstack.yml -> openstack-yoga.yml",
                                "cd+++++++++ src/github.com/osism/release/4.2.0/",
                                "<f+++++++++ src/github.com/osism/release/4.2.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/4.2.0/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/4.2.0/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/4.2.0/openstack-yoga.yml",
                                "cL+++++++++ src/github.com/osism/release/4.2.0/openstack.yml -> openstack-yoga.yml",
                                "cd+++++++++ src/github.com/osism/release/4.3.0/",
                                "<f+++++++++ src/github.com/osism/release/4.3.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/4.3.0/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/4.3.0/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/4.3.0/openstack-yoga.yml",
                                "cL+++++++++ src/github.com/osism/release/4.3.0/openstack.yml -> openstack-yoga.yml",
                                "cd+++++++++ src/github.com/osism/release/5.0.0/",
                                "<f+++++++++ src/github.com/osism/release/5.0.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/5.0.0/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/5.0.0/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/5.0.0/openstack-zed.yml",
                                "cL+++++++++ src/github.com/osism/release/5.0.0/openstack.yml -> openstack-zed.yml",
                                "cd+++++++++ src/github.com/osism/release/5.1.0/",
                                "<f+++++++++ src/github.com/osism/release/5.1.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/5.1.0/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/5.1.0/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/5.1.0/openstack-zed.yml",
                                "cL+++++++++ src/github.com/osism/release/5.1.0/openstack.yml -> openstack-zed.yml",
                                "cd+++++++++ src/github.com/osism/release/5.2.0/",
                                "<f+++++++++ src/github.com/osism/release/5.2.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/5.2.0/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/5.2.0/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/5.2.0/openstack-zed.yml",
                                "cL+++++++++ src/github.com/osism/release/5.2.0/openstack.yml -> openstack-zed.yml",
                                "cd+++++++++ src/github.com/osism/release/5.3.0/",
                                "<f+++++++++ src/github.com/osism/release/5.3.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/5.3.0/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/5.3.0/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/5.3.0/openstack-zed.yml",
                                "cL+++++++++ src/github.com/osism/release/5.3.0/openstack.yml -> openstack-zed.yml",
                                "cd+++++++++ src/github.com/osism/release/6.0.0/",
                                "<f+++++++++ src/github.com/osism/release/6.0.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/6.0.0/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/6.0.0/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/6.0.0/openstack-2023.1.yml",
                                "cL+++++++++ src/github.com/osism/release/6.0.0/openstack.yml -> openstack-2023.1.yml",
                                "cd+++++++++ src/github.com/osism/release/6.0.1/",
                                "<f+++++++++ src/github.com/osism/release/6.0.1/base.yml",
                                "<f+++++++++ src/github.com/osism/release/6.0.1/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/6.0.1/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/6.0.1/openstack-2023.1.yml",
                                "cL+++++++++ src/github.com/osism/release/6.0.1/openstack.yml -> openstack-2023.1.yml",
                                "cd+++++++++ src/github.com/osism/release/6.0.2/",
                                "<f+++++++++ src/github.com/osism/release/6.0.2/base.yml",
                                "<f+++++++++ src/github.com/osism/release/6.0.2/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/6.0.2/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/6.0.2/openstack-2023.1.yml",
                                "cL+++++++++ src/github.com/osism/release/6.0.2/openstack.yml -> openstack-2023.1.yml",
                                "cd+++++++++ src/github.com/osism/release/7.0.0/",
                                "<f+++++++++ src/github.com/osism/release/7.0.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/7.0.0/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/7.0.0/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/7.0.0/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/7.0.0/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/7.0.1/",
                                "<f+++++++++ src/github.com/osism/release/7.0.1/base.yml",
                                "<f+++++++++ src/github.com/osism/release/7.0.1/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/7.0.1/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/7.0.1/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/7.0.1/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/7.0.2/",
                                "<f+++++++++ src/github.com/osism/release/7.0.2/base.yml",
                                "<f+++++++++ src/github.com/osism/release/7.0.2/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/7.0.2/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/7.0.2/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/7.0.2/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/7.0.3/",
                                "<f+++++++++ src/github.com/osism/release/7.0.3/base.yml",
                                "<f+++++++++ src/github.com/osism/release/7.0.3/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/7.0.3/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/7.0.3/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/7.0.3/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/7.0.4/",
                                "<f+++++++++ src/github.com/osism/release/7.0.4/base.yml",
                                "<f+++++++++ src/github.com/osism/release/7.0.4/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/7.0.4/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/7.0.4/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/7.0.4/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/7.0.5/",
                                "<f+++++++++ src/github.com/osism/release/7.0.5/base.yml",
                                "<f+++++++++ src/github.com/osism/release/7.0.5/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/7.0.5/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/7.0.5/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/7.0.5/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/7.1.0/",
                                "<f+++++++++ src/github.com/osism/release/7.1.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/7.1.0/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/7.1.0/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/7.1.0/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/7.1.0/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/7.1.1/",
                                "<f+++++++++ src/github.com/osism/release/7.1.1/base.yml",
                                "<f+++++++++ src/github.com/osism/release/7.1.1/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/7.1.1/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/7.1.1/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/7.1.1/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/7.1.2/",
                                "<f+++++++++ src/github.com/osism/release/7.1.2/base.yml",
                                "<f+++++++++ src/github.com/osism/release/7.1.2/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/7.1.2/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/7.1.2/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/7.1.2/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/7.1.3/",
                                "<f+++++++++ src/github.com/osism/release/7.1.3/base.yml",
                                "<f+++++++++ src/github.com/osism/release/7.1.3/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/7.1.3/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/7.1.3/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/7.1.3/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/8.0.0/",
                                "<f+++++++++ src/github.com/osism/release/8.0.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/8.0.0/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/8.0.0/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/8.0.0/openstack-2024.1.yml",
                                "cL+++++++++ src/github.com/osism/release/8.0.0/openstack.yml -> openstack-2024.1.yml",
                                "cd+++++++++ src/github.com/osism/release/8.0.1/",
                                "<f+++++++++ src/github.com/osism/release/8.0.1/base.yml",
                                "<f+++++++++ src/github.com/osism/release/8.0.1/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/8.0.1/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/8.0.1/openstack-2024.1.yml",
                                "cL+++++++++ src/github.com/osism/release/8.0.1/openstack.yml -> openstack-2024.1.yml",
                                "cd+++++++++ src/github.com/osism/release/8.0.2/",
                                "<f+++++++++ src/github.com/osism/release/8.0.2/base.yml",
                                "<f+++++++++ src/github.com/osism/release/8.0.2/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/8.0.2/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/8.0.2/openstack-2024.1.yml",
                                "cL+++++++++ src/github.com/osism/release/8.0.2/openstack.yml -> openstack-2024.1.yml",
                                "cd+++++++++ src/github.com/osism/release/8.1.0/",
                                "<f+++++++++ src/github.com/osism/release/8.1.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/8.1.0/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/8.1.0/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/8.1.0/openstack-2024.1.yml",
                                "cL+++++++++ src/github.com/osism/release/8.1.0/openstack.yml -> openstack-2024.1.yml",
                                "<f+++++++++ src/github.com/osism/release/8.1.0/sbom-openstack-2024.1.yml",
                                "cL+++++++++ src/github.com/osism/release/8.1.0/sbom-openstack.yml -> sbom-openstack-2024.1.yml",
                                "cd+++++++++ src/github.com/osism/release/9.0.0/",
                                "<f+++++++++ src/github.com/osism/release/9.0.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/9.0.0/ceph-reef.yml",
                                "cL+++++++++ src/github.com/osism/release/9.0.0/ceph.yml -> ceph-reef.yml",
                                "<f+++++++++ src/github.com/osism/release/9.0.0/openstack-2024.2.yml",
                                "cL+++++++++ src/github.com/osism/release/9.0.0/openstack.yml -> openstack-2024.2.yml",
                                "<f+++++++++ src/github.com/osism/release/9.0.0/sbom-openstack-2024.2.yml",
                                "cL+++++++++ src/github.com/osism/release/9.0.0/sbom-openstack.yml -> sbom-openstack-2024.2.yml",
                                "cd+++++++++ src/github.com/osism/release/9.1.0/",
                                "<f+++++++++ src/github.com/osism/release/9.1.0/base.yml",
                                "cd+++++++++ src/github.com/osism/release/9.2.0/",
                                "<f+++++++++ src/github.com/osism/release/9.2.0/base.yml",
                                "cd+++++++++ src/github.com/osism/release/9.3.0/",
                                "<f+++++++++ src/github.com/osism/release/9.3.0/base.yml",
                                "cd+++++++++ src/github.com/osism/release/9.3.1/",
                                "<f+++++++++ src/github.com/osism/release/9.3.1/base.yml",
                                "cd+++++++++ src/github.com/osism/release/9.4.0/",
                                "<f+++++++++ src/github.com/osism/release/9.4.0/base.yml",
                                "cd+++++++++ src/github.com/osism/release/9.5.0/",
                                "<f+++++++++ src/github.com/osism/release/9.5.0/base.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/",
                                "<f+++++++++ src/github.com/osism/release/archive/ok-20171004-0.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/ok-20171013-0.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/ol-20171013-0.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/10.0.0-rc.1/",
                                "<f+++++++++ src/github.com/osism/release/archive/10.0.0-rc.1/base.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/10.0.0-rc.2/",
                                "<f+++++++++ src/github.com/osism/release/archive/10.0.0-rc.2/base.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/20171120-0/",
                                "<f+++++++++ src/github.com/osism/release/archive/20171120-0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20171120-0/ceph-kraken.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20171120-0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20171120-0/openstack-ocata.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/20180103-0/",
                                "<f+++++++++ src/github.com/osism/release/archive/20180103-0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180103-0/ceph-kraken.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180103-0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180103-0/openstack-ocata.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/20180212-0/",
                                "<f+++++++++ src/github.com/osism/release/archive/20180212-0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180212-0/ceph-kraken.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180212-0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180212-0/openstack-ocata.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/20180213-0/",
                                "<f+++++++++ src/github.com/osism/release/archive/20180213-0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180213-0/ceph-kraken.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180213-0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180213-0/openstack-ocata.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180213-0/openstack-pike.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/20180306-0/",
                                "<f+++++++++ src/github.com/osism/release/archive/20180306-0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180306-0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180306-0/openstack-ocata.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180306-0/openstack-pike.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/20180806-0/",
                                "<f+++++++++ src/github.com/osism/release/archive/20180806-0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180806-0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180806-0/openstack-ocata.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180806-0/openstack-pike.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/20180807-0/",
                                "<f+++++++++ src/github.com/osism/release/archive/20180807-0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180807-0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180807-0/openstack-ocata.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20180807-0/openstack-pike.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/20181001-0/",
                                "<f+++++++++ src/github.com/osism/release/archive/20181001-0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20181001-0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20181001-0/openstack-pike.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20181001-0/openstack-queens.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/20181015-0/",
                                "<f+++++++++ src/github.com/osism/release/archive/20181015-0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20181015-0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20181015-0/openstack-pike.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20181015-0/openstack-queens.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/20181101-0/",
                                "<f+++++++++ src/github.com/osism/release/archive/20181101-0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20181101-0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20181101-0/openstack-pike.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20181101-0/openstack-queens.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/20181201-0/",
                                "<f+++++++++ src/github.com/osism/release/archive/20181201-0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20181201-0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20181201-0/openstack-pike.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/20181201-0/openstack-queens.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/2019.1.0/",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.1.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.1.0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.1.0/openstack-queens.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/2019.2.0/",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.2.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.2.0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.2.0/openstack-queens.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.2.0/openstack-rocky.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/2019.3.0/",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.3.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.3.0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.3.0/openstack-queens.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.3.0/openstack-rocky.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/2019.4.0/",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.4.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.4.0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.4.0/openstack-queens.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2019.4.0/openstack-rocky.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/2020.1.0/",
                                "<f+++++++++ src/github.com/osism/release/archive/2020.1.0/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2020.1.0/ceph-luminous.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2020.1.0/ceph-nautilus.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2020.1.0/openstack-rocky.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/2020.1.0/openstack-train.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/4.0.0a/",
                                "<f+++++++++ src/github.com/osism/release/archive/4.0.0a/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/4.0.0a/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/4.0.0a/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/4.0.0a/openstack-yoga.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/4.0.0a/openstack.yml -> openstack-yoga.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/4.0.0b/",
                                "<f+++++++++ src/github.com/osism/release/archive/4.0.0b/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/4.0.0b/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/4.0.0b/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/4.0.0b/openstack-yoga.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/4.0.0b/openstack.yml -> openstack-yoga.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/5.0.0a/",
                                "<f+++++++++ src/github.com/osism/release/archive/5.0.0a/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/5.0.0a/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/5.0.0a/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/5.0.0a/openstack-zed.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/5.0.0a/openstack.yml -> openstack-zed.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/5.0.0b/",
                                "<f+++++++++ src/github.com/osism/release/archive/5.0.0b/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/5.0.0b/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/5.0.0b/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/5.0.0b/openstack-zed.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/5.0.0b/openstack.yml -> openstack-zed.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/5.0.0c/",
                                "<f+++++++++ src/github.com/osism/release/archive/5.0.0c/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/5.0.0c/ceph-pacific.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/5.0.0c/ceph.yml -> ceph-pacific.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/5.0.0c/openstack-zed.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/5.0.0c/openstack.yml -> openstack-zed.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/6.0.0a/",
                                "<f+++++++++ src/github.com/osism/release/archive/6.0.0a/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/6.0.0a/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/6.0.0a/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/6.0.0a/openstack-2023.1.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/6.0.0a/openstack.yml -> openstack-2023.1.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/6.0.0b/",
                                "<f+++++++++ src/github.com/osism/release/archive/6.0.0b/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/6.0.0b/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/6.0.0b/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/6.0.0b/openstack-2023.1.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/6.0.0b/openstack.yml -> openstack-2023.1.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/7.0.0a/",
                                "<f+++++++++ src/github.com/osism/release/archive/7.0.0a/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/7.0.0a/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/7.0.0a/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/7.0.0a/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/7.0.0a/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/7.0.0b/",
                                "<f+++++++++ src/github.com/osism/release/archive/7.0.0b/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/7.0.0b/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/7.0.0b/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/7.0.0b/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/7.0.0b/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/7.0.0c/",
                                "<f+++++++++ src/github.com/osism/release/archive/7.0.0c/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/7.0.0c/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/7.0.0c/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/7.0.0c/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/7.0.0c/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/7.0.0d/",
                                "<f+++++++++ src/github.com/osism/release/archive/7.0.0d/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/7.0.0d/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/7.0.0d/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/7.0.0d/openstack-2023.2.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/7.0.0d/openstack.yml -> openstack-2023.2.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/8.0.0-rc.1/",
                                "<f+++++++++ src/github.com/osism/release/archive/8.0.0-rc.1/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/8.0.0-rc.1/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/8.0.0-rc.1/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/8.0.0-rc.1/openstack-2024.1.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/8.0.0-rc.1/openstack.yml -> openstack-2024.1.yml",
                                "cd+++++++++ src/github.com/osism/release/archive/8.0.0-rc.2/",
                                "<f+++++++++ src/github.com/osism/release/archive/8.0.0-rc.2/base.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/8.0.0-rc.2/ceph-quincy.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/8.0.0-rc.2/ceph.yml -> ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/archive/8.0.0-rc.2/openstack-2024.1.yml",
                                "cL+++++++++ src/github.com/osism/release/archive/8.0.0-rc.2/openstack.yml -> openstack-2024.1.yml",
                                "cd+++++++++ src/github.com/osism/release/docs/",
                                "<f+++++++++ src/github.com/osism/release/docs/check-drift-catalog.md",
                                "<f+++++++++ src/github.com/osism/release/docs/check-drift-image.md",
                                "<f+++++++++ src/github.com/osism/release/docs/check-drift-kolla.md",
                                "<f+++++++++ src/github.com/osism/release/docs/sync-mirror-tutorial.md",
                                "<f+++++++++ src/github.com/osism/release/docs/sync-mirror.md",
                                "cd+++++++++ src/github.com/osism/release/etc/",
                                "<f+++++++++ src/github.com/osism/release/etc/changelog-repositories.yml",
                                "<f+++++++++ src/github.com/osism/release/etc/collections.yml",
                                "<f+++++++++ src/github.com/osism/release/etc/images.yml",
                                "<f+++++++++ src/github.com/osism/release/etc/other.yml",
                                "<f+++++++++ src/github.com/osism/release/etc/roles-manager.yml",
                                "<f+++++++++ src/github.com/osism/release/etc/roles.yml",
                                "cd+++++++++ src/github.com/osism/release/latest/",
                                "<f+++++++++ src/github.com/osism/release/latest/base.yml",
                                "<f+++++++++ src/github.com/osism/release/latest/ceph-quincy.yml",
                                "<f+++++++++ src/github.com/osism/release/latest/ceph-reef.yml",
                                "<f+++++++++ src/github.com/osism/release/latest/ceph-squid.yml",
                                "<f+++++++++ src/github.com/osism/release/latest/ceph-tentacle.yml",
                                "cL+++++++++ src/github.com/osism/release/latest/ceph.yml -> ceph-tentacle.yml",
                                "<f+++++++++ src/github.com/osism/release/latest/openstack-2024.1.yml",
                                "<f+++++++++ src/github.com/osism/release/latest/openstack-2024.2.yml",
                                "<f+++++++++ src/github.com/osism/release/latest/openstack-2025.1.yml",
                                "<f+++++++++ src/github.com/osism/release/latest/openstack-2025.2.yml",
                                "<f+++++++++ src/github.com/osism/release/latest/openstack-2026.1.yml",
                                "cL+++++++++ src/github.com/osism/release/latest/openstack.yml -> openstack-2025.1.yml",
                                "cd+++++++++ src/github.com/osism/release/next/",
                                "<f+++++++++ src/github.com/osism/release/next/kolla-ansible-v0.20250920.0.yml",
                                "<f+++++++++ src/github.com/osism/release/next/kolla-ansible-v0.20260129.0.yml",
                                "<f+++++++++ src/github.com/osism/release/next/kolla-v0.20250725.0.yml",
                                "cd+++++++++ src/github.com/osism/release/scripts/",
                                "<f+++++++++ src/github.com/osism/release/scripts/create-tags.sh",
                                "<f+++++++++ src/github.com/osism/release/scripts/generate-changelog-input.sh",
                                "<f+++++++++ src/github.com/osism/release/scripts/generate-release-changelog.sh",
                                "cd+++++++++ src/github.com/osism/release/src/",
                                "<f+++++++++ src/github.com/osism/release/src/check-drift.py",
                                "<f+++++++++ src/github.com/osism/release/src/create-version.py",
                                "<f+++++++++ src/github.com/osism/release/src/drift-allowlist.yml",
                                "<f+++++++++ src/github.com/osism/release/src/drift-config.yml",
                                "<f+++++++++ src/github.com/osism/release/src/git-diff-log.py",
                                "<f+++++++++ src/github.com/osism/release/src/release-notes.py",
                                "<f+++++++++ src/github.com/osism/release/src/remove-images-from-quay.py",
                                "<f+++++++++ src/github.com/osism/release/src/sync-mirror.py",
                                "cd+++++++++ src/github.com/osism/release/src/osism_drift/",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/__init__.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/archive.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/catalog.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/config.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/demo.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/driver.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/enablement.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/http.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/inventory_sections.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/kolla_docker.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/manager.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/manager_template.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/model.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/override_template.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/playbooks.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/release.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/report.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/role_defaults.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/role_scan.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/sbom_map.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/secrets_map.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/source.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/versions_template.py",
                                "cd+++++++++ src/github.com/osism/release/src/osism_drift/drift/",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/__init__.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/catalog_role_missing.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/image_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_enablement_build.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_enablement_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_groupvars_missing.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_image_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_inventory.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_mirror_verbatim.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_orphan_config.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_retired_patch_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_secrets_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_source_ref_phase.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_version_chain_inner.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_version_chain_upstream.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/kolla_version_gate_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/plugin.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/release_vs_manager.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/role_registry_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/role_shadows.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/role_unpinned.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/drift/rolling_pin.py",
                                "cd+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/__init__.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/attribute.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/classify.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/commit.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/detail.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/effective.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/gate.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/layers.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/model.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/render.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/worktree.py",
                                "<f+++++++++ src/github.com/osism/release/src/osism_drift/mirror_sync/write.py",
                                "cd+++++++++ src/github.com/osism/release/tests/",
                                "<f+++++++++ src/github.com/osism/release/tests/test_driver_groups.py",
                                "<f+++++++++ src/github.com/osism/release/tests/test_release_notes_defaults.py",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/__init__.py",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_catalog_extract.py",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_catalog_role_missing.py",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_integration_real_repos.py",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_playbooks_constants.py",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_playbooks_kolla.py",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_playbooks_resolution.py",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_playbooks_runtimes.py",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/test_plugin_registry.py",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/playbooks/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/playbooks/ceph-configure-lvm-volumes.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/playbooks/squid/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/playbooks/squid/ceph-pools.yml",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/playbooks/squid/ceph-purge-cluster.yml",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/playbooks/squid/ceph-purge-storage-node.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/src/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-ceph-ansible/files/src/render-playbooks.py",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/playbooks/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/playbooks/kolla-facts.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/playbooks/A/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/playbooks/A/kolla-common.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/playbooks/B/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/playbooks/B/kolla-common.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/scripts/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/scripts/split-kolla-ansible-site.py",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/src/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-kolla-ansible/files/src/render-playbooks.py",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/files/",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/files/playbooks/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/files/playbooks/.gitkeep",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/files/src/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/files/src/generate-playbook-symlinks.py",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/container-image-osism-ansible/files/src/render-playbooks.py",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/kolla-ansible/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/kolla-ansible/.gitkeep",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/files/",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/files/src/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/files/src/render-playbooks.py",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/playbooks/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/playbooks/kubernetes-k3s.yml",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/osism-kubernetes/playbooks/kubernetes-kubeconfig.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/release/",
                                "cd+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/release/latest/",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/release/latest/base.yml",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/release/latest/ceph-squid.yml",
                                "<f+++++++++ src/github.com/osism/release/tests/catalog_drift/fixtures/release/latest/ceph.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/__init__.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/conftest.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_demo.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_driver.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_image_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_manager_parser.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_manager_template_parser.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_override_template_parser.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_plugin_registry.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_release_parser.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_release_vs_manager.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_report.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_role_defaults_parser.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_role_registry_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_role_shadows.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_role_unpinned.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_rolling_pin.py",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/test_source_list_tree.py",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/adminer/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/adminer/defaults/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/adminer/defaults/main.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/ceph_ansible/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/ceph_ansible/defaults/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/ceph_ansible/defaults/main.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/ciinternal/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/ciinternal/defaults/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/ciinternal/defaults/main.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/docker/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/docker/defaults/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/docker/defaults/main.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/docker/templates/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/docker/templates/daemon.json.j2",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/floatdemo/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/floatdemo/defaults/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/floatdemo/defaults/main.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/manager/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/manager/defaults/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/manager/defaults/main.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/netbox/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/netbox/defaults/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/netbox/defaults/main.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/shellcons/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/shellcons/defaults/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/shellcons/defaults/main.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/shellcons/files/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/shellcons/files/entrypoint.sh",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/streamdemo/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/streamdemo/defaults/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/streamdemo/defaults/main.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/widget/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/widget/defaults/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-collection-services/roles/widget/defaults/main.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-playbooks-manager/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-playbooks-manager/playbooks/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/ansible-playbooks-manager/playbooks/pull.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/container-image-osism-ansible/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/container-image-osism-ansible/files/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/container-image-osism-ansible/files/src/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/container-image-osism-ansible/files/src/templates/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/container-image-osism-ansible/files/src/templates/images.yml.j2",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/generics/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/generics/environments/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/generics/environments/manager/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/generics/environments/manager/images.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/release/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/release/latest/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/release/latest/base.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/testbed/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/testbed/environments/",
                                "cd+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/testbed/environments/manager/",
                                "<f+++++++++ src/github.com/osism/release/tests/image_drift/fixtures/testbed/environments/manager/images.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/__init__.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/conftest.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_archive.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_config.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_dir_helpers.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_driver.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_driver_stale.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_enablement.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_enablement_source_refs.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_enablement_values.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_enablement_version_gates.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_http_head.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_inventory_sections.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_docker.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_enablement_build.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_enablement_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_groupvars_missing.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_image_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_inventory.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_mirror_verbatim.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_orphan_config.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_retired_patch_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_secrets_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_source_ref_phase.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_version_chain_inner.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_version_chain_upstream.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_kolla_version_gate_orphan.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_model.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_plugin_registry.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_report.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_sbom_map.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_secrets_map.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_source.py",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/test_versions_template.py",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/cfg-cookiecutter/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/cfg-cookiecutter/{{cookiecutter.project_name}}/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/cfg-cookiecutter/{{cookiecutter.project_name}}/environments/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/cfg-cookiecutter/{{cookiecutter.project_name}}/environments/kolla/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/cfg-cookiecutter/{{cookiecutter.project_name}}/environments/kolla/secrets.yml.A",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/cfg-cookiecutter/{{cookiecutter.project_name}}/environments/kolla/secrets.yml.B",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-image-kolla-ansible/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-image-kolla-ansible/files/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-image-kolla-ansible/files/src/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-image-kolla-ansible/files/src/templates/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-image-kolla-ansible/files/src/templates/versions.yml.j2",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-images-kolla/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-images-kolla/src/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/container-images-kolla/src/tag-images-with-the-version.py",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/defaults/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/defaults/all/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/defaults/all/050-images.yml",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/defaults/all/099-kolla.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/generics/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/generics/inventory/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/generics/inventory/50-kolla",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/generics/inventory/51-kolla",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla-ansible/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla-ansible/ansible/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla-ansible/ansible/inventory/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla-ansible/ansible/inventory/multinode",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/macros.j2",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/foo/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/foo/.gitkeep",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/ignored-svc/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/ignored-svc/.gitkeep",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/newsvc/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/newsvc/.gitkeep",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/off/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/off/.gitkeep",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/present_a/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/kolla/docker/present_a/.gitkeep",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/release/",
                                "cd+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/release/latest/",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/release/latest/openstack-A.yml",
                                "<f+++++++++ src/github.com/osism/release/tests/kolla_drift/fixtures/release/latest/openstack-B.yml",
                                "cd+++++++++ src/github.com/osism/release/tests/mirror_sync/",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/__init__.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/conftest.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_attribute.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_classify.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_cli.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_commit.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_detail.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_effective.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_enablement_additions.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_gate.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_layers.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_model.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_render.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_source_commits.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_worktree.py",
                                "<f+++++++++ src/github.com/osism/release/tests/mirror_sync/test_write.py"
                            ]
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-00000000002d",
                        "name": "prepare-workspace-log",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/prepare-workspace-log"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:45.101397Z",
                            "start": "2026-10-04T03:00:43.985698Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000030",
                        "name": "Synchronize src repos to workspace directory."
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.file",
                            "changed": true,
                            "msg": "All items completed",
                            "results": [
                                {
                                    "ansible_loop_var": "zj_output_dir",
                                    "changed": true,
                                    "diff": {
                                        "after": {
                                            "path": "/home/zuul/zuul-output/logs",
                                            "state": "directory"
                                        },
                                        "before": {
                                            "path": "/home/zuul/zuul-output/logs",
                                            "state": "absent"
                                        }
                                    },
                                    "failed": false,
                                    "gid": 1000,
                                    "group": "zuul",
                                    "invocation": {
                                        "module_args": {
                                            "_diff_peek": null,
                                            "_original_basename": null,
                                            "access_time": null,
                                            "access_time_format": "%Y%m%d%H%M.%S",
                                            "attributes": null,
                                            "follow": true,
                                            "force": false,
                                            "group": null,
                                            "mode": "0755",
                                            "modification_time": null,
                                            "modification_time_format": "%Y%m%d%H%M.%S",
                                            "owner": null,
                                            "path": "/home/zuul/zuul-output/logs",
                                            "recurse": false,
                                            "selevel": null,
                                            "serole": null,
                                            "setype": null,
                                            "seuser": null,
                                            "src": null,
                                            "state": "directory",
                                            "unsafe_writes": false
                                        }
                                    },
                                    "mode": "0755",
                                    "owner": "zuul",
                                    "path": "/home/zuul/zuul-output/logs",
                                    "size": 4096,
                                    "state": "directory",
                                    "uid": 1000,
                                    "zj_output_dir": "logs"
                                },
                                {
                                    "ansible_loop_var": "zj_output_dir",
                                    "changed": true,
                                    "diff": {
                                        "after": {
                                            "path": "/home/zuul/zuul-output/artifacts",
                                            "state": "directory"
                                        },
                                        "before": {
                                            "path": "/home/zuul/zuul-output/artifacts",
                                            "state": "absent"
                                        }
                                    },
                                    "failed": false,
                                    "gid": 1000,
                                    "group": "zuul",
                                    "invocation": {
                                        "module_args": {
                                            "_diff_peek": null,
                                            "_original_basename": null,
                                            "access_time": null,
                                            "access_time_format": "%Y%m%d%H%M.%S",
                                            "attributes": null,
                                            "follow": true,
                                            "force": false,
                                            "group": null,
                                            "mode": "0755",
                                            "modification_time": null,
                                            "modification_time_format": "%Y%m%d%H%M.%S",
                                            "owner": null,
                                            "path": "/home/zuul/zuul-output/artifacts",
                                            "recurse": false,
                                            "selevel": null,
                                            "serole": null,
                                            "setype": null,
                                            "seuser": null,
                                            "src": null,
                                            "state": "directory",
                                            "unsafe_writes": false
                                        }
                                    },
                                    "mode": "0755",
                                    "owner": "zuul",
                                    "path": "/home/zuul/zuul-output/artifacts",
                                    "size": 4096,
                                    "state": "directory",
                                    "uid": 1000,
                                    "zj_output_dir": "artifacts"
                                },
                                {
                                    "ansible_loop_var": "zj_output_dir",
                                    "changed": true,
                                    "diff": {
                                        "after": {
                                            "path": "/home/zuul/zuul-output/docs",
                                            "state": "directory"
                                        },
                                        "before": {
                                            "path": "/home/zuul/zuul-output/docs",
                                            "state": "absent"
                                        }
                                    },
                                    "failed": false,
                                    "gid": 1000,
                                    "group": "zuul",
                                    "invocation": {
                                        "module_args": {
                                            "_diff_peek": null,
                                            "_original_basename": null,
                                            "access_time": null,
                                            "access_time_format": "%Y%m%d%H%M.%S",
                                            "attributes": null,
                                            "follow": true,
                                            "force": false,
                                            "group": null,
                                            "mode": "0755",
                                            "modification_time": null,
                                            "modification_time_format": "%Y%m%d%H%M.%S",
                                            "owner": null,
                                            "path": "/home/zuul/zuul-output/docs",
                                            "recurse": false,
                                            "selevel": null,
                                            "serole": null,
                                            "setype": null,
                                            "seuser": null,
                                            "src": null,
                                            "state": "directory",
                                            "unsafe_writes": false
                                        }
                                    },
                                    "mode": "0755",
                                    "owner": "zuul",
                                    "path": "/home/zuul/zuul-output/docs",
                                    "size": 4096,
                                    "state": "directory",
                                    "uid": 1000,
                                    "zj_output_dir": "docs"
                                }
                            ]
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000032",
                        "name": "ensure-output-dirs-present",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/ensure-output-dirs-present"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:45.902762Z",
                            "start": "2026-10-04T03:00:45.121431Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000034",
                        "name": "Ensure Zuul output directories exist"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.file",
                            "changed": false,
                            "diff": {
                                "after": {
                                    "path": "/home/zuul/zuul-output/logs"
                                },
                                "before": {
                                    "path": "/home/zuul/zuul-output/logs"
                                }
                            },
                            "gid": 1000,
                            "group": "zuul",
                            "invocation": {
                                "module_args": {
                                    "_diff_peek": null,
                                    "_original_basename": null,
                                    "access_time": null,
                                    "access_time_format": "%Y%m%d%H%M.%S",
                                    "attributes": null,
                                    "follow": true,
                                    "force": false,
                                    "group": null,
                                    "mode": "0755",
                                    "modification_time": null,
                                    "modification_time_format": "%Y%m%d%H%M.%S",
                                    "owner": null,
                                    "path": "/home/zuul/zuul-output/logs",
                                    "recurse": false,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": null,
                                    "state": "directory",
                                    "unsafe_writes": false
                                }
                            },
                            "mode": "0755",
                            "owner": "zuul",
                            "path": "/home/zuul/zuul-output/logs",
                            "size": 4096,
                            "state": "directory",
                            "uid": 1000
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000037",
                        "name": "diagnose-first-sudo",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-first-sudo"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:46.189063Z",
                            "start": "2026-10-04T03:00:45.911628Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000039",
                        "name": "Ensure log directory exists"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.shell",
                            "changed": false,
                            "cmd": "set +e\nout=/home/zuul/zuul-output/logs/sudo-strace.log\n: > \"$out\"\nif command -v strace >/dev/null 2>&1; then\n  cmd=(timeout 40 strace -f -tt -T -y       -o \"$out\"       sudo -n true)\nelse\n  echo \"strace not installed; running bare sudo probe\" > \"$out\"\n  cmd=(timeout 40 sudo -n true)\nfi\n{ TIMEFORMAT='WALL: %3R s'; time \"${cmd[@]}\"; } 2> \"$out.time\"\necho \"EXIT: $?\" >> \"$out.time\"\n",
                            "delta": "0:00:00.074633",
                            "end": "2026-10-04 03:00:46.561671",
                            "failed_when_result": false,
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "set +e\nout=/home/zuul/zuul-output/logs/sudo-strace.log\n: > \"$out\"\nif command -v strace >/dev/null 2>&1; then\n  cmd=(timeout 40 strace -f -tt -T -y       -o \"$out\"       sudo -n true)\nelse\n  echo \"strace not installed; running bare sudo probe\" > \"$out\"\n  cmd=(timeout 40 sudo -n true)\nfi\n{ TIMEFORMAT='WALL: %3R s'; time \"${cmd[@]}\"; } 2> \"$out.time\"\necho \"EXIT: $?\" >> \"$out.time\"\n",
                                    "_uses_shell": true,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": "/bin/bash",
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-9524-6157-00000000003a-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:00:46.487038",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "",
                            "stdout_lines": [],
                            "zuul_log_id": "0242ac1f-6606-9524-6157-00000000003a-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000037",
                        "name": "diagnose-first-sudo",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-first-sudo"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:46.727587Z",
                            "start": "2026-10-04T03:00:46.213998Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-00000000003a",
                        "name": "Probe first sudo invocation under strace"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.shell",
                            "changed": false,
                            "cmd": "set +e\nout=/home/zuul/zuul-output/logs/sudo-debug.txt\n{\n  echo \"== date ==\";            date -Iseconds\n  echo \"== uptime ==\";          uptime\n  echo \"== boot age (s) ==\";    awk '{print int($1)}' /proc/uptime\n  echo \"== /etc/hostname ==\"; cat /etc/hostname\n  echo \"== /etc/hosts ==\";      cat /etc/hosts\n  echo \"== nsswitch.conf ==\";   cat /etc/nsswitch.conf\n  echo \"== resolv.conf ==\";     cat /etc/resolv.conf 2>/dev/null\n  echo \"== ping 8.8.8.8 ==\"\n  ping -c1 -W2 8.8.8.8 2>&1 || true\n  echo \"== ping 81.163.194.9 ==\"\n  ping -c1 -W2 81.163.194.9 2>&1 || true\n  echo \"== ping 81.163.194.10 ==\"\n  ping -c1 -W2 81.163.194.10 2>&1 || true\n  echo \"== getent ahosts ==\"\n  getent ahosts \"$(cat /etc/hostname)\"\n  echo \"== timed getent hosts ==\"\n  { TIMEFORMAT='getent: %3R s'; time getent hosts \"$(cat /etc/hostname)\"; } 2>&1\n  echo \"== systemd-logind active ==\"\n  systemctl is-active systemd-logind\n  echo \"== systemd-logind ActiveEnterTimestampMonotonic ==\"\n  systemctl show systemd-logind -p ActiveEnterTimestampMonotonic\n  echo \"== systemd-resolved active ==\"\n  systemctl is-active systemd-resolved 2>/dev/null\n  echo \"== /etc/pam.d/sudo ==\"\n  cat /etc/pam.d/sudo 2>/dev/null\n  echo \"== sudoers.d listing ==\"\n  ls -la /etc/sudoers.d/ 2>/dev/null\n} > \"$out\" 2>&1\n",
                            "delta": "0:00:00.108195",
                            "end": "2026-10-04 03:00:47.145801",
                            "failed_when_result": false,
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "set +e\nout=/home/zuul/zuul-output/logs/sudo-debug.txt\n{\n  echo \"== date ==\";            date -Iseconds\n  echo \"== uptime ==\";          uptime\n  echo \"== boot age (s) ==\";    awk '{print int($1)}' /proc/uptime\n  echo \"== /etc/hostname ==\"; cat /etc/hostname\n  echo \"== /etc/hosts ==\";      cat /etc/hosts\n  echo \"== nsswitch.conf ==\";   cat /etc/nsswitch.conf\n  echo \"== resolv.conf ==\";     cat /etc/resolv.conf 2>/dev/null\n  echo \"== ping 8.8.8.8 ==\"\n  ping -c1 -W2 8.8.8.8 2>&1 || true\n  echo \"== ping 81.163.194.9 ==\"\n  ping -c1 -W2 81.163.194.9 2>&1 || true\n  echo \"== ping 81.163.194.10 ==\"\n  ping -c1 -W2 81.163.194.10 2>&1 || true\n  echo \"== getent ahosts ==\"\n  getent ahosts \"$(cat /etc/hostname)\"\n  echo \"== timed getent hosts ==\"\n  { TIMEFORMAT='getent: %3R s'; time getent hosts \"$(cat /etc/hostname)\"; } 2>&1\n  echo \"== systemd-logind active ==\"\n  systemctl is-active systemd-logind\n  echo \"== systemd-logind ActiveEnterTimestampMonotonic ==\"\n  systemctl show systemd-logind -p ActiveEnterTimestampMonotonic\n  echo \"== systemd-resolved active ==\"\n  systemctl is-active systemd-resolved 2>/dev/null\n  echo \"== /etc/pam.d/sudo ==\"\n  cat /etc/pam.d/sudo 2>/dev/null\n  echo \"== sudoers.d listing ==\"\n  ls -la /etc/sudoers.d/ 2>/dev/null\n} > \"$out\" 2>&1\n",
                                    "_uses_shell": true,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": "/bin/bash",
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-9524-6157-00000000003b-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:00:47.037606",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "",
                            "stdout_lines": [],
                            "zuul_log_id": "0242ac1f-6606-9524-6157-00000000003b-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-000000000037",
                        "name": "diagnose-first-sudo",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-first-sudo"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:47.277534Z",
                            "start": "2026-10-04T03:00:46.769539Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-00000000003b",
                        "name": "Snapshot DNS / PAM / logind state (no become)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.file",
                            "changed": false,
                            "diff": {
                                "after": {
                                    "path": "/home/zuul/zuul-output/logs"
                                },
                                "before": {
                                    "path": "/home/zuul/zuul-output/logs"
                                }
                            },
                            "gid": 1000,
                            "group": "zuul",
                            "invocation": {
                                "module_args": {
                                    "_diff_peek": null,
                                    "_original_basename": null,
                                    "access_time": null,
                                    "access_time_format": "%Y%m%d%H%M.%S",
                                    "attributes": null,
                                    "follow": true,
                                    "force": false,
                                    "group": null,
                                    "mode": "0755",
                                    "modification_time": null,
                                    "modification_time_format": "%Y%m%d%H%M.%S",
                                    "owner": null,
                                    "path": "/home/zuul/zuul-output/logs",
                                    "recurse": false,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": null,
                                    "state": "directory",
                                    "unsafe_writes": false
                                }
                            },
                            "mode": "0755",
                            "owner": "zuul",
                            "path": "/home/zuul/zuul-output/logs",
                            "size": 4096,
                            "state": "directory",
                            "uid": 1000
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-00000000003d",
                        "name": "diagnose-network",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-network"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:47.590374Z",
                            "start": "2026-10-04T03:00:47.294997Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-00000000003f",
                        "name": "Ensure log directory exists"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.shell",
                            "ansible_job_id": "j105962984911.953",
                            "changed": false,
                            "cmd": "set +e\nset -o pipefail\nphase=pre\nout=/home/zuul/zuul-output/logs/net-debug.$phase.txt\ntargets=\"tarballs.opendev.org galaxy.ansible.com\"\niface=$(ip -6 route show default 2>/dev/null        | awk '{for(i=1;i<=NF;i++) if($i==\"dev\"){print $(i+1); exit}}')\n: \"${iface:=eth0}\"\ngw=$(ip -6 route show default 2>/dev/null     | awk '{for(i=1;i<=NF;i++) if($i==\"via\"){print $(i+1); exit}}')\n{\n  echo \"== date ==\";    date -Is\n  echo \"== iface / gw ==\"; echo \"iface=$iface gw=$gw\"\n  echo \"== ip -6 addr (lifetimes = SLAAC evidence) ==\"; ip -6 addr show\n  echo \"== ip -6 route show ==\"; ip -6 route show\n  echo \"== ip -6 route show default (expires/proto ra = RA evidence) ==\"\n  ip -6 route show default\n  echo \"== ip -4 route show default ==\"; ip -4 route show default\n  echo \"== accept_ra / forwarding (procfs; RA-suppression evidence) ==\"\n  for k in all default \"$iface\"; do\n    for s in forwarding accept_ra; do\n      v=$(cat \"/proc/sys/net/ipv6/conf/$k/$s\" 2>/dev/null)\n      echo \"net.ipv6.conf.$k.$s = ${v:-<unavailable>}\"\n    done\n  done\n  echo \"== resolvectl status ==\"\n  if command -v resolvectl >/dev/null 2>&1; then resolvectl status 2>&1\n  else echo \"resolvectl not installed\"; fi\n  echo \"== /etc/resolv.conf (resolver stub) ==\"\n  cat /etc/resolv.conf 2>/dev/null || echo \"(absent)\"\n  echo \"== /run/systemd/resolve/resolv.conf (upstreams) ==\"\n  cat /run/systemd/resolve/resolv.conf 2>/dev/null    || echo \"(no systemd-resolved upstream file)\"\n  for d in $targets; do\n    echo \"== target: $d ==\"\n    echo \"-- getent ahosts (families glibc returns) --\"\n    getent ahosts \"$d\" 2>&1\n    if command -v resolvectl >/dev/null 2>&1; then\n      echo \"-- resolvectl query --\"; resolvectl query --cache=no \"$d\" 2>&1\n    fi\n    v6=$(getent ahosts \"$d\" 2>/dev/null | awk '$1~/:/{print $1; exit}')\n    v4=$(getent ahosts \"$d\" 2>/dev/null         | awk '$1~/^[0-9]+(\\.[0-9]+){3}$/{print $1; exit}')\n    if [ -n \"$v6\" ]; then\n      echo \"-- ip -6 route get $v6 --\"; ip -6 route get \"$v6\" 2>&1\n    fi\n    if [ -n \"$v4\" ]; then\n      echo \"-- ip -4 route get $v4 --\"; ip -4 route get \"$v4\" 2>&1\n    fi\n    # Several attempts per family: a single sample misclassifies a\n    # ~50%-loss path as healthy or dead by coin flip, defeating the\n    # pre/post bracket. Bounded and in-line -- not a background sampler.\n    for fam in 6 4; do\n      echo \"-- curl -$fam (3 attempts) --\"\n      ok=0\n      for n in 1 2 3; do\n        curl -$fam -sS -m 10 -o /dev/null          -w \"  #$n http=%{http_code} ip=%{remote_ip} t=%{time_total}s\\n\"          \"https://$d/\" 2>&1 && ok=1 || echo \"  #$n curl -$fam FAILED\"\n      done\n      # Trace only the family that failed, to its resolved address:\n      # localises WHERE the failing path dies instead of tracing the\n      # healthy family. v4 via traceroute, v6 via traceroute6.\n      if [ \"$ok\" = 0 ]; then\n        addr=$v6; [ \"$fam\" = 4 ] && addr=$v4\n        tr=traceroute6; [ \"$fam\" = 4 ] && tr=traceroute\n        if [ -n \"$addr\" ] && command -v \"$tr\" >/dev/null 2>&1; then\n          echo \"  !! curl -$fam failed 3x; $tr to $addr\"\n          timeout 30 \"$tr\" -q1 -w2 \"$addr\" 2>&1\n        fi\n      fi\n    done\n  done\n  echo \"== ping -6 gateway ==\"\n  if [ -n \"$gw\" ]; then\n    ping -6 -c1 -W2 \"${gw}%${iface}\" 2>&1\n  else echo \"no v6 gw\"; fi\n} > \"$out\" 2>&1\n",
                            "delta": "0:00:06.406341",
                            "end": "2026-10-04 03:00:54.831529",
                            "failed_when_result": false,
                            "finished": 1,
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "set +e\nset -o pipefail\nphase=pre\nout=/home/zuul/zuul-output/logs/net-debug.$phase.txt\ntargets=\"tarballs.opendev.org galaxy.ansible.com\"\niface=$(ip -6 route show default 2>/dev/null        | awk '{for(i=1;i<=NF;i++) if($i==\"dev\"){print $(i+1); exit}}')\n: \"${iface:=eth0}\"\ngw=$(ip -6 route show default 2>/dev/null     | awk '{for(i=1;i<=NF;i++) if($i==\"via\"){print $(i+1); exit}}')\n{\n  echo \"== date ==\";    date -Is\n  echo \"== iface / gw ==\"; echo \"iface=$iface gw=$gw\"\n  echo \"== ip -6 addr (lifetimes = SLAAC evidence) ==\"; ip -6 addr show\n  echo \"== ip -6 route show ==\"; ip -6 route show\n  echo \"== ip -6 route show default (expires/proto ra = RA evidence) ==\"\n  ip -6 route show default\n  echo \"== ip -4 route show default ==\"; ip -4 route show default\n  echo \"== accept_ra / forwarding (procfs; RA-suppression evidence) ==\"\n  for k in all default \"$iface\"; do\n    for s in forwarding accept_ra; do\n      v=$(cat \"/proc/sys/net/ipv6/conf/$k/$s\" 2>/dev/null)\n      echo \"net.ipv6.conf.$k.$s = ${v:-<unavailable>}\"\n    done\n  done\n  echo \"== resolvectl status ==\"\n  if command -v resolvectl >/dev/null 2>&1; then resolvectl status 2>&1\n  else echo \"resolvectl not installed\"; fi\n  echo \"== /etc/resolv.conf (resolver stub) ==\"\n  cat /etc/resolv.conf 2>/dev/null || echo \"(absent)\"\n  echo \"== /run/systemd/resolve/resolv.conf (upstreams) ==\"\n  cat /run/systemd/resolve/resolv.conf 2>/dev/null    || echo \"(no systemd-resolved upstream file)\"\n  for d in $targets; do\n    echo \"== target: $d ==\"\n    echo \"-- getent ahosts (families glibc returns) --\"\n    getent ahosts \"$d\" 2>&1\n    if command -v resolvectl >/dev/null 2>&1; then\n      echo \"-- resolvectl query --\"; resolvectl query --cache=no \"$d\" 2>&1\n    fi\n    v6=$(getent ahosts \"$d\" 2>/dev/null | awk '$1~/:/{print $1; exit}')\n    v4=$(getent ahosts \"$d\" 2>/dev/null         | awk '$1~/^[0-9]+(\\.[0-9]+){3}$/{print $1; exit}')\n    if [ -n \"$v6\" ]; then\n      echo \"-- ip -6 route get $v6 --\"; ip -6 route get \"$v6\" 2>&1\n    fi\n    if [ -n \"$v4\" ]; then\n      echo \"-- ip -4 route get $v4 --\"; ip -4 route get \"$v4\" 2>&1\n    fi\n    # Several attempts per family: a single sample misclassifies a\n    # ~50%-loss path as healthy or dead by coin flip, defeating the\n    # pre/post bracket. Bounded and in-line -- not a background sampler.\n    for fam in 6 4; do\n      echo \"-- curl -$fam (3 attempts) --\"\n      ok=0\n      for n in 1 2 3; do\n        curl -$fam -sS -m 10 -o /dev/null          -w \"  #$n http=%{http_code} ip=%{remote_ip} t=%{time_total}s\\n\"          \"https://$d/\" 2>&1 && ok=1 || echo \"  #$n curl -$fam FAILED\"\n      done\n      # Trace only the family that failed, to its resolved address:\n      # localises WHERE the failing path dies instead of tracing the\n      # healthy family. v4 via traceroute, v6 via traceroute6.\n      if [ \"$ok\" = 0 ]; then\n        addr=$v6; [ \"$fam\" = 4 ] && addr=$v4\n        tr=traceroute6; [ \"$fam\" = 4 ] && tr=traceroute\n        if [ -n \"$addr\" ] && command -v \"$tr\" >/dev/null 2>&1; then\n          echo \"  !! curl -$fam failed 3x; $tr to $addr\"\n          timeout 30 \"$tr\" -q1 -w2 \"$addr\" 2>&1\n        fi\n      fi\n    done\n  done\n  echo \"== ping -6 gateway ==\"\n  if [ -n \"$gw\" ]; then\n    ping -6 -c1 -W2 \"${gw}%${iface}\" 2>&1\n  else echo \"no v6 gw\"; fi\n} > \"$out\" 2>&1\n",
                                    "_uses_shell": true,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": "/bin/bash",
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-9524-6157-000000000040-0-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "non-zero return code",
                            "rc": 1,
                            "results_file": "/home/zuul/.ansible_async/j105962984911.953",
                            "start": "2026-10-04 03:00:48.425188",
                            "started": 1,
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "",
                            "stdout_lines": [],
                            "zuul_log_id": "0242ac1f-6606-9524-6157-000000000040-0-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-00000000003d",
                        "name": "diagnose-network",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-network"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:59.552173Z",
                            "start": "2026-10-04T03:00:47.604117Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000040",
                        "name": "Snapshot dual-stack network state (pre)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.shell",
                            "changed": false,
                            "false_condition": "diagnose_network_phase == \"post\"",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-00000000003d",
                        "name": "diagnose-network",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-network"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:59.602622Z",
                            "start": "2026-10-04T03:00:59.556458Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000041",
                        "name": "Snapshot Docker/BuildKit IPv6 config (teardown)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.shell",
                            "changed": false,
                            "false_condition": "diagnose_network_phase == \"post\"",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-00000000003d",
                        "name": "diagnose-network",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-network"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:00:59.662276Z",
                            "start": "2026-10-04T03:00:59.613007Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000042",
                        "name": "Probe container network namespace (teardown)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.shell",
                            "changed": false,
                            "cmd": "set +e\nset -o pipefail\nnet=/home/zuul/zuul-output/logs/net-debug.pre.txt\nsud=/home/zuul/zuul-output/logs/sudo-debug.txt\n\nemit() {\n  echo \"$1\"\n  {\n    echo \"== isolation gate ==\"\n    echo \"$1\"\n  } >> \"$net\" 2>/dev/null\n  exit 0\n}\n\n[ -s \"$sud\" ]  || emit \"VERDICT=unknown reason=no-sudo-debug-snapshot\"\n\n# (A) Raw-IP reachability, independent of DNS. Three targets, one\n#     packet each; the role above writes one summary line per target.\nprobes=$(grep -cE '[0-9]+% packet loss' \"$sud\")\nlost=$(grep -cE '100% packet loss' \"$sud\")\n[ \"$probes\" -ge 3 ]  || emit \"VERDICT=unknown reason=too-few-ping-probes probes=$probes\"\n[ \"$lost\" -eq \"$probes\" ]  || emit \"VERDICT=healthy reason=ping-answered lost=$lost/$probes\"\n\n# (B) Cost of resolving the hostname of the node itself.\ngetent=$(awk '/^getent: /{print $2; exit}' \"$sud\" 2>/dev/null)\n[ -n \"$getent\" ]  || emit \"VERDICT=unknown reason=no-getent-timing\"\nslow=$(awk -v g=\"$getent\" -v t=5.0  'BEGIN {print (g + 0 >= t + 0) ? 1 : 0}')\n[ \"$slow\" = 1 ]  || emit \"VERDICT=unknown reason=ping-dead-but-dns-fast getent=${getent}s\"\n\n# (C) Veto only: if any HTTPS probe above got a response, the node\n#     has egress whatever ping and DNS say. Absent or truncated file\n#     cannot block the verdict -- it just cannot veto it.\nanswered=$(grep -cE 'http=[1-5][0-9]{2}' \"$net\" 2>/dev/null)\n[ \"${answered:-0}\" -eq 0 ]  || emit \"VERDICT=healthy reason=https-answered answered=$answered\"\n\nemit \"VERDICT=isolated ping_lost=$lost/$probes getent=${getent}s\"\n",
                            "delta": "0:00:00.014079",
                            "end": "2026-10-04 03:00:59.970047",
                            "failed_when_result": false,
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "set +e\nset -o pipefail\nnet=/home/zuul/zuul-output/logs/net-debug.pre.txt\nsud=/home/zuul/zuul-output/logs/sudo-debug.txt\n\nemit() {\n  echo \"$1\"\n  {\n    echo \"== isolation gate ==\"\n    echo \"$1\"\n  } >> \"$net\" 2>/dev/null\n  exit 0\n}\n\n[ -s \"$sud\" ]  || emit \"VERDICT=unknown reason=no-sudo-debug-snapshot\"\n\n# (A) Raw-IP reachability, independent of DNS. Three targets, one\n#     packet each; the role above writes one summary line per target.\nprobes=$(grep -cE '[0-9]+% packet loss' \"$sud\")\nlost=$(grep -cE '100% packet loss' \"$sud\")\n[ \"$probes\" -ge 3 ]  || emit \"VERDICT=unknown reason=too-few-ping-probes probes=$probes\"\n[ \"$lost\" -eq \"$probes\" ]  || emit \"VERDICT=healthy reason=ping-answered lost=$lost/$probes\"\n\n# (B) Cost of resolving the hostname of the node itself.\ngetent=$(awk '/^getent: /{print $2; exit}' \"$sud\" 2>/dev/null)\n[ -n \"$getent\" ]  || emit \"VERDICT=unknown reason=no-getent-timing\"\nslow=$(awk -v g=\"$getent\" -v t=5.0  'BEGIN {print (g + 0 >= t + 0) ? 1 : 0}')\n[ \"$slow\" = 1 ]  || emit \"VERDICT=unknown reason=ping-dead-but-dns-fast getent=${getent}s\"\n\n# (C) Veto only: if any HTTPS probe above got a response, the node\n#     has egress whatever ping and DNS say. Absent or truncated file\n#     cannot block the verdict -- it just cannot veto it.\nanswered=$(grep -cE 'http=[1-5][0-9]{2}' \"$net\" 2>/dev/null)\n[ \"${answered:-0}\" -eq 0 ]  || emit \"VERDICT=healthy reason=https-answered answered=$answered\"\n\nemit \"VERDICT=isolated ping_lost=$lost/$probes getent=${getent}s\"\n",
                                    "_uses_shell": true,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": "/bin/bash",
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-9524-6157-000000000043-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:00:59.955968",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "VERDICT=healthy reason=ping-answered lost=0/3",
                            "stdout_lines": [
                                "VERDICT=healthy reason=ping-answered lost=0/3"
                            ],
                            "zuul_log_id": "0242ac1f-6606-9524-6157-000000000043-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-00000000003d",
                        "name": "diagnose-network",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-network"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:00.193469Z",
                            "start": "2026-10-04T03:00:59.683889Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000043",
                        "name": "Evaluate node isolation verdict (pre-run gate)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.fail",
                            "changed": false,
                            "false_condition": "'VERDICT=isolated' in diagnose_network_gate_verdict.stdout",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-9524-6157-00000000003d",
                        "name": "diagnose-network",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-network"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:00.269449Z",
                            "start": "2026-10-04T03:01:00.203688Z"
                        },
                        "id": "0242ac1f-6606-9524-6157-000000000044",
                        "name": "Abort the pre-run on a fully isolated node"
                    }
                }
            ]
        }
    ],
    "stats": {
        "debian-bookworm": {
            "changed": 12,
            "failures": 0,
            "ignored": 0,
            "ok": 33,
            "rescued": 0,
            "skipped": 6,
            "unreachable": 0
        }
    },
    "trusted": true
},
{
    "branch": "master",
    "index": "1",
    "phase": "pre",
    "playbook": "github.com/osism/openinfra-zuul-jobs/playbooks/unittests/pre.yaml",
    "plays": [
        {
            "play": {
                "duration": {
                    "end": "2026-10-04T03:01:03.231065Z",
                    "start": "2026-10-04T03:01:01.086483Z"
                },
                "id": "0242ac1f-6606-5ca3-5518-000000000002",
                "name": "all"
            },
            "tasks": [
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_role",
                            "changed": false,
                            "include_args": {
                                "name": "bindep"
                            }
                        }
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:01.154832Z",
                            "start": "2026-10-04T03:01:01.099179Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-000000000004",
                        "name": "Install binary dependencies"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "include": "find.yaml",
                            "include_args": {}
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-5ca3-5518-00000000001c",
                        "name": "bindep",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/bindep"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:01.211340Z",
                            "start": "2026-10-04T03:01:01.183352Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-00000000001e",
                        "name": "Include find tasks"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "stat",
                            "changed": false,
                            "invocation": {
                                "module_args": {
                                    "checksum_algorithm": "sha1",
                                    "follow": false,
                                    "get_attributes": true,
                                    "get_checksum": true,
                                    "get_mime": true,
                                    "path": "src/github.com/osism/release/bindep.txt"
                                }
                            },
                            "stat": {
                                "exists": false
                            }
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-5ca3-5518-00000000001c",
                        "name": "bindep",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/bindep"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:01.654935Z",
                            "start": "2026-10-04T03:01:01.241216Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-00000000003e",
                        "name": "Look for bindep.txt"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "changed": false,
                            "false_condition": "bindep_file_stat.stat.exists",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-5ca3-5518-00000000001c",
                        "name": "bindep",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/bindep"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:01.684681Z",
                            "start": "2026-10-04T03:01:01.660385Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-00000000003f",
                        "name": "Define bindep_file fact"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "stat",
                            "changed": false,
                            "invocation": {
                                "module_args": {
                                    "checksum_algorithm": "sha1",
                                    "follow": false,
                                    "get_attributes": true,
                                    "get_checksum": true,
                                    "get_mime": true,
                                    "path": "src/github.com/osism/release/other-requirements.txt"
                                }
                            },
                            "stat": {
                                "exists": false
                            }
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-5ca3-5518-00000000001c",
                        "name": "bindep",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/bindep"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:01.954508Z",
                            "start": "2026-10-04T03:01:01.690731Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-000000000040",
                        "name": "Look for other-requirements.txt"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "changed": false,
                            "false_condition": "not bindep_other_file_stat is skipped and  bindep_other_file_stat.stat.exists",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-5ca3-5518-00000000001c",
                        "name": "bindep",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/bindep"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:01.988891Z",
                            "start": "2026-10-04T03:01:01.964726Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-000000000041",
                        "name": "Define bindep_file fact"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "stat",
                            "changed": false,
                            "false_condition": "bindep_fallback is defined and not bindep_other_file_stat is skipped and not bindep_other_file_stat.stat.exists",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-5ca3-5518-00000000001c",
                        "name": "bindep",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/bindep"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:02.032355Z",
                            "start": "2026-10-04T03:01:02.005274Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-000000000042",
                        "name": "Look for bindep fallback file"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "changed": false,
                            "false_condition": "not bindep_fallback_file_stat is skipped and  bindep_fallback_file_stat.stat.exists",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-5ca3-5518-00000000001c",
                        "name": "bindep",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/bindep"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:02.071533Z",
                            "start": "2026-10-04T03:01:02.037811Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-000000000043",
                        "name": "Define bindep_file fact"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "false_condition": "bindep_file is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-5ca3-5518-00000000001c",
                        "name": "bindep",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/bindep"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:02.114533Z",
                            "start": "2026-10-04T03:01:02.080166Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-00000000001f",
                        "name": "Include bindep tasks"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "false_condition": "bindep_file is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-5ca3-5518-00000000001c",
                        "name": "bindep",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/bindep"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:02.156983Z",
                            "start": "2026-10-04T03:01:02.121652Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-000000000020",
                        "name": "Include install tasks"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "false_condition": "bindep_file is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-5ca3-5518-00000000001c",
                        "name": "bindep",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/bindep"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:02.226559Z",
                            "start": "2026-10-04T03:01:02.163117Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-000000000021",
                        "name": "Include package tasks"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_role",
                            "changed": false,
                            "include_args": {
                                "name": "test-setup"
                            }
                        }
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:02.274407Z",
                            "start": "2026-10-04T03:01:02.238921Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-000000000005",
                        "name": "Run test-setup role"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "stat",
                            "changed": false,
                            "invocation": {
                                "module_args": {
                                    "checksum_algorithm": "sha1",
                                    "follow": false,
                                    "get_attributes": true,
                                    "get_checksum": true,
                                    "get_mime": true,
                                    "path": "src/github.com/osism/release/tools/test-setup.sh"
                                }
                            },
                            "stat": {
                                "exists": false
                            }
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-5ca3-5518-00000000008f",
                        "name": "test-setup",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/test-setup"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:02.647359Z",
                            "start": "2026-10-04T03:01:02.317157Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-000000000091",
                        "name": "Check if project's tools/test-setup.sh exists"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": false,
                            "false_condition": "p.stat.exists",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-5ca3-5518-00000000008f",
                        "name": "test-setup",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/test-setup"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:03.231065Z",
                            "start": "2026-10-04T03:01:02.718304Z"
                        },
                        "id": "0242ac1f-6606-5ca3-5518-000000000092",
                        "name": "Run tools/test-setup.sh"
                    }
                }
            ]
        }
    ],
    "stats": {
        "debian-bookworm": {
            "changed": 0,
            "failures": 0,
            "ignored": 0,
            "ok": 4,
            "rescued": 0,
            "skipped": 8,
            "unreachable": 0
        }
    },
    "trusted": false
},
{
    "branch": "master",
    "index": "2",
    "phase": "pre",
    "playbook": "github.com/osism/openinfra-zuul-jobs/playbooks/tox/pre.yaml",
    "plays": [
        {
            "play": {
                "duration": {
                    "end": "2026-10-04T03:01:27.553891Z",
                    "start": "2026-10-04T03:01:04.021686Z"
                },
                "id": "0242ac1f-6606-ce60-ce0a-000000000002",
                "name": "all"
            },
            "tasks": [
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "assert",
                            "changed": false,
                            "false_condition": "python_version is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000006",
                        "name": "ensure-python",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-python"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:04.063205Z",
                            "start": "2026-10-04T03:01:04.035800Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-000000000008",
                        "name": "Validate python_version value"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "package",
                            "changed": false,
                            "false_condition": "python_version is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000006",
                        "name": "ensure-python",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-python"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:04.097322Z",
                            "start": "2026-10-04T03:01:04.068939Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000000a",
                        "name": "Install specified version of python interpreter and development files (DEB)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "package",
                            "changed": false,
                            "false_condition": "python_version is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000006",
                        "name": "ensure-python",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-python"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:04.127530Z",
                            "start": "2026-10-04T03:01:04.102528Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000000b",
                        "name": "Pull in venv package"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "changed": false,
                            "false_condition": "python_version is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000006",
                        "name": "ensure-python",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-python"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:04.156131Z",
                            "start": "2026-10-04T03:01:04.133148Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000000d",
                        "name": "Set default RPM package name"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "changed": false,
                            "false_condition": "python_version is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000006",
                        "name": "ensure-python",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-python"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:04.186169Z",
                            "start": "2026-10-04T03:01:04.162813Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000000e",
                        "name": "Set RPM package name for CentOS/RHEL 9/10"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "package",
                            "changed": false,
                            "false_condition": "python_version is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000006",
                        "name": "ensure-python",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-python"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:04.221756Z",
                            "start": "2026-10-04T03:01:04.196485Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000000f",
                        "name": "Install RPM package"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "false_condition": "python_use_pyenv",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000006",
                        "name": "ensure-python",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-python"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:04.254820Z",
                            "start": "2026-10-04T03:01:04.230447Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-000000000011",
                        "name": "Install python using pyenv"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "false_condition": "python_version is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000006",
                        "name": "ensure-python",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-python"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:04.293178Z",
                            "start": "2026-10-04T03:01:04.260045Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-000000000012",
                        "name": "Activate python using stow"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_role",
                            "changed": false,
                            "include_args": {
                                "name": "ensure-pip"
                            }
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000014",
                        "name": "ensure-tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:04.325530Z",
                            "start": "2026-10-04T03:01:04.305335Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-000000000016",
                        "name": "Install pip"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "shell",
                            "changed": true,
                            "cmd": "PYTHON2=0\nPYTHON3=1\n\n# Not all platforms install a `pip` when installing python\n# specific pip packages. We first check if pip$VERSION is\n# available and if not fallback to checking if just `pip`\n# is present.\nif [ \"$PYTHON2\" -eq \"1\" ] ; then\n    command -v pip2 || command -v pip || exit 1\n    python2 -m wheel --help || exit 1\nfi\nif [ \"$PYTHON3\" -eq \"1\" ] ; then\n    command -v pip3 || command -v pip || exit 1\n    python3 -m wheel --help || exit 1\nfi\n",
                            "delta": "0:00:00.008881",
                            "end": "2026-10-04 03:01:04.903284",
                            "failed_when_result": false,
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "PYTHON2=0\nPYTHON3=1\n\n# Not all platforms install a `pip` when installing python\n# specific pip packages. We first check if pip$VERSION is\n# available and if not fallback to checking if just `pip`\n# is present.\nif [ \"$PYTHON2\" -eq \"1\" ] ; then\n    command -v pip2 || command -v pip || exit 1\n    python2 -m wheel --help || exit 1\nfi\nif [ \"$PYTHON3\" -eq \"1\" ] ; then\n    command -v pip3 || command -v pip || exit 1\n    python3 -m wheel --help || exit 1\nfi\n",
                                    "_uses_shell": true,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": "/bin/bash",
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-ce60-ce0a-000000000081-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "non-zero return code",
                            "rc": 1,
                            "start": "2026-10-04 03:01:04.894403",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "",
                            "stdout_lines": [],
                            "zuul_log_id": "0242ac1f-6606-ce60-ce0a-000000000081-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-00000000007f",
                        "name": "ensure-pip",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:04.946866Z",
                            "start": "2026-10-04T03:01:04.412596Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-000000000081",
                        "name": "Check if pip is installed"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "msg": "All items completed",
                            "results": [
                                {
                                    "ansible_loop_var": "zj_distro_os",
                                    "include": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip/tasks/Debian.yaml",
                                    "include_args": {},
                                    "zj_distro_os": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip/tasks/Debian.yaml"
                                }
                            ]
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-00000000007f",
                        "name": "ensure-pip",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:04.985894Z",
                            "start": "2026-10-04T03:01:04.952601Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-000000000082",
                        "name": "Install pip from packages"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "apt",
                            "cache_update_time": 1791082868,
                            "cache_updated": true,
                            "changed": true,
                            "invocation": {
                                "module_args": {
                                    "allow_change_held_packages": false,
                                    "allow_downgrade": false,
                                    "allow_unauthenticated": false,
                                    "autoclean": false,
                                    "autoremove": false,
                                    "cache_valid_time": 0,
                                    "clean": false,
                                    "deb": null,
                                    "default_release": null,
                                    "dpkg_options": "force-confdef,force-confold",
                                    "fail_on_autoremove": false,
                                    "force": false,
                                    "force_apt_get": false,
                                    "install_recommends": null,
                                    "lock_timeout": 60,
                                    "only_upgrade": false,
                                    "package": null,
                                    "policy_rc_d": null,
                                    "purge": false,
                                    "state": "present",
                                    "update_cache": true,
                                    "update_cache_retries": 5,
                                    "update_cache_retry_max_delay": 12,
                                    "upgrade": null
                                }
                            }
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-00000000007f",
                        "name": "ensure-pip",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:09.609748Z",
                            "start": "2026-10-04T03:01:05.007939Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-0000000000be",
                        "name": "Update package lists"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "package",
                            "cache_update_time": 1791082868,
                            "cache_updated": false,
                            "changed": true,
                            "diff": {},
                            "invocation": {
                                "module_args": {
                                    "allow_change_held_packages": false,
                                    "allow_downgrade": false,
                                    "allow_unauthenticated": false,
                                    "autoclean": false,
                                    "autoremove": false,
                                    "cache_valid_time": 0,
                                    "clean": false,
                                    "deb": null,
                                    "default_release": null,
                                    "dpkg_options": "force-confdef,force-confold",
                                    "fail_on_autoremove": false,
                                    "force": false,
                                    "force_apt_get": false,
                                    "install_recommends": null,
                                    "lock_timeout": 60,
                                    "name": [
                                        "python3-pip",
                                        "python3-setuptools",
                                        "python3-venv",
                                        "python3-wheel"
                                    ],
                                    "only_upgrade": false,
                                    "package": [
                                        "python3-pip",
                                        "python3-setuptools",
                                        "python3-venv",
                                        "python3-wheel"
                                    ],
                                    "policy_rc_d": null,
                                    "purge": false,
                                    "state": "present",
                                    "update_cache": null,
                                    "update_cache_retries": 5,
                                    "update_cache_retry_max_delay": 12,
                                    "upgrade": null
                                }
                            },
                            "stderr": "debconf: delaying package configuration, since apt-utils is not installed\n",
                            "stderr_lines": [
                                "debconf: delaying package configuration, since apt-utils is not installed"
                            ],
                            "stdout": "Reading package lists...\nBuilding dependency tree...\nReading state information...\nSuggested packages:\n  python-setuptools-doc\nThe following NEW packages will be installed:\n  python3-pip python3-setuptools python3-wheel\n0 upgraded, 3 newly installed, 0 to remove and 1 not upgraded.\nNeed to get 1877 kB of archives.\nAfter this operation, 9567 kB of additional disk space will be used.\nGet:1 http://deb.debian.org/debian bookworm/main amd64 python3-setuptools all 66.1.1-1+deb12u2 [522 kB]\nGet:2 http://deb.debian.org/debian bookworm/main amd64 python3-wheel all 0.38.4-2 [30.8 kB]\nGet:3 http://deb.debian.org/debian bookworm/main amd64 python3-pip all 23.0.1+dfsg-1 [1325 kB]\nFetched 1877 kB in 0s (14.6 MB/s)\nSelecting previously unselected package python3-setuptools.\r\n(Reading database ... \r(Reading database ... 5%\r(Reading database ... 10%\r(Reading database ... 15%\r(Reading database ... 20%\r(Reading database ... 25%\r(Reading database ... 30%\r(Reading database ... 35%\r(Reading database ... 40%\r(Reading database ... 45%\r(Reading database ... 50%\r(Reading database ... 55%\r(Reading database ... 60%\r(Reading database ... 65%\r(Reading database ... 70%\r(Reading database ... 75%\r(Reading database ... 80%\r(Reading database ... 85%\r(Reading database ... 90%\r(Reading database ... 95%\r(Reading database ... 100%\r(Reading database ... 27779 files and directories currently installed.)\r\nPreparing to unpack .../python3-setuptools_66.1.1-1+deb12u2_all.deb ...\r\nUnpacking python3-setuptools (66.1.1-1+deb12u2) ...\r\nSelecting previously unselected package python3-wheel.\r\nPreparing to unpack .../python3-wheel_0.38.4-2_all.deb ...\r\nUnpacking python3-wheel (0.38.4-2) ...\r\nSelecting previously unselected package python3-pip.\r\nPreparing to unpack .../python3-pip_23.0.1+dfsg-1_all.deb ...\r\nUnpacking python3-pip (23.0.1+dfsg-1) ...\r\nSetting up python3-setuptools (66.1.1-1+deb12u2) ...\r\nSetting up python3-wheel (0.38.4-2) ...\r\nSetting up python3-pip (23.0.1+dfsg-1) ...\r\n",
                            "stdout_lines": [
                                "Reading package lists...",
                                "Building dependency tree...",
                                "Reading state information...",
                                "Suggested packages:",
                                "  python-setuptools-doc",
                                "The following NEW packages will be installed:",
                                "  python3-pip python3-setuptools python3-wheel",
                                "0 upgraded, 3 newly installed, 0 to remove and 1 not upgraded.",
                                "Need to get 1877 kB of archives.",
                                "After this operation, 9567 kB of additional disk space will be used.",
                                "Get:1 http://deb.debian.org/debian bookworm/main amd64 python3-setuptools all 66.1.1-1+deb12u2 [522 kB]",
                                "Get:2 http://deb.debian.org/debian bookworm/main amd64 python3-wheel all 0.38.4-2 [30.8 kB]",
                                "Get:3 http://deb.debian.org/debian bookworm/main amd64 python3-pip all 23.0.1+dfsg-1 [1325 kB]",
                                "Fetched 1877 kB in 0s (14.6 MB/s)",
                                "Selecting previously unselected package python3-setuptools.",
                                "(Reading database ... ",
                                "(Reading database ... 5%",
                                "(Reading database ... 10%",
                                "(Reading database ... 15%",
                                "(Reading database ... 20%",
                                "(Reading database ... 25%",
                                "(Reading database ... 30%",
                                "(Reading database ... 35%",
                                "(Reading database ... 40%",
                                "(Reading database ... 45%",
                                "(Reading database ... 50%",
                                "(Reading database ... 55%",
                                "(Reading database ... 60%",
                                "(Reading database ... 65%",
                                "(Reading database ... 70%",
                                "(Reading database ... 75%",
                                "(Reading database ... 80%",
                                "(Reading database ... 85%",
                                "(Reading database ... 90%",
                                "(Reading database ... 95%",
                                "(Reading database ... 100%",
                                "(Reading database ... 27779 files and directories currently installed.)",
                                "Preparing to unpack .../python3-setuptools_66.1.1-1+deb12u2_all.deb ...",
                                "Unpacking python3-setuptools (66.1.1-1+deb12u2) ...",
                                "Selecting previously unselected package python3-wheel.",
                                "Preparing to unpack .../python3-wheel_0.38.4-2_all.deb ...",
                                "Unpacking python3-wheel (0.38.4-2) ...",
                                "Selecting previously unselected package python3-pip.",
                                "Preparing to unpack .../python3-pip_23.0.1+dfsg-1_all.deb ...",
                                "Unpacking python3-pip (23.0.1+dfsg-1) ...",
                                "Setting up python3-setuptools (66.1.1-1+deb12u2) ...",
                                "Setting up python3-wheel (0.38.4-2) ...",
                                "Setting up python3-pip (23.0.1+dfsg-1) ..."
                            ]
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-00000000007f",
                        "name": "ensure-pip",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:15.049716Z",
                            "start": "2026-10-04T03:01:09.614756Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-0000000000bf",
                        "name": "Install Python 3 pip"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "package",
                            "changed": false,
                            "false_condition": "ensure_pip_from_packages_with_python2",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-00000000007f",
                        "name": "ensure-pip",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:15.098832Z",
                            "start": "2026-10-04T03:01:15.061602Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-0000000000c0",
                        "name": "Install Python 2 pip"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "package",
                            "changed": false,
                            "false_condition": "ansible_python.version.major == 2",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-00000000007f",
                        "name": "ensure-pip",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:15.131749Z",
                            "start": "2026-10-04T03:01:15.114558Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-000000000087",
                        "name": "Ensure setuptools"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": true,
                            "cmd": [
                                "python3",
                                "-m",
                                "ensurepip",
                                "--help"
                            ],
                            "delta": "0:00:00.091996",
                            "end": "2026-10-04 03:01:15.505507",
                            "failed_when_result": false,
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "python3 -m ensurepip --help",
                                    "_uses_shell": false,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-ce60-ce0a-000000000088-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:01:15.413511",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "usage: python -m ensurepip [-h] [--version] [-v] [-U] [--user] [--root ROOT]\n                           [--altinstall] [--default-pip]\n\noptions:\n  -h, --help     show this help message and exit\n  --version      Show the version of pip that is bundled with this Python.\n  -v, --verbose  Give more output. Option is additive, and can be used up to 3\n                 times.\n  -U, --upgrade  Upgrade pip and dependencies, even if already installed.\n  --user         Install using the user scheme.\n  --root ROOT    Install everything relative to this alternate root directory.\n  --altinstall   Make an alternate install, installing only the X.Y versioned\n                 scripts (Default: pipX, pipX.Y, easy_install-X.Y).\n  --default-pip  Make a default pip install, installing the unqualified pip\n                 and easy_install in addition to the versioned scripts.",
                            "stdout_lines": [
                                "usage: python -m ensurepip [-h] [--version] [-v] [-U] [--user] [--root ROOT]",
                                "                           [--altinstall] [--default-pip]",
                                "",
                                "options:",
                                "  -h, --help     show this help message and exit",
                                "  --version      Show the version of pip that is bundled with this Python.",
                                "  -v, --verbose  Give more output. Option is additive, and can be used up to 3",
                                "                 times.",
                                "  -U, --upgrade  Upgrade pip and dependencies, even if already installed.",
                                "  --user         Install using the user scheme.",
                                "  --root ROOT    Install everything relative to this alternate root directory.",
                                "  --altinstall   Make an alternate install, installing only the X.Y versioned",
                                "                 scripts (Default: pipX, pipX.Y, easy_install-X.Y).",
                                "  --default-pip  Make a default pip install, installing the unqualified pip",
                                "                 and easy_install in addition to the versioned scripts."
                            ],
                            "zuul_log_id": "0242ac1f-6606-ce60-ce0a-000000000088-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-00000000007f",
                        "name": "ensure-pip",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:15.676903Z",
                            "start": "2026-10-04T03:01:15.161213Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-000000000088",
                        "name": "Check for ensurepip module"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "package",
                            "changed": false,
                            "false_condition": "_ensurepip_module.rc != 0",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-00000000007f",
                        "name": "ensure-pip",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:15.709749Z",
                            "start": "2026-10-04T03:01:15.686145Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-000000000089",
                        "name": "Ensure python3-venv"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "false_condition": "ensure_pip_from_upstream",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-00000000007f",
                        "name": "ensure-pip",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:15.757370Z",
                            "start": "2026-10-04T03:01:15.721996Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000008a",
                        "name": "Install pip from source"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "shell",
                            "changed": true,
                            "cmd": "command -v python3\n",
                            "delta": "0:00:00.010424",
                            "end": "2026-10-04 03:01:16.132840",
                            "failed_when_result": false,
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "command -v python3\n",
                                    "_uses_shell": true,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": "/bin/bash",
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-ce60-ce0a-00000000008b-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:01:16.122416",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "/usr/bin/python3",
                            "stdout_lines": [
                                "/usr/bin/python3"
                            ],
                            "zuul_log_id": "0242ac1f-6606-ce60-ce0a-00000000008b-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-00000000007f",
                        "name": "ensure-pip",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:16.314153Z",
                            "start": "2026-10-04T03:01:15.794728Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000008b",
                        "name": "Probe for venv python full path"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "ansible_facts": {
                                "_host_virtualenv": "/usr/bin/python3 -m venv"
                            },
                            "changed": false
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-00000000007f",
                        "name": "ensure-pip",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:16.465022Z",
                            "start": "2026-10-04T03:01:16.329619Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000008c",
                        "name": "Set host default"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "ansible_facts": {
                                "ensure_pip_virtualenv_command": "/usr/bin/python3 -m venv"
                            },
                            "changed": false
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-00000000007f",
                        "name": "ensure-pip",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-pip"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:16.544520Z",
                            "start": "2026-10-04T03:01:16.472616Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000008d",
                        "name": "Set ensure_pip_virtualenv_command"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "shell",
                            "changed": true,
                            "cmd": "command -v tox /home/zuul/.local/tox/bin/tox || exit 1\n",
                            "delta": "0:00:00.008977",
                            "end": "2026-10-04 03:01:16.980393",
                            "failed_when_result": false,
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "command -v tox /home/zuul/.local/tox/bin/tox || exit 1\n",
                                    "_uses_shell": true,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": "/bin/bash",
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-ce60-ce0a-000000000017-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "non-zero return code",
                            "rc": 1,
                            "start": "2026-10-04 03:01:16.971416",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "",
                            "stdout_lines": [],
                            "zuul_log_id": "0242ac1f-6606-ce60-ce0a-000000000017-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000014",
                        "name": "ensure-tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:17.163466Z",
                            "start": "2026-10-04T03:01:16.648226Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-000000000017",
                        "name": "Check if tox is installed"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "changed": false,
                            "false_condition": "tox_preinstalled.rc == 0",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000014",
                        "name": "ensure-tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:17.206842Z",
                            "start": "2026-10-04T03:01:17.171876Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-000000000018",
                        "name": "Export preinstalled tox_exectuable"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": true,
                            "cmd": [
                                "/usr/bin/python3",
                                "-m",
                                "venv",
                                "/home/zuul/.local/tox"
                            ],
                            "delta": "0:00:04.552507",
                            "end": "2026-10-04 03:01:22.182293",
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "/usr/bin/python3 -m venv /home/zuul/.local/tox",
                                    "_uses_shell": false,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-ce60-ce0a-00000000001a-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:01:17.629786",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "",
                            "stdout_lines": [],
                            "zuul_log_id": "0242ac1f-6606-ce60-ce0a-00000000001a-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000014",
                        "name": "ensure-tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:22.292462Z",
                            "start": "2026-10-04T03:01:17.285619Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000001a",
                        "name": "Create local venv"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": true,
                            "cmd": [
                                "/home/zuul/.local/tox/bin/pip",
                                "install",
                                "tox"
                            ],
                            "delta": "0:00:03.542406",
                            "end": "2026-10-04 03:01:26.213192",
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "/home/zuul/.local/tox/bin/pip install tox",
                                    "_uses_shell": false,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-ce60-ce0a-00000000001b-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:01:22.670786",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "Collecting tox\n  Downloading tox-4.64.8-py3-none-any.whl (235 kB)\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 236.0/236.0 kB 5.6 MB/s eta 0:00:00\nCollecting cachetools>=7.0.3\n  Downloading cachetools-7.2.0-py3-none-any.whl (16 kB)\nCollecting colorama>=0.4.6\n  Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)\nCollecting filelock>=3.25\n  Downloading filelock-4.0.10-py3-none-any.whl (111 kB)\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 111.2/111.2 kB 15.7 MB/s eta 0:00:00\nCollecting packaging>=26\n  Downloading packaging-26.3-py3-none-any.whl (129 kB)\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 130.0/130.0 kB 14.8 MB/s eta 0:00:00\nCollecting platformdirs>=4.9.4\n  Downloading platformdirs-4.12.3-py3-none-any.whl (32 kB)\nCollecting pluggy>=1.6\n  Downloading pluggy-1.6.0-py3-none-any.whl (20 kB)\nCollecting pyproject-api>=1.10\n  Downloading pyproject_api-1.11.3-py3-none-any.whl (13 kB)\nCollecting python-discovery>=1.4.4\n  Downloading python_discovery-1.6.1-py3-none-any.whl (38 kB)\nCollecting tomli-w>=1.2\n  Downloading tomli_w-1.2.0-py3-none-any.whl (6.7 kB)\nCollecting typing-extensions>=4.15\n  Downloading typing_extensions-4.16.0-py3-none-any.whl (45 kB)\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 45.6/45.6 kB 6.0 MB/s eta 0:00:00\nCollecting virtualenv>=21.1\n  Downloading virtualenv-21.14.5-py3-none-any.whl (5.5 MB)\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 5.5/5.5 MB 47.1 MB/s eta 0:00:00\nCollecting distlib<1,>=0.3.7\n  Downloading distlib-0.4.3-py2.py3-none-any.whl (470 kB)\n     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 470.6/470.6 kB 33.4 MB/s eta 0:00:00\nInstalling collected packages: distlib, typing-extensions, tomli-w, pluggy, platformdirs, packaging, filelock, colorama, cachetools, python-discovery, pyproject-api, virtualenv, tox\nSuccessfully installed cachetools-7.2.0 colorama-0.4.6 distlib-0.4.3 filelock-4.0.10 packaging-26.3 platformdirs-4.12.3 pluggy-1.6.0 pyproject-api-1.11.3 python-discovery-1.6.1 tomli-w-1.2.0 tox-4.64.8 typing-extensions-4.16.0 virtualenv-21.14.5",
                            "stdout_lines": [
                                "Collecting tox",
                                "  Downloading tox-4.64.8-py3-none-any.whl (235 kB)",
                                "     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 236.0/236.0 kB 5.6 MB/s eta 0:00:00",
                                "Collecting cachetools>=7.0.3",
                                "  Downloading cachetools-7.2.0-py3-none-any.whl (16 kB)",
                                "Collecting colorama>=0.4.6",
                                "  Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)",
                                "Collecting filelock>=3.25",
                                "  Downloading filelock-4.0.10-py3-none-any.whl (111 kB)",
                                "     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 111.2/111.2 kB 15.7 MB/s eta 0:00:00",
                                "Collecting packaging>=26",
                                "  Downloading packaging-26.3-py3-none-any.whl (129 kB)",
                                "     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 130.0/130.0 kB 14.8 MB/s eta 0:00:00",
                                "Collecting platformdirs>=4.9.4",
                                "  Downloading platformdirs-4.12.3-py3-none-any.whl (32 kB)",
                                "Collecting pluggy>=1.6",
                                "  Downloading pluggy-1.6.0-py3-none-any.whl (20 kB)",
                                "Collecting pyproject-api>=1.10",
                                "  Downloading pyproject_api-1.11.3-py3-none-any.whl (13 kB)",
                                "Collecting python-discovery>=1.4.4",
                                "  Downloading python_discovery-1.6.1-py3-none-any.whl (38 kB)",
                                "Collecting tomli-w>=1.2",
                                "  Downloading tomli_w-1.2.0-py3-none-any.whl (6.7 kB)",
                                "Collecting typing-extensions>=4.15",
                                "  Downloading typing_extensions-4.16.0-py3-none-any.whl (45 kB)",
                                "     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 45.6/45.6 kB 6.0 MB/s eta 0:00:00",
                                "Collecting virtualenv>=21.1",
                                "  Downloading virtualenv-21.14.5-py3-none-any.whl (5.5 MB)",
                                "     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 5.5/5.5 MB 47.1 MB/s eta 0:00:00",
                                "Collecting distlib<1,>=0.3.7",
                                "  Downloading distlib-0.4.3-py2.py3-none-any.whl (470 kB)",
                                "     \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 470.6/470.6 kB 33.4 MB/s eta 0:00:00",
                                "Installing collected packages: distlib, typing-extensions, tomli-w, pluggy, platformdirs, packaging, filelock, colorama, cachetools, python-discovery, pyproject-api, virtualenv, tox",
                                "Successfully installed cachetools-7.2.0 colorama-0.4.6 distlib-0.4.3 filelock-4.0.10 packaging-26.3 platformdirs-4.12.3 pluggy-1.6.0 pyproject-api-1.11.3 python-discovery-1.6.1 tomli-w-1.2.0 tox-4.64.8 typing-extensions-4.16.0 virtualenv-21.14.5"
                            ],
                            "zuul_log_id": "0242ac1f-6606-ce60-ce0a-00000000001b-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000014",
                        "name": "ensure-tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:26.403518Z",
                            "start": "2026-10-04T03:01:22.391132Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000001b",
                        "name": "Install tox to local venv"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "ansible_facts": {
                                "tox_executable": "/home/zuul/.local/tox/bin/tox"
                            },
                            "changed": false
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000014",
                        "name": "ensure-tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:26.458709Z",
                            "start": "2026-10-04T03:01:26.408525Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000001c",
                        "name": "Export installed tox_executable path"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": true,
                            "cmd": [
                                "/home/zuul/.local/tox/bin/tox",
                                "--version"
                            ],
                            "delta": "0:00:00.428177",
                            "end": "2026-10-04 03:01:27.238053",
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "/home/zuul/.local/tox/bin/tox --version",
                                    "_uses_shell": false,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-ce60-ce0a-00000000001e-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:01:26.809876",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "ROOT: No loadable tox.ini or setup.cfg or pyproject.toml or tox.toml found, assuming empty tox.ini at /home/zuul\n4.64.8 from /home/zuul/.local/tox/lib/python3.11/site-packages/tox/__init__.py",
                            "stdout_lines": [
                                "ROOT: No loadable tox.ini or setup.cfg or pyproject.toml or tox.toml found, assuming empty tox.ini at /home/zuul",
                                "4.64.8 from /home/zuul/.local/tox/lib/python3.11/site-packages/tox/__init__.py"
                            ],
                            "zuul_log_id": "0242ac1f-6606-ce60-ce0a-00000000001e-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000014",
                        "name": "ensure-tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:27.527686Z",
                            "start": "2026-10-04T03:01:26.516309Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000001e",
                        "name": "Output tox version"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "file",
                            "changed": false,
                            "false_condition": "ensure_global_symlinks",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-ce60-ce0a-000000000014",
                        "name": "ensure-tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/ensure-tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:27.553891Z",
                            "start": "2026-10-04T03:01:27.538942Z"
                        },
                        "id": "0242ac1f-6606-ce60-ce0a-00000000001f",
                        "name": "Make global symlink"
                    }
                }
            ]
        }
    ],
    "stats": {
        "debian-bookworm": {
            "changed": 9,
            "failures": 0,
            "ignored": 0,
            "ok": 13,
            "rescued": 0,
            "skipped": 14,
            "unreachable": 0
        }
    },
    "trusted": false
},
{
    "branch": "master",
    "index": "0",
    "phase": "run",
    "playbook": "github.com/osism/openinfra-zuul-jobs/playbooks/tox/run.yaml",
    "plays": [
        {
            "play": {
                "duration": {
                    "end": "2026-10-04T03:01:56.487228Z",
                    "start": "2026-10-04T03:01:28.385946Z"
                },
                "id": "0242ac1f-6606-31f3-a2c4-000000000002",
                "name": "all"
            },
            "tasks": [
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": true,
                            "cmd": [
                                "sudo",
                                "-n",
                                "true"
                            ],
                            "delta": "0:00:00.028418",
                            "end": "2026-10-04 03:01:28.873159",
                            "failed_when_result": false,
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "sudo -n true",
                                    "_uses_shell": false,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-31f3-a2c4-000000000008-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:01:28.844741",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "sudo: unable to resolve host debian: Name or service not known",
                            "stdout_lines": [
                                "sudo: unable to resolve host debian: Name or service not known"
                            ],
                            "zuul_log_id": "0242ac1f-6606-31f3-a2c4-000000000008-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-000000000006",
                        "name": "revoke-sudo",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/revoke-sudo"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:28.936216Z",
                            "start": "2026-10-04T03:01:28.427482Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000008",
                        "name": "Check if zuul is sudoer"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": true,
                            "cmd": [
                                "rm",
                                "-rf",
                                "/etc/sudoers.d/zuul",
                                "/etc/sudoers.d/90-cloud-init-users"
                            ],
                            "delta": "0:00:00.007324",
                            "end": "2026-10-04 03:01:29.275843",
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "rm -rf /etc/sudoers.d/zuul /etc/sudoers.d/90-cloud-init-users",
                                    "_uses_shell": false,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-31f3-a2c4-000000000009-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:01:29.268519",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "",
                            "stdout_lines": [],
                            "zuul_log_id": "0242ac1f-6606-31f3-a2c4-000000000009-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-000000000006",
                        "name": "revoke-sudo",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/revoke-sudo"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:29.472565Z",
                            "start": "2026-10-04T03:01:28.963116Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000009",
                        "name": "Remove sudo access for zuul user."
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "shell",
                            "changed": true,
                            "cmd": "! sudo -n true",
                            "delta": "0:00:00.017777",
                            "end": "2026-10-04 03:01:29.783755",
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "! sudo -n true",
                                    "_uses_shell": true,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-31f3-a2c4-00000000000a-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:01:29.765978",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "sudo: unable to resolve host debian: Name or service not known\nsudo: a password is required",
                            "stdout_lines": [
                                "sudo: unable to resolve host debian: Name or service not known",
                                "sudo: a password is required"
                            ],
                            "zuul_log_id": "0242ac1f-6606-31f3-a2c4-00000000000a-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-000000000006",
                        "name": "revoke-sudo",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/revoke-sudo"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:30.009908Z",
                            "start": "2026-10-04T03:01:29.500102Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000a",
                        "name": "Prove that general sudo access is actually revoked."
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "stat",
                            "changed": false,
                            "false_condition": "tox_constraints_file is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:30.063195Z",
                            "start": "2026-10-04T03:01:30.019196Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000e",
                        "name": "Check to see if the constraints file exists"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "fail",
                            "changed": false,
                            "false_condition": "tox_constraints_file is defined and not stat_results.stat.exists",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:30.091770Z",
                            "start": "2026-10-04T03:01:30.068582Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000f",
                        "name": "Fail if constraints file is missing"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "changed": false,
                            "false_condition": "tox_constraints_file is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:30.120631Z",
                            "start": "2026-10-04T03:01:30.097190Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000010",
                        "name": "Record file location"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "include": "siblings.yaml",
                            "include_args": {}
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:30.155905Z",
                            "start": "2026-10-04T03:01:30.126559Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000011",
                        "name": "Install tox siblings"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": true,
                            "cmd": [
                                "/home/zuul/.local/tox/bin/tox",
                                "--notest",
                                "-edrift-test",
                                "-vv",
                                "--skip-missing-interpreters=false"
                            ],
                            "delta": "0:00:10.909263",
                            "end": "2026-10-04 03:01:41.389932",
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "/home/zuul/.local/tox/bin/tox  --notest  -edrift-test  -vv --skip-missing-interpreters=false",
                                    "_uses_shell": false,
                                    "argv": null,
                                    "chdir": "src/github.com/osism/release",
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-31f3-a2c4-000000000053-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:01:30.480669",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "ROOT: 253 D setup logging to DEBUG on pid 1620 [tox/report.py:249]\ndrift-test: 291 D created app data folder /home/zuul/.cache/virtualenv [virtualenv/app_data/__init__.py:65]\ndrift-test: 294 I find interpreter for spec PythonSpec(major=3, free_threaded=False) [python_discovery/_discovery.py:131]\ndrift-test: 299 D get interpreter info via cmd: /usr/bin/python3.11 /home/zuul/.local/tox/lib/python3.11/site-packages/python_discovery/_py_info_collect.py fca8fbda552e61dcf0f03ed0bbea9f01 477db2ce27566cb3cc0866cd2c928a99 [python_discovery/_cached_py_info.py:223]\ndrift-test: 375 D wrote python info of /usr/bin/python3.11 at /home/zuul/.cache/virtualenv/py_info/5/ca3ed784184f1b3bb7c3539bfb45e71710cd27667424f92c2d5bb4df9c107c23.json [virtualenv/app_data/via_disk_folder.py:159]\ndrift-test: 376 D filesystem is case-sensitive [python_discovery/_compat.py:18]\ndrift-test: 376 I proposed PythonInfo(spec=CPython3.11.2.final.0-64-x86_64, system=/usr/bin/python3.11, exe=/home/zuul/.local/tox/bin/python3, platform=linux, version='3.11.2 (main, May 12 2026, 05:17:27) [GCC 12.2.0]', encoding_fs_io=utf-8-utf-8) [python_discovery/_discovery.py:140]\ndrift-test: 377 D accepted PythonInfo(spec=CPython3.11.2.final.0-64-x86_64, system=/usr/bin/python3.11, exe=/home/zuul/.local/tox/bin/python3, platform=linux, version='3.11.2 (main, May 12 2026, 05:17:27) [GCC 12.2.0]', encoding_fs_io=utf-8-utf-8) [python_discovery/_discovery.py:144]\ndrift-test: 381 D symlink on filesystem does work [virtualenv/info.py:51]\ndrift-test: 381 D filesystem is case-sensitive [virtualenv/info.py:28]\ndrift-test: 422 I create virtual environment via CPython3Posix(dest=/home/zuul/src/github.com/osism/release/.tox/drift-test, clear=False, no_vcs_ignore=False, venv_redirect=False, global=False) [virtualenv/run/session.py:77]\ndrift-test: 423 D create folder /home/zuul/src/github.com/osism/release/.tox/drift-test/bin [virtualenv/util/path/_sync.py:22]\ndrift-test: 423 D create folder /home/zuul/src/github.com/osism/release/.tox/drift-test/include [virtualenv/util/path/_sync.py:22]\ndrift-test: 423 D create folder /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages [virtualenv/util/path/_sync.py:22]\ndrift-test: 423 D write /home/zuul/src/github.com/osism/release/.tox/drift-test/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:54]\ndrift-test: 423 D \thome = /usr/bin [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 424 D \timplementation = CPython [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 424 D \tpython-version = 3.11 [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 424 D \tversion_info = 3.11.2.final.0 [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 424 D \tversion = 3.11.2 [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 424 D \texecutable = /usr/bin/python3.11 [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 424 D \tcommand = /home/zuul/.local/tox/bin/python3 -m virtualenv /home/zuul/src/github.com/osism/release/.tox/drift-test [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 424 D \tvirtualenv = 21.14.5 [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 424 D \tinclude-system-site-packages = false [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 424 D \tbase-prefix = /usr [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 424 D \tbase-exec-prefix = /usr [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 424 D \tbase-executable = /usr/bin/python3.11 [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 424 D symlink /usr/bin/python3.11 to /home/zuul/src/github.com/osism/release/.tox/drift-test/bin/python [virtualenv/util/path/_sync.py:42]\ndrift-test: 425 D ============================== target debug ============================== [virtualenv/run/session.py:79]\ndrift-test: 425 D debug via /home/zuul/src/github.com/osism/release/.tox/drift-test/bin/python /home/zuul/.local/tox/lib/python3.11/site-packages/virtualenv/create/debug.py [virtualenv/create/creator.py:316]\ndrift-test: 425 D {\n  \"sys\": {\n    \"executable\": \"/home/zuul/src/github.com/osism/release/.tox/drift-test/bin/python\",\n    \"_base_executable\": \"/usr/bin/python3.11\",\n    \"prefix\": \"/home/zuul/src/github.com/osism/release/.tox/drift-test\",\n    \"base_prefix\": \"/usr\",\n    \"exec_prefix\": \"/home/zuul/src/github.com/osism/release/.tox/drift-test\",\n    \"base_exec_prefix\": \"/usr\",\n    \"path\": [\n      \"/usr/lib/python311.zip\",\n      \"/usr/lib/python3.11\",\n      \"/usr/lib/python3.11/lib-dynload\",\n      \"/home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages\"\n    ],\n    \"meta_path\": [\n      \"<class '_frozen_importlib.BuiltinImporter'>\",\n      \"<class '_frozen_importlib.FrozenImporter'>\",\n      \"<class '_frozen_importlib_external.PathFinder'>\"\n    ],\n    \"fs_encoding\": \"utf-8\",\n    \"io_encoding\": \"utf-8\"\n  },\n  \"version\": \"3.11.2 (main, May 12 2026, 05:17:27) [GCC 12.2.0]\",\n  \"makefile_filename\": \"/usr/lib/python3.11/config-3.11-x86_64-linux-gnu/Makefile\",\n  \"os\": \"<module 'os' (frozen)>\",\n  \"site\": \"<module 'site' (frozen)>\",\n  \"datetime\": \"<module 'datetime' from '/usr/lib/python3.11/datetime.py'>\",\n  \"math\": \"<module 'math' (built-in)>\",\n  \"json\": \"<module 'json' from '/usr/lib/python3.11/json/__init__.py'>\"\n} [virtualenv/run/session.py:80]\ndrift-test: 461 I add seed packages via FromAppData(download=False, pip=bundle, setuptools=bundle, via=copy, app_data_dir=/home/zuul/.cache/virtualenv) [virtualenv/run/session.py:84]\ndrift-test: 468 D install pip from wheel /home/zuul/.local/tox/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/pip-26.2.1-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:65]\ndrift-test: 469 D install setuptools from wheel /home/zuul/.local/tox/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/setuptools-84.0.0-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:65]\ndrift-test: 470 D build install image for pip-26.2.1-py3-none-any.whl to /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-26.2.1-py3-none-any [virtualenv/seed/embed/via_app_data/pip_install/base.py:81]\ndrift-test: 475 D build install image for setuptools-84.0.0-py3-none-any.whl to /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-84.0.0-py3-none-any [virtualenv/seed/embed/via_app_data/pip_install/base.py:81]\ndrift-test: 802 D copy directory /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-84.0.0-py3-none-any/setuptools to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/setuptools [virtualenv/util/path/_sync.py:50]\ndrift-test: 913 D copy directory /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-84.0.0-py3-none-any/_distutils_hack to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/_distutils_hack [virtualenv/util/path/_sync.py:50]\ndrift-test: 914 D copy directory /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-84.0.0-py3-none-any/setuptools-84.0.0.dist-info to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/setuptools-84.0.0.dist-info [virtualenv/util/path/_sync.py:50]\ndrift-test: 918 D copy /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-84.0.0-py3-none-any/setuptools-84.0.0.virtualenv to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/setuptools-84.0.0.virtualenv [virtualenv/util/path/_sync.py:50]\ndrift-test: 919 D copy /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-84.0.0-py3-none-any/distutils-precedence.pth to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/distutils-precedence.pth [virtualenv/util/path/_sync.py:50]\ndrift-test: 919 D generated console scripts  [virtualenv/seed/embed/via_app_data/pip_install/base.py:69]\ndrift-test: 948 D copy directory /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-26.2.1-py3-none-any/pip-26.2.1.dist-info to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/pip-26.2.1.dist-info [virtualenv/util/path/_sync.py:50]\ndrift-test: 954 D copy /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-26.2.1-py3-none-any/pip-26.2.1.virtualenv to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/pip-26.2.1.virtualenv [virtualenv/util/path/_sync.py:50]\ndrift-test: 954 D copy directory /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-26.2.1-py3-none-any/pip to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/pip [virtualenv/util/path/_sync.py:50]\ndrift-test: 997 D generated console scripts pip3.11 pip-3.11 pip3 pip [virtualenv/seed/embed/via_app_data/pip_install/base.py:69]\ndrift-test: 997 I add activators for Bash, CShell, Fish, Nushell, PowerShell, Python, Xonsh [virtualenv/run/session.py:90]\ndrift-test: 1011 D write /home/zuul/src/github.com/osism/release/.tox/drift-test/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:54]\ndrift-test: 1011 D \thome = /usr/bin [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 1011 D \timplementation = CPython [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 1011 D \tpython-version = 3.11 [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 1012 D \tversion_info = 3.11.2.final.0 [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 1012 D \tversion = 3.11.2 [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 1012 D \texecutable = /usr/bin/python3.11 [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 1012 D \tcommand = /home/zuul/.local/tox/bin/python3 -m virtualenv /home/zuul/src/github.com/osism/release/.tox/drift-test [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 1012 D \tvirtualenv = 21.14.5 [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 1012 D \tinclude-system-site-packages = false [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 1012 D \tbase-prefix = /usr [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 1012 D \tbase-exec-prefix = /usr [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 1012 D \tbase-executable = /usr/bin/python3.11 [virtualenv/create/pyenv_cfg.py:65]\ndrift-test: 1020 W install_deps> python -I -m pip install -r requirements.txt [tox/tox_env/api.py:507]\nCollecting GitPython==3.2.0 (from -r requirements.txt (line 1))\n  Downloading gitpython-3.2.0-py3-none-any.whl.metadata (13 kB)\nCollecting PyDriller==2.12 (from -r requirements.txt (line 2))\n  Downloading pydriller-2.12-py3-none-any.whl.metadata (1.5 kB)\nCollecting PyGithub==2.10.0 (from -r requirements.txt (line 3))\n  Downloading pygithub-2.10.0-py3-none-any.whl.metadata (3.9 kB)\nCollecting PyYAML==6.0.3 (from -r requirements.txt (line 4))\n  Downloading pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.4 kB)\nCollecting dictdiffer==0.10.0 (from -r requirements.txt (line 5))\n  Downloading dictdiffer-0.10.0-py3-none-any.whl.metadata (2.9 kB)\nCollecting docker==7.2.0 (from -r requirements.txt (line 6))\n  Downloading docker-7.2.0-py3-none-any.whl.metadata (3.8 kB)\nCollecting pytest==9.1.1 (from -r requirements.txt (line 7))\n  Downloading pytest-9.1.1-py3-none-any.whl.metadata (7.6 kB)\nCollecting requests==2.34.2 (from -r requirements.txt (line 8))\n  Downloading requests-2.34.2-py3-none-any.whl.metadata (4.8 kB)\nCollecting responses==0.26.3 (from -r requirements.txt (line 9))\n  Downloading responses-0.26.3-py3-none-any.whl.metadata (48 kB)\nCollecting ruamel.yaml==0.19.1 (from -r requirements.txt (line 10))\n  Downloading ruamel_yaml-0.19.1-py3-none-any.whl.metadata (16 kB)\nCollecting tabulate==0.10.0 (from -r requirements.txt (line 11))\n  Downloading tabulate-0.10.0-py3-none-any.whl.metadata (40 kB)\nCollecting gitdb<5,>=4.0.1 (from GitPython==3.2.0->-r requirements.txt (line 1))\n  Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB)\nCollecting pytz (from PyDriller==2.12->-r requirements.txt (line 2))\n  Downloading pytz-2026.5-py2.py3-none-any.whl.metadata (22 kB)\nCollecting types-pytz (from PyDriller==2.12->-r requirements.txt (line 2))\n  Downloading types_pytz-2026.4.0.20260926-py3-none-any.whl.metadata (1.8 kB)\nCollecting lizard (from PyDriller==2.12->-r requirements.txt (line 2))\n  Downloading lizard-1.24.0-py2.py3-none-any.whl.metadata (17 kB)\nCollecting pynacl>=1.4.0 (from PyGithub==2.10.0->-r requirements.txt (line 3))\n  Downloading pynacl-1.6.2-cp38-abi3-manylinux_2_34_x86_64.whl.metadata (10.0 kB)\nCollecting pyjwt>=2.4.0 (from pyjwt[crypto]>=2.4.0->PyGithub==2.10.0->-r requirements.txt (line 3))\n  Downloading pyjwt-2.15.1-py3-none-any.whl.metadata (3.5 kB)\nCollecting typing-extensions>=4.5.0 (from PyGithub==2.10.0->-r requirements.txt (line 3))\n  Downloading typing_extensions-4.16.0-py3-none-any.whl.metadata (3.3 kB)\nCollecting urllib3>=1.26.0 (from PyGithub==2.10.0->-r requirements.txt (line 3))\n  Downloading urllib3-2.8.0-py3-none-any.whl.metadata (7.4 kB)\nCollecting iniconfig>=1.0.1 (from pytest==9.1.1->-r requirements.txt (line 7))\n  Downloading iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB)\nCollecting packaging>=22 (from pytest==9.1.1->-r requirements.txt (line 7))\n  Downloading packaging-26.3-py3-none-any.whl.metadata (3.5 kB)\nCollecting pluggy<2,>=1.5 (from pytest==9.1.1->-r requirements.txt (line 7))\n  Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB)\nCollecting pygments>=2.7.2 (from pytest==9.1.1->-r requirements.txt (line 7))\n  Downloading pygments-2.21.0-py3-none-any.whl.metadata (2.5 kB)\nCollecting charset_normalizer<4,>=2 (from requests==2.34.2->-r requirements.txt (line 8))\n  Downloading charset_normalizer-3.5.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (46 kB)\nCollecting idna<4,>=2.5 (from requests==2.34.2->-r requirements.txt (line 8))\n  Downloading idna-3.20-py3-none-any.whl.metadata (7.2 kB)\nCollecting certifi>=2023.5.7 (from requests==2.34.2->-r requirements.txt (line 8))\n  Downloading certifi-2026.7.22-py3-none-any.whl.metadata (2.5 kB)\nCollecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->GitPython==3.2.0->-r requirements.txt (line 1))\n  Downloading smmap-5.0.3-py3-none-any.whl.metadata (4.6 kB)\nCollecting cryptography>=3.4.0 (from pyjwt[crypto]>=2.4.0->PyGithub==2.10.0->-r requirements.txt (line 3))\n  Downloading cryptography-50.0.2-cp311-abi3-manylinux_2_34_x86_64.whl.metadata (4.4 kB)\nCollecting cffi>=2.0.0 (from cryptography>=3.4.0->pyjwt[crypto]>=2.4.0->PyGithub==2.10.0->-r requirements.txt (line 3))\n  Downloading cffi-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.5 kB)\nCollecting pycparser (from cffi>=2.0.0->cryptography>=3.4.0->pyjwt[crypto]>=2.4.0->PyGithub==2.10.0->-r requirements.txt (line 3))\n  Downloading pycparser-3.0-py3-none-any.whl.metadata (8.2 kB)\nCollecting pathspec (from lizard->PyDriller==2.12->-r requirements.txt (line 2))\n  Downloading pathspec-1.1.1-py3-none-any.whl.metadata (14 kB)\nDownloading gitpython-3.2.0-py3-none-any.whl (228 kB)\nDownloading pydriller-2.12-py3-none-any.whl (37 kB)\nDownloading pygithub-2.10.0-py3-none-any.whl (455 kB)\nDownloading pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (806 kB)\n   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 806.6/806.6 kB 28.3 MB/s  0:00:00\nDownloading dictdiffer-0.10.0-py3-none-any.whl (16 kB)\nDownloading docker-7.2.0-py3-none-any.whl (148 kB)\nDownloading pytest-9.1.1-py3-none-any.whl (386 kB)\nDownloading requests-2.34.2-py3-none-any.whl (73 kB)\nDownloading responses-0.26.3-py3-none-any.whl (36 kB)\nDownloading ruamel_yaml-0.19.1-py3-none-any.whl (118 kB)\nDownloading tabulate-0.10.0-py3-none-any.whl (39 kB)\nDownloading charset_normalizer-3.5.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (269 kB)\nDownloading gitdb-4.0.12-py3-none-any.whl (62 kB)\nDownloading idna-3.20-py3-none-any.whl (69 kB)\nDownloading pluggy-1.6.0-py3-none-any.whl (20 kB)\nDownloading smmap-5.0.3-py3-none-any.whl (24 kB)\nDownloading urllib3-2.8.0-py3-none-any.whl (135 kB)\nDownloading certifi-2026.7.22-py3-none-any.whl (136 kB)\nDownloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB)\nDownloading packaging-26.3-py3-none-any.whl (129 kB)\nDownloading pygments-2.21.0-py3-none-any.whl (1.3 MB)\n   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 1.3/1.3 MB 22.9 MB/s  0:00:00\nDownloading pyjwt-2.15.1-py3-none-any.whl (33 kB)\nDownloading cryptography-50.0.2-cp311-abi3-manylinux_2_34_x86_64.whl (4.8 MB)\n   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 4.8/4.8 MB 33.2 MB/s  0:00:00\nDownloading cffi-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (217 kB)\nDownloading pynacl-1.6.2-cp38-abi3-manylinux_2_34_x86_64.whl (1.4 MB)\n   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 1.4/1.4 MB 26.7 MB/s  0:00:00\nDownloading typing_extensions-4.16.0-py3-none-any.whl (45 kB)\nDownloading lizard-1.24.0-py2.py3-none-any.whl (111 kB)\nDownloading pathspec-1.1.1-py3-none-any.whl (57 kB)\nDownloading pycparser-3.0-py3-none-any.whl (48 kB)\nDownloading pytz-2026.5-py2.py3-none-any.whl (506 kB)\nDownloading types_pytz-2026.4.0.20260926-py3-none-any.whl (10 kB)\nInstalling collected packages: pytz, urllib3, typing-extensions, types-pytz, tabulate, smmap, ruamel.yaml, PyYAML, pyjwt, pygments, pycparser, pluggy, pathspec, packaging, iniconfig, idna, dictdiffer, charset_normalizer, certifi, requests, pytest, lizard, gitdb, cffi, responses, pynacl, GitPython, docker, cryptography, PyDriller, PyGithub\n\nSuccessfully installed GitPython-3.2.0 PyDriller-2.12 PyGithub-2.10.0 PyYAML-6.0.3 certifi-2026.7.22 cffi-2.1.1 charset_normalizer-3.5.2 cryptography-50.0.2 dictdiffer-0.10.0 docker-7.2.0 gitdb-4.0.12 idna-3.20 iniconfig-2.3.0 lizard-1.24.0 packaging-26.3 pathspec-1.1.1 pluggy-1.6.0 pycparser-3.0 pygments-2.21.0 pyjwt-2.15.1 pynacl-1.6.2 pytest-9.1.1 pytz-2026.5 requests-2.34.2 responses-0.26.3 ruamel.yaml-0.19.1 smmap-5.0.3 tabulate-0.10.0 types-pytz-2026.4.0.20260926 typing-extensions-4.16.0 urllib3-2.8.0\ndrift-test: 10780 I exit 0 (9.76 seconds) /home/zuul/src/github.com/osism/release> python -I -m pip install -r requirements.txt pid=1633 [tox/execute/api.py:337]\n  drift-test: OK (10.50 seconds)\n  congratulations :) (10.53 seconds)",
                            "stdout_lines": [
                                "ROOT: 253 D setup logging to DEBUG on pid 1620 [tox/report.py:249]",
                                "drift-test: 291 D created app data folder /home/zuul/.cache/virtualenv [virtualenv/app_data/__init__.py:65]",
                                "drift-test: 294 I find interpreter for spec PythonSpec(major=3, free_threaded=False) [python_discovery/_discovery.py:131]",
                                "drift-test: 299 D get interpreter info via cmd: /usr/bin/python3.11 /home/zuul/.local/tox/lib/python3.11/site-packages/python_discovery/_py_info_collect.py fca8fbda552e61dcf0f03ed0bbea9f01 477db2ce27566cb3cc0866cd2c928a99 [python_discovery/_cached_py_info.py:223]",
                                "drift-test: 375 D wrote python info of /usr/bin/python3.11 at /home/zuul/.cache/virtualenv/py_info/5/ca3ed784184f1b3bb7c3539bfb45e71710cd27667424f92c2d5bb4df9c107c23.json [virtualenv/app_data/via_disk_folder.py:159]",
                                "drift-test: 376 D filesystem is case-sensitive [python_discovery/_compat.py:18]",
                                "drift-test: 376 I proposed PythonInfo(spec=CPython3.11.2.final.0-64-x86_64, system=/usr/bin/python3.11, exe=/home/zuul/.local/tox/bin/python3, platform=linux, version='3.11.2 (main, May 12 2026, 05:17:27) [GCC 12.2.0]', encoding_fs_io=utf-8-utf-8) [python_discovery/_discovery.py:140]",
                                "drift-test: 377 D accepted PythonInfo(spec=CPython3.11.2.final.0-64-x86_64, system=/usr/bin/python3.11, exe=/home/zuul/.local/tox/bin/python3, platform=linux, version='3.11.2 (main, May 12 2026, 05:17:27) [GCC 12.2.0]', encoding_fs_io=utf-8-utf-8) [python_discovery/_discovery.py:144]",
                                "drift-test: 381 D symlink on filesystem does work [virtualenv/info.py:51]",
                                "drift-test: 381 D filesystem is case-sensitive [virtualenv/info.py:28]",
                                "drift-test: 422 I create virtual environment via CPython3Posix(dest=/home/zuul/src/github.com/osism/release/.tox/drift-test, clear=False, no_vcs_ignore=False, venv_redirect=False, global=False) [virtualenv/run/session.py:77]",
                                "drift-test: 423 D create folder /home/zuul/src/github.com/osism/release/.tox/drift-test/bin [virtualenv/util/path/_sync.py:22]",
                                "drift-test: 423 D create folder /home/zuul/src/github.com/osism/release/.tox/drift-test/include [virtualenv/util/path/_sync.py:22]",
                                "drift-test: 423 D create folder /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages [virtualenv/util/path/_sync.py:22]",
                                "drift-test: 423 D write /home/zuul/src/github.com/osism/release/.tox/drift-test/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:54]",
                                "drift-test: 423 D \thome = /usr/bin [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 424 D \timplementation = CPython [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 424 D \tpython-version = 3.11 [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 424 D \tversion_info = 3.11.2.final.0 [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 424 D \tversion = 3.11.2 [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 424 D \texecutable = /usr/bin/python3.11 [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 424 D \tcommand = /home/zuul/.local/tox/bin/python3 -m virtualenv /home/zuul/src/github.com/osism/release/.tox/drift-test [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 424 D \tvirtualenv = 21.14.5 [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 424 D \tinclude-system-site-packages = false [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 424 D \tbase-prefix = /usr [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 424 D \tbase-exec-prefix = /usr [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 424 D \tbase-executable = /usr/bin/python3.11 [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 424 D symlink /usr/bin/python3.11 to /home/zuul/src/github.com/osism/release/.tox/drift-test/bin/python [virtualenv/util/path/_sync.py:42]",
                                "drift-test: 425 D ============================== target debug ============================== [virtualenv/run/session.py:79]",
                                "drift-test: 425 D debug via /home/zuul/src/github.com/osism/release/.tox/drift-test/bin/python /home/zuul/.local/tox/lib/python3.11/site-packages/virtualenv/create/debug.py [virtualenv/create/creator.py:316]",
                                "drift-test: 425 D {",
                                "  \"sys\": {",
                                "    \"executable\": \"/home/zuul/src/github.com/osism/release/.tox/drift-test/bin/python\",",
                                "    \"_base_executable\": \"/usr/bin/python3.11\",",
                                "    \"prefix\": \"/home/zuul/src/github.com/osism/release/.tox/drift-test\",",
                                "    \"base_prefix\": \"/usr\",",
                                "    \"exec_prefix\": \"/home/zuul/src/github.com/osism/release/.tox/drift-test\",",
                                "    \"base_exec_prefix\": \"/usr\",",
                                "    \"path\": [",
                                "      \"/usr/lib/python311.zip\",",
                                "      \"/usr/lib/python3.11\",",
                                "      \"/usr/lib/python3.11/lib-dynload\",",
                                "      \"/home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages\"",
                                "    ],",
                                "    \"meta_path\": [",
                                "      \"<class '_frozen_importlib.BuiltinImporter'>\",",
                                "      \"<class '_frozen_importlib.FrozenImporter'>\",",
                                "      \"<class '_frozen_importlib_external.PathFinder'>\"",
                                "    ],",
                                "    \"fs_encoding\": \"utf-8\",",
                                "    \"io_encoding\": \"utf-8\"",
                                "  },",
                                "  \"version\": \"3.11.2 (main, May 12 2026, 05:17:27) [GCC 12.2.0]\",",
                                "  \"makefile_filename\": \"/usr/lib/python3.11/config-3.11-x86_64-linux-gnu/Makefile\",",
                                "  \"os\": \"<module 'os' (frozen)>\",",
                                "  \"site\": \"<module 'site' (frozen)>\",",
                                "  \"datetime\": \"<module 'datetime' from '/usr/lib/python3.11/datetime.py'>\",",
                                "  \"math\": \"<module 'math' (built-in)>\",",
                                "  \"json\": \"<module 'json' from '/usr/lib/python3.11/json/__init__.py'>\"",
                                "} [virtualenv/run/session.py:80]",
                                "drift-test: 461 I add seed packages via FromAppData(download=False, pip=bundle, setuptools=bundle, via=copy, app_data_dir=/home/zuul/.cache/virtualenv) [virtualenv/run/session.py:84]",
                                "drift-test: 468 D install pip from wheel /home/zuul/.local/tox/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/pip-26.2.1-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:65]",
                                "drift-test: 469 D install setuptools from wheel /home/zuul/.local/tox/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/setuptools-84.0.0-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:65]",
                                "drift-test: 470 D build install image for pip-26.2.1-py3-none-any.whl to /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-26.2.1-py3-none-any [virtualenv/seed/embed/via_app_data/pip_install/base.py:81]",
                                "drift-test: 475 D build install image for setuptools-84.0.0-py3-none-any.whl to /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-84.0.0-py3-none-any [virtualenv/seed/embed/via_app_data/pip_install/base.py:81]",
                                "drift-test: 802 D copy directory /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-84.0.0-py3-none-any/setuptools to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/setuptools [virtualenv/util/path/_sync.py:50]",
                                "drift-test: 913 D copy directory /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-84.0.0-py3-none-any/_distutils_hack to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/_distutils_hack [virtualenv/util/path/_sync.py:50]",
                                "drift-test: 914 D copy directory /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-84.0.0-py3-none-any/setuptools-84.0.0.dist-info to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/setuptools-84.0.0.dist-info [virtualenv/util/path/_sync.py:50]",
                                "drift-test: 918 D copy /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-84.0.0-py3-none-any/setuptools-84.0.0.virtualenv to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/setuptools-84.0.0.virtualenv [virtualenv/util/path/_sync.py:50]",
                                "drift-test: 919 D copy /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-84.0.0-py3-none-any/distutils-precedence.pth to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/distutils-precedence.pth [virtualenv/util/path/_sync.py:50]",
                                "drift-test: 919 D generated console scripts  [virtualenv/seed/embed/via_app_data/pip_install/base.py:69]",
                                "drift-test: 948 D copy directory /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-26.2.1-py3-none-any/pip-26.2.1.dist-info to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/pip-26.2.1.dist-info [virtualenv/util/path/_sync.py:50]",
                                "drift-test: 954 D copy /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-26.2.1-py3-none-any/pip-26.2.1.virtualenv to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/pip-26.2.1.virtualenv [virtualenv/util/path/_sync.py:50]",
                                "drift-test: 954 D copy directory /home/zuul/.cache/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-26.2.1-py3-none-any/pip to /home/zuul/src/github.com/osism/release/.tox/drift-test/lib/python3.11/site-packages/pip [virtualenv/util/path/_sync.py:50]",
                                "drift-test: 997 D generated console scripts pip3.11 pip-3.11 pip3 pip [virtualenv/seed/embed/via_app_data/pip_install/base.py:69]",
                                "drift-test: 997 I add activators for Bash, CShell, Fish, Nushell, PowerShell, Python, Xonsh [virtualenv/run/session.py:90]",
                                "drift-test: 1011 D write /home/zuul/src/github.com/osism/release/.tox/drift-test/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:54]",
                                "drift-test: 1011 D \thome = /usr/bin [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 1011 D \timplementation = CPython [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 1011 D \tpython-version = 3.11 [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 1012 D \tversion_info = 3.11.2.final.0 [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 1012 D \tversion = 3.11.2 [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 1012 D \texecutable = /usr/bin/python3.11 [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 1012 D \tcommand = /home/zuul/.local/tox/bin/python3 -m virtualenv /home/zuul/src/github.com/osism/release/.tox/drift-test [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 1012 D \tvirtualenv = 21.14.5 [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 1012 D \tinclude-system-site-packages = false [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 1012 D \tbase-prefix = /usr [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 1012 D \tbase-exec-prefix = /usr [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 1012 D \tbase-executable = /usr/bin/python3.11 [virtualenv/create/pyenv_cfg.py:65]",
                                "drift-test: 1020 W install_deps> python -I -m pip install -r requirements.txt [tox/tox_env/api.py:507]",
                                "Collecting GitPython==3.2.0 (from -r requirements.txt (line 1))",
                                "  Downloading gitpython-3.2.0-py3-none-any.whl.metadata (13 kB)",
                                "Collecting PyDriller==2.12 (from -r requirements.txt (line 2))",
                                "  Downloading pydriller-2.12-py3-none-any.whl.metadata (1.5 kB)",
                                "Collecting PyGithub==2.10.0 (from -r requirements.txt (line 3))",
                                "  Downloading pygithub-2.10.0-py3-none-any.whl.metadata (3.9 kB)",
                                "Collecting PyYAML==6.0.3 (from -r requirements.txt (line 4))",
                                "  Downloading pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.4 kB)",
                                "Collecting dictdiffer==0.10.0 (from -r requirements.txt (line 5))",
                                "  Downloading dictdiffer-0.10.0-py3-none-any.whl.metadata (2.9 kB)",
                                "Collecting docker==7.2.0 (from -r requirements.txt (line 6))",
                                "  Downloading docker-7.2.0-py3-none-any.whl.metadata (3.8 kB)",
                                "Collecting pytest==9.1.1 (from -r requirements.txt (line 7))",
                                "  Downloading pytest-9.1.1-py3-none-any.whl.metadata (7.6 kB)",
                                "Collecting requests==2.34.2 (from -r requirements.txt (line 8))",
                                "  Downloading requests-2.34.2-py3-none-any.whl.metadata (4.8 kB)",
                                "Collecting responses==0.26.3 (from -r requirements.txt (line 9))",
                                "  Downloading responses-0.26.3-py3-none-any.whl.metadata (48 kB)",
                                "Collecting ruamel.yaml==0.19.1 (from -r requirements.txt (line 10))",
                                "  Downloading ruamel_yaml-0.19.1-py3-none-any.whl.metadata (16 kB)",
                                "Collecting tabulate==0.10.0 (from -r requirements.txt (line 11))",
                                "  Downloading tabulate-0.10.0-py3-none-any.whl.metadata (40 kB)",
                                "Collecting gitdb<5,>=4.0.1 (from GitPython==3.2.0->-r requirements.txt (line 1))",
                                "  Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB)",
                                "Collecting pytz (from PyDriller==2.12->-r requirements.txt (line 2))",
                                "  Downloading pytz-2026.5-py2.py3-none-any.whl.metadata (22 kB)",
                                "Collecting types-pytz (from PyDriller==2.12->-r requirements.txt (line 2))",
                                "  Downloading types_pytz-2026.4.0.20260926-py3-none-any.whl.metadata (1.8 kB)",
                                "Collecting lizard (from PyDriller==2.12->-r requirements.txt (line 2))",
                                "  Downloading lizard-1.24.0-py2.py3-none-any.whl.metadata (17 kB)",
                                "Collecting pynacl>=1.4.0 (from PyGithub==2.10.0->-r requirements.txt (line 3))",
                                "  Downloading pynacl-1.6.2-cp38-abi3-manylinux_2_34_x86_64.whl.metadata (10.0 kB)",
                                "Collecting pyjwt>=2.4.0 (from pyjwt[crypto]>=2.4.0->PyGithub==2.10.0->-r requirements.txt (line 3))",
                                "  Downloading pyjwt-2.15.1-py3-none-any.whl.metadata (3.5 kB)",
                                "Collecting typing-extensions>=4.5.0 (from PyGithub==2.10.0->-r requirements.txt (line 3))",
                                "  Downloading typing_extensions-4.16.0-py3-none-any.whl.metadata (3.3 kB)",
                                "Collecting urllib3>=1.26.0 (from PyGithub==2.10.0->-r requirements.txt (line 3))",
                                "  Downloading urllib3-2.8.0-py3-none-any.whl.metadata (7.4 kB)",
                                "Collecting iniconfig>=1.0.1 (from pytest==9.1.1->-r requirements.txt (line 7))",
                                "  Downloading iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB)",
                                "Collecting packaging>=22 (from pytest==9.1.1->-r requirements.txt (line 7))",
                                "  Downloading packaging-26.3-py3-none-any.whl.metadata (3.5 kB)",
                                "Collecting pluggy<2,>=1.5 (from pytest==9.1.1->-r requirements.txt (line 7))",
                                "  Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB)",
                                "Collecting pygments>=2.7.2 (from pytest==9.1.1->-r requirements.txt (line 7))",
                                "  Downloading pygments-2.21.0-py3-none-any.whl.metadata (2.5 kB)",
                                "Collecting charset_normalizer<4,>=2 (from requests==2.34.2->-r requirements.txt (line 8))",
                                "  Downloading charset_normalizer-3.5.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (46 kB)",
                                "Collecting idna<4,>=2.5 (from requests==2.34.2->-r requirements.txt (line 8))",
                                "  Downloading idna-3.20-py3-none-any.whl.metadata (7.2 kB)",
                                "Collecting certifi>=2023.5.7 (from requests==2.34.2->-r requirements.txt (line 8))",
                                "  Downloading certifi-2026.7.22-py3-none-any.whl.metadata (2.5 kB)",
                                "Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->GitPython==3.2.0->-r requirements.txt (line 1))",
                                "  Downloading smmap-5.0.3-py3-none-any.whl.metadata (4.6 kB)",
                                "Collecting cryptography>=3.4.0 (from pyjwt[crypto]>=2.4.0->PyGithub==2.10.0->-r requirements.txt (line 3))",
                                "  Downloading cryptography-50.0.2-cp311-abi3-manylinux_2_34_x86_64.whl.metadata (4.4 kB)",
                                "Collecting cffi>=2.0.0 (from cryptography>=3.4.0->pyjwt[crypto]>=2.4.0->PyGithub==2.10.0->-r requirements.txt (line 3))",
                                "  Downloading cffi-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.5 kB)",
                                "Collecting pycparser (from cffi>=2.0.0->cryptography>=3.4.0->pyjwt[crypto]>=2.4.0->PyGithub==2.10.0->-r requirements.txt (line 3))",
                                "  Downloading pycparser-3.0-py3-none-any.whl.metadata (8.2 kB)",
                                "Collecting pathspec (from lizard->PyDriller==2.12->-r requirements.txt (line 2))",
                                "  Downloading pathspec-1.1.1-py3-none-any.whl.metadata (14 kB)",
                                "Downloading gitpython-3.2.0-py3-none-any.whl (228 kB)",
                                "Downloading pydriller-2.12-py3-none-any.whl (37 kB)",
                                "Downloading pygithub-2.10.0-py3-none-any.whl (455 kB)",
                                "Downloading pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (806 kB)",
                                "   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 806.6/806.6 kB 28.3 MB/s  0:00:00",
                                "Downloading dictdiffer-0.10.0-py3-none-any.whl (16 kB)",
                                "Downloading docker-7.2.0-py3-none-any.whl (148 kB)",
                                "Downloading pytest-9.1.1-py3-none-any.whl (386 kB)",
                                "Downloading requests-2.34.2-py3-none-any.whl (73 kB)",
                                "Downloading responses-0.26.3-py3-none-any.whl (36 kB)",
                                "Downloading ruamel_yaml-0.19.1-py3-none-any.whl (118 kB)",
                                "Downloading tabulate-0.10.0-py3-none-any.whl (39 kB)",
                                "Downloading charset_normalizer-3.5.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (269 kB)",
                                "Downloading gitdb-4.0.12-py3-none-any.whl (62 kB)",
                                "Downloading idna-3.20-py3-none-any.whl (69 kB)",
                                "Downloading pluggy-1.6.0-py3-none-any.whl (20 kB)",
                                "Downloading smmap-5.0.3-py3-none-any.whl (24 kB)",
                                "Downloading urllib3-2.8.0-py3-none-any.whl (135 kB)",
                                "Downloading certifi-2026.7.22-py3-none-any.whl (136 kB)",
                                "Downloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB)",
                                "Downloading packaging-26.3-py3-none-any.whl (129 kB)",
                                "Downloading pygments-2.21.0-py3-none-any.whl (1.3 MB)",
                                "   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 1.3/1.3 MB 22.9 MB/s  0:00:00",
                                "Downloading pyjwt-2.15.1-py3-none-any.whl (33 kB)",
                                "Downloading cryptography-50.0.2-cp311-abi3-manylinux_2_34_x86_64.whl (4.8 MB)",
                                "   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 4.8/4.8 MB 33.2 MB/s  0:00:00",
                                "Downloading cffi-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (217 kB)",
                                "Downloading pynacl-1.6.2-cp38-abi3-manylinux_2_34_x86_64.whl (1.4 MB)",
                                "   \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501 1.4/1.4 MB 26.7 MB/s  0:00:00",
                                "Downloading typing_extensions-4.16.0-py3-none-any.whl (45 kB)",
                                "Downloading lizard-1.24.0-py2.py3-none-any.whl (111 kB)",
                                "Downloading pathspec-1.1.1-py3-none-any.whl (57 kB)",
                                "Downloading pycparser-3.0-py3-none-any.whl (48 kB)",
                                "Downloading pytz-2026.5-py2.py3-none-any.whl (506 kB)",
                                "Downloading types_pytz-2026.4.0.20260926-py3-none-any.whl (10 kB)",
                                "Installing collected packages: pytz, urllib3, typing-extensions, types-pytz, tabulate, smmap, ruamel.yaml, PyYAML, pyjwt, pygments, pycparser, pluggy, pathspec, packaging, iniconfig, idna, dictdiffer, charset_normalizer, certifi, requests, pytest, lizard, gitdb, cffi, responses, pynacl, GitPython, docker, cryptography, PyDriller, PyGithub",
                                "",
                                "Successfully installed GitPython-3.2.0 PyDriller-2.12 PyGithub-2.10.0 PyYAML-6.0.3 certifi-2026.7.22 cffi-2.1.1 charset_normalizer-3.5.2 cryptography-50.0.2 dictdiffer-0.10.0 docker-7.2.0 gitdb-4.0.12 idna-3.20 iniconfig-2.3.0 lizard-1.24.0 packaging-26.3 pathspec-1.1.1 pluggy-1.6.0 pycparser-3.0 pygments-2.21.0 pyjwt-2.15.1 pynacl-1.6.2 pytest-9.1.1 pytz-2026.5 requests-2.34.2 responses-0.26.3 ruamel.yaml-0.19.1 smmap-5.0.3 tabulate-0.10.0 types-pytz-2026.4.0.20260926 typing-extensions-4.16.0 urllib3-2.8.0",
                                "drift-test: 10780 I exit 0 (9.76 seconds) /home/zuul/src/github.com/osism/release> python -I -m pip install -r requirements.txt pid=1633 [tox/execute/api.py:337]",
                                "  drift-test: OK (10.50 seconds)",
                                "  congratulations :) (10.53 seconds)"
                            ],
                            "zuul_log_id": "0242ac1f-6606-31f3-a2c4-000000000053-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:41.708930Z",
                            "start": "2026-10-04T03:01:30.187602Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000053",
                        "name": "Run tox without tests"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "tempfile",
                            "changed": true,
                            "gid": 1000,
                            "group": "zuul",
                            "invocation": {
                                "module_args": {
                                    "path": null,
                                    "prefix": "ansible.",
                                    "state": "file",
                                    "suffix": ""
                                }
                            },
                            "mode": "0600",
                            "owner": "zuul",
                            "path": "/tmp/ansible.3jmjpgy1",
                            "size": 0,
                            "state": "file",
                            "uid": 1000
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:42.095473Z",
                            "start": "2026-10-04T03:01:41.714793Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000054",
                        "name": "Create a tempfile to save tox showconfig"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": true,
                            "cmd": [
                                "/home/zuul/.local/tox/bin/tox",
                                "--version",
                                "--quiet"
                            ],
                            "delta": "0:00:00.365808",
                            "end": "2026-10-04 03:01:42.778003",
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "/home/zuul/.local/tox/bin/tox --version --quiet",
                                    "_uses_shell": false,
                                    "argv": null,
                                    "chdir": "src/github.com/osism/release",
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-31f3-a2c4-000000000055-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:01:42.412195",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "4.64.8 from /home/zuul/.local/tox/lib/python3.11/site-packages/tox/__init__.py",
                            "stdout_lines": [
                                "4.64.8 from /home/zuul/.local/tox/lib/python3.11/site-packages/tox/__init__.py"
                            ],
                            "zuul_log_id": "0242ac1f-6606-31f3-a2c4-000000000055-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:43.145393Z",
                            "start": "2026-10-04T03:01:42.128761Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000055",
                        "name": "Detect tox version"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "shell",
                            "changed": true,
                            "cmd": "/home/zuul/.local/tox/bin/tox   config   -edrift-test  > /tmp/ansible.3jmjpgy1",
                            "delta": "0:00:00.406400",
                            "end": "2026-10-04 03:01:43.896866",
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "/home/zuul/.local/tox/bin/tox   config   -edrift-test  > /tmp/ansible.3jmjpgy1",
                                    "_uses_shell": true,
                                    "argv": null,
                                    "chdir": "src/github.com/osism/release",
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-31f3-a2c4-000000000056-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:01:43.490466",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "",
                            "stdout_lines": [],
                            "zuul_log_id": "0242ac1f-6606-31f3-a2c4-000000000056-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:44.205090Z",
                            "start": "2026-10-04T03:01:43.197023Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000056",
                        "name": "Get tox envlist config"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "tox_install_sibling_packages",
                            "changed": false,
                            "invocation": {
                                "module_args": {
                                    "project_dir": "src/github.com/osism/release",
                                    "projects": [],
                                    "tox_constraints_file": null,
                                    "tox_package_name": null,
                                    "tox_show_config": "/tmp/ansible.3jmjpgy1"
                                }
                            },
                            "msg": "No setup.cfg, no action needed"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:44.719735Z",
                            "start": "2026-10-04T03:01:44.210583Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000057",
                        "name": "Install any sibling python packages"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "file",
                            "changed": true,
                            "diff": {
                                "after": {
                                    "path": "/tmp/ansible.3jmjpgy1",
                                    "state": "absent"
                                },
                                "before": {
                                    "path": "/tmp/ansible.3jmjpgy1",
                                    "state": "file"
                                }
                            },
                            "invocation": {
                                "module_args": {
                                    "_diff_peek": null,
                                    "_original_basename": null,
                                    "access_time": null,
                                    "access_time_format": "%Y%m%d%H%M.%S",
                                    "attributes": null,
                                    "follow": true,
                                    "force": false,
                                    "group": null,
                                    "mode": null,
                                    "modification_time": null,
                                    "modification_time_format": "%Y%m%d%H%M.%S",
                                    "owner": null,
                                    "path": "/tmp/ansible.3jmjpgy1",
                                    "recurse": false,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": null,
                                    "state": "absent",
                                    "unsafe_writes": false
                                }
                            },
                            "path": "/tmp/ansible.3jmjpgy1",
                            "state": "absent"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:45.195612Z",
                            "start": "2026-10-04T03:01:44.724655Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000058",
                        "name": "Remove tempfile"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "debug",
                            "changed": false,
                            "msg": "/home/zuul/.local/tox/bin/tox   -edrift-test  -vv --skip-missing-interpreters=false"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:45.226684Z",
                            "start": "2026-10-04T03:01:45.200438Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000012",
                        "name": "Emit tox command"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": true,
                            "cmd": [
                                "/home/zuul/.local/tox/bin/tox",
                                "-edrift-test",
                                "-vv",
                                "--skip-missing-interpreters=false"
                            ],
                            "delta": "0:00:09.800112",
                            "end": "2026-10-04 03:01:55.290611",
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "/home/zuul/.local/tox/bin/tox   -edrift-test  -vv --skip-missing-interpreters=false",
                                    "_uses_shell": false,
                                    "argv": null,
                                    "chdir": "src/github.com/osism/release",
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-31f3-a2c4-000000000014-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:01:45.490499",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "ROOT: 239 D setup logging to DEBUG on pid 1790 [tox/report.py:249]\ndrift-test: 273 D created app data folder /home/zuul/.cache/virtualenv [virtualenv/app_data/__init__.py:65]\ndrift-test: 276 I find interpreter for spec PythonSpec(major=3, free_threaded=False) [python_discovery/_discovery.py:131]\ndrift-test: 280 D got python info of /usr/bin/python3.11 from /home/zuul/.cache/virtualenv/py_info/5/ca3ed784184f1b3bb7c3539bfb45e71710cd27667424f92c2d5bb4df9c107c23.json [virtualenv/app_data/via_disk_folder.py:139]\ndrift-test: 281 D filesystem is case-sensitive [python_discovery/_compat.py:18]\ndrift-test: 281 I proposed PythonInfo(spec=CPython3.11.2.final.0-64-x86_64, system=/usr/bin/python3.11, exe=/home/zuul/.local/tox/bin/python3, platform=linux, version='3.11.2 (main, May 12 2026, 05:17:27) [GCC 12.2.0]', encoding_fs_io=utf-8-utf-8) [python_discovery/_discovery.py:140]\ndrift-test: 281 D accepted PythonInfo(spec=CPython3.11.2.final.0-64-x86_64, system=/usr/bin/python3.11, exe=/home/zuul/.local/tox/bin/python3, platform=linux, version='3.11.2 (main, May 12 2026, 05:17:27) [GCC 12.2.0]', encoding_fs_io=utf-8-utf-8) [python_discovery/_discovery.py:144]\ndrift-test: 283 D symlink on filesystem does work [virtualenv/info.py:51]\ndrift-test: 283 D filesystem is case-sensitive [virtualenv/info.py:28]\ndrift-test: 321 W commands[0]> pytest tests/ -v [tox/tox_env/api.py:507]\n============================= test session starts ==============================\nplatform linux -- Python 3.11.2, pytest-9.1.1, pluggy-1.6.0 -- /home/zuul/src/github.com/osism/release/.tox/drift-test/bin/python\ncachedir: .tox/drift-test/.pytest_cache\nrootdir: /home/zuul/src/github.com/osism/release\ncollecting ... collected 791 items\n\ntests/catalog_drift/test_catalog_extract.py::test_collections_collect_nested_roles PASSED [  0%]\ntests/catalog_drift/test_catalog_extract.py::test_validators_default_the_playbook_name PASSED [  0%]\ntests/catalog_drift/test_catalog_extract.py::test_non_literal_map_role2role_raises PASSED [  0%]\ntests/catalog_drift/test_catalog_extract.py::test_missing_assignment_raises PASSED [  0%]\ntests/catalog_drift/test_catalog_extract.py::test_non_literal_validate_playbooks_raises PASSED [  0%]\ntests/catalog_drift/test_catalog_extract.py::test_role_with_non_literal_name_raises PASSED [  0%]\ntests/catalog_drift/test_catalog_extract.py::test_validator_entry_without_runtime_raises PASSED [  0%]\ntests/catalog_drift/test_catalog_extract.py::test_validate_playbooks_non_dict_literal_raises PASSED [  1%]\ntests/catalog_drift/test_catalog_extract.py::test_validator_entry_non_dict_raises PASSED [  1%]\ntests/catalog_drift/test_catalog_extract.py::test_non_literal_collection_key_raises PASSED [  1%]\ntests/catalog_drift/test_catalog_extract.py::test_collections_carry_release_bounds PASSED [  1%]\ntests/catalog_drift/test_catalog_extract.py::test_role_with_unknown_keyword_raises PASSED [  1%]\ntests/catalog_drift/test_catalog_extract.py::test_role_with_positional_bound_raises PASSED [  1%]\ntests/catalog_drift/test_catalog_extract.py::test_role_with_non_literal_bound_raises PASSED [  1%]\ntests/catalog_drift/test_catalog_role_missing.py::test_release_differential_is_one_entry_per_collection PASSED [  1%]\ntests/catalog_drift/test_catalog_role_missing.py::test_dead_everywhere_gets_its_own_summary PASSED [  2%]\ntests/catalog_drift/test_catalog_role_missing.py::test_resolving_role_is_no_finding PASSED [  2%]\ntests/catalog_drift/test_catalog_role_missing.py::test_validator_finding_image_is_playbook_alias_is_key PASSED [  2%]\ntests/catalog_drift/test_catalog_role_missing.py::test_validator_checked_against_its_own_runtime PASSED [  2%]\ntests/catalog_drift/test_catalog_role_missing.py::test_duplicate_role_in_one_collection_is_one_finding PASSED [  2%]\ntests/catalog_drift/test_catalog_role_missing.py::test_allowlist_is_applied PASSED [  2%]\ntests/catalog_drift/test_catalog_role_missing.py::test_empty_release_range_raises PASSED [  2%]\ntests/catalog_drift/test_catalog_role_missing.py::test_bounded_role_is_not_checked_outside_its_bounds PASSED [  2%]\ntests/catalog_drift/test_catalog_role_missing.py::test_bounded_role_still_reports_inside_its_bounds PASSED [  3%]\ntests/catalog_drift/test_catalog_role_missing.py::test_bounded_role_reports_only_the_releases_it_is_deployed_on PASSED [  3%]\ntests/catalog_drift/test_catalog_role_missing.py::test_role_deployed_on_no_supported_release_is_a_finding PASSED [  3%]\ntests/catalog_drift/test_catalog_role_missing.py::test_unparseable_release_bound_raises PASSED [  3%]\ntests/catalog_drift/test_integration_real_repos.py::test_no_findings_below_the_differential SKIPPED [  3%]\ntests/catalog_drift/test_integration_real_repos.py::test_redis_is_found_from_2025_2 SKIPPED [  3%]\ntests/catalog_drift/test_playbooks_constants.py::test_load_const_reads_a_list PASSED [  3%]\ntests/catalog_drift/test_playbooks_constants.py::test_load_const_reads_a_string PASSED [  3%]\ntests/catalog_drift/test_playbooks_constants.py::test_load_const_missing_name_raises PASSED [  4%]\ntests/catalog_drift/test_playbooks_constants.py::test_load_const_returns_last_assignment PASSED [  4%]\ntests/catalog_drift/test_playbooks_constants.py::test_load_const_non_literal_raises PASSED [  4%]\ntests/catalog_drift/test_playbooks_kolla.py::test_site_roles_minus_unsupported PASSED [  4%]\ntests/catalog_drift/test_playbooks_kolla.py::test_release_specific_osism_playbooks PASSED [  4%]\ntests/catalog_drift/test_playbooks_kolla.py::test_interface_applies_render_transform PASSED [  4%]\ntests/catalog_drift/test_playbooks_kolla.py::test_kolla_host_and_post_deploy_collisions_are_dropped PASSED [  4%]\ntests/catalog_drift/test_playbooks_kolla.py::test_mariadb_backup_recovery_get_hyphenated_aliases PASSED [  4%]\ntests/catalog_drift/test_playbooks_kolla.py::test_release_without_override_dir_raises PASSED [  5%]\ntests/catalog_drift/test_playbooks_resolution.py::test_membership_and_provenance PASSED [  5%]\ntests/catalog_drift/test_playbooks_resolution.py::test_ceph_special_case PASSED [  5%]\ntests/catalog_drift/test_playbooks_resolution.py::test_ceph_special_case_absent_ceph_ceph PASSED [  5%]\ntests/catalog_drift/test_playbooks_resolution.py::test_prefixed_key_resolves_only_when_the_prefixed_name_is_itself_a_key PASSED [  5%]\ntests/catalog_drift/test_playbooks_resolution.py::test_bare_prefix_strip_does_not_reconstruct_a_bare_role PASSED [  5%]\ntests/catalog_drift/test_playbooks_resolution.py::test_unknown_role_does_not_resolve PASSED [  5%]\ntests/catalog_drift/test_playbooks_resolution.py::test_runtime_interface_merges_all_four_runtimes PASSED [  5%]\ntests/catalog_drift/test_playbooks_resolution.py::test_runtime_interface_is_memoized_on_config PASSED [  6%]\ntests/catalog_drift/test_playbooks_resolution.py::test_runtime_interface_cache_keyed_by_release PASSED [  6%]\ntests/catalog_drift/test_playbooks_resolution.py::test_validate_resolves_uses_the_named_runtime PASSED [  6%]\ntests/catalog_drift/test_playbooks_resolution.py::test_validate_resolves_ceph_ansible_branch PASSED [  6%]\ntests/catalog_drift/test_playbooks_resolution.py::test_validate_resolves_wrong_environment_does_not_resolve PASSED [  6%]\ntests/catalog_drift/test_playbooks_resolution.py::test_validate_resolves_osism_ansible_requires_an_environment PASSED [  6%]\ntests/catalog_drift/test_playbooks_resolution.py::test_validate_resolves_unknown_runtime_raises PASSED [  6%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_osism_files_raises_on_bad_playbooks_version_pin PASSED [  6%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_osism_symlink_naming PASSED [  7%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_osism_underscore_guard_is_dead_code PASSED [  7%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_osism_interface_hides_and_keeps PASSED [  7%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_osism_interface_collision_last_prefix_wins PASSED [  7%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_osism_own_files_playbooks_copy_is_mirrored PASSED [  7%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_ceph_keeps_full_stem PASSED [  7%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_ceph_files_unions_flavour_and_toplevel PASSED [  7%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_ceph_upgrade_alias_always_created PASSED [  7%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_ceph_purge_survivors_only_the_osism_pair PASSED [  8%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_ceph_flavours_excludes_the_ceph_yml_alias PASSED [  8%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_ceph_files_skips_flavours_without_ceph_ansible PASSED [  8%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_ceph_mirrors_known_upstream_typos PASSED [  8%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_kubernetes_files_lists_prefixed PASSED [  8%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_kubernetes_strips_prefix PASSED [  8%]\ntests/catalog_drift/test_playbooks_runtimes.py::test_playbook_files_dispatch PASSED [  8%]\ntests/catalog_drift/test_plugin_registry.py::test_catalog_role_missing_plugin_registered PASSED [  8%]\ntests/catalog_drift/test_plugin_registry.py::test_catalog_plugin_group_matches_registry PASSED [  9%]\ntests/catalog_drift/test_plugin_registry.py::test_catalog_report_header_exists PASSED [  9%]\ntests/catalog_drift/test_plugin_registry.py::test_catalog_role_missing_enabled_in_config PASSED [  9%]\ntests/catalog_drift/test_plugin_registry.py::test_each_plugin_has_required_metadata PASSED [  9%]\ntests/image_drift/test_demo.py::test_three_entries_per_plugin PASSED     [  9%]\ntests/image_drift/test_demo.py::test_entries_carry_live_plugin_text PASSED [  9%]\ntests/image_drift/test_demo.py::test_entries_are_actionable PASSED       [  9%]\ntests/image_drift/test_demo.py::test_show_values_plugin_covers_both_render_branches PASSED [  9%]\ntests/image_drift/test_demo.py::test_paths_reflect_plugin_input_files PASSED [ 10%]\ntests/image_drift/test_driver.py::test_help_lists_plugins PASSED         [ 10%]\ntests/image_drift/test_driver.py::test_default_run_exits_1_with_drifting_images PASSED [ 10%]\ntests/image_drift/test_driver.py::test_allowlisted_osism_ansible_hidden_by_default PASSED [ 10%]\ntests/image_drift/test_driver.py::test_no_allowlist_surfaces_osism_ansible PASSED [ 10%]\ntests/image_drift/test_driver.py::test_format_json_keys PASSED           [ 10%]\ntests/image_drift/test_driver.py::test_plugin_filter_runs_only_role_shadows PASSED [ 10%]\ntests/image_drift/test_driver.py::test_summary_line_counts PASSED        [ 10%]\ntests/image_drift/test_driver.py::test_advisory_only_exits_0 PASSED      [ 11%]\ntests/image_drift/test_driver.py::test_advisory_finding_in_default_json PASSED [ 11%]\ntests/image_drift/test_driver.py::test_missing_group_errors PASSED       [ 11%]\ntests/image_drift/test_image_orphan.py::test_orphan_alias_detected PASSED [ 11%]\ntests/image_drift/test_image_orphan.py::test_consumed_alias_not_detected PASSED [ 11%]\ntests/image_drift/test_image_orphan.py::test_playbook_consumed_alias_not_detected PASSED [ 11%]\ntests/image_drift/test_image_orphan.py::test_consumer_in_an_unfiltered_file_is_found PASSED [ 11%]\ntests/image_drift/test_image_orphan.py::test_allowlist_suppresses_orphan PASSED [ 12%]\ntests/image_drift/test_manager_parser.py::test_plain_value PASSED        [ 12%]\ntests/image_drift/test_manager_parser.py::test_latest_override_pattern PASSED [ 12%]\ntests/image_drift/test_manager_parser.py::test_unresolved_jinja_marked PASSED [ 12%]\ntests/image_drift/test_manager_parser.py::test_multiple_entries PASSED   [ 12%]\ntests/image_drift/test_manager_template_parser.py::test_basic_alias_extraction PASSED [ 12%]\ntests/image_drift/test_manager_template_parser.py::test_jinja_escaped_lines_ignored PASSED [ 12%]\ntests/image_drift/test_manager_template_parser.py::test_double_quoted_versions_key PASSED [ 12%]\ntests/image_drift/test_manager_template_parser.py::test_lines_without_pattern_skipped PASSED [ 13%]\ntests/image_drift/test_manager_template_parser.py::test_extract_stream_resolved_basic PASSED [ 13%]\ntests/image_drift/test_manager_template_parser.py::test_extract_stream_resolved_multiple PASSED [ 13%]\ntests/image_drift/test_override_template_parser.py::test_returns_tag_aliases_only PASSED [ 13%]\ntests/image_drift/test_override_template_parser.py::test_ignores_image_lines PASSED [ 13%]\ntests/image_drift/test_override_template_parser.py::test_empty_input PASSED [ 13%]\ntests/image_drift/test_override_template_parser.py::test_comment_and_blank_lines_ignored PASSED [ 13%]\ntests/image_drift/test_plugin_registry.py::test_image_plugins_registered PASSED [ 13%]\ntests/image_drift/test_plugin_registry.py::test_image_plugin_group_matches_registry PASSED [ 14%]\ntests/image_drift/test_plugin_registry.py::test_role_unpinned_enabled_in_config PASSED [ 14%]\ntests/image_drift/test_plugin_registry.py::test_image_orphan_enabled_in_config PASSED [ 14%]\ntests/image_drift/test_plugin_registry.py::test_role_registry_orphan_enabled_in_config PASSED [ 14%]\ntests/image_drift/test_plugin_registry.py::test_rolling_pin_enabled_in_config PASSED [ 14%]\ntests/image_drift/test_plugin_registry.py::test_each_plugin_has_required_metadata PASSED [ 14%]\ntests/image_drift/test_release_parser.py::test_parse_release_returns_docker_images PASSED [ 14%]\ntests/image_drift/test_release_parser.py::test_parse_release_missing_docker_images_errors PASSED [ 14%]\ntests/image_drift/test_release_vs_manager.py::test_baseline_drift PASSED [ 15%]\ntests/image_drift/test_release_vs_manager.py::test_allowlist_broad_suppresses_all_redis PASSED [ 15%]\ntests/image_drift/test_release_vs_manager.py::test_allowlist_narrow_suppresses_one_alias_only PASSED [ 15%]\ntests/image_drift/test_release_vs_manager.py::test_latest_override_emitted_with_found_latest PASSED [ 15%]\ntests/image_drift/test_release_vs_manager.py::test_disabled_image_not_in_release_skipped PASSED [ 15%]\ntests/image_drift/test_report.py::test_show_values_produces_two_blocks PASSED [ 15%]\ntests/image_drift/test_report.py::test_show_values_live_block_collapses_file PASSED [ 15%]\ntests/image_drift/test_report.py::test_show_values_dormant_block_collapses_two_files PASSED [ 15%]\ntests/image_drift/test_report.py::test_show_values_refs_single_line_only PASSED [ 16%]\ntests/image_drift/test_report.py::test_show_values_item_order_by_path_then_alias PASSED [ 16%]\ntests/image_drift/test_report.py::test_show_values_fix_and_refs_present PASSED [ 16%]\ntests/image_drift/test_report.py::test_show_values_empty_expected_renders_no_release_pin PASSED [ 16%]\ntests/image_drift/test_report.py::test_show_values_empty_expected_refs_single_line PASSED [ 16%]\ntests/image_drift/test_report.py::test_show_values_empty_expected_sorted_by_path_then_alias PASSED [ 16%]\ntests/image_drift/test_report.py::test_show_values_nonempty_expected_still_uses_arrow PASSED [ 16%]\ntests/image_drift/test_report.py::test_kolla_chain_inner_regression_two_blocks PASSED [ 16%]\ntests/image_drift/test_role_defaults_parser.py::test_concrete_tag_extracted PASSED [ 17%]\ntests/image_drift/test_role_defaults_parser.py::test_jinja_value_skipped PASSED [ 17%]\ntests/image_drift/test_role_defaults_parser.py::test_multiple_aliases_in_one_role_file PASSED [ 17%]\ntests/image_drift/test_role_defaults_parser.py::test_empty_or_malformed_returns_empty PASSED [ 17%]\ntests/image_drift/test_role_defaults_parser.py::test_tag_indirected_through_own_version_resolved PASSED [ 17%]\ntests/image_drift/test_role_defaults_parser.py::test_tag_indirected_through_own_version_non_string_pin PASSED [ 17%]\ntests/image_drift/test_role_defaults_parser.py::test_tag_indirection_whitespace_insensitive PASSED [ 17%]\ntests/image_drift/test_role_defaults_parser.py::test_tag_indirection_skipped_when_version_non_concrete PASSED [ 17%]\ntests/image_drift/test_role_defaults_parser.py::test_tag_indirection_skipped_when_version_missing PASSED [ 18%]\ntests/image_drift/test_role_defaults_parser.py::test_tag_referencing_other_var_skipped PASSED [ 18%]\ntests/image_drift/test_role_defaults_parser.py::test_composed_tag_left_for_later_pass PASSED [ 18%]\ntests/image_drift/test_role_registry_orphan.py::test_unreferenced_registry_var_detected PASSED [ 18%]\ntests/image_drift/test_role_registry_orphan.py::test_own_definition_line_is_not_a_consumer PASSED [ 18%]\ntests/image_drift/test_role_registry_orphan.py::test_reference_in_same_role_not_detected PASSED [ 18%]\ntests/image_drift/test_role_registry_orphan.py::test_reference_from_another_role_not_detected PASSED [ 18%]\ntests/image_drift/test_role_registry_orphan.py::test_bare_jinja_statement_reference_counts_as_consumer PASSED [ 18%]\ntests/image_drift/test_role_registry_orphan.py::test_longer_name_does_not_mask_its_prefix PASSED [ 19%]\ntests/image_drift/test_role_registry_orphan.py::test_playbook_reference_not_detected PASSED [ 19%]\ntests/image_drift/test_role_registry_orphan.py::test_manager_template_reference_not_detected PASSED [ 19%]\ntests/image_drift/test_role_registry_orphan.py::test_base_docker_registry_var_is_not_reported PASSED [ 19%]\ntests/image_drift/test_role_registry_orphan.py::test_consumer_in_an_unfiltered_file_is_found PASSED [ 19%]\ntests/image_drift/test_role_registry_orphan.py::test_allowlist_suppresses_orphan PASSED [ 19%]\ntests/image_drift/test_role_shadows.py::test_baseline_drift PASSED       [ 19%]\ntests/image_drift/test_role_shadows.py::test_role_without_defaults_skipped PASSED [ 19%]\ntests/image_drift/test_role_shadows.py::test_jinja_valued_tag_not_drift PASSED [ 20%]\ntests/image_drift/test_role_shadows.py::test_allowlist_very_narrow_pins_to_role_file PASSED [ 20%]\ntests/image_drift/test_role_shadows.py::test_netbox_redis_is_live PASSED [ 20%]\ntests/image_drift/test_role_shadows.py::test_dormant_aliases_are_dormant PASSED [ 20%]\ntests/image_drift/test_role_shadows.py::test_floatdemo_is_live PASSED    [ 20%]\ntests/image_drift/test_role_shadows.py::test_stream_resolved_not_emitted PASSED [ 20%]\ntests/image_drift/test_role_shadows.py::test_dormant_findings_are_advisory PASSED [ 20%]\ntests/image_drift/test_role_shadows.py::test_live_findings_are_actionable PASSED [ 20%]\ntests/image_drift/test_role_unpinned.py::test_ciinternal_detected PASSED [ 21%]\ntests/image_drift/test_role_unpinned.py::test_widget_detected_with_release_key PASSED [ 21%]\ntests/image_drift/test_role_unpinned.py::test_adminer_not_emitted PASSED [ 21%]\ntests/image_drift/test_role_unpinned.py::test_stream_resolved_not_emitted PASSED [ 21%]\ntests/image_drift/test_role_unpinned.py::test_allowlist_marks_ciinternal_allowlisted PASSED [ 21%]\ntests/image_drift/test_rolling_pin.py::test_rolling_pins_flagged PASSED  [ 21%]\ntests/image_drift/test_rolling_pin.py::test_concrete_pin_not_flagged PASSED [ 21%]\ntests/image_drift/test_rolling_pin.py::test_odd_but_pinned_not_flagged PASSED [ 21%]\ntests/image_drift/test_rolling_pin.py::test_top_level_key_ignored PASSED [ 22%]\ntests/image_drift/test_rolling_pin.py::test_entry_fields PASSED          [ 22%]\ntests/image_drift/test_rolling_pin.py::test_allowlist_marks_entry PASSED [ 22%]\ntests/image_drift/test_source_list_tree.py::test_list_tree_returns_nested_paths PASSED [ 22%]\ntests/image_drift/test_source_list_tree.py::test_list_tree_absent_raises_by_default PASSED [ 22%]\ntests/image_drift/test_source_list_tree.py::test_list_tree_absent_missing_ok_returns_empty PASSED [ 22%]\ntests/kolla_drift/test_archive.py::test_repo_slug_and_archive_url PASSED [ 22%]\ntests/kolla_drift/test_archive.py::test_snapshot_dir_fetches_extracts_and_serves PASSED [ 23%]\ntests/kolla_drift/test_archive.py::test_snapshot_dir_memoizes_one_http_call PASSED [ 23%]\ntests/kolla_drift/test_archive.py::test_snapshot_dir_404_raises PASSED   [ 23%]\ntests/kolla_drift/test_archive.py::test_fetch_retries_once_then_succeeds PASSED [ 23%]\ntests/kolla_drift/test_archive.py::test_fetch_fails_twice_raises PASSED  [ 23%]\ntests/kolla_drift/test_archive.py::test_unsafe_traversal_member_rejected PASSED [ 23%]\ntests/kolla_drift/test_archive.py::test_absolute_symlink_member_rejected_on_fallback PASSED [ 23%]\ntests/kolla_drift/test_archive.py::test_safe_relative_symlink_extracted_on_fallback PASSED [ 23%]\ntests/kolla_drift/test_config.py::test_load_minimal_config PASSED        [ 24%]\ntests/kolla_drift/test_config.py::test_osism_root_and_paths_are_unknown_keys PASSED [ 24%]\ntests/kolla_drift/test_config.py::test_unknown_top_level_key_errors PASSED [ 24%]\ntests/kolla_drift/test_config.py::test_allowlist_broad_match PASSED      [ 24%]\ntests/kolla_drift/test_config.py::test_apply_marks_matching_drift_allowlisted PASSED [ 24%]\ntests/kolla_drift/test_config.py::test_apply_returns_unmatched_drift_unchanged PASSED [ 24%]\ntests/kolla_drift/test_config.py::test_allowlist_narrow_by_alias PASSED  [ 24%]\ntests/kolla_drift/test_config.py::test_allowlist_very_narrow PASSED      [ 24%]\ntests/kolla_drift/test_config.py::test_allowlist_empty_reason_errors PASSED [ 25%]\ntests/kolla_drift/test_config.py::test_allowlist_no_file_returns_empty PASSED [ 25%]\ntests/kolla_drift/test_config.py::test_sources_parsed PASSED             [ 25%]\ntests/kolla_drift/test_config.py::test_default_owner_defaults_when_absent PASSED [ 25%]\ntests/kolla_drift/test_config.py::test_unknown_source_key_errors PASSED  [ 25%]\ntests/kolla_drift/test_config.py::test_stale_flags_unused_entry PASSED   [ 25%]\ntests/kolla_drift/test_config.py::test_stale_scoped_to_ran_plugins PASSED [ 25%]\ntests/kolla_drift/test_config.py::test_prefix_matches_service_and_subgroups PASSED [ 25%]\ntests/kolla_drift/test_config.py::test_prefix_does_not_match_adjacent_name PASSED [ 26%]\ntests/kolla_drift/test_config.py::test_exact_is_default_and_unchanged PASSED [ 26%]\ntests/kolla_drift/test_config.py::test_allowlist_unknown_match_value_errors PASSED [ 26%]\ntests/kolla_drift/test_config.py::test_allowlist_empty_image_errors PASSED [ 26%]\ntests/kolla_drift/test_config.py::test_prefix_entry_stale_when_no_match PASSED [ 26%]\ntests/kolla_drift/test_config.py::test_releases_and_release_refs_parse PASSED [ 26%]\ntests/kolla_drift/test_config.py::test_releases_default_empty PASSED     [ 26%]\ntests/kolla_drift/test_config.py::test_archive_and_snapshot_cache_defaults PASSED [ 26%]\ntests/kolla_drift/test_dir_helpers.py::test_dir_read_returns_bytes PASSED [ 27%]\ntests/kolla_drift/test_dir_helpers.py::test_dir_read_missing_raises_with_where PASSED [ 27%]\ntests/kolla_drift/test_dir_helpers.py::test_dir_read_optional_present PASSED [ 27%]\ntests/kolla_drift/test_dir_helpers.py::test_dir_read_optional_absent_returns_none PASSED [ 27%]\ntests/kolla_drift/test_dir_helpers.py::test_dir_list_tree_sorted_repo_relative PASSED [ 27%]\ntests/kolla_drift/test_dir_helpers.py::test_dir_list_tree_missing_raises PASSED [ 27%]\ntests/kolla_drift/test_dir_helpers.py::test_dir_list_tree_missing_ok_returns_empty PASSED [ 27%]\ntests/kolla_drift/test_dir_helpers.py::test_dir_list_returns_names PASSED [ 27%]\ntests/kolla_drift/test_dir_helpers.py::test_dir_list_dirs_only PASSED    [ 28%]\ntests/kolla_drift/test_dir_helpers.py::test_dir_list_missing_raises PASSED [ 28%]\ntests/kolla_drift/test_driver.py::test_local_only_run_refuses_a_plugin_that_must_reach_the_network PASSED [ 28%]\ntests/kolla_drift/test_driver.py::test_remote_fallback_permits_the_network_read PASSED [ 28%]\ntests/kolla_drift/test_driver.py::test_a_fully_remote_run_is_never_blocked PASSED [ 28%]\ntests/kolla_drift/test_driver.py::test_repo_only_plugins_are_not_blocked PASSED [ 28%]\ntests/kolla_drift/test_driver.py::test_every_offending_plugin_is_listed_at_once PASSED [ 28%]\ntests/kolla_drift/test_driver.py::test_network_plugin_in_a_local_only_run_exits_2 PASSED [ 28%]\ntests/kolla_drift/test_driver.py::test_base_dir_not_found_exits_2 PASSED [ 29%]\ntests/kolla_drift/test_driver_stale.py::test_stale_entry_forces_exit_1_and_is_reported PASSED [ 29%]\ntests/kolla_drift/test_driver_stale.py::test_no_allowlist_ignores_invalid_file PASSED [ 29%]\ntests/kolla_drift/test_enablement.py::test_canon_normalizes_hyphen_to_underscore PASSED [ 29%]\ntests/kolla_drift/test_enablement.py::test_parse_enable_flags_strips_prefix PASSED [ 29%]\ntests/kolla_drift/test_enablement.py::test_truthy_enables_literal_only_and_canon PASSED [ 29%]\ntests/kolla_drift/test_enablement.py::test_parse_build_set_unions_both_blocks_canon PASSED [ 29%]\ntests/kolla_drift/test_enablement.py::test_release_range_derives_from_file_set PASSED [ 29%]\ntests/kolla_drift/test_enablement.py::test_release_range_override_wins PASSED [ 30%]\ntests/kolla_drift/test_enablement.py::test_upstream_enable_keys_monolithic PASSED [ 30%]\ntests/kolla_drift/test_enablement.py::test_upstream_enable_keys_split_dir PASSED [ 30%]\ntests/kolla_drift/test_enablement.py::test_upstream_groupvars_keys_monolithic PASSED [ 30%]\ntests/kolla_drift/test_enablement.py::test_upstream_groupvars_keys_split_dir PASSED [ 30%]\ntests/kolla_drift/test_enablement.py::test_osism_groupvars_keys_merges_defaults_and_versions_template PASSED [ 30%]\ntests/kolla_drift/test_enablement.py::test_osism_groupvars_keys_counts_overlays PASSED [ 30%]\ntests/kolla_drift/test_enablement.py::test_osism_enable_flags_merges_across_all_files PASSED [ 30%]\ntests/kolla_drift/test_enablement.py::test_osism_enable_ids_truthy PASSED [ 31%]\ntests/kolla_drift/test_enablement.py::test_osism_enable_ids_explicit_includes_all_keys PASSED [ 31%]\ntests/kolla_drift/test_enablement.py::test_osism_enable_ids_unknown_scope_raises PASSED [ 31%]\ntests/kolla_drift/test_enablement.py::test_groupvars_home_names_the_per_service_file PASSED [ 31%]\ntests/kolla_drift/test_enablement.py::test_groupvars_home_falls_back_to_the_layer_without_homes PASSED [ 31%]\ntests/kolla_drift/test_enablement.py::test_groupvars_home_dropped_key_ignores_homes PASSED [ 31%]\ntests/kolla_drift/test_enablement.py::test_groupvars_home_in_newest_keys PASSED [ 31%]\ntests/kolla_drift/test_enablement.py::test_groupvars_home_dropped_only PASSED [ 31%]\ntests/kolla_drift/test_enablement.py::test_groupvars_home_newest_wins_over_dropped PASSED [ 32%]\ntests/kolla_drift/test_enablement.py::test_groupvars_home_neither_returns_none PASSED [ 32%]\ntests/kolla_drift/test_enablement.py::test_in_mirror_layer PASSED        [ 32%]\ntests/kolla_drift/test_enablement.py::test_upstream_role_default_keys_all_top_level_keys PASSED [ 32%]\ntests/kolla_drift/test_enablement.py::test_upstream_role_default_keys_role_without_defaults_skipped PASSED [ 32%]\ntests/kolla_drift/test_enablement.py::test_upstream_image_tag_keys_collects_both_suffixes PASSED [ 32%]\ntests/kolla_drift/test_enablement.py::test_upstream_homes_names_the_lexically_last_file PASSED [ 32%]\ntests/kolla_drift/test_enablement.py::test_upstream_groupvars_are_read_once_per_ref PASSED [ 32%]\ntests/kolla_drift/test_enablement_source_refs.py::test_parse_source_refs_returns_openstack_project_refs PASSED [ 33%]\ntests/kolla_drift/test_enablement_source_refs.py::test_parse_source_refs_preserves_hyphenated_project_names PASSED [ 33%]\ntests/kolla_drift/test_enablement_source_refs.py::test_parse_source_refs_keeps_valueless_entries PASSED [ 33%]\ntests/kolla_drift/test_enablement_source_refs.py::test_parse_source_refs_empty_when_block_absent PASSED [ 33%]\ntests/kolla_drift/test_enablement_values.py::test_groupvars_values_merges_and_parses PASSED [ 33%]\ntests/kolla_drift/test_enablement_values.py::test_groupvars_values_skips_non_mapping_and_empty PASSED [ 33%]\ntests/kolla_drift/test_enablement_values.py::test_osism_mirror_values_reads_only_001 PASSED [ 33%]\ntests/kolla_drift/test_enablement_values.py::test_mirror_values_merges_the_whole_001_layer PASSED [ 34%]\ntests/kolla_drift/test_enablement_values.py::test_supply_excluding_mirror_excludes_every_layer_file PASSED [ 34%]\ntests/kolla_drift/test_enablement_version_gates.py::test_parses_a_gate_into_its_listed_releases PASSED [ 34%]\ntests/kolla_drift/test_enablement_version_gates.py::test_parses_the_not_in_form_the_same_way PASSED [ 34%]\ntests/kolla_drift/test_enablement_version_gates.py::test_parses_a_named_release_literal PASSED [ 34%]\ntests/kolla_drift/test_enablement_version_gates.py::test_ignores_the_rest_of_the_expression PASSED [ 34%]\ntests/kolla_drift/test_enablement_version_gates.py::test_finds_a_gate_nested_inside_a_structured_value PASSED [ 34%]\ntests/kolla_drift/test_enablement_version_gates.py::test_var_without_a_gate_is_absent PASSED [ 34%]\ntests/kolla_drift/test_enablement_version_gates.py::test_deduplicates_repeated_literals_preserving_order PASSED [ 35%]\ntests/kolla_drift/test_enablement_version_gates.py::test_empty_and_non_mapping_documents_yield_nothing PASSED [ 35%]\ntests/kolla_drift/test_enablement_version_gates.py::test_per_release_file_round_trips PASSED [ 35%]\ntests/kolla_drift/test_enablement_version_gates.py::test_per_release_file_target_rejects_other_files PASSED [ 35%]\ntests/kolla_drift/test_http_head.py::test_head_returns_the_response_for_a_published_artifact PASSED [ 35%]\ntests/kolla_drift/test_http_head.py::test_head_returns_a_whitelisted_status_without_raising PASSED [ 35%]\ntests/kolla_drift/test_http_head.py::test_head_raises_on_a_status_that_is_not_whitelisted PASSED [ 35%]\ntests/kolla_drift/test_http_head.py::test_head_raises_on_server_error_even_when_404_is_whitelisted PASSED [ 35%]\ntests/kolla_drift/test_http_head.py::test_head_raises_on_rate_limit_even_when_404_is_whitelisted PASSED [ 36%]\ntests/kolla_drift/test_http_head.py::test_head_raises_source_error_on_transport_failure PASSED [ 36%]\ntests/kolla_drift/test_http_head.py::test_head_reports_the_status_on_the_error PASSED [ 36%]\ntests/kolla_drift/test_http_head.py::test_head_leaves_the_status_unset_for_a_transport_failure PASSED [ 36%]\ntests/kolla_drift/test_http_head.py::test_head_retries_a_transient_status_and_returns_the_recovered_response PASSED [ 36%]\ntests/kolla_drift/test_http_head.py::test_head_retries_a_transport_failure PASSED [ 36%]\ntests/kolla_drift/test_http_head.py::test_head_still_raises_when_the_host_keeps_refusing PASSED [ 36%]\ntests/kolla_drift/test_http_head.py::test_head_does_not_retry_a_settled_answer PASSED [ 36%]\ntests/kolla_drift/test_http_head.py::test_head_does_not_retry_a_whitelisted_status PASSED [ 37%]\ntests/kolla_drift/test_http_head.py::test_head_backs_off_between_attempts PASSED [ 37%]\ntests/kolla_drift/test_http_head.py::test_a_non_github_throttle_does_not_blame_github PASSED [ 37%]\ntests/kolla_drift/test_http_head.py::test_a_non_github_throttle_echoes_retry_after_when_offered PASSED [ 37%]\ntests/kolla_drift/test_http_head.py::test_a_github_throttle_still_gets_the_github_hint PASSED [ 37%]\ntests/kolla_drift/test_inventory_sections.py::test_returns_groups_with_sorted_members PASSED [ 37%]\ntests/kolla_drift/test_inventory_sections.py::test_empty_group_has_no_members PASSED [ 37%]\ntests/kolla_drift/test_inventory_sections.py::test_duplicate_member_in_group_does_not_raise PASSED [ 37%]\ntests/kolla_drift/test_kolla_docker.py::test_normalises_hyphen_to_underscore PASSED [ 38%]\ntests/kolla_drift/test_kolla_docker.py::test_empty PASSED                [ 38%]\ntests/kolla_drift/test_kolla_enablement_build.py::test_flags_enabled_buildable_not_built PASSED [ 38%]\ntests/kolla_drift/test_kolla_enablement_build.py::test_reads_enable_flags_split_across_files PASSED [ 38%]\ntests/kolla_drift/test_kolla_enablement_build.py::test_allowlist_marks_allowlisted PASSED [ 38%]\ntests/kolla_drift/test_kolla_enablement_orphan.py::test_truthy_scope_flags_absent_truthy_services PASSED [ 38%]\ntests/kolla_drift/test_kolla_enablement_orphan.py::test_explicit_scope_also_flags_dead_no_flags PASSED [ 38%]\ntests/kolla_drift/test_kolla_enablement_orphan.py::test_present_upstream_is_not_orphan PASSED [ 38%]\ntests/kolla_drift/test_kolla_enablement_orphan.py::test_union_across_releases_not_intersection PASSED [ 39%]\ntests/kolla_drift/test_kolla_enablement_orphan.py::test_allowlist_marks_allowlisted PASSED [ 39%]\ntests/kolla_drift/test_kolla_enablement_orphan.py::test_run_uses_explicit_default PASSED [ 39%]\ntests/kolla_drift/test_kolla_enablement_orphan.py::test_reads_enable_flags_split_across_files PASSED [ 39%]\ntests/kolla_drift/test_kolla_enablement_orphan.py::test_empty_release_range_raises PASSED [ 39%]\ntests/kolla_drift/test_kolla_groupvars_missing.py::test_flags_upstream_key_missing_from_osism PASSED [ 39%]\ntests/kolla_drift/test_kolla_groupvars_missing.py::test_present_in_osism_is_not_missing PASSED [ 39%]\ntests/kolla_drift/test_kolla_groupvars_missing.py::test_osism_key_in_any_file_suppresses PASSED [ 39%]\ntests/kolla_drift/test_kolla_groupvars_missing.py::test_versions_template_supplied_key_not_flagged PASSED [ 40%]\ntests/kolla_drift/test_kolla_groupvars_missing.py::test_overlay_supplied_key_not_flagged PASSED [ 40%]\ntests/kolla_drift/test_kolla_groupvars_missing.py::test_union_across_releases_not_intersection PASSED [ 40%]\ntests/kolla_drift/test_kolla_groupvars_missing.py::test_allowlist_marks_allowlisted PASSED [ 40%]\ntests/kolla_drift/test_kolla_groupvars_missing.py::test_empty_release_range_raises PASSED [ 40%]\ntests/kolla_drift/test_kolla_groupvars_missing.py::test_missing_key_at_newest_routes_to_001 PASSED [ 40%]\ntests/kolla_drift/test_kolla_groupvars_missing.py::test_missing_key_dropped_by_newest_routes_to_010 PASSED [ 40%]\ntests/kolla_drift/test_kolla_groupvars_missing.py::test_missing_key_names_its_per_service_file PASSED [ 40%]\ntests/kolla_drift/test_kolla_groupvars_missing.py::test_two_keys_with_different_homes_have_distinct_remediations PASSED [ 41%]\ntests/kolla_drift/test_kolla_image_orphan.py::test_flags_removed_service_image_and_tag PASSED [ 41%]\ntests/kolla_drift/test_kolla_image_orphan.py::test_present_service_not_flagged PASSED [ 41%]\ntests/kolla_drift/test_kolla_image_orphan.py::test_union_across_releases_not_intersection PASSED [ 41%]\ntests/kolla_drift/test_kolla_image_orphan.py::test_allowlist_marks_osism_built PASSED [ 41%]\ntests/kolla_drift/test_kolla_image_orphan.py::test_ceph_catalogue_ignored PASSED [ 41%]\ntests/kolla_drift/test_kolla_image_orphan.py::test_empty_upstream_union_raises PASSED [ 41%]\ntests/kolla_drift/test_kolla_image_orphan.py::test_empty_catalogue_match_raises PASSED [ 41%]\ntests/kolla_drift/test_kolla_inventory.py::test_flags_upstream_only_groups_across_the_release_range PASSED [ 42%]\ntests/kolla_drift/test_kolla_inventory.py::test_entry_names_only_the_releases_that_want_the_group PASSED [ 42%]\ntests/kolla_drift/test_kolla_inventory.py::test_group_renamed_upstream_is_flagged_at_the_release_that_renamed_it PASSED [ 42%]\ntests/kolla_drift/test_kolla_inventory.py::test_members_come_from_the_last_release_that_wants_the_group PASSED [ 42%]\ntests/kolla_drift/test_kolla_inventory.py::test_red_entry_carries_members PASSED [ 42%]\ntests/kolla_drift/test_kolla_inventory.py::test_exact_and_prefix_allowlist_match PASSED [ 42%]\ntests/kolla_drift/test_kolla_inventory.py::test_empty_release_range_raises PASSED [ 42%]\ntests/kolla_drift/test_kolla_inventory.py::test_declares_the_release_repo_it_reads PASSED [ 42%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_clean_mirror_no_drift PASSED [ 43%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_value_diff_flagged PASSED [ 43%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_missing_from_mirror_flagged PASSED [ 43%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_dropped_key_routed_to_010 PASSED [ 43%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_dup_key_delete PASSED [ 43%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_invented_key PASSED [ 43%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_typo_mirrored_not_flagged PASSED [ 43%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_newest_selected_by_sort PASSED [ 43%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_dropped_key_classified_with_out_of_order_releases PASSED [ 44%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_allowlist_marks_entry PASSED [ 44%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_empty_release_range_raises PASSED [ 44%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_layer_split_across_files_is_a_clean_mirror PASSED [ 44%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_layer_later_file_wins_on_duplicate_key PASSED [ 44%]\ntests/kolla_drift/test_kolla_mirror_verbatim.py::test_missing_upstream_key_names_its_per_service_file PASSED [ 44%]\ntests/kolla_drift/test_kolla_orphan_config.py::test_flags_dead_service_companion_vars PASSED [ 44%]\ntests/kolla_drift/test_kolla_orphan_config.py::test_found_src_points_to_each_file PASSED [ 45%]\ntests/kolla_drift/test_kolla_orphan_config.py::test_no_dead_services_returns_empty PASSED [ 45%]\ntests/kolla_drift/test_kolla_orphan_config.py::test_respects_orphan_allowlist PASSED [ 45%]\ntests/kolla_drift/test_kolla_orphan_config.py::test_own_allowlist_marks_allowlisted PASSED [ 45%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_reports_retired_patch_orphan PASSED [ 45%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_disabled_patch_at_newest_is_consumer PASSED [ 45%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_live_patch_at_newest_not_reported PASSED [ 45%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_defined_upstream_in_groupvars_not_reported PASSED [ 45%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_defined_upstream_in_role_default_only_not_reported PASSED [ 46%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_defined_upstream_at_older_release_only_not_reported PASSED [ 46%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_mentioned_upstream_but_not_defined_is_reported PASSED [ 46%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_owned_by_dead_non_allowlisted_service_not_reported PASSED [ 46%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_owned_by_dead_allowlisted_service_is_reported PASSED [ 46%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_never_consumed_by_patch_not_reported PASSED [ 46%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_substring_safety PASSED [ 46%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_allowlist_applies PASSED [ 46%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_advisory_severity PASSED [ 47%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_fail_closed_empty_release_range PASSED [ 47%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_fail_closed_empty_kolla_yml PASSED [ 47%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_fail_closed_newest_patches_missing PASSED [ 47%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_fail_closed_newest_patches_empty PASSED [ 47%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_unreadable_newest_patch_raises PASSED [ 47%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_unreadable_older_patch_raises PASSED [ 47%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_missing_older_patches_dir_is_not_error PASSED [ 47%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_retired_while_applied_uses_behaviour_change_block PASSED [ 48%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_retired_while_parked_uses_cleanup_block PASSED [ 48%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_applied_file_wins_over_disabled_at_same_release PASSED [ 48%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_two_blocks_report_separately PASSED [ 48%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_found_carries_per_release_state PASSED [ 48%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_missing_older_patch_dir_renders_as_absent PASSED [ 48%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_non_contiguous_live_range PASSED [ 48%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_live_range_named_in_fix PASSED [ 48%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_gate_boundary_is_release_after_newest_live PASSED [ 49%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_non_contiguous_gate_boundary PASSED [ 49%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_no_live_release_asks_for_removal PASSED [ 49%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_applied_block_keeps_and_does_not_order_a_gate PASSED [ 49%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_keep_branch_close_does_not_claim_removal_is_the_only_exit PASSED [ 49%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_gated_definition_still_reported PASSED [ 49%]\ntests/kolla_drift/test_kolla_retired_patch_orphan.py::test_same_range_groups_one_block_different_ranges_split PASSED [ 49%]\ntests/kolla_drift/test_kolla_secrets_orphan.py::test_flags_orphan_secrets_per_release PASSED [ 49%]\ntests/kolla_drift/test_kolla_secrets_orphan.py::test_present_secret_is_not_orphan PASSED [ 50%]\ntests/kolla_drift/test_kolla_secrets_orphan.py::test_allowlist_marks_allowlisted PASSED [ 50%]\ntests/kolla_drift/test_kolla_secrets_orphan.py::test_missing_template_skips_release PASSED [ 50%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_flags_ref_when_a_later_phase_tarball_is_published PASSED [ 50%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_silent_when_no_later_phase_is_published PASSED [ 50%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_silent_when_already_on_the_latest_published_phase PASSED [ 50%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_does_not_probe_or_flag_the_configured_phase_itself PASSED [ 50%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_probes_only_the_phases_opendev_publishes_a_tarball_for PASSED [ 50%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_a_release_already_moved_costs_no_probes PASSED [ 51%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_later_phases_are_only_those_after_the_configured_one PASSED [ 51%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_skips_ref_that_does_not_name_the_release PASSED [ 51%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_skips_valueless_ref PASSED [ 51%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_preserves_hyphenated_project_names PASSED [ 51%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_inconclusive_probe_is_reported_unresolved_not_clean PASSED [ 51%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_inconclusive_probe_does_not_also_yield_a_stale_finding PASSED [ 51%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_one_inconclusive_project_does_not_hide_the_others PASSED [ 51%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_probe_inconclusive_is_a_source_error PASSED [ 52%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_tarball_exists_true_for_a_published_artifact PASSED [ 52%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_tarball_exists_false_when_absent PASSED [ 52%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_tarball_exists_raises_instead_of_reporting_absent_on_outage PASSED [ 52%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_tarball_exists_classifies_a_transport_failure PASSED [ 52%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_declares_the_host_no_base_dir_can_serve PASSED [ 52%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_report_names_the_target_phase_and_the_file_to_edit PASSED [ 52%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_report_does_not_offer_a_phase_that_has_no_tarball PASSED [ 52%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_projects_moving_to_the_same_phase_share_one_report_block PASSED [ 53%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_plugin_level_remediation_describes_the_rename_without_inventing_phases PASSED [ 53%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_unresolved_report_says_unknown_rather_than_clean PASSED [ 53%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_unresolved_refs_failing_alike_share_one_report_block PASSED [ 53%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_unresolved_and_stale_render_as_separate_blocks PASSED [ 53%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_unresolved_entry_is_actionable_so_the_run_exits_nonzero PASSED [ 53%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_run_reports_drift_read_from_the_release_manifest PASSED [ 53%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_run_reports_an_unverified_ref_when_the_probe_fails PASSED [ 53%]\ntests/kolla_drift/test_kolla_source_ref_phase.py::test_run_allowlists_an_unverified_ref_for_a_pinned_project PASSED [ 54%]\ntests/kolla_drift/test_kolla_version_chain_inner.py::test_flags_all_inert_keys PASSED [ 54%]\ntests/kolla_drift/test_kolla_version_chain_inner.py::test_enabled_and_buildable_key_is_an_add PASSED [ 54%]\ntests/kolla_drift/test_kolla_version_chain_inner.py::test_disabled_or_unbuildable_key_is_a_remove PASSED [ 54%]\ntests/kolla_drift/test_kolla_version_chain_inner.py::test_add_and_remove_render_as_separate_blocks PASSED [ 54%]\ntests/kolla_drift/test_kolla_version_chain_inner.py::test_hyphen_underscore_is_not_drift PASSED [ 54%]\ntests/kolla_drift/test_kolla_version_chain_inner.py::test_reads_enable_flags_split_across_files PASSED [ 54%]\ntests/kolla_drift/test_kolla_version_chain_inner.py::test_allowlist_marks_allowlisted PASSED [ 54%]\ntests/kolla_drift/test_kolla_version_chain_upstream.py::test_flags_services_without_template_key PASSED [ 55%]\ntests/kolla_drift/test_kolla_version_chain_upstream.py::test_expected_src_uses_configured_ref PASSED [ 55%]\ntests/kolla_drift/test_kolla_version_chain_upstream.py::test_present_service_not_flagged PASSED [ 55%]\ntests/kolla_drift/test_kolla_version_chain_upstream.py::test_allowlist_marks_allowlisted PASSED [ 55%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_flags_a_gate_naming_a_release_outside_the_supported_range PASSED [ 55%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_silent_when_every_named_release_is_supported PASSED [ 55%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_reports_only_the_dead_releases_of_a_mixed_gate PASSED [ 55%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_flags_a_not_in_gate_too PASSED [ 56%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_ignores_files_that_are_not_yaml PASSED [ 56%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_flags_a_per_release_file_for_a_retired_release PASSED [ 56%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_silent_for_a_per_release_file_of_a_supported_release PASSED [ 56%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_a_retired_per_release_file_can_also_carry_a_stale_gate PASSED [ 56%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_findings_are_advisory_so_the_nightly_job_stays_green PASSED [ 56%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_a_deliberate_gate_can_be_allowlisted PASSED [ 56%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_stale_releases_keeps_order_and_drops_supported PASSED [ 56%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_report_names_the_variable_the_release_and_the_file PASSED [ 57%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_gate_and_file_findings_render_as_separate_blocks PASSED [ 57%]\ntests/kolla_drift/test_kolla_version_gate_orphan.py::test_plugin_is_registered PASSED [ 57%]\ntests/kolla_drift/test_model.py::test_drift_entry_has_all_fields PASSED  [ 57%]\ntests/kolla_drift/test_model.py::test_drift_entry_to_dict_for_json PASSED [ 57%]\ntests/kolla_drift/test_model.py::test_default_severity_is_actionable PASSED [ 57%]\ntests/kolla_drift/test_model.py::test_as_allowlisted_preserves_severity PASSED [ 57%]\ntests/kolla_drift/test_plugin_registry.py::test_registry_is_a_list PASSED [ 57%]\ntests/kolla_drift/test_plugin_registry.py::test_each_plugin_has_required_metadata PASSED [ 58%]\ntests/kolla_drift/test_plugin_registry.py::test_kolla_inner_plugin_registered PASSED [ 58%]\ntests/kolla_drift/test_plugin_registry.py::test_kolla_upstream_plugin_registered PASSED [ 58%]\ntests/kolla_drift/test_plugin_registry.py::test_kolla_inventory_plugin_registered PASSED [ 58%]\ntests/kolla_drift/test_plugin_registry.py::test_kolla_enablement_build_plugin_registered PASSED [ 58%]\ntests/kolla_drift/test_plugin_registry.py::test_kolla_enablement_orphan_plugin_registered PASSED [ 58%]\ntests/kolla_drift/test_plugin_registry.py::test_kolla_secrets_orphan_plugin_registered PASSED [ 58%]\ntests/kolla_drift/test_plugin_registry.py::test_kolla_retired_patch_orphan_plugin_registered PASSED [ 58%]\ntests/kolla_drift/test_plugin_registry.py::test_kolla_orphan_config_plugin_registered PASSED [ 59%]\ntests/kolla_drift/test_plugin_registry.py::test_kolla_groupvars_missing_plugin_registered PASSED [ 59%]\ntests/kolla_drift/test_plugin_registry.py::test_every_plugin_has_summary_and_remediation PASSED [ 59%]\ntests/kolla_drift/test_plugin_registry.py::test_default_config_enables_every_registered_plugin PASSED [ 59%]\ntests/kolla_drift/test_plugin_registry.py::test_kolla_mirror_verbatim_plugin_registered PASSED [ 59%]\ntests/kolla_drift/test_plugin_registry.py::test_plugins_in_lifecycle_order PASSED [ 59%]\ntests/kolla_drift/test_plugin_registry.py::test_plugin_groups_match_registries_and_are_disjoint PASSED [ 59%]\ntests/kolla_drift/test_report.py::test_single_plugin_groups_sorts_and_renders PASSED [ 59%]\ntests/kolla_drift/test_report.py::test_orders_blocks_by_plugins_list PASSED [ 60%]\ntests/kolla_drift/test_report.py::test_build_style_splits_one_block_per_ref_pair PASSED [ 60%]\ntests/kolla_drift/test_report.py::test_allowlisted_excluded_from_blocks_and_count PASSED [ 60%]\ntests/kolla_drift/test_report.py::test_empty_returns_empty_list PASSED   [ 60%]\ntests/kolla_drift/test_report.py::test_entry_summary_remediation_override_plugin_default PASSED [ 60%]\ntests/kolla_drift/test_report.py::test_lists_image_not_alias PASSED      [ 60%]\ntests/kolla_drift/test_report.py::test_remediation_alone_splits_the_group PASSED [ 60%]\ntests/kolla_drift/test_sbom_map.py::test_extracts_keys PASSED            [ 60%]\ntests/kolla_drift/test_sbom_map.py::test_missing_map_raises PASSED       [ 61%]\ntests/kolla_drift/test_secrets_map.py::test_extracts_top_level_keys PASSED [ 61%]\ntests/kolla_drift/test_secrets_map.py::test_ignores_comments_indented_and_markers PASSED [ 61%]\ntests/kolla_drift/test_secrets_map.py::test_empty_input PASSED           [ 61%]\ntests/kolla_drift/test_source.py::test_read_local_working_tree_when_found PASSED [ 61%]\ntests/kolla_drift/test_source.py::test_read_not_found_in_base_dir_is_mode_b_error PASSED [ 61%]\ntests/kolla_drift/test_source.py::test_read_local_file_absent_is_error_not_remote PASSED [ 61%]\ntests/kolla_drift/test_source.py::test_read_remote_fallback_when_not_found PASSED [ 61%]\ntests/kolla_drift/test_source.py::test_read_no_base_dir_is_remote PASSED [ 62%]\ntests/kolla_drift/test_source.py::test_first_base_dir_with_the_repo_wins PASSED [ 62%]\ntests/kolla_drift/test_source.py::test_pinned_local_git_repo_reads_at_pin_ref PASSED [ 62%]\ntests/kolla_drift/test_source.py::test_pinned_non_git_dir_falls_back_to_remote PASSED [ 62%]\ntests/kolla_drift/test_source.py::test_pinned_non_git_dir_no_fallback_is_mode_b PASSED [ 62%]\ntests/kolla_drift/test_source.py::test_read_remote_404_errors PASSED     [ 62%]\ntests/kolla_drift/test_source.py::test_read_network_error PASSED         [ 62%]\ntests/kolla_drift/test_source.py::test_read_underscore_repo_translates_to_hyphen PASSED [ 62%]\ntests/kolla_drift/test_source.py::test_read_optional_present_local PASSED [ 63%]\ntests/kolla_drift/test_source.py::test_read_optional_missing_local_returns_none PASSED [ 63%]\ntests/kolla_drift/test_source.py::test_read_optional_404_returns_none PASSED [ 63%]\ntests/kolla_drift/test_source.py::test_read_optional_network_error_still_raises PASSED [ 63%]\ntests/kolla_drift/test_source.py::test_read_optional_underscore_repo_translates_to_hyphen PASSED [ 63%]\ntests/kolla_drift/test_source.py::test_list_dir_local PASSED             [ 63%]\ntests/kolla_drift/test_source.py::test_list_dir_remote PASSED            [ 63%]\ntests/kolla_drift/test_source.py::test_list_dir_remote_404_errors PASSED [ 63%]\ntests/kolla_drift/test_source.py::test_list_dir_remote_404_missing_ok_returns_empty PASSED [ 64%]\ntests/kolla_drift/test_source.py::test_list_dir_remote_rate_limit_missing_ok_still_raises PASSED [ 64%]\ntests/kolla_drift/test_source.py::test_list_dir_local_missing_ok_returns_empty PASSED [ 64%]\ntests/kolla_drift/test_source.py::test_list_dir_local_absent_raises_by_default PASSED [ 64%]\ntests/kolla_drift/test_source.py::test_list_dir_underscore_repo_translates_to_hyphen PASSED [ 64%]\ntests/kolla_drift/test_source.py::test_source_override_redirects_owner_and_ref PASSED [ 64%]\ntests/kolla_drift/test_source.py::test_list_dir_local_dirs_only_excludes_files PASSED [ 64%]\ntests/kolla_drift/test_source.py::test_list_dir_remote_dirs_only_filters_type PASSED [ 64%]\ntests/kolla_drift/test_source.py::test_list_dir_at_ref_uses_explicit_ref_and_owner PASSED [ 65%]\ntests/kolla_drift/test_source.py::test_list_dir_at_ref_404_raises PASSED [ 65%]\ntests/kolla_drift/test_source.py::test_list_dir_at_ref_404_missing_ok_returns_empty PASSED [ 65%]\ntests/kolla_drift/test_source.py::test_list_dir_at_ref_local_pinned_missing_ok_returns_empty PASSED [ 65%]\ntests/kolla_drift/test_source.py::test_release_to_ref_prefers_stable PASSED [ 65%]\ntests/kolla_drift/test_source.py::test_release_to_ref_falls_back_through_candidates PASSED [ 65%]\ntests/kolla_drift/test_source.py::test_release_to_ref_treats_422_as_absent PASSED [ 65%]\ntests/kolla_drift/test_source.py::test_release_to_ref_uses_eom_tag_last PASSED [ 65%]\ntests/kolla_drift/test_source.py::test_release_to_ref_none_raises PASSED [ 66%]\ntests/kolla_drift/test_source.py::test_release_to_ref_override_wins PASSED [ 66%]\ntests/kolla_drift/test_source.py::test_read_at_ref_returns_bytes_at_explicit_ref PASSED [ 66%]\ntests/kolla_drift/test_source.py::test_read_at_ref_optional_404_returns_none PASSED [ 66%]\ntests/kolla_drift/test_source.py::test_read_at_ref_404_raises_when_not_optional PASSED [ 66%]\ntests/kolla_drift/test_source.py::test_describe_resolution_local_and_remote PASSED [ 66%]\ntests/kolla_drift/test_source.py::test_describe_resolution_mode_b_raises PASSED [ 66%]\ntests/kolla_drift/test_source.py::test_describe_resolution_lists_all_missing PASSED [ 67%]\ntests/kolla_drift/test_source.py::test_git_show_multi_ref_from_one_clone PASSED [ 67%]\ntests/kolla_drift/test_source.py::test_git_show_optional_absent_path PASSED [ 67%]\ntests/kolla_drift/test_source.py::test_git_ls_tree_returns_basenames_and_dirs_only PASSED [ 67%]\ntests/kolla_drift/test_source.py::test_resolve_local_ref_finds_non_origin_remote PASSED [ 67%]\ntests/kolla_drift/test_source.py::test_git_show_unresolvable_ref_raises PASSED [ 67%]\ntests/kolla_drift/test_source.py::test_git_ref_exists PASSED             [ 67%]\ntests/kolla_drift/test_source.py::test_read_at_ref_local_git PASSED      [ 67%]\ntests/kolla_drift/test_source.py::test_describe_resolution_pinned_local_tag PASSED [ 68%]\ntests/kolla_drift/test_source.py::test_read_at_ref_unpinned_local_dir_is_remote PASSED [ 68%]\ntests/kolla_drift/test_source.py::test_release_to_ref_memoizes_probes PASSED [ 68%]\ntests/kolla_drift/test_source.py::test_read_remote_rate_limit_403_gives_helpful_error PASSED [ 68%]\ntests/kolla_drift/test_source.py::test_rate_limit_error_when_authenticated_omits_token_advice PASSED [ 68%]\ntests/kolla_drift/test_source.py::test_secondary_rate_limit_retry_after_gives_hint PASSED [ 68%]\ntests/kolla_drift/test_source.py::test_raw_cdn_429_without_headers_gives_raw_specific_hint PASSED [ 68%]\ntests/kolla_drift/test_source.py::test_plain_403_is_not_mistaken_for_rate_limiting PASSED [ 68%]\ntests/kolla_drift/test_source.py::test_non_github_host_does_not_get_the_github_hint PASSED [ 69%]\ntests/kolla_drift/test_source.py::test_non_github_host_echoes_retry_after_when_offered PASSED [ 69%]\ntests/kolla_drift/test_source.py::test_auth_headers_adds_bearer_for_github_host PASSED [ 69%]\ntests/kolla_drift/test_source.py::test_auth_headers_absent_when_no_token PASSED [ 69%]\ntests/kolla_drift/test_source.py::test_auth_headers_not_leaked_to_non_github_host PASSED [ 69%]\ntests/kolla_drift/test_source.py::test_get_sends_auth_header_to_github PASSED [ 69%]\ntests/kolla_drift/test_source.py::test_get_does_not_send_auth_to_non_github_mirror PASSED [ 69%]\ntests/kolla_drift/test_source.py::test_read_uses_archive_when_enabled PASSED [ 69%]\ntests/kolla_drift/test_source.py::test_archive_snapshot_shared_across_reads PASSED [ 70%]\ntests/kolla_drift/test_source.py::test_list_dir_uses_archive PASSED      [ 70%]\ntests/kolla_drift/test_source.py::test_list_tree_uses_archive PASSED     [ 70%]\ntests/kolla_drift/test_source.py::test_list_dir_at_ref_uses_archive PASSED [ 70%]\ntests/kolla_drift/test_source.py::test_read_at_ref_uses_archive PASSED   [ 70%]\ntests/kolla_drift/test_source.py::test_ref_exists_memoizes_probes PASSED [ 70%]\ntests/kolla_drift/test_source.py::test_ref_exists_memoizes_absence_too PASSED [ 70%]\ntests/kolla_drift/test_source.py::test_ref_exists_cache_is_per_ref PASSED [ 70%]\ntests/kolla_drift/test_versions_template.py::test_extracts_distinct_keys PASSED [ 71%]\ntests/kolla_drift/test_versions_template.py::test_empty_input PASSED     [ 71%]\ntests/mirror_sync/test_attribute.py::test_finds_the_commit_that_changed_the_key PASSED [ 71%]\ntests/mirror_sync/test_attribute.py::test_searches_both_old_and_new_homes PASSED [ 71%]\ntests/mirror_sync/test_attribute.py::test_a_missing_home_does_not_break_the_union PASSED [ 71%]\ntests/mirror_sync/test_attribute.py::test_key_is_regex_escaped PASSED    [ 71%]\ntests/mirror_sync/test_attribute.py::test_range_is_bounded_below PASSED  [ 71%]\ntests/mirror_sync/test_attribute.py::test_cap_is_globally_newest_first_across_homes PASSED [ 71%]\ntests/mirror_sync/test_attribute.py::test_a_commit_touching_both_homes_is_not_listed_twice PASSED [ 72%]\ntests/mirror_sync/test_attribute.py::test_a_git_failure_is_reported_not_silently_empty PASSED [ 72%]\ntests/mirror_sync/test_attribute.py::test_no_known_home_is_reported_not_silently_empty PASSED [ 72%]\ntests/mirror_sync/test_attribute.py::test_remote_only_run_skips_with_a_stated_reason PASSED [ 72%]\ntests/mirror_sync/test_attribute.py::test_missing_range_skips_with_a_stated_reason PASSED [ 72%]\ntests/mirror_sync/test_attribute.py::test_results_are_capped_and_say_so PASSED [ 72%]\ntests/mirror_sync/test_classify.py::test_quoted_no_vs_false_is_representation_not_semantic PASSED [ 72%]\ntests/mirror_sync/test_classify.py::test_yes_vs_true_is_representation PASSED [ 72%]\ntests/mirror_sync/test_classify.py::test_on_off_tokens_are_covered PASSED [ 73%]\ntests/mirror_sync/test_classify.py::test_token_match_is_case_insensitive PASSED [ 73%]\ntests/mirror_sync/test_classify.py::test_opposite_truth_values_are_semantic PASSED [ 73%]\ntests/mirror_sync/test_classify.py::test_a_non_boolish_string_is_not_representation PASSED [ 73%]\ntests/mirror_sync/test_classify.py::test_jinja_delimiter_whitespace_only_is_notation PASSED [ 73%]\ntests/mirror_sync/test_classify.py::test_whitespace_inside_a_jinja_expression_stays_semantic PASSED [ 73%]\ntests/mirror_sync/test_classify.py::test_a_changed_filter_argument_stays_semantic PASSED [ 73%]\ntests/mirror_sync/test_classify.py::test_overridden_requires_an_unconditional_later_layer PASSED [ 73%]\ntests/mirror_sync/test_classify.py::test_a_100_layer_counts_as_unconditional PASSED [ 74%]\ntests/mirror_sync/test_classify.py::test_a_010_layer_does_not_count PASSED [ 74%]\ntests/mirror_sync/test_classify.py::test_a_layer_sorting_before_the_mirror_does_not_count PASSED [ 74%]\ntests/mirror_sync/test_classify.py::test_release_conditional_override_is_not_overridden PASSED [ 74%]\ntests/mirror_sync/test_classify.py::test_a_release_gate_nested_in_a_mapping_is_not_overridden PASSED [ 74%]\ntests/mirror_sync/test_classify.py::test_a_release_gate_nested_in_a_list_is_not_overridden PASSED [ 74%]\ntests/mirror_sync/test_classify.py::test_a_release_gate_nested_two_levels_deep_is_not_overridden PASSED [ 74%]\ntests/mirror_sync/test_classify.py::test_a_plain_mapping_override_is_still_overridden PASSED [ 74%]\ntests/mirror_sync/test_classify.py::test_overlay_only_supply_is_not_overridden PASSED [ 75%]\ntests/mirror_sync/test_classify.py::test_versions_yml_is_the_named_exception PASSED [ 75%]\ntests/mirror_sync/test_classify.py::test_supply_info_reads_the_defaults_layers_with_last_wins PASSED [ 75%]\ntests/mirror_sync/test_classify.py::test_supply_info_includes_the_rendered_versions_layer PASSED [ 75%]\ntests/mirror_sync/test_cli.py::test_report_mode_also_requires_defaults_dir PASSED [ 75%]\ntests/mirror_sync/test_cli.py::test_the_same_key_under_two_dispositions_is_an_error PASSED [ 75%]\ntests/mirror_sync/test_cli.py::test_keep_is_decided_at_exit_not_entry PASSED [ 75%]\ntests/mirror_sync/test_cli.py::test_a_midwrite_failure_names_the_worktree_and_how_to_remove_it PASSED [ 75%]\ntests/mirror_sync/test_cli.py::test_a_failure_before_any_write_does_not_claim_a_partial_write PASSED [ 76%]\ntests/mirror_sync/test_cli.py::test_a_successful_apply_returns_zero_and_emits_one_json_document PASSED [ 76%]\ntests/mirror_sync/test_cli.py::test_a_refused_apply_reports_applied_false_not_null PASSED [ 76%]\ntests/mirror_sync/test_cli.py::test_a_report_run_reports_applied_null PASSED [ 76%]\ntests/mirror_sync/test_cli.py::test_worktree_failures_exit_3 PASSED      [ 76%]\ntests/mirror_sync/test_cli.py::test_arms_failures_exit_3 PASSED          [ 76%]\ntests/mirror_sync/test_cli.py::test_pins_from_conflicting_with_base_ref_is_an_error PASSED [ 76%]\ntests/mirror_sync/test_cli.py::test_the_report_file_is_written_by_default_and_named_in_the_output PASSED [ 76%]\ntests/mirror_sync/test_cli.py::test_report_file_honours_an_explicit_path PASSED [ 77%]\ntests/mirror_sync/test_cli.py::test_a_refused_apply_still_leaves_the_report_behind PASSED [ 77%]\ntests/mirror_sync/test_cli.py::test_json_names_the_report_file_so_a_consumer_can_find_it PASSED [ 77%]\ntests/mirror_sync/test_cli.py::test_commit_without_apply_is_refused PASSED [ 77%]\ntests/mirror_sync/test_cli.py::test_commit_branch_without_apply_is_refused_too PASSED [ 77%]\ntests/mirror_sync/test_cli.py::test_apply_reports_the_branch_and_commit_it_made PASSED [ 77%]\ntests/mirror_sync/test_commit.py::test_commit_branches_stages_and_returns_the_sha PASSED [ 77%]\ntests/mirror_sync/test_commit.py::test_commit_stages_a_deletion PASSED   [ 78%]\ntests/mirror_sync/test_commit.py::test_an_existing_branch_is_refused_not_moved PASSED [ 78%]\ntests/mirror_sync/test_commit.py::test_signoff_requires_an_identity PASSED [ 78%]\ntests/mirror_sync/test_commit.py::test_default_branch_is_named_for_the_target PASSED [ 78%]\ntests/mirror_sync/test_detail.py::test_multiline_value_is_written_with_real_newlines PASSED [ 78%]\ntests/mirror_sync/test_detail.py::test_quoting_is_preserved_for_short_values PASSED [ 78%]\ntests/mirror_sync/test_detail.py::test_each_class_carries_its_meaning PASSED [ 78%]\ntests/mirror_sync/test_detail.py::test_attribution_and_note_travel_with_the_row PASSED [ 78%]\ntests/mirror_sync/test_detail.py::test_header_names_the_base_ref_and_both_shas PASSED [ 79%]\ntests/mirror_sync/test_detail.py::test_files_and_keys_the_terminal_truncates_are_all_here PASSED [ 79%]\ntests/mirror_sync/test_detail.py::test_a_class_with_no_rows_gets_no_section PASSED [ 79%]\ntests/mirror_sync/test_effective.py::test_effective_range_stops_at_target PASSED [ 79%]\ntests/mirror_sync/test_effective.py::test_effective_range_rejects_unsupported_target PASSED [ 79%]\ntests/mirror_sync/test_effective.py::test_derive_sets_releases_override_and_fresh_caches PASSED [ 79%]\ntests/mirror_sync/test_effective.py::test_derive_prepends_the_worktree_parent_to_base_dirs PASSED [ 79%]\ntests/mirror_sync/test_effective.py::test_requested_shas_rejects_pin_and_pins_from_together PASSED [ 79%]\ntests/mirror_sync/test_effective.py::test_requested_shas_rejects_a_non_sha PASSED [ 80%]\ntests/mirror_sync/test_effective.py::test_requested_shas_applies_the_pin_only_to_the_target PASSED [ 80%]\ntests/mirror_sync/test_effective.py::test_check_pin_validates_against_the_real_tip_not_itself PASSED [ 80%]\ntests/mirror_sync/test_effective.py::test_check_pin_rejects_a_commit_before_the_branch_point PASSED [ 80%]\ntests/mirror_sync/test_effective.py::test_check_pin_rejects_a_pin_not_reachable_from_the_tip PASSED [ 80%]\ntests/mirror_sync/test_effective.py::test_check_pin_is_a_noop_when_nothing_was_overridden PASSED [ 80%]\ntests/mirror_sync/test_effective.py::test_validate_pins_payload_rejects_a_target_mismatch PASSED [ 80%]\ntests/mirror_sync/test_effective.py::test_validate_pins_payload_rejects_an_incomplete_release_set PASSED [ 80%]\ntests/mirror_sync/test_effective.py::test_validate_pins_payload_rejects_a_malformed_release_sha PASSED [ 81%]\ntests/mirror_sync/test_effective.py::test_validate_pins_payload_rejects_a_non_mapping_release_shas PASSED [ 81%]\ntests/mirror_sync/test_effective.py::test_validate_pins_payload_rejects_an_unknown_schema PASSED [ 81%]\ntests/mirror_sync/test_effective.py::test_validate_pins_payload_returns_the_map_and_base PASSED [ 81%]\ntests/mirror_sync/test_effective.py::test_resolve_tips_uses_release_to_ref_then_resolve_commit PASSED [ 81%]\ntests/mirror_sync/test_enablement_additions.py::test_mirror_prefix_is_public_and_matches_the_private_constant PASSED [ 81%]\ntests/mirror_sync/test_enablement_additions.py::test_upstream_groupvars_files_is_public PASSED [ 81%]\ntests/mirror_sync/test_gate.py::test_parses_the_canonical_shape PASSED   [ 81%]\ntests/mirror_sync/test_gate.py::test_declines_a_compound_condition PASSED [ 82%]\ntests/mirror_sync/test_gate.py::test_declines_a_nested_ternary PASSED    [ 82%]\ntests/mirror_sync/test_gate.py::test_declines_a_mixed_release_list PASSED [ 82%]\ntests/mirror_sync/test_gate.py::test_declines_an_unquoted_release PASSED [ 82%]\ntests/mirror_sync/test_gate.py::test_declines_an_empty_release_list PASSED [ 82%]\ntests/mirror_sync/test_gate.py::test_accepts_a_trailing_comma PASSED     [ 82%]\ntests/mirror_sync/test_gate.py::test_declines_a_variable_branch PASSED   [ 82%]\ntests/mirror_sync/test_gate.py::test_accepts_openstack_release_as_an_alias PASSED [ 82%]\ntests/mirror_sync/test_gate.py::test_check_retain_accepts_a_correct_gate PASSED [ 83%]\ntests/mirror_sync/test_gate.py::test_check_retain_rejects_a_reversed_gate PASSED [ 83%]\ntests/mirror_sync/test_gate.py::test_check_retain_rejects_a_wrong_release_list PASSED [ 83%]\ntests/mirror_sync/test_gate.py::test_check_retain_rejects_a_non_canonical_gate PASSED [ 83%]\ntests/mirror_sync/test_gate.py::test_check_retain_rejects_a_key_no_later_layer_supplies PASSED [ 83%]\ntests/mirror_sync/test_gate.py::test_check_retain_rejects_a_gate_in_the_010_layer PASSED [ 83%]\ntests/mirror_sync/test_gate.py::test_retain_unverified_is_rejected_for_a_canonical_gate PASSED [ 83%]\ntests/mirror_sync/test_gate.py::test_retain_unverified_is_rejected_when_no_gate_exists PASSED [ 83%]\ntests/mirror_sync/test_gate.py::test_retain_unverified_accepts_a_present_non_canonical_gate PASSED [ 84%]\ntests/mirror_sync/test_gate.py::test_an_unknown_disposition_key_is_an_error PASSED [ 84%]\ntests/mirror_sync/test_gate.py::test_a_failed_retention_check_propagates_rather_than_becoming_missing PASSED [ 84%]\ntests/mirror_sync/test_gate.py::test_missing_dispositions_only_lists_rows_with_no_flag PASSED [ 84%]\ntests/mirror_sync/test_gate.py::test_accept_upstream_is_noted PASSED     [ 84%]\ntests/mirror_sync/test_layers.py::test_mirror_layer_refuses_a_monolithic_upstream_layout PASSED [ 84%]\ntests/mirror_sync/test_layers.py::test_mirror_layer_refuses_an_empty_upstream_listing PASSED [ 84%]\ntests/mirror_sync/test_layers.py::test_every_arms_refusal_shares_one_base PASSED [ 84%]\ntests/mirror_sync/test_layers.py::test_mirror_layer_writes_prefixed_copies_and_deletes_orphans PASSED [ 85%]\ntests/mirror_sync/test_layers.py::test_mirror_layer_rejects_an_unsafe_upstream_name PASSED [ 85%]\ntests/mirror_sync/test_layers.py::test_mirror_homes_reads_the_tree_with_last_wins PASSED [ 85%]\ntests/mirror_sync/test_layers.py::test_compat_layer_emits_values_from_the_release_that_still_has_them PASSED [ 85%]\ntests/mirror_sync/test_layers.py::test_compat_layer_excludes_keys_another_osism_layer_supplies PASSED [ 85%]\ntests/mirror_sync/test_layers.py::test_compat_layer_excludes_keys_the_target_still_defines PASSED [ 85%]\ntests/mirror_sync/test_layers.py::test_compat_layer_raises_when_a_dropped_key_has_no_value PASSED [ 85%]\ntests/mirror_sync/test_layers.py::test_compat_layer_deletes_a_managed_file_with_no_desired_keys PASSED [ 85%]\ntests/mirror_sync/test_layers.py::test_report_mode_reports_an_unmarked_file_instead_of_refusing PASSED [ 86%]\ntests/mirror_sync/test_layers.py::test_compat_layer_refuses_an_unmarked_managed_file PASSED [ 86%]\ntests/mirror_sync/test_layers.py::test_compat_layer_refuses_to_delete_an_unmarked_file PASSED [ 86%]\ntests/mirror_sync/test_layers.py::test_require_owned_rejects_a_marker_used_inside_a_value PASSED [ 86%]\ntests/mirror_sync/test_layers.py::test_require_owned_rejects_a_marker_below_the_header PASSED [ 86%]\ntests/mirror_sync/test_layers.py::test_compat_layer_never_inspects_a_file_outside_the_range PASSED [ 86%]\ntests/mirror_sync/test_layers.py::test_compat_layer_ignores_releases_after_the_target PASSED [ 86%]\ntests/mirror_sync/test_layers.py::test_changed_and_created_compares_bytes_against_disk PASSED [ 86%]\ntests/mirror_sync/test_layers.py::test_changed_and_created_sees_a_content_change PASSED [ 87%]\ntests/mirror_sync/test_layers.py::test_generated_sequences_are_indented_for_yamllint PASSED [ 87%]\ntests/mirror_sync/test_layers.py::test_generated_values_match_the_upstream_quoting_style PASSED [ 87%]\ntests/mirror_sync/test_layers.py::test_mapping_keys_are_not_quoted PASSED [ 87%]\ntests/mirror_sync/test_layers.py::test_nested_keys_stay_bare_and_keep_upstream_order PASSED [ 87%]\ntests/mirror_sync/test_model.py::test_has_changes_is_false_when_every_write_is_unchanged PASSED [ 87%]\ntests/mirror_sync/test_model.py::test_has_changes_true_on_a_changed_write PASSED [ 87%]\ntests/mirror_sync/test_model.py::test_has_changes_true_on_a_mirror_delete_alone PASSED [ 87%]\ntests/mirror_sync/test_model.py::test_has_changes_true_on_a_compat_delete_alone PASSED [ 88%]\ntests/mirror_sync/test_model.py::test_semantic_keys_selects_only_semantic_rows_in_row_order PASSED [ 88%]\ntests/mirror_sync/test_model.py::test_plan_is_frozen PASSED              [ 88%]\ntests/mirror_sync/test_render.py::test_json_payload_is_deterministic_and_versioned PASSED [ 88%]\ntests/mirror_sync/test_render.py::test_json_payload_round_trips_through_the_pins_validator PASSED [ 88%]\ntests/mirror_sync/test_render.py::test_json_counts_each_class_separately PASSED [ 88%]\ntests/mirror_sync/test_render.py::test_text_labels_representation_and_shows_attribution PASSED [ 88%]\ntests/mirror_sync/test_render.py::test_text_offers_every_disposition_now_that_the_gate_exists PASSED [ 89%]\ntests/mirror_sync/test_render.py::test_text_lists_the_dispositions_that_were_applied PASSED [ 89%]\ntests/mirror_sync/test_render.py::test_text_distinguishes_no_rows_from_nothing_computed PASSED [ 89%]\ntests/mirror_sync/test_render.py::test_exit_code_2_when_a_blocker_exists_even_with_no_semantic_row PASSED [ 89%]\ntests/mirror_sync/test_render.py::test_text_names_the_blocker_and_how_to_clear_it PASSED [ 89%]\ntests/mirror_sync/test_render.py::test_exit_code_2_when_a_semantic_row_is_undispositioned PASSED [ 89%]\ntests/mirror_sync/test_render.py::test_exit_code_1_when_changes_are_planned_and_all_dispositioned PASSED [ 89%]\ntests/mirror_sync/test_render.py::test_exit_code_0_when_nothing_would_change PASSED [ 89%]\ntests/mirror_sync/test_render.py::test_exit_code_1_when_only_files_change_and_no_row_needs_review PASSED [ 90%]\ntests/mirror_sync/test_render.py::test_a_retain_flag_clears_a_row_now_that_it_is_validated_elsewhere PASSED [ 90%]\ntests/mirror_sync/test_render.py::test_acceptance_command_prepends_the_worktree_and_keeps_every_base_dir PASSED [ 90%]\ntests/mirror_sync/test_render.py::test_acceptance_command_works_for_a_remote_mode_run PASSED [ 90%]\ntests/mirror_sync/test_render.py::test_acceptance_command_quotes_paths_with_spaces PASSED [ 90%]\ntests/mirror_sync/test_render.py::test_acceptance_command_warns_when_the_derived_range_is_newer PASSED [ 90%]\ntests/mirror_sync/test_render.py::test_acceptance_command_has_no_caveat_when_the_target_is_newest PASSED [ 90%]\ntests/mirror_sync/test_render.py::test_text_summary_names_each_class_and_what_it_means PASSED [ 90%]\ntests/mirror_sync/test_render.py::test_text_inlines_a_short_value_but_elides_a_long_one PASSED [ 91%]\ntests/mirror_sync/test_render.py::test_text_truncates_a_long_name_list_to_a_sample_and_a_count PASSED [ 91%]\ntests/mirror_sync/test_render.py::test_text_groups_a_repeated_note_instead_of_repeating_it PASSED [ 91%]\ntests/mirror_sync/test_render.py::test_text_header_names_the_base_ref_alongside_its_sha PASSED [ 91%]\ntests/mirror_sync/test_render.py::test_text_states_the_exit_code_and_where_the_full_values_are PASSED [ 91%]\ntests/mirror_sync/test_render.py::test_text_omits_the_exit_line_when_the_caller_has_no_code_yet PASSED [ 91%]\ntests/mirror_sync/test_render.py::test_shape_pluralises_a_single_entry_correctly PASSED [ 91%]\ntests/mirror_sync/test_render.py::test_a_back_compat_layer_says_whether_it_is_new_or_already_correct PASSED [ 91%]\ntests/mirror_sync/test_render.py::test_a_header_only_rewrite_says_so_instead_of_just_rewritten PASSED [ 92%]\ntests/mirror_sync/test_render.py::test_real_key_movement_is_reported_as_counts PASSED [ 92%]\ntests/mirror_sync/test_render.py::test_exit_0_after_an_apply_does_not_claim_there_was_nothing_to_do PASSED [ 92%]\ntests/mirror_sync/test_render.py::test_commit_summary_records_pins_and_dispositions PASSED [ 92%]\ntests/mirror_sync/test_render.py::test_commit_summary_wraps_at_72_for_a_commit_body PASSED [ 92%]\ntests/mirror_sync/test_source_commits.py::test_resolve_commit_local_peels_branch_to_sha PASSED [ 92%]\ntests/mirror_sync/test_source_commits.py::test_resolve_commit_local_accepts_a_sha PASSED [ 92%]\ntests/mirror_sync/test_source_commits.py::test_resolve_commit_prefers_a_remote_over_a_stale_local_branch PASSED [ 92%]\ntests/mirror_sync/test_source_commits.py::test_resolve_commit_falls_back_to_a_local_head PASSED [ 93%]\ntests/mirror_sync/test_source_commits.py::test_resolve_commit_unknown_ref_raises PASSED [ 93%]\ntests/mirror_sync/test_source_commits.py::test_is_ancestor_local PASSED  [ 93%]\ntests/mirror_sync/test_source_commits.py::test_is_ancestor_raises_on_a_missing_descendant PASSED [ 93%]\ntests/mirror_sync/test_source_commits.py::test_is_ancestor_raises_when_the_ancestor_object_is_absent PASSED [ 93%]\ntests/mirror_sync/test_source_commits.py::test_merge_base_local PASSED   [ 93%]\ntests/mirror_sync/test_source_commits.py::test_local_checkout_returns_none_when_remote PASSED [ 93%]\ntests/mirror_sync/test_source_commits.py::test_local_checkout_returns_the_dir_when_local PASSED [ 93%]\ntests/mirror_sync/test_source_commits.py::test_resolve_commit_remote_reads_sha_from_commits_api PASSED [ 94%]\ntests/mirror_sync/test_source_commits.py::test_resolve_commit_rejects_a_non_sha_from_the_api PASSED [ 94%]\ntests/mirror_sync/test_source_commits.py::test_is_ancestor_remote_uses_compare_status PASSED [ 94%]\ntests/mirror_sync/test_source_commits.py::test_merge_base_remote_reads_compare_payload PASSED [ 94%]\ntests/mirror_sync/test_worktree.py::test_default_path_leaf_is_named_defaults PASSED [ 94%]\ntests/mirror_sync/test_worktree.py::test_create_yields_a_clean_tree_and_the_base_commit PASSED [ 94%]\ntests/mirror_sync/test_worktree.py::test_create_refuses_an_existing_path PASSED [ 94%]\ntests/mirror_sync/test_worktree.py::test_uncommitted_operator_work_is_not_consulted PASSED [ 94%]\ntests/mirror_sync/test_worktree.py::test_create_removes_the_worktree_when_head_cannot_be_read PASSED [ 95%]\ntests/mirror_sync/test_worktree.py::test_session_removes_on_exit_by_default PASSED [ 95%]\ntests/mirror_sync/test_worktree.py::test_session_removes_on_exception_too PASSED [ 95%]\ntests/mirror_sync/test_worktree.py::test_session_keeps_when_asked PASSED [ 95%]\ntests/mirror_sync/test_worktree.py::test_session_raises_when_cleanup_fails PASSED [ 95%]\ntests/mirror_sync/test_worktree.py::test_cleanup_failure_does_not_mask_the_original_error PASSED [ 95%]\ntests/mirror_sync/test_worktree.py::test_every_failure_is_a_worktree_error PASSED [ 95%]\ntests/mirror_sync/test_write.py::test_writes_only_changed_paths PASSED   [ 95%]\ntests/mirror_sync/test_write.py::test_deletes_after_writing PASSED       [ 96%]\ntests/mirror_sync/test_write.py::test_a_missing_delete_target_is_not_an_error PASSED [ 96%]\ntests/mirror_sync/test_write.py::test_refuses_a_path_outside_the_all_directory PASSED [ 96%]\ntests/mirror_sync/test_write.py::test_refuses_when_the_all_directory_is_a_symlink PASSED [ 96%]\ntests/mirror_sync/test_write.py::test_refuses_a_symlinked_destination PASSED [ 96%]\ntests/mirror_sync/test_write.py::test_refuses_a_symlinked_delete_target PASSED [ 96%]\ntests/mirror_sync/test_write.py::test_refuses_a_traversal_that_stays_lexically_under_all PASSED [ 96%]\ntests/mirror_sync/test_write.py::test_refuses_an_absolute_path PASSED    [ 96%]\ntests/mirror_sync/test_write.py::test_refuses_when_the_plan_is_blocked PASSED [ 97%]\ntests/mirror_sync/test_write.py::test_signals_before_the_first_mutation PASSED [ 97%]\ntests/mirror_sync/test_write.py::test_a_preflight_failure_does_not_signal PASSED [ 97%]\ntests/mirror_sync/test_write.py::test_a_blocked_plan_does_not_signal PASSED [ 97%]\ntests/test_driver_groups.py::test_group_image_runs_only_image_plugins PASSED [ 97%]\ntests/test_driver_groups.py::test_group_kolla_runs_only_kolla_plugins PASSED [ 97%]\ntests/test_driver_groups.py::test_group_all_runs_both_groups PASSED      [ 97%]\ntests/test_driver_groups.py::test_archive_mode_preamble_not_misleading PASSED [ 97%]\ntests/test_driver_groups.py::test_use_raw_get_preamble_warns_slow PASSED [ 98%]\ntests/test_driver_groups.py::test_missing_group_errors PASSED            [ 98%]\ntests/test_driver_groups.py::test_demo_exits_0_without_reading_config_or_allowlist PASSED [ 98%]\ntests/test_driver_groups.py::test_demo_renders_every_real_plugin PASSED  [ 98%]\ntests/test_driver_groups.py::test_demo_json_emits_entries PASSED         [ 98%]\ntests/test_driver_groups.py::test_help_lists_plugin_groups PASSED        [ 98%]\ntests/test_release_notes_defaults.py::test_layer_is_sorted_and_filtered PASSED [ 98%]\ntests/test_release_notes_defaults.py::test_layer_omits_directories_and_keeps_only_blobs PASSED [ 98%]\ntests/test_release_notes_defaults.py::test_layer_none_on_http_error PASSED [ 99%]\ntests/test_release_notes_defaults.py::test_layer_none_on_truncated_tree PASSED [ 99%]\ntests/test_release_notes_defaults.py::test_layer_none_on_request_exception PASSED [ 99%]\ntests/test_release_notes_defaults.py::test_section_fetches_the_layer_before_099_and_names_the_layer_in_prose PASSED [ 99%]\ntests/test_release_notes_defaults.py::test_layer_empty_list_when_listing_succeeds_with_no_matches PASSED [ 99%]\ntests/test_release_notes_defaults.py::test_section_is_none_when_the_listing_fails_even_if_099_would_fetch PASSED [ 99%]\ntests/test_release_notes_defaults.py::test_section_is_none_when_the_listing_is_truncated PASSED [ 99%]\ntests/test_release_notes_defaults.py::test_section_is_none_when_one_mirror_file_fails_to_fetch PASSED [100%]\n\n======================== 789 passed, 2 skipped in 8.93s ========================\ndrift-test: 9689 I exit 0 (9.37 seconds) /home/zuul/src/github.com/osism/release> pytest tests/ -v pid=1797 [tox/execute/api.py:337]\n  drift-test: OK (9.42=setup[0.06]+cmd[9.37] seconds)\n  congratulations :) (9.45 seconds)",
                            "stdout_lines": [
                                "ROOT: 239 D setup logging to DEBUG on pid 1790 [tox/report.py:249]",
                                "drift-test: 273 D created app data folder /home/zuul/.cache/virtualenv [virtualenv/app_data/__init__.py:65]",
                                "drift-test: 276 I find interpreter for spec PythonSpec(major=3, free_threaded=False) [python_discovery/_discovery.py:131]",
                                "drift-test: 280 D got python info of /usr/bin/python3.11 from /home/zuul/.cache/virtualenv/py_info/5/ca3ed784184f1b3bb7c3539bfb45e71710cd27667424f92c2d5bb4df9c107c23.json [virtualenv/app_data/via_disk_folder.py:139]",
                                "drift-test: 281 D filesystem is case-sensitive [python_discovery/_compat.py:18]",
                                "drift-test: 281 I proposed PythonInfo(spec=CPython3.11.2.final.0-64-x86_64, system=/usr/bin/python3.11, exe=/home/zuul/.local/tox/bin/python3, platform=linux, version='3.11.2 (main, May 12 2026, 05:17:27) [GCC 12.2.0]', encoding_fs_io=utf-8-utf-8) [python_discovery/_discovery.py:140]",
                                "drift-test: 281 D accepted PythonInfo(spec=CPython3.11.2.final.0-64-x86_64, system=/usr/bin/python3.11, exe=/home/zuul/.local/tox/bin/python3, platform=linux, version='3.11.2 (main, May 12 2026, 05:17:27) [GCC 12.2.0]', encoding_fs_io=utf-8-utf-8) [python_discovery/_discovery.py:144]",
                                "drift-test: 283 D symlink on filesystem does work [virtualenv/info.py:51]",
                                "drift-test: 283 D filesystem is case-sensitive [virtualenv/info.py:28]",
                                "drift-test: 321 W commands[0]> pytest tests/ -v [tox/tox_env/api.py:507]",
                                "============================= test session starts ==============================",
                                "platform linux -- Python 3.11.2, pytest-9.1.1, pluggy-1.6.0 -- /home/zuul/src/github.com/osism/release/.tox/drift-test/bin/python",
                                "cachedir: .tox/drift-test/.pytest_cache",
                                "rootdir: /home/zuul/src/github.com/osism/release",
                                "collecting ... collected 791 items",
                                "",
                                "tests/catalog_drift/test_catalog_extract.py::test_collections_collect_nested_roles PASSED [  0%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_validators_default_the_playbook_name PASSED [  0%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_non_literal_map_role2role_raises PASSED [  0%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_missing_assignment_raises PASSED [  0%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_non_literal_validate_playbooks_raises PASSED [  0%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_role_with_non_literal_name_raises PASSED [  0%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_validator_entry_without_runtime_raises PASSED [  0%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_validate_playbooks_non_dict_literal_raises PASSED [  1%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_validator_entry_non_dict_raises PASSED [  1%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_non_literal_collection_key_raises PASSED [  1%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_collections_carry_release_bounds PASSED [  1%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_role_with_unknown_keyword_raises PASSED [  1%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_role_with_positional_bound_raises PASSED [  1%]",
                                "tests/catalog_drift/test_catalog_extract.py::test_role_with_non_literal_bound_raises PASSED [  1%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_release_differential_is_one_entry_per_collection PASSED [  1%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_dead_everywhere_gets_its_own_summary PASSED [  2%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_resolving_role_is_no_finding PASSED [  2%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_validator_finding_image_is_playbook_alias_is_key PASSED [  2%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_validator_checked_against_its_own_runtime PASSED [  2%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_duplicate_role_in_one_collection_is_one_finding PASSED [  2%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_allowlist_is_applied PASSED [  2%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_empty_release_range_raises PASSED [  2%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_bounded_role_is_not_checked_outside_its_bounds PASSED [  2%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_bounded_role_still_reports_inside_its_bounds PASSED [  3%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_bounded_role_reports_only_the_releases_it_is_deployed_on PASSED [  3%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_role_deployed_on_no_supported_release_is_a_finding PASSED [  3%]",
                                "tests/catalog_drift/test_catalog_role_missing.py::test_unparseable_release_bound_raises PASSED [  3%]",
                                "tests/catalog_drift/test_integration_real_repos.py::test_no_findings_below_the_differential SKIPPED [  3%]",
                                "tests/catalog_drift/test_integration_real_repos.py::test_redis_is_found_from_2025_2 SKIPPED [  3%]",
                                "tests/catalog_drift/test_playbooks_constants.py::test_load_const_reads_a_list PASSED [  3%]",
                                "tests/catalog_drift/test_playbooks_constants.py::test_load_const_reads_a_string PASSED [  3%]",
                                "tests/catalog_drift/test_playbooks_constants.py::test_load_const_missing_name_raises PASSED [  4%]",
                                "tests/catalog_drift/test_playbooks_constants.py::test_load_const_returns_last_assignment PASSED [  4%]",
                                "tests/catalog_drift/test_playbooks_constants.py::test_load_const_non_literal_raises PASSED [  4%]",
                                "tests/catalog_drift/test_playbooks_kolla.py::test_site_roles_minus_unsupported PASSED [  4%]",
                                "tests/catalog_drift/test_playbooks_kolla.py::test_release_specific_osism_playbooks PASSED [  4%]",
                                "tests/catalog_drift/test_playbooks_kolla.py::test_interface_applies_render_transform PASSED [  4%]",
                                "tests/catalog_drift/test_playbooks_kolla.py::test_kolla_host_and_post_deploy_collisions_are_dropped PASSED [  4%]",
                                "tests/catalog_drift/test_playbooks_kolla.py::test_mariadb_backup_recovery_get_hyphenated_aliases PASSED [  4%]",
                                "tests/catalog_drift/test_playbooks_kolla.py::test_release_without_override_dir_raises PASSED [  5%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_membership_and_provenance PASSED [  5%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_ceph_special_case PASSED [  5%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_ceph_special_case_absent_ceph_ceph PASSED [  5%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_prefixed_key_resolves_only_when_the_prefixed_name_is_itself_a_key PASSED [  5%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_bare_prefix_strip_does_not_reconstruct_a_bare_role PASSED [  5%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_unknown_role_does_not_resolve PASSED [  5%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_runtime_interface_merges_all_four_runtimes PASSED [  5%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_runtime_interface_is_memoized_on_config PASSED [  6%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_runtime_interface_cache_keyed_by_release PASSED [  6%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_validate_resolves_uses_the_named_runtime PASSED [  6%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_validate_resolves_ceph_ansible_branch PASSED [  6%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_validate_resolves_wrong_environment_does_not_resolve PASSED [  6%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_validate_resolves_osism_ansible_requires_an_environment PASSED [  6%]",
                                "tests/catalog_drift/test_playbooks_resolution.py::test_validate_resolves_unknown_runtime_raises PASSED [  6%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_osism_files_raises_on_bad_playbooks_version_pin PASSED [  6%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_osism_symlink_naming PASSED [  7%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_osism_underscore_guard_is_dead_code PASSED [  7%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_osism_interface_hides_and_keeps PASSED [  7%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_osism_interface_collision_last_prefix_wins PASSED [  7%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_osism_own_files_playbooks_copy_is_mirrored PASSED [  7%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_ceph_keeps_full_stem PASSED [  7%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_ceph_files_unions_flavour_and_toplevel PASSED [  7%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_ceph_upgrade_alias_always_created PASSED [  7%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_ceph_purge_survivors_only_the_osism_pair PASSED [  8%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_ceph_flavours_excludes_the_ceph_yml_alias PASSED [  8%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_ceph_files_skips_flavours_without_ceph_ansible PASSED [  8%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_ceph_mirrors_known_upstream_typos PASSED [  8%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_kubernetes_files_lists_prefixed PASSED [  8%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_kubernetes_strips_prefix PASSED [  8%]",
                                "tests/catalog_drift/test_playbooks_runtimes.py::test_playbook_files_dispatch PASSED [  8%]",
                                "tests/catalog_drift/test_plugin_registry.py::test_catalog_role_missing_plugin_registered PASSED [  8%]",
                                "tests/catalog_drift/test_plugin_registry.py::test_catalog_plugin_group_matches_registry PASSED [  9%]",
                                "tests/catalog_drift/test_plugin_registry.py::test_catalog_report_header_exists PASSED [  9%]",
                                "tests/catalog_drift/test_plugin_registry.py::test_catalog_role_missing_enabled_in_config PASSED [  9%]",
                                "tests/catalog_drift/test_plugin_registry.py::test_each_plugin_has_required_metadata PASSED [  9%]",
                                "tests/image_drift/test_demo.py::test_three_entries_per_plugin PASSED     [  9%]",
                                "tests/image_drift/test_demo.py::test_entries_carry_live_plugin_text PASSED [  9%]",
                                "tests/image_drift/test_demo.py::test_entries_are_actionable PASSED       [  9%]",
                                "tests/image_drift/test_demo.py::test_show_values_plugin_covers_both_render_branches PASSED [  9%]",
                                "tests/image_drift/test_demo.py::test_paths_reflect_plugin_input_files PASSED [ 10%]",
                                "tests/image_drift/test_driver.py::test_help_lists_plugins PASSED         [ 10%]",
                                "tests/image_drift/test_driver.py::test_default_run_exits_1_with_drifting_images PASSED [ 10%]",
                                "tests/image_drift/test_driver.py::test_allowlisted_osism_ansible_hidden_by_default PASSED [ 10%]",
                                "tests/image_drift/test_driver.py::test_no_allowlist_surfaces_osism_ansible PASSED [ 10%]",
                                "tests/image_drift/test_driver.py::test_format_json_keys PASSED           [ 10%]",
                                "tests/image_drift/test_driver.py::test_plugin_filter_runs_only_role_shadows PASSED [ 10%]",
                                "tests/image_drift/test_driver.py::test_summary_line_counts PASSED        [ 10%]",
                                "tests/image_drift/test_driver.py::test_advisory_only_exits_0 PASSED      [ 11%]",
                                "tests/image_drift/test_driver.py::test_advisory_finding_in_default_json PASSED [ 11%]",
                                "tests/image_drift/test_driver.py::test_missing_group_errors PASSED       [ 11%]",
                                "tests/image_drift/test_image_orphan.py::test_orphan_alias_detected PASSED [ 11%]",
                                "tests/image_drift/test_image_orphan.py::test_consumed_alias_not_detected PASSED [ 11%]",
                                "tests/image_drift/test_image_orphan.py::test_playbook_consumed_alias_not_detected PASSED [ 11%]",
                                "tests/image_drift/test_image_orphan.py::test_consumer_in_an_unfiltered_file_is_found PASSED [ 11%]",
                                "tests/image_drift/test_image_orphan.py::test_allowlist_suppresses_orphan PASSED [ 12%]",
                                "tests/image_drift/test_manager_parser.py::test_plain_value PASSED        [ 12%]",
                                "tests/image_drift/test_manager_parser.py::test_latest_override_pattern PASSED [ 12%]",
                                "tests/image_drift/test_manager_parser.py::test_unresolved_jinja_marked PASSED [ 12%]",
                                "tests/image_drift/test_manager_parser.py::test_multiple_entries PASSED   [ 12%]",
                                "tests/image_drift/test_manager_template_parser.py::test_basic_alias_extraction PASSED [ 12%]",
                                "tests/image_drift/test_manager_template_parser.py::test_jinja_escaped_lines_ignored PASSED [ 12%]",
                                "tests/image_drift/test_manager_template_parser.py::test_double_quoted_versions_key PASSED [ 12%]",
                                "tests/image_drift/test_manager_template_parser.py::test_lines_without_pattern_skipped PASSED [ 13%]",
                                "tests/image_drift/test_manager_template_parser.py::test_extract_stream_resolved_basic PASSED [ 13%]",
                                "tests/image_drift/test_manager_template_parser.py::test_extract_stream_resolved_multiple PASSED [ 13%]",
                                "tests/image_drift/test_override_template_parser.py::test_returns_tag_aliases_only PASSED [ 13%]",
                                "tests/image_drift/test_override_template_parser.py::test_ignores_image_lines PASSED [ 13%]",
                                "tests/image_drift/test_override_template_parser.py::test_empty_input PASSED [ 13%]",
                                "tests/image_drift/test_override_template_parser.py::test_comment_and_blank_lines_ignored PASSED [ 13%]",
                                "tests/image_drift/test_plugin_registry.py::test_image_plugins_registered PASSED [ 13%]",
                                "tests/image_drift/test_plugin_registry.py::test_image_plugin_group_matches_registry PASSED [ 14%]",
                                "tests/image_drift/test_plugin_registry.py::test_role_unpinned_enabled_in_config PASSED [ 14%]",
                                "tests/image_drift/test_plugin_registry.py::test_image_orphan_enabled_in_config PASSED [ 14%]",
                                "tests/image_drift/test_plugin_registry.py::test_role_registry_orphan_enabled_in_config PASSED [ 14%]",
                                "tests/image_drift/test_plugin_registry.py::test_rolling_pin_enabled_in_config PASSED [ 14%]",
                                "tests/image_drift/test_plugin_registry.py::test_each_plugin_has_required_metadata PASSED [ 14%]",
                                "tests/image_drift/test_release_parser.py::test_parse_release_returns_docker_images PASSED [ 14%]",
                                "tests/image_drift/test_release_parser.py::test_parse_release_missing_docker_images_errors PASSED [ 14%]",
                                "tests/image_drift/test_release_vs_manager.py::test_baseline_drift PASSED [ 15%]",
                                "tests/image_drift/test_release_vs_manager.py::test_allowlist_broad_suppresses_all_redis PASSED [ 15%]",
                                "tests/image_drift/test_release_vs_manager.py::test_allowlist_narrow_suppresses_one_alias_only PASSED [ 15%]",
                                "tests/image_drift/test_release_vs_manager.py::test_latest_override_emitted_with_found_latest PASSED [ 15%]",
                                "tests/image_drift/test_release_vs_manager.py::test_disabled_image_not_in_release_skipped PASSED [ 15%]",
                                "tests/image_drift/test_report.py::test_show_values_produces_two_blocks PASSED [ 15%]",
                                "tests/image_drift/test_report.py::test_show_values_live_block_collapses_file PASSED [ 15%]",
                                "tests/image_drift/test_report.py::test_show_values_dormant_block_collapses_two_files PASSED [ 15%]",
                                "tests/image_drift/test_report.py::test_show_values_refs_single_line_only PASSED [ 16%]",
                                "tests/image_drift/test_report.py::test_show_values_item_order_by_path_then_alias PASSED [ 16%]",
                                "tests/image_drift/test_report.py::test_show_values_fix_and_refs_present PASSED [ 16%]",
                                "tests/image_drift/test_report.py::test_show_values_empty_expected_renders_no_release_pin PASSED [ 16%]",
                                "tests/image_drift/test_report.py::test_show_values_empty_expected_refs_single_line PASSED [ 16%]",
                                "tests/image_drift/test_report.py::test_show_values_empty_expected_sorted_by_path_then_alias PASSED [ 16%]",
                                "tests/image_drift/test_report.py::test_show_values_nonempty_expected_still_uses_arrow PASSED [ 16%]",
                                "tests/image_drift/test_report.py::test_kolla_chain_inner_regression_two_blocks PASSED [ 16%]",
                                "tests/image_drift/test_role_defaults_parser.py::test_concrete_tag_extracted PASSED [ 17%]",
                                "tests/image_drift/test_role_defaults_parser.py::test_jinja_value_skipped PASSED [ 17%]",
                                "tests/image_drift/test_role_defaults_parser.py::test_multiple_aliases_in_one_role_file PASSED [ 17%]",
                                "tests/image_drift/test_role_defaults_parser.py::test_empty_or_malformed_returns_empty PASSED [ 17%]",
                                "tests/image_drift/test_role_defaults_parser.py::test_tag_indirected_through_own_version_resolved PASSED [ 17%]",
                                "tests/image_drift/test_role_defaults_parser.py::test_tag_indirected_through_own_version_non_string_pin PASSED [ 17%]",
                                "tests/image_drift/test_role_defaults_parser.py::test_tag_indirection_whitespace_insensitive PASSED [ 17%]",
                                "tests/image_drift/test_role_defaults_parser.py::test_tag_indirection_skipped_when_version_non_concrete PASSED [ 17%]",
                                "tests/image_drift/test_role_defaults_parser.py::test_tag_indirection_skipped_when_version_missing PASSED [ 18%]",
                                "tests/image_drift/test_role_defaults_parser.py::test_tag_referencing_other_var_skipped PASSED [ 18%]",
                                "tests/image_drift/test_role_defaults_parser.py::test_composed_tag_left_for_later_pass PASSED [ 18%]",
                                "tests/image_drift/test_role_registry_orphan.py::test_unreferenced_registry_var_detected PASSED [ 18%]",
                                "tests/image_drift/test_role_registry_orphan.py::test_own_definition_line_is_not_a_consumer PASSED [ 18%]",
                                "tests/image_drift/test_role_registry_orphan.py::test_reference_in_same_role_not_detected PASSED [ 18%]",
                                "tests/image_drift/test_role_registry_orphan.py::test_reference_from_another_role_not_detected PASSED [ 18%]",
                                "tests/image_drift/test_role_registry_orphan.py::test_bare_jinja_statement_reference_counts_as_consumer PASSED [ 18%]",
                                "tests/image_drift/test_role_registry_orphan.py::test_longer_name_does_not_mask_its_prefix PASSED [ 19%]",
                                "tests/image_drift/test_role_registry_orphan.py::test_playbook_reference_not_detected PASSED [ 19%]",
                                "tests/image_drift/test_role_registry_orphan.py::test_manager_template_reference_not_detected PASSED [ 19%]",
                                "tests/image_drift/test_role_registry_orphan.py::test_base_docker_registry_var_is_not_reported PASSED [ 19%]",
                                "tests/image_drift/test_role_registry_orphan.py::test_consumer_in_an_unfiltered_file_is_found PASSED [ 19%]",
                                "tests/image_drift/test_role_registry_orphan.py::test_allowlist_suppresses_orphan PASSED [ 19%]",
                                "tests/image_drift/test_role_shadows.py::test_baseline_drift PASSED       [ 19%]",
                                "tests/image_drift/test_role_shadows.py::test_role_without_defaults_skipped PASSED [ 19%]",
                                "tests/image_drift/test_role_shadows.py::test_jinja_valued_tag_not_drift PASSED [ 20%]",
                                "tests/image_drift/test_role_shadows.py::test_allowlist_very_narrow_pins_to_role_file PASSED [ 20%]",
                                "tests/image_drift/test_role_shadows.py::test_netbox_redis_is_live PASSED [ 20%]",
                                "tests/image_drift/test_role_shadows.py::test_dormant_aliases_are_dormant PASSED [ 20%]",
                                "tests/image_drift/test_role_shadows.py::test_floatdemo_is_live PASSED    [ 20%]",
                                "tests/image_drift/test_role_shadows.py::test_stream_resolved_not_emitted PASSED [ 20%]",
                                "tests/image_drift/test_role_shadows.py::test_dormant_findings_are_advisory PASSED [ 20%]",
                                "tests/image_drift/test_role_shadows.py::test_live_findings_are_actionable PASSED [ 20%]",
                                "tests/image_drift/test_role_unpinned.py::test_ciinternal_detected PASSED [ 21%]",
                                "tests/image_drift/test_role_unpinned.py::test_widget_detected_with_release_key PASSED [ 21%]",
                                "tests/image_drift/test_role_unpinned.py::test_adminer_not_emitted PASSED [ 21%]",
                                "tests/image_drift/test_role_unpinned.py::test_stream_resolved_not_emitted PASSED [ 21%]",
                                "tests/image_drift/test_role_unpinned.py::test_allowlist_marks_ciinternal_allowlisted PASSED [ 21%]",
                                "tests/image_drift/test_rolling_pin.py::test_rolling_pins_flagged PASSED  [ 21%]",
                                "tests/image_drift/test_rolling_pin.py::test_concrete_pin_not_flagged PASSED [ 21%]",
                                "tests/image_drift/test_rolling_pin.py::test_odd_but_pinned_not_flagged PASSED [ 21%]",
                                "tests/image_drift/test_rolling_pin.py::test_top_level_key_ignored PASSED [ 22%]",
                                "tests/image_drift/test_rolling_pin.py::test_entry_fields PASSED          [ 22%]",
                                "tests/image_drift/test_rolling_pin.py::test_allowlist_marks_entry PASSED [ 22%]",
                                "tests/image_drift/test_source_list_tree.py::test_list_tree_returns_nested_paths PASSED [ 22%]",
                                "tests/image_drift/test_source_list_tree.py::test_list_tree_absent_raises_by_default PASSED [ 22%]",
                                "tests/image_drift/test_source_list_tree.py::test_list_tree_absent_missing_ok_returns_empty PASSED [ 22%]",
                                "tests/kolla_drift/test_archive.py::test_repo_slug_and_archive_url PASSED [ 22%]",
                                "tests/kolla_drift/test_archive.py::test_snapshot_dir_fetches_extracts_and_serves PASSED [ 23%]",
                                "tests/kolla_drift/test_archive.py::test_snapshot_dir_memoizes_one_http_call PASSED [ 23%]",
                                "tests/kolla_drift/test_archive.py::test_snapshot_dir_404_raises PASSED   [ 23%]",
                                "tests/kolla_drift/test_archive.py::test_fetch_retries_once_then_succeeds PASSED [ 23%]",
                                "tests/kolla_drift/test_archive.py::test_fetch_fails_twice_raises PASSED  [ 23%]",
                                "tests/kolla_drift/test_archive.py::test_unsafe_traversal_member_rejected PASSED [ 23%]",
                                "tests/kolla_drift/test_archive.py::test_absolute_symlink_member_rejected_on_fallback PASSED [ 23%]",
                                "tests/kolla_drift/test_archive.py::test_safe_relative_symlink_extracted_on_fallback PASSED [ 23%]",
                                "tests/kolla_drift/test_config.py::test_load_minimal_config PASSED        [ 24%]",
                                "tests/kolla_drift/test_config.py::test_osism_root_and_paths_are_unknown_keys PASSED [ 24%]",
                                "tests/kolla_drift/test_config.py::test_unknown_top_level_key_errors PASSED [ 24%]",
                                "tests/kolla_drift/test_config.py::test_allowlist_broad_match PASSED      [ 24%]",
                                "tests/kolla_drift/test_config.py::test_apply_marks_matching_drift_allowlisted PASSED [ 24%]",
                                "tests/kolla_drift/test_config.py::test_apply_returns_unmatched_drift_unchanged PASSED [ 24%]",
                                "tests/kolla_drift/test_config.py::test_allowlist_narrow_by_alias PASSED  [ 24%]",
                                "tests/kolla_drift/test_config.py::test_allowlist_very_narrow PASSED      [ 24%]",
                                "tests/kolla_drift/test_config.py::test_allowlist_empty_reason_errors PASSED [ 25%]",
                                "tests/kolla_drift/test_config.py::test_allowlist_no_file_returns_empty PASSED [ 25%]",
                                "tests/kolla_drift/test_config.py::test_sources_parsed PASSED             [ 25%]",
                                "tests/kolla_drift/test_config.py::test_default_owner_defaults_when_absent PASSED [ 25%]",
                                "tests/kolla_drift/test_config.py::test_unknown_source_key_errors PASSED  [ 25%]",
                                "tests/kolla_drift/test_config.py::test_stale_flags_unused_entry PASSED   [ 25%]",
                                "tests/kolla_drift/test_config.py::test_stale_scoped_to_ran_plugins PASSED [ 25%]",
                                "tests/kolla_drift/test_config.py::test_prefix_matches_service_and_subgroups PASSED [ 25%]",
                                "tests/kolla_drift/test_config.py::test_prefix_does_not_match_adjacent_name PASSED [ 26%]",
                                "tests/kolla_drift/test_config.py::test_exact_is_default_and_unchanged PASSED [ 26%]",
                                "tests/kolla_drift/test_config.py::test_allowlist_unknown_match_value_errors PASSED [ 26%]",
                                "tests/kolla_drift/test_config.py::test_allowlist_empty_image_errors PASSED [ 26%]",
                                "tests/kolla_drift/test_config.py::test_prefix_entry_stale_when_no_match PASSED [ 26%]",
                                "tests/kolla_drift/test_config.py::test_releases_and_release_refs_parse PASSED [ 26%]",
                                "tests/kolla_drift/test_config.py::test_releases_default_empty PASSED     [ 26%]",
                                "tests/kolla_drift/test_config.py::test_archive_and_snapshot_cache_defaults PASSED [ 26%]",
                                "tests/kolla_drift/test_dir_helpers.py::test_dir_read_returns_bytes PASSED [ 27%]",
                                "tests/kolla_drift/test_dir_helpers.py::test_dir_read_missing_raises_with_where PASSED [ 27%]",
                                "tests/kolla_drift/test_dir_helpers.py::test_dir_read_optional_present PASSED [ 27%]",
                                "tests/kolla_drift/test_dir_helpers.py::test_dir_read_optional_absent_returns_none PASSED [ 27%]",
                                "tests/kolla_drift/test_dir_helpers.py::test_dir_list_tree_sorted_repo_relative PASSED [ 27%]",
                                "tests/kolla_drift/test_dir_helpers.py::test_dir_list_tree_missing_raises PASSED [ 27%]",
                                "tests/kolla_drift/test_dir_helpers.py::test_dir_list_tree_missing_ok_returns_empty PASSED [ 27%]",
                                "tests/kolla_drift/test_dir_helpers.py::test_dir_list_returns_names PASSED [ 27%]",
                                "tests/kolla_drift/test_dir_helpers.py::test_dir_list_dirs_only PASSED    [ 28%]",
                                "tests/kolla_drift/test_dir_helpers.py::test_dir_list_missing_raises PASSED [ 28%]",
                                "tests/kolla_drift/test_driver.py::test_local_only_run_refuses_a_plugin_that_must_reach_the_network PASSED [ 28%]",
                                "tests/kolla_drift/test_driver.py::test_remote_fallback_permits_the_network_read PASSED [ 28%]",
                                "tests/kolla_drift/test_driver.py::test_a_fully_remote_run_is_never_blocked PASSED [ 28%]",
                                "tests/kolla_drift/test_driver.py::test_repo_only_plugins_are_not_blocked PASSED [ 28%]",
                                "tests/kolla_drift/test_driver.py::test_every_offending_plugin_is_listed_at_once PASSED [ 28%]",
                                "tests/kolla_drift/test_driver.py::test_network_plugin_in_a_local_only_run_exits_2 PASSED [ 28%]",
                                "tests/kolla_drift/test_driver.py::test_base_dir_not_found_exits_2 PASSED [ 29%]",
                                "tests/kolla_drift/test_driver_stale.py::test_stale_entry_forces_exit_1_and_is_reported PASSED [ 29%]",
                                "tests/kolla_drift/test_driver_stale.py::test_no_allowlist_ignores_invalid_file PASSED [ 29%]",
                                "tests/kolla_drift/test_enablement.py::test_canon_normalizes_hyphen_to_underscore PASSED [ 29%]",
                                "tests/kolla_drift/test_enablement.py::test_parse_enable_flags_strips_prefix PASSED [ 29%]",
                                "tests/kolla_drift/test_enablement.py::test_truthy_enables_literal_only_and_canon PASSED [ 29%]",
                                "tests/kolla_drift/test_enablement.py::test_parse_build_set_unions_both_blocks_canon PASSED [ 29%]",
                                "tests/kolla_drift/test_enablement.py::test_release_range_derives_from_file_set PASSED [ 29%]",
                                "tests/kolla_drift/test_enablement.py::test_release_range_override_wins PASSED [ 30%]",
                                "tests/kolla_drift/test_enablement.py::test_upstream_enable_keys_monolithic PASSED [ 30%]",
                                "tests/kolla_drift/test_enablement.py::test_upstream_enable_keys_split_dir PASSED [ 30%]",
                                "tests/kolla_drift/test_enablement.py::test_upstream_groupvars_keys_monolithic PASSED [ 30%]",
                                "tests/kolla_drift/test_enablement.py::test_upstream_groupvars_keys_split_dir PASSED [ 30%]",
                                "tests/kolla_drift/test_enablement.py::test_osism_groupvars_keys_merges_defaults_and_versions_template PASSED [ 30%]",
                                "tests/kolla_drift/test_enablement.py::test_osism_groupvars_keys_counts_overlays PASSED [ 30%]",
                                "tests/kolla_drift/test_enablement.py::test_osism_enable_flags_merges_across_all_files PASSED [ 30%]",
                                "tests/kolla_drift/test_enablement.py::test_osism_enable_ids_truthy PASSED [ 31%]",
                                "tests/kolla_drift/test_enablement.py::test_osism_enable_ids_explicit_includes_all_keys PASSED [ 31%]",
                                "tests/kolla_drift/test_enablement.py::test_osism_enable_ids_unknown_scope_raises PASSED [ 31%]",
                                "tests/kolla_drift/test_enablement.py::test_groupvars_home_names_the_per_service_file PASSED [ 31%]",
                                "tests/kolla_drift/test_enablement.py::test_groupvars_home_falls_back_to_the_layer_without_homes PASSED [ 31%]",
                                "tests/kolla_drift/test_enablement.py::test_groupvars_home_dropped_key_ignores_homes PASSED [ 31%]",
                                "tests/kolla_drift/test_enablement.py::test_groupvars_home_in_newest_keys PASSED [ 31%]",
                                "tests/kolla_drift/test_enablement.py::test_groupvars_home_dropped_only PASSED [ 31%]",
                                "tests/kolla_drift/test_enablement.py::test_groupvars_home_newest_wins_over_dropped PASSED [ 32%]",
                                "tests/kolla_drift/test_enablement.py::test_groupvars_home_neither_returns_none PASSED [ 32%]",
                                "tests/kolla_drift/test_enablement.py::test_in_mirror_layer PASSED        [ 32%]",
                                "tests/kolla_drift/test_enablement.py::test_upstream_role_default_keys_all_top_level_keys PASSED [ 32%]",
                                "tests/kolla_drift/test_enablement.py::test_upstream_role_default_keys_role_without_defaults_skipped PASSED [ 32%]",
                                "tests/kolla_drift/test_enablement.py::test_upstream_image_tag_keys_collects_both_suffixes PASSED [ 32%]",
                                "tests/kolla_drift/test_enablement.py::test_upstream_homes_names_the_lexically_last_file PASSED [ 32%]",
                                "tests/kolla_drift/test_enablement.py::test_upstream_groupvars_are_read_once_per_ref PASSED [ 32%]",
                                "tests/kolla_drift/test_enablement_source_refs.py::test_parse_source_refs_returns_openstack_project_refs PASSED [ 33%]",
                                "tests/kolla_drift/test_enablement_source_refs.py::test_parse_source_refs_preserves_hyphenated_project_names PASSED [ 33%]",
                                "tests/kolla_drift/test_enablement_source_refs.py::test_parse_source_refs_keeps_valueless_entries PASSED [ 33%]",
                                "tests/kolla_drift/test_enablement_source_refs.py::test_parse_source_refs_empty_when_block_absent PASSED [ 33%]",
                                "tests/kolla_drift/test_enablement_values.py::test_groupvars_values_merges_and_parses PASSED [ 33%]",
                                "tests/kolla_drift/test_enablement_values.py::test_groupvars_values_skips_non_mapping_and_empty PASSED [ 33%]",
                                "tests/kolla_drift/test_enablement_values.py::test_osism_mirror_values_reads_only_001 PASSED [ 33%]",
                                "tests/kolla_drift/test_enablement_values.py::test_mirror_values_merges_the_whole_001_layer PASSED [ 34%]",
                                "tests/kolla_drift/test_enablement_values.py::test_supply_excluding_mirror_excludes_every_layer_file PASSED [ 34%]",
                                "tests/kolla_drift/test_enablement_version_gates.py::test_parses_a_gate_into_its_listed_releases PASSED [ 34%]",
                                "tests/kolla_drift/test_enablement_version_gates.py::test_parses_the_not_in_form_the_same_way PASSED [ 34%]",
                                "tests/kolla_drift/test_enablement_version_gates.py::test_parses_a_named_release_literal PASSED [ 34%]",
                                "tests/kolla_drift/test_enablement_version_gates.py::test_ignores_the_rest_of_the_expression PASSED [ 34%]",
                                "tests/kolla_drift/test_enablement_version_gates.py::test_finds_a_gate_nested_inside_a_structured_value PASSED [ 34%]",
                                "tests/kolla_drift/test_enablement_version_gates.py::test_var_without_a_gate_is_absent PASSED [ 34%]",
                                "tests/kolla_drift/test_enablement_version_gates.py::test_deduplicates_repeated_literals_preserving_order PASSED [ 35%]",
                                "tests/kolla_drift/test_enablement_version_gates.py::test_empty_and_non_mapping_documents_yield_nothing PASSED [ 35%]",
                                "tests/kolla_drift/test_enablement_version_gates.py::test_per_release_file_round_trips PASSED [ 35%]",
                                "tests/kolla_drift/test_enablement_version_gates.py::test_per_release_file_target_rejects_other_files PASSED [ 35%]",
                                "tests/kolla_drift/test_http_head.py::test_head_returns_the_response_for_a_published_artifact PASSED [ 35%]",
                                "tests/kolla_drift/test_http_head.py::test_head_returns_a_whitelisted_status_without_raising PASSED [ 35%]",
                                "tests/kolla_drift/test_http_head.py::test_head_raises_on_a_status_that_is_not_whitelisted PASSED [ 35%]",
                                "tests/kolla_drift/test_http_head.py::test_head_raises_on_server_error_even_when_404_is_whitelisted PASSED [ 35%]",
                                "tests/kolla_drift/test_http_head.py::test_head_raises_on_rate_limit_even_when_404_is_whitelisted PASSED [ 36%]",
                                "tests/kolla_drift/test_http_head.py::test_head_raises_source_error_on_transport_failure PASSED [ 36%]",
                                "tests/kolla_drift/test_http_head.py::test_head_reports_the_status_on_the_error PASSED [ 36%]",
                                "tests/kolla_drift/test_http_head.py::test_head_leaves_the_status_unset_for_a_transport_failure PASSED [ 36%]",
                                "tests/kolla_drift/test_http_head.py::test_head_retries_a_transient_status_and_returns_the_recovered_response PASSED [ 36%]",
                                "tests/kolla_drift/test_http_head.py::test_head_retries_a_transport_failure PASSED [ 36%]",
                                "tests/kolla_drift/test_http_head.py::test_head_still_raises_when_the_host_keeps_refusing PASSED [ 36%]",
                                "tests/kolla_drift/test_http_head.py::test_head_does_not_retry_a_settled_answer PASSED [ 36%]",
                                "tests/kolla_drift/test_http_head.py::test_head_does_not_retry_a_whitelisted_status PASSED [ 37%]",
                                "tests/kolla_drift/test_http_head.py::test_head_backs_off_between_attempts PASSED [ 37%]",
                                "tests/kolla_drift/test_http_head.py::test_a_non_github_throttle_does_not_blame_github PASSED [ 37%]",
                                "tests/kolla_drift/test_http_head.py::test_a_non_github_throttle_echoes_retry_after_when_offered PASSED [ 37%]",
                                "tests/kolla_drift/test_http_head.py::test_a_github_throttle_still_gets_the_github_hint PASSED [ 37%]",
                                "tests/kolla_drift/test_inventory_sections.py::test_returns_groups_with_sorted_members PASSED [ 37%]",
                                "tests/kolla_drift/test_inventory_sections.py::test_empty_group_has_no_members PASSED [ 37%]",
                                "tests/kolla_drift/test_inventory_sections.py::test_duplicate_member_in_group_does_not_raise PASSED [ 37%]",
                                "tests/kolla_drift/test_kolla_docker.py::test_normalises_hyphen_to_underscore PASSED [ 38%]",
                                "tests/kolla_drift/test_kolla_docker.py::test_empty PASSED                [ 38%]",
                                "tests/kolla_drift/test_kolla_enablement_build.py::test_flags_enabled_buildable_not_built PASSED [ 38%]",
                                "tests/kolla_drift/test_kolla_enablement_build.py::test_reads_enable_flags_split_across_files PASSED [ 38%]",
                                "tests/kolla_drift/test_kolla_enablement_build.py::test_allowlist_marks_allowlisted PASSED [ 38%]",
                                "tests/kolla_drift/test_kolla_enablement_orphan.py::test_truthy_scope_flags_absent_truthy_services PASSED [ 38%]",
                                "tests/kolla_drift/test_kolla_enablement_orphan.py::test_explicit_scope_also_flags_dead_no_flags PASSED [ 38%]",
                                "tests/kolla_drift/test_kolla_enablement_orphan.py::test_present_upstream_is_not_orphan PASSED [ 38%]",
                                "tests/kolla_drift/test_kolla_enablement_orphan.py::test_union_across_releases_not_intersection PASSED [ 39%]",
                                "tests/kolla_drift/test_kolla_enablement_orphan.py::test_allowlist_marks_allowlisted PASSED [ 39%]",
                                "tests/kolla_drift/test_kolla_enablement_orphan.py::test_run_uses_explicit_default PASSED [ 39%]",
                                "tests/kolla_drift/test_kolla_enablement_orphan.py::test_reads_enable_flags_split_across_files PASSED [ 39%]",
                                "tests/kolla_drift/test_kolla_enablement_orphan.py::test_empty_release_range_raises PASSED [ 39%]",
                                "tests/kolla_drift/test_kolla_groupvars_missing.py::test_flags_upstream_key_missing_from_osism PASSED [ 39%]",
                                "tests/kolla_drift/test_kolla_groupvars_missing.py::test_present_in_osism_is_not_missing PASSED [ 39%]",
                                "tests/kolla_drift/test_kolla_groupvars_missing.py::test_osism_key_in_any_file_suppresses PASSED [ 39%]",
                                "tests/kolla_drift/test_kolla_groupvars_missing.py::test_versions_template_supplied_key_not_flagged PASSED [ 40%]",
                                "tests/kolla_drift/test_kolla_groupvars_missing.py::test_overlay_supplied_key_not_flagged PASSED [ 40%]",
                                "tests/kolla_drift/test_kolla_groupvars_missing.py::test_union_across_releases_not_intersection PASSED [ 40%]",
                                "tests/kolla_drift/test_kolla_groupvars_missing.py::test_allowlist_marks_allowlisted PASSED [ 40%]",
                                "tests/kolla_drift/test_kolla_groupvars_missing.py::test_empty_release_range_raises PASSED [ 40%]",
                                "tests/kolla_drift/test_kolla_groupvars_missing.py::test_missing_key_at_newest_routes_to_001 PASSED [ 40%]",
                                "tests/kolla_drift/test_kolla_groupvars_missing.py::test_missing_key_dropped_by_newest_routes_to_010 PASSED [ 40%]",
                                "tests/kolla_drift/test_kolla_groupvars_missing.py::test_missing_key_names_its_per_service_file PASSED [ 40%]",
                                "tests/kolla_drift/test_kolla_groupvars_missing.py::test_two_keys_with_different_homes_have_distinct_remediations PASSED [ 41%]",
                                "tests/kolla_drift/test_kolla_image_orphan.py::test_flags_removed_service_image_and_tag PASSED [ 41%]",
                                "tests/kolla_drift/test_kolla_image_orphan.py::test_present_service_not_flagged PASSED [ 41%]",
                                "tests/kolla_drift/test_kolla_image_orphan.py::test_union_across_releases_not_intersection PASSED [ 41%]",
                                "tests/kolla_drift/test_kolla_image_orphan.py::test_allowlist_marks_osism_built PASSED [ 41%]",
                                "tests/kolla_drift/test_kolla_image_orphan.py::test_ceph_catalogue_ignored PASSED [ 41%]",
                                "tests/kolla_drift/test_kolla_image_orphan.py::test_empty_upstream_union_raises PASSED [ 41%]",
                                "tests/kolla_drift/test_kolla_image_orphan.py::test_empty_catalogue_match_raises PASSED [ 41%]",
                                "tests/kolla_drift/test_kolla_inventory.py::test_flags_upstream_only_groups_across_the_release_range PASSED [ 42%]",
                                "tests/kolla_drift/test_kolla_inventory.py::test_entry_names_only_the_releases_that_want_the_group PASSED [ 42%]",
                                "tests/kolla_drift/test_kolla_inventory.py::test_group_renamed_upstream_is_flagged_at_the_release_that_renamed_it PASSED [ 42%]",
                                "tests/kolla_drift/test_kolla_inventory.py::test_members_come_from_the_last_release_that_wants_the_group PASSED [ 42%]",
                                "tests/kolla_drift/test_kolla_inventory.py::test_red_entry_carries_members PASSED [ 42%]",
                                "tests/kolla_drift/test_kolla_inventory.py::test_exact_and_prefix_allowlist_match PASSED [ 42%]",
                                "tests/kolla_drift/test_kolla_inventory.py::test_empty_release_range_raises PASSED [ 42%]",
                                "tests/kolla_drift/test_kolla_inventory.py::test_declares_the_release_repo_it_reads PASSED [ 42%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_clean_mirror_no_drift PASSED [ 43%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_value_diff_flagged PASSED [ 43%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_missing_from_mirror_flagged PASSED [ 43%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_dropped_key_routed_to_010 PASSED [ 43%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_dup_key_delete PASSED [ 43%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_invented_key PASSED [ 43%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_typo_mirrored_not_flagged PASSED [ 43%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_newest_selected_by_sort PASSED [ 43%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_dropped_key_classified_with_out_of_order_releases PASSED [ 44%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_allowlist_marks_entry PASSED [ 44%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_empty_release_range_raises PASSED [ 44%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_layer_split_across_files_is_a_clean_mirror PASSED [ 44%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_layer_later_file_wins_on_duplicate_key PASSED [ 44%]",
                                "tests/kolla_drift/test_kolla_mirror_verbatim.py::test_missing_upstream_key_names_its_per_service_file PASSED [ 44%]",
                                "tests/kolla_drift/test_kolla_orphan_config.py::test_flags_dead_service_companion_vars PASSED [ 44%]",
                                "tests/kolla_drift/test_kolla_orphan_config.py::test_found_src_points_to_each_file PASSED [ 45%]",
                                "tests/kolla_drift/test_kolla_orphan_config.py::test_no_dead_services_returns_empty PASSED [ 45%]",
                                "tests/kolla_drift/test_kolla_orphan_config.py::test_respects_orphan_allowlist PASSED [ 45%]",
                                "tests/kolla_drift/test_kolla_orphan_config.py::test_own_allowlist_marks_allowlisted PASSED [ 45%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_reports_retired_patch_orphan PASSED [ 45%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_disabled_patch_at_newest_is_consumer PASSED [ 45%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_live_patch_at_newest_not_reported PASSED [ 45%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_defined_upstream_in_groupvars_not_reported PASSED [ 45%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_defined_upstream_in_role_default_only_not_reported PASSED [ 46%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_defined_upstream_at_older_release_only_not_reported PASSED [ 46%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_mentioned_upstream_but_not_defined_is_reported PASSED [ 46%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_owned_by_dead_non_allowlisted_service_not_reported PASSED [ 46%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_owned_by_dead_allowlisted_service_is_reported PASSED [ 46%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_never_consumed_by_patch_not_reported PASSED [ 46%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_substring_safety PASSED [ 46%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_allowlist_applies PASSED [ 46%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_advisory_severity PASSED [ 47%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_fail_closed_empty_release_range PASSED [ 47%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_fail_closed_empty_kolla_yml PASSED [ 47%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_fail_closed_newest_patches_missing PASSED [ 47%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_fail_closed_newest_patches_empty PASSED [ 47%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_unreadable_newest_patch_raises PASSED [ 47%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_unreadable_older_patch_raises PASSED [ 47%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_missing_older_patches_dir_is_not_error PASSED [ 47%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_retired_while_applied_uses_behaviour_change_block PASSED [ 48%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_retired_while_parked_uses_cleanup_block PASSED [ 48%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_applied_file_wins_over_disabled_at_same_release PASSED [ 48%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_two_blocks_report_separately PASSED [ 48%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_found_carries_per_release_state PASSED [ 48%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_missing_older_patch_dir_renders_as_absent PASSED [ 48%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_non_contiguous_live_range PASSED [ 48%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_live_range_named_in_fix PASSED [ 48%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_gate_boundary_is_release_after_newest_live PASSED [ 49%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_non_contiguous_gate_boundary PASSED [ 49%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_no_live_release_asks_for_removal PASSED [ 49%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_applied_block_keeps_and_does_not_order_a_gate PASSED [ 49%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_keep_branch_close_does_not_claim_removal_is_the_only_exit PASSED [ 49%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_gated_definition_still_reported PASSED [ 49%]",
                                "tests/kolla_drift/test_kolla_retired_patch_orphan.py::test_same_range_groups_one_block_different_ranges_split PASSED [ 49%]",
                                "tests/kolla_drift/test_kolla_secrets_orphan.py::test_flags_orphan_secrets_per_release PASSED [ 49%]",
                                "tests/kolla_drift/test_kolla_secrets_orphan.py::test_present_secret_is_not_orphan PASSED [ 50%]",
                                "tests/kolla_drift/test_kolla_secrets_orphan.py::test_allowlist_marks_allowlisted PASSED [ 50%]",
                                "tests/kolla_drift/test_kolla_secrets_orphan.py::test_missing_template_skips_release PASSED [ 50%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_flags_ref_when_a_later_phase_tarball_is_published PASSED [ 50%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_silent_when_no_later_phase_is_published PASSED [ 50%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_silent_when_already_on_the_latest_published_phase PASSED [ 50%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_does_not_probe_or_flag_the_configured_phase_itself PASSED [ 50%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_probes_only_the_phases_opendev_publishes_a_tarball_for PASSED [ 50%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_a_release_already_moved_costs_no_probes PASSED [ 51%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_later_phases_are_only_those_after_the_configured_one PASSED [ 51%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_skips_ref_that_does_not_name_the_release PASSED [ 51%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_skips_valueless_ref PASSED [ 51%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_preserves_hyphenated_project_names PASSED [ 51%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_inconclusive_probe_is_reported_unresolved_not_clean PASSED [ 51%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_inconclusive_probe_does_not_also_yield_a_stale_finding PASSED [ 51%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_one_inconclusive_project_does_not_hide_the_others PASSED [ 51%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_probe_inconclusive_is_a_source_error PASSED [ 52%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_tarball_exists_true_for_a_published_artifact PASSED [ 52%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_tarball_exists_false_when_absent PASSED [ 52%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_tarball_exists_raises_instead_of_reporting_absent_on_outage PASSED [ 52%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_tarball_exists_classifies_a_transport_failure PASSED [ 52%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_declares_the_host_no_base_dir_can_serve PASSED [ 52%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_report_names_the_target_phase_and_the_file_to_edit PASSED [ 52%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_report_does_not_offer_a_phase_that_has_no_tarball PASSED [ 52%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_projects_moving_to_the_same_phase_share_one_report_block PASSED [ 53%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_plugin_level_remediation_describes_the_rename_without_inventing_phases PASSED [ 53%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_unresolved_report_says_unknown_rather_than_clean PASSED [ 53%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_unresolved_refs_failing_alike_share_one_report_block PASSED [ 53%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_unresolved_and_stale_render_as_separate_blocks PASSED [ 53%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_unresolved_entry_is_actionable_so_the_run_exits_nonzero PASSED [ 53%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_run_reports_drift_read_from_the_release_manifest PASSED [ 53%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_run_reports_an_unverified_ref_when_the_probe_fails PASSED [ 53%]",
                                "tests/kolla_drift/test_kolla_source_ref_phase.py::test_run_allowlists_an_unverified_ref_for_a_pinned_project PASSED [ 54%]",
                                "tests/kolla_drift/test_kolla_version_chain_inner.py::test_flags_all_inert_keys PASSED [ 54%]",
                                "tests/kolla_drift/test_kolla_version_chain_inner.py::test_enabled_and_buildable_key_is_an_add PASSED [ 54%]",
                                "tests/kolla_drift/test_kolla_version_chain_inner.py::test_disabled_or_unbuildable_key_is_a_remove PASSED [ 54%]",
                                "tests/kolla_drift/test_kolla_version_chain_inner.py::test_add_and_remove_render_as_separate_blocks PASSED [ 54%]",
                                "tests/kolla_drift/test_kolla_version_chain_inner.py::test_hyphen_underscore_is_not_drift PASSED [ 54%]",
                                "tests/kolla_drift/test_kolla_version_chain_inner.py::test_reads_enable_flags_split_across_files PASSED [ 54%]",
                                "tests/kolla_drift/test_kolla_version_chain_inner.py::test_allowlist_marks_allowlisted PASSED [ 54%]",
                                "tests/kolla_drift/test_kolla_version_chain_upstream.py::test_flags_services_without_template_key PASSED [ 55%]",
                                "tests/kolla_drift/test_kolla_version_chain_upstream.py::test_expected_src_uses_configured_ref PASSED [ 55%]",
                                "tests/kolla_drift/test_kolla_version_chain_upstream.py::test_present_service_not_flagged PASSED [ 55%]",
                                "tests/kolla_drift/test_kolla_version_chain_upstream.py::test_allowlist_marks_allowlisted PASSED [ 55%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_flags_a_gate_naming_a_release_outside_the_supported_range PASSED [ 55%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_silent_when_every_named_release_is_supported PASSED [ 55%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_reports_only_the_dead_releases_of_a_mixed_gate PASSED [ 55%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_flags_a_not_in_gate_too PASSED [ 56%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_ignores_files_that_are_not_yaml PASSED [ 56%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_flags_a_per_release_file_for_a_retired_release PASSED [ 56%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_silent_for_a_per_release_file_of_a_supported_release PASSED [ 56%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_a_retired_per_release_file_can_also_carry_a_stale_gate PASSED [ 56%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_findings_are_advisory_so_the_nightly_job_stays_green PASSED [ 56%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_a_deliberate_gate_can_be_allowlisted PASSED [ 56%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_stale_releases_keeps_order_and_drops_supported PASSED [ 56%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_report_names_the_variable_the_release_and_the_file PASSED [ 57%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_gate_and_file_findings_render_as_separate_blocks PASSED [ 57%]",
                                "tests/kolla_drift/test_kolla_version_gate_orphan.py::test_plugin_is_registered PASSED [ 57%]",
                                "tests/kolla_drift/test_model.py::test_drift_entry_has_all_fields PASSED  [ 57%]",
                                "tests/kolla_drift/test_model.py::test_drift_entry_to_dict_for_json PASSED [ 57%]",
                                "tests/kolla_drift/test_model.py::test_default_severity_is_actionable PASSED [ 57%]",
                                "tests/kolla_drift/test_model.py::test_as_allowlisted_preserves_severity PASSED [ 57%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_registry_is_a_list PASSED [ 57%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_each_plugin_has_required_metadata PASSED [ 58%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_kolla_inner_plugin_registered PASSED [ 58%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_kolla_upstream_plugin_registered PASSED [ 58%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_kolla_inventory_plugin_registered PASSED [ 58%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_kolla_enablement_build_plugin_registered PASSED [ 58%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_kolla_enablement_orphan_plugin_registered PASSED [ 58%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_kolla_secrets_orphan_plugin_registered PASSED [ 58%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_kolla_retired_patch_orphan_plugin_registered PASSED [ 58%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_kolla_orphan_config_plugin_registered PASSED [ 59%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_kolla_groupvars_missing_plugin_registered PASSED [ 59%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_every_plugin_has_summary_and_remediation PASSED [ 59%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_default_config_enables_every_registered_plugin PASSED [ 59%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_kolla_mirror_verbatim_plugin_registered PASSED [ 59%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_plugins_in_lifecycle_order PASSED [ 59%]",
                                "tests/kolla_drift/test_plugin_registry.py::test_plugin_groups_match_registries_and_are_disjoint PASSED [ 59%]",
                                "tests/kolla_drift/test_report.py::test_single_plugin_groups_sorts_and_renders PASSED [ 59%]",
                                "tests/kolla_drift/test_report.py::test_orders_blocks_by_plugins_list PASSED [ 60%]",
                                "tests/kolla_drift/test_report.py::test_build_style_splits_one_block_per_ref_pair PASSED [ 60%]",
                                "tests/kolla_drift/test_report.py::test_allowlisted_excluded_from_blocks_and_count PASSED [ 60%]",
                                "tests/kolla_drift/test_report.py::test_empty_returns_empty_list PASSED   [ 60%]",
                                "tests/kolla_drift/test_report.py::test_entry_summary_remediation_override_plugin_default PASSED [ 60%]",
                                "tests/kolla_drift/test_report.py::test_lists_image_not_alias PASSED      [ 60%]",
                                "tests/kolla_drift/test_report.py::test_remediation_alone_splits_the_group PASSED [ 60%]",
                                "tests/kolla_drift/test_sbom_map.py::test_extracts_keys PASSED            [ 60%]",
                                "tests/kolla_drift/test_sbom_map.py::test_missing_map_raises PASSED       [ 61%]",
                                "tests/kolla_drift/test_secrets_map.py::test_extracts_top_level_keys PASSED [ 61%]",
                                "tests/kolla_drift/test_secrets_map.py::test_ignores_comments_indented_and_markers PASSED [ 61%]",
                                "tests/kolla_drift/test_secrets_map.py::test_empty_input PASSED           [ 61%]",
                                "tests/kolla_drift/test_source.py::test_read_local_working_tree_when_found PASSED [ 61%]",
                                "tests/kolla_drift/test_source.py::test_read_not_found_in_base_dir_is_mode_b_error PASSED [ 61%]",
                                "tests/kolla_drift/test_source.py::test_read_local_file_absent_is_error_not_remote PASSED [ 61%]",
                                "tests/kolla_drift/test_source.py::test_read_remote_fallback_when_not_found PASSED [ 61%]",
                                "tests/kolla_drift/test_source.py::test_read_no_base_dir_is_remote PASSED [ 62%]",
                                "tests/kolla_drift/test_source.py::test_first_base_dir_with_the_repo_wins PASSED [ 62%]",
                                "tests/kolla_drift/test_source.py::test_pinned_local_git_repo_reads_at_pin_ref PASSED [ 62%]",
                                "tests/kolla_drift/test_source.py::test_pinned_non_git_dir_falls_back_to_remote PASSED [ 62%]",
                                "tests/kolla_drift/test_source.py::test_pinned_non_git_dir_no_fallback_is_mode_b PASSED [ 62%]",
                                "tests/kolla_drift/test_source.py::test_read_remote_404_errors PASSED     [ 62%]",
                                "tests/kolla_drift/test_source.py::test_read_network_error PASSED         [ 62%]",
                                "tests/kolla_drift/test_source.py::test_read_underscore_repo_translates_to_hyphen PASSED [ 62%]",
                                "tests/kolla_drift/test_source.py::test_read_optional_present_local PASSED [ 63%]",
                                "tests/kolla_drift/test_source.py::test_read_optional_missing_local_returns_none PASSED [ 63%]",
                                "tests/kolla_drift/test_source.py::test_read_optional_404_returns_none PASSED [ 63%]",
                                "tests/kolla_drift/test_source.py::test_read_optional_network_error_still_raises PASSED [ 63%]",
                                "tests/kolla_drift/test_source.py::test_read_optional_underscore_repo_translates_to_hyphen PASSED [ 63%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_local PASSED             [ 63%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_remote PASSED            [ 63%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_remote_404_errors PASSED [ 63%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_remote_404_missing_ok_returns_empty PASSED [ 64%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_remote_rate_limit_missing_ok_still_raises PASSED [ 64%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_local_missing_ok_returns_empty PASSED [ 64%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_local_absent_raises_by_default PASSED [ 64%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_underscore_repo_translates_to_hyphen PASSED [ 64%]",
                                "tests/kolla_drift/test_source.py::test_source_override_redirects_owner_and_ref PASSED [ 64%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_local_dirs_only_excludes_files PASSED [ 64%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_remote_dirs_only_filters_type PASSED [ 64%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_at_ref_uses_explicit_ref_and_owner PASSED [ 65%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_at_ref_404_raises PASSED [ 65%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_at_ref_404_missing_ok_returns_empty PASSED [ 65%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_at_ref_local_pinned_missing_ok_returns_empty PASSED [ 65%]",
                                "tests/kolla_drift/test_source.py::test_release_to_ref_prefers_stable PASSED [ 65%]",
                                "tests/kolla_drift/test_source.py::test_release_to_ref_falls_back_through_candidates PASSED [ 65%]",
                                "tests/kolla_drift/test_source.py::test_release_to_ref_treats_422_as_absent PASSED [ 65%]",
                                "tests/kolla_drift/test_source.py::test_release_to_ref_uses_eom_tag_last PASSED [ 65%]",
                                "tests/kolla_drift/test_source.py::test_release_to_ref_none_raises PASSED [ 66%]",
                                "tests/kolla_drift/test_source.py::test_release_to_ref_override_wins PASSED [ 66%]",
                                "tests/kolla_drift/test_source.py::test_read_at_ref_returns_bytes_at_explicit_ref PASSED [ 66%]",
                                "tests/kolla_drift/test_source.py::test_read_at_ref_optional_404_returns_none PASSED [ 66%]",
                                "tests/kolla_drift/test_source.py::test_read_at_ref_404_raises_when_not_optional PASSED [ 66%]",
                                "tests/kolla_drift/test_source.py::test_describe_resolution_local_and_remote PASSED [ 66%]",
                                "tests/kolla_drift/test_source.py::test_describe_resolution_mode_b_raises PASSED [ 66%]",
                                "tests/kolla_drift/test_source.py::test_describe_resolution_lists_all_missing PASSED [ 67%]",
                                "tests/kolla_drift/test_source.py::test_git_show_multi_ref_from_one_clone PASSED [ 67%]",
                                "tests/kolla_drift/test_source.py::test_git_show_optional_absent_path PASSED [ 67%]",
                                "tests/kolla_drift/test_source.py::test_git_ls_tree_returns_basenames_and_dirs_only PASSED [ 67%]",
                                "tests/kolla_drift/test_source.py::test_resolve_local_ref_finds_non_origin_remote PASSED [ 67%]",
                                "tests/kolla_drift/test_source.py::test_git_show_unresolvable_ref_raises PASSED [ 67%]",
                                "tests/kolla_drift/test_source.py::test_git_ref_exists PASSED             [ 67%]",
                                "tests/kolla_drift/test_source.py::test_read_at_ref_local_git PASSED      [ 67%]",
                                "tests/kolla_drift/test_source.py::test_describe_resolution_pinned_local_tag PASSED [ 68%]",
                                "tests/kolla_drift/test_source.py::test_read_at_ref_unpinned_local_dir_is_remote PASSED [ 68%]",
                                "tests/kolla_drift/test_source.py::test_release_to_ref_memoizes_probes PASSED [ 68%]",
                                "tests/kolla_drift/test_source.py::test_read_remote_rate_limit_403_gives_helpful_error PASSED [ 68%]",
                                "tests/kolla_drift/test_source.py::test_rate_limit_error_when_authenticated_omits_token_advice PASSED [ 68%]",
                                "tests/kolla_drift/test_source.py::test_secondary_rate_limit_retry_after_gives_hint PASSED [ 68%]",
                                "tests/kolla_drift/test_source.py::test_raw_cdn_429_without_headers_gives_raw_specific_hint PASSED [ 68%]",
                                "tests/kolla_drift/test_source.py::test_plain_403_is_not_mistaken_for_rate_limiting PASSED [ 68%]",
                                "tests/kolla_drift/test_source.py::test_non_github_host_does_not_get_the_github_hint PASSED [ 69%]",
                                "tests/kolla_drift/test_source.py::test_non_github_host_echoes_retry_after_when_offered PASSED [ 69%]",
                                "tests/kolla_drift/test_source.py::test_auth_headers_adds_bearer_for_github_host PASSED [ 69%]",
                                "tests/kolla_drift/test_source.py::test_auth_headers_absent_when_no_token PASSED [ 69%]",
                                "tests/kolla_drift/test_source.py::test_auth_headers_not_leaked_to_non_github_host PASSED [ 69%]",
                                "tests/kolla_drift/test_source.py::test_get_sends_auth_header_to_github PASSED [ 69%]",
                                "tests/kolla_drift/test_source.py::test_get_does_not_send_auth_to_non_github_mirror PASSED [ 69%]",
                                "tests/kolla_drift/test_source.py::test_read_uses_archive_when_enabled PASSED [ 69%]",
                                "tests/kolla_drift/test_source.py::test_archive_snapshot_shared_across_reads PASSED [ 70%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_uses_archive PASSED      [ 70%]",
                                "tests/kolla_drift/test_source.py::test_list_tree_uses_archive PASSED     [ 70%]",
                                "tests/kolla_drift/test_source.py::test_list_dir_at_ref_uses_archive PASSED [ 70%]",
                                "tests/kolla_drift/test_source.py::test_read_at_ref_uses_archive PASSED   [ 70%]",
                                "tests/kolla_drift/test_source.py::test_ref_exists_memoizes_probes PASSED [ 70%]",
                                "tests/kolla_drift/test_source.py::test_ref_exists_memoizes_absence_too PASSED [ 70%]",
                                "tests/kolla_drift/test_source.py::test_ref_exists_cache_is_per_ref PASSED [ 70%]",
                                "tests/kolla_drift/test_versions_template.py::test_extracts_distinct_keys PASSED [ 71%]",
                                "tests/kolla_drift/test_versions_template.py::test_empty_input PASSED     [ 71%]",
                                "tests/mirror_sync/test_attribute.py::test_finds_the_commit_that_changed_the_key PASSED [ 71%]",
                                "tests/mirror_sync/test_attribute.py::test_searches_both_old_and_new_homes PASSED [ 71%]",
                                "tests/mirror_sync/test_attribute.py::test_a_missing_home_does_not_break_the_union PASSED [ 71%]",
                                "tests/mirror_sync/test_attribute.py::test_key_is_regex_escaped PASSED    [ 71%]",
                                "tests/mirror_sync/test_attribute.py::test_range_is_bounded_below PASSED  [ 71%]",
                                "tests/mirror_sync/test_attribute.py::test_cap_is_globally_newest_first_across_homes PASSED [ 71%]",
                                "tests/mirror_sync/test_attribute.py::test_a_commit_touching_both_homes_is_not_listed_twice PASSED [ 72%]",
                                "tests/mirror_sync/test_attribute.py::test_a_git_failure_is_reported_not_silently_empty PASSED [ 72%]",
                                "tests/mirror_sync/test_attribute.py::test_no_known_home_is_reported_not_silently_empty PASSED [ 72%]",
                                "tests/mirror_sync/test_attribute.py::test_remote_only_run_skips_with_a_stated_reason PASSED [ 72%]",
                                "tests/mirror_sync/test_attribute.py::test_missing_range_skips_with_a_stated_reason PASSED [ 72%]",
                                "tests/mirror_sync/test_attribute.py::test_results_are_capped_and_say_so PASSED [ 72%]",
                                "tests/mirror_sync/test_classify.py::test_quoted_no_vs_false_is_representation_not_semantic PASSED [ 72%]",
                                "tests/mirror_sync/test_classify.py::test_yes_vs_true_is_representation PASSED [ 72%]",
                                "tests/mirror_sync/test_classify.py::test_on_off_tokens_are_covered PASSED [ 73%]",
                                "tests/mirror_sync/test_classify.py::test_token_match_is_case_insensitive PASSED [ 73%]",
                                "tests/mirror_sync/test_classify.py::test_opposite_truth_values_are_semantic PASSED [ 73%]",
                                "tests/mirror_sync/test_classify.py::test_a_non_boolish_string_is_not_representation PASSED [ 73%]",
                                "tests/mirror_sync/test_classify.py::test_jinja_delimiter_whitespace_only_is_notation PASSED [ 73%]",
                                "tests/mirror_sync/test_classify.py::test_whitespace_inside_a_jinja_expression_stays_semantic PASSED [ 73%]",
                                "tests/mirror_sync/test_classify.py::test_a_changed_filter_argument_stays_semantic PASSED [ 73%]",
                                "tests/mirror_sync/test_classify.py::test_overridden_requires_an_unconditional_later_layer PASSED [ 73%]",
                                "tests/mirror_sync/test_classify.py::test_a_100_layer_counts_as_unconditional PASSED [ 74%]",
                                "tests/mirror_sync/test_classify.py::test_a_010_layer_does_not_count PASSED [ 74%]",
                                "tests/mirror_sync/test_classify.py::test_a_layer_sorting_before_the_mirror_does_not_count PASSED [ 74%]",
                                "tests/mirror_sync/test_classify.py::test_release_conditional_override_is_not_overridden PASSED [ 74%]",
                                "tests/mirror_sync/test_classify.py::test_a_release_gate_nested_in_a_mapping_is_not_overridden PASSED [ 74%]",
                                "tests/mirror_sync/test_classify.py::test_a_release_gate_nested_in_a_list_is_not_overridden PASSED [ 74%]",
                                "tests/mirror_sync/test_classify.py::test_a_release_gate_nested_two_levels_deep_is_not_overridden PASSED [ 74%]",
                                "tests/mirror_sync/test_classify.py::test_a_plain_mapping_override_is_still_overridden PASSED [ 74%]",
                                "tests/mirror_sync/test_classify.py::test_overlay_only_supply_is_not_overridden PASSED [ 75%]",
                                "tests/mirror_sync/test_classify.py::test_versions_yml_is_the_named_exception PASSED [ 75%]",
                                "tests/mirror_sync/test_classify.py::test_supply_info_reads_the_defaults_layers_with_last_wins PASSED [ 75%]",
                                "tests/mirror_sync/test_classify.py::test_supply_info_includes_the_rendered_versions_layer PASSED [ 75%]",
                                "tests/mirror_sync/test_cli.py::test_report_mode_also_requires_defaults_dir PASSED [ 75%]",
                                "tests/mirror_sync/test_cli.py::test_the_same_key_under_two_dispositions_is_an_error PASSED [ 75%]",
                                "tests/mirror_sync/test_cli.py::test_keep_is_decided_at_exit_not_entry PASSED [ 75%]",
                                "tests/mirror_sync/test_cli.py::test_a_midwrite_failure_names_the_worktree_and_how_to_remove_it PASSED [ 75%]",
                                "tests/mirror_sync/test_cli.py::test_a_failure_before_any_write_does_not_claim_a_partial_write PASSED [ 76%]",
                                "tests/mirror_sync/test_cli.py::test_a_successful_apply_returns_zero_and_emits_one_json_document PASSED [ 76%]",
                                "tests/mirror_sync/test_cli.py::test_a_refused_apply_reports_applied_false_not_null PASSED [ 76%]",
                                "tests/mirror_sync/test_cli.py::test_a_report_run_reports_applied_null PASSED [ 76%]",
                                "tests/mirror_sync/test_cli.py::test_worktree_failures_exit_3 PASSED      [ 76%]",
                                "tests/mirror_sync/test_cli.py::test_arms_failures_exit_3 PASSED          [ 76%]",
                                "tests/mirror_sync/test_cli.py::test_pins_from_conflicting_with_base_ref_is_an_error PASSED [ 76%]",
                                "tests/mirror_sync/test_cli.py::test_the_report_file_is_written_by_default_and_named_in_the_output PASSED [ 76%]",
                                "tests/mirror_sync/test_cli.py::test_report_file_honours_an_explicit_path PASSED [ 77%]",
                                "tests/mirror_sync/test_cli.py::test_a_refused_apply_still_leaves_the_report_behind PASSED [ 77%]",
                                "tests/mirror_sync/test_cli.py::test_json_names_the_report_file_so_a_consumer_can_find_it PASSED [ 77%]",
                                "tests/mirror_sync/test_cli.py::test_commit_without_apply_is_refused PASSED [ 77%]",
                                "tests/mirror_sync/test_cli.py::test_commit_branch_without_apply_is_refused_too PASSED [ 77%]",
                                "tests/mirror_sync/test_cli.py::test_apply_reports_the_branch_and_commit_it_made PASSED [ 77%]",
                                "tests/mirror_sync/test_commit.py::test_commit_branches_stages_and_returns_the_sha PASSED [ 77%]",
                                "tests/mirror_sync/test_commit.py::test_commit_stages_a_deletion PASSED   [ 78%]",
                                "tests/mirror_sync/test_commit.py::test_an_existing_branch_is_refused_not_moved PASSED [ 78%]",
                                "tests/mirror_sync/test_commit.py::test_signoff_requires_an_identity PASSED [ 78%]",
                                "tests/mirror_sync/test_commit.py::test_default_branch_is_named_for_the_target PASSED [ 78%]",
                                "tests/mirror_sync/test_detail.py::test_multiline_value_is_written_with_real_newlines PASSED [ 78%]",
                                "tests/mirror_sync/test_detail.py::test_quoting_is_preserved_for_short_values PASSED [ 78%]",
                                "tests/mirror_sync/test_detail.py::test_each_class_carries_its_meaning PASSED [ 78%]",
                                "tests/mirror_sync/test_detail.py::test_attribution_and_note_travel_with_the_row PASSED [ 78%]",
                                "tests/mirror_sync/test_detail.py::test_header_names_the_base_ref_and_both_shas PASSED [ 79%]",
                                "tests/mirror_sync/test_detail.py::test_files_and_keys_the_terminal_truncates_are_all_here PASSED [ 79%]",
                                "tests/mirror_sync/test_detail.py::test_a_class_with_no_rows_gets_no_section PASSED [ 79%]",
                                "tests/mirror_sync/test_effective.py::test_effective_range_stops_at_target PASSED [ 79%]",
                                "tests/mirror_sync/test_effective.py::test_effective_range_rejects_unsupported_target PASSED [ 79%]",
                                "tests/mirror_sync/test_effective.py::test_derive_sets_releases_override_and_fresh_caches PASSED [ 79%]",
                                "tests/mirror_sync/test_effective.py::test_derive_prepends_the_worktree_parent_to_base_dirs PASSED [ 79%]",
                                "tests/mirror_sync/test_effective.py::test_requested_shas_rejects_pin_and_pins_from_together PASSED [ 79%]",
                                "tests/mirror_sync/test_effective.py::test_requested_shas_rejects_a_non_sha PASSED [ 80%]",
                                "tests/mirror_sync/test_effective.py::test_requested_shas_applies_the_pin_only_to_the_target PASSED [ 80%]",
                                "tests/mirror_sync/test_effective.py::test_check_pin_validates_against_the_real_tip_not_itself PASSED [ 80%]",
                                "tests/mirror_sync/test_effective.py::test_check_pin_rejects_a_commit_before_the_branch_point PASSED [ 80%]",
                                "tests/mirror_sync/test_effective.py::test_check_pin_rejects_a_pin_not_reachable_from_the_tip PASSED [ 80%]",
                                "tests/mirror_sync/test_effective.py::test_check_pin_is_a_noop_when_nothing_was_overridden PASSED [ 80%]",
                                "tests/mirror_sync/test_effective.py::test_validate_pins_payload_rejects_a_target_mismatch PASSED [ 80%]",
                                "tests/mirror_sync/test_effective.py::test_validate_pins_payload_rejects_an_incomplete_release_set PASSED [ 80%]",
                                "tests/mirror_sync/test_effective.py::test_validate_pins_payload_rejects_a_malformed_release_sha PASSED [ 81%]",
                                "tests/mirror_sync/test_effective.py::test_validate_pins_payload_rejects_a_non_mapping_release_shas PASSED [ 81%]",
                                "tests/mirror_sync/test_effective.py::test_validate_pins_payload_rejects_an_unknown_schema PASSED [ 81%]",
                                "tests/mirror_sync/test_effective.py::test_validate_pins_payload_returns_the_map_and_base PASSED [ 81%]",
                                "tests/mirror_sync/test_effective.py::test_resolve_tips_uses_release_to_ref_then_resolve_commit PASSED [ 81%]",
                                "tests/mirror_sync/test_enablement_additions.py::test_mirror_prefix_is_public_and_matches_the_private_constant PASSED [ 81%]",
                                "tests/mirror_sync/test_enablement_additions.py::test_upstream_groupvars_files_is_public PASSED [ 81%]",
                                "tests/mirror_sync/test_gate.py::test_parses_the_canonical_shape PASSED   [ 81%]",
                                "tests/mirror_sync/test_gate.py::test_declines_a_compound_condition PASSED [ 82%]",
                                "tests/mirror_sync/test_gate.py::test_declines_a_nested_ternary PASSED    [ 82%]",
                                "tests/mirror_sync/test_gate.py::test_declines_a_mixed_release_list PASSED [ 82%]",
                                "tests/mirror_sync/test_gate.py::test_declines_an_unquoted_release PASSED [ 82%]",
                                "tests/mirror_sync/test_gate.py::test_declines_an_empty_release_list PASSED [ 82%]",
                                "tests/mirror_sync/test_gate.py::test_accepts_a_trailing_comma PASSED     [ 82%]",
                                "tests/mirror_sync/test_gate.py::test_declines_a_variable_branch PASSED   [ 82%]",
                                "tests/mirror_sync/test_gate.py::test_accepts_openstack_release_as_an_alias PASSED [ 82%]",
                                "tests/mirror_sync/test_gate.py::test_check_retain_accepts_a_correct_gate PASSED [ 83%]",
                                "tests/mirror_sync/test_gate.py::test_check_retain_rejects_a_reversed_gate PASSED [ 83%]",
                                "tests/mirror_sync/test_gate.py::test_check_retain_rejects_a_wrong_release_list PASSED [ 83%]",
                                "tests/mirror_sync/test_gate.py::test_check_retain_rejects_a_non_canonical_gate PASSED [ 83%]",
                                "tests/mirror_sync/test_gate.py::test_check_retain_rejects_a_key_no_later_layer_supplies PASSED [ 83%]",
                                "tests/mirror_sync/test_gate.py::test_check_retain_rejects_a_gate_in_the_010_layer PASSED [ 83%]",
                                "tests/mirror_sync/test_gate.py::test_retain_unverified_is_rejected_for_a_canonical_gate PASSED [ 83%]",
                                "tests/mirror_sync/test_gate.py::test_retain_unverified_is_rejected_when_no_gate_exists PASSED [ 83%]",
                                "tests/mirror_sync/test_gate.py::test_retain_unverified_accepts_a_present_non_canonical_gate PASSED [ 84%]",
                                "tests/mirror_sync/test_gate.py::test_an_unknown_disposition_key_is_an_error PASSED [ 84%]",
                                "tests/mirror_sync/test_gate.py::test_a_failed_retention_check_propagates_rather_than_becoming_missing PASSED [ 84%]",
                                "tests/mirror_sync/test_gate.py::test_missing_dispositions_only_lists_rows_with_no_flag PASSED [ 84%]",
                                "tests/mirror_sync/test_gate.py::test_accept_upstream_is_noted PASSED     [ 84%]",
                                "tests/mirror_sync/test_layers.py::test_mirror_layer_refuses_a_monolithic_upstream_layout PASSED [ 84%]",
                                "tests/mirror_sync/test_layers.py::test_mirror_layer_refuses_an_empty_upstream_listing PASSED [ 84%]",
                                "tests/mirror_sync/test_layers.py::test_every_arms_refusal_shares_one_base PASSED [ 84%]",
                                "tests/mirror_sync/test_layers.py::test_mirror_layer_writes_prefixed_copies_and_deletes_orphans PASSED [ 85%]",
                                "tests/mirror_sync/test_layers.py::test_mirror_layer_rejects_an_unsafe_upstream_name PASSED [ 85%]",
                                "tests/mirror_sync/test_layers.py::test_mirror_homes_reads_the_tree_with_last_wins PASSED [ 85%]",
                                "tests/mirror_sync/test_layers.py::test_compat_layer_emits_values_from_the_release_that_still_has_them PASSED [ 85%]",
                                "tests/mirror_sync/test_layers.py::test_compat_layer_excludes_keys_another_osism_layer_supplies PASSED [ 85%]",
                                "tests/mirror_sync/test_layers.py::test_compat_layer_excludes_keys_the_target_still_defines PASSED [ 85%]",
                                "tests/mirror_sync/test_layers.py::test_compat_layer_raises_when_a_dropped_key_has_no_value PASSED [ 85%]",
                                "tests/mirror_sync/test_layers.py::test_compat_layer_deletes_a_managed_file_with_no_desired_keys PASSED [ 85%]",
                                "tests/mirror_sync/test_layers.py::test_report_mode_reports_an_unmarked_file_instead_of_refusing PASSED [ 86%]",
                                "tests/mirror_sync/test_layers.py::test_compat_layer_refuses_an_unmarked_managed_file PASSED [ 86%]",
                                "tests/mirror_sync/test_layers.py::test_compat_layer_refuses_to_delete_an_unmarked_file PASSED [ 86%]",
                                "tests/mirror_sync/test_layers.py::test_require_owned_rejects_a_marker_used_inside_a_value PASSED [ 86%]",
                                "tests/mirror_sync/test_layers.py::test_require_owned_rejects_a_marker_below_the_header PASSED [ 86%]",
                                "tests/mirror_sync/test_layers.py::test_compat_layer_never_inspects_a_file_outside_the_range PASSED [ 86%]",
                                "tests/mirror_sync/test_layers.py::test_compat_layer_ignores_releases_after_the_target PASSED [ 86%]",
                                "tests/mirror_sync/test_layers.py::test_changed_and_created_compares_bytes_against_disk PASSED [ 86%]",
                                "tests/mirror_sync/test_layers.py::test_changed_and_created_sees_a_content_change PASSED [ 87%]",
                                "tests/mirror_sync/test_layers.py::test_generated_sequences_are_indented_for_yamllint PASSED [ 87%]",
                                "tests/mirror_sync/test_layers.py::test_generated_values_match_the_upstream_quoting_style PASSED [ 87%]",
                                "tests/mirror_sync/test_layers.py::test_mapping_keys_are_not_quoted PASSED [ 87%]",
                                "tests/mirror_sync/test_layers.py::test_nested_keys_stay_bare_and_keep_upstream_order PASSED [ 87%]",
                                "tests/mirror_sync/test_model.py::test_has_changes_is_false_when_every_write_is_unchanged PASSED [ 87%]",
                                "tests/mirror_sync/test_model.py::test_has_changes_true_on_a_changed_write PASSED [ 87%]",
                                "tests/mirror_sync/test_model.py::test_has_changes_true_on_a_mirror_delete_alone PASSED [ 87%]",
                                "tests/mirror_sync/test_model.py::test_has_changes_true_on_a_compat_delete_alone PASSED [ 88%]",
                                "tests/mirror_sync/test_model.py::test_semantic_keys_selects_only_semantic_rows_in_row_order PASSED [ 88%]",
                                "tests/mirror_sync/test_model.py::test_plan_is_frozen PASSED              [ 88%]",
                                "tests/mirror_sync/test_render.py::test_json_payload_is_deterministic_and_versioned PASSED [ 88%]",
                                "tests/mirror_sync/test_render.py::test_json_payload_round_trips_through_the_pins_validator PASSED [ 88%]",
                                "tests/mirror_sync/test_render.py::test_json_counts_each_class_separately PASSED [ 88%]",
                                "tests/mirror_sync/test_render.py::test_text_labels_representation_and_shows_attribution PASSED [ 88%]",
                                "tests/mirror_sync/test_render.py::test_text_offers_every_disposition_now_that_the_gate_exists PASSED [ 89%]",
                                "tests/mirror_sync/test_render.py::test_text_lists_the_dispositions_that_were_applied PASSED [ 89%]",
                                "tests/mirror_sync/test_render.py::test_text_distinguishes_no_rows_from_nothing_computed PASSED [ 89%]",
                                "tests/mirror_sync/test_render.py::test_exit_code_2_when_a_blocker_exists_even_with_no_semantic_row PASSED [ 89%]",
                                "tests/mirror_sync/test_render.py::test_text_names_the_blocker_and_how_to_clear_it PASSED [ 89%]",
                                "tests/mirror_sync/test_render.py::test_exit_code_2_when_a_semantic_row_is_undispositioned PASSED [ 89%]",
                                "tests/mirror_sync/test_render.py::test_exit_code_1_when_changes_are_planned_and_all_dispositioned PASSED [ 89%]",
                                "tests/mirror_sync/test_render.py::test_exit_code_0_when_nothing_would_change PASSED [ 89%]",
                                "tests/mirror_sync/test_render.py::test_exit_code_1_when_only_files_change_and_no_row_needs_review PASSED [ 90%]",
                                "tests/mirror_sync/test_render.py::test_a_retain_flag_clears_a_row_now_that_it_is_validated_elsewhere PASSED [ 90%]",
                                "tests/mirror_sync/test_render.py::test_acceptance_command_prepends_the_worktree_and_keeps_every_base_dir PASSED [ 90%]",
                                "tests/mirror_sync/test_render.py::test_acceptance_command_works_for_a_remote_mode_run PASSED [ 90%]",
                                "tests/mirror_sync/test_render.py::test_acceptance_command_quotes_paths_with_spaces PASSED [ 90%]",
                                "tests/mirror_sync/test_render.py::test_acceptance_command_warns_when_the_derived_range_is_newer PASSED [ 90%]",
                                "tests/mirror_sync/test_render.py::test_acceptance_command_has_no_caveat_when_the_target_is_newest PASSED [ 90%]",
                                "tests/mirror_sync/test_render.py::test_text_summary_names_each_class_and_what_it_means PASSED [ 90%]",
                                "tests/mirror_sync/test_render.py::test_text_inlines_a_short_value_but_elides_a_long_one PASSED [ 91%]",
                                "tests/mirror_sync/test_render.py::test_text_truncates_a_long_name_list_to_a_sample_and_a_count PASSED [ 91%]",
                                "tests/mirror_sync/test_render.py::test_text_groups_a_repeated_note_instead_of_repeating_it PASSED [ 91%]",
                                "tests/mirror_sync/test_render.py::test_text_header_names_the_base_ref_alongside_its_sha PASSED [ 91%]",
                                "tests/mirror_sync/test_render.py::test_text_states_the_exit_code_and_where_the_full_values_are PASSED [ 91%]",
                                "tests/mirror_sync/test_render.py::test_text_omits_the_exit_line_when_the_caller_has_no_code_yet PASSED [ 91%]",
                                "tests/mirror_sync/test_render.py::test_shape_pluralises_a_single_entry_correctly PASSED [ 91%]",
                                "tests/mirror_sync/test_render.py::test_a_back_compat_layer_says_whether_it_is_new_or_already_correct PASSED [ 91%]",
                                "tests/mirror_sync/test_render.py::test_a_header_only_rewrite_says_so_instead_of_just_rewritten PASSED [ 92%]",
                                "tests/mirror_sync/test_render.py::test_real_key_movement_is_reported_as_counts PASSED [ 92%]",
                                "tests/mirror_sync/test_render.py::test_exit_0_after_an_apply_does_not_claim_there_was_nothing_to_do PASSED [ 92%]",
                                "tests/mirror_sync/test_render.py::test_commit_summary_records_pins_and_dispositions PASSED [ 92%]",
                                "tests/mirror_sync/test_render.py::test_commit_summary_wraps_at_72_for_a_commit_body PASSED [ 92%]",
                                "tests/mirror_sync/test_source_commits.py::test_resolve_commit_local_peels_branch_to_sha PASSED [ 92%]",
                                "tests/mirror_sync/test_source_commits.py::test_resolve_commit_local_accepts_a_sha PASSED [ 92%]",
                                "tests/mirror_sync/test_source_commits.py::test_resolve_commit_prefers_a_remote_over_a_stale_local_branch PASSED [ 92%]",
                                "tests/mirror_sync/test_source_commits.py::test_resolve_commit_falls_back_to_a_local_head PASSED [ 93%]",
                                "tests/mirror_sync/test_source_commits.py::test_resolve_commit_unknown_ref_raises PASSED [ 93%]",
                                "tests/mirror_sync/test_source_commits.py::test_is_ancestor_local PASSED  [ 93%]",
                                "tests/mirror_sync/test_source_commits.py::test_is_ancestor_raises_on_a_missing_descendant PASSED [ 93%]",
                                "tests/mirror_sync/test_source_commits.py::test_is_ancestor_raises_when_the_ancestor_object_is_absent PASSED [ 93%]",
                                "tests/mirror_sync/test_source_commits.py::test_merge_base_local PASSED   [ 93%]",
                                "tests/mirror_sync/test_source_commits.py::test_local_checkout_returns_none_when_remote PASSED [ 93%]",
                                "tests/mirror_sync/test_source_commits.py::test_local_checkout_returns_the_dir_when_local PASSED [ 93%]",
                                "tests/mirror_sync/test_source_commits.py::test_resolve_commit_remote_reads_sha_from_commits_api PASSED [ 94%]",
                                "tests/mirror_sync/test_source_commits.py::test_resolve_commit_rejects_a_non_sha_from_the_api PASSED [ 94%]",
                                "tests/mirror_sync/test_source_commits.py::test_is_ancestor_remote_uses_compare_status PASSED [ 94%]",
                                "tests/mirror_sync/test_source_commits.py::test_merge_base_remote_reads_compare_payload PASSED [ 94%]",
                                "tests/mirror_sync/test_worktree.py::test_default_path_leaf_is_named_defaults PASSED [ 94%]",
                                "tests/mirror_sync/test_worktree.py::test_create_yields_a_clean_tree_and_the_base_commit PASSED [ 94%]",
                                "tests/mirror_sync/test_worktree.py::test_create_refuses_an_existing_path PASSED [ 94%]",
                                "tests/mirror_sync/test_worktree.py::test_uncommitted_operator_work_is_not_consulted PASSED [ 94%]",
                                "tests/mirror_sync/test_worktree.py::test_create_removes_the_worktree_when_head_cannot_be_read PASSED [ 95%]",
                                "tests/mirror_sync/test_worktree.py::test_session_removes_on_exit_by_default PASSED [ 95%]",
                                "tests/mirror_sync/test_worktree.py::test_session_removes_on_exception_too PASSED [ 95%]",
                                "tests/mirror_sync/test_worktree.py::test_session_keeps_when_asked PASSED [ 95%]",
                                "tests/mirror_sync/test_worktree.py::test_session_raises_when_cleanup_fails PASSED [ 95%]",
                                "tests/mirror_sync/test_worktree.py::test_cleanup_failure_does_not_mask_the_original_error PASSED [ 95%]",
                                "tests/mirror_sync/test_worktree.py::test_every_failure_is_a_worktree_error PASSED [ 95%]",
                                "tests/mirror_sync/test_write.py::test_writes_only_changed_paths PASSED   [ 95%]",
                                "tests/mirror_sync/test_write.py::test_deletes_after_writing PASSED       [ 96%]",
                                "tests/mirror_sync/test_write.py::test_a_missing_delete_target_is_not_an_error PASSED [ 96%]",
                                "tests/mirror_sync/test_write.py::test_refuses_a_path_outside_the_all_directory PASSED [ 96%]",
                                "tests/mirror_sync/test_write.py::test_refuses_when_the_all_directory_is_a_symlink PASSED [ 96%]",
                                "tests/mirror_sync/test_write.py::test_refuses_a_symlinked_destination PASSED [ 96%]",
                                "tests/mirror_sync/test_write.py::test_refuses_a_symlinked_delete_target PASSED [ 96%]",
                                "tests/mirror_sync/test_write.py::test_refuses_a_traversal_that_stays_lexically_under_all PASSED [ 96%]",
                                "tests/mirror_sync/test_write.py::test_refuses_an_absolute_path PASSED    [ 96%]",
                                "tests/mirror_sync/test_write.py::test_refuses_when_the_plan_is_blocked PASSED [ 97%]",
                                "tests/mirror_sync/test_write.py::test_signals_before_the_first_mutation PASSED [ 97%]",
                                "tests/mirror_sync/test_write.py::test_a_preflight_failure_does_not_signal PASSED [ 97%]",
                                "tests/mirror_sync/test_write.py::test_a_blocked_plan_does_not_signal PASSED [ 97%]",
                                "tests/test_driver_groups.py::test_group_image_runs_only_image_plugins PASSED [ 97%]",
                                "tests/test_driver_groups.py::test_group_kolla_runs_only_kolla_plugins PASSED [ 97%]",
                                "tests/test_driver_groups.py::test_group_all_runs_both_groups PASSED      [ 97%]",
                                "tests/test_driver_groups.py::test_archive_mode_preamble_not_misleading PASSED [ 97%]",
                                "tests/test_driver_groups.py::test_use_raw_get_preamble_warns_slow PASSED [ 98%]",
                                "tests/test_driver_groups.py::test_missing_group_errors PASSED            [ 98%]",
                                "tests/test_driver_groups.py::test_demo_exits_0_without_reading_config_or_allowlist PASSED [ 98%]",
                                "tests/test_driver_groups.py::test_demo_renders_every_real_plugin PASSED  [ 98%]",
                                "tests/test_driver_groups.py::test_demo_json_emits_entries PASSED         [ 98%]",
                                "tests/test_driver_groups.py::test_help_lists_plugin_groups PASSED        [ 98%]",
                                "tests/test_release_notes_defaults.py::test_layer_is_sorted_and_filtered PASSED [ 98%]",
                                "tests/test_release_notes_defaults.py::test_layer_omits_directories_and_keeps_only_blobs PASSED [ 98%]",
                                "tests/test_release_notes_defaults.py::test_layer_none_on_http_error PASSED [ 99%]",
                                "tests/test_release_notes_defaults.py::test_layer_none_on_truncated_tree PASSED [ 99%]",
                                "tests/test_release_notes_defaults.py::test_layer_none_on_request_exception PASSED [ 99%]",
                                "tests/test_release_notes_defaults.py::test_section_fetches_the_layer_before_099_and_names_the_layer_in_prose PASSED [ 99%]",
                                "tests/test_release_notes_defaults.py::test_layer_empty_list_when_listing_succeeds_with_no_matches PASSED [ 99%]",
                                "tests/test_release_notes_defaults.py::test_section_is_none_when_the_listing_fails_even_if_099_would_fetch PASSED [ 99%]",
                                "tests/test_release_notes_defaults.py::test_section_is_none_when_the_listing_is_truncated PASSED [ 99%]",
                                "tests/test_release_notes_defaults.py::test_section_is_none_when_one_mirror_file_fails_to_fetch PASSED [100%]",
                                "",
                                "======================== 789 passed, 2 skipped in 8.93s ========================",
                                "drift-test: 9689 I exit 0 (9.37 seconds) /home/zuul/src/github.com/osism/release> pytest tests/ -v pid=1797 [tox/execute/api.py:337]",
                                "  drift-test: OK (9.42=setup[0.06]+cmd[9.37] seconds)",
                                "  congratulations :) (9.45 seconds)"
                            ],
                            "zuul_log_id": "0242ac1f-6606-31f3-a2c4-000000000014-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:55.764214Z",
                            "start": "2026-10-04T03:01:45.247166Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000014",
                        "name": "Run tox"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "tox_parse_output",
                            "changed": false,
                            "failed_when_result": false,
                            "file_comments": {},
                            "invocation": {
                                "module_args": {
                                    "tox_envlist": "drift-test",
                                    "tox_output": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
                                    "workdir": "src/github.com/osism/release"
                                }
                            }
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:56.390112Z",
                            "start": "2026-10-04T03:01:55.771434Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000015",
                        "name": "Look for output"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "zuul_return",
                            "changed": false,
                            "false_condition": "file_comments.file_comments",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-31f3-a2c4-00000000000c",
                        "name": "tox",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/tox"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:56.487228Z",
                            "start": "2026-10-04T03:01:56.439602Z"
                        },
                        "id": "0242ac1f-6606-31f3-a2c4-000000000016",
                        "name": "Return file comments to Zuul"
                    }
                }
            ]
        }
    ],
    "stats": {
        "debian-bookworm": {
            "changed": 9,
            "failures": 0,
            "ignored": 0,
            "ok": 13,
            "rescued": 0,
            "skipped": 4,
            "unreachable": 0
        }
    },
    "trusted": false
},
{
    "branch": "master",
    "index": "0",
    "phase": "post",
    "playbook": "github.com/osism/openinfra-zuul-jobs/playbooks/tox/post.yaml",
    "plays": [
        {
            "play": {
                "duration": {
                    "end": "2026-10-04T03:02:03.525748Z",
                    "start": "2026-10-04T03:01:58.451641Z"
                },
                "id": "0242ac1f-6606-1d5d-47bf-000000000002",
                "name": "all"
            },
            "tasks": [
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "changed": false,
                            "false_condition": "groups['all'] | length > 1",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-1d5d-47bf-000000000005",
                        "name": "fetch-tox-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-tox-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:58.534961Z",
                            "start": "2026-10-04T03:01:58.465621Z"
                        },
                        "id": "0242ac1f-6606-1d5d-47bf-000000000007",
                        "name": "Set tox log path for multiple nodes"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "ansible_facts": {
                                "log_path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/tox"
                            },
                            "changed": false
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-1d5d-47bf-000000000005",
                        "name": "fetch-tox-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-tox-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:58.585239Z",
                            "start": "2026-10-04T03:01:58.540145Z"
                        },
                        "id": "0242ac1f-6606-1d5d-47bf-000000000008",
                        "name": "Set tox log path for single node"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "file",
                            "changed": true,
                            "diff": {
                                "after": {
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/tox",
                                    "state": "directory"
                                },
                                "before": {
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/tox",
                                    "state": "absent"
                                }
                            },
                            "gid": 0,
                            "group": "root",
                            "invocation": {
                                "module_args": {
                                    "_diff_peek": null,
                                    "_original_basename": null,
                                    "access_time": null,
                                    "access_time_format": "%Y%m%d%H%M.%S",
                                    "attributes": null,
                                    "follow": true,
                                    "force": false,
                                    "group": null,
                                    "mode": 493,
                                    "modification_time": null,
                                    "modification_time_format": "%Y%m%d%H%M.%S",
                                    "owner": null,
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/tox",
                                    "recurse": false,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": null,
                                    "state": "directory",
                                    "unsafe_writes": false
                                }
                            },
                            "mode": "0755",
                            "owner": "root",
                            "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/tox",
                            "size": 4096,
                            "state": "directory",
                            "uid": 0
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-1d5d-47bf-000000000005",
                        "name": "fetch-tox-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-tox-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:59.661880Z",
                            "start": "2026-10-04T03:01:58.589463Z"
                        },
                        "id": "0242ac1f-6606-1d5d-47bf-000000000009",
                        "name": "Ensure local tox dir"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "file",
                            "changed": false,
                            "false_condition": "zuul_use_fetch_output",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-1d5d-47bf-000000000005",
                        "name": "fetch-tox-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-tox-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:59.770961Z",
                            "start": "2026-10-04T03:01:59.667436Z"
                        },
                        "id": "0242ac1f-6606-1d5d-47bf-00000000000a",
                        "name": "Ensure zuul-output tox dir"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "ansible_facts": {
                                "envlist": [
                                    "drift-test"
                                ]
                            },
                            "changed": false
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-1d5d-47bf-000000000005",
                        "name": "fetch-tox-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-tox-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:01:59.844152Z",
                            "start": "2026-10-04T03:01:59.775404Z"
                        },
                        "id": "0242ac1f-6606-1d5d-47bf-00000000000b",
                        "name": "Set envlist fact"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": true,
                            "cmd": [
                                "/home/zuul/.local/tox/bin/tox",
                                "--version"
                            ],
                            "delta": "0:00:00.353979",
                            "end": "2026-10-04 03:02:00.827018",
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "/home/zuul/.local/tox/bin/tox --version",
                                    "_uses_shell": false,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": null,
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-1d5d-47bf-00000000000c-1-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "start": "2026-10-04 03:02:00.473039",
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "ROOT: No loadable tox.ini or setup.cfg or pyproject.toml or tox.toml found, assuming empty tox.ini at /home/zuul\n4.64.8 from /home/zuul/.local/tox/lib/python3.11/site-packages/tox/__init__.py",
                            "stdout_lines": [
                                "ROOT: No loadable tox.ini or setup.cfg or pyproject.toml or tox.toml found, assuming empty tox.ini at /home/zuul",
                                "4.64.8 from /home/zuul/.local/tox/lib/python3.11/site-packages/tox/__init__.py"
                            ],
                            "zuul_log_id": "0242ac1f-6606-1d5d-47bf-00000000000c-1-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-1d5d-47bf-000000000005",
                        "name": "fetch-tox-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-tox-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:00.898327Z",
                            "start": "2026-10-04T03:01:59.897714Z"
                        },
                        "id": "0242ac1f-6606-1d5d-47bf-00000000000c",
                        "name": "Get tox version"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": false,
                            "false_condition": "tox_envlist is not defined or not tox_envlist",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-1d5d-47bf-000000000005",
                        "name": "fetch-tox-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-tox-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:01.464619Z",
                            "start": "2026-10-04T03:02:00.957154Z"
                        },
                        "id": "0242ac1f-6606-1d5d-47bf-00000000000d",
                        "name": "Find all default environments"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "changed": false,
                            "false_condition": "tox_default_environments.stdout_lines is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-1d5d-47bf-000000000005",
                        "name": "fetch-tox-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-tox-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:01.557388Z",
                            "start": "2026-10-04T03:02:01.472809Z"
                        },
                        "id": "0242ac1f-6606-1d5d-47bf-00000000000e",
                        "name": "Set envlist fact"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "command",
                            "changed": false,
                            "false_condition": "(tox_envlist is defined and tox_envlist == 'ALL') or (envlist is defined and not envlist)",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-1d5d-47bf-000000000005",
                        "name": "fetch-tox-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-tox-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:02.108407Z",
                            "start": "2026-10-04T03:02:01.603292Z"
                        },
                        "id": "0242ac1f-6606-1d5d-47bf-00000000000f",
                        "name": "Find all default environments"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "changed": false,
                            "false_condition": "tox_all_environments.stdout_lines is defined",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-1d5d-47bf-000000000005",
                        "name": "fetch-tox-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-tox-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:02.146736Z",
                            "start": "2026-10-04T03:02:02.113706Z"
                        },
                        "id": "0242ac1f-6606-1d5d-47bf-000000000010",
                        "name": "Set envlist fact"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "copy",
                            "changed": false,
                            "msg": "All items skipped",
                            "results": [
                                {
                                    "ansible_loop_var": "zj_testenv",
                                    "changed": false,
                                    "false_condition": "zuul_use_fetch_output",
                                    "skip_reason": "Conditional result was False",
                                    "skipped": true,
                                    "zj_testenv": "drift-test"
                                }
                            ],
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-1d5d-47bf-000000000005",
                        "name": "fetch-tox-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-tox-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:02.225382Z",
                            "start": "2026-10-04T03:02:02.151658Z"
                        },
                        "id": "0242ac1f-6606-1d5d-47bf-000000000011",
                        "name": "Copy tox logs"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "synchronize",
                            "changed": true,
                            "msg": "All items completed",
                            "results": [
                                {
                                    "ansible_loop_var": "zj_testenv",
                                    "changed": true,
                                    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --no-owner --no-group --rsh='/usr/bin/ssh -S none -o Port=22' --out-format='<<CHANGED>>%i %n%L' '[zuul@2a13:1a81:8000:3124:f816:3eff:fef5:1f1c]:src/github.com/osism/release/.tox/drift-test/log/' /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/tox/drift-test",
                                    "failed": false,
                                    "failed_when_result": false,
                                    "invocation": {
                                        "module_args": {
                                            "_local_rsync_password": null,
                                            "_local_rsync_path": "rsync",
                                            "_ssh_args": null,
                                            "_substitute_controller": false,
                                            "archive": true,
                                            "checksum": false,
                                            "compress": true,
                                            "copy_links": false,
                                            "delay_updates": true,
                                            "delete": false,
                                            "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/tox/drift-test",
                                            "dest_port": 22,
                                            "dirs": false,
                                            "existing_only": false,
                                            "group": false,
                                            "link_dest": null,
                                            "links": null,
                                            "mode": "pull",
                                            "owner": false,
                                            "partial": false,
                                            "perms": null,
                                            "private_key": null,
                                            "recursive": null,
                                            "rsync_opts": [],
                                            "rsync_path": null,
                                            "rsync_timeout": 0,
                                            "set_remote_user": true,
                                            "src": "[zuul@2a13:1a81:8000:3124:f816:3eff:fef5:1f1c]:src/github.com/osism/release/.tox/drift-test/log/",
                                            "ssh_connection_multiplexing": false,
                                            "times": null,
                                            "use_ssh_args": false,
                                            "verify_host": true
                                        }
                                    },
                                    "msg": "created directory /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/tox/drift-test\ncd+++++++++ ./\n>f+++++++++ 1-commands[0].log\n",
                                    "rc": 0,
                                    "stdout_lines": [
                                        "created directory /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/tox/drift-test",
                                        "cd+++++++++ ./",
                                        ">f+++++++++ 1-commands[0].log"
                                    ],
                                    "zj_testenv": "drift-test"
                                }
                            ]
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-1d5d-47bf-000000000005",
                        "name": "fetch-tox-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-tox-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:03.525748Z",
                            "start": "2026-10-04T03:02:02.231025Z"
                        },
                        "id": "0242ac1f-6606-1d5d-47bf-000000000013",
                        "name": "Collect tox logs"
                    }
                }
            ]
        }
    ],
    "stats": {
        "debian-bookworm": {
            "changed": 3,
            "failures": 0,
            "ignored": 0,
            "ok": 5,
            "rescued": 0,
            "skipped": 7,
            "unreachable": 0
        }
    },
    "trusted": false
},
{
    "branch": "master",
    "index": "1",
    "phase": "post",
    "playbook": "github.com/osism/openinfra-zuul-jobs/playbooks/unittests/post.yaml",
    "plays": [
        {
            "play": {
                "duration": {
                    "end": "2026-10-04T03:02:04.900717Z",
                    "start": "2026-10-04T03:02:04.380374Z"
                },
                "id": "0242ac1f-6606-db36-8e74-000000000002",
                "name": "all"
            },
            "tasks": [
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "script",
                            "changed": true,
                            "exception": "NoneType: None\n",
                            "failed_when_result": false,
                            "msg": "non-zero return code",
                            "rc": 1,
                            "stderr": "Shared connection to 2a13:1a81:8000:3124:f816:3eff:fef5:1f1c closed.\r\n",
                            "stderr_lines": [
                                "Shared connection to 2a13:1a81:8000:3124:f816:3eff:fef5:1f1c closed."
                            ],
                            "stdout": "",
                            "stdout_lines": []
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-db36-8e74-000000000005",
                        "name": "fetch-subunit-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-subunit-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:04.596141Z",
                            "start": "2026-10-04T03:02:04.393727Z"
                        },
                        "id": "0242ac1f-6606-db36-8e74-000000000007",
                        "name": "Find stestr or testr executable"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "changed": false,
                            "false_condition": "testr_command.rc == 0",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-db36-8e74-000000000005",
                        "name": "fetch-subunit-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-subunit-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:04.626562Z",
                            "start": "2026-10-04T03:02:04.600486Z"
                        },
                        "id": "0242ac1f-6606-db36-8e74-000000000009",
                        "name": "Get the list of directories with subunit files"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "find",
                            "changed": false,
                            "false_condition": "testr_command.rc == 0",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-db36-8e74-000000000005",
                        "name": "fetch-subunit-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-subunit-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:04.653855Z",
                            "start": "2026-10-04T03:02:04.630976Z"
                        },
                        "id": "0242ac1f-6606-db36-8e74-00000000000a",
                        "name": "Find any inflight partial subunit files"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "copy",
                            "changed": false,
                            "false_condition": "testr_command.rc == 0",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-db36-8e74-000000000005",
                        "name": "fetch-subunit-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-subunit-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:04.710402Z",
                            "start": "2026-10-04T03:02:04.659476Z"
                        },
                        "id": "0242ac1f-6606-db36-8e74-00000000000c",
                        "name": "Copy any inflight subunit files"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "tempfile",
                            "changed": false,
                            "false_condition": "testr_command.rc == 0",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-db36-8e74-000000000005",
                        "name": "fetch-subunit-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-subunit-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:04.739153Z",
                            "start": "2026-10-04T03:02:04.715948Z"
                        },
                        "id": "0242ac1f-6606-db36-8e74-00000000000f",
                        "name": "Create a temporary file to store the subunit stream"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "shell",
                            "changed": false,
                            "false_condition": "testr_command.rc == 0",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-db36-8e74-000000000005",
                        "name": "fetch-subunit-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-subunit-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:04.782913Z",
                            "start": "2026-10-04T03:02:04.744131Z"
                        },
                        "id": "0242ac1f-6606-db36-8e74-000000000010",
                        "name": "Generate subunit file"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "copy",
                            "changed": false,
                            "false_condition": "testr_command.rc == 0",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-db36-8e74-000000000005",
                        "name": "fetch-subunit-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-subunit-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:04.820197Z",
                            "start": "2026-10-04T03:02:04.787303Z"
                        },
                        "id": "0242ac1f-6606-db36-8e74-000000000012",
                        "name": "Copy the combined subunit file to the zuul work directory"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "file",
                            "changed": false,
                            "false_condition": "testr_command.rc == 0",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-db36-8e74-000000000005",
                        "name": "fetch-subunit-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-subunit-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:04.847628Z",
                            "start": "2026-10-04T03:02:04.824607Z"
                        },
                        "id": "0242ac1f-6606-db36-8e74-000000000013",
                        "name": "Remove the temporary file"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "include_tasks",
                            "changed": false,
                            "false_condition": "testr_command.rc == 0",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-db36-8e74-000000000005",
                        "name": "fetch-subunit-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/untrusted/project_0/github.com/osism/openinfra-zuul-jobs/roles/fetch-subunit-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:04.900717Z",
                            "start": "2026-10-04T03:02:04.852702Z"
                        },
                        "id": "0242ac1f-6606-db36-8e74-000000000014",
                        "name": "Process and fetch subunit results"
                    }
                }
            ]
        }
    ],
    "stats": {
        "debian-bookworm": {
            "changed": 1,
            "failures": 0,
            "ignored": 0,
            "ok": 1,
            "rescued": 0,
            "skipped": 8,
            "unreachable": 0
        }
    },
    "trusted": false
},
{
    "branch": "main",
    "index": "2",
    "phase": "post",
    "playbook": "github.com/osism/zuul-config/playbooks/base/post-fetch.yaml",
    "plays": [
        {
            "play": {
                "duration": {
                    "end": "2026-10-04T03:02:35.307914Z",
                    "start": "2026-10-04T03:02:05.785243Z"
                },
                "id": "0242ac1f-6606-e63e-fabf-000000000002",
                "name": "Base post-fetch"
            },
            "tasks": [
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.file",
                            "changed": false,
                            "diff": {
                                "after": {
                                    "path": "/home/zuul/zuul-output/logs"
                                },
                                "before": {
                                    "path": "/home/zuul/zuul-output/logs"
                                }
                            },
                            "gid": 1000,
                            "group": "zuul",
                            "invocation": {
                                "module_args": {
                                    "_diff_peek": null,
                                    "_original_basename": null,
                                    "access_time": null,
                                    "access_time_format": "%Y%m%d%H%M.%S",
                                    "attributes": null,
                                    "follow": true,
                                    "force": false,
                                    "group": null,
                                    "mode": "0755",
                                    "modification_time": null,
                                    "modification_time_format": "%Y%m%d%H%M.%S",
                                    "owner": null,
                                    "path": "/home/zuul/zuul-output/logs",
                                    "recurse": false,
                                    "selevel": null,
                                    "serole": null,
                                    "setype": null,
                                    "seuser": null,
                                    "src": null,
                                    "state": "directory",
                                    "unsafe_writes": false
                                }
                            },
                            "mode": "0755",
                            "owner": "zuul",
                            "path": "/home/zuul/zuul-output/logs",
                            "size": 4096,
                            "state": "directory",
                            "uid": 1000
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-e63e-fabf-000000000007",
                        "name": "diagnose-network",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-network"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:06.242243Z",
                            "start": "2026-10-04T03:02:05.812716Z"
                        },
                        "id": "0242ac1f-6606-e63e-fabf-000000000009",
                        "name": "Ensure log directory exists"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.shell",
                            "ansible_job_id": "j531908206139.4105",
                            "changed": false,
                            "cmd": "set +e\nset -o pipefail\nphase=post\nout=/home/zuul/zuul-output/logs/net-debug.$phase.txt\ntargets=\"tarballs.opendev.org galaxy.ansible.com\"\niface=$(ip -6 route show default 2>/dev/null        | awk '{for(i=1;i<=NF;i++) if($i==\"dev\"){print $(i+1); exit}}')\n: \"${iface:=eth0}\"\ngw=$(ip -6 route show default 2>/dev/null     | awk '{for(i=1;i<=NF;i++) if($i==\"via\"){print $(i+1); exit}}')\n{\n  echo \"== date ==\";    date -Is\n  echo \"== iface / gw ==\"; echo \"iface=$iface gw=$gw\"\n  echo \"== ip -6 addr (lifetimes = SLAAC evidence) ==\"; ip -6 addr show\n  echo \"== ip -6 route show ==\"; ip -6 route show\n  echo \"== ip -6 route show default (expires/proto ra = RA evidence) ==\"\n  ip -6 route show default\n  echo \"== ip -4 route show default ==\"; ip -4 route show default\n  echo \"== accept_ra / forwarding (procfs; RA-suppression evidence) ==\"\n  for k in all default \"$iface\"; do\n    for s in forwarding accept_ra; do\n      v=$(cat \"/proc/sys/net/ipv6/conf/$k/$s\" 2>/dev/null)\n      echo \"net.ipv6.conf.$k.$s = ${v:-<unavailable>}\"\n    done\n  done\n  echo \"== resolvectl status ==\"\n  if command -v resolvectl >/dev/null 2>&1; then resolvectl status 2>&1\n  else echo \"resolvectl not installed\"; fi\n  echo \"== /etc/resolv.conf (resolver stub) ==\"\n  cat /etc/resolv.conf 2>/dev/null || echo \"(absent)\"\n  echo \"== /run/systemd/resolve/resolv.conf (upstreams) ==\"\n  cat /run/systemd/resolve/resolv.conf 2>/dev/null    || echo \"(no systemd-resolved upstream file)\"\n  for d in $targets; do\n    echo \"== target: $d ==\"\n    echo \"-- getent ahosts (families glibc returns) --\"\n    getent ahosts \"$d\" 2>&1\n    if command -v resolvectl >/dev/null 2>&1; then\n      echo \"-- resolvectl query --\"; resolvectl query --cache=no \"$d\" 2>&1\n    fi\n    v6=$(getent ahosts \"$d\" 2>/dev/null | awk '$1~/:/{print $1; exit}')\n    v4=$(getent ahosts \"$d\" 2>/dev/null         | awk '$1~/^[0-9]+(\\.[0-9]+){3}$/{print $1; exit}')\n    if [ -n \"$v6\" ]; then\n      echo \"-- ip -6 route get $v6 --\"; ip -6 route get \"$v6\" 2>&1\n    fi\n    if [ -n \"$v4\" ]; then\n      echo \"-- ip -4 route get $v4 --\"; ip -4 route get \"$v4\" 2>&1\n    fi\n    # Several attempts per family: a single sample misclassifies a\n    # ~50%-loss path as healthy or dead by coin flip, defeating the\n    # pre/post bracket. Bounded and in-line -- not a background sampler.\n    for fam in 6 4; do\n      echo \"-- curl -$fam (3 attempts) --\"\n      ok=0\n      for n in 1 2 3; do\n        curl -$fam -sS -m 10 -o /dev/null          -w \"  #$n http=%{http_code} ip=%{remote_ip} t=%{time_total}s\\n\"          \"https://$d/\" 2>&1 && ok=1 || echo \"  #$n curl -$fam FAILED\"\n      done\n      # Trace only the family that failed, to its resolved address:\n      # localises WHERE the failing path dies instead of tracing the\n      # healthy family. v4 via traceroute, v6 via traceroute6.\n      if [ \"$ok\" = 0 ]; then\n        addr=$v6; [ \"$fam\" = 4 ] && addr=$v4\n        tr=traceroute6; [ \"$fam\" = 4 ] && tr=traceroute\n        if [ -n \"$addr\" ] && command -v \"$tr\" >/dev/null 2>&1; then\n          echo \"  !! curl -$fam failed 3x; $tr to $addr\"\n          timeout 30 \"$tr\" -q1 -w2 \"$addr\" 2>&1\n        fi\n      fi\n    done\n  done\n  echo \"== ping -6 gateway ==\"\n  if [ -n \"$gw\" ]; then\n    ping -6 -c1 -W2 \"${gw}%${iface}\" 2>&1\n  else echo \"no v6 gw\"; fi\n} > \"$out\" 2>&1\n",
                            "delta": "0:00:06.208585",
                            "end": "2026-10-04 03:02:13.569786",
                            "failed_when_result": false,
                            "finished": 1,
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "set +e\nset -o pipefail\nphase=post\nout=/home/zuul/zuul-output/logs/net-debug.$phase.txt\ntargets=\"tarballs.opendev.org galaxy.ansible.com\"\niface=$(ip -6 route show default 2>/dev/null        | awk '{for(i=1;i<=NF;i++) if($i==\"dev\"){print $(i+1); exit}}')\n: \"${iface:=eth0}\"\ngw=$(ip -6 route show default 2>/dev/null     | awk '{for(i=1;i<=NF;i++) if($i==\"via\"){print $(i+1); exit}}')\n{\n  echo \"== date ==\";    date -Is\n  echo \"== iface / gw ==\"; echo \"iface=$iface gw=$gw\"\n  echo \"== ip -6 addr (lifetimes = SLAAC evidence) ==\"; ip -6 addr show\n  echo \"== ip -6 route show ==\"; ip -6 route show\n  echo \"== ip -6 route show default (expires/proto ra = RA evidence) ==\"\n  ip -6 route show default\n  echo \"== ip -4 route show default ==\"; ip -4 route show default\n  echo \"== accept_ra / forwarding (procfs; RA-suppression evidence) ==\"\n  for k in all default \"$iface\"; do\n    for s in forwarding accept_ra; do\n      v=$(cat \"/proc/sys/net/ipv6/conf/$k/$s\" 2>/dev/null)\n      echo \"net.ipv6.conf.$k.$s = ${v:-<unavailable>}\"\n    done\n  done\n  echo \"== resolvectl status ==\"\n  if command -v resolvectl >/dev/null 2>&1; then resolvectl status 2>&1\n  else echo \"resolvectl not installed\"; fi\n  echo \"== /etc/resolv.conf (resolver stub) ==\"\n  cat /etc/resolv.conf 2>/dev/null || echo \"(absent)\"\n  echo \"== /run/systemd/resolve/resolv.conf (upstreams) ==\"\n  cat /run/systemd/resolve/resolv.conf 2>/dev/null    || echo \"(no systemd-resolved upstream file)\"\n  for d in $targets; do\n    echo \"== target: $d ==\"\n    echo \"-- getent ahosts (families glibc returns) --\"\n    getent ahosts \"$d\" 2>&1\n    if command -v resolvectl >/dev/null 2>&1; then\n      echo \"-- resolvectl query --\"; resolvectl query --cache=no \"$d\" 2>&1\n    fi\n    v6=$(getent ahosts \"$d\" 2>/dev/null | awk '$1~/:/{print $1; exit}')\n    v4=$(getent ahosts \"$d\" 2>/dev/null         | awk '$1~/^[0-9]+(\\.[0-9]+){3}$/{print $1; exit}')\n    if [ -n \"$v6\" ]; then\n      echo \"-- ip -6 route get $v6 --\"; ip -6 route get \"$v6\" 2>&1\n    fi\n    if [ -n \"$v4\" ]; then\n      echo \"-- ip -4 route get $v4 --\"; ip -4 route get \"$v4\" 2>&1\n    fi\n    # Several attempts per family: a single sample misclassifies a\n    # ~50%-loss path as healthy or dead by coin flip, defeating the\n    # pre/post bracket. Bounded and in-line -- not a background sampler.\n    for fam in 6 4; do\n      echo \"-- curl -$fam (3 attempts) --\"\n      ok=0\n      for n in 1 2 3; do\n        curl -$fam -sS -m 10 -o /dev/null          -w \"  #$n http=%{http_code} ip=%{remote_ip} t=%{time_total}s\\n\"          \"https://$d/\" 2>&1 && ok=1 || echo \"  #$n curl -$fam FAILED\"\n      done\n      # Trace only the family that failed, to its resolved address:\n      # localises WHERE the failing path dies instead of tracing the\n      # healthy family. v4 via traceroute, v6 via traceroute6.\n      if [ \"$ok\" = 0 ]; then\n        addr=$v6; [ \"$fam\" = 4 ] && addr=$v4\n        tr=traceroute6; [ \"$fam\" = 4 ] && tr=traceroute\n        if [ -n \"$addr\" ] && command -v \"$tr\" >/dev/null 2>&1; then\n          echo \"  !! curl -$fam failed 3x; $tr to $addr\"\n          timeout 30 \"$tr\" -q1 -w2 \"$addr\" 2>&1\n        fi\n      fi\n    done\n  done\n  echo \"== ping -6 gateway ==\"\n  if [ -n \"$gw\" ]; then\n    ping -6 -c1 -W2 \"${gw}%${iface}\" 2>&1\n  else echo \"no v6 gw\"; fi\n} > \"$out\" 2>&1\n",
                                    "_uses_shell": true,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": "/bin/bash",
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-e63e-fabf-00000000000a-0-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "non-zero return code",
                            "rc": 1,
                            "results_file": "/home/zuul/.ansible_async/j531908206139.4105",
                            "start": "2026-10-04 03:02:07.361201",
                            "started": 1,
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "",
                            "stdout_lines": [],
                            "zuul_log_id": "0242ac1f-6606-e63e-fabf-00000000000a-0-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-e63e-fabf-000000000007",
                        "name": "diagnose-network",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-network"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:18.361222Z",
                            "start": "2026-10-04T03:02:06.248037Z"
                        },
                        "id": "0242ac1f-6606-e63e-fabf-00000000000a",
                        "name": "Snapshot dual-stack network state (post)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.shell",
                            "ansible_job_id": "j164148988025.4211",
                            "changed": false,
                            "cmd": "set +e\nset -o pipefail\nphase=post\nout=/home/zuul/zuul-output/logs/net-debug.$phase.txt\n{\n  echo \"== docker / buildkit IPv6 config ==\"\n  if ! command -v docker >/dev/null 2>&1; then\n    echo \"docker not available; skipped\"\n  else\n    echo \"-- docker info (IPv6 lines) --\"\n    if info=$(timeout 30 docker info 2>&1); then\n      printf '%s\\n' \"$info\" | grep -iE 'ipv6|ip6tables'        || echo \"(no IPv6 lines)\"\n    else\n      echo \"docker info FAILED/timed out (daemon down or no permission):\"\n      printf '%s\\n' \"$info\" | head -5\n    fi\n    echo \"-- /etc/docker/daemon.json --\"\n    cat /etc/docker/daemon.json 2>/dev/null || echo \"(absent)\"\n    echo \"-- docker network inspect bridge (EnableIPv6 + IPAM) --\"\n    timeout 30 docker network inspect bridge 2>&1      | grep -iE '\"Name\"|EnableIPv6|Subnet|Gateway'      || echo \"(inspect failed)\"\n    echo \"-- docker buildx ls --\"\n    timeout 30 docker buildx ls 2>&1 || echo \"(buildx unavailable)\"\n  fi\n} >> \"$out\" 2>&1\n",
                            "delta": "0:00:00.009954",
                            "end": "2026-10-04 03:02:19.050804",
                            "failed_when_result": false,
                            "finished": 1,
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "set +e\nset -o pipefail\nphase=post\nout=/home/zuul/zuul-output/logs/net-debug.$phase.txt\n{\n  echo \"== docker / buildkit IPv6 config ==\"\n  if ! command -v docker >/dev/null 2>&1; then\n    echo \"docker not available; skipped\"\n  else\n    echo \"-- docker info (IPv6 lines) --\"\n    if info=$(timeout 30 docker info 2>&1); then\n      printf '%s\\n' \"$info\" | grep -iE 'ipv6|ip6tables'        || echo \"(no IPv6 lines)\"\n    else\n      echo \"docker info FAILED/timed out (daemon down or no permission):\"\n      printf '%s\\n' \"$info\" | head -5\n    fi\n    echo \"-- /etc/docker/daemon.json --\"\n    cat /etc/docker/daemon.json 2>/dev/null || echo \"(absent)\"\n    echo \"-- docker network inspect bridge (EnableIPv6 + IPAM) --\"\n    timeout 30 docker network inspect bridge 2>&1      | grep -iE '\"Name\"|EnableIPv6|Subnet|Gateway'      || echo \"(inspect failed)\"\n    echo \"-- docker buildx ls --\"\n    timeout 30 docker buildx ls 2>&1 || echo \"(buildx unavailable)\"\n  fi\n} >> \"$out\" 2>&1\n",
                                    "_uses_shell": true,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": "/bin/bash",
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-e63e-fabf-00000000000b-0-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "results_file": "/home/zuul/.ansible_async/j164148988025.4211",
                            "start": "2026-10-04 03:02:19.040850",
                            "started": 1,
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "",
                            "stdout_lines": [],
                            "zuul_log_id": "0242ac1f-6606-e63e-fabf-00000000000b-0-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-e63e-fabf-000000000007",
                        "name": "diagnose-network",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-network"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:24.471483Z",
                            "start": "2026-10-04T03:02:18.367600Z"
                        },
                        "id": "0242ac1f-6606-e63e-fabf-00000000000b",
                        "name": "Snapshot Docker/BuildKit IPv6 config (teardown)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.shell",
                            "ansible_job_id": "j182193387052.4246",
                            "changed": false,
                            "cmd": "set +e\nset -o pipefail\nphase=post\nout=/home/zuul/zuul-output/logs/net-debug.$phase.txt\ntargets=\"tarballs.opendev.org galaxy.ansible.com\"\n{\n  echo \"== container netns exec probe (default bridge) ==\"\n  if ! command -v docker >/dev/null 2>&1; then\n    echo \"docker not available; skipped\"\n  else\n    # Prefer a full base image likely to carry ip/curl/getent,\n    # skipping dangling (<none>) tags; fall back to any local image\n    # ID (a valid run reference). Never pull. (docker image ls\n    # columns: REPOSITORY TAG IMAGE_ID ...)\n    img=$(timeout 30 docker image ls 2>/dev/null | awk      '$1~/^(ubuntu|debian)$/ && $2!=\"<none>\"{print $1\":\"$2; exit}')\n    if [ -z \"$img\" ]; then\n      img=$(timeout 30 docker image ls -q 2>/dev/null | head -1)\n    fi\n    if [ -z \"$img\" ]; then\n      echo \"no local image; skipped (will not pull over a broken network)\"\n    else\n      echo \"using local image $img\"\n      # Bound the whole probe: on the degraded node this role exists\n      # to diagnose, a wedged daemon can make `docker run` hang\n      # indefinitely and stall teardown. timeout keeps it best-effort.\n      # A killed client may orphan the container, but the node is torn\n      # down right after, so that is acceptable here.\n      timeout 60 docker run --rm \"$img\" sh -c '\n        echo \"tools: ip=$(command -v ip || echo no)\" \\\n             \"curl=$(command -v curl || echo no)\" \\\n             \"getent=$(command -v getent || echo no)\"\n        echo \"-- ip -6 addr / route --\"\n        (ip -6 addr show 2>/dev/null; ip -6 route show 2>/dev/null) \\\n          || cat /proc/net/ipv6_route 2>/dev/null || echo \"no ip tool\"\n        echo \"-- /etc/resolv.conf --\"; cat /etc/resolv.conf 2>/dev/null\n        for d in '\"$targets\"'; do\n          echo \"target $d:\"\n          getent ahosts \"$d\" 2>&1 | head -4 || echo \"  getent unavailable\"\n          (curl -6 -sS -m 8 -o /dev/null \\\n             -w \"  v6 %{http_code} %{remote_ip} t=%{time_total}\\n\" \\\n             \"https://$d/\" 2>&1 || echo \"  v6 FAIL/unavailable\")\n          (curl -4 -sS -m 8 -o /dev/null \\\n             -w \"  v4 %{http_code} %{remote_ip} t=%{time_total}\\n\" \\\n             \"https://$d/\" 2>&1 || echo \"  v4 FAIL/unavailable\")\n        done\n      ' 2>&1\n    fi\n  fi\n} >> \"$out\" 2>&1\n",
                            "delta": "0:00:00.009467",
                            "end": "2026-10-04 03:02:25.136599",
                            "failed_when_result": false,
                            "finished": 1,
                            "invocation": {
                                "module_args": {
                                    "_raw_params": "set +e\nset -o pipefail\nphase=post\nout=/home/zuul/zuul-output/logs/net-debug.$phase.txt\ntargets=\"tarballs.opendev.org galaxy.ansible.com\"\n{\n  echo \"== container netns exec probe (default bridge) ==\"\n  if ! command -v docker >/dev/null 2>&1; then\n    echo \"docker not available; skipped\"\n  else\n    # Prefer a full base image likely to carry ip/curl/getent,\n    # skipping dangling (<none>) tags; fall back to any local image\n    # ID (a valid run reference). Never pull. (docker image ls\n    # columns: REPOSITORY TAG IMAGE_ID ...)\n    img=$(timeout 30 docker image ls 2>/dev/null | awk      '$1~/^(ubuntu|debian)$/ && $2!=\"<none>\"{print $1\":\"$2; exit}')\n    if [ -z \"$img\" ]; then\n      img=$(timeout 30 docker image ls -q 2>/dev/null | head -1)\n    fi\n    if [ -z \"$img\" ]; then\n      echo \"no local image; skipped (will not pull over a broken network)\"\n    else\n      echo \"using local image $img\"\n      # Bound the whole probe: on the degraded node this role exists\n      # to diagnose, a wedged daemon can make `docker run` hang\n      # indefinitely and stall teardown. timeout keeps it best-effort.\n      # A killed client may orphan the container, but the node is torn\n      # down right after, so that is acceptable here.\n      timeout 60 docker run --rm \"$img\" sh -c '\n        echo \"tools: ip=$(command -v ip || echo no)\" \\\n             \"curl=$(command -v curl || echo no)\" \\\n             \"getent=$(command -v getent || echo no)\"\n        echo \"-- ip -6 addr / route --\"\n        (ip -6 addr show 2>/dev/null; ip -6 route show 2>/dev/null) \\\n          || cat /proc/net/ipv6_route 2>/dev/null || echo \"no ip tool\"\n        echo \"-- /etc/resolv.conf --\"; cat /etc/resolv.conf 2>/dev/null\n        for d in '\"$targets\"'; do\n          echo \"target $d:\"\n          getent ahosts \"$d\" 2>&1 | head -4 || echo \"  getent unavailable\"\n          (curl -6 -sS -m 8 -o /dev/null \\\n             -w \"  v6 %{http_code} %{remote_ip} t=%{time_total}\\n\" \\\n             \"https://$d/\" 2>&1 || echo \"  v6 FAIL/unavailable\")\n          (curl -4 -sS -m 8 -o /dev/null \\\n             -w \"  v4 %{http_code} %{remote_ip} t=%{time_total}\\n\" \\\n             \"https://$d/\" 2>&1 || echo \"  v4 FAIL/unavailable\")\n        done\n      ' 2>&1\n    fi\n  fi\n} >> \"$out\" 2>&1\n",
                                    "_uses_shell": true,
                                    "argv": null,
                                    "chdir": null,
                                    "creates": null,
                                    "executable": "/bin/bash",
                                    "expand_argument_vars": true,
                                    "removes": null,
                                    "stdin": null,
                                    "stdin_add_newline": true,
                                    "strip_empty_ends": true,
                                    "zuul_ansible_split_streams": false,
                                    "zuul_log_id": "0242ac1f-6606-e63e-fabf-00000000000c-0-debianbookworm",
                                    "zuul_output_max_bytes": 1073741824
                                }
                            },
                            "msg": "",
                            "rc": 0,
                            "results_file": "/home/zuul/.ansible_async/j182193387052.4246",
                            "start": "2026-10-04 03:02:25.127132",
                            "started": 1,
                            "stderr": "",
                            "stderr_lines": [],
                            "stdout": "",
                            "stdout_lines": [],
                            "zuul_log_id": "0242ac1f-6606-e63e-fabf-00000000000c-0-debianbookworm"
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-e63e-fabf-000000000007",
                        "name": "diagnose-network",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-network"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:30.499809Z",
                            "start": "2026-10-04T03:02:24.479263Z"
                        },
                        "id": "0242ac1f-6606-e63e-fabf-00000000000c",
                        "name": "Probe container network namespace (teardown)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.shell",
                            "changed": false,
                            "false_condition": "diagnose_network_phase == \"pre\"",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-e63e-fabf-000000000007",
                        "name": "diagnose-network",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-network"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:31.075717Z",
                            "start": "2026-10-04T03:02:30.563988Z"
                        },
                        "id": "0242ac1f-6606-e63e-fabf-00000000000d",
                        "name": "Evaluate node isolation verdict (pre-run gate)"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "ansible.builtin.fail",
                            "changed": false,
                            "false_condition": "diagnose_network_phase == \"pre\"",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-e63e-fabf-000000000007",
                        "name": "diagnose-network",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_0/github.com/osism/zuul-config/roles/diagnose-network"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:31.167111Z",
                            "start": "2026-10-04T03:02:31.080891Z"
                        },
                        "id": "0242ac1f-6606-e63e-fabf-00000000000e",
                        "name": "Abort the pre-run on a fully isolated node"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "changed": false,
                            "false_condition": "groups['all'] | length > 1",
                            "skip_reason": "Conditional result was False",
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-e63e-fabf-000000000010",
                        "name": "fetch-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/fetch-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:31.248752Z",
                            "start": "2026-10-04T03:02:31.175493Z"
                        },
                        "id": "0242ac1f-6606-e63e-fabf-000000000012",
                        "name": "Set log path for multiple nodes"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "set_fact",
                            "ansible_facts": {
                                "log_path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs"
                            },
                            "changed": false
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-e63e-fabf-000000000010",
                        "name": "fetch-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/fetch-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:31.310815Z",
                            "start": "2026-10-04T03:02:31.253230Z"
                        },
                        "id": "0242ac1f-6606-e63e-fabf-000000000013",
                        "name": "Set log path for single node"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "file",
                            "changed": true,
                            "msg": "All items completed",
                            "results": [
                                {
                                    "ansible_loop_var": "zj_output_dir",
                                    "changed": false,
                                    "diff": {
                                        "after": {
                                            "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs"
                                        },
                                        "before": {
                                            "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs"
                                        }
                                    },
                                    "failed": false,
                                    "gid": 0,
                                    "group": "root",
                                    "invocation": {
                                        "module_args": {
                                            "_diff_peek": null,
                                            "_original_basename": null,
                                            "access_time": null,
                                            "access_time_format": "%Y%m%d%H%M.%S",
                                            "attributes": null,
                                            "follow": true,
                                            "force": false,
                                            "group": null,
                                            "mode": 493,
                                            "modification_time": null,
                                            "modification_time_format": "%Y%m%d%H%M.%S",
                                            "owner": null,
                                            "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs",
                                            "recurse": false,
                                            "selevel": null,
                                            "serole": null,
                                            "setype": null,
                                            "seuser": null,
                                            "src": null,
                                            "state": "directory",
                                            "unsafe_writes": false
                                        }
                                    },
                                    "mode": "0755",
                                    "owner": "root",
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs",
                                    "size": 4096,
                                    "state": "directory",
                                    "uid": 0,
                                    "zj_output_dir": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs"
                                },
                                {
                                    "ansible_loop_var": "zj_output_dir",
                                    "changed": true,
                                    "diff": {
                                        "after": {
                                            "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/artifacts",
                                            "state": "directory"
                                        },
                                        "before": {
                                            "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/artifacts",
                                            "state": "absent"
                                        }
                                    },
                                    "failed": false,
                                    "gid": 0,
                                    "group": "root",
                                    "invocation": {
                                        "module_args": {
                                            "_diff_peek": null,
                                            "_original_basename": null,
                                            "access_time": null,
                                            "access_time_format": "%Y%m%d%H%M.%S",
                                            "attributes": null,
                                            "follow": true,
                                            "force": false,
                                            "group": null,
                                            "mode": 493,
                                            "modification_time": null,
                                            "modification_time_format": "%Y%m%d%H%M.%S",
                                            "owner": null,
                                            "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/artifacts",
                                            "recurse": false,
                                            "selevel": null,
                                            "serole": null,
                                            "setype": null,
                                            "seuser": null,
                                            "src": null,
                                            "state": "directory",
                                            "unsafe_writes": false
                                        }
                                    },
                                    "mode": "0755",
                                    "owner": "root",
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/artifacts",
                                    "size": 4096,
                                    "state": "directory",
                                    "uid": 0,
                                    "zj_output_dir": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/artifacts"
                                },
                                {
                                    "ansible_loop_var": "zj_output_dir",
                                    "changed": true,
                                    "diff": {
                                        "after": {
                                            "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/docs",
                                            "state": "directory"
                                        },
                                        "before": {
                                            "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/docs",
                                            "state": "absent"
                                        }
                                    },
                                    "failed": false,
                                    "gid": 0,
                                    "group": "root",
                                    "invocation": {
                                        "module_args": {
                                            "_diff_peek": null,
                                            "_original_basename": null,
                                            "access_time": null,
                                            "access_time_format": "%Y%m%d%H%M.%S",
                                            "attributes": null,
                                            "follow": true,
                                            "force": false,
                                            "group": null,
                                            "mode": 493,
                                            "modification_time": null,
                                            "modification_time_format": "%Y%m%d%H%M.%S",
                                            "owner": null,
                                            "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/docs",
                                            "recurse": false,
                                            "selevel": null,
                                            "serole": null,
                                            "setype": null,
                                            "seuser": null,
                                            "src": null,
                                            "state": "directory",
                                            "unsafe_writes": false
                                        }
                                    },
                                    "mode": "0755",
                                    "owner": "root",
                                    "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/docs",
                                    "size": 4096,
                                    "state": "directory",
                                    "uid": 0,
                                    "zj_output_dir": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/docs"
                                }
                            ]
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-e63e-fabf-000000000010",
                        "name": "fetch-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/fetch-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:32.544249Z",
                            "start": "2026-10-04T03:02:31.314691Z"
                        },
                        "id": "0242ac1f-6606-e63e-fabf-000000000014",
                        "name": "Ensure local output dirs"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "synchronize",
                            "changed": true,
                            "msg": "All items completed",
                            "results": [
                                {
                                    "ansible_loop_var": "zj_output",
                                    "changed": true,
                                    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --no-owner --no-group --rsh='/usr/bin/ssh -S none -o Port=22' --out-format='<<CHANGED>>%i %n%L' '[zuul@2a13:1a81:8000:3124:f816:3eff:fef5:1f1c]:/home/zuul/zuul-output/logs/' /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/",
                                    "failed": false,
                                    "invocation": {
                                        "module_args": {
                                            "_local_rsync_password": null,
                                            "_local_rsync_path": "rsync",
                                            "_ssh_args": null,
                                            "_substitute_controller": false,
                                            "archive": true,
                                            "checksum": false,
                                            "compress": true,
                                            "copy_links": false,
                                            "delay_updates": true,
                                            "delete": false,
                                            "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs/",
                                            "dest_port": 22,
                                            "dirs": false,
                                            "existing_only": false,
                                            "group": false,
                                            "link_dest": null,
                                            "links": null,
                                            "mode": "pull",
                                            "owner": false,
                                            "partial": false,
                                            "perms": null,
                                            "private_key": null,
                                            "recursive": null,
                                            "rsync_opts": [],
                                            "rsync_path": null,
                                            "rsync_timeout": 0,
                                            "set_remote_user": true,
                                            "src": "[zuul@2a13:1a81:8000:3124:f816:3eff:fef5:1f1c]:/home/zuul/zuul-output/logs/",
                                            "ssh_connection_multiplexing": false,
                                            "times": null,
                                            "use_ssh_args": false,
                                            "verify_host": true
                                        }
                                    },
                                    "msg": ".d..t...... ./\n>f+++++++++ net-debug.post.txt\n>f+++++++++ net-debug.pre.txt\n>f+++++++++ sudo-debug.txt\n>f+++++++++ sudo-strace.log\n>f+++++++++ sudo-strace.log.time\n",
                                    "rc": 0,
                                    "stdout_lines": [
                                        ".d..t...... ./",
                                        ">f+++++++++ net-debug.post.txt",
                                        ">f+++++++++ net-debug.pre.txt",
                                        ">f+++++++++ sudo-debug.txt",
                                        ">f+++++++++ sudo-strace.log",
                                        ">f+++++++++ sudo-strace.log.time"
                                    ],
                                    "zj_output": {
                                        "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/logs",
                                        "src": "logs"
                                    }
                                },
                                {
                                    "ansible_loop_var": "zj_output",
                                    "changed": true,
                                    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --no-owner --no-group --rsh='/usr/bin/ssh -S none -o Port=22' --out-format='<<CHANGED>>%i %n%L' '[zuul@2a13:1a81:8000:3124:f816:3eff:fef5:1f1c]:/home/zuul/zuul-output/artifacts/' /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/artifacts/",
                                    "failed": false,
                                    "invocation": {
                                        "module_args": {
                                            "_local_rsync_password": null,
                                            "_local_rsync_path": "rsync",
                                            "_ssh_args": null,
                                            "_substitute_controller": false,
                                            "archive": true,
                                            "checksum": false,
                                            "compress": true,
                                            "copy_links": false,
                                            "delay_updates": true,
                                            "delete": false,
                                            "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/artifacts/",
                                            "dest_port": 22,
                                            "dirs": false,
                                            "existing_only": false,
                                            "group": false,
                                            "link_dest": null,
                                            "links": null,
                                            "mode": "pull",
                                            "owner": false,
                                            "partial": false,
                                            "perms": null,
                                            "private_key": null,
                                            "recursive": null,
                                            "rsync_opts": [],
                                            "rsync_path": null,
                                            "rsync_timeout": 0,
                                            "set_remote_user": true,
                                            "src": "[zuul@2a13:1a81:8000:3124:f816:3eff:fef5:1f1c]:/home/zuul/zuul-output/artifacts/",
                                            "ssh_connection_multiplexing": false,
                                            "times": null,
                                            "use_ssh_args": false,
                                            "verify_host": true
                                        }
                                    },
                                    "msg": ".d..t...... ./\n",
                                    "rc": 0,
                                    "stdout_lines": [
                                        ".d..t...... ./"
                                    ],
                                    "zj_output": {
                                        "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/artifacts",
                                        "src": "artifacts"
                                    }
                                },
                                {
                                    "ansible_loop_var": "zj_output",
                                    "changed": true,
                                    "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --no-owner --no-group --rsh='/usr/bin/ssh -S none -o Port=22' --out-format='<<CHANGED>>%i %n%L' '[zuul@2a13:1a81:8000:3124:f816:3eff:fef5:1f1c]:/home/zuul/zuul-output/docs/' /var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/docs/",
                                    "failed": false,
                                    "invocation": {
                                        "module_args": {
                                            "_local_rsync_password": null,
                                            "_local_rsync_path": "rsync",
                                            "_ssh_args": null,
                                            "_substitute_controller": false,
                                            "archive": true,
                                            "checksum": false,
                                            "compress": true,
                                            "copy_links": false,
                                            "delay_updates": true,
                                            "delete": false,
                                            "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/docs/",
                                            "dest_port": 22,
                                            "dirs": false,
                                            "existing_only": false,
                                            "group": false,
                                            "link_dest": null,
                                            "links": null,
                                            "mode": "pull",
                                            "owner": false,
                                            "partial": false,
                                            "perms": null,
                                            "private_key": null,
                                            "recursive": null,
                                            "rsync_opts": [],
                                            "rsync_path": null,
                                            "rsync_timeout": 0,
                                            "set_remote_user": true,
                                            "src": "[zuul@2a13:1a81:8000:3124:f816:3eff:fef5:1f1c]:/home/zuul/zuul-output/docs/",
                                            "ssh_connection_multiplexing": false,
                                            "times": null,
                                            "use_ssh_args": false,
                                            "verify_host": true
                                        }
                                    },
                                    "msg": ".d..t...... ./\n",
                                    "rc": 0,
                                    "stdout_lines": [
                                        ".d..t...... ./"
                                    ],
                                    "zj_output": {
                                        "dest": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/work/docs",
                                        "src": "docs"
                                    }
                                }
                            ]
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-e63e-fabf-000000000010",
                        "name": "fetch-output",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/fetch-output"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:35.245065Z",
                            "start": "2026-10-04T03:02:32.549645Z"
                        },
                        "id": "0242ac1f-6606-e63e-fabf-000000000016",
                        "name": "Collect logs, artifacts and docs"
                    }
                },
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "shell",
                            "changed": false,
                            "msg": "All items skipped",
                            "results": [
                                {
                                    "ansible_loop_var": "zj_item",
                                    "changed": false,
                                    "false_condition": "zuul.change is defined",
                                    "skip_reason": "Conditional result was False",
                                    "skipped": true,
                                    "zj_item": "artifacts"
                                },
                                {
                                    "ansible_loop_var": "zj_item",
                                    "changed": false,
                                    "false_condition": "zuul.change is defined",
                                    "skip_reason": "Conditional result was False",
                                    "skipped": true,
                                    "zj_item": "docs"
                                }
                            ],
                            "skipped": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-e63e-fabf-000000000019",
                        "name": "merge-output-to-logs",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/merge-output-to-logs"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:35.307914Z",
                            "start": "2026-10-04T03:02:35.253132Z"
                        },
                        "id": "0242ac1f-6606-e63e-fabf-00000000001b",
                        "name": "Move artifacts and docs to logs dir"
                    }
                }
            ]
        }
    ],
    "stats": {
        "debian-bookworm": {
            "changed": 2,
            "failures": 0,
            "ignored": 0,
            "ok": 7,
            "rescued": 0,
            "skipped": 4,
            "unreachable": 0
        }
    },
    "trusted": true
},
{
    "branch": "main",
    "index": "3",
    "phase": "post",
    "playbook": "github.com/osism/zuul-config/playbooks/base/post.yaml",
    "plays": [
        {
            "play": {
                "duration": {
                    "end": "2026-10-04T03:02:36.579563Z",
                    "start": "2026-10-04T03:02:36.027536Z"
                },
                "id": "0242ac1f-6606-d270-6256-000000000002",
                "name": "Base post"
            },
            "tasks": [
                {
                    "hosts": {
                        "debian-bookworm": {
                            "action": "authorized_key",
                            "changed": true,
                            "comment": null,
                            "exclusive": false,
                            "follow": false,
                            "invocation": {
                                "module_args": {
                                    "changed": true,
                                    "comment": null,
                                    "exclusive": false,
                                    "follow": false,
                                    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCcPG4LwN2BLSiUtoncgOQcp2o1KZ7S81aOh9/xiYIXZXERMyQABNv3obRhrfyZRh+mQaQEaTQ7804TA21T2I92U3g+fFbYUdaipi39f/jlJj6USLGGTV4mVDSy193FIuQW02KDKQ3bvr7oAa5VyWaJLXhWK4vn2ziHB6FILDnFQRdHTozRCPI1HXBIm5lQs6uLEk/3ZjGXQv90svqYDSMXPZscnruUgFU1efKyc0U7OJanDA+UKVGlRe1ko5oO6ZaTdyg3SvrwGlUGfNekiR2a7f6y9TsSeV29iODSRbMzXQ5faw8Q+3kZYE+y7sYrVkK+Da3BeyHxxUQiFYbXqug0a1IJ4tgnSzQZqrYwC6TZkuFnZ4SB0nuThMJb9FfmbBLVEmA2QyF7BaAW0Ti80wZ/PorBjXPbv31vlQLSeJkpKtsvZIhX/Tf9BV9CNL39ziAIpvGK86vo6quotlOMxvGQ2PKo6BpLscDcLZ1R4lmT8/fwCJ61sq8aFpj2D4zV3jU= zuul-build-sshkey",
                                    "key_options": null,
                                    "keyfile": "/home/zuul/.ssh/authorized_keys",
                                    "manage_dir": true,
                                    "path": null,
                                    "state": "absent",
                                    "user": "zuul",
                                    "validate_certs": true
                                }
                            },
                            "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCcPG4LwN2BLSiUtoncgOQcp2o1KZ7S81aOh9/xiYIXZXERMyQABNv3obRhrfyZRh+mQaQEaTQ7804TA21T2I92U3g+fFbYUdaipi39f/jlJj6USLGGTV4mVDSy193FIuQW02KDKQ3bvr7oAa5VyWaJLXhWK4vn2ziHB6FILDnFQRdHTozRCPI1HXBIm5lQs6uLEk/3ZjGXQv90svqYDSMXPZscnruUgFU1efKyc0U7OJanDA+UKVGlRe1ko5oO6ZaTdyg3SvrwGlUGfNekiR2a7f6y9TsSeV29iODSRbMzXQ5faw8Q+3kZYE+y7sYrVkK+Da3BeyHxxUQiFYbXqug0a1IJ4tgnSzQZqrYwC6TZkuFnZ4SB0nuThMJb9FfmbBLVEmA2QyF7BaAW0Ti80wZ/PorBjXPbv31vlQLSeJkpKtsvZIhX/Tf9BV9CNL39ziAIpvGK86vo6quotlOMxvGQ2PKo6BpLscDcLZ1R4lmT8/fwCJ61sq8aFpj2D4zV3jU= zuul-build-sshkey",
                            "key_options": null,
                            "keyfile": "/home/zuul/.ssh/authorized_keys",
                            "manage_dir": true,
                            "path": null,
                            "state": "absent",
                            "user": "zuul",
                            "validate_certs": true
                        }
                    },
                    "role": {
                        "id": "0242ac1f-6606-d270-6256-000000000005",
                        "name": "remove-build-sshkey",
                        "path": "/var/lib/zuul/builds/2ef661d5b6f243b492001d6498c6c1e4/trusted/project_1/github.com/osism/openinfra-zuul-jobs/roles/remove-build-sshkey"
                    },
                    "task": {
                        "duration": {
                            "end": "2026-10-04T03:02:36.579563Z",
                            "start": "2026-10-04T03:02:36.037607Z"
                        },
                        "id": "0242ac1f-6606-d270-6256-000000000007",
                        "name": "Remove the build SSH key from all nodes"
                    }
                }
            ]
        }
    ],
    "stats": {
        "debian-bookworm": {
            "changed": 1,
            "failures": 0,
            "ignored": 0,
            "ok": 1,
            "rescued": 0,
            "skipped": 0,
            "unreachable": 0
        }
    },
    "trusted": true
}
]
