What wakes you at 3am
The site that broke while nobody touched it
Alice, a wedding photographer, had built her booking page with an AI agent and not changed it in three weeks. On Sunday at six in the morning a client texted her a screenshot of an error. She checked her code and found nothing wrong. Then she opened her hosting dashboard and saw a red banner saying the project was suspended after a failed payment. The card on file had expired at the end of the month. No alert had warned her, because she had never set one up.
- Almost every production emergency comes from six causes: deploy, provider outage, data mistake, leak or abuse, cost, expiry.
- Deploys and data mistakes are yours. Ship small changes and keep a one-click undo.
- Outages are the provider's, so set an uptime check and a banner for users.
- Leaks and abuse need limits in place before the attack; cost needs a budget alert before the bill.
- For each cause, know how you would find out and your first move.
Six causes each need A plan
Dos and don'ts
- Fill a table with how you would find out and your first move per cause.
- Fix the row where a customer tells you first.
- Restore a backup once to prove it works.
- Wait for customers to report problems.
- Set up limits after an attack.
- Forget certificate and domain expiry dates.
Yours, theirs, or the calendar
Almost every 3am emergency is one of six things: a bad deploy, a provider outage, a data mistake, a leaked secret or abuse, runaway cost, or something that expired. They split into three kinds.
Deploys and data mistakes come from your own changes. Ship small changes, keep a one-click undo, and keep backups you have actually restored once.
Outages belong to a provider. You can't prevent them, so set up an uptime check that warns you and a banner that tells users what's going on.
Leaks and abuse need limits in place before the attack. Cost needs a budget alert, because the bill arrives after the damage. Expiry is predictable, so turn on auto-renew and set a reminder.
Example: domain TLS expires → browsers show a certificate warning and users bounce; auto-renew plus a calendar alert 14 days out stops that.
Find your weak rows
For each of the six causes, answer two questions: how would I find out, and what's my first move? If the honest answer is "a customer tells me", fix that row first.
Example: runaway cost → find out from a $50/day spend alert; first move is flip the AI feature kill switch, then dig in the bill.
Create a RISKS.md for my project with six rows: bad deploy, provider outage, data mistake, leak or abuse, runaway cost, expired thing. For each one, say how I would actually find out and what my first move is, based on what exists in this repo and my hosting. Mark the rows where the honest answer is a question mark.
Example
Go through my project and answer yes or no for each: can I roll back a deploy in one click, would I know when a provider is down and not my code, have I restored a backup, is secret scanning and rate limiting on, is a budget cap set, and what expires soon. Change nothing yet.
Paste into your agent inside a project folder. Prompts that say "this project" are for the app you build in the Lab, or any app you already have. No project yet? Read them now and paste them later, in the Lab.
Go through my app against the six usual causes of production pain: bad deploy, provider outage, data mistake, leaked secret or abuse, runaway cost, something expiring. For each, tell me how I would find out today and what my first move would be. Do not change any code.
List every paid or external service my app depends on (hosting, database, email, payments, AI, domain). For each, tell me what happens to my app if it goes down, and where its status page is.
Find everything in my setup that can expire: domain, certificates, API keys with an end date, free trials, the card on each account. Make a table with the date or where to check it, and whether auto-renew is on.
🚨 In production, tell your AI
Something is wrong and you do not know where to startWhat do you do? · Show what to paste
My app is misbehaving in production and I do not know why. Do not change any code. Go through the six usual causes one by one (a recent deploy, a provider outage, a data problem, a leaked key or abuse, a cost limit hit, something expired). For each, tell me the one thing to check and what you found. Show the evidence, then say which is most likely.