The Job Scheduler round gives you a small class that decides which job a worker should run next. Jobs can depend on other jobs, multiple workers share the same scheduler, and each worker reports back when it finishes a job.
The code itself is short, but the challenge comes from understanding and correctly handling the scheduling rules. The round has four phases:
Each rule is fairly simple on its own. The difficulty comes from how they interact. A retry changes the tie-break order, a failure must reach even jobs that haven't been added yet, and checking for cycles on every new job becomes a performance bottleneck in Phase 3.
Most wrong solutions handle one rule correctly but break another.