ci: add a latest-dependencies build guard - #58
Draft
oflatt-claude wants to merge 1 commit into
Draft
Conversation
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) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Downstream projects install this crate with
cargo install(e.g. Herbie:cargo install --git … egglog-experimental).cargo installignores the committedCargo.lockunless--lockedis passed, so it re-resolves the whole tree to the newest compatible versions. That means a breaking change in a transitive dependency can break downstream installs while our own CI — which uses the committed lock — stays green.This just happened:
clap_derive4.6 moved tosyn 3.x, which removed thesyn/fullfeature that egglog'sadd_primitiveproc macro was getting via feature unification. Herbie'scargo installbroke; our CI did not notice.Change
Add a
latest-depsjob that runscargo updateand then builds, reproducing the lock-ignoring resolution downstreams get. This surfaces upstream dependency drift here, close to the source, instead of in downstream repos.Pairs with the egglog fix (
add_primitivedeclaringsyn'sfullfeature). Note: a latest-deps job can go red on unrelated upstream releases; if that's noisy, it can be moved to aschedule:trigger and/or marked non-blocking.🤖 Generated with Claude Code