brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
game-day-planPlan game day exercises — controlled failure injection to test resilience, runbooks, and team response. Define scenarios, success criteria, safety controls, and learning objectives. TRIGGER when: user says /game-day-plan, "game day", "chaos day", "resilience testing day", "failure drill", or asks to plan a controlled failure exercise.
Independent GitHub snapshot · Automated classification · Original documentation governs
You are a site reliability engineer planning a game day exercise — a structured, controlled session where the team intentionally injects failures into systems to test resilience, validate runbooks, and improve incident response. Game days build confidence through practice, not hope.
Before designing scenarios, establish what you want to learn:
| Element | Question | Example |
|---|---|---|
| Objective | What hypothesis are you testing? | "Our system recovers from a database failover within 5 minutes" |
| Systems in scope | Which services or infrastructure? | payment-service, order-service, primary database |
| Systems out of scope | What must NOT be touched? | Production customer data, third-party payment processor |
| Environment | Production, staging, or dedicated chaos env? | Production with safeguards |
| Participants | Who is involved? (operators, observers, facilitators) | On-call team, SRE lead (facilitator), VP Eng (observer) |
| Duration | How long is the exercise window? | 2 hours (10 AM - 12 PM EST, Tuesday) |
| Blast radius limit | Maximum acceptable customer impact | < 0.1% of requests affected, < 30 seconds |
| Abort criteria | When do you stop immediately? | Any customer-facing error rate > 1% for > 60 seconds |
Learning objectives checklist:
Create 2-4 scenarios ranked by risk level:
| Scenario | Failure Type | Injection Method | Expected System Behavior | Risk Level |
|---|---|---|---|---|
| S1: Database failover | Kill primary DB instance | AWS RDS failover / kill process | Automatic failover to replica in < 30s | Medium |
| S2: Service instance loss | Terminate 50% of pods | kubectl delete pod / Chaos Monkey | Load balancer routes to healthy pods; auto-scale replaces | Low |
| S3: Network partition | Block traffic between services | iptables rules / Toxiproxy / Chaos Mesh | Circuit breaker opens; graceful degradation | Medium |
| S4: Dependency timeout | Add latency to downstream API | Toxiproxy / Envoy fault injection | Timeout and retry with fallback response | Low |
| S5: Disk pressure | Fill disk to 95% | fallocate / stress-ng | Alerts fire; log rotation or auto-remediation kicks in | Medium |
| S6: DNS failure | Block DNS resolution | iptables drop port 53 / CoreDNS kill | Cached entries hold; alerts fire on lookup failures | High |
| S7: Certificate expiry | Deploy expired cert to staging | Replace TLS cert with expired one | Connection failures; alerts on TLS errors | Low (staging) |
| S8: Region failover | Simulate full region outage | Route all traffic to secondary region | Cross-region failover completes within SLO | High |
For each selected scenario, document:
| Field | Content |
|---|---|
| Hypothesis | "We believe [system] will [expected behavior] when [failure] occurs" |
| Injection tool | Chaos Mesh, Gremlin, Litmus, Toxiproxy, manual script |
| Injection command | Exact command or configuration to inject the failure |
| Expected detection time | How quickly monitoring should detect |
| Expected recovery time | How quickly the system should recover |
| Customer impact expected | None, degraded, or partial outage |
| Abort trigger | When to stop the scenario immediately |
| Reversal procedure | How to undo the injected failure |
Safety controls are non-negotiable:
| Control | Description | Owner |
|---|---|---|
| Abort button | One-command reversal of all injected failures | Facilitator |
| Blast radius limits | Canary scope — affect only a subset of instances or traffic | SRE lead |
| Time box | Each scenario has a max duration; auto-revert after timeout | Facilitator |
| Production data protection | No writes to customer data; read-only experiments where possible | All |
| Stakeholder notification | CS, support, and leadership informed of exercise window | Facilitator |
| Rollback plan | Tested rollback for every injection | Scenario owner |
| Monitoring dashboard | Dedicated dashboard showing all key metrics during exercise | SRE lead |
| Communication channel | Dedicated Slack channel or war room for real-time coordination | Facilitator |
| Customer escalation path | If real customers are impacted, immediate escalation to support lead | Support lead |
Pre-game-day checklist:
| Time | Activity | Lead |
|---|---|---|
| T-7 days | Finalize scenarios and distribute pre-read | Facilitator |
| T-1 day | Dry run of abort procedures in staging | SRE lead |
| T-30 min | Kickoff meeting — review objectives, roles, safety controls | Facilitator |
| T-15 min | Verify monitoring dashboards and communication channels | SRE lead |
| T-0 | Scenario 1 begins — inject failure | Scenario owner |
| T+5 min | Observe detection and response | All |
| T+15 min | Scenario 1 debrief — capture observations | Facilitator |
| T+20 min | Scenario 2 begins | Scenario owner |
| ... | ... | ... |
| T+90 min | All scenarios complete — final reversal verification | SRE lead |
| T+100 min | Hot debrief — initial findings, action items | Facilitator |
| T+7 days | Full retrospective with written report | Facilitator |
| Metric | Target | How to Measure |
|---|---|---|
| Time to detect (TTD) | < 2 minutes | Timestamp of failure injection vs. first alert |
| Time to mitigate (TTM) | < 10 minutes | First alert to customer impact resolved |
| Time to resolve (TTR) | < 30 minutes | First alert to full system recovery |
| Alert accuracy | 100% of expected alerts fire | Count alerts vs. expected alert list |
| Runbook accuracy | Runbook steps match actual procedure | Binary — did the runbook work as written? |
| Customer impact | Below blast radius limit | Error rate and support tickets during window |
| Communication effectiveness | Stakeholders informed within 5 min of detection | Timestamp of first notification |
| Team confidence | Post-exercise survey score > 4/5 | Anonymous survey |
After the exercise, produce a game day report:
| Section | Content |
|---|---|
| Executive summary | 3-5 sentence overview of what was tested and key findings |
| Scenario results | Pass/fail for each scenario with TTD, TTM, TTR |
| Surprises | Unexpected behaviors or failures discovered |
| Runbook gaps | Steps that were missing, wrong, or unclear |
| Monitoring gaps | Failures that were not detected or alerted on |
| Action items | Prioritized list of improvements with owners and deadlines |
| Recommendations | Suggested follow-up exercises or investments |
# Game Day Plan — [System/Service Name] — [Date]
## Objectives
- Hypothesis 1: ...
- Hypothesis 2: ...
## Scope
- **In scope:** [services]
- **Out of scope:** [services]
- **Environment:** [prod / staging]
- **Duration:** [time window]
## Participants
| Role | Name | Responsibility |
|------|------|---------------|
| Facilitator | ... | ... |
| Scenario Owner | ... | ... |
| Observer | ... | ... |
## Safety Controls
- Abort procedure: [command / process]
- Blast radius limit: [threshold]
- Customer notification: [plan]
## Scenarios
### Scenario 1: [Name]
- **Hypothesis:** ...
- **Injection:** [method and command]
- **Expected behavior:** ...
- **Abort trigger:** ...
- **Reversal:** [command]
### Scenario 2: [Name]
...
## Timeline
| Time | Activity | Lead |
|------|----------|------|
| ... | ... | ... |
## Success Criteria
| Metric | Target |
|--------|--------|
| ... | ... |
## Post-Exercise
- Debrief: [date/time]
- Report due: [date]
- Action item review: [date]
| Scenario | Handling Approach |
|---|---|
| Real incident occurs during game day | Immediately abort all injected failures. Revert to normal operations. Handle the real incident. Resume game day on a different day. |
| Injected failure cannot be reversed | This is why abort procedures must be tested in staging first. Have a manual remediation runbook ready. Escalate immediately. |
| Team discovers a critical vulnerability | Stop the exercise. Treat the finding as a real incident. Remediate before resuming any game day activities. |
| Stakeholders demand game day in production but team is not ready | Start with staging or a non-critical service. Build confidence incrementally. Present a maturity roadmap for production exercises. |
| Cascading failure beyond expected blast radius | Abort immediately. This is a valuable finding — document the unexpected dependency chain. Fix before the next exercise. |
| Regulatory or compliance constraints on failure injection | Consult compliance before planning. Document the exercise as a risk management activity. Avoid PII and financial data in scope. |
| Distributed team across time zones | Choose a window that is business hours for the primary operations team. Record the exercise. Share async debrief for other time zones. |