A major distribution upgrade, by rebuild, with no changes to the provisioning script at all.
2025-02 four attempts, 41 minutes, on a script that
had never been run against an empty machine
2025-08 one attempt, 22 minutes, on Debian 13
2026-03 one attempt, 19 minutes, on the second host
what changed between the first and the rest: nothing
except that the script now describes a machine rather
than an increment.
the monthly CI job that provisions a throwaway host is
what keeps that true, and it has run 13 times.
A provisioning script that is exercised monthly is a script that works when it is needed, and the thirteen throwaway hosts cost about four pounds. Writing down that an upgrade required nothing is worth as much as writing down that it did — an absence of notes reads as an absence of attention.