ci: breaking-change release gate for SDK regenerations#254
Closed
Nelson-PROIA wants to merge 1 commit into
Closed
Conversation
Speakeasy versioningStrategy: automatic derives the semver bump from the upstream OpenAPI info.version, not from its own breaking-change analysis, so a breaking regeneration can be labelled a non-major release. Add a required-able status check that pulls the base and head source specs from the Speakeasy registry by the sourceRevisionDigest committed in workflow.lock, runs speakeasy openapi diff, and fails when breaking changes ship without a major bump. Removed operations, removed or required->optional fields, removed default responses, and deleted types are all reported. A reviewed minor plus deprecation can proceed via the breaking-approved label. Add CODEOWNERS so a regeneration requires review from the SDK owners.
Nelson-PROIA
force-pushed
the
fix/sdk-breaking-change-release-gate
branch
from
July 13, 2026 17:26
6a9e086 to
154341b
Compare
Contributor
Author
|
Closing: superseding this generation-time check with a source-side versioning fix (govern info.version so breaking specs bump the SDK major). |
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.
What this adds
The public SDK is generated by Speakeasy from the upstream OpenAPI document. This PR adds a guardrail so a regeneration that introduces breaking changes cannot be versioned as a non-major release without an explicit, reviewed decision.
.github/workflows/sdk_breaking_change_gate.yaml— apull_requeststatus check (breaking-change-gate). It reads the base and head source-specsourceRevisionDigestfrom.speakeasy/workflow.lock, pulls both revisions withspeakeasy pull, runsspeakeasy openapi diff, and fails when breaking changes are present without a major version bump. Removed operations,required→optionalfields, removed default responses, and deleted types are all reported. It passes trivially when the source spec is unchanged, so it is safe to mark required without blocking ordinary PRs. The raw-specspeakeasy openapi diffis used because the SDK-levelspeakeasy diff --lang typescriptdoes not surface in-place field narrowings..github/CODEOWNERS— routes the generated surface to@mistralai/engineering-sdkso a regeneration requests owner review.A reviewed, deliberate minor + deprecation can proceed via the
breaking-approvedlabel.Notes
Additive only — this reports a status and requests review; it changes nothing about how publishing works. Wiring the check into branch protection is a follow-up.
Draft — do not merge. Validate the
speakeasy pull/openapi diffstep on a live regeneration PR before marking the check required.