Take it, fork it, rename it. The template is deliberately short: five required sections and two optional sections for time budget and known gotchas.
<!--
Rollback plan - template
Brightfield Works · public domain (CC0). Take it, fork it, rename it.
Source: https://www.brightfieldworks.com/insights/write-the-rollback-plan-first/
v 1.0
-->
# Rollback plan - `<change name>`
> Write this *before* the change procedure, not after. If a section is hard to fill
> in, that is the section telling you something. Keep every answer as short as it
> can honestly be.
**Change:** `<one line: what is being changed, and to what>`
**Owner:** `<name>`
**Date:** `<YYYY · MM · DD>`
**Status:** draft / reviewed / live
---
## 01 · Trigger conditions
*The specific, observable conditions under which we invoke rollback. Not "something
seems off", conditions you could write a monitoring check against.*
- `<condition - e.g. error rate on X exceeds N for M minutes>`
- `<condition - e.g. downstream service Y fails health check after cutover>`
- `<condition - e.g. validation/auth failures reported by Z>`
## 02 · Decision authority
*Who calls it, who is consulted, who is told. By name and by role, with a backup
for each. Settle the ambiguity now, not during the incident it describes.*
| Role | Person | Backup |
|------|--------|--------|
| Calls rollback | `<name>` | `<name>` |
| Consulted | `<name>` | `<name>` |
| Informed | `<name / list>` | - |
## 03 · Procedure
*The steps to put the previous state back, with the actual commands, in order.
Tested where the test is cheap. Read by a second pair of eyes who did not write it.*
1. `<step - command or action>`
2. `<step - command or action>`
3. `<step - command or action>`
**Verification:** `<how we confirm the rollback worked - the check, not the hope>`
## 04 · Data implications
*What is lost, what is reconciled, and how, including the honest case where some
data cannot be recovered, and what we do then.*
- **Changed since cutover:** `<what data has accumulated, and where>`
- **Reconciliation:** `<how it is merged back, by whom, manual or automated>`
- **Unrecoverable:** `<what cannot be rolled back, and the plan for that case>`
## 05 · Communication
*What is said, to whom, through which channel. Pre-written if the change is visible
to end users.*
- **Internal:** `<channel · who posts · what>`
- **Affected users:** `<channel · who posts · pre-written message below>`
> `<pre-written user-facing message, if applicable>`
---
## 06 · Time budget *(optional, but usually worth it)*
*The crossover point: the time, or the volume of accumulated data, past which
rollback is no longer cheaper than fixing forward. Decide it in daylight.*
- **Rollback is the cheaper option until:** `<time / data threshold>`
- **After that point, we:** `<fix forward / escalate / hold>`
## 07 · Known gotchas *(optional)*
*One-way doors, things that age out, downstream systems that cache state, anything
that bit you last time.*
- `<gotcha>`
- `<gotcha>`
---
*Brightfield Works · "A working rollback plan is the cheapest insurance you can write."*
*Public domain (CC0). v 1.0*