ORCH-062 — INFRA: авто-prune docker build cache на mva154 #100
Reference in New Issue
Block a user
Delete Branch "feature/ORCH-062-infra-prune-docker-build-cache"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ORCH-062 — авто-prune docker build cache на mva154
Новый фоновый daemon-поток
src/build_cache_pruner.py(каркас 1:1src/disk_watchdog.py) — «вторая половина» disk-watchdog (ORCH-063): watchdog сигналит — pruner убирает. Устраняет корень инцидента 07.06.2026 (docker build cache ≈11 ГБ → диск mva154 100% → падение self-hosting-конвейера всех проектов) автоматически, без оператора.Реализация по ADR-001 (Вариант A): уборка на ХОСТЕ через ssh (
deploy_ssh_user@deploy_ssh_host, тот же канал, чтоimage_freshness/self_deploy— в образе нет docker CLI).Что сделано
src/build_cache_pruner.py— каждыеinterval_s(дефолт 6ч) выполняет строгоdocker builder prune -f --filter until=<until>(BuildKit GC; дефолтuntil=24hудерживает тёплый кэш;-aопц. только в паре с фильтром). Анти-частота — puredecide_prune(...).src/config.py— флагиORCH_BUILD_CACHE_PRUNE_*+ defensive-валидаторы (интервал/таймаут >0,until~^\d+[smhdw]?$, notify_min_gb ≥0 → безопасный дефолт + warning).src/main.py— старт последним / стоп первым вlifespan(рядом сdisk_watchdog); аддитивный read-only блокbuild_cache_pruneвGET /queue.tests/test_build_cache_pruner.py— TC-01..TC-12 (23 кейса, docker полностью замокан)..env.example,CHANGELOG.mdобновлены; INFRA.md / architecture docs несут компонент (стадия architecture).Self-hosting безопасность
docker image/system prune, удаления образов/контейнеров, остановки/рестарта; прод-контейнерorchestratorникогда не рестартится.status().last_error).ORCH_BUILD_CACHE_PRUNE_ENABLED=false→ демон не стартует, 1:1 как до задачи.STAGE_TRANSITIONS/QG_CHECKS/check_*/_parse_*/схема БД — не тронуты; миграций нет (учёт результата in-memory).Тесты
pytest tests/ -q— 1319 passed (1296 baseline + 23 новых).Refs: ORCH-062
🤖 Generated with Claude Code
e5c488b18eto5ead4543ee