PROPAGATION: roll the new canonical .golangci.yml bytes (gomodguard_v2 migration) into every consuming repository #60

Open
opened 2026-09-08 06:39:25 +02:00 by clawbot · 2 comments
Collaborator

Follow-up required by the definition of done in
#25. Consuming repos vendor the
canonical .golangci.yml and verify it by sha256, so they all mismatch the
moment #55 lands.

Do not start until that PR has merged.

The bytes

  • old canonical .golangci.yml:
    d10f47ef5e0d8620efd62275b016a7de8fd5abedf333922eec86fe4abc06176e
  • new canonical .golangci.yml:
    a79b63a254602a5318db5d0e9a06bc71b84bf0c1d896305229d8bfed1d1b1776

Per-repo definition of done

  1. Fetch the file from
    https://git.eeqj.de/sneak/prompts/raw/branch/main/.golangci.yml rather than
    hand-editing the local copy, and land it as its own commit.
  2. Carry forward the repo's own entries in the deny list of the
    test-support depguard rule. That list is the one part exempt from
    byte-identity (REPO_POLICIES.md), and a re-vendor that drops it silently
    removes a rule the repo relies on.
  3. Because of that exemption, a repo with its own deny entries will not
    match the new sha256 above and is not supposed to.
    Diff against canonical
    and confirm the only difference is that list. Do not "fix" a repo to match
    the hash.
  4. Run make lint through the repo's own dockerized entrypoint and confirm
    zero deprecation warnings, not merely that the gomodguard one is gone.
  5. The new config carries a gomodguard_v2 block list (rs/zerolog, the
    pre-fork go-redis/redis, sergi/go-diff, hexops/gotextdiff). No repo
    below required any of them when their go.mod files were read on
    2026-08-31, so no new findings are expected. If a repo has since taken one
    on, stop and report rather than editing the vendored config.

homoicon is a special case: its copy carries a header comment recording the
owner-approved agent edit of 2026-08-07, under the one-case exception in
sneak/homoicon#4. The re-vendor must carry that
comment forward, and is tracked at
sneak/homoicon#632.

Repos

Named as vendoring the canonical config in
#25; their go.mod files were read on
2026-08-31 for the block-list check above:

  • attrsum
  • bsfirehose
  • cattbox
  • dnswatcher
  • homoicon
  • mfer
  • pixa
  • rgoue
  • secret
  • sfdupes
  • simplelog
  • upaas
  • vaultik
  • webhooker

Go repos on the tooling roster that were not part of that survey; confirm
applicability first and tick with a note if the repo carries no vendored
.golangci.yml:

  • gohttpserver
  • neoirc
  • routewatch
  • smartconfig

Separate from #35 (Docker build-context
trio) and #39 (Go tooling fixes). A repo
can take this in any order relative to those, but keep it as its own commit.

Model: opus-5

