root:
             creates   file:./
             creates   file:plan.py
             creates   step:runpy ./plan.py

file:./
               state = STATIC
          created by   root:
            supplies   file:plan.py
            supplies   file:story.txt
            supplies   step:runpy ./plan.py
            supplies   step:runsh echo First line. > story.txt; echo Second line. >> story.txt
            supplies   step:runsh grep First story.txt

file:plan.py
               state = STATIC
              digest = 4c8314c9 c182a0e1 2e88a410 247dcd90 39aadbda baca3903 487461c2 76a95658
                     = 562374b1 bad3d28b e1012b39 060b4911 43f0fa3f adb3186b 7cdc4b72 30da2e87
          created by   root:
            consumes   file:./
            supplies   step:runpy ./plan.py

step:runpy ./plan.py
               state = RUNNING
          created by   root:
            consumes   file:./
            consumes   file:plan.py
             creates   step:runsh echo First line. > story.txt; echo Second line. >> story.txt
             creates   step:runsh grep First story.txt

step:runsh echo First line. > story.txt; echo Second line. >> story.txt
               state = RUNNING
          created by   step:runpy ./plan.py
            consumes   file:./
             creates   file:story.txt
            supplies   file:story.txt

file:story.txt
               state = AWAITED
          created by   step:runsh echo First line. > story.txt; echo Second line. >> story.txt
            consumes   file:./
            consumes   step:runsh echo First line. > story.txt; echo Second line. >> story.txt
            supplies   step:runsh grep First story.txt

step:runsh grep First story.txt
               state = PENDING
          created by   step:runpy ./plan.py
            consumes   file:./
            consumes   file:story.txt
