Repository navigation
Conversation
…in SDK diffs The SDK diff resolved both ASTs with a context that carried no generation access state. Feature-gated constructs such as text/event-stream responses then failed the access check, and the generator skipped the whole operation, so any operation with a server-sent event response was missing from the diff: never reported as added, removed or changed. resolveAST now attaches direct generation access state when the caller provides none, matching internal/generate.Generate. Field comparisons also ignored deprecation, so marking a request or response field deprecated produced no change. A field that becomes deprecated is now reported with a new field_deprecated reason, rendered as **Deprecated**. [skip changelog]
|
All contributors have signed the CLA ✍️ ✅ |
There was a problem hiding this comment.
All reported issues were addressed across 8 files
Shadow auto-approve: would not auto-approve because issues were found.
View guided diff | Turn on auto-fix | Re-trigger cubic
There was a problem hiding this comment.
0 issues found across 2 files (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Shadow auto-approve: would auto-approve. Bounded bug fix in diff/release-note tooling: includes previously skipped SSE/feature-gated operations and reports field deprecations, with new snapshot tests pinning both behaviors.
View guided diff | Turn on auto-fix | Re-trigger cubic
mfbx9da4
enabled auto-merge
October 23, 2026 17:20
Author
|
I have read the CLA Document and I hereby sign the CLA |
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.
[skip changelog]
Why
speakeasy diffand the release notes thatspeakeasy runwrites togen.lockboth build SDK ASTs throughpkg/changes. Two gaps made those diffs incomplete.text/event-streamresponse disappeared from the diff.resolveASTran the generator with a context that carried no generation access state. When the generator reaches an event-stream response, it callslicensing.ValidateAccountHasFeatureAccess. Without access state, that check returnsErrMissingGenerationAccess, which is wrapped as anUnsupportedError, andg.skipsilently drops the whole operation. Because the operation was missing from both the old and new AST, it was never reported as added or removed, and changes to its request or response (for example a new enum value) were never reported either. This hits both an operation whose 200 response offersapplication/jsonandtext/event-stream, and an operation that only streams. The same gate covers other feature-gated constructs, such as JSONL responses and webhooks.diffFieldDefscompares nullability, optionality, defaults, consts and annotations, but notComments.Deprecated. So marking a request or response fielddeprecated: trueproduced no change.What changed
resolveASTattaches direct generation access state when the caller supplies none. This matchesinternal/generate.Generate. Callers that already provide access state are unaffected.field_deprecateddiff reason, rendered as**Deprecated**. It is non-breaking, and only the transition into deprecation is reported, consistent with method-level deprecation. If the field also changed in another way, it is still reported as**Changed**.markdown.goare now oneformatDiffActionhelper.Before (old spec has
generateReportwith a json + event-stream 200 response; new spec adds thehtmlenum value to its request, addscreateWidget(json + event-stream) andtailEvents(event-stream only)):After:
Before (request field
colorand response fieldnicknamemarkeddeprecated: true):After:
No generated SDK output changes, so this PR skips the changelog.
Testing
TestChanges_MethodChanges_ServerSentEventsandTestChanges_FieldChanges_FieldDeprecated. Both fail withCI=trueagainst the previouspkg/changessources and pass with this change.go test ./pkg/changes/... ./cmd/changes/...passes, with no changes to existing snapshots.golangci-lint run ./pkg/changes/...reports 0 issues.make lintalso reports a gofmt issue intemplates/perms.go, which is unchanged frommain.go run ./cmd/changeson a pair of specs combining json + event-stream operations, an enum addition and a deprecated response field. All expected changes are now reported.git diff --checkflags only trailing spaces in the new snapshots. Those are literal markdown output (:before a nested list), the same as in 43 existing snapshots.Public-safety check
.claude/skills/public-repo-communication/SKILL.md).git diff --check.Summary by cubic
Fixes two gaps that made
speakeasy diffand release notes written togen.lockmiss real SDK changes.text/event-streamresponses were dropped becauseresolveASTran the generator without generation access state; it now attaches direct access state when none is provided, matchinginternal/generate.Generate. This also covers other feature-gated constructs such as JSONL responses and webhooks.deprecated: trueproduced no change; fields that become deprecated are now reported with a newfield_deprecateddiff reason, rendered as**Deprecated**. Only the transition into deprecation is reported, consistent with method-level deprecation, and fields that also changed otherwise are still reported as**Changed**.markdown.goare now oneformatDiffActionhelper.No generated SDK output changes, so the changelog is skipped.
Written for commit 3993b62. Summary will update on new commits.