Scheduler¶
The path from an evaluated derivation to a finished, cached build. Every derivation is built once globally, as one shared build. The pages are following a shared build from creation to assignment.
flowchart LR
shared[Shared Builds] --> promo[Queueing and Counters]
promo --> subst[Upstream Substitution]
promo --> score[Scoring]
subst --> closure[Cache Closure]
promo --> recon[Repair Pass]
recon --> wait[Waiting and Recovery]
-
One
derivation_buildrow per derivation, and the graph writer owning every write. -
A shared build moving from
CreatedtoQueued, and the counters behind every start condition. -
Probing upstream caches and fetching outputs instead of building them.
-
The complete-closure invariant, its runtime counter and the self-heal after a failed build.
-
Heals for state beyond the reach of any event, and the emitter sending out every shared build move.
-
Split flake jobs, parked evaluations, re-offered jobs and startup recovery.
-
Policy ranking of pending jobs for the requesting worker.
-
Jobs claimed together on distinct workers, all or nothing.
Related¶
- Scheduler Policies: the rules and their magnitudes
- Capabilities and Assignment: the worker side of assignment