Conflicts resolved by combining both sides: utils/tests/swarm/run.py keeps store-i18n's re-export of run_watched from watchdog.py, and the #1330 storage roots (lowest_free_mb over / and /var/lib/containerd, the fullest root in the abort banner and the sample line, df over every root) move into watchdog.py; test_run_storage_roots.py now targets watchdog and expects the process-group kill. The seaweedfs 4.52 bump lands in roles/web-svc-seaweedfs, where store-i18n moved the engine; roles/web-app-seaweedfs keeps only the console. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Runner Hygiene 🧹
Shell helpers that prepare and inspect the GitHub-hosted runner host around image-build and deploy steps.
Scope 📋
This directory contains host-level helpers: disk-space reclamation and reporting, swap-file enlargement, Docker-daemon cleanup, and post-failure diagnostic dumps. Helpers MUST be invoked from workflow run: blocks under .github/workflows/ and MUST NOT be called from application code, Ansible roles, or any runtime path outside CI. They assume a GitHub-hosted Ubuntu runner and modify host-kernel state (mount points, swap, Docker storage) that does not exist inside the infinito container.
For the rationale behind disk reclamation and swap enlargement in deploy workflows see the "Disk space" and "Swap" sections in workflow.md. For the workflow catalog that drives these calls see workflows.md.