docs(agent): #128 — 14d prune for system and Home Manager gens
Some checks failed
Check / eval (push) Has been cancelled
Some checks failed
Check / eval (push) Has been cancelled
Same floor (keep current + ≥3 past); age window 14 days not 30; apply independently to system and HM profiles.
This commit is contained in:
@@ -78,40 +78,43 @@ cable leaves. Capture steps in HARDWARE-QUEUE.
|
|||||||
|
|
||||||
## NEXT
|
## NEXT
|
||||||
|
|
||||||
### 128. Auto-prune NixOS generations: >30 days, but keep ≥3 past
|
### 128. Auto-prune system + HM generations: >14 days, but keep ≥3 past
|
||||||
|
|
||||||
Bernardo 2026-07-15: automatic cleanup of **NixOS** (system) generations
|
Bernardo 2026-07-15 (refined same day): automatic cleanup of **both**
|
||||||
so the boot menu and store do not grow without bound, with a safety floor:
|
NixOS (system) and Home Manager (per-user) generations so boot menu,
|
||||||
|
desktop rollback, and store do not grow without bound, with a safety floor:
|
||||||
|
|
||||||
1. **Age:** candidates older than **30 days** may be removed.
|
1. **Age:** candidates older than **14 days** may be removed.
|
||||||
2. **Count floor:** always keep the **current** generation and at least
|
2. **Count floor:** always keep the **current** generation and at least
|
||||||
**3 past** generations — even if those three are older than 30 days.
|
**3 past** generations — even if those three are older than 14 days.
|
||||||
3. Combined: delete only gens that are **both** older than 30 days **and**
|
3. Combined: delete only gens that are **both** older than 14 days **and**
|
||||||
older than the third-most-recent past generation. Gens within 30 days
|
older than the third-most-recent past generation. Gens within 14 days
|
||||||
stay regardless of how many there are (until they age out).
|
stay regardless of how many there are (until they age out).
|
||||||
|
4. **Apply the same rule independently** to the system profile and to each
|
||||||
|
user's Home Manager profile (desktop rollback in Recovery › Desktop).
|
||||||
|
|
||||||
**Why this shape:** pure age GC (`--delete-older-than`) can wipe a machine
|
**Why this shape:** pure age GC (`--delete-older-than`) can wipe a machine
|
||||||
that is rarely rebuilt down to one generation and remove useful rollback
|
that is rarely rebuilt down to one generation and remove useful rollback
|
||||||
targets; pure count limits (`configurationLimit`) drop recent work just
|
targets; pure count limits (`configurationLimit`) drop recent work just
|
||||||
because the user iterates a lot. Age + floor keeps travel-laptop machines
|
because the user iterates a lot. Age + floor keeps travel-laptop machines
|
||||||
safe and busy desktops tidy.
|
safe and busy desktops tidy. 14d matches the existing store GC cadence
|
||||||
|
rather than a longer 30d hold.
|
||||||
|
|
||||||
**Today:** `nix.gc` is already weekly with `--delete-older-than 14d`
|
**Today:** `nix.gc` is already weekly with `--delete-older-than 14d`
|
||||||
(`modules/nixos/default.nix`) — store GC, no min-generation floor, and
|
(`modules/nixos/default.nix`) — store GC, **no** min-generation floor, and
|
||||||
14d not 30d. This item should replace/refine that policy (or add a
|
it is not framed as an explicit dual system+HM policy. This item should
|
||||||
dedicated generation pruner if stock GC cannot express the floor).
|
replace/refine that (or add a dedicated pruner if stock GC cannot express
|
||||||
|
the floor on both profiles). Bootloader list
|
||||||
|
(`boot.loader.systemd-boot.configurationLimit`) may need to stay in sync
|
||||||
|
so removed system profiles do not leave dead boot entries.
|
||||||
|
|
||||||
**Scope (settle if needed):** system profile only vs also Home Manager
|
Pass = weekly (or post-rebuild) cleanup enforces 14d + keep ≥3 past on
|
||||||
user generations (desktop rollback in Recovery). Bootloader list
|
**system and HM** generations; a machine with only old gens never goes
|
||||||
(`boot.loader.systemd-boot.configurationLimit`) may need to stay in
|
below current+3 on either profile; docs/RECOVERY still matches boot-menu
|
||||||
sync so removed profiles do not leave dead boot entries.
|
and desktop rollback; doctor or a check asserts the timer/unit exists and
|
||||||
|
the prune script's dry-run logic. V3: box with many gens — boot menu +
|
||||||
Pass = weekly (or post-rebuild) cleanup enforces 30d + keep ≥3 past on
|
`nix-env -p /nix/var/nix/profiles/system --list-generations` +
|
||||||
system generations; a machine with only old gens never goes below
|
`home-manager generations` after a prune.
|
||||||
current+3; docs/RECOVERY still matches the boot-menu story; doctor or a
|
|
||||||
check asserts the timer/unit exists and the prune script's dry-run
|
|
||||||
logic. V3: run on a box with many gens and confirm boot menu +
|
|
||||||
`nix-env -p /nix/var/nix/profiles/system --list-generations`.
|
|
||||||
|
|
||||||
### 120. A netinstall ISO, next to the fat offline one
|
### 120. A netinstall ISO, next to the fat offline one
|
||||||
|
|
||||||
|
|||||||
@@ -20,12 +20,12 @@ Template:
|
|||||||
---
|
---
|
||||||
|
|
||||||
## 2026-07-15 — File #128 generation auto-prune policy (no code)
|
## 2026-07-15 — File #128 generation auto-prune policy (no code)
|
||||||
- **Task:** Bernardo: auto-clean NixOS gens older than 30 days but always
|
- **Task:** Bernardo: auto-clean gens older than N days but always keep
|
||||||
keep ≥3 past generations.
|
≥3 past; include HM; prefer 14d over 30d.
|
||||||
- **Did:** NEXT **#128**. Policy restated; noted existing `nix.gc` weekly
|
- **Did:** NEXT **#128** — system **and** Home Manager; **14 days** + keep
|
||||||
`--delete-older-than 14d` has no min-generation floor.
|
≥3 past. Noted existing `nix.gc` weekly 14d has no min-generation floor.
|
||||||
- **Verified:** V0 (docs/agent only).
|
- **Verified:** V0 (docs/agent only).
|
||||||
- **Pending:** implement when picked; optional HM gens scope.
|
- **Pending:** implement when picked.
|
||||||
- **Next suggestion:** implement #128, or human #115/#120.
|
- **Next suggestion:** implement #128, or human #115/#120.
|
||||||
|
|
||||||
## 2026-07-15 — #111 Recovery + #105 System IA + #110 retire Control Center
|
## 2026-07-15 — #111 Recovery + #105 System IA + #110 retire Control Center
|
||||||
|
|||||||
Reference in New Issue
Block a user