checkout-prod · 2026-05-24
run 2026-05-24 03:00 UTC against staging · 12 failure modes · blast radius within limits
| # | Outcome | Failure mode | Observed | First impact | Recovery |
|---|---|---|---|---|---|
| 01 | survived | Pod / Container Kill critical | recovered in 2.1s | 1.2s | 2.1s |
| 02 | survived | Memory Pressure 90% high | degraded cleanly, no errors | — | — |
| 03 | failed | Disk Fill 95% high | writes blocked, no alert fired
Report: impact and remediation → |
11s | — |
| 04 | survived | Network Latency +500ms medium | timeouts held, retries bounded | — | — |
| 05 | failed | DNS Resolution Failure critical | cascade: auth at 4s, gateway 502 at 8s
Report: impact and remediation → |
4s | 30s |
| 06 | failed | Certificate Expiry critical | TLS handshake errors at the edge
Report: impact and remediation → |
0.4s | — |
| 07 | failed | Dependency Unavailable high | no circuit breaker; gateway queued until timeout
Report: impact and remediation → |
0.8s | — |
| 08 | survived | Network Partition critical | leader re-elected in 6.4s | 2.8s | 6.4s |
| 09 | degraded | CPU Saturation medium | p99 up 1.9s until the autoscaler added a replica at 48s
Report: impact and remediation → |
12s | 48s |
| 10 | failed | Credential Revocation high | refresh loop retried on a revoked token until rate-limited
Report: impact and remediation → |
0.2s | — |
| 11 | failed | Clock Skew +5min medium | every token rejected as expired while the clock was skewed
Report: impact and remediation → |
1s | — |
| 12 | failed | Config Corruption high | bad value accepted; crash loop until rolled back at 3m 10s
Report: impact and remediation → |
0.5s | 3m 10s |
survived 4 degraded 1 failed 7 previous run: 4 · 0 · 8
Suggested remediation
03 · Disk Fill 95% failed
- Alert on volume usage well before it is full, and on write errors, not only on crashes. — from: observed “writes blocked”
- Cap what fills the volume — log rotation, retention limits, a quota — so usage falls back without a person. — from: no recovery inside the injection window
- Alert on the symptom this drill caused; nothing watched it this time. — from: outcome failed; observed “no alert”
05 · DNS Resolution Failure failed
- Add a DNS caching sidecar, such as dnsmasq or CoreDNS with the cache plugin. — from: outcome failed
- Retry DNS lookups with bounded exponential backoff instead of failing the health check on the first miss. — from: outcome failed; first impact 4s after injection
- Put a circuit breaker between the caller and the dependency whose name stopped resolving, so one unreachable dependency degrades a path instead of the gateway. — from: observed “cascade”
06 · Certificate Expiry failed
- Watch certificate expiry ahead of time and alert on the TLS handshake error rate at the edge. — from: observed “TLS handshake errors at the edge”
- Automate renewal and reload (cert-manager or equivalent) so a replaced certificate is picked up without a restart. — from: no recovery inside the injection window
07 · Dependency Unavailable failed
- Add a circuit breaker with a fallback and a timeout below the caller's own, so requests fail fast instead of queueing. — from: observed “no circuit breaker”
- Degrade the paths that need the dependency rather than the whole gateway. — from: observed “gateway”
09 · CPU Saturation degraded
- Lower the autoscaler's CPU target or its stabilisation window, so capacity arrives before latency degrades. — from: recovery took 48s
10 · Credential Revocation failed
- Stop retrying on an authorisation failure with the same token: re-fetch the credential once, then fail and alert. — from: observed “loop retried on a revoked token until rate-limited”
11 · Clock Skew +5min failed
- Run time synchronisation on every node and alert on drift. — from: outcome failed
12 · Config Corruption failed
- Validate configuration at startup and refuse to start on an invalid value, rather than running on it. — from: outcome failed
record: evidence/checkout-prod/2026-05-24. What was injected, what was observed and what broke, dated. This run has no sealed record. Every failed or degraded row links to its written report — impact and remediation — which the record carries too.