Skip to content

chore: pin golangci-lint to version compatible with Go 1.25#2611

Merged
tvi merged 1 commit into
mainfrom
t/mise
May 10, 2026
Merged

chore: pin golangci-lint to version compatible with Go 1.25#2611
tvi merged 1 commit into
mainfrom
t/mise

Conversation

@tvi
Copy link
Copy Markdown
Contributor

@tvi tvi commented May 10, 2026

golangci-lint 2.8.0 is built with Go 1.26, which causes a panic when linting code pinned to Go 1.25 ("file requires newer Go version go1.26"). Downgrade golangci-lint to a release built against Go 1.25 to match the toolchain specified in .tool-versions.

golangci-lint 2.8.0 is built with Go 1.26, which causes a panic when linting code pinned to Go 1.25 ("file requires newer Go version go1.26"). Downgrade golangci-lint to a release built against Go 1.25 to match the toolchain specified in .tool-versions.
@cursor
Copy link
Copy Markdown

cursor Bot commented May 10, 2026

PR Summary

Low Risk
Low risk: only changes the pinned linter version to avoid a Go toolchain mismatch during lint runs, with no runtime or production impact.

Overview
Fixes lint failures caused by golangci-lint being built with a newer Go version than the repo’s pinned Go 1.25 by pinning golangci-lint to 2.7.2 in .tool-versions.

Reviewed by Cursor Bugbot for commit 6f2f47a. Bugbot is set up for automated code reviews on this repo. Configure here.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 10, 2026

❌ 10 Tests Failed:

