The night Notion locked me out: why I moved incident runbooks to a git repo

How I stopped relying on Notion for on‑call runbooks and built a tiny Git‑backed runbook repo that survived flaky SSO, mobile data, and a midnight pager—plus the tradeoffs I still live with.

Written by: Arjun Malhotra

A person typing on a laptop in a dimly lit room, with code visible on the screen
Photo by Miguel Á. Padriñán on Unsplash

The pager went off at 02:13. My phone buzzed, the office Slack lit up, and I opened Notion from my phone to follow the runbook the night shift had added a week earlier. Notion refused to load—our SSO had a hiccup, and my phone’s 1GB prepaid pack had exactly the kind of unreliable bandwidth that makes a modern web app crawl. I fumbled through chat messages trying to remember commands, while a cascade of alerts kept firing.

That night I realised I had two problems: a single point of failure (Notion+SSO), and a format that wasn’t optimised for frantic, low‑bandwidth reading or fast copy‑paste on a phone. The runbook existed, but it wasn’t where I could use it when I needed it most.

I moved the runbooks into a tiny Git repo. That decision was born of that 02:13 buzz and a very practical checklist: low friction to fetch, readable on small screens, auditable history, and editable by engineers who already live in git. Eight months in, it’s my primary incident source—even on shaky mobile networks—but it’s not perfect. Here’s exactly how I set it up, why it works for a small Indian startup team, and the one failure that forced me to change how we update runbooks.

Why a repo, not another doc tool

How the repo actually works I kept the setup minimal so people would actually use it.

All of this costs us effectively ₹0 beyond standard GitHub billing. No extra SaaS licences. The biggest productivity gains are in read access: during incidents we don’t wait for a page to load or a login to happen.

Real tradeoffs I accepted Nothing free is perfect. The repo model forced tradeoffs we still live with.

An honest failure: the night the runbook lied Three months after the move we hit an outage where our database schema mismatch required a manual add‑column and data backfill. The runbook had been rewritten two days earlier with the new safer procedure, but the engineer who updated it had done so on a local branch and never pushed. I followed the old steps. For 42 minutes we were restoring the wrong dump, and the service stayed degraded longer than it should have.

That mistake made two changes mandatory:

When the repo is wrong, it’s very wrong. Unlike Notion where edits could be interactive and you might be prompted about conflicts, git relies on the human to push and sync. We accepted that risk and built small social and technical mitigations.

What I actually walked away with A runbook isn’t a fancy doc; it’s a tool you use when you’re tired, on a bad network, and under pressure. Moving runbooks into git made them fast, auditable, and resilient to SSO or web UI failures—exactly what matters at 02:13 with a 1GB prepaid plan and a Bangalore signal that decides to nap. The tradeoffs are real: non‑engineers need a little help, merge conflicts happen, and local edits can go missing. But after eight months and dozens of incidents, I trust the git repo more than I trusted a document I couldn’t open.

One question we still ask every quarter: how do we make editing runbooks as easy for ops and product folks as it is for engineers, without reintroducing the single point of failure? We haven’t solved that cleanly yet. If your team cracked that balance, tell me how — short, practical notes only.