HIVE80lab — Ops notes

The maintenance window: communicate the downtime you chose

Planned downtime is the only outage you get to schedule, and it is the only one customers forgive — if you tell them the truth about it. The failure mode is never the 40 minutes of read-only mode; it is the surprise: the app that will not save at 2 a.m., the support inbox full of “is this broken?”, the error budget silently drained by downtime you did not announce. A maintenance window done right is a promise with five facts, five announcement beats, and a cap rule that keeps an overrun from becoming a silent one. The database outage runbook covers the window that goes sideways anyway; this page covers the part you control before it starts.

One distinction first: a maintenance window is downtime by appointment, and communicated windows do not spend the error budget. That is the deal — but the deal only holds if the communication is real. A window nobody heard about is just an outage you caused on purpose, which is worse, because you signed the change ticket.

1. One line, five facts

Every announcement — first notice, reminder, or completion — carries the same five facts on one line. If a reader can quote all five back to you, the announcement worked:

2. Five beats, one skeleton

The window has five communication beats. Each is two or three sentences, and each reuses the five-facts line so nobody has to remember an earlier email:

Five beats is not over-communication. The alternative is a customer who set an alarm to finish a report at 03:00 discovering a read-only app with no answer in the inbox — and drafting the cancellation email while they wait.

3. The cap rule: extensions are announced, overruns are not

The duration cap exists for one rule: you may run over, you may never run over silently. The mechanics:

The one unforgivable version is the silent overrun: work quietly until 05:20, announce “done!” — and never mention that for 80 minutes every status page and every promise was a lie. Customers forgive announced extensions. They churn on silent ones, because the silent overrun tells them what you will do during a real incident.

4. What belongs in a window — and what never does

A window is expensive: it costs announcement effort, customer attention, and an on-call Sunday. Spend it on work that needs it:

5. Abort criteria, written before the window

Every window opens with abort criteria written down before it starts, and a named person who owns the abort call:

Write the rollback entry point next to it: which command, which snapshot, how long it takes. The database runbook's state-capture step applies here too — if the window aborts, the capture becomes the post-mortem's best evidence.

6. Worked example

A twelve-person SaaS schedules its order-database major-version migration for Sunday 02:00–04:00 ACST. T−7 email has the five facts; T−24 reminder is unchanged; T−1h names the next-update clock. The window starts on time. At 04:00 the migration is at 80% — the extension goes out at 04:00 exactly, new cap 04:30, reason named. Done at 04:23; the completed note reports the extension, the reason, and one sentence of what changed. Zero confused support tickets, two replies that said “thanks for the updates,” and the error budget untouched — the window was communicated, so it was downtime by appointment, not spend.

The counter-example: the same team, six months earlier, had scheduled a “quick 30-minute” window that ran 90 minutes over with no updates. Forty support tickets, one churned account that cited “we couldn't tell what was happening,” and a retrospective that produced this exact template. The engineering work in both cases was similar; the difference was entirely in the promises kept.

7. Metrics

From the HIVE80lab kit

Related: the change freeze window policy covers the dates when no changes go out at all, the error budget policy explains why a communicated window is the one kind of downtime that doesn't spend the budget, and the database outage runbook is for when the carefully announced window turns into the real thing.