Release Notes for Internal Go Platform Changes
Internal Go platform releases (shared modules, Go toolchain bumps, linter baselines) fail when service owners learn about breaking changes from CI red builds on Monday morning.
Search across all documentation pages
Internal Go platform releases (shared modules, Go toolchain bumps, linter baselines) fail when service owners learn about breaking changes from CI red builds on Monday morning.
Good release notes read like a product launch for engineers: what changed, who must act, by when, and how to get help.
Publish notes before the change hits default CI.
Lead with effective date and required actions.
Document breaking API changes with before/after snippets.
List verification commands (go test, go fix, govulncheck).
Provide office hours or a Slack channel with named owners.
Archive notes in-repo for audit and onboarding.
Release note skeleton for a shared module major bump.
# Release: github.com/acme/platform/auth/v3
**Version:** v3.2.0
**Effective:** 2026-08-15 (CI enforces on `main`)
**Owner:** @platform-auth
## Action required
1. Bump `require github.com/acme/platform/auth/v3 v3.2.0`
2. Replace `Verify(token)` with `Verify(ctx, token)`
3. Run `go test ./...` and `golangci-lint run`
## Breaking changes
- `AuthClient.Verify` now requires `context.Context` (deadline propagation)
## Migration
\`\`\`go
// before
ok, err := client.Verify(token)
// after
ok, err := client.Verify(ctx, token)
\`\`\`
## Support
- #go-platform-auth
- Office hours Tue 10:00-11:00 UTCWhen to reach for this:
Full internal note for Go 1.26 monorepo upgrade plus module publish.
# Platform release: Go 1.26 toolchain + libs/common/v2
**Effective:** 2026-09-01
**CI gate:** PRs must pass on `go1.26.x` after Aug 25
**Owners:** @platform-toolchain, @platform-common
## Summary
All services must build with Go 1.26.x. `libs/common/v2` adds structured logging helpers; v1 deprecated.
## Action required (every service team)
| Step | Command / task | Due |
|------|----------------|-----|
| Update devcontainer / local Go | `go version` → 1.26.x | Aug 20 |
| Bump module directive | `go get go@1.26.0 && go mod tidy` | Aug 25 |
| Modernize | `go fix ./...` (run twice) | Aug 25 |
| Bump common lib | `go get github.com/acme/libs/common/v2@v2.0.0` | Sep 1 |
| Canary | Deploy 10% and watch p99 + GC CPU 48h | Sep 3 |
## Breaking: libs/common/v2
- `log.Printf` wrappers removed; use `slog` helpers in `common/slogx`
- Import path: `github.com/acme/libs/common/v2/slogx`
\`\`\`go
// migration
import "github.com/acme/libs/common/v2/slogx"
slogx.Info(ctx, "invoice exported", "invoice_id", id)
\`\`\`
## Non-breaking runtime notes
- Green Tea GC default in 1.26 - watch `go_gc_duration_seconds` during canary
- Rollback lever: `GOEXPERIMENT=nogreenteagc` documented in runbook (link)
## Verification
\`\`\`bash
go test -race ./...
go vet ./...
govulncheck ./...
\`\`\`
## FAQ
**Q:** Can we stay on 1.24 until Q4?
**A:** No - security policy requires 1.26.1 by Sep 15.
## Support
#go-platform | Office hours Wed 15:00 UTC | Runbook: docs/platform/go-1.26.mdWhat this demonstrates:
Release note sections
| Section | Purpose |
|---|---|
| Header | Version, effective date, owners |
| Action required | Numbered steps with deadlines |
| Breaking changes | API, behavior, CI |
| Migration | Copy-paste snippets |
| Verification | Commands that mirror CI |
| Support | Channel, hours, runbook link |
Audience layering
| Audience | What they read |
|---|---|
| Service lead | Action table + due dates |
| IC upgrading | Migration snippets + verification |
| SRE | Runtime notes, canary, rollback |
| PM | FAQ on schedule impact |
Distribution checklist
#go-platform with @here on effective week.# Changelog entry in repo docs/platform/CHANGELOG.md
## 2026-09-01 - Go 1.26 + common/v2
- ACTION: all modules on go 1.26.x
- BREAKING: common/v2 slogx migrationgo work sync callout when monorepo uses workspaces.| Alternative | Use When | Don't Use When |
|---|---|---|
| Email only | Tiny consumer set (<5 teams) | Org-wide toolchain |
| Automated GitHub Release | Open module with many external users | Mixed internal Slack culture |
| Loom walkthrough | Large breaking UI-like DX change | Simple one-line API add |
| Deprecation window only | Soft removals | Security-forced immediate bump |
Two weeks minimum for breaking changes.
Four weeks for Go toolchain jumps affecting every service.
Yes in a "Highlights" section below actions.
Never bury actions below feature marketing.
docs/platform/releases/ in a central repo plus Slack archive.
Link from CI failure messages when possible.
CI enforcement with escape hatch ticket requiring EM approval and dated remediation.
Notes should say exact go get path and version.
Semver rules link in appendix.
Note must say retract directive added and minimum safe version.
CC on toolchain or compliance releases that move feature dates.
Skip routine patch lib updates.
Date-based (2026-09-01-go-1.26) or match module tag.
Stay consistent in changelog index.
Yes for runtime and CI changes.
Link runbook section with GOEXPERIMENT or image pin steps.
Bots draft from semver diff and go fix summary.
Human edits for actions, dates, and policy.
Stack versions: This page was written for Go 1.26.x (Green Tea GC default, go fix modernizers - verify patch at build), chi (latest - verify at build), gin (latest - verify at build), echo (latest - verify at build), google.golang.org/grpc (latest - verify at build), sigs.k8s.io/controller-runtime (latest - verify at build), kubebuilder (latest - verify at build), tinygo (latest - verify board targets at build), wazero (latest - verify at build), and golangci-lint (latest - verify linter set at build).
Reviewed by Chris St. John·Last updated Jul 16, 2026