QC Audit Report — 2026-03-14
QC Audit Report — gitlab.horizon-haskell.net
Date: 2026-03-14 Repos audited: 17 canonical repos
CRITICAL ISSUES
1. Merge settings not enforced
| Repo | Pipeline required | Discussions required |
|---|---|---|
| haskell/horizon-gen-nix |
|
|
| haskell/horizon-spec |
|
|
| package-sets/horizon-build-packages |
|
|
| package-sets/horizon-core |
|
|
| ghc/horizon-ghc |
|
|
Policy §6.2 requires both only_allow_merge_if_pipeline_succeeds and only_allow_merge_if_all_discussions_are_resolved enabled on all repos.
2. CI template version outdated
| Repo | Current | Expected | Issue |
|---|---|---|---|
| nix/hackage-server-module | Custom inline | 0.19.0 template | Not using shared template |
| nix/horizon-develop-flake | Legacy ci-templates
|
0.19.0 template | Wrong template entirely |
| nix/horizon-hoogle | No .gitlab-ci.yml | 0.19.0 template | File missing |
| haskell/horizon-spec | 0.8.0 | 0.19.0 | Severely outdated |
| package-sets/horizon-platform | Custom inline | 0.19.0 template | Not using shared template |
| quality-control/policy | 0.18.0 | 0.19.0 | One version behind |
3. Nixica migration incomplete
| Repo | Status |
|---|---|
| nix/hackage-server-module | Legacy flake-parts.lib.mkFlake
|
| nix/horizon-develop-flake | Legacy — raw outputs, no mkFlake |
| nix/horizon-hoogle | Legacy flake-parts.lib.mkFlake
|
| haskell/horizon-spec | Legacy flake-parts.lib.mkFlake
|
| package-sets/horizon-platform | Legacy flake-parts.lib.mkFlake
|
(nix/nixica itself uses flake-parts directly — expected, not a migration target)
WARNINGS
4. Missing required root files (§2.1)
| Repo | Missing |
|---|---|
| nix/ghc-common-hadrian | LICENSE |
| nix/hackage-server-module | .gitignore, ChangeLog.md, LICENSE |
| nix/haskell-make-package-set | LICENSE |
| nix/horizon-develop-flake | .gitignore, ChangeLog.md, LICENSE |
| nix/horizon-hoogle | .gitignore, .gitlab-ci.yml, ChangeLog.md, LICENSE, flake.lock |
| nix/werrorwolf | .gitignore, LICENSE |
| haskell/horizon-gen-nix | ChangeLog.md |
| haskell/horizon-spec | ChangeLog.md |
| package-sets/horizon-build-packages | ChangeLog.md |
| package-sets/horizon-core | ChangeLog.md |
| ghc/horizon-ghc | ChangeLog.md |
| quality-control/policy | ChangeLog.md, LICENSE, README.md |
Fully compliant: nix/gitlab-ci, nix/horizon-flake-parts, nix/horizon-supported-systems, nix/nixica, package-sets/horizon-platform
5. Stale open MRs
package-sets/horizon-platform: 4 open MRs (!225-228, "Standardize nix directory structure") — created 2026-03-04 (10 days), all have squash=false and no pipeline has run.
SUMMARY SCORECARD
| Repo | Root files | CI version | Merge settings | Nixica | Open MRs |
|---|---|---|---|---|---|
| nix/ghc-common-hadrian |
|
|
— | ||
| nix/gitlab-ci | N/A (self) | — | |||
| nix/hackage-server-module |
|
|
|
— | |
| nix/haskell-make-package-set |
|
|
— | ||
| nix/horizon-develop-flake |
|
|
|
— | |
| nix/horizon-flake-parts |
|
— | |||
| nix/horizon-hoogle |
|
|
|
— | |
| nix/horizon-supported-systems |
|
— | |||
| nix/nixica |
|
N/A (self) | — | ||
| nix/werrorwolf |
|
|
— | ||
| haskell/horizon-gen-nix |
|
|
|
— | |
| haskell/horizon-spec |
|
|
|
|
|
| pkg-sets/horizon-build-packages |
|
|
|
— | |
| pkg-sets/horizon-core |
|
|
|
— | |
| pkg-sets/horizon-platform |
|
|
|
||
| ghc/horizon-ghc |
|
|
|
— | |
| quality-control/policy |
|
|
— |
RECOMMENDED PRIORITIES
- Enable merge protections on horizon-gen-nix, horizon-spec, horizon-build-packages (both settings). Add discussion requirement on horizon-core and horizon-ghc. — @locallycompact (admin action)
- Upgrade CI template on horizon-spec (0.8.0→0.19.0) and quality-control/policy (0.18.0→0.19.0) — @smartypants
- Migrate to nixica: hackage-server-module, horizon-develop-flake, horizon-hoogle, horizon-platform — @smartypants (horizon-hoogle deferred to Horizon Hoogle 1.0 milestone)
- Add missing LICENSE files across 7 repos — @smartypants
- Add missing ChangeLog.md across 7 repos — @smartypants
- Address stale MRs on horizon-platform (4 MRs, 10 days, no pipelines) — @smartypants / @locallycompact
- Add .gitlab-ci.yml to horizon-hoogle — @smartypants (part of Horizon Hoogle 1.0)