DevOps: Templates
Four working templates: the remediation allowlist entry, the incident record, the capacity projection and the expiry calendar.
Markdown. No sign-up, no email.
1. Remediation allowlist entry#
One per automated action. An action not on this list does not run without a person.
| Field | Entry |
|---|---|
| Action | [Specifically. "Restart the service" is not specific; "restart worker-api on failed health check" is] |
| Trigger | [The exact condition] |
| Target | [Which systems. Never "any"] |
| Bounded | [What it cannot touch. If this is hard to write, the action is not bounded] |
| Reversible | [How it is undone, and when that undo was last actually run] |
| Rate limit | [Attempts before it stops and escalates. Default: 2 per hour] |
| Logged to | |
| Approved by | [A named person] |
| Date added | |
| Last time it helped | [Reviewed quarterly. If nobody can name one, remove it] |
2. Incident record#
| Field | Entry |
|---|---|
| Incident | |
| Severity | [SEV1 / 2 / 3. When unsure, higher] |
| Fault began | [Not when the alert fired. The gap between these two is the detection time] |
| Detected at | |
| Detected by | [Monitoring / customer / internal. "Customer" is its own finding] |
| Restored at | |
| Incident lead | |
| Automated remediation frozen? | [Yes, for the affected system. If no, say why] |
| Root cause | [The cause, not the symptom] |
| Change responsible | [If any] |
| What would have detected this sooner? | [The single most valuable row. Usually the only real output] |
| Action taken to make that true | [With an owner and a date, or the answer above was theatre] |
3. Capacity projection#
Monthly, one row per resource that can run out.
| Resource | Current | Trend | Runs out | Owner | Action |
|---|---|---|---|---|---|
| [Disk, memory, connections, API quota, licence seats] | [per week] | [a date] |
The output is a date. A percentage is a status; a date is a deadline, and only one of the two gets acted on.
4. Expiry calendar#
Monthly, looking 90 days ahead.
| Item | Type | Expires | Owner | Renewed |
|---|---|---|---|---|
| [Certificate / domain / API key / licence / signing key] | [A name] | ⬜ |
Expiry is the most predictable outage available and still one of the most common, because it belongs to nobody until the morning it belongs to everybody. Every row needs a name.
Using these together#
The charter sets out what operations owns, the SOPs say when each is produced, the KPIs define what the incident record feeds, and the workflows name who receives each output. An allowlist entry with a blank reversibility row is the one to reject.