-
AlexRUS1234 создал
Слой API политики eviction кеш-прокси (сессия 202): политика per-remote живёт в теле источника, прогноз — сухой проход движка по кешу одного remote, применение — фоновая задача TaskRegistry (kind=eviction, label=remote-<id>). Поле eviction в теле remote три-стейтно, и плоский *retentionOut два из трёх состояний не различает (ключа нет и null дают один nil) — введён тип evictionInput со своим UnmarshalJSON: Set отмечает факт наличия ключа, Policy — разобранный объект. PATCH без поля сохраняет политику (прецедент фикса сессии 177), null сбрасывает в наследование глобального [eviction], объект — полная замена; значения валидирует domain.ValidateRetention. Движок отдаётся web-слою срезом EvictionAPI (склейка в wire, depguard): деградация — 503 eviction_unavailable, экосистема без резолвера семейств (nix) — 400 eviction_unsupported, аудит remote.eviction.apply до старта задачи (урок 87). Проверено: go build ./..., make vet, make lint (0 issues), явный golangci-lint по internal/core/web (0 issues), go test ./internal/core/web/ (зелёный), npm run build (vue-tsc + vite). Красный до фикса — стэш маршрутов и tri-state: новые тесты падали 404 и сброшенной политикой.
07261308