GRM-173: Runner resource leases and scoped disk cleanup #282

Merged
kireto merged 8 commits from GRM-173-runner-resource-leases into master 2026-09-22 17:07:50 +00:00
8 Commits
Author SHA1 Message Date
Emil Simeonov e202acdcf9 docs: condense test plan
CI / validate (pull_request) Successful in 1m8s
CI / molecule-tests (1) (pull_request) Successful in 5m16s
CI / molecule-tests (3) (pull_request) Successful in 7m21s
CI / molecule-tests (2) (pull_request) Successful in 7m31s
CI / molecule-tests (4) (pull_request) Successful in 7m33s
CI / auto-merge (pull_request) Successful in 7m47s
2026-09-22 18:58:43 +02:00
Emil Simeonov beed820562 fix: unquoted conditional filter args; trim spec
CI / validate (pull_request) Failing after 1m9s
CI / molecule-tests (1) (pull_request) Skipped
CI / molecule-tests (2) (pull_request) Skipped
CI / molecule-tests (3) (pull_request) Skipped
CI / molecule-tests (4) (pull_request) Skipped
CI / auto-merge (pull_request) Skipped
2026-09-22 18:58:21 +02:00
Emil Simeonov 7dfdee8b31 docs: tighten spec wording
CI / validate (pull_request) Failing after 1m5s
CI / molecule-tests (1) (pull_request) Skipped
CI / molecule-tests (2) (pull_request) Skipped
CI / molecule-tests (3) (pull_request) Skipped
CI / molecule-tests (4) (pull_request) Skipped
CI / auto-merge (pull_request) Skipped
2026-09-22 18:57:31 +02:00
Emil Simeonov 757ccea5b9 style: trim comments for size gate
CI / validate (pull_request) Failing after 1m7s
CI / molecule-tests (1) (pull_request) Skipped
CI / molecule-tests (2) (pull_request) Skipped
CI / molecule-tests (3) (pull_request) Skipped
CI / molecule-tests (4) (pull_request) Skipped
CI / auto-merge (pull_request) Skipped
2026-09-22 18:56:48 +02:00
Emil Simeonov 28a230e7b0 refactor: dedupe volume/network prune, trim for size gate
CI / validate (pull_request) Failing after 1m32s
CI / molecule-tests (1) (pull_request) Skipped
CI / molecule-tests (2) (pull_request) Skipped
CI / molecule-tests (3) (pull_request) Skipped
CI / molecule-tests (4) (pull_request) Skipped
CI / auto-merge (pull_request) Skipped
2026-09-22 18:56:07 +02:00
Emil Simeonov 8456a3497c fix: honor real docker filter/formatter support in cleanup script
CI / validate (pull_request) Failing after 1m34s
CI / molecule-tests (1) (pull_request) Skipped
CI / molecule-tests (2) (pull_request) Skipped
CI / molecule-tests (3) (pull_request) Skipped
CI / molecule-tests (4) (pull_request) Skipped
CI / auto-merge (pull_request) Skipped
`docker images` has no label formatter — check leases via image inspect
per candidate. `label!=` is invalid on volume/network ls but valid on
prune; `until=` is unsupported for volumes — drop it. Expired-lease
volumes/networks are reclaimed by an explicit inspect pass; anonymous
volumes only at routine/pressure, all unused volumes at critical.
2026-09-22 18:48:37 +02:00
Emil Simeonov c3283eedc7 test: fix cleanup-script assertion (tier flag lives in unit file)
CI / validate (pull_request) Successful in 1m7s
CI / molecule-tests (1) (pull_request) Successful in 4m47s
CI / molecule-tests (4) (pull_request) Successful in 6m28s
CI / molecule-tests (2) (pull_request) Successful in 6m38s
CI / molecule-tests (3) (pull_request) Successful in 9m6s
CI / auto-merge (pull_request) Failing after 9m27s
2026-09-22 18:40:02 +02:00
Emil Simeonov 3c0696f3f2 feat: scoped runner cleanup with ownership leases and disk admission
Extend stopped-container protection to an explicit lease contract
(org.oblachno.lease-until / org.oblachno.owner) honored by every cleanup
path. Consolidate the duplicated inline prune logic from docker-prune
and the healthcheck into a single tiered runner-cleanup.sh; remove the
unfiltered `system prune -af --volumes` / `volume prune` paths that could
wipe a job's volumes mid-run, and keep warm base images under pressure.

At critical disk usage the healthcheck now stops admitting new work
(stops gitea-runner.service once no CI job is in flight) and resumes it
automatically after recovery. The runner config declares capacity, and
the role refuses to install on production-marked hosts.
2026-09-22 18:34:12 +02:00