Moves the canonical golangci-lint to v2.15.0 and fixes each item in .golangci.yml that did not do what it was meant to. #142 records them.
What a re-vendor will trip over
canonicalheader is back on, so a non-canonical header key now fails.
A package below a directory ending in test now gets a depguard finding if it imports test support.
A root package now gets that finding too when the directory the repository is cloned into ends in test.
A line that trips two linters now reports both findings.
github.com/go-redis/redis/v9 is now blocked.
New .golangci.yml sha256: 53c4669f23484b2d24928b8cc09520f8553b327f941fbcf5c17c147352e12f11
Disclosures
Judgement call: .golangci.yml gets no formatters section, on sneak's ruling "fmt and fmt check arent docker, just linting" (#40 (comment)). So golangci-lint run does not run gofmt; a Go repository's own script/fmt-check runs it, as the Go repositories here already do.
Deviation: --memory 2g fails on this host with a cgroup error, so lint runs used GOMEMLIMIT instead.
Judgement call: a directory such as latest also ends in test, so it stays exempt, as the rule is worded.
Judgement call: the Go package defaults on this host do not name the go-redis or diff modules. I removed the comment's claim and did not edit that file.
Partially verified: go 1.28 is refused with "toolchain not available", because go1.28 does not exist yet.
Model: opus-5-5
Moves the canonical golangci-lint to v2.15.0 and fixes each item in `.golangci.yml` that did not do what it was meant to. https://git.eeqj.de/sneak/prompts/issues/142 records them.
## What a re-vendor will trip over
- `canonicalheader` is back on, so a non-canonical header key now fails.
- A package below a directory ending in `test` now gets a `depguard` finding if it imports test support.
- A root package now gets that finding too when the directory the repository is cloned into ends in `test`.
- A line that trips two linters now reports both findings.
- `github.com/go-redis/redis/v9` is now blocked.
- New `.golangci.yml` sha256: `53c4669f23484b2d24928b8cc09520f8553b327f941fbcf5c17c147352e12f11`
## Disclosures
- Judgement call: `.golangci.yml` gets no `formatters` section, on sneak's ruling "fmt and fmt check arent docker, just linting" (https://git.eeqj.de/sneak/prompts/issues/40#issuecomment-53663). So `golangci-lint run` does not run `gofmt`; a Go repository's own `script/fmt-check` runs it, as the Go repositories here already do.
- Deviation: `--memory 2g` fails on this host with a cgroup error, so lint runs used `GOMEMLIMIT` instead.
- Judgement call: a directory such as `latest` also ends in `test`, so it stays exempt, as the rule is worded.
- Judgement call: the Go package defaults on this host do not name the go-redis or diff modules. I removed the comment's claim and did not edit that file.
- Partially verified: `go 1.28` is refused with "toolchain not available", because go1.28 does not exist yet.
Model: opus-5-5
.golangci.yml:62: the depguard exemption !**/*test/* is not the narrowest pattern, and a package at the module root behaves differently. A root package importing net/http/httptest is caught at /src. It is not caught when the checkout's own directory name ends in test, such as /parent/mytest. The result then depends on where the repository was cloned, because the checkout's own directory still counts. Acceptable: !${base-path}**/*test/*, which gives the same result in every location and keeps the wanted exemption.
.golangci.yml:7: "golangci-lint run checks no formatting" is false. Under this file tagalign reports unaligned struct tags, and whitespace and wsl_v5 report blank lines. TODO.md:39-40, the commit message, the PR body and the record on #142 make the same claim. Acceptable: a short correct sentence in each place, such as "This file has no formatters section, so golangci-lint run does not run gofmt."
.golangci.yml:116-118: max-issues-per-linter: 0 and max-same-issues: 0 do not report every finding. issues.uniq-by-line stays on by default and keeps one finding per line, so over-long lines that also trip dupword get no lll finding. The PR body discloses this, but the file and the record do not. Acceptable: uniq-by-line: false under issues, or a comment in the file saying a line shows one finding at a time. Either way, add a line to the record.
TODO.md:35-38: the sentence starting "Three comments now say what is true" runs to 33 words and chains three items with commas. Acceptable: a bulleted list.
Model: opus-5-5
FAIL, `needs-rework`.
1. `.golangci.yml:62`: the `depguard` exemption `!**/*test/*` is not the narrowest pattern, and a package at the module root behaves differently. A root package importing `net/http/httptest` is caught at `/src`. It is not caught when the checkout's own directory name ends in `test`, such as `/parent/mytest`. The result then depends on where the repository was cloned, because the checkout's own directory still counts. Acceptable: `!${base-path}**/*test/*`, which gives the same result in every location and keeps the wanted exemption.
2. `.golangci.yml:7`: "golangci-lint run checks no formatting" is false. Under this file `tagalign` reports unaligned struct tags, and `whitespace` and `wsl_v5` report blank lines. `TODO.md:39-40`, the commit message, the PR body and the record on https://git.eeqj.de/sneak/prompts/issues/142 make the same claim. Acceptable: a short correct sentence in each place, such as "This file has no formatters section, so golangci-lint run does not run gofmt."
3. `.golangci.yml:116-118`: `max-issues-per-linter: 0` and `max-same-issues: 0` do not report every finding. `issues.uniq-by-line` stays on by default and keeps one finding per line, so over-long lines that also trip `dupword` get no `lll` finding. The PR body discloses this, but the file and the record do not. Acceptable: `uniq-by-line: false` under `issues`, or a comment in the file saying a line shows one finding at a time. Either way, add a line to the record.
4. `TODO.md:35-38`: the sentence starting "Three comments now say what is true" runs to 33 words and chains three items with commas. Acceptable: a bulleted list.
Model: opus-5-5
.golangci.yml:78: "One entry per pre-fork module path" is false, so gomodguard_v2 does not block all of the old go-redis. gopkg.in/redis.v2, .v3, .v4 and .v5 are pre-fork paths. They compile and get no finding. The record on #142 has the same gap, because it names github.com/go-redis/redis/v9 as the path that was missed. Acceptable: either add an entry for each of these paths with the same recommendation, or make the comment say the entries cover only the github.com/go-redis/redis paths. Either way, add a line to the record. If the file changes, update the sha256 in the PR body.
Model: opus-5-5
FAIL, `needs-rework`.
1. `.golangci.yml:78`: "One entry per pre-fork module path" is false, so `gomodguard_v2` does not block all of the old go-redis. `gopkg.in/redis.v2`, `.v3`, `.v4` and `.v5` are pre-fork paths. They compile and get no finding. The record on https://git.eeqj.de/sneak/prompts/issues/142 has the same gap, because it names `github.com/go-redis/redis/v9` as the path that was missed. Acceptable: either add an entry for each of these paths with the same recommendation, or make the comment say the entries cover only the `github.com/go-redis/redis` paths. Either way, add a line to the record. If the file changes, update the sha256 in the PR body.
Model: opus-5-5
TODO.md: the tracker reports a conflict between this branch and the current next, so the PR cannot merge. The entry for #142 and the one for #72 both go at the top of Completed Steps. Acceptable: the branch rebased onto next, with both entries whole and nothing else changed.
Model: opus-5-5
FAIL, `needs-rebase`.
1. `TODO.md`: the tracker reports a conflict between this branch and the current `next`, so the PR cannot merge. The entry for https://git.eeqj.de/sneak/prompts/issues/142 and the one for https://git.eeqj.de/sneak/prompts/issues/72 both go at the top of Completed Steps. Acceptable: the branch rebased onto `next`, with both entries whole and nothing else changed.
Model: opus-5-5
This is the third failed review, so I am setting the end of the loop. The third review's only finding is the conflict with next; it found nothing wrong with the change itself.
The rework changes: rebase issue-142-golangci-v2-items onto current next and keep it one commit. In TODO.md, the entries for #142 and #72 both stay whole, with the newest at the top. make fmt may re-wrap only what the rebase touched.
It leaves alone:.golangci.yml, the sentences in prompts/REPO_POLICIES.md, the commit message, the PR body (its sha256 stays right if .golangci.yml is unchanged) and the record on the issue.
The next review checks only: the rebased commit differs from the reviewed commit b93d09d0 by the rebase and nothing else, both TODO.md entries are whole, and the repository's check passes. Everything else was reviewed three times and is settled.
Model: opus-5-5
This is the third failed review, so I am setting the end of the loop. The third review's only finding is the conflict with `next`; it found nothing wrong with the change itself.
**The rework changes:** rebase `issue-142-golangci-v2-items` onto current `next` and keep it one commit. In `TODO.md`, the entries for https://git.eeqj.de/sneak/prompts/issues/142 and https://git.eeqj.de/sneak/prompts/issues/72 both stay whole, with the newest at the top. `make fmt` may re-wrap only what the rebase touched.
**It leaves alone:** `.golangci.yml`, the sentences in `prompts/REPO_POLICIES.md`, the commit message, the PR body (its sha256 stays right if `.golangci.yml` is unchanged) and the record on the issue.
**The next review checks only:** the rebased commit differs from the reviewed commit `b93d09d0` by the rebase and nothing else, both `TODO.md` entries are whole, and the repository's check passes. Everything else was reviewed three times and is settled.
Model: opus-5-5
Moves the pin to v2.15.0 and enables canonicalheader again, because that
release fixes the random misses behind
#105.
The depguard exemption reached every directory below one ending in test,
and a whole checkout under such a directory. It now covers only the files
directly inside, and the directory a repository is cloned into does not
count. gomodguard_v2 also blocks github.com/go-redis/redis/v9, whose
pre-releases can still be imported.
uniq-by-line is now false, so a line that trips two linters reports both
findings.
Three comments are corrected. A new comment says the file has no
formatters section, so golangci-lint run does not run gofmt.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Moves the canonical golangci-lint to v2.15.0 and fixes each item in
.golangci.ymlthat did not do what it was meant to. #142 records them.What a re-vendor will trip over
canonicalheaderis back on, so a non-canonical header key now fails.testnow gets adepguardfinding if it imports test support.test.github.com/go-redis/redis/v9is now blocked..golangci.ymlsha256:53c4669f23484b2d24928b8cc09520f8553b327f941fbcf5c17c147352e12f11Disclosures
.golangci.ymlgets noformatterssection, on sneak's ruling "fmt and fmt check arent docker, just linting" (#40 (comment)). Sogolangci-lint rundoes not rungofmt; a Go repository's ownscript/fmt-checkruns it, as the Go repositories here already do.--memory 2gfails on this host with a cgroup error, so lint runs usedGOMEMLIMITinstead.latestalso ends intest, so it stays exempt, as the rule is worded.go 1.28is refused with "toolchain not available", because go1.28 does not exist yet.Model: opus-5-5
FAIL,
needs-rework..golangci.yml:62: thedepguardexemption!**/*test/*is not the narrowest pattern, and a package at the module root behaves differently. A root package importingnet/http/httptestis caught at/src. It is not caught when the checkout's own directory name ends intest, such as/parent/mytest. The result then depends on where the repository was cloned, because the checkout's own directory still counts. Acceptable:!${base-path}**/*test/*, which gives the same result in every location and keeps the wanted exemption..golangci.yml:7: "golangci-lint run checks no formatting" is false. Under this filetagalignreports unaligned struct tags, andwhitespaceandwsl_v5report blank lines.TODO.md:39-40, the commit message, the PR body and the record on #142 make the same claim. Acceptable: a short correct sentence in each place, such as "This file has no formatters section, so golangci-lint run does not run gofmt.".golangci.yml:116-118:max-issues-per-linter: 0andmax-same-issues: 0do not report every finding.issues.uniq-by-linestays on by default and keeps one finding per line, so over-long lines that also tripdupwordget nolllfinding. The PR body discloses this, but the file and the record do not. Acceptable:uniq-by-line: falseunderissues, or a comment in the file saying a line shows one finding at a time. Either way, add a line to the record.TODO.md:35-38: the sentence starting "Three comments now say what is true" runs to 33 words and chains three items with commas. Acceptable: a bulleted list.Model: opus-5-5
746cad18dcto0d318ac631FAIL,
needs-rework..golangci.yml:78: "One entry per pre-fork module path" is false, sogomodguard_v2does not block all of the old go-redis.gopkg.in/redis.v2,.v3,.v4and.v5are pre-fork paths. They compile and get no finding. The record on #142 has the same gap, because it namesgithub.com/go-redis/redis/v9as the path that was missed. Acceptable: either add an entry for each of these paths with the same recommendation, or make the comment say the entries cover only thegithub.com/go-redis/redispaths. Either way, add a line to the record. If the file changes, update the sha256 in the PR body.Model: opus-5-5
0d318ac631tob93d09d027FAIL,
needs-rebase.TODO.md: the tracker reports a conflict between this branch and the currentnext, so the PR cannot merge. The entry for #142 and the one for #72 both go at the top of Completed Steps. Acceptable: the branch rebased ontonext, with both entries whole and nothing else changed.Model: opus-5-5
This is the third failed review, so I am setting the end of the loop. The third review's only finding is the conflict with
next; it found nothing wrong with the change itself.The rework changes: rebase
issue-142-golangci-v2-itemsonto currentnextand keep it one commit. InTODO.md, the entries for #142 and #72 both stay whole, with the newest at the top.make fmtmay re-wrap only what the rebase touched.It leaves alone:
.golangci.yml, the sentences inprompts/REPO_POLICIES.md, the commit message, the PR body (its sha256 stays right if.golangci.ymlis unchanged) and the record on the issue.The next review checks only: the rebased commit differs from the reviewed commit
b93d09d0by the rebase and nothing else, bothTODO.mdentries are whole, and the repository's check passes. Everything else was reviewed three times and is settled.Model: opus-5-5
clawbot referenced this pull request2026-11-04 00:48:42 +01:00
b93d09d027to9733cb7833PASS.
Model: opus-5-5