build: upgrade Go toolchain to 1.27 - #1946
Open
sylr wants to merge 1 commit into
Open
Conversation
Bumps the Go toolchain used to build and test the project, without raising each module's go.mod language floor (still go 1.22) since no 1.27-only language features are being adopted. Constraint: go.mod `go` directives intentionally left at 1.22 — a 1.27 toolchain builds a go-1.22-declared module without issue, and this avoids forcing a language-version bump alongside a toolchain bump. Confidence: high Scope-risk: narrow Not-tested: docker build against the new golang:1.27-alpine base image (Docker was unavailable in the sandbox that produced this change)
sylr
force-pushed
the
feat/upgrade-go-1.27
branch
from
September 3, 2026 12:12
6541bc0 to
421806b
Compare
efiten
added a commit
that referenced
this pull request
Sep 3, 2026
Release notes for the first tag since `v3.9.2` on 2026-06-13. **111 commits**, and no auto-generated coverage bumps fall in this range, so all 111 are substantive. Nothing here changes behaviour. It is `docs/release-notes/v3.10.0.md` plus a `CHANGELOG.md` section. ## Verification The header promises that every bullet ends with a SHA you can `git show`. That is checked mechanically rather than trusted: all **69** references were confirmed to point at a commit that exists and whose subject line contains the issue or PR number cited beside it. Zero mismatches. ## Two things operators need, and both are silent failures The urgency line leads with the first one on purpose. 1. **CARTO requires an API key** on its raster basemaps since 2026-08. Without one every tile is served watermarked with HTTP 200. Nothing errors, no healthcheck fires, and the only way to notice is to look at a tile. Anyone upgrading needs to set `map.tiles.providers.carto.key`. 2. **`pathTrust.minHashBytesForMapping` ships at 1**, which is the existing behaviour, so an upgrade changes nothing on its own. The note states what raising it to 2 would actually cost, with numbers from a live instance (56% of path-hop observations are 1-byte, 41% of repeaters use a 1-byte hash), because there is no UI to undo it. The relay `last_seen` fix is quantified the same way rather than described as "improved": for repeaters that relayed within the last hour, the gap between `last_relayed` and `last_seen` drops from a median of 12,062 s to 193 s, and the share more than five minutes behind falls from 96% to 39%. ## A theme worth naming Three of the highlights are the same defect in three places: something is operable before its own setup has finished. The Live view toggles are inert for about 100 ms after paint, the colour picker's deferred focus undid arrow-key navigation so Enter assigned the wrong colour, and an analytics theme-refresh discarded the filter you had just applied. All three were first written off as flaky tests, twice by me. Each is now fixed with a regression test that fails on the previous commit. ## Sequencing This should land, and the `v3.10.0` tag be cut, **before** the Go 1.27 upgrade in #1946. A toolchain bump changes the compiler, the runtime and `gofmt` for everything at once; landing it on top of 111 unpublished commits means a later regression cannot be separated from the toolchain. #1946 itself says no 1.27-only features are being adopted, so there is no cost to waiting one release. A tag first also gives a known-good bisect point. ## Not done The CHANGELOG has no `3.9.2` section and did not have one before this change. I left that gap alone rather than reconstructing it retroactively. --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Summary
golang:1.27-alpineinDockerfileandDockerfile.go, andgo-version: '1.27'in the threeactions/setup-gosteps in.github/workflows/deploy.yml.go.modgodirective is intentionally left at1.22— no 1.27-only language features are being adopted, and a 1.27 toolchain builds ago 1.22-declared module without issue.Test plan
go build ./...+go vet ./...for all 13 modules (cmd/server,cmd/ingestor,cmd/migrate,cmd/decrypt, 10internal/*packages) under Go 1.27.0go test ./...passes forcmd/server,cmd/ingestor,cmd/migrate,cmd/decryptdocker buildagainst the newgolang:1.27-alpinebase (Docker wasn't available in the sandbox this change was prepared in — needs a check in CI or locally)