- Introduce reusable workflow `mirror-images-missing.yml` to mirror only missing
Docker Hub images to GHCR using `--only-missing`
- Scope mirror concurrency per branch using `github.ref_name`
- Rename full mirror workflow to `mirror-images-all.yml` for clarity
- Integrate missing-image mirror into CI orchestrator and gate server/universal
deploys on successful mirror completion
- Add tag existence checks via `skopeo inspect` to avoid redundant uploads
- Keep mirror runs best-effort to avoid blocking CI on transient registry issues
https://chatgpt.com/share/698141e9-0844-800f-9c4f-fecd468ede73
- mirror sync now continues on individual skopeo failures
- collect and summarize failed images
- return non-zero exit code only after all images were processed
- make GitHub workflow respect mirror sync exit status
https://chatgpt.com/share/6980b558-5fdc-800f-911e-48bbc35a461f