Add breaking change detection CI check#7351
Merged
Merged
Conversation
6124472 to
ad648ce
Compare
ad648ce to
dd22db4
Compare
bfb406e to
9e7cd44
Compare
2058e62 to
336b840
Compare
336b840 to
12ba3a3
Compare
12ba3a3 to
50e8a8e
Compare
50e8a8e to
fdf37ba
Compare
dc94e76 to
d93f43e
Compare
Adds a new 'major-change-check' job to the PR workflow that detects potential breaking changes by comparing the branch against main: 1. Changesets requesting a major version bump 2. OCLIF manifest: removed commands, flags, or flag env vars 3. Zod schemas: removed fields in app/extension config specifications When breaking changes are detected: - A sticky PR comment is posted pinging @Shopify/dev_experience to coordinate inclusion in the next major release - The check fails (red) until a dev_experience team member approves the workflow run via the 'breaking-change-approval' environment gate - Comment links to #help-dev-platform for coordinating major releases When no breaking changes are found, any stale sticky comment from a previous run is deleted.
isaacroldan
reviewed
Apr 28, 2026
isaacroldan
left a comment
Contributor
There was a problem hiding this comment.
Review assisted by pair-review
- extractSchemaFields: brace-counted walker, handles nested objects so
sibling fields after a nested .object(...) are no longer dropped
- extractSchemaFields: also recognize .extend({...}) blocks, which is
how spec files in models/extensions/specifications/** add their
top-level fields onto a base schema
- Strip strings/comments before brace counting; walk original source
for key collection so quoted keys ('foo': ..., "foo": ...) survive
- Update substring guard to match .object( OR .extend(
- Remove unused currentSchemaFiles glob walk
- cloneCLIRepository: add {install, build} options. major-change-check
passes {install: false, build: false} since it only consumes
git-tracked sources (oclif.manifest.json + .ts files), saving
~5-10 min of CI per PR. type-diff keeps the default.
Adds a regression test (node --test) covering the failure modes
flagged in review: nested .object siblings, .extend(), chained
.extend, quoted keys, comments, and malformed input.
d93f43e to
b1f3fe3
Compare
isaacroldan
approved these changes
Apr 28, 2026
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 are these changes introduced?
PRs that introduce breaking changes (major version bumps, removed CLI commands/flags/env vars, or removed Zod schema fields) currently have no automated gate to ensure the dev_experience team is aware and can coordinate the release timing.
WHAT is this pull request doing?
Adds an automated breaking change detection workflow to the PR CI pipeline with two new jobs:
major-change-check: Runs a newworkspace/src/major-change-check.jsscript that compares the current branch against themainbaseline and detects:-Changesets requesting a major version bump
-Removed commands, flags, or flag environment variables in the OCLIF manifest (packages/cli/oclif.manifest.json)
-Removed or deleted Zod schema fields in app/extension configuration models
marocchino/sticky-pull-request-commentand sets ahas_breaking_changesoutput.major-change-approval: A dependent job that only runs whenhas_breaking_changesistrue. It gates on thebreaking-change-approvalGitHub environment, requiring a member of the@shopify/dev_experienceteam to manually approve the workflow run before the PR can merge.How to test your changes?
majorbump, removes a CLI command or flag, or removes a Zod schema field.major-change-checkjob posts a comment to the PR detailing the detected breaking changes.major-change-approvaljob blocks and requires abreaking-change-approvalenvironment approval.Checklist
patchfor bug fixes ·minorfor new features ·majorfor breaking changes) and added a changeset withpnpm changeset add