mirror of
https://github.com/cozystack/cozystack.git
synced 2026-11-03 02:27:01 +09:00
Fold the retention design into the backups core API DESIGN.md as §4.6 instead of a standalone proposal file, so it lives beside the resources it extends and realises the "higher-level retention policies" §4.4 earmarks. BackupRetentionPolicy is a namespaced CRD whose spec is a flat minCount/ maxCount/maxAge; a Backup joins one through a single retention-policy label stamped from a retentionPolicyName field common to Plan, BackupJob and BackupClass, the last acting as the namespace default. Matching is namespace-local so identically named policies never collide, and artifacts move between policies by relabel. §4.6 also spells out when each knob applies (floor vs ceiling vs TTL, and the recovery-window caveat when a count ceiling meets a frequent schedule). maxAge is a string with an h/d/w suffix so a window reads as "90d" rather than a metav1.Duration capped at hours. The Backup section declares that the platform owns backup cleanup end to end: it never delegates expiry to an application operator's TTL or retention window, drives deletion through the Backup object and its finalizer, and requires each driver to reclaim physically under a single-authority, idempotent, serialized contract. Assisted-by: LLM Signed-off-by: Andrey Kolkov <androndo@gmail.com>