security: raise the published Go SDK minimum off an EOL toolchain (1.21 → 1.25) - #48
security: raise the published Go SDK minimum off an EOL toolchain (1.21 → 1.25)#48yakimoto wants to merge 2 commits into
Conversation
…21 -> 1.25) go 1.21 is the minimum this published module demands of everyone who installs it, and Go 1.21 went end-of-life 2024-08-13. Supported Go today is 1.25 and 1.26. The module is live on the proxy (v0.7.0, 8 versions), so this floor is advertised to real consumers. 1.25 rather than 1.26 on purpose: it is the oldest release still getting security fixes, so the consumer window stays as wide as it can while no longer pointing at an EOL toolchain. Verified by hand, because no workflow in this repo compiles Go — all four were checked and none references setup-go, go build or go test. Against go1.26.4: build, vet and test are clean, with test reporting "no test files", which is itself the finding. The directive was mutation-checked too (1.99 -> "requires go >= 1.99"; 1.25 -> clean), so this is not a cosmetic edit to a field nothing reads. Not fixed here, tracked as wave-av/wave-dispatch#466: this copy has drifted far from its private source (dispatch.go 95 lines vs 411, verify.go and verify_test.go absent) while being the copy consumers actually go get. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_4f8ba6c3-a846-4014-85fe-a90fd0a4884b) |
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 34 minutes Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Comment |
PR Summary by QodoRaise Go SDK minimum version to Go 1.25 (from 1.21)
AI Description
Diagram
High-Level Assessment
Files changed (1)
|
There was a problem hiding this comment.
Risk: low. Left a non-blocking comment — Cursor Bugbot and Cursor Security Agent both skipped (Bugbot hit a usage limit), so required automated review signals did not complete successfully and human review is needed. No reviewers were assigned because no eligible non-author reviewers were available.
Sent by Cursor Approval Agent: Pull Request Router and Approver
Code Review by Qodo
1. Unnoted Go floor bump
|
Qodo FixerNo findings are within the configured fix scope. To change which findings are fixed, adjust the setting on your Qodo configuration page. |
ApprovabilityVerdict: Approved 4287ecf This PR raises the minimum Go version in go.mod from 1.21 to 1.25 and documents the breaking change in CHANGELOG.md. No source code is modified - it's a mechanical version floor bump for security currency. The author owns both changed files. You can customize Macroscope's approvability policy. Learn more. |
Devin and qodo both flagged it independently: a change that raises what consumers need in order to build the published SDK shipped with no entry under Unreleased. They are right, and it is worse than an oversight - I added exactly this entry to the private source repo (wave-dispatch) in the companion PR and did not add it here, which is the repo where consumers actually read it. The entry states the breaking part plainly (older or pinned toolchains, and GOTOOLCHAIN=off, hard-fail), the escape hatch (GOTOOLCHAIN=auto fetches one, no action needed), and why 1.25 and not 1.26 - oldest release still receiving security fixes, so the consumer window stays as wide as it can while clearing EOL. It also answers the reviewers other point, that the code uses nothing beyond the old baseline: correct, and stated in the entry. The floor moves for security currency, not for a language feature. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_40a20439-0af4-404f-8a88-f2b92e048412) |
|
Three review findings, one of which was a genuine miss. Addressed in 1. No changelog entry — VALID, fixed. Devin and qodo both caught it independently, and it was worse than an oversight: I wrote exactly this entry into the private source repo's changelog in the companion PR ( 2. "The code uses nothing beyond the previously declared baseline" — correct, and that is the point. This is not a bump to adopt a language feature; it is a bump because 1.21 has been end-of-life since 2024-08-13 and the 3. "No CI job builds or tests the Go SDK, so the bump is unverified" — accurate, and it is the finding, not a defect of this PR. The PR description says the same thing and names the four workflows. It is why verification was done by hand on That gap is tracked as |


One line.
sdk/go/go.mod:go 1.21→go 1.25.Why
go 1.21is the minimum Go version this published module demands of everyone who installs it, and Go 1.21 went end-of-life on 2024-08-13 — nearly two years ago. Supported Go today is 1.25 and 1.26, nothing older.github.com/wave-av/dispatch-edge/sdk/gois live on the module proxy (latestv0.7.0, 2026-05-30, 8 published versions), so this is a real advertised floor, not a private detail. 1.25 is chosen over 1.26 deliberately: it is the oldest release still receiving security fixes, which keeps the consumer window as wide as it can be while no longer pointing at an EOL toolchain.Verification — and why it had to be done by hand
This repo has no CI that compiles Go. All four workflows (
_checks,foundation-gate,issue-ops-triage,public-repo-guard) were checked; none referencessetup-go,go build, orgo test. So a green check on this PR will not tell you the module still builds — nothing here builds it.Run locally against
go1.26.4instead:That last line is not a formality, it is the finding: the published SDK has no tests at all.
The directive was also mutation-checked, so this isn't a cosmetic edit to a field nothing reads:
It fails closed on an unsatisfiable version and passes on a satisfiable one — the directive is load-bearing.
Scope — what this deliberately does not fix
This raises the advertised floor. It does not address the larger thing found while measuring it: this published copy has drifted substantially from its source in the private
wave-av/wave-dispatchrepo —dispatch.gois 95 lines here against 411 there, andverify.go/verify_test.goare absent — while being the copy consumers actuallygo get. The copy that CI does build and test declares a vanity module path that does not resolve.That is tracked separately (
wave-av/wave-dispatch#466) rather than widened into this diff. Raising an EOL floor is worth landing on its own, and shouldn't wait on a curation decision.Companion PR on the source repo:
wave-av/wave-dispatch#465.🤖 Generated with Claude Code
Note
Low Risk
Metadata-only change to the module
godirective and changelog; no runtime or SDK API behavior changes, though consumers on Go < 1.25 may need a toolchain upgrade.Overview
Bumps the published Go SDK’s minimum toolchain in
sdk/go/go.modfrom 1.21 to 1.25, so consumers ofgithub.com/wave-av/dispatch-edge/sdk/gono longer see an end-of-life Go floor. 1.25 is the oldest release still getting security fixes; no SDK source files change.CHANGELOG.mddocuments this as BREAKING for Go SDK consumers on pinned or older toolchains (GOTOOLCHAIN=offfails until upgraded); defaultGOTOOLCHAIN=autocan fetch a suitable toolchain.Reviewed by Cursor Bugbot for commit 4287ecf. Configure here.
Note
Raise Go SDK minimum version from 1.21 to 1.25
Updates the
godirective in go.mod to require Go 1.25+, moving off the EOL 1.21 toolchain. Risk: builds using Go < 1.25 will fail; this is a breaking change for consumers pinned to older toolchains.Macroscope summarized 4287ecf.