Skip to content

chore: split go.mod directive so Dependabot can manage Go toolchain#320

Merged
Defilan merged 1 commit intomainfrom
chore/dependabot-go-toolchain
Apr 21, 2026
Merged

chore: split go.mod directive so Dependabot can manage Go toolchain#320
Defilan merged 1 commit intomainfrom
chore/dependabot-go-toolchain

Conversation

@Defilan
Copy link
Copy Markdown
Member

@Defilan Defilan commented Apr 21, 2026

Summary

Split the single go 1.25.9 directive into a floor + toolchain pair so Dependabot can propose toolchain bumps on its own schedule without forcing every user's minimum supported Go version to the bleeding-edge patch.

-go 1.25.9
+go 1.25.0
+
+toolchain go1.25.9

Why

During the supply-chain MVP work (#310) govulncheck tripped twice on stdlib CVEs and each fix required a manual go.mod bump:

  1. go 1.25.0go 1.25.3 to clear GO-2025-4007 through GO-2025-4011
  2. go 1.25.3go 1.25.9 to clear GO-2026-4947 through GO-2026-4337

That whack-a-mole loop was predicted — the audit's Next up list pointed at Dependabot as the fix. dependabot/dependabot-core#10131 (landed early 2025) teaches Dependabot's gomod ecosystem to track the toolchain directive as a separate update line. With a toolchain directive present, Dependabot will propose patch bumps on its existing weekly scan.

Why the floor moves down

go X.Y.Z is both a language-feature floor and an implicit toolchain selector. Keeping it at 1.25.0 documents the actual language features we depend on; the toolchain line carries the current preferred build version. Consumers who just need to compile with Go 1.25.0+ keep working; CI / release builds pick the toolchain explicitly.

Test plan

  • go mod tidy — no go.sum diff
  • make vet clean
  • CI green on this branch
  • After merge, wait one Monday for Dependabot to confirm toolchain tracking. If no PR surfaces by Tuesday, fall back to a custom GH Actions workflow that bumps the directive.

During Workstream B, govulncheck in CI tripped twice on stdlib CVEs:
first on the GO-2025-* series (fixed in 1.25.2/1.25.3) and again on the
GO-2026-* series (fixed up through 1.25.9). Each time required a
manual go.mod bump to clear the gate. With only a single go X.Y.Z
directive, Dependabot had no obvious knob to propose toolchain bumps
against.

Split the single directive into:

  go 1.25.0          # language floor (minimum features we require)
  toolchain go1.25.9 # preferred build toolchain

Dependabot gomod support tracks the toolchain directive as a separate
line item (dependabot/dependabot-core#10131, landed early 2025) and
will now propose toolchain bumps as new Go patches release, alongside
its existing weekly scan of require block dependencies. The language
floor stays stable at 1.25.0 so consumers are not forced to upgrade
their toolchain for non-security reasons.

No code changes; go mod tidy produced no go.sum diff.

Signed-off-by: Christopher Maher <chris@mahercode.io>
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 21, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@Defilan Defilan merged commit 482782f into main Apr 21, 2026
18 checks passed
@Defilan Defilan deleted the chore/dependabot-go-toolchain branch April 21, 2026 20:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant