I recommend you think of Dagger as a "micro-workflow" orchestrator.
As I've noted above, I've been thinking of Dagger mainly as a task runner for anything that can run in a container, with the idea being, this takes out any kind of tech-in-the-middle worries about the infrastructure on any particular compute node (be it a server in the cloud or a local laptop) i.e. the reproducibility Dagger wants to guarantee to its users.
Another way I've been thinking about Dagger is, it turns Docker inside out, by allowing Docker to be ran imperatively, instead of declaratively i.e. with code instead of config.
Dagger actually does orchestrate workflows made of many tasks. It has a sophisticated scheduler
What I don't yet get is how Dagger can, other than via looping in a module function, run anything in a "workflow" manner. Any workflow I believe that can be gotten via Dagger currently is only available through the code I write, not via anything Dagger offers me directly (currently). I've dug into the SDK docs and I just don't see any methods offered, which can give me workflow capabilities.
The "sophisticated scheduler", that you mentioned Solomon, isn't documented (that I could find). In other words, the documentation does not explain what can be expected of Dagger in terms of any kind of "scheduling" or "orchestration" of tasks. In the docs, there is this:
Dagger Functions are the fundamental unit of computing in Dagger. Dagger Functions let you encapsulate common project operations or workflows, such as "pull a container image", "copy a file", and "forward a TCP port", into portable, reusable program code with clear inputs and outputs.
Those examples are tasks and no mention about how they can be "orchestrated".
I saw the section with chaining of functions in a Dagger CLI call. That isn't workflow. It's a combining of tasks. For instance, what happens when the first task fails? Are there retries? Are there ways to fallback? It's not workflow to me.