Skip to content
Русский

The gated compile paths

Three parts of the tree compile only on a platform or with an SDK that the everyday loop does not have. Nothing local compiles any of them: not cargo build, not clippy --all-targets, not nextest, and not the pre-push hook. Each one is compiled before a tag by a CI job that names it (ADR-0251):

Gated pathWhy the local loop cannot see itCompiled before a tag by
standalone/src/capture_mac/#[cfg(target_os = "macos")], so no Windows or Linux target type-checks itcheck (macos-latest) in ci.yml
cfg(feature = "spout") in standalone/off by default, and code behind a disabled feature is not type-checkedthe spout job in ci.yml
plugin-foobar/C++ against the third-party foobar2000 SDK, which is gitignored; no cargo command builds itthe foobar job in ci.yml

release.yml’s jobs build all three again at tag time, and its needs: skips the release when any fails. So a break in one of them is read by name, on the push that caused it, from the job above. If nobody reads it, the only sign is an artifact missing from a release. The macOS build was red for two releases that way.

A red job on main is named at the next close, which still goes ahead. Before a close merges, it reads the newest CI run for origin/main with node scripts/check-upstream-ci.mjs. A red run is reported with the failing job named; Pages and Release runs are never read. The reading needs gh auth login on the machine doing the close. Without it, or without a network, the script prints upstream CI: skipped: not read (<case>) and exits 0, so the output says nothing was checked. Releasing says where the reading appears and why it never blocks.

Built from f4f807a at version 0.178.0. This site tracks main and is not versioned per release.