{
  "id": 18998245,
  "title": "Rehearse the Rollback, Not the Launch: A 45-Minute Exit Drill for AI Features",
  "url": "https://urgent.news/2026/11/08/rehearse-the-rollback-not-the-launch-a-45-minute-exit-drill-for-ai",
  "topic": "ai",
  "section": "AI",
  "published": "2026-11-08T19:07:16.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/rivera123/rehearse-the-rollback-not-the-launch-a-45-minute-exit-drill-for-ai-features-84p"
  },
  "original_language": "en",
  "account": "Every AI feature released gets a launch checklist, but few receive an exit checklist. Launch day is grand and social, while rollback day is quiet and early morning. Rehearsing the loud launch and improvising the quiet rollback is a bad trade. This post is a drill, not a policy document, taking 45 minutes to complete. It generates three numbers and a pass/fail line, which can be copied into a pull request (PR). A checklist in a wiki is a wish; a script is a rehearsal. The question launch checklists never ask is how quickly the feature becomes inaccessible. The real question is how many seconds it takes for the feature to go dark, how long it takes for a human to notice, and how long it takes to restore service. These are T-dark, T-inform, and T-restore. If you cannot state all three, you do not have an exit; you have only a hope. Numbers are more important than adjectives. Performing a fast rollback means nothing in an incident channel. The drill should be conducted on a free tier rather than staging, as rollback drills are intentionally destructive. A disposable twin is created with a small server, model endpoint, and feature flag to perform the drill. The twin is destroyed to burn free resources instead of metered ones. Only use this approach if your alerting pages are shared with human operators. If your alerting pages are not shared, run the drill on a scheduled maintenance window instead. Here are the steps to perform the drill:\n\n1. Set up a twin that can be destroyed (15 minutes)\n- The twin must have: a server running the feature behind a flag, a model endpoint without affecting production keys, a probe command that fails when the feature is truly dead, and a log file to record numbers.\n\n2. Run the 40-line drill script (45 minutes)\n- Save the script as drill.sh, read it once, then edit three environment variables: FLAG_URL, HEALTH_URL, and PROBE_CMD.\n- The script sets up the twin, disables the feature, waits for a specific period, checks if the feature is now dark, enables the feature, waits again, and finally enables the feature again.\n\n3. Keep one failure fixture (fixture is provided in the source)\n- A failure fixture was discovered during a drill where the feature returned an HTTP 200 status code, even though the body was empty. To avoid this issue, the probe should assert the content rather than just the code.\n\n4. Create a pass/fail table to enforce the results (after one drill)\n- Fill in the pass/fail table with the measured values for T-dark, T-inform, and T-restore.\n- Missing numbers fail, and unmeasured cells mean 'no,' not 'maybe.' Run the drill twice a week apart before sharing the numbers with anyone.",
  "summary": "Every AI feature I ship gets a launch checklist. Almost none of them get an exit checklist. That asymmetry is the real bug. Launch day is loud and social. Rollback day is quiet and 2 a.m. So we rehearse the loud thing and improvise the quiet one. Bad trade. This post is a drill, not a policy doc. It takes 45 minutes. It prints three numbers and a pass/fail line you can paste into a PR. A…",
  "key_points": [
    "Drill focuses on exit checklist, not launch checklist",
    "Measures T-dark, T-inform, and T-restore times",
    "Conducted on free tier, disposable twin server"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}