Commit 456e1a4
build(go): upgrade Go toolchain to 1.26.3 + golangci-lint to v2.12.2 (#43)
* docs: add Go 1.26 modernization design spec
Brainstormed design for upgrading the Operation Cache Controller from
Go 1.24 to Go 1.26 with idiomatic modernization across the codebase.
Approach: 7 sequential stacked PRs (toolchain bump → mockgen regen →
direct dep upgrades → golangci-lint + new linters with suppressions →
mechanical refactor → idiomatic library swaps → Go 1.26-specific
features). Scope explicitly excludes structural and behavioral changes.
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
* docs(plan): add Go 1.26.3 toolchain upgrade plan
* build(go): bump go.mod to go 1.26.0, toolchain go1.26.3
* build(docker): bump builder image to golang:1.26
* docs(claude): update Go version requirement to 1.26
* build(lint): bump golangci-lint v1.64.8 → v2.12.2
golangci-lint v1.64.8 was built with Go 1.24 and refuses to parse
source targeting Go 1.26. v1.64.8 is the last v1.x release, so v2 is
the only forward path. .golangci.yml migrated to v2 schema; lint
surface kept equivalent to the prior config.
* docs(claude): update golangci-lint version reference to v2.12.2
* build(docker): set GOEXPERIMENT=ms_nocgo_opensslcrypto for MS Go 1.26
The Microsoft Go 1.26 base image defaults GOEXPERIMENT=systemcrypto,
which routes crypto/* through OpenSSL via cgo and requires CGO_ENABLED=1.
ms_nocgo_opensslcrypto keeps the OpenSSL backend (FIPS-friendly) but
resolves libssl via dlopen at runtime, so CGO_ENABLED=0 still produces
a static binary suitable for the distroless final stage.
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
* build(docker): switch to GOEXPERIMENT=nosystemcrypto for static binary
The previous attempt (ms_nocgo_opensslcrypto) avoided CGO at link time but
still dlopens libssl at runtime, which requires glibc's dynamic linker in
the final image. The distroless/minimal:3.0 base ships neither, so the
manager container failed to start with:
exec /manager: no such file or directory
Disable systemcrypto entirely so Go's pure-Go crypto is used; the resulting
binary is fully static and runs on the minimal distroless image as before.
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4 <noreply@anthropic.com>1 parent e6e39e5 commit 456e1a4
8 files changed
Lines changed: 838 additions & 36 deletions
File tree
- .github/workflows
- docs/superpowers
- plans
- specs
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
22 | 22 | | |
23 | | - | |
| 23 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | 5 | | |
20 | | - | |
| 6 | + | |
21 | 7 | | |
| 8 | + | |
22 | 9 | | |
23 | 10 | | |
24 | | - | |
25 | 11 | | |
26 | 12 | | |
27 | 13 | | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | 14 | | |
32 | 15 | | |
33 | | - | |
34 | 16 | | |
35 | 17 | | |
36 | 18 | | |
37 | 19 | | |
38 | 20 | | |
39 | | - | |
40 | 21 | | |
41 | 22 | | |
42 | 23 | | |
43 | | - | |
44 | | - | |
45 | | - | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
46 | 38 | | |
47 | | - | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
102 | | - | |
| 102 | + | |
103 | 103 | | |
104 | 104 | | |
105 | | - | |
| 105 | + | |
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
25 | 33 | | |
26 | 34 | | |
27 | 35 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
182 | 182 | | |
183 | 183 | | |
184 | 184 | | |
185 | | - | |
| 185 | + | |
186 | 186 | | |
187 | 187 | | |
188 | 188 | | |
| |||
210 | 210 | | |
211 | 211 | | |
212 | 212 | | |
213 | | - | |
| 213 | + | |
214 | 214 | | |
215 | 215 | | |
216 | 216 | | |
| |||
0 commit comments