Skip to content

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

Description

@ChrisonSimtian

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions