senro, a modern pipeline engine in Go (@golang.org), can build the run itself.
From your repo: one step per project, read from the layout you already have (Go workspaces, Cargo, npm, Maven, Bazel).
A step can add steps mid-run, one per resource after an infra plan.
github.com/xavidop/senro