Skip to content

ci: add a latest-dependencies build guard - #58

Draft
oflatt-claude wants to merge 1 commit into
egraphs-good:mainfrom
oflatt-claude:ci/latest-deps-guard
Draft

ci: add a latest-dependencies build guard#58
oflatt-claude wants to merge 1 commit into
egraphs-good:mainfrom
oflatt-claude:ci/latest-deps-guard

Conversation

@oflatt-claude

Copy link
Copy Markdown

Why

Downstream projects install this crate with cargo install (e.g. Herbie: cargo install --git … egglog-experimental). cargo install ignores the committed Cargo.lock unless --locked is 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_derive 4.6 moved to syn 3.x, which removed the syn/full feature that egglog's add_primitive proc macro was getting via feature unification. Herbie's cargo install broke; our CI did not notice.

Change

Add a latest-deps job that runs cargo update and 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_primitive declaring syn's full feature). Note: a latest-deps job can go red on unrelated upstream releases; if that's noisy, it can be moved to a schedule: trigger and/or marked non-blocking.

🤖 Generated with Claude Code

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants