This extends the demo pipeline slightly to cover a test case created by a user in Slack - I also refactored and commented the algorithm responsible for this so it's easier to follow.
This diff also tweaks the algorithm slightly so that upcoming (un-executed) dynamic paths are still included in the "planned" steps while the run is executing. When all of the parent steps have run, the placeholder is removed and we use the invocations observed in the logs (which may be zero). Video here: