I have this https://github.com/Azure/go-asyncjob library as well, with generic strongType connecting each step input/output.
https://pkg.go.dev/cuelang.org/go@v0.10.1/tools/flow (cue cmd is the default implementation of this)
https://docs.hofstadter.io/getting-started/task-engine/ (custom example)
There are undocumented quirks (and documentation gaps) requiring hours of experimentation, some subtle bugs and ergonomy paper cuts.
For solution integration solution has to be approachable, and as much as I have sympathy for Cue it just isn’t one. It feels like one needs PhD in software engineering to use it.
This is IMO reason why people go for things like Airflow - popularity and ease of entry. Using Cue in distributed environment isn’t that hard. It can be used directly from Go or wrapped in Erlang/Elixir port.