Fallout-build / Fallout-build/Fallout

[Foundation] FT-8: Opt-in DAG-parallel target execution

Open
#313 0 comments 0 reactions 0 assignees View on GitHub
enhancement target/vCurrent
Dominant language
C#
Stars
154
Forks
19
Avg merge
1d 22h
Merged PRs (30d)
15

Description

## 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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.