Say the weekly upgrade and its health in the pacman README (issue 1574, ADR 0477)

This commit is contained in:
2026-10-21 08:00:30 +00:00
parent e3ac017c28
commit 5123c1dd57
+13
View File
@@ -23,6 +23,19 @@ that seat (ADR 0207).
list stays reflector's to write, not the mesh's.
- **Cache cleaning.** The `pacman-contrib` package and `paccache.timer` running and enabled. Each
week it keeps the last three versions of each package.
- **The weekly upgrade (ADR 0477 clause 5, issue 1574).** `mesh-pacman-weekly-upgrade.timer` and its
oneshot service, placed whole in `/etc/systemd/system`. The timer fires every Saturday at 04:00 in the
node's local time, the same moment on every node (no random delay), and is `Persistent=true`: a node that
was off or asleep then upgrades at its next start. The service runs `/usr/bin/pacman -Syu --noconfirm`, the
same arguments `pacman_upgrade` starts (`UpgradeArgs` in the code; a manifest test holds the two together).
No other moment upgrades but a hand `pacman_upgrade`, and the mesh restarts no machine for an upgrade: a new
kernel waits for the next restart.
- **The outcome is the module's health.** The timer's resource asks `pacman_upgrade_health`: unhealthy,
naming the exit and the last `error:` line of the journal, when the last weekly upgrade failed; healthy
while it runs, after it passed, and before it ever ran. The controller raises the module's condition for
the node from it. A failed service stays failed until the next run, so the condition stands until an
upgrade passes, a hand `pacman_upgrade` does not clear it. A restart of the machine forgets the failed
state (the service manager's), so it is the condition raised before it that keeps the record.
## What it improves