Build and CI: ranking notes
Category notes
The category is dominated by CI and toolchain maintenance; only two PRs reach P1, both about release integrity (silent wrong-source depends builds and signature-verification accepting revoked keys). The P2 band is reserved for release-binary security/portability, supported-platform build breakage, release-build CI coverage, and the compiler-minimum transition chain. Several original scores appear to have been assigned independently and left prerequisites (#36592, #36554, #36036) ranked well below the work they unblock; those were corrected.
Review order and overlapping PRs
- Chain: #36592 (macOS SDK 15) must be reviewed and merged before #36593 (Qt 6.12), which explicitly requires it; they were originally two bands apart.
- Chain: #36554 (reject warnings in feature detection, -msse4.1 for SHA-NI) is a stated prerequisite for #31507 (clang-cl on Windows); review #36554 first.
- Chain: #36042 (GCC 13) and #36036 (Clang 19) are both prerequisites for #36033 (C++23 RFC) and are the same kind of change; they were originally banded differently. Review the two bumps before deciding on #36033.
- Overlapping scope: #36082 (Guix release builds in CI) subsumes much of #35774 (test cross-built macOS arm64 binaries). Decide the division of labour; #36082 is the broader mechanism, #35774 the narrower and already-rebased one.
- Overlapping scope: #36147 replaces the cross-compiled BSD CI jobs with native VM jobs, which would make the BSD SDK download caching in #35722 moot. Review #36147 first.
- Warning-flag cluster: #36167 (-Wunused), #35911 (-Wmissing-noreturn), #36268 (-Wextra-semi), #36623 (-Wunreachable-code-aggressive) and #36704 (-Wdocumentation-unknown-command) all add compiler flags plus wide mechanical fixups and will conflict with each other; several are also blocked on the same Minisketch/libmultiprocess subtree updates. Sequencing them matters more than any individual merge.
- IPC build cluster: #32387 (Windows IPC), #36060 (KJ exception check), #36556 (capnp TSan patches), #35454 (external libmultiprocess targets), #36679 (i686 IPC CI) and #19460 (wallet -ipcconnect) all touch the same multiprocess build stack and subtree; coordinate subtree bumps to avoid repeated churn.
- Release-binary path hygiene appears twice: #36270 (depends paths in release binaries) and #36708 (DISTSRC debug-prefix-map); they solve adjacent halves of the same problem and should be reviewed together.
Band and position changes
- #36293: P2 alone, P1 after comparison. Raised to P1: correctness of release-signature verification is the category's top concern, and accepting revoked keys toward the quorum is a disclosed security defect on par with #35765's silent wrong-source builds
- #36554: P3 alone, P2 after comparison. Raised to P2 and moved up from 37: stated prerequisite for the clang-cl switch (#31507) and fixes SHA-NI being silently disabled under -Werror, so it cannot sit far below the work it unblocks
- #36592: P3 alone, P2 after comparison. Raised to P2 and moved up from 39: direct prerequisite for the Qt 6.12 update (#36593) and cannot be banded below the PR it blocks
- #36036: P3 alone, P2 after comparison. Raised to P2 and moved up from 33: same consequence as the GCC-13 bump #36042 (compiler minimum transition) and the other half of the prerequisite for C++23 work in #36033
- #36033: Placed below its two prerequisite bumps (#36042, #36036) since progress depends on them landing first
- #36615: Moved up from 40: blocks release codesigners running guix-codesign in containers, a concrete release-process failure rather than hygiene
- #31349: Moved down from 12: valuable CI hermeticity check but no observed incident, so it ranks below concrete release and depends fixes
- #36147: Moved down from 13: scope still unsettled (likely FreeBSD only) and benefit is limited to BSD platform support
- #36587: Moved up from 38: fixes an actual platform test failure on NetBSD plus CI enforcement, stronger than nearby hygiene items
- #36167: Moved up from 35: cited as catching a real bug class (#36137), unlike the purely cosmetic warning flags below
- #28690: Moved down from 14: build-target restructuring with no stated breakage fixed; deferrable relative to concrete platform and release fixes
- #35072: Moved down from 24: developer rebuild-time improvement and stated prerequisite for #29914, but no user-facing consequence
- #33145: Moved down from 22: maintainer-workflow convenience, no build or release correctness impact
- #36679: Moved up from 41: adds 32-bit ABI coverage for IPC where failures have previously occurred
- #35197: Moved down from 26: binary-size optimization only, ranks with the other size-reduction PRs
- #36709: Moved up from 43: fixes an actual Guix build failure under foreign-architecture emulation
- #36708: Moved up from 42: grouped with the other debug-path/release-binary path fix (#36270)
- #34721: Moved down from 23: packaging convenience with no correctness or platform consequence
- #35911: Moved down from 32: prevents spurious diagnostics only; weaker payoff than -Wunused's cited bug class
- #35762: Moved down from 31: opt-in developer workflow gated on CMake 4.4, affects nobody by default
- #35454: Moved down from 28: only affects builds against an external libmultiprocess, not default in-tree builds
- #35722: Moved down from 30: author confirms no CI failure has actually been observed, so the benefit is speculative
About
This pass by claude-opus-5 on 2026-11-01 saw every PR in the category at once and checked the bands given to each PR alone against each other, ordered the PRs, and noted chains and overlaps. Back to the category.