Thanks Thomaz for detailed solutions and approaches.

On the serverless point we've benchmarked it, and it doesn't close the gap. Both figures below are serverless jobs compute on PERFORMANCE_OPTIMIZED, same 10-asset source system, same concurrency of 4. The only variable is architecture.
run_job_task per item (child job holding a 6-task graph): wave 1 averaged 3m43s; steady state settled at ~2m42s per item. Total 10 minutes wall clock.
ForEach with a single collapsed notebook task: wave 1 averaged 1m53s; steady state ~44s per item. Total 3.5 minutes wall clock.
That's 2. The per-item overhead in the fan-out is roughly two minutes, and it does not amortize — it's incurred per run, and each item is a run. Projected to our full 56-asset workload at the same concurrency: roughly 39 minutes versus 11.
In addition to that time depends on number tasks in for each dag more the tasks more is the time for each task.
We're not arguing cost alone — your framing advice is right, and we'll lead with orchestration fidelity and the unified iteration-scoped run view. But we'd ask that the cost dimension not be treated as solved by serverless. We measured it on the fastest tier available and it isn't. 

Regards

Nitin

View solution in original post