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

file:plan.py
               state = CONFIRMED
             creator   root:
                sink   step:./plan.py
                sink   step:cat ../plan.py  # wd=sub

step:./plan.py
               state = SUCCEEDED
                need = PLAN
           using_env = STEPUP_PATH_FILTER [dynamic]
             creator   root:
              source   file:plan.py
             product   file:example.txt
             product   file:sub/plan.py
             product   step:./plan.py  # wd=sub
             product   step:cp -p example.txt sub/example.txt

file:example.txt
               state = CONFIRMED
             creator   step:./plan.py
                sink   step:cp -p example.txt sub/example.txt

file:sub/plan.py
               state = CONFIRMED
             creator   step:./plan.py
                sink   step:./plan.py  # wd=sub

step:cp -p example.txt sub/example.txt
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py
              source   file:example.txt
             product   file:sub/example.txt
                sink   file:sub/example.txt

file:sub/example.txt
               state = BUILT
             creator   step:cp -p example.txt sub/example.txt
              source   step:cp -p example.txt sub/example.txt
                sink   step:tr '[:lower:]' '[:upper:]' < example.txt > upper.txt  # wd=sub

step:./plan.py  # wd=sub
               state = SUCCEEDED
                need = PLAN
           using_env = STEPUP_PATH_FILTER [dynamic]
             creator   step:./plan.py
              source   file:sub/plan.py
             product   step:cat ../plan.py  # wd=sub
             product   step:tr '[:lower:]' '[:upper:]' < example.txt > upper.txt  # wd=sub

step:tr '[:lower:]' '[:upper:]' < example.txt > upper.txt  # wd=sub
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py  # wd=sub
              source   file:sub/example.txt
             product   file:sub/upper.txt
                sink   file:sub/upper.txt

file:sub/upper.txt
               state = BUILT
             creator   step:tr '[:lower:]' '[:upper:]' < example.txt > upper.txt  # wd=sub
              source   step:tr '[:lower:]' '[:upper:]' < example.txt > upper.txt  # wd=sub

step:cat ../plan.py  # wd=sub
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py  # wd=sub
              source   file:plan.py
