A hodgepodge of comments...

1) For a really full featured, relatively inexpensive scheduler, I highly recommend JAMS: https://www.jamsscheduler.com/. No association with JAMS other than a very happy customer. They have a free trial, and a rich workflow engine that allows setting up parallel and serial processing, email notification, and restart from point of failure.

2) I once wrote an execution process (not really a scheduler) which used Excel --> SAS dataset, which would run SAS programs in parallel when there were no dependencies, and serially when there were upstream dependencies. It used call system and waitfor commands in SAS. So, there was one main SAS program driving the execution of the rest of the ETL, and it would halt downstream processing if any of the parallel "group" of programs had an error, or if an upstream serial program had an error. I can try to dig up the code should this be useful.

3) Both Powershell (which now runs on Linux) and Python have modules that allow you to run external programs in parallel (including thread limiting) and halting downstream processing if there is an upstream error. Again, I can find a Powershell example if that would be useful. I don't have the Python code, I've only read about it. Would be a fun exercise though :)