Tests completed Failed Passed Skipped
2611 10 2601 5
View the full list of 10 ❄️ flaky test(s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestUpdateNetworkConfig

Flake rate in main: 75.79% (Passed 100 times, Failed 313 times)

Stack Traces | 34.6s run time
=== RUN   TestUpdateNetworkConfig
=== PAUSE TestUpdateNetworkConfig
=== CONT  TestUpdateNetworkConfig
--- FAIL: TestUpdateNetworkConfig (34.56s)
github.com/e2b-dev/infra/tests/integration/internal/tests/api/sandboxes::TestUpdateNetworkConfig/pause_resume_preserves_allow_internet_access_false

Flake rate in main: 76.18% (Passed 96 times, Failed 307 times)

Stack Traces | 1.75s run time
=== RUN   TestUpdateNetworkConfig/pause_resume_preserves_allow_internet_access_false
Executing command curl in sandbox ifh6n8ktxm91iw52f3au0
    sandbox_network_update_test.go:372: Command [curl] output: event:{start:{pid:1367}}
    sandbox_network_update_test.go:372: Command [curl] output: event:{end:{exit_code:35  exited:true  status:"exit status 35"  error:"exit status 35"}}
Executing command curl in sandbox ifh6n8ktxm91iw52f3au0
    sandbox_network_update_test.go:372: Command [curl] output: event:{start:{pid:1368}}
    sandbox_network_update_test.go:372: Command [curl] output: event:{end:{exit_code:35  exited:true  status:"exit status 35"  error:"exit status 35"}}
    sandbox_network_update_test.go:391: Command [curl] output: event:{start:{pid:1369}}
    sandbox_network_update_test.go:391: Command [curl] output: event:{data:{stdout:"HTTP/2 302 \r\nx-content-type-options: nosniff\r\nlocation: https://dns.google/\r\ndate: Sun, 10 May 2026 04:48:32 GMT\r\ncontent-type: text/html; charset=UTF-8\r\nserver: HTTP server (unknown)\r\ncontent-length: 216\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n"}}
    sandbox_network_update_test.go:391: Command [curl] output: event:{end:{exited:true  status:"exit status 0"}}
    sandbox_network_update_test.go:391: Command [curl] completed successfully in sandbox ifh6n8ktxm91iw52f3au0
    sandbox_network_update_test.go:391: 
        	Error Trace:	.../api/sandboxes/sandbox_network_out_test.go:74
        	            				.../api/sandboxes/sandbox_network_update_test.go:60
        	            				.../api/sandboxes/sandbox_network_update_test.go:391
        	Error:      	An error is expected but got nil.
        	Test:       	TestUpdateNetworkConfig/pause_resume_preserves_allow_internet_access_false
        	Messages:   	https://8.8.8.8 should be blocked
--- FAIL: TestUpdateNetworkConfig/pause_resume_preserves_allow_internet_access_false (1.75s)
github.com/e2b-dev/infra/tests/integration/internal/tests/envd::TestBindLocalhost

Flake rate in main: 58.12% (Passed 165 times, Failed 229 times)

Stack Traces | 0s run time
=== RUN   TestBindLocalhost
=== PAUSE TestBindLocalhost
=== CONT  TestBindLocalhost
--- FAIL: TestBindLocalhost (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/envd::TestBindLocalhost/bind_0_0_0_0

Flake rate in main: 62.75% (Passed 92 times, Failed 155 times)

Stack Traces | 8.02s run time
=== RUN   TestBindLocalhost/bind_0_0_0_0
=== PAUSE TestBindLocalhost/bind_0_0_0_0
=== CONT  TestBindLocalhost/bind_0_0_0_0
Executing command /bin/bash in sandbox iuk1a0lz4sw4rt5m9wrjb
    localhost_bind_test.go:69: Command [python] output: event:{start:{pid:1257}}
Executing command python in sandbox icb8o9qijbj6sx5pzfz0p
    localhost_bind_test.go:90: 
        	Error Trace:	.../tests/envd/localhost_bind_test.go:90
        	Error:      	Not equal: 
        	            	expected: 200
        	            	actual  : 502
        	Test:       	TestBindLocalhost/bind_0_0_0_0
        	Messages:   	Unexpected status code 502 for bind address 0.0.0.0
--- FAIL: TestBindLocalhost/bind_0_0_0_0 (8.02s)
github.com/e2b-dev/infra/tests/integration/internal/tests/envd::TestBindLocalhost/bind_::1

Flake rate in main: 64.89% (Passed 92 times, Failed 170 times)

Stack Traces | 7.06s run time
=== RUN   TestBindLocalhost/bind_::1
=== PAUSE TestBindLocalhost/bind_::1
=== CONT  TestBindLocalhost/bind_::1
Executing command python in sandbox ibxv18yoi8d8xo8lxbda4
    localhost_bind_test.go:69: Command [python] output: event:{start:{pid:1257}}
    localhost_bind_test.go:90: 
        	Error Trace:	.../tests/envd/localhost_bind_test.go:90
        	Error:      	Not equal: 
        	            	expected: 200
        	            	actual  : 502
        	Test:       	TestBindLocalhost/bind_::1
        	Messages:   	Unexpected status code 502 for bind address ::1
--- FAIL: TestBindLocalhost/bind_::1 (7.06s)
github.com/e2b-dev/infra/tests/integration/internal/tests/envd::TestBindLocalhost/bind_localhost

Flake rate in main: 64.89% (Passed 92 times, Failed 170 times)

Stack Traces | 7.36s run time
=== RUN   TestBindLocalhost/bind_localhost
=== PAUSE TestBindLocalhost/bind_localhost
=== CONT  TestBindLocalhost/bind_localhost
Executing command python in sandbox i0cxq09dd0dycq6opfm48
    localhost_bind_test.go:69: Command [python] output: event:{start:{pid:1257}}
    localhost_bind_test.go:90: 
        	Error Trace:	.../tests/envd/localhost_bind_test.go:90
        	Error:      	Not equal: 
        	            	expected: 200
        	            	actual  : 502
        	Test:       	TestBindLocalhost/bind_localhost
        	Messages:   	Unexpected status code 502 for bind address localhost
--- FAIL: TestBindLocalhost/bind_localhost (7.36s)
github.com/e2b-dev/infra/tests/integration/internal/tests/orchestrator::TestSandboxFilesystemPauseResumeIntegrity

Flake rate in main: 53.73% (Passed 93 times, Failed 108 times)

Stack Traces | 0s run time
=== RUN   TestSandboxFilesystemPauseResumeIntegrity
=== PAUSE TestSandboxFilesystemPauseResumeIntegrity
=== CONT  TestSandboxFilesystemPauseResumeIntegrity
--- FAIL: TestSandboxFilesystemPauseResumeIntegrity (0.00s)
github.com/e2b-dev/infra/tests/integration/internal/tests/orchestrator::TestSandboxFilesystemPauseResumeIntegrity/scattered_write_hash_survives_pause

Flake rate in main: 53.50% (Passed 93 times, Failed 107 times)

Stack Traces | 2.61s run time
=== RUN   TestSandboxFilesystemPauseResumeIntegrity/scattered_write_hash_survives_pause
=== PAUSE TestSandboxFilesystemPauseResumeIntegrity/scattered_write_hash_survives_pause
=== CONT  TestSandboxFilesystemPauseResumeIntegrity/scattered_write_hash_survives_pause
    filesystem_pause_resume_integrity_test.go:43: Command [bash] output: event:{start:{pid:1257}}
    filesystem_pause_resume_integrity_test.go:43: Command [bash] output: event:{end:{exited:true status:"exit status 0"}}
    filesystem_pause_resume_integrity_test.go:43: Command [bash] completed successfully in sandbox igrjkn69s3sfmk2qu08nm
Executing command bash in sandbox igrjkn69s3sfmk2qu08nm (user: root)
    filesystem_pause_resume_integrity_test.go:43: Command [bash] output: event:{start:{pid:1262}}
    filesystem_pause_resume_integrity_test.go:43: 
        	Error Trace:	.../tests/orchestrator/filesystem_pause_resume_integrity_test.go:114
        	            				.../tests/orchestrator/filesystem_pause_resume_integrity_test.go:132
        	            				.../tests/orchestrator/filesystem_pause_resume_integrity_test.go:43
        	Error:      	Received unexpected error:
        	            	failed to execute command bash in sandbox igrjkn69s3sfmk2qu08nm: invalid_argument: protocol error: incomplete envelope: unexpected EOF
        	Test:       	TestSandboxFilesystemPauseResumeIntegrity/scattered_write_hash_survives_pause
--- FAIL: TestSandboxFilesystemPauseResumeIntegrity/scattered_write_hash_survives_pause (2.61s)
Executing command bash in sandbox iim6ccxyw2k49a49wvyh4 (user: root)
github.com/e2b-dev/infra/tests/integration/internal/tests/orchestrator::TestSandboxMemoryIntegrity

Flake rate in main: 65.42% (Passed 102 times, Failed 193 times)

Stack Traces | 73.9s run time
=== RUN   TestSandboxMemoryIntegrity
=== PAUSE TestSandboxMemoryIntegrity
=== CONT  TestSandboxMemoryIntegrity
    sandbox_memory_integrity_test.go:26: Build completed successfully
--- FAIL: TestSandboxMemoryIntegrity (73.92s)
github.com/e2b-dev/infra/tests/integration/internal/tests/orchestrator::TestSandboxMemoryIntegrity/tmpfs_hash

Flake rate in main: 67.03% (Passed 92 times, Failed 187 times)

Stack Traces | 30.5s run time
=== RUN   TestSandboxMemoryIntegrity/tmpfs_hash
=== PAUSE TestSandboxMemoryIntegrity/tmpfs_hash
=== CONT  TestSandboxMemoryIntegrity/tmpfs_hash
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{start:{pid:1251}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stdout:"Total memory: 985 MB\nUsed memory before tmpfs mount: 184 MB\nFree memory before tmpfs mount: 801 MB\nMemory to use in integrity test (80% of free, min 64MB): 640 MB\n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"640+0 records in\n640+0 records out\n671088640 bytes (671 MB, 640 MiB) copied, 3.43001 s, 196 MB/s\n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"\t"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"C"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"o"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"m"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"m"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"a"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"d being timed: \"dd if=/dev/urandom of=/mnt/testfile bs=1M count=640\"\n\tUser time (seconds): 0.00\n\tSystem time (seconds): 3.40\n\tPercent of CPU this job got: 99%\n\tElapsed (wall clock) time (h:mm:ss or m:ss): "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"0:03.43\n\tAverage sh"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"ared text size ("}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"kbytes): 0\n\tAve"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"rage unshared da"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"ta size (kbytes): 0\n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"\tAverage stack "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"size (kbytes): 0\n\tAverage total size "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"(kbytes): 0\n\tMax"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"imum resident "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"set size (kbytes): "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"2628\n\tAverage resident set size (kbytes): 0\n\tMajor (requiri"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"ng I/O) page faults: 2\n\tMinor (reclaiming a frame) p"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"age faults: 345\n\tVoluntary context switch"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"es: 3\n\tInvolun"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"tary context sw"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"itches: 23\n\tSwaps:"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:" 0\n\tFile sys"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"tem inputs: "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"176\n\tFile syste"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"m outputs: 0\n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"\tSocket messag"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"es sent: 0\n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"\tSocket messag"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"es received: 0\n\t"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"Signals delivere"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"d: 0\n\tPage si"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"ze (bytes): "}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"4096\n\tExit sta"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stderr:"tus: 0\n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{data:{stdout:"Used memory after tmpfs mount and file fill: 831 MB\n"}}
    sandbox_memory_integrity_test.go:70: Command [bash] output: event:{end:{exited:true status:"exit status 0"}}
    sandbox_memory_integrity_test.go:70: Command [bash] completed successfully in sandbox ixdel2lpjfph5eljmisvt
Executing command bash in sandbox ixdel2lpjfph5eljmisvt (user: root)
    sandbox_memory_integrity_test.go:74: Command [bash] output: event:{start:{pid:1268}}
    sandbox_memory_integrity_test.go:74: Command [bash] output: event:{data:{stdout:"b4e9c2a290c0c81bed6cd8e2e74acca25d3ba7d143a220fa69473213b5bdc408\n"}}
    sandbox_memory_integrity_test.go:74: Command [bash] output: event:{end:{exited:true status:"exit status 0"}}
    sandbox_memory_integrity_test.go:74: Command [bash] completed successfully in sandbox ixdel2lpjfph5eljmisvt
Executing command bash in sandbox ixdel2lpjfph5eljmisvt (user: root)
    sandbox_memory_integrity_test.go:99: Command [bash] output: event:{start:{pid:1271}}
    sandbox_memory_integrity_test.go:100: 
        	Error Trace:	.../tests/orchestrator/sandbox_memory_integrity_test.go:100
        	Error:      	Received unexpected error:
        	            	failed to execute command bash in sandbox ixdel2lpjfph5eljmisvt: invalid_argument: protocol error: incomplete envelope: unexpected EOF
        	Test:       	TestSandboxMemoryIntegrity/tmpfs_hash
--- FAIL: TestSandboxMemoryIntegrity/tmpfs_hash (30.48s)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Copy link
Copy Markdown

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, simple version pin to keep the linter compatible with the Go 1.25 toolchain.

Extended reasoning...

Overview

This PR makes a single one-line change to .tool-versions, downgrading golangci-lint from 2.8.0 to 2.7.2 so that it is built against Go 1.25 (matching the repo's pinned golang 1.25.9). Without this, the linter panics with file requires newer Go version go1.26.

Security risks

None. This is a tooling/version-pin change that only affects local development and CI lint runs — no runtime, production, or dependency-graph impact.

Level of scrutiny

Minimal. This is a mechanical config tweak in .tool-versions, the kind of change that's trivially verifiable and reversible. CI will surface any issue with the pinned version immediately.

Other factors

No bugs were found by the bug hunting system. The change matches the description, the rationale is clearly explained, and Cursor Bugbot also flagged it as low risk.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

The pull request downgrades golangci-lint from 2.8.0 to 2.7.2 in the .tool-versions file. I have no feedback to provide.

@tvi tvi merged commit 91d00d4 into main May 10, 2026
53 checks passed
@tvi tvi deleted the t/mise branch May 10, 2026 05:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants