        0/0 |    STARTUP │ (Re)initialized boot script
        0/0 |   DIRECTOR │ Launched worker 0
        0/1 |      PHASE │ run
        0/1 |      START │ runpy ./plan.py
        1/4 |    SUCCESS │ runpy ./plan.py
        1/4 |      START │ runsh echo hi > f1.txt
        2/4 |    SUCCESS │ runsh echo hi > f1.txt
        2/4 |      START │ runpy ./work.py
        3/4 |    SUCCESS │ runpy ./work.py
        3/3 |       FAIL │ runsh cat f1.txt f2.txt > f3.txt
────────────────────────────────── Step info ───────────────────────────────────
Command               stepup act runsh cat f1.txt f2.txt > f3.txt
──────────────────────────────── Invalid inputs ────────────────────────────────
Input changed unexpectedly: f1.txt (digest 7ea59e7a ➜ a97fe9ac, size 3 ➜ 15)
────────────────────────────────────────────────────────────────────────────────
        3/3 |      ERROR │ The scheduler has been drained due to unexpected input changes.
        3/3 |    WARNING │ 1 step(s) failed.
        3/3 |    WARNING │ Scheduler is put on hold. Not reporting pending steps.
        3/3 |    WARNING │ Skipping file cleanup due to incomplete build
        3/3 |    WARNING │ Check logs: .stepup/fail.log .stepup/warning.log
        3/3 |      PHASE │ watch
        3/3 |   DIRECTOR │ Stopping workers
        3/3 |   DIRECTOR │ See you!
