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]
               nglob = ch-*/sec-${*ch}-${*sec}-${*name}.txt (ch=[0-9])
             creator   root:
              source   file:plan.py
             product   file:ch-1-intro/sec-1-1-blabla.txt
             product   file:ch-1-intro/sec-1-2-some-more.txt
             product   file:ch-2-theory/sec-2-1-basics.txt
             product   file:ch-2-theory/sec-2-2-advanced.txt
             product   file:ch-3-conclusions/sec-3-1-summary.txt
             product   file:ch-3-conclusions/sec-3-2-outlook.txt
             product   step:cat ch-1-intro/compiled.md ch-2-theory/compiled.md ch-3-conclusions/compiled.md > book.md
             product   step:cat ch-1-intro/sec-1-1-blabla.md ch-1-intro/sec-1-2-some-more.md > ch-1-intro/compiled.md
             product   step:cat ch-2-theory/sec-2-2-advanced.md ch-2-theory/sec-2-1-basics.md > ch-2-theory/compiled.md
             product   step:cat ch-3-conclusions/sec-3-2-outlook.md ch-3-conclusions/sec-3-1-summary.md > ch-3-conclusions/compiled.md
             product   step:cp -p ch-1-intro/sec-1-1-blabla.txt ch-1-intro/sec-1-1-blabla.md
             product   step:cp -p ch-1-intro/sec-1-2-some-more.txt ch-1-intro/sec-1-2-some-more.md
             product   step:cp -p ch-2-theory/sec-2-1-basics.txt ch-2-theory/sec-2-1-basics.md
             product   step:cp -p ch-2-theory/sec-2-2-advanced.txt ch-2-theory/sec-2-2-advanced.md
             product   step:cp -p ch-3-conclusions/sec-3-1-summary.txt ch-3-conclusions/sec-3-1-summary.md
             product   step:cp -p ch-3-conclusions/sec-3-2-outlook.txt ch-3-conclusions/sec-3-2-outlook.md

file:ch-1-intro/sec-1-1-blabla.txt
               state = CONFIRMED
             creator   step:./plan.py
                sink   step:cp -p ch-1-intro/sec-1-1-blabla.txt ch-1-intro/sec-1-1-blabla.md

file:ch-1-intro/sec-1-2-some-more.txt
               state = CONFIRMED
             creator   step:./plan.py
                sink   step:cp -p ch-1-intro/sec-1-2-some-more.txt ch-1-intro/sec-1-2-some-more.md

file:ch-2-theory/sec-2-1-basics.txt
               state = CONFIRMED
             creator   step:./plan.py
                sink   step:cp -p ch-2-theory/sec-2-1-basics.txt ch-2-theory/sec-2-1-basics.md

file:ch-2-theory/sec-2-2-advanced.txt
               state = CONFIRMED
             creator   step:./plan.py
                sink   step:cp -p ch-2-theory/sec-2-2-advanced.txt ch-2-theory/sec-2-2-advanced.md

file:ch-3-conclusions/sec-3-1-summary.txt
               state = CONFIRMED
             creator   step:./plan.py
                sink   step:cp -p ch-3-conclusions/sec-3-1-summary.txt ch-3-conclusions/sec-3-1-summary.md

file:ch-3-conclusions/sec-3-2-outlook.txt
               state = CONFIRMED
             creator   step:./plan.py
                sink   step:cp -p ch-3-conclusions/sec-3-2-outlook.txt ch-3-conclusions/sec-3-2-outlook.md

step:cp -p ch-1-intro/sec-1-1-blabla.txt ch-1-intro/sec-1-1-blabla.md
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py
              source   file:ch-1-intro/sec-1-1-blabla.txt
             product   file:ch-1-intro/sec-1-1-blabla.md
                sink   file:ch-1-intro/sec-1-1-blabla.md

