The attempt to cleanly separate out workflow is nice in theory but an extremely leaky abstraction when it comes to real world operations for DAGs larger than 10s of nodes. You will end up with lots of code that will duplicate functionality that exists in a workflow engine just to have something common (e.g. notifications, database ingest, etc...) There are no operational concerns in CWL.