Summary
Add opt-in DAG-parallel target execution. The dependency graph already encodes what can run concurrently; the engine just doesn't exploit it. Default stays sequential.
Findings (file:line)
BuildExecutor.cs:42 — execution is a serial ExecutionPlan.ForEach(...).
Fallout.Core/Planning/TopoSort.cs:93-107 — independent nodes are detected per step but only used to flag ambiguity in strict mode; output is a flat linear order, not parallel waves.
Partition is CI-machine sharding, not intra-build parallelism — distinct feature.
Scope
- Have
TopoSort expose ready-sets / waves (nodes whose dependencies are satisfied).
- Replace the serial loop with a bounded concurrent scheduler honoring
DependencyBehavior, ProceedAfterFailure, AssuredAfterFailure.
- Gate behind
--parallel[=N], default off.
Acceptance criteria
- Independent targets run concurrently when the flag is set.
- Serial execution remains the default and is behavior-identical to today.
- Failure/skip/assured-cleanup semantics preserved under parallelism.
Notes
- Non-breaking (opt-in flag).
- Depends on: FT-3, FT-4, FT-5, FT-6 (de-statification + thread-safe logging must land first).
- Size: L. Own sub-thread of the epic.
Summary
Add opt-in DAG-parallel target execution. The dependency graph already encodes what can run concurrently; the engine just doesn't exploit it. Default stays sequential.
Findings (file:line)
BuildExecutor.cs:42— execution is a serialExecutionPlan.ForEach(...).Fallout.Core/Planning/TopoSort.cs:93-107— independent nodes are detected per step but only used to flag ambiguity in strict mode; output is a flat linear order, not parallel waves.Partitionis CI-machine sharding, not intra-build parallelism — distinct feature.Scope
TopoSortexpose ready-sets / waves (nodes whose dependencies are satisfied).DependencyBehavior,ProceedAfterFailure,AssuredAfterFailure.--parallel[=N], default off.Acceptance criteria
Notes