Follow-up required by the definition of done in https://git.eeqj.de/sneak/prompts/issues/25. Consuming repos vendor the canonical `.golangci.yml` and verify it by sha256, so they all mismatch the moment https://git.eeqj.de/sneak/prompts/pulls/55 lands. Do not start until that PR has merged. ## The bytes - old canonical `.golangci.yml`: `d10f47ef5e0d8620efd62275b016a7de8fd5abedf333922eec86fe4abc06176e` - new canonical `.golangci.yml`: `a79b63a254602a5318db5d0e9a06bc71b84bf0c1d896305229d8bfed1d1b1776` ## Per-repo definition of done 1. Fetch the file from `https://git.eeqj.de/sneak/prompts/raw/branch/main/.golangci.yml` rather than hand-editing the local copy, and land it as its own commit. 2. Carry forward the repo's own entries in the `deny` list of the `test-support` `depguard` rule. That list is the one part exempt from byte-identity (`REPO_POLICIES.md`), and a re-vendor that drops it silently removes a rule the repo relies on. 3. Because of that exemption, **a repo with its own `deny` entries will not match the new sha256 above and is not supposed to.** Diff against canonical and confirm the only difference is that list. Do not "fix" a repo to match the hash. 4. Run `make lint` through the repo's own dockerized entrypoint and confirm **zero** deprecation warnings, not merely that the `gomodguard` one is gone. 5. The new config carries a `gomodguard_v2` block list (`rs/zerolog`, the pre-fork `go-redis/redis`, `sergi/go-diff`, `hexops/gotextdiff`). No repo below required any of them when their `go.mod` files were read on 2026-08-31, so no new findings are expected. If a repo has since taken one on, stop and report rather than editing the vendored config. `homoicon` is a special case: its copy carries a header comment recording the owner-approved agent edit of 2026-08-07, under the one-case exception in https://git.eeqj.de/sneak/homoicon/issues/4. The re-vendor must carry that comment forward, and is tracked at https://git.eeqj.de/sneak/homoicon/issues/632. ## Repos Named as vendoring the canonical config in https://git.eeqj.de/sneak/prompts/issues/25; their `go.mod` files were read on 2026-08-31 for the block-list check above: - [ ] attrsum - [ ] bsfirehose - [ ] cattbox - [ ] dnswatcher - [ ] homoicon - [ ] mfer - [ ] pixa - [ ] rgoue - [ ] secret - [ ] sfdupes - [ ] simplelog - [ ] upaas - [ ] vaultik - [ ] webhooker Go repos on the tooling roster that were not part of that survey; confirm applicability first and tick with a note if the repo carries no vendored `.golangci.yml`: - [ ] gohttpserver - [ ] neoirc - [ ] routewatch - [ ] smartconfig Separate from https://git.eeqj.de/sneak/prompts/issues/35 (Docker build-context trio) and https://git.eeqj.de/sneak/prompts/issues/39 (Go tooling fixes). A repo can take this in any order relative to those, but keep it as its own commit. Model: opus-5
Author
Collaborator

The new canonical sha256 in "The bytes" was stale and has been corrected to
a79b63a254602a5318db5d0e9a06bc71b84bf0c1d896305229d8bfed1d1b1776; the old
canonical value is unchanged. Nobody has started yet, since
#55 has not merged.

The block list also changed shape while that PR was in review: the pre-fork
go-redis is now three exact entries (github.com/go-redis/redis, /v7, /v8)
rather than one prefix match, so github.com/go-redis/redismock is not
blocked. Item 5's list of blocked modules is otherwise as written.

Model: opus-5

The new canonical sha256 in "The bytes" was stale and has been corrected to `a79b63a254602a5318db5d0e9a06bc71b84bf0c1d896305229d8bfed1d1b1776`; the old canonical value is unchanged. Nobody has started yet, since https://git.eeqj.de/sneak/prompts/pulls/55 has not merged. The block list also changed shape while that PR was in review: the pre-fork go-redis is now three exact entries (`github.com/go-redis/redis`, `/v7`, `/v8`) rather than one prefix match, so `github.com/go-redis/redismock` is not blocked. Item 5's list of blocked modules is otherwise as written. Model: opus-5
Author
Collaborator

Ruling from sneak, 2026-09-09, amending the per-repo definition of done: a repo's re-vendor PR must land green. If the new config produces lint findings in that repo (the gomodguard_v2 block list, or any check the new file turns on), the same PR includes the commits that fix those findings — fix the code, never loosen the vendored config. This replaces item 5's "stop and report": stop and ask only if fixing a finding would need a judgement call an implementer cannot make (a dependency that has to stay, an owner decision), otherwise fix it in the PR.

So each repo's PR is: the vendored .golangci.yml as its own commit, the repo's own deny entries carried forward, then one commit per source fix the new config demands, ending green through the repo's own dockerized make lint with zero deprecation warnings.

Model: opus-4-8

Ruling from sneak, 2026-09-09, amending the per-repo definition of done: a repo's re-vendor PR must land green. If the new config produces lint findings in that repo (the `gomodguard_v2` block list, or any check the new file turns on), the same PR includes the commits that fix those findings — fix the code, never loosen the vendored config. This replaces item 5's "stop and report": stop and ask only if fixing a finding would need a judgement call an implementer cannot make (a dependency that has to stay, an owner decision), otherwise fix it in the PR. So each repo's PR is: the vendored `.golangci.yml` as its own commit, the repo's own `deny` entries carried forward, then one commit per source fix the new config demands, ending green through the repo's own dockerized `make lint` with zero deprecation warnings. Model: opus-4-8
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/prompts#60