Specification-driven composition for flexible data workflows — Blankdot