file:ch-1-intro/sec-1-1-blabla.md
               state = BUILT
             creator   step:cp -p ch-1-intro/sec-1-1-blabla.txt ch-1-intro/sec-1-1-blabla.md
              source   step:cp -p ch-1-intro/sec-1-1-blabla.txt ch-1-intro/sec-1-1-blabla.md
                sink   step:cat ch-1-intro/sec-1-1-blabla.md ch-1-intro/sec-1-2-some-more.md > ch-1-intro/compiled.md

step:cp -p ch-1-intro/sec-1-2-some-more.txt ch-1-intro/sec-1-2-some-more.md
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py
              source   file:ch-1-intro/sec-1-2-some-more.txt
             product   file:ch-1-intro/sec-1-2-some-more.md
                sink   file:ch-1-intro/sec-1-2-some-more.md

file:ch-1-intro/sec-1-2-some-more.md
               state = BUILT
             creator   step:cp -p ch-1-intro/sec-1-2-some-more.txt ch-1-intro/sec-1-2-some-more.md
              source   step:cp -p ch-1-intro/sec-1-2-some-more.txt ch-1-intro/sec-1-2-some-more.md
                sink   step:cat ch-1-intro/sec-1-1-blabla.md ch-1-intro/sec-1-2-some-more.md > ch-1-intro/compiled.md

step:cp -p ch-2-theory/sec-2-2-advanced.txt ch-2-theory/sec-2-2-advanced.md
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py
              source   file:ch-2-theory/sec-2-2-advanced.txt
             product   file:ch-2-theory/sec-2-2-advanced.md
                sink   file:ch-2-theory/sec-2-2-advanced.md

file:ch-2-theory/sec-2-2-advanced.md
               state = BUILT
             creator   step:cp -p ch-2-theory/sec-2-2-advanced.txt ch-2-theory/sec-2-2-advanced.md
              source   step:cp -p ch-2-theory/sec-2-2-advanced.txt ch-2-theory/sec-2-2-advanced.md
                sink   step:cat ch-2-theory/sec-2-2-advanced.md ch-2-theory/sec-2-1-basics.md > ch-2-theory/compiled.md

step:cp -p ch-2-theory/sec-2-1-basics.txt ch-2-theory/sec-2-1-basics.md
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py
              source   file:ch-2-theory/sec-2-1-basics.txt
             product   file:ch-2-theory/sec-2-1-basics.md
                sink   file:ch-2-theory/sec-2-1-basics.md

file:ch-2-theory/sec-2-1-basics.md
               state = BUILT
             creator   step:cp -p ch-2-theory/sec-2-1-basics.txt ch-2-theory/sec-2-1-basics.md
              source   step:cp -p ch-2-theory/sec-2-1-basics.txt ch-2-theory/sec-2-1-basics.md
                sink   step:cat ch-2-theory/sec-2-2-advanced.md ch-2-theory/sec-2-1-basics.md > ch-2-theory/compiled.md

step:cp -p ch-3-conclusions/sec-3-2-outlook.txt ch-3-conclusions/sec-3-2-outlook.md
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py
              source   file:ch-3-conclusions/sec-3-2-outlook.txt
             product   file:ch-3-conclusions/sec-3-2-outlook.md
                sink   file:ch-3-conclusions/sec-3-2-outlook.md

file:ch-3-conclusions/sec-3-2-outlook.md
               state = BUILT
             creator   step:cp -p ch-3-conclusions/sec-3-2-outlook.txt ch-3-conclusions/sec-3-2-outlook.md
              source   step:cp -p ch-3-conclusions/sec-3-2-outlook.txt ch-3-conclusions/sec-3-2-outlook.md
                sink   step:cat ch-3-conclusions/sec-3-2-outlook.md ch-3-conclusions/sec-3-1-summary.md > ch-3-conclusions/compiled.md

step:cp -p ch-3-conclusions/sec-3-1-summary.txt ch-3-conclusions/sec-3-1-summary.md
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py
              source   file:ch-3-conclusions/sec-3-1-summary.txt
             product   file:ch-3-conclusions/sec-3-1-summary.md
                sink   file:ch-3-conclusions/sec-3-1-summary.md

