ci: type-check Node and Python SDKs on PRs#81
Merged
Conversation
The SDKs are excluded from the core workspace and were only compiled at release time (napi/maturin), so a core change that broke an SDK (e.g. PR #76 adding a field to AutoDelegationConfig that the Python SDK constructed with a struct literal) slipped through CI and only failed the v4.2.0 release wheel build. Add an 'SDK build check' job running 'cargo check' on both SDK manifests so such breakage fails on the PR instead.
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
The Node and Python SDKs are excluded from the core workspace (
members = ["core"]) and were only compiled at release time (napi / maturin). So a core change that breaks an SDK never showed up in CI.That's exactly how v4.2.0 broke: PR #76 added
allow_manual_delegationtoAutoDelegationConfig, the Python SDK constructed that struct with a literal, and the missing field (error[E0063]) only failed the release wheel build — after crates.io + npm had already published. (Fixed in #80 / v4.2.1.)What
Adds an
SDK build checkjob toci.yml(runs on PRs + pushes to main) thatcargo checks both SDK manifests:cargo checkdoes full type/borrow checking — it would have caught the E0063 on the PR. Verified both commands locally (Rust + protoc only; no node/python interpreter setup needed forcheck). Mirrors the existingcheckjob's setup.This shifts SDK-breakage detection left: it now fails the PR instead of the release pipeline.