Second pass runs against an already active workspace and may race with Python/Ansible bytecode writes.\nWhen MODE_CLEANUP triggers make clean in pass 2, git clean -fdX can fail with 'Directory not empty' on __pycache__, causing a false CI failure after a successful playbook run.\n\nPass 1 keeps cleanup enabled; pass 2 now forwards --skip-cleanup to avoid this non-deterministic post-deploy failure.
- rename mirror-images-* workflows to images-mirror-*
- update ci-orchestrator job ids and dependencies accordingly
- add weekly + manual GHCR cleanup workflow (images-cleanup-ci)
- extract cleanup logic into scripts/administration/ghcr/cleanup_ci_images.sh
- support org and user GHCR owners via automatic API scope detection
- delete only ci-* tagged image versions older than N days (default: 7)
https://chatgpt.com/share/e/69906083-93d4-8013-bd0b-e441615e72bf
- force PYTHON=python3 for scripts/meta/resolve/apps.sh to avoid host venv leakage into container exec
- pipe output through jq to guarantee compact JSON array only
- tolerate compose warnings on stdout during discovery
- add debug fallback printing first lines of raw apps.sh output when discovery is empty
This aligns local test behavior with CI discovery robustness without changing CI logic.
https://chatgpt.com/share/698e24d6-7200-800f-a2f5-28a81a639cf3
* Replace ONLY_APP with space-separated WHITELIST across CI and local/act deploy tests
* Rename build-test-matrix.sh to scripts/meta/resolve/apps.sh and apply optional whitelist filter
* Add manual CI entry workflow to run orchestrator with distros/whitelist inputs
https://chatgpt.com/share/698c406c-0968-800f-ae84-1bcca023363c
Switch sufficient_storage CLI to support JSON output and update CI matrix
generation to use JSON-only pipelines, preventing roles from collapsing
into a single matrix entry.
Refactor build-test-matrix.sh to process application lists strictly as JSON.
Remove text-based filtering and reimplement excludes and CI storage gating
using jq to avoid accidental whitespace joining and invalid app arrays.
https://chatgpt.com/share/698b19ac-9850-800f-b040-eb698d3954c4
Ensure build-test-matrix.sh always emits a single-line, valid JSON array by
quoting variables correctly and normalizing JSON output via jq -c, preventing
accidental app name concatenation in CI workflows.
https://chatgpt.com/share/698b19ac-9850-800f-b040-eb698d3954c4
- Move server/workstation/universal resolution into Python CLI
- Add optional --lifecycles filter to cli.meta.applications.type
- Gate invokable roles by galaxy_info.lifecycle in module_utils.invokable
- Replace legacy resolve-invokable-roles.sh with CLI-based implementation
- Apply global hard excludes consistently across all deploy types
- Fix SC2086 issues and make lifecycle argument handling shell-safe
- Extend unit tests to cover lifecycle forwarding and normalization
https://chatgpt.com/share/698b0039-c4c4-800f-b962-7033324c07a8