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

file:./
               state = STATIC
          created by   root:
            supplies   file:plan.py
            supplies   file:sub/
            supplies   step:runpy ./plan.py

file:plan.py
               state = STATIC
          created by   root:
            consumes   file:./
            supplies   step:runpy ./plan.py

step:runpy ./plan.py
               state = SUCCEEDED
             env_var = STEPUP_PATH_FILTER [amended]
          created by   root:
            consumes   file:./
            consumes   file:plan.py
             creates   file:sub/
             creates   file:sub/plan.py
             creates   step:runpy ./plan.py  # wd=sub/

file:sub/
               state = STATIC
          created by   step:runpy ./plan.py
            consumes   file:./
            supplies   file:sub/inp1.txt
            supplies   file:sub/inp2.txt
            supplies   file:sub/out1.txt
            supplies   file:sub/out2.txt
            supplies   file:sub/plan.py
            supplies   step:copy inp1.txt out1.txt  # wd=sub/
            supplies   step:copy inp2.txt out2.txt  # wd=sub/
            supplies   step:runpy ./plan.py  # wd=sub/

file:sub/plan.py
               state = STATIC
          created by   step:runpy ./plan.py
            consumes   file:sub/
            supplies   step:runpy ./plan.py  # wd=sub/

step:runpy ./plan.py  # wd=sub/
               state = SUCCEEDED
             env_var = STEPUP_PATH_FILTER [amended]
                 ngm = ['sub/inp${*idx}.txt'] {'idx': '?'}
          created by   step:runpy ./plan.py
            consumes   file:sub/
            consumes   file:sub/plan.py
             creates   file:sub/inp1.txt
             creates   file:sub/inp2.txt
             creates   step:copy inp1.txt out1.txt  # wd=sub/
             creates   step:copy inp2.txt out2.txt  # wd=sub/

file:sub/inp1.txt
               state = STATIC
          created by   step:runpy ./plan.py  # wd=sub/
            consumes   file:sub/
            supplies   step:copy inp1.txt out1.txt  # wd=sub/

file:sub/inp2.txt
               state = STATIC
          created by   step:runpy ./plan.py  # wd=sub/
            consumes   file:sub/
            supplies   step:copy inp2.txt out2.txt  # wd=sub/

step:copy inp1.txt out1.txt  # wd=sub/
               state = SUCCEEDED
          created by   step:runpy ./plan.py  # wd=sub/
            consumes   file:sub/
            consumes   file:sub/inp1.txt
             creates   file:sub/out1.txt
            supplies   file:sub/out1.txt

file:sub/out1.txt
               state = BUILT
          created by   step:copy inp1.txt out1.txt  # wd=sub/
            consumes   file:sub/
            consumes   step:copy inp1.txt out1.txt  # wd=sub/

step:copy inp2.txt out2.txt  # wd=sub/
               state = SUCCEEDED
          created by   step:runpy ./plan.py  # wd=sub/
            consumes   file:sub/
            consumes   file:sub/inp2.txt
             creates   file:sub/out2.txt
            supplies   file:sub/out2.txt

file:sub/out2.txt
               state = BUILT
          created by   step:copy inp2.txt out2.txt  # wd=sub/
            consumes   file:sub/
            consumes   step:copy inp2.txt out2.txt  # wd=sub/
