Pipeline processing systems can provide a set of useful features:
But pipeline frameworks can get in the way
We want our code to look like the underlying algorithm, not like a software framework.
Functions are the simplest abstraction used by everyone. Our pipeline jobs (or tasks) are made of decorated functions.
Tracking of parameters in a meaningful way requires specification of data model. We give up on that and use hashing for performance and robustness.