DRFailoverDrill — Interactive Failover Drill Recorder
14 quarterly DR failover drills logged. Per drill: target service, hypothesis, planned RTO/RPO vs observed, minute-by-minute timeline, deviations from plan, action items shipped vs open, post-mortem cross-references. The actual exercise log SOC2 CC9.1 + ISO 22301 §8.5 demand — including 1 failed drill where the failover path was undocumented.
What it is
The shape behind every defensible BCP/DR program. ChaosScore (batch 8) shipped the per-service maturity model. DRFailoverDrill ships the actual drill log — minute-by-minute timeline, deviations, action items.
What’s in it
- 14 quarterly drills spanning 24 months across the realistic service mix:
- DR-001 checkout-api — clean 4-min RTO under 5-min target
- DR-002 search-svc — PARTIAL, 38-min over 15-min RTO (cross-references IncidentLog INC-07307)
- DR-003 cart-svc — PARTIAL, 90s lag spike (cross-references INC-07014)
- DR-005 auth-svc — clean
- DR-006 app-postgres — PARTIAL, 42m vs 30m RTO due to WAL backlog
- DR-008 SES region switch — 30-min sending-reputation rebuild (INC-03188)
- DR-011 — REAL us-east-1 outage promoted to drill validation (INC-09182)
- DR-012 inventory-svc — FAIL, failover path was undocumented (cross-references ChaosScore SVC06)
- DR-014 billing-batch — SCHEDULED but never executed (CRITICAL GAP)
- Per-drill 8-field shape:
- Planned RTO / RPO vs observed
- Minute-by-minute timeline
- Deviations from plan (each deviation explicit + traced)
- Action items (done / open) per drill
- Notes + post-mortem references
Why this shape
SOC2 CC9.1 + CC7.5 + ISO 22301 §8.5 (exercising + testing) + NIST SP 800-34 (contingency planning) all demand documented evidence of regularly-exercised failover. The artifact most teams produce in panic the night before the audit. DRFailoverDrill prototypes the persistent log that converts every drill into both a learning artifact AND audit evidence.
How it ships
Single HTML file, ~18KB. Zero dependencies. 14 drills × per-drill timeline + deviations + action items in 200 lines of vanilla JavaScript.