pub fn parallel_sets(nodes: &[MilestoneNode]) -> Vec<ParallelSet>Expand description
Partition startable work into subsets that may genuinely run at the same time.
The rule is the repository’s own: two issues may run together when they are in the same
wave, both declare parallel_safe, and no scope path of one contains a scope path of the
other — crate::plan::overlap is the same containment test the plan’s own
scope_conflict warning uses, so the two can never disagree. An issue that declares
itself not parallel-safe gets a set of its own.
Greedy, over candidates in canonical order, so the partition is deterministic. It is not the smallest possible partition — that is graph colouring — and it does not need to be: a worker asks what can be fanned out now, and a conservative answer is a correct one.