Land golangci-lint v2.12.2 and the canonical .golangci.yml on main #3
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
PR #2 has been open and unreviewed since 2026-08-07. The work is done and green, but it never landed, so
mainis still on the old toolchain.Verified state of
main(3abeacf):.golangci.ymlsha256 is33ba2bf7fe4a44779d09b0fb31d6daf03685f8dc9d2bc417f963d7aabb0d17dc— NOT the org-standard021cc83f4e6fc7c31b95b34b846723dfcf20b66b7baeea1dc40406e643346bcb. The settings block still uses the v1-style top-levellinters-settingskey, which golangci-lint v2 ignores, so thelll/funlen/cyclop/duplthresholds are silently not applied.Dockerfilelint stage andscript/bootstrapboth pin golangci-lint v2.12.1.Verified state of branch
golangci-v2.12.2(814bdad, PR #2):.golangci.ymlsha256 is021cc83f4e6fc7c31b95b34b846723dfcf20b66b7baeea1dc40406e643346bcb— byte-identical to the canonical file.Dockerfilelint stage:golangci/golangci-lint:v2.12.2@sha256:5cceeef04e53efe1470638d4b4b4f5ceefd574955ab3941b2d9a68a8c9ad5240.script/bootstrap:GOLANGCI_LINT_REFat@v2.12.2.make checkre-run by the manager on this branch: green, 0 lint issues, 72.8% coverage.Note on pinning, checked against the standards: the org docs do not name a golangci-lint version at all, and the upstream release commit
c0d3ddc9cf3faa61a4e378e879ece580256d76e5appears nowhere in thepromptsrepo. The two sanctioned pins are the Docker image digest and thego installmodule ref (Go module fetches are hash-verified throughgo.sum/ the checksum database, whichREPO_POLICIES.mdnames as an acceptable pin). PR #2 already uses both. Do not introduce the raw commit hash as a pin.Definition of done
make checkis green on the merged result.mainis merged and pushed;git show main:.golangci.yml | sha256sumreports021cc83f4e6fc7c31b95b34b846723dfcf20b66b7baeea1dc40406e643346bcb.v2.12.1remains anywhere in the tree.(closes #3).Manager note — backlog shape and why this issue is first.
The pre-1.0 survey is filed as #3 through #22, all under the
1.0.0milestone. #23 is housekeeping and deliberately outside it.This issue goes first because it is the only one that changes what "green" means. The canonical config moves the
lll/funlen/cyclop/duplthresholds from the v1-stylelinters-settingskey, which golangci-lint v2 silently ignores, tolinters.settings, where they are actually enforced. Until that lands onmain, every other PR in the milestone is being linted against thresholds that are not applied — so any of them could pass review and then fail once this merges. Landing it first makes every subsequent branch honest.Suggested order after this one, by dependency rather than severity:
os.Exitcalls that currently make the CLI untestable in-process, so it unblocks #5, #6 and #16.Two of these are docs-only and skip adversarial review per the standing exception: #21 and #12. #20 is docs-only as well.
Not filed as issues, recorded here as accepted divergences already noted in
TODO.mdand reconfirmed against the current standards: the flat single-package root layout (fine for a tool this size), andmake testrunning without-race(the repo mandatesCGO_ENABLED=0) — though #18 narrows that second one to a separate cgo-enabled target rather than leaving the detector unused.One more thing found while checking the standards, recorded so it is not re-litigated: the upstream golangci-lint release commit
c0d3ddc9cf3faa61a4e378e879ece580256d76e5does not appear anywhere in thepromptsrepo and is not a required pin. The Docker image digest plus thego installmodule ref are the two sanctioned pins, and PR #2 already has both.