From 806dedb19cd0f4a7eac703e4f3063f961420f9a5 Mon Sep 17 00:00:00 2001 From: Oliver Flatt Date: Sat, 25 Jul 2026 01:25:38 +0000 Subject: [PATCH] ci: add a latest-dependencies build guard Downstream projects install egglog-experimental with `cargo install`, which ignores the committed Cargo.lock and re-resolves the whole tree to the newest compatible versions. That means a breaking change in a transitive dependency can break downstream builds while our own CI (which uses the committed lock) stays green. This just happened: clap_derive 4.6 moved to syn 3.x, which removed the `syn/full` feature that egglog's `add_primitive` proc macro was relying on via feature unification, breaking Herbie's `cargo install`. Add a `latest-deps` job that runs `cargo update` and builds, reproducing the downstream resolution so this class of drift is caught here. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/build.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 98caaec..c19184e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,6 +13,19 @@ jobs: tool: nextest - uses: Swatinem/rust-cache@v2 - run: make test + # Downstreams install this crate with `cargo install`, which ignores the + # committed Cargo.lock and re-resolves every dependency to the latest + # compatible version. Reproduce that here so upstream dependency drift is + # caught in this repo instead of in downstream projects (e.g. Herbie). + # `cargo update` refreshes the lock to latest; the build then uses it. + latest-deps: + runs-on: ubuntu-latest + steps: + - run: echo "CARGO_INCREMENTAL=0" >> "$GITHUB_ENV" + - uses: actions/checkout@v3 + - uses: Swatinem/rust-cache@v2 + - run: cargo update + - run: cargo build --release --all-targets nits: runs-on: ubuntu-latest steps: