# Demonstration: Every Step, In Order, On a Real Failure ## OBSERVE A startup script fails: `/srv/demo/start.sh` exits with an error. That's the specific, concrete symptom — not "the service is down." ## GATHER EVIDENCE ``` $ /srv/demo/start.sh FATAL: config file not found: /srv/demo/config/settings.conf ``` The script's own error message IS the evidence — no guessing required. ## FORM HYPOTHESIS The config file at that exact path doesn't exist. That's the specific, testable hypothesis — not "something's misconfigured." ## TEST ``` $ ls /srv/demo/config/ ls: cannot access '/srv/demo/config/': No such file or directory ``` Confirmed — the directory itself doesn't exist yet, not just the file. ## REPAIR ``` $ mkdir -p /srv/demo/config $ echo "mode=production" > /srv/demo/config/settings.conf ``` The minimal fix for the CONFIRMED cause — not a broader "reinstall everything" overcorrection. ## VALIDATE ``` $ /srv/demo/start.sh Started with config: mode=production ``` The original symptom is gone, confirmed with real output, not assumption. ## PREVENT RECURRENCE A real prevention step here: the script should probably check for and create its config directory on first run, or the deployment process should ensure the config exists before the service ever starts — naming this explicitly is what separates a real fix from a lucky one. ## Instructor Notes **Demo goal:** Show all seven steps applied in strict order to one concrete, realistic failure — the exact structure this module's Lab requires students to repeat themselves. **Approximate timing:** 10 minutes live. **Common mistake to watch for:** skipping straight to REPAIR (creating the file) without first articulating the hypothesis and testing it — even when the fix seems obvious, naming the hypothesis explicitly is the habit this module is building.