mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
scripts/meta/wait/mirrors.sh embedded its logic as a `python - <<PY` heredoc plus a bash skopeo/retry loop, and the heredoc imported iter_role_images from utils.docker.image_discovery — a module that does not exist (it is utils.docker.image.discovery). That raised ModuleNotFoundError, so the process substitution yielded zero refs and the script logged "Nothing to wait for" and exited 0, silently turning the fork-PR "wait for mirrored images" safeguard into a no-op. Move the whole thing into cli/contributing/mirror/wait/ (sibling to sync and resolver): an argparse entrypoint that enumerates role images via iter_role_images, computes each GHCR destination via GHCRProvider, and polls GHCRProvider.tag_exists with --attempts/--sleep-seconds until all are present or it times out. mirrors.sh becomes a thin env->args wrapper invoking python -m cli.contributing.mirror.wait, matching scripts/meta/mirror/sync_missing.sh. Behaviour is identical to the previous bash, minus the broken import. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Wait Scripts
This directory contains generic wait and polling scripts used by workflow automation.
- ⏳ Wait for asynchronous resources to become available
- 🔎 Poll external systems until expected artifacts are ready
- 📦 Wait for CI and mirror images to become available in registries
- 🧭 Centralize readiness checks outside build and release scripts
The scope of this folder is waiting and availability checks. Build, release, and resource-specific lifecycle operations should stay in their dedicated directories.