"""demo.py: run all five go-deeper mini-labs back to back, offline and free.

Each is also runnable on its own (e.g. `python dashboard.py`); this just runs them all in order.

Run (from the solution folder):
    python demo.py
"""
import os
import runpy

HERE = os.path.dirname(os.path.abspath(__file__))
LABS = [
    ("1. Structured logging & correlation", "structured_logging"),   # M20
    ("2. Dashboards & the four golden signals", "dashboard"),         # M20 + M31
    ("3. Online evaluation (catch live drift)", "online_eval"),       # M26 + M30
    ("4. Capacity, rate limits & quotas", "rate_limit"),              # M25 + M29
    ("5. Continuous improvement (the flywheel)", "improvement"),      # M30 + M31 + M26
]

if __name__ == "__main__":
    for title, mod in LABS:
        print("\n" + "#" * 70)
        print(f"#  {title}   ({mod}.py)")
        print("#" * 70)
        runpy.run_path(os.path.join(HERE, mod + ".py"), run_name="__main__")
    print("\nAll five go-deeper labs ran. Each extends a module you already built (M20/M25/M26/M29/M30).")