file:ch-3-conclusions/sec-3-1-summary.md
               state = BUILT
             creator   step:cp -p ch-3-conclusions/sec-3-1-summary.txt ch-3-conclusions/sec-3-1-summary.md
              source   step:cp -p ch-3-conclusions/sec-3-1-summary.txt ch-3-conclusions/sec-3-1-summary.md
                sink   step:cat ch-3-conclusions/sec-3-2-outlook.md ch-3-conclusions/sec-3-1-summary.md > ch-3-conclusions/compiled.md

step:cat ch-1-intro/sec-1-1-blabla.md ch-1-intro/sec-1-2-some-more.md > ch-1-intro/compiled.md
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py
              source   file:ch-1-intro/sec-1-1-blabla.md
              source   file:ch-1-intro/sec-1-2-some-more.md
             product   file:ch-1-intro/compiled.md
                sink   file:ch-1-intro/compiled.md

file:ch-1-intro/compiled.md
               state = BUILT
             creator   step:cat ch-1-intro/sec-1-1-blabla.md ch-1-intro/sec-1-2-some-more.md > ch-1-intro/compiled.md
              source   step:cat ch-1-intro/sec-1-1-blabla.md ch-1-intro/sec-1-2-some-more.md > ch-1-intro/compiled.md
                sink   step:cat ch-1-intro/compiled.md ch-2-theory/compiled.md ch-3-conclusions/compiled.md > book.md

step:cat ch-2-theory/sec-2-2-advanced.md ch-2-theory/sec-2-1-basics.md > ch-2-theory/compiled.md
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py
              source   file:ch-2-theory/sec-2-1-basics.md
              source   file:ch-2-theory/sec-2-2-advanced.md
             product   file:ch-2-theory/compiled.md
                sink   file:ch-2-theory/compiled.md

file:ch-2-theory/compiled.md
               state = BUILT
             creator   step:cat ch-2-theory/sec-2-2-advanced.md ch-2-theory/sec-2-1-basics.md > ch-2-theory/compiled.md
              source   step:cat ch-2-theory/sec-2-2-advanced.md ch-2-theory/sec-2-1-basics.md > ch-2-theory/compiled.md
                sink   step:cat ch-1-intro/compiled.md ch-2-theory/compiled.md ch-3-conclusions/compiled.md > book.md

step:cat ch-3-conclusions/sec-3-2-outlook.md ch-3-conclusions/sec-3-1-summary.md > ch-3-conclusions/compiled.md
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py
              source   file:ch-3-conclusions/sec-3-1-summary.md
              source   file:ch-3-conclusions/sec-3-2-outlook.md
             product   file:ch-3-conclusions/compiled.md
                sink   file:ch-3-conclusions/compiled.md

file:ch-3-conclusions/compiled.md
               state = BUILT
             creator   step:cat ch-3-conclusions/sec-3-2-outlook.md ch-3-conclusions/sec-3-1-summary.md > ch-3-conclusions/compiled.md
              source   step:cat ch-3-conclusions/sec-3-2-outlook.md ch-3-conclusions/sec-3-1-summary.md > ch-3-conclusions/compiled.md
                sink   step:cat ch-1-intro/compiled.md ch-2-theory/compiled.md ch-3-conclusions/compiled.md > book.md

step:cat ch-1-intro/compiled.md ch-2-theory/compiled.md ch-3-conclusions/compiled.md > book.md
               state = SUCCEEDED
                need = DEFAULT
             creator   step:./plan.py
              source   file:ch-1-intro/compiled.md
              source   file:ch-2-theory/compiled.md
              source   file:ch-3-conclusions/compiled.md
             product   file:book.md
                sink   file:book.md

file:book.md
               state = BUILT
             creator   step:cat ch-1-intro/compiled.md ch-2-theory/compiled.md ch-3-conclusions/compiled.md > book.md
              source   step:cat ch-1-intro/compiled.md ch-2-theory/compiled.md ch-3-conclusions/compiled.md > book.md
