root:
             product   file:plan.py
             product   step:./plan.py

file:plan.py
               state = CONFIRMED
             creator   root:
                sink   step:./plan.py

step:./plan.py
               state = SUCCEEDED
                need = PLAN
           using_env = STEPUP_PATH_FILTER [dynamic]
             creator   root:
              source   file:plan.py
             product   file:data.txt
             product   file:first.py
             product   file:second.py
             product   step:./first.py transform '{"inp": ["data.txt"], "out": ["intermediate.txt"]}'

file:data.txt
               state = CONFIRMED
             creator   step:./plan.py
                sink   step:./first.py transform '{"inp": ["data.txt"], "out": ["intermediate.txt"]}'

file:first.py
               state = CONFIRMED
             creator   step:./plan.py
                sink   step:./first.py transform '{"inp": ["data.txt"], "out": ["intermediate.txt"]}'

file:second.py
               state = CONFIRMED
             creator   step:./plan.py
                sink   step:./second.py finalize '{"inp": ["intermediate.txt"], "out": ["final.txt"]}'

step:./first.py transform '{"inp": ["data.txt"], "out": ["intermediate.txt"]}'
               state = SUCCEEDED
                need = PLAN
           using_env = STEPUP_PATH_FILTER [dynamic]
             creator   step:./plan.py
              source   file:data.txt
              source   file:first.py
             product   file:intermediate.txt
             product   step:./second.py finalize '{"inp": ["intermediate.txt"], "out": ["final.txt"]}'
                sink   file:intermediate.txt

file:intermediate.txt
               state = BUILT
             creator   step:./first.py transform '{"inp": ["data.txt"], "out": ["intermediate.txt"]}'
              source   step:./first.py transform '{"inp": ["data.txt"], "out": ["intermediate.txt"]}'
                sink   step:./second.py finalize '{"inp": ["intermediate.txt"], "out": ["final.txt"]}'

step:./second.py finalize '{"inp": ["intermediate.txt"], "out": ["final.txt"]}'
               state = SUCCEEDED
                need = DEFAULT
           using_env = STEPUP_PATH_FILTER [dynamic]
             creator   step:./first.py transform '{"inp": ["data.txt"], "out": ["intermediate.txt"]}'
              source   file:intermediate.txt
              source   file:second.py
             product   file:final.txt
                sink   file:final.txt

file:final.txt
               state = BUILT
             creator   step:./second.py finalize '{"inp": ["intermediate.txt"], "out": ["final.txt"]}'
              source   step:./second.py finalize '{"inp": ["intermediate.txt"], "out": ["final.txt"]}'
