Horizon’s CI is a three stage process. First, we run devour-flake on the entire package set. If that succeeds, the rest of the pipeline is skipped. Otherwise, we use flake-to-gitlab-ci to split the flake into individual GitLab jobs. These jobs are run last to isolate individual package failures.
The default CI template can be found here.