Files
Bo e8339105b7 fix(ci): golangci-lint v2.13.1 for Go 1.27; stop archcheck TempDir race (#1080)
## What

Bumps the repo-pinned golangci-lint from v2.11.4 to v2.13.1 (in
`scripts/golangci-lint-v2.sh` plus the toolchain installs in
`validate.yml` and `nightly.yml`), and hardens
`cli/internal/archcheck`'s fixture git helpers against a `t.TempDir`
cleanup race by disabling background git maintenance (`gc.auto=0`,
`gc.autodetach=false`, `maintenance.auto=false`).

## Why

Fixes #1055. Fixes #1077.

Two independent failures were blocking CI:

- **go-gate-shadow red on the open Renovate PRs (#1076, #1074).**
golangci-lint v2.11.4's vendored `x/tools` cannot decode Go 1.27's
export data (`export data version 4 is greater than maximum supported
version 2`), so the `go.lint` gate fails with `typecheck` errors on any
PR that moves CI or the `toolchain` directive to go 1.27.0. v2.13.1
ships `x/tools` v0.49.0 with Go 1.27 support while keeping a `go 1.26.0`
directive, so it still bootstraps under the current go 1.26.6 CI
toolchain with `GOTOOLCHAIN=local`.

- **Nightly failures #1055 (CLI tests, 2026-08-10) and #1077 (security
toolchain go-test lane, 2026-08-21).** Both are the same root cause:
`git commit` in
`TestGoCLIArchitectureAcceptedBoundaryOwnsModuleIntroduction`'s fixture
repo can detach an auto-maintenance child that outlives the test body
and races `t.TempDir` cleanup, failing `RemoveAll` with `.git: directory
not empty`. The fixture git helpers now disable auto gc/maintenance so
no background child is ever spawned.

## How I tested

- `cd cli && go build ./... && go vet ./... && go test ./...` — exit 0
(65 packages ok).
- `scripts/check-go-lint.sh` with golangci-lint v2.13.1: clean (0
findings) under **both** `GOTOOLCHAIN=go1.26.6` (current CI) and
`GOTOOLCHAIN=go1.27.0` (the environment of the Renovate PRs), on the
final tree.
- Reproduced the v2.11.4 failure locally under go1.27.0 (same two
`typecheck` findings as CI) before the bump.
- `go test ./internal/archcheck/ -run 'TestGoCLIArchitecture...'
-count=3` — pass.

## Checklist

- [x] `make build && make test` passes (if Go changes)
- [x] No secrets or credentials in code
- [x] Breaking changes documented (if any) — none

---
_Generated by [Claude
Code](https://claude.ai/code/session_011Kjsu6s8w9su671g6zCSQw)_

Co-authored-by: Claude <noreply@anthropic.com>
2026-08-22 20:35:54 -04:00
..