{"id":17874781,"url":"https://github.com/dastergon/wheel-of-misfortune","last_synced_at":"2026-02-28T19:01:05.502Z","repository":{"id":38417977,"uuid":"135810191","full_name":"dastergon/wheel-of-misfortune","owner":"dastergon","description":"A role-playing game for incident management training","archived":false,"fork":false,"pushed_at":"2024-02-27T04:31:39.000Z","size":188,"stargazers_count":181,"open_issues_count":6,"forks_count":50,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-21T07:41:30.871Z","etag":null,"topics":["chaos-engineering","devops","incident-management","incident-response","incident-scenario","oncall-engineers","postmortem","reliability","site-reliability","site-reliability-engineering","sre"],"latest_commit_sha":null,"homepage":"https://dastergon.gr/wheel-of-misfortune/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dastergon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"dastergon"}},"created_at":"2018-06-02T10:55:56.000Z","updated_at":"2025-07-30T12:53:43.000Z","dependencies_parsed_at":"2024-10-28T11:39:07.085Z","dependency_job_id":"c946f47f-0b58-499e-95db-058386547bc8","html_url":"https://github.com/dastergon/wheel-of-misfortune","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/dastergon/wheel-of-misfortune","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dastergon%2Fwheel-of-misfortune","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dastergon%2Fwheel-of-misfortune/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dastergon%2Fwheel-of-misfortune/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dastergon%2Fwheel-of-misfortune/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dastergon","download_url":"https://codeload.github.com/dastergon/wheel-of-misfortune/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dastergon%2Fwheel-of-misfortune/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29948228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T18:42:55.706Z","status":"ssl_error","status_checked_at":"2026-02-28T18:42:48.811Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chaos-engineering","devops","incident-management","incident-response","incident-scenario","oncall-engineers","postmortem","reliability","site-reliability","site-reliability-engineering","sre"],"created_at":"2024-10-28T11:11:25.242Z","updated_at":"2026-02-28T19:01:05.436Z","avatar_url":"https://github.com/dastergon.png","language":"HTML","funding_links":["https://github.com/sponsors/dastergon"],"categories":["Training and Courses"],"sub_categories":["Processes"],"readme":"# Wheel of Misfortune\n**Wheel of Misfortune** is a game that aims to build confidence in on-call engineers via simulated outage scenarios.\nWith the game, you practice problem debugging under stress, understanding the incident management protocol,\nand effective communication with other engineers of your team and organization.\nIt is a great way to train new hires, interns, and seasoned engineers to become well-rounded on-call engineers.\n\nThe game is inspired by the [Site Reliability Engineering](https://landing.google.com/sre/book/chapters/accelerating-sre-on-call.html#xref_training_disaster-rpg) book.\n\n[Demo website](https://dastergon.gr/wheel-of-misfortune)\n\n## Instructions\n### Terminology\n\n*   **Scenario**: A past or fictional incident case.\n*   **Game Master**: The host-coordinator of the session.\n*   **Volunteer**: The trainee on-call engineer.\n\nFeel free to fork the [repository](https://github.com/dastergon/wheel-of-misfortune) or [download](https://github.com/dastergon/wheel-of-misfortune/releases) the stable release.\nCopy the [general\\_incidents.json.sample](incidents/general\\_incidents.json.sample) file to *general_incidents.json*, inside the [incidents/](incidents/) directory, and insert your incident scenarios into it.\n\nTo run the game locally on your computer please navigate the the main directory of the downloaded project i.e. `wheel-of-misfortune-5.0/` and from here start a web server i.e. `python -m SimpleHTTPServer` after that open the http://localhost:8000 using your web browser.\n\nThe file has the following format:\n- **ID**: the unique ID of the outage (you can just auto-increment).\n- **title**: the title of the incident.\n- **scenario**: the description of the incident. It is useful to include URLs from monitoring systems, dashboards, time-series databases and playbooks.\n- **inkstory**: the path to an [Ink](https://www.inklestudios.com/ink/) story file in JSON format.\n\nYou can also use [general\\_incidents.jsonnet](incidents/general_incidents.jsonnet.sample) as an example, in case you want to generate your incident scenarios using [Jsonnet](https://jsonnet.org/).\n\n### Ink\n[Ink](https://github.com/inkle/ink) is a scripting language for writing interactive narrative stories. It enables us to write interactive incident response narratives for team or individual trainings. You can use [Inky](https://github.com/inkle/inky) to write an interactive narrative for an incident and then export the story as JSON. Then, you can store the story file inside the [incidents/](incidents/) folder and associate the Ink story file with an Incident scenario using the **inkstory** key. You can read an example incident narrative [here](https://github.com/dastergon/wheel-of-misfortune/tree/master/incidents/redis-story.json).\n\n### Role Playing\n#### Game Master\n\n1.  Choose a volunteer to be the primary on-call engineer in front of the group.\n2.  Find a balance between the volunteer's experience and the incident's difficulty.\n3.  Assist volunteer by answering questions that may arise in each theoretical action or dashboard observation.\n  * Engage with the rest of the team and ask for different ways to debug the problem following the volunteer's explanation.\n  * Team members may be made available over time for assistance in various topics.\n5.  At the end, have a debrief on the learnings of the session.\n\n\n#### Volunteer\n\n1.  Spin the wheel and attempt to fix the theoretical outage scenario.\n2.  Explain to the Game Master and the rest of the group what actions you would take (lookup queries, checks in dashboards, etc.) to find the root causes, and eventually solve the incident.\n3.  Always keep an eye on the time, since it is a simulated incident response scenario and not a routine troubleshooting process. During a real incident, you might have an SLA or SLO breach and therefore you should take timing into account.\n4.  Engage with the rest of the group. Keep them in the loop. Ask questions to different members depending on their expertise.\n\nMost importantly, **have fun!**\n\nYou can [read](https://landing.google.com/sre/book/chapters/accelerating-sre-on-call.html#xref_training_disaster-rpg) a comprehensive example on how to conduct the exercise in the Google SRE book.\n\n### Featured\n\nThe Wheel of Misfortune was established as a practice in [Open Practice Library](https://openpracticelibrary.com/) and this project was [featured](https://openpracticelibrary.com/practice/wheel-of-misfortune/) there.\n\n### Resources\n\n*   [Disaster Role Playing](https://landing.google.com/sre/book/chapters/accelerating-sre-on-call.html#xref_training_disaster-rpg)\n*   [Managing Misfortune for Best Results](https://www.usenix.org/conference/srecon18europe/presentation/barry)\n*   [Postmortem Culture: Learning from Failure](https://landing.google.com/sre/book/chapters/postmortem-culture.html)\n*   [Postmortem Templates](https://github.com/dastergon/postmortem-templates)\n*   [Postmortems Metadata Index](https://postmortems.app)\n*   [Site Reliability Engineering Resources](https://github.com/dastergon/awesome-sre)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdastergon%2Fwheel-of-misfortune","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdastergon%2Fwheel-of-misfortune","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdastergon%2Fwheel-of-misfortune/lists"}